当前位置: 首页 > news >正文

第三十五章 Unity人形动画(下)

本章内容主要就是动画数据的独立文件使用方式。有了独立的动画文件,我们就可以将其应用到其他模型上面了。最简单的方式就是,我们可以给其他模型编辑动画控制器的时候,使用这些动画文件。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

http://www.lryc.cn/news/65950.html

相关文章:

  • vue导入导出excel、设置单元格背景色、文字居中、合并单元格、设置列宽(使用xlsx库和xlsx-style库)
  • java 线程池
  • 音频焦点使用及原理
  • PyQt5桌面应用开发(8):从QInputDialog转进到函数参数传递
  • 2.0 Vue框架设计的核心要素
  • “智慧赋能 强链塑链”——精细化工行业仓储物流数字化转型探讨
  • 用DG备库做的rman备份恢复一个数据库
  • JAVA中的IO操作有哪些?
  • 10:00面试,10:04就出来了 ,问的实在是太...
  • wangzherongyao PMO
  • Dart语法上
  • SignOff Criteria——POCV(Parametric OCV) introduction
  • Android 内存分析(java/native heap内存、虚拟内存、处理器内存 )
  • 产品思维与工程师思维
  • Android---启动速度优化
  • 使用 Mercury 直接从 Jupyter 构建 Web 程序
  • Python基础(二)
  • 第41讲:Python循环语句中的break-else语法结构
  • 双系统-真机安装ubuntu
  • Android实现向facebook回复消息代码
  • IDEA小技巧-Git的回滚强推代码找回
  • 即时通讯为什么不采用UDP的连接方式呢
  • 二叉树(纲领篇)
  • day41—选择题
  • Vue3 watch 监听对象数组中对象的特定属性
  • 请求策略库alova小记
  • [C++]string的使用
  • Kali Linux 操作系统安装详细步骤——基于 VMware 虚拟机
  • R语言APSIM模型应用及批量模拟实践技术
  • 破解马赛克有多「容易」?