徐 超(河南省工業(yè)設(shè)計(jì)學(xué)?!『幽?鄭州 450000)
骨骼動(dòng)畫技術(shù)探討
徐超
(河南省工業(yè)設(shè)計(jì)學(xué)校河南 鄭州 450000)
本文從骨骼動(dòng)畫技術(shù)在我國的發(fā)展情況入手,介紹一些與骨骼動(dòng)畫相關(guān)的知識(shí),分析骨骼動(dòng)畫原理及其存在的優(yōu)點(diǎn)與缺點(diǎn),結(jié)合對(duì)骨骼動(dòng)畫的認(rèn)識(shí),淺談骨骼動(dòng)畫技術(shù)。
網(wǎng)絡(luò)模型;骨骼動(dòng)畫
骨骼動(dòng)畫(bones animation)的基本原理就是通過改變?cè)袆?dòng)畫骨骼位置以及移動(dòng)原動(dòng)畫朝向的方式生成新動(dòng)畫模型的模式。在骨骼動(dòng)畫當(dāng)中,骨骼是一切的基礎(chǔ)點(diǎn),并且該技術(shù)隨著近年來的不斷完善,已經(jīng)成為使用率最高且范圍最廣的一種動(dòng)畫技術(shù)。
隨著科學(xué)技術(shù)的不斷發(fā)展,骨骼動(dòng)畫已經(jīng)悄然成為渲染3D角色模型的關(guān)鍵技術(shù)之一,并且在實(shí)際使用中,骨骼運(yùn)動(dòng)角色造型的真實(shí)感比較強(qiáng)。骨骼動(dòng)畫對(duì)處理器性能的要求極高,磁盤空間占用量比較小,所以可以更加便捷地創(chuàng)造模型。與傳統(tǒng)的單一網(wǎng)格模型動(dòng)畫相比,骨骼動(dòng)畫更加靈活、逼真,克服了關(guān)節(jié)動(dòng)畫當(dāng)中存在的接縫問題。骨骼動(dòng)畫只需要儲(chǔ)存骨骼的變換數(shù)據(jù)即可,不必在所有幀當(dāng)中儲(chǔ)存頂點(diǎn)數(shù)據(jù),不同骨骼動(dòng)畫都可以放到一起使用,部分引擎可以實(shí)現(xiàn)單體骨骼操作,使角色與環(huán)境更好地融入到一起[1]。
雖然骨骼動(dòng)畫的優(yōu)點(diǎn)比較多,但是技術(shù)難度也相對(duì)比較高,但只要掌握了骨骼動(dòng)畫技術(shù),在創(chuàng)建個(gè)人角色動(dòng)畫時(shí),都不需要再次地模擬幾何圖形數(shù)據(jù)。骨骼動(dòng)畫的產(chǎn)生打破了傳統(tǒng)工作模式,不需要提前進(jìn)行預(yù)處理,可以在游戲運(yùn)行過程中對(duì)動(dòng)畫進(jìn)行計(jì)算,讓動(dòng)畫效果在游戲中顯得更加真實(shí)。并不是所有的引擎都支持骨骼動(dòng)畫,因?yàn)楣趋绖?dòng)動(dòng)畫必須要有大量的計(jì)算,所以給中央處理器帶來的負(fù)擔(dān)比較大,容易產(chǎn)生系統(tǒng)利用率不均衡等問題,降低骨骼動(dòng)畫繪制效率。該問題可以伴隨CPU技術(shù)的不斷發(fā)展而解決[2]。
骨骼動(dòng)畫包含了骨骼動(dòng)畫原理、骨骼動(dòng)畫創(chuàng)作、骨骼動(dòng)畫載入、骨骼動(dòng)畫實(shí)時(shí)驅(qū)動(dòng)、骨骼動(dòng)畫優(yōu)化處理以及骨骼動(dòng)畫設(shè)計(jì)實(shí)現(xiàn)等多方面內(nèi)容,本文將對(duì)設(shè)計(jì)實(shí)現(xiàn)進(jìn)行研究。
(一)頂點(diǎn)結(jié)構(gòu)體
骨骼空間頂點(diǎn)的局部坐標(biāo)數(shù)組當(dāng)中所有的記錄都應(yīng)當(dāng)記載在骨骼子空間局部坐標(biāo)位置,相對(duì)應(yīng)的骨骼空間頂點(diǎn)法線數(shù)組也應(yīng)該記錄在法線的坐標(biāo)中。保存這兩種數(shù)據(jù),可以便于后期預(yù)處理,因?yàn)樵诠趋绖?dòng)畫計(jì)算時(shí),單個(gè)骨骼的變換運(yùn)算均是由局部坐標(biāo)衍生而來的,所以可以通過預(yù)處理的方式保存這些數(shù)據(jù),減少運(yùn)算步驟[3]。將屬性相同的頂點(diǎn)作為一個(gè)子對(duì)象,再將相同材質(zhì)頂點(diǎn)放在相同的索引組當(dāng)中,對(duì)其中所有骨骼點(diǎn)進(jìn)行記錄,記錄父骨骼點(diǎn),通過數(shù)組的方式來保存骨骼層次的信息。通常情況下骨骼點(diǎn)均在256個(gè)以下,所以可以用256單字節(jié)數(shù)組來實(shí)現(xiàn)骨骼設(shè)計(jì)[4]。
(二)關(guān)鍵函數(shù)與動(dòng)畫數(shù)據(jù)載入管理
在TSkeletonMesh分類中,deform Bone是比較重要的函數(shù)之一,將其傳入到當(dāng)前骨骼信息中,更新頂點(diǎn)。動(dòng)畫數(shù)據(jù)不僅是關(guān)鍵幀當(dāng)中的數(shù)據(jù),還包含了所有幀的信息,通過自定義的方式來明確數(shù)據(jù)結(jié)構(gòu),保存所有幀當(dāng)中存在的關(guān)鍵信息。對(duì)TBone Anim Channel類型的動(dòng)畫數(shù)據(jù)進(jìn)行設(shè)計(jì),保存骨骼當(dāng)中存在的關(guān)鍵幀信息,使用關(guān)鍵幀插值的方式來實(shí)現(xiàn)計(jì)算功能??梢酝ㄟ^獲取最接近關(guān)鍵幀或者是獲取兩個(gè)最接近關(guān)鍵幀插值獲取的方式來收獲關(guān)鍵幀。對(duì)于完整的動(dòng)畫來說,可以通過設(shè)計(jì)TSkeleton Anim來管理其中存在的所有單體動(dòng)畫。該種類當(dāng)中存在的get Key Frm Bone Nearest和get Key Frm Bone Linear才是獲取關(guān)鍵幀數(shù)據(jù)的關(guān)鍵點(diǎn),通過調(diào)節(jié)所有TBone Anim Channel對(duì)象getKey Frame Nearest的方式來實(shí)現(xiàn)關(guān)鍵幀數(shù)據(jù)獲取,提升骨骼動(dòng)畫質(zhì)量[5]。
(三)驅(qū)動(dòng)實(shí)現(xiàn)
想要保證驅(qū)動(dòng)骨骼動(dòng)畫,首先要將相關(guān)結(jié)構(gòu)使用在模型數(shù)據(jù)以及動(dòng)畫數(shù)據(jù)的管理當(dāng)中。其中,_postureLinear、calu Bone Refs以及deform是最為關(guān)鍵的函數(shù),兩者的功能側(cè)重于計(jì)算在當(dāng)前發(fā)展情況下如何變換以及更新骨骼局部以及如何去改善全局變換矩陣能力,保證更新頂點(diǎn)功能的正常發(fā)揮。驅(qū)動(dòng)流程需要從多個(gè)環(huán)節(jié)進(jìn)行優(yōu)化。可以通過prevTranslate對(duì)是否要更新新平移信息進(jìn)行研究,結(jié)合ahsChanged對(duì)信息內(nèi)部產(chǎn)生的改變進(jìn)行記錄,以便于讓頂點(diǎn)可以更好地進(jìn)行簡(jiǎn)化運(yùn)算,縮短運(yùn)算環(huán)節(jié)與不必要工作時(shí)間,提升工作效率。
[1]季卓爾,張景嶠.基于可編程圖形處理器的骨骼動(dòng)畫算法及其比較[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,(21):5550-5554.
[2]董剛,趙龍,田尊華.基于智能體的群體動(dòng)畫創(chuàng)作方法的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2011,(12):143-146+150.
[3]張振華,徐波,王虓宇,周文理.骨骼動(dòng)畫在仿真中的應(yīng)用[J].現(xiàn)代計(jì)算機(jī),2013,(08):48-51.
[4]盧景峰.三維動(dòng)畫技術(shù)在二維動(dòng)畫中的應(yīng)用探討[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2014,(07):59-62.
[5]李海燕,郭俊浩.正向運(yùn)動(dòng)學(xué)和關(guān)鍵幀系統(tǒng)的骨骼動(dòng)畫引擎實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2010,(12):87-89.
徐超(1982-),從2006年9月至今在河南省工業(yè)設(shè)計(jì)學(xué)校藝術(shù)系任教。
J218.7
A
1007-0125(2015)03-0174-01