刘亿斯 梁灏 黄章菡 黄岳田 赵生平
【摘 要】社会、技术和智能手机的发展,虚拟场景漫游也作为虚拟现实技术的一个想当重要的领域,有着很大的应用价值和发展空间。旅游景点提供给游客的信息一般是印刷大量的宣传手册或者是指导手册,耗费了大量的人力、物力和财力,这不仅仅照成了资源的浪费,人力的损失,也照成了环境的污染。把虚拟漫游技术与近年来发展得正火热的Android相结合,以桂林李宗仁官邸为基础,将这个场景进行数字化并且移植到手机上。系统通过计算机图形技术,将现实的场景保证一定视觉效果的时候同时进行可视化三维建模设计,达到一定的视觉效果的同时,构建一个手机上虚拟的场景。
【关键词】虚拟现实;虚拟场景漫游;Android;Unity3d
1 课题的研究背景以及意义
人们的生活水平不断的提高,人们也越来越愿意去花时间去外面看看,然而在世界上,旅游的景点这么多,我们不可能把每一个景点都去看一遍,同时随着智能手机和网络的发展,我们所需要的东西似乎随时都能够找到,而且交互式虚拟现实技术也在网络上随着应用得到发展。所以,结合这个情况,我们就应用Unity3d的虚拟现实技术和三维建模技术将一个博物馆的场景数字化后移植手机上,这样,某些我们去不到的场景就能够在手机上体验了。
通过虚拟现实的技术,我们可以把远处的场景或者是已经设计好但在现实世界中并不存在的东西让用户提前体验,这在设计与规划、虚拟游览、购物、交互式娱乐等方面都会有重大的经济效益。
2 课题的研究内容
在该课题中,主要的内容是以一个场景为蓝本,实现一个场景的虚拟化,在保证环境的真实性的情况下,适当提高艺术性,让观众能够较为直观的了解场景的结构。开发过程中虚拟现实技术主要使用3dsmax建模软件和Unity3d开发工具,同时还对android方面上的功能进行修改。其中3dsmax主要用于建筑、设备、设施等场景的绘制,Unity3d用于对场景的整合,同时也负责添加脚本以和用户进行交互。
为了能够让用户更加全面的了解这个场景,我们还把实地考察的照片和获取的信息放到我们已经建好的网站上面,这个网站我们主要是使用Php语言支持的yii framework、前端用bootstarp和jquery、数据库是MySQL、服务器软件是Apache。同时把图片文字的数据保存到我们的数据库中,方便后期能够对网站内容进行更新。
3 概要设计
3.1 Unity3D
本团队在项目之初进行了实地考察、取景工作获取了大量的相关照片。接着使用3dsmax建模工具根据获取到的照片进行建模工作,同时设置好贴图并且导出到Unity3d中。
导入到Unity3d中后,根据实际的情况以及手机性能上的限制,植被系统不宜设置过多,否者会由于面片数过多而会出现卡顿的情况。根据多次测试,在测试平台高通骁龙S800的手机上(手机为LG G2与nexus 5),Tris在1.5m左右、Verts在2.1m左右,流畅度是可以接受的,同时场景的植被也不至于太少显得过于单一。
3.2 网站功能
根据需求设计网站功能如图所示。管理员模块即用户模块,管理后台登陆用户,可进行添加新管理员和删除管理员;新闻模块,管理和显示博物馆新闻;通知模块,管理和显示博物馆的实时公告;文物模块,管理网站中博物馆展示的文物,以图文并茂的文章向用户展示文物;博物馆简介,对博物馆的简介和背景的管理;资源模块,管理网站文章的资源如图片等。
4 详细设计
4.1 Unity3d
4.1.1 NavMesh组件
在Unity3d中,系统已经内置了一个名为NavMesh的组件,在Navigation面板里面我们可以将系统里面的建筑设置为障碍物,点击Bake后可以在Sense视图中看到相关更改。同时给人物挂上NavMeshAgent以及添加上简单的脚本即可实现自动寻路功能了。(相关API:NavMeshAgent.SetDestination())。
4.1.2 A*算法
而A*算法则是综合了这两个算法的优点,A*算法的核心思想则是在获取到一个新的可行节点时,会将新的这个可行节点与起点判断,同时与终点进行判断,评估这两者代价。当然,下一个节点的来源依然是环绕在当前节点的周围。不同的是在每次主循环时A*算法会评估每个节点的的价值。因此,如何判断每个节点的价值是很重要的,至于如何判断,我们有许多种方法,比如,曼哈顿距离、对角线距离,欧几里得距离。
在Unity3d中,我们可以使用AStarPathFinding插件来实现这个功能,该插件已经为我们封装好了我们所需要的绝大部分的功能。首先,需要给障碍物设置好碰撞体,同时将相关障碍单独分类到新的一层中,我这里设置的层为Obstacles。接着在A*的Gameobject中的设置好相关的参数。最后只要在开始移动的时候使用该插件提供的方法即可移动了(图1)。
4.2 网页
4.2.1 网站基本框架模式
后台的开发使用Yii framework1.0(以下简称Yii)版本。Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,采用MVC的架构模式,开发中过程中遵守Yii的MVC原则,所以网站的整体设计模式是MVC模式。Yii实现了ActiveRecord数据库访问模式,ActiveRecord遵循标准的ORM模型(对象关系映射模型),表映射到记录,记录映射到对象,字段映射到对象属性。项目中的数据库访问基本经过ActiveRecord。
4.2.2 网站内容管理(数据库访问)
网站的内容分为新闻、公告、本馆简介、历史背景和馆藏文物五类,存储在同一个表中,下面把这五类内容统称为文章。进行文章的增删改查时,都通过Article类。Article类继承于Yii的CActiveRecord类,通过Yii提供的接口可以简单的就能实现对数据库的访问。比如,Article::model()->deleteByPk(1)即实现了删除id为1的文章。文章的区别主要在type字段上。
4.2.3 资源管理
CKEditor可以直接插入多媒体等资源到文章中,但是插入资源后,资源就不好管理了。为实现资源的管理,网站中设计了一个资源管理模块用于管理网站中的资源,同时编写了一个CKEditor的插件用于把资源模块的资源插入文章中。
5 该课题的创新点
(1)与原有的博物馆的场景相结合,参考原来博物馆的模型建立,最大化的在移动平台上实现模拟博物馆的模样。
(2)通过Unity3d的mono多平台发布技术,日后能够快速地发布到多个平台上,并且保持不同平台体验的一致性。
(3)在Android平台上,将Unity3d和android技术相结合,实现了分工功能,也即在Unity3d实现模型展示和虚拟漫游功能,在android端实现主要的UI设计和模型介绍。
(4)对原有的博物馆进行的建模工作,并且使用Unity3D建立了一个场景,用户可以在手机上进行博物馆虚拟漫游。这样,用户就不需要到达博物馆就能大概了解到博物馆的内部结构。并且我们也能够结合暴风影音公司开发的暴风魔镜,能够提供更加真实的漫游体验。
【参考文献】
[1]湖光军.三维虚拟校园自动漫游系统的设计与实践[D].山东:山东大学软件学院,2013.
[2]王运.基于手机Android平台的虚拟校园漫游系统的设计与实现[D].北京:北京工业大学软件学院,2013.
[3]王洪.基于虚拟现实的三维漫游技术研究与实践[D].四川:电子科技大学计算机学院,2013.