6.2.8 总结和拓展
本节利⽤Unity官⽅素材,以有限的篇幅解释了动画状态机的原理,以及动画制作中最基本但最重要的步骤。总的来看,⽬前的动画只做了4种状态——站⽴、⾛、跑和跳跃,还缺少下蹲、下蹲移动和落地缓冲等动作。好在这些动作只是对现有动作的平⾏扩展,想要进⼀步学习,完全可以借⽤标准资源包中已做好的动画状态机,并参考已有案例制作,这样会事半功倍。
6.3 三维模型与动画的导⼊
从知识体系上来讲,3D模型与动画资源的导⼊不完全属于动画系统。但在实践中,导⼊资源与制作动画息息相关,导⼊资源时的设置会对后续动画状态机制作、脚本编写都有很⼤影响。因此本节从实⽤的⾓度出发,对3D模型与动画的导⼊做⼀个详细的讲解。
6.3.1 导⼊⽰例
本节仍然使⽤标准资源作为学习参考,该资源的下载⽅法在第6.2节已经介绍过。导⼊资源后打开SampleScenes/Scenes/CharacterThirdPerson场景,即可看到⼀个第三⼈称视⾓的场景,主⾓在屏幕中央,如图6-24所⽰。
运⾏游戏进⾏测试,可以⽤键盘控制⾓⾊的移动,⽤⿏标改变镜头的朝向;按住Shifit键可以⾛路,还可以按空格键跳跃,按住键盘C键下蹲,且下蹲时仍然可以慢慢移动。仔细测试和观察,特别注意以下⼏点。
第⼀,先向前跑,再突然向后跑,有转⾝、减速再加速的动作。
第⼆,观察跑步与转弯跑步(斜向移动并转动视⾓),在⼀边转弯⼀边跑步时,⼈物有真实的侧倾动作,⽽且转弯跑⽐直线跑速度慢⼀些。
第三,按住Shift键可以⾛路,⾛路⽐较慢,但动画过渡看起来更清楚。
此⽰例场景集中展⽰了3D⾓⾊的控制与动作,⽽且动作极为逼真细腻,符合现在流⾏的“3A”游戏的⼈物动作标准。但它的动画状态机⽐前⾯的2D动画更复杂,接下来就详细讲解其中的各个细节。
6.3.2 三维模型资源设置
⽬前,常⻅的3D⾓⾊动画都是⾻骼动画,只不过有⼈形⾓⾊与⾮⼈形⾓⾊的区分。这些动画参数繁多,且有着复杂的规格,显然不能像2D动画那样在Animation窗⼝中简单制作,⽽是需要事先在专业的三维制作软件中制作,然后导出配套的模型和动画⽂件,供Unity使⽤。
⽰例场景中的⾓⾊的名字叫Ethan,它的模型⽂件路径是StandardAssets \Characters \ThirdPersonCharacter \Models \Ethan.fbx。可以看出Unity⽀持FBX格式的模型⽂件。
⼩知识
常⽤的3D⽂件格式
三维设计有着很多细分领域,⼈物建模、游戏建模、场景建模、雕刻和家装设计等。不同领域流⾏使⽤的软件不同,各种软件的保存格式也各有不同。
有⼀些模型格式相对通⽤,在各个软件之间有较好兼容性,如FBX、DAE、3DS、DXF、OBJ等。⽽仅适⽤于某个软件的特殊⽂件格式就更多了,不胜枚举。从原理上来说,这些⽂件的内容具有相似性,都需要记录三维空间中的点、三⾓⾯、贴图、材质、UV、⾻骼和动画等数据。某些⽂件规则简单,仅记录纯模型数据,不记录⾻骼、贴图等其他数据。
Unity对多种常⽤和不常⽤格式都有⽀持,但是某些格式只是部分⽀持。在实际游戏开发中,不统⼀的⽂件格式很容易带来各种各样的细节问题,因此应当尽可能使⽤相对完善、更通⽤的FBX三维模型格式。
FBX格式可以保存模型、材质、贴图、⾻骼和动画等多种信息,⾜以满⾜游戏开发的需求。⽽且⽬前⼤部分三维设计软件都⽀持导出FBX格式的⽂件,这样就打通了⼯作流程的上下游,统⼀了资源的规格。
对Unity使⽤者来说,虽然不需要关⼼模型的制作,但是要想将原始模型⽂件转化为Unity中可⽤的资源,还是需要了解资源的导⼊设置的。
选中任意FBX⽂件,可以在Inspector窗⼝中看到模型的导⼊设置,如图6-25所⽰。
可以看出模型的导⼊设置主要分为Model(模型)、Rig(⾻骼绑定)、Animation(动画)和Materials(材质)4个部分。⽽选中每⼀部分⼜有很多选项,这⾥只对最重要的选项进⾏介绍。
⾸先是Model标签⻚。该部分最重要的选项是Scale Factor(缩放系数),此系数⽤于对原始模型进⾏缩放,极为重要。由于三维软件的导出设置不同,导致⽂件中的单位1在Unity中对应
的⻓度不同,有可能是1⽶、2.54厘⽶(1英⼨),也有可能是1厘⽶,因此必须在导⼊时设置缩放⽐例。其他选项都⾮常细节,保留默认值即可,暂不介绍。
其次是Rig标签⻚,如图6-26所⽰。3D动画出现问题,往往是因⾻骼设置不正确导致的。该部分的第⼀项Animation Type(动画类型)可选None(⽆⾻骼动画)、Legacy(旧版本引擎⽀持的⾻骼动画)(通常不再使⽤)、Generic(通⽤⾻骼)、Humanoid(⼈形⾻骼)。
⽬前使⽤的Animation Type主要是后两者,开发者需要根据⾻骼的类型决定使⽤Humanoid还是Generic。
⼩提⽰
尽量不要在场景中改变物体的缩放⽐例从理论上来讲,导⼊模型时将其缩⼩为原来的1/100与在场景中将物体缩⼩为原来的1/100,看起来是⼀样的。但实际上,在场景中缩放物体会带来很多⿇烦,如⼦物体也会⼀起被缩⼩,引擎⽆法判断模型的渲染精度,从⽽影响运⾏速度。⽽提前设置模型缩放,可以避免很多⿇烦,也可以让引擎更好地优化物体的渲染。在选择了Animation Type以后,下⽅的Avatar Definition(⾻骼定义)则是⽤于设置⾻骼数据来⾃哪⼀个模型。为什么需要选择它呢?这主要是由于3D⾻骼动画的模型、⾻骼定义与动画都允许独⽴保存,⽽且允许不同的模型复⽤同⼀个⾻骼或动画(前提是能够匹配)。例如,有3个FBX⽂件A、B、C,完全可以让A⽂件提供模型,B⽂件提供⾻骼,C⽂件提供动画,这种设计⼗分便利,但也让导⼊设置变得更复杂了。
如果选择Create From This Model(从该模型创建),就会使⽤本⽂件提供的⾻骼定义。如果是⼈形⾻骼,则会出现⼀个Configure按钮,单击此按钮可以进⾏具体的⾻骼定位操作。通常⼈形⾻骼可以被⾃动识别,只有出现问题的时候才需要详细查看,因此具体的⾻骼设置操作就不做介绍。
再次是Animation标签⻚,如图6-27所⽰。该部分很简短,在中间有⼀句提⽰信息“No animation data available in this model.”,意思是本模型不包含动画信息。这说明该模型的动画是由其他⽂件提供的。既然不包含动画数据,那么勾选或不勾选Import Animation(导⼊动画)选
项都没有影响。
最后是Material标签⻚,如图6-28所⽰。该部分设置只影响材质的导⼊,不影响模型和动画。它的主要参数分别如下。
⼀是Import Materials(导⼊材质)。
⼆是Location(材质路径)。选择Use External Materials(Legacy),Unity就会在其他⽂件中去查找材质,如果找不到还会在此素材的⽂件夹下创建材质;⽽选择From Model's Material,则会尝试导⼊当前模型⽂件所具有的材质数据。
三是Naming选项和Search选项,它们都是影响材质⽂件的查找算法。
实际上,即便没有正确定位材质,仍然可以在使⽤时指定模型的材质球,如创建材质并拖曳到物体上的操作。正确设置模型导⼊参数以后,就可以使⽤了(注意单击Apply按钮让修改⽣效,单击Revert按钮取消修改)。如果出现设置错误,都会有详细的警告信息或错误信息。由于⽬前采⽤的模型已经设置好了,因此可以直接将模型⽂件拖曳到场景中进⾏测试,观察模型⼤⼩和材质是否正确。
6.3.3 三维动画资源设置
在模型设置中可以看到,主⾓的模型⽂件Ethan.fbx是不包含动画的,那么动画资源在哪⾥呢?标准素材中的动画资源位于StandardAssets \Characters \ThirdPersonCharacter \Animation⽂件夹下。
1. 动画⽂件中的多种内容
在Animation⽂件夹下可以看到很多动画⽂件,它们的⽂件类型都是FBX格式。⽽且在Unity中,FBX⽂件图标的旁边都有⼀个⼩三⾓,如图6-29所⽰。
单击下蹲动画HumanoidCrouch⽂件旁边的⼩三⾓,可以看到详细的列表,下⾯将做⼤致的解释。
Hips代表⾻骼的根节点。Hips的字⾯意思是臀部,⼈形⾻骼常常以臀部作为⾻骼的起始节点。
接下来的⼀系列⼩三⾓图标的资源,都是⼀个个动画⽚段,根据名称可以看到有下蹲静⽌、下蹲左转、下蹲右转、下蹲⾛路等。选中任意⼀个动画,都会在屏幕右下⾓显⽰⼀个预览窗⼝,如图6-30所⽰。
在该窗⼝中可以播放动画进⾏预览,还可以通过⿏标旋转和移动模型来进⾏观察。值得⼀提的是,在窗⼝的右下⾓,有⼀个⼩⾻骼图标。单击该图标,打开菜单,其中有Auto(⾃动)、Unity Model(默认模型)和Other(其他模型)3个选项。Unity默认会⾃动搜索动画⽂件对应的模型,如果找不到则会使⽤默认的⼈物模型(图中⾝穿⿊⽩服装的⾓⾊),⽽选择Other就可以指定模型。这⾥可以选择Other,搜索Ethan,找到正在使⽤的模型。
图6-30 动画预览窗⼝
⼩提⽰
动画预览窗⼝的重要⽤途在修改动画设置时,有时需要试验和调试,动画预览窗⼝可以帮助我们快速测试动画设置是否正确。
有些动画完全符合⼈形动画规则,⽤对应的模型或Unity提供的模型都可以正常播放,⽽还有些动画则只能⽤对应的模型播放。如果在动画预览窗⼝中出现动画⽆法播放、原点位置不对等情
况,往往是动画设置或者模型设置有问题。特别注意模型设置与动画设置要⼀致,例如同⼀套动画的FBX⽂件缩放⽐例不同,那么⼀定会影响动画播放。
回到模型⽂件,在列表的最后有⼀个⾻骼图标,名为HumanoidCrouchAvatar,它是动画对应的⾻骼定义。这些动画资源和⾻骼列表都只有在FBX⽂件导⼊设置完成后才会出现。
2. 动画导⼊设置
选中下蹲动画⽂件HumanoidCrouch,在右侧可以看到熟悉的模型导⼊设置界⾯。因为3D模型和动画⽂件格式相同,所以设置界⾯也是⼀样的。Model标签⻚与之前的模型⽂件Ethan.fbx的是⼀致的,Rig和Materials标签⻚也不再赘述,⽽Animation标签⻚与之前⼤不相同,如图6-31所⽰。因为Unity已经识别到了模型中有很多动画数据,所以出现了很多信息和选项。
Animation标签⻚的选项解释如下。
①Import Constraints(导⼊约束)。在某些三维软件中,动画设计师可以指定⾻骼之间的约束关系,这⾥没有勾选则不导⼊约束。
②Import Animation(导⼊动画)。
③Anim. Compression(动画压缩)。此项和3个以Error结尾的选项都与动画数据压缩有关,保留默认值即可。其中3个以Error结尾的选项指的是允许的误差,值越⼩误差越⼩,也就越精确,建议取默认值。
④Animated Custom Properties,FBX⽂件⽀持添加⾃定义属性,特殊功能不做解释。
⑤Clips(动画⽚段列表),能够看到⼀个FBX⽂件可以包含多个动画⽚段。
3. 动画⽚段的设置
观察图6-31中的每个动画⽚段,会发现每个⽚段都有⼀个开始时间和结束时间。再结合图6-32中的时间轴可以想到,原来⼀个动画⽂件可以看成⼀个很⻓的、完整的时间轴,每个动画⽚段都是整个动画的⼀⼩段。
知道了这⼀点,就可以根据实际需求修改动画的时间,如加⻓或减少动作的预备时间等,甚⾄还可以添加新的动画⽚段,在原有时间轴上截取即可。添加或删除动画⽚段,都是⽤列表右下⾓的加号或减号按钮操作。
选中了⼀个动画⽚段后,就可以查看和修改它的详细设置了,如图6-32所⽰。
文章来源:https://www.toymoban.com/news/detail-846914.html
图6-32 动画⽚段的设置(部分截图)
每⼀个动画⽚段都可以设置以下内容。
①动画⽚段的名称。
②Start(起始时间)和End(结束时间)。
③Loop Time(循环时间),可以让动画循环或不循环。⼦选项Loop Pose可以让开头和结尾平滑衔接,读者可以通过预览体会。⽽Cycle Offset选项可以让第⼆次循环的开头与动画开头有⼀个时间差,它也是为更流畅的循环衔接⽽准备的。
④Root开头的⼏个选项都与Root Motion(根⾻骼动画)有关,后⾯在解释根⾻骼动画时再说明。
⑤Mirror(镜像),可以让动画镜像翻转。
⑥Curves(动画曲线),⽤曲线调整动画的播放速度,可以修改动画的播放节奏。
⑦Events(动画帧事件),可以在动画播放到某⼀时刻时触发脚本函数,这在后⾯的进阶内容会讨论。
⑧Mask(动画遮罩),可以让动画控制或不控制某些⾻骼,这样可以仅使⽤动画的⼀部分。例如,下蹲动画中,可以利⽤遮罩仅让腿部下蹲,⼿部不动。
⑨Motion和Root Motion Node,选择根⾻骼动画以哪⾥为原点。
⑩Import Messages(导⼊信息),设置时要注意查看提⽰信息和错误信息。
以上就是关于动画设置的全部内容了,某些⾼级设置会在本章末尾详细讲解。总的来说,动画设置涉及了美术设计师与技术⼈员的协作,因此内容⽐较繁杂,学习时建议先通过实例了解主要选项的作⽤;未来在导⼊其他资源时⼀定会遇到各种各样的问题,到那时可以再通过仔细阅读相关内容加以解决。
文章来源地址https://www.toymoban.com/news/detail-846914.html
到了这里,关于Unity 3D脚本编程与游戏开发(3.5)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!