一種導(dǎo)出3dmax可識(shí)別的模型信息的方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種導(dǎo)出3DMAX可識(shí)別的模型信息的方法及裝置。所述方法包括:讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息;對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息;將所述_OBJ文件導(dǎo)入到3DMAX中打開(kāi),所述MTL文件保存_OBJ模型對(duì)應(yīng)的材質(zhì)信息,在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX中進(jìn)行三維渲染還原模型。通過(guò)本發(fā)明的技術(shù)方案,能夠從游戲引擎中將模型信息導(dǎo)出為適用于3DMAX標(biāo)準(zhǔn)的_OBJ模型文件,適用性強(qiáng),導(dǎo)出的模型文件能夠被多種三維建模軟件識(shí)別。
【專(zhuān)利說(shuō)明】—種導(dǎo)出3DMAX可識(shí)別的模型信息的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種從游戲引擎中導(dǎo)出3DMAX可識(shí)別模型信息的方法及裝置。
【背景技術(shù)】
[0002]隨著Internet技術(shù)的、三維建模技術(shù)和虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,越來(lái)越多的公司開(kāi)發(fā)不同的三維軟件來(lái)制作的三維模型,相應(yīng)的三維數(shù)據(jù)類(lèi)型和存儲(chǔ)格式也多種多樣,每個(gè)三維軟件都有其特點(diǎn),制作模型的工作人員為了提高建模的效率,需要掌握各種三維軟件。
[0003]計(jì)算機(jī)技術(shù)的發(fā)展帶動(dòng)了游戲產(chǎn)業(yè)的進(jìn)步,為了實(shí)現(xiàn)更高的畫(huà)面效果和運(yùn)算效率,越來(lái)越多的公司選擇自主研發(fā)游戲引擎,自主研發(fā)的游戲引擎利用目前最先進(jìn)的技術(shù)實(shí)現(xiàn)更逼真的效果,另外也有利于公司維護(hù)、更新產(chǎn)品。然而。但是對(duì)于自主研發(fā)的游戲引擎,每個(gè)自主研發(fā)的游戲引擎都有一套自定義三維模型的數(shù)據(jù)格式,影響與三維建模軟件的數(shù)據(jù)共享。
[0004]在研發(fā)過(guò)程中,先通過(guò)三維建模軟件建立模型,再?gòu)娜S建模軟件導(dǎo)出模型到時(shí)游戲引擎中的具體應(yīng)用場(chǎng)景中,由于游戲引擎與三維建模軟件對(duì)三維模型的識(shí)別和渲染方式存在差異,因此導(dǎo)入游戲引擎的模型可能不能達(dá)到滿意的動(dòng)畫(huà)效果,需要將該模型導(dǎo)回到三維建模軟件中進(jìn)行修改。
[0005]由于游戲引擎與三維建模軟件對(duì)三維模型的識(shí)別和渲染方式存在差異,使得現(xiàn)有技術(shù)實(shí)現(xiàn)困難集中在:從游戲引擎中導(dǎo)出模型完整信息,并使該模型完整信息能適用于多源三維軟件,以在三維建模軟件中對(duì)該模型進(jìn)行修改。該過(guò)程的實(shí)現(xiàn)難度大,對(duì)工作人員的要求較高,工作效率較低,不利于開(kāi)發(fā)進(jìn)程。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于提出一種導(dǎo)出3DMAX可識(shí)別的模型信息的方法及裝置,能夠從游戲引擎中將模型信息導(dǎo)出為適用于3DMAX標(biāo)準(zhǔn)的_0BJ模型文件,使得導(dǎo)出的模型信息能夠順利的應(yīng)用到3DMAX中進(jìn)行編輯或修改。
[0007]為達(dá)此目的,本發(fā)明采用以下技術(shù)方案:
[0008]一種導(dǎo)出3DMAX可識(shí)別的模型信息的方法,包括:
[0009]讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息;
[0010]對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息;
[0011]將所述模型數(shù)據(jù)信息寫(xiě)入_0BJ文件和MTL文件,將所述_0BJ文件導(dǎo)入到3DMAX中打開(kāi),所述MTL文件保存_0BJ模型對(duì)應(yīng)的材質(zhì)信息,在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX中進(jìn)行三維渲染還原模型。
[0012]其中,所述模型特征信息包括:材質(zhì)信息、頂點(diǎn)信息、UV坐標(biāo)信息、面信息以及光滑組信息。
[0013]其中,所述將所述模型數(shù)據(jù)信息寫(xiě)入_0BJ文件和MTL文件,包括:
[0014]將所述模型數(shù)據(jù)信息中的頂點(diǎn)信息、UV坐標(biāo)信息、面信息和光滑組信息寫(xiě)入_0BJ文件;
[0015]將所述模型數(shù)據(jù)信息中的材質(zhì)信息寫(xiě)入MTL文件;
[0016]所述材質(zhì)信息包括:漫反射貼圖、高光貼圖在游戲引擎中保存的地址信息。
[0017]其中,所述的所述將所述模型數(shù)據(jù)信息寫(xiě)入_0BJ文件和MTL文件,還包括:
[0018]建立_0BJ文件與MTL文件的--對(duì)應(yīng)的索引關(guān)聯(lián)。
[0019]其中,所述的建立_0BJ文件與MTL文件的--對(duì)應(yīng)的索引關(guān)聯(lián),包括:
[0020]在_(? J文件中寫(xiě)入mtl Iib模型文件名.mtl的MTL字段,通過(guò)該MTL字段建立該_0BJ文件與文件名為模型文件名.mtl的MTL文件的索引關(guān)聯(lián);
[0021 ] 將該_0BJ文件命名為模型文件名_0BJ并保存。
[0022]其中,所述對(duì)所述模型特征信息進(jìn)行分析處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息,包括:
[0023]對(duì)模型的各個(gè)面的光滑組信息進(jìn)行分析,確定模型中相鄰的兩個(gè)面是否是同一光滑組,
[0024]若是,將所述兩個(gè)面共享的頂?shù)姆ň€賦值為所述兩個(gè)面的面法線的平均值;
[0025]若否,則將所述兩個(gè)面共享的頂點(diǎn)拆分為兩個(gè)頂點(diǎn),將這兩個(gè)頂點(diǎn)的法線分別賦值為對(duì)應(yīng)面的面法線的數(shù)值。
[0026]其中,所述對(duì)模型的各個(gè)面的光滑組信息進(jìn)行分析,確定模型中相鄰的兩個(gè)面是否是同一光滑組,包括:
[0027]統(tǒng)計(jì)模型的頂點(diǎn)位置,以及被共享頂點(diǎn)的共享面列表信息;
[0028]遍歷每個(gè)被共享頂點(diǎn)的共享面列表信息,確定出相鄰面,記錄相鄰面的面夾角;
[0029]判斷相鄰面的面夾角是否大于45度,若是,確定對(duì)應(yīng)的相鄰面是同一光滑組,若否,確定對(duì)應(yīng)的相鄰面不是同一光滑組。
[0030]其中,所述確定模型中相鄰的兩個(gè)面是否是同一光滑組之后,還包括:
[0031]將屬于同一個(gè)光滑組的相鄰面按照光滑組ID插入到預(yù)設(shè)的全局相鄰的面列表中;不同光滑組ID對(duì)應(yīng)不同全局相鄰的面列表;
[0032]遍歷所述全局相鄰的面列表,刪除面列表中相鄰面的重復(fù)記錄;
[0033]根據(jù)全局相鄰的面列表確定具有連續(xù)光滑組信息的面,由具有連續(xù)光滑組信息的面得出模型的連續(xù)光滑組信息;
[0034]對(duì)連續(xù)光滑組信息按照光滑組ID從小到大進(jìn)行排序,計(jì)算得到模型的光滑組數(shù)值信息。
[0035]一種導(dǎo)出3DMAX可識(shí)別的模型信息的裝置,包括:
[0036]提取特征模塊,用于讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息;
[0037]特征轉(zhuǎn)化模塊,用于對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息;
[0038]導(dǎo)出模塊,用于將所述模型數(shù)據(jù)信息寫(xiě)入_0BJ文件和MTL文件,將所述_0BJ文件導(dǎo)入到3DMAX中打開(kāi),所述MTL文件保存_0BJ模型對(duì)應(yīng)的材質(zhì)信息,在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX中進(jìn)行三維渲染還原模型。
[0039]其中,所述模型特征信息包括:材質(zhì)信息、頂點(diǎn)信息、UV坐標(biāo)信息和面信息以及光滑組信息;
[0040]所述對(duì)所述模型特征信息進(jìn)行分析處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息,包括:
[0041]對(duì)模型的各個(gè)面的光滑組信息進(jìn)行分析,確定模型中相鄰的兩個(gè)面是否屬于同一光滑組,
[0042]若是,將所述兩個(gè)面共享的頂點(diǎn)的法線賦值為所述兩個(gè)面的面法線的平均值;
[0043]若否,則將所述兩個(gè)面共享的頂點(diǎn)拆分為兩個(gè)頂點(diǎn),將這兩個(gè)頂點(diǎn)的法線分別賦值為對(duì)應(yīng)面的面法線的數(shù)值;
[0044]所述導(dǎo)出模塊,具體用于將所述模型數(shù)據(jù)信息中的頂點(diǎn)信息、UV坐標(biāo)信息、面信息和光滑組信息寫(xiě)入_0BJ文件;將所述模型數(shù)據(jù)信息中的材質(zhì)信息寫(xiě)入MTL文件。
[0045]實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:
[0046]本發(fā)明實(shí)施例通過(guò)讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息;對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息;將所述_0BJ文件導(dǎo)入到3DMAX中打開(kāi),所述MTL文件保存_0BJ模型的材質(zhì)信息,可在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX進(jìn)行三維渲染還原模型。本發(fā)明的方案,能夠從游戲引擎中將模型信息導(dǎo)出為適用于3DMAX標(biāo)準(zhǔn)的_0BJ模型文件,使得導(dǎo)出的模型信息能夠順利的應(yīng)用到3DMAX中進(jìn)行編輯或修改;另外,本發(fā)明的導(dǎo)出模型方法大大提高了模型的利用率,有利于提高研發(fā)效率,節(jié)約了人力成本,適用性強(qiáng),導(dǎo)出的模型文件能夠被多種三維建模軟件識(shí)別。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0047]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0048]圖1是本發(fā)明第一實(shí)施例的一種導(dǎo)出3DMAX可識(shí)別的模型信息的方法的流程示意圖。
[0049]圖2是本發(fā)明第一實(shí)施例的相鄰面是同一光滑組的示意圖。
[0050]圖3是本發(fā)明第一實(shí)施例的相鄰面不是同一光滑組的示意圖。
[0051]圖4是本發(fā)明第二實(shí)施例的一種導(dǎo)出3DMAX可識(shí)別的模型信息的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0052]下面結(jié)合本發(fā)明的附圖對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0053]結(jié)合圖1對(duì)本發(fā)明的第一實(shí)施例進(jìn)行說(shuō)明。
[0054]圖1是本發(fā)明第一實(shí)施例的一種導(dǎo)出3DMAX可識(shí)別的模型信息的方法流程圖,詳述如下:
[0055]步驟S101,讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息。
[0056]在第一實(shí)施例中,模型特征信息包括:材質(zhì)信息、頂點(diǎn)信息、UV坐標(biāo)信息和面信息以及光滑組信息,其中,所述材質(zhì)信息包括:模型的創(chuàng)建時(shí)間、環(huán)境光、漫反射、高光顏色設(shè)置、材質(zhì)ID、漫反射貼圖、高光貼圖和法線貼圖地址。
[0057]在游戲引擎中渲染看到的只是一個(gè)模型,而其實(shí)包含有四個(gè)模型組成的,分別是渲染模型(又分為高模、低模)、碰撞模型以及遮擋模型。其中遮擋模型和碰撞模型用于遮擋剔除和物理碰撞計(jì)算,不需要光滑組信息;渲染模型(低模、高模)用于游戲引擎中實(shí)際渲染使用,會(huì)根據(jù)相機(jī)的距離自適應(yīng)選擇低?;蛘吒吣?,因此渲染模型會(huì)用到光滑組信息。
[0058]3D渲染是,光滑組信息用于在渲染時(shí)造成一種模型面平滑的視覺(jué)效果。光滑組信息在3DMAX對(duì)于模型的元素次級(jí)來(lái)說(shuō)的,元素次級(jí)是指就是若干共享多邊形組成的一個(gè)集合。對(duì)于3Dmax中元素進(jìn)行拆分,有些元素有共享的頂點(diǎn),需要拆成2個(gè)點(diǎn),然后對(duì)于生成2個(gè)點(diǎn)進(jìn)行導(dǎo)出,當(dāng)然不會(huì)增加面的數(shù)量,只是面索引會(huì)改變,這樣研發(fā)人員可以對(duì)導(dǎo)出后的模型可以輕松的選擇單個(gè)元素。對(duì)于不同的面可以定義一個(gè)光滑組,也可以為各個(gè)面定義不同的光滑組,用光滑組ID來(lái)標(biāo)識(shí)不同的光滑組。例如,圖2中定義面A,B, C是同一個(gè)光滑組,光滑組ID記作光滑組I ;圖3中定義面A,B是同一個(gè)光滑組,光滑組ID記作光滑組1,定義面C是另一個(gè)光滑組,光滑組ID可記作光滑組2。
[0059]渲染模型還可以擁有多種材質(zhì),這里說(shuō)的材質(zhì)一般是由高光和法線貼圖合成的一張貼圖,該貼圖的RGB通道用于法線的X,Y, Z分量,而ALPHA通道,則是用于高光材質(zhì)。較佳的,在本發(fā)明實(shí)施例中,每個(gè)材質(zhì)都會(huì)索引到一個(gè)MTL文件中。
[0060]步驟S102,對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息。
[0061]由于光滑組信息是決定于相鄰面是需要軟邊或者硬邊的信息,如果相鄰面的光滑組ID是一樣的,即相鄰面是同一光滑組,則該相鄰面是軟邊,共享頂點(diǎn)的法線是這2個(gè)面的面法線取求和后的平均值;如果相鄰面的光滑組ID不是一樣的,則該相鄰面是硬邊,即這2個(gè)面的共享頂點(diǎn)的被拆分成2個(gè)頂點(diǎn),這2個(gè)頂點(diǎn)的法線是不同的。按照該原理,對(duì)模型中各個(gè)共享頂點(diǎn)一一進(jìn)行分析,判斷是否需要進(jìn)行拆分。
[0062]較佳的,本實(shí)施例中,對(duì)所述模型特征信息進(jìn)行分析處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息的過(guò)程中,具體包括了對(duì)模型的各個(gè)面的光滑組信息進(jìn)行分析,確定模型中相鄰的兩個(gè)面是否是同一光滑組。若是,不拆分所述兩個(gè)面共享的頂點(diǎn),將該頂點(diǎn)的法線賦值為所述兩個(gè)面的面法線的平均值;若否,則將所述兩個(gè)面共享的頂點(diǎn)拆分為兩個(gè)頂點(diǎn),將這兩個(gè)頂點(diǎn)的法線分別賦值為對(duì)應(yīng)面的面法線的數(shù)值。通過(guò)此轉(zhuǎn)換過(guò)程,使得從游戲引擎中導(dǎo)出的模型文件能夠更好的適應(yīng)于三維建模軟件對(duì)模型進(jìn)行還原,保證三維建模軟件對(duì)導(dǎo)出的模型細(xì)節(jié)識(shí)別的完整性。
[0063]進(jìn)一步的,確定模型中相鄰的兩個(gè)面是否是同一光滑組的方法可為:統(tǒng)計(jì)模型的頂點(diǎn)位置,以及被共享頂點(diǎn)的共享面列表信息;遍歷每個(gè)被共享頂點(diǎn)的共享面列表信息,確定出相鄰面,記錄相鄰面的面夾角;判斷相鄰面的面夾角是否大于45度,若是,確定對(duì)應(yīng)的相鄰面是同一光滑組,若否,確定對(duì)應(yīng)的相鄰面不是同一光滑組。
[0064]進(jìn)一步的,本實(shí)施例中確定出模型中相鄰的兩個(gè)面是否是同一光滑組之后,將屬于同一個(gè)光滑組的相鄰面按照光滑組ID插入到預(yù)設(shè)的全局相鄰的面列表中;不同光滑組ID對(duì)應(yīng)不同全局相鄰的面列表。例如面a、b同一個(gè)光滑組且光滑組ID為1,那么面a、b會(huì)插入到一個(gè)全局相鄰面列表里,而面C,d同一個(gè)光滑組且光滑組ID為2,那么面c,d會(huì)插入到另一個(gè)全局的相鄰面列表。對(duì)應(yīng)的,需構(gòu)建多個(gè)全局相鄰面列表。
[0065]遍歷所有全局相鄰的面列表,刪除面列表中相鄰面的重復(fù)記錄;例如,在全局相鄰面列表I和全局相鄰面列表2里,如果存在一樣的相鄰面就會(huì)刪除其中任意一個(gè)。
[0066]根據(jù)全局相鄰的面列表確定具有連續(xù)光滑組信息的面,由具有連續(xù)光滑組信息的面得出模型的連續(xù)光滑組信息。例如面a和面b具有光滑組而且面b和面c具有光滑組,那么面a、b、c即可組成一個(gè)連續(xù)光滑組信息,將面a、b、c打包一個(gè)列表。對(duì)應(yīng)的,會(huì)生成有多個(gè)所述列表保存連續(xù)光滑組信息。
[0067]然后對(duì)連續(xù)光滑組信息按照光滑組ID從小到大進(jìn)行排序,計(jì)算得到模型的光滑組數(shù)值信息。
[0068]步驟S103,將所述模型數(shù)據(jù)信息寫(xiě)入_0BJ文件和MTL文件,將所述_0BJ文件導(dǎo)入到3DMAX中打開(kāi),所述MTL文件保存_0BJ模型對(duì)應(yīng)的材質(zhì)信息,在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX中進(jìn)行三維渲染還原模型。在第一實(shí)施例中,該步驟具體為將所述模型數(shù)據(jù)信息中的頂點(diǎn)信息、UV坐標(biāo)信息、面信息和光滑組信息寫(xiě)入_0BJ文件;將所述模型數(shù)據(jù)信息中的材質(zhì)信息寫(xiě)入MTL文件。
[0069]較佳的,本實(shí)施中,該步驟還包括建立_0BJ文件與MTL文件的——對(duì)應(yīng)的索引關(guān)聯(lián)。具體方式可為:在_(?】文件中寫(xiě)入:mt I Iib模型文件名.mtl的MTL字段,通過(guò)該MTL字段可建立該_0BJ文件與文件名為模型文件名.mtl的MTL文件的索引關(guān)聯(lián);即關(guān)聯(lián)的_OBJ文件與MTL文件的文件名命名相同,僅后綴不同??梢?jiàn),mtllib模型文件名.mtl的MTL字段是嵌入在_0BJ文件中,是_0BJ文件與對(duì)應(yīng)MTL文件連接的樞紐。并且,將該_0BJ文件命名為模型文件名_0BJ并保存。
[0070]導(dǎo)出_0BJ文件和MTL文件后,就可以將所述_0BJ文件和MTL文件應(yīng)用到多中三維建模軟件,例如:ZBrush,MAYA。通過(guò)這些_(?】文件和MTL文件可以對(duì)從游戲引擎導(dǎo)出的模型進(jìn)行細(xì)化或修改,以得到游戲引擎中需要的模型。
[0071]通過(guò)本發(fā)明第一實(shí)施例,讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息;對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息;將所述模型數(shù)據(jù)信息寫(xiě)入_0BJ文件和MTL文件,將所述_0BJ文件和MTL文件導(dǎo)出到3DMAX中,以在3DMAX進(jìn)行三維渲染還原模型。本發(fā)明的方案,能夠從游戲引擎中將模型信息導(dǎo)出為適用于3DMAX標(biāo)準(zhǔn)的_0BJ模型文件,使得導(dǎo)出的模型信息能夠順利的應(yīng)用到3DMAX中進(jìn)行編輯或修改;另外,本發(fā)明的導(dǎo)出模型方法大大提高了模型的利用率,有利于提高研發(fā)效率,節(jié)約了人力成本,適用性強(qiáng),導(dǎo)出的模型文件能夠被多種三維建模軟件識(shí)別。
[0072]以下為本發(fā)明實(shí)施例提供的一種導(dǎo)出3DMAX可識(shí)別的模型信息的裝置的實(shí)施例。所述裝置的實(shí)施例與上述的方法實(shí)施例屬于同一構(gòu)思,裝置的實(shí)施例中未詳盡描述的細(xì)節(jié)內(nèi)容,可以參考上述方法實(shí)施例。
[0073]圖4示出了本發(fā)明第二實(shí)施例的一種導(dǎo)出3DMAX可識(shí)別的模型信息的裝置的結(jié)構(gòu)示意圖,下面進(jìn)行詳細(xì)說(shuō)明。
[0074]請(qǐng)參見(jiàn)圖4,所述裝置包括:提取特征模塊301、特征轉(zhuǎn)化模塊302、導(dǎo)出模塊303.下面對(duì)各模塊進(jìn)行具體描述。
[0075]所述提取特征模塊301,用于讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息。
[0076]本實(shí)施例中,所述模型特征信息包括:材質(zhì)信息、頂點(diǎn)信息、UV坐標(biāo)信息和面信息以及光滑組信息。
[0077]所述特征轉(zhuǎn)化模塊302,用于對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息。
[0078]本實(shí)施例中,對(duì)所述模型特征信息進(jìn)行分析處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息的過(guò)程具體包括:
[0079]對(duì)模型的各個(gè)面的光滑組信息進(jìn)行分析,確定模型中相鄰的兩個(gè)面是否屬于同一光滑組,若是,不拆分所述兩個(gè)面共享的頂點(diǎn),將該頂點(diǎn)的法線賦值為所述兩個(gè)面的面法線的平均值;若否,則將所述兩個(gè)面共享的頂點(diǎn)拆分為兩個(gè)頂點(diǎn),將這兩個(gè)頂點(diǎn)的法線分別賦值為對(duì)應(yīng)面的面法線的數(shù)值。
[0080]所述導(dǎo)出模塊303,用于將所述模型數(shù)據(jù)信息寫(xiě)入_0BJ文件和MTL文件,以根據(jù)所述_0BJ文件和MTL文件在3DMAX中進(jìn)行三維渲染還原模型。本實(shí)施例中具體為將所述_0BJ文件導(dǎo)入到3DMAX中打開(kāi),所述MTL文件保存_0BJ模型對(duì)應(yīng)的材質(zhì)信息,在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX中進(jìn)行三維渲染還原模型。
[0081]優(yōu)選的,本實(shí)施例中,所述導(dǎo)出模塊303,具體用于將所述模型數(shù)據(jù)信息中的頂點(diǎn)信息、UV坐標(biāo)信息、面信息和光滑組信息寫(xiě)入_0BJ文件;將所述模型數(shù)據(jù)信息中的材質(zhì)信息寫(xiě)入MTL文件。
[0082]本實(shí)施例中,所述導(dǎo)出模塊303還用于建立_0BJ文件與MTL文件的--對(duì)應(yīng)的索引關(guān)聯(lián)。具體可為:在_(?】文件中寫(xiě)入MTL字段:mt I Iib模型文件名.mtl,通過(guò)該MTL字段可建立該_0BJ文件與文件名為模型文件名.mtl的MTL文件的索引關(guān)聯(lián);即關(guān)聯(lián)的_(?】文件與MTL文件的文件名命名相同,僅后綴不同??梢?jiàn),MTL字段模型文件名.mtl是嵌入在_0BJ文件中,是_0BJ文件與對(duì)應(yīng)MTL文件連接的樞紐。并且,將該_0BJ文件命名為模型文件名_0BJ并保存。
[0083]通過(guò)上述第二實(shí)施例導(dǎo)出的_0BJ文件和MTL文件可應(yīng)用到多中三維建模軟件,例如:ZBrush,MAYA。通過(guò)這些_0BJ文件和MTL文件可以對(duì)從游戲引擎導(dǎo)出的模型進(jìn)行細(xì)化或修改,以得到游戲引擎中需要的模型。
[0084]通過(guò)上述第二實(shí)施例,由提取特征模塊讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息;由特征轉(zhuǎn)化模塊對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息;導(dǎo)出模塊將所述模型數(shù)據(jù)信息寫(xiě)入_0BJ文件和MTL文件,將所述_0BJ文件導(dǎo)入到3DMAX中打開(kāi),而MTL文件保存_0BJ模型的材質(zhì)信息,可在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX進(jìn)行三維渲染還原模型。本發(fā)明的方案,能夠從游戲引擎中將模型信息導(dǎo)出為適用于3DMAX標(biāo)準(zhǔn)的_0BJ模型文件,使得導(dǎo)出的模型信息能夠順利的應(yīng)用到3DMAX中進(jìn)行編輯或修改;另外,本發(fā)明的導(dǎo)出模型方法大大提高了模型的利用率,有利于提高研發(fā)效率,節(jié)約了人力成本,適用性強(qiáng),導(dǎo)出的模型文件能夠被多種三維建模軟件識(shí)別。
[0085]以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來(lái)限定本發(fā)明之權(quán)利要求范圍,因此,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種導(dǎo)出3DMAX可識(shí)別的模型信息的方法,其特征在于,包括: 讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息; 對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息; 將所述模型數(shù)據(jù)信息寫(xiě)入_OBJ文件和MTL文件,將所述_OBJ文件導(dǎo)入到3DMAX中打開(kāi),所述MTL文件保存_OBJ模型對(duì)應(yīng)的材質(zhì)信息,在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX中進(jìn)行三維渲染還原模型。
2.根據(jù)權(quán)利要求1所述的導(dǎo)出3DMAX可識(shí)別的模型信息的方法,其特征在于,所述模型特征信息包括:材質(zhì)信息、頂點(diǎn)信息、UV坐標(biāo)信息、面信息以及光滑組信息。
3.根據(jù)權(quán)利要求2所述的導(dǎo)出3DMAX可識(shí)別的模型信息的方法,其特征在于,所述將所述模型數(shù)據(jù)信息寫(xiě)入_OBJ文件和MTL文件,包括: 將所述模型數(shù)據(jù)信息中的頂點(diǎn)信息、UV坐標(biāo)信息、面信息和光滑組信息寫(xiě)入_OBJ文件; 將所述模型數(shù)據(jù)信息中的材質(zhì)信息寫(xiě)入MTL文件; 所述材質(zhì)信息包括:漫反射貼圖、高光貼圖在游戲引擎中保存的地址信息。
4.根據(jù)權(quán)利要求3所述的導(dǎo)出3DMAX可識(shí)別的模型信息的方法,其特征在于,所述的所述將所述模型數(shù)據(jù)信息寫(xiě)入_OBJ文件和MTL文件,還包括: 建立_OBJ文件與MTL文件的一一對(duì)應(yīng)的索引關(guān)聯(lián)。
5.根據(jù)權(quán)利要求4所述的導(dǎo)出3DMAX可識(shí)別的模型信息的方法,其特征在于,所述的建立_(?】文件與MTL文件的一一對(duì)應(yīng)的索引關(guān)聯(lián),包括: 在_(?】文件中寫(xiě)入mtllib模型文件名.mtl的MTL字段,通過(guò)該MTL字段建立該_0BJ文件與文件名為模型文件名.mtl的MTL文件的索引關(guān)聯(lián); 將該_OBJ文件命名為模型文件名_OBJ并保存。
6.根據(jù)權(quán)利要求1所述的導(dǎo)出3DMAX可識(shí)別的模型信息的方法,其特征在于,所述對(duì)所述模型特征信息進(jìn)行分析處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息,包括: 對(duì)模型的各個(gè)面的光滑組信息進(jìn)行分析,確定模型中相鄰的兩個(gè)面是否是同一光滑組, 若是,將所述兩個(gè)面共享的頂?shù)姆ň€賦值為所述兩個(gè)面的面法線的平均值; 若否,則將所述兩個(gè)面共享的頂點(diǎn)拆分為兩個(gè)頂點(diǎn),將這兩個(gè)頂點(diǎn)的法線分別賦值為對(duì)應(yīng)面的面法線的數(shù)值。
7.根據(jù)權(quán)利要求6所述的導(dǎo)出3DMAX可識(shí)別的模型信息的方法,其特征在于,所述對(duì)模型的各個(gè)面的光滑組信息進(jìn)行分析,確定模型中相鄰的兩個(gè)面是否是同一光滑組,包括: 統(tǒng)計(jì)模型的頂點(diǎn)位置,以及被共享頂點(diǎn)的共享面列表信息; 遍歷每個(gè)被共享頂點(diǎn)的共享面列表信息,確定出相鄰面,記錄相鄰面的面夾角; 判斷相鄰面的面夾角是否大于45度,若是,確定對(duì)應(yīng)的相鄰面是同一光滑組,若否,確定對(duì)應(yīng)的相鄰面不是同一光滑組。
8.根據(jù)權(quán)利要求7所述的導(dǎo)出3DMAX可識(shí)別的模型信息的方法,其特征在于,所述確定模型中相鄰的兩個(gè)面是否是同一光滑組之后,還包括: 將屬于同一個(gè)光滑組的相鄰面按照光滑組ID插入到預(yù)設(shè)的全局相鄰的面列表中;不同光滑組ID對(duì)應(yīng)不同全局相鄰的面列表; 遍歷所述全局相鄰的面列表,刪除面列表中相鄰面的重復(fù)記錄; 根據(jù)全局相鄰的面列表確定具有連續(xù)光滑組信息的面,由具有連續(xù)光滑組信息的面得出模型的連續(xù)光滑組信息; 對(duì)連續(xù)光滑組信息按照光滑組ID從小到大進(jìn)行排序,計(jì)算得到模型的光滑組數(shù)值信肩、O
9.一種導(dǎo)出3DMAX可識(shí)別的模型信息的裝置,其特征在于,包括: 提取特征模塊,用于讀取游戲引擎中需導(dǎo)出的模型文件,分析得出模型特征信息; 特征轉(zhuǎn)化模塊,用于對(duì)所述模型特征信息進(jìn)行轉(zhuǎn)化處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息; 導(dǎo)出模塊,用于將所述模型數(shù)據(jù)信息寫(xiě)入_OBJ文件和MTL文件,將所述_OBJ文件導(dǎo)入到3DMAX中打開(kāi),所述MTL文件保存_OBJ模型對(duì)應(yīng)的材質(zhì)信息,在導(dǎo)入模型后給其賦予材質(zhì)信息,以在3DMAX中進(jìn)行三維渲染還原模型。
10.根據(jù)權(quán)利要求9所述的導(dǎo)出3DMAX可識(shí)別的模型信息的裝置,其特征在于,所述模型特征信息包括:材質(zhì)信息、頂點(diǎn)信息、UV坐標(biāo)信息和面信息以及光滑組信息; 所述對(duì)所述模型特征信息進(jìn)行分析處理,將其轉(zhuǎn)化為適應(yīng)于3DMAX模型渲染標(biāo)準(zhǔn)的模型數(shù)據(jù)信息,包括: 對(duì)模型的各個(gè)面的光滑組信息進(jìn)行分析,確定模型中相鄰的兩個(gè)面是否屬于同一光滑組, 若是,將所述兩個(gè)面共享的頂點(diǎn)的法線賦值為所述兩個(gè)面的面法線的平均值; 若否,則將所述兩個(gè)面共享的頂點(diǎn)拆分為兩個(gè)頂點(diǎn),將這兩個(gè)頂點(diǎn)的法線分別賦值為對(duì)應(yīng)面的面法線的數(shù)值; 所述導(dǎo)出模塊,具體用于將所述模型數(shù)據(jù)信息中的頂點(diǎn)信息、UV坐標(biāo)信息、面信息和光滑組信息寫(xiě)入_OBJ文件;將所述模型數(shù)據(jù)信息中的材質(zhì)信息寫(xiě)入MTL文件; 所述材質(zhì)信息包括:漫反射貼圖、高光貼圖在游戲引擎中保存的地址信息。
【文檔編號(hào)】G06F9/44GK104199659SQ201410432856
【公開(kāi)日】2014年12月10日 申請(qǐng)日期:2014年8月28日 優(yōu)先權(quán)日:2014年8月28日
【發(fā)明者】張翼 申請(qǐng)人:無(wú)錫梵天信息技術(shù)股份有限公司