
松原骨骼動畫的驅(qū)動制作介紹及案例父子骨骼變換火系
第3章 角色始27 圖3.3 人體骨骼組織結(jié)構(gòu)圖矩陣,借以更新全局變換矩陣。最終,通過該結(jié)構(gòu)中的數(shù)據(jù)來更新皮 膚頂點(diǎn)信息,實(shí)現(xiàn)動畫效果。 針對骨骼動畫所涉及的每塊骨骼,需要保存其關(guān)鍵幀數(shù)據(jù),每個關(guān)鍵幀數(shù)據(jù)的內(nèi)容包括:該幀的 編號,該幀中骨骼相對于父骨骼的平移信息以及旋轉(zhuǎn)信息。由于此類信息上文中已經(jīng)做出總結(jié),這里 就不再多加討論。
動畫數(shù)據(jù)多種多樣,比如在一個典型的高爾夫游戲中,其中一個角色,可能需要他的各種動畫, 比如走動、擊球、推桿、撿球、慶祝動作等。對于個人角色扮演類的游戲應(yīng)用,需要的動作更多,如 果每個動畫對應(yīng)于一個文件,那么就需要很多個文件來保存動畫數(shù)據(jù)。對于這些數(shù)據(jù),選擇適當(dāng)?shù)臅r 機(jī)對其進(jìn)行載人是一個重要的問題。因?yàn)橐豢钣螒蚩赡苡性S多不同的角色,如果是在應(yīng)用程序啟動的 時候一次裝載所有的數(shù)據(jù),那么會造成比較慢的啟動速度,更致命的是,它們將會占用大量的內(nèi)存, 導(dǎo)致內(nèi)存開銷過大,而有些角色可能從前到后都沒有使用過,造成內(nèi)存資源的浪費(fèi)。因此,在合適的 時間內(nèi)對數(shù)據(jù)進(jìn)行載人顯得極為關(guān)鍵。
比如在游戲應(yīng)用中,一般會有人物選擇界面,可以根據(jù)用戶的 選擇動態(tài)地載入角色的全部動畫或者部分動畫。3.2.6 骨骼動畫的驅(qū)動 在應(yīng)用程序播放某一具體的動畫過程中,骨骼動畫引擎需要動態(tài)地根據(jù)指定的動畫播放速度正常 驅(qū)動動畫效果的產(chǎn)生。骨骼動畫的驅(qū)動過程就是骨骼動畫實(shí)時計(jì)算的過程。在交互式應(yīng)用中,一般是 在用戶輸入某些控制命令后,角色模型開始完成相應(yīng)動畫。這就要求應(yīng)用程序在接受命令后,需要動 態(tài)實(shí)時地完成這些工作。 當(dāng)動畫確定之后,一個具體的動畫,在某一具體的時刻,其驅(qū)動步驟分述如下。 8 喪flash動畫創(chuàng)作與后期視頻處理技術(shù)*
1)對骨骼局部變換信息進(jìn)行更新 確定動畫在該時刻的兩個插值關(guān)鍵幀,即找到該時刻之前之后的兩個關(guān)鍵幀。然后按照時間對這 兩個關(guān)鍵幀進(jìn)行插值(應(yīng)用中使用最多的是對其進(jìn)行線性插值),從而確定每一塊骨骼該時刻在父骨 骼坐標(biāo)系下的變換信息(平移和旋轉(zhuǎn)信息)。
2)對骨骼全局變換信息進(jìn)行更新 對骨架層次結(jié)構(gòu)進(jìn)行遍歷,從根骨骼開始,計(jì)算每一塊骨骼相對于身體坐標(biāo)的全局變換信息(一 般是用矩陣形式來表示),這一步驟是基于上一步驟完成的,由于第一步巾已經(jīng)得出丁每一塊骨骼的 相對變換信息,本步驟中只需從根進(jìn)行遞歸遍歷即可。
3)對網(wǎng)格頂點(diǎn)進(jìn)行更新 對于皮膚網(wǎng)格中的所有頂點(diǎn),計(jì)算其在身體坐標(biāo)系下的位置和法線信息。根據(jù)每個頂點(diǎn)所關(guān)聯(lián)的 骨骼以及對應(yīng)的權(quán)值,就可以利用每塊骨骼的全局變換信息對頂點(diǎn)進(jìn)行變換。 每根骨骼存在兩個相關(guān)的變換矩陣:局部變換矩陣和全局變換矩陣。局部變換矩陣記錄了該骨骼 在父骨骼坐標(biāo)系空間中的位置和朝向。全局變換矩陣用來決定該骨骼在整個角色空間中的位置和朝向 。在骨骼動畫文件中存儲的是骨骼的局部變換矩陣序列,骨骼的全局變換矩陣則需要通過額外的計(jì)算 來獲得。由于骨骼的運(yùn)動實(shí)現(xiàn)是通過層次結(jié)構(gòu)互相影響的,所以全局變換矩陣不能一步獲得。
下面舉例說明全局變換矩陣的生成,如圖3.4所示。首先看旋轉(zhuǎn)變換,在圖中有兩塊骨骼,左邊的 父骨骼和右邊的子骨骼,目標(biāo)是獲得兩個骨骼的全局變換矩陣來更新皮膚頂點(diǎn)。于骨骼的局部變換矩 陣保存的是它相對于父骨骼旋轉(zhuǎn)信息,但其父骨骼也有自己的變換信息,也做了旋轉(zhuǎn)。因此,子骨骼 對于整個角色的全局變換矩陣,需要將其局部變換矩陣與父骨骼的變換矩陣相乘。如果矩陣中加入了 平移變換,可以執(zhí)行同樣的過程。 從例子中可以了解到父骨骼的局部變換矩陣不僅會影響到自身,而且還會影響到它的于骨骼。而 在根骨骼節(jié)點(diǎn),它的全局變換矩陣就等于其自身的局部變換矩陣。這樣旋轉(zhuǎn)、平移變┏━━━━━━ ━━━━━━━━━━━━━━━━━━━━━┓┃ 九 ┃┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫┃廠,’V………一廠 T\r………— ┃┣━━━━━━━━━━━━━━━━━━━━━━━━ ━━━┫┃\,。1 - - - - - - - - - - - -\i.4_- - - - - -- -. ┃┣━━━━━━━━━━ ━━━━━━━━━━━━━━━━━┫┃ 兒 ┃┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫┃《八+ ┃┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃\:i ┃┗━━━━━━━━━━━━━━ ━━━━━━━━━━━━━┛圖3.,1 父子骨骼變換火系
轉(zhuǎn)載請注明:
松原flash動畫制作公司:http://www.haldonestatewines.com/city98/