感谢很多朋友对上一篇教程的热烈响应。本文写于2004年初,依然是一篇比较古老的教程。
"做旧"一直是制作真实感3D效果不可缺少的因素。
我们先看几张现实中的照片,并分析一下他们的特点:
图(01)这是一张非常典型的具有磨损效果的铜制器具的照片。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/flash/)图(02)同样是一张表现具有磨损效果的石柱照片。
图(C)这尊佛像同样是磨损效果的典型范例。
从以上三张照片我们不难发现所谓磨损效果的特点。观察一下他们的表面,凡是突起的部分,都因手的长期摩擦而显得异常光亮,而一些内凹的转折拐角儿处,由于平时手很难触及得到,或有一些脏物无法清除,颜色显得较深(或颜色跟本不同),质地也较粗糟。
如果是在MAX中,事情可能会变得相对简单,因为MAX有专门针对这种效果的外挂插件。但MAYA中,没有直接提供这样的功能,也没有有针对性的插件可以用。网上曾经看到过一个关于这方面问题的讨论,但讨论是基于Renderman展开的,做为一般的3D制作人员来说,Renderman是极难掌握的。我曾经多次在网上的一些论坛提过是否可以通过MAYA自身的节点连接制作这种效果的问题,但始终没有得到满意的答案。看来除非编程,否则用maya自身的材质节点网似乎很难办到。想来想去,通过手工绘制帖图来模拟成为唯一的手段了。但是这种帖图绘制起来将会是非常麻烦的,尤其对那些非常复杂的模型来说(比如像有丰富细节的雕塑等等)。既然手工绘制帖图成为唯一的手段,那么,我们现在思考的重心就是:能否通过什么方法来加速这个绘制帖图的过程呢,如果能让MAYA帮我们自动完成一些什么的话那就好了。
偶然间我想到了GI,大家可能会说,这和GI有什么关系。呵呵~~~是啊,表面上没什么关系。但仔细想想,他们在效果上是不是感觉有某种程度的类似呢?我们想象一下,假如上面的佛像是一个3D模型,并用GI将它渲染出来。是否也会是像我们前面所讲的"佛像的突起部分会比较亮,而一些内凹的转折拐角儿处,会比较暗呢!(网上类似的素模GI渲染图很多,大家可以找些来观察一下)"喔~好像是差不多既然是这样,那么我们只要将GI对模型的光照效果记录成为一张帖图,那么这张帖图上保留的不正是我们想要的东西吗!那么,思路就理出来了:通过将GI效果烘培成帖图来代替手工绘制的帖图。当然,这样生成的可能还不算太精确(毕竟G和磨损完全是两回事,尽管他们效果上类似),所以帖图还需要经过Photoshop或DEEP paint 3D进一步修缮才能得到较好的效果。但即便如此,这也将大大的加速制作过程。
首先,我从模型库中找到一个雅典娜神像的多边形模型做为演示模型。将模型导入MAYA,并为其赋予一个Lambert材质。(如图04)
GI效果,我用了GI_Joe这个插件来模拟。可能很多朋友都用过这个maya的插件,他通过在场景中建立灯光阵列来模拟GI效果,出来的效果很不错,速度也较快。(这里,最好使用2.1版本,旧的版本在进行烘培帖图操作时可能会遇到问题),GI_Joe建立的灯光阵列是由两组组成的(SkyLight和GroundLight)。按如(图05)方式设置,建立为16/16的灯光阵列。
阵列建立好后,先按默认参数设置渲染,看一下效果。(如图06)
我们发现,在默认参数下渲染的效果很不满意,光线太暗,GI效果也不强烈。试着调节GI_Joe的相关参数,以达到比较满意的效果。如图07所示,对于修改过的参数,我用不同的颜色分别进行了标记。下面分别说明一下这些参数的含义。(注意:如上面所述,GI_Joe的灯光阵列是由两组组成的。所以图07中的每种参数也各有两个。)
红框参数:这是SkyLight和GroundLight的灯光颜色属性,默认状态为一个偏蓝,一个偏黄。由于我们只是想利用他们的亮度信息,所以这里将这两个颜色属性都改为纯白色。
绿框参数:这个参数控制灯光阵列的亮度,如前面(图06)所示,默认的渲染效果太暗,所以这里我们加大这个参数值。(图中统一设置为了0.25)
蓝框参数:这个参数是打开灯光阵列的阴影,默认状态GroundLight的阴影是关闭的,这里把他们都设置为On状态。
黄色参数:阴影颜色。默认为黑色,这里我们将其值调到-0.4左右。以使暗部的效果更暗,来增强其效果。(注意:由于颜色亮度为负值,所以菜单窗口中显示为不准确的灰色)
紫色参数:这是深度贴图阴影的尺寸值。增加它可以强化明暗的变化。这里将其值由默认的128提升至512(注意,加大此值会使渲染速度变慢)
修改完成后,再次渲染。(图07)中右侧为新的渲染图。效果已经比默认状态好了很多,基本上能满足要求了。
在烘培贴图之前,我们还要把模型的贴图坐标完全展开。这个应该很容易理解了,因为如果坐标有重叠,则无法烘培出正确的贴图。为了简单起见,可以使用Edit Polygons---Texture---Automatic Mapping将贴图坐标自动展开。如(图08)
坐标展开后,开始烘培贴图(所谓烘培贴图就是把模型受的光照及阴影的影响都记录到一张贴图上),相信在游戏制作过程中经常会用到类似的功能。
方法如(图09)所示。打开MAYA的Hypershade窗口,同时选中模型和模型的材质球,选择Hypershade窗口Edit菜单下的Convert to File Texture(Maya Software)右侧的小方块儿,打开烘培贴图的设置面板。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/flash/)打开"Bake Shading Group Lighting"和"Bake Shadows"以使生成的贴图记录下光照和阴影的信息。X Resolution和Y Resolution用来设置生成贴图的尺寸,这里设置得大一些,1600*1600,文件格式设成TGA(也可自定)如(图10)
参数设置好后,点Convert钮,稍作等待(因速度不同,较慢的电脑可能会花几分钟时间)
经过一段时间的计算,MAYA会在当前的工程目录中生成一个图像文件。通过观察可能会觉得某些方面还并不十分满意,我们可以在Photoshop中将它打开,进行一些编辑,比如调整亮度、对比度等等。如(图11)
注意此时场景中模型的材质已经因执行了"Convert to File Texture(Maya Software)"而变成了"Surface Shader"类型材质。删除这个材质,并重新建立一个默认的Lambert材质赋给模型。将刚才生成并经过Photoshop处理过的图片帖到Lambert材质的Incandescence属性上(注意:帖图的Filter Typer类型应该改为OFF,否则渲染出来可能会产生比较严重的类似裂痕的效果,这是由于帖图坐标比较碎,导致坐标与坐标的边界处产生的接缝。如图12),并将Color属性调成黑色。
删除GI_Joe生成的灯光阵列,因为光照信息已经被保存在帖图上了,此时我们已经不需要它。
用默认灯光渲染一张看一下。效果如(图13),看一下渲染效果,基本满意。但做为磨损效果,毕竟和GI效果是不完全相同的,所以一些局部不合理的地方还需要修改,另外,可能有时候还是会有少量的前面提到的接缝存在,这时都可以借助像DEEP paint 3D这样的软件来做更细致的修复。
进行到这里。最重要的也是最繁琐的事已经完成了,剩下的就是利用这张图来制作各种不同质感的磨损效果了。(这张图其实通常是做为蒙板用),比如建立一个多层材质或多层帖图,用生成的这张图做为通道蒙板,这样不同的区域就有不同的材质效果。简单起见以平面图为例说明一下,如(图14)
(图15)是我调的金属效果,最左边的图是没有加入磨损效果的,我们发现他显得很不真实;中间的加入了磨损效果,效果就好多了;最右边的又加入了环境反射,这使渲染效果显得更加丰满了。
(图16)这是这个金属材质的节点网,这里就不做过多介绍了。
在新出的maya 5.01中,集成的Mental Ray也新加入了烘培帖图的功能,所以应该也可以用Mental Ray来代替GI_Joe产生GI效果并生成帖图。关于这个我没有具体去试,大家有兴趣的话可以试试看。