Just My Life & My Work

Radiosity 概念 (Radiosity Concept)

Radiosity概念簡單說明︰是全局照明這樣的問題,給定一個場景及其初始亮度分佈(其實就是光源),求任意表面上任意一點的亮度。

我們可以先來瞭解直接照明全域照明的差別:直接照明和全域照明 (Direct Illumination and Global Illumination)

Radiosity這個問題可以寫成一個簡單的積分方程,稱為光的傳輸方程。不過這個方程很難解,從數學上看,Radiosity實際上是使用了有限元素法來解這個方程。

最簡單的一種Radiosity算法是Progressive Radiosity,以下是其演算法,分為三個步驟︰

  1. 把場景(包括光源)分割成大量的小多邊形,稱為patch。光源的光能處於未射出的狀態。
  2. 找到未出射光能最大的一個patch,把它出射的光能加到其它所有的patch上︰從一個patch i發出的光能有百分之多少能到達另一個patch j,這個參數稱為form factor。這個參數有很多種求法。之後把這個patch的未出射光能設為零。
  3. 反覆執行步驟2,場景將由暗變亮,接近真實效果。將結果存儲起來,供以後的採樣算法,如GauroundPhongRay Tracing等生成圖像使用。

舉一個簡單的場景為例,光線會從三扇窗戶照射進來:

接著程式陸續跑1、2、3、4和16個回合,成像如下:

以真實世界的情況來說,當我們一睜開眼睛約莫就是16回合的樣子,因為大自然運作速度比程式快非常多呢!不過卻可以程式來模擬大自然的運作原理:P

Progressive Radiosity比較簡單,但效率不高。目前用的較多的是各種Wavelet Radiosity算法。

根據WiKi解說:有限元素分析,即有限元素方法,是一種用於求解微分方程組或積分方程組數值解的數值技術。這一解法基於完全消除微分方程,即將微分方程轉化為代數方程組(穩定情形):或將偏微分方程(組)改寫為常微分方程(組)的逼近,這樣可以用標準的數值技術,例如歐拉法、龍格-庫塔方法等求解。

參考:有限元素法Radiosity

Comments on: "Radiosity 概念 (Radiosity Concept)" (1)

  1. 未知 的大頭貼

    […] 期初對Radiosity相當感興趣,於是期末project就選擇它來實做,以老師建議的code來做修改,我把它寫到OpenGL上去,接著顯示它顏色變化的結果。Radiosity的理論可以參考:Radiosity的概念 (Radiosity Concept)。 […]

隨意留個言吧:)~

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