对头部和身体移动、风吹、重力等因素做出反应时,真实的毛发会以特别的方式运动。毛发由于这些外力所产生的动画通常是通过基于物理的模拟实现的,而这非常依赖运算。然而,为了在动画中实现照片级的真实感,在制作这些受到外力和运动影响的CG毛发模拟时,就需要创作出栩栩如生的动画。
毛发数量繁多,并且物体碰撞和自我碰撞的运动都非常复杂,因此很难模拟。毛发的动力学依赖于复杂的相互依赖关系。就动物皮毛而言,除了毛发本身的模拟作用,有很大一部分毛发动态效果是由肌肉负责驱动的。
用于模拟的导线(不一定要与毛发导线相同)会驱动相关插值曲线的形状和运动。导线的选择可能比导线的数量更重要——质量的重要性远胜于数量。
Groom中的Groom导线通常会提供某种结构,例如聚丛、方向变化、流动等。结构通常需要在模拟期间维持,所以Groom导线是模拟的良好起点。如果这些Groom导线无法提供足够的分辨率,用户可以使用Groom衍生的其他模拟导线来予以补充。如果你的主要关注点是性能,就可以减少数量以缩短运算时间。
虚幻引擎中的毛发模拟是作为Niagara VFX系统的一部分实现的,出于性能原因,只能在GPU上使用。解算器以XPBD(基于位置的顺应动力学模拟)为基础。为了解算所有约束条件,用户必须提供子步骤的数量和解算器迭代,以及所有发丝、碰撞和本构模型参数。解算器会以重力作用下的原始网格体(闲置姿势)为目标,以确保最终的造型尽可能地还原原本的造型。
当创建物理资产并将其加入骨骼网格体时,模拟解算器会处理身体与物理资产图元的碰撞。
在计算自碰撞时,会基于一个平均速度场计算。该速度场是通过将粒子光栅化到一个规则的体素网格体而建立的。对于本构模型,最大的挑战通常是寻找良好的毛发组构材质模型,使发丝能够在较低的解算器迭代次数下,表现得栩栩如生。这些模型控制着发丝在模拟期间的扩展、弯折和扭曲。
我们正在不断测试新的组构材质模型,看看哪些能够实现毛发的质量和性能最佳平衡。科瑟拉弹性杆和角弹簧方式已经可以在Groom资产物理属性中使用了。更多关于这些技巧的信息,可见本白皮书文末的其他学习资料部分。