Mecanim概述:

Mecanim是Unity提供第一个丰富而复杂的动画系统,提供了:

  • 针对人形角色的简易的工作流和动画创建能力
  • Retargeting(运动重定向)功能,即把动画从一个角色模型应用到另一个角色模型上的能力。
  • 针对Animations Clips(动画片段)的简易工作流,针对动画片段及他们之间的过度和交互预览能力。
  • 一个用于管理动画间复杂交互作用的可视化窗口。
  • 通过不同逻辑来控制不同身体部位的运动能力。

Mecanim工作流:

1.资源导入,这一阶段由美术师或动画师通过三维工具来完成。

2.角色的建立,主要分为以下两种方式。

  • 人形角色的建立,Mecanim通过扩展的图形操作界面和动画重定向功能,为人物模型提供了一种特殊的工作流,它包括Avatar的创建和对肌肉定义(Musicle Definitions)的调节。
  • 一般角色的建立,一般为运动物体和四足动物而设定,动画重定向对此不适用。

3.角色的运动,包括设定动画片段以及其相互间的交互作用,也包括建立状态机和混合树、调整动画参数以及通过代码控制动画等。

获取人形网格模型

1.人形网格模型,为了充分利用Mecanim的人形动画系统和动画重定向功能,需要一个具有骨骼绑定和蒙皮的人形网格模型。

  • 人形网格模型一般由一组多边形或三角形网格组成,创建模型的过程称为建模(modelling);
  • 为了控制角色的运动,必须为其创建一个骨骼关节层(joint hierarchy);
  • 人形网格模型必须与关节层级关联起来,通过指定关节的动画来控制特定网格的运动,这个过程称为蒙皮(skinning);

一句话来总结,创建好人物模型后(建模modelling),为其创建一个骨骼关节(joint hierarchy),最后异步将人物网格模型和关节关联起来(蒙皮skinning)。[ modelling > joint hierarchy > skinning ]

2.获取模型,在Mecanim系统中,可以通过三种途径来获取人物网格模型:

  • 使用一个过程试的人物建模工具,Poser 、 Makehum或Mixamo等。其中有些三维软件可以在建模的同时进行骨骼绑定和蒙皮操作。应该尽可能的减少人形网格的面片数量,从而更好的在unity中使用。
  • 在Unity Asset Store下载。
  • 通过三维建模软件来创建全新的人形模型,这类软件包括3Dmax、Maya、Blender等。

3.导出和验证模型,unity引擎可以导入一系列的常用3D文件格式,推荐使用FBX 2012,因为改格式允许:导出的网格中包含关节层级、法线、纹理以及动画信息;也可以导入不包含网格的动画信息。

动画分解:

1.预分解动画模型:最容易使用的动画模型是含有预分解动画片段模型,这种动画模型在导入项目后,可看到面板中包含多个可用的动画片段列表,还可对每个动画片段的帧数范围进行编辑调整。

2.未分解动画模型:提供单一连续动画片段的模型,这种情况可自行设定每个动画的片段所需要的帧。如该模型动画一共有100帧,1-10帧为待机喘息状态,11-30帧为行走,31-60帧为奔跑,61-80帧为攻击,81-100帧为死亡动画。

3.为模型添加动画:用户可以为任意模型的动画组建添加动画片段,该模型甚至可以没有肌肉定义(非Mecanim模型),进而在Animations属性中指定一个默认的动画片段和所有可用的动画片段。在非Mecanim模型上添加动画片段也必须采用非Mecanim的方式进行,即将Muscle Definition属性设置为None。

对具有肌肉定义的Mecnim模型处理过程如下:

  • 创建一个Animator Controller。
  • 打开Animator Controller窗口。
  • 将特定的动画片段拖到Animator Controller窗口。
  • 将模型资源拖入到Hierarchy视图中。

4.通过模型文件来导入动画片段:该方法是遵循Unity指定的动画文件命名方案,用户可以创建独立的模型文件并按照modelName@animaionName.fbx的格式来命名。例如一个魔法师的模型(wizard.fbx),待机、行走、攻击分别命名为 wizard@idle.fbx、wizard@walk.fbx 、wizard@attack.fbx。只有在这种情况下,动画数据才会被使用。

使用人形角色动画

Mecanim动画系统特别适合用于人形角色的动画制作,因为人形模型均具有相同的基本结构,所以用户可以实现将动画效果从一个人形骨架映射到另外一个人形骨架上去,从而实现动画重定向的功能。

创建一个动画的基本步骤就是创建一个从Mecanim系统的简化人形骨架结构到用户实际提供的骨架结构的映射,这种映射关系称为Avatar,下面就介绍如何为一个模型创建一个Avatar。

创建Avatar

