一种3D交互方法、装置、计算机设备及存储介质与流程

文档序号:14473847阅读:160来源:国知局
一种3D交互方法、装置、计算机设备及存储介质与流程

本申请涉及手势识别技术领域,尤其涉及一种3d交互方法、装置、计算机设备及存储介质。



背景技术:

随着计算机等电子产品更新换代的速度逐渐加快,硬件设备的性能和普及程度不断提高,各种设备都走入了人们的生活,出现了各种触控式的硬件,触控式操作更加符合人类的生活习惯,并且更加便捷。随着触控方式的普及,触控操作的不便和局限性也渐渐显露出来,小尺寸的触控面板未必能满足对大面积场景的显示效果要求,而当屏幕过大时,触控操作就会显得非常不便,所以触控操作也还是让操作摆脱不了操作硬件的束缚。而且,在公共场所中,接触式的电子设备会带有许多细菌病毒,给人们带来不少卫生问题。

随着数字内容3d化(vr和ar都是3d化内容)的趋势越来越明显,采用自然手势进行非接触式操控的需求越来越明显。目前类似hololens等ar设备提供了简单的隔空手势操作,但只有弯曲手指进行点击及手掌向上呈打开动作的两个基础手势,不能满足复杂内容制作需求;kinect设备且对操作场景的要求较高,对距离有一定要求,如果距离过近则无法进行动作捕捉,且通常需要站立操作,时间一长会使操作者感到疲累。也就是说,现有的非接触式手势识别易用性差、纠错率底、操作流畅度底,误判率高。



技术实现要素:

本申请实施例提供了一种3d交互方法、装置、计算机设备及存储介质,用于降低手势操作的误判率,提高操作流畅度。

本申请实施例提供的3d交互方法,包括:

非接触式手势控制设备采集手势的运动轨迹数据;

根据所述运动轨迹数据识别出所述手势的手部关节位置信息;

根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以在交互界面实现交互操作,其中,所述手势在所述非接触式手势控制设备的采集范围内。

可选地,所述根据所述运动轨迹数据识别出所述手势的手部关节位置信息,包括:

根据所述运动轨迹数据识别出所述手势的手部关节位置信息,所述手部关节位置信息包括五个手指的指尖坐标及手腕坐标,或者五个手指的指尖坐标及手心坐标。

可选地,所述根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以实现交互操作,包括:

当在第一预定时间内,只有一个手指停留的累积位移偏差小于第一阈值距离,其余手指为拳状时,则识别为单指停留触发;

当在第二预定时间内,至少二个手指停留的累积位移偏差小于第二阈值距离,其余手指为拳状时,则识别为多指停留触发。

可选地,所述根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以实现交互操作,包括:

当在第三预定时间内,只有一个手指往屏幕方向移动的累积位移偏差大于第三阈值距离且角度累计偏差小于第一阈值角度,及其余手指为拳状时,则识别为单指向前触发;其中,所述屏幕用于显示交互界面;

当在第四预定时间内,至少二个手指往屏幕方向移动的累积位移偏差大于第四阈值距离且角度累计偏差小于第二阈值角度,及其余手指为拳状时,则识别为多指向前触发;其中,所述屏幕用于显示交互界面。

可选地,所述根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以实现交互操作,包括:

当拇指与食指的距离小于第五阈值距离时,则识别为进入拖拽操作;

若所述拖拽操作的拖拽方向垂直于屏幕方向,则识别为前后拖拽手势;

若所述拖拽操作的拖拽方向平行于屏幕方向并沿水平方向运动,则识别为左右拖拽手势;

若所述拖拽操作的拖拽方向平行于屏幕方向并沿垂直与地面方向运动,则识别为上下拖拽手势;

若当前拖拽手势不满足前后拖拽,左右拖拽,上下拖拽中的任一条件,则识别为混合拖拽手势。

可选地,所述根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以实现交互操作,包括:

