摘要:3D Max在3D制作軟件中渲染功能一直比較薄弱,使其只甘居Maya等3D制作軟件之下。為彌補這一缺陷,在5.0版中3D Max增加了高級燈光技術,擁有光能傳遞、光線追蹤器兩個全局照明系統,在渲染功能上有了非常顯著的改善。本文主要介紹新的光能傳遞算法。
關鍵詞:渲染 全局照明 光能傳遞
3D MAX 的渲染功能一直比較薄弱,其效果遠不如其他軟件(例如Maya)那樣逼真,這在很大程度上是因為3D MAX默認的燈光技術不夠先進。
在3D MAX中經常使用“光線追蹤(Ray-Trace)”材質,與之相聯系的就是光線追蹤渲染算法。這種算法假設發出很多條光線,光線遇到物體時,被遮擋、反射或者折射,通過跟蹤這些光線,就可以得到場景的渲染效果。但是這種方法有一個嚴重的缺點,就是不能反映現實生活中光的很多特性。例如,在現實生活中,燈光照射到物體后,每個物體都會發射一部分光線,形成環境光,從而導致沒有被燈光直射的物體也能被照明,而不是完全出于黑暗狀態。又如,把一個紅色物體靠近白色的墻壁,那么墻壁靠近物體的地方會顯出也帶有紅色。還有很多諸如此類的燈光效果,使用光線追蹤算法都不能產生。
為了解決這些問題,人們發明了更先進的算法來計算燈光的效果,這就是“光能傳遞(Radiosity)”算法。這種算法把光作為光量子看待(實際上更符合現代物理學),通過計算光量子的能量分布獲得渲染結果。這種方法能夠獲得最逼真的照明效果,因此,通常將光能傳遞算法和光線追蹤算法結合起來,以獲得最佳的效果。3D MAX5.0新增的高級光照功能則包含了兩個不同的系統:光能傳遞(radiosity)和光線追蹤器(light tracer)。它所得到的結果非常接近對真實事物的再現。
光線追蹤器比較通用,也容易使用,使用它不需要理解許多技術概念,任何模型和燈的類型都適用。光能傳遞相對較復雜,需要為這種處理方式專門準備模型和場景。燈必須是光度控制燈,材質也必須仔細設計。但光能傳遞在物理上是精確的,對于建筑模型的精確設計是必須的,這一點非常重要,尤其當建模的目的是進行光照分析時。另外,光線追蹤器的結果與視點無關,而光能傳遞不是這樣的。光線追蹤器在每一幀都計算光照。光能傳遞只會計算一次,除非場景中的物體移動了或燈發生了變化,或者是從另一個不同的視點渲染場景時。基本原則是光線追蹤器更適用于有大量光照的室外場景、角色動畫和在空曠的場景中渲染物體。光能傳遞更適合于使用了聚光燈的室內場景和建筑渲染。
使用光線追蹤器進行室內光照仿真時,為避免平坦表面上的噪波,可能需要相當高質量的設定和很長的渲染時間。光能傳遞則可以用更短的時間提供更好的效果。另一方面,光能傳遞用于有許多多邊形的角色模型時,需要額外的細化步驟、過濾,甚至是Regathering(重新聚合)。而光線追蹤器適用默認的設置一次渲染就可以得到更好的效果。
| |
傳統的渲染引擎值考慮直接光照 不考慮反射光,然而,反射光是 一個場景的重要組成部分。 | 對相同的場景使用全局光照渲染, 上圖使用了光能傳遞(radiosity) 就可以得到一種真實的結果。 |
光能傳遞是在一個場景中重現從物體表面反射的自然光線,實現更加真實和物理上精確的照明結果。如圖所示。光能傳遞基于幾何學計算光從物體表面的反射。幾何面(三角形)成為光能傳遞進行計算的最小單位。大的表面可能需要被細分為小的三角形面以獲得更精確的結果。場景中三角形面的數目很重要。如果數目不夠結果會不精確,但如果太多時間又會太長。光能傳遞提供一種將大的三角形面自動細分的方法,同時也可以控制每個物體的細分和細化程度。光能傳遞依賴于材質和表面屬性以獲得物理上精確的結果。在場景中進行建模時必須牢記這一點。要使用光度控制燈,而且模型的幾何結構應盡可能準確。
1.單位
要獲得精確的結果,場景中作圖單位是一個基礎。如果單位是“英寸”,一個100×200×96單位的房間可以被一個相當于60瓦燈泡的光度控制燈正確照明,但如果單位是“米”,相同場景會變得非常暗。
2.光能傳遞的解決方案
光能傳遞是一個獨立于渲染的處理過程,一旦解決方案被計算出來,結果被保存在幾何體自己內部。對幾何體或光照作改變將使原解決方案無效。解決方案是為整個場景全局計算的,這意味著它與視點無關。一旦計算出來,就可以從任何方向觀察場景。當攝像機在一個固定場景中移動時,這將會節省時間。如果對幾何體或燈作了動畫,每一幀都必須計算光能傳遞。渲染菜單中的選項允許定義如何處理光能傳遞過程。
3.工作流程
基于物理光能傳遞的工作流程:
當你使用光能傳遞去模擬現實光照場景時,務必注意以幾點:(1)場景尺寸: 確認你的場景擁有正確的尺寸和一致的單位 (一盞燈光在一個120米高的房間里和在一個120厘米高的房間里是大不一樣的)。(2)燈光: 你必須使用 Photometric lights,并確保這些燈的亮度在正確的范圍內。(3)自然光: 要模擬自然光, 確定你使用的是 IES sun 和 IES Sky,它們能根據特定的地點、日期、時間,給出正確的光照信息。(4)材質反射度: 你必須保證場景中材質的 reflectance value 與現實中相一致。例如:一面漆有白色油漆的墻,它的反射度大概是80%。可是,一個純白的材質 (RGB:255, 255, 255) 所擁有的反射度是100%。這時你就必須去手動的調節反射度。(5)曝光控制: 曝光控制相當于照相機的光圈。 你可以使用它去控制最后的渲染結果,優化渲染圖像。
使用光度控制燈光基于物理的光能傳遞工作流程:
(1)檢查并調節場景中物體的尺寸符合其物理大小,調整材質的反射度符合其物理屬性。(2)放置 photometric lights 到你的場景中,你能按照真實世界放置燈光的方法去放置你的虛擬燈光。(3)選擇 Rendering 菜單 Environment 對話框,選擇你想使用的曝光類型。(4)渲染場景預覽燈光效果。在這一步光能傳遞并不進行處理,但你能快速地確定直接光的位置和強度,調節好直接光的位置強度等。(5)選擇 Rendering 菜單 Advanced Lighting 對話框,在高級燈光選項中選擇光能傳遞。(確定 Active 前的小方塊打上了勾)(6)在Radiosity Parameters 卷展欄中,點擊Start計算光能傳遞。當計算完成時,你就能在視圖里看見效果了。燈光效果直接顯示在幾何體上,你能很方便的在視圖中觀察調整而不必重新計算。(7)再次點擊渲染場景。渲染器計算直接光和陰影,完成渲染工作。
你可以不使用基于物理屬性的燈光去創建你的場景,但你必須注意以下幾點:(1)燈光:因為光能傳遞計算是基于物理屬性,在計算中 Standard lights 被解釋為 Photometric lights。例如:一盞 multiplier=1.0 的聚光燈將被轉換為1500燭光亮度的燈光。而標準燈光的光線衰減,不論你如何設置,都將按照光能傳遞的內部算法進行,而不理會你的設置。(2)自然光照: 如果你不想使用基于物理的燈光類型去模擬自然光,你可以使用Direct Light 去模擬太陽光,使用skylight 去模擬天光。(3)曝光控制:因為標準燈光不是基于精確物理學的燈光, 所以你需要只能對光能傳遞的結果進行調整而不影響直接光照。使用 Logarithmic Exposure Control,打開僅影響