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