当所述手势快速由右向左挥动,且移动距离大于第六阈值距离、速度大于第一阈值速度及所述手势的移动方向与平行于屏幕方向的夹角小于第三阈值角度,则识别为返回操作;

当所述手势在非接触式手势控制设备的采集范围内不满足预先设置的手势触发条件时,识别为移动操作。

可选地,所述根据所述运动轨迹数据识别出所述手势的手部关节位置信息之后,还包括:

若虚拟空间移动向量与交互界面上的菜单窄边尺寸的比值小于预定比值,则识别所述手部关节位置信息在预设时间内的向前移动情况触发识别为对应的触发手势;

若虚拟空间移动向量与交互界面上的菜单窄边尺寸的比值大于预定比值,则识别所述手部关节位置信息在预设时间内的停留情况触发识别为对应的触发手势;

其中,所述虚拟空间移动向量为手指位移偏差与现实空间到虚拟空间因映射之乘积;

所述预设时间小于阈值时间时,则识别所述手部关节位置信息在预设时间内的向前移动情况触发识别为对应的触发手势;

所述预设时间大于阈值时间时,则识别所述手部关节位置信息在预设时间内的停留情况触发识别为对应的触发手势。

本申请实施例提供的3d交互装置,包括:

手势采集模块,用于通过非接触式手势控制设备采集手势的运动轨迹数据;

位置计算模块,用于根据所述运动轨迹数据识别出所述手势的手部关节位置信息;

手势识别模块,用于根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以在交互界面实现交互操作,其中,所述手势在所述非接触式手势控制设备的采集范围内。

本申请实施例提供的计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述的3d交互方法的步骤。

本申请实施例提供的计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的3d交互方法。

从以上技术方案可以看出,本申请实施例具有以下优点:

本实施例中,通过采集手势的运动轨迹数据;根据所述运动轨迹数据识别出所述手势的手部关节位置信息;根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以在交互界面实现交互操作,其中,所述手势在所述非接触式手势控制设备的采集范围内;提高了非接触式手势识别的易用性,降低了误判率,操作流畅度更高,兼容性更佳,提高了用户体验。

附图说明

图1为本申请实施例3d交互方法的一个实施例示意图;

图2为本申请实施例3d交互方法的空间坐标示意图;

图3为本申请实施例3d交互方法的单指停留触发示意图;

图4为本申请实施例3d交互方法的多指停留触发示意图;

图5为本申请实施例3d交互方法的单指向前触发示意图;

图6为本申请实施例3d交互方法的多指向前触发示意图;

图7为本申请实施例3d交互方法的前后拖拽手势示意图;

图8为本申请实施例3d交互方法的左右拖拽手势示意图;

图9为本申请实施例3d交互方法的上下拖拽手势示意图;

图10为本申请实施例3d交互方法的返回手势示意图;

图11为本申请实施例3d交互装置的一个实施例示意图;

图12为本申请实施例中计算机设备的结构示意图。

具体实施方式

本申请实施例提供了一种3d交互方法、装置、计算机设备及存储介质,用于降低手势操作的误判率,提高操作流畅度。为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明。但是本发明能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似改进,因此本发明不受下面公开的具体实施的限制。除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

下面对本申请实施例中的具体流程进行描述,请参阅图1,本申请实施例中3d交互方法的一个实施例包括:

100、非接触式手势控制设备采集手势的运动轨迹数据。

本实施例中,本申请提供了一个非接触式手势识别的系统,通过非接触式手势控制设备采集人的手势数据,进而对应控制交互界面,实现3d交互。在实际应用时,就采集数据的硬件来讲,非接触式手势控制硬件(例如leapmotion)只有巴掌大小,可以很好的嵌入并隐藏到场景中,用户可以坐下进行操作,只需挥动手掌部分即可,整个硬件和操作空间所占的位置很小。优选地,采用的手部数据采集硬件为:leapmotion,realsense等可以提供双手手部精细动作输入的设备,也可采用其他满足手部关节数量要求以及数据精度的采集设备。

