遊戲引擎剖析 第4部份 模型與動畫,細節級別

2021-04-09 11:08:50 字數 1434 閱讀 8338

[email protected]

第4部份: 模型與動畫,細節級別

角色建模與動畫

你的角色模型在螢幕上看起來怎麼樣,怎樣容易建立它們,紋理,以及動畫對於現代遊戲試圖完成的`消除不可信`因素來說至關重要。角色模型系統逐漸變得複雜起來, 包括較高的多邊形數量模型, 和讓模型在螢幕上移動的更好方式。

如今你需要乙個骨骼模型系統,有骨架和網格細節層次,單個頂點骨架的評估,骨架動畫忽略,以及比賽中停留的角度忽略。而這些甚至還沒有開始涉及一些你能做的很好的事情,像動畫混合,骨架反向運動學(ik),和單個骨架限制,以及相片真實感的紋理。這個清單還能夠繼續列下去。但是真的,在用專業行話說了所有這些以後,我們在這裡真正談論的是什麼呢?讓我們看看。

讓我們定義乙個基於網格的系統和乙個骨骼動畫系統作為開始。在基於網格的系統,對於每乙個動畫幀,你要定義模型網格的每個點在世界中的位置。舉例來說,你有乙個包含200 個多邊形的手的模型,有 300 個頂點(注意,在頂點和多邊形之間通常並不是3個對1個的關係,因為大量多邊形時常共享頂點 – 使用條形和扇形,你能大幅減少頂點數量)。如果動畫有 10 幀,那麼你就需要在記憶體中有300個頂點位置的資料。 總共有300 x 10 = 3000 頂點,每個頂點由x,y,z和顏色/alpha資訊組成。你能看見這個增長起來是多麼的快。quake i,ii和 iii 都使用了這種系統,這種系統確實有動態變形網格的能力,比如使裙子擺動,或者讓頭髮飄動。

相比之下,在骨骼動畫系統,網格是由骨架組成的骨骼( 骨架是你運動的物件)。 網格頂點和骨架本身相關,所以它們在模型中的位置都是相對於骨架,而不是網格代表每個頂點在世界中的位置。因此,如果你移動骨架,組成多邊形的頂點的位置也相應改變。這意謂著你只必須使骨骼運動,典型情況大約有 50 個左右的骨架—很明顯極大地節省了記憶體。

骨骼動畫附加的好處

反向運動學 (ik) 是被許多人們丟棄的乙個專業術語,對它的真實含義沒有多少概念。ik 是如今遊戲裡面乙個相對比較新的系統。使用 ik ,程式設計師能夠移動乙隻手,或一條腿, 模型的其餘關節自動重新定位,因此模型被正確定向。而且有模型的關節新位置的其餘者他們自己,因此模型正確的被定向。比如,你將會說,"好,手 , 去拾起桌子上的那個杯子"並指出杯子在世界中的位置。手就會移動到那裡,且它後面的身體會調節其自身以便雙臂移動,身體適當彎曲,等等。

也有和ik相反的事情,叫做前向運動學,本質上與 ik 工作的次序相反。想像乙隻手,手附著在手臂上,手臂附著在身體上。現在想像你重重地擊中了身體。通常手臂像連迦般抽動,且手臂末梢的手隨之振動。 ik 能夠移動身體,並讓其餘的四肢自己以真實的方式移動。基本上它需要動畫師設定每種工作的大量資訊 -- 像關節所能通過的運動範圍,如果一塊骨架前面的骨架移動,那麼這塊骨架將移動多少百分比,等等。

和它現在一樣,儘管很好,它是乙個很大的處理問題,不用它你可以有不同的動畫組合而脫身。值得注意的是,真正的 ik 解決辦法需要乙個層次骨骼系統而不是乙個模型空間系統 -- 否則它們都耗時太多以致無法恰當地計算每個骨架。

lod幾何系統

遊戲引擎全剖析 4

第4部份 模型與動畫,細節級別 角色建模與動畫 你的角色模型在螢幕上看起來怎麼樣,怎樣容易建立它們,紋理,以及動畫對於現代遊戲試圖完成的 消除不可信 因素來說至關重要。角色模型系統逐漸變得複雜起來,包括較高的多邊形數量模型,和讓模型在螢幕上移動的更好方式。如今你需要乙個骨骼模型系統,有骨架和網格細節...

遊戲引擎剖析(二)

第2部份 3d環境的光照和紋理 世界的燈光 在變換過程中,通常是在稱為觀察空間的座標空間中,我們遇到了最重要的運算之一 光照計算。它是一種這樣的事情,當它工作時,你不關注它,但當它不工作時,你就非常關注它了。有很多不同的光照方法,從簡單的計算多邊形對於燈光的朝向,並根據燈光到多邊形的方向和距離加上燈...

遊戲引擎剖析(六)

第6部分 聲音系統,音訊apis 聲音系統 現在有一些很少有處理的聲音空間化問題。我說的是把聲音放在乙個真實的3d世界中。有四個揚聲器在你周圍是乙個很棒的開始,但這仍然只是在二維方向。在你的上方和下方沒有揚聲器,你沒有真正獲得3d聲音。有一些聲音調製過濾器試 決這個問題,但實際上沒有真實東西的代替物...