一種圖像處理的方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及圖像技術(shù)領(lǐng)域,更具體地,涉及一種圖像處理的方法。
【背景技術(shù)】
[0002]在大型網(wǎng)絡(luò)游戲場(chǎng)景維護(hù)過(guò)程中,常常需要把游戲場(chǎng)景導(dǎo)入3ds max編輯(比如切割導(dǎo)航),在這種情況下就需要一種高效穩(wěn)定的方法,避免因場(chǎng)景資源過(guò)多而導(dǎo)致系統(tǒng)崩潰,并且能在有限的時(shí)間和空間里完成場(chǎng)景的導(dǎo)入。
[0003]以Unity3D為例的一批游戲引擎,內(nèi)部使用3ds max支持的格式,如標(biāo)準(zhǔn)AutodeskFBX格式,這樣就可以在游戲引擎里和3ds max里編輯同一個(gè)模型文件。Autodesk FBX是Autodesk公司出品的一款用于跨平臺(tái)的免費(fèi)三維創(chuàng)作與交換格式的軟件,通過(guò)FBX用戶能訪問(wèn)大多數(shù)三維供應(yīng)商的三維文件。
[0004]Autodesk FBX數(shù)據(jù)交換技術(shù)提供了新的類,可以幫助歐特克娛樂(lè)創(chuàng)作套件2012中的各個(gè)軟件之間實(shí)現(xiàn)更緊密的集成,并且可以為專用工作流程中的數(shù)據(jù)迀移提供更好的支持。通過(guò)添加一系列的增強(qiáng)特性,Autodesk Maya 2012軟件、Autodesk 3ds Max2012 軟件、Autodesk Softimage 2012 軟件、Autodesk Mudbox 2012 軟件和 AutodeskMot1nBuilder 2012軟件之間的互操作性得到了增強(qiáng),美術(shù)人員將可以使用更高效的多應(yīng)用工作流程。
[0005]Autodesk提供了基于C++(還有Python)的SDK來(lái)實(shí)現(xiàn)對(duì)FBX格式的各種讀寫、修改以及轉(zhuǎn)換等操作,之所以如此是因?yàn)镕BX的格式不是公開(kāi)的。
[0006]Autodesk FBX格式與低版本3ds max并非完美兼容,美術(shù)人員導(dǎo)出Autodesk FBX格式,應(yīng)用到3ds max中將會(huì)丟失除第零層以外的其他圖層UV信息。
【發(fā)明內(nèi)容】
[0007]本發(fā)明實(shí)施例提出一種圖像處理的方法,導(dǎo)出Autodesk FBX格式應(yīng)用到3ds max中時(shí)保留完整的UV信息,進(jìn)而保證Autodesk FBX格式與低版本3ds max的兼容。
[0008]本發(fā)明實(shí)施例的技術(shù)方案如下:
[0009]一種圖像處理的方法,所述方法包括:
[0010]遍歷實(shí)際場(chǎng)景,將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn);
[0011]在場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型,并把所有葉子節(jié)點(diǎn)的第N層UV合并為3ds max模型的第零層UV ;
[0012]編輯第N層UV時(shí),將合并后3ds max模型的第零層UV設(shè)置為3ds max的第零層UVo
[0013]當(dāng)N為I時(shí),所述將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn)包括:
[0014]以第一層節(jié)點(diǎn)為根節(jié)點(diǎn),分成對(duì)應(yīng)數(shù)量的葉子節(jié)點(diǎn);
[0015]將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn);
[0016]所述將場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型包括:
[0017]將場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的每個(gè)葉子節(jié)點(diǎn)合并為一個(gè)3ds max模型。
[0018]當(dāng)N大于I時(shí),所述將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn)包括:
[0019]將與同一個(gè)物體含有關(guān)聯(lián)UV的模型作為子節(jié)點(diǎn)構(gòu)造場(chǎng)景樹(shù),將所述場(chǎng)景樹(shù)作為子樹(shù)附加到根節(jié)點(diǎn);
[0020]以第一層節(jié)點(diǎn)為根節(jié)點(diǎn),分成對(duì)應(yīng)數(shù)量的葉子節(jié)點(diǎn);
[0021]將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn);
[0022]所述將場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型包括:
[0023]將場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的每個(gè)葉子節(jié)點(diǎn)合并為一個(gè)3ds max模型。
[0024]所述將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn):
[0025]將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn);
[0026]按照FBX的規(guī)則序列化場(chǎng)景樹(shù)得到FBX模型。
[0027]所述將場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型包括:
[0028]導(dǎo)入FBX模型;
[0029]將場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型。
[0030]所述方法進(jìn)一步包括:建立資源池緩沖區(qū),所述緩沖區(qū)存儲(chǔ)共享資源的I/O文件名和共享資源。
[0031]所述資源池包括模型資源池和圖片資源池。
[0032]所述方法進(jìn)一步包括:
[0033]將場(chǎng)景樹(shù)下中同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型,當(dāng)調(diào)用資源的I/O文件名不在緩沖區(qū),且所述調(diào)用資源小于等于剩余緩沖區(qū)大小,則將所述調(diào)用資源調(diào)入緩沖區(qū)并提供調(diào)度接口。
[0034]所述方法進(jìn)一步包括:
[0035]將場(chǎng)景樹(shù)下中同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型,當(dāng)所調(diào)用資源的I/O文件名不在緩沖區(qū),且所述調(diào)用資源大于剩余緩沖區(qū)大小,則終止程序。
[0036]從上述技術(shù)方案中可以看出,在本發(fā)明實(shí)施例中遍歷實(shí)際場(chǎng)景,將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn);然后,在場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型,并把所有葉子節(jié)點(diǎn)的第N層UV合并為3ds max模型的第零層UV ;編輯3第N層UV時(shí),將合并后3ds max模型的第零層UV設(shè)置為3ds max的第零層UV0由于模型的各部分信息都可以合并因此在導(dǎo)出Autodesk FBX格式應(yīng)用到3ds max中時(shí)能夠保留完整的UV信息,進(jìn)而保證Autodesk FBX格式與低版本3ds max的兼容。
【附圖說(shuō)明】
[0037]圖1為圖像處理的方法流程示意圖;
[0038]圖2為場(chǎng)景樹(shù)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0039]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)表達(dá)得更加清楚明白,下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明再作進(jìn)一步詳細(xì)的說(shuō)明。
[0040]在本發(fā)明實(shí)施例中,首先遍歷實(shí)際場(chǎng)景將遍歷到的包括UV的模型增加到場(chǎng)景樹(shù)中葉子節(jié)點(diǎn),然后在場(chǎng)景樹(shù)下同一物體對(duì)應(yīng)的葉子節(jié)點(diǎn)合并為3ds max模型,并把所有葉子節(jié)點(diǎn)的第N層UV合并為3ds max模型的第零層UV ;編輯第N層UV時(shí),將合并后3ds max模型的第零層UV設(shè)置為3ds max的第零層UV。由于包括全部UV的模型都可以合并因此在導(dǎo)出Autodesk FBX格式應(yīng)用到3ds max中時(shí)能夠保留完整的UV信息,進(jìn)而保證AutodeskFBX格式與低版本3ds max的兼容。
[0041]下面結(jié)合附圖1詳細(xì)說(shuō)明書(shū)本發(fā)明的技術(shù)方案。
[0042]101、遍歷實(shí)際場(chǎng)景,將遍歷到的同一個(gè)物體含有關(guān)聯(lián)UV的模型增加到場(chǎng)景樹(shù)中的葉子節(jié)點(diǎn)。
[0043]紋理坐標(biāo)通常具有U和V兩個(gè)坐標(biāo)軸,因此稱之為UV坐標(biāo)。在本發(fā)明中將UV坐標(biāo)簡(jiǎn)稱為UV。根據(jù)實(shí)際場(chǎng)景的需要,不同的物體對(duì)應(yīng)不同層紋理的UV。例如,地形和植物對(duì)應(yīng)一層紋理的UV,建筑物需要兩層紋理的UV。而其他的物體需要大于三層紋理的UV??梢哉J(rèn)為物體對(duì)應(yīng)N層紋理的UV,其中N大于等于I。N的值根據(jù)具體的實(shí)際情況而確定。
[0044]下面以在游戲場(chǎng)景中的地形、植物和建筑物為例,具體說(shuō)明。
[0045]在游戲場(chǎng)景中,首先遍歷一遍所有地形以及游戲物體。遍歷過(guò)程中,如果遍歷到地形塊則直接將地形加到場(chǎng)景樹(shù)的葉子點(diǎn),因?yàn)橛螒蛑械匦尾恍枰庹召N圖的UV層即第二層UV;如果遍歷到建筑,則將同一個(gè)建筑上相同光照貼圖的物體加到同一個(gè)空節(jié)點(diǎn)下,組成一