虚拟现实中的双手对象操纵的制作方法

文档序号:15575246发布日期:2018-09-29 05:23阅读:241来源:国知局

本申请要求2016年5月10日提交的名为“two-handedobjectmanipulationsinvirtualreality”的美国非临时专利申请no.15/150,794的优先权并且是其继续申请,通过参考将其全部内容合并于此。

本申请一般涉及用于在虚拟现实(vr)环境中缩放、旋转以及通过其他方式操纵对象的方法和装置。



背景技术:

对象和形状操纵技术可以被配置成在特定对象上操作,或者在特定对象周围的环境上操作。这些技术可包括将对象或环境变形和扭曲,从而就对象或环境怎样出现实现改变。在虚拟现实环境中操纵对象可以提出固有于观看以及与这些对象交互的用户感知的很多技术问题。



技术实现要素:

一个或多个计算机的系统可以被配置成通过在系统上安装软件、固件、硬件或它们的组合来执行特定的操作或动作,软件、固件、硬件或它们的组合在操作中导致系统执行动作。一个或多个计算机程序可以被配置成通过包括指令来执行特定的操作或动作,在通过数据处理设备执行时,指令导致设备执行动作。一个一般性方面包括一种计算机实现的方法,该方法包括在头戴式显示装置中提供的用户界面内生成包括至少一个三维虚拟对象的虚拟环境,以及检测第一交互样式。第一交互样式可包括修改与三维虚拟对象相关联的第一虚拟特征的指示。该方法还可包括检测第二交互样式,其中,第二交互样式包括对应于在与三维虚拟对象相关联的第二虚拟特征上待执行的修改的取向和移动。响应于检测第二交互样式,该方法可包括根据第一交互样式在第一虚拟特征处并根据第二交互样式在第二虚拟特征处生成三维虚拟对象的修改的版本,以及在头戴式显示装置的用户界面中提供三维虚拟对象的修改的版本。该方面的其他实施例包括分别被配置成执行所述方法的动作的对应的计算机系统、设备以及记录在一个或多个计算机存储装置上的计算机程序。

实施方式可包括以下特征中的一个或多个。在该方法中,在发生所述移动的同时,在虚拟环境中生成并渲染三维虚拟对象的修改的版本。在该方法中,第一交互样式定义开始修改第一虚拟特征的处所,第二交互样式定义离开第二虚拟特征的方向和取向,且三维虚拟对象的修改的版本包括三维虚拟对象的缩放版本,缩放版本从第一虚拟特征向第二虚拟特征缩放。在该方法中,将三维虚拟对象的修改的版本从第一虚拟特征调整到三维虚拟对象的新位置、取向和比例,以及从第二虚拟特征调整到三维虚拟对象的新位置、取向和比例。修改的版本可以在虚拟环境中在用户视野内。

实施方式还可包括响应于检测到第一交互样式在与第二交互样式相同的三维轴中执行,启用均匀缩放模式。均匀缩放模式可以被配置成根据第一交互样式和第二交互样式在三个维度中均匀地缩放三维虚拟对象。

该方法还可包括通过拉伸和扭曲三维虚拟对象,根据第一交互样式在第一虚拟特征处并根据第二交互样式在第二虚拟特征处生成三维虚拟对象的修改的版本。拉伸包括在三维虚拟对象上定义第一锚点和第二锚点,并在第一锚点与第二锚点之间形成的平面中进行拉伸。扭曲三维虚拟对象可包括在第一输入平面中在第一虚拟特征处在三维空间中旋转三维虚拟对象,且旋转三维虚拟对象包括在三维空间中在所述第二虚拟特征处从第二输入平面到第三输入平面旋转三维虚拟对象。第一输入平面对应于x-y坐标平面,第二输入平面对应于y-z坐标平面,第三输入平面对应于x-z坐标平面,且每个平面可以属于三维坐标空间。

检测第一交互样式可包括检测与第一被跟踪装置相关联的第一输入,且检测第二交互样式包括检测与第二被跟踪装置相关联的第二输入。该方法还可包括至少部分地基于检测通过访问虚拟环境的用户的左手执行的第一被跟踪手移动,在第一虚拟特征处生成第一交叉点,以及至少部分地基于检测通过访问虚拟环境的用户的右手执行的第二被跟踪手移动,在第二虚拟特征处生成第二交叉点。该方法还可包括根据第一交互样式和第二交互样式修改三维虚拟对象。修改可以至少部分地基于确定在第一被跟踪手移动或第二被跟踪手移动中执行的至少一个姿势是与三维虚拟对象相关联的取向的改变,以及在根据另一个姿势修改三维对象的同时执行至少一个姿势。

该方法还可包括生成锚点,锚点被配置成在三维空间中在第一交叉点冻结三维虚拟对象的一部分,同时根据第二交互样式在第二虚拟特征处修改三维对象。生成锚点包括将三维虚拟对象上的至少一个处所定义成可选择的缩放处所,可选择的缩放处所可操作以接收用户发起的输入,用户发起的输入包括指示用于缩放三维虚拟对象的指令的至少一个姿势。该方法还可包括响应于检测到第一电子装置面向第二电子装置,启用均匀缩放模式。均匀缩放模式可以被配置成根据第一交互样式和第二交互样式在三个维度中均匀地缩放三维虚拟对象。

该方法还可包括:检测到第一电子装置面向第二电子装置包括检测第二电子装置相对于第一电子装置的初始位置和取向。该方法还可包括跟踪第二电子装置相对于第一电子装置执行的至少一个姿势,以及通过将第二电子装置相对于第一电子装置的初始位置和取向与检测到的第一电子装置或第二电子装置的更新的位置和取向进行比较,检测第二电子装置与第一电子装置的对准。检测到的更新的位置可以基于至少一个姿势。在第一虚拟特征处生成三维虚拟对象的修改的版本包括在虚拟环境中并附着于所述三维虚拟对象提供可视指示,可视指示包括定义卡合(snap)框架的多个锚点,卡合框架被配置成选择在其中沿三个维度平移和旋转虚拟对象的至少一个坐标系。响应于检测第二交互样式,该方法可包括定义旋转路径以围绕与第一虚拟特征相关联的处所旋转三维虚拟对象。

另一个一般性方面包括一种计算机实现的方法,该方法包括在三维虚拟环境中检测由第一电子装置执行的第一交互样式,第一交互样式包括修改与在虚拟环境中渲染的三维虚拟对象相关联的第一虚拟特征的指示。该方法还可包括在三维虚拟环境中检测由第二电子装置执行的第二交互样式,第二交互样式包括对应于在与三维虚拟对象关联的第二虚拟特征上待执行的修改的取向和移动。响应于检测第二交互样式,根据第一交互样式在第一虚拟特征处并根据第二交互样式在第二虚拟特征处生成三维虚拟对象的修改的版本。该方法还可包括根据第一交互样式和第二交互样式在头戴式显示装置的用户界面中渲染三维虚拟对象的修改的版本。该方面的其他实施例包括分别被配置成执行所述方法的动作的对应的计算机系统、设备以及记录在一个或多个计算机存储装置上的计算机程序。

实施方式可包括以下特征中的一个或多个。该方法还可包括响应于检测到第一电子装置面向第二电子装置,启用均匀缩放模式。均匀缩放模式可以被配置成根据第一交互样式和第二交互样式在三个维度中均匀地缩放三维虚拟对象。检测到第一电子装置面向第二电子装置包括:检测第二电子装置相对于第一电子装置的初始位置和取向。

该方法还可包括跟踪第二电子装置相对于第一电子装置执行的至少一个姿势,并通过将第二电子装置相对于第一电子装置的初始位置和取向与检测到的第一电子装置或第二电子装置的更新位置和取向进行比较,检测第二电子装置与第一电子装置的对准。检测到的更新位置可以基于至少一个姿势。在第一虚拟特征处生成三维虚拟对象的修改的版本可包括在虚拟环境中并附着于所述三维虚拟对象提供可视指示。可视指示可包括定义卡合框架的多个锚点,卡合框架被配置成选择其中在三个维度中平移和旋转虚拟对象的至少一个坐标系。响应于检测第二交互样式,该方法可包括定义旋转路径以围绕与第一虚拟特征相关联的处所旋转三维虚拟对象。与虚拟对象相关联的多个特征包括虚拟对象的平面性、维度、面积、取向、角、边界、轮廓或表面纹理中的一个或多个。

该方法可包括:在虚拟现实环境中生成包括虚拟对象的三维虚拟模型的虚拟现实环境,并基于用户执行的双手交互以及检测到的与虚拟对象相关联的多个特征,在生成的虚拟现实环境中在三个维度中旋转虚拟对象的同时自动缩放虚拟对象。所述技术的实施方式可包括计算机可访问介质上的硬件、方法或处理、或计算机软件。

在另一个一般性方面中描述了一种系统,包括被配置成生成虚拟环境的至少一个计算装置。至少一个计算装置可包括用于存储可执行指令的存储器以及被配置成执行指令的处理器,以使得至少一个计算装置在头戴式显示装置中提供的用户界面内生成包括至少一个三维虚拟对象的虚拟环境,检测第一交互样式,第一交互样式包括修改与三维虚拟对象相关联的第一虚拟特征的指示,检测第二交互样式,第二交互样式包括对应于在与三维虚拟对象关联的第二虚拟特征上待执行的修改的取向和移动,以及响应于检测第二交互样式,根据第一交互样式在第一虚拟特征处并根据第二交互样式在第二虚拟特征处生成三维虚拟对象的修改的版本。可以在头戴式显示装置的用户界面中提供三维虚拟对象的修改的版本。该方面的其他实施例包括分别被配置成执行所述方法的动作的对应的计算机系统、设备以及记录在一个或多个计算机存储装置上的计算机程序。

