关于Dynamic Bone的介绍:
Dynamic Bone是一个Unity的动态骨骼插件,这个插件允许开发者指定对应的根骨骼,从而允许该骨骼的子骨骼进行物理结算,而根骨骼将不进行物理结算。DynamicBone模拟的物理结算不会导致骨骼距离发生变化,也就是说,DynamicBone并不适合模拟凝胶、橡胶等各方向形变明显的物体,这样的物理模型更加适用于模拟头发、绳子等这些不容易拉伸但容易形变的物体,运用在衣物上时,则需要看衣物材质是否容易拉伸,如果容易拉伸依然不适合用。
本文以人物头发的处理为例,介绍插件的使用方法:
首先要确保模型中包含头发的骨骼节点,单纯的一个头发模型是不能用的。
该想要控制的节点添加Dynamic Bone组件,Root设为该骨骼节点:
调整其核心属性值:
1.Damping 阻尼:可以理解为阻力,值越大运动幅度越小
2.Elasticity 弹性:可以理解为灵活性,值越小,回弹的力越小
3.Siffness 刚性:可以理解为僵硬程度,值越小,看上去越柔软
4.Inert 惰性:值越大,当物体运动时,其运动幅度越小
具体可以调整属性值查看其运动效果,除了这些核心属性外,还要设置Dynamic Bone Collider,来防止头发运动穿模现象,如下图所示,头发在运动过程中会穿过肩膀模型:
因此在肩膀处添加Dynamic Bone Collider节点,并根据模型适当调整Collider大小及位置:
并将其添加给头发的Dynamic Bone组件中的Colliders:
查看效果: