虚拟现实场景的交互方法及装置与流程

文档序号:11229902阅读:966来源:国知局
虚拟现实场景的交互方法及装置与流程

本发明涉及计算机领域,具体而言,涉及一种虚拟现实场景的交互方法及装置。



背景技术:

如今,为了使用户体验身临其境,真正感受三维空间内的事物。越来越多的应用开发商开始关注在虚拟现实场景下的应用。其中,虚拟现实(virtualreality,简称vr)技术,是利用计算机模拟产生一个三维空间的虚拟世界,提供用户各种感官模拟体验,在用户执行移动时,计算机通过复杂的三维运算,以增强用户在三维世界的真实临场感。

目前,现有技术中常用的交互方式包括:鼠标交互。其中,鼠标交互对于任何一个程序的选择方式包括:

1)对于二维世界,所显示的对象在二维(简称2d)屏幕上均具有对应的位置,通过鼠标在2d屏幕上点击上述对象所在位置,就可以实现与该对象的交互过程。

2)对于平面显示器显示的三维世界,先在二维(简称2d)屏幕上选定一个点a,再在与2d屏幕对应的三维(简称3d)空间中,获得所选定的点a对应到3d的虚拟空间中的位置b,通过点a和位置b,就可以确定所要交互的对象,以实现通过鼠标交互完成在平面显示器中显示的三维世界的交互过程。也就是说,平面显示器显示的三维世界中参与交互的仍然是体现二维平面空间中的对象,在交互过程中,鼠标仍然是与二维平面空间中的对象实现交互。

然而,目前现有技术中提供的鼠标交互方式,主要应用于与二维平面空间所显示的对象进行交互,而对于虚拟现实vr场景中的三维对象,还并未提供一种操作简化的交互方式。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种虚拟现实场景的交互方法及装置,以至少解决现有技术中还无法实现与虚拟现实场景中的对象进行交互的技术问题。

根据本发明实施例的一个方面,提供了一种虚拟现实场景的交互方法,包括:在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象,其中,上述虚拟现实场景中显示有上述射线;在上述初始目标对象中检测出与上述射线发生碰撞的最终目标对象;对上述最终目标对象中上述射线所选中的控件进行操作。

根据本发明实施例的另一方面,还提供了一种虚拟现实场景的交互装置,包括:确定单元,用于在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象,其中,上述虚拟现实场景中显示有上述射线;检测单元,用于在上述初始目标对象中检测出与上述射线发生碰撞的最终目标对象;操作单元,用于对上述最终目标对象中上述射线所选中的控件进行操作。

在本发明实施例中,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象后,其中,虚拟现实场景中显示有射线,再在上述初始目标对象中检测出与射线发生碰撞的最终目标对象,对最终目标对象中射线所选中的控件进行操作。从而实现通过射线碰撞检测从初始目标对象中,获取在虚拟现实场景中所要交互的最终目标对象,以达到对射线所选中的最终目标对象中的控件进行操作的目的,进而克服相关技术中无法对虚拟现实场景中的对象进行精准交互的问题。进一步,通过射线碰撞检测实现与虚拟现实场景中的对象进行交互,还简化了交互操作,而无需使用鼠标等硬件设备进行复杂的交互运算,进而达到在保证交互准确性的情况下,提高交互效率的效果。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的虚拟现实场景的交互方法的硬件环境的示意图;

图2是根据本发明实施例的一种可选的虚拟现实场景的交互方法的流程图;

图3是根据本发明实施例的一种可选的虚拟现实场景的交互方法的示意图;

图4是根据本发明实施例的另一种可选的虚拟现实场景的交互方法的示意图;

图5是根据本发明实施例的又一种可选的虚拟现实场景的交互方法的示意图;

图6是根据本发明实施例的又一种可选的虚拟现实场景的交互方法的示意图;

图7是根据本发明实施例的又一种可选的虚拟现实场景的交互方法的示意图;

图8是根据本发明实施例的一种可选的虚拟现实场景的交互装置的示意图;

图9是根据本发明实施例的一种虚拟现实场景的交互终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

在本发明实施例中,提供了一种上述虚拟现实场景的交互方法的实施例。作为一种可选的实施方式,该虚拟现实场景的交互方法可以但不限于应用于如图1所示的应用环境中,用于实现虚拟现实(virtualreality,简称vr)场景交互的设备102中显示有待交互的对象,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象,其中,虚拟现实场景中显示有射线;在初始目标对象中检测出与射线发生碰撞的最终目标对象;然后对最终目标对象中射线所选中的控件进行操作。

