基于校园实景的虚拟现实导航系统设计
——以闽西职业技术学院为例
2024-01-18陈淑玲
陈淑玲
(闽西职业技术学院,福建 龙岩 364021)
随着校园信息化和“数字校园”“智慧校园”建设的全面推进,校园精细化管理及校园文化推广迫切需要精准的、真实的三维校园地理信息。目前盛行的导航系统如高德地图、百度地图等,更新速度快,定位精度已达到1m级,但这些导航系统只提供平面化的地理信息,不具备立体空间的信息,更无法根据用户的行为实时反馈并动态呈现3D 画面。因此学校需要一个轻量级的针对性强的三维校园导航APP,通过移动端+VR 端即可游览校园。基于校园实景的虚拟现实导航系统根据校园的真实环境,使用三维可视化技术创建三维仿真建筑模型,利用虚拟现实技术构建拟态环境来模拟校园场景,设置人与拟态校园的交互行为,立体化展示校园自然风光和人文文化,是数字校园建设的重要组成部分[1-2]。
1 创建三维模型
构建校园拟态环境首要是创建校园的三维场景模型。三维模型是构建虚拟空间的基础,是整个虚拟现实导航系统具有仿真效果的关键,是用户能否沉浸于拟态校园的决定性因素。其主要任务是使用三维软件3Ds Max构建校园内的楼宇、道路、文化长廊、标志性建筑等模型,工作量占整个系统实施的70%以上;再直接利用虚拟引擎Unity 3D Object 对象和标准资源包Standard Assets 中的素材创建校园的地形、湖泊、植被等,在保障虚拟仿真效果的同时降低建模工作的强度和复杂度。构建校园三维场景模型的主要流程是:测绘校园→构建模型→检测和优化模型→材质贴图→烘焙渲染。
1.1 前期准备
测绘校园作为三维建模的前期准备工作,为构建模型提供丰富的数据依据和强有力的效果对比,主要包括勘测校园、绘制CAD 平面图和立面图。利用各种测量工具(如激光雷达、摄像机等)勘察校园场景布局,收集处理勘测数据,利用收集到的信息按1:100 比例绘制建筑物草图和校园布局图,并采集各视角的校园景观图作为参照,使构建的模型更接近于实物,提高系统的仿真效果。
1.2 创建模型
素材收集好后,选择最优方法快速有效地构建单体模型。模型可以逐一载入到Unity 3D 中整合,也可以导入到同一个三维场景中整合,且以对象为单位进行单体建模可以提高建模过程中视图的透视度,便于增加细节和部分重建,降低系统功耗和建模操作的复杂度,更易于后续设置人与模型间的交互。但建模中使用的单位和比例必须一致;将CAD 图导入Max 中作为参照图,提取建筑物的几何特征并分析其拓扑结构,使用Edit Poly、Edit Mesh 等建模技术从点、线、面着手创建模型,布线清晰,尽量使用四边面并控制模型的点面数,实现二维图映射到三维立体模型[3-4];建模过程中严格按照物体的实际缩放比例构建,避免模型变型,增强拟态场景的沉浸感和代入感[5]。
1.3 优化模型
虚拟现实在仿真过程中强调实时性和交互性[1]。此系统须具备高响应能力,应从以下方面规范优化模型:尽量控制模型的点面数,删除没有外露的元素,如看不见的底面、重面,删除对模型结构不起作用的点线面,同时合并断开点、移除孤立点;可以复制的模型尽量复制,具有对称结构的模型充分利用镜像功能制作,模型的点与点之间要对齐,点之间不能有缝隙或错位,避免漫游场景时出现闪面、破面或交叉面;对于有重叠结构且边缘无需用贴图细致表现的模型,采取落搭的方式制作;模型网格应尽量是分布均匀的四边面或三边面[6],为赋予模型材质贴图奠定基础,模型导入引擎中也会自动转化为规整三边面,减少渲染过程产生的锯齿和闪烁;模型的复杂构造尽量由贴图补充展现,使用渲染到纹理、渲染曲面贴图、渲染法线贴图等烘焙方法代替建模方式实现;模型的命名要规范,不使用中文,也不重名,避免模型导入到Unity 3D引擎时出错。
1.4 材质贴图
良好的材质可以弥补模型先天的粗糙与不足,使用纹理映射技术为模型赋予贴图,可以增强模型细节特征和仿真效果。Unity 3D不支持3Ds Max 中的大部分材质类型,可以支持Standard 和Multi/Sub-Object 材质中的Diffuse Color 以及Self-illumination贴图通道[7],但只支持Bitmap 贴图类型。光照不同时材质所呈现的特征和纹理也不尽相同。为了避免场景中光传递、光线跟踪等计算消耗大量资源,模型外形的色相、饱和度、亮度直接由Bitmap 贴图呈现,从而实现拟态场景中光线与模型材质的和谐统一。首先,使用“UVW 展开”修改器或展UV 专用软件如Unfold3D、UVLayout等将模型的曲面展为平面,将展好的UV 渲染成UVW 模板,保存为.tga 格式或.png格式的图像;其次,将UV 模板图导入绘图软件Photoshop 或Illustrator 中,根据需求绘制材质贴图;最后,将绘制好的贴图通过材质位图通道赋给模型,实现二维平面精准映射到三维模型的立体表面上。另外,材质和贴图的命名应该与模型对应,贴图文件的尺寸必须是2n,从呈现的效果和占用的资源综合考虑,贴图尺寸通常不超过1024 px×1024 px[7],如果有特殊需求可以调整尺寸。展UV 时,必须遵守以下规则:UV 区块应该尽量分成较大的区块;尽量减少UV贴图的变形、扭曲和拉伸,可以使用棋盘格检测;UV 必须在有效方形区域内,充分利用空间合理布局,不可重叠;必须保持UV区块间比例大小。
2 虚拟现实导航系统
基于校园实景的虚拟现实导航系统的开发流程见图1,每个流程环环相扣、紧密衔接。项目实施过程中将流程拆分成“积木”,对每个“积木”进行制作整理。
图1 基于校园实景的虚拟现实导航系统的开发流程
2.1 3Ds Max与Unity 3D衔接
Unity 3D 中使用3Ds Max 构建的模型,须注意以下几方面:确保模型的轴心与中心一致,物体模型的轴心不一定在自身的中心,导出前需将模型的轴心与中心对齐重合;确保模型的贴图可用,Max 中构建好的模型以Autodesk(*.FBX)格式导出,在导出设置中“嵌入媒体”,所使用的贴图将随模型一并导出,再将导出的FBX 文件存放于该Unity 项目下的Assets 文件夹中,载入模型时将自动生成贴图文件,模型也自动显示贴图材质;导出模型时需修正坐标,确保Unity 3D加载模型时坐标正确,Unity 3D采用标准的笛卡尔坐标系,是左手坐标系,而Max 采用右手坐标系,导出模型时必须将轴转化的向上轴改为“Y-up”[8]。
2.2 导航系统的设计实施
创建Unity 3D 项目,导入SDK,添加Terrain 对象根据校园的地理信息创建地形;加载三维场景模型,模型按实际位置放置,搭建校园的拟态环境,尽可能真实地反映校园环境,包括建筑物的外形、颜色、纹理,道路的路径,树木的位置和形状等。依据模型的形状和刚体特性,为各模型添加不同类型的碰撞体组件,如Box Collider、Mesh Collider 等,在Unity 3D中添加的3D对象自带碰撞体。楼宇的外形结构类似长方体,选择为其添加Box Collider,避免用户漫游场景时发生穿透现象,并添加VR Interactive Item事件,做好人机交互活动的准备工作,见图2。
图2 Box Collider的设置
在工程项目中,导入Standard Assets、Enviromment资源包,直接使用资源包中花草树木的素材搭建校园景观。花草树木具有自然的光影且随风摇摆,在构建景观时一定要控制植被的数量,以免占用太多资源影响实时效果的呈现;运用资源包中的Water素材构建波光粼粼的湖泊,并加载Bridge 中的模型补充完善拟态环境;再导入Sky.unitypackage 天空素材包,设置天空背景并调整灯光,使光影与日照协调,拟态场景符合现实景观;然后确保将与用户发生交互行为的所有模型添加碰撞体组件。同时,创建并利用摄像机StartCamera 设置导航起始点,规划设计导航路线;使用SendMessage函数提供指引和指示功能,显示路线提示信息及楼宇功能信息等,宣传校园人文文化;通过Button 控件组收集用户的动态反馈信息,选择触发不同事件。
用户与导航系统的交互主要通过用户的注视行为模拟实现。导航系统利用虚拟现实设备实时获取用户眼睛的聚焦点,以确定用户在拟态场景中的位置和移动轨迹,同时利用捕获到的碰撞检测信息触发交互事件,实现用户与系统的交互,实时切换场景中的3D画面,完成交互细节。用户与导航系统的交互流程见图3。
图3 用户与导航系统的交互流程
用户与导航系统的交互实现如下:创建VR Eye Raycaster、VR Input 和VR Interactive Item 类处理用户与系统的交互事件[9]。将VR Eye Raycaster 挂在主摄像机StartCamera(见图4),每次调用Update()时向用户凝视的方向发射一条射线,再调用Physics.Raycast()检测射线是否击中场景中的某个碰撞体[10]。当射线击中碰撞对象时,在被击中的对象上查找VR Interactive Item(Script)控件,判断用户聚焦的目标对象,显示提示信息,根据用户的反馈动作触发后继的响应事件;否则根据用户聚集点的靠近,沿导航路线模拟用户移动,实时动态呈示拟态画面,实现导向功能。
图4 摄像机上的主要控件
这系统在PC端进行功能开发,测试通过后再移至VR 端。VR Input 控件在直接注册监听事件的同时,需能够兼容动作发生源,可以是Gear VR上输入触发的click 事件、taps 类事件和swipes 事件[11],也可以是使用Oculus Rift 时专为PC 端准备的鼠标键盘的输入事件。
2.3 运行调试
完善虚拟现实导航系统设计,运行测试,修正错误,使整个系统运行具有低时延、高仿真的效果,具备人性化操作功能,最后导出APK文件。以Android应用平台为例,安装Android Build Support 和Java SDK、Android SDK Tools 插件搭建发布平台,将导航系统打包成APK 安装包,安装运行于手机终端,再佩戴上VR 眼镜测试体验效果,发现问题和不足,及时调试并改进。
3 虚拟现实导航系统运行效果
以闽西职业技术学院为例,虚拟现实导航系统参照校园的平面图,利用三维可视化建模技术和虚拟现实技术设计实施整个系统,系统构建了与校园实景几乎一致的拟态环境,在拟态校园里花草树木摇曳生姿、湖面波光粼粼,完全符合自然景观。用户佩戴VR 眼镜即可突破时空的限制以第一人称的视角沉浸式地游走于校园,达到身临其境的体验效果。虚拟现实导航系统以学校西门为导向起点,通过用户眼睛的凝视行为指引导航系统沿规划路线呈现动态3D 画面,展现校园立体风光;当系统捕捉检测到用户驻足注视某个建筑物的行为时,系统提供此建筑物的关键信息,激发用户深入了解的兴趣,利于宣传学校的人文景观和办学理念。