文/劉柱 李先毅 劉瑾
基于UNITY Web3D虛擬校園的設(shè)計(jì)和實(shí)現(xiàn)
文/劉柱 李先毅 劉瑾
三維虛擬校園目前已成為高校信息化建設(shè)的重點(diǎn),成為展示高校信息化技術(shù)能力和形象的一個(gè)重要方式;三維虛擬校園是將計(jì)算機(jī)三維技術(shù)、環(huán)境建模技術(shù)、貼圖渲染技術(shù)、仿真技術(shù)和不斷發(fā)展的互聯(lián)網(wǎng)技術(shù)相結(jié)合,形成一種嶄新的信息交流方式。與傳統(tǒng)二維數(shù)字校園相比,能更真實(shí)地展現(xiàn)客觀世界;和網(wǎng)絡(luò)技術(shù)相結(jié)合后,使得瀏覽者能夠更加便捷的、真實(shí)的體驗(yàn)校園人文氣息和優(yōu)美的場景,可以不受時(shí)間、空間的約束來滿足用戶參觀、了解學(xué)校的需求,對于介紹和宣傳學(xué)校的歷史、文化等有著重要的意義;通過動(dòng)態(tài)交互產(chǎn)生身臨其境的感覺,可以用于改善教學(xué)科研手段,能夠?yàn)閺V大師生提供一個(gè)功能強(qiáng)大的溝通、互動(dòng)、分享的虛擬平臺(tái),提高教學(xué)科研的效率和水平,對提高校園管理水平等也具有重要的實(shí)際意義。
開發(fā)平臺(tái)選擇Unity是由Unity Technologies開發(fā)的工具,能夠讓開發(fā)者輕松創(chuàng)建諸多三維視頻游戲、實(shí)時(shí)三維動(dòng)畫、建筑可視化等類型互動(dòng)內(nèi)容的多平臺(tái)綜合型游戲開發(fā)工具,是一個(gè)全面專業(yè)方便的游戲引擎。UNITY3D適合大型場景的制作,支持所有主要文件格式且對硬件要求不高,低端硬件亦可流暢運(yùn)行廣闊茂盛的植被場景;對DirectX和OpenGL擁有高度優(yōu)化的圖形渲染管道,使得畫面效果優(yōu)異,擴(kuò)展空間高,并且提供了真實(shí)的高度完善的光影渲染以及柔和陰影與烘焙的系統(tǒng)。
圖形底層與邏輯架構(gòu)
3D底層使用微軟DirectX9.0c接口(簡稱DX9),兼容所有支持DX9.0c的硬件與操作系統(tǒng)??梢垣@得更好的圖像顯示質(zhì)量與硬件兼容性,使項(xiàng)目具備硬件平臺(tái)伸縮性,以及更佳的畫面效果。
邏輯層面使用.net開發(fā)基于微軟運(yùn)行環(huán)境。主體使用C#開發(fā),為保持在普通瀏覽器上的兼容性與透明性,涉及瀏覽器部分的功能使用JavaScript腳本,從根本上解決多瀏覽器兼容問題。
軟件結(jié)構(gòu)方案
為了最大限度發(fā)揮軟件設(shè)計(jì)功能,節(jié)省硬件資源,該系統(tǒng)使用B/S+C/S結(jié)構(gòu)方案。在充分使用B/S架構(gòu)的基礎(chǔ)上,通過分布式后臺(tái)下載方式在客戶端機(jī)器建立有效緩存,實(shí)現(xiàn)半C/S結(jié)構(gòu),有效減小服務(wù)器的負(fù)載。
對象建模
3D虛擬校園中建筑和場景模型的好壞,直接影響運(yùn)行的效果和用戶使用的逼真度。簡陋的模型會(huì)破壞視覺效果,高精度大數(shù)據(jù)量的模型會(huì)影響系統(tǒng)運(yùn)行速度,因此能否制作出簡潔適當(dāng)?shù)哪P?,決定作品畫面質(zhì)量的好壞。大連理工大學(xué)校園面積大、建筑物多、樹木景觀多,而對系統(tǒng)畫面效果要求極高,根據(jù)以上因素,在建筑建模時(shí)采用特殊技術(shù)并制定嚴(yán)格的標(biāo)準(zhǔn),盡量減低模型的數(shù)據(jù)量;花大量精力對貼圖進(jìn)行處理,減少貼圖的數(shù)量。同時(shí)利用法線貼圖和相關(guān)特效實(shí)現(xiàn)逼真的效果;樹木模型精選五種樹,通過對樹木形態(tài)改變完成對整個(gè)校園樹木的模擬,精細(xì)程度樹葉可見;人物雕塑模型一直是虛擬現(xiàn)實(shí)系統(tǒng)模型的難點(diǎn),對該類模型的解決方式采取先捏塑簡單泥模,將其掃描進(jìn)電腦,之后進(jìn)行處理建模,這樣得到的模型兼顧了仿真度高、數(shù)據(jù)量小的要求。
場景效果實(shí)現(xiàn)
一直以來,虛擬現(xiàn)實(shí)作品的場景效果和系統(tǒng)的運(yùn)行速度一直是一對矛盾體,尤其網(wǎng)上應(yīng)用,大家一直在“痛苦”地取舍。結(jié)果多是為保證系統(tǒng)的流暢運(yùn)行,犧牲畫面質(zhì)量,沒有完全達(dá)到仿真效果。為達(dá)到功能和畫質(zhì)的兼得,在制作過程中進(jìn)行了一些探索:
1.運(yùn)用多核支持技術(shù)
渲染引擎是面向多核處理進(jìn)行設(shè)計(jì)的,有很多針對多核心系統(tǒng)的優(yōu)化,應(yīng)用了先進(jìn)的無鎖并行性技術(shù),使引擎有更好的縮放性,并在不阻塞主渲染線程的情況下提供動(dòng)態(tài)加載更新場景的能力,使基于互聯(lián)網(wǎng)的高精度、大場景即時(shí)下載漫游和編輯功能成為現(xiàn)實(shí)。
2.延遲著色
延遲著色是一種針對3D場景進(jìn)行后期照明的技術(shù)。利用這種技術(shù)打破了以往渲染系統(tǒng)支持多重動(dòng)態(tài)光源時(shí),效率和各種性能急劇下降的限制,從而使得在一個(gè)3D場景能夠支持上百上千動(dòng)態(tài)光源的效果。它的實(shí)現(xiàn)方法主要是將3D場景的幾何光照信息渲染到render targe上,把它們從三維世界空間轉(zhuǎn)變成屏幕的顏色空間,作為光照計(jì)算時(shí)的輸入,然后對每一個(gè)光源,使用這些信息輸入逐一進(jìn)行計(jì)算生成一幀,然后把這樣的一幀合成到結(jié)果的幀緩存上,當(dāng)遍歷完所有的光源后,計(jì)算就完畢了,幀緩存上的圖像就是最后的渲染結(jié)果。
圖1 天光效果
圖2 體積光效果
Unity3d引擎著色框架是基于DX10架構(gòu)的,64bit顏色抗鋸齒G-Buffer,提供更精確的顏色計(jì)算,并支持大量的實(shí)時(shí)光源,能提供逼真的建筑內(nèi)外光照效果。
3.真實(shí)的自然天光
一個(gè)真實(shí)的天空效果對渲染氣氛是十分重要的,渲染引擎基于地球任一點(diǎn)任意時(shí)間的大氣光學(xué)厚度對于不同波長光波的Rayleign和Mie散射的數(shù)學(xué)建模,可以提供真實(shí)的天光和光照效果,如圖1所示。
4.動(dòng)態(tài)軟陰影
獲得動(dòng)態(tài)樹陰影效果,Unity3D引擎采用先進(jìn)的多級(jí)PSSM ShadowMap投影方式和VSM的過濾算法,可以產(chǎn)生動(dòng)態(tài)的精細(xì)的柔和陰影效果,并可以支持半透明的物體投影。
Shadow Mapping(陰影映射)是一種圖像空間的技術(shù),它是在以光源位置作為視點(diǎn)的情況下渲染整個(gè)場景的深度信息,然后再使用這些深度信息去決定場景的哪一部分是處于陰影之中。它有鋸齒并且依賴緩沖技術(shù)。由于可以在保持幀率的情況下達(dá)到真實(shí)感光照和陰影效果,編輯器允許在場景中放置任意數(shù)目的靜態(tài)光源,它會(huì)為每個(gè)面預(yù)計(jì)算光流量和靜態(tài)陰影。
5.體積光
體積光是指大氣中漂浮的塵埃在光照情況引起的散射效果,比如像在暗屋子中從窗縫投進(jìn)的光柱效果,它給人一種莫名的厚重感和時(shí)間感,也是構(gòu)成真實(shí)畫面效果的不可或缺的一部分,如圖2所示。
6.景深
無論是人眼還是照相機(jī)這種光學(xué)系統(tǒng),都有在聚焦平面處清晰,在遠(yuǎn)離聚焦平面越來越模糊的現(xiàn)象。所以景深是重要的一種鏡頭表達(dá)方式,系統(tǒng)使用屏幕空間的基于逐像素的多次高斯卷積濾波,可以模擬出人眼的這種效果,增加用戶身臨其境的感覺。同時(shí)主畫面以外的部分被虛化后,面數(shù)大大降低,可減少系統(tǒng)對資源的占用,有助于實(shí)現(xiàn)高畫質(zhì)的流暢運(yùn)行。如圖3所示,近景場景清晰而遠(yuǎn)景場景模糊。
圖3 景深效果
7.實(shí)時(shí)環(huán)境遮擋
假設(shè)在一個(gè)太陽光沒有直接照射到的一個(gè)桌面放上一個(gè)茶壺,那么雖然這里沒有直接光照但是在茶壺底部仍然能形成一圈暗影,這便是間接光照的影子,就是說茶壺減少了其他物體如墻面對于桌面的關(guān)系反射,這種間接陰影是構(gòu)成真實(shí)的全局光照的重要的一部分,沒有這種效果桌上的茶壺就會(huì)有漂浮感。采用改進(jìn)的基于DX9.0c的實(shí)時(shí)環(huán)境遮擋技術(shù)HDSSAO,可以帶來逼真的間接陰影效果。
8.次表面反射
不大幅增加模型數(shù)據(jù)量而實(shí)現(xiàn)模型的高度真實(shí)感,除前面提到的法線貼圖技術(shù)比較典型,也比較受關(guān)注的是玻璃反光,甚至往往是觀察的重點(diǎn)。運(yùn)用基于雙向次表面散射反射分布函數(shù)BSSRDF,對玻璃和其他不同的材質(zhì)建模表現(xiàn)出和逼真的表面效果。
圖4 不同角度的反射效果對比
9.移動(dòng)控制
第一人稱瀏覽時(shí),可以控制的動(dòng)作。就是通過“wasd”或者上下左右鍵來控制移動(dòng)。首先新建一個(gè)JavaScript文件,這里命名為InputDetect吧,輸入下面的代碼:
#pragma strict
var Player : GameObject;
function Start () {}
function Update () {
Player = GameObject.Find("PlayerCube");
if(Input.GetKey(KeyCode.W)){
Debug.Log("Hit w");
Player.transform.Translate(Vector3.forward * 2);
}else if(Input.GetKey(KeyCode.S)){
Debug.Log("Hit s");
Player.transform.Translate(Vector3.back * 2);
}else if(Input.GetKey(KeyCode.A)){
Debug.Log("Hit a");
Player.transform.Translate(Vector3.left * 2);
}else if(Input.GetKey(KeyCode.D)){
Debug.Log("Hit d");
Player.transform.Translate(Vector3.right * 2);
}
}
這時(shí),運(yùn)行這個(gè)系統(tǒng),就可以通過“WASD”來控制移動(dòng)了。
最終系統(tǒng)是網(wǎng)上應(yīng)用的,考慮到用戶硬件的配置差異,提供從高到低四個(gè)版本,最低可支持集成顯卡,并在主頁面上制作對應(yīng)按鈕,清晰標(biāo)注每個(gè)版本對應(yīng)的配置需求,方便選擇瀏覽,并在演示頁面設(shè)置操作圖示。
為了能夠更真實(shí)地展現(xiàn)虛擬現(xiàn)實(shí)場景,充分地利用Unity3D系統(tǒng)的插件,通過延遲著色、真實(shí)的自然天光、動(dòng)態(tài)軟陰影技術(shù)、實(shí)時(shí)環(huán)境遮擋技術(shù)、HDR動(dòng)態(tài)亮度適應(yīng)、景深技術(shù)等展現(xiàn)一個(gè)真實(shí)的、柔和的場景,為訪問者提供了良好用戶體驗(yàn)度。通過腳本編程,實(shí)現(xiàn)移動(dòng)控制,增加用戶體驗(yàn)度。
大連理工大學(xué)三維虛擬校園系統(tǒng)每個(gè)版本文件25M左右,運(yùn)行時(shí)占內(nèi)存400M;頁面打開迅速、運(yùn)行流暢;界面友好,操作便捷。畫面精美自然,給人以身臨其境的感覺。
(作者單位為大連理工大學(xué)網(wǎng)絡(luò)與信息化中心)