通常遊戲中的雲,按製作方法分為幾類:
1、天空盒子上的雲
2、面片雲
3、模型雲
4、虛擬體積的光追雲
天空盒子上的雲,優勢就是消耗低、效果好,因為畫在視線可及範圍的最遠處,也不需要頻繁更新雲的動態。就靜態天空和靜態光照來說是最佳解決方案。
但缺點就是不會動。或者說如果非要動,計算開銷會非常大,而且效果還不一定能保證。
面片雲,通常都是通過半透明的面所繪製的具有實際座標位置的雲。這種雲的優勢在於消耗低,效果好,而且可以隨意移動位置,並且可以通過序列圖等方法更新動態。
不過劣勢就是本身的朝向基本被鎖死,視角不能過於接近不然就會穿幫。而且本身因為只是面片,所以光照明暗關係需要通過法線圖或其他方法來糾正。
模型雲,因為具有模型頂點數據來描述雲體積或其他必要信息,所以相對前兩種來說,會更加可控。我們可以通過模型的數據來隨意變更雲的大體形狀、細節邊緣、厚薄變化等等,並且模型本身的頂點可以攜帶法線信息,提供真實有效的光照明暗關係。總體來看,效果優勢甚多。
但缺點也是非常明顯的,如果天空需要大面積的雲,也就意味著模型需要大量頂點支持,而且隨著細節增多,頂點數量需求會急速增加。如果需要在此基礎上計算每個頂點的動態,那麼計算開銷將會達到一個恐怖的量級。上篇工頭提到的點雲技術就是處理這個頂點數據的一種方式。
虛擬體積的光追雲,對於沒有圖形學知識的朋友,這個名字有點難懂。這裡先簡單解釋一下虛擬體積和光追的關係。
虛擬體積可以理解為我們通過手機屏幕看屏幕裡的三維物體,雖然是三維的,但其實它只是屏幕像素的明暗和透視關係營造的一種虛擬三維。在真實世界中它只是我們屏幕上的一排排二維像素平面上的像素點。而在虛擬的三維世界中,我們一樣可以做到這種以假亂真的事情。可以理解為我們在屏幕裡的三維空間中,創建了一個二維平面,而在這個二維平面中去實現一個三維效果。就像套娃一樣,屏幕中有個屏幕,我們將其稱作虛擬體積。
光追是光線追蹤的簡稱。光追是我們在虛擬體積之中,實現一個三維效果,使其符合我們屏幕中的三維空間的特性的基礎手段。從而使我們通過屏幕看起來,它真的像個三維物體而不是呈現二維平面感。
使用這種技術的雲,會具有面片雲的可控位置以及相對低消耗的優勢。也會具有模型雲的可變頂點數據帶來的雲層多變的可能性。總體來看是一個相對優勢的方案。
但這並不意味它沒有缺陷,因為基於光追技術,所以自然也就繼承了光追的特性,隨著佔比屏幕像素越多,其計算開銷也是會逐步增大。而且因為光追的迭代次數問題,需要保證近看細節仍然不丟失,就需要增大計算迭代次數,計算開銷也是會隨之提升。
綜合以上列舉的方案,針對開放動態大世界來說,嚴格意義上並沒有合適的方案。開放動態的天空也就意味著,我們隨時看向天空的時候,天空都是不一樣的,而且無論什麼角度、遠近、光照情況下,它都需要是合理的。這個看似不可能的目標,才是我們需要為之去努力(頭禿)的方向。
而在天空的雲層動態實現後,動態環境的基礎才算是真正完成了。
某日,某礦工發了一張圖給工頭。
某礦工:老大,之前說的動態雲影已經做完了,你的雲什麼時候搞完?
工頭:別催了,再催就是有生之年。
想關注更多【未定界】資訊,請加入未定界官方討論群