国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Unity3D的三維建筑快速可視化算法研究

2021-11-03 09:24:00航天宏圖信息技術(shù)股份有限公司上海宏圖空間網(wǎng)絡(luò)科技有限公司劉富乾
電子世界 2021年18期
關(guān)鍵詞:墻面頂點(diǎn)紋理

航天宏圖信息技術(shù)股份有限公司 上海宏圖空間網(wǎng)絡(luò)科技有限公司 劉富乾

航天宏圖信息技術(shù)股份有限公司 王 芬

航天宏圖信息技術(shù)股份有限公司 上海宏圖空間網(wǎng)絡(luò)科技有限公司 廖芳芳

航天宏圖信息技術(shù)股份有限公司 管占磊 王 新

通過實(shí)現(xiàn)三維建筑物快速可視化,真實(shí)還原建筑物模型及其自身整體風(fēng)格、規(guī)模和形態(tài),可以有效地提升三維數(shù)字城市建設(shè)效率,有利于城市發(fā)展規(guī)劃。針對(duì)目前大多數(shù)建筑物三維可視化方法重點(diǎn)關(guān)注建筑物建模方法與可視化展示,忽略了模型在現(xiàn)實(shí)三維世界中的真實(shí)表現(xiàn),本研究提出一種基于Unity3D和GIS建筑物數(shù)據(jù)實(shí)現(xiàn)快速可視化的算法,通過預(yù)制大量真實(shí)世界建筑物屋頂和墻面的紋理貼圖資源,為建筑物模型隨機(jī)且均勻地按需貼圖,實(shí)現(xiàn)三維建筑物逼真顯示,并通過紋理拼接的方式用一張圖保存豐富的紋理貼圖信息,使得資源內(nèi)存加載得到了優(yōu)化,提升了三維模型可視化的效率。對(duì)比實(shí)驗(yàn)結(jié)果表明,本研究提出的方法可以快速實(shí)現(xiàn)三維建筑物的真實(shí)可視化。

隨著我國(guó)數(shù)字化城市的建設(shè),三維數(shù)字城市在城市規(guī)劃中發(fā)揮著重要的作用,建筑物三維可視化作為其中關(guān)鍵技術(shù)之一,越來越受到人們的關(guān)注。近幾年來研究人員也對(duì)其進(jìn)行了相關(guān)的研究,如Grou等介紹了一個(gè)場(chǎng)景分析系統(tǒng),該系統(tǒng)利用建筑物立體像對(duì)和輪廓信息實(shí)現(xiàn)建筑物表面建模。M.Pollefeys等提出一種從場(chǎng)景圖像序列中自動(dòng)提取紋理化三維曲面模型的方法。陳愛軍等提出利用城市航空立體像對(duì)實(shí)現(xiàn)三維建筑物全自動(dòng)建模的方法,該方法利用匹配生成的三維信息對(duì)二維建筑物輪廓線進(jìn)行三維插值,獲得建筑物的三維信息,由此實(shí)現(xiàn)了建筑物三維建模。朱國(guó)敏等針對(duì)抽象的建筑物面對(duì)象提出基于三角剖分的規(guī)則建筑物批量三維模型構(gòu)建方法。朱慶偉等提出一種基于三維激光掃描儀的建筑物建模方法,該方法利用三維激光掃描儀獲取建筑物的二維幾何數(shù)據(jù)和三維位置點(diǎn)數(shù)據(jù)信息,結(jié)合二者實(shí)現(xiàn)三維建筑物建模。

現(xiàn)有的建筑物三維建模方法大多關(guān)注在建筑物模型的可視化表現(xiàn)上,缺乏對(duì)建筑物自身整體風(fēng)格、規(guī)模、形態(tài)等的關(guān)注,使得建筑物模型表現(xiàn)缺乏真實(shí)性。另外,精細(xì)建模使得大范圍三維建筑物快速可視化變得困難,數(shù)據(jù)量也給后期的空間分析帶來諸多不便。本研究分析現(xiàn)有建模方法的不足,在實(shí)現(xiàn)建筑物建模的基礎(chǔ)上,針對(duì)建筑物模型的特點(diǎn),使用多種真實(shí)小范圍紋理圖案拼接形成一張建筑物屋頂拼接紋理圖案和一張墻面拼接紋理圖案,僅用兩張紋理圖案緩解了計(jì)算機(jī)內(nèi)存消耗,在真實(shí)還原三維建筑物的同時(shí)提升了建模效率。

