MentalRay的DGS Shader


MentalRay比较难啊比较难~啊他的确比较难

DGS shader 作为mentalray的内置shader 在使用上的确非常方便,配合GlobalIllumination和Caustic 很适合做拟真物体的材质。

对于一个给定的maya shader,浏览到该shader的ShaderGroup(SG)节点,打开属性编辑器,展开mentalray一栏,在CustomerShader中为MaterialShader赋予一个Mentalray DGS Material,这就为mayashader赋予了一个DGS customer shader.

DGS使用注意事项:DGS关键属性有三个(通过滑动条控制):Diffuse, Glossy, Specular。一个最基本的规则是Diffuse, Glossy, Specular的数值之和一般要控制在1以内,否则使用这个shader的物体反射出的光能会比自己接受到的更多,因此画面会变得非常亮。另外如果画面亮度不正常还可以检查灯光的energy属性是否过大。由于这个energy不是和场景无关的,因此需要手动设置其强度值以匹配当前场景的需要。

Diffuse:漫反射值,用来控制物体表面的漫反射强度。Glossy为光滑度,值越大则越光滑,该属性配合shiny(光泽度)用来控制反射的模糊程度,当Glossy为0时,则物体不会反射任何东西,则此时Shiny属性也失效。Glossy越大,反射效果越明显。而shiny值越大,反射越清晰,反之越模糊,比如使用灰色的glossy,和20以内的shiny可以模拟木地板的那种模糊的反射。 Specular:镜面高光,和Glossy不同的是Specular属于清晰的镜面反射,而Glossy天生就是模糊反射(无论shiny值为多少)。因此如果想获得镜面般的放射效果使用Glossy是不可以的,只能利用Specular。如果specular是纯白色,那么就该物体就是一个真正的镜子了,此时他的反射非常完美。

Mentalray 中的dielectric_material Shader在内部实现了 Fresnel-菲涅耳反射模型 和 光谱吸收模型,可以很好的模拟电介质、绝缘体,比如玻璃。 光谱吸收可以理解为薄的透明物体吸收光能少,反之吸收的越多。因此越厚的地方看上去颜色更饱和。

因为物体的色调决定于光源的光谱组成和物体表面反射(透射)的各波长的比例对人眼产生的感觉。假设一个物体在一个正常人的眼睛中是红色,则它吸收了非红光的光波,透过来的是红色光。

不过透过的光饱和度还和物体厚度有关:当光源的光穿过薄物体时,非红光部分被吸收的并不多,因此肉眼看见的效果为淡淡的红色(此时红光已经在所有光谱中所占比例提升了)。

如果穿过是厚的部分,那么非红光被吸收的多了,最后透过的部分将基本是红色光,所以此时肉眼看见的就是更加饱和鲜艳的红色。

通常的使用方法是为每一个ShaderGroup节点分配一个Material shader ,一个photon shader并且令这两个shader对应的属性值相同,一旦使用了customer shader,maya的shader就被覆盖。

使用mentalray DGS shader的cornell盒子

地板使用了灰色Diffuse,灰色Glossy和15的shiny, 无Specular。模拟地板的模糊反射(距离近则稍清晰,远则更模糊)

右侧球体试验了镜面反射:100% Specular。左侧为dielectric shader,用来模拟玻璃,实现了焦散效果。注意dielectric中的phone-coef属性和Col_out,Lor_out属性,

mentalray 规范中对dielectric_material_Shader的定义:Dielectric_material shader是一个具有自然物质特性的材质Shader。它可以用来模拟电介质,比如玻璃,水和其他流体。该shader使用Fresnel公式计算两个电介质之间的接触面的效果。意思就是其中一部分光以垂直方向的入射角射入并穿过物体表面,同时一部分光线由于是切线入射而被反射走,它是用来模拟真实电介质物质之间的行为的。这种Shader也使用了Beer法则来计算光线穿过一个物质时的光能吸收。也就是当光线在一个电介质的两个表面之间穿越时其强度将遵守指数衰减规则。

Mentalray支持两种类型的电介质界面:电介质-空气模拟一个电介质与空气之间的接触面,比如玻璃-空气;电介质-电介质模拟两个电介质之间的界面,比如玻璃-水。

如果要模拟完全真实的物理效果那么就一定要使用正确的界面类型。比如当模拟一杯白兰地酒的时候需要三种界面:玻璃-空气,空气-白兰地,白兰地-玻璃。电介质材质使用面的法线方向来区分两边的电介质。对于一个电介质-空气界面来说,法线方向指向了空气,对于一个电介质-电介质界面来说法线指向了那个在外侧的电介质。如果要使用电介质材质,那么模型表面的法线方向必须指向正确。除非你指定了“忽略法线方向”。该Shader不可以用做阴影Shader