你的問題是針對渲染器影象中的“噪點”,“噪點”大致分為兩種情況,一種是“白色雜點”,跟照明有關;另一種是“黑色雜點”,跟陰影處GI(全域性光照)取樣不足有關。
你現在說的“白色斑塊”應該屬於第一種,它是一種因光源設定不合理,而產生的難以消除的雜點,有時會出現,渲染時間越久,雜點越多的極端情況。
要解決這個問題並不難,但前提是,你要了解它們是怎麼產生的。下面,我簡單的解釋一下。
現在的全域性光照渲染器大多都採用了類似的物理性演算法,它是基於光學原理的,像Thea、Maxwell這些渲染器,更是採用了科學“光譜”計算方式,因此,照明效果非常真實。
光線從光源發出能量後,這個能量會在空間中傳遞,遇到表面會反彈,影響到其它的表面。在這個過程中,光線的能量還遵循衰減原則。其中有一個至關重要的因素,就是光線反彈之後的能量,取決於表面材料的吸收率和反射率。
比如,白色的表面,理論上接近完全反射光線;黑色的表面,理論上完全吸收光線。在真實的世界裡,沒有渲染器中的“噪點”,是因為這個世界沒有100%反射的表面,也不存在100%吸收的表面。光線在傳遞的過程中,因距離逐漸衰減,弱化了能量,直至能量完全對環境不產生任何影響。
但是,在電腦三維的世界裡,雖然渲染器是基於物理演算法的,但是,你的場景並沒有按照真實的世界去設定。在真實的世界裡,太陽的能量除了照在植物上,還會被植物周圍的表面,比如地面吸收一大部分。而很多人在測試渲染的時候,並沒有認真的設定環境,或許,也沒有把物件的材質顏色(包括紋理)設定為安全的範圍,這樣,就會導致,電腦中的太陽能量發出時雖然跟真實的太陽一致,但是,反彈之後的能量卻遠遠大於真實的世界。而渲染器的演算法是有公式的,它無法消除這些失真的資料,就會產生“噪點”。
光線能量太高產生“白色雜點”,反彈光線能量不足和取樣過低,會產生“黑色雜點”……基本上就是這麼回事。
解決方法就是,建立一個地面,它會遮擋來自底部的天空光(很多天空光是球形照明的),同時,地面的材質,也會吸收Sunny和正面的天空光,一旦光源的能量控制在合理的範圍內,“白色雜點”就會快速消除……
對於“白色斑塊”還有一種可能性,就是材質的反射設定不當,比如“鏡面反射”會反射出太陽,而表面之間還會相互反射,也可能造成“白色斑點”的假象。如果是這種情況,則需要控制好材質的反射度和表面粗糙度。或者完全關閉反射,看看“白色斑塊”還有沒有,以此來找到真正的原因。
最後,小結一下。
物理性全域性照明渲染器,一方面要正確的設定光源的能量強度;另一方面,必須把材質的屬性控制在安全的範圍內。基本的原則就是,真實的世界裡,沒有計算機裡的那種純色,不管是黑、是白、還是其它顏色,總之純度不可能是100%,亮度也不可能是100%,也不會有真正的黑色。反射高的材質,對應的漫反射顏色一定暗……這些都是基本原則。
只要注意這些方面,模型上儘可能模擬真實的環境,則影象“失真”的現象會有效抑制。
先講這麼多,你可以按這個思路,再完善一下你的場景。之後,有什麼具體問題再說。
你的問題是針對渲染器影象中的“噪點”,“噪點”大致分為兩種情況,一種是“白色雜點”,跟照明有關;另一種是“黑色雜點”,跟陰影處GI(全域性光照)取樣不足有關。
你現在說的“白色斑塊”應該屬於第一種,它是一種因光源設定不合理,而產生的難以消除的雜點,有時會出現,渲染時間越久,雜點越多的極端情況。
要解決這個問題並不難,但前提是,你要了解它們是怎麼產生的。下面,我簡單的解釋一下。
現在的全域性光照渲染器大多都採用了類似的物理性演算法,它是基於光學原理的,像Thea、Maxwell這些渲染器,更是採用了科學“光譜”計算方式,因此,照明效果非常真實。
光線從光源發出能量後,這個能量會在空間中傳遞,遇到表面會反彈,影響到其它的表面。在這個過程中,光線的能量還遵循衰減原則。其中有一個至關重要的因素,就是光線反彈之後的能量,取決於表面材料的吸收率和反射率。
比如,白色的表面,理論上接近完全反射光線;黑色的表面,理論上完全吸收光線。在真實的世界裡,沒有渲染器中的“噪點”,是因為這個世界沒有100%反射的表面,也不存在100%吸收的表面。光線在傳遞的過程中,因距離逐漸衰減,弱化了能量,直至能量完全對環境不產生任何影響。
但是,在電腦三維的世界裡,雖然渲染器是基於物理演算法的,但是,你的場景並沒有按照真實的世界去設定。在真實的世界裡,太陽的能量除了照在植物上,還會被植物周圍的表面,比如地面吸收一大部分。而很多人在測試渲染的時候,並沒有認真的設定環境,或許,也沒有把物件的材質顏色(包括紋理)設定為安全的範圍,這樣,就會導致,電腦中的太陽能量發出時雖然跟真實的太陽一致,但是,反彈之後的能量卻遠遠大於真實的世界。而渲染器的演算法是有公式的,它無法消除這些失真的資料,就會產生“噪點”。
光線能量太高產生“白色雜點”,反彈光線能量不足和取樣過低,會產生“黑色雜點”……基本上就是這麼回事。
解決方法就是,建立一個地面,它會遮擋來自底部的天空光(很多天空光是球形照明的),同時,地面的材質,也會吸收Sunny和正面的天空光,一旦光源的能量控制在合理的範圍內,“白色雜點”就會快速消除……
對於“白色斑塊”還有一種可能性,就是材質的反射設定不當,比如“鏡面反射”會反射出太陽,而表面之間還會相互反射,也可能造成“白色斑點”的假象。如果是這種情況,則需要控制好材質的反射度和表面粗糙度。或者完全關閉反射,看看“白色斑塊”還有沒有,以此來找到真正的原因。
最後,小結一下。
物理性全域性照明渲染器,一方面要正確的設定光源的能量強度;另一方面,必須把材質的屬性控制在安全的範圍內。基本的原則就是,真實的世界裡,沒有計算機裡的那種純色,不管是黑、是白、還是其它顏色,總之純度不可能是100%,亮度也不可能是100%,也不會有真正的黑色。反射高的材質,對應的漫反射顏色一定暗……這些都是基本原則。
只要注意這些方面,模型上儘可能模擬真實的環境,則影象“失真”的現象會有效抑制。
先講這麼多,你可以按這個思路,再完善一下你的場景。之後,有什麼具體問題再說。