亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種3d模型拆分與組合的方法

文檔序號(hào):8473149閱讀:1230來源:國知局
一種3d模型拆分與組合的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及適用于人機(jī)交互領(lǐng)域中(特別是針對(duì)于游戲領(lǐng)域)虛擬現(xiàn)實(shí)場(chǎng)景3D模型的操作和靈活控制,具體涉及一種3D模型拆分與組合的方法。
【背景技術(shù)】
[0002]隨著虛擬現(xiàn)實(shí)技術(shù)的深入研宄與應(yīng)用,三維可視化顯示技術(shù)及人機(jī)交互技術(shù)的進(jìn)一步發(fā)展,人們可以將各種3D模型導(dǎo)入虛線現(xiàn)實(shí)場(chǎng)景中,并且通過渲染技術(shù)渲染出逼真的模型。在游戲、仿真設(shè)計(jì)中,在人機(jī)交互技術(shù)的基礎(chǔ)上,需要對(duì)虛擬場(chǎng)景中的3D模型進(jìn)行必要的拆分和組合,以增強(qiáng)人機(jī)交互的真實(shí)感、刺激感和新鮮感。通過對(duì)3D模型的拆分和較為智能的組合操作,能給游戲及3D模型的設(shè)計(jì)構(gòu)造帶來方便和制作周期的縮短。目前通過人機(jī)交互拆分和組合3D模型識(shí)別效率較低,計(jì)算復(fù)雜,實(shí)時(shí)性差,不夠智能化。