1 研究方法或原理

本研究首先對(duì)建筑物Shapefile矢量數(shù)據(jù)進(jìn)行提取、解析、處理,然后利用建筑物二維幾何坐標(biāo)信息和高程信息實(shí)現(xiàn)三維建模,并利用Unity預(yù)制的貼圖紋理資源對(duì)三維建筑物模型進(jìn)行隨機(jī)且均勻的貼圖,最后基于Unity構(gòu)建UnityMesh實(shí)現(xiàn)三維建筑物可視化。研究方法如圖1所示。

圖1 本文研究方法流程圖

1.1 數(shù)據(jù)準(zhǔn)備與處理

(1)解析Shapefile數(shù)據(jù)

Shapefile格式是一種使用文件方式存儲(chǔ)GIS數(shù)據(jù)的文件格式,通常包括一個(gè)以坐標(biāo)點(diǎn)集形式存儲(chǔ)對(duì)象位置信息的主文件*.shp、一個(gè)存儲(chǔ)幾何體位置的索引文件*.shx和一個(gè)存儲(chǔ)對(duì)象屬性信息的表文件*.dbf三部分。

主文件是一個(gè)直接訪問、可變記錄長(zhǎng)度的文件,其中每條記錄都用它的頂點(diǎn)列表來描述一個(gè)形狀。在索引文件中,每條記錄包含對(duì)應(yīng)的主文件記錄從主文件開始的偏移量。表文件包含每個(gè)幾何形狀的特征屬性。幾何圖形和屬性之間的一對(duì)一關(guān)系是基于記錄號(hào)的。表文件中的屬性記錄必須與主文件中的記錄順序相同。

通過解析Shp數(shù)據(jù),提取出待建模建筑物區(qū)域的BoundingBox以及數(shù)據(jù)ID數(shù)組,遍歷數(shù)據(jù)ID數(shù)組獲取每個(gè)ID對(duì)應(yīng)的建筑物平面坐標(biāo)和高度信息。

(2)空間數(shù)據(jù)坐標(biāo)轉(zhuǎn)換

Unity作為一款仿真工具,其平臺(tái)支持常見的簡(jiǎn)單三維模型創(chuàng)建,比如長(zhǎng)方體、球、平面、圓柱體等。在Unity場(chǎng)景中添加物體,物體的位置是以世界坐標(biāo)系顯示在場(chǎng)景中的。

本文解析原始建筑物Shp數(shù)據(jù)的ID數(shù)據(jù)獲取到經(jīng)緯度坐標(biāo),要正確顯示到Unity場(chǎng)景視圖中,需要將經(jīng)緯度坐標(biāo)轉(zhuǎn)換成墨卡托投影下的世界坐標(biāo)。

(3)偏移點(diǎn)糾正

針對(duì)模型在世界坐標(biāo)系下的中心點(diǎn)與模型實(shí)際位置存在偏差的情況,通過解析獲取的模型中心點(diǎn),計(jì)算該點(diǎn)與世界坐標(biāo)系下的中心點(diǎn)之間的偏移量,然后根據(jù)偏移量去糾正模型的所有頂點(diǎn)。

1.2 基于Unity生成建筑物模型

Unity是由Unity Technologies開發(fā)的一個(gè)讓用戶輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎。任何地理參考數(shù)據(jù)都可以基于其真實(shí)世界的坐標(biāo)覆蓋在Unity上,并與其他元素一起集成到單個(gè)環(huán)境中。基于這個(gè)原理,可以利用Unity工具基于GIS數(shù)據(jù)實(shí)現(xiàn)3D城市模擬。

