反射映射(Reflection mapping)在計算機圖形學領域是用預先計算的紋理圖像模擬複雜鏡面的一種高效方法。紋理用來儲存被渲染物體周圍環境的圖像。有幾種不同的方法可以用來保存周圍環境,其中最常用的方法之一是標準環境映射,在這種方法中周圍環境在一個鏡面球體上反射得到單一紋理圖像。另外一種常用方法是立方環境映射,在這種方法中環境在立方體的六個表面上顯現出來,所以需要保存為六個正方形的紋理。

反射映射實例
環境映射是基於圖像照明的基礎,看這裡 rthdribl頁面存檔備份,存於網際網路檔案館) 中的一個截屏圖像

這種實現方法比傳統的光線跟蹤(光線跟蹤通過射出一束光線並且跟蹤光線的傳輸路徑來計算反射)算法效率更高,但是需要注意的是這種方法是實際反射的一種近似,有時甚至是非常粗糙的近似。這種技術的一個典型的缺點是沒有考慮自反射,即無法看到物體反射的物體自身的某一部分。

典型的反射映射 編輯

標準環境映射 編輯

標準環境映射更加常用的名稱是球形環境映射,是反射無限遠環境物體的紋理球面的應用。使用魚眼鏡頭預渲染或者光探頭生成球形紋理,然後將這個紋理映射到空球表面,通過計算物體上個點的光向量到達環境圖上的紋素從而確定紋素的顏色。這項技術類似於光線跟蹤,但是由於所需物體各點的所有顏色圖形處理單元已經預先知道,所以所需做的就是計算入射與反射角度。

1982年 Gene Miller 在 MAGI Synthavision 首次試驗了球形環境映射。[1] 在 Christine Chang 的幫助下,他在 MAGI 的停車場拍攝了一幅聖誕裝飾照片。通過將球體的照片裁減到直徑大小,他將照片映射到空球表面(參見上面的過程)(Fig. 1頁面存檔備份,存於網際網路檔案館))。然後,他將這幅紋理用到 Ken Perlin (Fig. 2頁面存檔備份,存於網際網路檔案館)) 創建的一個斑點狗模型上,並且將環境映射模型添加到停車場照片上,就得到 Fig. 3頁面存檔備份,存於網際網路檔案館) 中的照片。這種環境映射的技術最後在真實的環境高動態範圍成像中的基於圖像的照明中得到了應用(參見這裡頁面存檔備份,存於網際網路檔案館))。

球形映射有一些明顯的限制,其中之一是,由於紋理屬性的原因,在球形映射物體的後面有一個突變點。下面的立方映射就是為了解決這個問題而開發出來的,如果能夠正確地生成與濾波,立方映射就沒有明顯的接縫,所以很顯然它是舊的球形映射的替代者,目前球形環境映射在當今的圖形應用中幾乎已經銷聲匿跡了。

立方環境映射 編輯

 
解釋立方映射工作原理的示意圖

立方反射映射是用立方映射使得物體看起來如同在反射周圍環境的一項技術。通常,這通常使用戶外渲染中使用的 skybox 完成。儘管由於反射物周圍的物體無法在結果中看到,所以這並不是一個真正的反射,但是通常仍然可以達到所期望的效果。

通過確定觀察物體的向量就可以進行立方映射反射,照相機光線在照相機向量與物體相交的位置按照曲面法線方向進行反射,這樣傳到立方圖(cube map)取得紋素(texel)的反射光線在照相機看來好像位於物體表面,這樣就得到了物體的反射效果。

在實時三維計算機圖形中的應用 編輯

標準環境映射 編輯

立方環境映射 編輯

 
使用立方反射映射的一個三維模型實例

如果能夠正確使用,立方映射反射或許是渲染反射表面最快的方法。為了提高渲染的速度,每個定點都要計算反射光線的位置,然後,在於這些定點相關的多邊形中對位置進行插值,這樣就可取消對每個像素的反射進行計算。

參見 編輯

  1. ^ 存档副本. [2006-09-26]. (原始內容存檔於2006-06-17).