在增强和/或虚拟现实环境中利用六自由度控制器操纵虚拟对象的制作方法

文档序号:17439058发布日期:2019-04-17 04:30阅读:176来源:国知局
在增强和/或虚拟现实环境中利用六自由度控制器操纵虚拟对象的制作方法

本申请是2017年8月17日提交的美国申请序列号no.15/679,597的继续申请并要求其优先权,美国申请no.15/679,597要求2016年8月23日提交的美国临时申请no.62/378,389的优先权,其公开的全部内容通过引用合并与此。

本申请要求2016年8月23日提交的美国临时申请no.62/378,389的优先权,其公开的全部内容通过引用合并与此。

本文档一般涉及对增强现实和/或虚拟现实环境中的输入的处理。



背景技术:

增强现实(ar)和/或虚拟现实(vr)系统可以生成三维(3d)沉浸式环境。用户可以通过与各种电子设备的交互来体验增强和/或虚拟现实环境,各种电子设备例如是:头盔或其他头戴式设备,包括用户在观看显示设备时透视的显示器、眼镜或护目镜;外部手持设备,其包括传感器、配有传感器的手套和其他此类电子设备。一旦沉浸在增强和/或虚拟现实环境中,用户可以在虚拟环境中与虚拟环境中的虚拟对象、元素和特征等以不同方式交互,以选择和/或操纵虚拟环境中的虚拟对象。例如,用户可以通过操纵一个或多个外部电子设备、物理移动和/或手势和有向头部和/或眼睛凝视等在虚拟环境中生成期望的效果,以与之交互、个性化和控制虚拟环境。



技术实现要素:

在一个方面,一种方法可以包括:生成三维(3d)虚拟环境;跟踪物理环境中第一控制器的六自由度(6dof)定位和定向;跟踪物理环境中第二控制器的6dof定位和定向;检测对所述虚拟环境中显示的虚拟对象的选择;基于所检测到的所述物理环境中所述第一控制器相对于第一坐标系的移动和所检测到的所述物理环境中所述第二控制器相对于第二坐标系的移动,检测针对所选择的虚拟对象为目标的输入;将所检测到的所述第一控制器相对于所述第一坐标系的移动和所检测到的所述第二控制器相对于所述第二坐标系的移动解析为相对于公共坐标系的命令移动;以及响应于所述命令移动而操纵所选择的虚拟对象。

在另一方面,一种方法可以包括:检测对虚拟环境中显示的虚拟对象的选择;响应于所检测到的第一控制器相对于第一坐标系的移动以及所检测到的第二控制器相对于第二坐标系的移动,检测针对所述虚拟环境中显示的所选择的虚拟对象为目标的输入,所述第一控制器和所述第二控制器在物理环境中运行;将所检测到的所述第一控制器的移动和所检测到的所述第二控制器的移动解析为相对于公共坐标系的命令移动;以及响应于所述命令移动,在所述虚拟环境中旋转所选择的虚拟对象。

在另一方面,一种计算机程序产品可以实现在非暂时性计算机可读介质上,该计算机可读介质上存储有指令序列。所述指令在由处理器执行时可以使处理器执行方法,该方法包括:生成三维(3d)虚拟环境;跟踪物理环境中第一控制器的六自由度(6dof)定位和定向;跟踪物理环境中第二控制器的6dof定位和定向;检测对所述虚拟环境中显示的虚拟对象的选择;基于所检测到的所述物理环境中所述第一控制器相对于第一坐标系的移动和所检测到的所述物理环境中所述第二控制器相对于第二坐标系的移动,检测针对所选择的虚拟对象为目标的输入;将所检测到的所述第一控制器相对于所述第一坐标系的移动和所检测到的所述第二控制器相对于所述第二坐标系的移动解析为相对于公共坐标系的命令移动;以及响应于所述命令移动而操纵所选择的虚拟对象。

在以下附图和描述中阐述了一个或多个实施方式的细节。根据说明书和附图以及权利要求,其他特征将是显而易见的。

附图说明

图1是根据本文描述的实施方式的包括头戴式显示器(hmd)设备和手持电子设备的虚拟现实系统的示例实施方式。

图2示出了根据本文描述的实施方式的在增强和/或虚拟现实环境中运行的多个六自由度(6dof)控制器的相应坐标系。

图3-9示出了根据本文描述的实施方式的增强和/或虚拟现实环境中的多个6dof控制器的示例性移动以及虚拟对象的对应移动。

图10a-10d示出了根据本文描述的实施方式的在增强现实和/或虚拟现实环境中的操纵所选虚拟对象时使用多个6dof控制器的示例实施方式。

图11a和11b是根据本文描述的实施方式的示例hmd的透视图。

图12是根据本文描述的实施方式的增强和/或虚拟现实系统的框图。

图13是根据本文描述的实施方式的方法的流程图。

图14示出了可用于实现本文描述的技术的计算机设备和移动计算机设备的示例。

具体实施方式

佩戴例如头戴式显示器(hmd)设备的沉浸在虚拟环境中的用户可以探索虚拟环境,并且可以通过各种不同类型的输入与虚拟环境中的虚拟对象、元素和特征等交互。这些输入可以包括例如与hmd分离的电子设备的操纵和/或hmd本身的操纵和/或眼睛有向注视和/或头部移动和/或手/臂姿势等。用户可以操纵可操作地耦合到hmd或与hmd配对的一个或多个手持电子设备或控制器,以在虚拟环境中引起期望的动作。用户可以以各种不同的方式操纵控制器,例如,对于控制器的触摸表面的触摸输入、控制器上的输入按钮和/或开关的操纵和控制器本身的物理移动等,以提供要在虚拟环境中实现的输入。例如,在一些实施方式中,可以操纵控制器以调整在虚拟环境中向用户显示的虚拟内容的视觉大小和/或外观和/或定位。该功能可以提供在提供用户输入上的灵活性和便利性,并且可以增强用户的虚拟体验。

