项融融,李 博,赵 桥
(中北大学仪器科学与动态测试教育部重点实验室,山西太原 030051)
目前,人机交互方式[1]多以鼠标和键盘为主,形式单一,因此人们对人机交互提出了更高的需求,从“以机器为中心”转变成“以人为中心”,随着社会经济形态的发展,人们逐渐迈入了“体验经济时代”,消费者越来越关注个性化体验,人们对这种新型的体验式消费充满了兴趣。
人机交互中的手势识别技术[3]被广泛应用在各个领域。在医学领域,文献[4]使用Kinect 硬件设备远程传输信息,为那些需要承受周期性物理治疗的人们提供便利,患者身材和运动数据通过硬件设备传输给远端医院的医生并进行分析,这项发明为病人创造了更完整的、参与式的、舒适的体验;文献[5]研究出了一个虚拟图形模型制作系统,用户使用一个头戴式的VR 设备就可以在此系统中制作手工,基于动作语法的手势输入和跳跃动作为用户提供了更真实的体验。国内各大高校以及科研所也都对手势识别技术进行了深入的研究,文献[6]将手势识别与VR 技术相结合,利用Leap Motion 设备识别手势,将其运用到测量、拆装等工程教育领域;文献[7]将手势交互方式应用到了传统偶戏中,形成了新型方式的表演与操作形式,让更多人了解中华传统文化的内涵。
近年来,针对室内设计[8]过程中存在的操作复杂、用户不满意时修改麻烦等问题,设计了一种基于Leap Motion 手势识别设备[9]的三维交互系统,首先根据用户需求使用3ds Max 建立室内的三维模型,Unity3D 工具将所有组件整合,接着设计了七种常用手势,通过Leap Motion 硬件设备进行手势识别并对场景内物体进行相应操作。经过试验表明,该系统能正确识别出设计好的各类手势,用户可以更加直观地参与到室内的三维场景虚拟交互中,增加体验感与趣味性。
Unity3D[10]简称U3D 或者Unity,是当今世界范围内主流的3D 游戏开发引擎,其游戏开发引擎可跨平台,用Unity3D 开发的游戏可以在电脑、手机、游戏机、浏览器等几乎所有常见平台上运行。
选用Unity3D 游戏引擎开发的优势主要有以下几点:
1)部署简单
相对OGRE 等其他游戏引擎,Unity3D 游戏引擎部署更为简单,其自身携带了一个可跨平台的集成开发环境;另外,Unity 中其他插件的部署也是非常简便的,只需要以unitypackage 后缀进行发布即可。
2)具有完整的技术栈
Unity 具有一个非常大规模的插件市场。
3)C#作为脚本支持
Unity 应用以C#为脚本,平衡了编程和运行之间的效率,在游戏开发引擎中有很好的配合度。
Leap Motion[11]外形小巧,携带便利,使用方便,其尺寸约为80 mm×30 mm×11 mm,重量约为32 g。Leap Motion 顶部为黑色半透明玻璃,用于采集手势,侧面为铝合金材质的外壳,底部是橡胶垫脚。
Leap Motion 采用双目摄像头[12],在进行手势识别时需要对两个摄像头进行标定,计算两台摄像机在其空间中的几何角度和位置。首先,需要先标定其中一个摄像机,计算其投影变换矩阵、透镜畸变的参数和世界坐标系中摄像机的旋转矩阵和平移向量;其次,对这两台摄像机同时进行标定,与上面步骤一样,计算出同一水平线上的两台机器在空间中的相对几何关系;然后,通过手势分割算法对刚才呈现出来的视觉图像进行分割,标定出最初人手的位置,并将其设置为手势跟踪算法的初始位置,再利用跟踪算法追踪人手的动作,依据最后跟踪得到的结果即可对手势进行识别。若在跟踪过程中人手突然消失则需要重新对这个手势进行识别与分割,并重复上述步骤。
双目手势识别[13]流程图如图1 所示。
图1 双目手势识别流程图
除此之外,由于Unity3D 平台[13]和Leap Motion 体感控制器分别应用了不同的坐标系,因此在开发过程中需要对Leap Motion 数据进行转化,统一标准。对于右手坐标系中的坐标(x,y,-z),根据式(1)将其转化为左手坐标系中的坐标(x,y,z)。
该系统利用Leap Motion 硬件设备来获取用户手部姿势以及手的运动轨迹,通过定义好的手势[14]对计算机中的三维物体进行相应操作,结合3ds Max软件搭建整体框架,最后采用Unity3D 工具对其进行整合,进而搭建出三维场景,并运用C#语言进行编译。
该文选用Unity2019 作为开发平台,Leap Motion硬件设备的SDK 选择Leap_Motion_Developer_Kit_4.0.0,开发者工具包为Leap_Motion_Core_Assets_4.4.0。
打开Unity3D 软件,将开发者工具包全部导入,如图2 所示,可以看到Assets 下多了一个名为Leap Motion 的文件。
图2 导入开发者工具包
在开发者工具包中找到Examples 文件夹,选择支持Desktop 版本的Capsule Hands,打开后可以看到游戏画面中出现了一对胶囊手,调整main camera 的位置,使视角变为从上至下可以看到胶囊手的位置,如图3 所示。
图3 胶囊手展示
该系统以客厅为室内三维建模背景,Leap Motion 硬件设备用于手势识别与跟踪,Unity3D 软件进行人机交互,图4 为基于Unity3D 虚拟交互系统的框架[16]。
图4 基于Unity3D虚拟交互系统的框架
该系统框架流程介绍如下:
1)利用3ds Max 软件进行客厅框架的构建,并利用该软件制作出客厅内的各种家具,最后以.fbx 格式导出。
2)将Leap Motion 连接到电脑上,观察其上面的指示灯是否亮起,若亮起则表示连接成功,并通过Leap Motion 官网下载开发者工具包。
3)在Unity3D 官网上下载相关开发包,进行环境配置,将Leap Motion 开发者工具包导入Unity3D 中。
4)将虚拟客厅及其家具导入Unity3D 中,并打开Examples 文件夹下Desktop 版的Capsule Hands,调整好主相机位置即可通过Leap Motion 硬件设备进行虚拟交互。
客厅场景以及场景内的三维物体均由3ds Max软件进行构造,构造方法为在基本体建模的基础上,利用延伸功能伸展出物体的立体模型,以下是以客厅场景为实例的建模过程:
1)利用客厅的CAD 图进行主体框架的构造,对CAD 图进行描边,描绘出其外部轮廓。
2)选中列表里的挤出功能,构建出客厅的墙壁、门框、窗户等平面。
3)选择捕捉功能,捕捉各个顶点并创建矩形,将其转换成可编辑模式,并增加其厚度。
客厅主体框架模型效果如图5 所示。
图5 客厅主体框架
客厅中的家具以及摆件则按照上述描述,通过挤出、捕捉等功能创建模型,将所有模型导入Unity3D 中,在进行导入时应注意以下几项:
1)导入前应该统一物体的比例和单位,调整好物体的尺寸,确保导入Unity3D 后物体的大小适中。
2)从3ds Max 导出时应注意保存为.fbx 格式,保证所有三维物体可以在Unity3D 中正常显示。
3)导入Unity3D 后可能会出现材质丢失的现象,只需要对丢失纹理的物体进行重新贴图即可。
2.2.1 手势设计
该系统主要定义了七种手势,分别为选中手势,可通过食指进行物体的选中;复制手势,选中物体后,食指和中指同时张开,可复制出原先选中的物体;移动手势,选中物体后,手指全部张开,可实现移动选中的物体;放大手势,在选中某个物体后,大拇指和食指同时伸直可以放大选中的物体;贴纹理手势,选中物体后,通过比划“ok”手势给选定物体张贴纹理;旋转手势,手握拳,伸出大拇指和小拇指可以实现将选中物体进行旋转操作;删除手势,选中物体后进行握拳即可删除该物体,各种手势定义如图6所示。
图6 手势定义
2.2.2 手势特征提取
Leap Motion 体感控制器采用红外成像原理,对手的三维空间运动进行重建,是一种检测并且跟踪人手和手指的硬件设备,通过获取手的位置、方向、向量等关键信息对人手的手势进行判断和操作。
Leap Motion 会根据手势特征,从人手的骨骼模型出发,建立手指的关键点信息并进行建模和手势特征提取。基于人手的骨骼模型可看到手势结构生成的几个关键点并显示所有手指,通过建立的平面五边形手势模型可以构造出手骨架的关键点信息,以此来获取手势特征,如图7 中手骨架的关键点信息所示,大拇指为Thumb,食指为Index,中指为Middle,无名指为Ring,小拇指为Pinky,依据关键点信息可建立出所需要的手势。根据手部的属性定义手指方向、手指长度、手掌速度、手指离手掌心距离等信息,根据算法判断出手势的动作状态以及手势的操作过程。
图7 手骨架关键点信息
该系统基于Leap Motion 手势识别硬件设备,以客厅为室内设计的场景,通过定义七种不同的手势来实现与客厅场景内陈列物品之间的虚拟交互操作,七种手势效果展示如图8 所示。
图8 手势效果展示图
由图8 可见,选中手势通过食指对物体进行选中操作,界面左上角提示选中物体的名称;删除手势,选中该物体后握拳,即可使该物体消失;移动手势为五指全部打开,选中的物体进行移位;放大手势通过大拇指和食指张开,其他手指弯曲的手势对已经选中的物体进行放大操作;旋转手势通过比划数字6 对物体进行旋转;复制手势为食指和中指伸直,其余手指握拳,实现对物体的复制,可以看出图中复制物体的名称后面加了Clone 的字样,该物体即为复制后的物品;贴纹理手势通过“ok”手势对场景中选中的物体进行张贴纹理的操作。
该演示过程经过了手势设计、手势识别与跟踪过程,所提出的系统可以正确地识别并展示各种设计好的手势,满足了系统要求,并获得了较为满意的结果。
该文设计了一种基于手势识别的室内设计虚拟交互系统,通过3ds Max 和Unity3D 软件根据需求搭建室内的整体样式,设计了七种常用手势,利用Leap Motion 硬件设备对其进行识别与跟踪,用户可以对客厅中的家居进行设计和布局,使其在现场能够更加直观、方便地感受室内设计的过程以及装修的结果和乐趣。试验结果表明,该系统能够正确地识别各种手势,操作简单方便、直观自然,大大增强了人机交互的乐趣。