李朝新,張俊平,吳利青
(山西省地圖院,山西 太原 030002)
虛擬現(xiàn)實(shí)技術(shù)支持下的GIS立體顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
李朝新,張俊平,吳利青
(山西省地圖院,山西 太原 030002)
虛擬現(xiàn)實(shí)技術(shù)是由計(jì)算機(jī)產(chǎn)生,通過視、聽、觸覺等作用,使用戶產(chǎn)生身臨其境感覺的交互式視景仿真技術(shù),具有多感知性、存在感、交互性和自主性等特征。本文主要闡述了將虛擬現(xiàn)實(shí)技術(shù)與地理信息技術(shù)相結(jié)合,建設(shè)GIS立體顯示系統(tǒng)的總體設(shè)計(jì)和關(guān)鍵技術(shù)等內(nèi)容。
虛擬現(xiàn)實(shí)技術(shù);GIS三維模型;3D立體顯示;人機(jī)交互
虛擬現(xiàn)實(shí)技術(shù)是根據(jù)現(xiàn)實(shí)或想象利用計(jì)算機(jī)構(gòu)造一個多維空間的虛擬場景,提供用戶關(guān)于視覺、聽覺、觸覺等的感官模擬,讓用戶身臨其境[1],并以用戶的視點(diǎn)變化與虛擬場景時時進(jìn)行交互,實(shí)現(xiàn)了對真實(shí)世界的模擬[2]。基于虛擬現(xiàn)實(shí)技術(shù)立體成像算法,優(yōu)化GIS三維模型立體成像,建成可動態(tài)交互的實(shí)時3D生成系統(tǒng),系統(tǒng)不但具備自主漫游、定位等虛擬現(xiàn)實(shí)基本功能,還可以實(shí)時生成3D效果,更具交互性和實(shí)用性。系統(tǒng)可以使用3D電視、投影機(jī)等多種顯示終端進(jìn)行展示,實(shí)現(xiàn)大場景三維數(shù)據(jù)的高效可視化;可以采用遙控器、健身自行車等多種控制方式進(jìn)行控制交互,為用戶提供現(xiàn)實(shí)性更強(qiáng)的立體感受和視覺上的沖擊。
與GIS二維顯示相比,本系統(tǒng)能顯示深度信息,因而能更全面地認(rèn)識事物的形狀和運(yùn)動情形,使用戶獲得身臨其境的感受;與GIS三維顯示相比,增強(qiáng)了虛擬現(xiàn)實(shí)的沉浸感,具有現(xiàn)實(shí)性更強(qiáng)的交互方式和交互體驗(yàn)。本文以長治市城南生態(tài)苑為建設(shè)對象,對引用虛擬現(xiàn)實(shí)技術(shù)建設(shè)GIS立體顯示系統(tǒng)作了初步探討。
引用虛擬現(xiàn)實(shí)技術(shù)建設(shè)GIS立體顯示系統(tǒng),完成以下建設(shè)目標(biāo):①采用地形、水系和道路等地理信息數(shù)據(jù),與虛擬現(xiàn)實(shí)技術(shù)結(jié)合構(gòu)建場景模型,實(shí)現(xiàn)三維模型與地理信息數(shù)據(jù)的一體化管理;②基于Unity3D引擎,優(yōu)化了立體顯示算法,實(shí)時生成互動立體圖像對,實(shí)現(xiàn)三維場景同步立體顯示;③采用健身自行車運(yùn)動傳感器,通過控制視點(diǎn)位置和視線方向,實(shí)現(xiàn)立體場景漫游的實(shí)時交互;④采用場景優(yōu)化和腳本優(yōu)化兩種方式進(jìn)行系統(tǒng)優(yōu)化,使系統(tǒng)運(yùn)行流暢、反應(yīng)靈敏。
系統(tǒng)總體架構(gòu)分為3部分:數(shù)據(jù)層、邏輯層和應(yīng)用層,如圖1所示。
圖1 系統(tǒng)總體架構(gòu)
1) 數(shù)據(jù)層。包含三維模型與專題數(shù)據(jù)數(shù)據(jù)庫、DOM影像數(shù)據(jù)和DEM高程數(shù)據(jù)。
2) 邏輯層。系統(tǒng)的業(yè)務(wù)邏輯是通過在Unity3D引擎中編寫腳本代碼控制實(shí)現(xiàn)的。腳本功能分為以下幾類:行為控制腳本,用于控制攝像機(jī)在三維場景中的運(yùn)動;UI控制腳本,用于繪制各種UI界面;立體顯示算法腳本,用于生成具有視差的左右立體圖像對;終端控制模塊,能夠驅(qū)動健身自行車等終端設(shè)備。
3) 應(yīng)用層。為系統(tǒng)實(shí)現(xiàn)的功能,包含三維仿真、立體顯示及人機(jī)交互。
2. 系統(tǒng)功能
GIS立體顯示系統(tǒng)建設(shè)模塊主要包括漫游瀏覽、特色視點(diǎn)、精品路線、3D立體顯示、健身車互動等幾個模塊,如圖2所示。
圖2 GIS立體顯示系統(tǒng)建設(shè)模塊
(1) 漫游瀏覽模塊
實(shí)現(xiàn)自主式三維虛擬場景漫游瀏覽功能,如前進(jìn)、后退、平移、旋轉(zhuǎn)等。系統(tǒng)采用鼠標(biāo)和觸控一體化的設(shè)計(jì)方式,滿足用戶采取多種交互方式任意瀏覽目標(biāo)區(qū)域三維場景的需要。
(2) 特色視點(diǎn)模塊
實(shí)現(xiàn)三維場景內(nèi)主要景點(diǎn)的自動定位功能,選擇感興趣的視點(diǎn),則系統(tǒng)自動定位到此景點(diǎn)。系統(tǒng)后臺連接屬性數(shù)據(jù)庫,并與三維模型掛接,若需進(jìn)一步了解詳情,單擊即可彈出信息框,顯示其詳細(xì)信息。
(3) 精品路線模塊
根據(jù)實(shí)際需求設(shè)定了若干條不同觀看角度,不同偏重內(nèi)容的瀏覽路徑,沿著事先規(guī)定的路徑,選擇任一線路,即可模擬沿所選線路進(jìn)行漫游。
(4) 3D立體顯示模塊
切換至3D立體顯示模式下,系統(tǒng)采用場(幅)分隔法實(shí)現(xiàn)人工立體顯示。顯示終端分為主動快門式和被動偏振光式兩種。顯示終端為3D電視機(jī)時,帶上主動快門式眼鏡后,即可觀看3D立體效果;顯示終端為雙投影機(jī)時,帶上偏振光眼鏡后,即可觀看3D立體效果。
(5) 健身車互動模塊
在健身車互動模式下,用戶可在自行車上通過車頭控制方向,系統(tǒng)根據(jù)腳踏的速度快慢控制前進(jìn)的速度;系統(tǒng)配置了碰撞檢測系統(tǒng),遇到建筑物、樹木等會進(jìn)行判斷,不會穿越地物[3],使得自行車能夠在正常路面上行進(jìn)。
Unity3D是由Unity Technologies公司開發(fā)的三維游戲平臺,能夠處理大量的三維模型[4],并具有跨平臺多系統(tǒng)(iOS、MAC、Windows、Android、Web)支持功能[5],可方便人們通過網(wǎng)頁、手機(jī)APP、電腦客戶端等多種途徑瀏覽本系統(tǒng),以上功能為系統(tǒng)構(gòu)建提供技術(shù)支撐。在Unity3D中,當(dāng)前主要使用JavaScript,C#及Boo Script類型的腳本進(jìn)行二次開發(fā)。C#綜合了VB簡單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言[6]。因此本系統(tǒng)選用應(yīng)用廣泛的C#進(jìn)行系統(tǒng)的開發(fā)設(shè)計(jì)。
三維場景主要通過地形等大的地理要素和三維模型數(shù)據(jù)來表現(xiàn)[7]。地形采用數(shù)字高程模型(DEM)數(shù)據(jù),并在其上疊加數(shù)字正射影像(DOM)數(shù)據(jù)。將構(gòu)建的DEM和配準(zhǔn)后的DOM通過Globemapper軟件和ArcGIS軟件處理為三維模型和紋理貼圖數(shù)據(jù)在Unity3D中使用,以此解決Unity3D對空間數(shù)據(jù)的不兼容問題。三維模型數(shù)據(jù)包含建筑、道路、路面、綠化、小品等。將三維模型數(shù)據(jù)庫中的3dsMax模型導(dǎo)出為FBX格式,再導(dǎo)入Unity3D工程文件的Assets目錄下使用[8-9]。然后設(shè)置環(huán)境部分,包括天空、燈光等。最終對場景整體進(jìn)行陰影烘焙處理和水面效果的渲染處理。
利用3ds Max建模軟件按要素分類分別建立地物模型,創(chuàng)建幾何圖形文件,建立要素屬性值表文件,并對各屬性記錄賦對應(yīng)模型索引值,在Unity3D工程文件下建立工程信息樹,通過模型索引,鏈接對應(yīng)的屬性信息。顯示模型屬性的部分代碼如下:
public stringqueryName(string dest)
{ …
List
"SELECT " +"name1 " +"FROM " +"cnstyshuxingbiao " +"where name=′" + dest + "′ " +"ORDER BY " +"name1 ");
return querys[0].name1.ToString() ;
… }
系統(tǒng)根據(jù)人眼立體視覺原理,利用雙目視差實(shí)現(xiàn)立體成像。先采用立體顯示算法實(shí)時生成水平方向在不同視線參數(shù)時的左右立體圖像對,再利用硬件(立體顯示終端)實(shí)現(xiàn)左右眼分像,使左眼只觀看左圖像,右眼只觀看右圖像,從而使場景展現(xiàn)出立體感[10]。
(1) 立體顯示算法
要實(shí)現(xiàn)三維場景的立體顯示,首先必須得到符合三維特征的立體圖像對。方法是先在三維場景中設(shè)置左右相機(jī),相當(dāng)于一雙虛擬眼睛,通過這雙眼睛來觀察設(shè)計(jì)三維場景,再按照傳統(tǒng)的單目三維圖形生成方法分別生成左右圖像。即計(jì)算左右相機(jī)的視線向量,取得左右眼的圖像,由于左右圖像的相關(guān)性很強(qiáng),物體在左右圖像上通常只有一個視差d,而其色彩與亮度值相差很小,可以利用這一點(diǎn)實(shí)現(xiàn)立體圖像對生成的快速算法,如圖3所示。
圖3
(x,y,z)=(x′,y′,f)L/d
式中,(x′,y′)是左像平面中Pl的平面坐標(biāo),因此視差d與z滿足
d=(L·f)/z
根據(jù)形成人工立體視覺所具備的條件,得到視差
d=x1-xr=(L·f)/z
(1)
即
(2)
式中,L為左右焦點(diǎn)之間的間距;f為焦距;d為兩眼的視差。
系統(tǒng)按照以上算法,根據(jù)左右相機(jī)不同的視線向量,計(jì)算生成右眼圖的同時,利用式(2)計(jì)算左眼圖,以生成具有視差的左右立體圖像對,如圖4所示。
圖4
(2) 立體顯示終端
立體顯示終端主要分主動快門式(3D電視機(jī))和被動偏振光式(雙投影機(jī))兩種方式。本系統(tǒng)采用3D電視機(jī)作為立體顯示終端,立體顯示方法為:3D電視機(jī)具有將左、右眼畫面快速交替顯示的功能。3D液晶眼鏡接收到發(fā)射器的同步信號,左、右液晶快門交替開關(guān),開關(guān)的頻率與屏幕上圖像的替換頻率相同。在120 Hz的刷新頻率下,能夠得到較平穩(wěn)的圖像。利用人眼的視覺延遲就可以獲得立體視覺。本系統(tǒng)中所開發(fā)的立體顯示功能的摘要代碼如下:
void Update ()
{ …
DoAutoEyeParameters();
if(stereoMode!=StereoModes.Disabled&&rightCamera)
{ …
if (!m_stereo.isStereoEnabled() ‖ m_stereo.convergency!=Stereoskopix.ConvergencyMode.Parallel)
{
m_stereo.DisableStereo();
m_stereo.convergency=
Stereoskopix.ConvergencyMode.Parallel;
m_stereo.EnableStereo(leftCamera, rightCamera, null, null);
}
m_stereo.stereoMode=
Stereoskopix.StereoMode.ActiveStereo;
m_stereo.parallaxDistance=parallaxDistance;
m_stereo.interaxial=eyeDistance;
}
… }
系統(tǒng)采用遙控器、健身自行車等設(shè)備作為人機(jī)交互控制方式,實(shí)時更改視點(diǎn)的位置和視線的方向,以實(shí)現(xiàn)對立體場景漫游的實(shí)時交互控制。
(1) 遙控器控制方式
系統(tǒng)邏輯層中的終端控制模塊中設(shè)置一系列針對鍵盤操作的指令,將遙控器的控制按鈕映射鍵盤指令,即可實(shí)現(xiàn)遙控器對系統(tǒng)的操作。
(2) 健身自行車控制方式
系統(tǒng)建設(shè)了專門針對健身自行車的邏輯層控制插件,在系統(tǒng)運(yùn)行過程中,這一層的模塊會自動處理健身自行車發(fā)送過來的事件,把健身自行車的操作事件轉(zhuǎn)換成一些定義好的事件轉(zhuǎn)發(fā)給Unity3D,Unity3D腳本中定義響應(yīng)函數(shù)中添加事件的處理代碼,從而實(shí)現(xiàn)健身自行車的接入。本系統(tǒng)中所開發(fā)的連接智能健身車功能的代碼如下:
void Update()
{ …
float translation=speed;
float rotation=Input.GetAxis("Horizontal2") * rotationSpeed;
if((Input.GetKeyDown(KeyCode.Alpha1)‖Input.GetKeyDown(KeyCode.Keypad1))) speed=5;
…
translation *=Time.deltaTime;
rotation *=Time.deltaTime;
transform.Rotate(0, rotation, 0);
… }
由于三維數(shù)據(jù)量巨大,為使系統(tǒng)具有良好的性能及運(yùn)行速度,從兩方面進(jìn)行優(yōu)化:場景優(yōu)化和腳本優(yōu)化。場景優(yōu)化主要包括:合理控制模型面數(shù)和塌陷模型、貼圖材質(zhì)優(yōu)化、燈光優(yōu)化、視錐體剔除技術(shù)和遮擋剔除技術(shù)等。腳本優(yōu)化主要包括精簡代碼、提升代碼的執(zhí)行效率、減少不必要的循環(huán)、盡量使用靜態(tài)變量代替動態(tài)變量、負(fù)責(zé)交互的腳本僅在需要時執(zhí)行等。
3D互動GIS立體顯示系統(tǒng)集成采用基礎(chǔ)地理數(shù)據(jù)與虛擬現(xiàn)實(shí)技術(shù),不但具有空間定位、屬性查詢等GIS系統(tǒng)優(yōu)勢,而且實(shí)現(xiàn)了動態(tài)3D場景展示和健身自行車互動,給用戶帶來身臨其境的真實(shí)感與現(xiàn)場感,可以應(yīng)用于規(guī)劃、房地產(chǎn)、場館的展覽展示、數(shù)字健身、建筑設(shè)計(jì)、教育、廣告媒體等行業(yè)。提升了地理信息系統(tǒng)的應(yīng)用服務(wù)水平。
[1] 章麗鴻,李琳.虛擬現(xiàn)實(shí)技術(shù)的發(fā)展和展望[J]. 中國科技期刊數(shù)據(jù)庫,2015(39):239.
[2] 李湘德,彭斌.虛擬現(xiàn)實(shí)技術(shù)發(fā)展綜述 [J].創(chuàng)新論壇,2004(6):10-14.
[3] 伊力哈木江·巴圖爾, 崔龍,張紅忠,等.基于Unity3D 的三維數(shù)字校園漫游系統(tǒng) [J].現(xiàn)代計(jì)算機(jī),2012(12):91-92.
[4] 路朝龍.Unity權(quán)威指南:Unity3D與Unity2D全實(shí)例講解[M].北京:中國青年出版社,2014:194-273.
[5] 成偉,薛林福,張偉.基于Unity3D的三維地質(zhì)模型網(wǎng)絡(luò)共享實(shí)現(xiàn)[J].吉林大學(xué)學(xué)報,2014,32(6):632-636.
[6] 甘群文. C# 多線程同步與異步的實(shí)現(xiàn)[J].電腦開發(fā)與應(yīng)用,2009(9):35-36.
[7] 王星捷,李春花.基于Unity3D平臺的三維虛擬城市研究與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014(4):247-250.
[8] 張暉,劉超,李妍,等.基于CityEngine的建筑物三維建模技術(shù)研究[J].測繪通報,2014(11):118-122.
[9] CHANG Y. Research on Application of High Precision Terrain Modeling Based on GIS in Virtual Reality[J]. ICECT,2009(2):425-429.
[10] 張劍清,潘勵,王樹根.攝影測量學(xué)[M].2版.武漢:武漢大學(xué)出版社,2009:46-50.
DesignandImplementationofGISStereoDisplaySystemBasedonVirtualRealityTechnology
LI Chaoxin,ZHANG Junping,WU Liqing
李朝新,張俊平,吳利青.虛擬現(xiàn)實(shí)技術(shù)支持下的GIS立體顯示系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].測繪通報,2016(9):119-122.
10.13474/j.cnki.11-2246.2016.0309.
P208
B
0494-0911(2016)09-0119-04
2016-07-03
李朝新(1971—),男,高級工程師,主要從事測繪工程與地理信息工作。E-mail:13934507348@163.com