在一种系统和方法中,根据本文描述的实施方式,多个控制器的移动,尤其是在虚拟现实环境中提供用户输入的多个控制器的旋转,可以被解析为单个坐标系以确定用于相对于特定虚拟对象的实施方式的预期者。

在下文中,仅为了便于讨论和说明,将用于在增强和/或虚拟现实环境中进行交互的一个或多个手持电子设备将被称为控制器。然而,这里描述的原理可以应用于其他类型的外部电子设备,其可以用于与呈现给用户以在增强和/或虚拟现实环境中进行交互的虚拟对象和虚拟特征等交互。

在图1中所示的示例实施方式中,佩戴hmd100的用户一只手握住第一便携式手持电子设备a或第一控制器a,另一只手握住第二便携式手持电子设备b或第二控制器b。控制器a、b中的一个或两个可以是例如滑轮鼠标、智能电话、配置用于与特定系统一起操作的控制器或可以与hmd100配对并与之通信以用于在由hmd100产生的沉浸式虚拟环境中的交互的其他类型的控制器。在一些实施方式中,可以基于控制器a、b中包括的各种传感器来跟踪控制器a、b的6dof定位和定向。这些传感器可以包括例如一种惯性测量单元,其包括例如象在陀螺仪中那样的加速度计、陀螺仪和磁力计等或者以这种方式适配的智能电话。在一些实施方式中,可以基于由系统中的其他传感器检测到的相应控制器a、b的定位来跟踪控制器a、b的6dof定位和定向。这些其他传感器可以包括例如包括在hmd100上的图像传感器,以及包括在控制器a、b中的定向传感器。控制器a、b可以通过例如有线连接和无线连接(例如,wifi或蓝牙连接)等可操作地与hmd100耦合或配对,以提供控制器a、b和hmd200之间的数据的交换和通信。hmd和控制器a、b之间的这种连接可以允许用户通过操纵控制器a、b中的一个或两个来在由hmd200生成的虚拟环境中进行交互。即,控制器a、b中的一个或两个的操纵,例如,在控制器a、b的触摸表面上接收的物理移动和/或输入,或由用户引导在虚拟环境中的虚拟对象处的由控制器a、b发出的虚拟射线或光束可能会被转换成虚拟环境中的相应的交互或移动。

如上所述,在一些实施方式中,控制器a、b中的一个或两个可以配备有滑轮鼠标类型的能力,并且可以在自由空间中操作以例如选择、操纵以及以其他方式与虚拟环境中的虚拟对象交互。使用包括滑轮鼠标能力的一个或多个控制器a、b可以基本上允许在其中系统在运行的三维(3d)空间或现实世界环境中相对准确地跟踪6dof位置(定位和定向)。

例如,控制器a、b可以包括陀螺仪,该陀螺仪产生指示控制器a、b的角移动的信号。控制器a、b的检测到的角移动可以转换成虚拟环境中的有向移动。在一些实施方式中,控制器a、b还可以包括加速度计,其产生指示控制器a、b的加速度的信号,控制器a、b的加速度例如是在与陀螺仪产生的有向信号对应的方向上的加速度。在一些实施方式中,控制器a、b还可以包括磁力计,其基于检测到的磁场的强度和/或方向产生指示控制器a、b在现实世界环境中的相对定位的信号。在现实世界环境中检测到的控制器a、b的三维定位以及由陀螺仪和/或加速度计和/或磁力计提供的与控制器a、b相关的定向信息可以提供控制器a、b的每个的6dof跟踪。这可以允许控制器a、b的用户操纵被转换成虚拟环境中的目标或预期的交互和/或被引导到虚拟环境中的所选虚拟对象的动作。

在一些实施方式中,控制器a、b中的一个或两个可以包括被配置为接收各种不同类型的用户输入的操纵设备。例如,在一些实施方式中,控制器a、b可以包括触摸表面,该触摸表面被配置为接收例如触摸输入、触摸和拖动输入以及捏合和缩放输入等。控制器a、b还可以包括被配置为接收用户输入的其他操纵设备,例如,一个或多个按钮、一个或多个拨动开关和一个或多个操纵杆等。

以这种方式配备的控制器a、b可以接收以各种不同的输入模式的用户输入,以被转换成虚拟环境中的相应交互。这些用户输入模式可以包括例如基于由控制器a、b中包括的传感器检测和跟踪的定位、定向和有向移动的控制器a、b的物理移动或手势。这些用户输入模式还可以包括在控制器a、b的触摸表面上检测到的触摸输入(包括触摸和拖动以及捏合和变焦等)、在控制器a、b的操作装置之一处接收的选择以及其他这样的输入。在一些实施方式中,控制器a、b可以接收包括这些用户输入模式的组合或这些用户输入模式的顺序应用的用户命令。

当使用多个6dof控制器(例如,如上所述的第一控制器a和第二控制器b)在虚拟环境中交互时,使用两个6dof控制器平移、均匀缩放和旋转虚拟对象的方式可以允许用户以自然的方式与虚拟对象交互,一只手拿着第一控制器a,另一只手拿着第二控制器b。在一种系统和方法中,根据本文描述的实施方式,可以为在相同虚拟环境(和相同的现实世界环境)中操作的多个6dof控制器定义单个一致的公共坐标系,其中,每个控制器在它们各自的坐标系内独立地移动。

