999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

OSGB模型自動轉換為DWG的三維模型

2019-08-27 11:28:24范冬林謝美亭康傳利黃莉婷付波霖
桂林理工大學學報 2019年2期
關鍵詞:模型

范冬林,謝美亭,康傳利,黃莉婷,付波霖

(桂林理工大學 a.測繪地理信息學院;b.廣西空間信息與測繪重點實驗室,廣西 桂林 541006)

0 引 言

傾斜攝影測量是高精度的航拍測量,因其效率高、成本低等特點,使得利用傾斜攝影測量方式繪制地形圖漸受重視[1]。利用傾斜攝影技術生成的傾斜攝影三維模型數據相較于傳統人工建模數據,可以更加真實地反映地物的情況,增強三維數據所帶來的真實感,從而擴大傾斜攝影技術的應用,使得傾斜攝影測量數據處理逐漸成為傾斜攝影測量領域研究的熱點之一[2]。近年來,學者對傾斜模型單體化、多源數據融合等傾斜數據處理方式進行了大量的研究,如耿中元等提出的一種基于外部緩沖區和TIN瓦片金字塔的數據融合新算法來解決傾斜攝影的三維模型與大場景地形相融合問題的方法,擴展了傾斜模型數據作為基礎場景在三維地理信息系統中的應用[3];王勇等提出利用三角面片的可分割性質來解決傾斜攝影數據的三維模型可分離單體化問題,深化了傾斜模型數據的應用場景[4]。市場上也已經推出了多款傾斜攝影測量數據處理軟件,如Smart3D Capture、SuperMap GIS7C、Skyline V6.5等國內外軟件[5-7]。此外,對在其他三維建模軟件上處理傾斜攝影數據的方法進行相關研究,如利用傾斜攝影技術與3ds Max插件開發技術實現的半自動建模[8-9];在數據處理階段中,利用SketchUp二次開發技術在傾斜測量數據模型進行建筑三維重建[10];更進一步還有基于CeisumJS實現的傾斜攝影地形數據Web三維渲染技術[11-12]等,但傾斜攝影測量數據應用在AutoCAD建模上的相關研究仍然較少。若能擴展OSGB模型轉換格式,將OSGB模型自動轉換為DWG三維模型,實現包括紋理數據的真實渲染,這將大大促進傾斜攝影模型在AutoCAD中的使用,滿足國土、規劃部門的業務需求,更好地解決實際生產中的傾斜攝影數據處理與應用問題。

1 OSGB與DWG模型文件剖析

1.1 OSGB模型文件

通常而言, 單個OSGB三維模型數據中有多個文件夾, 每個文件夾下包含多個OSGB格式的數據文件,每個OSGB文件包含1個根節點(Group類型); 中間層次的節點(Group類型或Geode類型), 其包含有模型的幾何信息、 紋理信息、上下層節點之間的父子關系; 最底層的節點(Geode類型),該節點僅包含模型的幾何和紋理信息。

從數據模型上看,OSGB模型是利用自動化軟件,經過一定處理流程,運算生成基于真實影像的超高密度點云,并以此生成基于真實影像紋理的高分辨率實景三維模型,其本質上是mesh模型[13]。

1.2 DWG模型文件

DWG文件為AutoDesk公司推出的一種非公開的圖形格式文件,其由點、線、面等實體構成CAD圖形數據庫[14]。DWG文件內容分為索引部、標題部、實體部、名表部四部分。圖形的大部分信息都在實體部段中,因此對于從OSGB模型轉為DWG模型,如何創建DWG的實體部的數據是重點。創建實體段的數據首先要考慮需要讀取的數據的存儲方式,然后進行后一步的處理或存入數據文件。

2 技術分析

OpenSceneGraph(OSG)是使用OpenGL技術開發的, 基于C++平臺的應用程序接口(API),能讓開發人員更加快速、便捷地創建高性能、跨平臺的交互式圖形程序[15]。國內傾斜攝影測量數據多數為OSGB格式,該格式為OSG的二進制數據格式。在OSG中有多種庫文件,其中的OSG讀寫庫(osgDB庫)采用插件管理架構,允許用戶程序加載、使用和寫入3D數據庫,以支持大量常見的3D圖形文件格式。本文利用該插件機制完成對OSGB數據的解析。

