Unity中IK(反向运动学)的尝试

        IK与FK对应,正向运动学就是根骨骼带动节点骨骼运动。而反向运动学就是反过来,由子节点带动父节点运动。

        正常来说我是用不到它的,毕竟开发手游还不是次时代fps,玩家也不会关注你脚踩到地面上的细节表现。但是因为美术给出了个难题,所以稍微研究了下Unity中的IK。

        正常人物动画的脚是稳定的定在地面上的,使用默认的人形骨骼没有问题。但是自己拉的骨骼就做不到,做动画的时候脚部会或多或少的飘。美术通过两个方法尝试解决这个问题,其中之一就是使用IK。

        IK确实可以解决这个问题。但是Unity中MecAnima自带的IK智能用于人形骨骼动画,不能用于Generic的动画。所以这个尝试算是失败了。

        对于Humanoid的动画,使用的方法很简单,在Animator窗口中,对于要使用IK的动画勾上Foot IK选项,在Base Layer中勾上IK Pass选项。然后在代码中实现OnAnimatorIK函数来控制IK。

       最新研究:

       3dMax中使用IK的情景还是非常多的。比如一个小章鱼,每个脚上面绑上IK,然后就可以通过脚步移动控制整条腿的运动。如果不用IK的话操作起来很麻烦而且不自然。

       而fbx的格式里面也是有IK信息的。只是Unity过滤了相关的数据而已。美术在导出动画之前做这么的操作,然后动画就正常了。

  1. Set up the bone structure as you please.
  2. Create the animations you want, using FK and/or IK
  3. Select all bones and/or IK solvers
  4. Go to Motion->Trajectories and press Collapse. Unity makes a key filter, so the amount of keys you export is irrelevant
  5. "Export" or "Export selected" as newest FBX format
  6. Drop the FBX file into Assets as usual

        在3dmax中ctrl+A选中所有所有骨骼,在右侧的选项卡中选择Motion->Trajectories,如果已经选择好骨骼,Collapse按钮就可以正常点击,点击这个按钮,然后正常的导出动画。这样Unity中的动画表现就跟3dmax一致了。
        注意,使用Collapse功能会修改动画的帧(使帧间隔变得一样),这样我们很多动作播放的时候就会被改变,比如攻击动作会变得很慢,没有力度。美术应该在Collapse后再次修改动画(或者是在制作动画之前使用Collapse)以保证动画的正确性。
        

你可能感兴趣的:(Unity中IK(反向运动学)的尝试)