游戏快报

把游戏角色做到引擎里,总共分几步?

把游戏角色做到引擎里,总共分几步?

通常来说,一个角色模型的实现流程应该是以下几个步骤:

三视图原画 → 原型模型 → 高精度模型 → 拓扑低模 → UV拆分 → 烘焙贴图 → 绘制贴图 → 绑定蒙皮 → 骨骼动画顶点动画 →引擎中的shader → 引擎中的渲染 → 引擎中的实时物理 → 动画套用以及动画机 → 角色控制器或者AI实现→ 特效,语音,音效等等。

数了数,差不多应该是这么15个流程,过程可能繁琐,但是对于一个游戏中的角色,她最终展示的地方,就是在你的游戏引擎里面。所以,前期的一系列的繁琐的操作都是为了最终的产品实现效果。

但是,整个环节持续的时间会比较长,同时又因为都是串联的操作,所以上面所说的每一个必经步骤都很重要,如果其中一个步骤错了,或者某个步骤的品质下降了,那都会返工和直观的影响到最终产品呈现。

u1.gif

这次我主要说一下前期美术的部分,所以根据刚才的那十来个步骤,感觉其实可以统一划分一下,精简许多:

原画 → 模型 → 动画 → 渲染

u2.jpg

通过自己的实践,得出了一些心得。首先,在开始制作前,先制定一些约定,有一些常规的约定就不说啦,比如模型的顶点数,贴图的尺寸,数量,骨骼的数量啊这些的,我想说的可能是这些:

这个游戏的角色,我是希望能够满足人形骨骼的,因为这个关系到后续AI实现上,因为人形骨骼有个很大的好处,就是可以利用动捕设备或者区间动画库,很快速地就能制作出一套品质很不错的动画用在控制器或者AI上。

在角色的一些材质效果制作上,也是需要提前想好的,因为实现这些效果,肯定是需要这个模型的UV,布线,贴图等一些前期工序一起配合的,如果等模型和动画都做完了,再去思考一些效果的话,那肯定会造成返工的,为了避免这些事情发生,最好把这些效果都提前想清楚哦~

在角色的一些物理效果上,有些部件需要做物理解算的,都需要单独的分开,这些都需要先思考清楚哦。

所以有了这些约定后,接下来的步骤就需要根据这些约定开始实现。

原画

为了保证整个流程的畅通,原画作为迈出的第一步非常重要,肯定不能瞎画,我说的瞎画,是指对于后续流程会产生一些影响的结构或者效果,比如在画的时候需要考虑到后续流程上的点:

模型方面:需要为接下来模型制作思考,比如我画的哪些结构,建模实现起来非常的困难?拓扑低模的时候这个结构很难布线?

动画方面:同样的,也需要为接下来动画实现思考,哪些位置动画在绑定起来会很麻烦?哪些结构会破坏人形骨骼结构?

Shader方面:然后,需要为接下来的shader实现思考,我画的这个材质效果,shader实现的代价大不大?性能如何?材质的分类?有木有特殊效果?一个pass能不能实现还是需要多个pass?

物理方面:需要思考哪些结构需要模拟运算?如何运动?

带着这些问题再来画的话,那后续的工作环节就会顺利很多。

小技巧:在画人体的时候,可以借助三维软件的辅助绘画哦,这样能够更加效率,同时保证结构,透视关系的正确性。

u3.jpg

模型

接下来,在制作模型的工序上,同样也是需要思考后续的流程,模型也不能乱建,UV、布线、材质分类都需要想好。模型是最关键的一环,因为模型到渲染中间隔着一个动画,渲染出现问题,那都会造成模型和动画的返工。

贴图方面:在制作模型的时候同样的,也需要为接下绘制贴图考虑,哪些结构能够共用UV?贴图的像素能够最大化的利用?哪些部件是需要带Alpha?

动画方面:需要考虑面部制作blendshape,模型需要如何的分UV?还有身体的哪些结构需要制作动画,如何给布线会让模型的绑定更加的自然?

