1. 引言
虚拟现实技术(Virtual Reality)是一种集成了计算机图形学、人机交互、传感器技术和人工智能等多种技术的新兴技术,增强现实(Augmented Reality),是一种借助三维显示技术、交互技术、多种传感技术、计算机视觉技术以及多媒体技术把计算机生成的二维或三维的虚拟信息融合到用户所要体验的真实环境的一种新技术 [1] 。这两种技术与教育相结合,可以为学生提供更加真实、直观、生动的学习体验。
国内外将虚拟现实技术和增强现实技术运用于教育教学等方面已经做了一定程度的研究。周忠等人认为虚拟现实技术在教育领域的应用已经逐渐得到了广泛的认可,特别是在学科教学、职业教育、医学教育、军事训练等领域取得了许多成功的实践案例 [2] 。鲁文娟等人利用智能手机配合Vuforia + Unity3D增强现实技术,成功实现了对历史文物的虚拟展示,让学生在虚拟的情境下进行了更加深入的学习 [3] 。鲁宇明等人基于Unity3D部件虚拟拆装的干涉解决方案,可以帮助学生更好地理解机械结构,提高学习效率 [4] 。张俊等人开发了一种基于虚拟技术的机械基础实验教学平台,通过实时可视化展示,让学生更加深入地理解机械原理及机械设计知识 [5] 。Grande K等人开发了一款手术培训模拟器,大大降低了微创手术的成本 [6] 。Wu H K等综述了在教育中实施AR相关的技术、教学和学习等问题 [7] 。
随着计算机技术和信息技术的发展,采用虚拟现实和增强现实等新技术应用于教学,逐渐成为高校教学改革的一个重要方向。在传统的教学实践中,主要以柱塞泵实体零件展示,三维软件建模和多媒体视频播放的形式加强学生实践能力。本文基于VR和AR技术,利用Unity系统开发平台和AR Foundation增强现实引擎开发了一种柱塞泵实验教学系统,可以实现柱塞泵各部件的虚拟自动拆装、手动拆装、流体及AR展示等功能,提高了教学的生动性及效率,锻炼了学生的工程实践能力。
2. 系统总体框架设计
基于虚拟现实和增强现实技术,开发具有沉浸性交互性的柱塞泵虚拟仿真实验系统。能够虚实结合的展示模型,并能够以等多种方式对模型进行交互操作,旨在帮助学生更好地理解柱塞泵的结构和原理。具体功能模块如图1所示。
系统主要功能模块包括视角交互、点击反馈、装配正确性提示、自动装配、手动装配等。其中视角交互功能模块可以让学生在虚拟仿真系统中自由切换视角,以便更好地观察物体的各个部位;点击反馈功能模块可以在学生点击物体时提供反馈信息,以帮助学生更好地理解物体的构成;装配正确性提示功能模块可以在学生进行装配时提供正确性提示,以帮助学生更好地完成装配任务;自动装配功能模块可以在学生进行装配时提供自动装配功能,以便学生更好地理解物体的组成和结构;手动装配功能模块可以让学生手动拆装物体,以便学生更好地学习和掌握零部件的组成和运行原理。
3. 开发平台选择
系统开发平台选用专业的AR、VR开发软件Unity,其拥有良好的跨平台性和兼容性。为将本系统应用于Android手机平台,选择Android NDK作为Android 和Unity之间的数据通信。增强现实引擎选用ARCore,无缝对接Unity开发环境。三维建模软件选择Solidworks,模型优化软件选用3dsMax。具体开发平台和工具及其功能如表1所示。
Table 1. Development platform and tools
表1. 开发平台及工具
4. 系统开发和实现
4.1. 开发流程
本系统基于Unity进行开发。通过Solidworks建立柱塞泵三维模型,并通过3dsMax优化和格式转换后导入Unity,完成各虚拟现实功能开发。同时利用Unity扩展引擎ARFoundation实现模型AR展示功能效果。最后在PC或Android 平台发布系统。具体开发流程如图2所示。
4.2. 结构展示与虚拟拆装功能实现
4.2.1. 三维建模与优化
选定特定的柱塞泵模型使用SolidWorks进行适当的调整,之后将调整完的模型以SLDASM的格式导入模型渲染软件3dsMax,对模型进行简单的渲染后将模型以FBX的格式导出并保存,然后将FBX格式的文件导入Unity,导入到模型材料默认为白色,渲染效果较差,需要手动创建和添加不同的材料球,以获得更好的渲染效果。部分零件模型及添加材质后的效果如图3所示。
Figure 3. Parts 3D model and rendering effects
图3. 零件的三维模型及渲染效果
4.2.2. 自动拆装功能的实现
自动拆装功能的核心就是点击按钮时,所有的零件能够按照设置好的顺序进行旋转位移以到达制定的装配点位,自动拆装的最小单元是单个零件的运动,可利用DOTween插件设置逐帧动画及顺序,用代码的方式激活最小单元即可完成完整正确的自动拆装。为了减少工作量,编写通用的代码脚本,这样可以提高编写效率,最后将最小单元动画脚本挂载到各个零件上即可,功能实现流程如图4。
Figure 4. Flow chart of automatic disassembly and assembly function
图4. 自动拆装功能实现流程图
通过点击“下一步”按钮即可实现正确的零件自动拆装效果,并可以通过点击切换模式按钮来改变拆的模式或装的模式,实现效果如图5所示。
Figure 5. Implementation effect of automatic disassembly and assembly function
图5. 自动拆装功能实现效果
4.2.3. 手动拆装功能实现
手动拆装的功能与自动拆装的功能类似,但我们需要利用Box Collider组件并通过编写触发动画代码脚本来实现点击触发最小单元动画脚本与步骤管理器脚本,并将该脚本挂载至各个零件上即可实现点击零件使得零件功能。功能实现流程如图6。
Figure 6. Flow chart of manual disassembly and assembly function
图6. 手动拆装功能实现流程图
手动拆装功能的实现即点击物体使物体运动至相应的位置上,实现的效果如图7所示:
Figure 7. The effect of manual disassembly and assembly gasket
图7. 手动拆装垫圈效果
4.2.4. 拆装重置功能实现
拆装重置功能的实现是通过编写脚本使得所有零件的状态回归为初始状态,后将脚本搭载至按钮上即可实现重置功能。功能实现流程如图8。
Figure 8. Flow chart of reset function implementation
图8. 拆装重置功能实现流程图
整个拆装过程可能会出现操作失误并步骤混乱的情况,重置功能可以使得拼装或拆卸完成或未完成的所有零部件返回到初始状态,重置功能实现效果如图9所示:
Figure 9. Comparison of effects before and after reset
图9. 重置前后效果对比图
4.2.5. 拆装正确性提示功能实现
拆装正确性提示功能即在相应的用户正确操作或错误操作后进行对应的提示框提示。编写完脚本后,创建一个空对象,将空对象添加Transform组件,然后调整空对象的坐标位置至屏幕中央,之后将编写好的脚本命名为CommonHint并将脚本挂载在刚刚创建的空对象上即可实现功能。注意,由于自动拆装的不会出错,该功能只在手动拆装时生效。功能实现流程如图10。
Figure 10. Flow chart of disassembly and assembly correctness prompt function t
图10. 拆装正确性提示功能流程图
在手动拆装,即靠点击零件进行装配时,会通过提示框的形式告知拼装是否正确,通过编写脚本以及导入相应的提示框文件以实现拆装正确性提示的功能。拆装正确性提示功能的效果图如图11。
Figure 11. The effect of disassembly and assembly correctness prompts
图11. 拆装正确性提示效果图
4.2.6. 零件介绍功能实现
零件介绍功能的实现需将文字与对应的图片添加在场景画布中,用按钮实现上一页、下一页及返回至选择栏等功能,涉及的部分脚本如下:
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void LoadScene(string name)
{
SceneManager.LoadScene(name);
}
零件介绍功能实现效果如图12所示。
Figure 12. Effect of parts introduction function
图12. 零件介绍功能效果
4.3. AR功能的实现
AR装配及展示功能的实现,需要给Unity的项目安装相应的插件,用于安卓端的常用插件为ARCore,用于苹果端的常用插件为ARKit。安装完成AR所需的插件后,还需要一定的设置、相机调整、脚本调整才能实现一定的AR功能。AR功能实现效果如图13所示:
4.4. 登录界面制作及系统发布
初始登录界面应包含开始和退出按钮。当按下开始按钮时将进入本系统。
系统制作完毕后,可以在Android 平台上发布。在Unity中设置好NDK,SDK,JDK开发工具包的启动路径,调试好开发环境。完成调试后,可通过单击Build的方式生成apk安装包,完成系统的发布。
5. 系统功能测试及反馈
本项目测试所使用的机型为Android系统机型,在设置中点击“build”按钮打包项目成APK文件,在手机上将APK文件安装并同意相机的使用权限便可使用软件,测试的内容为各个UI界面、按钮功能是否正常以及各项主要功能是否正常。
(1) UI界面适配性测试:进入程序,点击按钮完成场景的交换,并观察场景一“初始界面”、场景二“选项界面”、场景三“AR界面”以及各个零件展示场景的按钮大小、背景图片,文字大小是否正常。
(2) 按钮测试:测试按钮“开始”、“虚拟拆装”、“零件展示”“返回”按钮的场景切换功能是否正常,测试“下一步”按钮的自动拆装功能,“重置”按钮的重置功能是否正常。测试“退出”按钮的退出应用的功能是否正常。
(3) 点击测试:测试点击零件时的手动拆装功能,点击零件时的零件颜色变化功能以及装配正确性提示的功能是否正常。
部分系统界面及功能测试如图14所示。
Figure 14. Effect of system function test. (a) System options interface; (b) Parts display interface; (c) Correct prompt test; (d) Error prompt test
图14. 系统功能测试效果图。(a) 系统选项界面;(b) 零件展示界面;(c) 拆装正确提示功能测试;(d) 拆装错误提示功能测试
最后,通过调查问卷的形式对实践课程学生进行抽样调查。结果显示,90%的学生认为本系统有助于提高自身的学习积极性及学习效果,有助于提高课堂教学质量。
6. 结语
在虚拟现实和增强现实技术应用场景逐渐广泛的前提下,结合目前高校机械专业在实践教学过程中所遇到的问题,运用Unity开发了一套柱塞泵实践教学虚拟仿真系统。通过与课程的结合充分发挥了虚拟现实的沉浸性、交互性的特点,解决了设备不足,维护成本较高等等问题。目前系统可实现柱塞泵的自动拆装、手动拆装、状态重置、拆装正确性提示和反馈、AR结构展示等功能。下一步工作计划充实更多的零件模型,完成场景虚实融合进一步优化,实现柱塞泵相关虚拟液压系统开发,并进一步扩展到更多的机械类实践课程当中。
基金项目
浙江省高校实验室研究项目(YB202331);浙大城市学院大学生创新训练计划项目(X202301095, X202301097);浙江省首批劳动教育一流本科课程建设项目(81);浙大城市学院本科实践教学改革研究项目(SJ2309)。
NOTES
*通讯作者。