200、根据所述运动轨迹数据识别出所述手势的手部关节位置信息。

本实施例中,非接触式手势控制设备采集手势的运动轨迹,然后发送给计算机设备进行算法处理,然后识别出手势的手部关节位置信息。关于手势的手部关节识别,现有技术中有多种算法可实现,譬如指尖算法、手心算法及手腕算法等可识别出图像中手势的指尖、手心及手腕等部位,当然这些部位有对应的坐标。

在实际应用时,所述手部关节位置信息包括五个手指的指尖坐标及手腕坐标,或者五个手指的指尖坐标及手心坐标。本申请实施例对手势进行部位识别,可采用6个关键坐标进行后续的计算,也就是手腕或手心、以及五个指尖,这样的部位选取方式,后续的算法运算兼顾了准确率和运算效率。当然,本申请进一步可采用手势所有的部位的坐标进行后续的计算,包括指尖、手心及手指关节的坐标等,这样的选取方式后续的计算准确率更高,不过相对的,计算量更大。本申请采用腕关节(手心也行),拇指指尖,食指指尖,中指指尖,无名指指尖及小指指尖,一共6个关节的坐标进行后续的手势识别计算。本申请的每个指关节需要手部感应设备提供精确的三维空间坐标数据,精度不低于1mm。也就是说,实际用来计算手势的关键坐标有6个,包括五个手指末端坐标以及手心坐标或手腕坐标。

300、根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以在交互界面实现交互操作,其中,所述手势在所述非接触式手势控制设备的采集范围内。

本实施例中,根据所述手部关节位置信息,譬如手指指尖坐标及手腕坐标等,手势在所述非接触式手势控制设备的采集范围内,也就是人的手一定要在非接触式手势控制设备的识别范围内停留或移动,本申请根据手势的手部关节在预设时间内的停留情况或移动情况,从而触发预先设置的手势触发条件,识别为相应的触发手势。所述预设时间可根据实际情况进行设定,譬如0.4秒,0.9秒等。这样,在识别出对应的触发手势之后,计算机设备便可在交互界面进行交互操作。

在实际应用时,计算出来的手势识别结果,可应用在计算机端软件的平面2d的ui操作,及3d的ui操作。关于2d菜单,不能通过转动观察视角获得不同视觉效果的菜单,一般在软件中可以通过x,y进行位置定义,用width,height进行尺寸定义。关于3d菜单,能通过转动观察视角获得不同视觉效果的菜单;一般在软件中可以通过x,y,z进行位置定义,用width,height,length进行尺寸定义。本申请都可以通过识别出来的手势对应操作2d或3d菜单。

本申请实施例,通过采集手势的运动轨迹数据;根据所述运动轨迹数据识别出所述手势的手部关节位置信息;根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以在交互界面实现交互操作,其中,所述手势在所述非接触式手势控制设备的采集范围内;提高了非接触式手势识别的易用性,降低了误判率,操作流畅度更高,兼容性更佳,用户的体验感更好。

请参阅图2,空间坐标如图2所示,以下图示及定义,假设手掌在屏幕前面;平行屏幕为由左向右为x轴正向;平行屏幕为由底向上为y轴正向;垂直屏幕为由外向里为z轴正向。具体来说,就是在屏幕上设置坐标系,然后根据非接触式手势控制设备采集的手势图像在屏幕上映射得到对应的坐标信息,从而进行手势识别算法计算。

请一并参阅图3和图4,进一步地,所述根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以实现交互操作,包括:

当在第一预定时间内,只有一个手指停留的累积位移偏差小于第一阈值距离,其余手指为拳状时,则识别为单指停留触发;

当在第二预定时间内,至少二个手指停留的累积位移偏差小于第二阈值距离,其余手指为拳状时,则识别为多指停留触发。

