宋傳磊 劉俊婷 張光亮 張秀國
(青島理工大學(xué)琴島學(xué)院,山東青島266106)
基于Unity3D交互式三維虛擬校園平臺設(shè)計與研究①
宋傳磊 劉俊婷 張光亮 張秀國
(青島理工大學(xué)琴島學(xué)院,山東青島266106)
針對目前三維虛擬校園平臺在真實性和交互性等方面的不足,提出基于Unity3D三維虛擬校園的實現(xiàn)方法.首先,考察實際地形和采集真實數(shù)據(jù)信息,完成場景地形和建筑景觀模型構(gòu)建;然后,導(dǎo)入Unity3D平臺,通過二次開發(fā),實現(xiàn)三維場景搭建及三維物理效應(yīng)仿真等.該平臺使用的實驗數(shù)據(jù)真實有效,很好的實現(xiàn)了三維虛擬校園的各項性能指標(biāo),高效的實現(xiàn)漫游仿真.
三維虛擬校園,Unity3D,三維模型,仿真
在現(xiàn)行的信息化時代,各院校越來越重視宣傳,為了能夠收到更好的效果,尋找好的宣傳平臺更為重要[1].虛擬現(xiàn)實技術(shù)應(yīng)用于學(xué)校,實現(xiàn)虛擬校園,能夠方便真實地展現(xiàn)學(xué)校的軟硬件教學(xué)資源,為社會各界對校園地理環(huán)境的認識提供了極大的方便.目前許多院校,校園電子信息化建設(shè)是其最薄弱的環(huán)節(jié),雖然有些已經(jīng)實現(xiàn)了360°在線校園游覽,但大多數(shù)都是在2D基礎(chǔ)上對圖片做了技術(shù)整合處理.三維虛擬校園技術(shù),已經(jīng)成為各院校關(guān)注和研究的焦點[2].
本文采用新的模式完成三維虛擬校園的設(shè)計,在Maya平臺下完成模型構(gòu)建,使用Photoshop對紋理貼圖進行處理,在Unity3D引擎下實現(xiàn)三維虛擬校園.設(shè)計制作過程簡潔,交互程序設(shè)計難度低,整體設(shè)計過程質(zhì)量高、效率高.具體涉及實際地形和建筑數(shù)據(jù)信息的采集、三維模型的構(gòu)建和Unity3D技術(shù)編程等.
1.1 理論依據(jù)
嚴格遵循軟件工程方法學(xué)的指導(dǎo)思想完成設(shè)計研究.在調(diào)查研究的基礎(chǔ)上,依次進行需求分析、概要設(shè)計、詳細設(shè)計、實現(xiàn)和測試,每個環(huán)節(jié)都要制定合理的時間周期和預(yù)計目標(biāo),每個環(huán)節(jié)都要嚴格審查,都要有完善的文檔資料,注意存檔,以方便后期的查閱維護[3].
1.2 設(shè)計
充分細致的研究三維虛擬校園平臺的問題域;研究現(xiàn)狀和相關(guān)理論基礎(chǔ);明確目前現(xiàn)有的平臺具有的功能和不足,針對理論知識進行分析研究;對三維模型構(gòu)建算法、紋理和Unity3D技術(shù)編程進行全面的分析并寫出詳細的設(shè)計方案;組織研究分工和擬定開發(fā)計劃[4].
收集相關(guān)資料進行可行性評估;需求分析,模型構(gòu)建;數(shù)據(jù)采集,三維模型構(gòu)建;貼圖制作及渲染;各功能模塊框架的設(shè)計與創(chuàng)建;導(dǎo)入Unity3D引擎實現(xiàn)研究目標(biāo).
三維虛擬校園設(shè)計結(jié)構(gòu)如圖1所示.
圖1 設(shè)計結(jié)構(gòu)圖
通過衛(wèi)星地圖獲取校園平面布局圖,并實地考察對校園區(qū)域進行分布,用于指導(dǎo)真實數(shù)據(jù)采集和模型構(gòu)建.對采集的真實數(shù)據(jù)進行處理,整理拍攝的照片,使用Photoshop進行紋理處理,根據(jù)校園區(qū)域建立照片和紋理庫.
使用數(shù)字高程模型和數(shù)字正射影像構(gòu)建地形.根據(jù)劃分的區(qū)域確定建模范圍,裁剪數(shù)字高程模型,使用GIS將數(shù)字高程模型和數(shù)字正射影響置于統(tǒng)一坐標(biāo)系,修改相應(yīng)屬性參數(shù),生成地形模型,使用Maya將地形轉(zhuǎn)換成三維地形模型.該方法構(gòu)建的模型真實、速度快、精度高.
參考衛(wèi)星地圖,先對校園區(qū)域主要道路進行規(guī)劃,以道路為參考線,建立每個主題建筑和景觀建筑,對點的高度屬性設(shè)置來體現(xiàn)地形的高低起伏.地形實體——綠化樹木、小品景觀等,結(jié)合實際采集數(shù)據(jù)在Maya中完成模型構(gòu)建.
圖2 模型分類圖
縱觀整個虛擬系統(tǒng),模型的構(gòu)建工作量最大、最繁瑣、歷時最長.主要涉及模型分析構(gòu)建和紋理貼圖的處理.主題建筑模型的構(gòu)建難度最大,雖然都是有簡單幾何體組成,但是各建筑的形狀不同細節(jié)表現(xiàn)也不同.為了方便場景構(gòu)建,對場景區(qū)域進行了劃分,在建模過程中基于場景區(qū)域完成了地形坐標(biāo)對應(yīng).具體區(qū)域模型如圖2所示.
使用相機實地拍攝圖片,根據(jù)紋理圖片的格式要求,主要從色彩和圖像兩個方面進行處理,按照指定格式保存,按照區(qū)域劃分統(tǒng)一命名,將相關(guān)信息記入紋理說明文檔,最后導(dǎo)入Unity3D紋理庫進行統(tǒng)一管理.
系統(tǒng)交互控制和邏輯處理采用Javascript、C#技術(shù)實現(xiàn),在Unity3D引擎平臺下進行開發(fā)[5].系統(tǒng)中主要的技術(shù)有:系統(tǒng)UI、屏幕自適應(yīng)和主菜單和角色自動巡航技術(shù).
4.1 系統(tǒng)UI
在Photoshop和Fireworks設(shè)計平臺下完成UI設(shè)計創(chuàng)作.該環(huán)節(jié)UI中包括歡迎界面、主UI界面、交互按鈕設(shè)計、信息瀏覽UI等,具體涉及用色、圖片處理、文字顯示效果設(shè)計.
在Unity 3D中使用GUI.DrawTexture()方法實現(xiàn)圖形的繪制,WaitForSeconds()方法實現(xiàn)歡迎窗口的時間等待,使用GUI.Button()方法實現(xiàn)交互按鈕的繪制等.使用C#語言編碼,核心代碼如下所示.
void DrawMainMenu() {
GUI.DrawTexture(new Rect(0, 0, 854, 480),BGTex);
if(GUI.Button(new Rect(0,205,345,50), startBtn, btnStyle)) {
if(PlayerPrefs.GetInt("effect") != 1) GetComponent
Application.LoadLevel("qdc");
}
……
}.
4.2 屏幕自適應(yīng)和主菜單
使用Matrix4x4.TRS()方法實現(xiàn)GUI的自適應(yīng)[6].通過變量num的值來訪問不同方法,當(dāng)num值能被3整除時,調(diào)用DrawMainMenu()方法實現(xiàn)主菜單的繪制,當(dāng)num值除以3余1時,調(diào)用DrawHelp()方法實現(xiàn)幫助界面的繪制,當(dāng)num值除以3余2時,調(diào)用DrawAbout()方法實現(xiàn)關(guān)于界面的繪制.DrawMainMenu()方法主要完成主菜單中開始按鈕的繪制和開始按鈕事件的處理、設(shè)置按鈕的繪制和設(shè)置按鈕事件的處理、幫助按鈕音樂開關(guān)按鈕音效按鈕的繪制及其事件的處理.使用C#語言編碼,核心代碼如下所示.
void OnGUI () {
GUI.matrix=Matrix4x4.TRS(Vector3.zero,Quaternion.identity,newVector3(horizRatio,vertRatio,1));
……
}.
void DrawMainMenu() {
GUI.DrawTexture(new Rect(0, 0, 854, 480),BGTex);
if(GUI.Button(new Rect(0,205,345,50), startBtn, btnStyle)) {
if(PlayerPrefs.GetInt("effect")!=1) GetComponent
Application.LoadLevel("qdc");
}
……
}.
4.3角色自動巡航
定義三個變量用于表示人物的站立、行走和奔跑,并設(shè)置人物的初始狀態(tài)為站立狀態(tài)[7].定義一個變量用來記錄鼠標(biāo)點擊的3D坐標(biāo)點,按小鼠標(biāo)左鍵后,從攝像機的坐標(biāo)點向鼠標(biāo)點擊的坐標(biāo)點投射一條射線,當(dāng)射線投射到一個場景對象,得到該對象的3D坐標(biāo)點.判斷鼠標(biāo)單擊還是雙擊,如果雙擊則驅(qū)動人物進入奔跑狀態(tài),如果單擊則人物進入行走狀態(tài).核心代碼如下所示[8].
public class MoveController : MonoBehaviour
{ ……
void Update ()
{ if(Input.GetMouseButtonDown(0))
{ Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{ point = hit.point;
transform.LookAt(new Vector3(point.x,transform.position.y,point.z));
}}}
…… }.
基于以上設(shè)計思想和實現(xiàn)方法,以青島理工大學(xué)琴島學(xué)院為設(shè)計創(chuàng)作對象,實現(xiàn)了基于Unity3D交互式虛擬校園平臺.
使用Maya結(jié)合3D max實現(xiàn)模型構(gòu)建.構(gòu)建校園的模型是一個龐大的工程,具體包括校園的主體建筑、園林景觀、校園湖泊、山石景觀、小品建筑等精致模型構(gòu)建.采用實景拍攝采集真實照片,后期通過Photoshop合成處理,完成貼圖制作,這樣基本還原了現(xiàn)實場景,保證了場景的真實性,符合虛擬現(xiàn)實制作要求.校園中心樓的模型構(gòu)建如圖3所示.
圖3 中心樓模型
在Unity3D中實現(xiàn)場景設(shè)計.首先,通過衛(wèi)星地圖對校園平面結(jié)構(gòu)進行劃分;其次,在Unity3D中創(chuàng)建地形,使用地形筆刷構(gòu)造湖泊和起伏路面;第三,將設(shè)計的主體建筑模型導(dǎo)入U3D,將其植入場景,參考百度地圖調(diào)整各自大小方向位置,并調(diào)整各模型的紋理和材質(zhì)球;第四,導(dǎo)入系統(tǒng)資源和素材資源,實現(xiàn)樹木、花草、湖水等環(huán)境對象的創(chuàng)建;第五,植入天空盒,以備實現(xiàn)天氣環(huán)境的變換;最后,導(dǎo)入第一角色控制器,將其初始定位在校園門口,以便受程序控制完成校園漫游.主場景區(qū)域設(shè)計結(jié)果如圖4所示.
圖4 主場景設(shè)計
通過程序設(shè)計實現(xiàn)交互,完成漫游環(huán)境的切換,滿足不同用戶的要求.實驗證明,本文提出的基于Unity3D三維虛擬校園平臺,交互性強,真實度高,設(shè)計制作過程相對簡單.使用Unity3D的物理特效、場景切換和自動巡航等技術(shù),能夠完成超真實、高仿真的物理效果.該三維漫游平臺功能強大,交互性強,根據(jù)用戶的需求可以在此基礎(chǔ)上進行二次開發(fā).
基于Unity3D技術(shù)結(jié)合C# 、Javascript程序設(shè)計語言完成交互式三維虛擬校園漫游平臺.在Unity3D平臺下完成交互界面生成、場景地形和相關(guān)物理特效,如聲音、湖泊波浪、花草隨風(fēng)擺動、碰撞和重力等.通過程序設(shè)計完成交互菜單、系統(tǒng)設(shè)置、手動控制漫游、自動巡航漫游和場景切換等功能,逼真形象的滿足了用戶視覺上的需求.本文研究設(shè)計的三維虛擬校園平臺運行情況較好、較穩(wěn)定,場景模擬真實形象,展示內(nèi)容豐富,取得了較好的仿真漫游效果.
[1] 宣雨松.Unity 3D游戲開發(fā)[M].北京:人民郵電出版社2013.
[2] 吳亞峰. Unity 3D游戲開發(fā)技術(shù)詳解與典型案例[M]. 北京:人民郵電出版社2014.
[3] 吳亞峰. Unity 3D游戲游戲案例開發(fā)大全[M]. 北京:人民郵電出版社2015.
[4] 李瑞森.Unity3D游戲場景設(shè)計實例教程[M]. 北京:人民郵電出版社2014.
[5] 李梁.Unity3D手機游戲開發(fā)實戰(zhàn)教程[M]. 北京:人民郵電出版社2016.
[6] 王洪源.Unity3D人工智能編程精粹[M]. 北京:清華大學(xué)出版社 2015.
[7] 陳誠.三維校園的開發(fā)與設(shè)計全景校園虛擬漫游[D].武漢:武漢科技大學(xué),2010.
[8] Rikk Carey, Gavin Bell.The Annotated Vrml 2.0 Reference Manual[M]. Addison Wesley, 1997.
Design and Research of Interactive 3D Virtual Campus Platform Based on Unity3D
SONG Chuan-lei LIU Jun-ting ZHANG Guang-liang Zhang Xiu-guo
(Qindao School, Qingdao Technological University , Qingdao 266106, China)
In order to improve the 3D virtual campus system deficiency and interaction etc, proposed the realization method of 3D virtual campus based on the Unity3D.First, Investigating the actual terrain and collecting real data information,constructing scene terrain and building models;second, import the Unity3D platform, after the second development, constructing the three dimensional scene and the effect of three dimensional physical simulation etc.The system use the data is real and effective, it is better to complete the indicators of the three dimensional virtual campus,the 3D virtual wandering is simulation and the effect is real.
3D virtual campus, Unity3D, 3D model, simulation
2016-12-26
山東省高等學(xué)??萍技夹g(shù)項目(J15LN79)資助
宋傳磊,E-mai:114970184@qq.com.
TP311.5
A
1672-6634(2017)01-0102-05