虛擬城市的開發技術探討

才智咖 人氣:9.48K
虛擬城市的開發技術探討
摘要:本文介紹了虛擬城市的原理及其開發技術,闡述了虛擬現實開發基本手段和過程,並進一步敘述了優化應用的常用技巧。 關鍵詞:虛擬城市,VRML, LOD長期以來,都市計畫人員的一個重要的工作就是進行各種設計或規劃圖的繪製,但是這些圖紙並不能給人們提供一個直觀的、富有真實感的場景。後來,人們雖然也使用紙板或木料來製作三維模型,以實現城市景觀的三維視覺化。但其製作的工作量巨大、費用昂貴、須具備較高的製作技巧,而且僅能從外圍觀看,無法進入,修改也很困難。鑑於以上原因,在機上建立三維虛擬城市成為必然。虛擬城市的建立能夠全方位地、直觀地給人們提供有關城市的各種具有真實感的場景資訊,並可以以第一人稱的身份進入城市,感受到與實地觀察相似的真實感。虛擬城市的各種模型易於修改,而且可以實現城市資訊的查詢與功能。這些都是傳統的所無法比擬的。本文用製作例項的方式探討了虛擬城市的開發技術。1. 虛擬城市開發的基本原理要建立虛擬城市,首先要建立三維城市模型。三維城市空間中的典型實體物件一般具有以下幾種:城市中的各種建築物、街道、綠地、公共場所、城市地形、樹木等。除此以外,還有一些輔助性的設施,如消防栓、變電站、噴泉、公園的長椅等。這些模型的製作可以採用程式設計的方法或者現有的三維模型製作軟體來完成。所謂程式設計的方法是在程式中利用三維空間中的座標點和圖形繪製函式來實現模型的建立,由於城市模型的造型十分複雜,因而很難確定模型的具體幾何資料,此方法多用來製作地形模型,對於其他模型的製作則很少採用。製作城市模型的最好的方法是使用現有的成熟的三維設計軟體,如:3DSMAX、TRUESPACE等。虛擬城市除了能實現城市資訊的三維視覺化外,其另一個重要的功能就是能實現城市專題資訊的查詢功能,甚至實現一定的分析功能。可以將虛擬城市定義為以下公式:虛擬城市=三維城市模型+專題資訊+查詢功能+分析功能要實現一個虛擬城市系統可考慮以下兩種方案:一種方案是利用高階語言和三維圖形開發庫的方法,常用的開發語言是C++,常用的圖形開發庫是OpenGL3D或者 Directx3D。此方法的特點是開發的靈活性強、能實現功能複雜的應用系統。其缺點是開發者須熟練掌握程式設計技術,並且具備較高的計算機圖形學知識。另外,還要OpenGL3D或者 Directx3D的複雜開發技術。此方案的實現難度大,一般使用者根本無法勝任。其實現的應用系統也很難滿足網上使用的要求。第二種方案是使用專用的三維虛擬開發工具,廣泛使用的是VRML語言。VRML(虛擬現實造型語言)是一種描述互動式三維世界和物件的檔案格式。VRML允許描述物件並把物件組合到虛擬場景中,可以實現模擬系統,可模擬動畫、具有動力學特性的物體。VRML能構造一個全互動的世界,其中的物件能對外部事件做出響應,並可在其中任意穿行。另外,其重要特性是支援虛擬場景的網上釋出,並可實現多使用者的實時參與。VRML比高階語言容易掌握,並且無須再去了解OpenGL3D或者 Directx3D之類的三維圖形開發庫,這對於普通使用者來說無疑是一個福音。若配以Java程式的支援,也可實現功能較強大的系統。綜合以上兩種方法,對於功能不太複雜的應用,採用後一種方法較為合適。下面我們將就後一種方案詳細介紹虛擬城市開發的技術細節。2. 虛擬城市的開發技術2.1.三維城市模型的建立虛擬場景的建立和建築CAD中的場景的建立有著很大的區別,它首先強調的是模型的簡單化,這是由虛擬現實的實時性要求決定的。在響應速度和場景的真實性發生衝突時,應犧牲一定的真實性,只要能在視覺上達到基本真實即可。因此,常用一些簡單的框架來代替複雜模型,但為了保證一定的真實性,可採用貼圖的方式來彌補視覺上的不足。貼圖有以下兩種製作方法:一種是使用繪畫軟體進行手工繪製、另一種是對建築物的各個觀察面進行拍照,然後用掃描器掃描成相關貼圖材質。第一種方法的顏色可限定在256色內,其壓縮的比例較大,貼圖檔案較小,生成的場景檔案也較小,適合網上傳遞和實時性的要求。後一種方法視覺效果好,但檔案的壓縮比例較小,貼圖檔案較大,生成的場景大,在網上傳遞和實時性方面不如前一種方法好。無論用哪一種方法都需考慮貼圖的解析度和尺寸,為了便於下載和渲染,在質量和大小允許的情況下,一幅貼圖限為320*240(或240*320)畫素、解析度為72dpi,用JPEG壓縮(採用最高壓縮比)後約為20K位元組。根據以上所述的貼圖製作方法,虛擬場景中的物件模型可分為以下幾類:(a)由簡單幾何體組成的簡單模型:該類模型常用作遠處建築物的替身,在LOD方法中採用;(b) 賦予手繪貼圖的模型;(c) 賦予照片材質的模型;(d) 賦予手繪和照片混合材質的模型;(e) 具有全部細節的'精緻模型;

2.1.虛擬城市互動查詢功能的建立為虛擬城市模型加入互動和查詢功能可採用兩種:通過程式設計加入相應的互動和查詢功能、利用VRML的輔助工具來完成互動和查詢功能的加入。後一種方法比較適合普通的使用者。Kinetix製作了特殊的VRML輸出嵌入程式,可以輸出場景,包括幾何、材質、動畫製作等,嵌入程式也可製作特殊的VRML輔助工具來規定場景的互動元素。執行VRML嵌入 程式即可安裝VRML嵌入程式。
通過VRML嵌入程式,可設定以下輔助工具:Anchor:可將某一實體作為熱點,當被點選時,取出網上所指定的檔案。若為VRML場景檔案,則該場景被下載顯示。若為其他型別檔案,由瀏覽器決定如何處理;TouchSensor:對從指定裝置的輸入產生相應的事件,這些事件表示使用者是否指向特定幾何體,同時也表示使用者何時何處按下定位裝置的按鈕;ProxSensor:接近感知器,指定當使用者進入、離開或在立方體的區域內移動時產生的事件;TimeSensor:在時間變化是發出事件,可用來控制動畫,也可用於某一時刻進行某項活動,或於某一時間間隔中產生事件;NavInfo:描述有關觀察者和觀察模式的物理特性;Background:設定場景的背景;Fog:設定霧化的效果;Sound:設定聲音片段的有效範圍,以產生隨距離改變的音響效果;Billboard:是某一物件隨使用者一起旋轉,以使之始終面向使用者;LOD:允許瀏覽器在物體表示的不同層次細節間自動切換;Inline:可在檔案中引入外部檔案的場景,避免重複製作。通過以上輔助工具,就可製作出虛擬城市場景及其互動和查詢功能。2.3.若干開發技巧介紹2.3.1 減少檔案大小的方法(1) 使用例項:對於在場景中多次使用的物件,可在該物件首次使用時用DEF給物體命名,以後僅需通過名字即可引用該物體。(2) 使用原型:原型物體是指那些使用頻繁且改動不大的物體。使用它可減少檔案的大小。由於使用了DEF/USE方法,物體一旦定義,只要指定發生變化的公共介面即可。另外,原型顯示出場景層次中哪一部分可修改,瀏覽器可自由地優化那些不修改的部分。(3) 壓縮檔案:在釋出檔案前,使用gzip工具壓縮VRML檔案和相關的HTML檔案,大約可是檔案減小10~100倍。2.3.2 提高渲染速度的技巧(1) 簡化場景:簡化場景有以下方法:·減少多邊形的數目,這可極大地提高執行的效能;·使用紋理代替多邊形造型,既可美化場景又可提高效能;·使用灰度圖的紋理;·儘量少用光源,這將有效地提高渲染的速度;·使用佈告板節點,此節點允許在場景中使用二維圖象來模擬三維造型並旋轉,從而始終面對觀察者。此法既減小了檔案又不真實效果,可用來製作樹木、電線杆、路牌、消防栓等輔助性物件;(2)場景分割:將大的場景分為多個相對獨立的小場景,通過Anchor節點為場景中邏輯上分離的部分建立連線關係;(3)自適應LOD節點:若在LOD的range域中未明確指定具體值,瀏覽器會在給定時刻決定哪一層物體需要顯示。該節點允許根據硬體平臺的能力調整場景的細節程度。在建立一條街道時,由於街道兩邊有許多精細的建築物,要對它們進行實時渲染是不可能的,但又不能不可見,僅需讓使用者能以一定的速度前進即可。在此,可為每個建築物建立兩個LOD節點,一個是沒有明確範圍的外部LOD,另一個是具有near和far範圍的內部LOD節點。內部節點能按建築物與攝像機的距離調整層次,外部"自適應LOD"節點允許瀏覽器調整必要的多個建築物以趕上場景的動態變化。(4) 碰撞檢測要花費大量的處理時間,為提高對複雜物體的碰撞檢測速度,可在Collision節點的proxy(替身)域指定某一更為簡單的幾何體作為該形體的替身,它與被替代的原形體佔用大致相同的空間。這樣,可大大減少檢測時間。3. 結束語
以上介紹了虛擬城市的基本原理和製作技巧,對於進行其他領域的虛擬現實製作同樣有效,僅為場景中實體的不同。用VRML製作虛擬現實入門容易,但要達到很高的視覺效果和執行速度並非易事,須對VRML和圖形學進行深入瞭解才可勝任。我們用它製作了虛擬校園,其執行效果較為滿意。可以相信,隨著VRML的不斷,我們將可用它製作出功能更加強大的虛擬現實應用。:[1] 黃鐵軍,柳健. VRML國際標準與應用指南. 出版社[2] 施演,周葆芳,趙志勇. VRML2.0使用速成. 清華大學出版社