三維游戲動畫系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種三維游戲動畫系統(tǒng),包括供程序開發(fā)人員調(diào)用的上層功能模塊,供美術(shù)開發(fā)人員使用的上層編輯模塊,供程序底層開發(fā)人員進行開發(fā)和維護的底層管理模塊和底層功能模塊,各個模塊間采用標準接口連接,了解每個模塊接口調(diào)用規(guī)則即可方便的制作游戲動畫。包括上層功能模塊,上層編輯模塊,底層管理模塊和底層功能模塊,功能齊全,并采用標準接口,各個模塊之間相互獨立,且采用標準接口連接,開發(fā)人員不需要了解動畫系統(tǒng)的詳細開發(fā)方式,只需了解每個模塊接口調(diào)用規(guī)則即可方便的制作游戲動畫。從而達到使用簡易的且易于擴充的目的。
【專利說明】三維游戲動畫系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及游戲開發(fā)【技術(shù)領(lǐng)域】,具體地,涉及一種三維游戲動畫系統(tǒng)。
【背景技術(shù)】
[0002]隨著第九藝術(shù)游戲產(chǎn)業(yè)的快速發(fā)展,游戲世界里所呈現(xiàn)出來的逼真環(huán)境模擬,實時交互體驗,聲光的感官刺激使人更加的身臨其境。三維世界的模擬也正向著更高的要求去發(fā)展。實時動態(tài)逼真三維環(huán)境的模擬現(xiàn)在正是市場開發(fā)的重點領(lǐng)域,游戲區(qū)別于電影的最大特征就是要求實時的交互性,所見即所得的感官體驗?;芋w驗成為了游戲最吸引人的要素。其中游戲動畫系統(tǒng)是游戲交互式體驗的重要組成部分,也是游戲開發(fā)與真實模擬的核心問題之一?,F(xiàn)在游戲動畫發(fā)展的趨勢正向著擬真,交互,電影化的表現(xiàn)形式快速發(fā)展。目前游戲動畫需要支持大規(guī)模場景成百上千動畫實體的實時模擬,計算與交互,而且游戲動畫需要實時模擬真實的物理計算,隨之而來伴隨的是巨大的動畫數(shù)據(jù)計算量,對計算機的性能要求也會隨之快速上升,而且基于游戲的實時交互性,要實現(xiàn)高效率的實時模擬,優(yōu)化性能會變得十分困難。目前普遍實現(xiàn)的游戲動畫系統(tǒng)都十分簡陋,功能相對很不完善,效率和承載量無法滿足大規(guī)模場景的實時表現(xiàn)需求,雖然有一些比較成熟的商業(yè)動畫系統(tǒng)可以使用,但是如果采用這些系統(tǒng)開發(fā)游戲并進行商業(yè)運營時,需要交納很高的授權(quán)費,而且難于修改,很多情況下不能滿足游戲開發(fā)的需求。很難找到適用于游戲開發(fā),同時滿足效率,承載量,效果,又能盡可能節(jié)約成本的優(yōu)秀三維游戲動畫系統(tǒng)。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于,針對上述問題,提出一種三維游戲動畫系統(tǒng),克服游戲動畫在效果、效率和承載量之間的兼顧性,提供一套完善的,系統(tǒng)的動畫系統(tǒng),以實現(xiàn)使用簡易且易于擴充的優(yōu)點。
[0004]為實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
一種三維游戲動畫系統(tǒng),包括供程序開發(fā)人員調(diào)用的上層功能模塊,供美術(shù)開發(fā)人員使用的上層編輯模塊,供程序底層開發(fā)人員進行開發(fā)和維護的底層管理模塊和底層功能模塊,各個模塊間采用標準接口連接,了解每個模塊接口調(diào)用規(guī)則即可方便的制作游戲動畫。
[0005]根據(jù)本發(fā)明的優(yōu)選實施例,各個模塊在渲染方面通過暴露給外部的虛函數(shù)可以重載函數(shù)達到自定義化的實現(xiàn)功能。
[0006]根據(jù)本發(fā)明的優(yōu)選實施例,所述上層功能模塊包括骨骼動畫、面部表情動畫、換裝系統(tǒng)、反向動力學(xué)、軟體動畫、控制器動畫和綁定動畫;
所述骨骼動畫:從動作捕捉設(shè)備獲取基本數(shù)據(jù),然后通過動作處理插件修改為動畫系統(tǒng)所需的關(guān)鍵幀數(shù)據(jù),計算得到骨骼列表的世界矩陣傳到GPU,GPU根據(jù)每個頂點受那些骨骼索引以及權(quán)重來計算每個頂點的新位置,調(diào)整的最后結(jié)果是與實現(xiàn)設(shè)定場景中位置相符合;
所述面部表情動畫:通過面部表情捕捉或手動制作動畫制作面部表情動畫; 所述換裝系統(tǒng):通過制作不同的模型替換各種原有模型,并把數(shù)據(jù)統(tǒng)一化,按照數(shù)據(jù)排列規(guī)則隨意組織排列和替換模型,從而實現(xiàn)多樣的組合變化;
所述反向動力學(xué):基于父子關(guān)系,權(quán)重比,運用雅克比矩陣推算動畫結(jié)果,通過重要的關(guān)節(jié)部位進行定位,從而確立姿勢,在骨骼鏈的末端以此反向往上推算,在約束參數(shù)的綜合控制下得到合理的結(jié)果;
所述軟體動畫:對于根據(jù)作用力的不同會產(chǎn)生一定的動態(tài)形變的軟性物體,建立父子鏈接關(guān)系,通過權(quán)重和約束變量去控制動畫范圍,通過物理碰撞,動力學(xué)公式計算整個動畫的結(jié)果;通過簡易碰撞體和多線程計算來整個加速過程;
所述控制器動畫:通過目標點定位,讓動畫跟隨目標點產(chǎn)生動態(tài)的反應(yīng)與變化,通過約束參數(shù),雅克比矩陣和父子鏈接關(guān)系達到在需要的范圍內(nèi)動畫跟蹤定位;
所述綁定動畫:允許把其他物體動畫綁定點,掛節(jié)點綁定到動畫中,同時通過綁定點的位置運算實現(xiàn)綁定動畫的無縫連接。
[0007]根據(jù)本發(fā)明的優(yōu)選實施例,所述底層管理模塊包括動畫管理器,所述動畫管理器對動畫進行內(nèi)存共用,多線程計算,動畫調(diào)度,統(tǒng)一計數(shù)管理,是動畫系統(tǒng)的控制中心。
[0008]根據(jù)本發(fā)明的優(yōu)選實施例,所述底層功能模塊包括動畫序列、動畫樹、動畫過渡、多重動畫混合、動畫壓縮、碰撞系統(tǒng)、導(dǎo)航系統(tǒng)和LOD (Levels Of Detail)系統(tǒng);
所述動畫序列:改變每幀動畫的屬性,從而控制動畫在不同速率進行播放;
所述動畫樹:通過邏輯編碼將動畫按照邏輯需求進行播放,通過可視化的用戶界面用連接線和條件判斷的方式達成邏輯反饋,形成完整的動畫連接關(guān)系;
所述動畫過渡:將2個動畫以一種平滑的方式進行轉(zhuǎn)換,通過線性插值或貝塞爾插值把權(quán)重平均化;
所述多重動畫混合:按美術(shù)的需求進行部位分解,每個部位可以播放各自的動畫;所述動畫壓縮:在效果沒有損失的情況下把動畫數(shù)據(jù)由一個矩陣轉(zhuǎn)換為雙重四元數(shù),同時將關(guān)鍵幀數(shù)據(jù)通過曲線平滑使數(shù)據(jù)量進一步減少;
所述碰撞系統(tǒng):使用物理引擎開發(fā),能夠支持射線檢測、幾何體檢測以及動力學(xué)模擬,將動畫模型數(shù)據(jù)進行簡化,得到一個近似距離,在檢測完成后根據(jù)距離進行向量偏移得到最后結(jié)果,通過互相碰撞和動力學(xué)模擬,計算出每個動畫片段的沖量、速度和動能,從而計算出最后的位置和形體結(jié)構(gòu);
所述導(dǎo)航系統(tǒng):起到了動態(tài)偵測路徑的作用,動畫制作過程中設(shè)定導(dǎo)航基礎(chǔ)網(wǎng)格,通過權(quán)重和偏移信息實時計算出導(dǎo)航的位置和作用范圍;
所述LOD系統(tǒng):主要分為動畫LOD與骨骼L0D,通過距離的遠近判斷出動畫的重要性和先后關(guān)系。
[0009]根據(jù)本發(fā)明的優(yōu)選實施例,所述上層編輯模塊包括動畫編輯器,所述動畫編輯器,提供制作人員所見即所得的編輯操作功能,通過交互式的人機界面進行創(chuàng)作,能夠支持取消操作和操作記錄,通過人性化的面板制定出通俗易懂的編輯流程。
[0010]本發(fā)明的技術(shù)方案具有以下有益效果:
本發(fā)明的技術(shù)方案,包括上層功能模塊,上層編輯模塊,底層管理模塊和底層功能模塊,功能齊全,并采用標準接口,各個模塊之間相互獨立,且采用標準接口連接,開發(fā)人員不需要了解動畫系統(tǒng)的詳細開發(fā)方式,只需了解每個模塊接口調(diào)用規(guī)則即可方便的制作游戲動畫。從而達到使用簡易的且易于擴充的目的。
[0011]下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
【專利附圖】
【附圖說明】
[0012]圖1為本發(fā)明實施例所述的動畫系統(tǒng)構(gòu)造示意圖;
圖2為本發(fā)明實施例所述的上層功能子模塊的構(gòu)造示意圖;
圖3為本發(fā)明實施例所述的底層功能子模塊的構(gòu)造示意圖圖4為本發(fā)明實施例所述的動畫系統(tǒng)架構(gòu)示意框圖;
圖5為本發(fā)明實施例所述的動畫系統(tǒng)程序類架構(gòu)設(shè)計圖;
圖6為本發(fā)明實施例所述的骨骼動畫系統(tǒng)的接口調(diào)用流程圖;
圖7為本發(fā)明實施例所述的動畫樹接口調(diào)用流程圖;
圖8為本發(fā)明實施例所述的動畫混合接口調(diào)用流程圖;
圖9為本發(fā)明實施例所述的LOD系統(tǒng)接口調(diào)用流程圖;
圖10為本發(fā)明實施例所述的碰撞系統(tǒng)接口調(diào)用流程圖;
圖11為本發(fā)明實施例所述的換裝系統(tǒng)調(diào)用流程圖;
圖12為本發(fā)明實施例所述的反向動力學(xué)調(diào)用接口流程圖;
圖13為本發(fā)明實施例所述的骨骼動畫系統(tǒng)的接口調(diào)用流程圖。
【具體實施方式】
[0013]以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應(yīng)當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0014]如圖1所示,一種三維游戲動畫系統(tǒng),包括供程序開發(fā)人員調(diào)用的上層功能模塊,供美術(shù)開發(fā)人員使用的上層編輯模塊,供程序底層開發(fā)人員進行開發(fā)和維護的底層管理模塊和底層功能模塊,各個模塊間采用標準接口連接,了解每個模塊接口調(diào)用規(guī)則即可方便的制作游戲動畫。
[0015]且各個模塊在渲染方面通過暴露給外部的虛函數(shù)可以重載函數(shù)達到自定義化的實現(xiàn)功能。
[0016]如圖2所示,上層功能模塊包括骨骼動畫、面部表情動畫、換裝系統(tǒng)、反向動力學(xué)、軟體動畫、控制器動畫和綁定動畫;
骨骼動畫:從動作捕捉設(shè)備獲取基本數(shù)據(jù),然后通過動作處理插件修改為動畫系統(tǒng)所需的關(guān)鍵幀數(shù)據(jù),計算得到骨骼列表的世界矩陣傳到GPU,GPU根據(jù)每個頂點受那些骨骼索引以及權(quán)重來計算每個頂點的新位置,調(diào)整的最后結(jié)果是與實現(xiàn)設(shè)定場景中位置相符合;面部表情動畫:通過面部表情捕捉或手動制作動畫制作面部表情動畫;
換裝系統(tǒng):通過制作不同的模型替換各種原有模型,并把數(shù)據(jù)統(tǒng)一化,按照數(shù)據(jù)排列規(guī)則隨意組織排列和替換模型,從而實現(xiàn)多樣的組合變化;
反向動力學(xué):基于父子關(guān)系,權(quán)重比,運用雅克比矩陣推算動畫結(jié)果,通過重要的關(guān)節(jié)部位進行定位,從而確立姿勢,在骨骼鏈的末端以此反向往上推算,在約束參數(shù)的綜合控制下得到合理的結(jié)果;
軟體動畫:對于根據(jù)作用力的不同會產(chǎn)生一定的動態(tài)形變的軟性物體,建立父子鏈接關(guān)系,通過權(quán)重和約束變量去控制動畫范圍,通過物理碰撞,動力學(xué)公式計算整個動畫的結(jié)果;通過簡易碰撞體和多線程計算來整個加速過程;
控制器動畫:通過目標點定位,讓動畫跟隨目標點產(chǎn)生動態(tài)的反應(yīng)與變化,通過約束參數(shù),雅克比矩陣和父子鏈接關(guān)系達到在需要的范圍內(nèi)動畫跟蹤定位;
綁定動畫:允許把其他物體動畫綁定點,掛節(jié)點綁定到動畫中,同時通過綁定點的位置運算實現(xiàn)綁定動畫的無縫連接。
[0017]底層管理模塊包括動畫管理器,所述動畫管理器對動畫進行內(nèi)存共用,多線程計算,動畫調(diào)度,統(tǒng)一計數(shù)管理,是動畫系統(tǒng)的控制中心。
[0018]如圖3所示,底層功能模塊包括動畫序列、動畫樹、動畫過渡、多重動畫混合、動畫壓縮、碰撞系統(tǒng)、導(dǎo)航系統(tǒng)和LOD系統(tǒng);
動畫序列:改變每幀動畫的屬性,從而控制動畫在不同速率進行播放;
動畫樹:通過邏輯編碼將動畫按照邏輯需求進行播放,通過可視化的用戶界面用連接線和條件判斷的方式達成邏輯反饋,形成完整的動畫連接關(guān)系;
動畫過渡:將2個動畫以一種平滑的方式進行轉(zhuǎn)換,通過線性插值或貝塞爾插值把權(quán)重平均化;
多重動畫混合:按美術(shù)的需求進行部位分解,每個部位可以播放各自的動畫;
動畫壓縮:在效果沒有損失的情況下把動畫數(shù)據(jù)由一個矩陣轉(zhuǎn)換為雙重四元數(shù),同時將關(guān)鍵幀數(shù)據(jù)通過曲線平滑使數(shù)據(jù)量進一步減少;
碰撞系統(tǒng):使用物理引擎開發(fā),能夠支持射線檢測、幾何體檢測以及動力學(xué)模擬,將動畫模型數(shù)據(jù)進行簡化,得到一個近似距離,在檢測完成后根據(jù)距離進行向量偏移得到最后結(jié)果,通過互相碰撞和動力學(xué)模擬,計算出每個動畫片段的沖量、速度和動能,從而計算出最后的位置和形體結(jié)構(gòu);
導(dǎo)航系統(tǒng):起到了動態(tài)偵測路徑的作用,動畫制作過程中設(shè)定導(dǎo)航基礎(chǔ)網(wǎng)格,通過權(quán)重和偏移信息實時計算出導(dǎo)航的位置和作用范圍;
LOD系統(tǒng):主要分為動畫LOD與骨骼L0D,通過距離的遠近判斷出動畫的重要性和先后關(guān)系。
[0019]上層編輯模塊包括動畫編輯器,所述動畫編輯器,提供制作人員所見即所得的編輯操作功能,通過交互式的人機界面進行創(chuàng)作,能夠支持取消操作和操作記錄,通過人性化的面板制定出通俗易懂的編輯流程。
[0020]本發(fā)明技術(shù)方案提供的動畫系統(tǒng)適用于電腦游戲,主機游戲,手機游戲的開發(fā),能快速集成,使用方便,可擴展性強,可以大大減少游戲的開發(fā)成本和重復(fù)勞動的時間。
[0021]本發(fā)明技術(shù)方案提供的動畫系統(tǒng)是針對游戲定制的,能同時支持成百上千的動畫同時運算,并能保持較高的幀率,通過資源管理能大大減少內(nèi)存的占用。
[0022]本發(fā)明技術(shù)方案作為三維游戲引擎的重要模塊能方便的適用于各個引擎,從而大大減小開發(fā)難度,降低行業(yè)的門檻,促進行業(yè)的高速發(fā)展。
[0023]游戲動畫系統(tǒng)作為三維引擎的獨立模塊進行開發(fā),是作為一個插件式的功能進行的設(shè)計與集成。系統(tǒng)不依賴于外部的接口與功能,能方便快速的集成到其他引擎或軟件中。本發(fā)明技術(shù)方案的功能實現(xiàn)分為4大塊,分別是上層功能模塊(骨骼動畫,面部表情動畫,換裝系統(tǒng),反向動力學(xué),軟體動畫,控制器動畫,綁定動畫),底層管理模塊(動畫管理器),底層功能模塊(動畫序列,動畫樹,動畫過渡,多重動畫混合,動畫壓縮,碰撞系統(tǒng),導(dǎo)航系統(tǒng),LOD系統(tǒng)),上層編輯模塊(動畫編輯器),上層功能模塊主要提供給程序開發(fā)人員調(diào)用,上層編輯模塊主要提供給美術(shù)開發(fā)人員使用,底層管理模塊和底層功能模塊主要由資深的程序底層開發(fā)人員進行開發(fā)和維護。本發(fā)明的整套開發(fā)流程如下:首先程序底層開發(fā)人員對動畫系統(tǒng)的功能進行匯總分析,然后開始程序框架的設(shè)計和搭建,包括程序中的程序類的設(shè)計,分工,程序語言中設(shè)計模式的采用。本發(fā)明程序類的設(shè)計主要包含基礎(chǔ)動畫網(wǎng)格類,動畫節(jié)點類,動畫節(jié)點管理類,動畫文件管理類,動畫實體類,換裝文件節(jié)點類,動畫關(guān)鍵幀類,動畫文件解析類,其中基礎(chǔ)動畫網(wǎng)格類會派生出骨骼類,蒙皮網(wǎng)格類,剛性網(wǎng)格類,蒙皮網(wǎng)格類還會派生出基于混合函數(shù)的蒙皮網(wǎng)格類,基于著色器加速的蒙皮網(wǎng)格類,基于CPU運算的蒙皮網(wǎng)格類,以上所述的派生關(guān)系都是由上到下的繼承關(guān)系。
[0024]骨骼動畫:骨骼動畫系統(tǒng)支持從三維軟件中導(dǎo)出的動畫數(shù)據(jù),包括基于歐拉角和四元數(shù)的平滑數(shù)據(jù),支持通過動作捕捉處理的數(shù)據(jù)。首先從動作捕捉設(shè)備獲取基本數(shù)據(jù),然后通過3dmax軟件中的動作處理插件修改為動畫系統(tǒng)所需的關(guān)鍵幀數(shù)據(jù),比如:每個骨骼的在關(guān)鍵幀時刻的平移,旋轉(zhuǎn),縮放數(shù)值。最后計算得到骨骼列表的世界矩陣傳到GPU,GPU根據(jù)每個頂點受那些骨骼索引以及權(quán)重來計算每個頂點的新位置,調(diào)整的最后結(jié)果是與實現(xiàn)設(shè)定場景中位置相符合。
[0025]動畫序列:動畫序列就是每幀改變位置,旋轉(zhuǎn),縮放,顏色屬性值或者其他的材質(zhì)屬性,用于控制動畫在不同速率進行播放;它是按照美術(shù)人員在3Dmax中事先制作的模型的關(guān)鍵幀順序來播放的,實現(xiàn)創(chuàng)建在位置上平移,縮放和旋轉(zhuǎn)上進行調(diào)整最終成為游戲中模擬3dmax的播放效果。
[0026]動畫樹:通過邏輯編碼將動畫按照邏輯需求進行播放,也就是說動畫播放以及放的速率,播放的動作名字等播放參數(shù)的設(shè)置,是上層根據(jù)需要,編寫調(diào)用播放接口完成邏輯需求。通過可視化的用戶界面用連接線和條件判斷的方式達成邏輯反饋,形成完整的動畫連接關(guān)系。
[0027]動畫過渡:動畫過渡將2個動畫以一種平滑的方式進行轉(zhuǎn)換,通過線性插值或貝塞爾插值把權(quán)重平均化,在顯卡中將骨骼進行混合計算從而滿足高效率的需求。為了保證在插值過程中避免位置,縮放和旋轉(zhuǎn)分量產(chǎn)生非等比的變化,在其中需要將變換矩陣進行拆解計算最后再合并為結(jié)果矩陣。
[0028]多重動畫混合:多重動畫混合可以按美術(shù)的需求進行部位分解,每個部位可以播放各自的動畫,動畫系統(tǒng)會自動進行融合,骨骼會根據(jù)配置表找到所屬的部位,繼而進行相應(yīng)的動作計算和混合,每個部位的混合權(quán)重可以單獨控制,以達到最佳的表現(xiàn)效果。很多復(fù)雜動畫的實現(xiàn)都需要使用到多重動畫混合技術(shù),可以大大減少美術(shù)的工作量,而且使用方便直觀,調(diào)整自然快捷,所見即所得,使開發(fā)效率明顯提高。
[0029]面部表情動畫:通過面部表情捕捉或手動制作動畫制作面部表情動畫,最后通過調(diào)整修改交付給動畫系統(tǒng)進行處理,可以根據(jù)面部的肌肉表現(xiàn)出明顯的變化。喜怒哀樂之間的變化可以平滑實現(xiàn)融合和過渡。對話時所用到的口型可以根據(jù)字母的發(fā)音進行制作和融合,最后由動畫系統(tǒng)接管控制。
[0030]換裝系統(tǒng):通過制作不同的模型替換各種原有模型,動畫系統(tǒng)把數(shù)據(jù)統(tǒng)一化,按照數(shù)據(jù)排列規(guī)則可以隨意組織排列和替換模型,從而實現(xiàn)多樣的組合變化,大大減少美術(shù)的工作量,提高工作效率。內(nèi)存占用和消耗也能減少很多。換裝系統(tǒng)的數(shù)據(jù)具有較大的靈活性,沒有關(guān)節(jié)和部位的限制,美術(shù)在制作時控制好權(quán)重和骨骼的影響,標準動作統(tǒng)一即可以實現(xiàn)。
[0031]反向動力學(xué):基于父子關(guān)系,權(quán)重比,運用雅克比矩陣推算動畫結(jié)果,通過重要的關(guān)節(jié)部位進行定位,從而確立姿勢,在骨骼鏈的末端以此反向往上推算,在約束參數(shù)的綜合控制下得到合理的結(jié)果,這種動畫可以運用在不平坦的地面,斜坡,以及攀爬的自動定位,而且該領(lǐng)域很難有其他有效的動畫模擬方式去彌補,所以反向動力學(xué)是動畫系統(tǒng)中較難實現(xiàn)但擬真度很強的方式。
[0032]軟體動畫:像輪胎,海綿等軟性物體,根據(jù)作用力的不同會產(chǎn)生一定的動態(tài)形變,這種形變動畫和形式一般很難用固定方式去制作,必須借助于物理計算去模擬,包括人物死亡后的癱倒動畫以及失去知覺后的自然姿勢等方面的模擬。采用的方法主要是建立父子鏈接關(guān)系,通過權(quán)重和約束變量去控制動畫范圍,通過物理碰撞,動力學(xué)公式去計算整個動畫的結(jié)果。通過簡易碰撞體和多線程來計算整個加速過程。
[0033]控制器動畫:通過目標點定位,讓動畫跟隨目標點產(chǎn)生動態(tài)的反應(yīng)與變化,通過約束參數(shù),雅克比矩陣和父子鏈接關(guān)系達到在需要的范圍內(nèi)動畫跟蹤定位,比如說模擬人眼的眼光,可以盯著一個運動的動態(tài)物體看,隨之產(chǎn)生的反應(yīng)包括轉(zhuǎn)頭,彎腰,轉(zhuǎn)身,通過控制器動畫可以達到動態(tài)的表現(xiàn)動畫需求。
[0034]綁定動畫:綁定動畫允許把其他物體動畫綁定點,掛節(jié)點綁定到動畫中,比如說人物手上可以拿刀拿槍,美術(shù)不需要制作多套不同的動畫去匹配,只需要把刀,槍等物體通過綁定點綁定到相應(yīng)位置就可以了,同時通過綁定點的位置運算可以實現(xiàn)綁定動畫的無縫連接。
[0035]動畫壓縮:伴隨著大量的復(fù)雜動畫的實現(xiàn)與添加,使之而來的是巨量的數(shù)據(jù),如果沒有對數(shù)據(jù)進行壓縮和處理,那么對系統(tǒng)的承載壓力將是一個巨大的考驗,針對這種情況,將數(shù)據(jù)結(jié)構(gòu)進行梳理,在效果沒有損失的情況下把動畫數(shù)據(jù)由一個矩陣轉(zhuǎn)換為雙重四元數(shù),在動畫數(shù)據(jù)上的壓縮達到了一半,同時將關(guān)鍵幀數(shù)據(jù)通過曲線平滑使數(shù)據(jù)量進一步減少,最后通過32位數(shù)據(jù)以2個16位數(shù)據(jù)保存的方式使最終的數(shù)據(jù)量小了 80%。
[0036]碰撞系統(tǒng):碰撞系統(tǒng)使用了物理引擎開發(fā),能夠支持射線檢測,幾何體檢測,動力學(xué)模擬。在碰撞系統(tǒng)中將動畫模型數(shù)據(jù)進行簡化,得到一個近似的距離,在檢測完成后根據(jù)距離進行向量偏移得到最后的結(jié)果,這種方法比普通的遍歷運算快10倍以上,通過互相碰撞和動力學(xué)模擬,能構(gòu)計算出每個動畫片段的沖量,速度,動能,再計算出最后的位置和形體結(jié)構(gòu)。碰撞系統(tǒng)結(jié)合了諸多高級算法比如GJK算法來加速計算過程。
[0037]導(dǎo)航系統(tǒng):動畫系統(tǒng)中導(dǎo)航起到了動態(tài)偵測路徑的作用,比如一座吊橋動畫在動畫過程中導(dǎo)航也是在不斷變化的,為了動態(tài)適應(yīng)路徑偵測,動畫系統(tǒng)中需要實現(xiàn)動態(tài)的導(dǎo)航系統(tǒng)以滿足游戲開發(fā)的需求。在動畫制作過程中設(shè)定導(dǎo)航基礎(chǔ)網(wǎng)格,通過權(quán)重和偏移信息實時計算出導(dǎo)航的位置和作用范圍。
[0038]LOD系統(tǒng):需要支持成百上千的動畫實時在計算機中表現(xiàn)和交互,LOD系統(tǒng)是必不可少的優(yōu)化方式。主要分為動畫LOD與骨骼L0D。通過距離的遠近判斷出動畫的重要性和先后關(guān)系。動畫LOD在遠距離會簡化動畫運算的機制,從而只計算出粗略的動畫效果,通過減少浮點精度,減少權(quán)重循環(huán)次數(shù)來優(yōu)化效率。骨骼LOD是通過減少骨骼的方式來減少計算量,主要方法是簡化父子關(guān)系,根據(jù)父子關(guān)系的重要層級來推算需要去除的骨骼,距離越遠去除的骨骼就越多,效率就越高。
[0039]動畫管理器:會對動畫進行內(nèi)存共用,多線程計算,動畫調(diào)度,統(tǒng)一計數(shù)管理。是動畫系統(tǒng)的控制中心。采用單件架構(gòu),核心數(shù)據(jù)的調(diào)用與訪問通過動畫管理器完成。
[0040]動畫實體:動畫實體是動畫對象呈現(xiàn)的具體方式,也是暴露給上層的調(diào)用。包含各個動畫單體的具體信息,通過動畫實體與其他模塊進行數(shù)據(jù)交互和共享。
[0041]動畫編輯器:動畫編輯器提供制作人員所見即所得的編輯操作功能,通過交互式的人機界面進行創(chuàng)作,能夠支持取消操作和操作記錄,通過人性化的面板制定出通俗易懂的編輯流程。動畫編輯器能大大減少項目開發(fā)的工作量,同時能合理化分配任務(wù),使制作過程變得順暢。對提高工作效能產(chǎn)生了極大的幫助。編輯器支持在線和離線操作,對保證工作進度,協(xié)同開發(fā)提供了良好的平臺,通過將數(shù)據(jù)記錄在服務(wù)器,同步客戶端數(shù)據(jù)的方式來實現(xiàn)異步操作和數(shù)據(jù)刷新共享。
[0042]三維游戲動畫系統(tǒng)中的各個功能模塊,如骨骼動畫,面部表情動畫,換裝系統(tǒng),反向動力學(xué),軟體動畫,控制器動畫,綁定動畫,它們作為直接功能以接口的方式提供給用戶使用,動畫管理器主要負責(zé)對動畫系統(tǒng)的數(shù)據(jù)進行統(tǒng)一管理,它作為底層功能對動畫系統(tǒng)提供支持,用戶無法直接通過接口對底層數(shù)據(jù)進行操作和干預(yù)。動畫系統(tǒng)在實現(xiàn)的過程中需要多種技術(shù)模塊作為底層功能進行支持,沒有這些功能無法實現(xiàn)上層的功能,如動畫序列,動畫樹,動畫過渡,多重動畫混合,動畫壓縮,碰撞系統(tǒng),導(dǎo)航系統(tǒng),LOD系統(tǒng)。動畫編輯器作為可視化工具提供給開發(fā)人員使用,是屬于最高層的開發(fā)。
[0043]動畫管理系統(tǒng)包含多個動畫實體和動畫編輯器;動畫系統(tǒng)的子模塊組合成完整的動畫系統(tǒng)。上層開發(fā)人員不需要了解動畫系統(tǒng)的詳細開發(fā)方式,只需了解每個模塊接口調(diào)用規(guī)則即可方便的制作游戲動畫。這對開發(fā)人員的使用提供了極大的便利。在渲染方面通過暴露給外部的虛函數(shù)可以重載函數(shù)達到自定義化的實現(xiàn)功能,動畫管理系統(tǒng)負責(zé)動畫實體,動畫數(shù)據(jù),動畫文件的管理,通過動畫管理系統(tǒng)把動畫實體交給更高層的場景管理系統(tǒng)進行管理,啟到系統(tǒng)管理的目的。動畫管理模塊會對動畫系統(tǒng)進行內(nèi)存管理,包括動畫數(shù)據(jù),模型數(shù)據(jù),骨骼數(shù)據(jù),權(quán)重數(shù)據(jù),頂點數(shù)據(jù),導(dǎo)航數(shù)據(jù),碰撞數(shù)據(jù),控制器數(shù)據(jù),物理數(shù)據(jù),捕捉數(shù)據(jù),綁定數(shù)據(jù)。這些數(shù)據(jù)會通過單件管理的方式進行全局管理。
[0044]其中,綁定動畫:通過讓某個實體(可以是靜態(tài)模型,半透明物體,特效或者其他的骨骼模型,任意的實體)綁定到骨骼上,從而當骨骼運動的時候,骨骼會帶動實體跟著運動,達到幀幀跟隨骨骼運動,然后把這些具體實現(xiàn)的步驟封裝提供給外部模塊進行調(diào)用。
[0045]動畫壓縮:關(guān)鍵幀避免每幀需要保存幀數(shù)據(jù),雙向四元素減少從CPU_>GPU的數(shù)據(jù)量通過一個四元數(shù)float4表示旋轉(zhuǎn)四元數(shù),另一個四元數(shù)表示平移和縮放來減少數(shù)據(jù)量傳遞到GPU。然后把這些具體實現(xiàn)的步驟封裝提供給外部模塊進行調(diào)用。
[0046]動畫序列:動畫數(shù)據(jù)是由一組序列的幀數(shù)據(jù)組成的并放在時間軸上進行播放,隨著時間的推進,產(chǎn)生各個幀序列的數(shù)據(jù)。然后把這些具體實現(xiàn)的步驟封裝提供給外部模塊進行調(diào)用。
[0047]控制器動畫:通過美術(shù)人員設(shè)置關(guān)鍵幀數(shù)值,而程序線性插值產(chǎn)生幀數(shù)據(jù)或者設(shè)置關(guān)鍵幀的UV數(shù)值,然后產(chǎn)生UV動畫或者設(shè)置關(guān)鍵幀的材質(zhì)參數(shù),從而產(chǎn)生材質(zhì)動畫。然后這些具體實現(xiàn)的步驟封裝提供給外部模塊進行調(diào)用。
[0048]下面對程序各個類的功能和關(guān)系進行分析和闡述:
如圖4至圖13所示,基礎(chǔ)動畫網(wǎng)格類是最基礎(chǔ)的網(wǎng)格類,實際上它是一個虛基類,主要提供大量接口給派生類重寫,一個動畫節(jié)點類包含多個基礎(chǔ)動畫網(wǎng)格類的指針,基礎(chǔ)動畫網(wǎng)格類根據(jù)不同的派生對象實現(xiàn)相關(guān)功能?;A(chǔ)動畫網(wǎng)格類包含對應(yīng)網(wǎng)格的網(wǎng)格數(shù)據(jù),渲染數(shù)據(jù),碰撞數(shù)據(jù),材質(zhì)數(shù)據(jù),LOD數(shù)據(jù),導(dǎo)航數(shù)據(jù)。
[0049]骨骼類是特殊的動畫網(wǎng)格類,它不包含實質(zhì)性的渲染數(shù)據(jù),它包含了父子關(guān)系數(shù)據(jù),動畫數(shù)據(jù)指針,動畫計算方式接口,骨骼ID號。
[0050]蒙皮網(wǎng)格類是動畫網(wǎng)格的具體實現(xiàn),它包含網(wǎng)格蒙皮數(shù)據(jù),權(quán)重數(shù)據(jù),骨骼索引數(shù)據(jù),通過骨骼類提供的矩陣調(diào)色板蒙皮進行蒙皮計算。
[0051]剛性網(wǎng)格類和蒙皮網(wǎng)格類的區(qū)別是剛性網(wǎng)格類不會有蒙皮計算,適用于不會有形變的剛性物體的運動,所以它不需要蒙皮數(shù)據(jù)。
[0052]由蒙皮網(wǎng)格類派生出來的基于混合函數(shù)的蒙皮網(wǎng)格類,基于著色器加速的蒙皮網(wǎng)格類和基于CPU運算的蒙皮網(wǎng)格類區(qū)別在于,基于混合函數(shù)的蒙皮網(wǎng)格類是通過外部的顯卡驅(qū)動渲染接口層提供的接口進行運算,具有一定的局限性,基于著色器加速的蒙皮網(wǎng)格類是通過著色器加速運算,基于顯卡的多流進行多重并行運算,是使用最普遍的類,效率最高,但是對骨骼數(shù)量有一定的限制。基于CPU運算的蒙皮網(wǎng)格類是完全基于CPU運算的網(wǎng)格,它的效率最低,但沒有骨骼限制。動畫系統(tǒng)會根據(jù)計算機配置自動采用最佳方案。
[0053]動畫節(jié)點類可以包含多個基礎(chǔ)動畫網(wǎng)格類,動畫節(jié)點類對一組網(wǎng)格進行統(tǒng)一管理,包括渲染,骨骼統(tǒng)一計算數(shù)據(jù)處理,動畫文件的保存讀取操作。上層功能模塊基本都是在這個類里面實現(xiàn),是一組功能集的實現(xiàn)。
[0054]換裝文件節(jié)點類是一種特殊的動畫節(jié)點,當動畫需要換裝時需要換裝文件節(jié)點類對換裝部位進行網(wǎng)格的替換,狀態(tài)設(shè)置,同時對換裝的引用計數(shù)進行控制。動畫節(jié)點的數(shù)據(jù)在這里會進行共享,以便計算時需要。
[0055]動畫節(jié)點管理類屬于底層管理模塊,對大量不同的動畫節(jié)點進行管理,包括更新調(diào)用,數(shù)據(jù)同步,動畫節(jié)點管理類是一個單件類,通過容器保存所有動畫節(jié)點的指針,所以在程序中可以通過公共接口進行操作。
[0056]動畫文件管理類是對動畫節(jié)點管理類的一個補充,主要負責(zé)統(tǒng)計和調(diào)用管理,對文件的批量管理。
[0057]動畫實體類是上層功能模塊的實現(xiàn),上層程序開發(fā)人員通過此類的接口進行數(shù)據(jù)的訪問,調(diào)用和處理操作。上層開發(fā)人員只和此類打交道,避免了無用的信息去干擾開發(fā)。動畫實體類最終會添加到場景管理器中交給引擎托管,整套程序流程也是到此結(jié)束。
[0058]底層功能模塊都是在動畫節(jié)點類中實現(xiàn),其中動畫壓縮采用的手段包括雙重四元數(shù)和字節(jié)數(shù)據(jù)合并。以前保存矩陣需要16個浮點數(shù)即64個字節(jié),采用雙重四元數(shù)的話可以只需要8個浮點數(shù)即32個字節(jié),數(shù)據(jù)量減少百分之五十,具體方式為一般的矩陣保存位置,旋轉(zhuǎn),縮放信息,需要16個浮點,其中4行每一行的第4位浮點固定為0,0,0,1,這四個浮點是常量,所以去掉,也就是把矩陣進行轉(zhuǎn)置,可以壓縮成4乘3的矩陣,節(jié)約了三分之一,雙重四元數(shù)把位置旋轉(zhuǎn)縮放數(shù)據(jù)以四元數(shù)的方式表達,而不是以傳統(tǒng)的歐拉角方式表達,進而把縮放變量以四元數(shù)方式再乘以位置與旋轉(zhuǎn)的四元數(shù)上得到2個四元數(shù)。2個四元數(shù)就可以保存信息。字節(jié)數(shù)據(jù)合并也就是把32位的浮點數(shù)以2個16位浮點進行壓縮,這樣的話I個32位浮點可以保存2個數(shù)據(jù),在數(shù)據(jù)量上再減少了一半。
[0059]動作過渡采用的是貝塞爾插值,比線性插值得到的結(jié)果更為平滑,而且通過貝塞爾差值的動畫實際上需要保存的關(guān)鍵幀數(shù)據(jù)可以進一步減少,不需要保存太多的幀數(shù)據(jù)從而使內(nèi)存和磁盤空間得到一定的減少。
[0060]多重動畫混合先把骨骼按部位進行劃分,保存在一個配置表中,然后根據(jù)部位進行動畫設(shè)置,每個部位可以播放各自所需要的動畫,在進行動畫運算時首先判斷骨骼屬于哪個部位,然后根據(jù)部位找到對應(yīng)播放的動畫,再根據(jù)該動畫數(shù)據(jù)進行骨骼計算得到結(jié)果。每個部位都保存各自一套完整的數(shù)據(jù)。最后進行骨骼解算,得到整套骨骼的最終數(shù)據(jù)。
[0061]動畫樹和動畫序列所采用的方式和當前主流的方式相近。在底層功能模塊開發(fā)完成后會開發(fā)底層管理模塊,采用的方法是采用單件開發(fā),全局有一個統(tǒng)一的管理器,根據(jù)引用計數(shù)進行判斷,當小于等于O刪除內(nèi)存,反之保留內(nèi)存直至動畫系統(tǒng)全盤銷毀為止。
[0062]然后下一步就是實現(xiàn)上層功能模塊,動畫LOD系統(tǒng)采用的方法包括骨骼L0D,網(wǎng)格L0D,動畫數(shù)據(jù)LOD。
[0063]網(wǎng)格LOD采用了普通的直接突變的方式,只需提前制作出對應(yīng)級別的網(wǎng)格即可。
[0064]骨骼LOD采用的方法為首先根據(jù)骨骼連接關(guān)系確定父子關(guān)系,在低級別不需要精確的情況下,可以根據(jù)父子關(guān)系在運算動畫時跳過低級別的也就是不重要的骨骼,這樣的話需要運算的骨骼可以得到一定的減少,如果級別越低需要運算的骨骼就越少,計算量越少所占用的計算時間也會越少,而且效果會根據(jù)減少量逐一降低,開發(fā)人員可以進行更好的把控,因為在低級別下,一般不需要看到太精確的細節(jié),所以這種優(yōu)化會變得非常的實用。
[0065]動畫LOD所采用的技術(shù)方法為在低級別下每個頂點受到的骨骼權(quán)重會減少,最高級別下會受到4個權(quán)重,也就是受到4根骨骼的影響,在低級別下只受到2根骨骼的影響,即只有2個權(quán)重,這樣的話運算效率也會得到提升。上層功能模塊開發(fā)完成后就是開發(fā)編輯工具,以提供可視化編輯功能給上層開發(fā)者使用。
[0066]綜上所述,本發(fā)明將游戲動畫系統(tǒng)的需求進行歸攏,繼而進行重新的設(shè)計與架構(gòu),針對效率,承載量等優(yōu)化難點進行重點攻關(guān)。在架構(gòu)時就考慮到效率平衡性,軟件擴展性,對系統(tǒng)進行完整的設(shè)計與封裝,最終完成開發(fā)工作。
[0067]最后應(yīng)說明的是:以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,盡管參照前述實施例對本發(fā)明進行了詳細的說明,對于本領(lǐng)域的技術(shù)人員來說,其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種三維游戲動畫系統(tǒng),其特征在于,包括供程序開發(fā)人員調(diào)用的上層功能模塊,供美術(shù)開發(fā)人員使用的上層編輯模塊,供程序底層開發(fā)人員進行開發(fā)和維護的底層管理模塊和底層功能模塊,各個模塊間采用標準接口連接,了解每個模塊接口調(diào)用規(guī)則即可方便的制作游戲動畫。
2.根據(jù)權(quán)利要求1所述的三維游戲動畫系統(tǒng),其特征在于,各個模塊在渲染方面通過暴露給外部的虛函數(shù)可以重載函數(shù)達到自定義化的實現(xiàn)功能。
3.根據(jù)權(quán)利要求1或2所述的三維游戲動畫系統(tǒng),其特征在于,所述上層功能模塊包括骨骼動畫、面部表情動畫、換裝系統(tǒng)、反向動力學(xué)、軟體動畫、控制器動畫和綁定動畫; 所述骨骼動畫:從動作捕捉設(shè)備獲取基本數(shù)據(jù),然后通過動作處理插件修改為動畫系統(tǒng)所需的關(guān)鍵幀數(shù)據(jù),計算得到骨骼列表的世界矩陣傳到GPU,GPU根據(jù)每個頂點受那些骨骼索引以及權(quán)重來計算每個頂點的新位置,調(diào)整的最后結(jié)果是與實現(xiàn)設(shè)定場景中位置相符合; 所述面部表情動畫:通過面部表情捕捉或手動制作動畫制作面部表情動畫; 所述換裝系統(tǒng):通過制作不同的模型替換各種原有模型,并把數(shù)據(jù)統(tǒng)一化,按照數(shù)據(jù)排列規(guī)則隨意組織排列和替換模型,從而實現(xiàn)多樣的組合變化; 所述反向動力學(xué):基于父子關(guān)系,權(quán)重比,運用雅克比矩陣推算動畫結(jié)果,通過重要的關(guān)節(jié)部位進行定位,從而確立姿勢,在骨骼鏈的末端以此反向往上推算,在約束參數(shù)的綜合控制下得到合理的結(jié)果; 所述軟體動畫:對于根據(jù) 作用力的不同會產(chǎn)生一定的動態(tài)形變的軟性物體,建立父子鏈接關(guān)系,通過權(quán)重和約束變量去控制動畫范圍,通過物理碰撞,動力學(xué)公式計算整個動畫的結(jié)果;通過簡易碰撞體和多線程計算來整個加速過程; 所述控制器動畫:通過目標點定位,讓動畫跟隨目標點產(chǎn)生動態(tài)的反應(yīng)與變化,通過約束參數(shù),雅克比矩陣和父子鏈接關(guān)系達到在需要的范圍內(nèi)動畫跟蹤定位; 所述綁定動畫:允許把其他物體動畫綁定點,掛節(jié)點綁定到動畫中,同時通過綁定點的位置運算實現(xiàn)綁定動畫的無縫連接。
4.根據(jù)權(quán)利要求1或2所述的三維游戲動畫系統(tǒng),其特征在于,所述底層管理模塊包括動畫管理器,所述動畫管理器對動畫進行內(nèi)存共用,多線程計算,動畫調(diào)度,統(tǒng)一計數(shù)管理,是動畫系統(tǒng)的控制中心,負責(zé)對動畫系統(tǒng)的數(shù)據(jù)進行統(tǒng)一管理。
5.根據(jù)權(quán)利要求1或2所述的三維游戲動畫系統(tǒng),其特征在于,所述底層功能模塊包括動畫序列、動畫樹、動畫過渡、多重動畫混合、動畫壓縮、碰撞系統(tǒng)、導(dǎo)航系統(tǒng)和LOD系統(tǒng); 所述動畫序列:改變每幀動畫的屬性,從而控制動畫在不同速率進行播放; 所述動畫樹:通過邏輯編碼將動畫按照邏輯需求進行播放,通過可視化的用戶界面用連接線和條件判斷的方式達成邏輯反饋,形成完整的動畫連接關(guān)系; 所述動畫過渡:將2個動畫以一種平滑的方式進行轉(zhuǎn)換,通過線性插值或貝塞爾插值把權(quán)重平均化; 所述多重動畫混合:按美術(shù)的需求進行部位分解,每個部位可以播放各自的動畫;所述動畫壓縮:在效果沒有損失的情況下把動畫數(shù)據(jù)由一個矩陣轉(zhuǎn)換為雙重四元數(shù),同時將關(guān)鍵幀數(shù)據(jù)通過曲線平滑使數(shù)據(jù)量進一步減少; 所述碰撞系統(tǒng):使用物理引擎開發(fā),能夠支持射線檢測、幾何體檢測以及動力學(xué)模擬,將動畫模型數(shù)據(jù)進行簡化,得到一個近似距離,在檢測完成后根據(jù)距離進行向量偏移得到最后結(jié)果,通過互相碰撞和動力學(xué)模擬,計算出每個動畫片段的沖量、速度和動能,從而計算出最后的位置和形體結(jié)構(gòu); 所述導(dǎo)航系統(tǒng):起到了動態(tài)偵測路徑的作用,動畫制作過程中設(shè)定導(dǎo)航基礎(chǔ)網(wǎng)格,通過權(quán)重和偏移信息實時計算出導(dǎo)航的位置和作用范圍; 所述LOD系統(tǒng):主要分為動畫LOD與骨骼L0D,通過距離的遠近判斷出動畫的重要性和先后關(guān)系。
6.根據(jù)權(quán)利要求1或2所述 的三維游戲動畫系統(tǒng),其特征在于,所述上層編輯模塊包括動畫編輯器,所述動畫編輯器,提供制作人員所見即所得的編輯操作功能,通過交互式的人機界面進行創(chuàng)作,能夠支持取消操作和操作記錄,通過人性化的面板制定出通俗易懂的編輯流程。
【文檔編號】G06T13/20GK104077797SQ201410209831
【公開日】2014年10月1日 申請日期:2014年5月19日 優(yōu)先權(quán)日:2014年5月19日
【發(fā)明者】張翼 申請人:無錫梵天信息技術(shù)股份有限公司