在本实施例中,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象后,其中,虚拟现实场景中显示有射线,再在上述初始目标对象中检测出与射线发生碰撞的最终目标对象,对最终目标对象中射线所选中的控件进行操作。从而实现通过射线碰撞检测获取在虚拟现实场景中所要交互的最终目标对象,以达到对射线所选中的最终目标对象中的控件进行操作的目的,进而克服相关技术中无法对虚拟现实场景中的对象进行精准交互的问题。

可选地,在本实施例中,上述用于实现虚拟现实场景交互的设备可以包括但不限于以下至少之一:vr眼镜,及其他用于实现虚拟现实场景交互的硬件设备。上述只是一种示例,本实施例对此不做任何限定。

根据本发明实施例,提供了一种虚拟现实场景的交互方法,如图2所示,该方法包括:

s202,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象,其中,虚拟现实场景中显示有射线;

s204,在初始目标对象中检测出与射线发生碰撞的最终目标对象;

s206,对最终目标对象中射线所选中的控件进行操作。

可选地,在本实施例中,上述虚拟现实场景的交互方法可以但不限于应用于使用虚拟现实设备进行虚拟现实交互应用的过程中,例如,上述虚拟现实交互应用可以包括但不限于虚拟现实游戏、虚拟现实影视播放、虚拟现实购物等等。上述仅是一种示例,本实施例中对此不做任何限定。其中,该虚拟现实设备可以包括但不限于vr眼镜。进一步,上述交互过程可以但不限于与虚拟现实场景中的平面中的对象进行交互,例如,如图3所示,虚线方框内所示为vr眼镜(虚拟现实场景交互的设备102)中所显示的虚拟现实场景内容:在二维平面内显示有待交互的对象a至对象e,其中,与射线发生碰撞的最终目标对象为对象e;此外,在本实施例中,上述交互过程也可以但不限于与虚拟现实场景中的三维角色对象进行交互,例如,如图4所示,虚线方框内所示为vr眼镜(虚拟现实场景交互的设备102)中所显示的虚拟现实场景内容:在三维空间内显示有待交互的对象p、对象x、对象y及对象z,其中,与射线发生碰撞的最终目标对象为对象y。上述仅是一种示例,本实施例中对此不做任何限定。

需要说明的是,在本实施例中,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象后,其中,虚拟现实场景中显示有射线,再在上述初始目标对象中检测出与射线发生碰撞的最终目标对象,对最终目标对象中射线所选中的控件进行操作。从而实现通过射线碰撞检测从初始目标对象中,获取在虚拟现实场景中所要交互的最终目标对象,以达到对射线所选中的最终目标对象中的控件进行操作的目的,进而克服相关技术中无法对虚拟现实场景中的对象进行精准交互的问题。进一步,通过射线碰撞检测实现与虚拟现实场景中的对象进行交互,还简化了交互操作,而无需使用鼠标等硬件设备进行复杂的交互运算,进而达到在保证交互准确性的情况下,提高交互效率的效果。

此外,在本实施例中,上述碰撞检测(也称作碰撞侦测(collisiondetection)),通常是指一种判断两个或多个对象是否产生交集的方法。可以应用于电子游戏和其他计算物理学中,也可以应用于人工智能中。除了可以用于确定两个对象是否已经碰撞,还可以用于计算冲击的时间(toi),以及获取对象交叉碰撞的位置。

可选地,在本实施例中,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象包括:根据对象的对象类型确定出与射线的射线类型具有对应关系的目标对象类型,以将目标对象类型的对象确定为允许与射线发生碰撞的初始目标对象。从而实现利用射线类型及对象类型之间的映射关系,确定出允许与射线发生碰撞的初始目标对象,以避免虚拟现实场景中与射线无关的对象参与交互判断过程,减少判断时间,进而达到简化交互判断步骤的效果。

可选地,在本实施例中,在初始目标对象中检测出与射线发生碰撞的最终目标对象包括:遍历每个初始目标对象,检测每个初始目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分;将存在与射线重合的部分的初始目标对象确定为最终目标对象。

