体渲染数学方法和模型

体渲染技术的起源和发展-精品文(超长预警)

Table of Contents

体渲染数学方法和模型

理论介绍

吸收发射和散射

吸收项:

发射项:


体渲染数学方法和模型

Hege等人在1993年发布的文章中具体阐述了体渲染的数学方法,凡是做过体渲染的人不可能不知道这套体系。其实说实话,从内容来看,接下来的这篇文章更像是前面的技术的一个总结。不过这篇文章确实阐述的是比较完备的体渲染算法,它还是基于线性传输理论

理论介绍

光具有波动性,进而有多种状态,比如干涉衍射等,还有不同的波长,这里我们不考虑,而是通过应用几何光学来研究渲染方程(即线性传输理论)。在几何光学中,使用频率而不是波长,因为当折射率改变时,频率会保持不变。而且有个小细节:光传播需要时间,模拟光的弛豫是可以的,但是没有必要。我们假设一开始就是光的稳定态。

虽然前面已经介绍了这个方程,但是为了全面这里再粘贴一下:

如果用单位体积单位时间dv在x点上的光子密度 表示,光子的速度是 c,\upsilon 表示频率间隔(下面还会介绍),一个光子的能量为 h\nu(普朗克常量,物理学知识):

辐射能:

辐射能密度(点光源): (单位立体角的辐射能)。

射出的能量:

射入的能量:

吸收发射和散射

吸收项:

表示在当前微元吸收的能量,表示的是衰减(吸收)系数。da表示面积微元。

注意到吸收项与角 \vartheta 没有什么关系。

被称作频率为 \nu 的光子在材料中的“平均自由路径(mean free path)”,它定义了特征长度规模(characteristic length scale)。

发射项:

区分真实的或热的吸收和发射过程以及散射过程是很重要的。在前一种情况下,从光束中移除的能量转化为材料热能,能量分别以材料能量为代价发射到光束中。相反,在散射过程中,光子与散射中心相互作用,并从沿不同方向移动的事件中出现,通常也具有不同的频率。如果频率不变,我们就说弹性散射,否则就说非弹性散射。

散射项:

用 表示吸收系数,用  表示散射系数,这样就能得到总的吸收(衰减)系数:

表示为 albedo,当albedo为1的时候表示,射过来的光会被全部反射掉,

同理,发射系数也应该包含源项发射  和散射到表面的光 :

我们定义散射外出的能量方程:

该方程表示从 n 方向到 n' 方向,以及从频率 \nu 到频率 \nu' 的能量。

其中 p 表示相位函数:(这里的4π别的文章中说过,并没有什么含义,只是为了抵消掉球面积分因子,让最后积分结果为1)

以及散射到x点的散射能量方程:

弹性散射中, 。注意其实大部分应用里都是弹性散射,所以不需要考虑频率的变化。同时,很多相位函数只关心 cosθ ,而不是n和n',这叫做各向同性材料。最简单的各向同性材料是:

 表示的是光向各个方向散射量都是一样的。

  • Rayleigh散射

 满足球面积分为1,该函数对于前向散射和后向散射是没有什么区分的(仅仅依赖于 θ)。

  • Henvey - Greenstein相位函数

改变参数k提供了前向散射(k>0)、各向同性散射(k=0)和后向散射(k<0)之间的连续介质。

传输方程的微分形式

x+dx的能量与x处的能量之间的差值 = 发射出的能量与吸收的能量之间的差值,所以:

同时,

这就是《Real-Time Volume Graphics》第一章给出的方程。

同时注意散射包含一个积分项:

因为一般是弹性散射,我们不考虑频率的变化:

边界条件

所谓边界条件,就是微积分方程中的一些限定,比如遇到未定义区间应该怎么处理。

对于不透明表面,边界条件很容易指定。我们假设表面法线N总是指向辐射场所在的体。

explicit boundary conditions:

辐射到体中的强度值由表面发射函数E给出。 表示指向体的所有方向的集合。

implicit or reflecting boundary conditions:

surface scattering kernel :k :  

explicit  以及 reflective boundary conditions 也可以结合起来。

考虑到表面的时候,边界条件就需要区分正表面 以及负表面

在这个定义中,我们选择了所有输出的辐射。类似地,我们也可以选择入射到表面元素上的所有辐射:

我们把这些都结合起来:

x点处的能量 = x点发出的能量 + 其他方向射到x方向的能量

在没有参与介质的情况下,该方程简化为众所周知的渲染方程,该方程是所有表面绘制的基础。在这里,在更一般的情况下,它只是作为传递方程的边界条件。

渲染方程的积分形式

 表示 沿着  上的方向积分。

 和  之间的光学深度

回忆一下, 表示的是一个频率为\nu的光子的平均自由路径。

应用到方程中:

光学深度可以分解为:

所以得到体渲染方程:

该方程就是大家特别熟悉的体渲染(光学)方程。

渲染方程

我们再进行一些简化,就可以得到著名的渲染方程:

以及如下定义:

即:

同样,后面的解决思路不再描述,因为解决方案无非就是离散化之类的,我们会在最后一篇survey里面详细介绍一下。

猜你喜欢

转载自blog.csdn.net/tiao_god/article/details/107904447
今日推荐