国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      混合數(shù)據(jù)模型在建筑物三維建模中的應(yīng)用的制作方法

      文檔序號(hào):12819759閱讀:407來源:國知局
      混合數(shù)據(jù)模型在建筑物三維建模中的應(yīng)用的制作方法與工藝

      本發(fā)明涉及一種混合數(shù)據(jù)模型在建筑物三維建模中的應(yīng)用,屬于三維建模技術(shù)領(lǐng)域。



      背景技術(shù):

      建筑物是城市中的主要地物,建筑物三維建模是計(jì)算機(jī)圖形學(xué)、地理信息系統(tǒng)、攝影測(cè)量學(xué)及其相關(guān)學(xué)科研究的熱點(diǎn),并在虛擬現(xiàn)實(shí)、復(fù)雜場(chǎng)景設(shè)計(jì)、計(jì)算機(jī)視覺和三維gis等領(lǐng)域得到了廣泛應(yīng)用,建筑物三維建模方法直接影響到城市三維可視化的速度和效果,如何快捷、逼真地構(gòu)建建筑物三維模型是很多研究人員重點(diǎn)研究的課題。

      按照模型的存儲(chǔ)元素類型分類,三維空間數(shù)據(jù)模型可分為柵格數(shù)據(jù)模型、矢量數(shù)據(jù)模型、柵格和矢量混合模型3類。按照模型的構(gòu)成元素分類,三維空間數(shù)據(jù)模型可分為基于面元的模型、基于體元的模型和面元體元混合模型3類。

      基于面元的模型包括格網(wǎng)(grid)、不規(guī)則三角形格網(wǎng)(tin)、線框(wireframe)、邊界表示(boundaryrepresentation)、斷面(section)和參數(shù)函數(shù)表示(parameterfunction)等。

      基于體元的模型包括四面體格網(wǎng)(ten)、八叉樹(octree)、結(jié)構(gòu)實(shí)體幾何法(csg)、三維柵格(array)、塊段(block)、六面體(hexahedral)、多面體(polyhedral)和棱柱體(prism)等。

      基于面元模型的優(yōu)點(diǎn)為數(shù)據(jù)存儲(chǔ)量小,建??旖?,實(shí)體顯示和更新的速度快,不足之處為不能描述實(shí)體的內(nèi)部屬性,難以進(jìn)行實(shí)體的三維空間分析和查詢?;隗w元模型的優(yōu)點(diǎn)為適于空間操作和分析,不足之處為數(shù)據(jù)結(jié)構(gòu)復(fù)雜,存儲(chǔ)空間大,建模速度慢。

      八叉樹體素分解是將空間三維物體逐級(jí)分解,最終形成八叉樹體素表示的結(jié)構(gòu)。八叉樹的主要優(yōu)點(diǎn)是可以方便地實(shí)現(xiàn)物體的并、交、差等集合運(yùn)算,適用于較規(guī)則的實(shí)體的建模。

      參數(shù)函數(shù)表示的指導(dǎo)思想是利用有限的空間數(shù)據(jù),構(gòu)造一個(gè)函數(shù)的解析式,用這個(gè)解析式來生成新的空間點(diǎn),用以逼近原有物體。參數(shù)函數(shù)表示包括解析函數(shù)模型和非解析函數(shù)模型。解析函數(shù)模型的優(yōu)點(diǎn)為數(shù)學(xué)運(yùn)算簡便、數(shù)據(jù)存儲(chǔ)量小,但復(fù)雜的空間對(duì)象很難用統(tǒng)一的函數(shù)參數(shù)方程來表達(dá)。為了克服解析函數(shù)的局限性,人們提出了非解析函數(shù)。b樣條函數(shù)是比較實(shí)用的參數(shù)函數(shù),具有存儲(chǔ)量小、分析運(yùn)算速度快、空間幾何不變性等特點(diǎn),是構(gòu)建三維空間實(shí)體邊界曲面的有效方法。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明提供一種在建筑物三維建模中運(yùn)用的混合數(shù)據(jù)模型,混合模型采用了八叉樹作為整體描述,利用了nurbs描述實(shí)體的不規(guī)則曲面,存儲(chǔ)結(jié)構(gòu)采用擴(kuò)展節(jié)點(diǎn)和混合式的八叉樹結(jié)構(gòu),編碼方法采用八進(jìn)制前綴編碼技術(shù),根據(jù)混合模型設(shè)計(jì)了建筑物三維建模的數(shù)據(jù)結(jié)構(gòu)。

      本發(fā)明的大體思路為首先利用八叉樹對(duì)建筑物實(shí)體v進(jìn)行三維空間分割,當(dāng)分割后的建筑物子體位于實(shí)體邊界且外形不是規(guī)則立方體時(shí),采用nurbs曲面描述該體元的表面,然后用一個(gè)屬性值實(shí)現(xiàn)八叉樹與nurbs曲面的鏈接,建立混合模型,根據(jù)混合模型設(shè)計(jì)建筑物三維建模的數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu)采用擴(kuò)展節(jié)點(diǎn)和混合式的八叉樹結(jié)構(gòu),編碼方法采用八進(jìn)制前綴編碼技術(shù),最后進(jìn)行實(shí)體的三維建模。

      為了實(shí)現(xiàn)建筑物三維建模的問題,本發(fā)明提供了一種基于八叉樹與nurbs曲面相結(jié)合的混合數(shù)據(jù)模型。該模型的具體構(gòu)建過程包括:

      1)輸入一個(gè)建筑物實(shí)體v,利用八叉樹對(duì)建筑物實(shí)體v進(jìn)行三維空間分割,當(dāng)分割后的建筑物子體位于實(shí)體邊界且外形不是規(guī)則立方體時(shí),采用nurbs曲面描述該體元的表面,具體步驟如下:

      ①通過用樹結(jié)構(gòu)對(duì)模型進(jìn)行遞歸,按x、y、z,3個(gè)不同方向,將所要表示的三維空間實(shí)體v分割為8個(gè)大小相等的子立方體。然后根據(jù)每個(gè)子立方體中所含的目標(biāo)來決定是否對(duì)子立方體繼續(xù)進(jìn)行8等分的劃分。一直劃分到每個(gè)子立方體被一個(gè)目標(biāo)所充滿,或沒有目標(biāo),或其大小已成為預(yù)先定義的不可再分的體素為止。八叉樹每個(gè)節(jié)點(diǎn)有8個(gè)子節(jié)點(diǎn)或者沒有子節(jié)點(diǎn)。若立方體未被某個(gè)目標(biāo)填滿,則需要繼續(xù)劃分。當(dāng)立方體被某個(gè)目標(biāo)填滿或者立方體中沒有目標(biāo)時(shí),都不需繼續(xù)劃分。八叉樹每個(gè)維度每劃分一次,其分辨率都將增大到原來的兩倍。在邊界灰度節(jié)點(diǎn)中加入子體的面、邊、頂點(diǎn)信息,從而形成擴(kuò)展的八叉樹結(jié)構(gòu)。

      ②采用八叉樹空間分解法生成曲面離散點(diǎn)集,根據(jù)空間曲面的大小,得到一個(gè)包圍整個(gè)空間曲面的立方體包圍盒,將該包圍盒作為八叉樹的根節(jié)點(diǎn)來初始化八叉樹數(shù)據(jù)結(jié)構(gòu)。

      ③將包圍盒分解成8個(gè)子區(qū)域,作為大立方體的8個(gè)子節(jié)點(diǎn),生成子體曲面上的空間離散點(diǎn)集。

      ④空間分割時(shí)注意采集實(shí)體不規(guī)則部分的外圍散點(diǎn),將不規(guī)則體元剖分成參數(shù)函數(shù)曲面,生成子體的nurbs曲面。

      2)用一個(gè)屬性值實(shí)現(xiàn)八叉樹與nurbs曲面的鏈接,建立混合模型,若八叉樹某節(jié)點(diǎn)編碼的屬性值為n,表示該節(jié)點(diǎn)關(guān)聯(lián)一個(gè)局部的nurbs曲面。通過節(jié)點(diǎn)與對(duì)應(yīng)的8個(gè)子節(jié)點(diǎn)體內(nèi)的特征點(diǎn)相結(jié)合,形成局部nurbs曲面,實(shí)現(xiàn)時(shí)采用網(wǎng)格細(xì)化和求交切割的方法,用不規(guī)則體元填充八叉樹與表面模型之間的空隙,完成模型的自適應(yīng)分割。

      3)根據(jù)混合模型設(shè)計(jì)建筑物三維建模的數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)結(jié)構(gòu)采用擴(kuò)展節(jié)點(diǎn)和混合式的八叉樹結(jié)構(gòu),編碼方法采用八進(jìn)制前綴編碼技術(shù),具體步驟如下:

      ①在八叉樹的上層使用指針式結(jié)構(gòu)建立節(jié)點(diǎn)的索引。

      ②在下層按節(jié)點(diǎn)編碼的大小排序,建立該局部空間內(nèi)包含的所有非空葉節(jié)點(diǎn)的線性表。

      ③對(duì)同一父節(jié)點(diǎn)的8個(gè)兄弟節(jié)點(diǎn),其具有最小(x,y,z)值的節(jié)點(diǎn)編號(hào)為0,相鄰兄弟節(jié)點(diǎn)的編號(hào)沿x方向增加1,沿y方向增加2,沿z方向增加4,并將父節(jié)點(diǎn)的編碼作為其8個(gè)子節(jié)點(diǎn)編碼的前綴。為保證八叉樹中每一節(jié)點(diǎn)編碼的長度相同,在編碼后增加一串區(qū)別于0~7八進(jìn)制數(shù)的字符“t”,使每個(gè)節(jié)點(diǎn)編碼的長度均為樹的最大深度h。節(jié)點(diǎn)編碼可表示為q1q2…qitt…t,其中q1,q2,…,qi∈{0,1,…,7},0≤i≤h。顯然,q1q2…qn表示了空間最低層次(第n層)立方體網(wǎng)格單元,q1q2…qitt…t表示了空間分割至第i層時(shí)的立方體網(wǎng)格。

      4)利用opengl實(shí)現(xiàn)建筑物三維建模和可視化系統(tǒng)。

      附圖說明

      圖1是八叉樹分割方式的方法結(jié)構(gòu)示意圖。

      圖2是nurbs對(duì)曲線和曲面的模擬方式示意圖。

      圖3是混合三維數(shù)據(jù)模型的分割及模擬方式的結(jié)構(gòu)示意圖。

      圖4是三維模型。

      具體實(shí)施方式

      下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說明。

      對(duì)弧面形狀的三維空間實(shí)體進(jìn)行分割,構(gòu)建八叉樹結(jié)構(gòu),分割方法參見圖1。八叉樹每個(gè)節(jié)點(diǎn)有8個(gè)子節(jié)點(diǎn)或者沒有子節(jié)點(diǎn)。圖1(c)中,小圓圈表示該立方體未被某個(gè)目標(biāo)填滿,需要繼續(xù)劃分?;叶刃【匦伪硎驹摿⒎襟w被某個(gè)目標(biāo)填滿,空白小矩形表示該立方體中沒有目標(biāo),這兩種情況下都不需繼續(xù)進(jìn)行空間劃分。將實(shí)體轉(zhuǎn)換為八叉樹結(jié)構(gòu)時(shí),在邊界灰度節(jié)點(diǎn)中加入子體的面、邊、頂點(diǎn)信息,從而形成擴(kuò)展的八叉樹結(jié)構(gòu)。

      當(dāng)分割后的建筑物子體位于實(shí)體邊界且外形不是規(guī)則立方體時(shí),設(shè)置該子體的屬性值為n,表示該節(jié)點(diǎn)關(guān)聯(lián)一個(gè)局部的nurbs曲面,采用nurbs曲面描述該體元的表面。通過節(jié)點(diǎn)與對(duì)應(yīng)的8個(gè)子節(jié)點(diǎn)體內(nèi)的特征點(diǎn)相結(jié)合,形成局部nurbs曲面。圖2為nurbs擬合曲線和曲面的示意圖?;诎瞬鏄浜蚽urbs曲面建立的混合數(shù)據(jù)模型如圖3所示。

      根據(jù)八叉樹-nurbs混合三維數(shù)據(jù)模型,采用面向?qū)ο蟮某绦蛟O(shè)計(jì)語言c++為建筑物設(shè)計(jì)相應(yīng)的數(shù)據(jù)結(jié)構(gòu),其形式化表示如下:

      classbuildingobject{//建筑物對(duì)象

      private:

      intbuildingid;//建筑物編號(hào)

      floatlength;//建筑物主體長

      floatwidth;//建筑物主體寬

      floatheight;//建筑物主體高

      floatroofheight;//建筑物屋頂高

      floatridgelength;//建筑物屋脊長

      treenodeoctree[8];//定義8個(gè)子八叉樹

      public:

      voidinitialize();

      octree*creatoctree()//八叉樹生成函數(shù)

      nurbs*pnurbscreatnurbs(nurbspoint**point)//nurbs曲面生成函數(shù)};

      樹節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu):

      structtreenode{//八叉樹節(jié)點(diǎn)

      longcode;//節(jié)點(diǎn)編碼

      intsize;//節(jié)點(diǎn)大小

      inttype;//屬性

      intlayer;//節(jié)點(diǎn)所在層

      intindex;//節(jié)點(diǎn)在兄弟節(jié)點(diǎn)中的序號(hào)

      structtreenode*pparent;//父節(jié)點(diǎn)指針

      structtreenode*pchd[8];//子節(jié)點(diǎn)指針

      boolleaf;//是否為葉子節(jié)點(diǎn)

      boolpolygon;//節(jié)點(diǎn)是否關(guān)聯(lián)nurbs曲面對(duì)象

      nurbspoint**point;//nurbs曲面控制點(diǎn),用指

      針定義二維動(dòng)態(tài)數(shù)組

      intnnurebsctrl;//nurbs曲面控制點(diǎn)數(shù)

      nurbs*pnurbs;//關(guān)聯(lián)nurbs曲面指針

      intnurbsobjectid;//曲面對(duì)象的id碼

      }

      采用擴(kuò)展節(jié)點(diǎn)(面、邊、頂點(diǎn))和混合式的八叉樹結(jié)構(gòu)進(jìn)行存儲(chǔ),在八叉樹的上層使用指針式結(jié)構(gòu)建立節(jié)點(diǎn)的索引,而在下層按節(jié)點(diǎn)編碼的大小排序,建立該局部空間內(nèi)包含的所有非空葉節(jié)點(diǎn)的線性表。減少了存儲(chǔ)空間,又提高了顯示的精度和搜索效率。

      利用opengl技術(shù)實(shí)現(xiàn)實(shí)體的三維建模和可視化。生成如圖4所示的三維模型。

      對(duì)于本例中的弧面形狀的建筑物,采用混合模型對(duì)三維空間實(shí)體的分割次數(shù)遠(yuǎn)遠(yuǎn)小于八叉樹模型,為八叉樹模型的1/8左右。混合模型的存儲(chǔ)量也比八叉樹模型少50%以上,相應(yīng)的模型顯示速度提高了20%,模型的精度也有所提高。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1