。
焦散的产生原理其实很简单:
间接照明光线(即光子)从光源发射出来后,先经过一次(或多次) Specular 表面反、折射作用,再投射到某个Diffuse表面上,最后以
Diffuse的形式被摄影机 记录 。此过程中的Specular表面被称为 焦散投射物体 ,
Diffuse表面称为 焦散接收物体 。
具备条件
* Window - Rendering Editors - Render Settings窗口 - Indirect Lighting标签 - Caustics部分中的Caustics选项必须打开。
* 光源形节点属性编辑器 - mental ray - Caustic and Global Illmination部分中的Emit Photons选项必须打开,激活光子发射功能;并利用Photon Color 和Photon Intensity两个属性为光子设定恰当的能量值。注意,要实现物理学精确渲染,光源的直接照明必须与
光子能量一样,按 距离平方的反比 的形式进行衰减。(建议使用符合物理学精度的直接照明灯光Shader ,比如physical_light,并让灯光Shader中的直接照明能量与光子能量值保持相等。)
* 必须在
焦散投射物体 及 焦散接收物体 的材质定义中指定 Photon Shader。(在材质组属性编辑器 - mental ray - Custom Shaders部分中)。光子的反射、投射、吸收和储存全部由Photon Shader控制。
* 焦散投射物体 的材质定义中避免含有Shadow Shader,避免直接照明光线 穿透 物体照射到它的后方,因为开启
间接照明后,这部分照明功能已经被间接照明涵盖,如果继续使用Shadow Shader,极易造成渲染的照明过度。
*
焦散投射物体 的表面材质定义中必须包含Specular传播成分,且占各种传播部分(Diffuse、Glossy、Specular)中的大部分。除非必要、尽量把 焦散投射物体 表面材质中的 Diffuse及Glossy传播成分降低到最小,或设Diffuse=Glossy=(0, 0, 0)。
* 如果 焦散投射物体 是透明的,并且希望对焦散光子产生折射作用,那么它材质定义(包括表面材质Shader和光子Shader)中的Index of refraction(
折射系数)应该大于1.0,比如,玻璃的折射系数为1.5左右,钻石折射系数为2.4,这样可以对光子产生 聚焦效果,使它们聚集在一起形成明亮的
光斑。
*
焦散接收物体 的表面材质定义中必须包含Diffuse成分,否则不会对焦散光子进行任何储存和吸收。
质量控制
* 提高焦散质量与精度的最根本办法就是提高焦散光子的储存数量,即提高光源形节点属性编辑器 - Caustic and Global Illmination部分钟的Caustics Photons的数值。储存的光子数量越多,质量越高,但速度也会越慢;储存的光子数量越少,计算的越快,但效果越模糊。Caustics Photons通常的取值范围是1万到100万之间。
* 默认情况下,场景中所有指定了Photon Shader的物体都可投射、接收焦散。但实际应用中,往往并不需要所有的物体都参与到焦散的投射、接收计算中来,此时可以进行以下设置:
window - Rendering Editors - Render Settings窗口 - Options标签 - mental ray Overrides - Global Illumination/Caustics部分中,设置 Caustics Generating = none(默认值) , Caustics Receiving = None(默认值).
关闭GI物体的 变换 节点属性编辑器 - mental ray - Flags部分中的Derive from Maya选项,然后为
焦散投射物体 的Caustics属性指定Cast only(仅投射)或Cast+Receive(投射又接收)选项;而为 焦散接收物体 的Globillum属性指定Receive only(仅接收)或Cast+Receive(投射又接收)选项;而把焦散没有任何影响的物体的Globillum功能关闭,即,设Globillum=Disabled。
* 如果
焦散渲染后的 颗粒化 效果十分明显,可以调整以下选项:
Window - Rendering Editors - Render Settings窗口 - Indirect Linghting标签 - Caustics部分中Caustics属性下面的Accuracy及Radius两个数值进行质量调整。
* 用 Window - Rendering Editors - Render Settings窗口 - Indirect Linghting标签 - Caustics部分中Scale(比例)属性,控制焦散效果在渲染图像中的比例。
* Window - Rendering Editors - Render Settings窗口 - Indirect Linghting标签 - Caustics部分中的Caustic Filter Type(
焦散过滤类型)Caustic Filter Kernel(过滤核心大小)。
Caustic Filter Type与Caustic Filter Kernel的主要作用是为参与 当前渲染采样点 间接照明计算的各个光子记录点指定不同的
权重值。
BOX过滤方式为所有参与计算的光子点指定相等的权重值。Cone和
Gauss为距离(当前渲染采样点)较近的光子点指定较高的权重值,而为那些距离(当前渲染采样点)较远的光子点指定较低的权重值。
Cone与Gauss过滤方式下,计算出的
焦散间接照明值更 锐利 ,局部化 效果更明显,因为距离越近的光子,越能代表采样点的真实间接照明状态,而Cone与Gauss过滤方给近处的光子指定了较高的
权重值,所以,计算出的焦散效果更精确,但渲染时间也会更长。
Caustic Filter Kernel值在Cone和
Gauss过滤模式下才能发挥作用,该值越大,就会有越多的光子得到高权重值,平均化效果就越明显, 锐利 程度也会越低。当数值大到一定程时,效果就会变得与Box基本相似。
* Window - Rendering Editors - Render Settings窗口 - Indirect Linghting标签 - Photon Tracing部分中的Photon Reflections(光子反射次数)、Photon Refractions(光子折射次数)、Max Photon Depth(最大光子深度)。
这三个属性控制光子的最大反、折射次数,及反折射次数的总和。
* 另外Merge distance属性,它可以把场景世界坐标空间系统中,指定距离内的光子合并到一起,这个 指定距离 就是Merge distance的属性值。对于那些光子分布很不均匀的场景,该属性可以减少
光子图的大小,降低内存的使用量,同时,也可以在一定程度上加快光子图的查找与计算过程。