实施方式可包括以下特征中的一个或多个。在该系统中,在发生所述移动的同时,在虚拟环境中生成并渲染三维虚拟对象的修改的版本。在该系统中,第一交互样式定义开始修改第一虚拟特征的处所。第二交互样式可以定义离开第二虚拟特征的方向和取向,且三维虚拟对象的修改的版本包括三维虚拟对象的缩放版本,缩放版本从第一虚拟特征向第二虚拟特征缩放。在该系统中,将三维虚拟对象的修改的版本从第一虚拟特征调整到三维虚拟对象的新位置、取向和比例,以及从第二虚拟特征调整到三维虚拟对象的新位置、取向和比例,其中所述修改的版本在所述虚拟环境中在用户视野内。

系统还可响应于检测到第一交互样式在与第二交互样式共享的轴平面中执行,启用均匀缩放模式,其中,均匀缩放模式被配置成根据第一交互样式和第二交互样式在三个维度中均匀地缩放三维虚拟对象。

在另一个一般性方面中描述了一种方法,包括:利用计算装置的一个或多个光学传感器获得关于虚拟对象的多个特性,由计算装置的处理器基于多个特性生成虚拟对象的三维虚拟模型,以及由处理器处理多个特性和三维虚拟模型,以在三维虚拟模型中定义多个锚点。多个锚点可以分别与虚拟对象上的多个可选区域相关联。响应于接收选择多个区域中的至少两个区域的输入,该方法可包括:建立多个区域中的每个区域的输入的相关性,基于所述相关性并基于与虚拟对象相关联的多个特性来修改虚拟对象的尺寸和取向,以及在三维虚拟模型中渲染和显示修改的虚拟对象。在一些实施方式中,与虚拟对象相关联的多个特性包括虚拟对象的平面性、维度、面积、取向、角、边界、轮廓或虚拟表面纹理中的一个或多个。

在一些实施方式中,该方法可包括生成虚拟现实环境,虚拟现实环境包括虚拟现实环境中的虚拟对象的三维虚拟模型,基于用户执行的双手交互以及检测到的与虚拟对象相关联的多个特性,在生成的虚拟现实环境中在三个维度中旋转虚拟对象的同时自动缩放虚拟对象。

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

附图说明

图1是用于在虚拟现实(vr)空间中操纵2d和3d内容的示例系统的方框图。

图2是示出可通信地耦合到vr空间中的hmd装置的控制器的方框图。

图3a-图3b示出用户访问vr空间以执行虚拟对象操纵。

图4是示出将虚拟对象卡合到位的示例的方框图。

图5a-图5c示出用户访问vr空间以执行虚拟对象操纵的示例。

图6是示出使得用户能够操纵vr空间中的内容的过程的一个实施例的流程图。

图7是示出修改vr空间中的3d图像内容的另一个过程的一个实施例的流程图。

图8是示出生成虚拟对象的模型的过程的一个实施例的流程图。

图9示出可用于实现本文所述技术的计算机装置和移动计算机装置的示例。

各附图中相似的附图标记相似相同的元件。

具体实施方式

穿戴vr耳机或头戴式显示器(hmd)装置沉浸于3d虚拟环境的用户可以探索3d虚拟环境/vr空间并通过各种不同类型的输入与vr空间中的内容和对象交互。这些输入例如可包括使用本文所述方法和系统转换到vr空间的物理交互。物理交互可包括操纵与hmd装置分开的一个或多个控制器装置,和/或通过手/手臂姿势、头部移动、眼睛指向性注视等等。一般而言,可以跟踪或通过其他方式感测手/手臂姿势和控制器装置移动,以确定访问vr空间中的hmd装置的用户的手和/或手臂的位置(position)、处所(location)、取向(orientation)和移动(movement)。可将这样的姿势和移动定义为允许用户以直观的方式操纵虚拟对象。可以在vr空间中跟踪并可视地表示用户的手和手臂,以可视地向用户指示关于虚拟对象的移动和/或操纵的反馈。在一些实施方式中,可以跟踪用户并且可以在vr空间中可视地表示用户的全身表示。

与虚拟对象的交互和操纵可以与用户手、手臂或基于控制器的姿势相关联。虚拟对象与用户手、手臂或基于控制器的姿势之间的关联可用于确定用户希望以特定方式修改特定虚拟对象。例如,本公开所述系统和方法可通过在三个维度上跟踪来促进用户的两手或者用户操作的两个控制器之间的数据相关性和交换,以使得用户能够抓握vr空间中的虚拟对象并修改这样的对象。可以监视、跟踪和分析两手或两个控制器之间的数据相关性和数据交换,从而关于手或控制器移动以及vr空间中描述的虚拟对象确定特定移动、位置、旋转、速度、取向或者六个或更多个自由度内的其他移动。数据相关性和交换可以使得用户能够按照与在物理世界中执行这样的动作类似的方式伸出和抓握、触摸或通过其他方式与虚拟对象交互。

例如,在把虚拟对象保持在一个或两个处所时,通过利用与处理和运作物理对象共同的手部姿势/互动来旋转、拉伸、缩放、扭曲或通过其他方式操纵虚拟对象,用户可以移动虚拟对象。在一些实施方式中,虚拟对象可以在vr空间中显现为附着于用户的一部分(例如,手、控制器),以利用图形指示来帮助观看理解,图形指示暗示任何移动都可以按照与手/控制器移动相同的方式移动虚拟对象,同时产生附加的图形效果,以修改虚拟对象的外观或行为。

可通过跟踪vr空间中的控制器或手部移动来收集信息。该信息可用于确定用户正在执行哪个姿势。可通过任何数量的方式来使用姿势以对对象执行视觉操纵。

例如,本公开所述系统和方法可建立用户第一只手的移动与用户第二只手的移动的相关性。作为非限制性示例,如果用户在握紧她拳头的同时向外移动她的双手,那么本文所述系统可以暗示用户希望拉伸和/或放大用户可以用双手抓握的虚拟对象。

下面参照图1,示出用于在vr空间中提供和操纵2d和3d内容的示例系统100的方框图。通常,系统100可以利用本文所述方法、组件和技术来提供3dvr空间和vr内容。具体而言,系统100可以向用户提供多个选项,其中可以操纵vr空间内的虚拟对象。

示例系统100包括可通过网络101交换数据的多个计算装置。这些装置可以代表客户端或服务器,并且可经由网络101或另一个网络执行通信。在一些实施方式中,客户端装置可包括一个或多个游戏装置或控制器、移动装置、电子平板电脑、膝上型电脑、相机、vr眼镜或者可用于访问vr内容的其他这样的电子装置。

如图1所示,系统100包括移动装置102、膝上型计算装置104、vr耳机和/或头戴式显示器(hmd)装置106、以及vr系统108。装置102、104和106可以代表客户端装置。移动装置102、计算装置104和hmd装置106可包括一个或多个处理器以及一个或多个存储器装置。装置102-106可以执行客户端操作系统以及一个或多个客户端应用,它们可以访问、控制和/或在包括于每个相应装置或连接装置的显示装置上显示vr内容。

vr系统108可以代表服务器装置。通常,vr系统108可包括存储内容的任何数量的存储库和/或可以生成、修改或执行虚拟现实场景的虚拟现实软件模块。在所示的示例中,vr系统108包括vr应用110,它可以访问以及为系统108提供内容和/或控制。在一些实施方式中,vr应用110可以在一个或多个装置102-106上本地运行。可将vr应用110配置成在装置102、104、106和108的任何一个或全部上执行,并且例如通过利用控制器112或114来控制或操作。

本公开所述的特定实施方式可使得用户能够利用一个或更多个控制器来与vr空间交互。例如,用户可以握住第一控制器112和第二控制器114,以在vr空间中选择和操纵3d的虚拟对象。在一些实施方式中,控制器112和114可以是相同的样式和型号。在其他实施方式中,控制器112和114可以具有不同的样式和型号。不管控制器的类型如何,都可以在系统100中观看和/或跟踪控制器112和114,从而帮助vr空间中的交互。

示例控制器112和114可以分别包括外壳和用户界面(未示出),在外壳中接收控制器装置的内部组件,用户界面在外壳的外部,用户可以访问。用户界面可包括多个不同类型的操纵装置(图1中未详细示出),例如包括被配置成接收用户的触摸输入的触敏表面(多个)、按钮、旋钮、操纵杆、切换键、滑动件、以及其他这样的操纵装置。

在控制器112和/或控制器114上可包括一个或多个传感器。可以触发传感器,向vr空间提供输入,例如通过用户访问控制器112和/或114和hmd装置106。传感器可包括但不限于触摸屏传感器、加速度计、陀螺仪、压力传感器、生物识别传感器、温度传感器、湿度传感器和环境光传感器。控制器112和114可以利用传感器来确定在vr空间中控制器112和114的绝对位置和/或检测到的旋转。然后可将位置和旋转用作vr空间的输入。在一个非限制性示例中,控制器112和114可以作为移动电话、画笔、铅笔或笔、绘图工具、控制器、遥控器、激光指示器或其他对象等等并入vr空间。当并入vr空间(或者在vr空间内表示)时用户对控制器112和114的安放可以允许用户在vr空间中安放特定的虚拟对象以及安放移动电话、画笔、铅笔或笔、绘图工具、控制器、遥控器、激光指示器或其他对象。在一些实施方式中,可将这种安放用作使用锚点操纵对象的触发器。

hmd装置106可以表示能够显示虚拟现实内容的虚拟现实耳机、眼镜、目镜或其他可穿戴装置。在操作中,hmd装置106可以执行vr应用,vr应用可通过hmd装置106中的显示器(未示出)向用户回放所接收和/或处理后的图像。在一些实施方式中,vr应用110可以由图1所示的装置102、104、106或108中的一个或多个托管。

在一些实施方式中,示例hmd装置106可包括耦合到框架的外壳,其中音频输出装置例如包括安装在耳机中的扬声器。在示例hmd装置106中,可将显示器(未示出)安装在外壳前部的朝内一侧。可将透镜安装在外壳中,在用户的眼睛与显示器之间。在一些实施方式中,hmd装置106可包括感测系统160,感测系统160包括各种传感器,例如音频传感器(多个)、图像/光传感器(多个)、位置传感器(例如包括陀螺仪和加速度计的惯性测量单元)等等。hmd装置106还可包括控制系统,控制系统包括帮助hmd装置106操作的处理器和各种控制系统装置。

