光線跟蹤算法

光線跟蹤算法

光線跟蹤的場景經常是由程式設計師用數學工具進行描述,也可以由視覺藝術家使用中間工具描述,也可以使用從數位相機等不同技術方法捕捉到的圖像或者模型數據。

光學設計中的光線跟蹤

計算機圖形學中的光線跟蹤的名稱與原理源自於二十世紀最初十年就已經開始出現的光學鏡頭設計中的古老技術。幾何光線跟蹤用於描述光線通過鏡頭系統或者光學儀器時的傳輸特性,並創建系統的成像屬性模型。這用於建造前最佳化光學儀器的設計,例如減少色像差或者其它的光學像差。光線跟蹤也用於計算光學系統中的光程差,光程差用於計算光學波前,而光學波前用於計算系統的衍射作用,例如點擴展函式、調製傳遞函式以及 Strehl ratio。光線跟蹤不僅用於攝影領域的鏡頭設計,也可以用於微波設計甚至是無線電系統這樣的較長波長套用,也可以用於紫外線或者X射線光學這樣的較短波長領域。

計算機圖形學與光學設計領域所用的光線跟蹤的基本原理都是類似的,但是光學設計所用的技術通常更加嚴格,並且能夠更加正確地反映光線行為。尤其是光的色散、衍射效應以及光學鍍膜的特性在光學鏡頭設計中都是非常重要的,但是在計算機圖形學領域就沒有那么重要了。

在計算機出現以前,光線跟蹤需要使用三角以及對數表手工計算,許多傳統攝影鏡頭的光學公式都是許多人共同完成最佳化的,每個人只能處理其中一小部分的計算工作。現在這些計算可以在如來自於 Lambda Research 的 OSLO 或者 TracePro、Code-V 或者 Zemax 這些光學設計軟體上完成。一個簡單的光線跟蹤版本是光線傳遞矩陣分析,它通常用於雷射光學諧振腔的設計。

例子

為了說明光線跟蹤所用的基本原理,我們來看計算一個光線與球體交點的例子。用 I 表示球面上的點,C 表示球心,r 表示半徑,那么球面的公式為 . 如果定義一條線的起點即光線起點是 S,方向是 d,那么線上的每個點都可以表示為

其中 t 是定義線上與起點距離的常數,為了簡化起見,通常 d 定義為單位矢量。那么,在這種情況下已知 S、d、C 以及 r,於是代入 I 得到:

簡化 ,那么

那么二次方程的解是

這只是直線光線與球體交點的所用的數學公式,當然對於通用的光線跟蹤來說是遠遠不夠的,但是它至少表示了這個算法如何使用的一個實例。

參見

Actual state

光束跟蹤

BRL-CAD

錐體跟蹤

分散式光線跟蹤

整體光照

Line-sphere intersectionPencil tracingPhilipp Slusallek

光子映射

POV-RayPowerwall

輻射著色

Radiance (software)

光線跟蹤硬體

鏡面反射與鏡子球體跟蹤

Target stateYafRay

相關搜尋

熱門詞條

聯絡我們