好了,在开始本篇教程之前,你必须要知道以下几点:
1.液体的反射是如何影响玻璃表面的。
2.玻璃的各个表面和液体/水之间的反射和折射。
3.环境的反射也影响了玻璃表面。
4.为什么倒角对于玻璃的制作很重要。
1.液体的反射影响着玻璃的表面。
如果有一个光亮的玻璃瓶,里面盛着有色的液体或者水,那么它就一定包含着以下3个反射的区域。(图1)
-外表面反射
-内表面反射
-内部液体反射
这就意味着每个表面都有它自己的材质。
图1
液体的颜色反射在玻璃瓶的内外表面上,这些反射后的形状叫做折射。当光经过水、玻璃、望远镜、塑料、放大镜以及其它一些凸起的东西时,光线弯曲,就会产生折射。
2.玻璃的各个表面和液体/水之间的反射和折射。
水是对于光的反射很强(和玻璃一样),同时光从玻璃表面到水时,也会发生反射和折射。(图2)
图2
3.环境的反射也影响了玻璃表面。
玻璃会反射周围的物体。(图3)
图3
4.为什么倒角对于玻璃的制作很重要。
很重要的是,有倒角的玻璃会产生高光,因为倒角有凸起的表面,所以它会折射所有的反射光、环境光和光源射来的光。(图4)
图4
那么,我们要怎样才能将这些应用到Maya中去呢?
水和液体的材质(shader)
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/flash/)使用水/液体的材质是很简单的。先创建一个Phong材质,将颜色(Color)设为黑色,再将Transparency设成水/液体的原色(在这个例子里我使用橙色)。
将Cosine Power设到8-11之间,Cosine Power的设置取决于场景光,如果你用了很多光,那你就可以增加Cosine Power的值,使余弦值更小一些。
下一步,将Specular Color设为V=0.800左右(灰色),如果你想得到更有光泽的玻璃效果,就将它设成纯白色。
下一步,将反射率(Reflectivity)设为0。(图5)
图5
下面进行光线追踪的设置,这一步是很重要的,先打开Refractions复选框,将折射率(Refraction Index)设为1.2到1.4之间。那么?什么是折射率呢?它指的是光线经过透明物体时弯曲的程度。
注意:当Refraction Index为1时,意味着光线根本没有发生弯曲。在Maya中,普通材料的折射率如下:玻璃(1.6)、空气(1)、水(1.333)、水晶(2)、钻(2.417)。
下一步是将折射限定(Refraction Limit)设为10。10?为什么要设成10呢?因为这是允许光线发生折射次数的最大数值。举一个例子,如果折射限定为10,就意味着,物体表面只能折射已被反射或折射(或者两者都有)过9次或9次以下的光线,而对于已被反射或折射(或者两者都有)过10次或10次以上的光线就不折射了。然而在大多数情况下,镜子的折射限定至少是5,玻璃的至少是9。
好了,下面将反射限定(Reflection limit)设为5到6之间,那么,什么是反射限定?为什么要把它设为5到6之间呢?(图6)
反射限定是允许光线发生反射的最大数值。例如,如果反射限定为4,也就是说,物体表面只能反射已被反射过3次或3次以下的光线,而对于已被反射过4次或4次以上的光线就不反射了。
图6
主玻璃物体的材质
好,现在我们就开始主玻璃物体的材质的工作,我们需要用于透明的ramp,采样工具(samplerInfo),用于反射的ramp,以及用于产生随机反射图案的贴图。File是指带有随机图案的TGA格式的文件。(图7)
(图7 点击小图看大图)
Ramp1的作用:从samplerInfo1获得表面上与摄影机法线方向相对应的每个点的facingRatio值(范围是0至1之间),将此值与Ramp1(类型(Type)为V Ramp)的vCoord相连接,这样每个facingRatio值就对应了一个Ramp1中的Selected Position值,通过调整Selected Position所对应的颜色,就可以使每个表面上与摄影机法线方向相对应的点有一个确定的颜色值。而Ramp1又与透明度相连接,所以,就可以通过调整 Ramp1的Selected Position及其相对应的颜色,来控制表面上与摄影机法线方向相对应的每个点的透明度。(图8)
图8
假设表面上的某一点通过samplerInfo1的采样得到了一个facingRatio值为0.003(这个点的法线应该是与摄影机的方向几乎垂直(比如摄影机视图中一个球体边缘上的点)),Ramp1中的Selected Position为0.005的位置的颜色是R 0.137/G 0.137/B 0.137,而0.005以下的位置其颜色均为R 0.137/G 0.137/B 0.137,所以表面上这个点的透明度为R 0.137/G 0.137/B 0.137。以此类推,表面上facingRatio值越大的点(即法线与摄影机方向越接近平行的点),其透明度越接近白色。当点的 facingRatio值大于等于0.61后,其透明度就为白色(因为上图的白色的标记点的Selected Position为0.61)。
place2dTexture与Ramp1相连接,为最终的透明度(transparency)过滤表面的UV方向。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/flash/)Ramp2 的作用:同Ramp1类似,只是连接到材质的反射率上。
EnvChrome1的作用:用来给Blinn材质反射增加格状反射环境,如果你愿意,你也可以使用EnvShpere。
注意:如果你想得到更柔和反光,你也可以使用Phong,在这个例子里,我使用了有尖锐反射的Blinn。
反射体的材质
下一步,我们需要一个主玻璃材质的副本来为内反射面新建一个材质,对于这个内表面反射体的材质,你可以将Specular Color上连接的贴图节点(file3)断开,用一个单独的颜色替代(在这里我使用了亮橙色)。(图9)
图9
这样我们就有了3个材质:主玻璃材质,内反射面材质和液体材质。
好了,正如我在教程一开始就说的,这个盛着有色液体或者水的光亮的玻璃瓶包括3个反射区域,因此建模时也就包括3个表面:
紫色=外表面
白色=内表面为
绿色=液体表面
重要的是:要在物体的属性编辑器中的Render Stats项里将玻璃内表面和水表面的Cast Shadows和Receive Shadows关掉,因为它们只会接收或产生反射和折射。(图10)
小技巧:
1.在给玻璃瓶和液体建模时,可以复制一份主玻璃物体,并使用Isoparm(分离(Detach)表面)来创建液体,然后使用Planar制作液体的上表面。
2.你可以使用Layered Shader或者单独的透明材质来制作香水标志。
3.在玻璃瓶的周围放置更多东西以增强反射和折射效果。
现在指定材质
外表面使用主玻璃材质
内表面使用反射体材质
液体/水表面使用液体材质
最后在渲染之前检查一下:确保在Render Globals中打开Raytracing模式,然后将Quality设置为Production Quality。(图11)
图11