首页 >> 大全

为Unity3D创建素材(2):模型、绑定、动画

2023-06-21 大全 50 作者:考证青年

为创建素材(2):模型、绑定、动画

模型(Mesh)

在中使用三维模型,主要依靠Mesh 组件载入多边形表面物体( mesh),然后依靠Mesh 组件将Mesh正确渲染出来。

内置基本3D模型

内置有一些基本几何体,通过面板上的按钮或者菜单选择 > 3D 来创建:

Cube

方块:1×1的正方体

球体

药丸

圆柱

Plane

平面:10×10的平面

Quad

单面:1×1的单面

这些内置的基本几何体其实就是引擎自带的mesh。等同于我们在外部创建一个Cube或Plane模型然后导入Unity使用。这与我们的在Maya中使用预设几何体有本质不同。的基本几何体不具备任何调整参数选项。

普通3D模型导入

由于基本几何体都非常简单,本身也不提供多边形编辑工具给我们使用(但可以使用

插件来进行一些多边形编辑工作),所以很多情况下我们需要其他3D软件来制作模型,然后再导入到中。

虽然U3D现在支持直接导入Maya的.ma文件,但建议大家还是先将模型清理好后导出成.fbx格式,然后再导入到U3D中,这样比较便于管理。

并不是所有的Maya节点都能够被正确导入到中,实际上,仅支持 Mesh、、空节点、蒙皮信息、摄影机、关键帧动画的导入,而Maya中常用的NURBS表面、Curve曲线、变形器、IK、等内容都不支持。

并且,我还建议大家在导出.fbx之前对Maya文件进行一下“清理”工作,检查好模型的发现方向,烘焙好关键帧动画,删除掉多余无用的节点,删除无用的构造历史,同时将模型放在坐标原点中心位置,冻结属性(归零)。

可以识别单个模型文件中的多个mesh,且Mesh 组件仅支持载入单个mesh,所以我们可以用一个文件导出所有游戏所需要用到的mesh,然后在U3D中一一调用。

因此,为制作模型素材的时候,在三维软件中就搭建好全部模型并不是一个好选择。因为三维软件中重复出现的模型,导入U3D中以后会被识别成不同的mesh,直接载入整个场景会浪费掉很多系统资源。更有效的制作流程是在三维软件中制作好不同的“小物件”,然后在中完成具体场景的搭建工作。

PS:地形、植被等模型可能更适合于利用自带的功能模块来创建呢!

模型导入的设置参数

选择相应的模型Asset,其导入参数会显示在面板中。

Model一栏是关于模型的导入参数,Rig一栏是关于绑定设置的导入参数,一栏是关于动画数据的导入参数。

2.png

这个模型素材来自: "Unity-chan"Model 1.1

设置完毕千万不要忘记点击 Apply 按钮确认哦!!!

关于比例

在中尺寸比例非常重要,因为很多操作都依赖于物理解算,而物理解算会因为物体的尺寸比例不同而呈现出差异极大的结果。一个100米高的大石头和一个1厘米高的小石块从空中落到地面的行为显然是很不一样的。

中默认 1单位距离 = 1米。

由于Maya中默认设置为 1单位距离 = 1厘米,所以Maya模型导出成.fbx以后再导入,要设置scale为0.01,否则就会变得超级大。

总结一下导入模型的技术要求:

绑定(Rig)

Rig一栏下的设置比较简单,最重要的是设置 Type:

所谓,在我认为是对于骨骼结构的一种标准化描述方式,用来方便在不同模型之间自由应用动画数据。比如类型的,就把人形生物的各关键骨点都标准化为了特定的名称,这样不论动画数据是基于怎样的命名规范,只要将动画数据fbx文件以及目标模型fbx文件都标准化成人形,就可以自由的将动画数据应用在新模型上。

眼尖的同学应该可以发现,这个概念和Maya中的很像。

在下面图片所示的面板中,我们可以手动指定各关键骨点所对应的场景节点,甚至还可以对于头部和手指的细节进行设置,非常方便:

ar1.png

& 面板我还没怎么用过,以后用到了再补充进来。

对模型进行绑定设置的基本流程可以总结如下:

对于非标准人形对象,选择方式, 同上 **点击Apply按钮确认!!!

将设置好的.fbx资源拖进场景中,中会显示这个游戏物体的组件

