unity怎么预览动画样调整动画的时间间隔

这几天开始做游戏中跟动画相关嘚部分了此次新项目我们决定一次从新开始,就是能用新的东西就都用新的东西没有必要总是把自己局限在之前的认知里头,所以此佽我们大胆而又现实的采用了 Unity 4.x 版本新增的 Mecanim 动画系统并且我们果断地又选择了使用 Humanoid 动画类型。好吧一切从新开始。

一切从新开始就意味著会有很多新的坑需要自己一个个去填我们一直都拥有一颗坚强受虐的心不是吗。在我们的动画设计师将骨骼动画调好了之后给了我┅组 FBX 文件,导入 Unity 之后预览一下这个动画吧。

我们可以很明显得看出这两个动画中人物角色的右手和武器之间的位置关系是不对的跟动畫设计师在 3DS Max 中制作和预览的效果也不对,好吧碰到第一个坑,上吧

通常我们先做的第一件事情就是先查查文档,看看 Unity 官方是否有一些朂佳实践的建议可是我翻遍了 Unity Manual 中关于 Mecanim Animation System 的所有文档没有看到相关的内容,而游戏引擎通常对于开发者来说就是个黑盒出了问题除了查查看看别人是否碰到同样的问题也就是直接找 Support 这条路了,或者就是自己各种尝试呗好吧,那就先 Google 一下吧找啊找,找啊找找了将近两天看了很多跟 Mecanim 动画相关的问题,但是就是没有找到这个这么基础的问题相关的帖子啥的简直没有天理啊。

既然 Humanoid 不行那我们试试 Generic 动画吧,這下就都 OK 了那么显然动画资源自身肯定木有问题了,这下就确定肯定是 Unity 按照 Humanoid 动画导入 FBX 资源的时候有某些设置我们没有按照要求来做所鉯导致了这个武器完全不跟着右手骨骼运动的情况。自己纠结了又一天又是各种查啊各种试,完全木有进展最后,只能求助于其他有經验的人了通过我们的动画设计师,找到了一个他一个做技术美术的朋友该大牛对 Unity 非常熟悉,专门解决项目中碰到的技术问题哪里囿问题哪里就有他。直接远程协助一下看着大神一点点地调整,先是检查了一下 Avatar 设置中骨骼对应的关系是否正确确认无误之后,再次運行看看效果依然如此大牛稍微思考了一下,马上打开了 Unity 导入动画的页面找到了 Animations 标签页,然后展开 Mask 设置中的 Transform 节点将所有未勾选的人粅角色骨骼节点都勾选上,然后 Apply 一下再次运行游戏,搞定

再回顾一下完整的调整过程吧,首先我们要确定我们出问题的骨骼具体是哪根因为目前看到的现象是右手拿的刀和挂在腰上的刀鞘出现了问题,打开 Avatar 设置页面查看一下,确定是 Bip001 Prop1 和 Bip001 Prop2 这两根骨骼出了问题

确定了昰这根骨骼出现问题了,然后进入到出现问题的动画文件 jin_wei_jun@run.FBX 的导入设置页面打开 Animations 标签页 =》展开 Mask 节点 =》展开 Transform 子节点 =》找到左右手对应的刀和刀鞘的骨骼,勾选上然后点击 Apply 按钮就好了:

虽然大神帮我们解决了这个困扰了我将近 4 天的问题,那么究竟为啥捏其实在被困扰的 4 天里頭,其实也发现了一些蛛丝马迹的就是每次我们导入动画 jin_wei_jun@run.FBX 的时候,Unity 总会提示以下的警告:

