PBR中的輻射度量學


PBR的核心法則是基於物理,在渲染領域最關注的就是光,更具體而言是光的表現以及光和物體的交互。而光也是一種電磁輻射,因此渲染中最主要的理論依據都源自輻射度量學(radiometry),這是專門研究電磁輻射量化的學科。

Domains and measures

在量化電磁輻射之前,需要對場景有一個定義。首先將場景幾何抽象為 \(\R^3\)​​​ 中的面(surfaces)的有限集 \(\mathrm{M}\) ,這里的表面是指分段可微的二維流形(Manifold),出於實現考慮,這里的流形默認都是存在邊界 \(\partial M\) 的,否則鄰接面之間可能會存在縫隙(gaps)。而 \(\mathrm{M}\)​​ 作為一個集合,其本身並不一定是流形,如:僅含兩個相切球的場景。

這些表面會把整個空間划分為一個個相連的區域,而為了簡化模型,這里先不考慮體吸收(volume absorption)、自發光(emission)、散射(scattering)等情況,即假設每個區域中都只有非參與介質,這些介質被抽象描述為一個固定的折射率。當然,表面也不一定充當區域划分的邊界,如:一個懸浮的平台。

對於一個域 \(D\subset\mathrm{M}\)​ ,定義度量 \(A(D)\)​​ 表示該域的面積,則勒貝格(Lebesgue)積分為

\[\int_\mathrm{M}f(x)\ dA(x) \]

其中, \(f:\mathrm{M}\rightarrow \R\)​ 是關於表面積的函數。

而方向可以被定義為一個單位向量 \(\omega\in \R^3\)​​ ,所有方向構成一個集合 \(S^2\)​​​ ,顯然這是空間中的單位球面。設 \(\sigma\)​​ 表示 \(S^2\)​​ 上的面積度量,則對於給定的方向集合 \(D\in S^2\)​​​​ ,可以定義其對應的立體角(solid angle)為 \(\sigma(D)\)​​ 。類似地,對於一個表面 \(P\)​​ ,將其上的點投影到以點 \(x\)​​ 為球心的單位球面上,這些點所代表的方向的集合的度量,即為 \(P\)​​ 在點 \(x\)​​​​​​ 處所對的(subtend,類似平面幾何中線段相對於點的對角)立體角。從定義可以看出,立體角本質上是一種面積度量,可以理解為:我們站在某點觀測某一物體,物體表面上的每一點都對應着一個觀測方向,這些觀測方向單位化后的集合也就是對應的立體角。由此,我們可以把通量等描述在由方向構成的立體角上,這么做有利於簡化之后對光的各種物理量的描述。

由此派生的一個概念就是投影立體角(projected solid angle),這一概念通常用於描述irradiance。對於給定點 \(x\)\(N(x)\) 表示表面法線,給定一個方向集合 \(D\subset S^2\) ,投影立體角 \(\sigma_x^\perp\) 定義為

\[\sigma_x^\perp(D)=\int_D|\omega\cdot N(x)|\ d\sigma(\omega) \]

其中,點積通常也被寫為 \(\cos\theta\) ,這里的 \(\theta\) 是指 \(\omega\) 的極角,即 \(\omega\)​ 與法線的夾角。

其名稱源於最初定義時使用了投影這一操作。設 \(T_M(x)\) 為點 \(x\) 的切空間,即由垂直於法線的向量構成的空間

\[T_M(x)=\{y\in R^3|y\cdot N(x)=0 \} \]

注意:這里所定義的切空間包含了原點,即這是一個線性空間,而非仿射空間。整個切空間將 \(S^2\) 分為了兩個半球,分別為上半球:

\[\H_+^2(x)=\{\omega\in S^2|\omega\cdot N(x)>0\} \]

和下半球:

\[\H_-^2(x)=\{\omega\in S^2|\omega\cdot N(x)<0\} \]