如上所述,诸如上述第一和第二控制器a、b的虚拟现实6dof控制器可以提供定位和定向信息。可以操纵由用户操作来用于虚拟环境中的交互的单控制器,以直接控制虚拟环境中的虚拟对象的定位和定向。以类似的方式,来自多个控制器(例如,上述第一和第二控制器a、b)的定位和定向信息可用于例如基于如图7所示的第一和第二控制器a、b的平均定位控制虚拟对象在虚拟环境中的定位。类似地,来自多个控制器(例如,上述第一和第二控制器a、b)的定位和定向信息可用于例如基于第一和第二控制器a、b的已知起始定位和检测到的第一和第二控制器a、b的定位变化控制虚拟对象的比例,如图8所示。在系统和方法中,根据本文描述的实施方式,来自多个控制器(例如,上述第一和第二控制器a、b)的定位和定向信息可用于控制虚拟对象的旋转,如图9所示。

当与多个控制器a、b一起操作时例如响应于第一和第二控制器a、b的旋转移动确定和控制虚拟环境中的虚拟对象的定向可能带来额外的挑战,或者可能造成一个过度约束的问题。也就是说,第一控制器a的定位和移动可以暗示虚拟对象的第一目标或预期定向,并且第二控制器b的定位和移动可以暗示虚拟对象的第二目标或预期定向,这与第一控制器a所暗示的第一目标或预期定向不同。在一些实施方式中,其中两个单独的控制器a、b分别操作的两个单独的坐标系统可被解析为单个共同的坐标系统。算法可以将第一控制器a的定位和移动,特别是旋转,以及第二控制器b的定位和移动,特别是旋转,解析到该公共坐标系。由所述算法提供的该分辨率可以确定通过第一和第二控制器a、b的移动来针对影响例如所选虚拟对象的定向的改变作为目标或预期的输入。

在该公共坐标系中,公共坐标系的第一轴1可以由在相同时间点在第一控制器a的定位和第二控制器b的定位之间延伸的向量定义。例如,第一轴1可以由在第一控制器a的预定义中心部分a1和第二控制器b的预定义中心部分b1之间延伸的向量定义,如图2所示。

公共坐标系的第二轴2可以在相同时间点由第一控制器a的方向的平均值和第二控制器b的方向的平均值来定义。该算法可以在序列的时间点动态地选择该方向作为与第一轴1最正交的控制器a、b的移动方向,使得中心坐标系可以保持尽可能稳定。例如,可以根据x、y或z轴中的哪一个与第一轴最正交将第二轴2动态地选择为第一控制器a的x轴或y轴或z轴。在一些实施方式中,在该示例中,最正交的轴,例如,第一控制器a的x轴、y轴或z轴的最正交的可以是以最接近直角或最接近90度的角度与第一轴1相交的轴。在图2所示的示例中,第一控制器a和第二控制器b面向基本相似的方向,例如与基本上在用户面前的虚拟对象交互。在图2所示的示例中,控制器a和b由用户保持基本上直线且基本上平行,使得第一轴1在第一控制器a的中心部分a1和第二控制器b的中心部分b1之间延伸。在该示例中,基于第一和第二控制器a、b和第一轴1的相对定位,所述算法将选择y轴或z轴作为第二轴2,因为这些轴中的一个将与第一轴1最正交。

公共坐标系的第三轴3可以是第一轴1和第二轴2的叉积。换句话说,第三轴3可以表示第三向量,该第三向量是第一轴1表示的向量和第二轴2表示的向量的叉积。

图3示出了用户可以移动第一控制器a和第二控制器b以引起虚拟对象的旋转(例如,诸如虚拟方向盘和虚拟拨号盘等的虚拟对象的顺时针或逆时针旋转)的示例。第一和第二控制器a和b的移动以及由此产生的虚拟对象的旋转可以例如显示在用户佩戴的hmd100的显示器上。在图3所示的示例中,第一控制器a和第二控制器b基本上垂直定向,并且刚好在开始移动之前面向基本相似的方向。如箭头a3所示的第一控制器a沿向上方向的移动,以及箭头b3所示的第二控制器b沿向下方向的移动,可导致虚拟对象的顺时针旋转。可以通过所述算法将第一和第二控制器a、b的移动解析为如上所述的公共坐标系来确定虚拟对象的旋转量。

图4示出了用户可以移动第一控制器a和第二控制器b以便使虚拟对象例如从直立的、基本垂直的定位旋转到俯卧或基本水平定位的示例。在图4所示的示例中,第一控制器a和第二控制器b基本上垂直定向,并且刚好在开始移动之前面向基本相似的方向。如箭头a4所示的第一控制器a绕x轴的旋转移动以及如箭头b4所示的第二控制器b绕x轴的旋转移动可导致虚拟对象的相应旋转移动。可以通过所述算法将第一和第二控制器a、b的移动解析为如上所述的公共坐标系来确定虚拟对象的旋转量。

图5示出了在开始旋转移动之前第一控制器a和第二控制器b在不同方向上定向的示例。在图5所示的示例中,第一控制器a沿第一方向(即,图5中的右侧)定向,第二控制器b沿第二方向(即,图5中的左侧)定向。在该示例中,第一和第二控制器沿基本相反的方向定向;然而,要描述的原理可以应用于面向不一定是正相对方向的方向的控制器a、b。如箭头a5所示的第一控制器a在向上方向上的移动以及如箭头b5所示的第二控制器b在向下方向上的移动而不改变任一控制器a、b的有向定向可以导致虚拟对象的翻转类型移动。可以通过算法将第一和第二控制器a、b的旋转移动解析为如上所述的公共坐标系确定虚拟对象的翻转移动量。