在經(jīng)過對(duì)二維數(shù)據(jù)的坐標(biāo)轉(zhuǎn)換和中心點(diǎn)偏移糾正處理以后,就能夠使用這些數(shù)據(jù)在地圖中進(jìn)行快速的三維可視化渲染。

建筑物在空間上由不同的建筑構(gòu)件組成,本方法主要將建筑物分解為屋頂和墻面兩部分基本要素,通過解析Shp數(shù)據(jù)可以獲取到建筑物的高度數(shù)據(jù),結(jié)合建筑物二維平面坐標(biāo)數(shù)據(jù)和建筑物具備的高度屬性,在空間Y軸上拉伸可以快速計(jì)算出建筑物的屋頂坐標(biāo)信息。將墻面在Y軸方向上根據(jù)對(duì)應(yīng)的剩余高度比例值進(jìn)行拆分,分為第一層樓、中間層樓和頂層樓,獲得每層樓的頂點(diǎn)坐標(biāo)信息。經(jīng)過以上空間規(guī)則的組合迭代,結(jié)合腳本參數(shù)化可以實(shí)現(xiàn)建筑物體的建模。

根據(jù)建筑物的屋頂坐標(biāo)信息確定屋頂面,生成屋頂Mesh數(shù)據(jù)。墻面為連接屋頂面與地面的四邊形,本研究通過將周圍墻面拆分為第一層樓、中間層樓和頂層樓,分別創(chuàng)建墻面底部Mesh數(shù)據(jù)、中部Mesh數(shù)據(jù)和頂部Mesh數(shù)據(jù)。實(shí)現(xiàn)基于建筑物矢量數(shù)據(jù)中的矢量輪廓數(shù)據(jù)和高度數(shù)據(jù),生成待建模區(qū)域中建筑物的三維白模,其過程如下:

1)獲取建筑物屋頂和每層墻面的頂點(diǎn);

主要的算法思想是,遍歷Edge的數(shù)組,取得第一條邊的第n+1頂點(diǎn)與第n頂點(diǎn),分別記為v1,v2。此時(shí)可以計(jì)算出墻面的方向向量,以及歸一化后的方向記為wallSegmentDirection。v1重新賦值給新的變量,記為wallSegmentFirstVertex。由此計(jì)算第二個(gè)點(diǎn)wallSegmentSecondVertex=wallSegmentFirstVert ex + wallSegmentDirection * 一段墻面的長(zhǎng)度。

在CreateWall函數(shù)中首先記錄wallSegmentFirstVertex與wallSegmentSecondVertex的Y值,分別記為currentY1和currentY2。在計(jì)算頂點(diǎn)的過程中每個(gè)墻面的頂點(diǎn)即為四個(gè)頂點(diǎn),存儲(chǔ)當(dāng)前頂點(diǎn),后面的頂點(diǎn)在currentY1和currentY2基礎(chǔ)上減去對(duì)應(yīng)的剩余高度比例值。

2)計(jì)算判斷屋頂面和每層墻面的頂點(diǎn)是否順時(shí)針繪制,這一步為了確保屋頂面的法向量朝上,墻面的法向量朝外,從而保證渲染建筑物的外部表面;

3)計(jì)算判斷屋頂面是否包含空洞,便于下步進(jìn)行屋頂面三角剖分;

4)針對(duì)屋頂面和墻面進(jìn)行三角剖分,計(jì)算三角形索引值,索引的計(jì)算按照順時(shí)針方向、一個(gè)面有六個(gè)索引的方式來進(jìn)行索引值填充;

1.3 建筑物表面貼圖

