基于Unity3D 的虚拟天文实验室交互式系统的设计与实现
2022-01-25曲蕴慧白新国
曲蕴慧,白新国
(1.西安医学院计算机教研室,陕西西安 710021;2.西安工程大学计算机科学与技术学院,陕西西安 710048)
虚拟现实技术是一种能够创造和体验虚拟世界的计算机模拟仿真系统,虚拟现实技术以体感设备、虚拟现实设备、头戴式眼镜等为代表,包括互动设备、互动资源和互动内容,声音、文字、动画、图形和视频是最早的互动媒体形式,存在着独立自主教学的问题[1-2]。现代的虚拟现实技术所支持的教学过程具有整合多种媒体资源的独特优势,通过较强的感官沉浸再到意识沉浸,提高了学生的学习积极性,并能够为学生提供真实的学习体验,促进学生强化所学知识和技能[3-5]。随着互联网技术的不断发展和虚拟现实技术的成熟,越来越多的商业机构正在考虑采用虚拟现实技术以扩大其业务影响,该文以天文实验室和太阳系为研究对象,借助Unity3D 平台开发了一款功能较为完善且具有一定可行性的虚拟天文实验室交互系统,使用户对天文学有更直观的了解[6-9]。
1 系统设计
1.1 总体架构
该系统为虚拟仿真系统。首先太阳系场景要做到仿真,包括每个星体的贴图处理、针对不同的星体搭建不同的模型、太阳的发光及点光源设置,以及个别星体区别于其他星体的转动方向。但区别于现实太阳系,星体的大小并未与现实成比例缩放,而是最大限度保持每个行星的大小比,这样能够呈现较好的观感;设置适合使用者观看的速度,从而提供一个较为便捷的虚拟太阳系平台[10-11]。
系统整体流程:首先直接到天文实验室界面,其次在天文实验室界面中可以选择进入漫游实验室、漫游太阳系、太阳系小测验以及观看月相。选择进入漫游太阳系后会进入到子界面,也就是太阳系界面,此时可以选择漫游太阳系和进入单个星体介绍界面,进入到单个星体介绍界面时可以选择3D 查看、基本介绍、特征数据以及图片展示;选择进入太阳系小测验之后会直接进入测验界面;选择进入观看月相界面后就可以开始观察,然后可选择开始测验进入测验界面。每个界面设有返回按钮可回到上一层级,最终需要回到开始界面方可退出系统,系统总体架构如图1 所示。
图1 系统总体架构
1.2 系统功能设计
该系统场景由6 个大模块组成:系统入口、天文实验室场景界面、漫游太阳系界面、单个星体介绍界面、太阳系小测验界面、观看月相界面,系统功能模块如图2 所示。
图2 系统功能模块
1.2.1 天文实验室场景设计
从系统入口进入之后呈现的是天文实验室场景,可以通过键盘和鼠标的操作来漫游此场景,也可以放大或缩小视角,轻松查看墙壁上的贴图以及实验室内部细节,并且在此场景中设有跳转到其他场景的物件:3 个电子屏,点击即可跳转至其他场景。此场景中还设有很多非交互的物件模型供参观,如:地球仪、望远镜、海报等。天文实验室场景包括漫游实验室、漫游太阳系界面、太阳系小测验界面和观看月相界面、实验室内部组成各模型以及提示信息和返回的GUI,结构如图3 所示。
图3 天文实验室场景结构
1.2.2 漫游太阳系场景设计
通过点击天文实验室场景中的电子屏进入到太阳系场景,在其中可以通过键盘、鼠标及鼠标滚轮来控制太阳系中的漫游。在漫游时可以通过点击某个星体进入到单个星体介绍界面。漫游太阳系场景包括漫游太阳系以及单个星体介绍界面,结构如图4所示。
图4 漫游太阳系场景结构
1.2.3 单个星体交互设计
在单个星体介绍界面中可以鼠标自由点击拖拽360°查看当前星体,同时界面中设有3 个GUI 图标,分别点击可以查看星体简介、星体参数以及星体图片。单个星体介绍场景包括转动查看星体、星体简介、星体参数、星体图片的GUI,结构如图5 所示。
图5 单个星体交互结构
1.2.4 太阳系小测验功能设计
在天文实验室场景中可以点击另一个电子屏跳转到太阳系小测验游戏的场景,用来检验在太阳系场景中学习后是否对太阳系有更多的认知。测验通过鼠标拖拽图片完成,并且界面中含有文字提示信息,提示使用者正确完成测验。太阳系小测验场景包括改变排列顺序游戏、文字提示、图片的GUI、查看3D 星体,结构如图6 所示。
图6 太阳系小测验功能结构
1.2.5 观看月相场景设计
天文实验室场景中点击最后一个电子屏即可跳转到观看月相界面。界面中含有月相动态演示,使用者可在此处观看月相演示进行学习,并在学习完毕后点击小测试做选择题来检验学习是否合格。界面中包含文字提示信息和图片信息。观看月相场景包括月相动态演示、选择题、文字提示、图片的GUI,结构如图7 所示。
图7 观看月相场景功能结构
2 系统实现
2.1 场景分层实现
天文实验室需要模拟出太阳系星体的自转和公转,所以给每个星体都要加上自转和公转的代码,首先设定各个星体公转的圆心,除了太阳自身和月亮之外的星体公转圆心都是太阳,然后设定公转和自转的速度,天文实验场景如图8 所示。
图8 天文实验室场景
2.2 系统交互功能实现
2.2.1 跳转场景
当鼠标放置在按钮上时按钮变大,离开后恢复,这里用如下代码来控制:
系统中包含很多不同的场景来放置星体等,所以运用到场景跳转的次数也很多,并且每个跳转的目标场景都不尽相同。这里包括两种方式:一是点击按钮跳转场景,主要用在开始按钮、返回按钮和继续按钮上;二是点击物体跳转场景,主要用于太阳系场景中点击星体查看单个星体介绍,最后将不同的代码挂载到不同的按钮和物体上就可以实现鼠标点击按钮后跳转场景。点击按钮跳转场景的主要代码如下:
点击物体跳转的主要代码:
2.2.2 自由旋转与缩放
在太阳系漫游场景中点击某星体进入单个星体介绍界面后,可以直接通过拖动鼠标对星体进行360°查看。还有在太阳系小测验场景中,可以通过鼠标拖动查看星体来帮助回忆内容从而完成小测验。实现过程:新建一个脚本,写一段代码用来判断鼠标是否在被旋转物体上,按下之后执行物体旋转,抬起后停止。将代码挂到目标星体上后,选择目标,也就是此星体,设置旋转速度不要过大即可。主要代码如下:
2.2.3 拖拽排序
太阳系小测验中需要让使用者对星体进行拖拽换位来完成排序,这里用到的概念类似于拼图游戏:当拼图完全正确时才显示游戏成功。在Canvas 下新建一个Panel 作为背景,将提前制作好的方框图片挂上去。为Panel 添加Grid Layout Group 组件,并添加Image Creater 脚本[12],将Size 设为8 之后就可以用来生成图片了。由于需要给8 个星体排序,这里对Cell进行预设,作为备用。对Image Creater 添加元素,将Element 0 到Element 7 分别挂上星体图片,点击Sprite Editor,按照分辨率对图片进行拆分,这样小测验的模板就完成了。最后为Panel 和Image 分别添加脚本,再新建一个Game Manager 脚本,用来实现每次打开后随机生成图片顺序,如图9 所示。
图9 天文实验室测试排序
2.2.4 沉浸漫游
天文实验室漫游可以真实地展示实验室的细节,包括桌椅、地球仪等小物体,还有在漫游时可以近距离观察墙壁上的贴图、室内陈列等。在天文实验室场景中实现的漫游是由键盘的W、A、S、D 4 个键和鼠标右键来控制。“W”键控制前进、“S”键控制后退、“A”键控制向左移动、“D”键控制向右移动、鼠标右键控制旋转。在太阳系场景中添加漫游的功能可以让使用者自由穿梭于太阳系星体当中,观察星体的运行方式、运行速度和特点,增强对太阳系的认知。星空漫游如图10 所示。
图10 星空漫游
3 发布与测试
点击ENTER 按钮开始系统展示。点击电子屏“漫游太阳系”进入到太阳系场景,单击任意星球进入此星体介绍界面。点击图标可以查看详细资料,返回到实验室中。点击电子屏“太阳系小测验”进入测验场景,每次进入小测验时系统对星体图片的排列顺序不同,都会随机排列。点击“观看月相”进入场景,可以观看右侧持续播放的动态月相和左侧地球实时视角。观看完毕后可以点击测试进入到选择题测试场景。
该系统经测试后可以实现初期设计的交互功能,支持PC 端操作,可以使用键盘和鼠标同时操作完成交互功能。系统包括可漫游的虚拟天文实验室和仿真太阳系以及具有交互功能的两个小测验,可以为学生、天文学习者、爱好者提供一个虚拟平台,让其拥有沉浸式体验,并且可以作为天文学习道路上的一个辅助工具,帮助他们进行更深层次的研究。
4 结束语
该文主要研究了基于Unity3D 的虚拟天文实验室交互式系统的设计与开发。主要设计流程包括绘制整体模型草图、模型的搭建、交互的实现和系统模型的展示。该系统的开发过程中,由于单纯的一个太阳系交互学习系统较为单调,所以在系统中增加了针对太阳系交互学习之后的小测验环节,包括太阳系星体排序和观看月相。为了建造一个虚拟仿真的天文实验室模型,搭建了不少为其增添色彩的小物件模型:地球仪、望远镜、书本等,更能突显天文实验室的真实感,让使用者有身临其境的体验。为了能根据不同场景实现不同的漫游视角并增加交互的趣味性,天文实验室的漫游交互基本靠键盘来实现,太阳系的漫游交互基本靠鼠标来实现。3D 交互学习系统可提高学生的学习兴趣,降低训练成本,促进师生的教学互动,有助于学生“身临其境”地感受所学知识的环境,对提高教学效果具有重要的意义[13-15]。
当前虚拟现实交互技术的研究在不断更新,社会对于虚拟现实交互技术的关注度越来越高。随着虚拟科技的进一步开发与进步,它一定能够为人们的日常生活带来更多的便捷,并使人们的生活更加科技化、智能化[16]。