图6示出了由用户选择用于使用第一和第二控制器a、b进行交互的虚拟对象200中的示例。在该示例中,在开始移动之前,第一控制器a定向在第一方向上,第二控制器b定向在第二个方向上。如箭头a6所示的第一控制器a沿顺时针方向的旋转移动以及,如箭头b6所示的第二控制器b沿顺时针方向的旋转移动可导致虚拟对象200的旋转移动。可以通过算法将第一和第二控制器a、b的旋转移动解析为如上所述的公共坐标系确定响应于第一和第二控制器a、b的旋转的虚拟对象200的旋转移动量。

也就是说,在为第一控制器a和第二控制器b建立公共坐标系时,可以由在第一控制器a的中心部分a1和第二控制器b的中心部分b1间延伸的线定义公共坐标系的第一轴1。然后,当第一控制器a和第二控制器b各自独立移动时,第二轴可由算法动态分配。算法可以在序列的时间点动态地选择第二轴2的方向,以对应于与第一轴1最正交的控制器a、b的移动方向,使得中心坐标系可以保持尽可能稳定。在图6所示的示例中,在所示的时间点处的第二轴2可以是例如第一控制器a的z轴。公共坐标系的第三轴可以对于每个时间点是第一轴1和第二轴2的叉积。

当第一控制器a和第二控制器b各自独立地移动或旋转时,可以由系统动态地检测和跟踪控制器a、b的移动。可以将控制器a、b的动态检测到的移动解析为在每个时间点相对于公共坐标系的单个移动,并且可以将单个移动应用于所选择的虚拟对象200。可以在用户佩戴的hmd100的显示器上向用户显示所选虚拟对象200的移动。

如上所述,在一些实施方式中,第一控制器a和第二控制器b分别操作的两个单独的坐标系可以通过动态平均第一和第二控制器的移动的算法被解析为单个公共坐标系。例如,可以基于控制器a、b的定位的平均变化来确定可以基于检测到的第一和第二控制器a、b的移动而应用于虚拟对象200的平移量。类似地,可以基于控制器a、b之间的距离的变化来确定基于检测到的第一和第二控制器a、b的移动要应用于虚拟对象200的比例的变化。可以基于控制器a、b之间的向量的变化来确定基于检测到的第一和第二控制器a、b的移动要应用于虚拟对象200的旋转输入。因此,可以主要通过第一和第二控制器a、b中的每一个相对于公共坐标系的旋转来定义虚拟对象的旋转。在基于检测到的第一和第二控制器a、b的移动确定要对所选虚拟对象200采取的目标或预期动作时,可以单独地(例如,以顺序方式)实现和/或可以同时实现这些动作。

如图7所示,可以基于控制器a、b的定位的平均变化来确定响应于诸如第一和第二控制器a、b的多个控制器的移动的虚拟对象200的平移量。在图7中所示的例子中,第一控制器a和第二控制器b基本上垂直定向,并且刚好在开始移动之前面向基本相似的方向。如箭头a7所示的第一控制器a在向上方向上的移动以及如箭头b7所示的第二控制器b在向上方向上的移动可以导致虚拟对象200的对应的向上移动或向上平移。虚拟对象200响应于第一和第二控制器a、b的向上移动而向上移动的量可以基于第一控制器a的向上移动和第二控制器b向上移动的平均值。可以刚好在开始移动之前基于第一控制器a和第二控制器b的已知定位以及在如上所述跟踪第一控制器a和第二控制器b的6dof移动时的第一控制器a和第二控制器b的已知定位来确定和动态更新第一和第二控制器a和b的移动量。

如图8所示,可以基于控制器a、b之间的距离的平均变化来确定响应于诸如第一和第二控制器a、b的多个控制器的移动的虚拟对象200的缩放量。在图8中所示的例子中,第一控制器a和第二控制器b基本上垂直定向,并且刚好在开始移动之前面向基本相似的方向。如箭头a8所示的第一控制器a沿第一方向的移动和如箭头b8所示的第二控制器b沿第二方向(其不同于第一方向,例如与第一方向相反)的移动可以导致虚拟对象200的相应缩放,例如,均匀缩放。响应于第一控制器a在第一方向上的移动和第二控制器b在第二方向上的移动的虚拟对象200的缩放量可以基于检测到的第一和第二控制器a、b之间的距离变化。例如,可以基于刚好在开始移动之前的第一控制器a和第二控制器b的已知的定位以及在如上所述跟踪第一和第二控制器a、b的6dof移动时的第一控制器a和第二控制器b的已知定位来确定和动态更新第一和第二控制器a、b之间的距离。在图8所示的示例中,第一和第二控制器a、b沿基本相反的方向定向;然而,关于图8描述的原理可以应用于面向不一定是直接相反的方向的不同方向的第一和第二控制器a、b。

如图9所示,可以基于第一控制器a和第二控制器b之间的向量变化来确定响应于诸如第一和第二控制器a、b的多个控制器的移动的虚拟对象200的旋转量。如上所述,基于检测到的第一控制器a的移动和检测到的第二控制器b的移动而确定虚拟对象200的目标或预期平移和/或所选虚拟对象200的目标或预期比例可以是这些原理在用于在虚拟环境中的交互的第一和第二控制器a、b的操作期间的序列的时间点上的相对简单的应用。然而,基于检测到的第一控制器a的移动和检测到的第二控制器b的移动来确定所选虚拟对象200的目标或预期旋转移动可能带来额外的挑战。例如,在一些实施方式中,基于检测到的第一控制器a的移动和检测到的第二控制器b的移动来确定所选虚拟对象200的目标或预期旋转移动可包括基于在两个向量之间的先前和当前轴的四元数的实施方式。

