光線投射

光線投射(英文:ray casting)是彩現最基本的方法之一。概念是從眼睛處出發,對每個像素發射出一條光線,找到阻擋該光線路徑的最近物體,即為眼睛通過該像素看到的物體。由於光線投射算法適用於任何可以被光線交叉的數學表面,因此相較於傳統的掃描線算法,能更輕鬆地處理曲面和實體。

原理

光線投射採用了光線追蹤的幾何算法,從外部觀察點開始建立幾何模型,再逐點、逐線進行分析,將三維場景渲染為二維圖像。具體的概念是將圖像想像成一個屏風,每個屏風中的小方格代表一個像素。接着從眼睛處出發,對每個像素發射出一條光線,找到阻擋該光線路徑的最近物體,即為眼睛通過該像素看到的物體。

當光線與物體交叉時,可以用幾種不同的方法來計算交叉點的顏色。其中最簡單的方法是用交叉點處物體的顏色表示該點的實際顏色;也可以用紋理對映的方法來確定;另一種更加複雜的方法是僅僅根據照明因數變更顏色值,而無需考慮與類比光源的關係。為了減少人為誤差,可以對多條相鄰方向的光線進行平均。

此外,也可以對光的特性進行大致的類比:簡單計算從物體到觀察點的光線。其他一些計算涉及到從光源到物體的入射角,以及根據光源的強度計算像素的亮度值。還有一些類比使用輻射着色演算法繪製的照明結果,或者使用這兩種資訊的組合。

應用

由於光線投射算法適用於任何可以被光線交叉的數學表面,能輕鬆處理曲面和實體,如錐體和球體,速度也更快。因此被廣泛應用於對細節要求較低的即時類比場景,如三維電腦遊戲和動畫。