需要说明的是,在本实施例中,上述射线可以但不限于为具有起始点和终点的向量,上述检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分可以但不限于:检测上述空间中是否包含上述射线构成的向量中的点。也就是说,将虚拟现实场景中所占的空间与射线上的每个点位置分别进行碰撞检测,以达到准确判断出与射线碰撞的最终目标对象的效果。此外,若虚拟现实场景所显示的多帧画面,则在本实施例中,可以但不限于对每一帧都做碰撞检测,以确定虚拟现实场景中所占的空间中是否包含上述射线构成的向量中的点,从而保证碰撞检测的精确度。

可选地,在本实施例中,利用射线所进行的操作可以包括但不限于:点击操作、移动操作、选中操作等等。与上述操作对应的执行事件可以包括但不限于以下至少之一:

1)进入事件(enter):射线开始指向某一个对象,通过比较这一帧和上一帧的射线的击中对象列表的变化,看是否存在新添加的对象,触发新添加对象的事件;

2)离开事件(leave):射线离开指向某一个对象,通过比较这一帧和上一帧的射线的击中对象列表的变化,看是否存在新删除的对象,触发新删除对象的事件;

3)按下事件(touchdown):射线指向控件,按下交互按键的时候,触发交互列表中所有对象的事件;

4)抬起事件(touchup):射线指向控件,抬起交互按键的时候,触发交互列表中所有对象的事件;

5)移动事件(move):射线在最终目标对象中的各个控件上移动,触发交互列表中所有对象的事件。

6)其他:对于一些特殊的事件,比如拖动操作触发的拖动事件等等。

需要说明的是,上述控件可以但不限于为用于构成界面的一系列预先制作的功能控件,例如,按钮,复选框,滑块,进度条等。上述仅是一种示例,本实施例中对此不做任何限定。

通过本申请提供的实施例,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象后,其中,虚拟现实场景中显示有射线,再在上述初始目标对象中检测出与射线发生碰撞的最终目标对象,对最终目标对象中射线所选中的控件进行操作。从而实现通过射线碰撞检测从初始目标对象中,获取在虚拟现实场景中所要交互的最终目标对象,以达到对射线所选中的最终目标对象中的控件进行操作的目的,进而克服相关技术中无法对虚拟现实场景中的对象进行精准交互的问题。

作为一种可选的方案,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象包括:

s1,获取对象的对象类型;

s2,在对象类型中确定出与射线的射线类型具有对应关系的目标对象类型;

s3,在对象中将类型为目标对象类型的对象确定为初始目标对象。

可选地,在本实施例中,对允许与射线发生碰撞的对象的类型设置为目标对象类型,用objectcollision对象表示,将用于碰撞检测的射线类型用lasercollision对象表示。上述仅是一种示例,本实施例中对此不做任何限定。

需要说明的是,在本实施例中,上述用于进行射线碰撞检测的碰撞方式可以但不限于使用相关技术中的碰撞包围盒,通过将被检测的个体用碰撞包围盒包围,检测各个碰撞包围盒是否有交叉,对于产生交叉的情况,检测出为产生碰撞。上述仅是一种示例,本实施例中对碰撞检测的方式不做限定,还可以采用其他碰撞检测方式。

通过本申请提供的实施例,通过对虚拟现实场景中的对象按类型进行分类,以实现对与射线类型具有对应关系的目标对象类型进行碰撞检测,从而实现对于不是目标对象类型的对象直接略过检测,达到射线减少碰撞检测的对象的数量,实现大大节约碰撞检测的时间消耗的效果,进而达到简化交互判断步骤的效果。

作为一种可选的方案,在初始目标对象中检测出与射线发生碰撞的最终目标对象包括:

s1,对初始目标对象中的每个对象执行以下步骤,其中,初始目标对象在执行以下步骤时被视为当前目标对象:

s11,检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分;

s12,若空间存在与射线重合的部分,则将当前目标对象确定为最终目标对象。

可选地,在本实施例中,可以但不限于对确定为目标对象类型的初始目标对象执行遍历判断过程,其中,分别将每个初始目标对象作为当前目标对象:检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分;将存在与射线重合的部分的初始目标对象确定为最终目标对象。

