本發(fā)明涉及一種3d游戲骨骼處理系統(tǒng)及其處理方法,屬于計(jì)算機(jī)游戲領(lǐng)域。
背景技術(shù):
3d游戲中骨骼系統(tǒng)不可或缺,現(xiàn)有骨骼系統(tǒng)無(wú)法獲取更高效、更逼真和更復(fù)雜多變的游戲換裝表現(xiàn)形式,同時(shí)無(wú)法提高復(fù)用性。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明的技術(shù)方案提供了一種3d游戲骨骼處理系統(tǒng)及其處理方法,用于順應(yīng)時(shí)代變革以適應(yīng)當(dāng)前的軟硬件環(huán)境、追求獲取更高效、更逼真和更復(fù)雜多變的游戲換裝表現(xiàn)形式,同時(shí)提高復(fù)用性降低游戲制作成本為目的。
本發(fā)明的技術(shù)方案包括一種3d游戲骨骼處理系統(tǒng),其特征在于,該系統(tǒng)包括:采樣模塊,用于從指定的一個(gè)或多個(gè)三維建模工具采集并導(dǎo)出中間格式數(shù)據(jù);拼接模塊,用于執(zhí)行對(duì)骨骼模型的拼接;計(jì)算模塊,用于使用多線緩沖輪換對(duì)骨骼數(shù)據(jù)進(jìn)行實(shí)時(shí)計(jì)算;輔助計(jì)算模塊,用于接入物理引擎對(duì)物理骨骼與非物理骨骼動(dòng)畫(huà)進(jìn)行融合處理;繪制模塊,用于使用gpu計(jì)算并執(zhí)行對(duì)骨骼蒙皮動(dòng)畫(huà)的繪制處理。
根據(jù)權(quán)所述的3d游戲骨骼處理系統(tǒng),所述的采樣模塊用于執(zhí)行以下步驟:s21,從指定的一個(gè)或多個(gè)三維建模工具采集通用的骨骼模型中間數(shù)據(jù)格式;s22,使用解析器對(duì)中間數(shù)據(jù)格式的網(wǎng)格數(shù)據(jù)、材質(zhì)數(shù)據(jù)、骨架數(shù)據(jù)、插槽數(shù)據(jù)及動(dòng)畫(huà)數(shù)據(jù)進(jìn)行統(tǒng)一導(dǎo)出,并進(jìn)行分開(kāi)存儲(chǔ)。
根據(jù)所述的3d游戲骨骼處理系統(tǒng),所述的解析器還包括:用于對(duì)中間數(shù)據(jù)格式文件進(jìn)行解析,所解析的數(shù)據(jù)包括模型的網(wǎng)格數(shù)據(jù)、材質(zhì)數(shù)據(jù)、動(dòng)畫(huà)數(shù)據(jù)及子骨骼部件模型拼接文件數(shù)據(jù)。
根據(jù)所述的3d游戲骨骼處理系統(tǒng),其特征在于:所述網(wǎng)格數(shù)據(jù)用于記錄模型蒙皮的定點(diǎn)靜態(tài)數(shù)據(jù),包括定點(diǎn)位置坐標(biāo)、法線、次法線、uv坐標(biāo)及頂點(diǎn)綁定骨骼權(quán)重值。
在一個(gè)優(yōu)選的實(shí)施方案中,所述的骨架數(shù)據(jù)還包括:對(duì)骨架的樹(shù)形結(jié)構(gòu)進(jìn)行描述,以及,對(duì)骨骼進(jìn)行蒙皮狀態(tài)下的骨骼初始狀態(tài)數(shù)據(jù),包括普通骨骼和物理骨骼信息。
在一個(gè)優(yōu)選的實(shí)施方案中,所述的插槽數(shù)據(jù)還包括:用于記錄依附與骨骼的綁定偏移量數(shù)據(jù),其中偏移量數(shù)據(jù)可以進(jìn)行自定義調(diào)整。
在一個(gè)優(yōu)選的實(shí)施方案中,所述的材質(zhì)數(shù)據(jù)還包括:用于描述網(wǎng)格中的多個(gè)子集對(duì)應(yīng)的貼圖路徑、光照參數(shù)及繪制混合參數(shù)信息。
在一個(gè)優(yōu)選的實(shí)施方案中,所述的動(dòng)畫(huà)數(shù)據(jù)還包括:用于記錄每個(gè)骨骼按幀間隔的動(dòng)畫(huà)采樣數(shù)據(jù),以及,記錄各個(gè)骨骼每幀的平移、旋轉(zhuǎn)及縮放值。
在一個(gè)優(yōu)選的實(shí)施方案中,所述的子骨骼部件模型拼接文件數(shù)據(jù)還包括:用于記錄適配整體骨架的多個(gè)子骨骼部件網(wǎng)格的組合信息,包括模型整體的多個(gè)子部件及子部件的組合信息。
根據(jù)所述的3d游戲骨骼處理系統(tǒng),所述的計(jì)算模塊用于執(zhí)行以下步驟:s101,對(duì)每個(gè)骨骼的動(dòng)畫(huà)依照動(dòng)畫(huà)數(shù)據(jù)所描述的樹(shù)形結(jié)構(gòu)進(jìn)行實(shí)時(shí)計(jì)算;s102,使用三線緩沖輪換對(duì)所述步驟s101計(jì)算線程進(jìn)行處理,其中的三線緩沖包括主線程計(jì)算緩沖、中間交換緩沖劑子線程計(jì)算緩沖,用于取消數(shù)據(jù)傳遞及拷貝的加鎖過(guò)程,。
根據(jù)所述的3d游戲骨骼處理系統(tǒng)所述的輔助計(jì)算模塊包括:用于接入物理引擎,并對(duì)幀采樣的動(dòng)畫(huà)和物理計(jì)算的骨骼進(jìn)行動(dòng)畫(huà)融合。
根據(jù)所述的3d游戲骨骼處理系統(tǒng),所述的繪制模塊用于執(zhí)行以下步驟:s121,使用gpu對(duì)將動(dòng)畫(huà)幀計(jì)算原先結(jié)果的4x4矩陣轉(zhuǎn)置壓縮為3x4矩陣;s122,獲取材質(zhì)數(shù)據(jù)、網(wǎng)格數(shù)據(jù)基于3x4矩陣進(jìn)行并行頂點(diǎn)著色處理,完成gpu的渲染過(guò)程。
本發(fā)明的技術(shù)方案還包括一種3d游戲骨骼處理方法,該方法包括:從指定的一個(gè)或多個(gè)三維建模工具采集并導(dǎo)出骨骼數(shù)據(jù);執(zhí)行對(duì)骨骼模型的拼接;使用多線緩沖輪換對(duì)骨骼數(shù)據(jù)進(jìn)行實(shí)時(shí)計(jì)算;接入物理引擎對(duì)物理骨骼與非物理骨骼動(dòng)畫(huà)進(jìn)行融合處理;使用gpu計(jì)算并執(zhí)行對(duì)骨骼蒙皮動(dòng)畫(huà)的繪制處理。
本發(fā)明的有益效果為:
(1)導(dǎo)出過(guò)程把美術(shù)工具制作的整體復(fù)雜動(dòng)畫(huà)數(shù)據(jù)進(jìn)行分類導(dǎo)出,有了中間格式導(dǎo)出的支持,能很好的適配了不同的3d制作工具,導(dǎo)出過(guò)程并進(jìn)行了歸類整理,各部分對(duì)應(yīng)不同的子模塊;
(2)結(jié)合了現(xiàn)代硬件結(jié)構(gòu)的特點(diǎn),充分利用了cpu多核和gpu高并發(fā)處理能力的資源進(jìn)行合理計(jì)算類別上的分工,動(dòng)畫(huà)表現(xiàn)既有美術(shù)制作的部分也有物理引擎實(shí)時(shí)演算的部分大大增強(qiáng)和豐富了動(dòng)畫(huà)的自然表現(xiàn)效果,同事減輕了動(dòng)畫(huà)制作的工作量;
(3)動(dòng)態(tài)換裝系統(tǒng)極大的增強(qiáng)游戲的表現(xiàn),和外觀搭配,同時(shí)這種方式也解決了gpu同時(shí)處理骨骼數(shù)的限制,做到只有子骨架有骨骼數(shù)量限制,整體骨架沒(méi)有數(shù)量限制,骨骼數(shù)的豐富能使表現(xiàn)能更加高標(biāo)準(zhǔn)的骨骼動(dòng)畫(huà)效果;
(4)另外骨骼插槽綁定機(jī)制能綁定額外的模型甚至是特效到骨骼插槽上,更好的增強(qiáng)了骨骼系統(tǒng)的表現(xiàn)能力,使得有限的資源得到無(wú)限的外觀表現(xiàn)。
附圖說(shuō)明
圖1所示為根據(jù)本發(fā)明實(shí)施方式的總體流程圖;
圖2所示為根據(jù)本發(fā)明實(shí)施方式的導(dǎo)出示意圖;
圖3所示為根據(jù)本發(fā)明實(shí)施方式的多線程計(jì)算示意圖;
圖4所示為根據(jù)本發(fā)明實(shí)施方式的gpu繪制示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明的3d游戲骨骼處理系統(tǒng)及其處理方法適用于三維游戲骨骼模型的處理。
圖1所示為根據(jù)本發(fā)明實(shí)施方式的總體流程圖。如下所示:
s1,從指定的一個(gè)或多個(gè)三維建模工具采集并導(dǎo)出中間格式數(shù)據(jù);
s2,執(zhí)行對(duì)骨骼模型的拼接;
s3,使用多線緩沖輪換對(duì)骨骼數(shù)據(jù)進(jìn)行實(shí)時(shí)計(jì)算;
s4,接入物理引擎對(duì)物理骨骼與非物理骨骼動(dòng)畫(huà)進(jìn)行融合處理;
s5,使用gpu計(jì)算并執(zhí)行對(duì)骨骼蒙皮動(dòng)畫(huà)的繪制處理。
圖2所示為根據(jù)本發(fā)明實(shí)施方式的導(dǎo)出示意圖。
無(wú)需對(duì)多種3d建模工具如3等進(jìn)行各種深度插件導(dǎo)出的開(kāi)發(fā),把統(tǒng)一的中間格式數(shù)據(jù)進(jìn)行2次轉(zhuǎn)換導(dǎo)出成為動(dòng)畫(huà)系統(tǒng)所需要的各類文件格式來(lái)加載執(zhí)行,通過(guò)轉(zhuǎn)換過(guò)程,導(dǎo)出了骨架文件、部件組合描述文件、材質(zhì)文件、網(wǎng)格數(shù)據(jù)文件、插槽綁定描述文件、骨骼動(dòng)畫(huà)幀數(shù)據(jù)文件,且對(duì)于同一套骨骼模型這些文件能通用置換搭配使用
圖3所示為根據(jù)本發(fā)明實(shí)施方式的多線程計(jì)算示意圖。骨骼動(dòng)畫(huà)系統(tǒng)首先加載骨架文件,然后加載部件組合文件,里面對(duì)應(yīng)的有網(wǎng)格以及靜態(tài)數(shù)據(jù),以及插槽數(shù)據(jù);
接下來(lái)骨骼動(dòng)畫(huà)系統(tǒng)可以根據(jù)需要綁定相應(yīng)的道具,比如綁定武器裝備道具等等;
接下來(lái)系統(tǒng)根據(jù)游戲的需要播放對(duì)應(yīng)的動(dòng)畫(huà)文件,進(jìn)行動(dòng)畫(huà)的播放,動(dòng)畫(huà)播放器只負(fù)責(zé)非物理骨骼的動(dòng)畫(huà)效果,多線程3線緩沖計(jì)算模塊能自動(dòng)協(xié)調(diào)cpu多核的計(jì)算能力進(jìn)行大批量的動(dòng)畫(huà)計(jì)算;
物理骨骼部分則自動(dòng)通過(guò)物理引擎進(jìn)行實(shí)時(shí)演算,并將物理和非物理骨骼的動(dòng)畫(huà)效果進(jìn)行自動(dòng)融合。
圖4所示為根據(jù)本發(fā)明實(shí)施方式的gpu繪制示意圖。分組繪制模塊按材質(zhì)分組對(duì)骨骼子模型進(jìn)行分批的繪制輸出,這將自動(dòng)最大化利用gpu的計(jì)算能力進(jìn)行高效的大批量的動(dòng)畫(huà)模型繪制。
把網(wǎng)格數(shù)據(jù),骨骼計(jì)算數(shù)據(jù),按材質(zhì)參數(shù)分組,提交給gpu做繪制處理,骨骼計(jì)算出來(lái)的數(shù)據(jù)傳統(tǒng)做法采用矩陣4x4,單骨骼16個(gè)浮點(diǎn)數(shù),gpu一次提交能處理的浮點(diǎn)數(shù)寄存器數(shù)量比較有限,導(dǎo)致通常同時(shí)能處理的骨骼數(shù)量比較受限,為了節(jié)約帶寬和減少限制,采用了4x4矩陣轉(zhuǎn)置成3x4矩陣壓縮算法,這樣提升了1/4倍的處理能力,另外在頂點(diǎn)著色器里面進(jìn)行矩陣反乘變換,并無(wú)解壓或2次轉(zhuǎn)置方面的性能開(kāi)銷,帶來(lái)很好的效率提升,所有頂點(diǎn)動(dòng)畫(huà)變換以及像素著色計(jì)算,均在gpu內(nèi)完成,對(duì)于傳統(tǒng)cpu方式的頂點(diǎn)計(jì)算是一種巨大的改進(jìn),更適合現(xiàn)代的3d硬件架構(gòu),另外整體模型由于做了骨骼部件拆分,因而只有單部件的骨骼數(shù)限制,而沒(méi)有整體的骨架骨骼數(shù)量限制,這是對(duì)gpu處理骨骼數(shù)限制的一種重要改進(jìn),能更高效的表現(xiàn)更為復(fù)雜的骨骼系統(tǒng)動(dòng)畫(huà)。
以上所述,只是本發(fā)明的較佳實(shí)施例而已,本發(fā)明并不局限于上述實(shí)施方式,只要其以相同的手段達(dá)到本發(fā)明的技術(shù)效果,都應(yīng)屬于本發(fā)明的保護(hù)范圍。在本發(fā)明的保護(hù)范圍內(nèi)其技術(shù)方案和/或?qū)嵤┓绞娇梢杂懈鞣N不同的修改和變化。