【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的在于提供一種3D模型拆分與組合的方法。
[0004]為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種3D模型拆分與組合的方法,包括如下步驟,
步驟S1:導(dǎo)入3D模型:在虛擬現(xiàn)實(shí)場(chǎng)景中導(dǎo)入各3D模型,各3D模型具有各自的母編號(hào)ID,且各3D模型對(duì)應(yīng)的各子模塊具有各自的子編號(hào)ID ;
步驟S2:拆分3D模型:通過鼠標(biāo)拆分各3D模型,拆分過程中,各子模塊記錄其所屬3D模型的母編號(hào)ID以及與之相鄰的所有子模塊的子編號(hào)ID,并存入一分配給各子模塊的編號(hào)ID存儲(chǔ)列表中;
步驟S3:碰撞檢測(cè):對(duì)待組合的兩個(gè)子模塊進(jìn)行碰撞檢測(cè),若判斷碰撞成功,則執(zhí)行步驟S4;否則,重復(fù)步驟S3;
步驟S4:組合3D模型:碰撞的兩個(gè)子模塊根據(jù)自身的編號(hào)ID存儲(chǔ)列表中存儲(chǔ)的編號(hào)ID,判斷與之碰撞的子模塊是否為與之相鄰的子模塊,若是,則兩個(gè)子模塊組合成一個(gè)新的模塊,同時(shí)更新新模塊的子編號(hào)ID,繼續(xù)下一次組合;若否,則兩個(gè)子模塊不進(jìn)行組合。
[0005]在本發(fā)明實(shí)施例中,所述步驟SI中,所述3D模型采用3ds Max軟件來構(gòu)建,所述3D模型的導(dǎo)入采用第三方開源庫Assimp。
[0006]在本發(fā)明實(shí)施例中,所述步驟SI導(dǎo)入3D模型后,還需通過OpenGL對(duì)3D模型進(jìn)行渲染。
[0007]在本發(fā)明實(shí)施例中,所述步驟S3的碰撞檢測(cè)采用包圍體策略碰撞檢測(cè)方法。
[0008]相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:本方法通過在虛擬場(chǎng)景中導(dǎo)入3D模型的方法,并用Assimp開源庫解析模型格式,通過OpenGL對(duì)其進(jìn)行渲染,對(duì)初始狀態(tài)下的3D模型構(gòu)建初始化編號(hào)ID列表,使得每個(gè)模塊維持記錄母編號(hào)ID和與之相鄰的所有子模塊編號(hào)ID,利用包圍體策略的碰撞檢測(cè)技術(shù),加快碰撞檢測(cè)速度,利用模塊存儲(chǔ)列表實(shí)現(xiàn)相鄰模塊的組合,通過本發(fā)明及方法,實(shí)現(xiàn)一種3D模型拆分與組合,降低了計(jì)算的復(fù)雜性,實(shí)時(shí)性較強(qiáng),模塊組合判斷速度快,能夠自動(dòng)識(shí)別對(duì)相鄰的模塊進(jìn)行組合,具有較強(qiáng)的可操作性和實(shí)用性。
【附圖說明】
[0009]圖1為本發(fā)明方法流程圖。
【具體實(shí)施方式】
[0010]下面結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行具體說明。
[0011]如圖1所示,本發(fā)明的一種3D模型拆分與組合的方法,包括如下步驟,
步驟S1:導(dǎo)入3D模型:在虛擬現(xiàn)實(shí)場(chǎng)景中導(dǎo)入各3D模型,各3D模型具有各自的母編號(hào)ID,且各3D模型對(duì)應(yīng)的各子模塊具有各自的子編號(hào)ID ;所述3D模型采用3ds Max軟件來構(gòu)建,所述3D模型的導(dǎo)入采用第三方開源庫Assimp ;導(dǎo)入3D模型后,還需通過OpenGL對(duì)3D模型進(jìn)行渲染;
步驟S2:拆分3D模型:通過鼠標(biāo)拆分各3D模型,拆分過程中,各子模塊記錄其所屬3D模型的母編號(hào)ID以及與之相鄰的所有子模塊的子編號(hào)ID,并存入一分配給各子模塊的編號(hào)ID存儲(chǔ)列表中;
步驟S3:碰撞檢測(cè):對(duì)待組合的兩個(gè)子模塊進(jìn)行碰撞檢測(cè),若判斷碰撞成功,則執(zhí)行步驟S4 ;否則,重復(fù)步驟S3 ;所述碰撞檢測(cè)采用包圍體策略碰撞檢測(cè)方法;
步驟S4:組合3D模型:碰撞的兩個(gè)子模塊根據(jù)自身的編號(hào)ID存儲(chǔ)列表中存儲(chǔ)的編號(hào)ID,判斷與之碰撞的子模塊是否為與之相鄰的子模塊,若是,則兩個(gè)子模塊組合成一個(gè)新的模塊,同時(shí)更新新模塊的子編號(hào)ID,繼續(xù)下一次組合;若否,則兩個(gè)子模塊不進(jìn)行組合。
[0012]以下為本發(fā)明方法的具體實(shí)施方案。
[0013]本方法首先將3D模型導(dǎo)入虛擬現(xiàn)實(shí)場(chǎng)景中,由3D MAX軟件構(gòu)建的3D模型都具有自己屬性的ID號(hào)及每個(gè)子模塊也具有獨(dú)立的子編號(hào)ID。導(dǎo)入后記錄3D模型的母編號(hào)ID,同時(shí)每個(gè)子模塊還記錄著與之相鄰的每個(gè)模塊的子編號(hào)ID。通過鼠標(biāo)可以將模型的任意模塊拆分移動(dòng)到任意位置,拆分后每個(gè)子模塊實(shí)時(shí)更新與之相鄰的模塊的子編號(hào)ID,以此類推,層層記錄。每個(gè)模塊團(tuán)體都有唯一的識(shí)別編號(hào)。通過鼠標(biāo),對(duì)任意放置的模塊團(tuán)體進(jìn)行移動(dòng)組合,在移動(dòng)組合的過程中,首先通過碰撞檢測(cè)是否與某個(gè)具體的子模塊相碰撞,如果相碰撞則將相碰撞的兩個(gè)模塊組合為一體,構(gòu)成新的模塊,同時(shí)更新新模塊的子編號(hào)ID,之后將新模塊作為一個(gè)整體,實(shí)現(xiàn)與其他模塊的碰撞組合,同理以此類推,最終實(shí)現(xiàn)對(duì)3D模型的拆分和智能組合,具體實(shí)現(xiàn)步驟如下:
(I)導(dǎo)入3D模型
具體步驟包括:3D模型采用3ds Max軟件構(gòu)建的模型,使用一個(gè)第三方開源庫Assimp(Open Asset Import Library)來導(dǎo)入模型文件,最后利用三維圖形開發(fā)工具OpenGL對(duì)3D模型進(jìn)行渲染。
[0014]①3D Stud1 MAX是一款非常優(yōu)秀的三維模型構(gòu)建軟件,而OpenGL的優(yōu)勢(shì)并不是建立三維模型,也沒有提供建立三維模型的高級(jí)命令。相比于0penGL,3D Stud1 MAX建立三維模型則非常的簡(jiǎn)單。3DS模型具有自己的數(shù)據(jù)結(jié)構(gòu),能將三維模型信息存儲(chǔ)在其中,方便導(dǎo)入與數(shù)據(jù)提取。
[0015]②3DS文件結(jié)構(gòu)是由塊組成的,在主要的塊中又包含了各自的子塊。塊是一個(gè)具有層次結(jié)構(gòu)的區(qū)域,3DS文件有一個(gè)ID號(hào)的主塊,表示3DS文件的開始,還有每個(gè)子模塊的ID號(hào)。用Assimp開源庫解析模型格式,將模型數(shù)據(jù)導(dǎo)入,完成虛擬環(huán)境3D模型框架的建立。
[0016]③通過Assimp導(dǎo)入的3D模型通常只有模型的框架,沒有具體的模型逼真效果,需要通過OpenGL對(duì)其進(jìn)行渲染,使其具有更好的效果。
[0017](2)記錄母編號(hào)ID及子編號(hào)ID
初始化導(dǎo)入3D模型時(shí),每個(gè)3D模型都有唯一的編號(hào)ID,用以區(qū)別其他3D模型。用Assimp開源庫讀取3D模型時(shí),還可以讀取每個(gè)子模塊的編號(hào)ID。初始化時(shí)給每個(gè)子模塊分配編號(hào)ID存儲(chǔ)列表,用于存儲(chǔ)與具體子模塊相鄰的所有模塊的編號(hào)ID。
[0018](3)鼠標(biāo)拆分3D模型
利用鼠標(biāo)射線拾取法,可以實(shí)現(xiàn)鼠標(biāo)對(duì)具體模塊的拾取拆分。在拆分的過程中,每個(gè)子模塊依舊記錄著與自己相鄰的每個(gè)模塊的編號(hào)ID。如當(dāng)拆分第一個(gè)模塊后,拆分的單個(gè)模塊記錄與之相鄰的每個(gè)模塊的編號(hào)ID,剩余的部分同樣記錄與之相鄰的每個(gè)模塊的編號(hào)ID0
[0019](4)子模塊記錄母編號(hào)ID和相鄰子模塊編號(hào)ID
在拆分的過程中,為了表征該具體子模塊的具體歸屬問題,需要在每個(gè)模塊的ID列表中體現(xiàn)母編號(hào)ID,也即屬于哪個(gè)具體的3D模型,后續(xù)的組合將避免出現(xiàn)模塊不匹配等問題。
[0020](5)碰撞檢測(cè)
在進(jìn)行模塊組合之前,首先需要判斷待組合的兩個(gè)模塊之間是否相碰,只有相碰的模塊才有可能組合成一個(gè)新的整體。3D模型都是由很多數(shù)據(jù)構(gòu)成,三角網(wǎng)格數(shù)據(jù)龐大,一一遍歷耗時(shí)嚴(yán)重,嚴(yán)重降低碰撞檢測(cè)速度,本方法還將采用包圍體策略,對(duì)子模塊構(gòu)建球狀包圍體或者盒狀包圍體,碰撞檢測(cè)過程中,將兩個(gè)模塊每個(gè)數(shù)據(jù)的--遍歷轉(zhuǎn)變?yōu)閮蓚€(gè)包圍體的碰撞檢測(cè),從而大大降低了計(jì)算量。包圍體的碰撞檢測(cè),將構(gòu)成子模塊的所有數(shù)據(jù)點(diǎn)都包含在包圍體里面,通過球狀包圍體中心點(diǎn)、半徑或者盒狀包圍體中心、半徑的位置關(guān)系判斷是否碰撞。
[0021](6)智能組合子模塊
利用包圍體策略碰撞檢測(cè)方法,鼠標(biāo)移動(dòng)子模塊進(jìn)行組合時(shí),判斷碰撞成功之后,碰撞的兩個(gè)子模塊都會(huì)根據(jù)自己的編號(hào)ID列表,將每個(gè)ID號(hào)與碰撞的模塊ID號(hào)比較,若與之碰撞的模塊編號(hào)ID在對(duì)應(yīng)的編號(hào)ID列表中,則證明兩者原本就是相鄰的模塊,可以組合成一個(gè)新的整體;若與之碰撞的模塊編號(hào)ID不在對(duì)應(yīng)的編號(hào)ID列表中,則證明兩者原本就不是相鄰的模塊,兩者不能組合成一個(gè)新的整體,將自動(dòng)排斥不進(jìn)行組合。
[0022]以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。
【主權(quán)項(xiàng)】
1.一種3D模型拆分與組合的方法,其特征在于:包括如下步驟, 步驟S1:導(dǎo)入3D模型:在虛擬現(xiàn)實(shí)場(chǎng)景中導(dǎo)入各3D模型,各3D模型具有各自的母編號(hào)ID,且各3D模型對(duì)應(yīng)的各子模塊具有各自的子編號(hào)ID ; 步驟S2:拆分3D模型:通過鼠標(biāo)拆分各3D模型,拆分過程中,各子模塊記錄其所屬3D模型的母編號(hào)ID以及與之相鄰的所有子模塊的子編號(hào)ID,并存入一分配給各子模塊的編號(hào)ID存儲(chǔ)列表中; 步驟S3:碰撞檢測(cè):對(duì)待組合的兩個(gè)子模塊進(jìn)行碰撞檢測(cè),若判斷碰撞成功,則執(zhí)行步驟S4;否則,重復(fù)步驟S3; 步驟S4:組合3D模型:碰撞的兩個(gè)子模塊根據(jù)自身的編號(hào)ID存儲(chǔ)列表中存儲(chǔ)的編號(hào)ID,判斷與之碰撞的子模塊是否為與之相鄰的子模塊,若是,則兩個(gè)子模塊組合成一個(gè)新的模塊,同時(shí)更新新模塊的子編號(hào)ID,繼續(xù)下一次組合;若否,則兩個(gè)子模塊不進(jìn)行組合。
2.根據(jù)權(quán)利要求1所述的一種3D模型拆分與組合的方法,其特征在于:所述步驟SI中,所述3D模型采用3ds Max軟件來構(gòu)建,所述3D模型的導(dǎo)入采用第三方開源庫Assimp。
3.根據(jù)權(quán)利要求1所述的一種3D模型拆分與組合的方法,其特征在于:所述步驟SI導(dǎo)入3D模型后,還需通過OpenGL對(duì)3D模型進(jìn)行渲染。
4.根據(jù)權(quán)利要求1所述的一種3D模型拆分與組合的方法,其特征在于:所述步驟S3的碰撞檢測(cè)采用包圍體策略碰撞檢測(cè)方法。
【專利摘要】本發(fā)明涉及一種3D模型拆分與組合的方法,該方法,首先將3D模型導(dǎo)入虛擬現(xiàn)實(shí)場(chǎng)景中,構(gòu)建的3D模型都具有自己屬性的ID號(hào)及每個(gè)子模塊也具有獨(dú)立的子編號(hào)ID,導(dǎo)入后記錄3D模型的母編號(hào)ID,同時(shí)每個(gè)子模塊還記錄著與之相鄰的子模塊的子編號(hào)ID,將3D模型的任意模塊拆分移動(dòng)到任意位置,拆分后每個(gè)子模塊實(shí)時(shí)更新與之相鄰的子模塊的子編號(hào)ID,以此類推,層層記錄,通過鼠標(biāo),對(duì)任意放置的模塊團(tuán)體進(jìn)行移動(dòng)組合,在移動(dòng)組合的過程中,首先通過碰撞檢測(cè)是否與某個(gè)具體的子模塊相碰撞,如果相碰撞則將相碰撞的兩個(gè)模塊組合為一體,構(gòu)成新的模塊,同時(shí)更新新模塊的子編號(hào)ID,之后將新模塊作為一個(gè)整體,實(shí)現(xiàn)與其他模塊的碰撞組合,同理以此類推,最終實(shí)現(xiàn)對(duì)3D模型的拆分和智能組合。
【IPC分類】G06F17-50
【公開號(hào)】CN104794316
【申請(qǐng)?zhí)枴緾N201510258254
【發(fā)明人】姚劍敏, 郭太良, 林志賢, 葉蕓, 徐勝, 林金堂
【申請(qǐng)人】福州大學(xué)
【公開日】2015年7月22日
【申請(qǐng)日】2015年5月20日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1