需要说明的是,在本实施例中,上述射线可以但不限于为具有起始点和终点的向量。在本实施例中,上述检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分可以但不限于:检测上述空间中是否包含上述射线构成的向量中的点。也就是说,将虚拟现实场景中所占的空间与射线上的每个点位置分别进行碰撞检测,以达到准确判断出与射线碰撞的最终目标对象的效果。其中,上述当前目标对象在虚拟现实场景中所占的空间可以但不限于如图3所示,以对象e为例,对象e在虚拟现实场景中所占的空间为一个矩形平面区域;如图4所示,以对象y为例,对象y在虚拟现实场景中所占的空间为一个人物角色y在三维空间中所占用的立体空间。

具体结合以下示例进行说明,例如,以图3所示对象e为例,若检测出射线与对象e对应的矩形平面区域存在交叉,则可检测出对象e存在与射线重合的部分,可将对象e确定为最终目标对象。又例如,以图4所示对象y为例,若检测出射线与对象y对应的人物角色y所占的立体空间存在交叉,则可检测出对象y存在与射线重合的部分,可将对象y确定为最终目标对象。

通过本申请提供的实施例,通过遍历各个初始目标对象,分别依次判断各个初始目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分,以实现根据判断结果准确检测出用于交互的最终目标对象,保证交互的准确性。

作为一种可选的方案,检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分包括:

s1,检测空间是否包含射线上的点,其中,射线包括:起始点和终点,射线的方向由起始点指向终点;

s2,若检测出空间包含射线上的点,则确定出空间存在与射线重合的部分。

可选地,在本实施例中,上述射线可以但不限于为包括起始点和终点的有向向量。其中,上述起始点可以但不限于为在虚拟现实场景中发出射线的位置,终点是按照射线所指方向延伸一定距离后到达的位置,在这条射线上的每一个位置都需要进行碰撞检测。

例如,如图5所示,假设起始点以手指在虚拟现实场景中的位置(如用handposition表示)为例,根据提前设置好的射线的延伸距离(如用maxdistance表示),获取对应的终点(如用maxrangeposition表示),按照手指方向检测对象y所占空间是否包括上述射线上的点。例如,如图6所示,碰撞检测结果表示:对象y对应的人物角色y所占的立体空间与上述射线(起始点为handposition,终点为maxrangeposition)存在交叉,交叉点为图6菱形所示位置,则可检测出对象y存在与射线重合的部分,可将对象y确定为最终目标对象。

可选地,在本实施例中,通过以下步骤确定终点:根据起始点在虚拟现实场景中的位置、用于指示方向的方向矢量、预定确定的距离范围值,确定出终点在虚拟现实场景中的位置。

例如,如图7所示,用于确定上述射线的终点的公式如下:

maxrangeposition=handposition+handforwardvector*maxdistance

其中,上述handforwardvector用于表示射线方向的单位向量。也就是说在起始点的三维坐标上,叠加沿射线方向上的延伸距离的三维坐标,从而得到终点的三维坐标。

通过本申请提供的实施例,通过检测空间是否包含射线上的点,以实现检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分,也就是说,将虚拟现实场景中所占的空间与射线上的每个点位置分别进行碰撞检测,以达到准确判断出与射线碰撞的最终目标对象的效果,从而保证碰撞检测的精确度,进而实现提高交互准确性的效果。

作为一种可选的方案,对最终目标对象中射线所选中的控件进行操作包括:

s1,在最终目标对象中选中射线与最终目标对象重合的位置上的控件;

s2,对控件进行操作。

可选地,在本实施例中,对控件进行操作包括:

s21,在检测到与虚拟现实场景对应的交互按键被按下时,确定出检测到开始点击事件;

s22,在检测到与虚拟现实场景对应的交互按键被抬起时,确定出检测到结束点击事件;

s23,在检测到开始点击事件和结束点击事件时,对控件进行点击操作。

可选地,在本实施例中,上述虚拟现实场景中对象可以包括但不限于:虚幻动态图形(unrealmobile)ui设计器所设计的对象(称作umg对象),目标对象类型中的对象。

需要说明的是,在本实施例中,如果与射线发生碰撞的是umg对象,则需调用umg相关的控制逻辑,例如,在ue4环境中,对于umg对象,通过调用widget的on系列函数来触发widget的事件响应,从而达到兼容一般的游戏引擎对于umg的支持的目的。也就是说,虚拟现实内容开发者可以采用一般ui的制作方法来为虚拟现实场景制作用户界面(userinterface,简称ui)菜单,该菜单可以直接应用于虚拟现实场景进行交互。此外,在本实施例中,如果与射线发生碰撞的不是umg对象,而是目标对象类型中的对象,则可参照本实施例中记载的交互方式进行交互。