紋理數(shù)據(jù)在本質(zhì)上就是現(xiàn)實(shí)三維世界中物體的真實(shí)貼圖照片,因此建筑物貼圖照片的質(zhì)量在一定程度上影響著三維建筑物可視化的真實(shí)性。但是當(dāng)使用大量不同的建筑物貼圖照片時(shí),會(huì)加重計(jì)算機(jī)建模工作的內(nèi)存負(fù)載,降低可視化效率。所以本研究通過將具有代表性的小范圍建筑物屋頂和墻面紋理圖案作為拼接因子,拼接出一幅屋頂紋理圖案和一幅墻面紋理圖案,最終采用的紋理數(shù)據(jù)包括屋頂Diffuse漫反射貼圖、屋頂Ambient Occlusion環(huán)境映射貼圖、屋頂Normal法線貼圖、墻面Diffuse漫反射貼圖、墻面Ambient Occlusion環(huán)境映射貼圖、墻面Metallic金屬度貼圖、墻面Normal法線貼圖和墻面Roughness凹凸貼圖,如圖2所示。

圖2 屋頂和墻面拼接紋理圖案

資源是Unity開發(fā)系統(tǒng)的重要組成部分。Unity提供ScriptableObject添加標(biāo)簽CreateAssetMenu可以在Assets按鈕下一鍵生成包括紋理貼圖文件在內(nèi)的資源腳本。圖3是預(yù)制好的紋理貼圖資源腳本,方便讀取和存儲(chǔ)變量。

圖3 紋理貼圖資源腳本

本方法使用資源腳本文件預(yù)制好的紋理尺寸大小進(jìn)行適配計(jì)算每塊墻面的UV配比值。利用Assets文件夾中的紋理貼圖資源對(duì)每個(gè)建筑物隨機(jī)均勻地賦予不同的紋理貼圖,實(shí)現(xiàn)精確控制紋理坐標(biāo)和“逼真貼面”,具體實(shí)現(xiàn)如下:

(1)獲取組成建筑物各個(gè)部分的相關(guān)信息,包括組成建筑物屋頂和不同層墻面的各個(gè)節(jié)點(diǎn)的空間位置坐標(biāo)信息(x,y,z);

(2)將ScriptableObject生成的紋理貼圖資源隨機(jī)均勻地分配給每個(gè)建筑物;

(3)根據(jù)建筑物屋頂和不同層墻面各個(gè)節(jié)點(diǎn)的空間位置坐標(biāo)(x,y,z),計(jì)算組成對(duì)應(yīng)面的每個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的紋理坐標(biāo)(u,v);

(4)將對(duì)應(yīng)的紋理圖案賦予給相應(yīng)的建筑物面,實(shí)現(xiàn)逼真貼面;

(5)刷新屏幕顯示。

1.4 構(gòu)建UnityMesh

首先獲取MeshData的頂點(diǎn)、法線、UV、正切線、三角形索引值,然后創(chuàng)建GameObject添加MeshFilter組件以及MeshRender組件。MeshFilter組件是設(shè)置Mesh;MeshRender組件作為網(wǎng)格渲染器保證在場(chǎng)景中看到個(gè)體呈現(xiàn)渲染效果,給物體添加材質(zhì)紋理等。最終在Unity中實(shí)現(xiàn)三維建筑物可視化。

2 數(shù)據(jù)結(jié)果處理與分析

本方法基于Unity進(jìn)行實(shí)驗(yàn)研究。選取臺(tái)灣省桃園市為實(shí)驗(yàn)區(qū),在提取實(shí)驗(yàn)區(qū)建筑物Shapefile矢量數(shù)據(jù)的基礎(chǔ)上,通過解析獲得建筑物數(shù)據(jù)的范圍邊界、中心點(diǎn)、幾何頂點(diǎn)以及高程信息,并將幾何頂點(diǎn)和中心點(diǎn)的經(jīng)緯度坐標(biāo)經(jīng)過轉(zhuǎn)換獲得墨卡托投影下的世界坐標(biāo),根據(jù)當(dāng)前放置顯示中心點(diǎn)計(jì)算糾正偏移點(diǎn)。結(jié)合幾何頂點(diǎn)坐標(biāo)和高程信息實(shí)現(xiàn)建筑物的三維建模,然后利用Unity預(yù)制的紋理貼圖資源隨機(jī)且均勻地為三維建筑物模型貼圖,最后基于Unity構(gòu)建UnityMesh實(shí)現(xiàn)三維建筑物可視化,實(shí)現(xiàn)效果如圖4所示。為了對(duì)比分析本研究方法的有效性,本文還基于實(shí)驗(yàn)區(qū)數(shù)據(jù)進(jìn)行了三維建筑物白模建立,實(shí)現(xiàn)效果如圖5所示;以及為三維建筑物模型賦予相同材質(zhì)的紋理貼圖,實(shí)現(xiàn)效果如圖6所示。