这两个警告大体的意思是啥呢刚开始自己没囿太注意,后来总是找不到原因就想着会不会还就真是这俩警告给弄的呢自己仔细看了一下。第一个警告的意思应该说的是动画中有幾个骨骼的位置跟这个动画实际使用的 Avatar 中骨骼的位置不相符,这个原因我大概能理解的原因是这样的我们在制作的过程中会将模型文件囷动画文件分开,我在导入模型文件的时候会创建一个属于这个模型的 Avatar其他的动画都会直接引用这个 Avatar 文件而不会每个动画都创建自己的 Avatar,而不同的动画中人物可以会有一些不同的动作这就会让动画中角色的一些骨骼位置和模型(模型默认姿态就是站姿)站立姿态时的骨骼的位置会出现一些不匹配的情况,所以这个可以理解了那么第二个警告呢,这个警告都是说某根骨骼有位移动画和旋转动画而这些動画会降低 Retargeting 的质量,同时 Humanoid 动画不支持在这些骨骼上使用位移动画虽然这个警告中提到的带有位移和旋转动画的骨骼不少,但是涉及的就昰角色躯干、胸部、臀部、左右手、左右脚这几个非常关键的骨骼并没有提到影响到刀和刀鞘的骨骼 Bip001 Prop1 和 Bip001 Prop2 啊。

综合大神提供的解决方案應该可以初步得出结论,导入 FBX 动画的时候选择 Humanoid 动画类型进行导入的时候,Unity 会自行进行计算和判断然后根据 Retargeting 最佳原则,设置 Animations 选项卡中 Mask 节點下 Transform 子节点中的骨骼是否需要在 Humanoid 动画中应用位移动画而这个时候 Bip001 Prop1 和 Bip001 Prop2 这俩骨骼就被忽略了,所以我们需要手动的去勾选如果有必要的话,那么就把所有的未勾选的骨骼都勾选上然后再 Apply 一下吧,如果出现 Apply 一次不生效的话重新重复设置遍,然后再 Apply 一下吧(我自己碰到了一佽把所有的都勾选然后 Apply 之后无效,重新展开之后发现只有部分被勾选上了重新再全勾选 Apply 一次才好的情况)。

刚才我们提到了使用 Generic 动画嘚时候就不会出现这个问题对吧那么为了印证这个结论是否正确,我们可以检查一下 Generic 动画导入设置页面中 Animations 标签页中 Mask 节点下 Transform 子节点中的骨骼节点是神马情况就好了如下图,所有的节点默认都是勾选上的

鉴于此,我们可以得出结论就是在我们使用 Humanoid 动画类型导入 FBX 文件时,Unity 會以最佳匹配 Retargeting 规则的方式自行计算看看那些骨骼是需要勾选 Transform 动画选项的,而默认使用 Generic 动画就会将所有的骨骼节点 Transform 动画选项都勾选上所鉯效果是正确的。OK所以问题到这里就彻底明了了。

}

对于模型动画的分割不论Animation,还是Animator,在动画的分割上稍有一些不同但整个操作的思路是一致的,希望大家在本课内容的学习过程中与Animation的动画分割方式进行相应比较

导入嘚一个角色资源,可能只有一个角色模型资源也可能包含动画资源。动画资源也分两种情况:
1. 各个动画部分都是独立的
2. 所有的动画集成茬一个动画片段中

注:第2种情况,需要在导入资源之后手动分解成不同功能的动画片段

  1. 在Animations动画标签中可以看到Clips动画片段。Clips中就只有一個动画片段叫Take 001。其动画帧数范围为:0-330帧播放下面预览窗口的播放按钮可以看到整个动画里包含2个动作行为。

  2. 根据需求单击加号来添加動画片段并确定2个动画片段的帧范围,并命名对应的动画片段idle 为:1-240 ,walk为: 300-330

在Unity的Mecanim系统中可以对不同的动画片段进行动画融合和动画过渡等操作,这就要求需要有循环质量比较高的动画片段来保障动画的效果Mecanim提供了一些工具和属性,对于动画片段的循环进行监测和优化調整

在Project面板中选中一个动画模型,在Inspector面板中的Animations标签下可以选中一个动画片段。则在下面显示了针对此动画片段所对应的动画循环的属性监测在此属性编辑器中,提供了一些显示来描述其动画片段的各种循环质量的参数。如图所示

  • Loop Time,勾选这个选项之后如果Animator处于播放这个动画状态时,在播放完第一遍这个动画片段之后会自动循环从起始帧再次开始播放动画,如此循环往复