可选地,在本实施例中,利用射线所进行的操作可以包括但不限于:点击操作、移动操作、选中操作等等。上述仅是一种示例,本实施例中对此不做任何限定。例如,以点击操作为例,可以但不限于通过以下事件确定:

1)按下事件(touchdown):射线指向控件,按下交互按键的时候,触发交互列表中所有对象的事件。对于umg直接调用widget已经存在的on系列函数触发已经存在的回调机制,对于其他则自定义该事件的回调函数;

2)抬起事件(touchup):射线指向控件,抬起交互按键的时候,触发交互列表中所有对象的事件。对于umg直接调用widget已经存在的on系列函数触发已经存在的回调机制,对于其他则自定义该事件的回调函数。

也就是说,在检测到与虚拟现实场景对应的交互按键被按下时,确定出检测到开始点击事件;在检测到与虚拟现实场景对应的交互按键被抬起时,确定出检测到结束点击事件;然后在检测到开始点击事件和结束点击事件时,确认对控件进行点击操作。

例如,以图5为例,在选中对象y为最终目标对象时,选中射线与最终目标对象重合的位置(如对象y的右脚),然后对重合的位置(如对象y的右脚)上的控件执行点击操作,例如检测到交互按键被按下的开始点击事件及交互按键被抬起时的结束点击事件,则可确认对上述控件执行点击操作。从而实现对对象y对应的人物角色y的右脚的交互控制,例如通过点击右脚实现控制抬起右脚执行踢球动作。上述仅是一种示例,本实施例中对此不做任何限定。

通过本申请提供的实施例,在最终目标对象中选中射线与最终目标对象重合的位置上的控件,对该控件进行操作。从而实现在虚拟现实场景中通过射线完成与对象之间的交互,以保证交互准确性。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述虚拟现实场景的交互方法的虚拟现实场景的交互装置。如图8所示,该装置可以包括:

1)确定单元802,用于在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象,其中,虚拟现实场景中显示有射线;

2)检测单元804,用于在初始目标对象中检测出与射线发生碰撞的最终目标对象;

3)操作单元806,用于对最终目标对象中射线所选中的控件进行操作。

可选地,在本实施例中,上述虚拟现实场景的交互装置可以但不限于应用于使用虚拟现实设备进行虚拟现实交互应用的过程中,例如,上述虚拟现实交互应用可以包括但不限于虚拟现实游戏、虚拟现实影视播放、虚拟现实购物等等。上述仅是一种示例,本实施例中对此不做任何限定。其中,该虚拟现实设备可以包括但不限于vr眼镜。进一步,上述交互过程可以但不限于与虚拟现实场景中的平面中的对象进行交互,例如,如图3所示,虚线方框内所示为vr眼镜(虚拟现实场景交互的设备102)中所显示的虚拟现实场景内容:在二维平面内显示有待交互的对象a至对象e,其中,与射线发生碰撞的最终目标对象为对象e;此外,在本实施例中,上述交互过程也可以但不限于与虚拟现实场景中的三维角色对象进行交互,例如,如图4所示,虚线方框内所示为vr眼镜(虚拟现实场景交互的设备102)中所显示的虚拟现实场景内容:在三维空间内显示有待交互的对象p、对象x、对象y及对象z,其中,与射线发生碰撞的最终目标对象为对象y。上述仅是一种示例,本实施例中对此不做任何限定。

需要说明的是,在本实施例中,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象后,其中,虚拟现实场景中显示有射线,再在上述初始目标对象中检测出与射线发生碰撞的最终目标对象,对最终目标对象中射线所选中的控件进行操作。从而实现通过射线碰撞检测从初始目标对象中,获取在虚拟现实场景中所要交互的最终目标对象,以达到对射线所选中的最终目标对象中的控件进行操作的目的,进而克服相关技术中无法对虚拟现实场景中的对象进行精准交互的问题。进一步,通过射线碰撞检测实现与虚拟现实场景中的对象进行交互,还简化了交互操作,而无需使用鼠标等硬件设备进行复杂的交互运算,进而达到在保证交互准确性的情况下,提高交互效率的效果。