在图9所示的示例中,第一控制器a和第二控制器b基本上垂直定向,并且刚好在开始移动之前面向基本相似的方向。如箭头a9所示的第一控制器a沿诸如向上方向的第一方向的移动以及如箭头b9所示的第二控制器b沿诸如向下方向的第二方向的移动可以使虚拟对象200沿顺时针方向旋转。可以通过基于控制器a、b的先前向量轴和控制器a、b的当前向量轴的四元数的实施方式来确定基于检测到的第一和第二控制器a、b的移动的虚拟对象200的旋转量。在将每个控制器a、b的旋转约束到结果轴的过程中,可以应用算法来计算从前一个四元数到当前四元数的调整四元数。然后可以获得调整四元数的对数的虚部,从而产生用于调整的旋转轴。可以通过获取前一轴和调整轴之间的指数点积来约束新调整。

如上所述,基于检测到的第一控制器a的移动和检测到的第二控制器b的移动来确定所选虚拟对象200的目标或预期旋转移动可以包括基于两个向量之间的前一轴和当前轴的四元数的实施方式,其中,通过约束每个控制器a、b的旋转来实现基于第一和第二控制器a、b的定向的虚拟对象的旋转。可以通过下述方式来实现每个控制器a、b的旋转约束:计算从前一个四元数到当前四元数的调整四元数,然后获得调整四元数的对数的虚部,其定义了用于调整的旋转轴。然后,系统可以通过获取指定轴和调整轴之间的指数点积来约束新调整。

图10a是物理空间中的用户的第三人视图,该用户佩戴hmd100并且一手握住第一控制器a而另一手握住第二控制器b,同时体验由hmd100产生的虚拟环境。在图10a中所示的例子中,为了便于讨论和说明,用户在佩戴hmd100同时体验虚拟环境时可以观看的虚拟场景400的示例被表示为插图。用户可以选择以多种不同的方式选择虚拟场景400中显示的虚拟对象之一用于交互和/或操纵等。在图10b所示的示例中,用户例如通过下述方式已选择与虚拟方向盘420交互:使用例如控制器a、b中的一个或两个与虚拟方向盘420进行虚拟接触,并且在虚拟方向盘420处引导来自控制器a、b中的一个或两个的虚拟光束,等等。一旦用户选择了虚拟对象(在该示例中为虚拟方向盘420),用户可以使用第一控制器a和/或第二控制器b通过例如第一和/或第二控制器a、b的移动以及在控制器a、b的一个或两个上的操纵装置的致动等与虚拟方向盘420交互。

例如,响应于如图3和/或图9所示的第一控制器a和第二控制器b的移动,虚拟方向盘420可以顺时针旋转,如图10c所示。可以基于检测到的第一控制器a的移动、检测到的第二控制器b的移动以及检测到的第一控制器a和第二控制器b的移动向公共坐标系的解析来确定虚拟方向盘420的旋转量,如上面参考图3和9详细描述的那样。可以在用户佩戴的hmd100的显示器上向用户显示虚拟方向盘420的这种旋转。

图10a-10c仅示出了响应于如上所述的第一控制器a和第二控制器b的旋转移动的虚拟对象420的旋转的一个示例。除了虚拟对象的平移和虚拟对象的缩放之外,可以响应于如上所述的检测到的多个控制器(例如,第一控制器a和第二控制器b)的移动,特别是旋转移动,可以实现所选虚拟对象的许多其他移动。这样的移动可以包括例如单独或组合地围绕轴x、y和/或z中的一个或多个的旋转,并且还可以与平移和缩放组合。响应于第一和/或第二控制器a、b的相应移动,可以在虚拟环境中顺序地和/或同时地实现虚拟对象的这些移动。

如上所述,在一些实施方式中,可以动态地跟踪第一控制器a和第二控制器b的定位和定向,并且可以将第一控制器a和第二控制器b的移动动态地解析为公共坐标系,以便可以在虚拟环境中动态应用输入。因此,第一和第二控制器a、b的顺序移动和移动的组合可以被动态地解析到公共坐标系。这可以允许基本上无限的移动集合被检测,跟踪和解析到公共坐标系,并且被反映为虚拟环境中的输入。例如,该系统和方法可以应用在虚拟环境中,其中,用户可以选择例如用于绘画和绘图等的绘图工具或绘画工具。

例如,如图10d所示,在增强和/或虚拟现实环境中使用绘图应用程序的用户可以按照轨道450a所示的顺序的移动组合(包括许多顺序旋转和平移移动)移动第一控制器a,以生成在由hmd100生成的虚拟环境中向用户显示的虚拟图案460a。类似地,用户可以按如轨道460b所示的顺序的移动组合(包括许多顺序旋转和平移移动)移动第二控制器b,以生成在hmd100生成的虚拟环境中向用户显示的虚拟模式460b。在图10d所示的示例中,由于没有专门为用户经由第一和第二控制器a、b进行交互和/或操纵而选择单个虚拟对象。因此,在这种情况下,可以如上所述跟踪控制器a、b的移动,以及基于检测到的围绕控制器a、b的各个坐标系的移动而生成期望的虚拟效果。

图11a和11b是示例hmd(例如,图1和10a中的用户佩戴的hmd100)的透视图。图12是增强现实和/或虚拟现实系统的框图,该增强现实和/或虚拟现实系统包括与多个不同的第二电子设备302通信的第一电子设备,第二电子设备302包括例如第一外部设备302a和第二外部设备302b。第一电子设备300可以是例如生成增强和/或虚拟现实环境的hmd,并且第二电子设备302可以与第一电子设备300通信,并且可以被配备为包括上述能力。

