首页 > 编程语言 >Unity 3D脚本编程与游戏开发(3.5)

Unity 3D脚本编程与游戏开发(3.5)

时间:2024-03-31 23:29:55浏览次数:23  
标签:动画 模型 FBX Unity 3.5 设置 可以 3D

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所⽰。

图6-32 动画⽚段的设置(部分截图)
每⼀个动画⽚段都可以设置以下内容。
①动画⽚段的名称。
②Start(起始时间)和End(结束时间)。
③Loop Time(循环时间),可以让动画循环或不循环。⼦选项Loop Pose可以让开头和结尾平滑衔接,读者可以通过预览体会。⽽Cycle Offset选项可以让第⼆次循环的开头与动画开头有⼀个时间差,它也是为更流畅的循环衔接⽽准备的。
④Root开头的⼏个选项都与Root Motion(根⾻骼动画)有关,后⾯在解释根⾻骼动画时再说明。
⑤Mirror(镜像),可以让动画镜像翻转。
⑥Curves(动画曲线),⽤曲线调整动画的播放速度,可以修改动画的播放节奏。
⑦Events(动画帧事件),可以在动画播放到某⼀时刻时触发脚本函数,这在后⾯的进阶内容会讨论。
⑧Mask(动画遮罩),可以让动画控制或不控制某些⾻骼,这样可以仅使⽤动画的⼀部分。例如,下蹲动画中,可以利⽤遮罩仅让腿部下蹲,⼿部不动。
⑨Motion和Root Motion Node,选择根⾻骼动画以哪⾥为原点。
⑩Import Messages(导⼊信息),设置时要注意查看提⽰信息和错误信息。
以上就是关于动画设置的全部内容了,某些⾼级设置会在本章末尾详细讲解。总的来说,动画设置涉及了美术设计师与技术⼈员的协作,因此内容⽐较繁杂,学习时建议先通过实例了解主要选项的作⽤;未来在导⼊其他资源时⼀定会遇到各种各样的问题,到那时可以再通过仔细阅读相关内容加以解决。
 

标签:动画,模型,FBX,Unity,3.5,设置,可以,3D
From: https://blog.csdn.net/qq_43416206/article/details/137187317

相关文章

  • 全面修复-由于找不到d3dx9_43.dll,无法继续执行代码
    在计算机打开游戏和运行过程中,常常会遇到一些错误提示,其中最常见的就是缺少某个动态链接库(DLL)文件。而d3dx9_43.dll文件就是其中之一。本文将对d3dx9_43.dll文件进行总体介绍,帮助读者了解该文件的作用、安装方法以及常见问题的解决方法。 一,d3dx9_43.dll文件对系统的用途......
  • 题解 P9981 [USACO23DEC] Minimum Longest Trip G
    【洛谷专栏】题意\(N\)个点\(M\)条边的有向无环图,对于每一个点\(i\)你需要求出一条从\(i\)出发的最长路径且路径上边权组成的序列字典序最小。求每一条路径的长度和边权和。分析最长的路径很好求,在DAG上拓扑排序后动态规划即可。(具体的实现可以参考OI-Wiki)现在的......
  • TransformControls 是 Three.js 中的一个类,用于在网页中进行 3D 场景中物体的交互式操
    demo案例TransformControls是Three.js中的一个类,用于在网页中进行3D场景中物体的交互式操作。让我们来详细讲解它的输入参数、输出、属性和方法:输入参数:TransformControls构造函数通常接受两个参数:camera(THREE.Camera):用于渲染场景的摄像机。这个参数是必需的。......
  • UnrealEngine UnityBuild模式编译第三方代码问题
    UnrealEngine默认开了UnityBuild模式,把多个代码文件合并到一个较大的cpp文件进行编译。这样是为了减少总编译任务数,尽量避免单个编译任务代码内容太少导致在切换任务上消耗太多时间,尤其分布式编译情况下,任务切换成本更高。UnityBuild参考日志1>[22/102]Compile[x64]Module.......
  • DirectX3D中将用点构成的线段进行平移和旋转
    将这一系列(x,y,z)平移(5,0,0),然后再绕y轴旋转45度clc;clear;%从文件中读取坐标数据data=load('coordinates.txt');%假设文件名为coordinates.txt,包含x、y和z坐标%获取x、y和z坐标x=data(:,1);y=data(:,2);z=data(:,3);%将坐标组合成......
  • Unity制作本地离线数字人功能模块记录
    耗时半个月实现数字人各个功能模块记录一下个人感觉比较好的功能模块:1、TTS,语音合成,GPT-SoVITS,可本地部署使用cuda/gpu/cpu运算,https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e2、ASR,语音识别,FunASR,阿里开源模型,可本地部署当前为cpu运算版本,中文识别王......
  • Unity 窗口化设置
    在Unity中要实现窗口化,具体设置如下:在编辑器中,选择File->BuildSettings。在PlayerSettings中,找到ResolutionandPresentation部分。取消勾选"FullscreenMode",并选择"Windowed"。设置游戏的目标分辨率,通常是一个固定的分辨率,比如1280x720或1920x1080。如下图所示:另......
  • 探秘未来能源:太阳能发电园区的3D可视化之旅
    在科技飞速发展的今天,绿色能源已成为推动社会进步的重要力量。太阳能发电作为绿色能源的重要代表,正在全球范围内掀起一股清洁能源的革命浪潮。 太阳能发电园区作为集中展示太阳能发电技术和应用的场所,其规模之大、设备之复杂,常常让人望而生畏。然而,通过3D可视化技术,这些庞大的......
  • 桌面/WEB端3D开发工具HOOPS SDK简介
    TechSoft3D在长达25年的时间内,一直通过卓越的3D技术帮助全球超过600家客户推动创新,这些客户包括HEXAGON、SolidWorks、SIEMENS、Aras、ANSYS、AVEVA等各个行业的领军者。TechSoft3D旗下拥有4款原生产品,分别是:HOOPSExchange、HOOPSCommunicator、HOOPSVisualize以及......
  • unity 数字格式化
    stringstrNeed=string.Format("{0}{1}",str1,str2); //可以拼接成各种字符串stringstrNeed=string.Format("{0:F2}",2.3634f);//可以使字符串为保留两位小数的浮点数值stringstrNeed=string.Format("{0:D2}",5); //可以使字作串为两位整数的值,不足位数前面补零......