胡说八道

学而不思则罔,思而不学则殆

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
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

posted on 2005-01-02 19:26  胡说八道  阅读(6001)  评论(4编辑  收藏  举报