如图11a和11b所示,示例hmd可包括耦合到框架120的壳体110,音频输出装置130包括例如安装在耦合到框架120的耳机中的扬声器。在图11b中,壳体110的前部110a远离壳体110的基部110b旋转,使得容纳在壳体110中的一些部件是可见的。显示器140可以安装在壳体110的前部110a的面向内侧上。当前部110a处于相对于壳体110的基部110b的关闭定位时,透镜150可以安装在壳体110中在用户的眼睛和显示器140之间。在一些实施方式中,hmd100可以包括感测系统160,感测系统160包括各种传感器,例如,音频传感器、图像/光传感器和定位传感器(例如,惯性测量单元,其包括陀螺仪和加速度计)等。hmd100还可以包括控制系统170,控制系统170包括处理器190和各种控制系统设备,以促进hmd100的操作。

在一些实施方式中,hmd100可包括用于捕获静止和移动图像的相机180。由相机180捕获的图像可以用于帮助跟踪用户和/或控制器102的物理定位,和/或可以在通过模式下在显示器140上显示给用户。在一些实施方式中,hmd100可以包括凝视跟踪设备165,其包括一个或多个图像传感器165a以检测和跟踪用户的眼睛注视。在一些实施方式中,hmd100可以被配置为使得检测到的凝视被处理为用户输入以被转换成增强现实和/或虚拟现实环境中的对应交互。

如图12所示,第一电子设备300可以包括感测系统370和控制系统380,其可以分别类似于图10a和10b中所示的感测系统160和控制系统170。感测系统370可包括例如光传感器、音频传感器、图像传感器、距离/接近传感器、定位传感器和/或其他传感器和/或传感器的不同组合,包括例如定位成检测和跟踪用户的眼睛注视的图像传感器。控制系统380可以包括例如电源/暂停控制设备、音频和视频控制设备、光学控制设备、转换控制设备和/或其他这样的设备和/或设备的不同组合。取决于特定实施方式,感测系统370和/或控制系统380可包括更多或更少的设备,并且可具有所示的不同物理布置。第一电子设备300还可以包括与感测系统370和控制系统380通信的处理器390、存储器385以及提供第一电子设备300与另一外部设备(例如,第二电子设备302)之间的通信的通信模块395。

第二电子设备302(302a/302b)可以包括通信模块306,其提供第二电子设备302中的每一个与另一设备(例如,第一电子设备300)之间的通信。第二电子设备302可以各自包括感测系统304,感测系统304包括:图像传感器和音频传感器,例如包括在相机和麦克风中;惯性测量单元;诸如包括在控制器的触敏表面中或智能手机的触摸传感器;以及,其他这样的传感器和/或不同的传感器组合。处理器309可以与每个第二电子设备302的感测系统304和控制单元305通信,控制单元305可以访问存储器308并控制每个第二电子设备302的整体操作。

在图13中示出根据本文描述的实施方式的、将多个控制器的旋转移动解析到公共坐标系以用于在增强和/或虚拟现实环境中的输入的方法900。

在启动虚拟和/或增强现实体验之后(框910),可以如上所述跟踪控制器移动(例如,在由hmd100生成的虚拟环境中检测到的一个或多个6dof控制器的移动)(框920)。如果在虚拟环境中检测到多个控制器,例如,如上所述的第一和第二控制器a和b,则可以动态地跟踪检测到的多个控制器的移动,并且检测到的多个控制器的移动被解析为单个公共坐标系,如上面参照图2-10c详细描述的(方框940)。然后,可以基于已经解析到公共坐标系的多个控制器的移动(框945)或者基于检测到的单控制器围绕其相应坐标系的移动(框950),将对应的输入应用于所选择的虚拟对象。该过程可以继续直到虚拟体验终止(框960)。

图14示出了可以用于此处描述的技术的计算机设备1000和移动计算机设备1050的示例。计算设备1000包括处理器1002、存储器1004、存储设备1006、连接到存储器1004和高速扩展端口1010的高速接口1008以及连接到低速总线1014和存储设备1006的低速接口1012。组件1002、1004、1006、1008、1010和1012中的每一个使用各种总线互连,并且可以适当地安装在公共主板上或以其他方式安装。处理器1002可以处理用于在计算设备1000内执行的指令,包括存储在存储器1004中或存储设备1006上的指令,以在外部输入/输出设备(例如,高速耦合到高速接口1008的显示器1016)上显示gui的图形信息。在其他实施方式中,可以适当地使用多个处理器和/或多条总线以及多个存储器和多个类型的存储器。而且,可以连接多个计算设备1000,每个设备提供必要操作的部分(例如,作为服务器库、一组刀片服务器或多处理器系统)。

存储器1004存储计算设备1000内的信息。在一个实施方式中,存储器1004是一个或多个易失性存储器单元。在另一实施方式中,存储器1004是一个或多个非易失性存储器单元。存储器1004还可以是另一种形式的计算机可读介质,例如磁盘或光盘。

存储设备1006能够为计算设备1000提供大容量存储。在一个实施方式中,存储设备1006可以是或包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪存或其他类似的固态存储设备或设备阵列,包括存储区域网络中或其他配置的设备。计算机程序产品可以有形地体现在信息载体中。计算机程序产品还可以包含指令,所述指令在被执行时执行一个或多个方法,例如上面描述的那些方法。信息载体是计算机或机器可读介质,例如存储器1004、存储设备1006或处理器1002上的存储器。

