Unity动画插件puppetMaster研究 - chunlieater/chunlifeet GitHub Wiki
puppetMaster是将布娃娃,刚体,animator这三种和动画相关工具融合在骨骼上的插件。
- animator,直接作用于骨骼,只要打开必定起作用,骨骼将完全按照animator中的动作祯坐标执行运动。
- 刚体布娃娃,使用Ragdoll 或者 biped Ragdoll Creator插件可以给骨骼添加刚体(rigidbody),碰撞盒(collider)和铰链(jiont),刚体可以让骨骼感受重力,碰撞盒可以让物体判断和其他刚体碰撞,铰链可以让骨骼物理连接起来变成一个整体(如果没有铰链,子物体是不能拉动父物体的)。没有animator作用时,刚体可以直接控制骨骼运动(瘫软),如果animator在运行中,那么刚体和铰链对骨骼运动就起不了作用,其他刚体不能推动物体,但是物体可以推动其他刚体。效果和把刚体中的kinematic(动力学)勾选类似。(物体按运动数据运动,但是碰撞依然起作用)
- puppetMaster,puppetMaster系统可以把布娃娃和animator(准确的说是Avatar中的肌肉)进行融合,骨骼添加了布娃娃的物体,再次添加puppetMaster插件,就可以生成一套新的物体组合,其中插件把添加了布娃娃的骨骼提取出来,取消原物体骨骼上的外挂,并将新生成的骨骼和原骨骼进行绑定,这样可以解决刚体和animator不能融合的问题,骨骼绑在新的布娃娃骨骼上,所以其实就是通过参数控制布娃娃的刚体和animator的动作进行混合,参数变大,布娃娃受animator动作影响多,参数变小,布娃娃受刚体影响多,这样骨骼也随着布娃娃一起,带动角色运动。这样的好处是,布娃娃可以感受其他物体的碰撞,从而让角色在执行animator动作时也能产生真实碰撞。
- 总结:单纯的给物体骨骼加布娃娃系统,是不能和animator动画有效融合的,puppetMaster就是实现这两者有效融合的插件,通过新建一套纸娃娃骨骼,链接到物体骨骼,纸娃娃和animator一起作用,通过weight参数来控制哪一方对纸娃娃的控制更强,从而控制骨骼实现很多效果。