0%

Unity导入导出动画

Unity中的动画以.anim文件的形式,这个单独的动画文件是无法和3dmax通用的,3dmax支持的动画都是存在于FBX文件中,本文记录一下将两者完全打通的方式。

导入

以Mixamo上下载的FBX为例。

可以看到下载到的是一个标准的模型文件和一堆不带模型只带动作&骨骼信息的文件。

直接拖到Unity里面看一下:

选中动作,将模型文件拖到Inspector窗口预览一下:

由于导入进来的两个FBX骨骼都是Generic通用骨骼,骨骼信息也都一样,因此动画播放正常。

将带动画的FBX骨骼改成人形骨骼,会多出来一个Avatar,是Unity用来映射人形骨骼和模型的。

此时再选中动画,可以看到,动画无法播放了:

这是因为动画的人形骨骼和模型的通用骨骼不一致造成的,将模型的骨骼也改为人形骨骼,就又能正常播放了。

所以,在使用动画前,一定要记得把动画的FBX骨骼类型改成和需要套用动画的模型骨骼类型一致!!!

接下来,选中我们需要的动画,按Ctrl+D,动画文件就被剥离出来了。

如果要给动画分段,也可以在剥离之前先在FBX的Inspector中完成:

导出

假如我们在Unity中调整了一下动画,要导出来给其他人,该怎么办呢?

Generic通用骨骼

如果用的骨骼系是通用骨骼系,做法很简单。首先在Unity的Package Manager中安装FBX Exporter。

将模型拖到Hierarchy中,新建一个Animation,并将新的动作拖进来。

p.s. 用Animator也可以,只要Animator中包含所有需要的动画即可

右击并选择Export To FBX

在选项窗口中选择相关信息并导出:

可以看到新的动作已经包含在FBX文件中了,将这个文件发送给别人,别人也能看到带新动作的模型了。

Humanoid人形骨骼

如果模型和动画的骨骼为人形骨骼,同样用上述方法,会发现如果附加Animation再导出,FBX会丢失动画。

而如果附加Animator再导出,则动画是错误的:

这是因为FBX Export还不支持人形骨骼,所以只能换个方案。

首先,通过Package Manager安装Timeline和Unity Recorder插件。

同样将模型拖入到Hierarchy中,打开Timeline窗口,选择新建一个timeline。

接下来,把所有需要的动画添加进来:

然后打开Window>General>Recorder>Recorder Window,按下图设置。注意把Hierarchy中的物体拖动到Game Object处。

点击Start Recording,就会自动运行并播放Timeline中的动画。等播放完毕后,点击Stop Recording,就会在设置的保存路径下看到录制好的动画了。

可以看到,由于用Recorder录制时没有及时点击Stop,动画最后有一段时间是静止状态的。而且新导出的模型骨骼系是通用骨骼系。