期初對Radiosity相當感興趣,於是期末project就選擇它來實做,以老師建議的code來做修改,我把它寫到OpenGL上去,接著顯示它顏色變化的結果。Radiosity的理論可以參考:Radiosity的概念 (Radiosity Concept)。
下圖是較為複雜的場景,使用Radiosity技術畫出來的影像感覺相當真實吧!

參考的程式碼:
- Progressive Radiosity by Eric Chen while he worked for Apple
使用的場景資料:
- 18 polygons
- 28 points
- 51 patches
- 2225 elements
DEMO
最後的結果呢…並沒有看到影子耶!怎麼一回事?可是我真的把它運算的結果給顯示出來啊!1990年Apple員工所寫的code,怎麼沒有我想要的效果?就算把element提高到幾十萬,結果顯示一模一樣?!到底是哪裡出了亂子呢?抑或是演算法本身有問題?
儘管這次專案失敗,但卻不能抹滅我學到的事情,所以我還是把實做過程給記錄下來,未來就算再遇到類似的狀況,我也一定要如此做!
實做過程
剛開始雖然知道場景是柯內爾盒子 (CORNEL BOX),然而我卻不知道各個點的相對位置,我使用MatLab將各點的座標給畫出來,只有單一角度可能看不出來此場景是在三維空間。

可以看出柯內爾盒子這個場景被切割成好幾百個片面。

我程式的繪圖順序從黑色(0)到白色(1)。

若順利的話,畫出來的結果本應該像這張圖:

可惜並不是啊~~~好遺憾!
參考資料
- Radiosity
http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm - Light Mapping – Theory and Implementation
http://www.flipcode.com/archives/Light_Mapping_Theory_and_Implementation.shtml - Radiosity Render
http://jsthacker.com/portfolio/radiosity/radiosity.html - Radiosity Renderer and Visualizer
http://dudka.cz/rrv - Real-Time Radiosity
http://homepages.paradise.net.nz/nickamy/realtimerad/realtimerad.html






隨意留個言吧:)~