在一些实施方式中,hmd装置106可包括一个或多个相机(未示出)以捕捉静止图像和运动图像。这些相机捕捉的图像可用于帮助跟踪现实世界或者相对于vr空间的物理环境中用户和/或控制器112或114的物理位置,和/或在通过模式中在显示器上向用户显示,允许用户暂时离开虚拟环境并返回物理环境,不需要去除hmd装置106或通过其他方式改变hmd装置106的配置。

在一些实施方式中,可将移动装置102放置和/或设置在hmd装置106内。移动装置102可包括显示装置,显示装置可以用作hmd装置106的屏幕。移动装置102可包括用于执行vr应用110的硬件和/或软件。在一些实施方式中,hmd装置106可以提供六个自由度内的处所和用户移动的完全跟踪。跟踪可以基于用户手部移动、头部移动、眼睛移动、或基于用户输入移动的控制器的跟踪。

可以有附加装置,并且可将这些装置配置成互相代替。在一些实施方式中,装置102、104、106和108可以是膝上型或桌面型计算机、智能电话、个人数字助理、便携式媒体播放器、平板计算机、游戏装置、或者可以利用网络101与其他计算装置或计算机系统通信的其他适当的计算装置。

例如,在示例系统100中,可将hmd装置106连接到装置102或装置104,以访问vr系统108上的vr内容。可将102装置或装置104连接到hmd装置106(通过有线或无线方式),hmd装置106可以提供vr内容用于显示。

在一些实施方式中,一个或多个内容服务器(例如vr系统108)以及一个或多个计算机可读存储装置可以使用网络101与计算装置102、104、106通信,以向装置102-106提供vr内容。在一些实施方式中,网络101可以是公共通信网络(例如,互联网、蜂窝数据网络、电话网络上的拨号调制解调器)或专用通信网络(例如,专用lan、租用线路)。在一些实施方式中,计算装置102-108可以使用一个或多个高速有线和/或无线通信协议(例如,802.11变型、wi-fi、蓝牙、传输控制协议/互联网协议(tcp/ip)、以太网、ieee802.3等等)与网络101通信。

在一些实施方式中,移动装置102可以执行vr应用110并为vr环境提供内容。在一些实施方式中,膝上型计算装置可以执行vr应用110并且可以提供来自一个或多个内容服务器(例如vr系统108)的内容。一个或多个内容服务器以及一个或多个计算机可读存储装置可以使用网络101与移动装置102、膝上型计算装置104、和/或控制器112或114通信,以提供用于在hmd装置106中显示的内容。

如图1所示,vr应用110包括跟踪模块116、取向模块118、锚点生成器120、以及卡合到位(snaptolocation)模块122。跟踪模块116可以访问光传感器、音频传感器、图像传感器、距离/接近度传感器、位置传感器和/或其他传感器,以跟踪现实世界或者相对于虚拟环境的物理环境中用户和/或控制器112或114的物理位置。取向模块118可以访问本文所述任何数量的存储器存储和/或传感器,以确定vr空间内控制器、用户、虚拟对象、以及与移动对象相关联的区域的特定取向。

可将锚点生成器120配置成识别和/或定义与可以缩放或通过其他方式操纵特定虚拟对象的一个或多个处所相对应的锚点。锚点可以涉及可将虚拟对象相对于一个或多个其他或固定锚点缩放、放大或缩小、固定、移动、扭曲、倾斜、折叠、拉伸、收缩、附着、或通过其他方式操纵的处所和/或取向。可以在用户穿戴的hmd装置中描述对象操纵,就像用户要抓握一个或多个锚点并操纵附着于这些锚点的虚拟对象一样。在一些实施方式中,锚点可以使得vr导演或用户能够定义与可以改变vr空间中的特定虚拟对象的形状、取向、位置和/或比例的操纵或移动相关联的位置。通常,启用通过双手交互的虚拟对象操纵可包括在其中确定/定义多个用户可选择的锚点(例如vr空间内的位置)以成为虚拟对象的移动和/或操纵的基础。

在一些实施方式中,可以将锚点识别和/或定义为将要缩放特定虚拟对象的处所。在一些实施方式中,可使用虚拟对象上的两个锚点来定义两个锚点之间的中点,其中可根据与中点相关联的轴或平面来配置对象的取向和比例。因此,锚点生成器120可以使得vr空间中的用户能够在用户抓握(或通过其他方式选择)一个或多个锚点的同时改变虚拟对象的位置、取向和比例。用户可将虚拟对象的位置、取向和/或比例的保持和改变视为将一个或多个锚点显示为固定在虚拟对象上的错觉,而任何手部移动都可以导致对象在空间中的缩放或移动。这种缩放或移动可以改变虚拟对象的形状、取向、位置和/或比例,并且这些改变可以在hmd装置的显示器的用户界面中提供。

在一些实施方式中,跟踪模块116和/或取向模块118可以检测与虚拟对象的多点触摸或多手交互。可将多点触摸或多手交互解释为要在虚拟对象上执行的物理姿势。例如,如果用户用一只手抓握表示毛巾的虚拟对象的一部分并且用另一只手抓握相同毛巾的一部分,那么用户可以做出姿势来扭曲或拧干毛巾,并且本文所述系统和方法可以显示在虚拟对象/毛巾上执行的扭曲动作。可通过6个移动自由度来执行和描述这种移动。

可将卡合到位模块122配置成提供卡合到位功能,其允许用户直观地选择虚拟对象的特定区域以固定(或卡合)就位,同时能够拉伸或通过其他方式操纵虚拟对象的其他方面。模块122例如可以检测用户双手的角度或位置,并确定特定角度或位置(在六个自由度内)是否触发卡合到位模式。可将卡合到位模块122配置成实现3d卡合到位功能,其允许用户直观地选择要固定(或卡合)就位的虚拟对象的特定区域,同时能够执行虚拟对象操纵。可通过检测与访问vr空间的用户相关联的双手(或控制器)的角度或位置来执行卡合到位功能,并通过多个预定义的规则来使用这种检测,手(或控制器)的角度或位置根据这些预定义的规则触发与虚拟对象相关联的卡合到位效果。下面详细描述附加示例。

在一些实施方式中,vr系统108可以推算用户(用手或控制器)执行的不同的单手姿势或双手姿势,并且可将预定或推断的姿势应用于虚拟对象。在一个非限制性示例中,如果跟踪模块116跟踪用户移动并且跟踪指示用户在抓握虚拟对象并以向右的圆周运动移动双手,那么取向模块118可以推断,用户希望将虚拟对象从vr空间内的第一位置倾斜到右侧位置。当用户向右抓握并转动虚拟对象时,该移动可以触发vr系统108实时移动虚拟对象。当然,其他角度、方向、运动和操纵是可能的,下面将详细描述。

在另一个非限制性示例中,访问vr环境/空间的用户可以在墙壁上具有带框架艺术品的虚拟房间中。用户可以走向一件艺术品(在本示例中可以是虚拟对象)并将她的右手放在艺术品的右下角,将她的左手放在艺术品的左下角。一旦手放好了,取向模块118和卡合到位模块122就可以基于跟踪手并基于跟踪关于艺术品(即虚拟对象)的附加移动来向用户提供附加的动作可能性。例如,模块118和122可以使得用户能够在手可以移动的任何方向上重新成形、变形、收缩、放大、或通过其他方式操纵艺术品。具体而言,如果用户稳定地保持左手并且向右或向下或沿两个方向移动右手,那么就可以在与右手相对应的方向上放大或拉伸艺术品。在一些实施方式中,这可包括以六个或更多个自由度在三个维度中操纵艺术品。例如,用户可以在x-y平面中运作以放大艺术品,使得艺术品向右和/或向下覆盖其他的墙壁空间。在完成放大时,用户可以在z平面方向上向内以弓形动作拉动双手,以在z平面方向上向内弯曲艺术品。或者,可将向用户拉动双手解释为从墙壁去除艺术品,例如准备将艺术品移向另一面墙壁。

图2是示出可通信地耦合到vr空间中的hmd装置的控制器的方框图。在操作中,可将系统100配置成提供容纳任何数量的可通过图2所示的装置来操纵的虚拟对象的vr空间。控制器112和114可以与hmd装置106接口连接,以生成沉浸式虚拟环境。例如,可将控制器112和控制器114与hmd装置106配对,在装置之间建立通信并帮助用户与沉浸式vr空间的交互。在一些实施方式中,控制器112和114都不与hmd装置106配对,而是在vr应用110或另一个外部跟踪装置中由跟踪模块116来跟踪。

如图2所示,控制器112包括感测系统260和控制系统270。感测系统260可包括一个或多个不同类型的传感器,例如包括光传感器、音频传感器、图像传感器、距离/接近度传感器、位置传感器(例如包括陀螺仪和加速度计的惯性测量单元(imu))和/或其他传感器和/或传感器的不同组合(多个),例如包括被安置用于检测和跟踪与用户相关联的眼睛注视的图像传感器。控制系统270例如可包括电源/暂停控制装置、音频和视频控制装置、光学控制装置、转换控制装置、和/或其他这样的装置和/或装置的不同组合(多个)。取决于特定实施方式,感测系统260和/或控制系统270可包括更多或更少的装置。

控制器112还可包括与感测系统260以及控制系统270通信的至少一个处理器290、存储器280、以及提供控制器112与另一个外部装置例如控制器114和/或hmd装置106之间通信的通信模块250。

控制器114可包括通信模块206,通信模块206提供控制器112与另一个外部装置例如hmd装置106之间的通信。除了提供控制器112与控制器114以及hmd装置106之间的数据交换之外,通信模块206还可以被配置成与vr空间以及系统100可访问的多个其他电子装置、计算机、和/或控制器连接和/或通信。

