本申請涉及地圖生成技術領域,具體涉及一種生成室內(nèi)地圖的方法及裝置。
背景技術:
室內(nèi)地圖一般指大型室內(nèi)建筑的內(nèi)部地圖,例如商場、機場等建筑物內(nèi)的內(nèi)部地圖,用戶通過移動終端查看室內(nèi)地圖可以在建筑物內(nèi)部仍能較為便捷地找到要去的店鋪、衛(wèi)生間、電梯、休息區(qū)、出入口等。
在現(xiàn)有技術中,室內(nèi)地圖一般都是以比較簡單的平面區(qū)塊信息進行顯示,展示的室內(nèi)場景與真實環(huán)境差異較大,因此,在現(xiàn)有技術中缺乏一種展示室內(nèi)真實場景的室內(nèi)地圖生成方法。
技術實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环N生成室內(nèi)地圖的方法及裝置,以解決現(xiàn)有技術中存在的室內(nèi)地圖與真實環(huán)境差異較大的技術問題。
為解決上述問題,本申請?zhí)峁┑募夹g方案如下:
一種生成室內(nèi)地圖的方法,所述方法應用于服務器,所述方法包括:
獲取建筑物的第一三維模型;
將所述第一三維模型進行壓縮,生成第二三維模型;
確定所述建筑物在平面地圖上的位置信息,將所述建筑物在平面地圖上的位置信息與所述第二三維模型對應保存,以使終端在接收到包括所述建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令時,獲取所述第二三維模型進行所述建筑物的室內(nèi)地圖展示。
相應的,所述將所述第一三維模型進行壓縮,生成第二三維模型,包括:
從所述第一三維模型中提取室內(nèi)地圖所需的三維建筑信息,獲得第三三維模型;
將所述第三三維模型的各個頂點坐標進行壓縮,生成第二三維模型。
相應的,所述將所述第三三維模型的各個頂點坐標進行壓縮,生成第二三維模型,包括:
計算所述第三三維模型的包圍球,將所述包圍球的中心點作為所述第三三維模型的中心點;
分別計算所述第三三維模型的各個頂點坐標與所述第三三維模型的中心點坐標之差,獲得所述第三三維模型的各個頂點與所述第三三維模型的中心點之間的相對坐標;
將各個所述相對坐標除以所述包圍球半徑后乘以預設固定值,獲得各個轉(zhuǎn)換后的頂點坐標,各個所述轉(zhuǎn)換后的頂點坐標的坐標值均為整數(shù)型;
各個所述轉(zhuǎn)換后的頂點坐標作為第二三維模型的頂點坐標,生成所述第二三維模型。
一種生成室內(nèi)地圖的方法,所述方法應用于終端,所述方法包括:
接收包括建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令;
從服務器獲取所述位置信息對應的第二三維模型;
將所述第二三維模型進行壓縮還原,生成第三三維模型;
對所述第三三維模型進行渲染顯示,以進行所述建筑物的室內(nèi)地圖展示。
相應的,所述將所述第二三維模型進行壓縮還原,生成第三三維模型,包括:
將所述第二三維模型的頂點坐標除以預設固定值后乘以包圍球半徑,獲得第三三維模型的各個頂點與所述第三三維模型的中心點之間的相對坐標;
將各個所述相對坐標加上所述第三三維模型的中心點坐標,獲得所述第三三維模型的各個頂點坐標,生成所述第三三維模型,所述預設固定值、所述包圍球半徑以及所述第三三維模型的中心點坐標是從所述服務器獲取的。
一種生成室內(nèi)地圖的裝置,所述裝置應用于服務器,所述裝置包括:
獲取單元,用于獲取建筑物的第一三維模型;
壓縮單元,用于將所述第一三維模型進行壓縮,生成第二三維模型;
保存單元,用于確定所述建筑物在平面地圖上的位置信息,將所述建筑物在平面地圖上的位置信息與所述第二三維模型對應保存,以使終端在接收到包括所述建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令時,獲取所述第二三維模型進行所述建筑物的室內(nèi)地圖展示。
相應的,所述壓縮單元包括:
提取子單元,用于從所述第一三維模型中提取室內(nèi)地圖所需的三維建筑信息,獲得第三三維模型;
壓縮子單元,用于將所述第三三維模型的各個頂點坐標進行壓縮,生成第二三維模型。
相應的,所述壓縮子單元包括:
第一計算子單元,用于計算所述第三三維模型的包圍球,將所述包圍球的中心點作為所述第三三維模型的中心點;
第二計算子單元,用于分別計算所述第三三維模型的各個頂點坐標與所述第三三維模型的中心點坐標之差,獲得所述第三三維模型的各個頂點與所述第三三維模型的中心點之間的相對坐標;
第三計算子單元,用于將各個所述相對坐標除以所述包圍球半徑后乘以預設固定值,獲得各個轉(zhuǎn)換后的頂點坐標,各個所述轉(zhuǎn)換后的頂點坐標的坐標值均為整數(shù)型;
生成子單元,用于各個所述轉(zhuǎn)換后的頂點坐標作為第二三維模型的頂點坐標,生成所述第二三維模型。
一種生成室內(nèi)地圖的裝置,所述裝置應用于終端,所述裝置包括:
接收單元,用于接收包括建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令;
獲取單元,用于從服務器獲取所述位置信息對應的第二三維模型;
壓縮還原單元,用于將所述第二三維模型進行壓縮還原,生成第三三維模型;
顯示單元,用于對所述第三三維模型進行渲染顯示,以進行所述建筑物的室內(nèi)地圖展示。
相應的,所述壓縮還原單元包括:
第一計算子單元,用于將所述第二三維模型的頂點坐標除以預設固定值后乘以包圍球半徑,獲得第三三維模型的各個頂點與所述第三三維模型的中心點之間的相對坐標;
第二計算子單元,用于將各個所述相對坐標加上所述第三三維模型的中心點坐標,獲得所述第三三維模型的各個頂點坐標,生成所述第三三維模型,所述預設固定值、所述包圍球半徑以及所述第三三維模型的中心點坐標是從所述服務器獲取的。
由此可見,本申請實施例具有如下有益效果:
本申請實施例通過獲取建筑物的三維模型,將三維模型進行壓縮后與該建筑物在平面地圖上的位置信息對應保存,在使用終端的用戶需要顯示該建筑物的室內(nèi)地圖時,終端可以加載壓縮后的三維模型作為室內(nèi)地圖顯示,由于三維模型包括的建筑物室內(nèi)信息非常全面,可以以更多的顯示要素展示室內(nèi)場景,從而使室內(nèi)地圖的展示與建筑物內(nèi)部的真實環(huán)境較為接近。
附圖說明
圖1為現(xiàn)有技術中室內(nèi)地圖的示意圖;
圖2為本申請實施例提供的生成室內(nèi)地圖的方法實施例一的流程圖;
圖3為本申請實施例提供的生成第二三維模型的方法實施例的流程圖;
圖4為本申請實施例中三維模型的示意圖;
圖5為本申請實施例提供的生成室內(nèi)地圖的方法實施例二的流程圖;
圖6為本申請實施例提供的生成室內(nèi)地圖的裝置實施例一的示意圖;
圖7為本申請實施例提供的生成室內(nèi)地圖的裝置實施例二的示意圖。
具體實施方式
為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本申請實施例作進一步詳細的說明。
參見圖1所示,是現(xiàn)有技術中室內(nèi)地圖的示意圖,可以看出現(xiàn)有的室內(nèi)地圖均是以比較簡單的平面區(qū)塊信息進行顯示,例如地圖中某個區(qū)塊對應于某個店鋪等等,該室內(nèi)地圖的展示與室內(nèi)真實環(huán)境差異較大。為此,本申請實施例中提供了一種生成室內(nèi)地圖的方法及裝置,利用建筑物的三維模型以生成該建筑物的室內(nèi)地圖,由于三維模型包括的建筑物室內(nèi)信息非常全面,可以以更多的顯示要素展示室內(nèi)場景,從而使室內(nèi)地圖的展示與建筑物內(nèi)部的真實環(huán)境較為接近。
參見圖2所示,示出了本申請實施例中提供的生成室內(nèi)地圖的方法實施例一,本實施例可以應用于服務器,可以包括以下步驟:
步驟201:獲取建筑物的第一三維模型。
建筑物的三維模型包括了通過數(shù)字信息仿真模擬建筑物所具有的真實信息,三維模型可以為bim(建筑信息模型,buildinginformationmodeling,或者建筑信息管理,buildinginformationmanagement,)或者3dmax模型等各類三維模型。其中,bim是以建筑工程項目的各項相關信息數(shù)據(jù)作為基礎,建立起三維的建筑模型。由于三維模型中建筑物的室內(nèi)信息非常詳盡,因此本實施例選擇建筑物的三維模型作為室內(nèi)地圖的數(shù)據(jù)來源。
在本實施例中,建筑物的第一三維模型可以理解為建筑物的原始三維模型,該第一三維模型所包括的信息較多,數(shù)據(jù)量較大,由于室內(nèi)地圖一般是由終端進行顯示,而終端的處理能力有限,因此需要對第一三維模型進行壓縮處理。
步驟202:將第一三維模型進行壓縮,生成第二三維模型。
在本實施例中,第二三維模型可以理解為對第一三維模型進行壓縮后的模型,第二三維模型數(shù)據(jù)量相較于第一三維模型數(shù)據(jù)量小,適合在終端進行加載渲染,以進行室內(nèi)地圖的展示。
在本申請一些可能的實現(xiàn)方式中,將第一三維模型進行壓縮,生成第二三維模型的具體實現(xiàn)可以包括:從第一三維模型中提取室內(nèi)地圖所需的三維建筑信息,獲得第三三維模型;將第三三維模型的各個頂點坐標進行壓縮,生成第二三維模型。
在第一三維模型中可能還包括一些不用于顯示室內(nèi)地圖的要素,例如建筑物內(nèi)關于管線的相關信息,因此首先需要將第一三維模型進行輕量化處理,可以把第一三維模型中室內(nèi)地圖不需要的三維建筑信息刪除,將第一三維模型中的其他信息提取為室內(nèi)地圖所需的三維建筑信息,獲得第三三維模型,或者直接提取室內(nèi)地圖所需的三維建筑信息,獲得第三三維模型。室內(nèi)地圖所需的三維建筑信息的類型或者室內(nèi)地圖不需要的三維建筑信息的類型均可以預先設置,例如預先將管線信息設置為室內(nèi)地圖不需要的三維建筑信息,則可以在第一三維模型中將管線信息刪除。
對于得到的第三三維模型,可以利用本申請實施例中提供的頂點壓縮算法將第三三維模型的各個頂點坐標進行壓縮,生成第二三維模型,關于頂點壓縮算法的相關說明可以參見后續(xù)實施例。
步驟203:確定建筑物在平面地圖上的位置信息,將建筑物在平面地圖上的位置信息與第二三維模型對應保存,以使終端在接收到包括建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令時,獲取第二三維模型進行建筑物的室內(nèi)地圖展示。
建筑物在平面地圖上的位置信息可以為gps(全球定位系統(tǒng),globalpositioningsystem)坐標,也可以為平面地圖的區(qū)塊信息,以標識該建筑物在平面地圖上的位置。將建筑物在平面地圖上的位置信息與第二三維模型對應保存,同時可以保存該位置信息具有室內(nèi)地圖的標識,以使用戶在終端查看該位置信息對應的平面地圖時,可以獲知該位置信息存在室內(nèi)地圖,可以對該位置信息的室內(nèi)地圖進行查看。在終端接收到包括建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令時,可以獲取該位置信息對應的第二三維模型進行室內(nèi)地圖展示。在實際應用中,平面地圖可以使用擴展的geojson格式,并以http(超文本傳輸協(xié)議,hypertexttransferprotocol)服務的形式將平面地圖以及第二三維模型放置于服務器之上,供終端使用,其中geojson是一種對各種地理數(shù)據(jù)結(jié)構(gòu)進行編碼的格式。
這樣,本申請實施例通過獲取建筑物的三維模型,將三維模型進行壓縮后與該建筑物在平面地圖上的位置信息對應保存,在使用終端的用戶需要顯示該建筑物的室內(nèi)地圖時,終端可以加載壓縮后的三維模型作為室內(nèi)地圖顯示,由于三維模型包括的建筑物室內(nèi)信息非常全面,可以以更多的顯示要素展示室內(nèi)場景,從而使室內(nèi)地圖的展示與建筑物內(nèi)部的真實環(huán)境較為接近。
參見圖3所示,在本申請一些可能的實現(xiàn)方式中,在上述實施例中提到可以利用頂點壓縮算法將第三三維模型的各個頂點坐標進行壓縮,生成第二三維模型,其具體實現(xiàn)可以包括以下步驟:
步驟301:計算第三三維模型的包圍球,將包圍球的中心點作為第三三維模型的中心點。
在本實施例中,為了壓縮第三三維模型,主要考慮將第三三維模型的頂點坐標數(shù)據(jù)進行壓縮,例如將頂點坐標中每個方向的坐標值由采用32位浮點型數(shù)據(jù)保存壓縮為采用16位整數(shù)型數(shù)據(jù)保存,從而頂點坐標的數(shù)據(jù)量可以減少一半。
在壓縮過程中,首先計算第三三維模型的包圍球,第三三維模型的包圍球可以理解為第三三維模型的最小外切球,包圍球可以以包圍球的中心點坐標+包圍球半徑的形式表示。在實際應用中可以利用第三三維模型中各個頂點坐標計算第三三維模型的包圍球,具體的,可以遍歷第三三維模型中各個頂點坐標,確定各個頂點坐標中的最大坐標和最小坐標,最大坐標和最小坐標對應于所有頂點中的兩個頂點,將這兩個頂點連線的中點作為包圍球的中心點,將這兩個頂點之間的距離作為包圍球直徑,包圍球直徑的一半即為包圍球半徑。其中,頂點坐標可以以(x,y,z)的形式表示,x可以表示橫軸坐標值,y可以表示垂直軸坐標值,z可以表示縱軸坐標值。
參見圖4所示,以一個正方體三維模型為例,進行相關計算的說明。
假設該正方體三維模型的8個頂點坐標分別為:
(-100,-100,-100)、
(-100,100,-100)、
(100,100,-100)、
(100,-100,-100)、
(-100,-100,100)、
(-100,100,100)、
(100,100,100)、
(100,-100,100)
在本例中,為了便于書寫,將各個頂點坐標中三個方向的坐標值小數(shù)點后的位數(shù)均省略,實際上在壓縮前以上各個坐標值均可以以32位浮點型數(shù)據(jù)進行保存。則在這些頂點坐標中,坐標(-100,-100,-100)為最小坐標,坐標(100,100,100)為最大坐標,將這兩個頂點連線的中點作為包圍球的中心點,將這兩個頂點之間的距離作為包圍球直徑,則此正方體三維模型的包圍球中心點坐標為(0,0,0),也即此正方體三維模型的中心點坐標為(0,0,0),包圍球半徑為141,則計算得到了該正方體三維模型的包圍球。
步驟302:分別計算第三三維模型的各個頂點坐標與第三三維模型的中心點坐標之差,獲得第三三維模型的各個頂點與第三三維模型的中心點之間的相對坐標。
將第三三維模型的每個頂點坐標分別與第三三維模型的中心點坐標做差,得到的一組坐標為第三三維模型的各個頂點與第三三維模型的中心點之間的相對坐標。
繼續(xù)以上述舉例為例,將正方體三維模型的各個頂點坐標分別減去正方體三維模型的中心點坐標(0,0,0),得到該正方體三維模型的各個頂點與正方體三維模型的中心點之間的相對坐標為:
(-100,-100,-100)、
(-100,100,-100)、
(100,100,-100)、
(100,-100,-100)、
(-100,-100,100)、
(-100,100,100)、
(100,100,100)、
(100,-100,100)
步驟303:將各個相對坐標除以包圍球半徑后乘以預設固定值,獲得各個轉(zhuǎn)換后的頂點坐標,各個轉(zhuǎn)換后的頂點坐標的坐標值均為整數(shù)型。
為了將各個頂點坐標轉(zhuǎn)換為整數(shù)型而不損失太多精度,可以將得到的各個相對坐標除以包圍球半徑后乘以預設固定值,預設固定值為一整數(shù)值可以根據(jù)經(jīng)驗設定,得到的一組坐標即為轉(zhuǎn)換后的一組頂點坐標。
繼續(xù)以上述舉例為例進行計算,將該正方體三維模型的各個頂點與正方體三維模型的中心點之間的相對坐標分別除以包圍球半徑141可以得到如下的一組坐標:
(-0.70921985,-0.70921985,-0.70921985)、
(-0.70921985,0.70921985,-0.70921985)、
(0.70921985,0.70921985,-0.70921985)、
(0.70921985,-0.70921985,-0.70921985)、
(-0.70921985,-0.70921985,0.70921985)、
(-0.70921985,0.70921985,0.70921985)、
(0.70921985,0.70921985,0.70921985)、
(0.70921985,-0.70921985,0.70921985)
然后乘以預設固定值轉(zhuǎn)換為整數(shù)型,例如預設固定值為8192,則得到的一組轉(zhuǎn)換后的頂點坐標為:
(-5810,-5810,-5810)、
(-5810,5810,-5810)、
(5810,5810,-5810)、
(5810,-5810,-5810)、
(-5810,-5810,5810)、
(-5810,5810,5810)、
(5810,5810,5810)、
(5810,-5810,5810)
步驟304:各個轉(zhuǎn)換后的頂點坐標作為第二三維模型的頂點坐標,生成第二三維模型。
各個轉(zhuǎn)換后的頂點坐標可以作為第二三維模型的頂點坐標,同時第三三維模型各個頂點的紋理坐標以及法向坐標可以繼續(xù)作為第二三維模型各個頂點的紋理坐標以及法向坐標,從而生成第二三維模型。另外,預設固定值、第三三維模型的中心點坐標以及包圍球半徑需要保存在第二三維模型中,以便于終端在獲得第二三維模型后進行壓縮還原處理。這樣以整數(shù)型存儲的三維模型是以字節(jié)對齊的方式來存儲,比用為使用字節(jié)對齊方式來存儲浮點型三維模型數(shù)據(jù)量更小,更容易壓縮。
轉(zhuǎn)換后的頂點坐標為整數(shù)型,從理論上來講,會比原來使用32位浮點型數(shù)據(jù)損失一定的精度,但其16位整數(shù)型的精度可以全部用于表達與模型尺寸相關的數(shù)值。也就是模型越大其精度越小,模型越小精度越高,其精度可以達到模型尺寸的萬分之二以內(nèi)。以上例中的正方體三維模型為例,對轉(zhuǎn)換后的頂點坐標進行逆操作,即除以預設固定值(例如8192),再乘以包圍球半徑141,加上正方體三維模型的中心點(0,0,0)可還原正方體三維模型的原有頂點坐標為:
(-100.001220703125,-100.001220703125,-100.001220703125)、
(-100.001220703125,100.001220703125,-100.001220703125)、
(100.001220703125,100.001220703125,-100.001220703125)、
(100.001220703125,-100.001220703125,-100.001220703125)、
(-100.001220703125,-100.001220703125,100.001220703125)、
(-100.001220703125,100.001220703125,100.001220703125)、
(100.001220703125,100.001220703125,100.001220703125)、
(100.001220703125,-100.001220703125,100.001220703125)
由此可見損失的精度在模型尺寸的萬分之2以內(nèi),損失非常輕微,對終端渲染影響很小。而且,模型損失的精度與模型的尺寸有關,不會因為模型的尺寸極端而導致模型的外形畸變。
這樣,本申請實施例對建筑物的三維模型進行了充分壓縮,數(shù)據(jù)量較小,同時其存儲數(shù)據(jù)為字節(jié)對齊非常利于在數(shù)據(jù)傳輸時使用通用數(shù)據(jù)傳輸算法進行壓縮傳輸,從而壓縮后的三維模型在由服務器到終端的傳輸過程中傳輸速度較快,并且壓縮后的頂點坐標可以直接進行顯示渲染而無須特殊處理,以使室內(nèi)地圖在終端顯示時加載速度較快。
參見圖5所示,示出了本申請實施例中提供的生成室內(nèi)地圖的方法實施例二,本實施例可以應用于終端,終端具體可以為智能手機、平板電腦、電子書閱讀器、mp3(movingpictureexpertsgroupaudiolayeriii,動態(tài)影像專家壓縮標準音頻層面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,動態(tài)影像專家壓縮標準音頻層面3)播放器、膝上型便攜計算機和臺式計算機等等,本實施例可以包括以下步驟:
步驟501:接收包括建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令。
終端首先可以渲染顯示平面地圖,在進行渲染時平面地圖可以動態(tài)地取得平面地圖的位置信息,例如地圖的分塊信息。終端中的地圖渲染程序會根據(jù)用戶的操作調(diào)整視角,當視角改變時會計算當前終端屏幕需要顯示的地圖位置信息,并顯示該位置信息對應的平面地圖。在進行地圖渲染時,如果當前地圖位置信息保存有對應的第二三維模型,即代表該位置信息對應的建筑物可以顯示室內(nèi)地圖,則出現(xiàn)此處有室內(nèi)地圖信息的提示按鈕。用戶通過觸發(fā)該提示按鈕,從而終端可以接收到包括建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令。
步驟502:從服務器獲取位置信息對應的第二三維模型。
根據(jù)室內(nèi)地圖查詢指令中包括的建筑物在平面地圖上的位置信息,終端向服務器請求獲取該位置信息對應的第二三維模型。
步驟503:將第二三維模型進行壓縮還原,生成第三三維模型。
由于第二三維模型為一個壓縮后的三維模型,需要進行本申請實施例中頂點壓縮算法的逆運算,以進行壓縮還原從而生成第三三維模型,用第三三維模型進行室內(nèi)地圖展示。
在本申請一些可能的實現(xiàn)方式中,在上述實施例中將第二三維模型進行壓縮還原,生成第三三維模型的具體實現(xiàn)可以包括:
將第二三維模型的頂點坐標除以預設固定值后乘以包圍球半徑,獲得第三三維模型的各個頂點與第三三維模型的中心點之間的相對坐標;將各個相對坐標加上第三三維模型的中心點坐標,獲得第三三維模型的各個頂點坐標,生成第三三維模型,預設固定值、包圍球半徑以及第三三維模型的中心點坐標是從服務器獲取的。
繼續(xù)以上述舉例為例,第二三維模型中的各個頂點坐標為:
(-5810,-5810,-5810)、
(-5810,5810,-5810)、
(5810,5810,-5810)、
(5810,-5810,-5810)、
(-5810,-5810,5810)、
(-5810,5810,5810)、
(5810,5810,5810)、
(5810,-5810,5810)
將第二三維模型中的各個頂點坐標除以預設固定值(例如8192),再乘以包圍球半徑141,加上第三三維模型的中心點(0,0,0),獲得第三三維模型的各個頂點坐標:
(-100.001220703125,-100.001220703125,-100.001220703125)、
(-100.001220703125,100.001220703125,-100.001220703125)、
(100.001220703125,100.001220703125,-100.001220703125)、
(100.001220703125,-100.001220703125,-100.001220703125)、
(-100.001220703125,-100.001220703125,100.001220703125)、
(-100.001220703125,100.001220703125,100.001220703125)、
(100.001220703125,100.001220703125,100.001220703125)、
(100.001220703125,-100.001220703125,100.001220703125)
即還原后的頂點坐標可以作為第三三維模型的頂點坐標,同時第二三維模型各個頂點的紋理坐標以及法向坐標可以繼續(xù)作為第三三維模型各個頂點的紋理坐標以及法向坐標,從而生成第三三維模型。
步驟504:對第三三維模型進行渲染顯示,以進行建筑物的室內(nèi)地圖展示。
在實際應用中,為了更好的展示室內(nèi)地圖,會將正常顯示的平面地圖作暗化處理,同時隱藏該室內(nèi)地圖所在的建筑的外輪廓圖,并拉低視角,通過對第三三維模型進行渲染顯示,讓用戶在建筑物場景內(nèi)瀏覽。此時場景的瀏覽會做出限制,不能讓室內(nèi)地圖移出終端的顯示屏幕。
在實際應用中,本申請實施例中第二三維模型是可以直接被現(xiàn)有的終端顯卡所支持的,可以直接用opengl渲染出來而無須做過多處理,而三維模型數(shù)據(jù)卻減少了一倍,極大地加快了三維模型的渲染速度。opengl渲染的具體方法是,將第三三維模型的中心點以及包圍球半徑傳入opengl渲染的頂點著色器中,然后頂點著色器根據(jù)信息將第二三維模型的各個頂點坐標還原成世界坐標系的頂點坐標(即第三三維模型的頂點坐標),從而實現(xiàn)對第三三維模型進行渲染顯示,以進行建筑物的室內(nèi)地圖展示。這樣第二三維模型的頂點坐標并沒有做特別處理就可以直接利用顯卡的硬件特性進行三維渲染。
另外,當用戶點擊退出室內(nèi)地圖瀏覽時,室內(nèi)地圖的顯示關閉,重新顯示平面地圖。
這樣,本申請實施例中在使用終端的用戶需要顯示該建筑物的室內(nèi)地圖時,終端可以加載壓縮后的三維模型作為室內(nèi)地圖顯示,由于三維模型包括的建筑物室內(nèi)信息非常全面,可以以更多的顯示要素展示室內(nèi)場景,從而使室內(nèi)地圖的展示與建筑物內(nèi)部的真實環(huán)境較為接近。
參見圖6所示,示出了生成室內(nèi)地圖的裝置實施例一,該裝置實施例可以應用于服務器,可以包括:
獲取單元601,用于獲取建筑物的第一三維模型。
壓縮單元602,用于將第一三維模型進行壓縮,生成第二三維模型。
保存單元603,用于確定建筑物在平面地圖上的位置信息,將建筑物在平面地圖上的位置信息與第二三維模型對應保存,以使終端在接收到包括建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令時,獲取第二三維模型進行建筑物的室內(nèi)地圖展示。
在本申請一些可能的實現(xiàn)方式中,壓縮單元可以包括:
提取子單元,用于從第一三維模型中提取室內(nèi)地圖所需的三維建筑信息,獲得第三三維模型;
壓縮子單元,用于將第三三維模型的各個頂點坐標進行壓縮,生成第二三維模型。
在本申請一些可能的實現(xiàn)方式中,壓縮子單元可以包括:
第一計算子單元,用于計算第三三維模型的包圍球,將包圍球的中心點作為第三三維模型的中心點;
第二計算子單元,用于分別計算第三三維模型的各個頂點坐標與第三三維模型的中心點坐標之差,獲得第三三維模型的各個頂點與第三三維模型的中心點之間的相對坐標;
第三計算子單元,用于將各個相對坐標除以包圍球半徑后乘以預設固定值,獲得各個轉(zhuǎn)換后的頂點坐標,各個轉(zhuǎn)換后的頂點坐標的坐標值均為整數(shù)型;
生成子單元,用于各個轉(zhuǎn)換后的頂點坐標作為第二三維模型的頂點坐標,生成第二三維模型。
參見圖7所示,示出了生成室內(nèi)地圖的裝置實施例二,該裝置實施例可以應用于終端,可以包括:
接收單元701,用于接收包括建筑物在平面地圖上的位置信息的室內(nèi)地圖查詢指令。
獲取單元702,用于從服務器獲取位置信息對應的第二三維模型。
壓縮還原單元703,用于將第二三維模型進行壓縮還原,生成第三三維模型。
顯示單元704,用于對第三三維模型進行渲染顯示,以進行建筑物的室內(nèi)地圖展示。
在本申請一些可能的實現(xiàn)方式中,壓縮還原單元可以包括:
第一計算子單元,用于將第二三維模型的頂點坐標除以預設固定值后乘以包圍球半徑,獲得第三三維模型的各個頂點與第三三維模型的中心點之間的相對坐標;
第二計算子單元,用于將各個相對坐標加上第三三維模型的中心點坐標,獲得第三三維模型的各個頂點坐標,生成第三三維模型,預設固定值、包圍球半徑以及第三三維模型的中心點坐標是從服務器獲取的。
這樣,本申請實施例通過獲取建筑物的三維模型,將三維模型進行壓縮后與該建筑物在平面地圖上的位置信息對應保存,在使用終端的用戶需要顯示該建筑物的室內(nèi)地圖時,終端可以加載壓縮后的三維模型作為室內(nèi)地圖顯示,由于三維模型包括的建筑物室內(nèi)信息非常全面,可以以更多的顯示要素展示室內(nèi)場景,從而使室內(nèi)地圖的展示與建筑物內(nèi)部的真實環(huán)境較為接近。
需要說明的是,本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的系統(tǒng)或裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術領域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
對所公開的實施例的上述說明,使本領域?qū)I(yè)技術人員能夠?qū)崿F(xiàn)或使用本申請。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。