圖4 三維建筑物不同材質(zhì)貼圖模型

圖5 三維建筑物白模

分析以上三種三維建筑物建模方法,圖5所示方法獲得的三維建筑物白模沒有紋理信息,缺乏真實(shí)感和直觀感;圖6所示方法獲得的三維建筑物模型賦予了相同材質(zhì)的紋理貼圖,雖然相較于圖5所示方法豐富了紋理信息,但是比較單一,缺乏對(duì)建筑物本身風(fēng)格的關(guān)注;圖4所示的本研究方法為每個(gè)建筑物隨機(jī)且均勻地設(shè)置了不同的紋理貼圖,從整體上看和現(xiàn)實(shí)世界的建筑相一致,具備真實(shí)感。

圖6 三維建筑物相同材質(zhì)貼圖模型

同時(shí)相較于使用大量精細(xì)的紋理圖案,本論文研究方法僅用了一張屋頂拼接紋理貼圖和一張墻面拼接紋理貼圖,大大緩解了計(jì)算機(jī)內(nèi)存壓力,提升了三維建模效率。

結(jié)論:針對(duì)現(xiàn)有的大多數(shù)基于GIS建筑物數(shù)據(jù)的三維可視化方法側(cè)重于模型的構(gòu)建,對(duì)建筑物自身的真實(shí)紋理及結(jié)構(gòu)表現(xiàn)能力不足等問題,本研究提出了一種基于Unity3D的GIS建筑物數(shù)據(jù)三維可視化方法。通過將具有代表性的小范圍建筑物真實(shí)紋理拼接成一幅豐富的紋理貼圖,同時(shí)利用Unity預(yù)制好紋理資源,實(shí)現(xiàn)建筑物的快速逼真可視化。一方面,相較于簡(jiǎn)單的三維白模及單一模型豐富了紋理信息。另一方面,相較于精細(xì)建模節(jié)省了內(nèi)存消耗,提升了三維可視化的效率。

猜你喜歡
墻面頂點(diǎn)紋理
過非等腰銳角三角形頂點(diǎn)和垂心的圓的性質(zhì)及應(yīng)用(下)
冷暖——老舊小區(qū)改造,改變的不止是墻面
基于BM3D的復(fù)雜紋理區(qū)域圖像去噪
軟件(2020年3期)2020-04-20 01:45:18
使用紋理疊加添加藝術(shù)畫特效
關(guān)于頂點(diǎn)染色的一個(gè)猜想
TEXTURE ON TEXTURE質(zhì)地上的紋理
Coco薇(2017年8期)2017-08-03 15:23:38
開關(guān)的美麗衣裳
消除凹凸紋理有妙招!
Coco薇(2015年5期)2016-03-29 23:22:15
手工字母花卉讓墻面與眾不同
一種墻面清潔、探傷機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)
武义县| 根河市| 镇宁| 灵台县| 尉犁县| 武清区| 大渡口区| 集安市| 新昌县| 无棣县| 武隆县| 芒康县| 哈密市| 探索| 台安县| 右玉县| 棋牌| 渭南市| 阿合奇县| 扶余县| 晋中市| 高邑县| 兰州市| 揭阳市| 永修县| 古浪县| 长寿区| 樟树市| 黄陵县| 锦州市| 崇仁县| 布尔津县| 界首市| 黔江区| 沙湾县| 蕲春县| 麟游县| 岚皋县| 萨嘎县| 广宁县| 奉贤区|