目前, AutoCAD提供的開發接口有ObjectARX、 .NET、 VisualLISP、 VBA等, 其中ObjectARX(ARX)是AutoDesk公司針對CAD平臺上的二次開發而推出的一個開發軟件包, 它提供了以C++為基礎的面向對象的開發環境及應用程序接口, 而且CAD自身的許多模塊也是用ObjectARX開發的, 它的功能最強大、 性能最高,能真正快速地、 完全地訪問DWG文件, 使用ARX編程的函數的執行速度大大提高[16]。 ARX應用程序是一個DLL(動態鏈接庫), 共享CAD的地址空間, 對CAD進行直接函數調用[17], 使得開發者可以充分利用CAD的開放結構, 直接訪問CAD數據庫結構、 圖形系統以及CAD幾何造型核心, 能夠在運行期間實時擴展CAD功能。

由以上分析可知,將OSGB模型自動轉換為DWG三維模型,首先要先利用OSG對OSGB文件進行解析,得到頂點坐標、紋理坐標、面頂點索引、紋理、法線等數據;然后將這些數據進行存儲,作為緩存文件,利用ARX重新創建多個面片組成的三維模型及紋理映射;最終輸出DWG三維模型文件。技術路線如圖1所示。

3 OSGB到DWG數據模型的轉換

3.1 OSGB模型數據解析

傾斜攝影技術生成的OSGB模型數據主要涉及兩類數據:模型數據(包含頂點坐標、面部索引和法線)和紋理數據(包含紋理圖片和紋理坐標)。本文根據OSGB格式特點,針對上述兩類數據完成OSGB模型數據解析。

3.1.1 模型數據解析 OSG中主要包含有Node、 Geode(葉節點)和Group(組節點)這三大基本類節點, 可以利用OSG中的文件讀寫庫(osgDB),調用readNodeFile函數,將OSGB模型數據加載到Node類對象中,然后設計頂點訪問器和紋理訪問器,將這兩個訪問器都繼承于NodeVisitor類,并重載apply函數,遍歷整個OSGB模型場景函數并調用被訪問子節點的函數,依次對Node、Geode、StateSet節點進行處理。其中Geode繼承自Node節點,其包含幾何體信息,用于管理幾何圖元,模型數據的解析主要針對該節點進行。

3.1.2 紋理數據解析 紋理數據是傾斜模型真實表達的基礎,對紋理進行正確解析才能確保轉換后的DWG模型高保真性。OSGB模型中Texture2D管理場景中的紋理對象,用Image管理圖像的像素數據,若要用2D圖像文件作為紋理圖形,就要將文件名賦給Image對象,并將Image關聯到Texture2D。因為Geometry對象將vertex及其屬性數據(包括圖元的頂點、 頂點顏色、 頂點關聯方式、 法線顏色、 法線、 紋理坐標等基本信息)存儲在數組中,故可以通過數組索引將頂點數組映射到顏色、法線或紋理坐標數組。考慮到OSGB模型的紋理坐標與DWG模型Y軸參考點不同,故在緩存紋理坐標時需將其進行轉換,在解析紋理坐標時需要根據該公式計算解析后的紋理坐標:

Xd=Xo,

(1)

Yd=1-Yo。

(2)

其中,Xd、Yd表示DWG模型中的紋理坐標;Xo、Yo表示OSGB中的紋理坐標。

針對紋理數據,本文直接將其解析為圖像格式數據。由此便完成了OSGB數據解析工作,解析過程如圖2所示。

圖2 OSGB文件解析示意圖Fig.2 Schematic diagram of the OSGB model parsing

根據上述分析,本文對OSGB模型數據的解析步驟為:① 設計2個繼承于NodeVisitor類的訪問器——頂點訪問器(GeometryVisitor)和紋理訪問器(TextureVisitor);② 將一個具體的訪問器對象傳遞給節點,遍歷整個OSGB模型場景;③ 解析結點中含有Drawable對象中的數據。

實現的關鍵代碼如下:

//獲取模型數據

void GeometryVisitor::processGeometry (osg::Geometry* geo, osg::Matrix& m)

