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