尹大偉 張熙若 李歡歡 馬恒銳 孟祥銳
摘 ?要:為擴大招生,學校需要更好展示自身風采的平臺,讓學生更好地了解校園內(nèi)部環(huán)境,而傳統(tǒng)的虛擬校園漫游系統(tǒng),主要是利用2D動畫、照片、圖片和文字向用戶展示校園環(huán)境,系統(tǒng)缺乏互動性、沉浸感和景深效果,無法使用戶產(chǎn)生身臨其境的感覺。針對以上問題,本文采用3D虛擬現(xiàn)實技術,設計、開發(fā)了一個以用戶為中心,富娛樂性、交互性和沉浸感的Web訪問的交互式漫游系統(tǒng)。
關鍵詞:虛擬現(xiàn)實;虛擬校園;Unity3D;游戲引擎
中圖分類號:TP391.9 ? ? 文獻標識碼:A
Abstract:In order to attract more applicants,schools need to better display their own styles so that students can better understand the campus internal environment.Traditional virtual campus roaming system presents the environment to users through 2D animation,360° environment photos,pictures and texts,which lacks interactivity,immersion perception and depth of field and can't generate immersive feelings.Aiming at the above problems,this paper uses 3D virtual reality technologies,designs and develops a user-centered virtual campus roaming system with entertainment,interactivity and immersion.Users can visit freely or automatically to the campus,click the given interactive objects and gain the information they are interested in.
Keywords:virtual reality;virtual campus;Unity3D;game engine
1 ? 引言(Introduction)
虛擬現(xiàn)實(Virtual Reality),簡稱VR技術,是利用計算機產(chǎn)生一個三維的虛擬世界,為用戶提供視、聽、觸覺等感官的模擬,使用戶如同身臨其境一般可以即時且沒有限制的觀察三維空間中的事物[1]。虛擬現(xiàn)實系統(tǒng)是聯(lián)系虛擬世界、真實世界和用戶之間的紐帶,當用戶在真實世界的狀態(tài)發(fā)生改變,通過虛擬現(xiàn)實系統(tǒng),將其傳送到虛擬世界中,虛擬世界就會與用戶之間產(chǎn)生互動,如同真實世界一般。
虛擬校園漫游系統(tǒng)是虛擬現(xiàn)實技術在數(shù)字化校園中的具體應用,是校園環(huán)境的模擬和再現(xiàn)[2]。首先利用三維建模工具3DMax,創(chuàng)建教學大樓、圖書館、食堂、宿舍樓、體育場等主要建筑物的3D模型;接下來利用Unity3D引擎和交互腳本,使用戶可以做出與現(xiàn)實世界相同的動作,體現(xiàn)了系統(tǒng)的交互性和真實性。該系統(tǒng)將成為了解學校的一個窗口,對于展示學校整體形象、提高生源質(zhì)量和為在校新生導航將起到重要作用[3]。在其基礎上,還可以建立虛擬大學,提供相應的虛擬課堂、在線答疑、虛擬實驗等服務。
Unity3D是一個能在多平臺輸出3D游戲開發(fā)工具和游戲引擎套件,其中包括了圖形、音頻、物理和網(wǎng)絡等諸多功能模塊,并提供了一個整合以上功能的、強大的圖形化編輯器。其編輯器運行在Windows和Mac OS X下,可發(fā)布游戲至Windows、Mac、Wii、iPhone、WebGL(需要HTML5)、Windows phone 8和Android平臺[4]。Unity3D被廣泛應用于虛擬場景的模擬(博物館、購物中心等)、駕駛模擬(飛機、輪船、汽車等)、游戲娛樂軟件、醫(yī)療、教育等諸多領域。
2 ?系統(tǒng)的設計與實現(xiàn)(Design and implementation of the system)
2.1 ? 系統(tǒng)的開發(fā)流程
虛擬校園漫游系統(tǒng)的開發(fā)遵循軟件開發(fā)的基本流程,包括分析、設計、開發(fā)、測試、修改,重復上述步驟逐步實現(xiàn)系統(tǒng)所規(guī)劃的功能[5]。其開發(fā)流程大致分為九個步驟:校園環(huán)境測量、繪制校園草圖、創(chuàng)建主要建筑物模型、收集素材、為模型添加紋理和材質(zhì)、將模型導入Unity3D引擎、錄制視頻和音頻文件、編輯互動腳本、生成虛擬校園。具體的開發(fā)流程如圖1所示。
首先測量真實的校園環(huán)境,并按等比例繪制校園環(huán)境的草圖。然后利用三維建模工具3DMax,創(chuàng)建地形、主要建筑物和環(huán)境模型,并盡量保證與真實環(huán)境的比例相同。接下來根據(jù)環(huán)境的特點,為三維模型貼上逼真的素材,構建完整的校園場景。最后將場景導入Unity3D引擎,編輯互動腳本,將靜態(tài)場景連接到Unity3D引擎,實現(xiàn)角色和場景間的互動。
2.2 ? 系統(tǒng)的設計目標
虛擬校園要為用戶提供盡可能真實的校園模擬環(huán)境,并實現(xiàn)角色與場景間的互動,其具體設計目標如下:
(1)系統(tǒng)具有友善的用戶界面,便于用戶通過瀏覽器訪問。
(2)構建校園主要建筑物高精度的全景模型。用戶可以通過鼠標來放大、縮小和旋轉(zhuǎn)建筑模型,并從任意角度觀察。
(3)系統(tǒng)支持兩種游覽方式:自由游覽和自動游覽。自由游覽是指用戶以第一人稱視角,通過鍵盤和鼠標控制角色在虛擬校園中隨意參觀、游覽。自動游覽是指用戶按事先設定好的人稱視角,沿固定線路參觀、游覽校園。
(4)媒體展示。虛擬校園中可以嵌入Flash、視頻、音頻、文本等多媒體信息,當用戶到達交互區(qū)域或通過鼠標點擊交互對象,能夠在彈出窗口中播放相關的多媒體信息。
(5)快速地理信息查詢。該功能可以查詢校園中主要建筑物的位置信息,并可即時的將用戶角色移動到該建筑物附近。
2.3 ? 系統(tǒng)的實現(xiàn)
依據(jù)上述的開發(fā)流程,采用3DMax為場景建模工具,Unity3D為系統(tǒng)開發(fā)平臺,設計開發(fā)了交互式的虛擬校園漫游系統(tǒng)。用戶可以通過瀏覽器訪問虛擬校園,體驗逼真的校園環(huán)境,并可通過導航菜單選擇自由游覽、自動游覽或地圖導航。在漫游過程中,用戶可以通過鍵盤控制角色的運動,使用鼠標點擊建筑物可以了解相關的環(huán)境信息。系統(tǒng)的運行效果如圖2和圖3所示。
3 ?系統(tǒng)開發(fā)中的關鍵技術(Key technologies in the system development)
3.1 ? 模型優(yōu)化
模型是虛擬校園的基礎,模型的精細程度會直接影響到系統(tǒng)的仿真效果,但過多的復雜模型同樣會增加系統(tǒng)的負擔,并對系統(tǒng)的交互性和實時性產(chǎn)生不良影響。為保證仿真效果和系統(tǒng)的運行性能,我們在創(chuàng)建模型時盡可能地使用標準幾何體;建筑物表面的細節(jié)、草坪和花卉采用紋理貼圖;樹木和高大的植物采用廣告牌技術;在模型的構建中還考慮到對模型的優(yōu)化,通過采用刪除不可見面、減少材質(zhì)數(shù)量、壓縮貼圖等優(yōu)化方法,簡化了模型,減少了模型的大小[5]。優(yōu)化前后效果圖如圖4和圖5所示。
3.2 ? 碰撞檢測技術
碰撞檢測技術是三維場景中實現(xiàn)交互的重要機制。Unity3D引擎的碰撞檢測機制分為兩類:觸發(fā)和碰撞[6]。采用觸發(fā)方式,當碰撞發(fā)生時不會產(chǎn)生任何物理現(xiàn)象,該機制用于處理沒有產(chǎn)生任何物理現(xiàn)象的碰撞。采用碰撞方式,當碰撞發(fā)生時會產(chǎn)生相應的物理現(xiàn)象,例如改變物體的位置、爆炸等等。漫游過程中,使用觸發(fā)器實現(xiàn)門的自動開關,使用碰撞器處理角色、樹木和建筑物之間的碰撞。
3.3 ? 虛擬交互
Unity3D引擎中,虛擬交互的核心是編輯實現(xiàn)交互功能的腳本,通過將交互腳本賦予靜態(tài)的三維模型,賦予其與用戶交互的能力。系統(tǒng)中的虛擬交互主要包括自由游覽、自動游覽和信息交互。
3.3.1 ? 自由游覽
自由游覽是指用戶以第一人稱視角參觀、游覽校園。游覽過程中用戶通過W、S、A、D鍵控制角色的前進、后退、左、右移動,使用鼠標改變角色的觀察視角[7]。其部分核心代碼如下所示:
if(Input.GetKey(KeyCode.W)){
z+=m_Speed*Time.deltaTime;
}
if(Input.GetKey(KeyCode.S)){
z-=m_Speed*Time.deltaTime;
}
if(Input.GetKey(KeyCode.A)){
x-=m_Speed*Time.deltaTime;
}
if(Input.GetKey(KeyCode.D)){
x+=m_Speed*Time.deltaTime;
}
transform.Translate(new Vector3(x,y,z));
3.3.2 ? 自動游覽
自動游覽是指用戶以規(guī)定的視角,沿固定的線路參觀、游覽校園。游覽過程中,可通過鼠標改變觀察視角。自動游覽功能的實現(xiàn)步驟如下。
(1)創(chuàng)建多個cube作為漫游的導航點,將其均命名為WandarPoint,并用WandarPoint標記這些導航點;禁用其網(wǎng)格渲染器,并刪除碰撞器;將導航點均勻地設置在漫游路徑上,確保每個路口都有導航點,任何相鄰的導航點間均沒有障礙物,可以直接到達。
(2)編輯自動瀏覽腳本,將腳本賦予角色。腳本中的操作包含兩部分:其一是按由近及遠的次序存儲所有導航點的位置信息,以及用戶的起始位置和運動方向;其二是按導航點的次序運動,最終抵達目標點。
導航數(shù)據(jù)初始化在Start方法中實現(xiàn),其部分核心代碼如下所示:
path=GameObject.FindGameObjectsWithTag("WandarPoint");
Array.Sort(path,(x,y)=>{returnx.gameObject.name.CompareTo(y.gameObject.name);});
transform.position=path [0].transform.position;
transform.forward=path [Index].transform.position-transform.position;
自動漫游在Update方法中實現(xiàn),其部分核心代碼如下所示:
if(Vector3.Distance(path [Index].transform.position,transform.position)<0.1f){
if(Index!=path.Length-1){
Index++;}
if(Vector3.Distance(path[path.Length-1].transform.position,transform.position)<0.1f){
transform.position=path [path.Length-1].transform.position;
return;}
transform.forward=path Index].transform.position-transform.position;}
transform.Translate(Vector3.forward*5*Time.deltaTime,Space.Self);
3.3.3 ? 信息交互
系統(tǒng)的信息交互應用了Unity3D引擎提供的3D拾取技術。3D拾取技術的基本思想是,從用戶位置向鼠標點擊位置發(fā)射一條射向3D世界的射線,與射線相交的第一個對象,為被選中對象[8]。獲取選中對象后,可以以動畫、音頻、圖片、文字等形式向用戶展示對象的相關信息。利用信息交互功能,用戶可在漫游時方便快捷地查詢周圍環(huán)境的信息。信息交互的部分核心代碼如下所示:
Ray ray=Camera.mainCamera.ScreenPointToRay
(Input.mousePosition);
if (Physics.Raycast(ray,out hit,100)){
if (hit.transform.gameObject.name=="Library") {
……// event handling
}
}
4 ? 結論(Conclusion)
本文設計、開發(fā)基于Unity3D引擎的交互式虛擬校園漫游系統(tǒng),并利用Unity3D的多平臺部署功能,將其發(fā)布到Web平臺上。系統(tǒng)為用戶提供了逼真的校園環(huán)境,且具備良好的實時性和交互性。文中還討論了在虛擬校園漫游系統(tǒng)開發(fā)中所涉及的幾個關鍵技術,并給出了相應的解決方案。文中所涉及的技術同樣可應用于電子、游戲、醫(yī)學、教育等虛擬現(xiàn)實和仿真領域。
參考文獻(References)
[1] 肖建良,張程,李陽.基于Unity3D的室內(nèi)漫游系統(tǒng)[J].電子設計工程,2016,19:54-56.
[2] 朱惠娟.基于Unity3D的虛擬漫游系統(tǒng)[J].計算機系統(tǒng)用,2012,21(10):36-38.
[3] 李遠鑫,蔣海鷗,徐亦飛,等.基于Web3D的交互式虛擬社區(qū)[J].計算機工程,2011,37(11):289-290.
[4] 劉海川,王小鵬,王磊.虛擬校園模型構建及優(yōu)化[J].電子科技,2010,11:1-3.
[5] 張明明.基于Unity3D虛擬校園漫游的研究與實現(xiàn)[D].昆明:云南大學,2014:35-36.
[6] 李在賢.Unity5權威講解[M].北京:人民郵電出版社,2016:15-16.
[7] 王星捷,李春花.基于Unity3D平臺的三維虛擬城市研究與應用[J].計算機技術與發(fā)展,2013,23(4):241-244.
[8] 黃濤.基于Unity3D的虛擬校園漫游系統(tǒng)的研究和實現(xiàn)[D].桂林:廣西師范大學,2014:39-40.
作者簡介:
尹大偉(1985-),男,碩士,副教授.研究領域:現(xiàn)代思想政治教育理論與方法,多媒體技術應用.
張熙若(1997-),男,本科生.研究領域:軟件開發(fā).
李歡歡(1998-),女,本科生.研究領域:虛擬現(xiàn)實.
馬恒銳(1998-),男,本科生.研究領域:網(wǎng)絡安全.
孟祥銳(1998-),男,本科生.研究領域:圖像處理.