本发明涉及虚拟现实设备技术领域,尤其涉及一种与虚拟现实设备交互的方法及虚拟现实设备。
背景技术:
虚拟现实技术(英文全称:virtualreality,缩写为vr),其基本实现方式是模拟虚拟环境从而给人以环境沉浸感。随着社会生产力和科学技术的不断发展,各行各业对vr技术的需求日益旺盛。
目前市面上的vr硬件设备,主要为vr头盔设备,穿戴之后让人身临其境的沉浸在虚拟的世界中。目前与vr头盔设备的交互方式主要为通过手持手柄进行交互,手柄通过蓝牙的方式连接上头盔,将手柄的位置、按键等信息传递给头盔,头盔做出相应的交互。目前手持手柄的缺陷为交互方式比较依赖手柄,当手柄没电时将失去较为方便可靠的交互设备,目前很多手柄较为沉重厚实,手持时间长后将是个负担。vr看重的是沉浸感,手持手柄进行交互操作不利于用户沉浸感的体验。
技术实现要素:
为解决上述技术问题,本发明提供一种与虚拟现实设备交互的方法及虚拟现实设备,以提升用户的使用体验。
第一方面,本发明提供的一种虚拟现实设备,包括:
显示器,用于显示用户界面;
控制器,用于:
接收摄像头拍摄的手部图像;
在从手部图像中识别到预设手指时根据识别到的预设手指中骨骼关键点的相对位置,在用户界面中生成射线控件;
根据所述射线控件的位置和用户界面中其他控件的位置,改变用户界面中所述射线控件所指向的控件的显示状态。
第二方面,本发明提供的一种虚拟显示设备,包括:
显示器,用于显示用户界面;
控制器,用于:
接收摄像头拍摄的图像;
在从图像中识别到预设物品时根据识别到的预设物品的相对位置,在用户界面中生成射线控件;
根据所述射线控件的位置和用户界面中其他控件的位置,改变用户界面中所述射线控件所指向的控件的显示状态。
第三方面,本发明提供的一种与虚拟现实设备交互的方法,包括:
接收摄像头拍摄的手部图像;
在从手部图像中识别到预设手指时根据识别到的预设手指中骨骼关键点的相对位置,在用户界面中生成射线控件;
根据所述射线控件的位置和用户界面中其他控件的位置,改变用户界面中所述射线控件所指向的控件的显示状态。
第四方面,本发明提供的一种与虚拟现实设备交互的方法,包括:
接收摄像头拍摄的图像;
在从图像中识别到预设物品时根据识别到的预设物品的相对位置,在用户界面中生成射线控件;
根据所述射线控件的位置和用户界面中其他控件的位置,改变用户界面中所述射线控件所指向的控件的显示状态。
本申请提供的技术方案中,提供一种与虚拟现实设备交互的方法及虚拟现实设备,所述方法包括:接收摄像头拍摄的手部图像;在从手部图像中识别到预设手指时根据识别到的预设手指中骨骼关键点的相对位置,在用户界面中生成射线控件;根据所述射线控件的位置和用户界面中其他控件的位置,改变用户界面中所述射线控件所指向的控件的显示状态。一些实施例中,通过用户手指可以与虚拟现实设备交互,避免现有技术中使用的手柄所带来的不便。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1中示例性示出了手部的骨骼关键点的示意图;
图2中示例性示出了一种与虚拟现实设备交互的方法的流程图;
图3中示例性示出了一种用户界面的示意图。
具体实施方式
为使本申请的目的、实施方式和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
基于本申请描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请所附权利要求保护的范围。此外,虽然本申请中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请中说明书和权利要求书及上述附图中的术语″第一″、″第二″、″第三″等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明(unlessotherwiseindicated)。应该理解这样使用的用语在适当情况下可以互换,例如能够根据一些实施例图示或描述中给出那些以外的顺序实施。
此外,术语″包括″和″具有″以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
本申请中使用的术语″模块″,是指任何已知或后来开发的硬件、软件、固件、人工智能、模糊逻辑或硬件或/和软件代码的组合,能够执行与该元件相关的功能。
目前市面上的vr硬件设备,主要为vr头盔设备,穿戴之后让人身临其境的沉浸在虚拟的世界中。目前与vr头盔设备的交互方式主要为通过手持手柄进行交互,手柄通过蓝牙的方式连接上头盔,将手柄的位置、按键等信息传递给头盔,头盔做出相应的交互。目前手持手柄的缺陷为交互方式比较依赖手柄,当手柄没电时将失去较为方便可靠的交互设备,目前很多手柄较为沉重厚实,手持时间长后将是个负担。vr看重的是沉浸感,手持手柄进行交互操作不利于用户沉浸感的体验。
而一些实施例中使用的与虚拟现实设备的交互方式为使用手势进行交互,这样可以避免使用手柄给用户带来的不便。
一些实施例中虚拟现实设备可以自身设置有摄像头,也可以外接摄像头。打开虚拟现实设备后,设备开机显示用户界面,同时启动摄像头,摄像头开启后即可对手势进行动作捕捉,将捕捉到的手部图像实时渲染到虚拟现实设备的3d用户界面中。
一些实施例中,所述虚拟现实设备带有双目摄像头,示例性的所述虚拟现实设备为vr头盔设备。
一些实施例中的所述双目摄像头设置有两个摄像头。双目摄像头就像人的双目,可以通过立体成像,获取所拍摄物体的深度信息,即人眼看到的世界是三维的,双目摄像头捕捉到的世界也是三维的。另外,只要能获得物体的深度信息,也可以不限制摄像头的数量。
一些实施例提供一种与虚拟现实设备交互的方法,一些实施例支持识别手指代替手柄进行操作,通过手指与虚拟显示设备进行交互操作,代替手柄提供的执行高亮等操作,。如图1所示,所述方法包括:
s100、接收摄像头拍摄的手部图像。
s200、在从手部图像中识别到预设手指时根据识别到的预设手指中骨骼关键点的相对位置,在用户界面中生成射线控件。
一些实施例中,还可以从摄像头接收摄像头根据拍摄到的手部图像生成的手部骨骼点数据,并根据手部骨骼点数据在用户界面中生成射线控件。
一些实施例中,由于右手为大部分人的习惯用手,所以所述预设手指可以为右手食指,当然,一些实施例也可以为了便于将左手作为习惯用手的用户,将所述预设手指设置为左手食指。另外,为了避免用户一直使用食指易疲劳,也可以将左手或右手上的任一手指作为预设手指。
一些实施例中可以将其他手指弯曲时,用户伸出的手指作为预设手指。
一些实施例中,在从手部图像中识别预设手指之前,所述方法还包括:从手部图像中识别第一预设手势;在识别到所述第一预设手势时,进行预设手指的识别;在从手部图像中识别不到第一预设手势,则不从手部图像中识别预设手指。示例性的,第一预设手势为只有预设手指伸出,其他手指握紧。这样可以对射线控件的生成进行预设手势的触发,避免了无意义的手指识别。
在一些实施例中,虚拟现实设备的手势识别功能可以开启或者关闭,一般默认为开启。
一些实施例中,当用户伸开手掌在虚拟现实设备前挥动两下,设备识别到手势后将手势交互功能关闭。当手势交互功能处于关闭状态时,可通过同样的手势手掌在虚拟现实设备前挥动两下,将手势交互功能开启。在另一些实施例中,也可通过辅助操作,例如使用虚拟现实设备上的按键操作,选择用户界面中的手势交互功能将其开启。
一些实施例中,所述在从手部图像中识别到预设手指时根据识别到的预设手指中骨骼关键点的相对位置,在用户界面中生成射线控件的步骤包括:
识别所述手部图像中的预设手指在第一三维坐标系中的预设手指坐标集,所述预设手指坐标集表征预设手指中骨骼关键点的相对位置;
根据所述预设手指坐标集,确定在第二三维坐标系中射线控件的位置坐标。一些实施例的第二三维坐标系为用户界面中的坐标系。
根据所述射线控件的位置坐标,在所述用户界面中生成所述射线控件。
一些实施例中,所述根据所述预设手指坐标集,确定在第二三维坐标系中射线控件的位置坐标的步骤包括:
将所述第一三维坐标系中的预设手指坐标集,转化为第二三维坐标系中的预设手指坐标集;
示例性的,图2中的第一骨骼点(在图2中标注为5)、第二骨骼点(在图2中标注为6)、第三骨骼点(在图2中标注为7)和第四骨骼点(在图2中标注为8)在第一三维坐标系中的坐标分别为vector(三维向量坐标)1,vector2,vector3,vector4,此时将第一骨骼点设置为第二三维坐标系的原点(0,0,0),此时第二骨骼点、第三骨骼点和第四骨骼点对应的第二三维坐标系的坐标通过以下公式计算:
第二骨骼点对应的第二三维坐标系的坐标=vector2-vector1+(0,0,0);
第三骨骼点对应的第二三维坐标系的坐标=vector3-vector1+(0,0,0);
第四骨骼点对应的第二三维坐标系的坐标=vector4-vector1+(0,0,0)。
一些实施例中,所述第二三维坐标系为unity世界坐标系。
筛选出第二三维坐标系中的预设手指坐标集中的预设骨骼关键点的坐标;
根据预设骨骼关键点的坐标,确定在第二三维坐标系中射线控件的位置坐标。
一些实施例中,所述根据预设骨骼关键点的坐标,确定在第二三维坐标系中射线控件的位置坐标的步骤包括:
所述预设手指上全部骨骼关键点包括按照由指根到指尖方向排列的第一骨骼点、第二骨骼点、第三骨骼点和第四骨骼点,其中,所述预设骨骼关键点包括第三骨骼点和第四骨骼点;
确定在第二三维坐标系中射线控件的位置坐标,其中,所述射线控件位于预设手指的指尖和所述用户界面中其他控件之间,并将所述射线控件的方向设置为第三骨骼点指向第四骨骼点,指尖坐标可以通过第四骨骼点的坐标确定。
s300、根据所述射线控件的位置和用户界面中其他控件的位置,改变用户界面中所述射线控件所指向的控件的显示状态。
一些实施例中,用户界面中的其他控件在第二二维坐标系中也相应有对应的位置,根据射线控件的位置和用户界面中其他控件的位置,可以利用射线控件的方向,确定射线控件所指向的控件,并控制该控件改变显示状态,示例性的,如图3所示。一些实施例中,所述射线控件的长度可以根据射线控件所指物体动态改变长短,示例性的,一些实施例中用户使用虚拟显示设备所看到的用户界面还包括3d画面的背景。当指向控件时,射线的长度为手指到控件的长度,当未指向控件时,射线控件的长度可以变长,指向远处的3d画面。
在一些实施例中,以第二坐标系为unity坐标系为例,处理器需要根据待显示的图像在unity坐标系中进行渲染,然后根据渲染后的数据进行三维投影,或者,在显示器包括左眼子显示器和右眼子显示器时,根据渲染后的数据获取两个不同视角的图像分别显示在左眼子显示器和右眼子显示器上,或者,在显示器仅仅包括一个立体显示器时,根据渲染后的数据获取两个不同视角的图像分时的显示在立体显示器上,以根据视觉暂留效应使用户″看″到立体图像。
在一些实施例中,射线控件的渲染也需要在unity坐标系中进行,射线渲染完成后才开始进行三维投影或不同视角的图像的生成。
在一些实施例中,射线控件的长度是确定的,在unity坐标系中根据射线控件长度方向上所在的直线和带显示凸显中个控件的位置确定被指向的控件来进行突出显示;
在一些实施例中,根据在unity坐标系中根据射线控件长度方向上所在的直线和带显示图像的焦点确定射线控件的长度,并将射线控件长度方向上所在的直线和带显示凸显中个控件的位置确定被指向的控件来进行突出显示。
一些实施例中,所述改变用户界面中所述射线控件指向的控件的显示状态以进行突出显示的步骤包括:
将用户界面中被所述射线控件指向的控件显示为高亮状态;
或者将所述控件放大,并显示在所述手部和所述控件所处原位置之间。
一些实施例中,在生成射线控件的同时还生成虚拟手部控件,虚拟手部控件位于射线控件的原理所述带显示图像的一端,所述方法还包括:根据识别出的手部图像,控制用户界面中虚拟手部控件的生成:
确定第一三维坐标系中的手部坐标集;
将所述第一三维坐标系中的手部坐标集,转化为第二三维坐标系中的手部坐标集;根据所述第二三维坐标系中的手部坐标集,生成用户界面上的手部控件。
一些实施例中,在虚拟现实设备开启后,如果手部在摄像头的检测范围内,则在虚拟现实设备的用户界面中显示出一个手部控件,根据手部追踪技术,实时捕捉真实的的位置以及手势同时根据此数据,将虚拟的手部实时渲染到虚拟现实设备的用户界面中。
手部控件的渲染在unity(游戏引擎)引擎层进行渲染,技术实现流程为:android端(安卓端)获取双目摄像头中图像的手指以及上臂躯干的骨骼关键点的点阵数据,包括骨骼关键点名称,骨骼关键点的(x,y,z)坐标;将android端获取的上述数据,以json字符串的形式传递给unity,android端将每帧图像中的数据向unity传递;unity对android端传递过来的数据,进行处理,将传过来的(x,y,z)坐标校正为unity世界坐标系。校正方式为,将双目摄像头拍摄的图像的交叉部分的中心点,作为unity世界坐标系的中心点,如果手部关键点的位置对于双目摄像头所拍摄到的交叉图像有位置偏差,则根据此位置对于双目摄像头的中心点的偏移量,对应将此偏移量校正到unity世界坐标系中心点的偏移量,即可完成双目摄像头传递过来的(x,y,z)坐标转换为unity世界坐标系。
unity端实时获取到android端传递过来的关键点的坐标并转换为unity世界坐标系后,按照骨骼关键点的坐标进行手部绘制,每个手掌包括21个骨骼关键点,如图2所示,利用手部骨骼关键点和手部的厚度,所述手部的厚度是指手指的宽度或者手掌的宽度,确定手部轮廓点,使用unity的线渲染器(linerender)将手部轮廓绘制出来。所述手部轮廓点是与手部骨骼关键点的距离为手部的厚度,且在手部骨骼关键点的两侧的轮廓点。根据手部轮廓,将手部填充颜色。一些实施例中,将手部填充颜色的透明度设为70%,unity端的手部绘制就完成了。
unity端的手部绘制完成后,就可以将穿戴虚拟现实设备的使用者的真实的手部动作实时显示在虚拟现实设备的用户界面中,对使用者的手势进行识别即可响应特定的操作,手势识别的技术实现流程如下:
手势识别基于虚拟现实设备的双目摄像头实现。从双目摄像头采集使用者手势动作的左右视觉图像,进行立体匹配,获得视觉差异图像,利用摄像机的内参数以及外参数进行三角计算以获取深度图像。对视觉图像使用手势分割算法进行分割,将人手与背景环境进行分割,实现对人手的抠图。使用手势跟踪算法对手进行跟踪,实时获取手的位置信息。通过手部识别算法,可以获取到手部的关节点。根据获取到的手部的信息以及位置信息,可以对手部以及上肢进行实时绘制。根据手势跟踪算法和手部关节点的运动轨迹,对手势进行识别匹配,例如比剪刀手的手势,两根手指捏的手势等。
一些实施例中,所述方法还包括:根据预设手指上全部骨骼关键点的坐标,确定手指轮廓坐标,所述手指轮廓坐标用于绘制用户界面上的手指图像。
一些实施例中,所述根据预设手指上全部骨骼关键点的坐标,确定手指轮廓坐标的步骤包括:
将预设手指上的各个骨骼关键点作为中心点,利用预设手指宽度,确定所述每个骨骼关键点对应的手指两侧边缘坐标;
利用所述手指两侧边缘坐标和指尖坐标,确定手指轮廓坐标。
示例性的,第四骨骼点对应的unity世界坐标为(x,y,z),预设手指宽度为0.13,则与第四骨骼点对应的手指两侧边缘坐标分别为(x-0.13,y,z),(x+0.13,y,z)。
由于第四骨骼点是最临近指尖的骨骼关键点,所以利用所述第四骨骼点的unity世界坐标,生成指尖坐标。示例性的,设置第四骨骼点到手指上端边缘的距离为0.13,则指尖坐标为(x,y+0.13,z)。
一些实施例通过手指上的四个骨骼关键点分别对应的手指两侧边缘坐标,以及指尖坐标,一共九个坐标点,确定手指轮廓坐标。在一些实施例中,根据手指轮廓坐标,利用贝塞尔曲线,绘制手指图像时,可以将手指图像的填充透明度设置为0.7颜色值。
一些实施例中,所述方法还包括:当用户移动预设手指,用户界面上的手指图像实时发生相应移动,以选中不同的其他控件。
一些实施例中,所述方法还包括:当用户移动头部,根据头部的移动使射线控件的坐标同向移动,以使得所述射线控件在视窗中的相对位置保持不变。当用户移动头部时,用户界面的中间位置显示的内容,可以根据头部移动方向发生变化。示例性的,当用户移动头部向左,则用户可以看到用户界面的中间位置由原来显示的内容,变化为位于原来显示的内容左侧对应的内容。为了避免射线控件由于用户头部转动而导致头部和实际手部存在一定角度差,造成的射线控件移动,使用户在观看用户界面时产生不适感。一些实施例当用户移动头部时,控制射线控件的坐标同向移动,使得射线控件在视窗中的相对位置保持不变。所述视窗是指用户通过虚拟现实设备看到的全部用户界面。这样,当用户移动头部,射线控件显示位置依旧不变。一些实施例中,当虚拟现实设备初始化时,可以重新设定射线控件的位置。
一些实施例中,所述方法还包括:在用户界面中所述射线控件所指向的控件的显示状态改变后,识别到第二预设手势,则根据所述被指的控件对应的链接内容进行用户界面的切换。示例性的,第二预设手势可以为用户的大拇指和中指的捏手动作。
一些实施例中,所述方法还包括:在用户界面中所述射线控件指向的控件的显示状态改变后,识别到第三预设手势,控制所述控件恢复为原有显示状态。示例性的,第三预设手势可以为用户的大拇指和无名指的捏手动作。
一些实施例除了可以利用手指,与虚拟现实设备交互,在另一些实施例中,还可以使用其他物品代替手指,实现与虚拟现实设备的交互。
一些实施例提供的另一种与虚拟现实设备交互的方法,如图3所示,包括:
接收摄像头拍摄的图像;在从图像中识别到预设物品时根据识别到的预设物品的相对位置,在用户界面中生成射线控件;根据所述射线控件的位置和用户界面中其他控件的位置,改变用户界面中所述射线控件所指向的控件的显示状态。
示例性的,所述预设物品可以为一支笔,当识别到笔,可以通过确定笔的位置以及笔尖的指向,绘制射线控件,当然一些实施例中也不限制于预设物品的种类,只要不违背本申请的意图即可。
在一些实施例中,在虚拟现实设备发生移动时,重新获取手部图像来进行射线控件的生成。
在一些实施例中,在虚拟现实设备发生移动时,根据移动的三维变量,在第二坐标系中移动射线控件的坐标,以使得维持射线控件在显示窗口中的位置相对稳定。
在一些实施例中,在虚拟现实设备发生移动时,根据移动的三维变量,确定待显示的图像区域,在视窗控件位置展示带显示的图像。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,当计算机存储介质位于显示设备中时,该程序执行时可包括控制器250被配置执行的与虚拟现实设备交互的方法包括的程序步骤。其中,计算机存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,并不构成对本发明保护范围的限定。本发明的真正范围和精神由所附的权利要求指出。