在高反射的场景里,一般会设置为10,10,20.
但是渲染了以后,你会发现结果没有变化,那是因为虽然你把全局设置改变了,但单个材质下面也是有限制的。
找到这个blinn球的raytraceoption,下面有一个reflectionlimit,这个也是反射次数限制。
reflectionlimit=0
reflectionlimit=1
reflectionlimit=2
reflectionlimit=3
reflectionlimit=4
reflectionlimit=5
你会发现这个数值设为几,那么反射就会进行几次。
调节了反射折射次数以后的结果,黑的地方消失了,不过反射折射还不好看。
首先根据开篇说的能量守恒法则1>=diffuse+specular+refraction。
对于玻璃物体来说,是不存在漫反射的,有的都是镜面反射和折射。所以,先把color或者diffuse关掉,调成0,或者你可以都关掉。
其次玻璃是一个遵循菲涅尔反射的高反射物体。我们把反射率和specularcolor调到最高。在blinn材质中对于反射的控制是reflectivity和specularcolor共同控制的,只有二者皆为1的时候,才是全反射,任意一个值不为1,都会相应降低反射率,任意一个值为0,则反射率就是0。
然后将specularrolloff调节为0或者接近0。绝大多数人理解这个值为高光强度,其实这个理解是有偏颇的。mental ray 玻璃材质这个值真正的作用其实是控制菲涅尔效应的。当该值为1的时候,90度视角与0度视角的反射率皆为specularcolor与reflection的乘积(90度视角与0度视角参见菲涅尔反射;乘积的原因是这两个数值共同控制真正的折射率);当该值为0时,0度视角的反射率为specularcolor与reflectivity的乘积,而90度视角的反射率为0。
所以,这个值可以取代samplerinfo与ramp节点来实现对菲涅尔的控制。(不相信的同学可以自己弄一个圆球,把这个值调到0,你会发现球体的边缘照样有反射,并且越靠近你的垂直视线,反射越低。)
这个是将specularrolloff调节到0,得到的渲染结果。即是已经有了菲涅尔反射的结果。你可发发现,杯子正垂直于你视线的面上的反射几乎已经看不到了,而同你的视线夹角非常小的面,依然有着很高的反射。
另外,在我这个案例中eccentricity这个值不产生作用,一般来说,这个值翻译成偏心率,控制的是高光的大小。但是这里所谓的高光,其实是三维软件虚拟出来的一个东西,因为你用了虚假的灯光,虚假的灯光照射在虚假的材质上面,于是形成了虚假的高光。但是你要按照我说的一步步地做,你会发现这时候调整这个数值不起任何改变。
因为我没有使用虚假灯光,你会发现这个场景里唯一的默认灯光在开始的时候已经被我关闭了,并且没有新建任何灯光,起到照明作用的是一张hdr贴图,以及FG的计算。
所有玻璃上能看到的高亮部分,并不是计算机通过虚假灯光位置计算出来的所谓高光,而是根据光线跟踪计算出来的真正的反射。这一部分我没办法更深入地说明了,并不是这篇想要解决的问题,只是附带提一下。如果想不明白也不要深究,很都不知道这些但依然能做出很棒的作品,条条大道通罗马。
回到玻璃的制作。我们已经制作了菲涅尔现象了,但是这个时候却有一个问题,这个材质并不遵循能量守恒:我的blinn的transparency全是1,在90度视角的面上,反射是0,而在0度视角上反射是1。于是,在接近视角为0的面上,会有1的反射同时有1的折射,打破了能量守恒,也就是说反射与折射的光线反而要比入射的光线强烈,会得到不正确的视觉。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-48247-2.html
确实是非常符合心目中小王子的声音
包括水域
改是用国货自豪的时候了