控制器114可包括感测系统204,感测系统204包括图像传感器和音频传感器(例如包括在相机和麦克风中)、imu、触摸传感器(例如包括在控制器或智能电话的触敏表面中)、以及其他这样的传感器和/或传感器的不同组合(多个)。至少一个处理器209可以与感测系统204以及控制系统205通信。控制系统205可以访问存储器208,并且可以控制控制器114的整体操作。

类似于控制器112,控制器114的控制系统205例如可包括电源/暂停控制装置、音频和视频控制装置、光学控制装置、转换控制装置、和/或其他这样的装置和/或装置的不同组合(多个)。通常,本公开所述系统和方法可以跟踪用户的手112或控制器114,并分析与vr空间中的这些手112和/或控制器114相关联的用户交互样式和姿势,以确定这些交互样式和姿势的意图。

图3a-图3b示出用户访问vr空间以执行虚拟对象操纵。下面关于穿戴hmd装置的用户来描述图3a-图3b所示的示例实施方式,hmd装置基本上阻挡周围环境,因此hmd装置生成虚拟环境,其中用户的视野被限制于hmd装置生成的vr空间。但是,下面关于图3a-图3b所述的概念和特征也可以应用于其他类型的hmd装置、以及其他类型的虚拟现实环境和增强现实环境。此外,图3a-图3b所示的示例包括:每个附图的左侧示出穿戴hmd装置304并抓握控制器308和310的用户的第三人视角,每个附图的右侧示出可由hmd装置304生成的虚拟环境中的用户302观看的第一人视角。具体而言,vr空间的初始视角显示在图3a-图3b的右上方,而vr空间的更新的、修改的视角显示在右下方。在一些实施方式中,控制器308和310并非与图3a-图3b中的示例相关联,相反,可以用被跟踪的手指、拇指、手、脚、头部或其他身体部位代替控制器输入。

在图3a所示的示例中,穿戴hmd装置304的用户302面向定义用户的当前周围环境/vr空间(由视角306a示出)或当前现实世界空间的房间。hmd装置304可以捕捉图像和/或收集定义vr空间中的特征的信息。然后可由hmd装置304处理由hmd装置304(或由一个或多个控制器308或310)收集的图像和信息,以渲染和显示vr空间的3d模型以及任何数量的虚拟对象模型。在一些实施方式中,vr空间这个3d渲染模型可以代表实际周围环境,但不一定是实际周围环境的准确再现(就好像例如如果是显示来自透视相机的透视图像而非所渲染的3d模型图像时的情况)。

hmd装置304可以处理所捕捉的环境图像以定义和/或识别所述环境的各种特征,例如,角、边缘、轮廓、平坦区域、纹理、网格处所、卡合到位区域、锚点等等。根据这些识别的特征,环境的其他特性例如与识别的特征或对象相关联的相对区域、识别的特性或对象的取向(例如,水平、垂直、成角度)等等。

在一些实施方式中,可以存储先前生成的已知vr空间的3d模型,并且系统可以识别已知的vr空间。可以访问存储的vr空间的3d模型,用于新的vr会话。在一些实施方式中,可以如上所述访问先前存储的已知vr空间的3d模型,并与vr空间的当前扫描进行比较,从而能够更新3d模型,以反映已知vr空间中的任何变化,例如,家具摆放的变化、环境中的其他障碍物等等,它们可能阻碍用户在vr空间中的移动,并降低用户保持存在的能力。然后,可以存储更新的3d模型,用于以后会话期间的访问。

在图3a的示例中,用户302可以访问vr空间并观看虚拟对象,例如视角306a中的地球仪312a。虽然在视角306a中将用户302示出在vr空间外部,但是在操作中,用户302可以处在vr空间中并且能够在与vr空间中的内容交互的同时观看他的手、手臂、身体。

在某个点,用户302可以决定通过伸出手来击中/碰撞地球仪312a的一部分来拾取虚拟对象(例如地球仪312a)。例如,用户302可以到达点316a并在点316a放置或引导控制器308,以及到达点314a并在点314a放置或引导控制器310。通过类似的方式,用户可以简单地用她的手伸出来击中/碰撞地球仪312a的一部分。不管用户是采用控制器还是手,系统100都可以跟踪其中一个或两者的移动、取向和位置。当用户302伸出来以获得或通过其他方式处理地球仪312a时以及在地球仪312a的任何操纵期间,跟踪可以继续。例如,当用户302将她的控制器放在314a和314b时,她可以通过抓握控制器308和310两者以及将她的左手移动到控制器310a所示的位置,来开始倾斜和拉伸地球仪312a,控制器310a的移动由箭头318和320指示。在移动她的左手的同时,或者就在移动她的左手之前或之后,用户可以将她的右手移动到控制器308a所示的位置,控制器308a的移动由箭头320指示。在此,对于两手而言,移动是向外的动作,向系统100指示用户希望拉伸或放大地球仪316a,同时将地球仪312a侧向倾斜或旋转。在视角306b中示出移动的结果。在该示例中,用户的手可以终止于点314b和316b,并且得到的更新视角306b将地球仪312b描述为更大并且在用户302执行的移动的方向上倾斜。在操作中,用户302可以观看移动地球仪312a的每个中间视角,直到用户停止操纵地球仪并且地球仪停下来,如视角306b所示。

图3b示出用户302对虚拟对象/地球仪312b进行附加修改。在该示例中,用户决定在点314c和316c抓住地球仪312b并向外拉伸地球仪,如箭头322所示,以使地球仪变平,如在视角306c中的地球仪312c所示。在该示例中,用户302将控制器308a移动到控制器308b所示的位置,同时保持她的控制器310b的位置。可以执行虚拟对象和周围vr空间的附加操纵。

在一些实施方式中,可以检测控制器308a和310b,并且在一些情况下,还可以检测用户的手,并且可由系统100来跟踪所检测的控制器(和手)的移动。这可以允许所检测的控制器308a和310b(和手)的图像在控制器向地球仪移动时渲染。

在一些实施方式中,本公开所述系统和方法提供卡合到位功能,卡合到位功能允许用户直观地选择虚拟对象的特定区域以固定(或卡合)就位,同时能够拉伸或通过其他方式操纵虚拟对象的其他方面。系统100例如可以检测用户双手的角度或位置,并确定特定角度或位置(在六个自由度内)是否触发卡合到位模式。例如,如果系统100检测到每只手的位置是两个拇指在握住虚拟对象的同时向内指,那么对于卡合到位可以做出推断,虚拟对象部分在将手放置在对象上的相对一侧。通过获得关于对象的特定细节以及在执行手部跟踪时检测用户执行的特定姿势,可以获得该推断。类似地,如果用户在每只手中握住控制器或一个控制器,那么系统100可通过跟踪使用控制器执行的姿势来获得类似的信息。

在一个非限制性示例中,访问vr空间的用户可以用一只手或两只手拾取三维虚拟对象,并且可通过任何方式移动对象,以选择在通过以特定方式做姿势,用双手(或控制器)卡合到位的同时将对象取向的许多方式中的一个。一个示例姿势可包括在旋转和缩放对象的同时保持双手(或两个控制器)平行。平行姿势可以指示,在通过用户的手(或控制器)执行的操作/姿势期间,用户希望在围绕中心点旋转对象的同时固定虚拟对象的中心,以收缩或拉伸对象。在一些实施方式中,系统100可以选择虚拟对象的一个或多个属性,其中基于用户姿势、手/控制器跟踪、和/或预定对象属性的任何组合来改变。

在一些实施方式中,系统100可以确定用户的左手和右手握持对象的方向。例如,跟踪模块116可以检测每只手的位置,同时取向模块118可以检测每只手的取向。锚点生成器120可以使用这些信息来在其中生成一个或多个锚点以围绕锚点移动对象。如果检测到特定取向或姿势,那么卡合到位模块122可以将一部分对象固定于vr空间的一个处所。例如,如果系统100检测到用户的手指都互相面对,那么可以选择与手平行前行的单个轴,用于旋转、卡合到位、沿着所选轴、或沿着关于所选轴的特定维度或平面扩展或收缩。

响应于在vr空间中检测到用户姿势,系统100可以执行以下非限制性示例。这些姿势可以与任何数量的坐标系、网格或可以应用于虚拟对象的其他度量相关联。在一些实施方式中,卡合到位模块122可通过将虚拟对象的处所近似到最近的网格处所来计算特定对象坐标。

在一些实施方式中,锚点生成器120可以配置虚拟对象上任何数量的锚点。卡合到位模块122可以使用这些锚点来定义虚拟对象上的卡合处所。在一个非限制性示例中,卡合到位模块122可以使用定义的锚点将虚拟对象旋转卡合90度取向。例如,模块122可以为特定虚拟对象定义多达二十四个90度的卡合到位取向。在卡合到位的对象移动期间这种定义可以允许六个控制自由度。

在一些实施方式中,卡合到位模块122可以调用滞后卡合(hysteresissnap)功能,其中系统100可以跟踪用户关于虚拟对象的移动,以确定何时跨越特定边界。在跨越边界时,卡合到位模块122可将对象卡合到虚拟对象配置的处所。通常,卡合到位模块122可以定义或检索3d虚拟对象的特定几何形状,并且可以定义一个或多个卡合中心。快照中心可以是卡合框架,卡合框架定义具有平移(3d)和旋转(四元数)的坐标系。

在非限制性示例中,访问vr空间的用户可以开始用虚拟对象上第一处所中的手抓握虚拟对象或通过其他方式与虚拟对象交互。系统100可通过定义表示虚拟对象的取向和旋转的四元数来定义3d空间中的第一处所。具体而言,正轴可具有旋转分量,旋转分量定义虚拟对象围绕正轴旋转的方式。这种定义可以固定(或约束)其他两个轴。当用户抓握或触摸虚拟对象上的第二处所时,系统100可以根据被约束轴来定义围绕被定义的第一处所的旋转路径。在另一个示例中,如果用户抓握或触摸对象上的第一处所(即锚点)和第二处所(即锚点),那么系统100可以将在两个锚点之间生成的向量用作要约束的轴,简单地定义约束,并且可将轴用作自由旋转虚拟对象的基础。

