【Notes_9】現代圖形學入門——光線追蹤(基本原理)


跟着閆令琪老師的課程學習,總結自己學習到的知識點

課程網址GAMES101
B站課程地址GAMES101
課程資料百度網盤【提取碼:0000】

光線追蹤

為什么要光線追蹤

soft shadow

soft shadow相較於hard shadow,其邊緣較為模糊。但是我們並不能通過模糊(blur)陰影邊界來模擬soft shadow。如下圖所示,正確的soft shadow,或者說,符合常理的soft shadow應該表現為,距離投影物體更近的區域,陰影會表現的更清晰。

原因

1. 前面已經學習過光柵化,針對全局光照,我們可以了解到光柵化無法實現或者實現的方法較困難,尤其是有很多的光線共同作用時.

2. 光柵化成像速度很快,但是畫質效果不好.光線追蹤成像速度慢,但是畫質很好
下圖1是光柵化,圖二是光線追蹤

基本的光線追蹤算法(The Basic Ray-Tracing Algorithm)

算法前提:

1. 光線是直線傳播
2. 不考慮光的波動性
3. 光路互逆性:當你凝視深淵時,深淵也在凝視你.

算法概述

1.Ray Casting

這種算法第一步的簡述流程:
1. 視點與每個像素都發射一條光線(射線),射線照射到最近的交點.

2. 連接交點與光源,判斷是否有物體在中間可以知道該交點是否時在陰影中,進行光照模型的計算

2.Recursive (Whitted-Style) Ray Tracing

第一步僅僅實現了光柵化的過程,想要考慮全局光照,就要對全局進行分析.那么第一個交點就會發生光的反射和折射.反射光線與其他物體再相交,也會發生反射和折射現象.交點與光源的連線可以用來檢測陰影.

所以每一個交點的顏色來自於直接光照,反射方向間接光照,折現方向的間接光照.
最終實現的效果 :

線與面的交點

線與面的隱式表示

線的隱式表示

面的隱式表示

光線與面相交

1. 方法一: 等式相等求交點

1. 方法二: Möller Trumbore Algorithm

Möller Trumbore Algorithm算法主要是利用重心坐標求解, 具體的實現原理可以算法專欄Möller Trumbore Algorithm

數學原理我們已經知道了,但是具體應用時,如果只是簡單的計算模型的每個三角形面與光線是否相交,這樣計算的次數有:

\[pixels\times triangles (\times bounces) \]

太費時,所以通常情況下,我們通常將所有的三角形用box包圍其來,這樣,我們可以用計算光線與box是否相交,如果光線與box沒有交點,那么光線肯定也不會與box內的三角形面相交。如果光線與box有交點,那么再計算光線與box內的三角形是否相交,這樣可以節省很多計算量。
基於上面表述,有兩個主要的問題:
1. 怎樣判斷盒子與光線相交
2. 怎么划分盒子,計算量最小(加速結構)

光線與盒子相交

Axis-Aligned Bounding Box(AABB) 軸對齊包圍盒

我們可以這樣理解光線:光線是一條射線。也可以這樣理解一個盒子:盒子是三對平面相交形成的。基於此,AABB盒子就很容易理解了。AABB盒子是平行於\(x,y,z\)軸的平面形成的。

為什么要用AABB盒
計算光線與平面相交的時候更簡單

判斷AABB盒與光線相交
再看光線與三維box相交之前,我們先從簡單二維box的看:光線分別於\(x,y\)平面相交,分別記錄照射的時間\(t_{min},t_{max}\)

同樣的對三維box,也分別對應有三組\(t_{min},t_{max}\)。接下來判斷光線與box相交。關鍵點:
1. 只有當光線進入三組與軸平行的平面才可以判斷處光線進入box。
2. 如果光線出任意一個平面,那么光線已經出box了。所以,$$t_{enter} = max(t_{min}) , \quad
t_{exit} = min(t_{max})$$

\(t_{enter}<t_{exit}\),我們知道光線再box中停留了一段時間。基於此,總結:
1.\(t_{exit}<0\)時,說明光線與box沒有交點
2.\(t_{exit}>=0 \quad and \quad t_{enter}<0\)時,說明光線在box內部,與box有交點
3.\(t_{exit}>t_{enter} \quad and \quad t_{exit}>=0\)時,說明光線在box內部,與box有交點

加速結構

通過之前的學習,我們基本上已經實現了Whitted-Style Ray Tracing,但是我們還可以改進算法,來加速光線追蹤的速度。

Uniform grids

Spatial partitions

Object Partitions & Bounding Volume Hierarchy (BVH)


免責聲明!

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



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