在本实施例中,本申请预先设置了多个触发手势的识别条件,手部在菜单或者其他交互热区停留或者向前(往屏幕方向)移动,视为触发手势。触发手势一般是为了进行功能选择,场景切换等等目的而进行的交互行为,是软件开发中最常见的交互手段。为了满足不同的应用场景,本申请中定义了多种触发行为,包括单指停留触发和多指停留触发。

关于单指停留触发,依照用户常规操作习惯,以所述只有一个手指为食指为例说明如下:一般要求用户食指向前,其他手指握成拳头形状,食指在空间中明显更远离身体端。关于如何识别出单个手指向前,其余手指握成拳头状,可通过现有多种手指识别算法进行识别,此处不再详述。进一步地,譬如,在第一预定时间内,食指手指停留在热区内,并且食指手指尖的累积位移偏差小于第一阈值距离,则识别为单指停留触发。pdslta为当前帧食指位置pt和上一帧食指位置pt-1差值向量的长度。假设当前时间为t,为时间在{t-i,t}时间段内,食指指尖的位置偏移值之和,关于t,i均为时间,也就是说在t-i到t的这段时间内,如果所有帧的偏移量之和小于第一阈值举例,则识别为单指停留触发。需要说明的是,常规的影像为1秒24帧,那么对应一帧的时间间隔为1/24秒。而本申请中的帧为3d场景刷新画面的基本单位,一般场景在30帧以上,vr场景在90帧以上,那么对应的时间间隔=1/帧数(秒)。在约束3d场景渲染帧数的情况下,时间间隔和帧数相互换算并有等价实现效果。停留动作是用户面在人机交互过程中,面对感兴趣的物体或热点的本能反应,具有最低的使用学习成本。当然,还可以识别其他单个手指停留触发动作,其原理与上述食指停留触发的识别原理相同,此处不再赘述。其中,第一阈值距离及第一预定时间可根据实际进行设置。

关于多指停留触发,多指停留触发动作不要求用户有特定手部动作,手部自然弯曲或伸展都可以。在用户操作过程中,实时计算靠近屏幕端手指位置(即手部感应器z轴树枝最大者)。取其在时间t的位置作为pt,替代单指停留触发中的食指位置,其余计算方式完全相同。多指触发不要求用户学习手部动作,只需做出自然反应,拥有比单指停留触发更低的使用学习成本。关于第二阈值距离可根据实际情况进行设定,其值可与第一阈值距离相同,也可不同。第二预定时间可根据实际情况进行设定,可与第一预定时间相同或不同。

请一并参阅图5和图6,进一步地,所述根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以实现交互操作,包括:

当在第三预定时间内,只有一个手指往屏幕方向移动的累积位移偏差大于第三阈值距离且角度累计偏差小于第一阈值角度,及其余手指为拳状时,则识别为单指向前触发;其中,所述屏幕用于显示交互界面;

当在第四预定时间内,至少二个手指往屏幕方向移动的累积位移偏差大于第四阈值距离且角度累计偏差小于第二阈值角度,及其余手指为拳状时,则识别为多指向前触发;其中,所述屏幕用于显示交互界面。

具体来说,除了上述的预先设定的停留触发行为之外,本申请进一步还设定了向前触发行为,向前触发,是指手势的手指往屏幕方向移动,所述屏幕也就是用于显示交互界面的屏幕,用户的手往这个屏幕方向移动,便可对应操作屏幕上显示的ui界面。