高速控制器1008管理计算设备1000的带宽密集型操作,而低速控制器1012管理较低带宽密集型操作。这种功能分配仅是示例性的。在一个实施方式中,高速控制器1008耦合到存储器1004、显示器1016(例如,通过图形处理器或加速器),并耦合到高速扩展端口1010,高速扩展端口1010可以容纳各种扩展卡(未示出)。在该实施方式中,低速控制器1012耦合到存储设备1006和低速扩展端口1014。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口可以例如通过网络适配器耦合到一个或多个输入/输出设备,例如键盘、指示设备、扫描仪或诸如交换机或路由器的网络设备。

可以以多种不同的形式实现计算设备1000,如图中所示。例如,它可以实现为标准服务器1020,或者在一组这样的服务器中实现多次。它还可以实现为机架服务器系统1024的一部分。此外,它可以在诸如膝上型计算机1022的个人计算机中实现。或者,来自计算设备1000的组件可以与移动设备(未示出)中的其他组件(例如,设备1050)组合。这些设备中的每一个可以包含计算设备1000、1050中的一个或多个,并且整个系统可以由彼此通信的多个计算设备1000、1050组成。

计算设备1050包括处理器1052、存储器1064、诸如显示器1054的输入/输出设备、通信接口1066和收发器1068以及其他组件。设备1050还可以设置有存储设备,例如微驱动器或其他设备,以提供额外的存储。组件1050、1052、1064、1054、1066和1068中的每一个使用各种总线互连,并且若干组件可以适当地安装在公共主板上或以其他方式安装。

处理器1052可以执行计算设备1050内的指令,包括存储在存储器1064中的指令。处理器可以实现为芯片的芯片组,其包括单独的和多个模拟和数字处理器。例如,处理器可以提供用于在设备1050的其他组件的协调,诸如用户界面的控制、设备1050运行的应用和设备1050的无线通信。

处理器1052可以通过控制接口1058与耦合到显示器1054的显示器接口1056与用户通信。显示器1054可以是例如tftlcd(薄膜晶体管液晶显示器)或oled(有机发光二极管)显示器或其他适当的显示技术。显示器接口1056可以包括用于驱动显示器1054以向用户呈现图形和其他信息的适当电路。控制接口1058可以从用户接收命令并将它们转换以提交给处理器1052。此外,可以提供与处理器1052通信的外部接口1062,以便实现设备1050与其他设备的近区域通信。外部接口1062可以例如在一些实施方式中提供有线通信,或者在其他实施方式中提供无线通信,并且还可以使用多个接口。

存储器1064存储计算设备1050内的信息。存储器1064可以实现为计算机可读介质、易失性存储器单元或非易失性存储器单元中的一个或多个。扩展存储器1074还可以被提供并通过扩展接口1072连接到设备1050,扩展接口1072可以包括例如simm(单列直插存储器模块)卡接口。这样的扩展存储器1074可以为设备1050提供额外的存储空间,或者还可以存储设备1050的应用程序或其他信息。具体地,扩展存储器1074可以包括执行或补充上述过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器1074可以被提供为设备1050的安全模块,并且可以用允许安全使用设备1050的指令编程。此外,可以通过simm卡提供安全应用程序以及附加信息,诸如以不可黑客的方式将识别信息放在simm卡上。

存储器可以包括例如闪存和/或nvram存储器,如下所述。在一个实施方式中,计算机程序产品有形地体现在信息载体中。该计算机程序产品包含指令,其在执行时执行一种或多种方法,例如上述方法。信息载体是计算机或机器可读介质,例如存储器1064、扩展存储器1074或处理器1052上的存储器,其可以例如通过收发器1068或外部接口1062被容纳。

设备1050可以通过通信接口1066无线通信,通信接口1066可以在必要时包括数字信号处理电路。通信接口1066可以提供各种模式或协议下的通信,例如gsm语音呼叫、sms、ems或mms消息、cdma、tdma、pdc、wcdma、cdma2000或gprs等。这种通信可以例如通过射频收发器1068发生。此外,可以例如使用蓝牙、wi-fi或其他这样的收发器(未示出)发生短程通信。另外,gps(全球定位系统)接收器模块1070可以向设备1050提供附加的导航和位置相关的无线数据,其可以由在设备1050上运行的应用适当地使用。

设备1050还可以使用音频编解码器1060可听地进行通信,音频编解码器1060可以从用户接收语音信息并将其转换为可用的数字信息。音频编解码器1060同样可以例如通过例如在设备1050的手机中的扬声器为用户产生可听声音。这种声音可以包括来自语音电话呼叫的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且还可以包括由在设备1050上运行的应用程序生成的声音。

计算设备1050可以以多种不同的形式实现,如图中所示。例如,它可以实现为蜂窝电话1080。它还可以实现为智能电话1082、个人数字助理或其他类似移动设备的一部分。

这里描述的系统和技术的各种实施方式可以在数字电子电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些各种实施方式可以包括在可编程系统上可执行和/或可解释的一个或多个计算机程序中的实施方式,该可编程系统包括至少一个可编程处理器,其可以是特殊的或通用的,耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并且向存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。

这些计算机程序(也称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或装配/机器语言实现。如本文所使用的,术语“机器可读介质”、“计算机可读介质”是指任何计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(pld)),用于将机器指令和/或数据提供给可编程处理器,该可编程处理器包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。

为了提供与用户的交互,此处描述的系统和技术可以实现在计算机上,该计算机具有:显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器),用于向用户显示信息;以及,键盘和指示设备(例如,鼠标或轨迹球),用户可以通过其向计算机提供输入。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且可以以任何形式接收来自用户的输入,该任何形式包括声音、语音或触觉输入。

