维爱迪-动画创作家园 >> 动画资源 >> 女猎人Varga游戏角色塑造流程揭秘 |
2.游戏建模流程
现在几乎所有的游戏内角色都使用 mormal maps 法线贴图,通常需要制作出角色的高精度版本,烘培出法线贴图后应用到低多边形模型上。不过高精度模型也不是必须的,法线贴图的制作方法比较自由,比如使用凹凸贴图即可,甚至可以直接手绘(后面我会为你介绍 Photoshop 绘制法线贴图的相关技巧),当然效果可能没有使用高精度模型烘培来的好。
创建一个角色需要的素材一般包括
·低多边形版本(或根据不同LODs-镜头距离-的多个版本)。
·高分辨率版本,用来生成法线贴图(可同时烘培 occlusion 闭塞贴图或其它贴图来辅助生成最后的纹理效果,具体参照4.3)。
·游戏引擎支持的所有纹理贴图效果(漫反射、法线、高光等常用贴图效果)。
下面,在做好设计图的前提下,我来介绍建模/贴图的各个步骤。
建模时有两种主要方法(即素材创建的先后顺序不同)。
·低多边形->漫反射贴图->高分辨率模型->法线贴图及其它纹理
·高分辨率模型->低分辨率模型->法线贴图->漫反射及其它纹理
操作正确的话,两种方法的最终效果是一样的,具体选择哪种需要看工作习惯和流程安排。我个人倾向于后者。
尽管通过-低/漫反射/高-的方式有一些优点:比如低多边形模型可以很快进入下一个流程制作动画;如果漫反射贴图保留了详尽的选区,可直接作为置换贴图应用到高分辨率模型上。但是,它有一个非常大的缺陷——我会在下面用简单的图例指出。
这是一个带漫反射纹理的模型片段(带几粒扣子的Tshirt)
接下来将多边形导入 mudbox,同时读取漫反射贴图,增加细分等级,并根据贴图添加相应位置的模型细节-比如衣服的皱折。
使用漫反射贴图制作出置换贴图,为模型增加进一步的细节(使用置换贴图可以加快处理速度,同时可以保证计算出的法线贴图与漫反射贴图的细节位置尽可能接近)。
上述工作完成后,将细分模型导入 maya/3dsmax 或其它软件中使用光线追踪计算法线贴图。如果处理得稍有不慎,就会遇到下图的错误。
可以看出法线贴图和漫反射贴图的细节没有完全对齐...这是因为我在雕刻时模型的位置可能稍稍有所变动;另外尽管我使用置换贴图来生成纽扣这样的细节,但不能保证光线追踪下法线贴图和漫反射贴图能够完美的叠加到一起。如果想避免这种情况的发生,要尽可能降低原低多边形模型的置换贴图的强度。
使用 Zbrush 可以降低这个问题的影响。它使用自己内部的运算法则代替光线追踪来计算法线贴图,计算时会把细分等级一并考虑进去,但这样计算出来不能在其它软件或引擎中正确显示出来,比如会有贴图接缝。我使用的所有软件在法线贴图的切线区间算法上都有少许不同。
最好的解决方法是在同一软件中计算并渲染法线贴图。比如本例中我使用 Maya 渲染,因此必须在maya中计算出法线贴图,以确保得到正确的渲染效果。如果在 Maya 中计算法线,在 MentalRay 中渲染,就需要在 Render Settings->mental ray 面板->Translation->Performance里钩选 Maya Derivatives(这个选项默认为关闭)。这将强迫 MentalRay 使用兼容 Maya 的算法进行凹凸贴图的渲染计算,注意该选项只有在钩选 Export Polygon Derivatives 后才可用。
第二种建模方法:高/低/UV/纹理。这种方法可以省却上述的诸多麻烦,为模型雕塑和细节添加带来更多自由度。
在制作高分辨率模型时,时刻记住它的目的是用来烘培法线贴图的,哪些细节必须建模,烘培成贴图贴图能否适当的表现出来,都是需要考虑的环节。
用下面的图片举个简单的例子,假如我有这样的一组高分辨率模型。
我可以只用一个平面就表现出来,但效果没有高分辨率的好。
从正上方看几乎一样。
但从侧面看就露馅了。
更好的方法是增加一点多边形,让低多边形模型的形状与高分辨率模型相匹配。
再贴上法线贴图后,从侧面看效果就好多了。(当然,根据多边形的分布状况,你可以相应的增加多边形数量来降低坑坑洼洼的粗糙效果)
另外,模型还要避免过于复杂的结构,比如下面的例子,诸多管线很难套进低多边形框架里,想要正确显示出来又会吃掉太多面数。
或许上图的细节在高分辨率模型看起来效果会很好,但做低多边形版本的时候,一定要把面数预算考虑进来——通常是5-10k三角形。如果一开始没有规划好高分辨率模型的细节,你就会遇到上图的尴尬情况——需要比定额更多的面数才能正确匹配高分辨率模型的结构,甚至返回来高分辨率模型。不用紧张,多做几次你就能对模型细节的取舍有一个大体的把握了。
另一个巨大的优势是可以利用高分辨率模型的细节烘培 ambient occlusion 环境闭塞贴图(模拟全局光效果,让纹理看起来更真实)及其它贴图,从而为后面的纹理制作环节打下良好的基础。
![]() |