對於任一半球上一個給定的方向集合 \(D\)​​ ,其投影立體角就是該集合正交投影到切空間后的面積度量。一個最簡單的例子:對於一點處的整個上半球表面,其對應的投影立體角就是整個單位圓,故

\[\sigma_x^\perp(\H_+^2)=\pi \]

The phase space

普遍的transport理論研究的是抽象環境中的粒子運動,由於光的粒子性,基於該理論可以定義一系列和輻射相關的物理量。

我們可以用若干時變參數(參數是時間的函數)描述一個粒子。最基本地,可以用位置和速度兩個參數描述一個粒子,其包含6個自由度。由此,可以用一個 \(6N\) 維向量描述一個包含 \(N\) 個粒子的系統。而我們可以將系統狀態視為一個在 \(6N\)​ 維相空間(phase space)中的點,這個空間包含了所有可能的系統狀態。系統狀態隨時間的改變,在相空間上反映為一條一維曲線。

假設光不發生偏振和干涉,則每個光子可由位置 \(x\) ,運動方向 \(\omega\) ,波長 \(\lambda\) 描述。若方向用立體角描述,此模型下,整個相空間也是 \(6N\)​​ 維。對於不發生相互作用的粒子(如:光子),保留這么高維度的相空間意義不大,此時可以讓相空間維度對應於單個粒子的狀態。基於這個約定,相空間 \(\psi\) 可以降至 \(6\) 維,且可表示為

\[\psi=\R^3\times S^2\times \R^+ \]

此時可以用該空間中的 \(N\)​​ 個點表示整個系統的狀態,每個點的位置(六個維度的坐標)均為時變參數。

輻射度量學中涉及的物理量都可以在相空間中給出度量,度量值可以經簡單計算給定區域中光子的數量而得出,也可以由一或多個參數的density導出定義。如最基本的,光子數量 \(N_P\)​ 就是相空間中給定域內的光子數量的度量。

The trajectory space and photon events

在相空間的基礎上顯式引入時間維度,考慮將相空間中的所有光子隨時間的變化以圖的方式描述出來,我們可以得到一組一維曲線,並稱這組曲線所在的空間為軌跡空間(trajectory space)

\[\Psi=\R\times\psi \]

輻射的各種度量就定義在這些曲線上,沿這些曲線指定一組光子事件(photon events),然后通過多種方式測量事件的分布,即可定義一個度量。

事件:在物理學中,是指時空間和相空間所指定的時空中的一點,即軌跡空間中的一點。

通過指定一個時間面得到該面與光子軌跡的交點,即可定義一個光子事件。如:選取一個時間 \(t_0\)​​ ,在軌跡空間中,超平面 \(t=t_0\)​​​​ 與光子軌跡的交點就是該時刻的光子狀態,即光子事件。同樣,對於給定的 \(\R^3\)​​ 中的平面 \(P\)​​ ,可以定義光子事件為 \(P\)​​ 在軌跡空間中與超平面 \(\R\times P\times S^2\times \R^+\)​​​​ 的交集。

一個合理的假設是,軌跡空間包含着數量龐大的事件,因此,事件的密度可以采用連續分布進行建模。也就是說,雖然實際上一個光子的能量是固定的,能量的分布是離散的,但我們可以假設其可以是任意非負實數,能量的取值是連續的。

Radiometric quantities

輻射的度量總是圍繞幾個重要的物理量展開,而以下的定義是經過簡化的,並非完全嚴格的公理化定義。

Power

輻射量(radiant power)是指單位時間內的能量(energy)

\[\Phi={dQ\over dt} \]

其量綱為瓦特 \(\mathrm{watts[W=J\cdot s^{-1}]}\)​​ ,描述的是有限表面 \(S\subset \R^3\)​​ 發出或吸收的能量的速率。

