光线追踪中如何处理体积效应?


10

光线跟踪器如何渲染诸如烟,雾或云之类的体积效果?与实体对象不同,它们没有定义明确的曲面来计算交集。

Answers:


11

总览

自然界中的体积(也称为参与介质)的出现是由悬浮在周围的流体(例如空气或水)中的细小颗粒(例如灰尘,水滴或浮游生物)引起的。这些粒子是固体物体,光线会像在正常表面上一样折射或反射这些物体。从理论上讲,参与的媒体因此可以由仅具有表面相交的传统光线跟踪器处理。

统计模型

当然,这些粒子的绝对数量使得单独地实际跟踪它们成为不可能。取而代之的是,它们可以用统计模型来近似:由于粒子非常小,并且粒子之间的距离远大于粒子大小,因此可以将光与粒子的各个相互作用建模为统计独立的。因此,用连续量替换单个粒子是一个合理的近似值,该连续量描述了空间中该特定区域的“平均”光粒子交互作用。

对于基于物理的体积光传输,我们用具有两个特性的连续参与介质替换了难以想象的许多粒子:吸收系数和散射系数。这些系数对于光线追踪非常方便,因为它们使我们能够计算光线与介质相互作用的概率(即撞击粒子之一的概率)与距离的关系。

吸收系数表示为。说轻想去旅游的射线牛逼参与介质内米; 即不打颗粒中的一种,并通过它被吸收- -使它通过未吸收的概率是ë - ·&σ 一个 `。随着t的增加,我们可以看到该概率变为零,也就是说,我们在介质中传播的时间越长,击中和吸收物体的可能性就越大。非常类似的事情保持散射系数σ 小号:所述射线的概率不触及粒子和飞散是ë - ·&σ 小号σatetσaσsetσs; 也就是说,我们在介质中传播的时间越长,我们击中粒子并散布到不同方向的可能性就越大。

通常,这两个量被折叠成一个单一的消光系数,。行驶的概率通过介质不与它相互作用的米(既不被吸收或散射)随后ë - ·&σ 。在另一方面,用后的介质相互作用的概率米,1 - ë - ·&σ σt=σa+σstetσtt1etσt

参与媒体渲染

1etσtttσaσtσsσt

光线的散射方式由相位函数描述,并取决于粒子的性质。瑞利相位函数描述了来自小于光波长(例如我们的大气层)的球形粒子的散射;Mie相位函数描述了大小与波长相似的球形颗粒的散射(例如,水滴);在图形中,通常使用Henyey-Greenstein相位函数,最初将其应用于星际尘埃的散射。

tMaxtt<tMaxttMax,射线照例穿过了它,并照常与表面相互作用。

外表

这篇文章只是参与媒体渲染的一小部分。除其他外,我完全忽略了空间变化的系数(云,烟等所需的系数)。如果您有兴趣,Steve Marschner的笔记是很好的资源。通常,参与的媒体很难有效地呈现,而且您可以比我在此描述的复杂得多。有体积光子贴图光子束扩散近似联合重要性采样等。在粒度媒体上也有有趣的工作 描述了当统计模型崩溃时该怎么做,即粒子相互作用不再在统计上独立。



3

取决于音量效果。

可以通过仅计算光线进入和光线离开距离来模拟不属于散射的均匀体积效应。

否则,您需要对光线路径进行整合,也称为光线行进。为了避免需要拍摄二次射线,射线行进通常与某种缓存一起使用,例如深度图,深图,砖图或用于阴影的体素云等。通过这种方式,您不必随意行进整个场景。通常对卷过程纹理进行类似的缓存。

也可以将纹理转换为具有一些合适的软边纹理的表面图元,例如盒子,球体或平面。然后,您可以使用普通渲染技术解决体积效果。问题在于,您通常需要大量的原语。另外,图元的形状可能显示为过于均匀的采样。


只是要注意,您也可以分析地进行光线路径的实际集成,如果不需要,则不必使用光线行进。
艾伦·沃尔夫

@AlanWolfe就是在统一情况下要做的事情,但是,如果介质参与几何图形,那么您需要做一些更漂亮的事情。无论如何,我没有声称这是所有方法。
joojaa 2015年

当然,只需添加您的答案即可。当您说均匀情况时,不确定确切含义是什么,但是对于雾而言,它不必是均匀密度,只需集成一些密度函数即可。那是统一案件的意思吗?
艾伦·沃尔夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.