您现在的位置是:首页 >技术交流 >在Unity3D中使用Mixamo动画资源网站首页技术交流

在Unity3D中使用Mixamo动画资源

Mmy8671 2023-05-20 08:00:02
简介在Unity3D中使用Mixamo动画资源

前言

  前两天给低年级的同学答疑,有同学突然问起下载的动画在Unity中用起来错位的问题,才突然想起当初为课程大作业提供的动画资源是Mixamo这个网站(模型资源是另外单独给的游戏资源包),而且在Unity中直接下载动画并使用确实有些问题,于是决定把当时写的文档发个文章,方便后续有同样疑惑的开发者参考。

下载动画文件

  网址www.mixamo.com,进入网站后需要登录Adobe账号:


  登录后点击左上方Animation标签,在左侧有大量动画可供选择:


  这里我们搜索walk并点击选择任意一个动画,中间为该动画预览画面,右侧可以对动画的部分细节进行调整(不同动画可以调整的参数可能略有不同):


  在右侧勾选上In Place(因为我们要使用程序来控制角色移动,不需要动画带有额外的位移),其他参数不做调整。点击右上方的下载,Format选择FBX for Unity,Skin选择Without Skin(下载的文件中不含有模型),后两个选项可以根据需要调整(或者默认就行),确认下载:

修改Unity动画文件设置

  下载完毕后,将下载的fbx文件拖入unity中:


  选中该文件,在Inspector窗口的Rig栏下将该文件的Animation Type调整为Humanoid(人形骨骼动画),Avatar Definition为Create From This Model,并点击下方的Apply按钮应用变更(这里留个坑,之后会解释):


  切换至Animation栏:


  在该栏下方勾选如下设置,让动画能够循环播放并且不影响人物根节点的位置和旋转(此处为人物行走动画所以需要循环播放,对于不同动画设置可能不同),点击Apply应用变更:(右侧为补充的项目中翻滚动画的设置,通过动画控制了角色的XZ轴位移,供参考)

查看模型与动画匹配效果

  准备已经绑定好骨骼的人物模型:


  选择之前在网站上下载的模型动画文件,在Inspector窗口切换至Animation栏,并拉出最下方的预览窗口。此时可以预览该动画,默认模型为unity官方模型:


  点击预览窗口右上方的小人图标选择Other并选择之前准备的模型或者直接将模型拖入该预览窗口都可以将预览模型替换为自己的模型:


  点击预览窗口左上方三角,播放动画:

动画错位问题及原因

  (不关心技术原理的可以不看,不影响基本使用。)
  (注意,此部分为个人理解。当时在写文档时只是面向入门使用,并没有具体介绍原因,因为内容时间久远我的记忆也可能出现差错)

  之前我们在动画导入设置的时候Avatar Definition选择了Create From This Model,如果你在网站上下载文件时选择了With Skin可能没什么问题,但如果只是下载了动画文件(Without Skin),那可能会发现动画好像跟之前在网站上预览的时候有些不同,总觉得有些扭曲。
  在之前下载的Walk动画中,仔细观察会发现人物的左脚扭曲,与原动画明显不符:


  原因是Avatar本质上是在帮我们将不同模型之间的骨骼对应至同一套Avatar,我们在选择Avatar Definition的下方点击Configure就可以看到骨骼的对应情况以及当前Avatar的一些参数设置等。

  我们的模型通常默认姿势都是T-Pose。如果你在下载模型动画文件时带上了模型文件,Avatar会以模型动画文件中模型的默认姿势为Avatar的默认姿势,也就是T-Pose,这与我们实际使用的模型姿势相符合。但如果模型动画文件中没有模型资源,Avatar会以动画的第一帧的姿势为默认姿势,并自动应用Enforce T-Pose(上图Inspector窗口最下方可以手动调用),也是就上图左侧的姿势。效果看起来还算不错,但正是因为这个姿势与模型默认姿势的偏差导致了动画后续计算产生了扭曲,所以回到正题,也就是如何解决。

动画错位问题及解决

  选择动画文件,在Inspector窗口点击Configure:


  可以看到骨骼默认姿势并不是标准的T-Pose,在脚部错位尤其明显:


  我们可以在unity中手动调整位置矫正错误,也可以使用如下方法:在mixamo中下载任意动画,Skin选择With Skin(或者搜索下载T-Pose动画,Without Skin)


  同样将该文件拖入unity,并修改动画类型。点击Configure可以看到,对于带有模型文件生成了正确的T-Pose:



  选择之前下载的动画文件,将Avatar Defintion修改为Copy From Other Avator,Source修改为刚才的Avatar文件,错位问题解决:

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。