雾、云、带泥沙的水以及类似的介质对穿过的部分光进行散射。换句话说,这些介质参与了光传输过程(请参见 [Jensen 98])。若要模拟参与介质,需要使用一种体积着色器。
体积着色器 parti_volume 可以通过等向(漫反射)散射或各向异性散射来模拟均质(密度均匀)和非均质的参与介质。parti_volume 和 parti_volume_photon 使用一种双光锥散射模型,这意味着光在入射光方向同时向前和向后散射。此散射模型是由 Ch. Schlick 发明的,可以对灰尘、喷雾、雨滴等上的真实散射进行建模。
人们认为任何介质(真空环境除外)均包含悬浮粒子,这些悬浮粒子对穿过的光进行散射。散射在体积的着色中起着重要作用,粒子大小与光的波长之间的关系决定了散射的类型。如果粒子半径远小于光的波长,便不存在明显的散射,光会被吸收。仅当粒子略小于光的波长时才产生瑞利(Rayleigh)散射(香烟烟雾和灰尘)。如果粒子大小与光的波长大致相同,将产生米氏(Mie)散射(水滴或雾)。米氏(Mie)模型可适用于较小的粒子密度,也适用于较大的粒子密度,它们分别称为 Hazy Mie 和 Murky Mie。当粒子大小远大于光的波长时,会应用几何光学(标准实体表面)。Glassner 建议使用以下值:
| 函数 | r | g1 | g2 |
|---|---|---|---|
| Rayleigh | 0.50 | -0.46 | 0.46 |
| Hazy Mie | 0.12 | -0.50 | 0.70 |
| Murky Mie | 0.19 | -0.65 | 0.91 |
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")
rectangle 0.5 0.0 0.0 0.0 0.0 0.5 10 10 3 2 2
已弃用。这是一种材质着色器,用于不是 mental ray 壳线 对象的参与介质或体积的辅助对象封闭曲面。它只是继续沿相同方向跟踪入射光线,且不与当前对象交互。这样的体积容器本身应不可见。
color "transmat" ()
没有任何参数。
Copyright © 1986, 2015 NVIDIA ARC GmbH. All rights reserved.