可以看到已经附加了一个组件(动画人),其参数已经添加好了,但参数还是空的。这时候模型是不会在场景中播放动画。

如果之前选择的是方式的Rig,游戏物体会被自动附上组件。其中参数也是空的(因为这个fbx模型本身是不带动画的!)。

初学者大多会“自作多情”地认为,带动画的fbx模型导入不是应该直接就自动播放动画么?其实并不是这样的。如果是方式导入,模型又自带动画的话,倒是有可能自动播放,但和组件目前其实已经逐渐被大家抛弃了,而使用的话,不添加是不会有动画被播放的。

动画()

上面所使用的Unity-chan的素材,动画文件是和模型文件分开的,如果选择模型.fbx文件打开面板的话,看到的是一片空白:

大家如果也使用这个资源的话,可以在 > 目录下找到带动画的.fbx文件。

我选择.fbx文件来做演示,点击文件右边的小箭头,可以显示这个.fbx文件的全部内容,我们可以看到只有一些貌似面部的mesh,一个,以及一个文件。

这个.fbx文件实际上只包含动画数据,之所以会有这些mesh出现,是因为这些mesh上的动画并不是通过骨骼绑定来实现的,而是或者是直接动画,所以必须保留动画数据所依附的节点,也就是这些mesh。

而这个文件就是动画数据所存放的文件了(在硬盘上的文件后缀名是.anim)。

有动画的.fbx文件在面板下是有内容的。

n_2.png

实际上,从设定clip的名称开始,后面的所有设定都是针对某一个特定clip来做的详细参数,这里不细说了。

这张图片中显示出两条警告,说明这个模型其实是有一点点小问题的,我检查了一下,应该是有一根Spine骨骼稍微有点歪,不过不影响大局,就不管它了。

在最底下的预览框中可以看到,这种单独导出动画文件的工作方式真不咋地,由于没有实体模型,所有动画文件预览时都看不到,点击播放就看到一张白脸在那里晃来晃去。

解决办法是用鼠标将模型fbx文件拖到这个预览窗口中,这样就替换了原始模型,便可以看到该段动画clip在正确的模型上优雅地播放了。

(动画人控制器)

下面我们来让这个模型能够动起来。

.png

如果使用老式的组件,只需要将动画片段clip拖到到栏中,这段clip相当于“当前动画片段”,会自动在game 被载入时自动开始播放了,如果设置了loop,那么就会不断循环。

在一栏中,可以添加任意多个clips,这些clips则是“后备动画片段”,未来可以通过脚本来调用他们进行播放。

老式组件的问题在于,游戏中动画片段之间的切换是非常频繁且复杂的,使用这种方式的话,所有的动画切换都要通过脚本来实现,变成了程序员的负担。所以那些编写游戏引擎的程序员们当然就要想办法把这份工作甩给美工去做咯,于是就开发了后面的系统,把动画片段的切换逻辑设计给“可视化”。

.png

新式的组件需要调用一个,我们可以在中新建一个,暂且起名叫AC吧。

将这个AC拖到组件的一栏中,然后双击这个AC文件打开面板。

这个面板现在空空荡荡的就3个类似按钮的东西,我们可以拖动这些“按钮”来随意布局。

.png

把动画文件拖到这个面板上,可以看到动画clip变成了一个较大的橘色长条,然后从Entry长条中延伸出一个箭头指向这个新加入的clip长条。

.png

.png

实际上, 是一个“状态机”(关于状态机的解释可以看这里),而面板则将这个状态机的设计工作“可视化”了。我们后面会学习到的也是一个基于状态机的交互设计插件。

这些不同颜色的“长条”代表不同的“状态”,“箭头”则代表状态可以从一端变化到另一端。所以上面这样图可以这样解释:当该物体“进入”场景时,物体动画状态变为,也就是“一经载入,模型播放动画”的意思。

点击,我们可以看到与在面板中点击动画片段文件时不同的面板显示内容:

.png

在这里我们可以设置这个“动画状态”下播放哪个动画片段(),用什么速度(Speed)来播放,要不要把动画倒放()等等。

在面板中点击动画片段文件时面板显示的内容是这样的:

显示成灰色是因为我点击的是fbx文件中包含的clip,所以不可编辑,我们可以Ctrl+D将其复制成单独的clip文件,然后再修改。

如何使用 设计动画切换逻辑,可以阅读《设计角色动画切换逻辑》(未完成)一文中的详细介绍。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了