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