黃 軻,黃 蓋,楊智云,段洋利,趙子維
(巴州國(guó)土資源勘測(cè)規(guī)劃設(shè)計(jì)院,新疆 庫(kù)爾勒 841000)
?
三維GIS在房產(chǎn)室內(nèi)信息系統(tǒng)中的應(yīng)用
黃 軻,黃 蓋,楊智云,段洋利,趙子維
(巴州國(guó)土資源勘測(cè)規(guī)劃設(shè)計(jì)院,新疆 庫(kù)爾勒 841000)
三維房產(chǎn)室內(nèi)信息可為消費(fèi)者提供逼真的視覺(jué)服務(wù),可更好地適應(yīng)現(xiàn)代房產(chǎn)交易的發(fā)展需求。本文結(jié)合OpenGL和3ds Max技術(shù)研究了基于三維GIS的房產(chǎn)室內(nèi)信息系統(tǒng)。介紹了三維GIS在房產(chǎn)信息系統(tǒng)應(yīng)用中的數(shù)據(jù)組織采集管理方式、系統(tǒng)的功能模塊設(shè)計(jì)及系統(tǒng)的實(shí)現(xiàn)3個(gè)部分;著重研究了利用3ds Max和OpenGL實(shí)現(xiàn)室內(nèi)編輯、漫游顯示、碰撞檢測(cè)及文件讀取重繪等功能;實(shí)現(xiàn)了室內(nèi)信息的三維漫游顯示、室內(nèi)信息編輯修改功能,滿足了客戶的真三維視覺(jué)體驗(yàn)的要求及室內(nèi)信息實(shí)時(shí)編輯修改的需求;最后指出了系統(tǒng)的不足之處和在其他領(lǐng)域的應(yīng)用價(jià)值。
三維GIS;房產(chǎn)室內(nèi)信息系統(tǒng);OpenGL;3ds Max
目前GIS已經(jīng)應(yīng)用于房地產(chǎn)信息的管理。特別是WebGIS的應(yīng)用,為購(gòu)房者提供了一種更加便捷、直觀的考察房源手段。購(gòu)房者足不出戶就能通過(guò)網(wǎng)絡(luò)找到自己感興趣的樓盤信息和樓盤圖片[1]。當(dāng)前網(wǎng)絡(luò)上主要是提供房間的二維圖片及測(cè)繪信息,廣大購(gòu)房者除了實(shí)地觀察,只能通過(guò)一些房產(chǎn)數(shù)據(jù)或平面圖片來(lái)了解室內(nèi)情況。然而購(gòu)房者不僅希望看到室外景觀,更希望看到室內(nèi)的布局。從室外進(jìn)入室內(nèi)是數(shù)字城市尤其是數(shù)字房產(chǎn)進(jìn)一步發(fā)展的必然[2],因而GIS的另一大重要分支三維GIS將會(huì)發(fā)揮重要作用。
三維GIS不僅能表達(dá)空間對(duì)象間的平面關(guān)系和垂向關(guān)系,而且能對(duì)其進(jìn)行三維空間分析和操作,向用戶立體展現(xiàn)地理空間現(xiàn)象,給人以更真實(shí)的感受[3]。如果能夠基于三維GIS建立室內(nèi)三維系統(tǒng),就可以使大量的二維測(cè)繪數(shù)據(jù)得到合理的應(yīng)用,能夠?yàn)橘?gòu)房者提供不小的方便,只需要鼠標(biāo)輕輕一點(diǎn),便可以省去多次奔波于實(shí)地的房屋觀察,具有很大的應(yīng)用價(jià)值。
通過(guò)自動(dòng)或半自動(dòng)的方法提取建筑物信息從而重建三維模型一直是國(guó)內(nèi)外學(xué)者關(guān)注的熱點(diǎn)問(wèn)題,并已有大量深入的研究[4-5]。但大多是對(duì)建筑物外表面進(jìn)行建模[6-7],而缺少建筑物內(nèi)部完整精密信息的表達(dá)[8]。縱觀國(guó)內(nèi)外三維GIS的研發(fā)現(xiàn)狀,有3種途徑實(shí)現(xiàn)三維GIS[9]:一是利用已有的三維引擎對(duì)三維場(chǎng)景進(jìn)行開(kāi)發(fā);二是利用比較成熟的三維顯示插件進(jìn)行三維場(chǎng)景顯示;三是通過(guò)GIS平臺(tái)所提供的三維API進(jìn)行二次開(kāi)發(fā)。本文主要采用OpenGL三維引擎進(jìn)行底層開(kāi)發(fā),利用3ds Max建模,其優(yōu)點(diǎn)是三維模型的顯示和渲染效率較高。
1. 開(kāi)發(fā)目標(biāo)
房產(chǎn)室內(nèi)信息系統(tǒng)開(kāi)發(fā)的主要目的是為購(gòu)房者提供一種能夠交互的媒體,可以全面、清晰和直觀地瀏覽房屋信息、結(jié)構(gòu)和室內(nèi)布局,并能夠自主布置室內(nèi)細(xì)節(jié)物體。圍繞著上述目的,結(jié)合三維GIS技術(shù)特點(diǎn),可以將房產(chǎn)室內(nèi)信息系統(tǒng)的開(kāi)發(fā)目標(biāo)定義為借助數(shù)字?jǐn)z影、激光掃描等先進(jìn)的空間數(shù)據(jù)獲取手段,在已有二維測(cè)繪數(shù)據(jù)及各種屬性數(shù)據(jù)的基礎(chǔ)上,通過(guò)圖形圖像、計(jì)算機(jī)可視化等信息處理方法,結(jié)合數(shù)據(jù)庫(kù)管理和網(wǎng)絡(luò)信息等技術(shù),開(kāi)發(fā)一個(gè)集室內(nèi)三維模型、三維漫游瀏覽、室內(nèi)模型編輯、室內(nèi)信息查詢一體化的信息系統(tǒng)。
2. 數(shù)據(jù)采集和組織
房產(chǎn)數(shù)據(jù)采集和組織主要分為以下3種:
1) 房間結(jié)構(gòu)及門窗數(shù)據(jù):房間結(jié)構(gòu)及門窗作為房屋的整體架構(gòu)對(duì)于建立室內(nèi)三維模型有著非常重要的地位。數(shù)據(jù)的獲得即在AutoCAD中導(dǎo)入建筑平面設(shè)計(jì)圖DXF文件作為背景,然后對(duì)房間結(jié)構(gòu)和門窗分別進(jìn)行數(shù)字化采集,并分別存儲(chǔ)為多邊形圖層和線狀圖層,同時(shí)在數(shù)據(jù)庫(kù)中建立“房間-門窗”關(guān)系表。
2) 3ds Max模型數(shù)據(jù):首先借助數(shù)字?jǐn)z影等手段獲取室內(nèi)材質(zhì)圖片信息,然后根據(jù)室內(nèi)地物數(shù)據(jù)和材質(zhì)信息手工建立3ds Max模型,存儲(chǔ)為3DS文件格式。從3DS文件中讀取相應(yīng)的3D模型信息,包括位置、長(zhǎng)度、寬度、高度、大小比例、旋轉(zhuǎn)角度,并在數(shù)據(jù)庫(kù)中建立“房間-3D模型”關(guān)系表。
3) 室內(nèi)屬性信息數(shù)據(jù):主要將樓層、面積、結(jié)構(gòu)、價(jià)格等室內(nèi)信息錄入數(shù)據(jù)庫(kù)中,建立室內(nèi)信息數(shù)據(jù)表。
3. 系統(tǒng)模塊設(shè)計(jì)
系統(tǒng)功能如圖1所示,主要分為以下4個(gè)部分:
1) 室內(nèi)三維建模又分為兩部分:一是自動(dòng)建模,主要是根據(jù)二維測(cè)量數(shù)據(jù)對(duì)室內(nèi)的整體架構(gòu)(墻壁、門、窗、梯角線)進(jìn)行自動(dòng)建模;二是根據(jù)3ds Max進(jìn)行復(fù)雜建模。利用文件讀取算法,將3ds Max創(chuàng)建的模型數(shù)據(jù)讀出來(lái),然后利用這些數(shù)據(jù)在OpenGL環(huán)境中重新構(gòu)建三維模型,從而免去直接利用OpenGL構(gòu)建復(fù)雜模型這一繁雜工作。
2) 三維漫游瀏覽:通過(guò)鼠標(biāo)和鍵盤操作來(lái)控制飛行速度、視角和視野范圍,使用者能夠在三維室內(nèi)中自由“行走”,瀏覽室內(nèi)房間結(jié)構(gòu)和布局。漫游的同時(shí)還要根據(jù)房間數(shù)據(jù)及3ds Max模型數(shù)據(jù)進(jìn)行碰撞檢測(cè),以使漫游更加真實(shí)。
3) 室內(nèi)模型編輯:可以對(duì)室內(nèi)地物如家具、電器及廚具等細(xì)節(jié)物體進(jìn)行平移、布置、更新、放大、縮小、旋轉(zhuǎn)等編輯操作。
4) 室內(nèi)信息查詢:主要包括樓層、面積、結(jié)構(gòu)、價(jià)格、配套設(shè)施、售房情況及其他需要賦予的信息。使用者輕點(diǎn)鼠標(biāo)即可查詢到每套房子的結(jié)構(gòu)和價(jià)格等信息。
圖1 系統(tǒng)功能設(shè)計(jì)
系統(tǒng)采用Visual Studio 2012的開(kāi)發(fā)環(huán)境,利用3ds Max建立三維室內(nèi)模型,通過(guò)OpenGL編程操縱模型,結(jié)合SQL數(shù)據(jù)庫(kù)管理,實(shí)現(xiàn)室內(nèi)漫游、編輯和信息查詢。
1. 3DS文件讀取與重繪
3DS文件是較為通用的一種3D模型文件,在3ds Max和AutoCAD中都能使用,該系統(tǒng)也使用該模型文件。
要讀取3DS文件就要先了解3DS文件的組成結(jié)構(gòu)。3DS模型文件的基本構(gòu)成單位是塊,塊是相互嵌套的。塊包括塊頭和主體內(nèi)容兩部分,塊頭又由塊ID和塊長(zhǎng)度兩部分組成,主體內(nèi)容是塊的數(shù)據(jù)信息[10]。3DS文件中的數(shù)據(jù)存儲(chǔ)規(guī)則是高位在前,低位在后。3DS有一個(gè)主塊,其主塊ID就是用來(lái)判斷3DS文件的起始位置;而模型的頂點(diǎn)信息、材質(zhì)信息、紋理信息等則組織為次級(jí)塊,次級(jí)塊也都是由ID號(hào)進(jìn)行標(biāo)識(shí)的,在程序中可以通過(guò)ID號(hào)來(lái)讀取所需要的信息。
根據(jù)文件格式,遞歸讀取每一個(gè)對(duì)象塊的顏色、頂點(diǎn)、面、紋理及材質(zhì)等信息,然后設(shè)置繪制大小和顯示位置進(jìn)行重繪。
2. OpenGL 漫游
OpenGL是獨(dú)立于操作系統(tǒng)和硬件環(huán)境的三維圖形軟件庫(kù)。由于其開(kāi)放性和高度的可重用性,目前已成為業(yè)界標(biāo)準(zhǔn)。很多優(yōu)秀的軟件如著名的動(dòng)畫制作軟件3ds Max、三維仿真平臺(tái)VegaPrime、三維可視化軟件ArcGlobe均是基于OpenGL平臺(tái)進(jìn)行開(kāi)發(fā)的[11]。
在現(xiàn)實(shí)生活中我們是通過(guò)眼睛來(lái)看周圍的物體,眼睛移動(dòng),周圍的物體也隨之移動(dòng),從而達(dá)到漫游的效果。在OpenGL中可以利用gluLookAt(GLdouble eyex、GLdouble eyey、GLdouble eyez、GLdouble centerx、GLdouble centery、Gldouble centerz、GLdouble upx、GLdouble upy、Gldouble upz)函數(shù)來(lái)實(shí)現(xiàn)漫游,利用該函數(shù)改變?nèi)搜鄣囊朁c(diǎn)和攝像機(jī)的參考點(diǎn),從而改變眼睛在場(chǎng)景中的位置、方向,進(jìn)而達(dá)到漫游的目的。
3. 碰撞檢測(cè)
碰撞檢測(cè)是構(gòu)造可視化系統(tǒng)及虛擬現(xiàn)實(shí)的一個(gè)重要組成部分,可以使場(chǎng)景更加逼真自然。若沒(méi)有碰撞檢測(cè)就會(huì)出現(xiàn)“穿墻而過(guò)”的現(xiàn)象,而不是實(shí)際的碰撞效果,這將大大降低了仿真程度。碰撞問(wèn)題分為碰撞檢測(cè)和碰撞響應(yīng)兩個(gè)方面的內(nèi)容。碰撞檢測(cè)用來(lái)檢測(cè)不同對(duì)象之間是否發(fā)生了碰撞。精確的碰撞檢測(cè)對(duì)提高仿真的真實(shí)性、可信性,以及增強(qiáng)虛擬環(huán)境的沉浸感有著至關(guān)重要的作用。而碰撞響應(yīng)是指碰撞發(fā)生后所做出的動(dòng)態(tài)反映效果。
碰撞檢測(cè)表現(xiàn)為兩個(gè)多面體的求交,按對(duì)象所處的空間可以分為二維平面碰撞檢測(cè)和三維空間碰撞檢測(cè)。平面碰撞檢測(cè)相對(duì)簡(jiǎn)單一些,已經(jīng)有成熟的檢測(cè)算法,而空間碰撞檢測(cè)則要復(fù)雜得多。碰撞檢測(cè)的算法大致分為空間分解法和層次包圍盒法兩類。由于這兩個(gè)算法都已經(jīng)比較成熟,這里不再詳細(xì)介紹。
4. 室內(nèi)編輯
室內(nèi)編輯的實(shí)現(xiàn)可以使用戶隨意安排室內(nèi)家具,在房產(chǎn)行業(yè)中可以更好地了解用戶對(duì)于房間裝修的需求。為導(dǎo)入的3D模型對(duì)象定義結(jié)構(gòu)體如下:
struct object
{
float x,z; float width;
float long; float height;
float scale; int num;
int rotation;
};
它存儲(chǔ)了3D模型的位置、長(zhǎng)寬高、顯示比例、編號(hào)及旋轉(zhuǎn)角度。對(duì)應(yīng)鼠標(biāo)和鍵盤上的指定按鍵,改變模型的結(jié)構(gòu)體的參數(shù),從而可以實(shí)現(xiàn)對(duì)模型的增加、刪除、修改操作。
圖2為基于三維GIS的房產(chǎn)室內(nèi)信息系統(tǒng)的主界面,功能包括模型載入、室內(nèi)漫游、室內(nèi)編輯、信息查詢。其中,模型載入可以由用戶選擇希望載入的室內(nèi)模型文件;室內(nèi)漫游使用戶通過(guò)鼠標(biāo)、鍵盤自由“行走”于房間中,圖3為客廳和廚房的漫游效果;室內(nèi)編輯使用戶選擇自己喜歡的壁紙、天花板和地板的樣式貼圖,任意增加家具模型,并對(duì)其進(jìn)行放大、縮小、旋轉(zhuǎn)、移動(dòng)(如圖4所示),可提前看到房間裝飾效果;信息查詢包括樓層、面積、結(jié)構(gòu)、價(jià)格、配套設(shè)施、售房情況等的查詢,它與數(shù)據(jù)庫(kù)結(jié)合起來(lái),用戶足不出戶就可以全面了解有關(guān)售房信息及房屋內(nèi)部構(gòu)造等情況。
圖2 系統(tǒng)界面設(shè)計(jì)
圖3 室內(nèi)漫游實(shí)現(xiàn)
圖4 室內(nèi)編輯實(shí)現(xiàn)
系統(tǒng)的最初構(gòu)建想法來(lái)源于MAPSUV軟件中的室外三維漫游,主要功能是對(duì)室內(nèi)三維模型進(jìn)行漫游和編輯的同時(shí)進(jìn)行房屋信息查詢。但該系統(tǒng)仍不完善,還有以下功能將在今后的研究中需逐步加入:實(shí)現(xiàn)測(cè)繪數(shù)據(jù)到3D模型的自動(dòng)轉(zhuǎn)換;加入?yún)^(qū)域?qū)Ш綀D;發(fā)布到網(wǎng)站實(shí)時(shí)瀏覽。
另外,該系統(tǒng)經(jīng)完善后可以橫向移植到更為廣泛的微觀GIS領(lǐng)域,如室內(nèi)預(yù)警、救災(zāi)等方面。相信隨著相關(guān)技術(shù)的不斷發(fā)展,基于三維GIS的房產(chǎn)信息系統(tǒng)會(huì)得到普及和發(fā)展。
[1] 王錦洋.三維GIS技術(shù)在房地產(chǎn)交易中的應(yīng)用與研究[J]. 福建電腦,2008(8):89-90.
[2] 李德仁,劉強(qiáng),朱慶.數(shù)碼城市GIS中建筑物室外與室內(nèi)三維一體化表示與漫游[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2003,28(3):253-258.
[3] 陶瓊,朱大明.三維GIS的發(fā)展趨勢(shì)與建模分析[J].地礦測(cè)繪,2008, 24(4):35-37.
[4] 熊友誼,馮志新,陳穎彪,等.利用點(diǎn)云數(shù)據(jù)進(jìn)行三維可視化建模技術(shù)研究[J].測(cè)繪通報(bào),2012(5):20-23.
[5] 陳卓,馬洪超.基于機(jī)載LiDAR數(shù)據(jù)的大型立交橋自動(dòng)提取與建模方法[J].測(cè)繪學(xué)報(bào),2012,41(2):252-258.
[6] 白成軍,吳蔥.文物建筑測(cè)繪中三維激光掃描技術(shù)的核心問(wèn)題研究[J]. 測(cè)繪通報(bào),2012(1):36-38.
[7] 張愛(ài)武,孫衛(wèi)東,李風(fēng)亭.基于激光掃描數(shù)據(jù)的室外場(chǎng)景表面重建方法[J].系統(tǒng)仿真學(xué)報(bào),2005,17(2):384-387.[8] 楊林,盛業(yè)華,王波.利用三維激光掃描技術(shù)進(jìn)行建筑物室內(nèi)外一體建模方法研究[J].測(cè)繪通報(bào),2014(7):27-30.
[9] 吳鋒,毛新光.基于ArcGIS Engine的三維場(chǎng)景快速動(dòng)態(tài)建模方法[J].測(cè)繪通報(bào),2015(6):97-100.
[10] 安國(guó)強(qiáng),吳泉源,高守英.基于OpenGL對(duì)3DS模型的讀取與重繪的研究[J].蘇州大學(xué)學(xué)報(bào),2009, 29(2):53-56.
[11] 聶小波,邢光成,陳濤,等.OpenGL 及其在DEM可視化中的應(yīng)用[J].地理空間信息,2009,7(3):48-50.
Application of 3D GIS in the Real Estate Indoor Information System
HUANG Ke,HUANG Gai,YANG Zhiyun,DUAN Yangli,ZHAO Ziwei
2015-12-04
黃 軻(1987—),女,碩士,主要從事地理信息理論及應(yīng)用開(kāi)發(fā)工作。E-mail:ke_ke114071@126.com
黃軻,黃蓋,楊智云,等.三維GIS在房產(chǎn)室內(nèi)信息系統(tǒng)中的應(yīng)用[J].測(cè)繪通報(bào),2016(11):131-133.
10.13474/j.cnki.11-2246.2016.0383.
P208
B
0494-0911(2016)11-0131-03