Volume Rendering

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Volume Rendering

我们知道空气中存在着各种的微粒,光线在空气中传播的时候会和空气中的各种微粒相互作用。这些相互作用会改变光线的强度和方向,这样我们计算真实的光照的话,我们就必须把这些相互作用纳入考虑范围。

我们首先要来看看光线和微粒的相互作用,这些作用共有三种情况:

1 吸收

当光线和微粒相互作用的时候,有些光能被粒子吸收变成热能和其他形式的能量。通过吸收光线离开微粒后亮度减少。

吸收系数σa(p,w)表示在p点朝w方向单位距离上面光线的吸收概率,单位是1/m,通常情况下这个吸收系数和位置,密度等等因素相关,但我们在计算的时候做适当的简化。我们考虑在只有吸收的情况下离开微粒时候的亮度变化量

dLo=Lo-Li=-σa(p,w)*Li*dt

Lo是光线离开微粒的亮度,Li是光线入射时候的亮度。于是我们可以得到

Lo=Li*exp(-∫σa(p,w)*dt) //在距离t上积分

2 发射

和吸收作用一样,当光线和微粒相互作用时,其他形式的能量也可能通过化学反应等转化成为可见的光能。

这个过程比较复杂,我们很难对其进行较为准确的建模。我们假设Le(p,w)等于在p点朝w方向单位距离威力增加的光量。我们考虑在只有发射的情况下离开微粒时候的亮度变化量

dLo=Le(p,w)*dt

3 散射

光线和微粒作用,改变了原来的传播方向,向新的方向传播。对于散射出视线方向的散射我们称之为out- Scattering,这样的散射会减少视线方向的光线亮度。而对于那些其他方向的光线散射到视线方向的我们称之为in- Scattering, 这样的散射会增加视线方向的光线亮度。

对于out- Scattering的情况我们和吸收一样处理,我们假设σs(p,w)散射概率,我们考虑在只有out- Scattering的情况下离开微粒时候的亮度变化量

dLo=Lo-Li=-σs(p,w)*Li*dt

我们可以得到

Lo=Li*exp(-∫σs(p,w)*dt) //在距离t上积分

最后是in- Scattering作用。我们引入相位函数p(w1,w)表示光线从w1方法散射到w方向的概率, 我们考虑在只有in- Scattering的情况下离开微粒时候的亮度变化量

dLo=σs(p,w)* ∫p(w1,w)*L(w1)*dw1 //在球形上积分

我们全面考虑上面提到的三种情况,那么当光线离开微粒的时候的亮度变化量

dLo=-(σs(p,w)+σa(p,w))*Li*dt+Le(p,w)dt+σs(p,w)* ∫p(w1,w)*L(w1)*dw1

于是有

Lo=Li*exp(-∫(σs(p,w)+σa(p,w))*dt)+∫exp(-∫(σs(p,w)+σa(p,w))*dt)*(Le(p,w)+ σs(p,w)* ∫p(w1,w)*L(w1)*dw1)dt。

我们设定T= exp(-∫(σs(p,w)+σa(p,w))*dt)代入上面的方程得到最后的

Lo=Li*T+∫T*(Le(p,w)+σs(p,w)*∫p(w1,w)*L(w1)*dw1)*dt

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航