基于体感技术的物理虚拟仿真实验设计与实现

2022-09-01 10:10赵志靖
实验室研究与探索 2022年5期
关键词:体感手势灯泡

陈 宸,赵志靖

(扬州大学教育技术学系,江苏扬州 225009)

0 引言

虚拟仿真能够实现传统实验中无法实现或难以完成的教学功能,特别是对于一些具有危险、时间长、成本高或微观的实验。国家相继出台一系列政策支持虚拟实验在教育教学中的应用。可以看出,国家非常重视虚拟实验及其应用。

物理学是一门以实验为基础的自然科学[1]。目前大多数物理知识需要通过实验才能够加深学生的认识。由于实验教学观念落后、教学方法与手段单一问题,学生做实验的机会较少,无法保证每位同学都能参与到实验当中[2]。此外还存在实验设备陈旧老化与实验风险等问题。

物理虚拟仿真是虚拟现实技术在物理实验中的实际应用,通过预设的实验场景和实验内容来模拟现实中的物理实验[3]。目前应用最广泛的虚拟仿真是基于桌面式的“非沉浸式”虚拟实验,这类实验大多采用以窗口、图标、菜单、指点式为交互元素的交互界面(Windows,Icon,Menu,Point-Click,WIMP)。研究表明,使用鼠标键盘交互的虚拟仿真不能充分发挥虚拟现实系统的沉浸性、交互性和构想性等优势,学生的学习体验不佳[4]。体感技术作为一种重要的自然交互方式,能够实现“通过指尖、人手的运动与计算机发生自然交互”[5],在一定程度上打破了WIMP 交互范式的限制,在形式上和空间上极大的改善了交互体验,提升交互的沉浸感和效率,增加交互的真实感。

1 物理虚拟仿真实验设计

从用户可信度水平的视角,将虚拟实验分为模拟性实验、探究性实验以及实证性实验3 个层次。其中探究性实验是面向数据的记录、收集和分析的虚拟实验,强调交互的自然性以及真实环境下测量数据的一致性[6]。是用来展示物理、化学、生物等课程中特殊的事物,以更直观的方式将难以描述的现象呈现出来。

基于体感技术的物理虚拟仿真实验设计,利用3DsMax 软件对物理实验场景进行三维建模,利用Unity引擎与Leap Motion 实现场景渲染与交互功能,最终设计开发一款物理虚拟仿真系统,以满足学生学习和实验操作的需要。

物理虚拟仿真实验的设计主要包括:系统框架设计、手势交互设计以及场景设计。系统框架设计主要是学生如何通过Leap Motion进行虚拟仿真实验;手势交互设计是为用户提供良好的实验操作体验感;场景设计是对场景元素的视觉设计。

1.1 关键技术

人机交互强调以人为本,注重交互方式的自然、和谐[7]。随着虚拟现实、增强现实、混合现实以及普适计算等“脱离桌面”技术的发展,出现了新一代基于现实的人机交互(Reality-based Interaction,RBI)。RBI利用现实世界中的一些主题,如从人们对基本常识的理解、对自身肢体动作的理解、对环境的理解等不同层面,来对新的交互模式进行描述[8]。

体感交互是RBI 的一种,强调利用手势、肢体动作、语音以及与这些方式相结合的虚拟人像技术来实现交互功能。体感交互减轻人们对鼠标、键盘等非自然的操控方式的依赖,缓解手指与鼠标、键盘的紧张关系,让学生将注意力始终集中在实验任务当中[9]。相比于使用鼠标或键盘进行虚拟实验,使用基于动作智能技术进行实验操作能够探究身体运动对学习的影响研究[10]。

Leap Motion 是为手部识别而设计的,在手势捕捉方面与其他体感设备相比有着更高的灵敏度和准确性[11]。基于体感技术的物理虚拟仿真实验使用Leap Motion控制器和Unity 引擎进行设计与实现。当学生使用手势与虚拟物体进行交互时,Leap Motion 将实时采集学生的手部数据,并通过USB接口传输到计算机中的Leap Motion 驱动程序。在Unity 引擎中,开发人员利用C#进行手势交互设计。

1.2 系统框架设计

物理虚拟仿真实验的制作需要硬件和软件设备配合完成,硬件包括:Leap Motion,计算机。软件包括:3DsMax实现三维建模,Unity引擎实现场景渲染,C#脚本语言实现交互。实验以三维形式呈现出来,更具沉浸性与真实性。物理虚拟仿真实验系统框架如图1所示。

图1 物理虚拟仿真实验系统框架

1.3 手势交互设计

