 |
HUNTERS - The Making of (page 3/4) (continue)
An Interview with the Production Team - Mill Leung & Lik Wong
這次製作我們也用到ambient occlusion及subsurface scattering以增強畫面的真實性,但是render ambient occlusion時就摒棄了ray tracing的方法,反而採用了depthmap base ambient occlusion,這是因為depthmap base能有效處理displacement render及motion blur,同時render時會穩定得多,最重要的還是它能有效處理有fur的model,不會因為物件過於複集或物件間距離太近而嚴重影響render時間。但是於renderman採用depthmap base ambient occlusion時,我們發現每一個light object都需要產生一個相應的shadow map rib,會嚴重拖慢產生rib的程序,所以我們編寫了一個mel script,它會預先把所有ambient occlusion light的位置資料儲存,然後只需要產生一個base shadow map rib,到render時,把預先儲存好的位置資料放置到base shadow map rib,然後才render每一個shadow map。這方法差不多可以使產生shadow map rib的時間加快20-40倍以上。
 |
| 上兩圖是分別以Ray Tracing Base Ambient Occlusion(上)及Depthmap Base Ambient Occlusion(下)作測試,用上Ray Tracing Base的時候,displacement明顯地看不見 |
Subsurface scattering方面,由於renderman預設的translucent shader較慢,所以我們又參考了《siggraph2005—GPU Programming Exposed: The Naked Truth Behind NVIDIA's Demos》所討論到的有關real-time translucent的方法,主要做法是由camera direction開始作計算,我們把它套用到自己編寫的translucent shader上,這方法大大宿短了render時間,也解決了render結果會「閃」的問題。而我們編寫的shader同時可以用texture來控制那一個位置才計算translucent,省卻了多餘的計算,增加render速度。
在場景製作上,我們就用上rib archive,這方法完全解決了scene過重的問題,我們只雖把場景所需元素archive好,這樣maya scene就不用存在scene的資料,而且也大大加快產生rib的速度。因為這次製作的資源很有限,我們除了希望把render時間做到最少外,亦希望盡量減少re-render次數,所以我們差不多所有render元素也分拆出來,在composite上才重新整合。在這方面我們配合了renderman的Arbitrary Output Variable而編了一個general shader,它可以供我們隨意選擇所需的render pass;但不用重新改動shader的attributes,同時借著已選取的AOV,只需一次render,就能獲得所有render pass,而不用分開render多次來獲取不同render pass。
|
|
|