陰影介紹 the introduction of shadow

1.1陰影的定性定義

當談到什麼是陰影時,人們會給出各式各樣的答案,對大多數人來說,你會發現陰影現象的的反例是未被抓獲的。甚至字典也很難定義出一個合適的簡潔陳述。如果通過數學的方式在計算機圖形學中來定義一個影子,需要在空間中假想一個點p。如果來自光源L的光線可以到達點p,而且在途中不碰到任何場景中的對象(陰影投射物),那麼點p就是被照亮的。反之,點p就是在陰影中。

換句話說,如果點p是處於陰影之中的,那麼來自光源L的光線至少也有部分被阻擋住了,纔會產生了陰影。光源可以完全被遮擋的地方叫做本影(umbra),除了本影之外,剩餘的陰影(非完全被遮擋的空間部分)被叫做半影(penumbra)。具體各個區域的表現形式,請看圖1。

圖1 空間中三種不同定義的區域

1.2 陰影的定量定義

之前對於陰影的定義可讓我們知道如何去找到陰影,但它並不能讓我們瞭解到某點成爲影子之後,在表現上產生的影響。爲了闡明這一點,我們將把自己置入一個簡單的情境中。首先,接下來提出的定義將足夠滿足對陰影的學習,稍後也會給出一些擴展性的內容。基於對渲染方程的修改,我們可以得到軟陰影方程,它可以較好的描述物理交互作用(在這裏,我們只考慮來自光源的直接光照)。

Lo(p , ω) = ∫L fr(p , ω, p q) G(p , q) Le(q , q p)V(p, q)dq (1.1)


where Lo(p , ω) is theoutgoing radiance in direction ω from point p, f is the BRDF (bidirectional reflectancefunction) encoding the material surface properties, G is a geometric termtaking the configuration of source and receiver into account, Le(q ,q → p) is the emitted energy from the sourcepoint q towards p, and finally V(p , q) encodes the visibility and is zero ifthere is a blocker between the two points q and p, and otherwise one. (怕下面翻譯的不好,所以公式的英文定義單獨附上)

Lo(p , ω)是點p沿ω方向的射出光亮度,f是雙向反射函數(BRDF,bidirectional reflectance function)材料表面屬性編碼。G是幾何術語考慮到光源和接收器的配置。Le(q, q p)是從點q到p射出的能量。最後,V(p,q)是可見性的編碼形式,如果是0說明q與p之間有遮擋物,如果沒有的話值就爲1。

如果我們假設所有的表面都是完美漫反射,BRDF將與方向無關。因此,射出光亮度L0也與射出的方向無關。這個公式就會被簡化成爲:


在很多情況下,可通過分離的形式得到另一種簡化:


Shading和shadow是互不影響的。大多現有的陰影算法旨在上邊公式中的影子部分,甚至假設同質光源的發射Le(實際上是上劃線),導致可見度積分調節陰影和代表方程中的實際陰影部分。

(1.2)

很多實時性的應用,在實現逼真陰影時會旨在解決這個方程。


1.3 陰影類型與計算

在許多情況下,方程(1.2)通過光源逐點採樣來解決。這會有一個有趣的結果,當光源爲點光源時,整個積分編程一個單一可見查詢,陰影是二進制性的(空間中的點爲陰影或非陰影)。這也反映出一個結果,就是缺乏半影區。陰影也都是硬陰影,因爲從亮的部分到暗的部分的變化是直接的,沒有中間過渡。對於面光源,這個過渡就是平滑的,因此,被稱爲軟陰影。圖1.2顯示了一個結果,當我們通過模擬更多光源時,會得到越來越接近真實的軟陰影。

雖然公式(1.2)顯得並不是那麼複雜,但是有一點需要注意,這意味着需要將場景中每個點到光源的光線都測試一遍。這個結果將不再僅僅由點決定,場景中的所有三角形也都將被包括進來。這使得很難實現高效解決方案。

在接下來的章節介紹中,我們會看到不同等級的解決方案。到時候我們會知道,最好的算法,都是依據場景參數的大小、光源類型、預計的精確度、場景的表現形式、視點綜合考慮得出的。根據特定的需求做出最好的選擇的可能性是巨大的,一個好的、全面的、高質量的分析,需要結合全面的概述。我們的目標也是在接下來的過程中提供此信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章