{

if (geo->containsDeprecatedData()) geo->fixDeprecatedData();

//獲取頂點數據

processArray(“v”,geo->getVertexArray(), m, false);

//獲取法線數據

processArray(“vn”,geo->getNormalArray(), m, true);

//獲取紋理坐標

processArray(“vt”,geo->getTexCoordArray(0));

};

//獲取紋理數據

Texture2D*tex2D=NULL;

StateAttribute*pTexture;

pTexture=state->getTextureAttribute(i, StateAttribute::TEXTURE);

if (tex2D=dynamic-cast(pTexture))

{

//獲取到紋理

Image*image=tex2D->getImage();

}

3.2 DWG三維模型重組

傾斜攝影技術生成的OSGB模型本質上是mesh模型,該模型是以三角面片加上紋理的方式完成渲染,其數據組織方式與AutoCAD中的數據類型AcDbSubDMesh較為相似。AcDbSubDMesh可以創建多個面片組成的三維模型,并支持紋理映射。利用3.1節解析后的模型數據和紋理數據,按照AcDbSubDMesh的創建方法進行三角面片模型組織,創建mesh是實體,完成DWG模型重組。由此便實現OSGB三維模型到的DWG三維模型的轉換。DWG三維模型重組方式如圖3所示。

圖3 DWG三維模型重組方式Fig.3 Restructuring method of DWG 3D model

基于上述分析,AutoCAD中進行三維模型重組需進行模型數據和紋理數據的設置,通過紋理坐標完成紋理映射,具體步驟:① 創建AcDbSubDMesh對象meshObj;② 創建命名材質objMaterial;③ 將材質objMaterial賦予meshObj;④ 設置紋理坐標和法線。

實現的關鍵代碼如下:

//創建一個新的mesh對象

AcDbSubDMesh* ptrMesh=new AcDbSubDMesh();

es=ptrMesh->setSubDMesh(*(pModel Data->pVertexPnts), *(pModelData->pFaceId x),0);

//使用紋理圖片創建材質

void CreateMaterial(string name, string meterialPath, AcDbDatabase *pDb);

//賦予材質給mesh對象

pSubDMesh->setMaterial(L“osgbMatrial1”, Adesk::kTrue);

//設置頂點紋理坐標

pSubDMesh->setVertexTextureArray(*(osgbModel.pTexturePnts));

//設置頂點法線

pSubDMesh->setVertexNormalArray (*(osgbModel.pNormalPnts));

3.3 轉換實例

以南寧市航洋城為例, 先利用無人機進行傾斜攝影數據采集, 然后生成OSGB格式數據, 選取三維模型中一塊數據,該塊數據隸屬第21層級, 包含路面、 樹和獨立石碑地物 。在Visual studio 2015環境下編程實現本文提出的方法, 硬件環境為: 戴爾optiplex 7080 臺式機, i5四核四線程CPU(主頻3.30 GHz), 內存為12 G, 硬盤500 G。 軟件配置: 操作系統為Windows 7 SP1, AutoCAD版本為2017, OpenSceneGraph版本為3.6.1。

實驗數據大小為98 kB,包含912個頂點坐標數據,12個紋理坐標數據以及884個面片數據。該模型的部分頂點坐標數據見表1,部分紋理坐標數據見表2,部分的面部索引數據見表3。

針對該模型, 首先將其解析得到頂點坐標數據和面部索引數據, 然后根據ARX以mesh的方式組織為DWG模型, 得到紋理的mesh模型。 圖4a為在Acute3D Viewer中以線框方式顯示的轉換前的模型和圖4b中在AutoCAD 2017中以本文方法建立的mesh模型, 可以看出二者都由頂點數據連接而成的三角面片組織基本一致, 說明了利用本文方法可以將OSGB中模型數據正確轉換為無紋理的DWG模型。進一步解析紋理數據和紋理坐標, 將紋理數據以圖片的方式存儲在文件系統中。利用ARX創建該模型對應的材質,并將材質運用到該模型上,最后得到轉換后的DWG三維模型。圖5a表示原始OSGB模型在軟件Acute3D Viewer中的顯示效果,圖5b表示轉換后的DWG三維模型在軟件AutoCAD中的顯示效果。可以看出轉換后的DWG三維模型顯示效果良好,與OSGB模型具有一致的視覺效果。

