一種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法及裝置。所述方法包括:確定三維軟件中需導(dǎo)出的模型動(dòng)畫的特征信息;將所述特征信息寫入到3Dmax編輯腳本中,再將該3Dmax編輯腳本存儲(chǔ)為.xml文件;將所述.xml文件轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制.mmb文件,根據(jù)該.mmb文件獲得所述特征信息,以在游戲引擎中還原所述模型動(dòng)畫。通過本發(fā)明的技術(shù)方案,能夠有效的避免了從三維軟件中導(dǎo)出模型時(shí)出現(xiàn)的模型信息不完整,或者將導(dǎo)出的模型文件應(yīng)用到游戲引擎中出錯(cuò)的問題。
【專利說明】一種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法及裝 CP3
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種基于3Dmax腳本導(dǎo)出三維軟件中模型 動(dòng)畫的方法及裝置。
【背景技術(shù)】
[0002] 隨著Internet技術(shù)的、三維建模技術(shù)和虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,越來越多的公司開 發(fā)不同的三維軟件來制作的模型動(dòng)畫,每個(gè)三維軟件都有其特點(diǎn),相應(yīng)的三維數(shù)據(jù)類型和 存儲(chǔ)格式也多種多樣。
[0003] 計(jì)算機(jī)技術(shù)的發(fā)展帶動(dòng)了游戲產(chǎn)業(yè)的進(jìn)步,在游戲領(lǐng)域通常利用三維軟件來制作 模型動(dòng)畫,然后將制作好的模型導(dǎo)出應(yīng)用到游戲引擎中使用。在導(dǎo)出模型的時(shí)候通常將模 型信息保存為max或者ma、mb格式的文件,然而這些類型的文件往往不能適用于自主開發(fā) 的游戲引擎。一般來說,游戲引擎開發(fā)者會(huì)自定義其文件格式以存儲(chǔ)模型信息,而只有具有 對(duì)應(yīng)格式的模型文件才能被游戲引擎使用。如采用Direct3D和OpenGL編寫的游戲引擎, 支持不同格式的模型文件。因此,需要將三維軟件中制作的模型信息導(dǎo)出為游戲引擎支持 的文件類型。
[0004] 目前導(dǎo)出三維模型軟件中模型的方法是:利用VirtoolsDev來實(shí)現(xiàn)模型的導(dǎo)出, VirtoolsDev為支持3Dmax、MAYA、LightWave三種文件格式轉(zhuǎn)化的插件,由于關(guān)于這個(gè)插件 的資料比較少,應(yīng)用范圍比較窄,只有少部分游戲引擎能夠適用,且對(duì)開發(fā)者及開發(fā)環(huán)境的 要求較高。還有將將三維模型軟件中模型導(dǎo)出為.X格式的模型文件的導(dǎo)出方法,但是將.X 格式的模型文件運(yùn)用到游戲引擎中時(shí)常常有錯(cuò)誤產(chǎn)生,給開發(fā)工作帶來了麻煩。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于提出一種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,有 效的避免從三維軟件中導(dǎo)出模型時(shí)出現(xiàn)的模型信息不完整,或者將導(dǎo)出的模型文件應(yīng)用到 游戲引擎中出錯(cuò)的問題。
[0006] 為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:
[0007] -種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,包括:
[0008] 確定三維軟件中需導(dǎo)出的模型動(dòng)畫的特征信息;
[0009] 將所述特征信息寫入到3Dmax編輯腳本中,再將該3Dmax編輯腳本存儲(chǔ)為.xml文 件;
[0010] 將所述.xml文件轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制.mmb文件,根據(jù)該.mmb文件獲得所述特征 信息,以在游戲引擎中還原所述模型動(dòng)畫。
[0011] 其中,所述模型動(dòng)畫的特征信息包括:骨骼信息和蒙皮信息。
[0012] 其中,所述骨骼信息包括:骨骼列表、骨骼層次以及骨骼的關(guān)鍵幀信息;
[0013] 所述蒙皮信息包括:頂點(diǎn)信息、法線信息、權(quán)重信息、材質(zhì)信息以及每個(gè)多邊形的 光滑組。
[0014] 其中,所述頂點(diǎn)信息包括:各頂點(diǎn)受哪些骨骼的影響以及各頂點(diǎn)受各骨骼影響的 權(quán)重值。
[0015] 其中,所述骨骼列表包括:骨骼ID、骨骼名稱、骨骼數(shù)量、骨骼之間的父子關(guān)系、初 始狀態(tài)子骨骼相對(duì)于父骨骼的相對(duì)變換信息。
[0016] 其中,所述骨骼的關(guān)鍵幀信息包括骨骼運(yùn)動(dòng)序列幀,所述關(guān)鍵幀序列中保存了子 骨骼相對(duì)于父骨骼的平移、旋轉(zhuǎn)和縮放分量。
[0017] 其中,所述將所述特征信息寫入到3Dmax編輯腳本中,包括:
[0018] 將所述模型動(dòng)畫的坐標(biāo)系轉(zhuǎn)化為三維軟件3DMAX的坐標(biāo)系,將所述平移、旋轉(zhuǎn)和 縮放分量轉(zhuǎn)化為符合3DMAX的標(biāo)準(zhǔn)坐標(biāo)系的平移、旋轉(zhuǎn)和縮放分量后寫入到3Dmax編輯腳 本。
[0019] 其中,所述將所述特征信息寫入到3Dmax編輯腳本中,再將該3Dmax編輯腳本存儲(chǔ) 為? xml文件,包括:
[0020] 調(diào)用XMLElementBegin函數(shù),將所述特征信息寫入到3Dmax編輯腳本中,將輸出該 3Dmax編輯腳本對(duì)應(yīng)的? xml文件。
[0021] 其中,所述將所述.xml文件轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制.mmb文件之前,還包括:
[0022] 提取所述.xml文件中模型的UV坐標(biāo)信息、頂點(diǎn)信息,根據(jù)UV坐標(biāo)信息、頂點(diǎn)信息 計(jì)算模型中各頂點(diǎn)的法線、模型中各個(gè)面的法線、切線和副法線;
[0023] 若確定出模型中相鄰的兩個(gè)面是同一光滑組,則不拆分所述兩個(gè)面共享的頂點(diǎn), 將該頂點(diǎn)的法線賦值為所述兩個(gè)面的面法線的平均值;
[0024] 若確定出模型中相鄰的兩個(gè)面不是同一光滑組,則將所述兩個(gè)面共享的頂點(diǎn)拆分 為兩個(gè)頂點(diǎn),將這兩個(gè)頂點(diǎn)的法線分別賦值為對(duì)應(yīng)面的面法線的數(shù)值。
[0025] -種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的裝置,包括:
[0026] 確定特征模塊,用于確定三維軟件中需導(dǎo)出的模型動(dòng)畫的特征信息;
[0027] 導(dǎo)出模塊,用于將所述特征信息寫入到3Dmax編輯腳本中,再將該3Dmax編輯腳本 存儲(chǔ)為? xml文件;
[0028] 轉(zhuǎn)換模塊,用于將所述.xml文件轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制.mmb文件,根據(jù)該.mmb文 件獲得所述特征信息,以在游戲引擎中還原所述模型動(dòng)畫。
[0029] 實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:
[0030] 本發(fā)明實(shí)施例通過3Dmax編輯腳本導(dǎo)出模型動(dòng)畫,把導(dǎo)出的模型信息存儲(chǔ)到.mmb 文件里,有效的避免了從三維軟件中導(dǎo)出模型時(shí)出現(xiàn)的模型信息不完整,或者將導(dǎo)出的模 型文件應(yīng)用到游戲引擎中出錯(cuò)的問題,適用范圍廣,導(dǎo)出的模型文件能很好的被游戲引擎 支持,有利于提高開發(fā)效率。
【專利附圖】
【附圖說明】
[0031] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述的附圖僅僅是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。
[0032] 圖1是本發(fā)明第一實(shí)施例的一種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法 的流程示意圖。
[0033] 圖2是本發(fā)明第二實(shí)施例的一種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的裝置 的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0034] 下面結(jié)合本發(fā)明的附圖對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯 然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的 實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例, 都屬于本發(fā)明保護(hù)的范圍。
[0035] 結(jié)合圖1對(duì)本發(fā)明的第一實(shí)施例進(jìn)行說明。
[0036] 圖1是本發(fā)明第一實(shí)施例的一種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法 流程圖,詳述如下:
[0037] 步驟S101,確定三維軟件中需導(dǎo)出的模型動(dòng)畫的特征信息。
[0038] 在第一實(shí)施例中,三維軟件中制作的模型動(dòng)畫的特征信息包括:骨骼信息和蒙皮 信息。其中骨骼信息又包括:骨骼列表、骨骼層次以及骨骼的關(guān)鍵幀信息;蒙皮信息又包括 頂點(diǎn)信息、法線信息、權(quán)重信息、材質(zhì)信息以及每個(gè)多邊形的光滑組。
[0039] 3D模型動(dòng)畫的基本原理是讓模型中各頂點(diǎn)的位置隨時(shí)間變化,一般都采用關(guān)鍵幀 技術(shù),即只給出相鄰關(guān)鍵幀的數(shù)據(jù),那么關(guān)鍵幀之間的動(dòng)畫數(shù)據(jù)可以通過相鄰關(guān)鍵幀使用 插值得到?,F(xiàn)有的3D模型動(dòng)畫中效果較好的是骨骼動(dòng)畫,骨骼動(dòng)畫包含骨骼(Bone)和蒙 皮(Skinned Mesh)兩個(gè)部分,其中骨骼為模型的框架,蒙皮是指將網(wǎng)格中的頂點(diǎn)附著(綁 定)在骨骼之上,而且每個(gè)頂點(diǎn)可以被多個(gè)骨骼所控制。即骨骼動(dòng)畫的基本原理可概括為: 在骨骼控制下,通過頂點(diǎn)混合動(dòng)態(tài)計(jì)算蒙皮網(wǎng)格的頂點(diǎn),而骨骼的運(yùn)動(dòng)相對(duì)于其父骨骼,并 由動(dòng)畫關(guān)鍵幀數(shù)據(jù)驅(qū)動(dòng)。在本實(shí)施例中,骨骼的關(guān)鍵幀信息包括骨骼運(yùn)動(dòng)關(guān)鍵幀序列,這些 序列中保存了子骨骼相對(duì)于父骨骼的平移、旋轉(zhuǎn)和縮放分量。
[0040] 本實(shí)施例中,在三維軟件3DMAX中,在制作好的模型上為其添加骨骼系統(tǒng),例如用 BipOOl建立一個(gè)骨骼,導(dǎo)出骨骼列表,該骨骼列表包括:骨骼ID、骨骼名稱、骨骼數(shù)量、骨骼 之間的父子關(guān)系、初始狀態(tài)子骨骼相對(duì)于父骨骼的相對(duì)變換信息。
[0041] 進(jìn)一步的,本實(shí)施例的蒙皮信息,本質(zhì)上是模型的頂點(diǎn)信息,它包括每個(gè)頂點(diǎn)受哪 些骨骼的影響,每個(gè)頂點(diǎn)受每塊骨骼影響的權(quán)重值。具體可根據(jù)如下代碼獲取模型的頂點(diǎn) 受哪些骨骼影響和影響的權(quán)重值。
[0042]
【權(quán)利要求】
1. 一種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在于,包括: 確定三維軟件中需導(dǎo)出的模型動(dòng)畫的特征信息; 將所述特征信息寫入到3Dmax編輯腳本中,再將該3Dmax編輯腳本存儲(chǔ)為.xml文件; 將所述.xml文件轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制.mmb文件,根據(jù)該.mmb文件獲得所述特征信 息,以在游戲引擎中還原所述模型動(dòng)畫。
2. 根據(jù)權(quán)利要求1所述的基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在 于,所述模型動(dòng)畫的特征信息包括:骨骼信息和蒙皮信息。
3. 根據(jù)權(quán)利要求2所述的基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在 于,所述骨骼信息包括:骨骼列表、骨骼層次以及骨骼的關(guān)鍵幀信息; 所述蒙皮信息包括:頂點(diǎn)信息、法線信息、權(quán)重信息、材質(zhì)信息以及每個(gè)多邊形的光滑 組。
4. 根據(jù)權(quán)利要求3所述的基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在 于,所述頂點(diǎn)信息包括:各頂點(diǎn)受哪些骨骼的影響以及各頂點(diǎn)受各骨骼影響的權(quán)重值。
5. 根據(jù)權(quán)利要求3所述的基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在 于,所述骨骼列表包括:骨骼ID、骨骼名稱、骨骼數(shù)量、骨骼之間的父子關(guān)系、初始狀態(tài)子骨 骼相對(duì)于父骨骼的相對(duì)變換信息。
6. 根據(jù)權(quán)利要求3所述的基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在 于,所述骨骼的關(guān)鍵幀信息包括骨骼運(yùn)動(dòng)信息的關(guān)鍵幀序列,所述關(guān)鍵幀序列中保存了子 骨骼相對(duì)于父骨骼的平移、旋轉(zhuǎn)和縮放分量。
7. 根據(jù)權(quán)利要求6所述的基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在 于,所述將所述特征信息寫入到3Dmax編輯腳本中,包括: 將所述模型動(dòng)畫的坐標(biāo)系轉(zhuǎn)化為三維軟件3DMAX的坐標(biāo)系,將所述平移、旋轉(zhuǎn)和縮放 分量轉(zhuǎn)化為符合3DMAX的標(biāo)準(zhǔn)坐標(biāo)系的平移、旋轉(zhuǎn)和縮放分量后寫入到3Dmax編輯腳本。
8. 根據(jù)權(quán)利要求1所述的基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在 于,所述將所述特征信息寫入到3Dmax編輯腳本中,再將該3Dmax編輯腳本存儲(chǔ)為.xml文 件,包括: 調(diào)用XMLElementBegin函數(shù),將所述特征信息寫入到3Dmax編輯腳本中,將輸出該 3Dmax編輯腳本對(duì)應(yīng)的? xml文件。
9. 根據(jù)權(quán)利要求1所述的基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的方法,其特征在 于,所述將所述.xml文件轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制.mmb文件之前,還包括: 提取所述.xml文件中模型的UV坐標(biāo)信息、頂點(diǎn)信息,根據(jù)UV坐標(biāo)信息、頂點(diǎn)信息計(jì)算 模型中各頂點(diǎn)的法線、模型中各個(gè)面的法線、切線和副法線; 若確定出模型中相鄰的兩個(gè)面是同一光滑組,則不拆分所述兩個(gè)面共享的頂點(diǎn),將該 頂點(diǎn)的法線賦值為所述兩個(gè)面的面法線的平均值; 若確定出模型中相鄰的兩個(gè)面不是同一光滑組,則將所述兩個(gè)面共享的頂點(diǎn)拆分為兩 個(gè)頂點(diǎn),將這兩個(gè)頂點(diǎn)的法線分別賦值為對(duì)應(yīng)面的面法線的數(shù)值。
10. -種基于3Dmax腳本導(dǎo)出三維軟件中模型動(dòng)畫的裝置,其特征在于,包括: 確定特征模塊,用于確定三維軟件中需導(dǎo)出的模型動(dòng)畫的特征信息; 導(dǎo)出模塊,用于將所述特征信息寫入到3Dmax編輯腳本中,再將該3Dmax編輯腳本存儲(chǔ) 為? xml文件; 轉(zhuǎn)換模塊,用于將所述.xml文件轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制.mmb文件,根據(jù)該.mmb文件獲 得所述特征信息,以在游戲引擎中還原所述模型動(dòng)畫。
【文檔編號(hào)】G06F9/44GK104391683SQ201410433037
【公開日】2015年3月4日 申請(qǐng)日期:2014年8月28日 優(yōu)先權(quán)日:2014年8月28日
【發(fā)明者】張翼 申請(qǐng)人:無錫梵天信息技術(shù)股份有限公司