1、电脑与电信因此,研究团队尝试利用增强现实(Augmented Reality,简称AR)技术,即把现实世界中某一区域原本不存在的信息,基于某种媒介并经过仿真后再叠加到真实世界,被人类感官所感知的技术,进行手机端教学辅助系统的开发,该系统不仅能够还原此次“太空授课”实验过程,即将真实的课室环境和虚拟的飞船实时地显示到同一个画面或空间,从而达到超越现实的感官体验;还能够作为虚拟现实开发基础课程中的AR教学模块来进行教学,该系统既能改善教学效果,又能增添一种教学辅助系统。三维模型是整个太空授课的基础,模型设计的好坏直接影响了系统运行及展示效果,笔者及团队在大量收集相关实物的图片、视频的基础上,对场景
2、中的每个模3型进行了精确的构建和优化,所有的三维模型都保存为.FBX格式的文件,并将模型和纹理共同导入到Unity的1 引言职业教育提质培优行动计划(20202023年)鼓励职业学校利用现代信息技术推动人才培养模式改革,满足学生的多样化学习需求,大力推进“互联网+”1“智能+”教育新形态,推动教育教学变革创新。虚拟现实开发基础是高职院校软件技术(游戏制作)专业学生必修的基础课程。课程总体目标是面向企业的虚拟现实开发工程师职业岗位,掌握“1+X”虚拟现实应用开发(中级)证书中虚拟现实部分题型解答技巧,选拔优秀的学生参加省级虚拟现实设计与制作赛项,培养具备虚拟现实项目开发核心职业能力的高素质技术技
3、能人才。但是,以往的虚拟现实开发基础课程设计教学存在教学手段陈旧、形式单一、教学内容未及时更新等问题,导致大部分学生对课程学习失去兴趣。如何改变课程设计来激发学生学习兴趣和实践能力,从而提高教学效果,是虚拟现实开发基础亟待解决的问题。“神舟十号”载人飞船的成功发射,标志着我国载2人天地往返运输系统首次应用性飞行的开始。航天员王亚平等三人把“天宫一号”作为太空讲堂,给地面的青少年进行太空讲课,这是中国历史上的第一次太空授课,极大地激发了广大青少年对科学探索的热情,但是这样无比珍贵的太空实验画面,只能通过航天员张晓光的角度用手中摄像机来呈现,在沉浸感与体验感方面稍微欠佳。2 系统设计2.1 总体设
4、计基于虚拟仿真技术的AR太空授课系统设计主要由三维模型设计、模型识别设计、交互功能设计三个模块组成,如图1所示。(1)三维模型设计基于虚拟仿真技术的AR太空授课系统开发吴 强 李广松 吴吉宏 官泽良摘 要:随着互联网技术的高速发展,虚拟现实技术在教育领域中的应用越来越普及。在虚拟现实开发基础课程中将AR技术引入实践教学,利用Unity3D和Vuforia SDK设计和开发了AR太空授课系统,系统具有真实性、交互性和自主性。实践证明,该系统具有良好的辅助教学效果,增加了学生与太空实验的互动体验。(广东职业技术学院 信息工程学院,广东佛山528041)关键词:增强现实;太空授课;Unity;Vuf
5、oria中图分类号:TP391 文献标识码:A 文章编号:1008-6609(2023)01-0031-05作者简介:吴强(1992),男,四川成都人,助教,研究方向为游戏开发、数字媒体技术。基金项目:2022年度校级虚拟仿真教育教学改革项目“基于虚拟仿真技术的职业技能培训模式研究以虚拟现实开发基础课程为例”,项目编号:XNFZ202215;2022年度校级科研项目“教育信息化背景下高职学生专业课程学习的学习支持服务提升研究”,项目编号:XJKY202266;2022年度广东省科技创新战略专项资金(“攀登计划”)项目“手势交互虚拟现实应用研究”,项目编号:pdjh2022a0825。31DOI
6、:10.15966/ki.dnydx.2023.z1.023电脑与电信Package文件夹中。(2)模型识别设计AR太空授课系统支持两种AR识别类型。一种为Image Targets,这是最常用、也是最简单的识别类型,即单一静态的平面图像识别,只需提供一张可识别的图片,将图片移到设备的摄像头下,设备上就能出现之前已经集成进去的虚拟场景,而且可以根据ARCamera的不同模式,让图片和虚拟场景的叠加现象有所不同;另一种为Object Recognition,Vuforia官方提供了一款扫描Vuforia扫描仪APP,利用该软件可以将3D物体的物理特性扫描成数字信息,该APP所识别的3D物体要求是
7、不透明、不变形的,并且表面有明显的特征信息,这样有利于APP收集目标表面的特征信息。(3)交互功能设计本系统采用3Ds Max软件对神舟十号、天宫二号、三位宇航员等模型进行设计;采用Unity 3D专业游戏引擎,它是具有强大功能的高度整合且可扩展的编辑器;同时采用高通公司推出的Vuforia SDK作为软件开发工具包,专门用于移动设备的增强现实软件开发,它利用计算机视觉技术实时识别和捕捉平面图像或简单的三维物体(例如盒子),然后允许开发者通过照相机取景器放置虚拟物体并调整物体在镜头前实体背景上的位置;软件的运行系统选择目前市场占有率最高的Android手机系统,因此在计算机中需要进行Andro
8、id SDK下载与安装。为了更好地满足太空授课的展示效果和交互体验需求,设置UI界面,点击不同按钮进行实时交互操作,播放音频、视频、动画及特效;利用C#语言实现AR技术在移动端的交互,如手机或平板电脑上实时展示太空授课的场景旋转、放大,可从多角度展示局部效果图;经过多次调试确认没有问题后,最后打包生成APK文件。3 关键功能实现3.1 相机识别对象在Unity中构建系统的完整框架并实现交互功能。通过Unity Hub进行Unity编辑器、许可证以及项目的管理。在Unity项目工程的Hierarchy面板中,右键点击Vuforia Engine将“AR Camera”置入场景中,在AR Came
9、ra的Inspector界面点击“Open Vuforia Configuration”按钮,将4复制的License Key粘贴上去进行匹配。在Hierarchy 窗口右键-Vuforia Engine-Image添加图片识别对象Image Target和Object Recognition,并在其属性窗口中配置对应的Vuforia数据库以及识别图。当相机扫描到图片或者飞船对接模型时,虚拟模型呈现;当相机未扫描到图片或者飞2.2 开发平台与工具搜集太空相关资料三维模型设计模型识别设计交互功能设计角色与模型设计动画设计3dMax建模动画制作VuforiaSDK引入Vuforia识别对象数据库配
10、置2d图像识别3d物体识别UnityAR程序运行交互逻辑设计UI界面设计脚本程序编写Unity工程打包识别图像与物体手势交互界面控件交互教学媒体交互与展示角色与模型动画展示图1 系统总体设计32电脑与电信船对接模型时,虚拟模型消失。实现代码如下:3.2 太空实验展示与切换使用3DsMax对小球单摆和陀螺旋转进行建模及动画片段渲染,同时用录音笔进行实验解说录音。当点击单摆运动按钮时,播放单摆运动实验动画和声音,同时关闭并隐藏陀螺旋转实验动画和声音;当点击陀螺旋转按钮时,播放陀螺旋转实验动画和声音,同时关闭并隐藏单摆运动实验动画和声音。实现代码如下:/控制单摆实验的双控按钮事件(“双控”,即一个按
11、钮可控制两个状态)3.3 模型旋转与缩放方法通过Unity内置输入系统接口实现手指交互,操控模型的缩放与旋转。当手指触摸到移动设备屏幕时,系统记录触摸到屏幕的手指数量,当单指触摸屏幕时,则调用旋转指令,随着手指的滑动来旋转模型;当双指触摸屏幕时,则调用缩放指令,首先记录手指触摸屏幕的初始位置,当手指做旋转或缩放操作时,系统实施更新手指的最新位置直至手指停止运动时,记录最后停留的位置,接着计算两根手指移动前的距离和移动后的距离并进行差值判断,若差值小于0,表示距离变长,模型变大,反之,若差值大于0,表示距离变短,模型变小。实现代码如下:33protected virtual void OnTra
12、ckingFound()/实例化飞船模型,并设置位置为卡片下方,将模型父级设置为卡片 GameObject go=Instantiate(targetObj);go.transform.position=this.transform.position-new Vector3 (0,0.2f,0);go.transform.SetParent(this.transform);/遍历所有Canvas并把Canvas显示出来 var canvasComponents=GetComponentsInChildren (true);foreach(var component in canvasCompo
13、nents)component.enabled=true;/当物体丢失后protected virtual void OnTrackingLost()/搜索飞船模型并销毁 Destroy(GameObject.FindGameObjectWithTag(Obj);/遍历所有Canvas并将其隐藏 var canvasComponents=GetComponentsInChildren (true);foreach(var component in canvasComponents)component.enabled=false;public void OnDbButtonClick()/获取单
14、摆实验和陀螺实验物体,由于两个物体都是隐藏状态,无法直接搜索到,需通过搜索其父物体再搜索其子物体获得 GameObject DbObj=GameObject.Find(experiment).transfor m.GetChild(1).gameObject;GameObject TlObj=GameObject.Find(experiment).transform.GetChild(0).gameObject;/如果单摆实验物体为隐藏状态则显示它,反之隐藏它,同时两个状态下都隐藏陀螺模型,即可避免两个实验之间冲突 if(!DbObj.activeInHierarchy)DbObj.SetAc
15、tive(true);TlObj.SetActive(false);Else DbObj.SetActive(false);TlObj.SetActive(false);/控制陀螺实验的双控按钮事件(“双控”,即一个按钮可控制两个状态)public void OnTlButtonClick()/如果陀螺实验物体为隐藏状态则显示它,反之隐藏它,同时两个状态下都隐藏单摆模型,即可避免两个实验之间 冲突 GameObject DbObj=GameObject.Find(experiment).transform.GetChild(1).gameObject;GameObject TlObj=Game
16、Object.Find(experiment).transform.GetChild(0).gameObject;if(!TlObj.activeInHierarchy)DbObj.SetActive(false);TlObj.SetActive(true);else DbObj.SetActive(false);TlObj.SetActive(false);if(Input.GetMouseButton(0)/如果按下的手指为1,即单指按下且移动则旋转模型 if(Input.touchCount=1)电脑与电信3.4 功能菜单按钮交互实现通过UGUI组件来实现按钮交互,在不同的按钮上注明按钮功能,添加按钮单击事件进行响应。部分主要功能实现代码如下:3.5 系统发布在Unity3D的菜单栏中选择FileBuild Settings命令,在Platform处选择Android,单击Build按钮,选择APK保存5的路径,然后等待生成APK安装包,通过USB数据线传输到移动设备上,即可扫描图片或者模型体验效果。4 系统成果展示本文以虚拟仿真技术的AR技术为基础,充分详细地介绍了利用3DsM