表1 OSGB部分頂點坐標數據

表2 OSGB部分紋理坐標數據

表3 OSGB部分面部索引數據

圖4 轉換前后的對比(線框模式)Fig.4 Model comparison before and after conversion(wire-frame mode)

為了進一步分析, 對比了兩種模型轉換前后數據組織情況(表4), 由于DWG模型采用的是非索引記錄方式, 因此其頂點數和UV數要遠大于OSGB模型中的數量。 另外, 從OSGB文件中將紋理信息保存到圖片格式也增加了文件的大小。

圖5 轉換前后的對比(真實模式)Fig.5 Model comparison before and after conversion (realistic mode)

表4 兩種模型的數據組織情況

4 結束語

本文通過對OSGB模型的解析和DWG模型重組方法進行研究分析的基礎上,提出了一種將OSGB模型自動轉換為DWG模型的方法,利用OSG和ARX實現了OSGB模型自動轉換為DWG三維模型的方法,并對轉換前后模型的數據組織情況進行了對比分析,驗證了本文方法的有效性,轉換前后的模型顯示效果具有較高一致性,能夠在AutoCAD 2017中正常加載與實現,達到國土、規劃部門使用三維模型數據的精確性要求。

本文方法只是針對單個OSGB文件進行解析,但一個完整的傾斜攝影模型是由多個OSGB文件組成的,在顯示傾斜攝影測量三維模型時,還要考慮OSGB數據的LOD顯示效果需求,因此在LOD效果現實等方面還有待于進一步研究和探索。

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 2020极品精品国产| 思思热在线视频精品| 四虎永久在线| 99视频在线免费观看| 国产高潮流白浆视频| 国产96在线 | 就去色综合| 大乳丰满人妻中文字幕日本| 91精品久久久久久无码人妻| 久久青青草原亚洲av无码| 亚洲丝袜第一页| 欧美成人一区午夜福利在线| 香蕉国产精品视频| 男女性午夜福利网站| 99激情网| 国产高清自拍视频| 全裸无码专区| 久久99国产精品成人欧美| 中文字幕久久波多野结衣| 亚洲水蜜桃久久综合网站| 日韩在线视频网站| 在线无码av一区二区三区| 蜜桃视频一区| 伊人色天堂| 婷婷五月在线| 91视频99| a毛片免费看| 日本人妻一区二区三区不卡影院| 成年片色大黄全免费网站久久| 91精品国产丝袜| 久久久久久高潮白浆| av在线5g无码天天| 欧美日韩国产系列在线观看| 玖玖免费视频在线观看| 亚洲免费人成影院| 亚洲成a人片在线观看88| 无码又爽又刺激的高潮视频| 亚洲天堂视频在线免费观看| 亚洲精品麻豆| 91网站国产| 永久毛片在线播| 毛片卡一卡二| 91精品网站| 亚洲国产成人精品一二区| 伊伊人成亚洲综合人网7777| 免费在线色| 免费国产好深啊好涨好硬视频| av在线人妻熟妇| 91娇喘视频| 青青操国产| 国产成人凹凸视频在线| 亚洲综合第一区| 亚洲精品自产拍在线观看APP| 午夜a视频| 91久久大香线蕉| 国产激情第一页| 最新日韩AV网址在线观看| 在线观看国产精品一区| 成人精品视频一区二区在线| 亚洲视频四区| 久久99精品久久久大学生| 久久99国产综合精品1| 亚洲视频一区| 国产性生大片免费观看性欧美| 亚洲免费黄色网| 欧美成人免费午夜全| 米奇精品一区二区三区| 91av成人日本不卡三区| 国产一区二区三区夜色| 国产福利大秀91| 亚洲av日韩av制服丝袜| 国产美女主播一级成人毛片| 久视频免费精品6| 日韩欧美国产三级| 亚洲成在线观看| 高清亚洲欧美在线看| 激情视频综合网| 福利国产在线| 精品一区二区三区波多野结衣| 久久精品无码专区免费| 在线中文字幕网| 精品福利网|