基于SketchUp 和Unity3D 的虚拟校园漫游系统
2019-04-11陈睿
陈睿
(1.太原理工大学现代科技学院,山西 太原 030024;2.太原理工大学艺术学院,山西 太原 030024)
20 世纪80 年代由美国人拉尼尔提出的虚拟现实技术,巧妙灵活地结合人的视、听、触感官系统及运动行为,在计算机中逼真地模拟出现实世界,将人与计算机融为一体,从而使人置身于真实世界中[1]。这种技术可以真实模拟现实环境,让体验者通过多种感官的结合沉浸于虚拟环境中,同时具有交互性强的特点。
近年来,随着各高校招生规模的不断扩大,建立数字校园可提高大众对学校的认知,国内部分高校纷纷利用此技术模拟校园现状,为社会群众和校园师生提供一个直观、交互性强的交流平台。此外,这也是一种很好的展示校园文化、提高师生生活质量的有效方式;作为远程教育的基础平台,也可为社会带来巨大的经济效益和社会效益。为此,提出了建立虚拟校园的想法。
作为我国在山西省唯一的“211 工程”重点建设大学,太原理工大学也紧跟时代脚步,做好创新工作,建立数字校园建设平台。明向校区,是高新区内所有高校中规模最大的校区,它的建设也将成为学校乃至全省教育发展的重中之重。因此,简单地模拟三维可视化校园环境可在一定程度上满足师生在教学、教务、校园生活等方面的基本需求。本文以太原理工大学明向校区为研究对象,基于SketchUp 和Unity3D开发平台,重点讨论虚拟现实中的关键技术,建立校园的三维模型,实现校内行走状态和飞行状态下的自主漫游。
1 SketchUp 和Unity3D 概述
三维建模阶段采用简单且易上手的Google SketchUp 软件建立校园的立体模型,并利用自带的优化功能减少模型的数据量,提高系统的运行效率[2]。其导出的3D 模型文件可以直接导入功能较为强大的综合型开发引擎Unity3D 中。相比其他制作三维场景的软件而言,该软件支持的文件格式更多,兼容性更强,对于互动性较强的大型场景,更能发挥其优越性,且具有良好的实时交互性,支持多平台发布,在三维游戏、动画、建筑等开发中应用自如[3]。另外,可以与其他大多数的相关程序一同工作。
2 技术路线
本研究借助SketchUp 软件,建立虚拟的三维校园模型,然后基于Unity3D 引擎实现用户与校园的交互。系统的开发主要分为以下三个阶段:①根据学校实际建设情况,获取准确的地形图、各建筑物的准确数据等,进而建立三维模型;②优化单体模型,进行贴图,以便提高物体的真实度,建立完整的校园场景;③基于Unity3D 引擎实现物体的碰撞检测及动态加载,完成校园漫游。
3 场景建立
3.1 收集数据
建立三维模型之前,需要收集的数据内容包括:校园各楼的大概尺寸、二维平面图、实景照片等。这些数据的准确度直接影响着三维建模的真实程度,所以实地采集数据时均采用专业数码相机,尽量减小因拍摄的倾斜度带来的误差。之后,所有的照片都采用图形编辑软件Photoshop 进行处理,以辅助三维建模。
3.2 建立初步模型
使用SketchUp 软件,根据收集到的数据按照“从大到小,从整体到布局”的原则依次建立单个的建筑模型,过程中尽可能地减少多余的面和线。对于结构比较特殊的建筑,需要耐心修改,通过削减面等复杂操作才能完成。
3.3 纹理贴图
使用处理好的照片对物理模型贴图,来提高模型的真实度。对于景观模型(植物、水体等)和人文要素模型(路灯、车辆等),可以在Sketchup 组件库中搜索到,再结合实际要求灵活改动,以实现景观和人文要素的快速表现。对于道路、草坪等的建模,仍在SketchUp 中根据获取的平面图先简单勾勒,再贴上相应的材质。部分模型如图1、图2 所示。
图1 行知楼模型
3.4 建立虚拟场景
在完成所有的单体模型后,需要将这些模型放置在特定的具有交互功能的三维环境中。在SketchUp 中选择文件,导出命令项,然后在导出为fbx 文件对话框中可以看到信息提示:已处理的SketchUp 图元(组、实例、面、材质、纹理),已导出的fbx 图元(面、材质、纹理)个数等信息,这样就成功导出了fbx 文件。之后在Unity3D 中导入fbx 文件,并将模型拖拽到场景中的合适位置,如图3、图4 所示。
图3 东南俯视图
图4 东北俯视图
这个过程容易出现两个问题:一是材质丢失,二是模型比例问题。对于材质,建议一律采用标准材质,并且有统一的命名规范,所有模型中不同的材质不能出现相同的命名,否则会在unity3D 中出现材质替换的问题。在导入fbx 文件前,必须导入贴图,一并放在assets 文件夹下。模型的比例则是要处理好Unity3D 中的默认单位及SketchUp 中的单位换算。在Unity3D 中导入校园地图,再依次按照地图显示的位置导入各个建筑物的模型,并添加其余景观模型和人文要素模型;接下来使用Unity3D 自带的烘焙、渲染等功能调整场景灯光亮度、太阳光晕等自然环境,添加天空盒更增强了场景的立体感和真实感。
4 场景漫游
4.1 碰撞检测
实现三维场景漫游的首要问题是实现虚拟人物与地面、建筑物、景观等的碰撞检测。通俗的说,碰撞检测就是为了解决现实生活中诸如人不能穿过墙,人不能直接从车所在的区域直接穿过等问题,即不同实物在同一三维空间中不能同时占有同一区域,并且不能发生穿透等行为。
作为虚拟现实中的关键技术之一,他的主要作用是要准确判断任意两个实体之间能否穿透及碰撞,并且提供穿透碰撞的精确位置。该平台中实现碰撞检测的方式较灵活,本系统采用了包围盒法。
4.2 动态加载
动态加载物体类主要实现了动态添加物体模型到场景中的功能。实现过程是获取IP 地址,将客户端与服务器进行连接,通过在给定目录下获取所需模型的文件来加载模型,调用add()方法将实物添加到模型数组,以便对不在视角范围的场景进行删除操作。
4.3 实现漫游
本系统采用第一人称主视角的方式进行漫游,给观赏者更强的代入感,如图5、图6 所示。
图5 俯视游览
图6 游览学生公寓
利用平台中存在的FirstPersonController 作为用户的控制对象。在工程面板中显示出该对象由4 个组件组成,分别是Transform、FPSWalker、CharacterController、MouseLook。此外,在Unity3D 中,是以层次关系来组织相关物体的。用户以第一人称视角在校园中进行漫游,按住W、S、A、D键摄像机对应前后左右移动,按住鼠标左键摄像机随鼠标转动方向观察当前位置,按住空格键可以实现跳跃。另外系统中加入了背景音乐,增强了环境的真实感。
5 结论
本项目成功构建了校园场景,实现了虚拟漫游,同时具有良好的沉浸性与交互性,并且利用图像、声音相结合的方式开发整个系统,科学性与趣味性并存,是虚拟现实技术在校园建设中的良好应用。使用当前较为流行的Unity3D 开发平台,引入虚拟现实技术和游戏开发的一些思想,让用户以良好的客户体验方式全面直观地获取校园信息,提高工作学习的效率。