学习Unity 2019 ECS框架(二)
ECS非常适合用于大规模物件的动画交互,比如这个流体模拟 https://connect.unity.com/p/shi-yong-unityde-ecshe-job-systemshi-xian-liu-ti-mo-ni-xiao-guo 他在github里给出了传统SPH实现(MonoBehaviour)的源码,和使用ECS架构后的源码。 先解析下传统单线程实现,也就是MonoBehaviour。 大体思路是在每个粒子的MonoBehaviour里,计算自己和其他粒子在一定密度下受到的力,相互作用力产生的速度与运动方向,再应用到坐标位置上。 private void Start() { InitSPH(); } private void Update() { // 计算密度压力 ComputeDensityPressure(); // 计算力(含方向) ComputeForces(); // 计算位置 Integrate(); // 计算碰撞 ComputeColliders(); // 应用位置 ApplyPosition(); } 计算粒子间的流体碰撞共使用到下列参数,SPH包括粒子密度渗透。 其中restDensity和smoothingRadius是粒子间超过一定距离上的阈值,则不在计算相互作用力,这也符合力学运动物质趋于稳定的物理学规律。 [System