具有滑动菜单的人工现实系统
文献发布时间:2023-06-19 13:26:15
相关申请的交叉引用
本申请要求2019年6月7日提交的美国申请第16/434,919号的优先权,该申请的内容为了所有目的通过引用以其整体并入本文。
技术领域
本公开总体上涉及人工现实系统,例如虚拟现实、混合现实和/或增强现实系统,更具体地,涉及人工现实系统的用户界面。
背景
人工现实系统正变得越来越普遍,应用于许多领域,诸如计算机游戏、健康和安全、工业和教育。作为几个示例,人工现实系统正在被合并到移动设备、游戏机、个人计算机、电影院和主题公园中。通常,人工现实是在呈现给用户之前已经以某种方式调整的现实的形式,其可包括例如虚拟现实(VR)、增强现实(AR)、混合现实(MR)、混杂现实(hybridreality)、或其某种组合和/或衍生物。
典型人工现实系统包括用于渲染和向用户显示内容的一个或更多个设备。作为一个示例,人工现实系统可以结合由用户佩戴的头戴式显示器(HMD),并被配置为向用户输出人工现实内容。人工现实内容可包括完全生成内容或与捕获内容(例如,真实世界视频和/或图像)组合的生成内容。在操作期间,用户通常与人工现实系统交互,以选择内容、启动应用或以其他方式配置系统。
概述
总的来说,本公开描述了人工现实系统,更具体地,描述了用于在人工现实环境中呈现和控制用户界面元素的图形用户界面元素和技术。
例如,描述了人工现实系统,其响应于检测到用户的一个或更多个预定义手势(gesture),例如用户的手、手指、拇指或手臂的特定运动、构形(configuration)、位置和/或取向,或者预定义手势的组合,生成并渲染图形用户界面元素以显示给用户。在一些示例中,人工现实系统还可以响应于结合其他条件的特定手势的检测来触发图形用户界面元素的生成和渲染,其他条件例如是物理环境中特定手势相对于用户的当前视场的位置和取向,这可以通过用户的实时凝视跟踪来确定,或者相对于用户佩戴的HMD的姿势(pose)来确定。
在一些示例中,人工现实系统可以生成并呈现图形用户界面元素作为相对于当前正在人工现实系统的显示器内渲染的人工现实内容的叠加元素(overlay element)。图形用户界面元素可以是例如图形用户界面,例如用户与之交互以操作人工现实系统的菜单或子菜单,或者可由用户选择和操作的单个图形用户界面元素,例如切换元素(toggleelement)、下拉元素、菜单选择元素、二维或三维形状、图形输入键或键盘、内容显示窗口等。
一些HMD的技术问题是缺少可用于与人工现实系统的各方面交互的输入设备,例如,在菜单内定位选择用户界面元素。在一些系统中,人工现实系统可以使用用户的双手来提供用户与菜单或图标的交互。然而,这种类型的交互的技术问题是一只手可能会遮挡另一只手,使得人工现实系统难以准确确定用户的意图。此外,一些用户可能有残疾,这可能会妨碍他们使用双手与人工现实系统交互。作为前述技术问题的技术解决方案,一些方面包括可以用一只手激活和交互的菜单。响应于检测到使用一只手执行的菜单激活手势,人工现实系统可以使得菜单被渲染。手的菜单滑动手势(menu sliding gesture)(例如,水平运动)可用于使可滑动地接合的用户界面(slidably engageable user interface)(UI)元素沿着菜单的水平维度移动,同时保持菜单的水平定位不变。在一些方面,基本上垂直于菜单滑动手势的手的运动(例如,非水平运动)可以导致菜单被重新定位。人工现实系统的实现不需要使用双手或使用其他输入设备来与人工现实系统交互,因此相对于传统人工现实实现的这种技术改进可以提供一个或更多个实际应用,例如提供易用性、为残疾人提供与使用一只手与系统交互相关的能力,以及准确确定用户与菜单或其他用户界面元素交互的能力。
在一个或更多个示例方面,一种人工现实系统包括被配置为捕获图像数据的图像捕获设备;头戴式设备(HMD),该头戴式设备被配置为输出人工现实内容;手势检测器,该手势检测器被配置为从图像数据中识别菜单激活手势,该菜单激活手势包括手处于基本朝上的取向的手的构形以及手的拇指和手指的捏构形;UI引擎,该UI引擎被配置为响应于菜单激活手势,生成菜单界面和在相对于菜单界面的第一位置的可滑动地接合的UI元素;以及渲染引擎,该渲染引擎被配置为渲染人工现实内容、菜单界面和可滑动地接合的UI元素,以在HMD处显示。
在一个或更多个进一步的示例方面,一种方法包括通过包括头戴式设备(HMD)的人工现实系统经由图像捕获设备获得图像数据;由人工现实系统从图像数据识别菜单激活手势,该菜单激活手势包括手处于基本朝上的取向的手的构形以及手的拇指和手指的捏构形;由人工现实系统响应于菜单激活手势,生成菜单界面和在相对于菜单界面的第一位置的可滑动地接合的UI元素;以及由人工现实系统渲染人工现实内容、菜单界面和可滑动地接合的UI元素,以在HMD处显示。
在一个或更多个附加的示例方面,一种非暂时性计算机可读介质包括指令,当被执行时,所述指令使得人工现实系统的一个或更多个处理器:经由图像捕获设备捕获图像数据;从图像数据识别包括手的构形的菜单激活手势;响应于菜单激活手势,生成菜单界面和在相对于菜单界面的第一位置的可滑动地接合的UI元素;识别在菜单激活手势之后包括手的构形结合手的运动的菜单滑动手势;响应于菜单滑动手势,将可滑动地接合的UI元素平移到相对于菜单界面的第二位置;并且渲染人工现实内容、菜单界面和可滑动地接合的UI元素,用于在头戴式设备(HMD)处显示。
在一个示例中,提供了一种人工现实系统,包括:被配置为捕获图像数据的图像捕获设备;头戴式显示器(HMD),该头戴式显示器被配置为输出人工现实内容;手势检测器,该手势检测器被配置为从图像数据中识别菜单激活手势,该菜单激活手势包括手处于基本朝上的取向的手的构形以及手的拇指和手指的捏构形;用户界面(UI)引擎,该用户界面引擎被配置为响应于菜单激活手势,生成菜单界面和在相对于菜单界面的第一位置的可滑动地接合的UI元素;以及渲染引擎,该渲染引擎被配置为渲染人工现实内容、菜单界面和可滑动地接合的UI元素,以在HMD处显示。
在一些实施例中,菜单界面优选地包括沿着菜单界面的维度排列的一个或更多个菜单项,并且其中UI引擎被配置为根据可滑动地接合的UI元素相对于菜单界面的位置来突出显示菜单项之一。
在一些实施例中,一个或更多个菜单项优选地对应于在人工现实系统上执行的相应应用。
在一些实施例中,手势检测器优选地进一步被配置为从图像数据中识别菜单滑动手势,该菜单滑动手势包括手的构形结合手的运动,并且其中UI引擎进一步被配置为响应于菜单滑动手势,将可滑动地接合的UI元素平移到相对于菜单界面的第二位置。
在一些实施例中,菜单界面优选地包括沿着菜单界面的维度排列的一个或更多个菜单项,其中为了将可滑动地接合的UI元素平移到相对于菜单界面的第二位置,UI引擎被配置为沿着菜单界面的维度将可滑动地接合的UI元素滑动到相对于菜单界面的第二位置。
在一些实施例中,菜单滑动手势优选地包括手在基本上第一方向上的运动,其中手势检测器被配置成从图像数据中识别在菜单激活手势之后手在基本上第二方向上的运动,该基本上第二方向基本上垂直于基本上第一方向,其中UI引擎还被配置成响应于手在基本上第二方向上的运动,平移可滑动地接合的UI元素和菜单界面,同时保持可滑动地接合的UI元素相对于菜单界面的位置。
在一些实施例中,人工现实系统优选地还包括:用于执行一个或更多个人工现实应用的应用引擎,其中手势检测器被配置成从图像数据中识别菜单滑动手势之后的选择手势,并且其中应用引擎被配置成响应于选择手势来执行动作。
在一些实施例中,选择手势优选地包括以下之一:(1)手的不同手指的移动,(2)手在基本上垂直于菜单界面的方向上的平移,或者(3)将手的拇指和手指重新构形为不再处于捏构形。
在一些实施例中,手势检测器优选地进一步被配置为从图像数据中识别菜单激活手势之前的菜单提示手势,并且其中UI引擎进一步被配置为响应于菜单提示手势生成菜单提示元素。
在一些实施例中,菜单提示手势优选地包括手被构形为在基本朝上的位置且拇指和手指之间有空间,并且其中UI引擎在虚拟手的拇指和手指之间的空间中生成菜单提示元素。
在一些实施例中,菜单提示元素优选地包括虚拟手的拇指和手指之间的线。
在一些实施例中,图像捕获设备优选地与HMD集成在一起。
在一些示例中,提供了一种方法,包括:通过包括头戴式显示器(HMD)的人工现实系统,经由图像捕获设备获得图像数据;由人工现实系统从图像数据识别菜单激活手势,该菜单激活手势包括手处于基本朝上的取向的手的构形以及手的拇指和手指的捏构形;由人工现实系统响应于菜单激活手势,生成菜单界面和在相对于菜单界面的第一位置的可滑动地接合的UI元素;以及由人工现实系统渲染人工现实内容、菜单界面和可滑动地接合的UI元素,以在HMD处显示。
在一些实施例中,菜单界面优选地包括沿着菜单界面的维度排列的一个或更多个菜单项,该方法还包括:由人工现实系统根据可滑动地接合的UI元素相对于菜单界面的位置来突出显示菜单项之一。
在一些实施例中,该方法优选地进一步包括:由人工现实系统从图像数据中识别菜单滑动手势,该菜单滑动手势包括手的构形结合手的运动;以及由人工现实系统响应于菜单滑动手势,将可滑动地接合的UI元素平移到相对于菜单界面的第二位置。
在一些实施例中,将可滑动地接合的UI元素平移到相对于菜单界面的第二位置优选地包括沿着菜单界面的维度将可滑动地接合的UI元素滑动到相对于菜单界面的第二位置。
在一些实施例中,菜单滑动手势优选地包括手在基本上第一方向上的运动,该方法还包括:由人工现实系统从图像数据中识别在菜单激活手势之后手在基本上第二方向上的运动,该基本上第二方向基本上垂直于基本上第一方向;以及响应于手在基本上第二方向上的运动,由人工现实系统平移可滑动地接合的UI元素和菜单界面,同时保持可滑动地接合的UI元素相对于菜单界面的位置。
在一些实施例中,该方法优选地进一步包括:由人工现实系统从图像数据中识别菜单提示手势;以及由人工现实系统响应于菜单提示手势生成菜单提示元素。
在一些示例中,提供了一种包括指令的非暂时性计算机可读介质,当执行这些指令时,使得人工现实系统的一个或更多个处理器:经由图像捕获设备捕获图像数据;从图像数据识别包括手的构形的菜单激活手势;响应于菜单激活手势,生成菜单界面和在相对于菜单界面的第一位置的可滑动地接合的UI元素;识别在菜单激活手势之后包括手的构形结合手的运动的菜单滑动手势;响应于菜单滑动手势,将可滑动地接合的UI元素平移到相对于菜单界面的第二位置;并且渲染人工现实内容、菜单界面和可滑动地接合的UI元素,用于在头戴式显示器(HMD)处显示。
根据权利要求19所述的非暂时性计算机可读介质,其中,这些指令还使得一个或更多个处理器:从图像数据中识别菜单提示手势,该菜单提示手势包括手被构形为在基本朝上的位置且拇指和手指之间有空间;以及响应于菜单提示手势,在虚拟手的拇指和手指之间的空间中生成菜单提示元素。
应当理解,被描述为适合结合到本公开的一个或更多个示例或实施例中的本公开的特征旨在可推广到本公开的任何和所有示例和实施例。本公开的技术的一个或更多个示例的细节在附图和下面的描述中阐述。本发明的其他特征、目的和优点将从说明书和附图以及权利要求中显而易见。
附图简述
图1A是描绘根据本公开的技术在人工现实环境中呈现和控制用户界面元素的示例人工现实系统的图示。
图1B是描绘根据本公开的技术的另一示例人工现实系统的图示。
图2是描绘根据本公开的技术操作的示例HMD的图示。
图3是示出图1A和图1B的人工现实系统的控制台和HMD的示例实现的框图。
图4是描绘根据本公开的技术由图1A和图1B的人工现实系统的HMD执行手势检测和用户界面生成的示例的框图。
图5是示出根据本公开各方面的用于激活菜单提示或UI菜单的示例方法的操作的流程图。
图6是示出根据本公开各方面的用于定位UI菜单并与UI菜单交互的示例方法的操作的流程图。
图7A-图7G是示例HMD显示,其示出了根据本公开各方面的UI菜单的定位以及与UI菜单的交互。
图8是示例HMD显示,其示出了根据本公开各方面的菜单提示。
在整个附图和说明书中,相同的参考字符表示相同的元件。
详细描述
图1A是描绘根据本公开的技术在人工现实环境中呈现和控制用户界面元素的示例人工现实系统10的图示。在一些示例实现中,人工现实系统10响应于用户110执行的一个或更多个检测到的手势,生成图形用户界面元素并将其渲染给用户110。也就是说,如本文所述,人工现实系统10响应于检测到用户110执行的一个或更多个特定手势,例如用户的手、手指、拇指或手臂的特定运动、构形、位置和/或取向,呈现一个或更多个图形用户界面元素124、126。在其他示例中,人工现实系统10呈现并控制专门为人工现实环境中的用户交互和操纵而设计的用户界面元素,例如专用切换元素、下拉元素、菜单选择元素、图形输入键或键盘、内容显示窗口等。
在图1A的示例中,人工现实系统10包括头戴式设备(HMD)112、控制台106以及在一些示例中的一个或更多个外部传感器90。如所示的,HMD 112通常由用户110佩戴,并且包括用于向用户110呈现人工现实内容122的电子显示器和光学组件。此外,HMD 112包括用于跟踪HMD 112的运动的一个或更多个传感器(例如,加速度计),并且可包括用于捕获周围物理环境的图像数据的一个或更多个图像捕获设备138(例如,相机、行扫描仪(line scanner)等)。在该示例中,控制台106被示为单个计算设备,诸如游戏机、工作站、台式计算机或膝上型计算机。在其他示例中,控制台106可分布在多个计算设备上,诸如分布式计算网络、数据中心或云计算系统。如该示例所示,控制台106、HMD 112和传感器90可经由网络104通信耦接,该网络可以是有线或无线网络,诸如WiFi、网状网络或短程无线通信介质。尽管在该示例中,HMD 112被示出为与控制台106通信,例如系留(tethered to)到控制台或与控制台进行无线通信,但在一些实现中,HMD 112作为独立的移动人工现实系统进行操作。
通常,人工现实系统10使用从真实世界3D物理环境捕获的信息来渲染人工现实内容122以显示给用户110。在图1A的示例中,用户110观看由在控制台106和/或HMD 112上执行的人工现实应用构建和渲染的人工现实内容122。作为一个示例,人工现实内容122可以是消费者游戏应用,其中用户110被渲染为具有一个或更多个虚拟对象128A、128B的化身120。在一些示例中,人工现实内容122可以包括现实世界图像和虚拟对象的混合,例如混合现实和/或增强现实。在其他示例中,人工现实内容122可以是例如视频会议应用、导航应用、教育应用、培训或模拟应用、或实现人工现实的其他类型的应用。
在操作期间,人工现实应用通过跟踪和计算参考系(通常是HMD 112的观看视角)的姿势信息来构建用于向用户110显示的人工现实内容122。使用HMD 112作为参考系,并且基于由HMD 112的当前估计姿势确定的当前视场130,人工现实应用渲染3D人工现实内容,在一些示例中,该3D人工现实内容可以至少部分地覆盖在用户110的真实世界3D物理环境上。在该过程中,人工现实应用使用从HMD 112接收的感测数据,例如运动信息和用户命令,并且在一些示例中,使用来自任何外部传感器90(例如外部相机)的数据来捕获真实世界、物理环境中的3D信息,例如用户110的运动和/或关于用户110的特征跟踪信息。基于所感测的数据,人工现实应用确定HMD 112的参考系的当前姿势,并且根据当前姿势,渲染人工现实内容122。
此外,根据本公开的技术,基于所感测的数据,人工现实应用检测由用户110执行的手势,并且响应于检测到一个或更多个特定手势,生成一个或更多个用户界面元素,例如UI菜单124和UI元素126,其可以覆盖在呈现给用户的底层人工现实内容122上。在这方面,用户界面元素124、126可以被视为在人工现实环境中呈现给用户的人工现实内容122的一部分。以这种方式,人工现实系统10响应于检测到用户110的一个或更多个特定手势,例如用户的手、手指、拇指或手臂的特定运动、构形、位置和/或取向,动态地呈现一个或更多个图形用户界面元素124、126。用户的手的示例构形可以包括拳头、伸出的一个或更多个手指、手的一个或更多个单独手指的相对和/或绝对位置和取向、手掌的形状等。例如,用户界面元素可以是图形用户界面,例如用户110与之交互以操作人工现实系统的菜单或子菜单,或者用户110可选择和操纵的单个用户界面元素,例如图标元素、切换元素、下拉元素、菜单选择元素、二维或三维形状、图形输入键或键盘、内容显示窗口等。虽然被描绘为二维元素,但是例如,UI元素126可以是二维或三维形状,其可由执行手势以在人工现实环境中平移、缩放和/或旋转该形状的用户来操纵。
此外,如本文所述,在一些示例中,人工现实系统10可以响应于其他条件,例如系统正在执行的一个或更多个应用的当前状态,或者物理环境中特定检测到的手势相对于用户110的当前视场130的位置和取向(这可以通过用户的实时凝视跟踪或其他条件来确定),来触发图形用户界面元素124、126的生成和渲染。
更具体地说,如本文进一步所述的,HMD 112的图像捕获设备138捕获表示在图像捕获设备138的视场130内的真实世界物理环境中的对象的图像数据。视场130通常对应于HMD 112的观看视角。在一些示例中,例如图1A所示的示例,人工现实应用将用户110的手132在视场130内的部分渲染为人工现实内容122内的虚拟手136。在其他示例中,人工现实应用可以在包括混合现实和/或增强现实的人工现实内容122中呈现用户110的手132和/或手臂134的真实世界图像。在任一示例中,用户110能够将他们的手132和/或手臂134在视场130内的部分视为人工现实内容122内的对象。在其他示例中,人工现实应用可以不渲染用户的手132或手臂134的表示。
在任何情况下,在操作期间,人工现实系统10在由HMD 112的图像捕获设备138捕获的图像数据内执行对象识别,以识别手132,包括可选地识别用户110的单个手指或拇指,和/或手臂134的全部或部分。此外,人工现实系统10在滑动时间窗口上跟踪手132(可选地包括手的特定手指)和/或手臂134的部分的位置、取向和构形。人工现实应用分析手132和/或手臂134的部分的任何跟踪的运动、构形、位置和/或取向,以识别由特定对象(例如,手132(包括手的特定手指)和/或用户110的手臂134的部分)执行的一个或更多个手势。为了检测手势,人工现实应用可以将手132和/或手臂134的部分的运动、构形、位置和/或取向与存储在人工现实系统10的手势库中的手势定义进行比较,其中手势库中的每个手势可以被映射到一个或更多个动作。在一些示例中,检测移动可以包括跟踪手132的一个或更多个手指(单个手指和拇指)的位置,包括在物理环境中手指(例如食指和拇指)的任何定义的组合是否被放在一起触摸或近似触摸。在其他示例中,检测移动可以包括跟踪手132的取向(例如,手指指向HMD 112或远离HMD 112)和/或手臂134相对于HMD 112的当前姿势的取向(即,手臂的法线面向HMD 112)。手132(或其一部分)的位置和取向可替代地被称为手132(或其一部分)的姿势。
此外,人工现实应用可以分析手132和/或手臂134的构形、位置和/或取向,以识别包括手132和/或手臂134被保持在一个或更多个特定构形、位置和/或取向至少阈值时间段的手势。作为示例,手132和/或手臂134在视场130内保持基本静止至少一段可配置时间的一个或更多个特定位置可以被人工现实系统10用作用户110正试图执行旨在触发人工现实应用的期望响应的手势的指示,诸如触发特定类型的用户界面元素124、126(诸如菜单)的显示。作为另一个示例,手132的手指和/或手掌和/或手臂134的一个或更多个特定构形被保持在视场130内至少一段可配置的时间,可以被人工现实系统10用作用户110正试图执行手势的指示。尽管在图1A中仅示出了用户110的右手132和右手臂134,但是在其他示例中,人工现实系统10可以识别用户110的左手和/或左手臂或者识别用户110的右手和/或右手臂以及用户110的左手和/或左手臂。以这种方式,人工现实系统10可以检测物理环境中由手执行的单手手势、双手手势或基于手臂的手势,并响应于检测到的手势生成相关联的用户界面元素。
根据本公开的技术,人工现实应用确定所识别的手势是否对应于由控制台106和/或HMD 112的手势库中的多个条目之一定义的手势。如下文更详细描述的,手势库中的每个条目可以将不同的手势定义为用户的手、手指(digit)(手指(finger)或拇指)和/或手臂随时间的特定运动、构形、位置和/或取向,或者这些属性的组合。此外,每个定义y的手势可以与以要由人工现实应用执行的一个或更多个动作的形式的期望的响应相关联。作为一个示例,手势库中的一个或更多个定义的手势可以触发一个或更多个用户界面元素(例如UI菜单124)的生成、转换和/或配置,以被渲染并覆盖在人工现实内容122上,其中手势可以定义UI菜单124在人工现实内容122中的位置和/或取向。作为另一示例,一个或更多个定义的手势可以指示用户110与特定用户界面元素的交互,例如选择UI菜单124的UI元素126,以触发对所呈现的用户界面的改变、所呈现的用户界面的子菜单的呈现等。
在一些方面,人工现实应用可以分析手132和/或手臂134的构形、位置和/或取向,以识别菜单激活手势,该手势包括手132以特定构形和取向被保持至少阈值时间段。在一些方面,菜单激活手势可以是例如手被保持在基本向上的位置,同时手的手指和拇指处于捏构形。在一些方面,菜单激活手势可以包括手的手指和拇指定位在捏构形中,而与手的取向无关。菜单滑动手势可以使得根据用户的手移动的虚拟手沿着UI菜单124的维度滑动,同时菜单在滑动方向上保持静止。菜单滑动手势之外的方向上的运动可以导致基于该运动重新定位UI菜单124。作为示例,菜单滑动手势可以是用户的手132在水平方向上的运动,同时保持菜单激活手势。虚拟手136可以沿着水平维度移动,同时菜单在水平方向保持静止。在一些示例中,除了虚拟手136之外,或者作为虚拟手136的替代,人工现实应用生成可滑动地接合的UI元素(图1中未示出)。垂直方向上的移动可以导致UI菜单124被重新定位。
在保持菜单激活手势的同时,菜单滑动手势可以使得人工现实应用渲染这样的指示,即如果用户要执行选择手势而不进一步执行菜单滑动手势来将虚拟手132滑动到例如接近UI菜单124的不同菜单项的不同位置,则UI菜单124的特定菜单项将被选择。该特定菜单已准备好供用户选择。该指示可以是虚拟手132的定位或可滑动地接合的UI元素靠近菜单项;例如,用不同的颜色突出显示菜单项;菜单项的放大;或者某种其他指示。
因此,本公开的技术为通过人工现实系统渲染和显示内容的计算机相关领域提供了具体的技术改进。例如,本文描述的人工现实系统可以通过基于对由用户执行的直观但有区别的手势的检测来生成和渲染覆盖在人工现实内容上的用户界面元素,来向人工现实应用的用户(例如用户110)提供高质量的人工现实体验。更具体地,该技术可以以手势的形式向用户提供直观的用户输入,通过该用户输入,用户可以激活菜单界面,并且随后沿着菜单的维度平移可滑动地接合的UI元素或准备供用户选择的菜单项的其他指示。
此外,本文所述的系统可以被配置为基于被定义为避免跟踪遮挡的手和手臂移动来检测某些手势。当用户的一只手至少部分地与另一只手重叠时,可能会发生跟踪遮挡,使得难以准确地跟踪每只手的各个手指(手指和拇指),以及每只手的位置和取向。因此,本文描述的系统可以被配置成主要检测基于单手或单手臂的手势。基于单手或单臂的手势的使用可以进一步为具有大动作和精细运动技能限制的用户提供增强的可访问性。此外,本文描述的系统可以被配置成检测基于双手或基于双臂的手势,其中用户的手不相互交互或重叠。
此外,本文描述的系统可以被配置成检测向用户提供自触觉反馈的手势。例如,用户每只手上的拇指和一个或更多个手指可以在物理世界中触摸或近似触摸,作为指示与人工现实内容中的特定用户界面元素的交互的预定义手势的一部分。用户的手的拇指和一个或更多个手指之间的触摸可以为用户提供当直接与物理用户输入对象(例如物理键盘或其他物理输入设备上的按钮)交互时用户感受到的感觉的模拟。
图1B是描绘根据本公开的技术的另一示例人工现实系统20的图示。类似于图1A的人工现实系统10,在一些示例中,图1B的人工现实系统20可以呈现和控制专门为人工现实环境中的用户交互和操纵而设计的用户界面元素。在各种示例中,人工现实系统20还可以响应于检测到用户的一个或更多个特定手势,生成某些图形用户界面元素并将其渲染给用户。
在图1B的示例中,人工现实系统20包括外部相机102A和102B(统称为“外部相机102”)、HMD 112A-112C(统称为“HMD 112”)、控制器114A和114B(统称为“控制器114”)、控制台106和传感器90。如图1B所示,人工现实系统20表示多用户环境,其中在控制台106和/或HMD 112上执行的人工现实应用基于相应用户的相应参考系的当前观看视角向用户110A-110C(统称为“用户110”)中的每一个呈现人工现实内容。也就是说,在该示例中,人工现实应用通过跟踪和计算每个HMD 112的参考系的姿势信息来构建人工内容。人工现实系统20使用从相机102、HMD 112和控制器114接收的数据来捕获真实世界环境中的3D信息,例如用户110的运动和/或关于用户110和对象108的跟踪信息,用于计算HMD 112的相应参考系的更新姿势信息。作为一个示例,人工现实应用可以基于为HMD 112C确定的当前观看视角,将具有虚拟对象128A-128C(统称为“虚拟对象128”)的人工现实内容122渲染为在空间上覆盖在现实世界对象108A-108C(统称为“现实世界对象108”)上。此外,从HMD 112C的角度来看,人工现实系统20分别基于用户110A、110B的估计位置来渲染化身120A、120B。
HMD 112中的每一个都在人工现实系统20中同时操作。在图1B的示例中,每个用户110可以是人工现实应用中的“玩家(player)”或“参与者(participant)”,并且任何用户110可以是人工现实应用中的“旁观者(spectator)”或“观察者(observer)”。通过跟踪用户110C的手132和/或手臂134,并且将视场130内的手132的部分渲染为人工现实内容122内的虚拟手136,HMD 112C可以基本上类似于图1A的HMD 112进行操作。HMD 112B可以从用户110B持有的控制器114A接收用户输入。HMD 112A也可以基本上类似于图1A的HMD 112进行操作,并且接收用户110A的手132A、132B的手势形式的用户输入。HMD 112B可以从用户110B持有的控制器114接收用户输入。控制器114可以使用诸如蓝牙的短程无线通信的近场通信、使用有线通信链路或使用其它类型的通信链路来与HMD 112B通信。
以类似于以上关于图1A讨论的示例的方式,人工现实系统20的控制台106和/或HMD 112C生成并渲染用户界面元素124、126,该用户界面元素可以覆盖在显示给用户110C的人工现实内容122上。此外,控制台106和/或HMD 112C可以基于经由姿势跟踪对由用户110C执行的直观但有区别的手势的检测来触发用户界面元素124、126的生成和动态显示。例如,人工现实系统20可以响应于检测到用户110C的一个或更多个特定手势,例如用户的手、手指、拇指或手臂的特定运动、构形、位置和/或取向,动态呈现一个或更多个图形用户界面元素124、126。如图1B所示,除了经由HMD 112C的相机138捕获的图像数据之外或作为替代,来自外部相机102的输入数据可用于跟踪和检测用户110的手和手臂(例如用户110C的手132)的特定运动、构形、位置和/或取向,包括手的手指(手指、拇指)的单独和/或组合的移动。
在一些方面,人工现实应用可以在控制台106上运行,并且可以利用图像捕获设备102A和102B来分析手132B的构形、位置和/或取向,以识别可以由HMD 112A的用户执行的菜单提示手势、菜单激活手势、菜单滑动手势、选择手势或菜单定位动作等。类似地,HMD 112C可以利用图像捕获设备138来分析手132C的构形、位置和/或取向,以识别可以由HMD 112C的用户执行的菜单提示手势、菜单激活手势、菜单滑动手势、选择手势或菜单定位动作等。人工现实应用可以响应于这样的手势,以类似于上面参考图1A描述的方式来渲染UI菜单124和虚拟手136。
图2是描绘被配置为根据本公开的技术操作的示例HMD 112的图示。图2的HMD 112可以是图1A和图1B的任何HMD 112的示例。HMD 112可以是人工现实系统(诸如图1A的人工现实系统10、图1B的人工现实系统20)的一部分,或者可作为被配置为实现本文所述技术的独立的、移动的人工现实系统操作。
在该示例中,HMD 112包括前刚性主体和用于将HMD 112固定到用户的带。此外,HMD 112包括面向内部的电子显示器203,该电子显示器被配置为向用户呈现人工现实内容。电子显示器203可以是任何合适的显示技术,诸如液晶显示器(LCD)、量子点显示器、点阵显示器、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、阴极射线管(CRT)显示器、电子墨水、或单色、彩色或能够生成视觉输出的任何其他类型的显示器。在一些示例中,电子显示器是用于向用户的每只眼睛提供单独图像的立体显示器。在一些示例中,当跟踪HMD 112的位置和取向以用于根据HMD 112和用户的当前观看视角渲染人工现实内容时,显示器203相对于HMD 112的前刚性主体的已知取向和位置被用作参照系,也被称为局部原点。在其他示例中,HMD 112可以采取其他可穿戴头戴式显示器的形式,例如眼镜或护目镜。
如图2中进一步所示,在该示例中,HMD 112还包括一个或更多个运动传感器206,例如输出表示HMD 112的当前加速度的数据的一个或更多个加速度计(也称为惯性测量单元或“IMU”)、输出表示HMD 112的位置的数据的GPS传感器、输出表示HMD 112距各种对象的距离的数据的雷达或声纳、或提供HMD 112或物理环境中的其他对象的位置或取向的指示的其他传感器。此外,HMD 112可以包括集成的图像捕获设备138A和138B(统称为“图像捕获设备138”),例如摄像机、激光扫描仪、多普勒雷达扫描仪、深度扫描仪等,其被配置为输出表示物理环境的图像数据。更具体地,图像捕获设备138捕获表示物理环境中的对象的图像数据,这些对象在图像捕获设备138的视场130A、130B内,其通常对应于HMD 112的观看视角。HMD 112包括内部控制单元210,该内部控制单元可包括内部电源和一个或更多个印刷电路板,该印刷电路板具有一个或更多个处理器、存储器和硬件以提供用于执行可编程操作的操作环境,从而处理感测数据并在显示器203上呈现人工现实内容。
在一个示例中,根据本文描述的技术,控制单元210被配置为基于感测到的数据,识别用户执行的特定手势或手势组合,并且作为响应,执行动作。例如,响应于一个识别的手势,控制单元210可以生成并渲染覆盖在人工现实内容上的特定用户界面元素,以显示在电子显示器203上。如本文所解释的,根据本公开的技术,控制单元210可以在由图像捕获设备138捕获的图像数据内执行对象识别,以识别手132、手指、拇指、手臂或用户的另一部位,并跟踪所识别部位的移动、位置、构形等,以识别用户执行的预定义手势。响应于识别到预定义手势,控制单元210采取一些动作,诸如从与用户界面元素相关联的选项集中选择选项、将手势翻译成输入(例如,字符)、启动应用或以其他方式显示内容等。在一些示例中,控制单元210响应于检测到被指定为用于展现用户界面的“触发”的预定义手势,动态地生成并呈现用户界面元素,例如菜单。在其他示例中,控制单元210响应于来自外部设备(例如控制台106)的指示来执行这些功能,该外部设备可以执行对象识别、运动跟踪和手势检测或其任何部分。
作为示例,控制单元210可以利用图像捕获设备138A和138B来分析手132和/或手臂134的构形、位置、运动和/或取向,以识别可以由HMD 112的用户执行的菜单提示手势、菜单激活手势、菜单滑动手势、选择手势或菜单定位动作等。控制单元210可以基于对菜单提示手势、菜单激活手势、菜单滑动手势、选择手势和菜单定位动作的检测来渲染UI菜单、可滑动地接合的UI元素和/或虚拟手。
图3是示出图1A的人工现实系统10和图1B的人工现实系统20的控制台106和HMD112的示例实现的框图。在图3的示例中,控制台106根据本文描述的技术,基于感测的数据,例如从HMD 112和/或外部传感器接收的运动数据和图像数据,为HMD 112执行姿势跟踪、手势检测以及用户界面生成和渲染。
在该示例中,HMD 112包括一个或更多个处理器302和存储器304,在一些示例中,处理器302和存储器304提供用于执行操作系统305的计算机平台,操作系统305可以是例如嵌入式实时多任务操作系统或其他类型的操作系统。反过来,操作系统305提供用于执行一个或更多个软件部件307(包括应用引擎340)的多任务操作环境。如参照图2的示例所讨论的,处理器302耦接到电子显示器203、运动传感器206和图像捕获设备138。在一些示例中,处理器302和存储器304可以是单独的、分立的部件。在其他示例中,存储器304可以是与单个集成电路内的处理器302并列放置的片上存储器。
一般来说,控制台106是处理从相机102(图1B)和/或HMD 112接收的图像和跟踪信息以执行HMD 112的手势检测和用户界面生成的计算设备。在一些示例中,控制台106是单个计算设备,例如工作站、台式计算机、膝上型计算机或游戏系统。在一些示例中,控制台106的至少一部分(例如处理器312和/或存储器314)可以分布在云计算系统、数据中心上或分布在网络上,例如互联网、另一公共或私有通信网络,例如宽带、蜂窝、Wi-Fi和/或用于在计算系统、服务器和计算设备之间传输数据的其他类型的通信网络。
在图3的示例中,控制台106包括一个或更多个处理器312和存储器314,在一些示例中,处理器312和存储器314提供用于执行操作系统316的计算机平台,操作系统316可以是例如嵌入式实时多任务操作系统或其他类型的操作系统。继而,操作系统316提供用于执行一个或更多个软件部件317的多任务操作环境。处理器312耦合到一个或更多个I/O接口315,I/O接口315提供一个或更多个I/O接口,用于与例如键盘、游戏控制器、显示设备、图像捕获设备、HMD等的外部设备通信。此外,一个或更多个I/O接口315可以包括一个或更多个有线或无线网络接口控制器(NIC),用于与诸如网络104的网络通信。处理器302、312中的每一个可包括多核处理器、控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或等效的离散或集成逻辑电路中的任何一个或更多个。存储器304、314可包括用于存储数据和可执行软件指令的任何形式的存储器,诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存。
控制台106的软件应用317操作以提供整体人工现实应用。在该示例中,软件应用317包括应用引擎320、渲染引擎322、手势检测器324、姿势跟踪器326和用户界面引擎328。
通常,应用引擎320包括提供和呈现人工现实应用的功能,该人工现实应用例如是电话会议应用、游戏应用、导航应用、教育应用、培训或模拟应用等。应用引擎320可包括,例如,用于在控制台106上实现人工现实应用的一个或更多个软件包、软件库、硬件驱动器和/或应用程序接口(API)。响应于应用引擎320的控制,渲染引擎322生成3D人工现实内容,以由HMD 112的应用引擎340显示给用户。
应用引擎320和渲染引擎322根据参照系的当前姿势信息(通常是由姿势跟踪器326确定的HMD 112的观看视角)构建用于显示给用户110的人工内容。基于当前观看视角,渲染引擎322构建3D、人工现实内容,其在某些情况下可以至少部分地覆盖在用户110的真实世界3D环境上。在该过程期间,姿势跟踪器326对从HMD 112接收的感测数据(诸如移动信息和用户命令)以及在一些示例中对来自任何外部传感器90(图1A、图1B)(诸如外部相机)的数据进行操作,以捕获真实世界环境内的3D信息,诸如用户110的运动和/或相对于用户110的特征跟踪信息。基于所感测的数据,姿势跟踪器326确定HMD 112的参考系的当前姿势,并且根据当前姿势,构建用于经由一个或更多个I/O接口315传送到HMD 112以显示给用户110的人工现实内容。
此外,基于所感测的数据,手势检测器324分析用户的对象(例如,手、手臂、手腕、手指、手掌、拇指)的被跟踪的运动、构形、位置和/或取向,以识别用户110执行的一个或更多个手势。更具体地,手势检测器324分析在由HMD 112的图像捕获设备138和/或传感器90和外部相机102捕获的图像数据中识别的对象,以识别用户110的手和/或手臂,并跟踪手和/或手臂相对于HMD 112的移动,以识别用户110执行的手势。手势检测器324可以基于捕获的图像数据来跟踪手、手指和/或手臂的移动,包括位置和取向的改变,并将对象的运动矢量与手势库330中的一个或更多个条目进行比较,以检测用户110执行的手势或手势组合。手势库330中的一些条目可以各自将手势定义为一系列或模式的运动,例如用户的手、特定手指、拇指、手腕和/或手臂的相对路径或空间平移和旋转。手势库330中的一些条目可以各自将手势定义为用户的手和/或手臂(或其部分)在特定时间或一段时间内的构形、位置和/或取向。手势类型的其他示例也是可能的。此外,手势库330中的每个条目可以为所定义的手势或一系列手势指定触发动作的手势或一系列手势所需的条件,例如与HMD 112的当前视场的空间关系、与用户当前正在观察的特定区域的空间关系,这可以通过个人的实时凝视跟踪、正在显示的人工内容的类型、正在执行的应用的类型等来确定。
手势库330中的每个条目还可以为每个定义的手势或手势组合/系列指定要由软件应用317执行的期望响应或动作。例如,根据本公开的技术,某些专用手势可以被预定义,使得响应于检测到预定义手势之一,用户界面引擎328动态地生成用户界面作为向用户显示的人工现实内容的叠加,从而允许用户110即使在与人工现实内容交互时也能够容易地调用用于配置HMD 112和/或控制台106的用户界面。在其他示例中,某些手势可以与其他动作相关联,例如提供输入、选择对象、启动应用等。
作为示例,手势库330可以包括描述菜单提示手势、菜单激活手势、菜单滑动手势、选择手势和菜单定位动作的条目。手势检测器324可以处理来自图像捕获设备138的图像数据,以分析用户手的构形、位置、动作和/或取向,从而识别可以由用户执行的菜单提示手势、菜单激活手势、菜单滑动手势、选择手势和菜单定位动作等。渲染引擎322可以基于对菜单提示手势、菜单激活手势、菜单滑动手势和菜单定位动作的检测来渲染菜单和虚拟手。用户界面引擎328可以定义显示的菜单,并且可以控制响应于由选择手势引起的选择而执行的动作。
图4是描绘根据本公开的技术由图1A和图1B的人工现实系统的HMD 112执行手势检测和用户界面生成的示例的框图。
在该示例中,类似于图3,HMD 112包括一个或更多个处理器302和存储器304,在一些示例中,处理器302和存储器304提供用于执行操作系统305的计算机平台,操作系统305可以是例如嵌入式实时多任务操作系统或其它类型的操作系统。继而,操作系统305提供用于执行一个或更多个软件部件417的多任务操作环境。此外,处理器302耦接到电子显示器203、运动传感器206和图像捕获设备138。
在图4的示例中,软件部件417操作以提供整体人工现实应用。在该示例中,软件应用417包括应用引擎440、渲染引擎422、手势检测器424、姿势跟踪器426和用户界面引擎428。在各种示例中,软件部件417类似于图3的控制台106的对应部件(例如,应用引擎320、渲染引擎322、手势检测器324、姿势跟踪器326和用户界面引擎328)来操作,以根据检测到的用户110的手势来构建覆盖在人工内容上或作为人工内容的一部分的用户界面元素,以显示给用户110。在一些示例中,渲染引擎422构建3D人工现实内容,该内容可以至少部分地覆盖在用户110的真实世界物理环境上。
类似于参考图3描述的示例,基于感测到的数据,手势检测器424分析用户的对象(例如,手、手臂、手腕、手指、手掌、拇指)的被跟踪的运动、构形、位置和/或取向,以识别用户110执行的一个或更多个手势。根据本公开的技术,用户界面引擎428生成用户界面元素作为要向用户110显示的人工现实内容的一部分,例如覆盖在其上,和/或基于由手势检测器424检测到的用户110的一个或更多个手势或手势组合来执行动作。更具体地,手势检测器424分析在由HMD 112的图像捕获设备138和/或传感器90或外部相机102捕获的图像数据中识别的对象,以识别用户110的手和/或手臂,并跟踪手和/或手臂相对于HMD 112的移动,以识别用户110执行的手势。手势检测器424可以基于捕获的图像数据来跟踪手、手指和/或手臂的移动,包括位置和取向的改变,并将对象的运动矢量与手势库430中的一个或更多个条目进行比较,以检测用户110执行的手势或手势组合。
手势库430类似于图3的手势库330。手势库430中的每个条目可以为所定义的手势或一系列手势指定手势触发动作所需的条件,例如与HMD112的当前视场的空间关系、与用户当前正在观察的特定区域的空间关系,这可以通过个人的实时凝视跟踪、正在显示的人工内容的类型、正在执行的应用的类型等来确定。
响应于检测到匹配手势或手势组合,HMD 112执行分配给手势库430中匹配条目的响应或动作。例如,根据本公开的技术,某些专用手势可以被预定义,使得响应于手势检测器424检测到预定义手势之一,用户界面引擎428动态地生成用户界面作为向用户显示的人工现实内容的叠加,从而允许用户110在观看人工现实内容时容易地调用用于配置HMD 112的用户界面。在其他示例中,响应于手势检测器424检测到预定义手势之一,用户界面引擎428和/或应用引擎440可以接收输入、选择与用户界面元素相关联的值或参数、启动应用、修改可配置设置、发送消息、启动或停止过程或执行其他动作。
作为示例,手势库430可以包括描述菜单提示手势、菜单激活手势、菜单滑动手势、菜单定位动作和选择手势的条目。手势检测器424可以利用来自图像捕获设备138的图像数据来分析用户手的构形、位置和/或取向,以识别可以由用户执行的菜单提示手势、菜单激活手势、菜单滑动手势、选择手势或菜单定位动作等。渲染引擎422可以基于对菜单激活手势、菜单滑动手势、选择手势和菜单定位动作的检测来渲染UI菜单、可滑动地接合的元素和/或虚拟手。用户界面引擎328可以定义显示的菜单,并且可以响应于由选择手势引起的选择来控制应用引擎440执行的动作。
图5和图6是示出用于激活菜单提示和菜单以及用于确定菜单的定位和用户交互的示例方法的流程图。图5和图6所示的操作可以由人工现实系统(例如图1A人工现实系统10和图1B的人工现实系统20)的一个或更多个部件来执行。例如,一些或所有操作可以由手势检测器(图3的324和图4的424)、用户界面引擎(图3的328和图4的428)和渲染引擎(图3的322和图4的422)中的一个或更多个来执行。
图5是示出根据本公开各方面的用于激活菜单提示或菜单界面的示例方法的操作的流程图。如上所述,可以检测手的某些构形,并将其用于触发菜单界面或菜单提示的激活。人工现实系统可以确定手的当前构形(502)。该构形可以包括手的取向和手的手指相对于彼此的位置。在一个或更多个方面,可以捕获和分析图像数据以确定手的构形。除了图像数据之外,或者代替图像数据,可以使用其他传感器数据来确定手的构形。
人工现实系统可以确定手的当前构形是否指示用户正在执行菜单提示手势(504)。在一个或更多个方面,人工现实系统可以是(例如,由用户)可配置的以确定左手或右手的构形。在一个或更多个方面,人工现实系统可以利用描述手的当前构形的数据和指定特定手势的手势库的一个或更多个条目中的数据来确定手的当前构形是否是菜单提示手势。在一个或更多个方面,菜单提示手势可以是手的构形,其中手处于基本朝上的取向,并且用户手的手指和拇指被定位成使得手指和拇指之间存在空间。对于菜单提示手势,用户手的手指和拇指可以形成“C”形或钳形,其中手指和拇指在末端不接触。受益于本公开的本领域技术人员将理解,手的其他构形可以用作菜单提示手势。
响应于确定用户已经执行了菜单提示手势,人工现实系统可以渲染菜单提示(506)。在一个或更多个方面,在表示用户手的取向的虚拟手附近渲染菜单提示。菜单提示可以是位于对应于执行菜单提示手势的用户的手指和拇指的虚拟手的虚拟手指和虚拟拇指之间的UI元素。
图8是示出根据本公开各方面的菜单提示810的示例HMD显示800。在图8所示的示例中,人工现实系统的用户已经将他们的手放置在基本上朝上的取向上,并且食指和拇指之间留有空间。(食指旁边的其他手指可用于菜单提示和菜单激活手势)。人工现实系统可以确定手的位置和取向,并且可以渲染虚拟手136以匹配用户的手的取向和手指的定位。此外,人工现实系统可以基于手的构形来检测用户已经用他们的手执行了菜单提示手势。响应于检测到菜单提示手势,人工现实系统可以在虚拟手的食指和拇指之间渲染菜单提示810。菜单提示810可以是用户界面元素,其用作对用户的指示或提醒(即,提示),即用户可以用拇指和食指执行动作(例如,捏动作)以将用户的手置于菜单激活手势,从而使得人工现实系统向用户提供菜单。在一些方面,菜单提示810可以包括在食指和拇指之间延伸的线。在一些方面,菜单提示810可以包括位于拇指和食指之间的虚拟对象。在一些方面,菜单提示810可以包括突出显示食指和/或拇指。其他类型的用户界面元素可以被渲染为菜单提示810。例如,箭头可以用来指示用户的食指和拇指应该移动的方向,以便激活菜单。
返回到图5,在渲染菜单提示之后,人工现实系统可以确定手的新的当前构形(502)。在渲染菜单提示和确定手的新构形之间,可以有由人工现实系统执行的许多其他操作。
如果手的当前构形与菜单提示手势不匹配,则人工现实系统可以确定手的当前构形是否指示用户正在执行菜单激活手势。在一个或更多个方面,人工现实系统可以利用描述手的当前构形的数据和手势库的一个或更多个条目中的数据来确定手的当前构形是否是菜单激活手势。在一个或更多个方面,菜单激活手势可以是手的构形,其中手处于基本朝上的取向,并且用户手的手指和拇指处于捏构形。受益于本公开的本领域技术人员将理解,手的其他构形可以用作菜单激活手势。例如,菜单激活手势可以包括手指和拇指以捏构形定位,而与手的取向无关。
响应于确定用户已经执行了菜单激活手势,人工现实系统可以渲染UI菜单(510)。在一个或更多个方面,在表示用户手的取向的虚拟手附近渲染菜单。在一些方面,只有当人工现实系统首先检测到菜单提示手势时,人工现实系统才可以响应于检测到菜单激活手势来渲染UI菜单。在某些方面,菜单提示手势不是先决条件。
图7A是描绘根据本公开各方面的UI菜单124的示例HMD显示700。在图7A所示的示例中,人工现实系统的用户已经将他们的手放置在基本朝上的取向,其中手的食指和拇指处于捏构形。(同样,食指被用作手的手指的一个示例。)人工现实系统可以确定手的位置和取向,并且可以渲染虚拟手136来表示用户的手的取向和手指定位。此外,人工现实系统可以基于手的构形来检测用户已经用他们的手执行了菜单激活手势。响应于检测到菜单激活手势,人工现实系统可以在虚拟手附近渲染UI菜单124。UI菜单124可以包括沿着UI菜单124的维度排列的一个或更多个UI元素126。在一个或更多个方面,一个或更多个UI元素126可以是沿着诸如观看空间或显示空间的坐标空间的水平维度排列的菜单项。在图7A所示的示例中,坐标轴704仅被示出来说明坐标空间。坐标轴704不需要呈现在实际显示器上。在图7A-图7G所示的示例中,水平维度沿着X轴,垂直维度沿着Y轴,并且深度沿着Z轴。
如上所述,菜单激活手势可以包括用户将他们的手放在基本上朝上的取向。例如,人工现实系统可以检测到垂直于手的其他表面的手掌的向量702也基本上垂直于由X轴和Z轴形成的平面。在一个或更多个方面,如果向量702在由X轴和Z轴形成的平面的法线的三十度内(由虚线示出),则向量702可以被认为是基本上垂直的。在一个或更多个方面,可以使用三十度以外的其他阈值。
在一个或更多个方面,可以在虚拟手136附近渲染可滑动地接合的UI元素706。在图7A所示的示例中,可滑动地接合的UI元素706是圆形。其他图形元素(如球体、三角形、正方形等)或者单独的虚拟手136可以用作可滑动地接合的UI元素706。另外,虚拟手136的一个或多个手指可以被突出显示,以指示一个或多个手指的突出显示部分是可滑动地接合的UI元素。
图7B是示例HMD显示740,其示出了根据本公开各方面的UI菜单和可滑动地接合的UI元素。在图7B所示的示例中,用户已经执行了菜单滑动手势,以便使人工现实系统在菜单项708附近的位置处渲染可滑动地接合的UI元素706。在一个或更多个方面,可滑动地接合的UI元素706附近的菜单项708可以被突出显示或者以其他方式增强或修改,以指示菜单项708将在用户执行选择手势708时被选择。除了突出显示菜单项708之外,或者代替突出显示菜单项708,可以在菜单元素708附近提供标签710。可以使用各种突出显示机制,包括边框突出显示、背景突出显示、闪烁、放大等,可用于突出显示菜单项708。突出显示菜单元素708可以指示如果用户执行选择手势,菜单元素708将被选择。在一个或更多个方面,选择手势可以是不同于处于捏构形的手指的手的手指的移动,例如,释放捏构形。在一个或更多个方面,选择手势可以是手在基本上垂直于UI菜单平面的方向上的移动。如本文所用,“基本上垂直于”一个平面可以表示在该平面的法线的0度-2度内、在该平面的法线的0度-5度内、在该平面的法线的0度-10度内、在该平面的法线的0度-20度内、或在该平面的法线的0度-30度内。在一个或更多个方面,选择手势可以是将手的拇指和手指重新构形为不再处于捏构形。在一个或更多个方面,选择手势可以是不同手指(例如小指)的运动或重新构形,例如卷曲或伸展。选择手势的检测可以导致人工现实系统执行一些动作。例如,选择手势可以导致应用被实例化,或者可以导致当前运行的应用被带到HMD的显示器的前景,或者在一些情况下可以导致人工现实系统在具体执行的人工现实应用内执行一些动作。
因此,手势序列可用于触发菜单124的显示,将可滑动地接合的UI元素706定位在菜单124的菜单元素708之上或附近,并选择菜单元素708。在示例实现中,用户可以执行菜单激活手势(例如,将手的手指定位成处于捏构形)以使得菜单124由HMD显示。用户可以执行菜单滑动手势(例如,移动他们的手,同时保持捏构形)以使得可滑动地接合的UI元素706根据手的运动沿着菜单124滑动。用户然后可以执行选择手势(例如,从捏构形释放手指和拇指)来选择由可滑动地接合的UI元素706指示的菜单元素708。
返回到图5,在渲染UI菜单124之后,人工现实系统可以确定手的新的当前构形(502)。在渲染UI菜单124和确定手的新构形之间,可以有由人工现实系统执行的许多其他操作。
如果人工现实系统检测到用户的手不再执行菜单提示手势或菜单激活手势,则人工现实系统可以确定是否已经显示了UI菜单124或菜单提示810。如果是,则人工现实系统可以从显示中移除UI菜单124或菜单提示810(514),因为用户的手不再处于显示UI菜单124或菜单提示810的适当构形中。
在移除UI菜单124或菜单提示810之后,流程返回以确定手的新的当前构形(502)。在移除UI菜单124或菜单提示810和确定手的新构形之间,可以有由人工现实系统执行的许多其他操作。
图6是示出根据本公开各方面的用于定位UI菜单并与UI菜单交互的示例方法的操作的流程图。人工现实系统可以确定手的位置(602)。例如,可以根据从图像传感器或从与人工现实系统耦合的其他类型的传感器捕获的图像数据来确定位置。
人工现实系统可以确定UI菜单当前是否是活动的(即,正在通过HMD被渲染和显示)(604)。如果UI菜单当前不活动,则流程可以返回到确定手的更新位置(602)。在确定UI菜单是否是活动的和确定手的更新位置之间,可以有由人工现实系统执行的许多其他操作。
如果UI菜单是活动的,那么人工现实系统可以确定用户是否已经执行了菜单滑动手势(606)。在一些方面,菜单滑动手势可以是当菜单活动时(例如,当用户的手正在执行菜单激活手势时)手的基本上水平的运动。例如,人工现实系统可以将手的先前位置与手的当前位置进行比较,以确定菜单滑动手势是否已经发生。如果检测到菜单滑动手势,则人工现实系统可以根据菜单滑动手势沿着UI菜单124平移虚拟手和/或可滑动地接合的界面元素(608)。如果菜单项被垂直取向,则菜单滑动手势可以是手的基本上垂直的运动。如果没有检测到菜单滑动手势,则人工现实系统可以确定是否检测到不是菜单滑动手势的手的其他运动(610)。“基本上”垂直和水平可以在垂直或水平的5度内、10度内、20度内或30度内。
图7C是示出根据本公开各方面的UI菜单和菜单滑动手势的示例HMD显示750。在一个或更多个方面,菜单滑动手势可以是用户的手沿着UI菜单124的水平维度的运动(例如,平行于X轴的运动)。在图7C所示的示例中,用户已经沿着UI菜单124的水平维度移动了他们的手(同时保持菜单激活手势)。人工现实系统可以根据用户手的运动来重新定位虚拟手136和可滑动地接合的UI元素706,使得虚拟手136和可滑动地接合的UI元素706接近菜单项712。人工现实系统可以从菜单元素708移除突出显示,并且可以突出显示菜单元素712,以指示如果用户执行选择手势,菜单元素712将被选择。除了突出显示菜单项712之外,或者代替突出显示菜单项712,可以显示标签714。在一些示例中,人工现实系统不突出显示菜单项。在一些示例中,人工现实系统不渲染UI元素706。在一个或更多个方面,UI菜单124在水平方向上保持在与菜单滑动手势之前相同的位置。换句话说,UI菜单124水平静止,而虚拟手136和可滑动地接合的UI元素706响应于用户执行菜单滑动手势而沿着UI菜单124的水平维度移动。
返回到图6,在确定是否已经检测到水平运动之后,人工现实系统可以确定用户手的非水平运动是否已经发生(610)。例如,人工现实系统可以确定是否存在垂直方向上的运动(即平行于Y轴的运动)和/或从前向后或从后向前运动(即平行于Z轴的运动)。如果检测到用户手的非水平运动,则人工现实系统可以基于非水平运动来平移虚拟手、可滑动地接合的UI元素和UI菜单的位置。在UI菜单项垂直排列的示例中,用户手的非垂直运动构成了手的“其他移动”。
图7D是示出在已经检测到垂直运动之后的UI菜单的示例HMD显示760。在图7D所示的示例中,用户已经向下移动了他们的手。人工现实系统可以检测到垂直运动,并且可以基于检测到的垂直运动来平移UI菜单124、虚拟手136和可滑动地接合的UI元素706的位置。在一些方面,如果除了垂直运动之外没有检测到水平运动,则虚拟手136和可滑动地接合的UI元素706保持在它们相对于UI菜单124的先前位置。因此,当垂直运动发生时,相同的菜单元素712保持被突出显示。
图7E是示例HMD显示770,其示出了在已经检测到从后向前运动(即,用户已经沿着Z轴将他们的手移动得更靠近他们自己)之后的UI菜单。人工现实系统可以检测到从后向前运动,并且可以基于检测到的从后向前运动来平移UI菜单124、虚拟手136和可滑动地接合的UI元素706的位置。因此,虚拟手、UI菜单124和可滑动地接合的UI元素706的位置看起来更大,因此更靠近用户。在一些方面,如果除了沿着Z轴的运动之外没有检测到水平运动,则虚拟手136和可滑动地接合的UI元素706保持在它们相对于UI菜单124的先前位置。因此,当沿着Z轴的运动发生时,相同的菜单元素712保持被突出显示。
返回到图6,在UI菜单、虚拟手和可滑动地接合的UI元素已经根据用户手的运动(如果有的话)被平移之后,人工现实系统可以基于用户手的当前位置在UI菜单124附近渲染虚拟手和可滑动地接合的UI元素。流程然后可以返回以确定手的更新位置(602)。在渲染UI菜单和确定手的更新位置之间,可以有由人工现实系统执行的许多其他操作。
图7F是示出根据本公开各方面的UI菜单124和UI图标阵列720的示例HMD显示780。在一些方面,UI菜单124的菜单项可以对应于应用。在一个或更多个方面,UI菜单124可以被分成两个部分716和718。部分716中的菜单元素可以表示喜爱的应用,部分718中的菜单元素可以表示当前在人工现实系统中运行的应用。此外,在一些方面,人工现实系统可以呈现表示在人工现实系统中可用或运行的应用的图标的图标阵列710。图标阵列720中各个图标上的图像可以表示相应应用的当前显示,或者与该应用相关联的图像。
图7G是示出根据本公开各方面的UI菜单124和UI图标阵列720的示例HMD显示790。在图7G所示的示例中,虚拟手136和可滑动地接合的UI元素706在菜单项724附近。在该示例中,使用三维突出显示,其中可滑动地接合的UI元素706附近的菜单项可以被向前带,从而使图像对用户来说显得更大。此外,也可以突出显示对应于菜单项724的图标722。在该示例中,图标722的边界被突出显示。
上面的讨论已经呈现了人工现实系统的各方面,其中UI菜单在水平方向上配置。在其他方面,UI菜单可以在垂直方向上配置。在这样的方面,手的垂直运动可以导致可滑动地接合的UI元素和虚拟手沿着UI菜单的垂直维度移动,同时UI菜单在垂直方向上保持静止。非垂直运动(即水平运动或由前向后运动)会导致UI菜单的位置根据非垂直运动而平移。
本公开中描述的技术可以至少部分地以硬件、软件、固件或其任何组合来实现。例如,所述技术的各个方面可在一个或更多个处理器内实现,该处理器包括一个或更多个微处理器、DSP、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、或任何其他等效的集成或离散逻辑电路,以及此类部件的任何组合。术语“处理器”或“处理电路”一般可指前述逻辑电路中的任一种(单独或与其他逻辑电路组合),或任何其他等效电路。包括硬件的控制单元也可执行本公开的一种或更多种技术。
此类硬件、软件和固件可在相同的设备内或在单独的设备内实现以支持本公开中描述的各种操作和功能。此外,所述单元、模块或部件中的任一个可一起或单独地实现为离散的但可互操作的逻辑设备。将不同特征描述为模块或单元旨在突出不同的功能方面,并不一定意味着此类模块或单元必须由单独的硬件或软件部件实现。相反,与一个或更多个模块或单元相关联的功能可以由单独的硬件或软件部件执行,或者集成在公共或单独的硬件或软件部件内。
在本公开中描述的技术还可在包含指令的计算机可读介质(诸如计算机可读存储介质)中体现或编码。嵌入或编码在计算机可读存储介质中的指令可以例如在执行指令时致使可编程处理器或其他处理器执行方法。计算机可读存储介质可包括随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、硬盘、CD-ROM、软盘、盒式磁带、磁介质、光学介质或其他计算机可读介质。
如本文通过各种示例所描述的,本公开的技术可包括人工现实系统或结合人工现实系统来实现。如所描述的,人工现实是在呈现给用户之前已经以某种方式调整的现实的形式,其可包括例如虚拟现实(VR)、增强现实(AR)、混合现实(MR)、混杂现实、或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或与捕获的内容(例如,真实世界的照片)相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈、或其某种组合,且其中任何一个都可以在单个通道中或在多个通道中被呈现(例如向观看者产生三维效果的立体视频)。另外,在一些实施例中,人工现实可以与应用、产品、附件、服务或其某种组合相关联,这些应用、产品、附件、服务或其某种组合例如用于在人工现实中创建内容和/或在人工现实中被使用(例如,在人工现实中执行活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主计算机系统的头戴式设备(HMD)、独立的HMD、移动设备或计算系统、或者能够向一个或更多个观看者提供人工现实内容的任何其他硬件平台。
- 具有滑动菜单的人工现实系统
- 具有自适应自由度(DOF)选择的人工现实系统