关于单指向前触发,还是所述以只有一个手指为食指为例进行说明如下(当然还可为中指、无名指等),在第三预定时间内,食指手指停留在热区(也就是非接触式手势控制设备的识别范围)内并往屏幕方向移动,其累积位移偏差大于第三阈值距离,并且角度累计偏差小于第一阈值角度,则视为单指向前触发。其中,累积位移偏差计算方式与单指停留触发中的计算方式相同,角度累计偏差是指手指移动与垂直屏幕的向量的角度差,在时间{t-i,t}内的累积数值。假设adelta为当前帧食指位置at和上一帧食指位置at-1的方向向量vt,往屏幕方向向量为vforward,vt与vforward的夹角便是adelta在时间t的位置偏差值。往前触发对用户的动作规范有一定要求,但是在最短时间内进行触发操作。关于第三阈值距离可根据实际需要进行设置,譬如1cm等;第一阈值角度也可选择设置,譬如为15°等。当然,还可以识别其他单个手指向前触发动作,其原理与上述食指向前触发的识别原理相同,此处不再赘述。

关于多指向前触发动作,不要求用户有特定手部动作,手部自然弯曲或伸展都可以。在用户操作过程中,实时计算靠近屏幕端手指位置(即手部感应器z轴树枝最大者)。取其在时间t的位置作为pt,替代单指向前触发中的食指位置,其余计算方式完全相同。关于第四阈值距离可根据实际情况进行设定,其值可与第三阈值距离相同或不同。第四预定时间可根据实际情况进行设定,可与第三预定时间相同或不同。关于第二阈值角度可自行设定,可与第一阈值角度相同或不同。

请一并参阅图7、图8和图9,进一步地,所述根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以实现交互操作,包括:

当拇指与食指的距离小于第五阈值距离时,则识别为进入拖拽操作;

若所述拖拽操作的拖拽方向垂直于屏幕方向,则识别为前后拖拽手势;

若所述拖拽操作的拖拽方向平行于屏幕方向并沿水平方向运动,则识别为左右拖拽手势;

若所述拖拽操作的拖拽方向平行于屏幕方向并沿垂直与地面方向运动,则识别为上下拖拽手势;

若当前拖拽手势不满足前后拖拽,左右拖拽,上下拖拽中的任一条件,则识别为混合拖拽手势。

本实施例进一步定义了拖拽操作,或者叫拖动操作。在3d空间中,经常涉及对物体进行拖拽,缩放,旋转操作。或对相机进行平移,旋转,推拉操作。当用户用食指捏住拇指以后,视为进入拖拽操作,并根据使用环境区分为一下四种拖拽操作。进入拖拽操作的判定方式为,设拇指、食指指尖位置分别为pt、pi,从拇指到食指的向量的模为|pipt|小于一定数值(也就是第五阈值距离,建议值为5mm),则视为进入拖拽操作,假设当前时间为t,食指位置为pit,开始进入拖拽的时间为t0,食指位置为则当前的拖拽向量设平行于屏幕方向由左朝右方向为vright,垂直于屏幕朝里方向为vforward,平行了屏幕由下往上方向为vup。设角度偏差阈值为ang=20°,当然,该角度偏差阈值ang还可根据实际情况进行设置。

前后拖拽:当拖拽方向垂直于屏幕方向,视为前后拖拽手势;即∠(at,vforward)<ang或∠(at,-vforward)<ang;也就是说,拖拽向量at与垂直屏幕方向向量vforward的夹角小于20度,认识别为前后拖拽;

左右拖拽:当拖拽方向平行于屏幕方向并沿水平方向运动,视为左右拖拽手势;即∠(at,vright)<ang或∠(at,-vright)<ang;也就是说,拖拽向量at与平行屏幕左右方向向量vright的夹角小于20度,认识别为左右拖拽;

上下拖拽:当拖拽方向平行于屏幕方向并沿垂直与地面方向运动,视为上下拖拽手势,即∠(at,vup)<ang或∠(at,-vup)<ang;也就是说,拖拽向量at与平行屏幕上下方向向量vup的夹角小于20度,认识别为上下拖拽;

混合拖拽:当拖拽手势不满足前后拖拽,左右拖拽,上下拖拽中的任一条件,或者预定义为混合拖拽手势,则视为混合拖拽手势。

