闫兴亚王馨梅魏梦婕
(1.西安邮电大学数字艺术学院 西安 710121)(2.西安邮电大学计算机学院 西安 710121)
虚拟现实[1](VirtualReality,VR)也称灵境技术或人工环境,是在计算机系统及传感器技术模拟的基础上生成可进行交互、相互影响的数字化环境,实现的是一种崭新的人机交互状态,通过对虚拟世界中的物体进行操作,参与其中的事件,并同时提供视、听、触觉等直观而又真实的感受和体验。随着近些年来虚拟现实技术的快速发展,人们将虚拟现实应用于很多领域,如建筑、医疗、教育等等。在应用于教育上时,虚拟现实对使用者的学习具有巨大的辅助和促进作用[2]。首先,虚拟现实提高了知识呈现的情境性与直观性;其次,它可以为使用者提供丰富多样的个性化学习环境,践行“因材施教”的教育理念;再次,它可以融合游戏化的特征,为使用者提供主动探索的机会,提高使用者学习的内在动机。
虚拟现实技术较早被欧美的一些国家应用于教育——自20世纪80年代以来,美国国立医学图书馆进行了人体解剖图像数字化研究、西班牙大学开发了虚拟电子仪器工作平台、新加坡大学开发了远程示波器、德国汉诺威大学建立了虚拟自动化实验室、意大利帕瓦多大学建立了虚拟教育实验室、澳大利亚和新西兰于2009年合作成立的虚拟现实工作组和美国林登实验室的Second Life项目等[2]。VR被NMC的《地平线报告:2016高等教育版》认为是未来2~3年解决深度学习矛盾的关键技术[3]。VR能适应学习媒体的情景化及自然交互的需求,定制与现实社会类似的环境,带给学习者更多直观的、过去很难实现的学习体验。
基于此,本文采用3DMax作为建模工具,选用Unity3D游戏引擎为开发平台,使用HTCVive作为输出设备,设计、开发了基于虚拟现实的丝绸之路教学系统,并且探讨三维场景建模及交互设计中的关键技术。
虚拟现实丝绸之路交互系统的开发遵照软件开发流程,可分为两大阶段:第一阶段是分析系统模块与对素材的收集整理,构建丝绸之路相关的三维模型,主要是利用三维建模软件3DMax和图片编辑软件PhotoShop,完成的模型以FBX格式导入到Unity工程中。第二阶段包括两方面:一是搭建场景,其主要工作为搭建丝绸之路涉及沿线的城市地理位置分布、周围环境、碰撞检测等。二是在虚拟三维场景中实现用户与环境之间的交互,主要工作是采用C#语言编写交互脚本将静态的三维模型与各模块连接起来。系统开发的详细流程如图1所示。
虚拟丝绸之路的设计目标是给用户提供一个丝绸之路仿真环境,并让用户与环境之间进行交互,从而达到用户对知识的理解和掌握。虚拟丝绸之路的设计如下。
用户通过HTC Vive设备来体验该教学系统。HTC Vive是一款虚拟现实头戴式显示器,它能通过三个部分来给用户提供沉浸式体验:一个头显、两个手柄和一个在空降内同时追踪头显与手柄的定位系统(Lighthouse)。考虑到硬件和软件设备的流畅,其场景不易过大,本文将丝绸之路划分为六个子场景。
图1 系统开发流程
丝绸之路总路线展示模块。总路线场景三维地展示了丝绸之路的沿线城市的走向及古今城市名称,通过矢量坐标来计算出城市间相对位置,尽量接近现实,让用户对丝绸之路走向有一定认知。
城市漫游模块。用户通过佩戴HTC Vive设备,可以在现实空间里随意走动游览对应着在虚拟场景中的漫游,或者用手柄来直接到达指定区域。
城市资料展示模块。将丝绸之路沿线重点城市的相关介绍展示给用户,配以语音、文字解说,使用户可以迅速地了解城市的人文地理信息。
隐形性评估模块。该教学系统在后台一直隐形性地记录用户各种行为数据到日志中,并将这些数据通过贝叶斯网络进行处理分析,不断得出用户的一个各种能力的评估。
丝绸之路虚拟交互系统建立的关键是模型的建立,模型能够直观地影响系统整个的仿真效果。丝绸之路模型主要包括地形模型、建筑模型和环境模型。首先深入了解丝绸之路沿线各城市所处地形,然后按照布局进行建模。地形模型可利用Unity3D引擎中的Terrain和Plane来生成地表对象。建筑模型采用3DMax 2010作为建模工具,将外部模型导入其中,对于建筑上一些表面的细节可以采用纹理映射的办法,使用纹理图片代替复杂模型。环境模型也就是植被的相关模型,考虑到当模型中面数数目超过系统计算能力时,在场景漫游时无法及时完成帧处理而破坏了场景变换的平滑性从而出现的卡顿问题,应减少模型网格中的三角形面数。建立完模型后导出为.fbx文件,再导入到Unity项目里的Project文件下。
由于该系统包含许多功能和模型,若只在一个场景中既无法划分功能模块又会增加系统的执行时间,为此,采用多场景模式,并对每个子场景单独建模。这样降低了各个场景的复杂度,提高了渲染速度。在这种多场景模式下,通过用户的不同选择来载入不同的子场景,减少了系统载入的时间,让用户的体验感更好。本系统包括的主场景有丝绸之路总路线展示场景、城市漫游场景、城市资料展示场景,由于丝绸沿线城市众多,因此只选择靠近起点(西安)的三个主要城市,所以共有七个子场景。
以Unity3D引擎为开发核心,使用C#语言编写交互脚本实现用户在HTCVive设备上与环境之间的交互作用。本系统的交互主要包括城市漫游和场景链接。
3.3.1 城市漫游
城市内漫游,是用户以第一视角进行参观游览,通过行走在划定范围内的区域或利用手柄进行瞬移来到达比游戏区域大的环境。
为了使用户佩戴HTC Vive摄像头与Unity3D相关联,需在Hierarchy面板中删除原有Camera,增加CameraRig和SteamVR,这样用户就可以在HTC Vive设备上看到虚拟场景。点击CameraRig在Inspector面板中可以看到Steam_VR_Play Area脚本,这是用来划定可移动范围的。
由于用户不能走出该划定范围,因此可以行走在较近范围,而对于较远的区域,可以使用Unity3D中生成的导航网格作为用户传送边界,对场景中任意对象添加Vive Nav Mesh组件,并在Inspector面板点击Update Navmesh Data按钮,从而在更新场景时用新Nav Mesh烘焙Vive Nav Mesh组件。在用手柄进行瞬移时,利用贝塞尔曲线来选择瞬移的目的地,用户通过手柄举起的角度来选择目的地的距离从而进行瞬移。
3.3.2 场景链接
该系统由七个子场景组成,用户可以通过场景之间的链接来选择场景。该系统有两种场景链接方式:一是用户通过到达特殊传送点进行碰撞来跳转场景;其二是用户通过手柄发射出的射线点击物体直接链接到指定场景。两种场景链接的实现步骤如下。
1)用户通过到达传送点来跳转场景的步骤为先创建一个空物体Object作为父对象,在Object下建立Sphere对象,删除Mesh Renderer属性,并在Inspector面板中给该对象添加Capsule Collider碰撞器组件且选择Is Trigger属性使之成为触发器。编写场景触发跳转脚本,添加到Sphere对象上。下面为场景链接代码。
2)用户通过手柄的射线点击跳转的步骤为先建立一个空对象TransitionToGame,并在该对象上创建一个场景链接脚本TransitionGame,然后再创建一个Button对象,在该对象的Inspector面板中的Button组件里添加脚本TransitionGame点击事件。举例脚本如下。
基于Unity3D和HTC Vive的丝绸之路虚拟交互系统的部分效果截图如图2~图4所示。
如图2所示,用户在佩戴好HTCVive设备并调试好硬件环境后,进入丝绸之路虚拟交互系统开始界面,范围以丝绸之路全路线为背景墙面,用户可以转动头部或走路进行观察,并可以用手柄扣动扳机来选择场景。
图2 开始界面
图3 丝绸之路总路线图
如图3所示,丝绸之路总路线图是用户点击开始按钮,路线图及城市名称依次浮现,以三维视角向用户展示丝绸之路沿线城市分布,并且用户可以点击城市进行城市漫游。
图4 城市漫游
如图4所示,城市漫游是用户通过佩戴的HTC Vive头盔以第一视角游览城市全貌,可以在限定范围内小幅度走动,使用户可以身临其境地置身于城市中,或者通过手柄的射线来选择远处目的地,防止长时间走动带来的眩晕感。
人工智能、大数据分析和虚拟教育被称为影响未来的三大科技创新方向。虚拟现实技术可以将让学习者完全沉浸于虚拟环境中,通过较强的交互性和有趣的游戏元素给学习者带来更多的学习乐趣,促进学习者在愉快的状态下进行自主学习。本文采用多场景建模方法,利用3DMax构建模型,在Unity3D游戏引擎进行开发,实现了场景之间相互链接和用户与系统的信息交互,使用HTC Vive设备作为输出硬件,使用户能够完全沉浸地、自主地、交互地在系统中愉悦无意识时间流逝的知识学习。运行结果表明,本文所设计的丝绸之路虚拟交互系统能较好地展示丝绸之路城市,让用户以直观逼真的视觉感受和交互动作来深刻学习丝绸之路文化,也将会为教育领域虚拟学习提供一定的参考价值。