林文燔
(黎明职业大学 信息与电子工程学院,福建 泉州362000)
随着视觉追踪技术的发展,利用Kinect体感交互技术对人的动作进行实时跟踪与反馈,已广泛应用于体感游戏领域。体感交互方式更加接近自然交互,不受硬件如鼠标键盘的约束,借助交互设备如Kinect,利用手势、肢体动作以及语音等方式达到人机交互的目的。
在汽车构造与拆装课程的日常教学中,学习者往往对发动机部分掌握较好,而对于汽车底盘部分则出现学习困难、知识点难以掌握的情况,分析这两部分内容特点不难发现,发动机的所有知识都围绕一台发动机,内容集中;而汽车底盘则由于系统庞杂、零件分散、类型繁杂,学习者往往比较容易产生畏难情绪。汽车底盘构造关键零部件的结构通常是以黑白二维工程图的形式展现,理解困难,枯燥乏味。在底盘拆装实训中存在拆装设备数量少,难以满足学生实操需求;拆装设备丢失、损坏率高;拆装过程缺少有效监控,实训效果难以保障等问题,耗费大量的财力和物力[1]。通过虚拟仿真的展示及三维教具的应用,虽节省了底盘拆装训练耗费的财力和物力,但由于完全脱离真实场景,使用户因丧失了对现实场景的感知而降低了拆装训练过程中的沉浸感与真实感[2]。同时,“汽车底盘构造与拆装”的传统教学方法单一,无法有效提高学生学习兴趣。为了解决以上难题,本文拟借助Unity3D平台和Kinect体感交互设备设计汽车底盘交互式展示仿真系统,丰富虚拟汽车底盘拆装中的人机交互方式,提高学习者的学习效果。
Kinect体感交互设备,是由微软推出的智能体感交互外接设备,该设备拥有三个摄像头(彩色摄像头、深度红外摄像头、红外CMOS摄像头)以及四个内置麦克风(即四元线性麦克风阵列)。[3]借助Kinect体感交互设备,能够得到彩色图像数据、深度图像数据、骨骼数据以及音频数据等,实现对骨骼追踪、人脸识别以及语言识别。[4]相比其他的获取人体姿势的设备和技术,利用Kinect进行人体识别能够保证获取数据的准确性,同时在便利性和经济性方面具有明显优势。[5]
以小型汽车为例,一辆汽车除发动机和车身外,其余部分均属于汽车底盘结构。具体包含传动系统、转向系统、制动系统和行驶系统[1]。
根据汽车底盘结构特点以及真实拆装实验教学的要求,设计虚拟拆装实验的系统结构(如图1所示)。本设计采用手部交互手势对汽车底盘结构虚拟仿真系统里的汽车底盘包含的四个分系统分别拥有的三种模式(教学展示模式、训练拆装模式、拓展训练模式)的物理模型和UI按钮图标控制,来实现汽车底盘的交互展示和拆装操作直接流畅、交互式体验好、拆装效率高的目标。
图1 系统结构
为了保证本汽车底盘构造交互式展示设计开发的系统性与完整性,制定系统整体设计开发流程,如图2所示。
图2 系统开发设计流程图
首先,需要根据汽车底盘结构利用三维建模软件Solid Works为其构建三维数字模型,并根据汽车底盘实际操作过程相应地简化模型,将最终的汽车底盘三维构造模型导出为STL格式。其次,利用3DMax实现3D建模中的材质贴图、动画设计等功能,本文借助该三维动画软件对汽车底盘的物理模型、调整轴心和轴线、制作装拆过程的整个动画以及整个系统的参数比例进行相应的调整,并导出FBX格式。再次,在Unity3D中导入上述导出的FBX文件,对汽车底盘的物理模型、动画资源、材质球、背景环境、界面规划等进行设置,并利用C#语言对场景中的UI按钮图标、物理模型和语音介绍等赋予脚本组件且进行逻辑关联,完成本系统汽车底盘构造交互式展现系统里三种模式下四种类型的物理模型和UI按钮图标沉浸式交互控制,并发布到现有类型的应用平台,如Android移动平台或Windows、Web等。最后,借助Kinect设备实现体感交互过程。在PC端安装Kinect for Windows SDK2.0软件开发包来管理Kinect采集的数据流即识别学习者的手势,用于实现Unity3D与Kinect之间的数据传递,实现Kinect人体识别交互手势与虚拟过程的一一对应,相应的实现汽车底盘三维模型拆装交互式展示。这一部分主要在于如何利用捕获的手势信息来触发相应的操作,实现人机交互。这里利用.NET技术,先定义相关手势动作,再对获得的手势动作与已定义的进行对比,从而识别该手势的语义以实现人体交互。
人机交互中的手势设计应当遵循下述原则[6]。
(1)最大契合人体动作习惯。这是实现自然交互的必要条件,使得每定义一个交互手势均与人们日常行为习惯相符,例如,向左滑动表示汽车零部件向左旋转,向左移动表示该汽车零部件需要向左位移等。
(2)最小相互干扰。不管算法多么精准,识别失误还是难以避免的,特别是类似的手势动作。因此,在手势设计定义时,应该尽可能地避开类似动作,尤其要避免在同一时间用类似的动作表示不同的手势操作。
(3)最短识别时间。手势动作识别的长短会影响体验者的体验感受,最短时间的响应能够提高作品的趣味性。
(4)最小肢体移动。尽可能地减少使用者的肢体移动幅度,以降低体感交互给使用者带来的疲惫感。
本文在定义手势时,遵循上述原则,设计的手势动作有:左手向左挥动,右手向右挥动,左手向上挥动,右手向下挥动,左手握拳向左移动,右手握拳向右移动,左手握拳向上移动,右手握拳向下移动等,相对应的场景效果如表1所示。
表1 手势动作设计定义
利用体感交互设备Kinect的功能,让学习者摆脱传统的交互设备如鼠标、键盘等的束缚,增强其体验感。针对Unity3D与Kinect之间的数据传递问题,本设计主要通过在电脑端安装Kinect for Windows SDK2.0软件开发包,利用该开发包管理Kinect所采集到的数据。启动Kinect设备并初始化,Kinect中的两个深度摄像头开始协同作业采集人体手部信息,利用Kinect API数据流的KinectManger类控制对NUIAPI数据流的启动以达到获取手势的深度信息数据流。在Unity3D平台中,借助C#语言编写脚本函数GetUsersLblTex控制所采集到的深度信息数据流,实现人体手势借助Kinect体感交互设备到Unity3D的传递,从而达到虚拟与现实人体交互手势匹配的目的。
本研究利用Unity3D制作虚拟仿真的汽车底盘拆装与展示,Kinect交互设备中识别到的手势与Unity3D中设计的汽车底盘展示情况相对应,提高了虚拟汽车底盘拆装的沉浸式体验效果。Kinect手势识别框架图如图3所示。
图3 Kinect手势识别框架图
利用Kinect骨骼追踪引擎获取5个手指指尖点以及手掌中心点X、Y、Z的空间坐标值,根据几个关键点位置信息的变化,对KinectManager管理API中定义的手势参数进行相应的识别阈值设定,从而确定上述定义的手势,实现交互式汽车底盘拆装与展示。根据计算5个指尖点与中心点的距离,与设定的阈值进行比较,实现手势握拳与手掌的区别,提高识别度。利用向前推手掌手势实现系统的选择激活、移动以及UI界面的交互。鉴于汽车底盘零部件模型大小不一、装配约束关系难以观察、方便装配视角调整以及复杂部分难以观察展示等,利用左右上下旋转四个手势来控制旋转场景的视角;利用放大、缩小两个手势来调整汽车底盘物理模型的远近;利用上下左右位移等四个手势来控制虚拟底盘的拆装训练。
在Unity3D中,需要为虚拟手以及汽车零件模型添加刚体组件,以此来避免虚拟汽车底盘拆装过程中出现的不切实际的穿透现象。同时,为了方便Kinect设备检测碰撞信息,在Unity3D中为汽车零部件的三位模型添加碰撞体属性。根据汽车零部件的繁杂程度,可以为其添加一个或者多个不同类型的包围盒,包围盒的位置和大小利用oxColider、SphereColider、CapsuleColider和MeshColider等来调节,使其与三维模型重合,提高真实操作的准确度,增强学习者操作训练的真实感。本文利用采光追踪技术来检测Kinect体感交互设备摄像头发射出来的Ray射线是否触碰到汽车零部件三维模型的碰撞体。
本设计主要应用于职业院校的学生学习,考虑到该设计用户群体的特性,在设计汽车底盘拆装实训的实现流程时,尽可能做到简单明了。交互式拆装流程如图4所示。
图4 汽车底盘交互式拆装流程图
为了增强拆装实训过程的现实感及体验效果,同时便于观察拆装汽车零部件的约束关系,提高整个仿真实训的拆装效率,虚拟汽车底盘三维模型需能够激活、移动、旋转,其坐标位置能够跟随手势动作实时更新。正常状态时,学习者的手势一般采用上下左右挥动或者握拳移动,形象地区分零部件旋转或者位移状态。
从图4可知,汽车底盘交互式设计系统开始运行之后,学习者站在离Kinect摄像头大约3至5米之处,通过手势动作向前推掌控制鼠标点击选择汽车底盘的子系统,接下来利用位移手势移动鼠标选择该子系统下的某个模式,系统进入数据初始化布局,学习者进入汽车底盘某个分系统的拆装实训。在拆装实训过程中,利用光线追踪法碰撞检测确定Kinect摄像头发射的Ray射线是否触碰到汽车零部件模型的盒碰撞体,学习者手势保持握拳移动状态,汽车底盘零部件进行坐标计算,实时更新坐标位置,手势移动的速度应该依据Kinect设备参数情况以及交互式的体验效果,设定在合理范围。最后,判定整个拆装实训是否完成,是的话结束流程,否则继续下一个模型。
在整个拆装过程中,学习者可通过UI界面按钮选择暂停或者继续,控制整个拆装实训的进行。如果学习者拆装完毕,本系统会自动判断是否拆装完整,是的话则展现一遍学习者的操作流程,并完成退出,否则继续。在整个过程中,学习者也可以随时选择退出按钮,退出拆装实训。
基于Kinect的汽车底盘交互式拆装展示虚拟仿真系统,在一定程度上解决了汽车底盘构造以及拆装实训在现实教学中很难完成的每个学生都参与拆装的问题,且能够看清汽车的底盘构造。相较于传统的交互硬件(鼠标、键盘等交互式硬件设备),使用Kinect体感交互设备操作更加直接自然。将此设计应用于教学,融入汽车底盘构造教学实训,学生参与课堂教学实训的积极性及对汽车底盘构造的认知都有较大的提升,对其后期专业课程的学习有很大帮助。该汽车底盘交互式拆装展示也从某些方面激发了学生的学习兴趣,增强了他们自主学习的能力。