通常並不會直接定義 \(Q\) ,而是定義軌跡空間中的某個區域 \(D(t)\) ,該區域隨時間變化,而區域內的光子能量即為 \(Q(t)\)​ 。例如:考慮度量區域

\[D(t)=[0,t]\times S\times S^2\times \R^+ \]

中發出的能量,其中, \(S\subset \R^3\)​ 為有限表面,則 \(Q(t)\)​ 表示 \(S\)​ 在時間 \([0,t]\)​ 所發出的能量,故

\[\Phi(t)={dQ(t)\over dt} \]

表示的就是單位時間發出的能量。這也是更為直觀的形式。但通常我們只關注系統達到穩態時的能量分布,此時相空間並不隨時間改變,可忽略參數 \(t\) ,回到定義的形式。

Irradiance

輻照度(irradiance)是指單位面積的輻射量

\[E(x)={d\Phi(x)\over dA(x)} \]

其量綱為 \([W\cdot m^{-2}]\) 。其定義總是依賴於點 \(x\) 以及確定的法線 \(N(x)\)​ 所確定的平面,而ir詞綴其實也暗示着其通常用於描述接收的輻射,且通常是在一個面上的輻射,即來自指定的半球。

Radiance

輻射(radiance)描述的是點 \(x\) 處,對於給定方向 \(\omega\) ,在微分立體角 \(d\sigma(\omega)\) 內,通過微表面 \(dA_\omega^\perp(x)\) 的能量

\[L(x,\omega)={d^2\Phi(x,\omega)\over dA_\omega^\perp(x)\ d\sigma(\omega)} \]

其中, \(A_\omega^\perp\)​ 是垂直於 \(\omega\)​​ 的一個假想平面。其量綱為 \([W\cdot m^{-2}\cdot sr^{-1}]\)​ ,其中, \(sr\)​​​ 是立體角的量綱steradian。在定義中,接收平面是必須垂直於給定方向的,即考量的總是投影面積。

而當度量的是一個實際的平面 \(S\) 上的radiance時,公式可以更直觀地表示為

\[L(x,\omega)={d^2\Phi(x,\omega)\over|\omega\cdot N(x)|\ dA(x)\ d\sigma(\omega)} \]

其中, \(A\)\(S\) 的面積, \(N(x)\) 是表面法線,上式實際上包含了求投影的運算,因為

\[dA_\omega^\perp(x)=|\omega\cdot N(x)|\ dA(x) \]

而根據投影立體角的定義, \(\cos\) 項可以與微分立體角組合構成微分投影立體角,則有

\[L(x,\omega)={d^2\Phi(x,\omega)\over dA(x)\ d\sigma_x^\perp(\omega)} \]

這也是最常使用的式子,因為這里參與運算的是 \(S\) 的實際面積 \(A\)

Spectral radiance

將波長納入考慮即可進一步定義光譜輻射(spectral radiance)

\[L_\lambda={dL\over d\lambda} \]

\[L_\lambda(x,\omega,\lambda)={d^3\Phi(x,\omega)\over dA(x)\ d\sigma_x^\perp(\omega)\ d\lambda} \]

其量綱為 \([W\cdot m^{-2}\cdot sr^{-1}\cdot nm^{-1}]\)​ 。同理可定義spectral power等。光譜輻射通常作為最基本的物理量,其他量都可以由其推出,如對波長積分可以得到radiance,對投影角積分可以得到irradiance。

Incident and exitant radiance functions

通常我們研究的函數采用如下形式

\[L:\mathrm{M}\times S^2\rightarrow \R \]

即radiance表示為場景中的面和立體角構成的相空間到一維空間的映射,等價於

\[L:R^3\times S^2\rightarrow \R \]