此外,在本实施例中,上述碰撞检测(也称作碰撞侦测(collisiondetection)),通常是指一种判断两个或多个对象是否产生交集的方法。可以应用于电子游戏和其他计算物理学中,也可以应用于人工智能中。除了可以用于确定两个对象是否已经碰撞,还可以用于计算冲击的时间(toi),以及获取对象交叉碰撞的位置。

可选地,在本实施例中,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象包括:根据对象的对象类型确定出与射线的射线类型具有对应关系的目标对象类型,以将目标对象类型的对象确定为允许与射线发生碰撞的初始目标对象。从而实现利用射线类型及对象类型之间的映射关系,确定出允许与射线发生碰撞的初始目标对象,以避免虚拟现实场景中与射线无关的对象参与交互判断过程,减少判断时间,进而达到简化交互判断步骤的效果。

可选地,在本实施例中,在初始目标对象中检测出与射线发生碰撞的最终目标对象包括:遍历每个初始目标对象,检测每个初始目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分;将存在与射线重合的部分的初始目标对象确定为最终目标对象。

需要说明的是,在本实施例中,上述射线可以但不限于为具有起始点和终点的向量,上述检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分可以但不限于:检测上述空间中是否包含上述射线构成的向量中的点。也就是说,将虚拟现实场景中所占的空间与射线上的每个点位置分别进行碰撞检测,以达到准确判断出与射线碰撞的最终目标对象的效果。此外,若虚拟现实场景所显示的多帧画面,则在本实施例中,可以但不限于对每一帧都做碰撞检测,以确定虚拟现实场景中所占的空间中是否包含上述射线构成的向量中的点,从而保证碰撞检测的精确度。

可选地,在本实施例中,利用射线所进行的操作可以包括但不限于:点击操作、移动操作、选中操作等等。与上述操作对应的执行事件可以包括但不限于以下至少之一:

1)进入事件(enter):射线开始指向某一个对象,通过比较这一帧和上一帧的射线的击中对象列表的变化,看是否存在新添加的对象,触发新添加对象的事件;

2)离开事件(leave):射线离开指向某一个对象,通过比较这一帧和上一帧的射线的击中对象列表的变化,看是否存在新删除的对象,触发新删除对象的事件;

3)按下事件(touchdown):射线指向控件,按下交互按键的时候,触发交互列表中所有对象的事件;

4)抬起事件(touchup):射线指向控件,抬起交互按键的时候,触发交互列表中所有对象的事件;

5)移动事件(move):射线在最终目标对象中的各个控件上移动,触发交互列表中所有对象的事件。

6)其他:对于一些特殊的事件,比如拖动操作触发的拖动事件等等。

需要说明的是,上述控件可以但不限于为用于构成界面的一系列预先制作的功能控件,例如,按钮,复选框,滑块,进度条等。上述仅是一种示例,本实施例中对此不做任何限定。

通过本申请提供的实施例,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象后,其中,虚拟现实场景中显示有射线,再在上述初始目标对象中检测出与射线发生碰撞的最终目标对象,对最终目标对象中射线所选中的控件进行操作。从而实现通过射线碰撞检测从初始目标对象中,获取在虚拟现实场景中所要交互的最终目标对象,以达到对射线所选中的最终目标对象中的控件进行操作的目的,进而克服相关技术中无法对虚拟现实场景中的对象进行精准交互的问题。

作为一种可选的方案,确定单元802包括:

1)获取模块,用于获取对象的对象类型;

2)第一确定模块,用于在对象类型中确定出与射线的射线类型具有对应关系的目标对象类型;

3)第二确定模块,在对象中将类型为目标对象类型的对象确定为初始目标对象。

可选地,在本实施例中,对允许与射线发生碰撞的对象的类型设置为目标对象类型,用objectcollision对象表示,将用于碰撞检测的射线类型用lasercollision对象表示。上述仅是一种示例,本实施例中对此不做任何限定。

需要说明的是,在本实施例中,上述用于进行射线碰撞检测的碰撞方式可以但不限于使用相关技术中的碰撞包围盒,通过将被检测的个体用碰撞包围盒包围,检测各个碰撞包围盒是否有交叉,对于产生交叉的情况,检测出为产生碰撞。上述仅是一种示例,本实施例中对碰撞检测的方式不做限定,还可以采用其他碰撞检测方式。