在导入一个模型(例如fbx)后,在该模型面板上选中Rig选项卡指定他它的骨骼模型,包括Humanoid、Generic和Legacy这三种。

1.人形动画(Humanoid)

对于人形骨架,选中Animation Type下拉菜单,选择Humanoid,单击Apply按钮,Mecanim系统就会尝试将用户提供的骨架结构与Mecanim系统内嵌的骨架结构进行匹配,匹配成功后在可以看到Configure...复选框被选中。在匹配成功的情况下,会在模型资源中添加一个Avatar子资源。需要注意的是,这里匹配成功仅仅是匹配了所有必要的关节骨骼,如果想达到更好的效果,还需要对Avatar进行手动调整。如果在Configure...旁边显示一个叉号,即不会生成相应的Avatar子资源,这种情况就需要手动配置Avatar。

2.非人形动画

Unity为非人形动画提供了两个选项,一般动画类型(Generic)和旧版动画类型(Legacy),一般动画仍可由Mecanim系统导入,但无法使用人形动画专有的功能。

配置Avatar:

在上一步生成Avatar子资源后,即可配置Avatar。Avatat是Mecanim系统中极为重要的模块,因此为模型资源正确的设置Avatar也至关重要,不管Avatar自动创建过程是否成功,用户都需要进入Configure...Avatar界面中确认Avatar的有效性,即确认用户提供的骨骼结构与Mecanim系统预定义的骨骼结构是否正确的关联起来,并且模型处于T形姿态。

点击Configure...后Scene视图将被用于显示当前模型的骨骼、肌肉、和动画信息,同时会出现一个Avatar配置面板,可看到一个关键骨骼映射信息的视图,该视图还显示了哪些骨骼是必须匹配的(实线圆圈),哪些是可选匹配的(虚线圆圈)。为了方便Mecanim进行骨骼匹配,用户提供的骨架中应半酣所有必须匹配的骨骼。此外为了提高匹配的成功率,应尽量通过骨骼代表的部位来给骨骼命名。

如果复发为模型找到合适的匹配,用户也可以通过类似Mecanim内部使用的方法来进行手动配置:

1.在Avatar面板中选择Pose下拉项中的Sample Bind-pose(得到模型的原始姿态);

2.在Avatar面板中选择Mapping下拉项中的Automap(基于原始姿态创建一个骨骼映射);

3.在Avatar面板中选择Pose下拉项中的Enforce T-pose(强制模型贴近T形姿态,即Mecanim动画的默认姿态)

如果在第二个步骤中,自动映射的过程出现失败或者局部失败,用户可通过Scene视图或者Hierarchy视图中拖出骨骼并指定骨骼,如果Mecanim认为骨骼匹配,将在Avatar面板中以绿色显示,否则以红色显示。

如果没有指定正确则会看到Sence视图中会出现Character not inT-pose提示,可通过EnforceT-pose强制将模型转换为T型姿态或者旋转至模型为T型姿态。

上述骨骼映射信息还可奥村一个人形模版文件(Humanoid Template File).ht ,这个文件可在所有使用这个映射关系的角色之间复用。

设置Muscle参数:

Mecanim使用肌肉(Muscle)来限制不同骨骼的运动范围,一旦Avatar配置完成,Mecanim就能解析其骨骼结构,进而用户就可以在Muscles选项卡中调节相关参数。在此可非常容易的调节角色的运动范围,确保看起来真实自然。

用户可以在视图上方使用预先定义的变形方法对几根骨骼同时进行调整,也可在视图下方对身体上单根骨骼进行调整。

人形动画的重定向:

人形重定向是Mecanim系统中强大的功能之一,这意味着开发者只需要很简单的操作即可将一组动画应用到其他人形角色模型上,前提是必须正确的配置Avatar。

导入单个动画文件:

在从三维软件导出模型前,遵循unity3d动画文件命名方案,为单个动画模型文件命名modelName@animationName.fbx,即 模型名称@动画名称.fbx 。

例如对于一个名为warlock(魔法师)的模型,分别指定 idle(待机),walk(行走),attack(攻击),death(死亡) 等动画。

即命名规范:

warlock@idle.fbx

warlock@walk.fbx

warlock@attack.fbx

warlock@death.fbx

另外还需导出一个 warlock.fbx 不带动画的模型文件,在导出模型前勾选 no animation选项即可,warlock.fbx模型会遵循动画文件命名规范来索引其他带动画的模型文件。

