本章内容主要就是动画数据的独立文件使用方式。有了独立的动画文件,我们就可以将其应用到其他模型上面了。最简单的方式就是,我们可以给其他模型编辑动画控制器的时候,使用这些动画文件。Unity则给我们提供了更加高级的共享方式,就是对动画控制器的共享,也就是说,我们可以将我们刚刚的动画控制器拖拽到其他模型的“Animator”组件的“Controller”栏中去。但是,这里有一个非常重要的前提,就是这些模型的“骨架结构”必须大致保持一致,也就是遵循Unity的人形骨架结构。想要最大程度的共享动画数据(动画文件或者动画控制器),我们就需要将模型本身的“骨架结构”映射到Unity的人形骨架结构上,我们称之为“Avatar”,翻译过来就是“阿凡达”。接下来,我们在重新导入一份“Elf”模型,重新命名文件夹为“Elf3”,如下所示
然后我们点击“Elf.fbx”这个文件,在其Inspector检视视图中进行编辑。
首先取消“Import Animation”选项,也就是不再使用模型里面的动画了。
然后我们需要修改“Animation Type”为“Humanoid”人形动画,
点击“Apply”保存更改。
点击“Apply”保存修改之后,就会出现一个黄色的叹号。这个叹号只是一个警告,并不代表有错误发生。我们只要保证“Configure”的左边是一个“对钩”就可以了。这说明,Unity已经成功识别出我们“Elf”模型中的“骨架结构”。我们可以点击“Configrue”进入看看。
上面截图中,人形图像中关节出的圆点都表示骨骼,绿色就代表模型骨骼和Unity人形骨骼“映射”成功了。这个“映射”会以文件形式保存在“Elf”文件中,如下所示
上图中的“ElfAvatar”就是这个“映射”文件。那如果映射不成功呢?那么,在上面人形图像中错误的关节就会以红色显示,说明Unity并没有找到正确的骨骼。我们以“右手”骨骼为例,来说明这种情况,如下所示:
在上图中,我们点击“右手”骨骼,在下面的列表中,左边的“Hand”就是Unity的人形骨架结构,右边就是模型骨架结构。注意,Unity的人形骨架是不允许修改的,我们要根据Unity的人形骨架找到模型中对应的骨骼。例如,左边的“Hand”应该对应模型中的“Bip001 L Hand”这块骨骼,我们可以在“Hierarchy”视图中找到对应的这块骨骼。
这里,我们就故意修改一下,将“Bip001 L Hand”下面的“Bip001 L Finger0”骨骼拖拽到Unity的“Hand”骨骼位置,如下所示
此时,我们就会发现,出现错误了,对应的关节位置会以红色凸显出来。这说明,Unity人形骨骼与模型人形骨骼匹配不对,需要我们手动修改。因为我们是反向操作的,因此我们只需要将原来的“Bip001 L Hand”拖回到“Hand”位置,就变回正确的绿色了。最后,我们点击Inspector检视面板右下角的“Apply”和“Done”保存后退出去。
关于Unity人形骨架映射问题,我们就大致说到这里。我们继续回到正题上来。我们已经将我们的“Elf”模型修改成了Unity的人形骨架,那么它就能应用其他符合Unity的人形骨架的模型动画了。还记得我们之前的“U_Character_REF.fbx”,它也是一个符合Unity的人形骨架的模型哦。如下所示
既然,“U_Character_REF”和“Elf”都符合Unity的人形骨架,那么“U_Character_REF”的动画,就应该可以应用到“Elf”的身上。接下来,我们将“Elf”拖拽到场景中。
Unity的强大之处在于,不仅可以将动画文件共享给其他模型,就连动画控制器也可以共享给其他模型。也就是说,我们可以给“Elf”添加“Animator”组件,并将之前的动画控制器“U_Character_Animator_Controller”添加到“Animator”组件的“Controller”项目中。最后将我们之前的“U_Character_Animator_Script”脚本也挂载到“Elf”游戏对象上来。这样,两个模型角色就可以同时接受相同的控制,并且做出相同的动画了。如下所示
我们运行工程,查看效果
以上就是Unity的人形动画重定向,是不是感觉非常的不错。但是,我们换一个角度考虑这个问题,游戏如果大量重复使用相同的动画,会不是显得毫无特色。我们游戏开发中,会有很多很多的人物角色,他们可能会有不同的特征,例如种族不同,因此他们在动画设计上应该拥有不同的形式,至少男性和女性的待机,走路,跑步等等动画是不一样的。而且,游戏开发中,除了人物角色(两足类)之外,还有其他非人物的角色,例如一些四足的动画,甚至一些天马行空想象出来的异形怪物,他们的动画设计就只能自己独有的了。因此,游戏开发中的动画重点还是在于“动画控制器”的设计上。关于“动画控制器”的内容,我们只介绍了一小部分,对于“动画层”以及“混合树”还没有介绍,还包括更加复杂的“有限状态机”系统。这些内容我们在后面详细介绍吧。
本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id