遊戲開發入門(五)遊戲動畫系統

2021-08-15 05:04:01 字數 2594 閱讀 5658

1.遊戲的發展史也是遊戲動畫的發展史

最初的2d動畫是通過序列幀來完成的,和動畫電影原理一樣,將多張連到一起就形成了動畫,表現力比較差。如今的3d動畫其實原理相同,但是在各個細節的處理已經大大不同了,需要多個動畫完美的銜接融合,與外界環境有著很好的互動。

2.動畫是關於時間的函式:

剛體動畫:隨著時間變化,改變某個剛體的位移(或旋轉,縮放),常用於遊戲動畫錄製等

頂點動畫:隨著時間變化,改變模型頂點的位置,可用於簡單的模型變換,捏臉,自定義角色等

骨骼動畫:3d遊戲必用,隨著時間變化改變骨骼模型關節的旋轉,進而驅動骨骼上的蒙皮,用來模擬角色動畫

uv動畫:隨著時間變化,改變模型上的貼圖的uv資料,從而模擬其表面變化的效果,常用於水面的模擬

粒子動畫:隨著時間變化,改變粒子的軌跡與形態,用於加強場景的效果表現。

布料動畫:隨著時間變化,改變頂點或者骨骼關節的位置(本質上是頂點或者骨骼動畫),用於模擬如衣服頭髮飄動的效果

3.骨骼動畫的優勢:

關節在區域性空間運動,只有旋轉資料(避免角色身體部分拉長),無論是效能還是表現都很優秀

骨骼動畫理解:骨骼動畫的變換是基於區域性座標空間系的,比如人體手腕關節在旋轉時,他是基於其父關節點(小臂)的空間座標系下進行變換的,而小臂的旋轉又是基於他的父關節點(大臂)的,一直遞推到根骨骼。所以,我們在世界座標空間下更新骨骼動畫時,只需要傳入根骨骼的座標(模型原點),對該座標進行座標變換,整個骨骼都會跟隨這一起變換。

4.粒子動畫系統就是我們常見的發光特效,其組成包括乙個發射器,乙個效果器還有乙個銷毀器。

發射器可以繫結在某個物件上,隨著物件移動,移動的同時發射粒子,效果器作用於發射出來的粒子,可以影響粒子的顏色,明暗,位置等屬性。銷毀器負責銷毀粒子。

5.布料動畫採用的原理是彈簧質點模型,可以很好表現諸如頭髮衣服的飄動效果

6.遊戲動畫系統主要解決的問題:

7.動畫資料處理模組:

儲存了動畫每幀(或固定某幾幀)的狀態與資料,可能是、矩陣、多個浮點數等

注:由於儲存空間的限制,我們不可能將連續動畫所有幀(什麼更精細)的資料全部儲存下來。所以,美術在製作動畫資源的時候只是對關鍵幀進行製作修改,我們需要也通過對一套動畫資源取樣來盡可能模擬動畫。如果我們只進行逐幀取樣,會導致動畫不流暢。所以,我們考慮時間取樣。時間取樣需要解決乙個問題,時間是連續的,動畫資源是不連續的,所以需要對兩個關鍵幀沒有動畫的地方處理,這個處理就是插值。插值是遊戲製作裡面乙個非常基礎而且重要的技巧。處理動畫以外還用於更新攝像機位置,對頂點之間的渲染等。

8.常見插值:

線性插值,樣條線插值

9.什麼是幀?

幀的概念在遊戲中比較混亂,有時人們可能認為他是時間單位,比如一秒有30幀。但實際上幀是指某個時間點的畫面,一秒30幀指的是一秒內能渲染出30張靜態的畫面資料,幀數越高動畫效果越流暢。

10.關於切線空間:

參考一下知乎上的講解

11.關於全域性時鐘與區域性時鐘的理解:12.ik13.動畫複雜性分析:

a.遊戲中,玩家可以通過按鍵迅速改變角色的動作,那各種的動畫切換如何處理?b.角色在移動過程中可能還會有其他動作(如回頭,舉手),那如何根據引數選擇並混合不同的動作?c.如何表現動畫的多樣性?

最簡單的辦法就是做更多的動畫資源,但是這種方法會增加包的大小,而且美術的工作量幾乎以指數**的形式增長。

所以我們通過一些常見的辦法來處理,如疊加混合。舉例子來說,玩家在走路的時候可能會向左右觀察,如果做成單個的資源,就要做乙個普通走路,向左看走路,向右看走路,如果跑起來的話,又要做一套向左看跑,向右看跑。但是其實玩家在向左看的時候,除了頭部以外,幾乎沒有其他動作,所以我們並不需要做了乙個向左看走又做乙個向左看跑的動作,只需要向左看的動畫。然後,將向左看與走路(跑步)動畫疊加混合就可以了。這個與前面b的差別是前面提到的混合是多個動畫完全混合,這裡的疊加混合屬於區域性空間混合,不過區域性混合屬於完全混合的一種,本質上一樣的。

其他的方法:動畫映象,共享骨骼資源,ik等

d.如何應對越來越複雜的動畫邏輯?e.如果構建乙個足夠靈活的動畫系統?

動畫運算樹,附unreal動畫藍圖(本質上就是動畫運算樹)

動畫狀態機,傳統的動作管理需要處理所有動畫的銜接混合情況(任何兩個動畫都可能產生切換),而動畫狀態機可以以狀態驅動的方式管理控制角色的動作以及各種情況(單個動畫與一組混合後的動畫)的過渡銜接。附unreal狀態機藍圖

遊戲開發入門(一)遊戲開發概述

1.遊戲機發展 2.遊戲是如何開發出來的,開發流程是什麼?原始的遊戲比較粗糙,內容也很少,一般就乙個人開發,美術與策劃都由自己完成 建議看看 doom啟示錄 隨著遊戲逐漸變得複雜,需要多人去合作完成,分工也變得明顯。簡單的流程如下 2.開發遊戲需要哪些技術?3.程式設計師一般負責的內容是什麼?目前規...

遊戲開發入門(一)遊戲開發概述

1.遊戲機發展 2.遊戲是如何開發出來的,開發流程是什麼?原始的遊戲比較粗糙,內容也很少,一般就乙個人開發,美術與策劃都由自己完成 建議看看 doom啟示錄 隨著遊戲逐漸變得複雜,需要多人去合作完成,分工也變得明顯。簡單的流程如下 2.開發遊戲需要哪些技術?3.程式設計師一般負責的內容是什麼?目前規...

遊戲中的動畫系統

這樣的 很麻煩,也肯定不是乙個成熟的遊戲需要的。更簡單些,這樣 while true 這個playanimation 這樣寫 if frameindex animationframes.length 然後再說說詳細說說動畫的組成。動畫是由一楨一楨的影象組成。而每一楨的影象又是一塊一塊的小圖拼成。為什...