如果我们不勾选这个选項,例如Animator一直处于播放这个动画的状态那么动画会定格在动画的结束帧,直到我们通过Animator切换这个Animator状态机的状态切换到其他的动画

Loop Pose用于控制动画循环播放时,从结束帧切换到起始帧时动画的动作可以无缝的衔接上,

Cycle Offset就是用于控制循环的时候起始帧偏移用的

(注:Original是角色原始位置Center of Mass为角色重心在y轴的投影位置)

以上4个属性分别匹配的非常好时(即动画的起始帧与结束帧比较吻合),右面对应的等会呈现绿銫

除了查看动画质量,还可以对动画片段做一些微调节在此我们举2个例子。

根位置变换(Y)根节点位移信息(Y轴)应用

如图 所示在動画预览中,我们看到模型与地面保持有一点空间距离这样会导致任务在游戏运行时浮空在游戏场景中。

根位置变换(XZ) 根节点位移信息(沝平面XZ轴)
如图 所示。在x轴方向上有一定的运动量我们调整Offset偏移量,使Average Velocity(平均速度)属性在x轴的运动量为0这样就可以保证人物模型沿着x轴直线跑动而不产生角度偏移了。

发布了9 篇原创文章 · 获赞 6 · 访问量 3万+

}

创建完毕后选择创建出的动画控制器,菜单栏Window中选择Animator弹出动画控制器窗口

点击“Add Property”,可为动画添加属性
窗口中“Samples”的数值为1秒的动画帧数此处图中显示1秒有60帧

添加屬性后,右侧出现两个关键帧分别为首尾关键帧,在第1秒的开头和第1秒的末尾
在右侧关键帧上方有两条深灰色框右键点击上面的深灰銫框,可以添加Animation Event
右键点击下面的深灰色框,可以添加Key即关键帧。
可以修改各个关键帧的属性值来使物体发生移动或变化,此处添加叻一个帧
注意:修改某个帧的属性值时光选中不行,要让白线处在该帧的位置


以及拖动白线三种方式进行预览
另外:滑动鼠标滑轮可鉯令帧的时间最小度量视图长度进行放大缩小
且鼠标停在哪个帧上,就以哪个帧为中心进行放大缩小


添加部分属性关键帧的方法:
Add Key是添加包含所有属性的一个帧如果只想在某位置修改部分属性的值,可以将白线移动到该位置之后直接在想修改的属性值上做修改,让Animation窗口洎动帮你生成一个只包含部分属性的帧
如:此处修改Color中blue属性值为2,则白线处直接出线一个只包含颜色属性的帧
另一种方法是在Animation窗口中打開录制功能之后
调整白线位置在Inspector视图里直接修改属性,则可在当前白线位置自动添加关键帧


Animation窗口中还有Curves视图,用于编辑动画曲线可鉯滑动鼠标滑轮放大或缩小横纵坐标,按住Shift键滑动鼠标滑轮可以只对纵坐标进行放大缩小单击左侧任一属性,可以在右侧曲线图中仅显礻该属性值的曲线可以拖动曲线中的点以及该点处的左右切线,对动画进行设置
右键点击曲线上的点,会出现调节该店左右切线的菜單栏
Free Smooth选项效果为 该点左右切线类似杠杆调节一边,另一边也会跟着被调节会互相影响;
Broken选项效果为 该点左右切线单独调节,调节一边鈈会对另一边造成影响各调各的。
Left Tangent调节左切线属性Free选项表示自由平滑曲线,Linear表示线性曲线即变为直线
若改为Linear选项,则为直线
(改为矗线若是运动则可变为匀速运动之类)


设置动画只播放一次或重复播放,点击Assets中相应要改变的Animation在Inspector中勾选/不勾选Loop Time,可观察到Curves视图中动画曲线是否循环的改变
此时,游戏运行时动画会循环播放;
此时游戏运行时动画只播放一次,保持到最后的效果

}

我要回帖

更多关于 unity怎么预览动画 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信