实现手势交互虚拟实验,需要参考实验过程中使用频率较高的手势,对这些手势特性进行分析,根据Leap Motion手势交互的原理,设计出能够满足虚拟实验操作的交互手势。在实验过程中,Leap Motion 会实时采集学生的手部数据,在Unity 中判断这些手部数据与预定义的手势是否一致。如果不一致,则该手势不会有任何操作响应,反之,则执行该手势的操作响应。

Leap Motion 的软件开发工具包(Software Development Kit,SDK)支持多种手势的自定义命令[12],依据物理实验的需求设计一组面向虚拟仿真实验的手势集,分别是右手点击、右手挥动、左手向上翻转、左手向下翻转、左手张开、左手握拳。

1.4 场景设计

为使虚拟仿真实验具有更加真实的实验操作体验,场景设计需要参考实验室的场景进行布局。根据实验室布局设计实验台,学生大部分操作都可在实验台上完成,实验台仅呈现与当前实验相关的器材,避免因一些无关的器材迷惑学生,增加学生的实验操作负担。

2 物理虚拟仿真实验开发实例

通过探究闭合电路导体中的电流与导体两端的电压、电阻之间的关系以及测量小灯泡的电功率两个具体实例来探索基于体感技术的物理虚拟仿真实验的具体制作过程。

2.1 开发流程设计

学生进入物理虚拟仿真实验室开始实验,通过Leap Motion与虚拟的实验器材进行交互。在虚拟实验室中搭建了多个实验所需的器材,学生依据系统预设好的器材进行实验。实验器材已经按照实验布局进行摆放,不需要对实验器材进行挑选与连接,提高了学生的实验效率。

物理虚拟仿真实验的开发分为2 大阶段:第1 阶段是分析系统模块和收集素材,使用3DsMax 搭建物理虚拟仿真实验相关的三维模型,使用PhotoShop 绘制实验器材贴图,模型制作完成后,以FBX 格式导出并导入Unity 工程文件。第2 阶段包括①搭建场景,其主要工作是在Unity 中搭建实验室场景与实验器材;②安装Leap Motion驱动,将Leap Motion控制器与电脑进行连接,将Leap Motion 组件资源包导入Unity引擎,对Leap Motion SDK进行基础环境配置;③在虚拟三维场景中实现学生与虚拟器材之间的交互,采用C#语言与Leap Motion SDK根据实验流程编写交互脚本,实现场景渲染与交互功能。实验开发流程如图2所示。

图2 实验开发流程图

2.2 闭合电路欧姆定律实验实例开发

2.2.1 三维实验环境的搭建

实验环境的搭建包括设计实验室场景、实验器材以及用户界面。使用3DsMax 搭建实验室场景与实验器材。搭建实验器材模型如图3(a)、(b)所示。

图3 搭建实验器材模型

实验台是学生主要的操作场景。针对具体实验,搭建实验所需的器材,例如电流表、电压表、滑动变阻器、定值电阻、开关、导线与电源等。虚拟实验器材如图4 所示。

图4 虚拟实验器材

实验系统设计了虚拟黑板,用于展示实验步骤与实验结论,为学生提供操作指引,帮助学生更好地完成实验。虚拟黑板如图5(a)、(b)所示。

图5 虚拟黑板

2.2.2 手势交互功能实现

手势交互功能的实现主要在Unity 中完成,在计算机中安装Leap Motion 驱动并将组件资源包导入Unity引擎,进行基础环境配置。采用C#语言与Leap Motion SDK根据实验流程编写手势交互脚本,实现场景渲染与交互功能。

(1)场景切换。由于虚拟仿真实验包含许多功能和模型,如果只使用一个场景,功能模块会过于复杂,增加系统的执行时间,给学生带来不佳的交互体验,所以搭建了多个实验场景,这样既能够降低各个场景的复杂度,提高渲染速度,又能使实验系统层次更加分明,便于学生进行操作。Leap Motion 与虚拟物体交互的核心是碰撞检测,需要根据物体的形状添加不同类型的Collider。Leap Motion识别范围有限,大致为设备顶部以上25~600 mm 处[13],需要赋予Collider 适当的Size属性,使虚拟手能够在适当的位置与物体发生交互。

学生使用右手点击手势切换场景的核心代码如下:

(2)实验交互。Leap Motion 的交互基于碰撞检测,交互对象需要具有某种形式的Collider 组件,Box Collider是一个具有立方体外形的基本碰撞体,在本实验中使用次数最多。学生使用Leap Motion 控制器与实验器材进行交互。