锚点生成器120和/或卡合到位模块122可以使用卡合框架来实现多个步骤,以启用卡合功能,包括但不限于虚拟对象的滞后卡合功能。这些步骤可包括关于在对象上定义的框架确定特定前向矢量(例如单位矢量)的最长分量。这种框架可以配置有坐标和处所,其中可以调用虚拟对象的部分的卡合。卡合到位模块122可将所确定的矢量的最长分量赋值为一,而将矢量的两个其他分量赋值为零。接着,模块122可以确定与框架相关联的右矢量(例如单位矢量)的最长分量,并将该矢量赋值为一,而将其他相关矢量设置为零。在分配上述两个矢量时,卡合网格模块122可以根据前两个矢量的叉积来计算第三矢量,从而确定新的卡合四元数,其中允许用户的卡合到位活动。在一些实施方式中,可通过在卡合之前定义要跨越的矢量的特定长度阈值来获得该方法的滞后选项,而不是定义最长的分量。

上面的四元数定义可用于使得用户按照允许在vr空间内将对象卡合(例如固定)到位的方式与vr空间中的虚拟对象交互。例如,可以为虚拟对象如隔板预先配置垂直和水平中心线。如果处理对象的一个或两个控制器或手跨越任何中心线从前到后、从后到前、或从一侧到一侧穿越,例如,系统100可以推断,用户希望从虚拟墙壁连接或去除隔板,并且可以在虚拟对象(例如隔板)上提供可视指示符,以向用户发信号通知,可以沿着可视指示符的线或区域将对象卡合到位。

在一些实施方式中,虚拟对象可以在vr空间中被示为在特定处所被卡合就位,同时可以示出虚拟对象的透明轮廓线(或其他视觉上可辨别的图形效果)使得用户能够关于可移动虚拟对象更好地理解状态vr空间。这可以包括通过视觉上可区别的方式将卡合的虚拟对象描述为类似形状的解除卡合对象,以使得用户能够理解,可通过特定方式使卡合的对象解除卡合。

在一个示例中,系统100可通过可视指示符来定义虚拟对象的特定部分和/或与虚拟对象相关联的锚点。指示符可以在vr空间中以图形方式提供,例如,透明球或与物体相交的透明光线。这些可视指示符可以是提供视觉反馈的机制,使得用户能够触发要被选择或交互的对象。例如,如果用户伸手接近虚拟对象并抓握对象,那么系统100可以检测到这种情况并提供可视指示符,向用户指示她已经通过某种方式触发要操纵的对象。例如,可由跟踪模块116执行检测。一旦触发发生,用户就可以拖动或移动对象,以及根据对象上定义的锚点缩放和旋转对象。因此,当用户改变她的手(或控制器)的取向或位置时,虚拟对象可以效仿并根据改变的取向或位置执行修改。此外,在改变取向、位置或者这两者时,用户可以用她的手(或控制器)来改变虚拟对象的比例。

在一些实施方式中,卡合到位模块122可以使用边界框来实现卡合虚拟对象,以允许平移。例如,这种平移可包括三维虚拟对象的八个平移锚点。具体而言,可以利用锚点来定义vr空间和/或虚拟对象,锚点允许平移并针对网格或者针对另一个虚拟对象的相邻边界框/锚点卡合到位。可以定义阈值,以确定将一个边界框点自动接合到另一个边界框点(例如一个锚点到另一个锚点)的距离。例如,可将模块122配置成根据两个收敛锚点之间的最小距离来自动卡合特定锚点。例如,如果用户将两个虚拟对象或者相同虚拟对象上的两个锚点紧密放在一起,那么锚点会开始收敛。卡合发生之前的最小接近度可通过最小距离来定义。

除了在虚拟对象的边界上定义卡合位置(例如在边界框上)之外,卡合到位模块122还可以定义虚拟对象内的多个卡合到位。例如,图4示出示例矩形地板402,其管道末端404从地板402突出。在管道末端404的中心示出卡合框架406。卡合框架406被配置成实现管道模块(例如模块408)的卡合。管道模块408包括另一个卡合框架406,其中向用户指示可将卡合框架406卡合到另一个组件。在一些实施方式中,卡合到特定框架、网格、点、锚点等等也可用于定义缩放或旋转虚拟对象的原点。在图4的示例中,可将管道408卡合到卡合框架406,然后沿着任何方向缩放或向内旋转。

在一些实施方式中,卡合到位模块122使得能够同时在一个或多个虚拟对象上卡合多个点。例如,响应于系统100检测到用户已经将任何数量的相关卡合点中的一个卡合点连接在一起,可将这种捕捉点配置成沿着接缝、边缘或其他边界连接。

通常,卡合框架可以采用与虚拟对象或虚拟对象周围的虚拟空间相对应的坐标系内的任何形状、尺寸或面积。可以定义框架并与vr空间、特定用户、特定虚拟对象、或vr空间内的特定边界、或访问vr空间的用户相关联。

在另一个示例中,可将卡合到位模块122用于定义特定的吸引点或类似磁化的点,其中将来自多个不同虚拟对象的锚点卡合在一起。在一个非限制性示例中,基于每个相应对象的角之间的定义吸引,可将具有四个角的矩形瓦片的第一角卡合到具有四个角的另一个矩形瓦片的另一个角。可以定义附加的吸引点,并且可通过按照任何形状布置的一个或多个点来定义这些点。

图5a-图5c示出用户访问vr空间以执行虚拟对象操纵的示例。通常,系统100可以分析vr空间中的用户交互,以基于所检测的用户交互来确定怎样操纵特定虚拟对象。可将确定用于向用户提供响应,这个响应经由所检测的用户交互/姿势导向用户所请求的期望对象操纵。例如,当用户试图用她的手抓握(例如伸向)虚拟对象时,手开始接近可以按照多种不同方式做出反应的用户界面表面。系统100可以确定哪个(基于vr空间的)反应与用户的意图匹配,并且可以根据与虚拟对象以及vr空间的属性相关联的信息做出反应。

在图5a的一个非限制性示例中,示出vr空间500a,其中用户502与多个虚拟对象交互。具体而言,用户502用他的第一只手504和他的第二只手506抓握虚拟隔板508的两个点。双手抓握可以开始触发与虚拟隔板508a相关联的特征。例如,系统100可以确定在隔板一侧的双手抓握指示用户可能希望将隔板的相对端附着于vr空间中的现有对象。例如,系统100可以推断,被跟踪的手504意图与虚拟隔板508a交互,同时确定被跟踪的手506正在抓握隔板508,以执行相同操作。双手抓握还可以触发一个或多个图形指示符,以向用户传达一种或多种修改或移动特定虚拟对象的方式。例如,可以在检测到虚拟隔板508a上的双手抓握时显示可视指示符510。指示符510示出隔板可以附着于墙壁空间512。在一些实施方式中,可以描述其他视觉和/或音频指示符和动作,以警告用户在vr空间中的可能交互。在操作中,系统100可以等待,以检测用户执行的附加姿势或移动,并且可以根据姿势或移动实现对vr空间中的内容的图形对象改变。

在所示的示例中,用户可以向上移动他的右手504并向下移动他的左手504,如箭头514所示,这可以开始将隔板508a移动到位,以安装在处所510中的墙壁512上,或者沿着墙壁512的另一个处所,因为处所510仅仅是图形指示符,用于通知用户将隔板放在墙壁上的活动。

在一些实施方式中,系统100可以推断,被跟踪的手504意图与虚拟隔板508交互,同时确定被跟踪的手506正在同一平面中抓握隔板508a。如果系统100检测到双手(或两个控制器,如果用户在使用控制器的话)处于相同的轴或参考平面,那么系统100可以触发均匀缩放模式,以均匀地移动和/或缩放虚拟对象。在图5b所示的示例中,用户502用双手504和506在同一平面中抓握虚拟隔板508a(来自图5a)。作为响应,系统100可以触发均匀缩放模式,并允许用户根据用户执行的姿势(由箭头514和516所示),开始将虚拟隔板508a缩放到隔板508b所示的隔板。具体而言,基于所跟踪的用户移动,系统100可以确定,用户希望均匀地缩放/拉伸隔板508a,以获得隔板508b所示的隔板尺寸。箭头516所示的用户移动示出隔板的向上拉伸,这也触发了整个隔板向墙壁518的均匀生长。此外如箭头514所示,在缩放的同时执行旋转,箭头514示出用户的右手506向上扭曲。可以提供视觉、音频或触觉指示符,以向用户传达已经触发特定模式。例如,指示符520可以指示均匀缩放模式的触发。

参照图5c,示出另一个示例,其中用户502在处理虚拟隔板508c。在该示例中,系统100可以识别被跟踪的手或控制器、虚拟对象、以及这些对象的属性。虚拟对象的一个示例属性可包括定义的锚点,其中对vr空间内的对象和内容使用卡合到位功能。在此,系统100可以识别虚拟隔板508c上的一个或多个锚点。锚点可用于向用户指示是否有任何卡合点落入虚拟隔板508c的范围内。如图所示,系统100检测到隔板508c包括两个锚点,这两个锚点可以与关联于隔板部分522的角上的两个其他锚点自然地配合。具体而言,可以示出可视指示符524和526,让用户理解卡合到位功能可用。例如,在基于涉及虚拟隔板508c的用户执行的动作检测到虚拟隔板508c正在接近隔板部分522时,指示符可以变得可见。通过这种方式,在虚拟空间中在522部分以高精度放置虚拟隔板中用户得到支持。

通过类似方式,可以在隔板528附近可视地描述锚点,以指示可将其他隔板组件添加到隔板528。例如,在用户接近墙壁518并且落入隔板528周围预定的接近度或边界之前,可以不向用户提供这样的可视指示符。上面描述了关于卡合到位的附加细节。