通过本申请提供的实施例,通过对虚拟现实场景中的对象按类型进行分类,以实现对与射线类型具有对应关系的目标对象类型进行碰撞检测,从而实现对于不是目标对象类型的对象直接略过检测,达到射线减少碰撞检测的对象的数量,实现大大节约碰撞检测的时间消耗的效果,进而达到简化交互判断步骤的效果。

作为一种可选的方案,检测单元804包括:

1)处理模块,用于对初始目标对象中的每个对象执行以下步骤,其中,初始目标对象在执行以下步骤时被视为当前目标对象:

s1,检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分;

s2,若空间存在与射线重合的部分,则将当前目标对象确定为最终目标对象。

可选地,在本实施例中,可以但不限于对确定为目标对象类型的初始目标对象执行遍历判断过程,其中,分别将每个初始目标对象作为当前目标对象:检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分;将存在与射线重合的部分的初始目标对象确定为最终目标对象。

需要说明的是,在本实施例中,上述射线可以但不限于为具有起始点和终点的向量。在本实施例中,上述检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分可以但不限于:检测上述空间中是否包含上述射线构成的向量中的点。也就是说,将虚拟现实场景中所占的空间与射线上的每个点位置分别进行碰撞检测,以达到准确判断出与射线碰撞的最终目标对象的效果。其中,上述当前目标对象在虚拟现实场景中所占的空间可以但不限于如图3所示,以对象e为例,对象e在虚拟现实场景中所占的空间为一个矩形平面区域;如图4所示,以对象y为例,对象y在虚拟现实场景中所占的空间为一个人物角色y在三维空间中所占用的立体空间。

具体结合以下示例进行说明,例如,以图3所示对象e为例,若检测出射线与对象e对应的矩形平面区域存在交叉,则可检测出对象e存在与射线重合的部分,可将对象e确定为最终目标对象。又例如,以图4所示对象y为例,若检测出射线与对象y对应的人物角色y所占的立体空间存在交叉,则可检测出对象y存在与射线重合的部分,可将对象y确定为最终目标对象。

通过本申请提供的实施例,通过遍历各个初始目标对象,分别依次判断各个初始目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分,以实现根据判断结果准确检测出用于交互的最终目标对象,保证交互的准确性。

作为一种可选的方案,处理模块通过以下步骤实现检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分:

s1,检测空间是否包含射线上的点,其中,射线包括:起始点和终点,射线的方向由起始点指向终点;

s2,若检测出空间包含射线上的点,则确定出空间存在与射线重合的部分。

可选地,在本实施例中,上述射线可以但不限于为包括起始点和终点的有向向量。其中,上述起始点可以但不限于为在虚拟现实场景中发出射线的位置,终点是按照射线所指方向延伸一定距离后到达的位置,在这条射线上的每一个位置都需要进行碰撞检测。

例如,如图5所示,假设起始点以手指在虚拟现实场景中的位置(如用handposition表示)为例,根据提前设置好的射线的延伸距离(如用maxdistance表示),获取对应的终点(如用maxrangeposition表示),按照手指方向检测对象y所占空间是否包括上述射线上的点。例如,如图6所示,碰撞检测结果表示:对象y对应的人物角色y所占的立体空间与上述射线(起始点为handposition,终点为maxrangeposition)存在交叉,交叉点为图6菱形所示位置,则可检测出对象y存在与射线重合的部分,可将对象y确定为最终目标对象。

可选地,在本实施例中,处理模块通过以下步骤通过以下步骤确定终点:根据起始点在虚拟现实场景中的位置、用于指示方向的方向矢量、预定确定的距离范围值,确定出终点在虚拟现实场景中的位置。

例如,如图7所示,用于确定上述射线的终点的公式如下:

maxrangeposition=handposition+handforwardvector*maxdistance

其中,上述handforwardvector用于表示射线方向的单位向量。也就是说在起始点的三维坐标上,叠加沿射线方向上的延伸距离的三维坐标,从而得到终点的三维坐标。

通过本申请提供的实施例,通过检测空间是否包含射线上的点,以实现检测当前目标对象在虚拟现实场景中所占的空间是否存在与射线重合的部分,也就是说,将虚拟现实场景中所占的空间与射线上的每个点位置分别进行碰撞检测,以达到准确判断出与射线碰撞的最终目标对象的效果,从而保证碰撞检测的精确度,进而实现提高交互准确性的效果。

