美文网首页交互媒体设计教案
使用AdvancedSkeleton给Unity制作动画的一些经

使用AdvancedSkeleton给Unity制作动画的一些经

作者: shimmery | 来源:发表于2019-05-03 13:04 被阅读2次

    AdvancedSkeleton(俗称ADV)是大家在Maya中使用得非常多的一个绑定+动画插件,功能强大,简单易学。我们可以使用ADV来绑定角色,key出动画,然后输出成FBX供游戏引擎(比如Unity)来使用。

    不过,由于ADV的开发初衷并非针对游戏,所以默认的骨骼设计比较繁琐,与Unity的Humanoid角色设定并不能完美通用。

    比如,我们选择DeformationSystem节点(这是ADV放蒙皮骨骼的地方)和Geometry节点(通常将模型放在这里)然后导出的FBX,如果在Unity中以Rig: Animation Type = Humanoid的设定导入的话,骨骼的识别匹配是有问题的,通常会表现为明明Maya中脚步没有滑动,但导入Unity以后脚步就出现明显的滑动现象。

    这是因为ADV的Deformation Rig的骨骼数量远远超过Humanoild的骨骼数量,转换后必然会丢掉很多骨骼的动画,这样累积起来就会造成动画的明显偏差。

    解决的办法有两个:

    一个办法是不使用Unity的Humanoid系统,将Rig: Animation Type设为Generic,这样能够完美保留动画的全部细节,但缺陷也很明显,设为Generic之后基本上就只能用自己调的动画了,不能直接套用海量的Unity动作资源库。对于我这种用习惯了资源库的懒人来说简直是不可忍受的。

    另一个办法是利用ADV的“游戏骨骼(Game Skeleton)”功能,这个功能可以自动建立一套符合Unreal规范的标准骨骼系统,甚至还可以将原本DeformationSystem的蒙皮转移到这套新骨骼上去。Unreal标准骨骼系统和Unity的Humanoid是完美匹配的,这样我们就可以很愉快的在Unity中利用Humanoid系统同时使用自己制作的动画以及海量动作资源库的素材了。

    具体操作步骤如下:

    导出带骨骼蒙皮的模型:

    首先在Rig文件中点击Game Skeleton -> Create,场景中会创建一套以root节点开头的骨骼,这套骨骼是完美匹配我们的Rig的,大家在配图中看到多出来的骨骼是原本Rig中就没有的手指结构(是的,原本的Rig中就没有做5根手指,所以这个Game Skeleton就匹配不了),这些多余的结构是可以直接删除的。

    然后,点击Transfer Skinning,ADV会将蒙皮权重转移给新的游戏骨骼系统。大家要注意Maya底端的提示,如果看到// Skinning transferred to Unreal Skeleton字样就说明转换成功了。如果再次点击Transfer Skinning,ADV会将蒙皮权重转回给原来的DeformationSystem。

    转移权重成功后,就可以选择这个新的root节点和原来的Geometry节点,导出成FBX,这就是我们的可以在Unity中使用的带骨骼蒙皮的角色资产了。通常我会在Unity的FBX导入设置中设置无动画、无材质、Humanoid类型Rig。

    导出动画:

    动画的导出更为简单。首先还是点击Game Skeleton -> Create来创建Game Skeleton。我个人建议先将模型复原成绑定姿态再创建Game Skeleton,可以到实际动画曲线之外的帧,点击ADV最底下的Go To Build Pose按钮。

    然后直接选择root节点,导出成FBX,这就是纯骨骼动画资产。要注意:root以及其下的骨骼都是受驱动控制的,并没有关键帧和动画曲线,在导出FBX的设置中不仅需要勾选动画,还需要勾选烘焙动画并设置烘焙范围。

    我自己以前都是喜欢自己手动烘焙关键帧,然后再导出FBX,现在看来浪费了不少时间啊。

    动画FBX在Unity中的设置也是无材质+Humanoid Type,不过Rig中的Avatar我会拷贝前面Rig模型所创建的Avatar,不喜欢工程中多出一堆无用的Avatar来。

    Animation那里需要修改下动画片段名称,并设置动画片段范围。希望动画片段循环播放的可以勾选Loop Time选项。

    默认的Animation导入设置会将动画曲线做一些优化,通常情况下就都让它优化吧,但如果发现优化后的动画出现了明显的问题,可以将Anim. Compression设置为Off

    最后不要忘记了点击Apply按钮确认修改。

    白模是转成Game Skeleton后导出的Humanoid Type,有贴图的是原始动画导出的Generic Type,两者基本看不出差异来。

    相关文章

      网友评论

        本文标题:使用AdvancedSkeleton给Unity制作动画的一些经

        本文链接:https://www.haomeiwen.com/subject/nomanqtx.html