基于Unity3D的“林大的松鼠”App的设计与实现
2015-04-29刘冬梅宋平邓英芝马书超张锡英
刘冬梅 宋平 邓英芝 马书超 张锡英
摘 要:本研究主要是开发一个基于Unity3d的移动终端游戏,以东北林业大学校园景观为背景环境,以林大特色元素——松鼠作为主要对象,采用3ds Max作为建模工具,配合实测数据、照片纹理对林大的部分景点进行三维模拟;以ArcGIS 作为空间数据的处理平台,配合卫星图片,制作成林大的虚拟现实模型,最终结合Unity3d制作的松鼠模型开发出一个三维仿真效果好,具备登录、角色选择、路线选择、酷跑升级等特性的趣味游戏,并简要阐述App设计与实现的方法。
关键词: 虚拟现实;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 引 言
隨着游戏的发展,高效的开发工具成为大众的企盼与期望。拥有高效率的开发模块和强大的渲染效果以及出色的可扩展能力的Unity3d即已赢得了开发人员的亲睐,并由此成为2012 年最受欢迎的游戏开发引擎,特别是其通过使用基于脚本的开发方式来进行三维场景的编辑和交互处理,使得整体流程既简单又方便[1]。其实Unity 3d并非新近推出的,在国内外早已广泛使用该引擎进行网页游戏的开发。国内首款基于Unity 3d引擎研发的三国题材网游《将魂》,自2009年初就进入了研发历程,到现在已经对外开展了测试;在国外应用Unity3d引擎方面,俄国Nival公司正在研发的新型态Dota游戏《Prine world》和欧美公司的3D魔幻MMORPG网游,都赢得了广泛的关注与瞩目。而针对Unity3d引擎的研发技术,九众互动CEO朱传靖也曾提过,该引擎基于特定的技术架构,实现了实时生成查看的功能,易用性高,更简化了开发的流程。但是在手机App即将成为游戏市场主流的今天,国内还未见很多成功使用 Unity3d技术开发跨平台手机应用的例子,尽管已然涌现了诸如《神庙逃亡2》,《谍影虫虫》,《咖啡物语》等众多优秀的跨平台应用,但是各大公司也仅仅是对已成型的手机应用进行部分代码的重用以做到跨平台的效果。这种开发方法效率低下,不能保证实时更新,不仅浪费了大量的人力物力资源,还无法覆盖所有的市场,比如目前正在初显端倪的Windows Phone手机生态圈,虽然占有率不高,但是发展却很快。如果不是经济实力强劲的公司,开发的软件可能只会在安卓和IOS设备上运行,这样就限制了手机应用市场的发展,也在无形之中加剧了安卓与IOS的垄断现状。目前Unity3d已经更新到了Unity5版本,功能迹近趋于完整,性能也随之趋于稳定,所以,推广使用Unity3d是广大手机App开发商以及Unity公司所面临的一个难题。
本项目基于Unity3d引擎创建一个以东北林业大学校园景观为模型的3D仿真环境,并在此基础上开发一个以林大松鼠为主要形象的3D移动终端休闲类游戏。游戏里松鼠通过将林大作为背景环境而在规定的时间内从指定地点酷跑到另一个指定的地点来提升等级,虽无路线规定,但难度随着等级的提升而增大。除此之外,本项目加入了林大校园特色元素:松鼠,除了通过游戏来增进人们对小动物的关心和爱护之外,还让用户熟悉了林大地图,虚拟参观校园景色,使人们可以通过游戏了解我国面积最大的大学的人文特色。
1 系统开发平台简介
引擎的选择对于一个游戏是十分重要的。本App采用Unity3d引擎作为开发平台来实现三维场景的搭建、整合,采用ArcGIS平台作为地理空间数据的处理平台,采用SQLite数据库作为数据的组织和管理工具,采用C#为开发语言,实现游戏功能。
Unity3d是一个全面整合的专业游戏引擎。其最大特性是出色的跨平台性,用Unity3d制作的游戏软件可以发布在Android、IOS、Windows Phone、PC 、Mac以及一些游戏机平台上。Unity3d 中整合了如地形创建工具、碰撞检测和灯光渲染组件、粒子系统、物理引擎、常用脚本以及设置图像画面的后处理方法等丰富的开发资源,除此之外,还在Mono Behavior这个庞大的类库中为开发者定义了各种实用的方法,从而为功能开发时提供了更大方便[2]。
由于ArcGIS 对地理空间数据有着良好的支持,且针对不同类型的地理数据有较强的编辑、分析功能,因此本软件采用ArcGIS下的ArcInfo[3]作为已有的东北林业大学地理数据的处理平台,以此来实现地图数据的分析、处理、三维场景漫游和三维矢量与栅格数据的交互。
针对跨平台运行在移动端的特点,本游戏采用 SQLite 作为数据库平台。这是一款支持跨平台的轻型的数据库,占用资源非常之低,若以其作为属性数據的管理工具,将更加利于游戏性能的充分发挥。
2 游戏总体设计
2.1游戏架构设计
游戏整体的架构如图 1所示,可以分为三部分,即数据层、逻辑层及应用层(或称为用户表现层、界面层)。
按类型的不同,在数据层中,可将数据分为属性数据和空间数据两种。其中,前者主要包括林大校园和宠物的各种描述信息,例如建筑信息、路线信息、宠物属性信息等;以及各种图片,主要包括校园实景照片等。后者主要指林大校园地形数据和 GoogleEarth 卫星图片数据。
在 Unity3d引擎中直接编写脚本代码就可以控制实现游戏的业务逻辑。脚本有以下几类:逻辑控制脚本,如计时操作、升级判断和对数据库的操作等;行为控制脚本,如控制宠物前进方向的选择;UI 控制脚本和画面优化脚本。
界面层是用户与软件之间交互的接口,在游戏设计中使之与逻辑层分离,不仅为软件功能的修改和扩充提供了方便,也在相当程度上提升了代码的重用性[4]。
2.2 游戏功能概述
基于上述游戏开发需求,研究中将该游戏分成3个模块,分别是用户个人界面,游戏界面以及游戏设置界面。据此可得本系统功能模块设计如图2所示。
图1 游戏架构设计 图2 游戏功能模块图
Fig.l Game architecture design Fig.2 Game function block diagram
各个模块的主要功能描述如下:
(1)用户个人界面
此模块分为用户登录/注册和用户信息两个子模块。用户登录/注册模块为游戏的入口,用户要进行游戏之前首先要进行登录,未曾注册过的游戏用户可以用邮箱或手机号进行注册。用户信息模块即为用户查看修改个人信息,如用户名、密码、邮箱及手机号等所用的模块,此外用户的已过关卡、游戏等级、经验、金币、成就、宠物的属性、装备等游戏信息均可在此模块中查询获得。
(2)游戏界面
这是本系统中最重要的模块,用户在此模块中进行游戏。用户通过操作自己的宠物选择合适的路线并避开各个场景中的障碍物,从而于规定的时间内到达指定的地点来完成任务过关升级。该模块中则要对路线、游戏计时和关卡进行设计。
(3)游戏设置界面
此模块为游戏的设置界面,用户可以在此模块中对游戏进行个人偏好设置,包括个人角色选择,游戏难度选择和对宠物的属性如外形、装备等进行设置。
3 游戏关键技术及功能实现
3.1 林大校园3D模型制作与三维场景的建立
本游戏是一个基于虚拟现实技术的三维虚拟酷跑类游戏,因此,3D模型和三维场景的制作是游戏开发中的一项关键工作。
场景模型有两个部分:地形和地物。在系统分析设计时,经过研究发现对于学校数据的采集和把数据整合到Unity3d的引擎中形成地形即是系统的研发难点。由于学校目前没有大比例尺地形图和航空影像等资料,所以无法通过构建 DEM 的方法来制作学校的三维地形。为此,即通过实测校园部分区域来确保校园中各地物位置的相对准确。地物包括各种建筑物和树木等,研究主要是通过拍摄照片来获取纹理、测量点数据来得到其外形轮廓、并对一些复杂的物体进行近景摄影测量的方式来重建其三维模型。
Terrain Editor是Unity3d 引擎内置的一个地形编辑工具,其功能十分完善,许多复杂的地形,开发人员都可以利用其方便快捷地制作得到。研究中即用其中自带的各种山形制作工具,依照校园实测数据和地形图设置适当的高度,再结合校园卫星图片和拍摄的校园实景照片来制作纹理,并将其赋予地形就制作出了校园的三维场景。
三维场景中的地物模型,指的是校园内的各种建筑和实体,例如:教学楼、宿舍楼、图书馆和各种雕塑等等,此外还包括各种树木。地物的3D模型采用 3ds Max 进行制作。以教学楼为例,各个部分通过旋转、平移、挤压、缩放等操作,完成教学楼的几何建模,再将photoshop中处理过的贴图赋予模型,执行纹理贴图、并调节材质,就制作成了真实感较强的3D模型。
3.2 酷跑功能的实现
3.2.1 碰撞检测技术
在交互式虚拟系统中,现实感是最基本的一项指标,如人物在三维场景行走时,不应“穿墙而过”;手抓东西时,不应出现“穿透”现象;以及汽车运动时浮在空中或掉到地表下面等都是不正常的。而增加系统现实感的基础和关键就是碰撞检测技术[5]。
碰撞检测(Collision Detection)也称为接触检测或者干涉检测,是基于生活中普遍存在的一个事实:不可穿透的两个对象不能共享相同空间区域。作为交互式虚拟系统中的关键组成部分,碰撞检测主要是判断物体模型之间以及模型和场景之间是否产生了碰撞,给出碰撞的位置和穿刺深度等信息[6]。
碰撞检测过程大致可为两步。第一步是初步检测阶段,就是将大多数明显不相交的物体进行快速排除;第二步是详细检测阶段(也称为精确检测阶段)。某些算法将详细检测阶段又划分为两个子阶:一是逐步求精,即在初步检测的基础上进一步将检测的范围缩小;二是精确求交,即在“逐步求精”完成后,再对所建的模型进行相交测试,精确测试出潜在的相交部位。碰撞检测算法大体上可以分为基于物体空间的碰撞检测算法和基于图像空间的碰撞检测算法[6]。
在Unity3d 引擎中实现的则是基于包围盒的空间碰撞检测算法。
具体来说,包围盒法的基本思想是使用数学中简单的几何体来代替现实中复杂的几何体,先对其包围盒进行粗略检测:只有当包围盒相交时,其包围的几何体才可能相交;而当包围盒不相交时,这个几何体一定不会相交。通过这种方式能排除大量不相交的几何体及几何部位,快速找到相交的几何部位。包围盒大致分为几类:沿坐标轴的包围盒AABB(Axis-Aligned Bounding Boxes),包圍球(Sphere),沿任意方向包围盒OBB(Oriented Bounding Box),固定方向包围盒FDH(Fixed Directions Hulls),和一种具有更广泛意义的k-dop包围盒[7]。
3.2.2 Unity3d 酷跑功能的实现
要实现三维场景中的酷跑功能,首先要解决虚拟宠物与地面墙面的碰撞检测问题,避免宠物穿越地面和建筑物。Unity3d 引擎为用户提供了四种层次包围盒:BoxCollider包围盒、SphereCollider包围盒、MeshCollider包围盒、WheelCollider包围盒,在引擎中用绿色实线表示包围盒的边框,图 3 (a)(b)(c)(d)展示了一个小立方体被四种包围盒环绕的效果[8]。通过使用不同类型的包围盒能实现不同精度的碰撞检测。在游戏中,主要使用 SphereCollider 包围盒来实现松鼠对象与地面墙面的碰撞,避免了“穿地穿墙而过”。
如上设计后,将对象放入环境中,设置各种属性,配合时间控制组件,基本就完成了游戏的功能。
(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 结束语
本项目的研究与实现一方面以东北林业大学为虚拟背景,以林大松鼠为主体,具有东林特色,宣传母校,弘扬热爱自然、热爱动物的思想精神,消除用户紧张焦躁的负面情绪,即为用户提供了一定的休闲消遣;另一方面,本软件利用Unity3d工具完成,使用集成的脚本文件,大大缩短了系统开发周期,降低了开发成本,且无需绑定硬件,支持发布到多种操作平台,以便满足多平台的需求。
参考文献:
[1] 刘晋钢,刘卫斌,刘晋霞. Kinect与Unity3D数据整合技术在体感游戏中的应用研究[J].山西:电脑开发与应用,2014,27(11):7-14.
[2] 况扬. 基于Unity 3D的景点漫游系统制作[J].科技广场,2014(4):47-50.
[3] 孙延栋,姜铭重. 基于ArcInfo平台的配电网GIS技术应用开发[J].科技创新与应用,2012(26):23.
[4] 刘静. 基于Virtools的虚拟现实导游培训系统的研究与实现[D].西安:西安科技大学, 2012.
[5] 冯善达,刘怡昕. 虚拟场景中碰撞检测实用算法研究[J].计算机仿真,2004,21(6):100-112.
[6] 于复胜,李少华,冷怡山,宋晓旭. 碰撞检测算法研究[J].软件导刊,2012,11(2):35-36.
[7] 陈学文,丑武胜,刘静华,王田苗. 基于包围盒的碰撞检测算法研究[J].计算机工程与应用,2005(5):46-36.
[8] 蔡翊. 基于Unity3d的金丝峡地质公园虚拟旅游系统的研究与实现[D].西安:西安科技大学, 2012.
?基金项目:2014年度东北林业大学信息与计算机工程学院院级大学生创新项目。
作者简介:刘冬梅(1993-),女,重庆合川人,本科生,主要研究方向: 3D虚拟技术;
宋 平(1993-),男,黑龙江哈尔滨人,本科生,主要研究方向: 3D虚拟技术;
邓英芝(1993-),女,湖南株洲人,本科生,主要研究方向: 3D虚拟技术;
马书超(1994-),男,青海西宁人,本科生,主要研究方向: 3D虚拟技术;
张锡英(1971-),女,黑龙江哈尔滨人,硕士,副教授,硕士生导师,主要研究方向:软件服务与工程。