图6是示出使得用户能够操纵vr空间中的内容的过程600的一个实施例的流程图。在步骤602,系统100可以生成虚拟环境,虚拟环境包括在头戴式显示装置中提供的用户界面内的至少一个三维虚拟对象。例如,vr系统108可以生成具有可以通过用户手部移动或控制器移动来操纵的任何数量的虚拟对象的vr空间。系统108可以生成用户、对象和控制器的表示,并且可以基于在物理世界中执行的移动和姿势来跟踪这些事物,用于转换到vr空间中。

在步骤604,系统100可以检测第一交互样式。例如,访问控制器112或114的用户可以按照第一交互样式的形式提供输入,例如在虚拟对象上实际抓握或者利用控制器112或114模拟抓握。在一些实施方式中,通过用户的手、手臂、眼睛注视、腿、脚、或者能够触发vr空间中的交互的其他部分来执行第一交互样式。可以检测抓握的放置和方向,作为指示修改与被抓握的三维虚拟对象相关联的第一虚拟特征的意图的样式。例如,样式可以是使得虚拟对象更靠近用户的抓握和拉动。在一些实施方式中,第一交互样式定义开始修改第一虚拟特征的处所,第二交互样式定义离开第二虚拟特征的方向和取向,并且三维虚拟对象的修改的版本包括三维虚拟对象的缩放版本。在一些实施方式中,可将缩放版本从第一虚拟特征缩放到第二虚拟特征。缩放可通过装置104、装置108或者能够修改vr空间中的虚拟内容的其他装置响应于接收移动输入来执行。

在一些实施方式中,检测第一交互样式可包括检测与第一被跟踪装置相关联的第一输入,而检测第二交互样式包括检测与第二被跟踪装置相关联的第二输入。具体而言,第一被跟踪装置可以是控制器112,而第二被跟踪装置可以是控制器114。

在步骤606,系统100可以检测第二交互样式,例如在虚拟对象上基于第二手或控制器的抓握。第二交互样式可包括对应于在与三维虚拟对象关联的第二虚拟特征上待执行的修改的取向和移动。例如,第二交互样式可包括在第二处所抓握虚拟对象,并且样式可以是扭曲、旋转、拉动、推动、或其他的对象操纵运动。可以使用类似的装置或用户身体部位来执行第二交互样式。

响应于检测第二交互样式,在步骤608,系统100可以根据第一交互样式在第一虚拟特征处并根据第二交互样式在第二虚拟特征处生成三维虚拟对象的修改的版本。例如,系统100可以基于抓握处所、对象细节等等来执行用户接收的交互。

在步骤610,系统100可以在头戴式显示装置的用户界面中提供三维虚拟对象的修改的版本。在一些实施方式中,在移动发生时,在虚拟环境中生成并渲染三维虚拟对象的修改的版本。在一些实施方式中,将三维虚拟对象的修改的版本从第一虚拟特征调整到三维虚拟对象的新位置、取向和比例,并从第二虚拟特征调整到三维虚拟对象的新位置、取向和比例。在虚拟环境中,修改的版本可以显示在用户视野内。一般而言,基于来自与系统108和/或应用110接口连接的其他硬件的检测到的输入,可通过vr系统108在vr应用110内执行修改。

在一些实施方式中,根据第一交互样式在第一虚拟特征处并根据第二交互样式在第二虚拟特征处生成三维虚拟对象的修改的版本可包括拉伸和扭曲三维虚拟对象。例如,拉伸包括在三维虚拟对象上定义第一锚点和第二锚点,并在第一锚点与第二锚点之间形成的平面中进行拉伸。在一些实施方式中,扭曲三维虚拟对象包括在第一输入平面中在第一虚拟特征处在3d空间中旋转三维虚拟对象,且旋转三维虚拟对象包括从第二输入平面到第三输入第二平面在第二虚拟特征处在3d空间中旋转三维虚拟对象。一般而言,第一输入平面可以对应于x-y坐标平面,第二输入平面可以对应于y-z坐标平面,第三输入平面可以对应于x-z坐标平面。每个平面可以是三维坐标空间。

在一些实施方式中,过程600可包括至少部分地基于检测通过访问虚拟环境的用户的左手执行的第一被跟踪手移动,在第一虚拟特征处生成第一交叉点。例如,如果用户伸出他的左手来抓握vr空间中的虚拟对象,那么系统100可以确定手与虚拟对象的交叉并且可以生成交叉点。可以在虚拟对象上示出或通过其他方式(例如,音频反馈、触觉反馈等等)指示交叉点。在一些实施方式中,计算交叉点,用于用户在虚拟对象上可能执行的其他计算和操作。类似地,系统100可以至少部分地基于检测通过访问vr空间的用户的右手执行的第二被跟踪手移动,在第二虚拟特征处生成第二交叉点。例如,第二被跟踪手移动可以涉及用户抓握他的左手所抓握的相同虚拟对象。在生成两个交叉点之后,系统100可以根据第一交互样式和第二交互样式修改三维虚拟对象。修改可以至少部分地基于确定在第一或第二被跟踪手移动中执行的至少一个姿势是与三维虚拟对象相关联的取向的改变。然后,系统100可以在根据另一个姿势修改三维对象的同时执行至少一个姿势。例如,在用户输入(例如,手部动作、姿势、控制器姿势)指示这样做的情况下,系统100可以在虚拟对象上执行旋转改变,同时还改变虚拟对象的处所、尺寸、和/或形状。

在一些实施方式中,过程600可包括生成锚点,锚点被配置成在第一交叉点,在三维空间中冻结三维虚拟对象的一部分,同时根据第二交互样式在第二虚拟特征处修改三维对象。例如,系统100可以冻结或隔离虚拟对象的一部分,以便在改变对象的其他部分的同时将对象附着于该部分。例如,变化可以涉及形状、比例、取向。当用户用一只手或两只手交互以对对象执行其他视觉改变或效果时,该特征可用于将虚拟对象的一部分保持就位。

在一些实施方式中,生成锚点包括将三维虚拟对象上的至少一个处所定义为可选择的缩放处所。可选择的缩放处所可操作以接收用户发起的输入,其包括指示用于缩放三维虚拟对象的指令的至少一个姿势。

在一些实施方式中,过程600可包括响应于检测到第一交互样式在与第二交互样式相同的三维轴中执行而启用均匀缩放模式。均匀缩放模式可以被配置成根据第一交互样式和第二交互样式在三个维度中均匀地缩放三维虚拟对象。

图7是示出修改vr空间中的3d图像内容的过程700的一个实施例的流程图。在步骤702,系统100可以在三维虚拟环境中检测通过第一电子装置执行的第一交互样式。电子装置例如可以是控制器或移动装置等等。第一交互样式可包括修改与在虚拟环境中渲染的三维虚拟对象相关联的第一虚拟特征的指示。虚拟特征可以涉及虚拟对象的任何或所有部分和/或包围虚拟对象的环境的一部分。类似于过程600,装置可以涉及控制器112或114、移动装置102、或配置用于vr空间的其他可检测和可跟踪装置。

在步骤704,过程700可以在三维虚拟环境中检测通过第二电子装置执行的第二交互样式。第二电子装置可以是与第一电子装置类似或不同的装置类型。第二交互样式可包括对应于在与三维虚拟对象关联的第二虚拟特征上待执行的修改的取向和移动。例如,第二交互样式可以是扭曲和倾斜、旋转、全循环、盘旋、或者可通过支配电子装置的用户执行的其他姿势。

响应于检测第二交互样式,在步骤706,过程700可包括根据第一交互样式在第一虚拟特征处并根据第二交互样式在第二虚拟特征处生成三维虚拟对象的修改的版本。例如,系统100可以在虚拟对象上执行一个或多个姿势,以便生成对象的修改的版本。

在步骤708,系统100可以根据所检测的第一交互样式以及所检测的第二交互样式,在头戴式显示装置的用户界面中渲染三维虚拟对象的修改的版本。可以在对对象执行修改时执行渲染。因此,当基于手(控制器)做出的交互样式移动执行对虚拟装置的修改时,用户可以观看他的输入。

在一些实施方式中,过程700可包括响应于检测到第一电子装置面向第二电子装置而启用均匀缩放模式。例如,系统100可以检测到任何被跟踪的控制器、手、手指、拇指被对准,以触发均匀缩放模式。这种模式可以是被配置成根据所检测的第一交互样式以及所检测的第二交互样式在三个维度中均匀地缩放三维虚拟对象的缩放模式。在一些实施方式中,可通过这个特征启用所有六个自由度。

一般而言,检测到第一电子装置面向第二电子装置可包括检测第二电子装置相对于第一电子装置的初始位置和取向,跟踪第二电子装置相对于第一电子装置执行的至少一个姿势,以及检测第二电子装置与第一电子装置的对准。检测对准可包括利用检测到的第一电子装置或第二电子装置的更新的位置和取向来执行第二电子装置相对于第一电子装置的初始位置和取向的比较。所检测的更新位置可以基于至少一个姿势。

在一些实施方式中,在第一虚拟特征处生成三维虚拟对象的修改的版本包括提供在虚拟环境中并附着于三维虚拟对象的可视指示。可视指示可包括定义卡合框架的一个或多个锚点。可将卡合框架配置成选择至少一个坐标系,其中在三个维度中平移和旋转虚拟对象。

在一些实施方式中,过程700可包括响应于检测到第二交互样式,定义旋转路径,以围绕与第一虚拟特征相关联的处所旋转三维虚拟对象。例如,系统100可以跟踪和检测通过第二交互样式指示的旋转运动,并且可以定义旋转虚拟对象的路径。这种路径可可视地来指示或简单地附着于虚拟对象,作为在用户执行特定旋转姿势时可以示出的属性。

图8是示出生成虚拟对象的模型的过程800的一个实施例的流程图。在步骤802,过程800可包括通过计算装置的一个或多个光学传感器获得关于虚拟对象的特征信息。例如,系统100可以获得与虚拟对象相关联的特征/特性,包括虚拟对象的平面度、维度、面积、取向、角、边界、轮廓或表面纹理中的一个或多个。

