一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于选择对象的方法和系统与流程

2023-08-30 09:06:59 来源:中国专利 TAG:

用于选择对象的方法和系统
1.交叉引用
2.本技术要求2020年12月18日提交的发明名称为“用于选择对象的方法和系统(methods and systems for selection of objects)”的第17/127,022号美国非临时申请的权益,所述美国非临时申请通过引用结合在本技术中。
技术领域
3.本发明涉及用于与电子设备进行人机交互,包括在扩展现实环境中选择远端对象的方法和系统。


背景技术:

4.扩展现实(extended reality,xr)是一个概括性术语,旨在涵盖向人类用户提供至少一些感官输入(例如,视觉显示、音频声音、触觉反馈等)的不同技术,这些输入是虚拟的(即由计算系统生成,不反映用户的真实物理环境)。xr涵盖了包括虚拟现实(virtual reality,vr)、增强现实(augmented reality,ar)和混合现实(mixed reality,mr)的技术。因此,xr涵盖了用户与完全计算机生成的环境(例如vr)交互的技术,以及用户与具有虚拟和真实世界组件的环境(例如ar或mr)交互的技术。虚拟环境可被称为场景。
5.与传统桌面或触摸屏系统相比,xr系统的一个挑战是,用于用户交互的对象(包括虚拟对象)的位置不局限于用户的紧邻区域也不局限于单个2d平面,而是在空间上位于用户周围的3d空间中。具体地,对象可以位于用户的到达距离(或运动空间)之外的距离处。此对象可被称为远端对象。与远端对象的交互通常开始于远端选择,且是在xr中进行交互的基础。
6.用于xr远端选择的当前技术包括光线投射。使用光线投射进行xr远端选择通常涉及从用户的角度将虚拟光线投影(也称为投射)到xr场景中。当投射的虚拟光线与场景中的远端对象相交时,所述对象可以被视为临时选择的,通过按下按钮、手势、将临时选择维持预定时间或通过其他技术确认选择对象。
7.用于对象选择的现有光线投射方法的缺点包括目标远端对象可能被更接近用户的其他虚拟对象部分或完全遮挡的挑战,这可能使得投射的虚拟光线难以或不可能到达目标远端对象。可能需要用户通过改变用户角度来改变光线投射的原点,或者可能需要用户首先选择遮挡对象以将遮挡对象移开,这两者对用户来说都可能是乏味的或令人沮丧的。一些现有的xr系统可能会试图通过使虚拟光线能够通过遮挡虚拟对象投射来解决遮挡对象的问题。然而,此种解决方案导致了以下问题:系统可能没有关于光线应投射到的深度(或距离)的信息,以选择期望目标对象。通常,需要额外的歧义消除步骤来精确选择光线的有限深度,例如用户在控制器上滚动以改变光线深度,直到光线到达期望目标对象。这对用户来说也可能是乏味的,并且对于在不同深度选择许多不同的对象来说可能是不实用的。
8.用于对象选择的现有光线投射方法的另一缺点是,当与用户成角度地投射光线时,原点处光线投射角度的微小改变可转化为远端位置处位置的较大改变。这在试图选择
reality,xr)环境中,且所述方法可包括:标识所述xr环境中与所述第一光线或所述第二光线中的至少一个相交的一个或多个相交虚拟对象;调整所述一个或多个相交虚拟对象的不透明度以将所述一个或多个相交虚拟对象呈现为半透明的。
16.在上述任何示例中,确定所述第一光线与所述第二光线的所述交点可包括计算所述第一光线与所述第二光线的实际交点。
17.在上述任何示例中,确定所述第一光线与所述第二光线的所述交点可包括计算所述第一光线与所述第二光线的投影交点,所述第一光线和所述第二光线偏斜。
18.在上述任何示例中,计算所述投影交点可包括:计算所述第一光线与所述第二光线之间的最短矢量;计算沿着所述最短矢量的点作为所述投影交点。
19.在上述任何示例中,所述方法可包括:在确定所述最短矢量的量值在预定义阈值内之后,计算沿着所述最短矢量的所述点。
20.在上述任何示例中,标识所述选定对象可包括:根据所述确定交点,标识一个或多个临时选定对象;接收从所述一个或多个临时选定对象当中确认一个选定对象。
21.在上述任何示例中,标识一个或多个临时选定对象可包括:从所述确定交点投影具有预定半径的球体;标识与投影球体重合的所述一个或多个临时选定对象。
22.在上述任何示例中,可由所述至少一个传感器根据用户的第一身体部位的跟踪的第一位置、定向或姿势来获得所述第一原点,且可由至少一个相同或不同的传感器根据所述用户的第二身体部位的跟踪的第二位置、定向或姿势来获得所述第二原点。
23.在上述任何示例中,所述第一身体部位和所述第二身体部位可各自选自以下中的一个:所述用户的头部、第一只手或第二只手,且所述第一身体部位和所述第二身体部位可为所述用户的不同身体部位。
24.在上述任何示例中,所述选定对象可为扩展现实(extended reality,xr)环境中呈现的虚拟对象,或可为所述xr环境中的真实世界对象。
25.在上述任何示例中,所述选定对象可为物理环境中的真实世界对象。
26.在上述任何示例中,所述至少一个传感器可包括以下中的至少一个:手持式设备的传感器;可穿戴设备的传感器;智能设备的传感器;或跟踪系统的传感器。
27.在一些示例中,本发明描述一种计算系统,包括:耦合到上面存储有机器可执行指令的存储器的处理设备。所述指令在由所述处理设备执行时使得所述计算系统进行上文所描述的任一种方法。
28.在上述任何示例中,所述计算系统可为头戴式显示器(head-mounted display,hmd)设备、可穿戴设备、手持式设备、智能设备、跟踪系统或桌面设备。
29.在一些示例中,本发明描述一种上面存储有机器可执行指令的计算机可读介质。所述指令在由计算系统的处理设备执行时使得所述计算系统通过进行上文所描述的任一种方法来选择扩展现实(extended reality,xr)环境中的对象。
附图说明
30.现在将通过示例参考示出本技术示例性实施例的附图,其中:
31.图1a为示出用户与示例xr环境交互的框图;
32.图1b为示出非xr环境中的用户的框图;
33.图2为示出本发明示例的示例计算系统的一些组件的框图;
34.图3为本发明示例的示例远端选择子系统的框图;
35.图4为示出本发明示例的用于选择对象或位置的示例性方法的流程图;
36.图5为示出本发明示例的用于确定第一与第二光线的交点的示例性方法的流程图;
37.图6示出了图4的方法在xr环境中的示例性实现;且
38.图7a-7c示出了图4的方法在物理环境中的其他示例性实现。
39.不同的附图中使用了相似的附图标记来表示相似的组件。
具体实施方式
40.在各种示例中,本发明描述与扩展现实(extended reality,xr)环境以及非xr环境(即,没有虚拟对象的物理环境)中的用户交互相关的方法和系统。所公开示例可用于选择xr环境中的远端对象。所公开示例可用于选择物理环境中的真实世界对象。所公开示例还可用于选择xr或物理环境中的任何3d位置。本发明的示例可实现于合适的xr系统中,包括增强现实(augmented reality,ar)系统、虚拟现实(virtual reality,vr)系统或混合现实(mixed reality,mr)系统。本发明的示例还可实现于非xr计算系统中。合适的计算系统(其可或可不支持xr)的示例包括可穿戴设备(例如,头戴式显示器(head-mounted display,hmd)设备、智能眼镜、智能手表、智能环等)和/或手持式设备(例如,智能手机、平板电脑等)等等。本发明的示例还可实现于例如桌面计算系统、膝上型计算系统、工作站、智能电器、跟踪系统和其他计算系统等非可穿戴系统中。
41.本发明描述在包括头部跟踪设备(例如,hmd设备)和/或手部跟踪设备(例如,手持式控制器、可穿戴设备(例如智能手表或智能环)、智能手机或运动跟踪相机)的xr系统的上下文中的示例。然而,应理解,本发明不限于此类实施例。举例来说,能够确定第一光线原点和方向(例如,使用用于头部跟踪或眼动跟踪的任何技术)并确定第二光线原点和方向(例如,使用用于手部跟踪的任何技术)的任何系统(包括不运行xr应用程序的系统)可用于实现本发明的示例。
42.图1a示出用户10与xr环境20(也称为xr场景)交互的示例。在本示例中,xr环境20是由计算系统100生成的虚拟环境。例如,计算系统100可以是如图1所示的hmd设备等可穿戴设备。在其他示例中,xr环境20可以由非可穿戴计算系统100(例如,桌面计算系统)生成。
43.应注意,xr环境20为虚拟的或至少部分虚拟的。也就是说,xr环境20中的对象22包括不在用户10的实际物理环境中的虚拟对象,且还可包括真实世界对象(例如,其中xr环境20为ar环境)。作为真实世界对象的对象22可定位于作为虚拟对象的另一对象22当中、被所述另一对象遮挡和/或被所述另一对象覆盖。xr环境20可由用户10通过耦合到或与计算系统100集成的显示器104查看。显示器104可提供xr环境20的沉浸式视图(例如,提供在40到110度范围内的视场(field-of-view,fov)),或xr环境20的更有限视图(例如,手持式显示器104可提供用于显示xr环境20的部分的可移动视口)。显示器104可为例如高分辨率有机发光二极管(organic light-emitting diode,oled)显示器或液晶显示器(liquid crystal display,lcd)。在一些示例中,显示器104可能够显示立体图形(例如,显示器104向左眼和右眼显示单独立体图形),且xr环境20可为沉浸式3d环境。
44.在此简化图中,xr环境20包括远离用户10(即,用户10够不到)的多个对象22。具体地,从用户10的角度来看,用户10希望选择的目标对象22a可被另一对象22b部分或完全遮挡。用户10可选择和/或与xr环境20中的对象22交互。举例来说,用户10可选择作为虚拟对象的对象22,以移动对象22或将命令提供到对象。用户10还可通过xr环境20选择和/或与作为真实世界对象的对象22交互。举例来说,作为真实世界对象的对象22可为能够通过xr环境20接收用户命令的支持计算机的对象(例如,物联网(internet of things,iot)设备)。当计算系统100确定用户10已选择xr环境20中支持计算机的真实世界对象(如下文进一步论述)时,计算系统100可将指示用户选择的命令发送到支持计算机的真实世界对象。在选择之后,支持计算机的真实世界对象可与计算系统100通信以使得用户10能够进一步与支持计算机的真实世界对象交互(例如,通过显示器104向用户10显示用于支持计算机的真实世界对象的可能命令的菜单)。用户10还可选择不支持计算机但可由计算系统100检测到的真实世界对象(例如,使用计算机视觉检测到的对象,或其边界已经预定义并映射于计算系统100中的对象)。举例来说,用户10可希望选择真实世界对象作为用于定位或生成虚拟对象的参考。
45.用户10可通过由计算系统100接收的输入与xr环境20交互。举例来说,用户10可通过改变用户10的位置和/或定向来提供输入。在本发明中,术语姿势可用于涵盖位置和定向的组合。如果计算系统100为可穿戴设备,那么用户10的位置、定向或姿势的改变可由计算系统100的传感器(例如,加速计、陀螺仪、磁力计、惯性测量单元(inertial measurement unit,imu)等)检测到且可被感测为输入。举例来说,与计算系统100集成的传感器可能够以三自由度(degrees-of-freedom,dof)或六dof跟踪用户10的头部。
46.在一些示例中,控制器102(例如,手持式控制器)可耦合到计算系统100,且控制器102可由用户10用于提供输入(例如,使用按钮、操纵杆或其他机构)。可选控制器102可包括能够以三dof或六dof检测用户10的位置、定向或姿势(例如,尤其用户手部的位置、定向或姿势)的传感器(例如,加速计、陀螺仪、磁力计、imu等),且可传送由计算系统100接收作为输入的此感测到的数据。
47.在一些示例中,另一支持计算机的设备(例如,例如智能手表或智能环等可穿戴设备,或例如智能手机等手持式设备)而非控制器102(其可设计用于与xr环境20交互)可保持在用户10的手中或佩戴在所述用户的手附近,以检测用户的手部的位置、定向或姿势。
48.在一些示例中,用户10的位置、定向或姿势的改变可由耦合到计算系统100的外部跟踪系统(例如,红外线跟踪系统,或基于计算机视觉的跟踪系统)检测到。外部跟踪系统(未示出)可例如使用主动或被动标记(例如,附接到可穿戴计算系统100、附接到手持式控制器102和/或直接附接到用户10的标记),或使用非基于标记的计算机视觉(例如,使用基于机器学习的算法(例如同时定位与地图构建(simultaneous localization and mapping,slam)算法或例如azure kinect
tm
中使用的训练神经网络)检测用户10)来跟踪用户10的位置或定向(例如,以三dof)或姿势(例如,以六dof)。外部跟踪系统可传送关于用户10的跟踪的位置、定向或姿势的数据,其由计算系统100接收作为输入。
49.各种技术和技艺可用于接收输入,以使得用户10能够与xr环境20交互,且本发明不限于上文所论述的示例。
50.响应于表示用户10的位置、定向或姿势的改变的输入,计算系统100可重新呈现作
为xr环境20中的虚拟对象的对象22,以反映用户10的改变的位置、定向或姿势。表示用户10的位置、定向或姿势的输入数据可由计算系统100实时地连续地接收,以确保用户10的无缝且流畅的xr体验。
51.图1b示出用户10与物理环境40(即,不具有虚拟对象)交互的示例。在此示例中,物理环境40包括一个或多个物理(或真实世界)对象42,其可包括一个或多个支持计算机的真实世界对象。
52.在示出的示例中,计算系统100可为手持式计算系统100(例如,智能手机或平板电脑),其可或可不能够呈现xr环境(例如,ar环境)。举例来说,计算系统100可能够支持xr环境20中的用户交互和物理环境40中的用户交互两者,且可能够在显示xr环境20的视图(例如,通过显示器104(图1b中未示出))与物理环境40的视图之间切换。计算系统100还可与一个或多个输入/输出(input/output,i/o)设备106通信,所述输入/输出设备可为可穿戴设备(例如,智能手表、智能环、智能眼镜等)或手持式设备(例如,先前描述的控制器102)。一个或多个i/o设备106可包括传感器或可由计算系统100感测,以使得能够以三dof或六dof跟踪i/o设备106。
53.在此简化图中,物理环境40包括多个对象42,其包括用户10希望选择的目标对象42a。举例来说,用户10可选择作为支持计算机的真实世界对象(例如,智能电器或iot设备)的目标对象42a,以将命令提供到对象。用户10还可选择不支持计算机但可由计算系统100检测到的目标对象42a(例如,使用计算机视觉检测到的对象,或其边界已经预定义且映射于计算系统100中的对象)。如果目标对象42a为支持计算机的对象,那么用户可通过来自计算系统100的命令选择并与目标对象42a交互,类似于上文参考图1a所描述。
54.如果计算系统100为可穿戴设备或手持式设备,那么用户10的位置、定向或姿势的改变可由计算系统100的传感器(例如,加速计、陀螺仪、磁力计、惯性测量单元(inertial measurement unit,imu)等)检测到且可被感测为输入。举例来说,与计算系统100集成的传感器可能够以三自由度(degrees-of-freedom,dof)或六dof跟踪用户10的头部。
55.在一些示例中,i/o设备106可由用户10用于将输入提供到计算系统100和/或从所述计算系统接收输出。可选i/o设备106可包括能够以三dof或六dof检测用户10的位置、定向或姿势(例如,尤其用户手部的位置、定向或姿势)的传感器(例如,加速计、陀螺仪、磁力计、imu等),且可传送由计算系统100接收作为输入的此感测到的数据。
56.在一些示例中,用户10的位置、定向或姿势的改变可由耦合到计算系统100的外部跟踪系统(例如,红外线跟踪系统,或基于计算机视觉的跟踪系统)检测到。外部跟踪系统(未示出)可例如使用主动或被动标记(例如,附接到可穿戴或手持式计算系统100、附接到可穿戴或手持式i/o设备106和/或直接附接到用户10的标记),或使用非基于标记的计算机视觉(例如,使用基于机器学习的算法(例如同时定位与地图构建(simultaneous localization and mapping,slam)算法或例如azure kinect
tm
中使用的训练神经网络)检测用户10)来跟踪用户10的位置或定向(例如,以三dof)或姿势(例如,以六dof)。外部跟踪系统可传送关于用户10的跟踪的位置、定向或姿势的数据,其由计算系统100接收作为输入。各种技术和技艺可用于接收输入,以使得用户10能够与物理环境40交互,且本发明不限于上文所论述的示例。
57.图2为示出可用于实现本文中所公开的示例的计算系统100的一些组件的框图。尽
管下文示出且论述计算系统100的示例实施例,但其他实施例可用于实现本文中所公开的示例,其可包括不同于所示组件的组件。尽管图2示出了每个组件的单个实例,但是示出的每个组件可以有多个实例。
58.计算系统100可为可穿戴设备(例如,头戴式显示器(head-mounted display,hmd)设备、智能手表、智能环、智能眼镜等)、手持式设备(例如,智能手机、平板电脑等)或非可穿戴设备(例如,桌面计算系统、膝上型计算系统、工作站、智能电器、跟踪系统等)等等。在一些示例中,计算系统100可为与可穿戴设备通信的非可穿戴设备。举例来说,本发明的示例可实现于能够进行光线投射的任何合适的计算系统中。
59.计算系统100包括一个或多个处理设备202,例如处理器、微处理器、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)、专用逻辑电路系统、专用人工智能处理器单元或其组合。计算系统100还包括一个或多个输入/输出(input/output,i/o)接口204,其与例如可选控制器102、可选i/o设备106等输入设备和例如显示器104等输出设备介接。计算系统100可以包括其他输入设备(例如按钮、麦克风、触摸屏、键盘等)和其他输出设备(例如扬声器、振动单元等)。可选控制器102、可选i/o设备106和显示器104可以在计算系统100的外部,如图2所示。在其他示例中,可选控制器102、可选i/o设备106和/或显示器104可与计算系统100集成(例如,计算系统100可为具有内置式显示器104的hmd设备,或可为例如智能眼镜或智能手表等可穿戴设备)。
60.计算系统100可包括一个或多个可选通信接口206以用于与外部系统或网络(例如,企业内部网、因特网、p2p网络、wan和/或lan)进行有线或无线通信。一个或多个通信接口206可使得能够使用有线链路(例如,以太网等,使用一个或多个缆线)和/或无线链路(例如,wi-fi、蓝牙等,使用一个或多个天线)进行通信以用于网内和/或网外通信。一个或多个通信接口206可使得计算系统100能够与例如外部跟踪系统等外部系统通信,以接收输入数据(例如,表示用户10的跟踪的位置、定向或姿势的数据)。
61.计算系统100包括一个或多个存储器208,其可包括易失性或非易失性存储器(例如,闪存、随机存取存储器(random access memory,ram)和/或只读存储器(read-only memory,rom))。一个或多个非瞬时性存储器208可存储用于由一个或多个处理设备202执行的指令,以便实行本发明中描述的示例。举例来说,一个或多个存储器208可包括用于执行远端选择子系统300的指令。一个或多个存储器208可包括其他软件指令,例如用于实现操作系统、呈现xr环境20(如果可适用)和其他应用程序/功能。一个或多个存储器208还可包括数据210,例如表示待呈现的xr环境20(如果可适用)且通过显示器104提供为输出的数据。
62.在一些示例中,计算系统100还可包括一个或多个电子存储单元(未示出),例如固态硬盘、硬盘驱动器、磁盘驱动器和/或光盘驱动器。在一些示例中,一个或多个数据集和/或模块可由外部存储器(例如,与计算系统100进行有线或无线通信的外部驱动器或云存储器)提供或可由瞬时性或非瞬时性计算机可读介质提供。非瞬时性计算机可读介质的示例包括ram、rom、可擦除可编程rom(erasable programmable rom,eprom)、电可擦除可编程rom(electrically erasable programmable rom,eeprom)、闪存、cd-rom或其他便携式存储器。
63.计算系统100可包括一个或多个传感器212,其可包括加速计、陀螺仪、磁力计、imu(其可为加速计、陀螺仪和/或磁力计的组合)等等。一个或多个传感器212可感测用户10的位置、定向或姿势并生成表示用户10的位置、定向或姿势的传感器数据。在一些示例中,一个或多个传感器212还可包括眼动跟踪单元(例如,光学眼动跟踪传感器),其感测用户10的眼睛的旋转且生成表示眼睛的方向(例如,以三dof)的传感器数据。计算系统100还可包括可选全球定位系统(global positioning system,gps)单元214,其可与全球导航系统通信(例如,通过一个或多个通信接口206)以生成表示用户10的位置、定向或姿势的数据。
64.图3为示出远端选择子系统300的一些示例子系统的框图。在此示例中,远端选择子系统300可使用光线原点子系统302、可选光线投射子系统304、可选不透明度子系统306和相交子系统308实现。尽管图3示出远端选择子系统300内的相异子系统302、304、306和308,但这并不希望为限制性的。如本文中所公开,远端选择子系统300的操作可使用更多或更少数目个子系统来实现。被描述为使用特定的一个子系统302、304、306和308进行的功能可由不同的一个子系统302、304、306和308进行。在一些示例中,远端选择子系统300可不包括任何相异子系统。替代地,子系统302、304、306和308的功能可被视为整个远端选择子系统300的功能。
65.图4为示出示例性方法400的流程图,所述方法可由计算系统100使用远端选择子系统300进行(例如,处理设备202执行存储器208中的指令以用于实现远端选择子系统300的功能)。为了易于理解,图3和4将一起论述。如根据以下论述将理解,方法400可使得能够选择xr环境20或物理环境40中的对象或位置。
66.远端选择子系统300接收第一姿势数据集和第二姿势数据集,且输出表示选定对象或位置的数据。第一姿势数据集可表示用户10的第一身体部位的位置、定向或姿势且第二姿势数据集可表示用户10的第二身体部位的位置、定向或姿势,其中第一和第二身体部位为用户10的不同身体部位。可跟踪用户10的各种身体部位以生成第一和第二姿势数据集。第一身体部位可为用户10的头部且第二身体部位可为用户10的手部;第一身体部位可为用户10的第一只手且第二身体部位可为用户10的第二只手;第一身体部位可为用户10的眼睛且第二身体部位可为用户10的手部;以及其他可能性。应注意,尽管被称为第一和第二姿势数据,但第一和/或第二姿势数据可各自独立地表示仅位置数据(例如,以三dof)、仅定向数据(例如,以三dof),或位置数据和定向数据这两者(例如,以六dof)。
67.在步骤402处,确定用于投射(或投影)第一和第二虚拟光线的第一和第二原点。为简单起见,以下论述将虚拟光线简称为光线。步骤402可通过运行光线原点子系统302进行。可分别根据第一和第二姿势数据计算第一和第二原点。在一些现有计算系统100中(例如,在例如hmd设备等可穿戴设备中),可连续地进行对用户视图(例如,由用户头部的位置、定向或姿势指示)的跟踪。此外,在使用手持式控制器102或与可穿戴i/o设备106通信的一些现有计算系统100中,可连续地跟踪控制器102或i/o设备106的位置、定向或姿势。同样,一些跟踪系统(例如,红外线跟踪系统或光学跟踪系统)可连续地跟踪用户10的身体部位(例如,用户10的头部和手部)的位置、定向或姿势。因此,可连续地(例如,以规则且频繁的时间间隔,例如每10ms)更新第一姿势数据集和第二姿势数据集。第一和第二姿势数据集可具有任何合适的格式。举例来说,第一和第二姿势数据集可各自为未处理传感器数据(例如,由计算系统100的一个或多个传感器212生成),或可为已处理数据(例如,已经由例如同时定
位与地图构建(simultaneous localization and mapping,slam)算法等算法处理以映射到共同参考系和/或移除噪声的传感器数据)。
68.第一姿势数据集和第二姿势数据集可从不同来源(例如,分别从可穿戴计算系统100和/或手持式控制器102上的不同传感器;或从计算系统100和/或i/o设备106上的不同传感器)提供。举例来说,可表示用户10的头部的位置、定向或姿势的第一姿势数据集可由可穿戴计算系统100中的imu、计算系统100外部的可穿戴传感器、外部头部跟踪系统或计算系统100的光学slam预处理单元提供。可表示用户10的手部的位置、定向或姿势的第二姿势数据集可由手持式控制器102或i/o设备106中的传感器、外部手部跟踪系统或其他可穿戴传感器提供。
69.在一些示例中,第二姿势数据集可由hmd设备(其还可为计算系统100)提供。举例来说,如果用户10的手部在hmd设备的fov内,那么传感器(例如,光学传感器,如果可跟踪标记附接到手部)或计算机视觉算法可检测手部的位置、定向或姿势并相应地生成第二姿势数据。
70.第一和第二姿势数据集可由计算系统100以各种方式获得,其中一些在本文中论述。举例来说,计算系统100可为具有内部传感器以检测用户10的手部的位置、定向或姿势作为第一姿势数据集的手持式计算系统,且计算系统100可与可穿戴i/o设备106(具有内部传感器)通信以接收用户10的头部或另一只手的位置、定向或姿势作为第二姿势数据集。
71.在另一示例中,计算系统100可为具有内部传感器以检测用户10的头部或手部的位置、定向或姿势作为第一姿势数据集的可穿戴计算系统(例如,智能眼镜或智能手表),且可与另一可穿戴i/o设备106(具有内部传感器)通信以接收用户10的另一只手的位置、定向或姿势作为第二姿势数据集。
72.在另一示例中,计算系统100可为可穿戴计算系统(例如,智能眼镜或智能手表),其具有内部传感器以检测用户10的头部或手部的位置、定向或姿势作为第一姿势数据集,且可检测(例如,使用计算机视觉或通过跟踪用户10上的标记)另一只手的位置、定向或姿势(在计算系统100的fov内)作为第二姿势数据集。
73.在另一示例中,计算系统100可为桌面计算系统,其可通过不同输入模态(例如,通过鼠标输入且通过眼动跟踪输入)接收第一和第二姿势数据集。在示例中,计算系统100可为桌面计算系统,其与跟踪系统通信或包括跟踪系统以检测和跟踪(例如,使用计算机视觉或通过跟踪红外线或光学跟踪标记)用户10的不同身体部位(例如,头部和手部)以获得第一和第二姿势数据集。
74.应理解,许多各种技术可用于获得用户10的不同身体部位的跟踪数据,且可用于获得第一和第二姿势数据集。
75.光线原点子系统302处理第一姿势数据集和第二姿势数据集以生成用于投射第一和第二光线的第一原点和第二原点。在本发明中,术语原点可指代光线从中投射的位置以及光线投射的方向两者。光线原点子系统302可进行用于将第一和第二姿势数据集转换成相应第一和第二原点的任何合适的算法。举例来说,光线原点子系统302可进行从相应的第一或第二姿势数据集的参考系到xr环境20或物理环境40的共同参考系的直接映射(例如,使用变换矩阵)。
76.第一原点可以六dof确定,且可表示为[v
p
,vd],其中v
p
表示表示所定义参考系(例
如,相对于xr环境20或物理环境40定义)中第一原点的位置的笛卡尔坐标(也称为x、y、z坐标),其中vd表示表示所定义参考系中应投射第一光线的方向的欧拉角(也称为方位角、仰角和倾斜角)或四元数。类似地,第二原点可以六dof确定,且可表示为[h
p
,hd],其中h
p
表示表示所定义参考系(例如,相对于xr环境20或物理环境40所定义)中第二原点的位置的笛卡尔坐标(也称为x、y、z坐标),其中hd表示表示所定义参考系中应投射第二光线的方向的欧拉角或四元数。
[0077]
在一些示例中,第一原点和/或第二原点可以三dof确定(例如,在一些示例中,第一姿势数据集或第二姿势数据集可能不足以计算六dof)。如果第一原点以三dof确定,那么可假设第一原点处于固定位置(例如,v
p
可固定于(0,0,0)处)且仅计算vd。类似地,如果第二原点以三dof确定,那么可假设第二原点处于不同于第一原点的固定位置的固定位置(例如,h
p
可固定于(10,10,10)处)且仅计算hd。
[0078]
在一些示例中,第一原点和/或第二原点可以在远端选择子系统300的外部计算。在这种情况下,在步骤402确定第一和第二原点可以涉及从远端选择子系统300外部获得第一和第二原点。举例来说,如果计算系统100为可穿戴设备(例如,hmd设备、智能眼镜、智能手表或智能环)或与可穿戴设备通信,那么头部或手部跟踪硬件和/或软件可实现为可穿戴设备的现有功能的部分且远端选择子系统300可直接具备第一原点(而无需根据第一姿势数据集确定第一原点)。在另一示例中,如果使用手持式控制器102或i/o设备106,那么手部跟踪硬件和/或软件可实现为控制器102或i/o设备106的现有功能的部分,且远端选择子系统300可直接具备第二原点(而无需根据第二姿势数据集确定第二原点)。在另一示例中,如果计算系统100包括或与跟踪系统通信以跟踪物理环境40中的用户10,那么跟踪系统可将跟踪软件实现为现有功能的部分且可将第一和第二原点直接提供到远端选择子系统300。
[0079]
在一些示例中,在404处,分别从第一和第二原点投射第一光线和第二光线。举例来说,步骤404可以通过执行光线投射子系统304进行。光线投射子系统304接收第一和第二原点(分别为[v
p
,vd]和[h
p
,hd])且计算如分别从第一和第二原点投射的第一和第二光线的路径。光线投射子系统304生成数据(例如,表示沿着每一光线的一组有限点的数据),以使得第一和第二光线能够在xr环境20中被视觉呈现(例如,使用任何合适的3d直线绘制算法,例如bresenham直线算法)。
[0080]
光线投射子系统304可以使用任何合适的光线投射算法。通常,可以使用3d直线方程从给定位置和方向投射3d光线:
[0081][0082]
其中(a,b,c)是光线的点(对应于v
p
或h
p
),是方向矢量(根据vd或hd计算),t是光线的标量参数,(x,y,z)是光线上的点。投射光线上的每个(x,y,z)点都可以根据t的相应值计算,t可以采用从零到无穷大的任何值。
[0083]
在一些示例中,光线投射子系统304可以用于连续投射要在xr环境20中呈现的第一和第二光线,使得用户10可以在用户10移动(例如,移动头部和手部)时使第一和第二光线的变化位置和方向可视化。在其他示例中,可能需要来自用户10的可选激活输入(例如,按下按钮或语音命令)来开始光线投射子系统304的操作。
[0084]
也可以进行步骤404以在物理环境40中投射光线。例如,计算系统100可以通过显示器104提供物理环境40的视图,并且可以呈现物理环境40中的第一和第二光线的可视化,
以使用户10能够更好地控制第一和第二光线的位置和方向。这样,可以通过计算系统100上的ar显示器来帮助用户与物理环境40的交互。
[0085]
从第一原点投射的第一光线可以表示为rv,从第二原点投射的第二光线可以表示为rh。
[0086]
在一些示例中,如果不进行可选步骤404,则可以从远端选择子系统300省略或禁用光线投射子系统304。
[0087]
在一些示例中,在406处,标识相交对象集。例如,步骤406可以通过执行不透明度子系统306来进行。不透明度子系统306接收两条投射光线rv和rh,并标识xr环境20或物理环境40中与第一和第二光线相交的任何对象。
[0088]
不透明度子系统306可以使用任何合适的算法来确定光线与对象的交点(例如,计算表示光线的方程是否与对象的任何边界相交)。光线投射领域中已知的技术可由不透明度子系统306使用(例如,使用光线投射命中测试功能)。与第一光线和第二光线相交的任何对象都可以由不透明度子系统306跟踪,并将其添加到相交对象的列表中。每一相交对象可以通过例如对象标识符(identifier,id)或实例id来标识。可以生成单个列表,标识与第一光线、第二光线或这两条光线相交的对象。替代地,可以生成单独的第一和第二列表,分别标识与第一光线或第二光线相交的对象。
[0089]
例如,可以生成相交对象列表(例如,以数组的形式)i,以标识与第一和/或第二光线相交的对象集。与第一或第二光线相交的每一对象都将添加到相交对象列表中。例如,如果第一光线rv与对象o0和o1相交,而第二光线rh与对象o1和o2相交,则相交对象列表将为i=[o0,o1,o2]。在第一和第二列表中标识对象的顺序可能并不重要,也可能没有必要标识哪个对象对哪条光线(或这两条光线)感兴趣。在一些示例中,例如,可以单独跟踪与每条光线相交的对象,以使得相交虚拟对象的不透明度能够针对每条光线进行不同的调整。
[0090]
在一些示例中,可以省略步骤406。例如,如果正在执行方法400以用于物理环境40中的对象选择,则可能没有必要标识与第一和第二光线相交的所有对象,因为物理环境40中的真实世界对象的不透明度无法调整。
[0091]
在一些示例中,在408处,调整相交对象集中每一虚拟对象的不透明度。例如,步骤408可以通过执行不透明度子系统306来进行,以改变相交对象列表i中每一虚拟对象的不透明度。
[0092]
不透明度子系统306调整相交对象集中每一虚拟对象的不透明度(例如,如在相交对象列表中所标识),使得相交虚拟对象在xr环境20中以较低的不透明度呈现。因此,用户10可能够查看第一和第二光线通过任何遮挡虚拟对象的路径。不透明度子系统306例如通过将每一相交虚拟对象的α值改变为设置的α值(例如,介于0.0(即完全透明)与1.0(即完全不透明)之间的α值,通常设置的α值应小于1.0,以使相交虚拟对象呈现为半透明的)来调整相交对象集中包括的每个虚拟对象的不透明度。在一些示例中,α值可以由不透明度子系统306响应于用户输入动态地改变(例如,用户可以使用按钮或其他输入机构选择较低的不透明度,以便更好地查看投射光线的路径)。
[0093]
在一些示例中,不透明度子系统306可以用于连续更新相交对象集中的对象,并调整xr环境20中相交虚拟对象的不透明度,使得用户10可以在用户10移动(例如,移动头部和手部)时使第一和第二光线的变化路径可视化。在其他示例中,可能需要来自用户10的可选
激活输入(例如,按下按钮或语音命令)来开始不透明度子系统306的操作。如果第一和/或第二原点被改变(例如,由于用户头部和/或手部的移动),使得先前相交的虚拟对象不再相交,不透明度子系统306可以从相交对象列表中删除所述虚拟对象,并调整所述虚拟对象的不透明度以返回其原始不透明度。因此,可以连续调整xr环境20中虚拟对象的不透明度,以指示哪些虚拟对象与第一和第二光线相交。
[0094]
在一些示例中,可以省略步骤408,并且可以不调整相交虚拟对象的不透明度。例如,可以使用其他视觉技术向用户10指示第一和第二光线的位置(例如,浮动虚拟箭头、将第一和第二光线呈现为平面等)。应理解,在xr环境20或物理环境40中选择目标对象不一定取决于标识和调整任何相交虚拟对象的不透明度。
[0095]
在一些示例中,如果省略步骤406和408,则不透明度子系统306可以从远端选择子系统300省略或禁用。
[0096]
通过执行光线投射子系统304以呈现要可视化的第一和第二光线,和/或通过执行不透明度子系统306以降低相交虚拟对象的不透明度,远端选择子系统300使用户10能够更清楚地瞄准要选择的期望对象。用户10可以调整第一姿势数据和第二姿势数据(例如,通过改变头部和手部的位置、定向或姿势)以控制第一和第二光线,直到第一和第二光线在目标对象处相交。
[0097]
在410处,确定第一光线和第二光线的交点。例如,步骤410可以通过执行相交子系统308来进行。所确定的交点可以是第一和第二光线的计算实际交点,或者如果第一和第二光线偏斜(即,不平行但不相交),则所确定的交点可以是第一和第二光线的计算投影交点。所确定的交点可以被标识为xr环境20或物理环境40的参照系中的笛卡尔坐标。
[0098]
图5为示出用于执行步骤410的示例步骤的流程图。相交子系统308可以进行图5所示的方法,例如,执行步骤410。
[0099]
在502处,确定第一和第二光线是否平行。这可以使用各种技术来进行,例如通过检查方向矢量vd和hd是否为彼此的标量倍数。如果第一和第二光线是平行的,则无法确定交点,并且方法在未确定交点的情况下结束。返回图4,如果在步骤410没有发现交点,则方法400可以返回步骤402以继续跟踪第一和第二原点。
[0100]
返回图5,如果第一和第二光线被确定为不平行,则在504处,确定第一与第二光线之间是否存在实际的交点。对于任何不平行且不偏斜的光线对,必须存在一个唯一的交点p。交点可以使用标准的3d直线相交算法计算。例如,相交子系统308可以使用以下方程:
[0101][0102]
其中v
p
和h
p
表示第一和第二原点的位置,vd和hd表示第一和第二原点的方向矢量,p是第一和第二光线的实际交点。在确定实际交点之后,所述方法前进到步骤510。
[0103]
如果无法确定第一与第二光线之间的实际交点,则第一和第二光线偏斜,并且所述方法前进到步骤506。
[0104]
在506处,计算第一与第二光线之间的最近距离,并确定最近距离是否在预定义阈值内。
[0105]
用于计算3d空间中两条光线(或两条线)之间的法线的任何标准算法都可用于计算第一与第二光线之间的最近距离。例如,相交子系统308可以使用以下方程:
[0106][0107]
其中v
p
和h
p
表示第一和第二原点的位置,vd和hd表示第一和第二原点的方向矢量,d是第一与第二光线之间的最短矢量。在计算矢量d之后,可以计算d的量值以确定第一与第二光线之间的最近距离。
[0108]
如果最近距离在预定阈值内,则相交子系统308确定第一和第二光线足够接近以被视为相交,并且所述方法前进到步骤508。
[0109]
如果最近距离不在预定阈值内,则相交子系统308确定第一和第二光线距离太远,无法被视为相交,并且无法确定交点。图5的方法在未确定交点的情况下结束。返回图4,如果在步骤410没有发现交点,则方法400可以返回步骤402以继续跟踪第一和第二原点。
[0110]
用于确定第一和第二光线(其偏斜)是否可以被视为相交的预定阈值可以在默认情况下预设和/或可以是用户可选择的(例如,用户可能希望将阈值调整为更小,以避免在人口密集型xr环境20或物理环境40中意外选择不需要的对象;或者用户可能希望将阈值调整为更大,以使得能够更容易地选择目标对象)。
[0111]
在一些示例中,用于确定第一和第二光线是否可以被视为相交的预定阈值可以是可变的,这取决于从第一和第二光线的投影交点到第一和第二原点的距离。当光线从其原点以一定角度投射时,在原点处角度的微小变化转化为在远离原点的距离处光线的大位移。因此,光线从原点投射得越远,精确地控制一定距离处的光线位置可能就越困难。可以设置预定阈值以考虑这种影响,例如通过定义预定阈值,使得如果第一与第二光线之间的最近距离(即投影交点)计算为靠近第一和第二原点(例如,在距离第一和第二原点中的每一个的一米半径内),则预定阈值更小;如果第一与第二光线之间的最近距离(即投影交点)计算为远离第一和第二原点(例如,在距离第一和第二原点中的每一个的10米半径之外),则预定阈值更大;否则(例如,在距离第一和第二原点中的每一个的一米半径之外,但在10米半径内)预定阈值的值介于两者之间。预定阈值也可以使用方程来定义,使得预定阈值随着从第一与第二光线之间的最近距离(即投影交点)到第一和第二原点的距离增加而逐渐增大(例如,线性地)。
[0112]
在508处,在确定第一与第二光线之间的最近距离在预定阈值内之后,计算投影交点。投影交点可以计算为沿着第一与第二光线之间的最短矢量的任何选定点。例如,投影交点可以计算为第一与第二光线之间的最短矢量的中点。在计算投影交点之后,所述方法前进到步骤510。
[0113]
在510处,第一与第二光线之间的实际交点(在步骤504计算)或投影交点(在步骤508计算)被用作确定交点。返回图4,在确定了第一与第二光线的交点之后,方法400前进到步骤412。
[0114]
在412处,根据确定交点,标识xr环境20或物理环境40中的临时选择的对象。例如,步骤412可以通过执行相交子系统308来进行。
[0115]
确定交点(可以是第一与第二光线的实际交点,或第一与第二光线之间的投影交点)可以由xr环境20或物理环境40的参考系中的3d笛卡尔坐标定义。相交子系统308确定xr环境20或物理环境40中是否存在与确定交点重合的任何对象。例如,相交子系统308可以在所标识的相交对象集中标识与确定交点重合(例如,包围或邻接(即,接触))的对象(例如,
来自步骤406)。在另一个示例中(例如,如果省略步骤406),则相交子系统308可以在已知对象列表(例如,呈现的虚拟对象的列表、支持计算机的真实世界对象的列表、检测到的真实世界对象的列表或其组合)中标识与确定交点重合的对象。例如,已知对象列表中的每一对象可以与xr环境20或物理环境40的参考系中定义的对象边界相关联,并且相交子系统308可以标识其定义的边界包围或邻接确定交点的对象。在另一个示例中,相交子系统308可以检测在确定交点的位置处是否存在任何对象(例如,相交子系统308可以与计算系统100的对象检测子系统通信或与外部跟踪系统通信,以检测在确定交点的位置处的任何对象,例如使用计算机视觉)。然后,标识的对象被标识为临时选定的对象。可以存在多于一个临时选定的对象(例如,相交对象集中的多于一个对象可以接触确定交点,例如两个对象可以在确定交点处相互接触)。
[0116]
在一些示例中,相交子系统308可以从确定交点投影具有预定或用户可选择半径的球体。用户可能够动态地选择投影球体的半径(例如,使用任何合适的手动输入机构,例如控制器102上的操纵杆)。xr环境20或物理环境40中与投影球体重合(例如,至少部分地被投影球体包围或邻接投影球体)的任何对象都可以被标识为临时选定的对象。可以存在多于一个临时选定的对象(例如,多于一个对象至少部分地被投影球体包围或邻接投影球体)。
[0117]
在xr环境20中临时选定的虚拟对象可以一种方式来呈现(例如,以不同的颜色呈现),以视觉地指示临时选择。在一些示例中,用户10可以具备其他合适的输出(例如,临时选定对象的例如设备名等标识符的显示或音频输出),以向用户10指示临时选定的对象。
[0118]
在一些示例中,可以不标识临时选定的对象(例如,确定交点与xr环境20或物理环境40中的任何对象不重合),在这种情况下,方法400可以返回步骤402。替代地,如果尚未标识临时选定的对象,则确定交点可以用于标识xr环境20或物理环境40中的临时选定的3d位置。例如,用户可以选择xr环境20中的3d位置作为用于放置虚拟对象的位置指示符。在另一个示例中,用户可以选择物理环境40中的3d位置作为用于控制由计算系统100控制的移动机器人的移动的位置指示符。其他此类应用也是可能的。
[0119]
临时选定的位置可以在xr环境20中呈现(例如,通过呈现虚拟箭头或其他指示符),以视觉地指示临时选择。在一些示例中,物理环境40中的临时选定的位置可以在计算系统100的显示器104中指示(例如,通过呈现虚拟箭头或其他指示符)、被物理环境40的视图覆盖。
[0120]
在414处,接收对选定对象或位置的确认。在存在多于单个临时选定对象的示例中,确认可以作为用户输入(例如,手动输入、语音命令、眼动跟踪输入等)接收,指示在临时选定对象中选择特定对象。在存在标识的单个临时选定的对象或位置的示例中,选定对象或位置的确认可以作为用户输入(例如,手动输入、语音命令等)接收,或者可以通过临时选定的对象或位置被保持为临时选定来接收(例如,通过第一和第二原点基本上不变),直到预定计时器到期(例如,一秒钟)。选定对象(例如,对象id)或位置(例如,对应于确定交点的3d笛卡尔坐标)的标识由远端选择子系统300输出。
[0121]
因此,方法400使得能够根据从相应的第一和第二原点投射的第一和第二光线来标识选定对象或选定位置。例如,选定对象或选定位置的标识可以由另一个软件应用程序(例如,被执行以生成xr环境20的另一个应用程序,或被执行以控制物理环境40中支持计算
机的真实世界对象的另一个应用程序)使用,以使得能够与选定对象或断定位置进行进一步用户交互。
[0122]
可以通过执行远端选择子系统300来进行的方法400提供了可以被视为遮挡不变的对象或位置选择技术。通过遮挡不变性,这意味着选择技术不需要根据要选择的目标对象或位置是否被另一对象遮挡而改变。否则会遮挡目标对象或位置的任何虚拟对象都将呈现为半透明的。从不同的第一和第二原点投射的第一和第二光线的使用可以被称为交叉模态光线,因为每条光线可以对应于不同的用户控制模式(例如,第一光线可以从对应于用户头部的第一原点投射,并且第二光线可以从对应于用户手部的第二原点投射)。与一些现有的虚拟对象选择技术相比,使用两个单独可控的光线来确定用于标识选定对象或位置的交点可以实现更快的对象或位置选择(例如,不需要额外的歧义消除步骤)。
[0123]
图6示出了方法400在xr环境20中的示例性实现,其中方法400由作为计算系统100的hmd设备执行,其中计算系统100与手持式控制器102介接。图6示出了通过显示器104作为感官输入提供给用户10的简化xr环境20。
[0124]
在这个简化的示例中,xr环境20包括对象22,包括通过遮挡虚拟对象22b遮挡(从用户10的角度来看)的目标对象22a。
[0125]
在此示例中,第一原点[v
p
,vd]确定为对应于用户头部的姿势(例如,由可穿戴计算系统100跟踪),第二原点[h
p
,hd]确定为对应于用户手部的姿势(例如,由手持式控制器102跟踪)。第一和第二光线从相应的第一和第二原点投射。与第一和/或第二光线相交的遮挡虚拟对象22b被标识为相交对象集。调整遮挡虚拟对象22b的不透明度,以将遮挡虚拟对象22b呈现为半透明的(由图6中的虚线指示)。可以注意的是,不与第一和/或第二光线相交的其他虚拟对象不呈现为半透明的。
[0126]
确定第一光线与第二光线之间的实际交点或投影交点,其被确定为第一光线与第二光线的交点p。目标对象22a被标识为临时选定的对象,因为目标对象22a与第一和第二光线的确定交点重合。可以呈现目标对象22a(例如,使用不同的颜色,在图6中由不同的阴影指示),以指示目标对象22a被临时选定。然后,在接收到选择的确认之后,目标对象22a被标识为选定对象(例如,目标对象22a在计时器到期后保持临时选定)。
[0127]
图6示出了使用hmd设备作为计算系统100和手持式控制器102的本文公开的方法和系统的示例性实现。这样的示例可以相对简单地实现,因为头部跟踪通常由现有的hmd设备进行,并且手部跟踪(使用或不使用手持式控制器102)通常也由现有的xr系统进行。然而,如前所述,本发明不限于这些实现方式。可以跟踪任两个非重合位置以确定第一和第二原点。例如,可以单独跟踪用户的左手和右手,以用于确定第一和第二原点。在另一个示例中,可以跟踪两个单独用户的例如头部或手部等两个身体部位,以用于确定第一和第二原点。在另一个示例中,可以单独跟踪一个可穿戴设备或一个手持式设备上彼此分离的两个位置,以用于确定第一和第二原点(3dof)。例如操纵杆、滚轮、触摸板等可穿戴设备或手持式设备上的模态可用于独立地改变跟踪原点的光线投射方向中的一个或两个,以便两条光线可以相交。其他这样的变化也是可能的。其他这样的变化也是可能的。
[0128]
图7a-7c示出了方法400在物理环境40中的示例性实现。
[0129]
在图7a中,方法400由作为计算系统100的手持式设备(例如智能手机或台)执行,其中计算系统100与可穿戴i/o设备106(例如智能手表或智能环)介接。在这个简化的示例
中,物理环境包括对象42,包括目标对象42a。
[0130]
在此示例中,第一原点[v
p
,vd]确定为对应于用户右手的姿势(例如,由手持式计算系统100跟踪),第二原点[h
p
,hd]确定为对应于用户左手的姿势(例如,由可穿戴i/o设备106跟踪)。在其他示例中,可穿戴i/o设备106可以佩戴在任何其他身体部位(例如,在头部、面部、胸部、臀部、脚部等)上,并且第二原点可以对应于所述其他身体部位的姿势。第一和第二光线从相应的第一和第二原点投射。计算系统100可以将虚拟的第一和第二光线的可视化呈现为物理环境40的视图上的覆盖(例如,通过计算系统100的显示器(未示出)输出)。
[0131]
确定第一光线与第二光线之间的实际交点或投影交点,其被确定为第一光线与第二光线的交点p。目标对象42a被标识为临时选定的对象,因为目标对象42a与第一和第二光线的确定交点p重合。临时选定的目标对象42a的标识可以由计算系统100输出(例如,目标对象42a的标识(例如,设备名)可以由计算系统100显示或说出)。然后,在接收到选择的确认之后,目标对象42a被标识为选定对象(例如,目标对象42a在计时器到期后保持临时选定)。
[0132]
在图7b中,方法400由作为计算系统100的非可穿戴、非手持式设备(例如,桌面设备、智能电器或工作站)执行,其中计算系统100与外部跟踪系统44通信,以使得能够在物理环境40中跟踪用户10。外部跟踪系统44可以例如包括光学相机、红外相机、雷达单元、激光雷达单元等,以使得能够检测和跟踪用户10的身体部位(例如,使用计算机视觉、跟踪标记或其组合)。虽然图7b示出了计算系统100与外部跟踪系统44分离,但在其他示例中,计算系统100可以与跟踪系统44集成。
[0133]
类似于图7a的示例,物理环境包括对象42,包括目标对象42a。计算系统100能够检测和跟踪fov 46内的对象42和用户10。在此示例中,第一原点[v
p
,vd]确定为对应于用户头部的姿势(例如,由跟踪系统44跟踪),第二原点[h
p
,hd]确定为对应于用户手部的姿势(由跟踪系统44跟踪)。在其他示例中,跟踪系统44可以跟踪用户10的任何其他两个不同的身体部位,以确定第一和第二原点。跟踪系统44可以将第一和第二姿势数据,或第一和第二原点传送到计算系统100。计算系统100可以将虚拟的第一和第二光线的可视化呈现为物理环境40的视图上的覆盖(例如,通过计算系统100的显示器(未示出)输出)。
[0134]
确定第一光线与第二光线之间的实际交点或投影交点,其被确定为第一光线与第二光线的交点p。目标对象42a被标识为临时选定的对象,因为目标对象42a与第一和第二光线的确定交点p重合。临时选定的目标对象42a的标识可以由计算系统100输出(例如,目标对象42a的标识(例如,设备名)可以由计算系统100显示或说出)。然后,在接收到选择的确认之后,目标对象42a被标识为选定对象(例如,目标对象42a在计时器到期后保持临时选定)。
[0135]
在图7c中,方法400由作为计算系统100的非可穿戴、非手持式设备(例如,桌面设备、智能电器或工作站)执行,其中计算系统100包括传感器(例如,光学相机、红外相机、雷达单元,激光雷达单元)以使得能够在物理环境40中跟踪用户10。
[0136]
图7c的示例类似于图7b的示例。然而,在图7c的示例中,计算系统100自身是目标对象42a。例如,计算系统100可以是智能电器(例如,智能电视、智能冰箱、智能扬声器等)。在计算系统100已经将自身标识为由用户10选择的目标对象42a之后,计算系统100可以进行进一步的操作(例如,显示选择菜单),以使用户10能够与计算系统100交互。
[0137]
在一些示例中,远端选择子系统300可以由作为桌面设备的计算系统100执行。桌面计算系统100可以与提供显示器104的显示设备(例如,可穿戴设备,例如,hmd设备)通信(例如,通过有线连接或无线连接)。计算系统100还可以与手持式控制器102、i/o设备106或外部跟踪系统44通信。计算系统100可以从hmd设备、i/o设备106、手持式控制器102和/或外部跟踪系统44接收传感器数据,其可用于确定第一和第二原点。计算系统100可以向显示设备提供命令,以呈现xr环境20(例如,改变任何遮挡虚拟对象的不透明度)或提供物理环境40的视图,如先前所论述。
[0138]
在一些示例中,xr环境20可以非沉浸式的方式呈现。例如,计算系统100可以是将xr环境20呈现为桌面显示器104(例如,计算机监视器)上的3d呈现场景的桌面设备。第一和第二原点可以根据跟踪用户的头部(例如,使用在计算系统100上执行的眼动跟踪或头部跟踪软件)和跟踪来自手控输入设备(例如,鼠标)的输入来确定。
[0139]
在本发明的范围内,用于跟踪用户的头部和/或手部和/或用于呈现xr环境20的其他系统可以是可能的。
[0140]
在各种示例中,本发明描述了用于使用两条投射光线选择3d环境(包括3d xr环境或3d物理环境)中的对象或位置的系统和方法。通过使用在3d中投射的两条光线的交点(动作交点或投影交点),xr环境或物理环境中的对象或位置可以被标识为选定的对象或位置。与一些现有的方法和系统相比,所公开的方法和系统可以实现更快且更直观的对象或位置选择。
[0141]
可以调整xr环境中任何遮挡虚拟对象的不透明度(例如,呈现为半透明的),以使得能够更容易使要选择的目标对象或位置可视化。这还使得能够更容易地选择目标对象或位置,因为用户不需要改变姿势来避免遮挡虚拟对象。
[0142]
本发明描述了用于计算实际3d交点和用于计算投影3d交点的一些示例算法和方程。应理解,各种不同的算法可以用于这些计算。
[0143]
本文描述的示例可适用于增强现实(augmented reality,ar)、虚拟现实(virtual reality,vr)和/或视频游戏应用程序等。本文描述的示例也可适用于与智能设备、iot设备和/或智能电器等交互。
[0144]
尽管本发明以特定的顺序描述了方法和过程,但可以视情况省略或更改方法和过程的一个或多个步骤。一个或多个步骤可以按顺序执行,但不是按描述的顺序执行(视情况而定)。
[0145]
尽管描述了本发明,但至少部分地,就方法来说,本领域普通技术人员将理解,本发明还涉及各种组件,用于通过硬件组件、软件或两者的任意组合进行所描述的方法的至少一些方面和特征。相应地,本发明的技术方案可通过软件产品的形式体现。合适的软件产品可以存储在预先记录的存储设备或其他类似的非易失性或非瞬时性计算机可读介质中,包括例如dvd、cd-rom、usb闪存盘、可移动硬盘或其他存储介质。软件产品包括其上有形存储的指令,这些指令使处理设备(例如个人计算机、服务器或网络设备)能够执行本文所公开的方法的示例。
[0146]
本发明可以其他特定形式体现,而不会脱离权利要求书的主题。所描述的示例实施例在各方面都仅仅是示意性的,而不是限制性的。可以将上述一个或多个实施例中的选定特征组合以创建未明确描述的替代性实施例,理解适合此类组合的特征在本发明的范围
内。
[0147]
还公开了公开范围内的所有值和子范围。此外,虽然本文所公开和示出的系统、设备和过程可包括特定数量的元素/组分,但可以修改所述系统、设备和组合件,以包括此类元素/组分中的更多或更少的元素/组分。例如,尽管所公开的任何元素/组分可引用为单数,但可以修改本文所公开的实施例以包括多个此类元素/组分。本文所描述的主题旨在覆盖和涵盖所有适当的技术变更。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表