專利名稱:一種三維模型漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法
技術(shù)領(lǐng)域:
本發(fā)明專利涉及網(wǎng)絡(luò)三維地理信息可視化技術(shù)領(lǐng)域,特別是涉及一種針對(duì)網(wǎng)絡(luò)環(huán)境下城市復(fù)雜三維模型的漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法。
背景技術(shù):
此外,隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展和普及,三維模型不僅僅需要在本地進(jìn)行存儲(chǔ)和繪制,還需要通過互聯(lián)網(wǎng)進(jìn)行傳輸。因此,如何在網(wǎng)絡(luò)環(huán)境下,對(duì)不同層次細(xì)節(jié)模型進(jìn)行有效傳輸,也成為一個(gè)關(guān)鍵性問題。20世紀(jì)90年代以來,研究人員針對(duì)以上問題進(jìn)行了大量的研究工作,其中,以 Microsoft公司的H. Hoppe提出的漸進(jìn)網(wǎng)格(Progressive Mesh, PM)概念最為著名,有關(guān)文獻(xiàn)Hoppe, H. Progressive Meshes [C]. Proceedings of SIGGRAPH' 96, Computer Graphics Proceedings, Annual Conference Series, ACM SIGGRAPH, ACM Press. 1996,8 :99-108. Hoppe, H. View-Dependent Refinement of Progressive Meshes[C]. Proceedings of SIGGRAPH,97. 1997 :189-198.為三維模型的漸進(jìn)傳輸提供了一種解決方案。Hoppe提出漸進(jìn)網(wǎng)格概念為復(fù)雜三維模型的網(wǎng)絡(luò)漸進(jìn)傳輸提供了一種的實(shí)現(xiàn)途徑,可以同時(shí)渲染和下載模型數(shù)據(jù),與傳統(tǒng)的先下載后顯示方法相比,具有很強(qiáng)的實(shí)時(shí)性。 并且,同傳統(tǒng)的構(gòu)建分辨率簡(jiǎn)化模型的方法相比,在模型層次過渡方面更加平滑和連續(xù)。但是,在實(shí)際應(yīng)用中,這一方法仍存在一定的缺陷和不足之處,主要體現(xiàn)在以下幾個(gè)方面(1)簡(jiǎn)化后生成的漸進(jìn)網(wǎng)格數(shù)據(jù)量較大。在某些應(yīng)用領(lǐng)域使用的復(fù)雜三維模型數(shù)據(jù)量高達(dá)幾十MB,可能包含幾萬甚至幾十萬個(gè)三角形片元,在采用邊折疊算法生成簡(jiǎn)化模型的過程中,可能需要進(jìn)行高達(dá)數(shù)萬次的折疊操作,而在構(gòu)建漸進(jìn)網(wǎng)格的過程中,需要將每一次折疊操作的恢復(fù)信息都記錄下來, 因此生成的漸進(jìn)網(wǎng)格中頂點(diǎn)分裂(Vertex Split,簡(jiǎn)稱vsplit)序列信息需要占用大量的額外存儲(chǔ)空間。此外,每一次折疊過程中,都需要生成一個(gè)新的頂點(diǎn)并記錄下來,因此最終生成的漸進(jìn)網(wǎng)格數(shù)據(jù)量將會(huì)遠(yuǎn)遠(yuǎn)大于原始三維模型的數(shù)據(jù)量,增加了服務(wù)端模型數(shù)據(jù)存儲(chǔ)的負(fù)擔(dān)。(2)模型重構(gòu)操作頻繁。在三維網(wǎng)格模型恢復(fù)過程中,每執(zhí)行一次vsplit操作,都需要向服務(wù)端發(fā)送一次數(shù)據(jù)請(qǐng)求,并在下載到數(shù)據(jù)后對(duì)客戶端網(wǎng)格進(jìn)行重新構(gòu)建和渲染。在數(shù)字地球的應(yīng)用中,通常需要對(duì)海量的三維模型數(shù)據(jù)進(jìn)行渲染,數(shù)以萬次的重構(gòu)計(jì)算對(duì)于客戶端的性能要求十分苛刻,大大限制了三維模型的實(shí)時(shí)顯示效率。此外對(duì)于海量復(fù)雜三維模型的漸進(jìn)顯示,大量的數(shù)據(jù)請(qǐng)求操作無疑會(huì)占用較多的網(wǎng)絡(luò)資源,同時(shí)也會(huì)對(duì)服務(wù)器造成巨大的負(fù)載
發(fā)明內(nèi)容
本發(fā)明目的在于克服現(xiàn)有技術(shù)不足,提出了一種三維模型漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法。本發(fā)明的技術(shù)方案為一種三維模型漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法,根據(jù)三維模型的原始網(wǎng)格Mn生成漸進(jìn)網(wǎng)格數(shù)據(jù),包括基礎(chǔ)網(wǎng)格Mtl和基礎(chǔ)索引數(shù)據(jù)Mde^、各級(jí)增量數(shù)據(jù) (AData1, AData2, ... ADataJ,以及各級(jí)細(xì)節(jié)層次網(wǎng)格M1, M2, ...M1^i應(yīng)的索引數(shù)據(jù) (IndexljIndex2,.. · IndexJ ;其中,多細(xì)節(jié)層次級(jí)別為i的細(xì)節(jié)層次網(wǎng)格Mi = M^1+ΔDatai, i 取值為 1,2, ...η;將基礎(chǔ)網(wǎng)格M0和基礎(chǔ)索引數(shù)據(jù)Mde^存儲(chǔ)到最頂層,隨著尺度的增大,依次將各級(jí)增量幾何數(shù)據(jù){ Δ Data1, Δ Data2, ...Δ DataJ和各級(jí)細(xì)節(jié)層次網(wǎng)格M1, M2,... Mn對(duì)應(yīng)的索引數(shù)據(jù)(Index1, Index2, · · · IndexJ存儲(chǔ)到對(duì)應(yīng)層次中;在漸進(jìn)網(wǎng)格可視化過程中,首先將基礎(chǔ)網(wǎng)格Mtl和基礎(chǔ)索引數(shù)據(jù)化如&傳輸?shù)娇蛻舳耍⑦M(jìn)行繪制;根據(jù)當(dāng)前所需的多細(xì)節(jié)層次級(jí)別i,傳輸對(duì)應(yīng)的增量數(shù)據(jù)ADatei和索引數(shù)據(jù)Mdexi到客戶端,在上一級(jí)別的細(xì)節(jié)層次網(wǎng)格Mg基礎(chǔ)上繪制細(xì)節(jié)層次網(wǎng)格虬。而且,生成漸進(jìn)網(wǎng)格數(shù)據(jù)的具體方式包括以下步驟,步驟1,讀取原始三維模型,將原始三維模型的原始網(wǎng)格作為細(xì)節(jié)層次網(wǎng)格Mn,將原始三維模型的所有頂點(diǎn)加入漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中,并初始化所有頂點(diǎn)的屬性Level值為0 ;設(shè)置原始三維模型的所有頂點(diǎn)和三角形的屬性Removed值為false,表示未被移除;將原始三維模型的所有三角形列入三角形鏈表TriangleList,遍歷三角形鏈表TriangleList得到索引數(shù)據(jù)^idexn,將索引數(shù)據(jù)^idun加入各級(jí)多細(xì)節(jié)層次索引 LodVertexList中;設(shè)當(dāng)前待簡(jiǎn)化的細(xì)節(jié)層次網(wǎng)格為Mk,令k = η ;步驟2,將當(dāng)前待簡(jiǎn)化的細(xì)節(jié)層次網(wǎng)格Mk簡(jiǎn)化得到上一層的細(xì)節(jié)層次網(wǎng)格Mlri,得到簡(jiǎn)化后需要移除的頂點(diǎn)集合Vm ;設(shè)簡(jiǎn)化后頂點(diǎn)集合Vm中任一頂點(diǎn)Va由頂點(diǎn)Vb替代,遍歷包含頂點(diǎn)Va的鄰接三角形集合,將鄰接三角形集合中所有三角形指向頂點(diǎn)Va的指針都指向頂點(diǎn)vb,形成Va的指向三角形集合;頂點(diǎn)集合Vm中所有頂點(diǎn)的指向三角形集合構(gòu)成三角形集合NT ;步驟3,遍歷三角形集合NT,當(dāng)三角形內(nèi)的三個(gè)頂點(diǎn)指針中任意兩個(gè)指向同一頂點(diǎn)時(shí),則該三角形為無效的三角形;設(shè)置所有無效的三角形屬性Removed值為true,表示已移除;步驟4,在漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中標(biāo)記頂點(diǎn)集合Vm內(nèi)所有頂點(diǎn)的屬性 Removed值為true,表示已移除;設(shè)置頂點(diǎn)集合Vm內(nèi)所有頂點(diǎn)的屬性Level值為k,表示多細(xì)節(jié)層次級(jí)別為k,該頂點(diǎn)集合Vm為第k級(jí)的增量數(shù)據(jù)ADatak ;步驟5,遍歷三角形鏈表TriangleList中屬性Removed值為false的三角形,得到索引數(shù)據(jù)Mdexlri,將索引數(shù)據(jù)Mdexlri加入各級(jí)多細(xì)節(jié)層次索引LodVertexList中;步驟6,若k > 0,令k = k-Ι,返回步驟2繼續(xù)計(jì)算增量數(shù)據(jù)Δ Datek和索引數(shù)據(jù) Indexk^1,若如果k = 0,進(jìn)入步驟7 ;步驟7,漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中所有屬性Removed值為true的頂點(diǎn)所構(gòu)成集合即為基礎(chǔ)網(wǎng)格M。,遍歷三角形鏈表TriangleList中屬性Removed值為false的三角形,所得索引數(shù)據(jù)即為基礎(chǔ)索引數(shù)據(jù)^de^。本發(fā)明的創(chuàng)新之處在于構(gòu)建三維模型的多尺度漸進(jìn)網(wǎng)格,實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境下三維模型數(shù)據(jù)的無冗余、多尺度增量式數(shù)據(jù)組織,有利于復(fù)雜三維模型的快速傳輸和高效可視化。
圖1為本發(fā)明實(shí)施例的復(fù)雜三維模型生成多級(jí)數(shù)據(jù)結(jié)構(gòu)圖。圖2為本發(fā)明實(shí)施例的漸進(jìn)網(wǎng)格數(shù)據(jù)模型圖。圖3為本發(fā)明實(shí)施例的漸進(jìn)網(wǎng)格構(gòu)建流程圖。圖4為本發(fā)明實(shí)施例的三維模型漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法。
具體實(shí)施例方式本發(fā)明提出一種三維模型漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法,以下結(jié)合附圖和實(shí)施例詳細(xì)說明本發(fā)明技術(shù)方案為減少三維模型網(wǎng)格在構(gòu)建漸進(jìn)網(wǎng)格過程中恢復(fù)過程的重構(gòu)和請(qǐng)求操作,實(shí)施例根據(jù)原始網(wǎng)格Mn生成漸進(jìn)網(wǎng)格數(shù)據(jù),包括基礎(chǔ)網(wǎng)格M0和基礎(chǔ)索引數(shù)據(jù)Mde^、各級(jí)增量數(shù)據(jù){ Δ Data1, AData2, ... Δ DataJ,以及各級(jí)細(xì)節(jié)層次網(wǎng)格M1, M2, ... Mj^應(yīng)的索引數(shù)據(jù) (IndexljIndex2,.. · IndexJ ;其中,多細(xì)節(jié)層次級(jí)別為i的細(xì)節(jié)層次網(wǎng)格Mi = M^1+ΔDatai, i取值為1,2,...η。具體實(shí)施時(shí),η屬于正整數(shù),是漸進(jìn)網(wǎng)格數(shù)據(jù)的級(jí)數(shù),具體實(shí)施時(shí)可由用戶自行定義。漸進(jìn)網(wǎng)格數(shù)據(jù)結(jié)構(gòu)將原始網(wǎng)格Mi根據(jù)實(shí)際需求生成多級(jí)數(shù)據(jù),如附圖1所示,例如原始網(wǎng)格模型Mi包含7個(gè)頂點(diǎn)數(shù)據(jù)集[HNymN7]邋索引^idexi* {{%, v2,V3I ;Iv1,v4,VJ ;IVnV6J7H,分別檢索三個(gè)三角形,此時(shí)無增量數(shù)據(jù)。經(jīng)過簡(jiǎn)化一級(jí),下一級(jí)別網(wǎng)格Mh包含5個(gè)頂點(diǎn)數(shù)據(jù)集IV1, V2, V3, V4, VJ ;索引Index^為{{L,V2, V3I ; IV1, V4, VJ },增量數(shù)據(jù)為Δ Datai為{V6,V7}。再簡(jiǎn)化一級(jí),下一級(jí)別網(wǎng)格虬_2包含3個(gè)頂點(diǎn)數(shù)據(jù)集(VijV2jV3I ;索引 IndeXi_2 為 HV1, V2,V3}},增量數(shù)據(jù) ΔData^ 為{V4,Vj。由此,經(jīng)過網(wǎng)格模型的多級(jí)簡(jiǎn)化,包括基礎(chǔ)網(wǎng)格Mtl和基礎(chǔ)索引Indextl、各級(jí)增量數(shù)據(jù)(AData1, AData2... △ DateJ,以及各級(jí)增量數(shù)據(jù)對(duì)應(yīng)的索引數(shù)據(jù)(Index1, Index2, · · · IndexJ ;相鄰網(wǎng)格模型關(guān)系可以表示為Mi = Mh+ Δ Datai在Hoppe提出的邊折疊漸進(jìn)網(wǎng)格構(gòu)建方法中,每一步邊折疊操作需要將兩個(gè)原始頂點(diǎn)生成一個(gè)新的頂點(diǎn),需要開辟一定的存儲(chǔ)空間空間來存儲(chǔ)新生成頂點(diǎn)的數(shù)據(jù),造成存儲(chǔ)空間的浪費(fèi)。因此,為減少冗余數(shù)據(jù)量,在進(jìn)行模型簡(jiǎn)化過程中,應(yīng)當(dāng)避免新頂點(diǎn)的產(chǎn)生, 而是用原始網(wǎng)格數(shù)據(jù)中某一頂點(diǎn)來代替需要簡(jiǎn)化的兩個(gè)或多個(gè)頂點(diǎn),即漸進(jìn)網(wǎng)格中任意一級(jí)增量數(shù)據(jù)ADatei均是原始網(wǎng)格Mn的子集。參見圖3,實(shí)施例的三維模型漸進(jìn)網(wǎng)格生成流程步驟如下步驟1,讀取原始三維模型,初始化細(xì)節(jié)層次網(wǎng)格Μη,即將原始三維模型的原始網(wǎng)格作為細(xì)節(jié)層次網(wǎng)格Mn,細(xì)節(jié)層次網(wǎng)格Mn的多細(xì)節(jié)層次級(jí)別為η。將原始三維模型的所有頂點(diǎn)加入漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中,并初始化所有頂點(diǎn)的屬性Level值為0 ;設(shè)置原始三維模型的所有頂點(diǎn)和三角形的屬性Removed值為false,表示未被移除;將原始三維模型的所有三角形列入三角形鏈表TriangleList,遍歷三角形鏈表TriangleList得到索引數(shù)據(jù)Md^n,將索引數(shù)據(jù)Md^n加入各級(jí)多細(xì)節(jié)層次索引LodVertexList中;設(shè)當(dāng)前待簡(jiǎn)化的細(xì)節(jié)層次網(wǎng)格為Mk,令k = η。步驟2,將當(dāng)前待簡(jiǎn)化的細(xì)節(jié)層次網(wǎng)格Mk簡(jiǎn)化得到上一層的細(xì)節(jié)層次網(wǎng)格Mlri,得到簡(jiǎn)化后需要移除的頂點(diǎn)集合Vm ;設(shè)簡(jiǎn)化后頂點(diǎn)集合Vm中任一頂點(diǎn)Va由頂點(diǎn)Vb替代,遍歷包含頂點(diǎn)Va的鄰接三角形集合(實(shí)施例記為NeighborTriangle),將鄰接三角形集合中所有三角形指向頂點(diǎn)Va的指針都指向頂點(diǎn)形成Va的指向三角形集合;頂點(diǎn)集合Vm中所有頂點(diǎn)的指向三角形集合構(gòu)成三角形集合NT。步驟3,遍歷三角形集合NT,當(dāng)三角形內(nèi)的三個(gè)頂點(diǎn)指針中任意兩個(gè)指向同一頂點(diǎn)時(shí),則該三角形為無效的三角形;設(shè)置所有無效的三角形屬性Removed值為true,表示已移除。實(shí)施例將三角形內(nèi)的三個(gè)頂點(diǎn)指針記為Vertex[l]、Vertex[2]、Vertex[3],當(dāng) Vertex[1] = = Vertex[2] | Vertex[1] = = Vertex[3] | Vertex[2] = = Vertex[3]時(shí),則該三角形為無效三角形。步驟4,在漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中標(biāo)記頂點(diǎn)集合Vm內(nèi)所有頂點(diǎn)的屬性 Removed值為true,表示已移除,這部分頂點(diǎn)不參與下一次的簡(jiǎn)化計(jì)算。設(shè)置頂點(diǎn)集合Vm內(nèi)所有頂點(diǎn)的屬性Level值為k,表示多細(xì)節(jié)層次級(jí)別為k,該頂點(diǎn)集合Vm為第k級(jí)的增量數(shù) M ADiitiiko步驟5,遍歷三角形鏈表TriangleList中屬性Removed值為false的三角形,得到索引數(shù)據(jù)Mdexlri,將索引數(shù)據(jù)Mdexlri加入各級(jí)多細(xì)節(jié)層次索引LodVertexList中。步驟6,若k > 0,令k = k-Ι,返回步驟2繼續(xù)計(jì)算增量數(shù)據(jù)Δ Datek和索引數(shù)據(jù) Indexk+若如果k = = 0,進(jìn)入步驟7。步驟7,漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中所有屬性Removed值為true的頂點(diǎn)所構(gòu)成集合即為基礎(chǔ)網(wǎng)格M。,遍歷三角形鏈表TriangleList中屬性Removed值為false的三角形,所得索引數(shù)據(jù)即為基礎(chǔ)索引數(shù)據(jù)^de^。漸進(jìn)網(wǎng)格數(shù)據(jù)生成后,可以根據(jù)頂點(diǎn)Level值對(duì)頂點(diǎn)集合進(jìn)行升序排序,從而使基礎(chǔ)網(wǎng)格Mtl和各級(jí)增量數(shù)據(jù)在存儲(chǔ)順序上為順序序列;然后根據(jù)順序序列后的漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList和各級(jí)LOD索引LodVertexList輸出每一級(jí)的頂點(diǎn)數(shù)據(jù)增量和索引數(shù)據(jù)到文件。這樣便于進(jìn)行多尺度組織存儲(chǔ)。具體實(shí)施時(shí),步驟2進(jìn)行簡(jiǎn)化可以采用多種方式,例如邊折疊簡(jiǎn)化算法、小波分解的簡(jiǎn)化算法等。實(shí)施例采用帶紋理約束的三維模型頂點(diǎn)聚類簡(jiǎn)化方法,將復(fù)雜三維模型的紋理誤差度量方法和幾何簡(jiǎn)化有機(jī)統(tǒng)一起來,實(shí)現(xiàn)了海量復(fù)雜三維模型的快速簡(jiǎn)化,并且有效的保持模型簡(jiǎn)化后的紋理特征。該簡(jiǎn)化方法包括下列步驟步驟一,計(jì)算三維模型中每個(gè)頂點(diǎn)的權(quán)值;步驟二,按照預(yù)設(shè)的幾何單元格大小和紋理單元格大小,將三維模型按照(x,y,z, U, ν)五個(gè)維度進(jìn)行劃分,即先按照幾何單元格劃分得到若干葉子節(jié)點(diǎn),在此基礎(chǔ)上按照紋理單元格將上述若干葉子節(jié)點(diǎn)進(jìn)一步劃分得到更多的葉子節(jié)點(diǎn),其中(x,y,z)表示幾何空間坐標(biāo),(u,ν)表示紋理空間坐標(biāo);步驟三,檢查每個(gè)葉子節(jié)點(diǎn)內(nèi)頂點(diǎn)個(gè)數(shù),如果頂點(diǎn)個(gè)數(shù)為空或?yàn)?,則不作任何操作;如果頂點(diǎn)個(gè)數(shù)大于預(yù)設(shè)的個(gè)數(shù)閾值,則對(duì)葉子節(jié)點(diǎn)進(jìn)行節(jié)點(diǎn)分裂操作;如果頂點(diǎn)個(gè)數(shù)大于1且小于或等于預(yù)設(shè)的個(gè)數(shù)閾值,根據(jù)步驟1所得頂點(diǎn)的權(quán)值,從葉子節(jié)點(diǎn)內(nèi)選擇權(quán)值最大的頂點(diǎn)作為聚類代表點(diǎn),計(jì)算聚類后產(chǎn)生的幾何誤差ε s和紋理誤差ε ‘ s,當(dāng)幾何誤差ε s大于預(yù)設(shè)的幾何誤差閾值ε _或紋理誤差ε ‘ s大于預(yù)設(shè)的紋理誤差閾值ε ‘ _時(shí)進(jìn)行分裂操作;步驟四,對(duì)分裂操作產(chǎn)生出的葉子節(jié)點(diǎn)返回執(zhí)行步驟3,直到所有葉子節(jié)點(diǎn)內(nèi)的頂點(diǎn)個(gè)數(shù)為空或?yàn)?,或者幾何誤差ε s和紋理誤差ε ‘ 3都在閾值范圍內(nèi);步驟五,對(duì)于所有幾何誤差ε s和紋理誤差ε ‘ s都在閾值范圍內(nèi)的葉子節(jié)點(diǎn),將葉子節(jié)點(diǎn)內(nèi)的頂點(diǎn)用聚類代表點(diǎn)替換,并更新索引數(shù)據(jù),然后將退化的三角形從三維模型的三角形列表中移除。在步驟一中,頂點(diǎn)的權(quán)值計(jì)算方式如下,設(shè)頂點(diǎn)權(quán)值范圍w e (0,1),權(quán)值越大則代表該頂點(diǎn)越重要,對(duì)于三維模型中不位于邊界處的任一頂點(diǎn)Q,有相關(guān)的三角形集合Ts = {t0, t1; ... tj,假設(shè)三角形集合Ts中三角形、與、相鄰,定義 如下Wij = (l-dotfci, nj))/2其中叫,Iij分別為三角形ti; tj的法向量,dot為向量點(diǎn)乘運(yùn)算,Wij值范圍為(0, 1),Wij值越大,表示三角形、與、的夾角越小,頂點(diǎn)Q的權(quán)值w表示為
權(quán)利要求
1.一種三維模型漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法,其特征在于根據(jù)三維模型的原始網(wǎng)格尾生成漸進(jìn)網(wǎng)格數(shù)據(jù),包括基礎(chǔ)網(wǎng)格禮和基礎(chǔ)索引數(shù)據(jù) JflifeA、各級(jí)增量數(shù)據(jù)[AData1, AData2,…」ifeiaj,以及各級(jí)細(xì)節(jié)層次網(wǎng)格i/;,峪… 尾對(duì)應(yīng)的索引數(shù)據(jù)U^fe^ Index2,…;其中,多細(xì)節(jié)層次級(jí)別為i的細(xì)節(jié)層次網(wǎng)格 Mj = M^a f AZJflfei-, i 取值為 1,2,…η .’將基礎(chǔ)網(wǎng)格禮和基礎(chǔ)索引數(shù)據(jù)Index0存儲(chǔ)到最頂層,隨著尺度的增大,依次將各級(jí)增量幾何數(shù)據(jù){Δ DataP AData2,…」ifeiaj和各級(jí)細(xì)節(jié)層次網(wǎng)格峪峪…軋對(duì)應(yīng)的索引數(shù)據(jù)Undex1, Index2,…Index〉存儲(chǔ)到對(duì)應(yīng)層次中;在漸進(jìn)網(wǎng)格可視化過程中,首先將基礎(chǔ)網(wǎng)格禮和基礎(chǔ)索引數(shù)據(jù)Index0傳輸?shù)娇蛻舳耍?并進(jìn)行繪制;根據(jù)當(dāng)前所需的多細(xì)節(jié)層次級(jí)別i,傳輸對(duì)應(yīng)的增量數(shù)據(jù)Zifetei和索引數(shù)據(jù)Jz7iZ^ri到客戶端,在上一級(jí)別的細(xì)節(jié)層次網(wǎng)格Mh基礎(chǔ)上繪制細(xì)節(jié)層次網(wǎng)格M”
2.如權(quán)利要求1所述三維模型漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法,其特征在于生成漸進(jìn)網(wǎng)格數(shù)據(jù)的具體方式包括以下步驟,步驟1,讀取原始三維模型,將原始三維模型的原始網(wǎng)格作為細(xì)節(jié)層次網(wǎng)格軋,將原始三維模型的所有頂點(diǎn)加入漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中,并初始化所有頂點(diǎn)的屬性Level值為O ;設(shè)置原始三維模型的所有頂點(diǎn)和三角形的屬性Removed值為false,表示未被移除;將原始三維模型的所有三角形列入三角形鏈表TriangleList,遍歷三角形鏈表TriangleList得到索引數(shù)據(jù)Indexn,將索引數(shù)據(jù)Indexn加入各級(jí)多細(xì)節(jié)層次索引 LodVertexList中;設(shè)當(dāng)前待簡(jiǎn)化的細(xì)節(jié)層次網(wǎng)格為叢,令左= ;步驟2,將當(dāng)前待簡(jiǎn)化的細(xì)節(jié)層次網(wǎng)格J4簡(jiǎn)化得到上一層的細(xì)節(jié)層次網(wǎng)格#η,得到簡(jiǎn)化后需要移除的頂點(diǎn)集合Va ;設(shè)簡(jiǎn)化后頂點(diǎn)集合Va中任一頂點(diǎn)Va由頂點(diǎn)Vb替代,遍歷包含頂點(diǎn)K的鄰接三角形集合,將鄰接三角形集合中所有三角形指向頂點(diǎn)Va的指針都指向頂點(diǎn) ‘形成K的指向三角形集合;頂點(diǎn)集合Va中所有頂點(diǎn)的指向三角形集合構(gòu)成三角形集合 NT ;步驟3,遍歷三角形集合ΝΤ,當(dāng)三角形內(nèi)的三個(gè)頂點(diǎn)指針中任意兩個(gè)指向同一頂點(diǎn)時(shí), 則該三角形為無效的三角形;設(shè)置所有無效的三角形屬性Removed值為true,表示已移除;步驟4,在漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中標(biāo)記頂點(diǎn)集合Vis內(nèi)所有頂點(diǎn)的屬性 Removed值為true,表示已移除;設(shè)置頂點(diǎn)集合Va內(nèi)所有頂點(diǎn)的屬性Level值為I表示多細(xì)節(jié)層次級(jí)別為t該頂點(diǎn)集合Va為第A級(jí)的增量數(shù)據(jù)Zlifetei ;步驟5,遍歷三角形鏈表TriangleList中屬性Removed值為false的三角形,得到索引數(shù)據(jù)Tflifez^,將索引數(shù)據(jù)Tflife^H加入各級(jí)多細(xì)節(jié)層次索引LodVertexList中;步驟6,若於0,令左功-1,返回步驟2繼續(xù)計(jì)算增量數(shù)據(jù)Zlifetei和索引數(shù)據(jù)//76 + 若如果1=0,進(jìn)入步驟7 ;步驟7,漸進(jìn)網(wǎng)格頂點(diǎn)集合VertexList中所有屬性Removed值為true的頂點(diǎn)所構(gòu)成集合即為基礎(chǔ)網(wǎng)格禮,遍歷三角形鏈表TriangleList中屬性Removed值為false的三角形, 所得索引數(shù)據(jù)即為基礎(chǔ)索引數(shù)據(jù)/ 論^。
全文摘要
本發(fā)明提出一種三維模型漸進(jìn)網(wǎng)格數(shù)據(jù)組織方法,根據(jù)三維模型的原始網(wǎng)格生成漸進(jìn)網(wǎng)格數(shù)據(jù)并進(jìn)行多尺度分層組織,漸進(jìn)網(wǎng)格數(shù)據(jù)包括基礎(chǔ)網(wǎng)格和基礎(chǔ)索引數(shù)據(jù)、各級(jí)增量數(shù)據(jù)以及各級(jí)細(xì)節(jié)層次網(wǎng)格索引數(shù)據(jù);在漸進(jìn)網(wǎng)格可視化過程中,首先將基礎(chǔ)網(wǎng)格和基礎(chǔ)索引數(shù)據(jù)傳輸?shù)娇蛻舳瞬⑦M(jìn)行繪制,然后隨著視點(diǎn)與模型的距離變小,傳輸增量數(shù)據(jù)和索引數(shù)據(jù)到客戶端,繪制相應(yīng)層次的細(xì)節(jié)層次網(wǎng)格。本發(fā)明實(shí)現(xiàn)了三維模型的無冗余、多尺度增量式數(shù)據(jù)組織,有利于復(fù)雜三維模型的快速傳輸和高效可視化。
文檔編號(hào)G06T17/30GK102360515SQ20111031793
公開日2012年2月22日 申請(qǐng)日期2011年10月19日 優(yōu)先權(quán)日2011年10月19日
發(fā)明者李華瑋, 李墨, 陳靜 申請(qǐng)人:武漢大學(xué)