在步骤804,过程800包括通过计算装置的处理器基于多个特性生成虚拟对象的三维虚拟模型。可以定义虚拟模型以定义虚拟对象,但是也可以根据确定怎样根据可能的用户输入/姿势来修改对象的解释来定义虚拟模型。可通过vr系统108和vr应用110来生成三维虚拟模型。

在步骤806,过程800包括由处理器处理多个特性和三维虚拟模型,以在三维虚拟模型中定义多个锚点。多个锚点可以分别与虚拟对象上的多个可选择区域相关联。如上详述,锚点可以涉及虚拟对象的可选择部分、虚拟对象的可连接部分、和/或关于移动平面的定义。

在步骤808,过程800包括响应于接收选择多个区域中的至少两个区域的输入,建立用于多个区域中的每个区域的输入的相关性。可以使用至少两个输入的相关性以适当地修改虚拟对象。vr系统108可以访问任何数量的服务器和/或处理器,以执行建立特定输入与特定区域的相关性的计算。

在步骤810,过程800包括基于相关性以及与虚拟对象相关联的多个特性来修改虚拟对象的尺寸和取向。在步骤812,过程800包括在三维虚拟模型中渲染并显示修改的虚拟对象。在一些实施方式中,过程800可包括生成虚拟现实环境,包括虚拟现实环境中的虚拟对象的三维虚拟模型。

在一些实施方式中,过程800可包括基于用户执行的双手交互以及所检测的与虚拟对象相关联的多个特性,在生成的虚拟现实环境中在三个维度中旋转虚拟对象的同时自动缩放虚拟对象。可以使用计算的矢量来提供旋转期间的这种自动缩放,如上详述。

图9示出通用计算机装置900和通用移动计算机装置950的示例,它们可以与本文所述技术一起使用。计算装置900包括处理器902、存储器904、存储装置906、连接到存储器904和高速扩展端口910的高速接口908、以及连接到低速总线914和存储装置906的低速接口912。组件902、904、906、908、910和912的每一个使用各种总线互连,并且可以视情况安装在公共主板上或通过其他方式安装。处理器902可以处理用于在计算装置900内执行的指令,包括存储在存储器904中或存储装置906上的指令,以在外部输入/输出装置例如耦合到高速接口908的显示器916上显示gui的图形信息。在其他实施方式中,可以视情况连同多个存储器和多种类型的存储器一起使用多个处理器和/或多个总线。此外,可以连接多个计算装置900,每个装置提供必要操作的部分(例如,作为服务器库、刀片服务器组、或多处理器系统)。

存储器904存储计算装置900内的信息。在一个实施方式中,存储器904是易失性存储器单元。在另一个实施方式中,存储器904是非易失性存储器单元。存储器904也可以是其他形式的计算机可读介质,例如磁盘或光盘。

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

高速控制器908管理计算装置900的带宽密集型操作,而低速控制器912管理较低带宽密集型操作。这种功能分配仅是示例性的。在一个实施方式中,高速控制器908耦合到存储器904、显示器916(例如通过图形处理器或加速器),并耦合到高速扩展端口910,高速扩展端口910可以接受各种扩展卡(未示出)。在该实施方式中,低速控制器912耦合到存储装置906和低速扩展端口914。可包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口可耦合到一个或多个输入/输出装置,例如键盘、指点装置、扫描仪、或网络装置(例如交换机或路由器),例如通过网络适配器。

计算装置900可通过多种不同的形式实现,如图所示。例如,它可以实现为标准服务器920,或者在一组这样的服务器中实现多次。它还可以实现为机架服务器系统924的一部分。此外,它可以在个人计算机例如膝上型计算机922中实现。或者,来自计算装置900的组件可以与移动装置例如装置950中的其他组件(未示出)组合。这些装置的每一个可以包含计算装置900、950中的一个或多个,并且整个系统可以由相互通信的多个计算装置900、950组成。

除了别的组件以外,计算装置950包括处理器952、存储器964、输入/输出装置例如显示器954、通信接口966、以及收发器968。装置950还可以设置有存储装置,例如微驱动器或其他装置,以提供额外的存储。组件950、952、964、954、966和968的每一个使用各种总线互连,并且若干组件可以视情况安装在公共主板上或通过其他方式安装。

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

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

存储器964存储计算装置950内的信息。存储器964可以实现为计算机可读介质、易失性存储器单元、或非易失性存储器单元中的一个或多个。还可以提供扩展存储器974并通过扩展接口972连接到装置950,扩展接口972例如可包括simm(单列直插存储器模块)卡接口。这种扩展存储器974可以为装置950提供额外的存储空间,或者还可以存储装置950的应用或其他信息。具体而言,扩展存储器974可包括执行或补充上述过程的指令,并且还可包括安全信息。因此,例如,扩展存储器974可以作为装置950的安全模块提供,并且可通过允许安全使用装置950的指令编程。此外,可经由simm卡连同附加信息一起提供安全应用,例如以不可破解的方式在simm卡上放置识别信息。

存储器例如可包括闪存和/或nvram存储器,如下所述。在一个实施方式中,计算机程序产品在信息载体中有形地具体实施。计算机程序产品包含指令,指令在被执行时,执行一种或多种方法,例如上述的那些方法。信息载体是计算机或机器可读介质,例如存储器964、扩展存储器974、或处理器952上的存储器,它们例如可通过收发器968或外部接口962接收。

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

装置950还可以利用音频编解码器960可听地通信,音频编解码器960可以从用户接收语音信息并将其转换为可用的数字信息。音频编解码器960同样可以为用户产生可听的声音,例如通过扬声器,例如在装置950的耳机中。这种声音可包括来自语音电话呼叫的声音,可包括录制的声音(例如,语音消息、音乐文件等等),并且还可包括通过装置950上操作的应用生成的声音。

计算装置950可以按照多种不同的形式实现,如图所示。例如,它可以实现为蜂窝电话980。它还可以实现为智能电话982、个人数字助理、或其他类似移动装置的一部分。

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

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

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

本文所述系统和技术可以在包括后端组件(例如作为数据服务器)的计算系统,或者包括中间件组件(例如应用服务器)的计算系统,或者包括前端组件(例如,具有图形用户界面或web浏览器的客户端计算机,用户可以由其与本文所述系统和技术的实施方式执行交互)的计算系统,或者包括这种后端、中间件或前端组件的任何组合的计算系统中实现。系统的组件可通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(lan)、广域网(wan)和互联网。

计算系统可包括客户端和服务器。客户端和服务器通常相互在远程,并且一般通过通信网络进行交互。客户端与服务器的关系由于在各自的计算机上运行并且相互具有客户端-服务器关系的计算机程序而产生。

在一些实施方式中,图9所示的计算装置可包括与虚拟现实(vr耳机990)接口连接的传感器。例如,图9所示的计算装置950或其他计算装置上包括的一个或多个传感器可以向vr耳机990提供输入或者一般而言向vr空间提供输入。传感器可包括但不限于触摸屏、加速计、陀螺仪、压力传感器、生物识别传感器、温度传感器、湿度传感器和环境光传感器。计算装置950可以使用传感器来确定vr空间中计算装置的绝对位置和/或检测到的旋转,然后可以用作vr空间的输入。例如,计算装置950可以作为虚拟对象并入vr空间,例如控制器、激光指示器、键盘、武器等等。在并入vr空间时通过用户安放计算装置/虚拟对象可以允许用户安放计算装置,从而在vr空间中按照某种方式观看虚拟对象。例如,如果虚拟对象表示激光指示器,那么用户可以操纵计算装置,就好像它是实际的激光指示器一样。用户可以上下、左右、圆周式移动计算装置等等,并按照与使用激光指示器类似的方式使用该装置。

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

在一些实施方式中,计算装置950的触摸屏可以被渲染为vr空间中的触摸板。用户可以与计算装置950的触摸屏交互。例如,在vr耳机990中,交互被渲染为vr空间中渲染的触摸板上的移动。所渲染的移动可以控制vr空间中的对象。

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

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

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

在一些实施方式中,贯穿本公开所述的系统可包括被配置成生成虚拟环境的至少一个计算装置。至少一个计算装置可包括存储可执行指令的存储器以及被配置成执行指令的处理器,以使至少一个计算装置执行多个步骤。除了别的以外,这些步骤可包括生成虚拟环境,虚拟环境包括在头戴式显示装置中提供的用户界面内的至少一个三维虚拟对象。可以基于用户交互来检测输入。例如,至少一个计算装置可以检测第一交互样式和/或第二交互样式。第一交互样式可包括修改与三维虚拟对象相关联的第一虚拟特征的指示。第二交互样式可包括对应于在与三维虚拟对象关联的第二虚拟特征上待执行的修改的取向和移动。响应于检测到第二交互样式,计算装置可以根据第一交互样式在第一虚拟特征处并根据第二交互样式在第二虚拟特征处生成三维虚拟对象的修改的版本。可以在头戴式显示装置的用户界面中提供这种虚拟对象的修改的版本。在一些实施方式中,可以在移动发生时(例如实时)在虚拟环境中生成和渲染三维虚拟对象的修改的版本。在一些实施方式中,第一交互样式定义开始修改第一虚拟特征的处所,而第二交互样式定义离开第二虚拟特征的方向和取向。

计算装置900意图表示各种形式的数字计算机,例如膝上型计算机、桌面型计算机、工作站、个人数字助理、服务器、刀片服务器、大型机、以及其他适当的计算机。计算装置950意图表示各种形式的移动装置,例如个人数字助理、蜂窝电话、智能电话、以及其他类似的计算装置。这里所示的组件、它们的连接和关系、以及它们的功能仅仅是示例性的,并非要限制本文献所述和/或要求保护的本发明的实施方式。

在以下示例中总结了其他实施方式。

