global illumination

全局照明的英文是Global Illumination,縮寫形式為GI。

簡介

全局照明的英文是Global Illumination,縮寫形式為GI。 GI可以處理焦散以外的全部間接照明效果,即,所有經過Diffuse或/和Glossy方式傳播(包括反射和折射)出來的光子,當它們再次與Diffuse表面發生碰撞時,碰撞點都會被記錄到GI光子分布圖中。

GI同樣也會處理Specular方式傳播的光子(即光子從光源發射出來後,直接與一個或多個Specular表面發生相互作用),但有一個前提,就是只經過Specular表面作用的光子必須至少再經過一次Glossy或Diffuse表面作用後才能記錄到GI光子圖中。GI對“Specular光子”的處理不影響焦散的計算,因為在焦散計算中, Specular光子 可 直接 被焦散Diffuse表面吸收;但在GI中, Specular光子 必須至少再經歷一次Glossy或Diffuse表面作用後才能記錄到GI光子圖中,換句話說,全局照明Diffuse表面不能 直接 接收 Specular光子 ,所以,焦散(間接)照明效果不會與GI(間接)照明效果發生任何重疊,並且GI與焦散是完全獨立互不相干的兩個過程。

基本照明材質Shader中的Ambient和Ambience屬性所定義的顏色不需要任何照明光源就能直接顯示出來。在早期沒有全局照明技術的情況下,人們用Ambient和Ambience 模仿 物體背光面所接收到間接照明。很明顯,Ambient和Ambience 模仿 出來的間接照明根本不準確,因為在現實生活中,即使在背光面,在各種條件下(比如,凹凸不平的背光面)不同的表麵點所接收到(間接)照明也是不同的,而Ambient和Ambience所定義的顏色會 均勻 覆蓋到背光面的整個區域中,使它看起來過於平淡,缺乏層次感。尤其當背光面有明顯凹凸起伏時,Ambient和Ambience 模仿 出來的間接照明就顯得很不真實。

全局照明可以完全解決背光面的(間接)照明問題。全局照明計算出來的間接照明效果是用光子的反、折射計算產生的 真實 的間接照明效果。所以只要打開全局照明計算功能,就能把Ambient和Ambience設定為0。當然,全局照明計算出來的真實間接照明效果是以犧牲渲染時間為代價的 。

必備條件

* Window - Rendering Editors - Render Settings視窗 - Indirect Linghting標籤 - Global Illumination部分中的Global Illumination選項必須打開。

* 光源形節點屬性編輯器 - mental ray - Caustic and Global Illmination部分中的Emit Photons選項必須打開,激活光子發射功能;並利用Photon Color 和Photon Intensity兩個屬性為光子設定恰當的能量值。注意,要實現物理學精確渲染,光源的直接照明必須與光子能量一樣,按 距離平方的反比 的形式進行衰減。(建議使用符合物理學精度的直接照明燈光Shader ,比如physical_light,並讓燈光Shader中的直接照明能量與光子能量值保持相等。)

* 必須為每個參與全局照明計算的物體制定Photon Shader(在材質組屬性編輯器 - mental ray - Custom Shaders部分中)。光子的反射、投射、吸收和儲存全部由Photon Shader控制。

* 參與全局照明計算的物體,其材質定義中不能含有Shadow Shader,避免直接照明光線 穿透 物體照射到它的後方,因為開啟間接照明後,這部分照明功能已經被間接照明涵蓋,如果繼續使用Shadow Shader,極易造成渲染的照明過度。

* 參與全局照明的物體,如果其 表面 材質定義部分中的Shader 含有Ambient、Ambience之類的非照明顏色屬性,則必須把它們設定為0。

質量控制屬性

* 發射光子的光源形節點屬性編輯器 - Caustic and Global Illumination部分中的Global Illum Photons控制著GI光子圖中儲存的光子總數,它也是決定GI質量的最根本控制屬性。默認值是10000。經常使用的範圍是1萬到100萬。數值越小,儲存的GI光子數就越少,計算得越快,但效果越模糊,容易出現成片成片的 污漬 或模糊現象;數值越大,儲存的GI光子數就越多,質量越高,但速度也會越慢。如果開啟Final Gather功能,就可以大幅減少該屬性的數值,通常可減少到原來的十分之一左右。

* 默認情況下,場景中所有指定了Photon Shader的物體都可投射並接收全局照明。但實際套用中,往往並不需要所有的物體都參與到全局照明計算中來,此時可以進行以下設定:

window - Rendering Editors - Render Settings視窗 - Options標籤 - mental ray Overrides - Global Illumination/Caustics部分中,設定 Global Illum Generating = none(默認值) , Global Illum Receiving = None(默認值).

關閉GI物體的 變換 節點屬性編輯器 - mental ray - Flags部分中的Derive from Maya選項,然後為GI投射物體的Globillum屬性指定Cast only(僅投射)或Cast+Receive(投射又接收)選項;而為GI接收物體的Globillum屬性指定Receive only(僅接收)或Cast+Receive(投射又接收)選項;而把對GI沒有任何影響的物體的Globillum功能關閉,即,設Globillum=Disabled。

* 如果渲染出來的全局照明效果很斑駁,或呈現出一片一片的 污漬 現象,又不想提高光子的存儲數量,那么就可以進行以下設定:

Window - Rendering Editors - Render Settings視窗 - Indirect Linghting標籤 - Global Illumination部分中的Accuracy及Radius兩個數值進行質量調整。

全局照明的Accuracy默認值是500,適當提高該數值對GI中的 污漬 現象有一定的緩解作用。

另外Merge distance屬性,它可以把場景世界坐標空間系統中,指定距離內的光子合併到一起,這個 指定距離 就是Merge distance的屬性值。對於那些光子分布很不均勻的場景,該屬性可以減少光子圖的大小,降低記憶體的使用量,同時,也可以在一定程度上加快光子圖的查找與計算過程。

相關詞條

熱門詞條

聯絡我們