[原]Unity3D深入浅出 - 新版动画系统(Mecanim)的更多相关文章

  1. [原]Unity3D深入浅出 - 新版粒子系统 (Shuriken)

    Shuriken粒子系统是继Unity3.5版本之后推出的新版粒子系统,它采用了模块化管理,个性化的粒子模块配合粒子曲线编辑器使用户更容易创作出各种兵分复杂的粒子效果. 创建一个粒子系统的方式有两种: ...

  2. [Unity3D]Unity4全新的动画系统Mecanim

    Unity4.X添加一个新的动画系统,以取代原有的3.X旧的动画系统,全新的动画系统Mecanim是官方推荐,它使我们能够写更少的代码实现连续动画. 效果图 Unity3.X中动画系统播放动画 使用播 ...

  3. Unity 4.0 中的新动画系统——MecAnim

    分享一个文档资料,关于动画系统的,版本应该很老了,但是有借鉴意义的: Unity 4.0 已于 2012 年 11 月 15 日正式发布,Unity 每一次版本的提升,都给游戏开发者带来惊喜,这一次也 ...

  4. Unity3d之Mecanim(新版动画系统)

    1,动画系统配置,2,代码控制动画 原文地址:http://blog.csdn.net/dingkun520wy/article/details/51247491 1,动画系统配置 创建Animato ...

  5. Unity3D之Legacy动画系统学习笔记

    Unity3D的Mecanim动画系统是非常强大的,而且作为Unity推荐的动画系统,其未来会完全代替老的一套动画系统,即Legacy动画系统.目前的情况是Mecanim与Legacy两套动画系统同时 ...

  6. [原]Unity3D深入浅出 - 认识开发环境中的Component(组件)菜单

    Component(组件)是用来添加到GameObject对象上的一组相关属性,本质上每个组件都是一个类的实例,比如在Cube上添加一个Mesh网格,即面向对象的思维方式可以理解成Cube对象里包含了 ...

  7. 解决Unity3d 4.3 动画系统带来的烦恼

    近期有非常多同学问我关于unity3d 4.3更新之后动画系统和曾经不一样了,并且之前用的非常熟练的创建动画和修修改画非常多操作都不好用了,那么在这里和大家分享一下三杀的个人经验,方便大家使用unit ...

  8. 使用Unity3D自带动画系统制作下雨效果

    之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪 步骤 ...

  9. 关于Unity中新版动画系统的使用

    Mecanim动画 1:旧版动画系统只能通过代码来控制动画播放,随着动画种类变多,代码复杂度也会增加,同时动画过渡也需要非常繁琐的代码控制,为了让有经验的动画师开发动画,unity推出了针对人物角色的 ...

随机推荐

  1. 《疯狂的android讲义第3版》读书笔记

    第一章.开始启程,你的第一行android代码 1.android系统架构: 1)linux内核层:为底层硬件提供驱动,如显示驱动.音频驱动.照相机驱动.蓝牙驱动.Wifi驱动.电源管理等 2)系统运 ...

  2. 思道OA PK 通达OA 同场竞技 谁与争锋

    技术架构 思道OA 通达OA 开发语言 微软ASP.NET 4.0 PHP开源脚本语言 64位平台 64位 32位 数据库 SQL Server大数据库 MySQL开源数据库 官网下载 下载地址 下载 ...

  3. 直接下载完整chrome浏览器的方法

    目前通过下吗的链接可以获得独立的安装包. http://www.google.com/chrome/eula.html?standalone=1&hl=zh-CN

  4. Python 信号量

    信号的概念 信号(signal)--     进程之间通讯的方式,是一种软件中断.一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号. 几个常用信号: SIGINT     终止进程  中断进 ...

  5. c语言指针用法

    一.指针 int t 定义整型变量 int *p p为指向整型数据的指针变量 int a[n] 定义整型数组a,它有n个元素 int *p[n] 定义指针数组p,它由n个指向整形数据的指针元素组成 i ...

  6. .NET安装和配置Oracle数据访问组件(ODAC)

    Many ASP.NET applications access Oracle database for the data source. Oracle supports the .NET with ...

  7. lua通过bunlde读注意事项

    把lua脚本做成bundle,加载字符串,变成lua对象: lua loadstring("name")() 注意:loadstring的问题: 无法访问全局local变量,需要改 ...

  8. Deferred Shading(延迟渲染)

    1.简介      在计算机图形学的词典里,Shading表示“对受光物体的渲染”,这个渲染过程包括下面几步[1]: 1) 计算几何多边形(也就是Mesh).      2) 决定表面材质特性,例如法 ...

  9. bnuoj 1053 EASY Problem (计算几何)

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=1053 [题意]:基本上就是求直线与圆的交点坐标 [题解]:这种题我都比较喜欢用二分,三分做,果然可以 ...

  10. 【斜率DP】BZOJ 1911:特别行动队

    1911: [Apio2010]特别行动队 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 3006  Solved: 1360[Submit][Statu ...