请参阅图10,进一步地,所述根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以实现交互操作,包括:

当所述手势快速由右向左挥动,且移动距离大于第六阈值距离、速度大于第一阈值速度及所述手势的移动方向与平行于屏幕方向的夹角小于第三阈值角度,则识别为返回操作;

当所述手势在非接触式手势控制设备的采集范围内不满足预先设置的手势触发条件时,识别为移动操作。

具体来说,上述实施例定义了停留手势识别、向前手势识别及拖动手势识别,本实施例中,进一步定义了返回手势操作和移动手势操作,具体来说,在非触摸,非拖拽过程中,手部快速由右向左挥动,满足移动距离大于第六阈值距离(建议值20cm以上)、速度大于第一阈值速度(建议值0.5m/s)和平行方向夹角小于第三阈值角度(建议值30度)时;则视为返回操作。而手部在可检测范围内,但又不满足其他手势触发要求的情况下,定义为移动,移动一般只作为提示性符号存在。

本发明提供了一种基于非接触式手势操作硬件的控制系统,可直接应用于电脑、触摸屏和投影等用户界面的非触控操作。可应用在vr,ar等非鼠标,触摸控制的3d场景。可应用在创意3d游戏输入。通过非接触式手势控制硬件采集操作者悬空的手掌(包括手腕和五指)的运动轨迹和手势,从而对系统进行操控。随着目前数字内容由2d化转向3d化,需要一套丰富,高效,低误判的3d空间操作方法。本发明提供了一整套的3d空间隔空操作方案。

本发明提供了一整套潜心研究的可应用于不同环境下、不同功能的操作手势。有点击、退出、选定、拖拽、旋转等常用操作,还有定制的特殊组合等复杂操作,不但满足日常需求,还可以满足特殊环境的操作需求。在研发过程中,经过成百上千次的实验,从易操作、幅度小、符合自然习惯等角度出发,手势的纠错性非常高,在开发过程中采集了不同用户的手势数据,所以在日常使用中,可以识别一些不太标准的操作手势,并且会自动过滤一些人类惯有的多余手势。并且充分考虑到硬件平台的移植性问题,兼容性很好,可应用于不同的非接触式控制硬件上,适用于几乎所有的非接触式手势控制系统。

以下以一应用实施例对本发明的3d交互方法中的手势识别具体算法与应用详细说明如下。需要说明的是,帧与时间间隔:帧为3d场景刷新画面的基本单位,一般场景在30帧以上,vr场景在90帧以上。时间间隔=1/帧数(秒)。为简化描述及公式表达,以下统一采用帧作为计算单位,在约束3d场景渲染帧数的情况下,时间间隔和帧数相互换算并有等价实现效果。

具体来说,手势名称为单指停留触发;其手势定义为:其余手指弯曲,食指向前,食指三位空间位置为pos,当前帧为i=0;往前n帧为i=n;在连续n帧里面,累积手指位置偏差(位置偏差向量长度总和)低于阈值vthreshhold,则判定为单指停留触发;公式如下:其中,i和n为整数。

相应的多指停留触,作为单指停留触发的补充,多指停留触发指在无界面引导,无明确操作意图,用户做出伸直或弯曲的自然姿态情况下,采用最靠近屏幕的手指作为触发点,并进行相关触发操作的情况。以引导性操作,或者泛菜单操作居多。设手指末端三维位置分别为pos0,pos1,pos2,pos3,pos4;pos=max(pos0,pos1,pos2,pos3,pos4);以pos替代“单指停留触发”的食指坐标,判定条件相同。

关于单指向前触发,其手势定义:其余手指弯曲,食指向前,食指三位空间位置为pos,当前帧为i=0;往前n帧为i=n;

手指运动向量为:vdelta=posi-posi+1;

屏幕往里向量为:vforward=(0,0,1);

