参与介质

雾、云、带泥沙的水以及类似的介质对穿过的部分光进行散射。换句话说,这些介质参与了光传输过程(请参见 [Jensen 98])。若要模拟参与介质,需要使用一种体积着色器。

体积着色器

体积着色器 parti_volume 可以通过等向(漫反射)散射或各向异性散射来模拟均质(密度均匀)和非均质的参与介质。parti_volumeparti_volume_photon 使用一种双光锥散射模型,这意味着光在入射光方向同时向前和向后散射。此散射模型是由 Ch. Schlick 发明的,可以对灰尘、喷雾、雨滴等上的真实散射进行建模。

人们认为任何介质(真空环境除外)均包含悬浮粒子,这些悬浮粒子对穿过的光进行散射。散射在体积的着色中起着重要作用,粒子大小与光的波长之间的关系决定了散射的类型。如果粒子半径远小于光的波长,便不存在明显的散射,光会被吸收。仅当粒子略小于光的波长时才产生瑞利(Rayleigh)散射(香烟烟雾和灰尘)。如果粒子大小与光的波长大致相同,将产生米氏(Mie)散射(水滴或雾)。米氏(Mie)模型可适用于较小的粒子密度,也适用于较大的粒子密度,它们分别称为 Hazy Mie 和 Murky Mie。当粒子大小远大于光的波长时,会应用几何光学(标准实体表面)。Glassner 建议使用以下值:

函数rg1g2
Rayleigh0.50-0.460.46
Hazy Mie0.12-0.500.70
Murky Mie0.19-0.650.91
parti_volume
color "parti_volume" (
    integer         "mode",
    color           "scatter",
    scalar          "extinction",
    scalar          "r",
    scalar          "g1",
    scalar          "g2",
    scalar          "nonuniform",
    scalar          "height",
    scalar          "min_step_len",
    scalar          "max_step_len",
    scalar          "light_dist",
    integer         "min_level",
    boolean         "no_globil_where_direct",
    array light     "lights")
mode
模式为 0 时,参与介质填充整个体积。模式为 1 时,参与介质仅填充到指定高度,其上是纯净空气或真空。
scatter
散射介质的颜色。该参数用以确定被介质散射的直接光和间接光的颜色。它还用作光子体积贴图中光子的光子能量的倍增。它与 extinction 系数的作用相反。
extinction
介质的 extinction 系数。它确定了介质吸收或散射的光的量。0 表示纯净空气或真空。该系数越高,介质的密度就越大(光子散射就越大)。请注意,extinction 系数较大时,不允许光子深入到体积,因为它们进入一小段距离后便被散射。
r
g1
g2
控制散射。如果 g1 和 g2 均为零(默认值),会对等向散射进行建模:所有散射方向具有相同的概率。有时,这种现象也称为漫散射。使用双光锥散射模型对各向异性反射进行建模。每个光锥均可以向后散射 (-1 < g < 0)、漫反射(等向,g = 0)或向前散射 (0 < g < 1)。第一个光锥的权重通过 r 计算,第二个光锥的权重通过 1 - r 计算。
nonuniform
确定介质是均质(密度均匀)还是非均质(云状密度变化)。它是一个介于 0 到 1 之间的数字。值为 0 时,该介质完全为均质且仅取决于 extinction 参数。值为 1 时,会导致云状 Blinn 密度变化。值介于 0 和 1 之间时,情况介于两个极端之间。
height
如果 mode 参数为 1,确定之上为纯净空气或真空的高度。
min_step_len
max_step_len
用于确定光线行进的步长。通常将最小值保留为最大值的 10%。最大值越小,精度越高,体积步长采样的过程尽管较慢,但可以实现可见性。在 parti_volume_photon 中使用同一参数以进行体积光子查找。
light_dist
用于优化区域光源的采样。如果区域光源具有可选的较低采样,则使用该参数,例如
rectangle  0.5 0.0 0.0  0.0 0.0 0.5   10 10 3 2 2 
为提高效率,parti_volume 始终使用较低的采样数(此处为 2 2)。通常情况下,这已经足够了,因为直接照明在光线行进期间在每条光线上的多个点进行计算。但是,应在靠近区域光源处使用较高的采样数(此处为 10 10)。light_dist 参数确定了距离光源多远时必须使用较高的采样数。
min_level
已忽略(由相应的体积光子着色器使用)。
no_globil_where_direct
告诉着色器不计算体积效果中的全局照明,而只计算直接照明。如果不需要此贡献,该参数用于优化。设定为 1(启用)时,对于间接照明,不考虑与散射效果( rg1g2 )的方向有关的参数,但对于直接照明,会对这些参数求值。
lights
灯光实例的阵列。如果未指定灯光,则使用几何体实例中的灯光列表。如果未指定任何实例灯光列表,则使用场景中的所有灯光。

透明材质

已弃用。这是一种材质着色器,用于不是 mental ray 壳线 对象的参与介质或体积的辅助对象封闭曲面。它只是继续沿相同方向跟踪入射光线,且不与当前对象交互。这样的体积容器本身应不可见。

transmat
color "transmat" ()

没有任何参数。


Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.