实现效果
在runtime模拟头发晃动,用Unity2019的新特性Animation Rigging实现。 对于此类物理效果模拟,建模的时候就设置好动画是做法之一,但是在runtime环境中就会变得脱离了物理世界的交互(World Interaction),显得死板。unity有cloth system和rigid body的Joint组件可以使用,但是我需要的是比较偏向动画播放,而不是完全的物理世界模拟。Animation Rigging Package正好能丰富动画的物理计算,而且设置起来简单,没有cloth system那么黑盒子,甚至可以在unity editor中做Animation Authoring。
过程摘要
原模型是low poly风格,网格和骨骼都比较简单,自然也没有绑定“头发骨骼”。做Rigging之前先用Maya给头发部分新增骨骼蒙皮。
Rig过程相对简单,使用的预设的Damped Transform做约束,package本身的demo以及官方文档中有很好的说明和演示。
用Damped Transform按一条链式Rig好之后,还要设置节点的权重,中间最长的骨骼的rig权重设为最大,其余两条骨骼权重值设较小的值。否则设置动画clip时会发现无法晃动同一层级的某些骨骼。
最后给3条骨骼的根节点设置一个简单的上下小幅度转动的动画,即使得头发在idle状态下也有小幅度的晃动,至于在角色跑动的时候,在Damped Transform Constraint的作用下,会自动模拟物理世界的带有阻尼的晃动效果。