雖然物理上,radiance不能為負,但為了保證空間的線性性,我們仍保留其中的負數部分。根據 \(\omega\)​ 的不同,我們把radiance分為incident(入射) radiance和exitant(出射) radiance。incident radiance \(L_i(x,\omega)\)​ 描述的是從 \(\omega\)​ 方向到達 \(x\)​ 點的radiance,exitant radiance \(L_o(x,\omega)\)​ 描述的是在 \(x\)​ 點沿 \(\omega\)​​ 方向發出的radiance,顯然有

\[L_i(x,\omega)=L_o(x,-\omega) \]

但實際上,划分為這兩類是因為其具有本質區別,前者表示的是光子到達表面前的狀態,后者表示的是光子離開表面后的狀態。

The bidirectional scattering distribution function

0000

雙向散射分布函數(bidirectional scattering distribution function,BSDF)是對表面光線散射性質的數學描述。設場景中某表面上一固定點為 \(x\in\mathrm{M}\) ,考察在方向 \(\omega\) 上從 \(x\) 發出的radiance \(L_o(\omega_o)\) ,這里暫時忽略位置 \(x\) ,顯然 \(L_o(\omega_o)\) 的值取決於在所有方向上總共有多少radiance到達了 \(x\) 。首先分析來自某個特定的入射方向的貢獻,考慮入射方向 \(\omega_i\) ,以 \(\omega_i\) 為軸構建一個極小椎體,這個椎體可以描述為一個微分立體角 \(d\sigma(\omega_i)\)​ ,來自該椎體的入射光擊中表面上的點 \(x\) 並產生irradiance \(dE(\omega_i)\)

\[dE(\omega_i)=L_i(\omega_i)\ d\sigma^\perp(\omega_i) \]

隨后這部分光線會被表面散射到各個方向,設沿方向 \(\omega_o\) 散射的radiance為 \(dL_o(\omega_o)\) ,由於一般情況下光都是可簡單疊加的,即滿足線性性,因此無論 \(dE(\omega_i)\) 的變化是來自 \(L_i\) 還是 \(d\sigma(\omega_i)\)​ ,都有

\[dL_o(\omega_o)\propto dE(\omega_i) \]

而BSDF \(f_s(\omega_i\rightarrow\omega_o)\) 描述的正是這個比例常數,即

\[f_s(\omega_i\rightarrow\omega_o)={dL_o(\omega_o)\over dE(\omega_i)}={dL_o(\omega_o)\over L_i(\omega_i)\ d\sigma^\perp(\omega_i)} \]

用自然語言描述上式: \(f_s(\omega_i\rightarrow\omega_o)\) 表示來自 \(\omega_i\) 的每一單位irradiance會有多少比例被轉化為 \(\omega_o\) 方向上出射的radiance, \(\omega_i\rightarrow\omega_o\) 形象描述光的傳播方向。

The scattering equation

根據BSDF的定義,我們可以把differential exitant radiance表示為

\[dL_o(\omega_o)=L_i(\omega_i)f_s(\omega_i\rightarrow\omega_o)\ d\sigma^\perp(\omega_i) \]

此時只要對來自所有方向的irradiance對radiance的貢獻求積分,就可以得到 \(\omega_o\)​ 方向上的exitant radiance了,即

\[L_o(\omega_o)=\int_{S^2}L_i(\omega_i)f_s(\omega_i\rightarrow\omega_o)\ d\sigma^\perp(\omega_i) \]

這就是(表面)散射方程(scattering equation)。

在有了散射方程之后,對於給定的入射光照,我們可以計算出表面任一點的radiance,基於幾何光學對光的唯象表達,這個方程實際上就給出了物體表面外觀(即材質)的一個數學表示(盡管它並不能描述所有的光學現象或材質表現)。

The BRDF and BTDF

BSDF並非輻射度量學中的標准概念。通常,散射光會被拆分為反射光(reflected)和透射光(transmitted)兩部分,由此也就有了雙向反射分布函數(bidirectional reflectance distribution function,BRDF) \(f_r\) 和雙向透射分布函數(bidirectional transmittance distribution function,BTDF) \(f_t\)

