MAYA中磨损做旧效果的实现

倾时_cc 发表了文章 • 0 个评论 • 192 次浏览 • 2020-02-27 22:59 • 来自相关话题

    "做旧" ...查看全部


    "做旧"一直是制作真实感3D效果不可缺少的因素。

我们先看几张现实中的照片,并分析一下他们的特点:

图(01)这是一张非常典型的具有磨损效果的铜制器具的照片。

图(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)右侧的小方块儿,打开烘培贴图的设置面板。

打开"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效果并生成帖图。关于这个我没有具体去试,大家有兴趣的话可以试试看。


电影片头,石头与琉璃质感的表现

倾时_cc 发表了文章 • 0 个评论 • 163 次浏览 • 2020-02-27 22:42 • 来自相关话题

石头材质 与以往项目不同的是,这个片头不是在电视,而是在影院播放的,所以要求片子渲染精度达到2K。原始模型是用Polygon方式建立的。如图(01)。 ...查看全部

石头材质

与以往项目不同的是,这个片头不是在电视,而是在影院播放的,所以要求片子渲染精度达到2K。

原始模型是用Polygon方式建立的。如图(01)。

大家知道,通常多边形模型在赋材质前都要进行分UV的操作,UV分得不仔细就会造成贴图的拉伸。不过,像上图这样的模型恐怕没有人会愿意去给它分UV。而且,此次不止渲染尺寸大,镜头距模型也非常近。在这样的情况下,任何一点点的拉伸都会严重影响渲染的真实感。在这种情况下,似乎只有一种方案:使用3D程序纹理。3D程序纹理的特性是不依赖分UV就可以在模型上产生没有任何拉伸的纹理。同时,它的缺点也很明显:在某种意义上不够真实。那么,怎样才能使它看起来更真实一些呢。一个办法是建立多个不同的3D程序纹理,然后用layeredTexture将它们叠加在一起混合。在这个石头的材质中,我用了两个3D程序纹理:

solidFractal和cloud。另外,为了使整体的渲染效果多一些变化,我还对材质做了一些局部的做旧.关于做旧这个话题,我在2004年2月的《CG杂志》上有过一篇文章专门讨论过。方法略有不同,但思路一样。见图(02)

首先我先在正视图渲染了一张场景的GI图片。这里说GI不太准确,其实是ambient occlusion,或简称AO。具体如何生成这张图,很多方法,比如用MAYA自带的Mental Ray;用新推出的MAYA外挂渲染器turtle。甚至大家常用的GI_Joe等等都可以。具体我这里用的是turtle(只是生成这张图时用的turtle,最后渲染依然是MAYA默认的渲染器)。生成此图时,我的参数开得不够高,一方面是考虑到速度会快一点。另一方面,参数开得不够高会导致算出来的图会有一些斑点污迹(见图02下半部分)。而这种污迹在这里其实正是求之不得的。如果太平滑了,反而会使效果缺乏真实感了。一举两得。那么,生成的这张图有什么具体用处呢? 用来做遮罩!


下面用一个简单的场景来说明它的用法。

图(03)所示,就是这个简单场景的默认渲染。

首先,按照前面所述,在正视图渲染一张AO图。如图(04)

建立一个layeredTexture(层贴图),并连接到材质的Color属性.点击建立两个空层,分别改变它们的颜色为红色和绿色。如图(05)。

将刚才渲染的AO,贴在绿色层的Alpha属性上。注意,贴图的方式要选则投影方式,并且在方向上要与模型对整齐。渲染。效果如图(06)

现在,你已经看到效果了。我所做的其实就是用这张纹理做为红色层与绿色层的一个遮罩。那么,按照这个思路,只要分别把绿色与红色贴上相应的纹理,那么我们所要的效果也就出来了。图07是石头材质的节点网。

图08为完成的渲染图,图09为原始的1:1尺寸时的局部截图。大家可以清楚看到其中的细节。


琉璃材质

通过观察及查找一些图片资料,基本上可以通过两层材质来制作琉璃,低层的瓦,和表层的釉。这看起来有些类似于通常制作车漆的方法。 我用了layeredShader(层材质),注意它与前面所用到layeredTexture(层贴图)是不同的。底层的瓦用了lambert材质来表现。表层的釉使用了Blinn材质,由于这一层是透明的,所以将材质的Transparency值打得很高,几乎完全透明。只取它的高光和反射。用图更容易看得明白。如图10

值得注意的是,无论是上面的石头材质还是琉璃材质,在它们的节点网中都出现了一个小组合,我想有必要对其简单介绍一下,以使大家能更清晰的了解这两个材质节点网。

如果将这个小组合抽离出来,并简化成最简单的状态,则如图11所示。

samplerInfo:是MAYA材质系统中最常用的节点了,几乎每一个材质都会用到它。

surfaceLuminance:可能不如samplerInfo用得多,但也非常有用。

multiplyDivide:在这里的作用是将samplerInfo与surfaceLuminance的效果结合到一起。

ramp:再常用不过的程序纹理!

用文字描述可能很麻烦,所以我做了下面这张图。如图12

第一种效果在很多MAYA的教材中都有介绍,它利用samplerInfo节点的特性来制作类似X光的效果。

第二种效果有点儿不一样,surfaceLuminance节点的作用是依照灯光方向的不同而产生变化。

第三种是通过一个multiplyDivide节点来结合两种效果。上边的石头材质和琉璃材质都用到了这个组合。当然,这里列出的是最简化的连接方法,比如你还可以在中间加入clamp节点来限制输出值的范围。这样,当场景中灯光的亮度值超过1时,也不会出现不正常的现象。

琉璃最终效果!

成片效果大家恐怕都在电影院里见过。这里就不贴视频链接了。

===============================end============================

补充

有朋友留言说还是把视频放上比较好,所以我就搜了一个这个片头的地址转过来。画面质量有点差。

另外大家或许会觉得片子中石头的颜色与上面的图有些不太一样。原因是这样的,当时片子的合成师是另外一位同事,所以在颜色调整方面自然会带有他的个人喜好。同时他也负责制作了片子后半部分云的效果。