陳睿
(1.太原理工大學現代科技學院,山西 太原 030024;2.太原理工大學藝術學院,山西 太原 030024)
20 世紀80 年代由美國人拉尼爾提出的虛擬現實技術,巧妙靈活地結合人的視、聽、觸感官系統及運動行為,在計算機中逼真地模擬出現實世界,將人與計算機融為一體,從而使人置身于真實世界中[1]。這種技術可以真實模擬現實環境,讓體驗者通過多種感官的結合沉浸于虛擬環境中,同時具有交互性強的特點。
近年來,隨著各高校招生規模的不斷擴大,建立數字校園可提高大眾對學校的認知,國內部分高校紛紛利用此技術模擬校園現狀,為社會群眾和校園師生提供一個直觀、交互性強的交流平臺。此外,這也是一種很好的展示校園文化、提高師生生活質量的有效方式;作為遠程教育的基礎平臺,也可為社會帶來巨大的經濟效益和社會效益。為此,提出了建立虛擬校園的想法。
作為我國在山西省唯一的“211 工程”重點建設大學,太原理工大學也緊跟時代腳步,做好創新工作,建立數字校園建設平臺。明向校區,是高新區內所有高校中規模最大的校區,它的建設也將成為學校乃至全省教育發展的重中之重。因此,簡單地模擬三維可視化校園環境可在一定程度上滿足師生在教學、教務、校園生活等方面的基本需求。本文以太原理工大學明向校區為研究對象,基于SketchUp 和Unity3D開發平臺,重點討論虛擬現實中的關鍵技術,建立校園的三維模型,實現校內行走狀態和飛行狀態下的自主漫游。
三維建模階段采用簡單且易上手的Google SketchUp 軟件建立校園的立體模型,并利用自帶的優化功能減少模型的數據量,提高系統的運行效率[2]。其導出的3D 模型文件可以直接導入功能較為強大的綜合型開發引擎Unity3D 中。相比其他制作三維場景的軟件而言,該軟件支持的文件格式更多,兼容性更強,對于互動性較強的大型場景,更能發揮其優越性,且具有良好的實時交互性,支持多平臺發布,在三維游戲、動畫、建筑等開發中應用自如[3]。另外,可以與其他大多數的相關程序一同工作。
本研究借助SketchUp 軟件,建立虛擬的三維校園模型,然后基于Unity3D 引擎實現用戶與校園的交互。系統的開發主要分為以下三個階段:①根據學校實際建設情況,獲取準確的地形圖、各建筑物的準確數據等,進而建立三維模型;②優化單體模型,進行貼圖,以便提高物體的真實度,建立完整的校園場景;③基于Unity3D 引擎實現物體的碰撞檢測及動態加載,完成校園漫游。
建立三維模型之前,需要收集的數據內容包括:校園各樓的大概尺寸、二維平面圖、實景照片等。這些數據的準確度直接影響著三維建模的真實程度,所以實地采集數據時均采用專業數碼相機,盡量減小因拍攝的傾斜度帶來的誤差。之后,所有的照片都采用圖形編輯軟件Photoshop 進行處理,以輔助三維建模。
使用SketchUp 軟件,根據收集到的數據按照“從大到小,從整體到布局”的原則依次建立單個的建筑模型,過程中盡可能地減少多余的面和線。對于結構比較特殊的建筑,需要耐心修改,通過削減面等復雜操作才能完成。
使用處理好的照片對物理模型貼圖,來提高模型的真實度。對于景觀模型(植物、水體等)和人文要素模型(路燈、車輛等),可以在Sketchup 組件庫中搜索到,再結合實際要求靈活改動,以實現景觀和人文要素的快速表現。對于道路、草坪等的建模,仍在SketchUp 中根據獲取的平面圖先簡單勾勒,再貼上相應的材質。部分模型如圖1、圖2 所示。

圖1 行知樓模型
在完成所有的單體模型后,需要將這些模型放置在特定的具有交互功能的三維環境中。在SketchUp 中選擇文件,導出命令項,然后在導出為fbx 文件對話框中可以看到信息提示:已處理的SketchUp 圖元(組、實例、面、材質、紋理),已導出的fbx 圖元(面、材質、紋理)個數等信息,這樣就成功導出了fbx 文件。之后在Unity3D 中導入fbx 文件,并將模型拖拽到場景中的合適位置,如圖3、圖4 所示。

圖3 東南俯視圖

圖4 東北俯視圖
這個過程容易出現兩個問題:一是材質丟失,二是模型比例問題。對于材質,建議一律采用標準材質,并且有統一的命名規范,所有模型中不同的材質不能出現相同的命名,否則會在unity3D 中出現材質替換的問題。在導入fbx 文件前,必須導入貼圖,一并放在assets 文件夾下。模型的比例則是要處理好Unity3D 中的默認單位及SketchUp 中的單位換算。在Unity3D 中導入校園地圖,再依次按照地圖顯示的位置導入各個建筑物的模型,并添加其余景觀模型和人文要素模型;接下來使用Unity3D 自帶的烘焙、渲染等功能調整場景燈光亮度、太陽光暈等自然環境,添加天空盒更增強了場景的立體感和真實感。
實現三維場景漫游的首要問題是實現虛擬人物與地面、建筑物、景觀等的碰撞檢測。通俗的說,碰撞檢測就是為了解決現實生活中諸如人不能穿過墻,人不能直接從車所在的區域直接穿過等問題,即不同實物在同一三維空間中不能同時占有同一區域,并且不能發生穿透等行為。
作為虛擬現實中的關鍵技術之一,他的主要作用是要準確判斷任意兩個實體之間能否穿透及碰撞,并且提供穿透碰撞的精確位置。該平臺中實現碰撞檢測的方式較靈活,本系統采用了包圍盒法。
動態加載物體類主要實現了動態添加物體模型到場景中的功能。實現過程是獲取IP 地址,將客戶端與服務器進行連接,通過在給定目錄下獲取所需模型的文件來加載模型,調用add()方法將實物添加到模型數組,以便對不在視角范圍的場景進行刪除操作。
本系統采用第一人稱主視角的方式進行漫游,給觀賞者更強的代入感,如圖5、圖6 所示。

圖5 俯視游覽

圖6 游覽學生公寓
利用平臺中存在的FirstPersonController 作為用戶的控制對象。在工程面板中顯示出該對象由4 個組件組成,分別是Transform、FPSWalker、CharacterController、MouseLook。此外,在Unity3D 中,是以層次關系來組織相關物體的。用戶以第一人稱視角在校園中進行漫游,按住W、S、A、D鍵攝像機對應前后左右移動,按住鼠標左鍵攝像機隨鼠標轉動方向觀察當前位置,按住空格鍵可以實現跳躍。另外系統中加入了背景音樂,增強了環境的真實感。
本項目成功構建了校園場景,實現了虛擬漫游,同時具有良好的沉浸性與交互性,并且利用圖像、聲音相結合的方式開發整個系統,科學性與趣味性并存,是虛擬現實技術在校園建設中的良好應用。使用當前較為流行的Unity3D 開發平臺,引入虛擬現實技術和游戲開發的一些思想,讓用戶以良好的客戶體驗方式全面直觀地獲取校園信息,提高工作學習的效率。