vdelta和vforward的夹角ang(d-f)为:

在连续n帧里面,同时满足以下两个条件:单个手指的指尖往z正轴方向运动距离在大于dthreshhold,并且与vforward夹角小于angthreshhold;公式如下:

vdelta.magnitude>dthreshhold;

ang(d-f)<angthreshhold;

同时满足这两个条件则视为单指向前触发。

关于多指向前触发,作为单指停留触发的补充,多指停留触发指在无界面引导,无明确操作意图,用户做出伸直或弯曲的自然姿态情况下,采用最靠近屏幕的手指作为触发点,并进行相关触发操作的情况。设手指末端三维位置分别为pos0,pos1,pos2,pos3,pos4;

pos=max(pos0,pos1,pos2,pos3,pos4);以pos替代“单指向前触发”的食指坐标,判定条件相同。

关于手指拖动,子手势名称:“左右拖动”,“上下拖动”及“前后拖动”。也就是说,拖动手势包括三个子手势。

手势定义:食指和拇指捏住,其他手指自然弯曲。在捏住状态下左右移动。判断方法如下:

当前掌心空间位置为posi=0,往前n帧为posi=n,拇指空间位置tposi,食指空间位置fposi,捏住手指条件为:

(tposi-fposi).magnitude<vthreshholdmin;

并且

(tposi+1-fposi+1).magnitude>vthreshholdmax;

其中:vthreshholdmin和vthreshholdmax为双阈值,可以过滤掉“捏住”和“非捏住”状态切换中的数据偏差(手指在靠近的时候数据有一定偏差)。

反之,松开手指条件为:

(tposi-fposi).magnitude>vthreshholdmax

并且

(tposi+1-fposi+1).magnitude<vthreshholdmin;当状态为“非捏住-》捏住”的瞬间,记录当前位置posm;

当状态为“捏住-》非捏住”的瞬间,记录当前位置posn;

中间位置为posi.

wforward,vup,vright分别代表x,y,z轴,实际代码中需考虑正负轴情况。

以下算法仅考虑正轴情况,负轴亦然。

若:

则为:前后拖动;也就是满足上述公式的情况,识别为前后拖动手势。

若:

则为:上下拖动;也就是满足上述公式的情况,识别为上下拖动手势。

若:

则为:左右拖动;也就是满足上述公式的情况,识别为左右拖动手势。

当满足了拖拽手势要求,而不满足前后拖拽,上下拖拽,左右拖拽;则为:混合拖拽

上述停留触发手势、向前触发手势可应用于菜单选择及切换等3d交互操作;而拖动操作可应用于场景浏览,游戏元素浏览等3d交互操作。

关于何时触发停留情况手势识别,何时触发向前手势识别,进一步地,所述根据所述运动轨迹数据识别出所述手势的手部关节位置信息之后,还包括:

若虚拟空间移动向量与交互界面上的菜单窄边尺寸的比值小于预定比值,则识别所述手部关节位置信息在预设时间内的向前移动情况触发识别为对应的触发手势;

若虚拟空间移动向量与交互界面上的菜单窄边尺寸的比值大于预定比值,则识别所述手部关节位置信息在预设时间内的停留情况触发识别为对应的触发手势;

其中,所述虚拟空间移动向量为手指位移偏差与现实空间到虚拟空间因映射之乘积;

所述预设时间小于阈值时间时,则识别所述手部关节位置信息在预设时间内的向前移动情况触发识别为对应的触发手势;

所述预设时间大于阈值时间时,则识别所述手部关节位置信息在预设时间内的停留情况触发识别为对应的触发手势。

