Unity3D笔记第十六天——Mecanim动画系统

Mecanim动画系统
Unity3D动画系统分类:
   一:Unity3.5版本之前的旧的Legacy系统;
   二:Unity4.0版本新增加的Mecanim动画系统。


新动画系统的优点:
   1)可视化动画剪辑编辑;
  2)能够对动画信息进行复用;
   3)利用动画状态机(Animation State Machine)实现不同状态下动画剪辑的过渡。


人形角色动画制作与导入
Mecanim动画系统的强项之一:
     控制人形角色动画,它可以使得角色动画剪辑只制作一遍,即可以复用到不同的人形角色模型上。


 建立模型的一般注意事项:
1)注意模型的尺寸:一般在1.7-1.8之间;
2)在三维的建模软件中,使得角色的最底部与世界坐标的中心点对齐;
3)尽量把模型制作为T型姿势。


FBX文件中的Rig选项卡
(1)Animation Type(动画类型)
None:无动画类型
Legacy:旧版动画类型(使用Animation时使用)
Generic:非人形动画类型(无法使用Mecanim动画系统)
Humanoid:类人型动画类型(可以使用Mecanim动画系统)


(2)Humanoid类型下:
Avatar Definition(获得Avatar的方法):
Create From This Model:创建自身的Avatar
Copy From Other Avatar:使用其他模型的Avatar


FBX文件中的Rig选项卡
Generic类型下:
Root node(根节点):选择骨骼的根节点(动画类型为Humanoid时自动选择),其目的是为了使模型动画与世界坐标达到一个完美的融合。


FBX文件中的Animation选项卡
Import Animation:导入动画
Anim.Compression:动画压缩类型
Off:不进行压缩
Keyframe Reduction:关键帧压缩
Optimal:最佳压缩
Rotation Error:动画中旋转的误差值
Position Error:动画中位置的误差值
Scale  Error:动画中缩放的误差值


Animator组件
Controller:附加到此角色的动画器控制器
Avatar:此角色的Avatar
Apply Root Motion:应从动画本身还是从脚本控制角色的位置
Update Mode:动画器更新模式
Normal:动画器标准更新
Animate Physics:在物理循环期间更新动画器为了使动画系统与物理引擎同步
Unscaled Time:Time.timeScale外的动画器独立更新
Culling Mode:动画的剔除模式
Always Animate:始终播放动画,不剔除
Based on Renderers:渲染器不可见时,仅对根运动进行动画处理。当角色不可见时,所有其他身体部位保持静态


Animator编辑窗口
Aniamtor窗口打开路径:Window→Animator


在Aniamtor窗口中点击任意一个动画片段,观测Inspector面板:
Speed:默认动画速度
Motion:当前状态下的动画
Foot IK:该动画是否可以使用IK
Mirror:该动画是否使用镜像
Transitions:该状态下的转换列表
Solo:当自己满足转换条件时只播放自己的动画
Mute:动画状态转移是否被禁用:√(打钩):被禁用(红色)


在Animator窗口内空白处单击右键:
Empty:创建空动画剪辑
From Selected Clip:添加选择的动画片段
From New Blend Tree:添加新的混合树
Create Sub-State Machine:创建子动画状态机
Paste:粘贴
Copy current StateMachine:拷贝当前的动画状态机


在Animator窗口内选中动画片段,单击右键:
Make Transition:创建状态转移线
Set As Default :作为该模型的初始动画
Copy:拷贝动画
Create Sub-State Machine:创建子动画机
Create new BlendTree in State:以该动画片段创建新的混合树
Delete:删除该动画片段


创建Avatar
(1)在Project窗口中点击人物角色模型:U_Character_REF         
在Inspector窗口中选择Rig:
Animation Type:选择“Humanoid”;
Avatar Definition:选择“Create from This Model”;
设置后选择”Apply”进行确认。      
(2)打开映射配置界面:
   点击” Configure…”,进入” Mapping”设置界面,在Inspector窗口进行设置,在Scene窗口进行查看。
