• 沒有找到結果。

第五章 實驗結果與分析

第一節 累加取樣

如果在執行陰影內核與環境遮蔽內核時,一次做很大量的隨機取樣,這樣在 畫一個畫面(frame)便會花費非常長的時間。這樣子我們想要讓鏡頭移動到某個地 方便會變得非常的不方便,當每個畫面都必須等待這些龐大的取樣數做完才能看 到,無法得到流暢地鏡頭移動的過程。因此我們採用[JM10]的做法,將每一次內 核中所做的少量取樣累加起來,如此一來不僅可以得到流暢的鏡頭移動效率,當 鏡頭靜止則也可以累積取樣數而得到好的畫面品質。因此我們在陰影及環境遮蔽 兩個需要大量取樣的內核中採用取樣累加的做法。

陰影內核及環境遮蔽內核取樣累加的最後結果如圖 14。

壹、 柔和陰影(soft shadow)

如果只要得到硬性陰影(hard shadow),做法很簡單,只需要將陰影內核執行 一次便可得到;如果要得到柔和陰影(soft shadow),則需要重複執行陰影內核來 累積光源上的取樣數。圖 12,是由著色內核將陰影內核計算的陰影貼圖(shadow map)繪出來。我們可以由陰影貼圖來清楚的看出柔合陰影的效果。並可以看出累 積越多取樣所達到的高品質水準。

24

(a) One shadow ray. (b) 4 shadow rays.

(c) 64 shadow rays. (d) 400 shadow rays.

圖 12

陰影光線追蹤在累積取樣中求得的陰影貼圖。a 為只執行 1 次得到的硬性陰影;b 為重複執行了 4 次的結果;c 為重複執行了 64 次的結果;d 為累積了 100 個取樣 得到的柔和陰影。

25

(a) 4 samples. (b) 16 samples.

(c) 64 samples. (d) 400 samples.

圖 13

環境遮蔽內核執行結果。當攝影機靜止時,隨著取樣數漸漸累加,畫面會逐步變 得精細。

26

圖 14

當攝影機靜止之後,陰影內核及環境遮蔽內核累加了一段時間所得到的光跡追蹤 結果。

27

貳、 間接光照

我們也嘗試著用 SSDO 中的做法來利用環境遮蔽來模擬間接光照的結果 如圖 15。在使用簡單的場景可以得到不錯的效果;但是在複雜的場景中卻會因為 物體的表面太過複雜而效果不彰。

圖 15

利用環境遮蔽追蹤線來模擬間接光照。

第二節 權重環境遮蔽

自然的物理現象下,確實存在物體與物體之間的光線遮蔽現象。而環境遮蔽 現象也是一種較為容易的模擬全域照明的做法。為了讓環境遮蔽演算法在密閉場 景中仍然能保有遮蔽陰影的現象,本論文提出在環境遮蔽中對於遮蔽範圍內的遮 蔽物,依其距離給予不同權重的遮蔽,較近的物體遮蔽比較強烈,而較遠的物體 則遮蔽量較少。

壹、 權重環境遮蔽演算法 vs 原環境遮蔽演算法

環境遮蔽演算法是在一個表面上朝法向量的方向散射出無數的追蹤線,並在 場景中尋找是否有被其他幾何物體遮蔽。我們以 Bounding box 作為整個場景的天

28

空。在原本的環境遮蔽以算法中,其測試範圍涵蓋整個場景,在開放場景中效果 很好,加強了整個場景的空間感;但在密閉場景中便會造成整個密閉場景中都被 完全遮蔽。因此,一般的做法通常會在環境遮蔽演算法中加上環境遮蔽範圍限制,

如此一來這些環境遮蔽追蹤線便形成一個半徑 r 的半球體,遮蔽物在距離 r 的範 圍內才會產生遮蔽作用。但是在遮蔽範圍涵蓋大部分場景時,仍然會產生大量遮 蔽的情形,如圖 16 左。在我們提出的權重環境遮蔽做法中,用自然的物理現象 來思考環境遮蔽效果:越靠近的物體遮蔽的效果越大,越遠的物體則遮蔽越少。

我們利用遮蔽面與測試面的距離計算出遮蔽權重:當遮蔽距離越靠近則遮蔽的權 重越高,相對的,當遮蔽距離越遠,其遮蔽的權重責較低。不同於傳統的環境遮 蔽演算法,每一條追蹤線判斷有遮蔽物則其可見環境光就是 0;而權重環境遮蔽 演算法中,則針對遮蔽面的距離給予不同的權重,解決出現密閉場景中被完全遮 蔽或大量遮蔽而使得畫面變得非常黑暗的情形。如圖 16 右。

圖 16

密閉場景 conference 在環境遮蔽範圍涵蓋大部分場景時所得到的環境遮蔽效果。

左圖為傳統環境遮蔽演算法會出現大量遮蔽的情形;右圖為我們提出的權重環境 遮蔽演算法所得到的效果,在場景中的細節加強仍然非常清楚。

