这是一位 BipedPlus 使用者提出的问题。其他朋友可能也想了解,所以整理后分享。
原地动作时,Root(Ctrl_World) 不必移动。如果用 Bip001 制作实际位移,之后再移动 Root(Ctrl_World),步伐就会错位。如果只移动 Root(Ctrl_World),脚部 IK 会留在地面上,出现滑动。
以前的做法是在导出时用脚本把位移交给 Root,固定 Bip001,只保留高度。在 BipedPlus 里应该怎么做?
这种处理通常称为根运动(root motion)。水平位移和高度分别放在哪里,各家公司并不相同。
BipedPlus 提供的是一套完成的绑定层级。Bip001 位于 Root(Ctrl_World) 之下是常见结构。做动画时移动 Bip001,Root(Ctrl_World) 保持不动即可。如果两边都带位移,步伐会叠在一起;如果只移动 Root(Ctrl_World),脚会滑动。
一种后处理方式是:先自由做完动画,再记下每个关键帧上 Bip001 的世界位置。Root(Ctrl_World) 只写入去掉高度的 X、Y,Bip001 则烘焙 X、Y、Z。这样两者的差别就只剩高度。删掉 Root(Ctrl_World) 上的水平关键帧,就得到原地动作。
这类导出前的处理,游戏制作里通常做成公司工具上的一个按钮。动画选项卡里要不要加入,因为需求还不够明确,所以一直在等。如果您需要,如果周围的动画师也需要,或者有想要的操作示例,请告诉我们,便于以后开发时参考。
简单说,只要能把层级好好恢复到运行前的状态,就可以按您觉得合适的方式,自由编写并运行根运动脚本。运行结束后,请只恢复到之前的层级。