劉冬梅 宋平 鄧英芝 馬書超 張錫英
摘 要:本研究主要是開發(fā)一個基于Unity3d的移動終端游戲,以東北林業(yè)大學(xué)校園景觀為背景環(huán)境,以林大特色元素——松鼠作為主要對象,采用3ds Max作為建模工具,配合實測數(shù)據(jù)、照片紋理對林大的部分景點進行三維模擬;以ArcGIS 作為空間數(shù)據(jù)的處理平臺,配合衛(wèi)星圖片,制作成林大的虛擬現(xiàn)實模型,最終結(jié)合Unity3d制作的松鼠模型開發(fā)出一個三維仿真效果好,具備登錄、角色選擇、路線選擇、酷跑升級等特性的趣味游戲,并簡要闡述App設(shè)計與實現(xiàn)的方法。
關(guān)鍵詞: 虛擬現(xiàn)實;Unity 3d;ArcGIS;3ds Max;手機游戲
中圖分類號:TP319 文獻標識號:A 文章編號:2095-2163(2015-)02-
Design and Implementation of the App Named “Squirrel In NEFU” based on Unity3D
LIU Dongmei, SONG Ping, DENG Yingzhi, MA Shuchao, ZHANG Xiying
(College of Information and Computer Engineer, Northeast Forestry University, Harbin 150040,China)
Abstract: This research mainly is to develop a mobile terminal game based on Unity3d.The background environment of this game is the campus landscape of Northeast Forestry University, and the main image is the squirrel which is a characteristic element of Northeast Forestry University. In the game, the paper uses 3ds Max as modeling tool, to make a three-dimensional simulation of some scenic spots of Northeast Forestry University with measured data and photo textures. And the paper uses ArcGIS as the platform to handle spatial data to make the virtual-reality model of Northeast Forestry University with satellite images. Eventually, combining the squirrel model that is made by Unity3d, a funny game which has the features of good 3D simulation effect, user login, role choices, route selection and running upgrade is developed. This paper also concerns design and implementation method of this App.
Keywords: Virtual Reality; Unity 3D; ArcGIS; 3ds Max; Mobile Game
0 引 言
隨著游戲的發(fā)展,高效的開發(fā)工具成為大眾的企盼與期望。擁有高效率的開發(fā)模塊和強大的渲染效果以及出色的可擴展能力的Unity3d即已贏得了開發(fā)人員的親睞,并由此成為2012 年最受歡迎的游戲開發(fā)引擎,特別是其通過使用基于腳本的開發(fā)方式來進行三維場景的編輯和交互處理,使得整體流程既簡單又方便[1]。其實Unity 3d并非新近推出的,在國內(nèi)外早已廣泛使用該引擎進行網(wǎng)頁游戲的開發(fā)。國內(nèi)首款基于Unity 3d引擎研發(fā)的三國題材網(wǎng)游《將魂》,自2009年初就進入了研發(fā)歷程,到現(xiàn)在已經(jīng)對外開展了測試;在國外應(yīng)用Unity3d引擎方面,俄國Nival公司正在研發(fā)的新型態(tài)Dota游戲《Prine world》和歐美公司的3D魔幻MMORPG網(wǎng)游,都贏得了廣泛的關(guān)注與矚目。而針對Unity3d引擎的研發(fā)技術(shù),九眾互動CEO朱傳靖也曾提過,該引擎基于特定的技術(shù)架構(gòu),實現(xiàn)了實時生成查看的功能,易用性高,更簡化了開發(fā)的流程。但是在手機App即將成為游戲市場主流的今天,國內(nèi)還未見很多成功使用 Unity3d技術(shù)開發(fā)跨平臺手機應(yīng)用的例子,盡管已然涌現(xiàn)了諸如《神廟逃亡2》,《諜影蟲蟲》,《咖啡物語》等眾多優(yōu)秀的跨平臺應(yīng)用,但是各大公司也僅僅是對已成型的手機應(yīng)用進行部分代碼的重用以做到跨平臺的效果。這種開發(fā)方法效率低下,不能保證實時更新,不僅浪費了大量的人力物力資源,還無法覆蓋所有的市場,比如目前正在初顯端倪的Windows Phone手機生態(tài)圈,雖然占有率不高,但是發(fā)展卻很快。如果不是經(jīng)濟實力強勁的公司,開發(fā)的軟件可能只會在安卓和IOS設(shè)備上運行,這樣就限制了手機應(yīng)用市場的發(fā)展,也在無形之中加劇了安卓與IOS的壟斷現(xiàn)狀。目前Unity3d已經(jīng)更新到了Unity5版本,功能跡近趨于完整,性能也隨之趨于穩(wěn)定,所以,推廣使用Unity3d是廣大手機App開發(fā)商以及Unity公司所面臨的一個難題。
本項目基于Unity3d引擎創(chuàng)建一個以東北林業(yè)大學(xué)校園景觀為模型的3D仿真環(huán)境,并在此基礎(chǔ)上開發(fā)一個以林大松鼠為主要形象的3D移動終端休閑類游戲。游戲里松鼠通過將林大作為背景環(huán)境而在規(guī)定的時間內(nèi)從指定地點酷跑到另一個指定的地點來提升等級,雖無路線規(guī)定,但難度隨著等級的提升而增大。除此之外,本項目加入了林大校園特色元素:松鼠,除了通過游戲來增進人們對小動物的關(guān)心和愛護之外,還讓用戶熟悉了林大地圖,虛擬參觀校園景色,使人們可以通過游戲了解我國面積最大的大學(xué)的人文特色。
1 系統(tǒng)開發(fā)平臺簡介
引擎的選擇對于一個游戲是十分重要的。本App采用Unity3d引擎作為開發(fā)平臺來實現(xiàn)三維場景的搭建、整合,采用ArcGIS平臺作為地理空間數(shù)據(jù)的處理平臺,采用SQLite數(shù)據(jù)庫作為數(shù)據(jù)的組織和管理工具,采用C#為開發(fā)語言,實現(xiàn)游戲功能。
Unity3d是一個全面整合的專業(yè)游戲引擎。其最大特性是出色的跨平臺性,用Unity3d制作的游戲軟件可以發(fā)布在Android、IOS、Windows Phone、PC 、Mac以及一些游戲機平臺上。Unity3d 中整合了如地形創(chuàng)建工具、碰撞檢測和燈光渲染組件、粒子系統(tǒng)、物理引擎、常用腳本以及設(shè)置圖像畫面的后處理方法等豐富的開發(fā)資源,除此之外,還在Mono Behavior這個龐大的類庫中為開發(fā)者定義了各種實用的方法,從而為功能開發(fā)時提供了更大方便[2]。
由于ArcGIS 對地理空間數(shù)據(jù)有著良好的支持,且針對不同類型的地理數(shù)據(jù)有較強的編輯、分析功能,因此本軟件采用ArcGIS下的ArcInfo[3]作為已有的東北林業(yè)大學(xué)地理數(shù)據(jù)的處理平臺,以此來實現(xiàn)地圖數(shù)據(jù)的分析、處理、三維場景漫游和三維矢量與柵格數(shù)據(jù)的交互。
針對跨平臺運行在移動端的特點,本游戲采用 SQLite 作為數(shù)據(jù)庫平臺。這是一款支持跨平臺的輕型的數(shù)據(jù)庫,占用資源非常之低,若以其作為屬性數(shù)據(jù)的管理工具,將更加利于游戲性能的充分發(fā)揮。
2 游戲總體設(shè)計
2.1游戲架構(gòu)設(shè)計
游戲整體的架構(gòu)如圖 1所示,可以分為三部分,即數(shù)據(jù)層、邏輯層及應(yīng)用層(或稱為用戶表現(xiàn)層、界面層)。
按類型的不同,在數(shù)據(jù)層中,可將數(shù)據(jù)分為屬性數(shù)據(jù)和空間數(shù)據(jù)兩種。其中,前者主要包括林大校園和寵物的各種描述信息,例如建筑信息、路線信息、寵物屬性信息等;以及各種圖片,主要包括校園實景照片等。后者主要指林大校園地形數(shù)據(jù)和 GoogleEarth 衛(wèi)星圖片數(shù)據(jù)。
在 Unity3d引擎中直接編寫腳本代碼就可以控制實現(xiàn)游戲的業(yè)務(wù)邏輯。腳本有以下幾類:邏輯控制腳本,如計時操作、升級判斷和對數(shù)據(jù)庫的操作等;行為控制腳本,如控制寵物前進方向的選擇;UI 控制腳本和畫面優(yōu)化腳本。
界面層是用戶與軟件之間交互的接口,在游戲設(shè)計中使之與邏輯層分離,不僅為軟件功能的修改和擴充提供了方便,也在相當(dāng)程度上提升了代碼的重用性[4]。
2.2 游戲功能概述
基于上述游戲開發(fā)需求,研究中將該游戲分成3個模塊,分別是用戶個人界面,游戲界面以及游戲設(shè)置界面。據(jù)此可得本系統(tǒng)功能模塊設(shè)計如圖2所示。
圖1 游戲架構(gòu)設(shè)計 圖2 游戲功能模塊圖
Fig.l Game architecture design Fig.2 Game function block diagram
各個模塊的主要功能描述如下:
(1)用戶個人界面
此模塊分為用戶登錄/注冊和用戶信息兩個子模塊。用戶登錄/注冊模塊為游戲的入口,用戶要進行游戲之前首先要進行登錄,未曾注冊過的游戲用戶可以用郵箱或手機號進行注冊。用戶信息模塊即為用戶查看修改個人信息,如用戶名、密碼、郵箱及手機號等所用的模塊,此外用戶的已過關(guān)卡、游戲等級、經(jīng)驗、金幣、成就、寵物的屬性、裝備等游戲信息均可在此模塊中查詢獲得。
(2)游戲界面
這是本系統(tǒng)中最重要的模塊,用戶在此模塊中進行游戲。用戶通過操作自己的寵物選擇合適的路線并避開各個場景中的障礙物,從而于規(guī)定的時間內(nèi)到達指定的地點來完成任務(wù)過關(guān)升級。該模塊中則要對路線、游戲計時和關(guān)卡進行設(shè)計。
(3)游戲設(shè)置界面
此模塊為游戲的設(shè)置界面,用戶可以在此模塊中對游戲進行個人偏好設(shè)置,包括個人角色選擇,游戲難度選擇和對寵物的屬性如外形、裝備等進行設(shè)置。
3 游戲關(guān)鍵技術(shù)及功能實現(xiàn)
3.1 林大校園3D模型制作與三維場景的建立
本游戲是一個基于虛擬現(xiàn)實技術(shù)的三維虛擬酷跑類游戲,因此,3D模型和三維場景的制作是游戲開發(fā)中的一項關(guān)鍵工作。
場景模型有兩個部分:地形和地物。在系統(tǒng)分析設(shè)計時,經(jīng)過研究發(fā)現(xiàn)對于學(xué)校數(shù)據(jù)的采集和把數(shù)據(jù)整合到Unity3d的引擎中形成地形即是系統(tǒng)的研發(fā)難點。由于學(xué)校目前沒有大比例尺地形圖和航空影像等資料,所以無法通過構(gòu)建 DEM 的方法來制作學(xué)校的三維地形。為此,即通過實測校園部分區(qū)域來確保校園中各地物位置的相對準確。地物包括各種建筑物和樹木等,研究主要是通過拍攝照片來獲取紋理、測量點數(shù)據(jù)來得到其外形輪廓、并對一些復(fù)雜的物體進行近景攝影測量的方式來重建其三維模型。
Terrain Editor是Unity3d 引擎內(nèi)置的一個地形編輯工具,其功能十分完善,許多復(fù)雜的地形,開發(fā)人員都可以利用其方便快捷地制作得到。研究中即用其中自帶的各種山形制作工具,依照校園實測數(shù)據(jù)和地形圖設(shè)置適當(dāng)?shù)母叨?,再結(jié)合校園衛(wèi)星圖片和拍攝的校園實景照片來制作紋理,并將其賦予地形就制作出了校園的三維場景。
三維場景中的地物模型,指的是校園內(nèi)的各種建筑和實體,例如:教學(xué)樓、宿舍樓、圖書館和各種雕塑等等,此外還包括各種樹木。地物的3D模型采用 3ds Max 進行制作。以教學(xué)樓為例,各個部分通過旋轉(zhuǎn)、平移、擠壓、縮放等操作,完成教學(xué)樓的幾何建模,再將photoshop中處理過的貼圖賦予模型,執(zhí)行紋理貼圖、并調(diào)節(jié)材質(zhì),就制作成了真實感較強的3D模型。
3.2 酷跑功能的實現(xiàn)
3.2.1 碰撞檢測技術(shù)
在交互式虛擬系統(tǒng)中,現(xiàn)實感是最基本的一項指標,如人物在三維場景行走時,不應(yīng)“穿墻而過”;手抓東西時,不應(yīng)出現(xiàn)“穿透”現(xiàn)象;以及汽車運動時浮在空中或掉到地表下面等都是不正常的。而增加系統(tǒng)現(xiàn)實感的基礎(chǔ)和關(guān)鍵就是碰撞檢測技術(shù)[5]。
碰撞檢測(Collision Detection)也稱為接觸檢測或者干涉檢測,是基于生活中普遍存在的一個事實:不可穿透的兩個對象不能共享相同空間區(qū)域。作為交互式虛擬系統(tǒng)中的關(guān)鍵組成部分,碰撞檢測主要是判斷物體模型之間以及模型和場景之間是否產(chǎn)生了碰撞,給出碰撞的位置和穿刺深度等信息[6]。
碰撞檢測過程大致可為兩步。第一步是初步檢測階段,就是將大多數(shù)明顯不相交的物體進行快速排除;第二步是詳細檢測階段(也稱為精確檢測階段)。某些算法將詳細檢測階段又劃分為兩個子階:一是逐步求精,即在初步檢測的基礎(chǔ)上進一步將檢測的范圍縮??;二是精確求交,即在“逐步求精”完成后,再對所建的模型進行相交測試,精確測試出潛在的相交部位。碰撞檢測算法大體上可以分為基于物體空間的碰撞檢測算法和基于圖像空間的碰撞檢測算法[6]。
在Unity3d 引擎中實現(xiàn)的則是基于包圍盒的空間碰撞檢測算法。
具體來說,包圍盒法的基本思想是使用數(shù)學(xué)中簡單的幾何體來代替現(xiàn)實中復(fù)雜的幾何體,先對其包圍盒進行粗略檢測:只有當(dāng)包圍盒相交時,其包圍的幾何體才可能相交;而當(dāng)包圍盒不相交時,這個幾何體一定不會相交。通過這種方式能排除大量不相交的幾何體及幾何部位,快速找到相交的幾何部位。包圍盒大致分為幾類:沿坐標軸的包圍盒AABB(Axis-Aligned Bounding Boxes),包圍球(Sphere),沿任意方向包圍盒OBB(Oriented Bounding Box),固定方向包圍盒FDH(Fixed Directions Hulls),和一種具有更廣泛意義的k-dop包圍盒[7]。
3.2.2 Unity3d 酷跑功能的實現(xiàn)
要實現(xiàn)三維場景中的酷跑功能,首先要解決虛擬寵物與地面墻面的碰撞檢測問題,避免寵物穿越地面和建筑物。Unity3d 引擎為用戶提供了四種層次包圍盒:BoxCollider包圍盒、SphereCollider包圍盒、MeshCollider包圍盒、WheelCollider包圍盒,在引擎中用綠色實線表示包圍盒的邊框,圖 3 (a)(b)(c)(d)展示了一個小立方體被四種包圍盒環(huán)繞的效果[8]。通過使用不同類型的包圍盒能實現(xiàn)不同精度的碰撞檢測。在游戲中,主要使用 SphereCollider 包圍盒來實現(xiàn)松鼠對象與地面墻面的碰撞,避免了“穿地穿墻而過”。
如上設(shè)計后,將對象放入環(huán)境中,設(shè)置各種屬性,配合時間控制組件,基本就完成了游戲的功能。
(a)BoxCollider包圍盒 (b)SphereCollider包圍盒
(a)BoxCollider box (b)SphereCollider box
(c) MeshCollider 包圍盒 (d) WheelCollider包圍盒
(c) MeshCollider box (d) WheelCollider box
圖3 小立方體使用不同包圍盒
Fig.3 Cube?object using?different?bounding box
4 結(jié)束語
本項目的研究與實現(xiàn)一方面以東北林業(yè)大學(xué)為虛擬背景,以林大松鼠為主體,具有東林特色,宣傳母校,弘揚熱愛自然、熱愛動物的思想精神,消除用戶緊張焦躁的負面情緒,即為用戶提供了一定的休閑消遣;另一方面,本軟件利用Unity3d工具完成,使用集成的腳本文件,大大縮短了系統(tǒng)開發(fā)周期,降低了開發(fā)成本,且無需綁定硬件,支持發(fā)布到多種操作平臺,以便滿足多平臺的需求。
參考文獻:
[1] 劉晉鋼,劉衛(wèi)斌,劉晉霞. Kinect與Unity3D數(shù)據(jù)整合技術(shù)在體感游戲中的應(yīng)用研究[J].山西:電腦開發(fā)與應(yīng)用,2014,27(11):7-14.
[2] 況揚. 基于Unity 3D的景點漫游系統(tǒng)制作[J].科技廣場,2014(4):47-50.
[3] 孫延棟,姜銘重. 基于ArcInfo平臺的配電網(wǎng)GIS技術(shù)應(yīng)用開發(fā)[J].科技創(chuàng)新與應(yīng)用,2012(26):23.
[4] 劉靜. 基于Virtools的虛擬現(xiàn)實導(dǎo)游培訓(xùn)系統(tǒng)的研究與實現(xiàn)[D].西安:西安科技大學(xué), 2012.
[5] 馮善達,劉怡昕. 虛擬場景中碰撞檢測實用算法研究[J].計算機仿真,2004,21(6):100-112.
[6] 于復(fù)勝,李少華,冷怡山,宋曉旭. 碰撞檢測算法研究[J].軟件導(dǎo)刊,2012,11(2):35-36.
[7] 陳學(xué)文,丑武勝,劉靜華,王田苗. 基于包圍盒的碰撞檢測算法研究[J].計算機工程與應(yīng)用,2005(5):46-36.
[8] 蔡翊. 基于Unity3d的金絲峽地質(zhì)公園虛擬旅游系統(tǒng)的研究與實現(xiàn)[D].西安:西安科技大學(xué), 2012.
?基金項目:2014年度東北林業(yè)大學(xué)信息與計算機工程學(xué)院院級大學(xué)生創(chuàng)新項目。
作者簡介:劉冬梅(1993-),女,重慶合川人,本科生,主要研究方向: 3D虛擬技術(shù);
宋 平(1993-),男,黑龍江哈爾濱人,本科生,主要研究方向: 3D虛擬技術(shù);
鄧英芝(1993-),女,湖南株洲人,本科生,主要研究方向: 3D虛擬技術(shù);
馬書超(1994-),男,青海西寧人,本科生,主要研究方向: 3D虛擬技術(shù);
張錫英(1971-),女,黑龍江哈爾濱人,碩士,副教授,碩士生導(dǎo)師,主要研究方向:軟件服務(wù)與工程。