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

物理对象对增强现实中的虚拟对象的遮挡的制作方法

2022-10-26 22:54:57 来源:中国专利 TAG:


1.本公开总体上涉及为人工现实环境生成图形。


背景技术:

2.人工现实是一种现实形式,其在呈现给用户之前已经以某种方式进行了调节,可以包括例如虚拟现实(vr)、增强现实(ar)、混合现实(mr)、混杂现实、或其某种组合和/或派生。人工现实内容可以包括完全生成的内容或与捕获内容相结合的生成内容(例如,真实世界照片)。人工现实内容可以包括视频、音频、触觉反馈、或其某种组合,其中的任何一个都可以在单个通道或多个通道中呈现(诸如向观看方产生三维效果的立体视频)。人工现实可以与例如用于在人工现实中创建内容和/或用于人工现实(例如,在其中执行活动)的应用、产品、配件、服务、或其某种组合相关联。提供人工现实内容的人工现实系统可以在各种平台上实现,包括被连接到主机计算机系统的头戴式显示器(hmd)、独立hmd、移动设备或计算系统、或者能够提供向一位或多位观看方提供人工现实内容的任何其他硬件平台。


技术实现要素:

3.本发明涉及根据所附权利要求的方法、计算机可读非暂态存储介质和系统。
4.在特定实施例中,一种方法由人工现实系统的一个或多个计算系统执行。计算系统可以被体现在头戴式显示器或便携性较差的计算系统中。该方法包括访问包括头戴式显示器的用户的手部的图像。图像还可以包括用户的环境。图像可以由头戴式显示器的一个或多个相机生成。该方法可以包括至少根据图像生成用户的手部的虚拟对象表示,手部的虚拟对象表示在虚拟环境中被定义。用户的手部的虚拟对象表示可以基于表示虚拟环境中用户的手部的三维网格而被生成,该三维网格已经基于检测到的用户的手部在环境中的姿势而被准备。该方法可以包括:基于手部的虚拟对象表示和虚拟环境中的至少一个其他虚拟对象,从用户对虚拟环境的视点渲染虚拟环境的图像。对虚拟环境的视点可以基于用户对真实环境的视点与用户对虚拟环境的视点之间的对应关系而被确定。渲染图像可以包括与从用户的视点可见的手部的虚拟对象表示的一部分相对应的像素集合。该像素集合可以通过确定用户的手部的虚拟对象表示从用户的视点至少部分在虚拟环境中的其他虚拟对象前面而被确定。该方法可以包括:向头戴式显示器的光发射器集合提供用于显示虚拟环境的图像的指令,其中图像中与手部的虚拟对象表示的一部分相对应的该像素集合使一个或多个位置处的光发射器未照射。头戴式显示器中的未照射的光发射器可以使来自用户的环境的光继续被用户感知。
5.在根据本发明的方法的一个实施例中,特定位置处的光发射器未照射可以使来自用户的环境的光在特定位置继续到用户。
6.在根据本发明的方法的一个实施例中,包括用户的手部的图像还可以包括从用户的视点来看的用户的环境。
7.在根据本发明的方法的一个实施例中,至少根据图像生成用户的手部的虚拟对象
表示可以包括:基于根据包括用户的手部的图像确定的用户的手部的姿势,确定用户的手部的虚拟对象表示在虚拟环境中的位置。
8.在根据本发明的方法的一个实施例中,用户的手部的虚拟对象表示的纹理可以对应于使光发射器未照射的指令。
9.在根据本发明的方法的一个实施例中,用户的手部的虚拟对象表示可以与颜色相关联,该颜色还与虚拟环境的背景相关联。
10.在根据本发明的方法的一个实施例中,从用户的视点渲染虚拟环境的图像可以包括:确定用户的手部的虚拟对象表示和虚拟环境中的至少一个其他虚拟对象是否从用户的视点可见。除此之外,该方法还可以包括:通过以下方式确定手部的虚拟对象表示至少部分地在虚拟环境中的至少一个其他虚拟对象前面的一个或多个位置:基于用户的视点使用将光线投射到具有起点和方向的虚拟环境中;以及确定光线与虚拟环境中的用户的手部的虚拟对象表示的相交的点,其中光线在与虚拟环境中的另一对象相交之前与虚拟对象表示相交。
11.在根据本发明的方法的一个实施例中,至少根据图像生成用户的手部的虚拟对象表示可以包括:
12.至少根据图像中确定手部的姿势;
13.至少根据图像和姿势生成用于手部的虚拟对象表示的三角形网格;
14.至少根据图像确定手部距用户的视点的距离;以及
15.基于针对手部的三角形网格生成高度图,高度图根据手部的所确定的距离指示手部的一个或多个位置的变化。除此之外,该方法还可以包括:通过以下方式基于高度图确定手部的虚拟对象表示在虚拟环境中的另一虚拟对象前面的一个或多个位置:将手部的距离和关联于手部的虚拟对象表示的高度图与在特定位置的距离和关联于另一虚拟对象的高度图进行比较;以及基于比较确定手部的虚拟对象表示是最接近视点的对象。
16.在根据本发明的方法的一个实施例中,用于显示虚拟环境的图像的指令还可以使光发射器在一个或多个位置处进行照射,在一个或多个位置处进行照射从用户的视点来看,至少一个其他虚拟对象的一部分在用户的手部的虚拟对象表示的前面。
17.在根据本发明的方法的一个实施例中,计算设备中的一个或多个可以被体现在头戴式显示器中并且计算设备中的一个或多个计算设备是单独的计算设备。除此之外,该方法还可以包括基于可用计算资源的一个或多个度量,在头戴式显示器的计算设备与单独的计算设备之间分配方法的步骤。
18.在根据本发明的方法的一个实施例中,图像可以由头戴式显示器的第一相机生成,并且生成用户的手部的虚拟对象表示还可以包括访问由头戴式显示器的第二相机生成的第二图像;以及基于图像和第二图像,相对于用户的视点定位用户的手部。除此之外,生成用户的手部的虚拟对象表示还可以包括生成与用户的手部的位置相对应的具有位置的阵列,将手部的一个或多个位置与用户的视点之间的距离的值存储在阵列中,以及将阵列与用户的手部的虚拟对象表示相关联。替代地或除此之外,头戴式显示器的第二相机可以是深度感测相机。
19.在一个方面,本发明涉及一种或多种计算机可读非暂态存储介质,其体现软件,该软件在被执行时可操作,以执行上述方法,或者:
20.访问包括头戴式显示器的用户的手部的图像;
21.至少根据图像生成用户的手部的虚拟对象表示,手部的虚拟对象表示在虚拟环境中被定义;
22.基于手部的虚拟对象表示和虚拟环境中的至少一个其他虚拟对象,从用户的视点渲染虚拟环境的图像,图像包括像素集合,像素集合与从用户的视点可见的手部的虚拟对象表示的一部分相对应;以及
23.向头戴式显示器的光发射器集合提供用于显示虚拟环境的图像的指令,其中图像中与手部的虚拟对象表示的一部分相对应的该像素集合使一个或多个位置处的光发射器未照射。
24.在计算机可读非暂态存储介质的一个实施例中,特定位置处的光发射器未照射可以使来自用户的环境的光继续在特定位置照射到用户。
25.本发明的实施例可以包括人工现实系统或结合人工现实系统来实现。人工现实是一种现实形式,其在呈现给用户之前已经以某种方式进行了调节,可以包括例如虚拟现实(vr)、增强现实(ar)、混合现实(mr)、混合现实、或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或与所捕获的内容(例如,真实世界的照片)相结合的生成的内容。人工现实内容可以包括视频、音频、触觉反馈或其某种组合,并且其中的任何一个可以在单个通道或多个通道中呈现(诸如向观看方产生三维效果的立体视频)。此外,在特定实施例中,人工现实可以与例如用于在人工现实中创建内容和/或在人工现实中使用(例如,在其中执行活动)的应用、产品、附件、服务或其某种组合相关联。提供人工现实内容的人工现实系统可以在各种平台上实现,包括连接到主机计算机系统的头戴式显示器(hmd)、独立的hmd、移动设备或计算系统、或能够向一位或多位观看方提供人工现实内容的任何其他硬件平台。
26.根据本发明的一种系统可以包括一个或多个处理器、以及被耦合到处理器中的一个或多个处理器并且包括指令的一个或多个计算机可读非暂态存储介质,该指令在由处理器中的一个或多个处理器执行时可操作,以使该系统执行上述方法,或者:
27.访问包括头戴式显示器的用户的手部的图像;
28.至少根据图像生成用户的手部的虚拟对象表示,手部的虚拟对象表示在虚拟环境中被定义;
29.基于手部的虚拟对象表示和虚拟环境中的至少一个其他虚拟对象,从用户的视点渲染虚拟环境的图像,图像包括像素集合,像素集合与从用户的视点可见的手部的虚拟对象表示的一部分相对应;以及
30.向头戴式显示器的光发射器集合提供用于显示虚拟环境的图像的指令,其中图像中与手部的虚拟对象表示的一部分相对应的该像素集合使一个或多个位置处的光发射器未照射。
31.在根据本发明的系统的一个实施例中。特定位置处的光发射器未照射,可以使来自用户的环境的光在特定位置继续到用户。
32.本文中公开的实施例仅仅是示例,并且本公开的范围不限于此。特定实施例可以包括本文中公开的实施例的组件、元件、特征、功能、操作或步骤中的所有、一些或没有任何一个。根据本发明的实施例特别地在涉及方法、存储介质、系统和计算机程序产品的所附权
利要求中公开,其中在一个权利要求类别(例如,方法)中提及的任何特征也可以在另一权利要求类别(例如,系统)中要求保护。仅出于形式原因选择所附权利要求中的依赖关系或引用。然而,由于有意回溯到任何先前的权利要求(特别是多重从属关系)而产生的任何主题也可以被要求保护,以便权利要求及其特征的任何组合被公开并且可以被要求保护,而不管在所附权利要求中选择的从属关系如何。可以要求保护的主题不仅包括如所附权利要求中所述的特征的组合,还包括权利要求中的任何其他特征组合,其中权利要求中提到的每个特征可以与权利要求中的任何其他特征或其他特征组合进行组合。此外,本文中描述或描绘的任何实施例和特征可以在单独的权利要求中和/或在与本文中描述或描绘的任何实施例或特征或与所附权利要求的任何特征的任何组合中要求保护。
附图说明
33.图1a示出了示例人工现实系统。
34.图1b示出了头戴式装置系统的示例眼睛显示系统。
35.图2示出了用于显示引擎的系统图。
36.图3a-图3b示出了通过人工现实系统查看的示例图像。
37.图4a-图4b示出了通过人工现实系统查看的示例图像。
38.图5示出了在检测虚拟对象遮挡时用户的手部的视觉表示。
39.图6示出了生成虚拟环境的图像的视觉表示。
40.图7示出了生成虚拟环境的图像的视觉表示。
41.图8a-图8b示出了用于在增强现实中提供虚拟对象的真实世界对象遮挡的示例方法。
42.图9示出了示例计算机系统。
具体实施方式
43.在特定实施例中,一种方法由人工现实系统的一个或多个计算系统执行。计算系统可以被体现在头戴式显示器或便携性较差的计算系统中。该方法包含访问包括头戴式显示器的用户的手部的图像。图像还可以包括用户的环境。图像可以由头戴式显示器的一个或多个相机生成。该方法可以包括至少根据图像生成用户的手部的虚拟对象表示,手部的虚拟对象表示在虚拟环境中被定义。用户的手部的虚拟对象表示可以基于表示虚拟环境中用户的手部的三维网格而被生成,该三维网格已经基于检测到的用户的手部在环境中的姿势而被准备。该方法可以包括基于手部的虚拟对象表示和虚拟环境中的至少一个其他虚拟对象,从用户对虚拟环境的视点渲染虚拟环境的图像。对虚拟环境的视点可以基于用户对真实环境的视点与用户对虚拟环境的视点之间的对应关系来确定。渲染图像可以包括与从用户的视点可见的手部的虚拟对象表示的一部分相对应的像素集合。该像素集合可以通过确定用户的手部的虚拟对象表示从用户的视点来看至少部分在虚拟环境中的其他虚拟对象前面而被确定。该方法可以包括向头戴式显示器的光发射器集合提供用于显示虚拟环境的图像的指令,其中图像中与手部的虚拟对象表示的一部分相对应的该像素集合使一个或多个位置处的光发射器未照射。头戴式显示器中的未照射光发射器可以使来自用户的环境的光继续被用户感知。
44.在特定实施例中,本公开涉及将物理对象与呈现给用户的虚拟环境相关联的问题。在增强现实(ar)中,可以将虚拟环境作为真实环境之上的增强层显示给用户。这可以通过创建对真实环境的视点到对虚拟环境的视点的对应关系或映射来进行。本公开的实施例涉及在增强现实中高效地渲染物理对象(例如,用户的手部)对虚拟对象的遮挡的任务。当通过ar设备(例如,头戴式显示器(hmd))看到用户的手部时,用户自然会期望应当在用户视线中在虚拟对象前面的每只手部的部分遮挡用户的手部在其前面的虚拟对象。相反,自然会期望在用户视线中在虚拟对象后面的每只手部的任何部分由虚拟对象遮挡。例如,当手部握住对象时,手部的一部分可能在对象后面。用户可能期望不应当显示手部后面的对象部分,以便用户将能够在被遮挡的对象前面看到她自己的物理手部。向用户呈现他们自己的物理手部在虚拟对象前面、或与之交互的视图可以帮助用户对增强现实环境感到舒适。例如,本公开的实施例可以帮助减少用户的晕动病或模拟病。
45.目前的ar技术无法高效解决这些问题。在呈现ar体验的一种常见方法中,用户通过标准屏幕(例如,智能手部机屏幕)查看环境。虚拟环境被叠加在由相机捕获的环境图像上。这需要大量的计算资源,因为必须快速捕获和处理环境图像,并且会很快耗尽移动设备的电池。此外,这种类型的体验对于用户来说并不是特别身临其境,因为他们仅限于通过小屏幕查看环境。在相关的方法中,很多当前系统很难使用可用的相机技术准确地检测用户的手部,以使得用户的手部可以用于在虚拟环境中操纵虚拟对象。缺乏诸如此处所公开的先进技术来准确地在虚拟环境中对用户的手部以及由用户的手部在该环境中引起的效果进行建模,并且基于该效果来渲染虚拟环境。作为一个附加的示例,用于人工现实系统的当前渲染方法不能将大多数虚拟环境渲染为足够高的帧速率和质量等级,以使得用户能够在任何相当长的时间内都能舒适地体验虚拟环境。如本文所述,高帧速率对于混合或增强现实体验可能特别有利,因为虚拟对象与用户的真实环境之间的并置将允许用户快速辨别渲染中的任何技术故障。本文中描述的方法解决了所有技术问题以及更多问题。
46.在本公开中,将给出用户的手部的示例,然而,本文中描述的方法可以用于其他类型的对象。这样的其他对象包括用户身体的其他部分、用户持有的对象(例如,笔或其他指示器)、被指定用于由用户通过的特定对象(例如,用户的孩子或宠物)、被指定用于由用户或ar头戴式装置的提供方通过的通用对象(例如,车辆、其他人)、以及很多其他对象。为了允许真实对象通过,例如手部遮挡,ar头戴式装置(例如,hmd)上的一个或多个相机捕获场景的图像,包括将确定针对遮挡的对象。计算设备(如本文所述,其可以体现在hmd中或者可以与hmd进行有线或无线通信)执行手部跟踪算法以检测图像中的手部。然后确定图像中手部特征(诸如手指和关节)的位置。基于检测到的手指和关节的位置生成手部的虚拟对象表示(例如,看起来像用户的手部的3维网格)。
47.计算设备确定从用户的手部到用户对真实环境的视点的距离。计算设备将该距离与从手部的虚拟对象表示到用户对虚拟环境的视点的距离相互关联。计算设备还创建用于存储针对手部的不同区域的高度信息的网格。根据(多个)图像和三维网格,计算设备确定手部的点的高度(例如,手部的特定点相对于手部上的平均或中值高度或参考点的高度)。所确定的高度指示手部上的点相对于手部的其余部分的位置。结合所确定的距离,高度可以用于确定手部的各个部分相对于用户的精确位置。
48.在渲染虚拟环境并且将虚拟环境呈现给用户时,比任何虚拟对象更靠近用户的手
部的部分应当对用户可见,而在至少一个虚拟对象后面的手部的部分应当被遮挡。通过ar系统的hmd,用户可以看到用户的实际物理手部。在特定实施例中,可以选择性地禁用hmd中显示虚拟环境中的虚拟对象的发光组件(例如,led),以允许来自真实环境的光通过hmd到达用户的眼睛。即,计算设备在经渲染的图像中创建轮廓图(cut-out),其中手部将出现在轮廓图。因此,例如,通过指示光发射器未照射与拇指的位置相对应的显示器位置,用户可以通过hmd看到用户的实际物理拇指。由于光发射器被关闭,因此不会显示其后面的任何虚拟对象的部分。
49.为了正确渲染真实世界对象遮挡,与对象的一部分(例如,用户的手部的一部分)相对应的光发射器应当在手部的那部分比虚拟环境中的任何虚拟对象更靠近真实环境中的用户时被关闭或被指示未照射,并且在用户与手部的该部分之间存在虚拟对象时被打开。与虚拟对象在虚拟环境中距用户相比在真实环境中距用户更远的对象的部分(例如,手部上的手指)通过光发射器显示虚拟对象而被示出为位于虚拟对象后面。将距真实世界对象的距离和距虚拟对象的距离进行比较是可能的,因为例如,距离是由手部跟踪算法确定的。虚拟对象距离是在ar系统上执行的应用或场景已知的,并且可供ar系统和hmd使用。
50.给定用户的手部的虚拟对象表示以及手部的位置的已知高度,hmd可以使得用户可见的手部的部分可见,如下。示出虚拟环境的帧由主要渲染组件以第一帧速率(诸如30fps)基于用户的当前姿势(例如,位置和取向)进行渲染。作为渲染帧的一部分,会生成两个项目:(1)针对基于三维网格的手部的二维不透明纹理,以及(2)针对手部的高度图。二维纹理被保存为用于虚拟对象表示的平面对象表示的纹理(在本公开全文中也称为“表面”)。这些操作可以由hmd执行,或由与hmd硬件通信的单独计算设备(例如,云计算机、台式计算机、膝上型计算机、或移动设备)执行。通过使用为纹理特别指定的颜色,可以很容易地指示光发射器未照射。在ar中,可能需要具有允许来自真实环境的光通过的默认背景。那样,可以大大增强虚拟对象出现在真实环境中的沉浸感。因此,背景可以与颜色相关联,该颜色被转换为对光发射器未照射的指令。在特定实施例中,这种颜色可以称为“不透明的黑色”,例如,表示与该纹理相关联的对象后面没有光透过。虚拟对象表示(例如,平面对象)可以与这样的颜色相关联,以使与在手部可见的位置处的像素相对应的led关闭(即,未照射)。
51.然后,hmd基于先前生成的帧(例如,基于以30fps生成的帧)以第二帧速率(诸如200fps)渲染子帧。对于每个子帧,ar系统可以对于虚拟环境中的每个个体像素或像素的图块,基于用户的姿势(可能不同于用于生成主30fps帧的姿势),通过将一条或多条光线从用户当前视点投射到虚拟环境中来执行主要可见性测试。光线在个体像素情况下是光线,或者在图块情况下可以概念化为锥形。在特定实施例中,虚拟环境可以具有有限数目的虚拟对象。例如,ar系统可能会限制虚拟环境中离散对象的数目(包括为表示用户的手部而创建的对象)。在一些实施例中,针对一系列帧的、预期以类似方式移动的多个对象可以被分组在一起。虚拟对象可以由具有对应高度图信息的平面对象表示。如果投影光线与同用户的手部相对应的表面相交,则它会对相关联的纹理进行采样以渲染子帧。由于纹理是不透明的黑色,这表明光发射器不会被照射,因此实际的物理手部通过hmd的未照射区域可见,该区域是透明的。
52.在特定实施例中,ar系统可以支持基于高度图针对每个表面的每像素高度测试。在这种情况下,虚拟对象前面的手部的部分可以以像素级分辨率遮挡虚拟对象,而虚拟对
象后面的同一只手部的像素可以在显示器中由虚拟对象的个体像素遮挡。在使用高度图的实施例中,每像素高度测试基于真实或虚拟对象到用户视点的深度加上记录在高度图中的差异来确定。针对虚拟对象使用每像素高度极大地改善了手部遮挡的视觉外观。
53.在特定实施例中,每像素高度信息可能不可用(例如,由于对可用计算资源的限制)。在这种情况下,手部可以由虚拟对象表示仅表示为平面对象。如上所述,平面对象的深度(例如,从平面对象到用户对虚拟环境的视点的距离)是已知的。在特定实施例中,对于平坦表面上的每个位置,深度可以使用数学变换而被确定。真实对象(例如,平面对象)和虚拟对象(它们本身可以由表面表示)的虚拟对象表示形成有序的表面分组,其中顺序是基于对象的深度的。因此,与末端相对应的平面对象位于每个平面前面或后面。
54.如上所述,使用高度图来确定虚拟对象的真实对象遮挡可能会增加功耗。例如,如果hmd生成高度图,则可能会消耗大量资源。作为另一示例,如果hdm由另一计算设备生成,则可能必须将高度图传输到hmd。ar系统可以基于可用功率确定是否以及如何使用高度图。如果有足够的功率可用,则可以生成和传输高度图。如果可用功率不足,则使用没有高度图的平面可能足以产生合理的手部遮挡外观,尤其是在虚拟对象到用户视点的距离很大的情况下。
55.在特定实施例中,主渲染设备(例如,除了hmd之外的其他计算设备)可以比hmd具有更多的处理能力和电力供应。主渲染设备因此可以执行本文中描述的技术的某些部分。例如,主渲染设备可以执行手部跟踪计算,生成针对手部的三维网格、二维不透明纹理、和高度图。例如,主渲染设备可以接收由hmd的相机创建的图像,并且使用专门设计的计算硬件执行必要的处理,以便在特定任务上更高效或更强大。然而,如果hmd具有足够的处理能力和电力,则hmd可以执行这些步骤中的一个或多个(例如,使用其自己的板载计算组件)以减少延迟。在特定实施例中,本文中描述的所有步骤均在hmd上执行。
56.图1a示出了示例人工现实系统100。在特定实施例中,人工现实系统100可以包括头戴式装置系统110(其可以体现在hmd中)、身体可穿戴计算系统120、云计算环境130中的云计算系统132等。在特定实施例中,头戴式装置系统110可以包括通过数据总线114连接到两个眼睛显示系统116a和116b的显示引擎112。头戴式装置系统110可以是包括头戴式显示器(hmd)的系统,该hmd可以安装在用户的头上以向用户提供人工或增强现实。头戴式装置系统110可以设计为轻巧并且高度便携。因此,头戴式装置系统在其电源(例如,电池)中的可用功率可能有限。显示引擎112可以通过数据总线114以相对较高的数据速率(例如,适合于支持200hz或更高的刷新速率)向眼睛显示系统116a和116b提供显示数据。显示引擎112可以包括一个或多个控制器块、纹素存储器、变换块、像素块等。存储在纹素存储器中的纹素可以由像素块访问并且可以被提供给眼睛显示系统116a和116b以供显示。关于所描述的显示引擎112的更多信息可以在以下各项中找到:于2019年10月1日提交的、申请号为16/657,820的美国专利申请、于2019年9月27日提交的、申请号为16/586,590的美国专利申请、和于2019年9月27日提交的、申请号为16/586,598的美国专利申请,这些申请通过引用并入本文。
57.在特定实施例中,身体可穿戴计算系统120可以被穿戴在用户的身体上。在特定实施例中,身体可穿戴计算系统120可以是未被穿戴在用户身体上的计算系统(例如,膝上型电脑、台式机、移动计算系统)。身体可穿戴计算系统120可以包括一个或多个gpu、一个或多
个智能视频解码器、存储器、处理器、和其他模块。身体可穿戴计算系统120可以具有比显示引擎112更多的计算资源,但是在一些实施例中,其电源(例如,电池)中的功率可能仍然有限。身体可穿戴计算系统120可以通过无线连接144与头戴式装置系统110耦合。云计算系统132可以包括高性能计算机(例如,服务器)并且可以通过无线连接142与身体可穿戴计算系统120通信。在一些实施例中,云计算系统132还可以通过无线连接(未示出)与头戴式装置系统110通信。身体可穿戴计算系统120可以生成用于以标准数据速率(例如,适合于支持30hz或更高的刷新速率)渲染的数据。显示引擎112可以对从身体可穿戴计算系统120接收的数据进行上采样,以生成要由眼睛显示系统116a和116b以更高帧速率(例如,200hz或更高)显示的帧。
58.图1b示出了头戴式装置系统110的示例眼睛显示系统(例如,116a或116b)。在特定实施例中,眼睛显示系统116a可以包括驱动器154、瞳孔显示器156等。显示引擎112可以以高数据速率(例如,适合于支持200hz或更高的刷新速率)向瞳孔显示器156、数据总线114、和驱动器154提供显示数据。
59.图2示出了显示引擎112的系统图。在特定实施例中,显示引擎112可以包括控制块210、变换块220a和220b、像素块230a和230b、显示块240a和240b等。显示引擎112的一个或多个组件可以被配置为通过高速总线、共享存储器、或任何其他合适的方法进行通信。如图2所示,显示引擎112的控制块210可以被配置为与变换块220a和220b、像素块230a和230b、以及显示块240a和240b通信。如本文中进一步详细解释的,该通信可以包括数据以及控制信号、中断、和其他指令。
60.在特定实施例中,控制块210可以从身体可穿戴计算系统(例如,图1a中的120)接收输入,并且初始化显示引擎112中的管线,以完成渲染以供显示。在特定实施例中,控制块210可以以第一数据速率或帧速率从身体可穿戴计算系统接收数据和控制分组。数据和控制分组可以包括诸如一个或多个数据结构等信息,该数据结构包括纹理数据和位置数据以及附加的渲染指令。在特定实施例中,数据结构可以包括二维渲染信息。数据结构在本文中可以称为“表面”。控制块210可以根据需要将数据分发给显示引擎112的一个或多个其他块。控制块210可以为要被显示的一个或多个帧发起管线处理。在特定实施例中,眼睛显示系统116a和116b中的每个可以包括其自己的控制块210。在特定实施例中,眼睛显示系统116a和116b中的一个或多个可以共享控制块210。
61.在特定实施例中,变换块220a和220b可以确定要在人工现实场景中显示的表面的初始可见性信息。通常,变换块220a和220b可以基于要被显示的图像中的像素位置投射具有起点的光线,并且产生滤波命令(例如,基于双线性或其他类型的插值技术的滤波)以发送到像素块230a和230b。变换块220a和220b可以基于用户对用户的真实或虚拟环境的当前视点来执行光线投射。用户的视点可以使用头戴式装置的传感器而被确定,例如一个或多个相机(例如,单色、全色、深度感测)、惯性测量单元、眼动仪和/或任何合适的跟踪/定位算法,例如对环境和/或虚拟场景的即时定位与地图构建(slam),其中表面被定位,并且可以产生结果以发送到像素块230a和230b。
62.通常,根据特定实施例,变换块220a和220b均可以包括四阶段管线。变换块220a或220b的阶段可以如下进行。光线投射器可以发出与一个或多个对准的像素的阵列相对应的光线束,称为图块(例如,每个图块可以包括16
×
16个对准的像素)。在进入人工现实场景之
前,可以根据一个或多个畸变网格对光线束进行扭曲。畸变网格可以被配置为校正至少源自头戴式装置系统110的眼睛显示系统116a和116b的几何畸变效应。在特定实施例中,变换块220a和220b可以通过将每个图块的边界框与表面的边界框进行比较,来确定每个光线束是否与场景中的表面相交。如果光线束不与对象相交,它可能会被丢弃。图块表面相交被检测,并且对应的图块表面对被传递到像素块230a和230b。
63.通常,根据特定实施例,像素块230a和230b可以从图块表面对确定颜色值以产生像素颜色值。针对每个像素的颜色值可以从由控制块210接收和存储的表面的纹理数据中采样。像素块230a和230b可以从变换块220a和220b接收图块表面对,并且可以调度双线性滤波。对于每个图块表面对,像素块230a和230b可以使用与投影图块与表面相交处相对应的颜色值来对与图块相对应的针对像素的颜色信息进行采样。在特定实施例中,像素块230a和230b可以针对每个像素分别处理红色、绿色、和蓝色分量。在特定实施例中,如本文所述,像素块可以基于与表面相关联的颜色(例如,颜色和不透明度)而采用一个或多个处理快捷方式。在特定实施例中,第一眼显示系统116a的显示引擎112的像素块230a可以与第二眼显示系统116b的显示引擎112的像素块230b独立地和并行地进行。然后像素块可以将其颜色确定输出到显示块。
64.通常,显示块240a和240b可以从像素块230a和230b接收像素颜色值,将数据的格式转换为更适合显示器(例如,如果显示器需要特定的数据格式,如在扫描线显示器中),对像素颜色值应用一个或多个亮度校正,并且准备像素颜色值以用于输出到显示器。显示块240a和240b可以将由像素块230a和230b生成的图块顺序像素颜色值转换为物理显示器可能需要的扫描线或行顺序数据。亮度校正可以包括任何必要的亮度校正、伽马映射、和抖动。显示块240a和240b可以将校正后的像素颜色值直接输出到物理显示器(例如,图1b中的瞳孔显示器156,经由驱动器154),或者可以以多种格式将像素值输出到显示引擎112外部的块。例如,眼睛显示系统116a和116b或头戴式装置系统110可以包括附加的硬件或软件以进一步定制后端颜色处理,以支持更宽的显示器接口,或优化显示速度或保真度。
65.在特定实施例中,控制器块210可以包括微控制器212、纹素存储器214、存储器控制器216、用于i/o通信的数据总线217、用于输入流数据205的数据总线218等。存储器控制器216和微控制器212可以通过数据总线217耦合以用于与系统的其他模块的i/o通信。微控制器212可以通过数据总线217接收诸如位置数据和表面信息等控制分组。输入流数据205可以在由微控制器222设置之后从身体可穿戴计算系统输入到控制器块210。输入流数据205可以被存储器控制器216转换成所需要的纹素格式并且存储到纹素存储器214中。在特定实施例中,纹素存储器214可以是静态随机存取存储器(sram)。
66.在特定实施例中,身体可穿戴计算系统可以将输入流数据205发送到存储器控制器216,存储器控制器216可以将输入流数据转换为具有所需要的格式的纹素,并且将具有混合(swizzle)模式的纹素存储在纹素存储器214中。以这些混合模式组织的纹素存储器可以允许像素块230a和230b使用一个读取操作来检索确定与图块(例如,“图块”指的是对准的像素块,例如16
×
16像素块)相关联的所有像素中的每个像素的至少一个颜色分量(例如,红色、绿色和/或蓝色)所需要的纹素(例如,在4
×
4纹素块中)。结果,如果纹素阵列没有以适当的模式而被存储,则显示引擎112可以避免用于读取和组装纹素阵列通常需要的过度多路复用操作,并且因此可以全面减少显示引擎112和头戴式装置系统的计算资源需求
和功耗。
67.在特定实施例中,像素块230a和230b可以基于从纹素存储器212中检索到的纹素生成用于显示的像素数据。存储器控制器216可以分别通过两个256位数据总线204a和204b而被耦合到像素块230a和230b。像素块230a和230b可以从相应变换块220a和220b接收图块/表面对202a和202b,并且可以标识确定与图块相关联的所有像素的至少一个颜色分量所需要的纹素。像素块230a和230b可以通过存储器控制器216以及256位数据总线204a和204b从纹素存储器214中并行检索所标识的纹素(例如,4
×
4纹素阵列)。例如,确定与图块相关联的所有像素的至少一种颜色分量所需要的4
×
4纹素阵列可以被存储在一个存储器块中,并且可以使用一个存储器读取操作来检索。像素块230a和230b可以使用多个样本滤波器块(例如,每个颜色分量一个)以并行地对不同组纹素执行插值以确定针对对应像素的对应颜色分量。针对每只眼睛的像素值203a和203b可以在分别由眼睛显示系统116a和116b显示之前被发送到显示块240a和240b以进行进一步处理。
68.在特定实施例中,人工现实系统100,特别是头戴式装置系统110可以用于向用户渲染增强现实环境。增强现实环境可以包括为用户渲染的虚拟现实环境的元素(例如,虚拟现实对象),使得虚拟元素出现在用户的真实环境之上或其一部分出现在用户的真实环境之上。例如,用户可能佩戴体现本文中公开的技术的特征的hmd(例如,头戴式装置系统110)。hmd可以包含允许来自用户环境的光通常继续到达用户眼睛的显示器。然而,当显示器的发光组件(例如,led、oled、microled等)在显示器中的特定位置照射时,led的颜色可能被叠加在用户环境之上。因此,当显示器的光发射器照射时,虚拟对象可能出现在用户的真实环境前面,而当特定位置处的发光组件未照射时,用户的环境可以通过显示器在特定位置处可见。这可以在不使用相机重新渲染环境的情况下完成。该过程可以增加用户的沉浸感和使用人工现实系统100的用户的舒适度,同时降低渲染虚拟环境所需要的计算能力和电池消耗。
69.在特定实施例中,选择性照射的显示器可以用于促进用户与虚拟环境中的虚拟对象的交互。例如,可以跟踪用户的手部的位置。在先前的系统中,即使在手部跟踪系统中,在虚拟环境中表示用户的手部的唯一方法是生成和渲染手部的一些虚拟表示。在很多使用场景中,这可能是不合适的。例如,在工作场所环境中,可能希望用户的手部在与对象交互时对用户可见。例如,艺术家可能希望在他们拿着虚拟画笔或其他工具时看到他们自己的手部。本文中公开了用于实现这种高级显示的技术。
70.图3a示出了用户的头戴式装置内视图的示例,示出了用户通过人工现实显示系统查看他们自己的手部的示例。头戴式装置内视图300示出了合成(例如,混合)现实显示,其包括虚拟对象304的视图和用户的物理手部302的视图。用户正试图按下虚拟对象304上的按钮。这样,用户的手部302比虚拟对象304的部分更靠近用户的视点。这与用户的普通直觉一致,因为当用户试图按下按钮(例如,电梯按钮)时,用户的手部出现在电梯按钮和面板部分前面。
71.图3b示出了相同场景的备选视图。其中图3a示出了用户的头戴式装置内视图300。图3b仅示出了由头戴式装置系统的发光组件显示的像素310。像素包括虚拟对象304的表示。然而,由于显示系统中的任何照射的光发射器都会使虚拟对象304叠加在环境上显示,因此必须修改虚拟对象304的渲染,以便用户的手部可以通过显示器示出(如图3a所示)。为
此,虚拟对象304的渲染被修改,以包括紧贴用户的手部的形状的轮廓图。当显示虚拟环境时,轮廓图部分被视为未照射的像素312的区域。换言之,将通常显示虚拟对象304的颜色的发光组件改为被指示为未照射。所得到的作用是允许用户环境的光线继续通过,从而产生图3a所示的合成效果。
72.图4a示出了用户的头戴式装置内视图的另一示例。在图4a中,头戴式装置内视图400示出了用户通过将他们的手指缠绕在虚拟对象404周围来与虚拟对象404交互。用户的物理手部402的视图示出了虚拟对象404部分地遮挡了用户的手部(例如,靠近用户的手部的手掌),并且部分地被用户的手部402(例如,用户的手指)遮挡。由于本文中描述的部分渲染技术,用户可以能够更直观地理解用户正拿着虚拟对象404,即使他们没有物理上感觉到对象。
73.图4b示出了图4a所示的场景的替代视图。与图3b一样,图4b仅示出了由头戴式装置系统的发光组件显示的像素410。像素包括虚拟对象404的表示。虚拟对象404的区域未被显示(例如,虚拟对象包括未照射的像素区域412),因为该区域在虚拟和真实环境的头戴式装置内视图中被用户的手部遮挡。注意,图4b示出了仅仅确定用户的手部在场景中的什么位置以及总是使用户的手部被显示是不足的。考虑4a和图4b所示的情况的反例。如果总是使用户的手部出现在任何虚拟对象前面,则人工现实系统100将无法渲染如图4a所示的场景,其中用户的手部被虚拟对象404部分遮挡。因此,为了在与虚拟对象交互的混合现实环境中准确地显示用户的手部,必须跟踪用户的手部的个体部分的深度(例如,点与用户视点之间的距离),并且将其与虚拟对象的深度进行比较。
74.图5示出了在确定用户的手部的哪些部分遮挡或被虚拟对象遮挡时,用于处理用户的手部的图像的图形表示。图5可以被理解为示出了用于生成在本公开中使用的用户的手部的图像及其虚拟表示的状态的方法。图5所示的示例从图3a至图3b的示例继续。用户的物理手部的一个或多个图像302由头戴式装置系统110的一个或多个相机捕获。计算系统(在一些实施例中可以包括头戴式装置系统110或身体可穿戴计算系统120)执行手部跟踪算法以基于用户的手部上的各个离散位置的相对位置来确定用户的手部的姿势。例如,手部跟踪算法可以检测指尖、关节、手掌和手部背、以及用户的手部的其他不同部分的位置。计算系统还可以确定用户的手部的深度(例如,手部与由相机表示的用户视点之间的距离)。
75.根据所确定的姿势,计算系统为手部生成3d网格502。3d网格可以包括用户的手部的虚拟对象表示。在特定实施例中,3d网格可以类似于可以被生成以在沉浸式人工现实场景中渲染用户的手部的表示的3d网格。计算系统还为3d网格生成高度网格504覆盖。计算系统可以基于3d网格生成高度网格。例如,计算系统可以确定针对手部的固定平面(例如,基于诸如用户的手掌等路标(landmark)位置)。计算系统可以基于3d网格确定与固定平面的变化,以便计算系统确定特定位置(例如,指尖、关节等)的深度偏离固定平面的深度。这些点处的变化可以被存储在高度网格中。计算系统还可以通过对已知距离进行插值(例如,跟踪位置)以确定推断距离,来计算3d网格位置处的高度。
76.如上所述,3d网格502和高度网格504可以由身体可穿戴计算系统120基于身体可穿戴计算系统120和头戴式装置系统110的可用计算资源和电力资源来生成。人工现实系统100可以寻求平衡渲染延迟和图形质量的考虑与人工现实系统100中所涉及的计算系统的
资源的可用性,诸如计算能力、存储器可用性、功率可用性等。例如,人工现实系统100可以主动管理哪些计算系统正在处理诸如手部跟踪、生成3d网格502和生成高度网格504等任务。人工现实系统100可以确定头戴式装置系统具有足够的电池电量和处理器可用性,并且指示头戴式装置系统110执行这些步骤。在特定实施例中,可以优选的是,允许头戴式装置系统110处理尽可能多的渲染过程,以减少由头戴式装置系统110与身体可穿戴计算系统120之间的数据传输引入的延迟。
77.3d网格502和高度网格504可以被传递到帧渲染器506。在特定实施例中,帧渲染器可以体现在身体可穿戴计算系统120或具有比头戴式装置系统110更多可用计算资源的另一计算设备中。帧渲染器506可以将3d网格502转换为表面表示,该表面表示包括基于3d网格502的边界的二维虚拟对象图元。该表面可以包括用于用户的手部的2d纹理508。在特定实施例中,2d纹理508可以与将表面标记为表示用户的手部的特定颜色相关联。在特定实施例中,纹理的颜色可以被指定为不透明的黑色,这表示,当“显示”纹理时,所有发光组件都不应当照射,并且在渲染虚拟环境时,光(例如,来自虚拟对象)不应当被允许穿过表面。该表面还可以与高度图510相关联,高度图510将高度网格504的位置和任何插值位置映射到表面的特定位置。在特定实施例中,在2d纹理508的位置与高度图510之间可能存在直接对应关系(例如,在每像素级别),其中高度网格504由于处理需要而可能具有较粗的分辨率。帧渲染器506可以执行这些步骤,同时在虚拟环境中生成虚拟对象的表面表示。帧渲染器506可以基于用户对虚拟环境的视点来生成表面表示。例如,头戴式装置系统110可以包括允许头戴式装置系统110确定用户在虚拟环境中的取向的各种传感器。帧渲染器506可以在生成表面时使用该取向信息,其中适当定位的2d表面可以用于基于用户的视点来表示3d对象。所生成的表面(包括2d纹理508和高度图510)可以被传递到子帧渲染器512。
78.子帧渲染器512可以负责为用户的手部的虚拟对象表示(例如,表面)执行主要可见性确定。如本文中进一步详细描述的,主要可见性确定可以包括将光线投射到虚拟场景中,并且确定对于任何光线,用户的手部的表面表示是否是相交的第一表面。这表明,用户的手部遮挡了虚拟环境中的其余虚拟对象,并且应当被显示给用户。如此命名子帧渲染器512是因为它可以以比帧渲染器506更高的速率产生帧(例如,要显示的图像)。例如,其中帧渲染器506可以例如以每秒60帧生成数据,子帧渲染器512可以例如以每秒200帧生成数据。在执行其主要可见性确定时,子帧渲染器512可以使用已更新的用户的视点(例如,自从从帧渲染器506接收到数据后更新的)来微调任何虚拟对象的可见性和定位(例如,通过修改对应表面的外观)。在特定实施例中,为了进一步减少延迟,子帧渲染器512可以被体现在头戴式装置系统110中以尽可能接近将直到输出帧的显示系统。这是为了减少用户的移动(例如,他们的头部或眼睛的移动)与向用户示出的图像(包含该移动)之间的延迟。
79.图6示出了根据本文中讨论的实施例为用户生成虚拟场景的图像的过程。图6继续建立在图3a至图3b和图5所示的示例之上。首先,头戴式装置系统110的相机捕获用户的环境的图像。该图像包括对象,例如用户的手部,该对象将遮挡场景中的虚拟对象。同时,头戴式装置系统110确定第一用户姿势600。第一用户姿势600可以从一个或多个所捕获的图像中确定(例如,使用slam或其他定位技术)。第一用户姿势600可以基于头戴式装置系统的一个或多个板载传感器(例如,惯性测量单元)来确定。所捕获的图像可以被例如头戴式装置系统110或身体可穿戴计算系统120用来执行手部跟踪以及生成3d网格502和高度网格504。
第一用户姿势600、3d网格502和高度网格504可以被传递给帧渲染器506。
80.帧渲染器506可以基于如上所述的3d网格502和高度网格504来生成用户的手部的表面虚拟对象表示以用于帧602。表面可以包括2d不透明纹理508、高度图510、以及在虚拟环境中表示用户的手部所需要的其他信息,例如用户的手部在环境中的位置、表面的边界等。帧渲染器506还可以生成表示虚拟环境中的其他虚拟对象604的表面。帧渲染器506可以执行产生该信息以支持第一帧速率(例如,60fps)所需要的计算。帧渲染器可以将所有这些信息传递给子帧渲染器512(例如,如果帧渲染器506体现在身体可穿戴计算机中,则通过无线连接)。
81.子帧渲染器512可以接收针对虚拟对象604的表面和用户的手部的虚拟对象表示。子帧渲染器512可以执行虚拟场景606中的表面的可见性确定。子帧渲染器512可以确定第二用户姿势608。第二用户姿势608可以不同于第一用户姿势600,因为,即使第一用户姿势600会随着每个生成的帧而被更新,用户可以稍微移动。未能考虑到用户的已更新姿势可能会在使用人工现实系统100时显著增加用户的不适感。可见性确定可以包括:基于第二用户姿势来执行将光线投射到虚拟环境中,若干光线(例如,光线610a、610b、610c、和610d)中的每个光线的起点基于头戴式装置系统110的显示器中的位置和第二用户姿势608。在特定实施例中,光线投射可以与由显示引擎112的变换块220a和220b执行的光线投射相似或一起执行。
82.对于用于可见性确定的每条光线,子帧渲染器512可以将光线投影到虚拟环境中并且确定光线是否与虚拟环境中的表面相交。在特定实施例中,深度测试(例如,确定哪个表面首先相交)可以在每表面级别执行。也就是说,每个表面可以具有允许子帧渲染器512(或变换块220a和220b)快速标识交互表面的独特的高度或深度值。例如,子帧渲染器512可以将光线610a投射到虚拟环境中,并且确定该光线首先与对应于虚拟对象304的表面相交。子帧渲染器512可以将光线610b投射到虚拟环境中,并且确定光线与虚拟对象304在对应于用户的手部的表面612附近的点处相交。子帧渲染器可以将光线610c投射到虚拟环境中,并且确定光线首先与对应于用户的手部的表面612相交。子帧渲染器512可以将光线610d投射到虚拟环境中,并且确定光线不与虚拟环境中的任何对象相交。
83.投射到环境中的每条光线可以对应于要被显示给用户的图像的一个或多个像素。与光线相对应的像素可以基于与光线相交的表面被分配颜色值。例如,与光线610a和610b相关联的像素可以基于虚拟对象304而被分配颜色值(例如,通过对与表面相关联的纹理值进行采样)。与光线610c相关联的像素可以基于表面612而被分配颜色值。在特定实施例中,颜色值可以被指定为不透明的(例如,不会发生混合,或者光会穿过)和暗色或黑色以为最终将显示渲染图像的显示器的发光组件提供指令。与光线610d相关联的像素可以被分配默认颜色。在特定实施例中,默认颜色可以与用于表面612的值相似或被赋予相同的值。该默认颜色可以被选择以允许用户的环境在没有虚拟对象要显示时可见(例如,如果有空白空间)。
84.子帧渲染器512可以使用对每条光线进行的颜色值确定来准备用于显示的图像。在特定实施例中,这可以包括由显示引擎112的像素块230a和230b以及显示块240a和240b执行的适当步骤。子帧渲染器512可以合成所确定的像素颜色值以准备用于显示给用户的子帧614。子帧可以包括虚拟对象616的表示,该表示看起来包括针对用户的手部的轮廓图。
当由头戴式装置系统的显示组件显示时,轮廓图可以允许用户的手部实际出现在表面612的位置。因此,用户将能够感知他们的实际手部与虚拟对象616交互。
85.图7示出了根据本文中讨论的实施例为用户生成虚拟场景的图像的过程。图7继续建立在图4a至图4b所示的示例之上。首先,头戴式装置系统110的相机捕获用户的环境的图像。该图像包括对象,例如用户的手部,该对象将遮挡场景中的虚拟对象。同时,头戴式装置系统110确定第一用户姿势700。例如,头戴式装置系统110或身体可穿戴计算系统120可以使用所捕获的图像来执行手部跟踪并且生成3d网格701和对应高度网格。第一用户姿势700、3d网格701和对应高度网格可以被传递到帧渲染器506。
86.帧渲染器506可以基于如上所述的3d网格701和高度网格生成用户的手部的表面(虚拟对象表示)以用于帧702。表面可以包括2d不透明纹理706、高度图708以及在虚拟环境中表示用户的手部所需要的其他信息,例如用户的手部在环境中的位置、表面的边界等。帧渲染器506还可以生成表示虚拟环境中的其他虚拟对象404的表面。帧渲染器506可以执行产生该信息以支持第一帧速率(例如,60fps)所需要的计算。帧渲染器可以将所有这些信息传递给子帧渲染器512(例如,如果帧渲染器506被体现在身体可穿戴计算机中,则通过无线连接)。
87.子帧渲染器512可以接收针对虚拟对象404的表面和用户的手部的虚拟对象表示。子帧渲染器512可以执行虚拟场景716中的表面的可见性确定。子帧渲染器512可以确定第二用户姿势710。第二用户姿势710可以不同于第一用户姿势700,因为,即使第一用户姿势700随着每个生成的帧而更新,用户可以稍微移动。未能考虑到用户的已更新姿势可能会在使用人工现实系统100时显著增加用户的不适感。可见性确定可以包括基于头戴式装置系统110的显示器中的位置和第二用户姿势720,以若干光线中的每个的起点基于第二用户姿势710将光线投射到虚拟环境中(例如,光线720a、720b、720c和720d)。在特定实施例中,光线投射可以与由显示引擎112的变换块220a和220b执行的光线投射相似或一起执行。
88.对于用于可见性确定的每条光线,子帧渲染器512可以将光线投影到虚拟环境中并且确定光线是否与虚拟环境中的表面相交。在特定实施例中,深度测试(例如,确定哪个表面首先相交)可以在每像素级别执行。也就是说,虚拟环境的每个表面可以具有允许子帧渲染器512(或变换块220a和220b)在个体像素的基础上区分表面之间的交互和交叉的高度图或深度图。例如,子帧渲染器512可以将光线720a投射到虚拟环境中,并且确定该光线首先与对应于虚拟对象404的表面相交。子帧渲染器512可以将光线720b投射到虚拟环境中,并且确定光线不会与虚拟环境中的任何对象相交。例如,子帧渲染器512可以将光线720c投射到虚拟环境中,并且确定光线首先与对应于虚拟对象404的表面相交。注意,光线720c在沿着虚拟对象724的表面的重叠区域的点相交,在该点处虚拟对象724与对应于用户的手部的表面722重叠。子帧渲染器可以将光线720d投射到虚拟环境中并且确定该光线首先与对应于用户的手部的表面722相交。
89.投射到环境中的每条光线可以对应于要被显示给用户的图像的一个或多个像素。与光线相对应的像素可以基于与光线相交的表面而被分配颜色值。例如,与光线720a和720c相关联的像素可以基于虚拟对象404而被分配颜色值(例如,通过对与表面相关联的纹理值进行采样)。与光线720d相关联的像素可以基于表面722而被分配颜色值。在特定实施例中,颜色值可以被指定为不透明的(例如,不会发生混合,或者光会通过)和暗色或黑色以
为最终将显示渲染图像的显示器的发光组件提供指令。与光线720b相关联的像素可以被分配默认颜色。在特定实施例中,默认颜色可以与用于表面722的值相似或被赋予相同的值。该默认颜色可以被选择以允许用户的环境在没有虚拟对象要显示时可见(例如,如果有空白空间)。
90.子帧渲染器512可以使用对每条光线进行的颜色值确定来准备用于显示的图像。在特定实施例中,这可以包括由显示引擎112的像素块230a和230b以及显示块240a和240b执行的适当步骤。子帧渲染器512可以合成所确定的像素颜色值以准备用于显示给用户的子帧728。子帧可以包括虚拟对象726的表示,该表示看起来包括针对用户的手部的轮廓图。当由头戴式装置系统的显示组件显示时,轮廓图可以允许用户的手部实际出现在表面722的位置。因此,用户将能够感知他们的实际手部与虚拟对象726和虚拟对象交互。虚拟对象726适当地遮挡他们手部的部分。
91.图8a至图8b示出了用于在增强现实中提供虚拟对象的真实世界对象遮挡的示例方法800。该方法可以开始于步骤810,其中头戴式装置系统110的至少一个相机(例如,头戴式显示器)可以捕获头戴式装置系统110的环境的图像。在特定实施例中,图像可以是标准的全彩色图像、单色图像、深度感测图像、或任何其他合适类型的图像。图像可以包括人工现实系统100确定应当被用于遮挡虚拟或混合现实视图中的某些虚拟对象的对象。在以下示例中,该对象是用户的手部,但可以是各种合适的对象,如上所述。
92.在特定实施例中,步骤815至步骤840可以涉及基于用户的手部的位置和虚拟环境中的虚拟对象来生成要显示给用户的帧。在特定实施例中,步骤815至步骤840中的一个或多个步骤可以由头戴式装置系统110、身体可穿戴计算系统120、或另一合适的计算系统来执行,该另一合适的计算系统具有比头戴式装置系统更大的计算资源并且通信地耦合到头戴式装置系统120。在特定实施例中,每个步骤中执行的工作可以由人工现实系统100的工作控制器在合格的计算系统之间分配。
93.该方法可以在步骤815继续,其中计算系统可以确定头戴式装置系统的用户对环境的视点。在特定实施例中,可以使用合适的定位和/或映射技术完全从环境的捕获图像确定视点。在特定实施例中,可以使用从头戴式装置系统的其他传感器检索的数据来确定视点。
94.在步骤820,计算系统可以检测用户的手部的姿势。为了检测用户的手部的位置,计算系统可以首先标识捕获图像中包括用户的手部的部分。计算系统可以执行若干算法中的一种以标识捕获图像中用户的手部的存在。在确认手部实际出现在图像中之后,计算系统可以执行手部跟踪分析,以标识捕获图像中用户的手部上的若干离散位置的存在和位置。在特定实施例中,可以使用深度跟踪相机促进手部跟踪。在特定实施例中,可以在没有使用深度学习和基于模型的跟踪的标准深度跟踪的情况下执行手部跟踪。深度神经网络可以被训练并且用于预测人的手部的位置以及路标,例如手部的关节和指尖。路标可以用于重构手部和手指的高自由度姿势(例如,26自由度姿势)。该姿势可以提供手部在环境中相对于用户的视点的位置。
95.在步骤825,计算系统可以基于检测到的姿势为用户的手部生成3d网格。使用所捕获的图像,计算系统可以准备用户的手部的模型,以说明检测到的姿势。在特定实施例中,3d网格可以是基于用户的手部的完全建模的虚拟对象,使得用户的手部可以在虚拟场景中
被充分地表示。从3d网格,计算系统可以生成用户的手部在环境中的高度图。例如,计算系统可以确定用户的手部的一部分的深度(例如,用户的手部与视点和/或相机的距离)。为了促进虚拟对象的准确遮挡,必须在更细粒度的基础上知道用户的手部的位置。仅基于图像而准确地计算深度可能在计算上非常昂贵。3d网格可以用于填充间隙,因为可以从3d网格确定用户的手部的轮廓,并且可以生成高度图或存储用户的手部的各种高度的数据结构。
96.在步骤830,计算系统可以确定用户对用户周围的虚拟环境的视点。虚拟环境可以由人工现实系统100执行的人工现实应用控制。虚拟环境可以包括虚拟环境中的多个虚拟对象。每个虚拟对象可以与描述其大小、形状、纹理、绝对位置(例如,相对于固定点)和相对位置(例如,相对于视点)的信息相关联。虚拟环境中的视点可以基于用户在真实环境中的视点与用户在虚拟环境中的视点之间的对应关系而被确定。该对应关系可以由人工现实系统100确定或者可以由用户指定(例如,校准)。
97.在步骤835,计算系统可以基于3d网格为用户的手部生成虚拟对象表示。虚拟对象表示(在整个本公开中也被称为表面)可以与纹理和相关高度图相关联。在特定实施例中,虚拟对象表示可以是从视点观察到虚拟环境中的用户的手部的3d网格的2d表示。2d表示可以足以表示3d网格,因为计算系统可以以足够快以使得用户将无法检测到仅生成2d表示的速率(例如,60hz或更高)来生成帧。
98.在步骤840,计算系统可以基于虚拟对象和虚拟环境的模型以及用户对虚拟环境的视点,来生成虚拟环境中的其他虚拟对象的表示。与用户的手部的虚拟对象表示类似,这些虚拟对象表示可以与虚拟对象的纹理和高度图相关联,该高度图可以用于快速模拟3d模型,例如在确定虚拟对象之间的相交时。总之,虚拟对象表示构成用于渲染虚拟环境的帧的数据。在此上下文中,帧指的是创建虚拟对象表示的速率。该速率可以基于用户的视点的特定移动程度的可能性而被确定。
99.该方法可以前进到图8b所示的步骤850。步骤850至步骤890可以涉及生成和提供用于显示的虚拟环境的子帧。子帧可以使用所生成和产生的数据作为虚拟环境的帧,在需要时更新数据,并且实际确定将由头戴式装置系统110的显示组件(例如,发光组件的阵列)示出给用户的图像。子帧可以以远高于准备帧的速率(例如,200hz或更高)的速率来准备和显示。由于准备子帧的速率很高,可能需要限制系统间通信。因此,步骤850至步骤890所需要的计算可以优选地由头戴式装置系统110本身执行,而不是由身体可穿戴计算系统120或通信耦合到头戴式装置系统110的其他计算系统执行。
100.在步骤850,计算系统可以确定用户对环境和用户周围的虚拟环境的已更新视点。可能需要已更新视点以允许准备考虑用户的微小运动(例如,头部运动、眼睛运动等)的子帧。已更新视点可以以与上述相同的方式来确定。
101.在步骤855,计算系统可以执行关于用户的手部的虚拟对象表示和虚拟对象表示的用户对虚拟环境的视点的主要可见性确定。特别地,可见性确定可以使用光线投射技术来执行。计算系统可以组织若干光线以投射到虚拟环境中。每条光线可以对应于要由头戴式装置系统110显示的图像的一个或多个像素。每个像素可以对应于头戴式装置系统110的光发射器的一个或多个显示位置。每条光线的起点可以基于用户对虚拟环境的视点和对应像素的位置。光线的方向可以类似地基于用户对虚拟环境的视点来确定。可以执行将光线投射到虚拟环境中以模拟光在虚拟环境中的行为。一般而言,投射光线构成确定光线是否
与虚拟环境中的虚拟对象相交,并且为与相交的光线相对应的像素分配颜色。
102.已经针对步骤860至880部分地描述了每条光线的过程。在步骤860,计算系统确定每条光线是否与虚拟环境中的虚拟对象相交。在特定实施例中,计算系统可以通过在固定距离或时间量内模拟光线进入虚拟环境的路径来检查相交。在路径的每一步,光线可以将其位置与已经为特定帧而生成的各种虚拟对象表示的位置进行比较。虚拟对象的位置基于为表示而指定的位置而是已知的,包括深度以及可以与表示相关联的高度图。使用该光线投射技术,假定针对与光线相对应的像素的正确颜色值是与其相交的第一虚拟对象相关联的颜色值。如果计算系统确定光线不与虚拟对象相交,则该方法可以直接前进到步骤875,如下文进一步描述的,与光线(以及随后对应像素)相关联的颜色值被设置为专用的直通颜色,其中发光器保持未照射,以允许光从环境直通到用户。如果计算系统确定光线确实与虚拟对象相交,则该方法可以前进到步骤865。
103.在步骤865,计算系统可以标识相交的虚拟对象表示,并且在相交的点处对对应纹理的颜色进行采样。为了对对应颜色进行采样,计算系统可以首先检索与相交的虚拟对象表示相关联的纹理。然后计算系统可以确定纹理上与相交相对应的点。这可以包括将相交的点从基于全局或基于视图的坐标转换为基于纹理的坐标。一旦确定了适当的坐标,计算系统就可以标识存储在纹理中适当位置处的颜色值。在特定实施例中,人工现实系统100可以使用快捷方式来减少执行该操作所需要的存储器访问时间。这样的快捷方式可以包括标记特定的虚拟对象表示
104.在步骤870,计算系统可以确定采样的颜色的值。如果采样的颜色是不透明的黑色(或指定为用于指示对应光发射器应当保持未照射的其他颜色),则该方法可以进行到步骤875。否则,该方法可以进行到步骤880。
105.在步骤875,计算系统可以将与光线相对应的像素的颜色值设置为直通颜色。直通颜色可以用于生成或以其他方式与对光发射器的指令相关联,该指令表示当最终图像作为子帧显示给用户时,光发射器不应当照射。示例直通颜色可以包括黑色(指示对应光发射器应当是暗的)或透明的(指示不应当由光发射器生成光)。
106.在步骤880,计算系统可以基于从交点处的纹理采样的颜色来设置颜色值。在特定实施例中,这可以包括在多个位置调度颜色插值(例如,当交点在纹理的离散纹素位置之间时)。在特定实施例中,设置颜色可以包括执行颜色调节和亮度校正(如上文关于显示引擎112的显示块240a和240b所述)。
107.在步骤885,计算系统可以基于为每条光线确定的颜色值和对应像素位置来生成用于显示为子帧的图像。该图像可以称为合成图像,因为它结合了某些位置的确定的颜色值(例如,显示从用户对虚拟环境的视点中可见的虚拟对象的图像位置)并且指示完全不应当在其他位置(例如,光线不与虚拟对象表示相交的位置、或光线首先与用户的手部的虚拟对象表示相交的位置)处产生光(例如,光发射器应当未照射)。因此,仅查看合成图像,观看方将看到渲染的虚拟对象和完全空白的位置。
108.在步骤890,计算系统可以提供子帧以供显示。计算系统可以基于用于头戴式装置系统110的显示器的光发射器的合成图像生成指令。指令可以包括颜色值、颜色亮度或强度、以及影响子帧显示的任何变量。指令还可以包括用于某些光发射器在需要时保持未照射或关闭的指令。如通篇所述,预期效果是用户能够从所确定的对虚拟环境的视点中看到
虚拟环境的部分(例如,虚拟环境中的虚拟对象),该部分与包括用户的手部(可能正在与虚拟环境中的虚拟对象交互)的真实环境的部分混合在一起。
109.在适当的情况下,特定实施例可以重复图8a至图8b的方法的一个或多个步骤。尽管本公开将图8a至图8b的方法的特定步骤描述和示出为以特定顺序发生,但是本公开考虑了图8a至图8b的方法的任何合适的步骤以任何合适的顺序发生。此外,尽管本公开描述和示出了用于在增强现实中提供虚拟对象的真实世界对象遮挡的示例方法,包括图8a至图8b的方法的特定步骤,但是本公开考虑了用于在增强现实中提供虚拟对象的真实世界对象遮挡的任何合适方法,包括任何合适的步骤,这些步骤在适当的情况下可以包括图8a至图8b的方法的步骤中的全部、一些或没有任何一个。此外,尽管本公开描述和示出了特定组件、设备或系统执行图8a至图8b的方法的特定步骤,但是本公开考虑了任何合适的组件、设备或系统的任何合适的组合执行图8a至图8b的方法的任何合适的步骤。
110.图9示出了示例计算机系统900。在特定实施例中,一个或多个计算机系统900执行本文中描述或示出的一种或多种方法的一个或多个步骤。在特定实施例中,一个或多个计算机系统900提供本文中描述或示出的功能。在特定实施例中,在一个或多个计算机系统900上运行的软件执行本文中描述或示出的一种或多种方法的一个或多个步骤,或者提供本文中描述或示出的功能。特定实施例包括一个或多个计算机系统900的一个或多个部分。在此,在适当的情况下,对计算机系统的引用可以涵盖计算设备,反之亦然。此外,在适当的情况下,对计算机系统的引用可以涵盖一个或多个计算机系统。
111.本公开设想任何合适数目的计算机系统900。本公开设想采用任何合适物理形式的计算机系统900。作为示例而非限制,计算机系统900可以是嵌入式计算机系统、片上系统(soc)、单板计算机系统(sbc)(例如,模块上计算机(com)或模块上系统(som))、台式计算机系统、膝上型或笔记本计算机系统、交互式信息亭、大型机、计算机系统网格、移动电话、个人数字助理(pda)、服务器、平板电脑系统、增强/虚拟现实设备、或上述各项中的两个或更多个的组合。在适当的情况下,计算机系统900可以包括一个或多个计算机系统900;是单一的或分布式的;跨越多个位置;跨越多个机器;跨越多个数据中心;或驻留在云中,该云可以包括一个或多个网络中的一个或多个云组件。在适当的情况下,一个或多个计算机系统900可以在没有实质空间或时间限制的情况下执行本文中描述或示出的一种或多种方法的一个或多个步骤。作为示例而非限制,一个或多个计算机系统900可以实时或以批处理模式执行本文中描述或示出的一种或多种方法的一个或多个步骤。在适当的情况下,一个或多个计算机系统900可以在不同时间或在不同位置执行本文中描述或示出的一种或多种方法的一个或多个步骤。
112.在特定实施例中,计算机系统900包括处理器902、存储器904、存储装置906、输入/输出(i/o)接口908、通信接口910和总线912。虽然本公开描述和示出了具有特定布置的特定数目的特定组件的特定计算机系统,但是本公开设想具有任何合适布置的任何合适数目的任何合适组件的任何合适的计算机系统。
113.在特定实施例中,处理器902包括用于执行指令的硬件,诸如构成计算机程序的那些。作为示例而非限制,为了执行指令,处理器902可以从内部寄存器、内部高速缓存、存储器904或存储装置906中检索(或获取)指令;解码并且执行指令;并且然后将一个或多个结果写入内部寄存器、内部高速缓存、存储器904或存储装置906。在特定实施例中,处理器902
可以包括用于数据、指令或地址的一个或多个内部高速缓存。在适当的情况下,本公开设想处理器902包括任何合适数目的任何合适的内部高速缓存。作为示例而非限制,处理器902可以包括一个或多个指令高速缓存、一个或多个数据高速缓存以及一个或多个转换后备缓冲器(tlb)。指令高速缓存中的指令可以是存储器904或存储装置906中的指令的副本,并且指令高速缓存可以加速处理器902对那些指令的检索。数据高速缓存中的数据可以是存储器904或存储装置906中用于在处理器902处执行以进行操作的指令的数据的副本;由在处理器902处执行的后续指令访问或用于写入存储器904或存储装置906的在处理器902处执行的先前指令的结果;或其他合适的数据。数据高速缓存可以加速处理器902的读取或写入操作。tlb可以加速处理器902的虚拟地址转换。在特定实施例中,处理器902可以包括用于数据、指令或地址的一个或多个内部寄存器。在适当的情况下,本公开设想处理器902包括任何合适数目的任何合适的内部寄存器。在适当的情况下,处理器902可以包括一个或多个算术逻辑单元(alu);是多核处理器;或者包括一个或多个处理器902。尽管本公开描述和示出特定处理器,但是本公开设想任何合适的处理器。
114.在特定实施例中,存储器904包括用于存储供处理器902执行的指令或供处理器902操作的数据的主存储器。作为示例而非限制,计算机系统900可以将指令从存储装置906或另一源(例如,另一计算机系统900)加载到存储器904。处理器902然后可以将指令从存储器904加载到内部寄存器或内部高速缓存。为了执行指令,处理器902可以从内部寄存器或内部高速缓存中检索指令并且对它们进行解码。在指令执行期间或之后,处理器902可以将一个或多个结果(其可以是中间或最终结果)写入内部寄存器或内部高速缓存。处理器902然后可以将这些结果中的一个或多个写入存储器904。在特定实施例中,处理器902仅执行一个或多个内部寄存器或内部高速缓存或存储器904中的指令(与存储装置906或其他地方相反)并且仅对一个或多个内部寄存器或内部高速缓存或存储器904中的数据进行操作(与存储装置906或其他地方相反)。一个或多个存储器总线(其每个可以包括地址总线和数据总线)可以将处理器902耦合到存储器904。总线912可以包括一条或多条存储器总线,如下所述。在特定实施例中,一个或多个存储器管理单元(mmu)驻留在处理器902与存储器904之间并且促进对由处理器902请求的存储器904的访问。在特定实施例中,存储器904包括随机存取存储器(ram)。在适当的情况下,该ram可以是易失性存储器。在适当的情况下,该ram可以是动态ram(dram)或静态ram(sram)。此外,在适当的情况下,该ram可以是单端口或多端口ram。本公开设想任何合适的ram。在适当的情况下,存储器904可以包括一个或多个存储器904。尽管本公开描述和示出了特定存储器,但本公开设想任何合适的存储器。
115.在特定实施例中,存储装置906包括用于数据或指令的大容量存储装置。作为示例而非限制,存储装置906可以包括硬盘驱动器(hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(usb)驱动器、或其中的两个或更多个的组合。在适当的情况下,存储装置906可以包括可移动或不可移动(或固定)介质。在适当的情况下,存储装置906可以在计算机系统900内部或外部。在特定实施例中,存储装置906是非易失性固态存储器。在特定实施例中,存储装置906包括只读存储器(rom)。在适当的情况下,该rom可以是掩模编程rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可更改rom(earom)或闪存、或其中的两个或更多个的组合。本公开设想采用任何合适的物理形式的大容量存储装置906。在适当的情况下,存储装置906可以包括促进处理器902与存储装置906之间的通信
的一个或多个存储控制单元。在适当的情况下,存储装置906可以包括一个或多个存储装置906。尽管本公开描述和示出了特定存储装置,但是本公开设想任何合适的存储装置。
116.在特定实施例中,i/o接口908包括用于为计算机系统900与一个或多个i/o设备之间的通信提供一个或多个接口的硬件、软件或这两者。在适当的情况下,计算机系统900可以包括这些i/o设备中的一个或多个。这些i/o设备中的一个或多个可以实现人与计算机系统900之间的通信。作为示例而非限制,i/o设备可以包括键盘、小键盘、麦克风、显示器、鼠标、打印机、扫描仪、扬声器、相机、触控笔、平板电脑、触摸屏、轨迹球、摄像机、其他合适的i/o设备、或其中的两个或更多个的组合。i/o设备可以包括一个或多个传感器。本公开设想任何合适的i/o设备和用于i/o设备的任何合适的i/o接口908。在适当的情况下,i/o接口908可以包括一个或多个设备或软件驱动程序,以使得处理器902能够驱动这些i/o设备中的一个或多个。在适当的情况下,i/o接口908可以包括一个或多个i/o接口908。尽管本公开描述和示出了特定i/o接口,但本公开设想任何合适的i/o接口。
117.在特定实施例中,通信接口910包括用于提供用于计算机系统900与一个或多个其他计算机系统900或一个或多个网络之间的通信(注入,基于分组的通信)的一个或多个接口的硬件、软件或这两者。作为示例而非限制,通信接口910可以包括用于与以太网或其他基于有线的网络进行通信的网络接口控制器(nic)或网络适配器、或者用于与无线网络(诸如wi-fi网络)进行通信的无线nic(wnic)或无线适配器。本公开设想任何合适的网络和用于其的任何合适的通信接口910。作为示例而非限制,计算机系统900可以与自组织网络、个域网(pan)、局域网(lan)、广域网(wan)、城域网(man)、或互联网的一个或多个部分、或其中的两个或更多个的组合进行通信。这些网络中的一个或多个的一个或多个部分可以是有线的或无线的。作为示例,计算机系统900可以与无线pan(wpan)(例如,bluetooth wpan)、wi-fi网络、wi-max网络、蜂窝电话网络(例如,全球移动通信系统(gsm)网络)或其他合适的无线网络、或其中的两个或更多个的组合进行通信。在适当的情况下,计算机系统900可以包括用于任何这些网络的任何合适的通信接口910。在适当的情况下,通信接口910可以包括一个或多个通信接口910。尽管本公开描述和示出了特定通信接口,但本公开设想任何合适的通信接口。
118.在特定实施例中,总线912包括用于将计算机系统900的组件彼此耦合的硬件、软件或这两者。作为示例而非限制,总线912可以包括加速图形端口(agp)或其他图形总线、增强型工业标准架构(eisa)总线、前端总线(fsb)、hypertransport(ht)互连、工业标准架构(isa)总线、infiniband互连、低引脚数(lpc)总线、存储器总线、微通道架构(mca)总线、外围组件互连(pci)总线、pci-express(pcie)总线、串行高级技术附件(sata)总线、视频电子标准协会本地(vlb)总线、或其他合适的总线、或其中的两个或更多个的组合。在适当的情况下,总线912可以包括一条或多条总线912。尽管本公开描述和示出了特定总线,但本公开设想任何合适的总线或互连。
119.本文中,在适当的情况下,一个或多个计算机可读非瞬态存储介质可以包括一个或多个基于半导体的或其他集成电路(ic)(例如,现场可编程门阵列(fpga)或特定应用ic(asic))、硬盘驱动器(hdd)、混合硬盘驱动器(hhd)、光盘、光盘驱动器(odd)、磁光盘、磁光驱动器、软盘、软盘驱动器(fdd)、磁带、固态驱动器(ssd)、ram驱动器、安全数字卡或驱动器、任何其他合适的计算机可读非暂态存储介质、或其中的两个或更多个的任何合适的组
合。在适当的情况下,计算机可读非暂态存储介质可以是易失性、非易失性或易失性和非易失性的组合。
120.本文中,“或”是包括性而非排他性的,除非另有明确说明或上下文另有说明。因此,本文中,“a或b”是指“a、b或这两者”,除非另有明确说明或上下文另有说明。此外,“和”既是联合的又是多个的,除非另有明确说明或上下文另有说明。因此,本文中,“a和b”是指“a和b,共同地或分别地”,除非另有明确说明或上下文另有说明。
121.本公开的范围包括本领域普通技术人员将理解的对本文中描述或示出的示例实施例的所有改变、替换、变型、变更和修改。本公开的范围不限于本文中描述或示出的示例实施例。此外,尽管本公开将本文中的各个实施例描述和示出为包括特定组件、元件、特征、功能、操作或步骤,但是这些实施例中的任何一个可以包括本领域普通技术人员将理解的本文任何地方描述或示出的任何组件、元件、特征、功能、操作或步骤的任何组合或排列。此外,在所附权利要求中对适于、被布置为、能够、被配置为、启用、可操作以或操作以执行特定功能的装置或系统或装置或系统的组件的引用涵盖该装置、系统、组件,无论它或该特定功能是否被激活、打开或解锁,只要该装置、系统或组件如此适配、布置、能够、被配置为、启用、可操作以或操作。此外,尽管本公开将特定实施例描述或示出为提供特定优点,但特定实施例可以不提供、提供一些或所有这些优点。
再多了解一些

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

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

相关文献