29

我們可以很清楚看見,當環境遮蔽範圍涵蓋了大半個場景大小時,使用原本 的環境遮蔽演算法難以看出畫面中場景的深度與形狀;但在權重遮蔽演算法的結 果中卻仍然呈現了物體之間的遮蔽陰影效果。

在圖 17 中,場景換成半封閉式的場景-Sponza。除了在靠近上方簍空屋頂的 部分可見環境光較多之外,但在其他部分仍會出現大量環境遮蔽的情形。而權重 環境遮蔽演算法則可以強調出場景中細部的環境遮蔽效果。

圖 17

半密閉場景 sponza 在環境遮蔽範圍涵蓋半個場景時所得到的環境遮蔽效果。左圖 為傳統環境遮蔽演算法仍然會出現大量遮蔽甚至完全遮蔽的情形;右圖為權重環 境遮蔽演算法,在走廊中的細節不會因大量遮蔽而消失。

圖 18 為開放式場景-bunny。在開放場景中很明顯的發現環境遮蔽範圍並不 會造成任何大量遮蔽的疑慮。而權重環境遮蔽演算法所得到的效果與原環境遮蔽 演算法幾乎相同。

30

圖 18

開放場景 bunny 在環境遮蔽範圍涵蓋半個場景時所得到的環境遮蔽效果。左圖為 傳統環境遮蔽演算法效果與環境遮蔽測試範圍沒有多大的影響;右圖為權重環境 遮蔽演算法,與原環境遮蔽算法的結果差不多。

貳、 分析與比較

在環境遮蔽演算法中所要呈現的是物體間的相互遮蔽影響,進而描繪出畫面 中更多細節以及提高畫面品質。圖 19 我們可以清楚的看到,相較於原始環境遮 蔽演算法,在遮蔽範圍非常大的情況下,權重環境遮蔽演算法中可以更清楚的描 繪出場景中的細節、深度與形狀。

31

圖 19

權重環境遮蔽演算法可以更清楚地看到原始環境遮蔽演算法在大範圍中產生大 量遮蔽而無法描繪的細節。

在效能上來分析,原始的環境遮蔽演算法在追蹤場景時只需要判斷是否在遮 蔽範圍內有幾何物體即可;而權重環境遮蔽演算法則必須找到最接近的幾何表面。

也就是說,原始的環境遮蔽演算法在做交點測試上的計算上是較少一點的。不過 在測試之後發現其時在效能上並無多少差異,如表二。其中,當測試半徑的範圍 越小,效能差異也越小,是由於範圍小的時候所作的計算量也不多。

Conference 原環境遮蔽 權重環境遮蔽 追蹤範圍 10 3.87 fps 3.87 fps 追蹤範圍 20 3.13 fps 3.11 fps 追蹤範圍 50 2.01 fps 1.98 fps 表二

在每次執行 4 個取樣數下的效能比較。

在畫面品質上,權重環境遮蔽演算法相似於原本的環境遮蔽演算法,在密閉 場景中的結果有更好的細節深度與層次感。儘管權重環境遮蔽演算法在交點測試 上的計算量比起原始環境遮蔽演算法稍多一些,但在全場景測試的狀況下卻有更

32

好的效果。接下來我們再將環境遮蔽範圍限制縮小,原本的環境遮蔽演算法在解 決密閉場景中大量遮蔽的情形而將遮蔽範圍縮小到一個可以接受的大小,如圖 20b。權重環境遮蔽演算法與原本環境遮蔽演算法同樣都將場景中的遮蔽陰影描 繪出來,而相同的環境遮蔽半徑下的權重環境遮蔽結果陰影則較小。權重環境遮 蔽演算法亦可以將原本環境遮蔽演算法所要強調的效果展現出來

(a) Weighted Ambient occlusion. R=50。

(b) The original Ambient occlusion. R=50。

圖 20

a 為權重環境遮蔽演算法得到的結果;b 為傳統環境遮蔽演算法的結果。

33

參、 結論

圖 21 為各個場景中環境遮蔽演算法在有限制的遮蔽範圍半徑中所渲染出來 的結果。圖左為原始環境遮蔽演算法;圖右為權重環境遮蔽演算法。我們可以清 楚地看出權重環境遮蔽演算法的結果與原本的環境遮蔽演算法都強調了畫面中 場景的深度及形狀,以及環境光的遮蔽陰影。這是我們所希望藉由環境遮蔽所得 到的效果。而權重環境遮蔽演算法在密閉場景中可以避免出現的大量遮蔽與完全 遮蔽的情形,並在大量遮蔽的情況下仍然有接觸陰影的效果,進而有效的呈現出 場景中的細節,並強調出畫面的立體感。

34

圖 21

在小範圍的遮蔽半徑下。左邊為原始環境遮蔽;右邊為權重環境遮蔽。

35

相關文件