目录
Simulation fields
Inside the Pyro Solver
Colliders
Pressure projection
Simulation fields
Pyro是纯体积流体解算器,表示流体状态的数据存于各种标量场和矢量场;Smoke Object会创建这些场,且能可视化这些场;
- vel场,表示瞬时速度,管理smoke运动;
- density场,表示烟尘的数量,高密度会更浓;
- temperature场,表示热量的分布,更热气体会由于浮力上升(背后的物理意义是由Ambient Temp (K)和Reference Temp (K)参数控制);
- flame场,存储反应物的剩余寿命;
- divergence场,表示膨胀和收缩;
- pressure场,包含流体内部压力的辅助标量场;
- collision、collisionvel场,表示碰撞体及其速度;
- active场,表示激活区域(sparse模式时);
Inside the Pyro Solver
Pyro Solver解算上述场,每子步,执行以下步骤:
- temperature,被扩散(Diffusion)和冷却(cooling);扩散表示热量从高向低传递,冷却表示热量的损失;
- density、temperature、flame、vel,被驱动,即将运动应用到所有对应的场;
- flame,老化及生成输出,是反应物的剩余寿命,模拟它们的反应;
- density,被消散,随时间降低烟雾密度,逐渐消失;
- Sourcing,被执行,添加新的发射源(如density、temperature);
- 重置流体款容器,sparse默认时,还会计算active区域;
- 应用力到vel场(如gravity、wind等);
- 应用浮力buoyancy,由于温度改变vel场;
- 应用粘性viscosity于vel场;
- 应用塑形shape操作,影响运动和外形,包括disturbance、shredding、turbulence;
- 应用自定义力(解算器的第四个端口);
- Pressure projection被执行,关键步骤,确保子步结束时与目标divergence一致;
Colliders
烟雾可与其他对象交互(通过将其添加为碰撞体),最简单的方法是Static Object或Deforming Object;另一种方法是,手动引入collision、collisionvel(Populate Containers->Collide with Objects),可更好的控制碰撞速度;
此两种添加碰撞体的方法,仅在构建collision、collisionvel方式不同;IOP Iterations参数默认为1,如碰撞体过快或烟雾穿过碰撞体,增加此值;
Pressure projection
是流体模拟中的关键阶段,负责结合流体与碰撞体,对不可压缩产生涡流,及对爆炸的突然快速膨胀;使用Gas Project Non-Divergent Multigrid DOP节点去执行;
执行pressure projection会考虑divergence场,如没有添加divergence场(divergence为0),流体将是不可压缩或无散度;使速度场无速度,如下:
直观地说,正divergence场区域为膨胀,反之为压缩;
查看工具架工具Sparse Fireball,有两种方式添加divergence,一种是直接发射源添加,二种是通过flame场贡献divergence;