Shader方面:需要为接下来的shader实现思考如何摆放UV来实现一些特殊效果?还有给模型材质划分的时候,哪些材质需要单独分开?

物理方面:同样的,需要思考好合理的布线,让模拟的效果更加自然。

在制作模型的时候,如果能够提前考虑到后面的一些工序的话,并把这些都铺好,那肯定会最大程度的避免返工。

小技巧:在ZB或者别的软件中绘制高模的时候,像一些细小的Detail纹理是不需要在高模上体现的,因为把这些小结构直接烘焙成贴图时,受分辨率限制下,效果是很差的,这些效果最好是在shader中用Mask ID做划分,靠Detail Map叠加就好了,不要出现在主贴图中。

u4.png

直接在shader里叠Detail的话,这样是最明智的选择。

u5.gif

动画

这个时候模型在绑定的时候,最好是先直接将文件一个一个的导出成obj格式的文件,再一个一个的导入到动画软件中,这样能最大程度的确保模型的纯净度,然后再检查一遍模型,包括模型的法线朝向,文件的层,还有材质球的分配,看看有没有什么问题,如果这些都没有问题了,那再开始对模型绑定。

在绑定的时候,骨骼的位置非常关键,每个的位置都代表了每个关节在运动的时候是否自然,非常关键。我又重复了一遍,举个栗子,如果在蒙皮权重已经OK的情况下,发现骨骼位置有问题,那将是一件非常麻烦的事情。

小技巧:像Hip骨骼的点位,就在屁股的中心,想要运动起来自然,骨骼点位必须精准哦,不然使用动捕或者套用别的动画的时候,动画会变形的哦…

u6.png

到了这一步了,那就离成品更加近了,但是同样的,也不能够掉以轻心。同样的,在制作的时候也需要带着几个问题:

模型方面:需要再次检查一下,确保模型的法线方向都正常,软硬边都正常,模型的部件和材质都分类正确了,需要做blendshape的部件已经combine好了,材质和命名都已OK。

动画方面:需要思考我接下来的这个骨骼搭建是否符合引擎里的humanoid要求。

Shader方面:再次确认一下想要做效果的结构是否已经拆好了?

物理方面:需要思考哪些部分的模拟是用骨骼,哪些部分是想用顶点。

OK,到这里就完成了引擎前的所有工作,接下来就将整套模型贴图,导入到引擎中了,将所有的前期准备都组合起来。

小技巧:在刷蒙皮权重的时候,是可以在蒙皮软件和引擎里面来回测试效果的,当整个角色套上动画后,是很容易就发现问题的,比如下面这图,运动起来我就发现肩胛骨在达到一定角度后,顶点权重不够平滑,形成了毛刺。

u7.gif

渲染

因为之前已经制定好了这些约定,接下来的话,实现就很轻松,shader这一块的话,因为之前在制作模型的时候,已经将材质都按组分割好了,只需要为分割好的部件单独设置材质或者制作材质就好,动画适配这块,因为已经制定好了人形骨骼标准,可以直接适配Unity的humanoid,这样的话就省去了很多动画上的制作时间,同时嘞,也可以适配动作捕捉的,大大的减少了工作量,如果制作的blendshape也满足ARKit命名的话,那也可以直接面部捕捉,直接输出面部BS动画。

小技巧:如果你是使用Advanced Skeleton进行绑定的话,导入Unity大概率Scapula和Shoulder节点会识别错位,这个在humanoid界面手动调整一下就好。

u8.gif

我总结一下,刚才说到的角色流程,原画到模型再到动画最终到渲染的实现最好是以结果为导向的制作方式,反推回来,思考一下达到这个结果,我需要在这个环节如何做,那就按照这个来制作。同时,最好是能够了解整个制作的流程,这样就能在这一环节的制作中,思考一下下个步骤的工作内容,有哪些需要我这一环节注意的。

u9.gif