学生用右手点击手势触碰开关,开关闭合,电路中产生电流,电流表与电压表的指针发生偏转。由于实验场景视角的原因,电流表与电压表的示数不易观察,在界面左上方增加了两个放大的示数面板,学生在实验过程中能够细致地观察指针的偏转情况,清晰读出示数。在虚拟仿真实验室中,所进行的各种仿真都具有智能化的设置和功能[14],对于一些实验步骤,实验系统会自动播放下一操作环节的语音提醒,界面上同时配以文字,多感官提醒学生注意实验过程,提高学生实验操作的专注度。闭合开关操作如图6 所示。

图6 闭合开关操作

核心代码如下:

学生用右手点击手势移动滑动变阻器的滑片改变其阻值,电流表与电压表的指针也会发生偏转,实现该功能需要使用到Slider 控件与Transform 类。Slider 控件有两种类型,分别是水平滚动条和垂直滚动条,其中Direction用来设置滑块的方向,默认为横向,也可以调整为纵向,Value 是滑块的默认值,默认范围为0~1。根据实验界面布局的需要,选择使用水平滚动条进行开发。在Slider中监听onValueChanged事件,当Slider的Value值发生变化时会调用事件。Transform 类是Unity常用的API接口之一,用于描述和控制物体的位置、旋转、缩放属性。调节滑动变阻器操作如图7所示。

图7 调节滑动变阻器操作

核心代码如下:

(3)数据记录。本文中的物理虚拟仿真将交互界面直接附加到学生的手上,以便某些重要功能始终在虚拟手可操作的范围之内。交互界面中每一个按钮都有一个盒子碰撞体用于和虚拟手进行碰撞检测,当使用虚拟手点击交互界面的按钮时,将调用与按钮相绑定的功能函数[15]。学生左手向上翻转,在虚拟实验环境中会打开一个交互界面,根据实验需求,学生可以使用虚拟手对界面上的按钮进行操作。学生点击记录数据按钮,黑板上会实时显示电流表与电压表的示数。操作完成后,学生左手向下翻转,交互界面关闭。左手向上翻转操作如图8 所示。

图8 左手向上翻转操作

2.3 测量小灯泡电功率实验实例开发

测量小灯泡在不同电压下工作时的电功率,利用电压表测量小灯泡两端的电压,电流表测量通过小灯泡的电流,根据公式P=UI计算小灯泡的电功率。测量小灯泡在额定电压、约大于额定电压、约小于额定电压下的电流值、电功率值并观察小灯泡的发光情况。

学生使用虚拟手触碰开关,开关闭合,电路中产生电流,电流表与电压表的指针发生偏转,灯泡发光。实现灯泡发光的功能,需要使用自发光材质模拟灯泡发光的效果,为了使效果更加真实,在灯泡的中心添加了一个点光源(Point Light),通过调节intensity属性的大小,改变点光源的发光强度,调节灯泡的发光强度。灯泡发光的效果是通过右手点击手势触碰开关触发,以EnableKeyword(“_EMISSION”)实现。灯泡亮度随着滑动变阻器滑片的移动而发生变化,通过ValueChangeCheck()方法实现。由于开关闭合后灯泡中点光源的intensity 值为5,所以slider 的Value 值也要加5,使灯泡的亮度在闭合开关后与开始调节滑动变阻器时保持一致。核心代码如下:

该实例可以使用右手挥动手势控制黑板左右切换,查看各个黑板上实验步骤的内容。进入实验器材场景,选择想要观察的实验器材,左手张开,实验器材放大,左手握拳,实验器材缩小,移动虚拟手,实验器材能够全方位的进行旋转,使学生在实验前能够仔细地观察各种实验器材。其他功能与闭合电路欧姆定律的实验类似。实验界面如图9 所示。

图9 实验界面

3 结语

利用一种全新的人机交互技术,借助Unity 引擎和Leap Motion,实现两个具体的物理虚拟仿真实验。探索了基于Unity引擎与Leap Motion进行物理虚拟仿真实验的具体制作过程,实现“通过指尖、人手的运动与计算机发生自然交互”,用视觉化的方式,表现信息与数据的内在联系,体现出虚拟仿真实验自然交互的特点。

本虚拟仿真实验仍有一些需要改进的地方,如没有对错误的操作进行反馈设计、可逆性设计与容错性设计。后续将继续改进与完善,为学生提供一个更佳的虚拟仿真实验平台,为体感技术在虚拟仿真实验中的应用提供有意义的探索。

猜你喜欢
体感手势灯泡
灯泡创意秀
体感交互技术在脑卒中康复中的应用
点亮小灯泡
点亮小灯泡
人体体感感知机械手设计与实现
挑战!神秘手势
灯泡创意展
V字手势的由来
引入体感控制技术推动校园足球发展
非触控式的体感机械臂交互控制系统研究