通過限制域即可得到

\[f_r:\H_i^2\times\H_r^2\rightarrow\R \]

其中, \(\H_i^2\)\(\H_r^2\) 分別為入射半球和反射半球,但其實兩者表示的是同一個方向集合(上半球 \(\H_+^2\) 或下半球 \(\H_-^2\)​ )。

同理有

\[f_t:\H_i^2\times\H_t^2\rightarrow\R \]

其中, \(\H_i^2=-\H_t^2\) ,即兩者互補(同樣,兩者可分別為上半球 \(\H_+^2\) 和下半球 \(\H_-^2\) ,或相反)。

因此,BSDF其實是由兩個BRDF和兩個BTDF組成的(在兩個半球上都各自需要一個BRDF和一個BSDF)。

由於BRDF描述的是實際表面上的性質,其具有一些天然的性質,其中最主要的是對稱性(symmetric)和能量守恆(energy conservation)。

對稱性即

\[f_r(\omega_i\rightarrow\omega_o)=f_r(\omega_o\rightarrow\omega_i),\forall\omega_i,\omega_o \]

能量守恆即

\[\int_{\H_o^2}f_r(\omega_i\rightarrow\omega_o)\ d\sigma^\perp(\omega_o)\le1,\forall\omega_i\in\H_i^2 \]

Angular parameterizations of the BSDF

采用單位向量描述的立體角在計算上並不方便,因此需要對角度進行參數化。對於 \(\omega\in S^2\) ,其可以表示為一組角向量 \((\theta,\phi)\) ,其中極角(polar angle) \(\theta\) 是指 \(\omega\) 和法線 \(N\) 的夾角,方位角(azimuthal angle) \(\phi\) 是指在切空間內 \(\omega\)\(x\) 處的一個特定方向 \(T\) 的夾角,即有

\[\begin{aligned} \cos\theta=\omega\cdot N\\ \cos\phi=\omega\cdot T \end{aligned} \]

50PxCF.png

由於立體角是一種面積度量,這里使用微元法分析面積即可自然得到微分立體角的表示。微分立體角可表示為

\[d\sigma(\omega)\equiv\ \sin\theta\ d\theta\ d\phi\equiv\ d(-\cos\theta)\ d\phi \]

微分投影立體角也可以表示為多種形式

\[\begin{aligned} d\sigma^\perp(\omega) &\equiv|\cos\theta|\sin\theta\ d\theta\ d\phi\\ &\equiv|\cos\theta|\ d(-\cos\theta)\ d\phi\\ &\equiv\sin\theta\ d\sin\theta\ d\phi\\ &\equiv{1\over2}\ d(-\cos^2\theta)\ d\phi\\ &\equiv{1\over2}\ d\sin^2\theta\ d\phi \end{aligned} \]

\[\int_{S^2}\ d\sigma^\perp(\omega_i)=\int_0^{2\pi}\int_0^\pi|\cos\theta|\sin\theta\ d\theta\ d\phi \]

由此,scattering equation可以改寫為

\[L_o(\theta_o,\phi_o)=\int_0^{2\pi}\int_0^\pi L_i(\theta_i,\phi_i)f_s(\theta_i,\phi_i,\theta_o,\phi_o)|\cos\theta_i|\sin\theta\ d\theta_i\ d\phi_i \]

雖然引入了參數化的角度表示,但向量表示仍有其優勢

  • 首先 \((\theta,\phi)\)​ 是一個局部的方向表示,因為這兩個角度都依賴於表面法線
  • 在涉及多個表面點的分析中,采用參數表示並不直觀
  • 參數表示引入了三角函數項,而這部分實際上又是由向量點積實現的
  • 參數表示還依賴於切向量 \(T\) 以規定一個初始的azimuthal angle,而這並沒有任何物理意義

Reference

Eric, Robust Monte Carlo Methods For Light Transport Simulation


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM