陳亮
摘要:隨著網(wǎng)絡技術和硬件設施的飛速發(fā)展,虛擬現(xiàn)實技術已經(jīng)成為未來數(shù)字化社會的主流技術。本文首先討論了虛擬現(xiàn)實場景的構建過程,然后針對場景范圍大、復雜度高的虛擬場景構建過程中不同階段的關鍵技術進行探討,包括模型優(yōu)化、LOD技術、交互動畫、視點綁定等,并以虛擬住宅小區(qū)為例,提出最佳的可行性方案。
關鍵詞:VRML 虛擬現(xiàn)實技術 復雜場景 構建流程
虛擬現(xiàn)實技術(Virtual reality technology)是20世紀末才興起的一門嶄新的綜合性信息技術。建立虛擬場景的目的就是為了展示現(xiàn)實生活,使人達到身臨其境的效果,而現(xiàn)實生活中有許多細節(jié)部分,這就需要構建復雜度較高的虛擬場景,但隨著復雜度的增大,瀏覽速度必然受到一定的影響,實時交互性往往受制于場景的復雜度。目前大規(guī)模復雜場景的快速瀏覽是虛擬現(xiàn)實、三維交互設計等許多重要應用的底層支撐技術,也是諸多研究領域面臨的一個基本問題。
本文就復雜場景——虛擬小區(qū)進行探討,對構建流程中的關鍵技術逐個分析,對場景進行簡化和優(yōu)化,實現(xiàn)場景的實時交互和快速瀏覽,這對住宅小區(qū)的設計和規(guī)劃具有重要的意義。
1 復雜場景的構建流程
目前,對于虛擬場景的制作沒有統(tǒng)一的流程,本文根據(jù)個人的制作經(jīng)驗總結出復雜場景的構建流程,共四個階段,八大步驟,2 關鍵技術分析--以虛擬住宅小區(qū)的構建為例
2.1 虛擬場景整體設計
在對虛擬場景進行設計前,必須對虛擬住宅小區(qū)的整個場景進行規(guī)劃,合理的規(guī)劃對以后的構建流程具有重要的意義。設計者將該住宅小區(qū)場景分為居民住宅區(qū)和生活區(qū)兩部分。住宅區(qū)有別墅區(qū)和公寓區(qū)(小戶型和大戶型)構成,生活區(qū)由超市、餐廳、健身房和公園四部分構成。在進行虛擬空間的瀏覽參觀時,參觀者可以與某些物件進行實時交互的互動操作,如:感應門、水龍頭開關,電氣設備的使用等。將大的場景分為多個相對獨立的小場景,通過虛擬現(xiàn)實建模語言(Virtual Reality Modeling Language,簡寫為VRML)中的ANCHOR節(jié)點來實現(xiàn)各場景之間的連接和轉換。2.2 模型制作
2.2.1 3D模型
規(guī)劃完后即可根據(jù)其內(nèi)容建立所需模型。首先開始分析建筑物的外形特性,主要是建筑物的曲面及規(guī)則性,并繪制出草圖。由于在建模時,要保持建筑物的比例協(xié)調(diào)性,保證模型放入場景后不會產(chǎn)生變形失真,而對于規(guī)則性的模型如窗戶都是大同小異,則可建立一個原型后重復使用,因此,可根據(jù)模型的構建要求,再將其分解成較小的單位模型。
在分解模型時,要盡量保持模型的獨一完整性,以減低將來組合時的差異,這是因為物件之間會有碰撞性,如果兩個物件必須要互相穿透才能接合,會產(chǎn)生不可預期的顯現(xiàn)結果。此外,將來組合后會被隱藏的面要事先刪除,以免由于物件的碰撞性,使物件組合后,在物件之間產(chǎn)生細縫,反而使得這些隱藏的面被顯示出來,造成不正確的建筑物外觀。
雖然VRML虛擬現(xiàn)實建模語言提供了完善的建模節(jié)點,但要建造復雜的三維實體,其工作量還是巨大的,因此可使用常用的3D軟件進行建模,如3DMAX、Pro/E、UG等。本設計利用3DMAX來建立模型,再導出VRML格式的*.wrl文件,最后在VRML編譯環(huán)境下進行優(yōu)化,這樣,既保證了模型的逼真性,又提高了系統(tǒng)的開發(fā)效率。
2.2.2 貼圖
模型建造完成后,為了保證一定的真實性,常用一些簡單的框架來代替復雜模型,可采用貼圖的方式來彌補視覺上的不足,主要涉及以下兩種技術。
(1)透明紋理映射技術。透明紋理的應用大致可以歸納為兩類:①如橋梁的欄桿、車站的站牌等,其自身的厚度可以近似為零,即從它們的側面看,只是一個單面,對于這類透明紋理處理比較簡單,直接映射上去即可;②如樹木、路燈、雕塑等本身的厚度不可忽略,即從任何角度看,都應該出現(xiàn)一個類似柱體的透明紋理。對于這類物體的處理比較麻煩,需使用公告牌(Billboard)技術。
公告牌使用布告板節(jié)點,可固定于某一點,繞一軸或點旋轉的多邊形,允許在場景中使用二維圖像來模擬三維造型并旋轉,始終面對觀測者。既可以節(jié)省大量的資源,提高速度,又不影響真實效果。例如樹木的制作,如果用實體模型去模擬,可能一棵樹就要好幾千個面片;如果采用Billboard技術,只需要一個面就可以了,效果還可以。但其缺點是,如繞著Billboard的面快速轉動,可以看出這個面在轉動,從高空看效果不理想。
(2)多細節(jié)層次(Levels Of Detail)技術。多細節(jié)層次(Levels Of Detail,簡寫為LOD),是指根據(jù)物體模型的節(jié)點在顯示環(huán)境中所處的位置和重要度,決定物體渲染的資源分配,降低非重要物體的面數(shù)和細節(jié)度,從而獲得較高的渲染速度。對同一物體而言,細節(jié)度越高,所需的多邊形數(shù)目就越多,模型的顯示效果就越詳細,但渲染所花費的時間就越多。虛擬小區(qū)中包含各類建筑、植物以及人工湖等景觀,數(shù)據(jù)量非常大,要保證渲染的實時性,就要對場景進行組織管理,否則將會產(chǎn)生跳動感,嚴重影響虛擬現(xiàn)實的效果。當物體越來越遠時,物體變得越來越模糊,就無法再辨清該物體上的細節(jié)結構。另外,當物體在屏幕上所覆蓋的區(qū)域比較小的時候,沒有必要用該細節(jié)較復雜的模型。否則,容易造成走樣,不僅影響視覺效果,而且浪費大量CPU處理資源和處理時間。
在構建LOD模型時,應遵循由近到遠的順序,即先建立精細的近景模型,再逐步簡化到中景和遠景模型,這樣有利于保持模型效果的一致性,避免因為遠景模型創(chuàng)建的不合理而影響近景的制作。使用LOD技術能夠控制場景復雜度,確保交互漫游的實時性。
以小區(qū)住宅樓LOD設置為例,在距離樓房0到50米之內(nèi),使用細節(jié)層次復雜的模型;在距離樓房50米以上時,使用細節(jié)層次簡單一點的粗略模型。
2.3 實時交互與實現(xiàn)
2.3.1 交互
交互性作為三維虛擬場景的一個重要特性,它改變了當前網(wǎng)絡與用戶交互的局限性,瀏覽者不再是被動的接受信息,可以與場景進行交互,使得動畫、光照及聲音等效果逼真呈現(xiàn),產(chǎn)生身臨其境的感覺。
VRML允許用戶的行為能夠實時作用于場景,用戶不僅可以在場景中隨意漫步,甚至可以隨時啟動一個“事件”,比如水龍頭的開關、房間內(nèi)物體的擺放等。這種人機交互是建立在事件的基礎上的,通過路由將節(jié)點鏈接為事件是使VRML具有動態(tài)交互能力的機制。用戶在漫游的同時,可以從場景中獲取有關的隱含信息,如通過打開一本書閱讀相關文字和圖片。VRML的定位器節(jié)點Anchor提供了解決這些技術的能力,通過鼠標點擊Anchor節(jié)點的子節(jié)點,可以將用戶帶入一個新的URL,此時的URL可以是瀏覽器能夠理解的任何類型的文件,如音頻、圖片等。
2.3.2 動畫
動畫是人為設置的、隨時間規(guī)律變化的場景效果。VRML依據(jù)一個給定的時間傳感器以及一些類的插補器節(jié)點對場景中的動畫進行控制?;舅枷耄河蓵r間傳感器給出控制動畫效果的時鐘,該時鐘包含了動畫效果的開始時間、停止時間、循環(huán)周期、是否循環(huán)等動畫控制參數(shù);然后通過該時鐘的事件輸出在虛擬世界中驅動插補器節(jié)點產(chǎn)生相應的動畫效果。
利用單純的VRML語言只能實現(xiàn)靜態(tài)的三維場景或簡單的動畫,而不能實現(xiàn)復雜的動畫。VRML提供了一個Script腳本節(jié)點,通過該節(jié)點中的url域并利用Java、JavaScript等語言編寫程序,可以在VRML場景中實現(xiàn)可控制的、交互性好的復雜動畫。
2.4 場景整合
將所有制作出的模型在場景中做整合,利用坐標變換節(jié)點,對單個場景按照整體設計的要求對其進行整合。對于那些使用較多的節(jié)點,使用原型技術對單個物件進行搬移、復制,如馬路兩旁的路燈等,把所有的物件進行組合。在這個過程中,可能會發(fā)現(xiàn)組合上的問題,如尺寸比例錯誤或是無法密合,則可以再對模型做修正。
由于虛擬現(xiàn)實的特色在于建筑物的真實性,但真實度越高時,電腦的運算量越大,會減低系統(tǒng)的流暢度。當一個場景存在的所有物件,其復雜度越高,執(zhí)行速度就越慢。因而當建筑物組合后,可以利用群組節(jié)點把建筑物內(nèi)所有的物件組合成一個大物件,方便整體的操作,并將其他的景物如樹木,桌椅等放進場景中。針對所希望的執(zhí)行效率和瀏覽者的路徑,在場景整合時還要根據(jù)規(guī)劃要求,把密切相關的場景組合在一起,適當減少場景的復雜度,增加場景的讀取流暢度。2.5 視角導航
在完成場內(nèi)的物件設計后,就可以設定使用者瀏覽的視角,包括視角的范圍與高度。理論上,虛擬場景中的視角是可以設在任何地方,且可以朝著任何方向移動,甚至是穿透建筑物。但這是在現(xiàn)實生活中辦不到的,且在實際制作上,還會限制使用者移動的范圍,來簡化場景的制作,如遠方的房子或山可利用貼圖來達到,這時就不能讓使用者太靠近。
在交互式漫游場景中,為了使訪問者迅速地被帶到一個比較理想的位置與方向,并實現(xiàn)目的的漫游,為此在場景中的一些主要入口處、出口處及較重要的位置處須設置視點,用戶通過一定的方式如鼠標點擊或感應等與場景中的實體進行接觸,從而快速地找到所需位置,但當開始進入一個虛擬世界后,用戶的視點會被自動放在文件中遇到的第一個視點Viewpoint節(jié)點上,因此,要將所希望的視點轉變?yōu)楫斍耙朁c就必須在場景中加入控制視點的機制。VRML2.0中實現(xiàn)這一功能的機制為綁定,它利用Script腳本節(jié)點和瀏覽器提供的接口,如Javascript、Java等,來對VRML2.0功能的擴展并在場景中加入控制按鈕,就可以讓用戶交互地控制視點的開與關,并將自己綁定到當前視點的位置上。本設計中運用Javascript,把視點與角色的運動路徑綁定,場景根據(jù)角色所處的位置產(chǎn)生變化,增加角色在場景中瀏覽的真實感,模擬超市購物的場景。
2.6 本地測試
當所有的物件及視角都設定完成后,可運行主程序對場景進行測試,包括視點瀏覽和自主瀏覽,關注場景的流暢性,以及支持高效、高精度碰撞檢測算法。可自動完成對任意復雜場景的高效碰撞檢測,對建?;緵]有限制。能夠正確的處理碰撞后沿墻面滑動(而不是停止),樓梯的自動攀登,對鏤空形體(如欄桿)以及非凸多面體的精確碰撞,以及正確的處理多物體碰撞后過約束的情況。還可以實現(xiàn)碰撞面的單向通過,隱形墻以限制主角的活動范圍等功能。
接下來針對場景的執(zhí)行效率加以測試。整個系統(tǒng)的執(zhí)行效率與場景內(nèi)物件模型的復雜度,材質(zhì)數(shù)量及硬件的速度有關。就系統(tǒng)本身而言,如果執(zhí)行效率不佳,除了降低模型復雜度,減少材質(zhì)使用,分割場景等方法外,也可以使用LOD技術,依照一個物件距離使用者角距離的距離,來顯示不同精細等級的模型。這樣的做法雖然要針對一個物件制作多個模型,增加場景檔案大小,但卻可以在場景的完整度及執(zhí)行效率中取得平衡。在系統(tǒng)整合與調(diào)整時,最重要的一點,就是要找使用者來試用。主要目的在于鑒定場景的真實度是否可接受。這是因為在制作時,可能因為各種因素,使得系統(tǒng)在制作時失真,因此使用者可以以第一直覺來指出失真的地方,提供開發(fā)者修改調(diào)整的依據(jù)。
2.7 壓縮優(yōu)化
2.7.1 簡化虛擬場景,優(yōu)化建模
由于系統(tǒng)要在網(wǎng)絡上進行傳輸,因此在響應速度和場景的真實性發(fā)生沖突時,在保證視覺上達到基本真實情況下,可以使用以下方法進行簡化:(1)減少多邊形的數(shù)目,提高執(zhí)行的性能;(2)使用紋理代替多邊形造型,既可美化場景又可提高性能;(3)使用灰度圖的紋理;(4)盡量少用光源,這將有效地提高渲染的速度。
2.7.2 優(yōu)化代碼結構,場景重用
在建造虛擬世界的過程中,會存在很多相同的對象或許多對象用相同的材質(zhì)作為紋理,如桌椅,籃球架等等。利用DEF和USE結構可以在一定范圍內(nèi)重用,這樣程序的源代碼就會減少很多。測試表明,若所有的模型都經(jīng)過優(yōu)化,整個文件可以減小到原來的二十分之一,且效果與優(yōu)化前無太大差異。
2.7.3 加快碰撞檢測,提高效率
碰撞檢測要花費大量的處理時間,為提高對復雜物體的碰撞檢測速度,可在Collision節(jié)點的proxy(替身)域指定某一更為簡單的幾何體作為該形體的替身,它與被替代的原形體占用大致相同的空間。這樣,可大大減少檢測時間。
2.7.4 減少文件大小,壓縮容量
使用GZIP工具壓縮VRML文件和相關的HTML文件,大約可是文件減小10~100倍。
2.8 打包發(fā)布
把虛擬場景的源代碼、貼圖以及運行所需的相關程序,如:VRML瀏覽器、Applet等進行打包,最后發(fā)布到服務器上,瀏覽者就可以通過網(wǎng)絡以網(wǎng)頁的形式來瀏覽這個虛擬場景。
3 結束語
本文以虛擬住宅小區(qū)為例,從設計到發(fā)布,分析了復雜場景構建中的各種關鍵技術。在本設計中,瀏覽者可以自由行走、從不同角度觀看虛擬的小區(qū),并可以進行人機交互,突破了傳統(tǒng)三維動畫被動觀察無法互動的瓶頸,給瀏覽者帶來難以比擬的真實感與現(xiàn)場感,使他們獲得身臨其境的真實感受。隨著網(wǎng)絡和計算機技術的發(fā)展,復雜場景構建過程中的各種關鍵技術中,還有很多內(nèi)容有待深入探討,以期在真實展現(xiàn)真實場景的同時,節(jié)省系統(tǒng)資源,提高渲染效率,以滿足實時交互的需要。同時,我們也可以看到虛擬小區(qū)的交互漫游技術不僅有利于設計與管理人員對各種規(guī)劃設計方案進行輔助設計與方案評審,還方便潛在業(yè)主了解小區(qū)外部景觀設計及房屋內(nèi)部構造,將是未來城市規(guī)劃的發(fā)展方向。
參考文獻:
[1]Rodger Lea, Kouichi Matsuda, Ken Miyashita. JAVA for 3D and VRML[M]. Word. New Riders Publishing.1996
[2]陳華斌,王彤.虛擬建筑環(huán)境實時漫游系統(tǒng)的設計和實現(xiàn)[J].西南交通大學學報.2001
[3]陳阿林,胡朝暉,祁相志.校園虛擬現(xiàn)實三維場景建模技術及實現(xiàn)方法研究[J].重慶師范大學學報.2007
[4]楊必勝,李清泉,梅寶燕.三維城市模型可視化研究[J].測繪學報.2000
[5]張秀山,徐榮花,胡慶豐,竇朝暉,劉杰,劉瑜.虛擬現(xiàn)實技術及編程技巧[M].國防科技大學出版社.1999
[6]李欣.虛擬實驗中復雜運動的交互與控制[J].計算機與現(xiàn)代化.2008
[7]黃瑩瑩,彭敏俊,許岷.基于虛擬現(xiàn)實的數(shù)字校園漫游系統(tǒng)的設計與實現(xiàn)[J].應用科技.2005