2009年7月8日 星期三

(13)在RMS中使用Environment Light來做Point-Based Global Illumination

 
"為什麼我們要花這麼多時間做準備,以便在未來能做我們想做的事,卻不肯現在就去實現我們的理想?"

節錄自「生命咖啡館」

----------------------------

這篇是介紹如何使用RMS的Environment Light中的Point-Based Global Illumination功能,來做approximate occlusion(不負責翻譯:"近似occlusion".....好瞎@@)

首先....就是要先有場景,以及要用來render的camera囉!

















然後再新增一個camera,用來bake *.ptc用的,所以要保證render用的camera所看到的範圍,這個新增的camera也都要看的到。這裡是將這個camera重新命名為reference。

















打開Render Setting,將Render using切換成RenderMan(也可以直接開啟RenderMan Global)。然後切換到Features這個tab,在其底下的Global Illumination→Environment Light欄位裡,按滑鼠右鍵,選Create RenderManEnvLightShape,可以看到如下視窗。把Shadowing這個欄位切換成是occlusion。





















接著在RenderManEnvLightShape的Bake(或是Bake Shadowing)這個欄位裡,按滑鼠右鍵,選Create RenderRadiosity,即可出現如下視窗。
(註:這裡會出現三個選項:Create RenderRadiosity、Create MakeApproxGlobalDiffuse、Create MakeGlobalDiffuse3d,簡述如下:

MakeApproxGlobalDiffuse:會bake出global illumination的*.ptc,並會從這個*.ptc再產生*.bkm(brick map檔,可以想成是經過空間分割的*.ptc)

MakeGlobalDiffuse3d:會bake出有ray-traced的global illumination的*.ptc,並會從這個*.ptc再產生*.bkm

RenderRadiosity:同MakeApproxGlobalDiffuse,但不會產生*.bkm)

然後在rmanRenderRadiosityPass的camera欄位裡,按滑鼠右鍵,選擇要bake *.ptc的camera的名稱(這裡是referenceShape);在Caching Behavior選Compute,即要計算出*.ptc。





















執行render後,可以看到先render出object的color的圖,且是從reference這個camera角度看出去的樣子,也就是說,先透過bake *.ptc用的camera,來bake出object的顏色的資訊到*.ptc裡。

















接著會看到真正render出來的approximate occlusion的結果,如下:


















而且在project的renderman->untitled->data->0001底下,看到有一個*.ptc檔。














用ptviewer開啟這個*.ptc,再右鍵->Color->_radiosity,可以看到如下結果~將object的color資訊寫進去的*.ptc,且視角是reference看出去的視角。















再在rmanRenderRadiosityPass裡,將Caching Behavior切成Reuse,即可重複使用剛剛生出來的*.ptc的color資訊。再次render,就會直接render出結果,而不會先render出用來bake物件的color pass。

沒有留言:

張貼留言