这里描述的系统和技术可以在计算机系统中实现,所述计算机系统包括后端组件(例如,作为数据服务器)或者包括中间件组件(例如,应用服务器)或包括前端组件(例如,具有图形用户界面或互联网浏览器客户端计算机)或或者这种后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)连接。通信网络的示例包括局域网(“lan”)、广域网(“wan”)、对等网络(具有自组织或静态成员)、网格计算基础设施和互联网。

计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过诸如所述的那个的通信网络交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。

在一些实施方式中,图10中描绘的计算设备可以包括:与虚拟现实(vr耳机/hmd设备1090)对接的传感器。例如,包括在图10中描绘的计算设备1050或其他计算设备上的一个或多个传感器可以向vr耳机1090提供输入,或者一般而言向vr空间提供输入。传感器可包括但不限于触摸屏、加速计、陀螺仪、压力传感器、生物识别传感器、温度传感器、湿度传感器和环境光传感器。计算设备1050可以使用传感器来确定vr空间中的计算设备的绝对定位和/或检测到的旋转,然后可以将其用作vr空间的输入。例如,计算设备1050可以作为诸如控制器、激光指示器、键盘、武器等的虚拟对象并入vr空间。当结合到vr空间中时的计算设备/虚拟对象的定位可以允许用户定位计算设备,以便在vr空间中以某些方式查看虚拟对象。例如,如果虚拟对象表示激光指示器,则用户可以操纵计算设备,就像它是实际的激光指示器一样。用户可以左和右、上和下、以圆圈等移动计算设备,并以与使用激光指示器类似的方式使用该设备。

在一些实施方式中,包括在计算设备1050上或连接到计算设备1050的一个或多个输入设备可以用作vr空间的输入。输入设备可以包括但不限于具有输入功能的触摸屏、键盘、一个或多个按钮、触控板、触摸板、指示设备、鼠标、轨迹球、操纵杆、相机、麦克风、耳机或芽(bud)、游戏控制器或其他可连接的输入设备。当计算设备被并入vr空间中时与包括在计算设备1050上的输入设备交互的用户可以导致在vr空间中发生特定动作。

在一些实施方式中,计算装置1050的触摸屏可呈现为vr空间中的触摸板。用户可以与计算设备1050的触摸屏交互。例如,在vr头戴式耳机1090中,交互被呈现为vr空间中的呈现的触摸板上的移动。呈现的移动可以控制vr空间中的虚拟对象。

在一些实施方式中,计算设备1050上包括的一个或多个输出设备可以向vr空间中的vr头戴式耳机1090的用户提供输出和/或反馈。所述输出和反馈可以是视觉的、触觉的或音频的。输出和/或反馈可以包括但不限于振动、打开和关闭或闪烁和/或闪动一个或多个灯或闪光灯、发出警报、播放铃声、播放歌曲以及播放音频文件。输出设备可包括但不限于振动马达、振动线圈、压电装置、静电装置、发光二极管(led)、闪光灯和扬声器。

在一些实施方式中,计算设备1050可以显现为在计算机生成的3d环境中的另一个对象。用户与计算设备1050的交互(例如,旋转、摇动、触摸触摸屏、在触摸屏上滑动手指)可以被解释为与vr空间中的对象的交互。在vr空间中的激光指示器的示例中,计算设备1050在计算机生成的3d环境中显现为虚拟激光指示器。当用户操纵计算设备1050时,vr空间中的用户看到激光指示器的移动。用户从与计算设备1050上或vr耳机1090上的vr环境中与计算设备1050的交互接收反馈。

在一些实施方式中,计算设备1050可以包括触摸屏。例如,用户可以以特定方式与触摸屏交互,该特定方式可以模仿触摸屏上发生的事件以及vr空间中发生的事件。例如,用户可以使用捏合型动作来缩放在触摸屏上显示的内容。触摸屏上的这种捏合型动作可以使vr空间中提供的信息被缩放。在另一示例中,计算设备可以被呈现为在计算机生成的3d环境中的虚拟书。在vr空间中,书的页可以显示在vr空间中,并且用户的手指在触摸屏上的滑动可以被解释为翻动/翻虚拟书的页。当翻动/翻每页时,除了看到页面内容改变之外,还可以向用户提供音频反馈,例如书中翻页的声音。

在一些实施方式中,可以在计算机生成的3d环境中呈现除了计算设备之外的一个或多个输入设备(例如,鼠标,键盘)。呈现的输入设备(例如,呈现的鼠标、呈现的键盘)可以用于在vr空间中呈现以控制vr空间中的对象。

计算设备1000旨在表示各种形式的数字计算机和设备,包括但不限于膝上型计算机、台式机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。计算设备1050旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话和其他类似的计算设备。这里示出的组件、它们的连接和关系以及它们的功能仅仅意味着是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实施方式。

已经描述了许多实施例。然而,应该理解,在不脱离本说明书的精神和范围的情况下,可以进行各种修改。

另外,图中描绘的逻辑流程不需要所示的特定顺序或顺序次序来实现期望的结果。另外,可以从所描述的流程中提供其他步骤,或者可以从所描述的流程中消除步骤,并且可以将其他组件添加到所述的系统或从所述的系统中移除。因此,其他实施例在所附权利要求的范围内。

虽然已经如本文所述示出了所描述的实施方式的某些特征,但是本领域技术人员现在将想到许多修改、替换、改变和等同物。因此,应该理解,所附权利要求旨在覆盖落入实施方式的范围内的所有这些修改和变化。应当理解,仅作为示例而非限制来呈现它们,并且可以进行形式和细节上的各种改变。除了互斥组合之外,本文描述的装置和/或方法的任何部分可以以任何组合进行组合。这里描述的实施方式可以包括所描述的不同实施方式的功能、组件和/或特征的各种组合和/或子组合。

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