示例1:一种计算机实现的方法,包括:在头戴式显示装置中提供的用户界面内生成包括至少一个三维虚拟对象的虚拟环境;检测第一交互样式,所述第一交互样式包括修改与所述三维虚拟对象相关联的第一虚拟特征的指示;检测第二交互样式,所述第二交互样式包括对应于在与所述三维虚拟对象关联的第二虚拟特征上待执行的修改的取向和移动;响应于检测所述第二交互样式,根据所述第一交互样式在所述第一虚拟特征处并根据所述第二交互样式在所述第二虚拟特征处生成所述三维虚拟对象的修改的版本;以及在所述头戴式显示装置的用户界面中提供所述三维虚拟对象的所述修改的版本。

示例2:根据示例1所述的方法,其中,在发生所述移动的同时,在所述虚拟环境中生成并渲染所述三维虚拟对象的所述修改的版本。

示例3:根据示例1或2所述的方法,其中,所述第一交互样式定义开始修改所述第一虚拟特征的处所,所述第二交互样式定义离开所述第二虚拟特征的方向和取向,且所述三维虚拟对象的修改的版本包括所述三维虚拟对象的缩放版本,所述缩放版本从所述第一虚拟特征向所述第二虚拟特征缩放。

示例4:根据示例1至3其中一个所述的方法,其中,将所述三维虚拟对象的所述修改的版本从所述第一虚拟特征调整到所述三维虚拟对象的新位置、取向和比例,以及从所述第二虚拟特征调整到所述三维虚拟对象的新位置、取向和比例,所述修改的版本在所述虚拟环境中在用户视野内。

示例5:根据示例1至4其中一个所述的方法,还包括:响应于检测到所述第一交互样式在与所述第二交互样式相同的三维轴中执行,启用均匀缩放模式,其中,所述均匀缩放模式被配置成根据所述第一交互样式和第二交互样式在三个维度中均匀地缩放所述三维虚拟对象。

示例6:根据示例1至5其中一个所述的方法,其中,根据所述第一交互样式在所述第一虚拟特征处并根据所述第二交互样式在所述第二虚拟特征处生成所述三维虚拟对象的修改的版本包括:拉伸和扭曲所述三维虚拟对象,所述拉伸包括在所述三维虚拟对象上定义第一锚点和第二锚点,并在所述第一锚点与所述第二锚点之间形成的平面中进行拉伸。

示例7:根据示例6所述的方法,其中,扭曲所述三维虚拟对象包括在第一输入平面中在所述第一虚拟特征处在三维空间中旋转所述三维虚拟对象,且旋转所述三维虚拟对象包括在三维空间中在所述第二虚拟特征处从第二输入平面到第三输入平面旋转所述三维虚拟对象,其中,所述第一输入平面对应于xy坐标平面,所述第二输入平面对应于yz坐标平面,所述第三输入平面对应于xz坐标平面,每个平面是三维坐标空间。

示例8:根据示例1至7其中一个所述的方法,其中,检测所述第一交互样式包括检测与第一被跟踪装置相关联的第一输入,且检测所述第二交互样式包括检测与第二被跟踪装置相关联的第二输入。

示例9:根据示例1至8其中一个所述的方法,还包括:至少部分地基于检测由访问所述虚拟环境的用户的左手执行的第一被跟踪手移动,在所述第一虚拟特征处生成第一交叉点;至少部分地基于检测由访问所述虚拟环境的用户的右手执行的第二被跟踪手移动,在所述第二虚拟特征处生成第二交叉点;根据所述第一交互样式和第二交互样式修改所述三维虚拟对象,所述修改至少部分地基于确定在所述第一被跟踪手移动或第二被跟踪手移动中执行的至少一个姿势是与所述三维虚拟对象相关联的取向的改变,以及在根据另一个姿势修改所述三维对象的同时执行所述至少一个姿势。

示例10:根据示例9所述的方法,还包括:生成锚点,所述锚点被配置成在三维空间中在所述第一交叉点冻结所述三维虚拟对象的一部分,同时根据所述第二交互样式在所述第二虚拟特征处修改所述三维对象。

示例11:根据示例10所述的方法,其中,生成锚点包括将所述三维虚拟对象上的至少一个处所定义为可选择的缩放处所,所述可选择的缩放处所可操作以接收用户发起的输入,所述用户发起的输入包括指示用于缩放所述三维虚拟对象的指令的至少一个姿势。

示例12:一种计算机实现的方法,包括:在三维虚拟环境中检测由第一电子装置执行的第一交互样式,所述第一交互样式包括修改与在所述虚拟环境中渲染的三维虚拟对象相关联的第一虚拟特征的指示;在所述三维虚拟环境中检测由第二电子装置执行的第二交互样式,所述第二交互样式包括对应于在与所述三维虚拟对象关联的第二虚拟特征上待执行的修改的取向和移动;响应于检测所述第二交互样式,根据所述第一交互样式在所述第一虚拟特征处并根据所述第二交互样式在所述第二虚拟特征处生成所述三维虚拟对象的修改的版本;以及根据所述第一交互样式和所述第二交互样式在所述头戴式显示装置的用户界面中渲染所述三维虚拟对象的所述修改的版本。

示例13:根据示例12所述的方法,还包括:响应于检测到所述第一电子装置面向所述第二电子装置,启用均匀缩放模式,其中,所述均匀缩放模式被配置成根据所述第一交互样式和第二交互样式在三个维度中均匀地缩放所述三维虚拟对象。

示例14:根据示例13所述的方法,其中,检测到所述第一电子装置面向所述第二电子装置包括:检测所述第二电子装置相对于所述第一电子装置的初始位置和取向;跟踪所述第二电子装置相对于所述第一电子装置执行的至少一个姿势;通过将所述第二电子装置相对于所述第一电子装置的初始位置和取向与检测到的所述第一电子装置或第二电子装置的更新的位置和取向进行比较,检测所述第二电子装置与所述第一电子装置的对准,检测到的更新的位置基于所述至少一个姿势。

示例15:根据示例12至14其中一个所述的方法,其中,在所述第一虚拟特征处生成所述三维虚拟对象的修改的版本包括在所述虚拟环境中并附着于所述三维虚拟对象提供可视指示,所述可视指示包括定义卡合框架的多个锚点,所述卡合框架被配置成选择其中在三个维度中平移和旋转所述虚拟对象的至少一个坐标系。

示例16:根据示例12至15其中一个所述的方法,还包括:响应于检测所述第二交互样式,定义旋转路径以围绕与所述第一虚拟特征相关联的处所旋转所述三维虚拟对象。

示例17:一种系统,包括:至少一个计算装置,被配置成生成虚拟环境,所述至少一个计算装置包括:存储器,用于存储可执行指令;以及处理器,被配置成执行所述指令,以使得所述至少一个计算装置:在头戴式显示装置中提供的用户界面内生成包括至少一个三维虚拟对象的虚拟环境;检测第一交互样式,所述第一交互样式包括修改与所述三维虚拟对象相关联的第一虚拟特征的指示;检测第二交互样式,所述第二交互样式包括对应于在与所述三维虚拟对象关联的第二虚拟特征上待执行的修改的取向和移动;响应于检测所述第二交互样式,根据所述第一交互样式在所述第一虚拟特征处并根据所述第二交互样式在所述第二虚拟特征处生成所述三维虚拟对象的修改的版本;以及在所述头戴式显示装置的用户界面中提供所述三维虚拟对象的所述修改的版本。

示例18:根据示例17所述的系统,其中,在发生所述移动的同时,在所述虚拟环境中生成并渲染所述三维虚拟对象的所述修改的版本。

示例19:根据示例17或18所述的系统,其中,所述第一交互样式定义开始修改所述第一虚拟特征的处所,所述第二交互样式定义离开所述第二虚拟特征的方向和取向,且所述三维虚拟对象的修改的版本包括所述三维虚拟对象的缩放版本,所述缩放版本从所述第一虚拟特征向所述第二虚拟特征缩放。

示例20:根据示例17至19其中一个所述的系统,其中,将所述三维虚拟对象的所述修改的版本从所述第一虚拟特征调整到所述三维虚拟对象的新位置、取向和比例,以及从所述第二虚拟特征调整到所述三维虚拟对象的新位置、取向和比例,所述修改的版本在所述虚拟环境中在用户视野内。

示例21:根据示例17至20其中一个所述的系统,还包括:响应于检测到所述第一交互样式在与所述第二交互样式共享的轴平面中执行,启用均匀缩放模式,其中,所述均匀缩放模式被配置成根据所述第一交互样式和第二交互样式在三个维度中均匀地缩放所述三维虚拟对象。

示例22:一种方法,包括:利用计算装置的一个或多个光学传感器获得关于虚拟对象的多个特性;由所述计算装置的处理器基于所述多个特性生成所述虚拟对象的三维虚拟模型;由所述处理器处理所述多个特性和所述三维虚拟模型,以在所述三维虚拟模型中定义多个锚点,所述多个锚点分别与所述虚拟对象上的多个可选区域相关联;响应于接收选择所述多个区域中的至少两个区域的输入,建立所述多个区域中的每个区域的输入的相关性;基于所述相关性并基于与所述虚拟对象相关联的所述多个特性来修改所述虚拟对象的尺寸和取向;以及在所述三维虚拟模型中渲染和显示修改的虚拟对象。

示例23:根据示例22所述的方法,其中,与所述虚拟对象相关联的所述多个特性包括所述虚拟对象的平面性、维度、面积、取向、角、边界、轮廓或表面纹理中的一个或多个。

示例24:根据示例22或23所述的方法,还包括:生成虚拟现实环境,虚拟现实环境包括在所述虚拟现实环境中的所述虚拟对象的三维虚拟模型;基于用户执行的双手交互以及检测到的与所述虚拟对象相关联的多个特性,在所生成的虚拟现实环境中在三个维度中旋转所述虚拟对象的同时自动缩放所述虚拟对象。

已经描述了多个实施例。但是应当理解,在不脱离本说明书精神和范围的情况下可以做出各种修改。

此外,附图所述的逻辑流程不要求所示的特定顺序或连续顺序来获得期望效果。此外,可以提供其他的步骤,也可以从所述流程中删除步骤,并且可以向所述系统添加其他组件,也可以从所述系统删除组件。因此,其他实施例也落入所附权利要求书的范围。

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