(3)点击Body、Head、Left Hand、Right Hand,分别进行身体、头部、左手、右手的设置,进行确认后点击“Apply”按钮。
(4)最后设置完成后,点击“Done”按钮。
(5)检查以上步骤,确认无误后,会看到在U_Character_REF模型中添加了一个Avator,如下图:


判断是否成功创建Avatar:
    如果没能成功创建该角色的Avatar, Configure…”按钮旁会显示一个叉号。
     如果能成功创建该角色的Avatar, Configure…”按钮旁会显示一个对号。


一个模型也可以引用其它模型的Avatar,步骤为:
(1)Avatar Definition选择: “ Copy From Other Avatar”
      Scource:  找到刚才创建的U_Character_REFAvatar
(2)点击“Apply”按钮


人形动画的重定向
人形动画的重定向是Mecanim系统中最强大的功能之一,这意味着用户可以通过简单的操作将一组动画应用到各种各样的人形角色模型上。特


别地,重定向只能应用于人形模型,在此情况下,为了保证模型间骨骼结构的对应关系,必须正确配置Avatar。
前提:U_Character_REF和Teddy都已经配置好各自的Avatar
重要操作:把创建好的AniController控制器分别赋予两个模型的Controller属性。


动画层( layer)
Unity使用“动画层”来管理身体不同部分的复杂状态机。比如:可以使用下半身(动画)层来管理走动/跑动;使用上半身(动画)层来控制


投掷/射击等动作。


身体遮罩(Avatar  Mask)
“Mask”选项用来指定该层使用的身体蒙皮。比如:如果你希望当角色走路时抱着物体,即手臂不会来回摆动。此时只需要在BodyMask中禁


止手臂的运动即可。
在Project列表窗口中创建“Avatar Mask”添加的新的身体动画蒙皮层窗口如下图所示。
将新创建的“Body Mask”拖动到新Layer的Mask窗口中,这样,该图层便只会播放手部的动画了。


逆向运动学(IK)
使用IK的前提条件:
首先将模型动画的Mask中需要使用IK的部分点绿(目前只可以在手部和脚部使用IK);
其次将Animator控制机中需要使用IK的Layer里的IK Pass打钩。


设置动画状态机
(1)在Project窗口,点击鼠标右键,创建AnimatorController,并进行重命名,比如:“AniControl”
(2)双击“AniControl”,打开Animator剪辑窗口,并将已经制作好的动画片段拖动到该视图中。
     橙色的动画片段“IdleShort”:为默认的动画状态。
(3)选择U_Character_REF模型的Animator组件,
     属性Controller:选择刚才创建的AniController
(4)各个动画片段之间没有转移的话,运行游戏,并打开Animator窗口,此时会播放默认的动画片段:“IdleShort”(会以蓝色进度条显  


     示)
Start、End:动画的起始、结束帧数
Loop Pose:循环姿势
Root Transform Rotation:骨骼根节点位置旋转
Root Transform Position Y:沿Y轴根节点位移
Root Transform Position XZ:沿XZ平面根节点位移
Mirror:动画是否镜像


给三个动画片段之间创建状态转移,如下图。
如果要通过代码方式控制动画的播放,需要在Animator窗口的下方的Parameters建立各种调整参数。


Float:浮点型(speed)
Int:整形(height)
Bool:布尔值(isRun)


Blend Tree(混合树)
利用差值技术,使多个动画进行混合,达到多个动画片段间的相互转换。


创建混合树:
Animator窗口右键点击From New Blend Tree


点击混合树,向其中添加需要混合的动画片段。


Blend Type:混合树类型
Parameter:变量类型
Motion:当前状态下的动画
Thresholc:该动画的临界值
     :该动画的默认速度
     :对该动画进行镜像处理
     :红线表示当前模型动画状态
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值