李一晴++王慶翠
摘 要:借助虛擬校園可以方便、直觀地了解學(xué)校相關(guān)信息,因此,虛擬校園是數(shù)字化校園建設(shè)的重要組成部分。文章介紹了虛擬校園開(kāi)發(fā)所涉及的三維模型素材制作的一般方法和技巧,給出了在virtools平臺(tái)下交互漫游控制和交互式信息展示的邏輯實(shí)現(xiàn)方法。采用文章介紹的方法開(kāi)發(fā)的某中學(xué)完整的虛擬校園系統(tǒng)畫(huà)面逼真,可通過(guò)網(wǎng)絡(luò)流暢運(yùn)行。
關(guān)鍵詞:虛擬校園;虛擬現(xiàn)實(shí);數(shù)字化校園;virtools
中圖分類(lèi)號(hào):G40-057 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1673-8454(2017)03-0094-03
一、概述
虛擬校園是借助虛擬現(xiàn)實(shí)技術(shù),通過(guò)三維圖形真實(shí)地再現(xiàn)校園的建筑規(guī)劃、部門(mén)分布等情況。三維虛擬校園最大的特點(diǎn)是具有較好的沉浸性、交互性和較強(qiáng)的視覺(jué)真實(shí)感。[1]借助虛擬校園可以足不出戶地實(shí)現(xiàn)校園內(nèi)自由漫游,全面真實(shí)地了解校園的教學(xué)、生活環(huán)境以及軟硬件條件。在圖形顯示的基礎(chǔ)上可以配合語(yǔ)音和文本介紹,用戶通過(guò)人機(jī)交互可以很方便直觀地獲取校園相關(guān)信息。虛擬校園已成為數(shù)字化校園建設(shè)的一個(gè)重要組成部分。在近年來(lái),隨著計(jì)算機(jī)技術(shù)的發(fā)展和在線學(xué)習(xí)的興起,又賦予了虛擬校園新的內(nèi)涵。虛擬校園的功能不僅僅在于校園瀏覽和信息導(dǎo)航功能,還可以與在線教育相融合,通過(guò)模擬真實(shí)課堂塑造虛擬學(xué)習(xí)空間,能有效地促進(jìn)在線學(xué)習(xí)效果。[2][3]
虛擬校園最核心的部分是校園漫游和交互式信息查詢功能。校園漫游使用戶能通過(guò)簡(jiǎn)單的交互操作在校園里任意行走;而交互式信息查詢功能使用戶能夠有選擇地查詢相關(guān)信息,如用戶利用鼠標(biāo)選擇物體對(duì)象,系統(tǒng)則通過(guò)語(yǔ)音、文本或視頻對(duì)其進(jìn)行介紹。可用于開(kāi)發(fā)虛擬校園的虛擬現(xiàn)實(shí)工具有很多,如Virtools、Unity3D、Quest3D、VRP等。此外,一些三維游戲引擎也可以用來(lái)制作虛擬校園,我們利用Virtools開(kāi)發(fā)了山東省實(shí)驗(yàn)中學(xué)西校區(qū)的虛擬校園。本文將基于Virtools平臺(tái),介紹虛擬校園制作中的場(chǎng)景構(gòu)建、漫游控制以及交互式信息查詢功能的一般實(shí)現(xiàn)方法。
二、Virtools簡(jiǎn)介
Virtools是法國(guó)達(dá)索(Dassault system)公司開(kāi)發(fā)的一款虛擬現(xiàn)實(shí)和游戲引擎,也是最早的應(yīng)用最廣泛的虛擬現(xiàn)實(shí)開(kāi)發(fā)平臺(tái)。目前已被廣泛應(yīng)用到游戲開(kāi)發(fā)、工業(yè)仿真、場(chǎng)景展示和教育訓(xùn)練等領(lǐng)域。上海的網(wǎng)上世博會(huì)就是達(dá)索中標(biāo)并開(kāi)發(fā)的。Virtools 有如下幾個(gè)特點(diǎn):
(1)采用可視化編程。將完成某個(gè)功能的程序段封裝成獨(dú)立的功能模塊(Building Block,簡(jiǎn)稱BB),每一個(gè)BB用一個(gè)方形圖標(biāo)來(lái)表示。在編輯作品時(shí),只需要根據(jù)程序的執(zhí)行邏輯將不同的功能模塊連接起來(lái)即可。這種可視化的編程方法極大地降低了對(duì)程序設(shè)計(jì)能力的要求,一般的美工也可以學(xué)會(huì)。
(2)功能強(qiáng)大齊全。Virtools 本身給開(kāi)發(fā)者提供了用戶可直接使用的功能強(qiáng)大的程序模塊,包括運(yùn)動(dòng)控制、物理模擬、角色控制、實(shí)時(shí)渲染以及人工智能等。同時(shí)支持各類(lèi)虛擬現(xiàn)實(shí)硬件設(shè)備和各種形式的立體顯示。
(3)可擴(kuò)展性。除了采用系統(tǒng)提供的BB之外,開(kāi)發(fā)者可利用Virtools提供的腳本語(yǔ)言編程生成新的BB,也可以利用其提供的SDK編程實(shí)現(xiàn)更復(fù)雜的BB程序、管理程序、播放程序和渲染程序等。給開(kāi)發(fā)者提供極大的靈活性。
Virtools是一個(gè)完整的虛擬現(xiàn)實(shí)整合開(kāi)發(fā)平臺(tái),但并不包含三維建模功能。三維模型素材需要借助其他三維軟件來(lái)構(gòu)建。相關(guān)的Virtools使用說(shuō)明請(qǐng)參閱其使用手冊(cè)。[4]虛擬校園開(kāi)發(fā)使用的程序模塊并不多,主要使用了交互控制、碰撞檢測(cè)、聲音播放和文本顯示等BB。 本文將從場(chǎng)景制作、漫游功能的實(shí)現(xiàn)、信息查詢和顯示等方面介紹虛擬校園的制作方法。
三、場(chǎng)景構(gòu)建
Virtools中使用的模型、紋理等素材采用專門(mén)的文件編碼格式,利用其他軟件制作的素材需要統(tǒng)一轉(zhuǎn)換為Virtools 的專有文件格式,文件名為*.NMO。Virtools為3Dsmax、Maya等三維軟件提供了文件導(dǎo)出插件。三維素材的制作可利用這些三維軟件進(jìn)行建模,然后將三維模型導(dǎo)出為NMO格式的文件。NMO文件可以包括三維模型數(shù)據(jù)、材質(zhì)數(shù)據(jù)、動(dòng)畫(huà)數(shù)據(jù)、紋理、角色骨骼等。我們以3DsMax為例來(lái)介紹Virtools三維場(chǎng)景的構(gòu)建方法。
1.紋理烘焙與頂點(diǎn)著色
虛擬校園最基本的一個(gè)要求是能夠?qū)崟r(shí)交互,一般渲染速度要達(dá)到30FPS以上。加速渲染最直接的辦法是減少場(chǎng)景中的多邊形數(shù)目[5]和光照計(jì)算[6]。在多邊形面數(shù)較少的情況下,模型的表面細(xì)節(jié)應(yīng)盡量使用紋理來(lái)表現(xiàn)。3dsmax提供了紋理烘焙功能,采用紋理烘焙的作用主要有兩個(gè):一是可以將3dsmax模型上的多個(gè)紋理圖片整合成一個(gè),能減少紋理數(shù)目,便于項(xiàng)目的管理,同時(shí)減少渲染過(guò)程中的CPU負(fù)擔(dān);二是可以將燈光、陰影等效果渲染到紋理,然后利用烘焙后的紋理再對(duì)模型進(jìn)行貼圖,這樣我們?cè)赩irtools里可以不使用燈光,只需要顯示紋理也可以得到光照效果。在Virtools里的材質(zhì)設(shè)置里,有幾種紋理融合模式(Texture Blend),常用的融合模式是ModulateAlpha、copy和Decalalpha。copy和Decalalpha模式不需要光照就能直接顯示紋理圖案。因?yàn)槲覀冊(cè)赩irtools里不使用任何燈光,所以最后需要Texture Blend設(shè)置為copy或Decalalpha。
三維圖形的渲染一般是通過(guò)模型頂點(diǎn)法向、光照法向和觀察方向來(lái)計(jì)算出每個(gè)頂點(diǎn)的顏色值,然后通過(guò)插值計(jì)算出所有像素的顏色值。頂點(diǎn)著色可以直接指定每個(gè)頂點(diǎn)的顏色,從而避免頂點(diǎn)顏色的計(jì)算。在3Dsmax中的頂點(diǎn)屬性欄目里可以直接指定頂點(diǎn)顏色。但這種方法需要事先預(yù)測(cè)出每個(gè)頂點(diǎn)的顏色,而且不能產(chǎn)生遮擋陰影的效果。在虛擬場(chǎng)景的構(gòu)建中,頂點(diǎn)著色一般只用于光照效果比較簡(jiǎn)單的模型上(如建筑中的圓形柱子)。采用頂點(diǎn)著色的模型在導(dǎo)入到Virtools中后,必須將模型網(wǎng)格的光照模式設(shè)置為prelit模式,才能正常顯示模型顏色。
總結(jié)起來(lái),三維模型素材的制作過(guò)程如圖1所示:
2.植物素材制作
校園中的花草、樹(shù)木、草坪等物體形狀非常復(fù)雜,很難采用標(biāo)準(zhǔn)的多邊形模型來(lái)表示,即使能夠采用多邊形建模,數(shù)據(jù)量也會(huì)非常大,無(wú)法達(dá)到實(shí)時(shí)性的要求。對(duì)于這類(lèi)復(fù)雜物體,利用圖像替代模型是一個(gè)有效的方法。圖像替代方法的基本原理是將樹(shù)木或花草的照片直接顯示在一個(gè)平面上,同時(shí)利用透明通道將樹(shù)木之外的像素變成透明。
圖像替代物可以是單個(gè)平面(稱為布告板),也可以是兩個(gè)垂直交叉的平面。布告板法是讓圖像平面的方向隨著視點(diǎn)位置的改變而改變,使圖像平面的法線始終指向視點(diǎn)。如圖2a所示,當(dāng)視點(diǎn)從位置1移動(dòng)到位置2時(shí),圖像平面跟著旋轉(zhuǎn),使用戶看到的圖像始終是一個(gè)沒(méi)有變形的圖像,這樣就避免了在一側(cè)看到的樹(shù)木只是一個(gè)平面的現(xiàn)象。但是當(dāng)視點(diǎn)移動(dòng)時(shí),有時(shí)會(huì)注明顯地注意到樹(shù)木在旋轉(zhuǎn)。十字交叉法使用兩個(gè)互相垂直的平面同時(shí)顯示一幅樹(shù)木圖像,如圖2b所示,這種方法可以避免旋轉(zhuǎn),同時(shí)視點(diǎn)在任何位置都能看到完整的樹(shù)木圖像。十字交叉法能夠較好地表示樹(shù)木、花草,對(duì)于整體形狀較規(guī)則而枝葉細(xì)小的灌木和草地,可以在規(guī)則的幾何體上直接進(jìn)行紋理貼圖。
四、動(dòng)畫(huà)演示與交互式漫游
校園漫游要包括動(dòng)畫(huà)演示和交互漫游兩個(gè)功能。動(dòng)畫(huà)演示中,采用一個(gè)主相機(jī)沿既定的路線移動(dòng),在移動(dòng)路線中根據(jù)需要設(shè)置駐留點(diǎn),在駐留點(diǎn)配合語(yǔ)音、文本或視頻介紹學(xué)校的歷史、文化和軟硬件條件等。交互式漫游通過(guò)鍵盤(pán)來(lái)控制相機(jī)移動(dòng)。因?yàn)橄鄼C(jī)運(yùn)動(dòng)中還要考慮碰撞檢測(cè)和地板約束問(wèn)題,而相機(jī)不能直接進(jìn)行碰撞檢測(cè)和地板約束,可以創(chuàng)建一個(gè)三維虛擬體(3D Frame)作為相機(jī)的父對(duì)象帶動(dòng)相機(jī)運(yùn)動(dòng),并利用三維虛擬體參與碰撞檢測(cè)和地板約束。
1.相機(jī)移動(dòng)
在動(dòng)畫(huà)演示中,設(shè)置若干條相機(jī)移動(dòng)路線,相鄰兩條路線在駐留點(diǎn)處相接。在Virtools中沒(méi)有直接提供物體沿曲線運(yùn)動(dòng)的BB,可以利用Bezier Progression 和Posutuion On Curve兩個(gè)BB來(lái)實(shí)現(xiàn)相機(jī)運(yùn)動(dòng)。在Bezier Progression里設(shè)置運(yùn)動(dòng)時(shí)間和輸出值的變化曲線,將其輸出參數(shù)Progression(輸出值的百分比)傳遞給Position On Curve的輸入?yún)?shù)Progression,Position On Curve利用該值來(lái)控制相機(jī)在曲線上的位置。圖3示意了動(dòng)畫(huà)演示過(guò)程中相機(jī)沿曲線運(yùn)動(dòng)的BB邏輯圖,圖中Wave Player用于播放語(yǔ)音介紹。
交互式漫游中,以鍵盤(pán)或鼠標(biāo)來(lái)控制相機(jī)移動(dòng),利用Key Event檢測(cè)某個(gè)鍵盤(pán)是否按下,用Translate 和Rotate 來(lái)移動(dòng)和旋轉(zhuǎn)相機(jī)。圖4是鍵盤(pán)控制相機(jī)運(yùn)動(dòng)的BB邏輯圖,圖中的Object Keep On Floor是用于地板約束的BB,Object Slider為碰撞檢測(cè)。
2.導(dǎo)航圖顯示
在漫游過(guò)程中,導(dǎo)航圖的作用是在校園的平面示意圖上顯示當(dāng)前用戶所在的位置。導(dǎo)航平面圖和當(dāng)前位置的指示箭頭利用2D Frame來(lái)顯示。位置箭頭要隨著相機(jī)的運(yùn)動(dòng)而移動(dòng),這需要得到當(dāng)前相機(jī)在世界坐標(biāo)系XY平面上的坐標(biāo),然后將該坐標(biāo)變換到平面圖的2D Frame內(nèi)的坐標(biāo)位置。變換方法是:
xp=,yp=
其中(xp,yp)是當(dāng)前位置相對(duì)于平面圖2D Frame的坐標(biāo),(minx,miny)是平面圖表示的校園場(chǎng)景在三維空間中的最小的(x,y)坐標(biāo);width和height是校園場(chǎng)景在XY平面上的寬度和高度。上述計(jì)算除了可利用專門(mén)用于各種數(shù)學(xué)與邏輯運(yùn)算的BB(如Calculator和Op)來(lái)完成,也可以利用Virtools提供的參數(shù)操作來(lái)實(shí)現(xiàn)。指示箭頭的定位則利用Edit 2D Entity 來(lái)實(shí)現(xiàn)。
五、信息查詢
當(dāng)用戶漫游于校園時(shí),需要有選擇地了解部分教學(xué)設(shè)施的相關(guān)信息,可以利用鼠標(biāo)選擇物體,系統(tǒng)會(huì)調(diào)出該物體的信息介紹。在Virtools中,交互式信息查詢的實(shí)現(xiàn)過(guò)程是:首先根據(jù)用戶鼠標(biāo)點(diǎn)擊選擇對(duì)象,然后判斷選擇的對(duì)象是什么,最后顯示對(duì)應(yīng)選擇物體的文本或語(yǔ)音介紹。
圖中,2D Picking用于檢測(cè)鼠標(biāo)選擇的物體,Test用于判斷當(dāng)前選擇的物體是不是某個(gè)特定的物體,如果是,則利用Show來(lái)顯示該物體的文本介紹,并利用Wave Player播放該物體的語(yǔ)音介紹;如果不是則繼續(xù)判斷是否為其他物體。由于Virtools不支持中文顯示,在顯示文本時(shí),需要將文字制作成圖片,然后作為紋理貼圖到2D Frame,顯示2D Frame即可顯示文本。
六、總結(jié)
在我們開(kāi)發(fā)的山東省實(shí)驗(yàn)中學(xué)西校區(qū)虛擬校園系統(tǒng)中,三維模型共有多邊形面片39137個(gè),紋理圖像64M,聲音與視頻有43M。該系統(tǒng)在4M網(wǎng)絡(luò)環(huán)境下和一般低端配置的筆記本電腦上能流暢運(yùn)行,幀率均達(dá)到40FPS以上。
本文總結(jié)了虛擬校園核心模塊的一般設(shè)計(jì)和制作方法。在不同的制作平臺(tái)上,實(shí)現(xiàn)的方法和技巧也有所不同,本文基于Virtools和3D Max,從場(chǎng)景素材制作、動(dòng)畫(huà)展示、交互式漫游控制和信息查詢等方面給出了虛擬校園的一般實(shí)現(xiàn)方法和制作技巧。希望對(duì)數(shù)字化校園設(shè)計(jì)者和開(kāi)發(fā)者有所啟發(fā)。
參考文獻(xiàn):
[1]胡小強(qiáng),虛擬現(xiàn)實(shí)技術(shù)基礎(chǔ)與應(yīng)用[M]. 北京:北京郵電大學(xué)出版社,2009.2.
[2]韓慶年.國(guó)外高校3D虛擬校園設(shè)計(jì)與應(yīng)用述評(píng)[J].中國(guó)教育信息化,2012(9):17-21.
[3]李峻峰.虛擬現(xiàn)實(shí)技術(shù)與虛擬校園的研究與實(shí)踐——以濰坊學(xué)院虛擬校園建設(shè)為例[J].工程圖學(xué)學(xué)報(bào),2011(3): 62-68.
[4]Carthy C M and Callele D. 3DVIA Virtools User Guide[M]. Dassault system, 2006.
[5]喬振華.基于Virtools的虛擬校園漫游系統(tǒng)的研究和實(shí)現(xiàn)[D].廣西師范大學(xué),2014.
[6]吳元峰,李大錦.一個(gè)煤礦作業(yè)仿真系統(tǒng)的開(kāi)發(fā)[J].系統(tǒng)仿真學(xué)報(bào),2012(1):184-187.
[7]申小春,謝同祥,黃立冬.基于3DSMax&3DVRI的虛擬校園漫游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代教育技術(shù),2012(10):106-109.
(編輯:王天鵬)