前言

Medium(介质)经常被用来制作复杂的半透明材质。光线在进入介质后会发生改变,具体取决于物体的特性。当光线进入物体,要么被散射(scattered),要么被吸收(adsorbed),一般来说,这两种情况会同时发生,光线最终都会从物体里面出来。这是一个非常复杂的过程,Octane可以通过Medium(介质)来模拟这些现象,来制作例如皮肤、牛奶和树叶等复制的材质。Octane有3种不同的介质:吸收介质(absorption)、散射介质(scattering)和体积介质(volume)。

在使用介质时,你可以选择Diffuse材质球,或者Specular材质球,2个效果都不错,唯一的区别是Specular材质球可以开启伪阴影(Fake shadows),最终模拟的效果会更透亮。还有,渲染模式建议改为Path Tracing或者PMC。然后要提高采样,虽然渲染时间会增加,但好的结果就是要花时间。

此外,在使用介质时,要确保你的模型是闭合的且要有厚度,如果是一个平面,则介质不会起作用。材质的反射建议调低,如果反射过高(在Octane里面,应该是IOR参数),则光线不会进入物体内部。以上几点注意事项可以解决大部分常见问题,注意记笔记。

最后,在现实生活中,散射和吸收通常是同时发生的。而Octane把这2个区分开,是为了更方便地控制。

.

Absorption Medium

在理解吸收参数之前,你要知道Octane默认开启了Invert absorption,也就是被反相了,这点很重要。(以前我用Octane调材质的时候总是不理解,为什么吸收都调成白色了可物体却是透明的,其实是这里的坑。)

当光线照射到半透明物体或介质时,光线所携带的能量会被传输到半透明物体或介质。也就是说,入射光能可以被转化成其他形式的能量(如热能),这个过程称为吸收(Absorption),它与波长有关。
所有的表面都会吸收特定波长的光,这是由于物体表层存在电子构型的能量交换。这是最简单的解释,具体原理是非常复杂的,如果你想深入研究,可以搜索“量子电动力学”(Quantum Electrodynamics)。
吸收现象与光、波长、表面特性和表面厚度密切相关。下面我们会详细解析Octane中的Absorption选项。

如果介质吸收了白色光的特征波长,我们就会看到剩余颜色的波长。实际上,当介质吸收了一种特定颜色的光时,我们就会看到该颜色的互补色。关于主色和互补色,可以参考下面的色轮。举个例子,当介质吸收红色时,我们会看到蓝绿色。

以上就是Absorption在Octane中工作的原理。下面我们来详细解释下Absorption选项的参数:
打开材质球,选择Meduim通道,点击右边的Absorption medium。

Density
密度,该参数指纹理的吸收密度或者散射密度。可以根据要创建的材质类型更改此值。例如,如果要制作蜡烛,可以增加该值。你可以单独通过该参数来控制散射效果,不过在模拟复制材质时,需要和其他参数协同控制。下图显示了不同密度值的影响。

注意:你可以把Density理解为介质中粒子的数量。如果没有粒子,就没有吸收,最重要的是没有散射。

Volume Step Length
体积步长,这个参数取决于物体的类型(如果是烟雾流体,这个参数越低,烟雾细节越丰富)。默认步长数值为4米,如果体积小于此值,则可能需要减小步长。需要注意,减小该值将降低渲染速度,增加此值将导致光线行进算法采取更长的步骤。如果步长远远超过体积的尺寸,则光线行进算法将在整个体积中执行一步。步长越小,得到的结果越精确。

Absorption
该参数可以控制材质的吸收属性。在使用贴图时,有以下两种情况:

1.使用灰度纹理
使用灰度值时,0(黑色)表示没有吸收,大于零表示介质吸收白光的速度。例如,下面将通过Float节点来控制吸收,你可以看到Float数值对结果的影响。Float默认介于0和1之间,当然也可以大于1,这也是它相对RGB节点的优势。

注意:仅有该参数是没有意义的,只有和Scattering参数一起控制,才会得到正确的结果。

2.使用RGB纹理
可以通过RGB节点来控制吸收的颜色。注意,这里暂时先关闭invert absorption选项。给RGB节点设置一个颜色,然后你会看到该颜色的互补色,这是因为该颜色被吸收了,见下图。为了更方便控制,Octane默认开启了invert absorption。

.

Scattering Medium

散射是一个非常宽泛的定义,我们现在所说的实际上是“次表面散射”。当光线穿透半透明物体的表面时,它会被物体表层的粒子散射至不同的方向。然后又从表面出来。这一过程称为次表面散射,散射效果取决于表面特性、介质厚度、IOR因子、密度和表面粒子的Phase函数。所有这些都是我们前面在BRDF主题中提到的双向散射表面反射分布函数的简化版本。皮肤、牛奶和叶子表面都是通过这个方法制做的。

如果你想在Octane中制作一个真实的次表面效果,你应该使用Scattering medium(散射介质)。当然你也可以用Transmission通道模拟类似的效果,这样可以加快渲染,但无法得到真实美观的效果。下面的案例中,散射和吸收的会协同作用,这点很重要。在现实世界的半透明表面中,这两个因素就是共同起作用的。
现在让我们看看Scattering medium选项,下面只讲Scattering选项,Absorption选项参考上节。

Scattering
这个选项用来控制光线在物体表层散射的速度。如果数值较高,光线刚穿进表层就会被散射,从而无法进入物体内部。如果数值较低,光线会在穿过表层进入物体内部一段时间后才开始散射。在现实生活中,蜡烛就是一个很好的例子,光从进入蜡烛的那一刻起就开始散射,这是因为蜡烛表面的粒子数量“太多”(即Scattering数值较高)。因此,当光线穿进蜡烛表层时,它会迅速穿过并与粒子相互作用发生散射。如果你想模拟蜡烛材质,那么可以提高Scattering的数值(当然,还需要配合其他参数)。一般来说,有2个节点可以控制Scattering:“Float”和“RGB spectrum”。下面详细讲解如何选择这2个节点:

▷ Float
Float=0,表示没有散射;
Float>0,数值越高,散射速度越快,光线就会越快地离开物体,物体越厚的地方越不容易被光线散射,3S效果更容易体现在物体表层或者较薄的地方。需要注意的是,Float节点数值可以大于1,这也是它相对RGB spectrum节点的优势。

▷ RGB spectrum
你可以把这里的散射现象看作是现实世界中的波长相关。随便给一个RGB数值,主色会变得更散射。例如,如下图所示输入RGB数值:23/200/244(蓝色),则绿色和蓝色将被大量散射(IOR和菲涅尔的影响也很重要),红色的散射较少。如果你给Absorption选项也连接一个RGB节点,那你可以看到各种花里胡哨的效果,如下。

注意:这里建议你用一个单光源做测试,这样更容易出3S效果。

Phase
该参数描述的是从入射光方向散射到观察方向(朝向眼睛)的光量。理论上,散射方向是各向同性的,也就是说,它们均匀地分布在各个方向。然而随着粒子密度的增加,散射会变得不均匀,部分光会被散射到特定方向,这个被称为向前或向后散射,利用这个参数可以确定散射方向。
Phase=1,表示前向散射;
Phase=-1,表示后向散射;
Phase=0,表示散射在所有方向上都相等,即各向同性散射。

Emissions
用来解决某些死黑的情况,一般不建议开启。

参考:http://www.aoktar.com/octane/OCTANE%20HELP%20MANUAL.html?MEDIUMS.html