A. 光線跟蹤演算法的演算法的詳細描述
Arthur Appel 於 1968 年首次提出用於渲染的光線投射演算法。光線投射的基礎就是從眼睛投射光線到物體上的每個點,查找阻擋光線的最近物體,也就是將圖像當作一個屏風,每個點就是屏風上的一個正方形。通常這就是眼睛看到的那個點的物體。根據材料的特性以及場景中的光線效果,這個演算法可以確定物體的濃淡效果。其中一個簡單假設就是如果表面面向光線,那麼這個表面就會被照亮而不會處於陰影中。表面的濃淡效果根據傳統的三維計算機圖形學的濃淡模型進行計算。光線投射超出掃描線渲染的一個重要優點是它能夠很容易地處理非平面的表面以及實體,如圓錐和球體等。如果一個數學表面與光線相交,那麼就可以用光線投射進行渲染。復雜的物體可以用實體造型技術構建,並且可以很容易地進行渲染。
位於紐約Elmsford, New YorkMathematical Applications Group, Inc.(MAGI)的科學家首次將光線投射技術用於生成計算機圖形。1966 年,為了替美國國防部計算放射性污染創立了這個公司。MAGI 不僅計算了伽馬射線如何從表面進行反射(輻射的光線投射自從二十世紀四十年代就已經開始計算了),也計算了它們如何穿透以及折射。這些研究工作幫助政府確定一些特定的軍事應用;建造能夠保護軍隊避免輻射的軍用車輛,設計可以重入的太空探索交通工具。在 Philip Mittelman 博士的指導下,科學家們開發了一種使用同樣基本軟體生成圖像的方法。1972 年,MAGI 轉變成了一個商業動畫工作室,這個工作室使用光線投射技術為商業電視、教育電影以及最後為故事片製作三維計算機動畫,他們全部使用光線投射製作了 Tron 電影中的絕大部分動畫。MAGI 於 1985 年破產。 對圖像中的每一個像素 {
創建從視點通過該像素的光線 初始化 最近T 為 無限大,最近物體 為 空值 對場景中的每一個物體 {
如果光線與物體相交 {
如果交點處的 t 比 最近T 小 {
設置 最近T 為焦點的 t 值 設置 最近物體 為該物體
}
}
}
如果 最近物體 為 空值
{
用背景色填充該像素
}
否則
{
對每個光源射出一條光線來檢測是否處在陰影中 如果表面是反射面,生成反射光;遞歸 如果表面透明,生成折射光;遞歸 使用 最近物體 和 最近T 來計算著色函數 以著色函數的結果填充該像素
}
}