SLI Zone

NVIDIA.com Gelato Zone Home
 
Download the free version

立體著色運算
Daniel Wexler,Gelato研發人員,2006年6月

Gelato可以直接經由Mango利用簡單的攝影機設定著色運算立體影像。多攝影機著色運算雖然只會運算主要攝影機的陰影,但是卻可以很快地重新運算出其他攝影機角度的影像,在這個範例裡,就是指左眼及右眼。在立體算圖中分享陰影可以大幅提升運算速度,比兩眼分開運算要快多了。

stereo:separation、stereo:convergence以及stereo:projection等參數控制立體攝影機設定。另外還有一個stereo:shade決定哪一個攝影機將會運算陰影。預設的中央 (Center) 攝影機會在兩個運算攝影機中央製造出一個隱形的第三個攝影機來運算陰影。詳情請參閱Gelato技術參考文件 (Gelato Technical Reference) 中的4.1章節。

Gelato支援三種不同的立體攝影機投影方式:「平行 (Parallel)」、「離軸 (Off-axis) 」、「前束 (Toe-in)」。這些參數可以經由Gelato著色運算的立體著色運算 (Stereo Rendering) 中的投影 (Projection) 欄在Mango中加以設定。平行投影讓攝影機從雙眼中央的中線起始分隔距離,保持平行的可視軸線。投影的平面彼此平行對齊,不過卻以水平的方向替換。前束方式從中線開始沿著原始的中央軸逐步向內角的方向移動。此方式投射出的平面並沒有對齊成直線,導致影像難以於畫面邊緣聚集。離軸方式跟前束很像,但是由於離軸投影會修剪攝影機所投射出來的平面使其對齊,所以效果比前束要好。

Gelato 2.0只支援前束跟平行兩種投影方式。stereo:convergence參數用以選擇這兩種方式,0 代表平行投影。2.1版中增加了stereo:projection Camera參數,讓您可以在這三種投影方式中更加明確地選擇。

平行
 
離軸
 
前束

透過紅藍立體眼鏡 (藍色在右邊) 看上面的立體圖像顯示了三個內嵌式的長方形,分別距離攝影機20、30以及40單位的深度。兩眼間距為1個單位,焦距為30單位,應使中央物件成為焦點 (沒有分離)。離軸影像中的中央物件顯然位於焦點之中 -- 藍色跟紅色的物件在那一點上完全沒有差別。注意位於焦距平面前後的物件的紅藍補償相互轉換。同時也請注意由於投影平面出現旋轉現象,前束模式的水平邊緣跟螢幕並沒有平行。

很多人都可以將上面所有的影像聚焦,但是平行跟前束影像容易產生圈圈的雜像,顯然比較不容易聚焦。令人驚訝的是,所有影像中各個物件都顯示了相同的深度。

Gelato影像瀏覽器iv在2.1版中強化了立體影像的瀏覽功能。之前的立體影像模式運用Photoshop技術,將一眼著成紅色,另一眼著成青綠色,使重疊的部分變成灰色。以此方式產生出來的立體影像完全沒有色彩可言。強化過的新方法利用左右眼的反差輸入顏色以製造重現色彩的紅綠立體影像。這種影像透過紅綠濾鏡來看效果最好,不過紅藍濾鏡看起來也不錯。

整體色彩並不算好,但是黃綠藍三種顏色表現的不錯。底下影像中的色塊分別是舊的Photoshop成像方式以及新的NCSU演算法來顯示。

 

實際圖樣
 
Photoshop (舊)
 
NCSU (新)

想知道更多各式各樣立體呈像的理論、背景以及好用的程式碼,請至 Paul Bourke超棒的網站 閱讀裡面的文章。NCSU立體運算繪圖網頁也有很豐富的資料,特別是跟立體著色運算相關的技巧。我們用來運算立體矩陣的技術是北卡羅來納州的David McAllister所提到的極少色塊概略運算法 (Least Squares Approximation method) 。