作为一种可选的方案,操作单元806包括:

1)选中模块,用于在最终目标对象中选中射线与最终目标对象重合的位置上的控件;

2)操作模块,用于对控件进行操作。

可选地,在本实施例中,操作模块包括:

(1)第一确定子模块,用于在检测到与虚拟现实场景对应的交互按键被按下时,确定出检测到开始点击事件;

(2)第二确定子模块,用于在检测到与虚拟现实场景对应的交互按键被抬起时,确定出检测到结束点击事件;

(3)第三确定子模块,用于在检测到开始点击事件和结束点击事件时,对控件进行点击操作。

可选地,在本实施例中,上述虚拟现实场景中对象可以包括但不限于:虚幻动态图形(unrealmobile)ui设计器所设计的对象(称作umg对象),目标对象类型中的对象。

需要说明的是,在本实施例中,如果与射线发生碰撞的是umg对象,则需调用umg相关的控制逻辑,例如,在ue4环境中,对于umg对象,通过调用widget的on系列函数来触发widget的事件响应,从而达到兼容一般的游戏引擎对于umg的支持的目的。也就是说,虚拟现实内容开发者可以采用一般ui的制作方法来为虚拟现实场景制作用户界面(userinterface,简称ui)菜单,该菜单可以直接应用于虚拟现实场景进行交互。此外,在本实施例中,如果与射线发生碰撞的不是umg对象,而是目标对象类型中的对象,则可参照本实施例中记载的交互方式进行交互。

可选地,在本实施例中,利用射线所进行的操作可以包括但不限于:点击操作、移动操作、选中操作等等。上述仅是一种示例,本实施例中对此不做任何限定。例如,以点击操作为例,可以但不限于通过以下事件确定:

1)按下事件(touchdown):射线指向控件,按下交互按键的时候,触发交互列表中所有对象的事件。对于umg直接调用widget已经存在的on系列函数触发已经存在的回调机制,对于其他则自定义该事件的回调函数;

2)抬起事件(touchup):射线指向控件,抬起交互按键的时候,触发交互列表中所有对象的事件。对于umg直接调用widget已经存在的on系列函数触发已经存在的回调机制,对于其他则自定义该事件的回调函数。

也就是说,在检测到与虚拟现实场景对应的交互按键被按下时,确定出检测到开始点击事件;在检测到与虚拟现实场景对应的交互按键被抬起时,确定出检测到结束点击事件;然后在检测到开始点击事件和结束点击事件时,确认对控件进行点击操作。

例如,以图5为例,在选中对象y为最终目标对象时,选中射线与最终目标对象重合的位置(如对象y的右脚),然后对重合的位置(如对象y的右脚)上的控件执行点击操作,例如检测到交互按键被按下的开始点击事件及交互按键被抬起时的结束点击事件,则可确认对上述控件执行点击操作。从而实现对对象y对应的人物角色y的右脚的交互控制,例如通过点击右脚实现控制抬起右脚执行踢球动作。上述仅是一种示例,本实施例中对此不做任何限定。

通过本申请提供的实施例,在最终目标对象中选中射线与最终目标对象重合的位置上的控件,对该控件进行操作。从而实现在虚拟现实场景中通过射线完成与对象之间的交互,以保证交互准确性。

此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

实施例3

根据本发明实施例,还提供了一种用于实施上述虚拟现实场景的交互方法的虚拟现实场景的交互终端,如图9所示,该终端包括:

1)通讯接口902,设置为获取虚拟现实场景中所显示的射线;

2)处理器904,与通讯接口902连接,设置为在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象,其中,虚拟现实场景中显示有射线;还设置为在初始目标对象中检测出与射线发生碰撞的最终目标对象;还设置为对最终目标对象中射线所选中的控件进行操作;

3)显示器906,与处理器904连接,设置为现实射线、初始目标对象及最终目标对象;

4)存储器908,与通讯接口902、处理器904及显示器906连接,设置为存储上述初始目标对象、最终目标对象,及射线位置信息。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

s1,在虚拟现实场景中显示的对象中确定出允许与射线发生碰撞的初始目标对象,其中,虚拟现实场景中显示有射线;

s2,在初始目标对象中检测出与射线发生碰撞的最终目标对象;

s3,对最终目标对象中射线所选中的控件进行操作。

可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

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

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

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

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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