具体来说,停留触发手势和向前触发手势共包含四个手势,本申请统称为“触发手势”,具有类似的实现方式以及应用场景,在实际应用在按照以下规则进行选取,手指在维持停留过程会有一定程度的抖动和自然偏移,手指往前运动会加大便宜。所以就操作的稳定性而言,停留状态的稳定性比往前运动的稳定性要好,能够触发更精细内容。假设手指位移偏差为x(建议值10mm),现实空间到虚拟空间因映射为r(现实空间移动向量x,虚拟空间移动向量x*r),菜单窄边尺寸为y;则如果适合采用向前触发,也就是识别所述手部关节位置信息在预设时间内的向前移动情况触发识别为对应的触发手势;而如果适合采用停留触发,也就是识别所述手部关节位置信息在预设时间内的停留情况触发识别为对应的触发手势。优选地,上述公式可以反过来作为菜单尺寸的计算公式。

进一步地,停留触发为了避免和无意识停留状态向混淆,一般需要停留比较长的时间,而先前触发可以在极短时间内完成操作,对于要求快捷操作的情况(时间敏感度高),采用向前触发操作,具体来说,设要求触发时间为t(也就是预设时间),阈值时间为0.5秒。假设t<0.5s,适合采用向前触发;假设t>0.5s,适合采用停留触发。

进一步地,用户面对一个新的软件界面,熟悉的时间越长,需要记忆的规则越多,则学习成本越高。单手指操作对手指姿态有要求,一般需要在ui上体现操作指引,学习成本高。多手指操作对手无姿态要求,无学习成本。单手指操作适合体验时间长的内容(5分钟以上),例如游戏,vr,ar内容等。多手指操作适合公共场所的休闲小游戏或内容浏览,一般公共场所用户量大,无人引导,体验时间段。

本发明解决了传统人机交互技术对的相关问题,广泛支持2d内容及3d内容的交互需求,提供了一套高效,低学习成本的ui解决方案,针对常规ui操作需求提供了灵活的可选方案,针对3d交互内容提供了模板化的交互接口,为公共场所,非标准显示设备等提供了一套完整的人机交互方案。

上面对本申请实施例中的3d交互方法进行了描述,下面对本申请实施例中的3d交互装置进行描述:

请参阅图11,本申请实施例中3d交互装置的一个实施例包括:

手势采集模块10,用于通过非接触式手势控制设备采集手势的运动轨迹数据;

位置计算模块20,用于根据所述运动轨迹数据识别出所述手势的手部关节位置信息;

手势识别模块30,用于根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以在交互界面实现交互操作,其中,所述手势在所述非接触式手势控制设备的采集范围内。

图11对应的实施例中的3d交互装置具体的功能以及结构用于实现前述图1所示实施例中3d交互方法的步骤,具体此处不再赘述。

如图12所示,为本申请实施例中计算机设备的一个实施例示意图,具体包括:该计算机设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(英文缩写:cpu,英文全称:centralprocessingunits)1122(例如,一个或一个以上处理器)和存储器1132,一个或一个以上存储应用程序1142或数据1144的存储介质1130(例如一个或一个以上海量存储设备)。其中,存储器1132和存储介质1130可以是短暂存储或持久存储。存储在存储介质1130的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对3d交互装置中的一系列指令操作。更进一步地,中央处理器1122可以设置为与存储介质1130通信,在信息管理系统上执行存储介质1130中的一系列指令操作。

所述中央处理器用于执行以下步骤:

非接触式手势控制设备采集手势的运动轨迹数据;

根据所述运动轨迹数据识别出所述手势的手部关节位置信息;

根据所述手部关节位置信息在预设时间内的停留情况或移动情况触发识别为对应的触发手势以在交互界面实现交互操作,其中,所述手势在所述非接触式手势控制设备的采集范围内。

该计算机设备还可以包括一个或一个以上电源1126,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1158,和/或,一个或一个以上操作系统1141,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等。

上述图1所描述的3d交互方法中的步骤由3d交互装置基于该图12所示的结构实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请图1中实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(英文缩写:rom,英文全称:read-onlymemory)、随机存取存储器(英文缩写:ram,英文全称:randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1