用于跟踪真实世界对象的移动以改进虚拟对象定位的增强技术的制作方法

文档序号:26008067发布日期:2021-07-23 21:27阅读:57来源:国知局
用于跟踪真实世界对象的移动以改进虚拟对象定位的增强技术的制作方法



背景技术:

混合现实显示呈现了计算机生成的虚拟对象,其可以“增强”用户周围的真实世界环境的视图。例如,用户可以放置三维虚拟物品(例如杯子),以看起来好像该虚拟物品位于真实世界中的“物理”对象(例如桌子)上。

尽管一些现有的计算设备允许用户在真实世界环境中将虚拟对象放置在物理对象上或附近,但是使得用户能够与这样的虚拟对象进行交互的功能可能受到限制。例如,在涉及虚拟杯子被定位为出现在真实世界的桌子上的上述示例中,当桌子移动时,并不是所有的系统都能管理杯子和桌子之间的关系。当使用特定设备(例如头戴式设备)来跟踪桌子的移动时,当桌子移出头戴式设备的视野时,可能会发生许多错误。在这种情况下,虚拟对象可能会变得与真实世界对象分离,并且计算机可能会失去以正确的方向或在正确的位置显示虚拟对象的能力。这样的结果可能会完全破坏混合现实环境的目的,即以精确的方式放置项目以增强真实世界的视图。当在诸如实时会议或针对很多用户的通信广播之类的通信会话期间显示混合现实环境时,这种问题更加严重。



技术实现要素:

本公开内容提供了用于跟踪真实世界对象的移动以改进在协作环境内共享的虚拟对象的定位的增强技术。本公开内容对现有系统提供了至少两个改进。在第一方面,本公开内容使设备能够利用远程设备的传感器来跟踪已经移出设备的观看区域的真实世界对象的位置。当真实世界对象移出第一设备的观看区域时,当对象进入第二设备的观看区域,第二设备可以使用由第一设备共享的数据来识别真实世界对象。共享的数据可以描述真实世界对象的物理特性,还可以定义任何关联的虚拟对象。然后,即使当真实世界对象已经移出第一设备的观看区域时,第二设备也可以维持真实世界对象与关联的虚拟对象之间的关联。此类技术可以扩大正在跟踪真实世界对象的移动的设备的覆盖范围。

在另一方面,通过以持久方式存储共享数据,系统可以维持不同通信会话之间的真实世界对象与虚拟对象之间的关联,例如在线会议或广播。例如,在使用skype的群组通信会话中,第一设备可以确定真实世界对象的物理特性。可以在通信会话期间或结束时存储定义物理特性的数据和定义虚拟对象的其他数据。当对新的通信会话进行实例化时,例如私人聊天,设备可以使用所存储的数据来识别与物理特性匹配的真实世界对象,然后显示在先前的通信会话中创建的相关联的虚拟对象。

本文公开的技术提供了改进现有计算机的许多特征。例如,由于计算机可以跟踪一个或多个对象的位置而无需用户输入,因此可以更高效地使用诸如处理器周期、存储器、网络带宽和功率之类的计算资源。用户输入的减少可以减少无意输入和其他相关错误(这会导致用户生产力效率低下)的可能性,以及减少将计算资源用于此类条目以及对无意条目的更正。还可以通过所公开的主题的实施方式来实现本文未具体提及的其他技术益处。

本领域技术人员还将意识到,本文所述的主题的各方面可以在除本文具体描述之外的其他计算机系统配置上实践或与其结合实践,这些计算机系统包括:多处理器系统、基于微处理器或可编程的消费电子产品、ar、vr和mr设备、视频游戏设备、手持计算机、智能手机、智能电视、自动驾驶汽车、智能手表、电子阅读器、平板计算设备、专用硬件设备、联网电器等。

通过阅读下文的具体实施方式以及浏览相关联的附图,除上文明确描述的功能和技术优势之外,其他功能和技术优势也将是显而易见的。提供本发明内容以便以简化的形式对下面在具体实施方式中进一步描述的设计构思的选择进行介绍。本发明内容并不旨在标识要求保护的主题的关键或重要特征,也不旨在用于协助确定要求保护的主题的范围。例如,术语“技术”可以指代上述上下文以及整个文档所允许的系统、方法、计算机可读指令、模块、算法、硬件逻辑单元和/或操作。

附图说明

参考附图描述了具体实施方式。在附图中,附图标记的最左边的数字标识该附图标记首次出现的附图。相同的附图标记在不同的附图中指示相似或相同的项目。对多个项目中的单独项目的引用可以使用具有字母序列中的字母的附图标记来指代每个单独的项目。对项目的一般引用可以使用没有字母序列的特定附图标记。

图1示出了涉及可以用来实现本文公开的技术的计算系统的示例场景。

图2示出了利用计算设备向用户显示的、用于检测真实世界环境中的真实世界对象的特性的视图。

图3示出了利用计算设备向用户显示的、用于跟踪真实世界环境中真实世界对象从第一位置的移动的视图。

图4示出了利用计算设备向用户显示的、用于检测真实世界环境中真实世界对象向第二房间位置移动的视图。

图5示出了利用计算设备向用户显示的、用于跟踪真实世界环境中真实世界对象从第一房间到第二房间的移动的视图。

图6示出了利用计算设备向用户显示的、用于跟踪真实世界对象的移动的视图,该视图显示了以下场景:墙挡住了真实世界对象的直接视图。

图7示出了利用远程计算设备向用户显示的、用于跟踪真实世界对象的移动的视图,其中跟踪涉及对真实世界对象的一个或多个特性的检测。

图8示出了利用远程计算设备向用户显示的、用于跟踪真实世界对象的移动的视图,其中远程计算设备与另一计算设备共享元数据以协调对真实世界对象的跟踪。

图9示出了利用计算设备向用户显示的、用于跟踪真实世界对象的移动的视图,其中计算设备基于从跟踪真实世界对象的位置的远程计算机共享的元数据来显示渲染。

图10是示出用于计算上高效的过程的例程的各方面的流程图,该过程用于跟踪在混合现实和虚拟现实协作环境中显示的真实世界对象的移动。

图11是示出用于本文公开的技术的说明性操作环境的各方面的计算系统图。

图12是示出可以实现本文公开的技术的各方面的计算设备的配置和操作的各方面的计算架构图。

图13是根据本文中公开的一个实施例的、示出可以实现所公开的技术的各方面的ar设备的配置和操作的各方面的计算设备图。

具体实施方式

图1示出了涉及可以用来实现本文公开的技术的计算系统100的示例场景。计算系统100可以包括第一计算机104a和第二计算机101b。在这种情况下,第一计算设备101记录在第一计算设备101a的观看区域121a内的真实世界对象110的各方面。在该说明性示例中,真实世界对象110是桌子。可以使用一个或多个传感器来测量和记录定义桌子的特性的元数据105,例如桌子大小、颜色、纹理、位置等。

第一计算设备101a还可以将虚拟对象111与真实世界对象110相关联,并生成定义虚拟对象111与真实世界对象110之间的多个关联的关联数据106。例如,关联数据106可以定义虚拟对象111和真实世界对象110的位置。定义位置的数据可用于定义相对位置,例如,每个项目的位置之间的差异。其他元数据105也可以定义虚拟对象111和真实世界对象110之间的关联。例如,图像数据108(在本文中也被称为“图像108”)可以由成像设备(例如照相机)生成,并且图像数据108可以由一个或多个计算设备101利用以识别和生成定义两个项目之间的图形关联的数据,例如,一个对象位于另一个项目的顶部、另一个项目的旁边,等等。出于说明目的,术语“对象”和“项目”可以指的是真实世界的对象或虚拟对象。

第一计算设备101a还可以通过使用模型数据109来渲染虚拟对象111,模型数据109定义虚拟对象111的参数,例如大小、形状、纹理或颜色。可以在相对于真实世界对象110的特定位置中渲染虚拟对象111。如图所示,虚拟对象111(在该示例中是杯子)被定位成具有如下外观:虚拟对象111被放置在真实世界对象110(桌子)的顶部表面上。提供该示例是出于说明性目的,并且不应被解释为限制性的。任何虚拟对象111和任何真实世界对象110都可以被本文公开的技术所利用,并以相对于彼此的任何相对位置显示。

计算设备101a的一个或多个传感器可以用于跟踪真实世界对象110的移动并根据真实世界对象110的新位置来修改虚拟对象111的位置。因此,如果桌子在特定方向移动,则杯子的位置跟随桌子的移动,以保持两个项目之间的图形关联,例如,杯子在桌子的顶部。

即使当特定的真实世界对象110在特定计算机的观看区域之外,例如不再在特定计算机的观看区域之内时,本文公开的技术也使多个计算设备能够追踪真实世界对象110的移动。参考图1,考虑一种示例场景,其中,真实世界对象桌子从第一房间(“房间1”)移动到第二房间(“房间2”)。在这种情况下,当真实世界对象110从第一计算设备101a的观看区域121a移动到第一计算设备101a的观看区域121a之外的新位置时,第一计算设备101a可以与第二计算设备101b协调继续跟踪真实世界对象110的移动。为了促进协调,将包括关联数据106、对象的一个或多个图像108和/或模型数据109的元数据105从第一计算设备101a传送到第二计算设备101b。在一些实施例中,元数据105可以定义由第一计算设备101a检测到的真实世界对象的一个或多个特性。如将在下文更详细地描述的,关联数据106可以定义虚拟对象与真实世界对象之间的关联,以及虚拟对象和真实世界对象的位置。模型数据109可以定义要与真实世界对象的显示同时显示的虚拟对象。

然后,第二计算设备101b可以利用元数据105来识别第二计算设备101b的观看区域121b内的真实世界对象110,例如桌子。在一个说明性示例中,第二计算设备101b可以测量真实世界对象110的物理特性,例如大小、一个或多个维度、纹理、颜色和/或形状。从指向重新定位的真实世界对象110的传感器检测到的任何测量结果都可以用来确定:第二计算设备101b的观看区域121b内的真实世界对象与第一计算设备101a所观看的真实世界对象相同。

如果确定由每个计算机生成的测量结果在阈值差之内,则可以确定第二计算设备101b所观看的特定真实世界对象与第一计算设备101a所观看的真实世界对象相匹配。在一些配置中,可以基于这两个计算设备收集的测量结果之间的差异来确定置信度得分。例如,第一计算设备101a可以确定在其相应的观看区域121a中的桌子是15.1英寸高,而第二计算设备101b可以确定在其相应的观看区域121b中的桌子是14英寸高。如果两个测量结果在阈值差之内,则一个或多个计算设备可以确定两个测量的视角相匹配。

在一些实施例中,可以基于组合的每个设备的两个测量结果来生成置信度得分。该置信度得分可以与其他置信度得分(例如,关于颜色、形状和/或其他物理性质的差异的置信度得分)进行组合,并且可以将置信度得分的组合与阈值进行比较。如果组合的置信度得分超过阈值,则可以确定匹配。

置信度得分也可以基于每个计算设备检测到的对象的位置。在一个说明性示例中,考虑第一计算设备101a生成指示真实世界对象的最后已知位置的数据的场景。然后,在对象移动了之后,第二计算设备101b检测真实世界对象的存在并生成指示对象的第一已知位置的数据。可以基于第一计算设备的最后已知位置与第二计算设备的第一已知位置之间的距离来生成置信度得分。如果置信度得分超过阈值,则可以确定匹配。

一旦第二计算设备101b识别出真实世界对象,例如确定了匹配,则元数据105可以被用来在与第一计算设备101a检测到的任何关联相一致的图形位置上渲染虚拟对象111。例如,如图1所示,虚拟对象111可以由第二计算设备101b显示,其中虚拟对象111相对于真实世界对象110的位置与由第一计算设备101a检测到的布置类似。

显示给第一计算设备101a的用户的第一透视图131a示出了在桌子从房间1移动到房间2之前的第一时间(“时间1”)的视图。显示给第二计算设备101b的用户的第二透视图131b示出了在桌子从房间1移动到房间2之后的第二时间(“时间2”)的视图。如图1所示,在该示例中,第二计算设备101b在靠近右前腿的桌子顶部的右手侧渲染杯子,该位置与在第一计算机101处示出的显示类似。

图2示出了利用第一计算设备101a的用户201的视图。如所示的,第一计算设备101具有针对真实世界环境112的观看区域121a,例如具有一个或多个真实世界对象110的房间。可以使用一个或多个传感器来生成定义真实世界环境112的图像的数据。通过使用第一计算设备101a的一个或多个显示设备,用户201可以观看第一透视图131a。

深度图数据(在本文中也被称为“网格数据”)可以由第一计算设备101a的一个或多个传感器生成。例如,深度图传感器和/或照相机可用于确定真实世界对象的表面各个点的坐标。基于这些坐标,可以生成真实世界对象110(例如桌子)的测量结果,例如高度(h)、宽度(w)和长度(l)。如果真实世界对象移动到第一计算设备101a的观看区域121a之外的位置并进入其他设备的观看区域,则可以与一个或多个设备共享这些测量结果以及定义一个或多个特性的其他测量结果,以允许其他设备识别真实世界对象110。深度图数据可以存储在关联数据106中,或者存储在元数据105的单独包中。

现在参考图3-图9,下面的描述说明了通过每个计算设备101的观察角度131进行的跟踪过程的几个阶段。如图3所示,第一计算设备101a可以检测真实世界对象110(例如桌子)在真实世界环境(例如房间1)中的第一位置处的位置。在该示例中,第一计算设备接收定义虚拟对象111(例如,杯子)的模型数据,该虚拟对象111被定位成使其看起来在桌子的顶部。

虚拟对象与桌子相关联,使得当桌子移动时,杯子以相应的方式移动。如图4所示,当桌子物理地向右移动时,杯子随桌子一起移动,使得杯子相对于桌子保持在同一位置,例如在顶部。但是,如图5所示,随着桌子移出第一计算设备101a的观看区域,第一计算设备101a的传感器可能无法确定真实世界对象110的位置。在这种情况下,虚拟对象111的渲染可能无法准确地描绘两个项目之间的图形关联。

如图6所示,当桌子在第一计算设备101a的观看区域121a之外时,第一计算设备101a不能准确确定桌子的位置,因此不能准确定位虚拟对象111的渲染。随着真实世界对象移动到第一计算设备101a的观看区域121a之外达到阈值水平,第一计算设备101a可以生成事件数据,该事件数据指示真实世界对象110何时在第一计算设备101a的观看区域121a之外。

事件数据的生成可以基于多种因素。例如,当真实世界对象110的图像变得失真或模糊到阈值水平时,第一计算设备101a可以确定真实世界对象110在观看区域121a之外。因此,如果真实世界对象110被另一对象部分覆盖达到阈值水平,则第一计算设备可以确定真实世界对象110在观看区域121a之外。在该示例中,随着房间的墙壁开始覆盖真实世界对象直至达到阈值水平(例如,桌子的四分之一、桌子的一半或桌子的四分之三),第一计算设备101a可以确定真实世界对象110在第一计算设备101a的观看区域121a之外。当真实世界对象的视图变得太模糊或太小时,也可以做出这样的确定。

响应于确定真实世界对象110在第一计算设备101a的观看区域121a之外,第一计算设备101a可以发起元数据105的至少一部分到一个或多个远程计算设备(例如第二计算设备101b)的通信。通信可以包括关联数据106、图像108或模型数据109中的至少一项。

在一些实施例中,通信会话内的预定动作可以引起元数据从第一计算设备101a到一个或多个远程计算机(例如第二计算设备101b)的传递。例如,如果协作环境内的用户发表引用虚拟对象111或真实世界对象110的评论,则第一计算设备101a可以将元数据发送到一个或多个远程计算机,例如第二计算设备101b。因此,用户可以说“我看到桌子”,并且作为响应,系统可以将元数据105发送到该用户的设备。元数据可用于验证真实世界对象的身份。

可以基于其他因素将元数据105发送到特定计算设备。在一个说明性示例中,第一计算设备101a可以将元数据105传送到预定距离内的任何计算设备或预定区域内的任何计算设备。在这样的实施例中,第一计算设备101a可以使用诸如gps设备或网络设备之类的位置设备来确定第一计算设备101a的位置。第一计算设备101a还可以从诸如第二计算设备101b之类的其他计算设备接收位置信息。如果确定特定计算机在预定距离之内和/或如果确定特定计算机在预定区域之内,该预定区域可以包括建筑物中的地理区域或特定区域,则可以将元数据105发送到满足该标准的那些计算机。

在其他说明性示例中,第一计算设备101a可以使用偏好数据、兼容性数据或性能数据中的至少一项来选择用于接收元数据105的远程计算设备。偏好数据可以包括例如由用户或计算机建立的计算设备的列表。在图1所示的示例中,第二计算设备101b可以在第一计算设备的偏好文件上。响应于确定偏好文件包括第二计算设备101b,第一计算设备101a可以将元数据105传送给第二计算设备。

兼容性数据可以指示一个或多个远程设备的规格。例如,第一计算设备上的文件可以确定元数据105可以被传递到包括特定相机和特定深度图传感器的任何远程计算机。在其他说明性示例中,第一计算设备可以确定元数据可以被传送到具有特定类型、品牌名称等的照相机的任何远程计算机。

性能数据可以指示一个或多个远程计算设备的性能。例如,第一计算设备上的文件可以确定元数据可以被传送到具有可以管理一段时间期间的阈值操作水平的微处理器的任何远程计算机。在其他示例中,第一计算设备可以确定元数据可以被传送到具有能够捕捉具有阈值分辨率水平的图像的照相机的任何远程计算设备。

一旦诸如第二计算设备101b之类的远程计算机接收到元数据105,该远程计算机就可以利用元数据105和其他上下文数据来确定真实世界对象110何时进入第二计算设备101b的观看区域121b内。

如图7所示,当真实世界对象110进入第二计算设备101b的观看区域121b时,第二计算设备101b可以利用传感器数据来识别真实世界对象110在观看区域121b内的物理特性。可以测量任何合适的物理特性,例如真实世界对象110的高度(h)、宽度(w)和长度(l)。由第二计算设备获得的特性可以用于确定观看区域121b中的真实世界对象是否相同,例如,是否与在第一计算设备101a的观看区域121a中观察到的真实世界对象相匹配。

如上所述,可以利用用于确定匹配的一种或多种技术。可以为真实世界对象的物理特性分配值或得分。当第二计算设备101b的观看区域121b内的真实世界对象的物理特性的值在由远程计算设备的传感器检测到的真实世界对象的至少一个特性的值的阈值差之内,例如,第一计算设备101a的观看区域121a之内的真实世界对象,可以确定匹配。

一旦检测到匹配,如图8所示,虚拟对象111被渲染在观察视角131b之内,以便向第二计算设备101b的用户显示。第二计算设备可以利用关联数据106来确定用于渲染虚拟对象111的位置,该位置可以处于相对于真实世界对象110的位置的特定位置。

在一个说明性实施例中,关联数据106可以定义真实世界对象110的表面内的特定点。例如,关联数据106可以包括定义桌子顶部的特定点(例如桌子的中心)的坐标。另外,关联数据106可以指示虚拟对象111的点或表面。例如,关联数据可以包括定义杯子底部的坐标。这样的数据可由第二计算设备101b利用来渲染虚拟对象111并将其定位于相对于真实世界对象110的特定位置。

当真实世界对象110移动到不同位置时,可以维持真实世界对象110与虚拟对象111之间的这种图形关联(在本文中也被称为“视觉关联”)。例如,桌子可以从房间2内的第一位置移动到房间2内的第二位置。当真实世界对象110保留在第二计算设备的观看区域中时,第二计算设备可以移动虚拟对象111以维持对象之间的相同图形关联,而不管真实世界对象110的位置如何。

同样在图8中示出,一旦第二计算设备101b识别了真实世界对象110,则第二计算设备101b可以将元数据105(例如,更新的元数据105)发送回第一计算设备101a。更新的元数据105可以包括对关联数据106、一个或多个图像108和/或模型数据109中的任何一项的更新。在一个说明性示例中,模型数据109可以包括指示虚拟对象111的位置和/或真实世界对象110的位置的定位数据。定位数据可以采用任何合适的格式,其可包括使用全球定位数据(gps)或其他基于坐标的数据格式来指示虚拟对象111的三维位置和/或真实世界对象110的位置。更新可以被周期性地发送到第一计算设备101a或其他计算设备。还可以响应于特定动作来发送更新,例如,虚拟对象111已经被移动或修改,或者真实世界对象110已经被移动。

在协作环境中,如果多个计算机与第二计算设备101b通信,则可以响应于特定动作,例如对虚拟对象111的修改或移动,将对元数据105的更新发送给每个计算机。还可以响应于其他用户动作而将对元数据105的更新发送到其他计算机。例如,计算设备可以监测协作环境的通信,例如,多个人正在共享视频流、音频流、文本通信等的通信会话。可以对通信进行分析以确定一个或多个关键字,例如对象的名称、对于对象的引用等。

如果协作环境内的用户发表引用虚拟对象111或真实世界对象110的评论,则对元数据105的更新也可以发送到其他计算机,包括发送或接收包含引用虚拟对象或真实世界对象的评论的通信数据的计算机。在一些实施例中,还可以与管理通信会话1104的计算设备共享对元数据105的更新。在这样的实施例中,可以将经更新的元数据105发送到参与通信会话的任何数量的计算设备。对元数据105的更新可以包括概括任何相关通信的文本描述。接收文本描述的计算机可以将这些描述显示为对虚拟对象111或真实世界对象110的注释。

接收到对元数据105的更新的任何计算设备(例如第一计算设备101a)然后可以根据更新的元数据来渲染虚拟对象111。如图9所示,虚拟对象111(杯子)被显示在第一计算设备101a的第一透视图131a内。在该示例中,第一计算设备101a还显示图形元素900,该图形元素900包括经更新的元数据105的各方面。具体而言,在该示例中,经更新的元数据105使第一计算设备101a显示图形元素900,该图形元素900指示虚拟杯子在下一个房间中,并且虚拟杯子与第一计算设备101a相距特定距离。提供该示例是出于说明性目的,并且该示例不应被解释为限制性的。可以理解,可以将与虚拟对象或真实世界对象有关的任何信息传送到第一计算设备101a或任何其他计算设备,并且可以传送和显示与对象有关的任何注释。

在一些实施例中,接收经更新的元数据的计算设备还可以修改虚拟对象111的显示以指示特定状态,例如,虚拟对象111在墙后或位于特定距离处。在该示例中,如图9所示,对虚拟对象111的显示进行了稍微修改(例如,以较细的轮廓进行渲染),以指示虚拟对象111位于特定距离处或位于真实世界对象(例如建筑物的墙壁)后面。

还如图9所示,接收经更新的元数据105的计算设备(例如第一计算设备101a)也可以显示真实世界对象110的渲染110'。该渲染允许计算设备(例如第一计算设备101a)的用户看到已经被移出第一计算设备101a的观看区域的真实世界对象110的位置。真实世界对象的渲染110'可以处于表示由第二计算设备101b检测到的真实世界对象110的位置的位置和比例。渲染110'可以被修改(例如,用虚线渲染)以指示真实世界对象以某种方式被阻挡或以其他方式被遮盖。

在另一方面,系统可以维持不同通信会话之间的真实世界对象与虚拟对象之间的关联,例如在线会议或广播。例如,在使用skype的群组通信会话中,第一设备可以确定真实世界对象的物理特性。定义物理特性的数据和定义虚拟对象的其他元数据可以在通信会话期间或结束时存储。元数据可以存储在远程计算机中,例如管理多个通信会话的服务器。当对新的通信会话进行实例化时,例如私人聊天,设备可以使用所存储的数据来识别与物理特性匹配的真实世界对象,然后显示在先前的通信会话中创建的相关联的虚拟对象。

图10是示出用于在计算上对与在混合现实和虚拟现实协作环境之内显示的对象相关联的数据进行高效管理的例程1000的各方面的图。本领域普通技术人员应该理解,本文所公开的方法的操作不必以任何特定顺序来呈现,并且以替代的顺序来执行一些或全部操作是可能的并且是可预期的。为了便于描述和说明,已按演示顺序呈现了操作。在不脱离所附权利要求的范围的情况下,可以添加、省略、一起执行和/或同时执行这些操作。

还应当理解,所示出的方法可以在任何时间结束并且不需要整体执行。方法的一些或全部操作和/或基本等效的操作可以通过执行在计算机存储介质上包括的计算机可读指令来执行,如本文所定义的。在说明书和权利要求书中使用的术语“计算机可读指令”及其变体在本文中被广泛使用以包括例程、应用、应用模块、程序模块、程序、部件、数据结构、算法等。可以在各种系统配置上实现计算机可读指令,包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的可编程消费电子产品、其组合等。尽管下文描述的示例例程在计算设备101上操作,该计算设备可以指代第一计算设备101a或第二计算设备101b,但是可以理解,该例程可以在可以包括协同工作以执行本文公开的操作的多个计算机的任何计算系统上执行。

因此,应当理解,本文所述的逻辑操作被实现为(1)在计算系统(例如本文所述的那些)上运行的计算机实现的动作或程序模块的序列和/或(2)计算系统内的互连的机器逻辑电路或电路模块。该实现是取决于计算系统的性能和其他要求的选择问题。因此,逻辑操作可以用软件、固件、专用数字逻辑单元及其任何组合来实现。

另外,可以与上述示例呈现用户界面(ui)相关联地实现图10和其他附图中所示的操作。例如,本文描述的各种设备和/或模块可以生成、发送、接收和/或显示与通信会话的内容相关联的数据(例如,直播内容、广播事件、录制内容等)和/或呈现ui,其包括远程计算设备、化身、频道、聊天会话、视频流、图像、虚拟对象和/或与通信会话相关联的应用的一个或多个参与者的渲染。

例程1000在操作1002处开始,其中计算设备101接收传感器数据,该传感器数据定义了真实世界环境112的3d表示。传感器数据可以由深度图传感器例如深度图相机捕捉。另外,传感器数据可以由图像传感器捕捉,例如,照相机,其中深度图传感器和图像传感器可以是同一组件的部分,或者可以是分别组件的部分。传感器数据包括深度图数据,该深度图数据定义了真实世界环境的三维模型和真实世界环境的图像。例如,真实世界环境可以包括房间的墙壁和房间内的特定对象,例如图1中所示的真实世界对象。传感器数据可以定义真实世界环境内的多个真实世界对象的物理属性。传感器数据还指示环境中一个或多个对象的位置。因此,可以通过对传感器数据的分析来进行对象的测量或环境的测量。传感器数据中定义的一个或多个对象可以与参与协作环境的多个用户共享。协作环境可以包括允许用户发送、接收和观看在显示设备上渲染的传感器数据的各个方面的通信会话。

例程1000然后进行到操作1002,在操作1002处,计算设备101接收定义要在协作环境的视图内显示的一个或多个虚拟对象的模型数据。模型数据可以定义将虚拟对象放置在协作环境的用户界面内的特定位置。

在操作1006处,计算设备101可以识别真实世界对象的至少一个特性。在一些实施例中,操作1006可以包括对真实世界对象的物理特征的识别或对真实世界对象的测量。特性(例如形状、大小、纹理、颜色)或任何其他可识别特性可以由计算设备的一个或多个传感器捕捉。该特性还可以包括其他标记,例如手写文本、符号、条形码等。

接下来,在操作1008处,计算设备101可以将定义特性的元数据105传送到一个或多个远程计算机。真实世界对象的特性可以存储在关联数据106中。关联数据106可以使远程计算机通过使用特性来容易地识别真实世界对象。

在一些配置中,可以响应于特定事件来将元数据105发送到远程计算机。例如,当将真实世界对象移出计算设备101的观看区域121a时,或者如果真实世界对象的视图至少部分被遮挡,则可以将元数据105传送到其他计算设备。

在一些配置中,响应于确定远程计算机满足关于硬件兼容性的一个或多个标准,可以将元数据105发送到远程计算机。在这样的实施例中,第一计算设备101a可以接收上下文数据,该上下文数据指示远程计算设备的一个或多个组件(即,传感器)的规范。例如,第二计算设备101b和其他计算机可以发送上下文数据,该上下文数据指示第二计算设备101b拥有具有特定分辨率的传感器,或具有特定光敏性的照相机,或者特定型号的深度图传感器。

当远程计算设备的一个或多个组件的规格(硬件规格或性能规格)满足一个或多个标准时,第一计算设备101a可以从多个计算设备中选择远程计算设备。然后,第一计算设备101a可以将定义真实世界对象的至少一个特性的元数据传送给具有满足标准的一个或多个组件的特定远程计算设备。该实施例实现了元数据的高效通信,并且仅将元数据发送到具有能够执行本文公开的技术的传感器或其他组件的计算设备。

接下来,在操作1010处,计算设备101(例如第二计算设备101b)可以接收元数据105并识别真实世界对象。如本文所述,如果一个或多个特性在阈值水平内匹配,则第二计算设备101b可以识别真实世界对象是与第一计算设备101a观察到的真实世界对象的匹配。

在一些实施例中,计算设备101可以确定观看区域内的真实世界对象的物理特性的第一值在远程计算设备的传感器所观察到的真实世界对象的至少一个物理特性的第二值的阈值差之内。在这样的实施例中,第一计算设备101a可以将第一值(例如,第一得分)与一个或多个特性(例如,颜色、大小、测量结果、纹理等)相关联。该第一值可以基于捕捉对象在从其原始位置移动之前的图像或深度图图像的(第一计算设备的)一个或多个传感器生成的数据,如图1所示。

在将对象移动到第二计算设备101b的观看区域(例如,第二计算设备101b的传感器的观看区域)内之后,第二计算设备可以将第二值(例如第二得分)与一个或多个特性(例如,颜色、大小、测量结果等)相关联。第二值可以基于捕捉对象在从其原始位置移动之后的图像或深度图图像的(第二计算设备的)一个或多个传感器生成的数据,如图1所示。

任何合适的值或得分可以与特性相关联。例如,颜色光谱中的各个颜色可以分别与得分相关联。浅红色可以与得分1相关联,深红色可以与得分2相关联,浅绿色可以与得分5相关联,并且深绿色可以与得分6相关联。因此,当每个计算设备解释真实世界对象的视图时,它们可以使用这样的值来确定特性是否在阈值内匹配。因此,即使第二计算设备将颜色识别为浅绿色并且第一计算设备将颜色识别为深绿色,这两个计算设备也可以根据本文公开的技术来识别匹配。可以用类似的方式来对其他特性(例如长度、纹理和其他测量结果)进行评分,并使用其他相应的阈值。

计算设备可以将第一值与第二值进行比较。响应于确定第一值和第二值在阈值差之内,第二计算设备可以采取另外的动作。例如,第二计算设备可以在显示设备上在相对于第二计算设备101b的观看区域内的真实世界对象的显示的位置处渲染虚拟对象。作为另一示例,第二计算设备101b可以开始跟踪真实世界对象的位置或移动。

在操作1012处,计算设备(例如第二计算设备101b)可以跟踪真实世界对象的移动。如图中所示和如上所述,第二计算设备101b可以基于元数据在相对于真实世界对象的特定位置渲染虚拟对象。第二计算设备101b可以跟踪真实世界对象的移动并且相应地移动虚拟对象的位置以维持两个项目之间的图形关联。

在操作1014处,可以将计算设备(例如第二计算设备101b)和经更新的元数据105传送到包括第一计算设备101a的其他计算机。经更新的元数据105可以允许其他计算机使用经更新的位置和/或对虚拟对象进行的扩充来显示虚拟对象的渲染。经更新的元数据105还可以使计算设备显示关于虚拟对象做出的注释或评论。在操作1016处,还可以持久地存储经更新的元数据,以使得一个或多个计算设备能够利用经更新的元数据和其他通信会话,随后例程1000结束。

应当理解,上述主题可以实现为计算机控制的装置、计算机进程、计算系统,或者诸如计算机可读存储介质的制品。示例方法的操作在单独的方框中示出,并且参考那些方框进行总结。这些方法被示为框的逻辑流,其中的每个框可以表示可以用硬件、软件或者它们的组合来实现的一个或多个操作。在软件的上下文中,操作表示存储在一个或多个计算机可读介质上的计算机可执行指令,所述计算机可执行指令在由一个或多个处理器执行时能够使这一个或多个处理器执行所阐述的操作。

通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、模块、部件、数据结构等。对操作进行描述的顺序不应当被解释为限制,并且任何数量的所描述操作可以用任何顺序执行,以任何顺序组合,细分为多个子操作和/或并行执行,以实现所描述的过程。可以由与一个或多个设备(例如一个或多个内部或外部cpu或gpu)和/或一个或多个硬件逻辑单元(例如现场可编程门阵列(“fpga”)、数字信号处理器(“dsp”)或其他类型的加速器)相关联的资源执行。

以上描述的所有方法和过程可以通过由一个或多个通用计算机或处理器执行的软件代码模块来体现并通过其完全自动化。代码模块可以存储在任何类型的计算机可读存储介质或其他计算机存储设备中,如下文所述的那些。这些方法中的一些或全部可以可替换地体现在专用计算机硬件中,如下文所述。

本文中描述的和/或在附图中描绘的流程图中的任何常规描述、元素或框应该被理解为潜在地表示代码的模块、片段或部分,其包括用于在例程中实现特定逻辑功能或元素的一个或多个可执行指令。替代实施方式包括在本文所述的示例的范围内,其中,元素或功能可以从显示或讨论的顺序中删除或不按顺序执行,包括以基本同步或相反的顺序执行,这取决于本领域技术人员可以理解的所涉及的功能。

图11是示出了示例环境1100的图,系统1102可以在其中实现本文公开的技术。在一些实施方式中,系统1102可以用于收集、分析和共享定义向通信会话1004的用户显示的一个或多个对象的数据。

如所示的,可以在与系统1102相关联或者是系统1102的一部分的多个客户端计算设备1106(1)至1106(n)之间实现通信会话1104(其中,n是值为2或更大的数字)。客户端计算设备1106(1)至1106(n)使得用户(也被称为个人)参与通信会话1104。例如,第一客户端计算设备1106(1)可以是图1的计算设备101或图13的计算设备1300之一。

在该示例中,通信会话1104由系统1102在一个或多个网络1108上托管。即,系统1102可以提供使客户端计算设备1106(1)至1106(n)的用户能够参与通信会话1104的服务(例如,经由实时观看和/或记录观看)。因此,通信会话1104的“参与者”可以包括用户和/或客户端计算设备(例如,多个用户可以在经由使用单个客户端计算设备参与通信会话的房间中),每个参与者可以与其他参与者交流。或者,通信会话1104可以由客户端计算设备1106(1)至1106(n)之一利用对等技术来托管。系统1102还可以托管聊天对话和其他团队协作功能(例如,作为应用套件的一部分)。

在一些实施方式中,这样的聊天对话和其他团队协作功能被认为是不同于通信会话1104的外部通信会话。被配置为收集通信会话1104中的参与者数据的计算机化代理能够链接到这样的外部通信会话。因此,计算机化的代理可以接收诸如日期、时间、会话特定信息等的信息,该信息使得能够连接到这种外部通信会话。在一示例中,可以根据通信会话1104进行聊天对话。另外,系统1102可以托管通信会话1104,通信会话1104包括共同位于会议位置(例如会议室或礼堂)或位于不同位置的至少多个参与者。

在本文描述的示例中,参与通信会话1104的客户端计算设备1106(1)至1106(n)被配置为进行接收并渲染通信数据以在显示屏幕的用户界面上进行显示。通信数据可以包括实时内容和/或记录内容的各种实例或流的集合。实时内容和/或记录内容的各种实例或流的集合可以由一个或多个相机(例如摄像机)提供。例如,实时内容或记录内容的单个流可以包括与由摄像机提供的视频信源相关联的媒体数据(例如,捕捉参与通信会话的用户的外观和语音的音频和视觉数据)。在一些实施方式中,视频信源可包括此类音频和视觉数据、一个或多个静止图像和/或一个或多个化身。一个或多个静止图像还可以包括一个或多个化身。

实时和/或记录内容的单个流的另一个示例可以包括媒体数据,该媒体数据包括参与通信会话的用户的化身连同捕捉用户语音的音频数据。实时或记录内容的单个流的又一示例可以包括媒体数据,该媒体数据包括在显示屏幕上显示的文件连同捕捉用户语音的音频数据。因此,通信数据中的实时和/或记录内容的各种流使得能够促进一群人之间的远程会议以及在一群人之内共享内容。在一些实施方式中,通信数据内的实时和/或记录内容的各种流可以源自位于某个空间(例如房间)中的用于记录或实时流式传输演示的多个共置的摄像机,演示包括一个或多个个人演示以及使用呈现内容的一个或多个个人。

参与者或出席者可以在活动发生时实时观看通信会话1104的内容,或者可替换地,在活动发生后的较晚时间通过记录进行观看。在本文描述的示例中,参与通信会话1104的客户端计算设备1106(1)至1106(n)被配置为进行接收并渲染通信数据以在显示屏幕的用户界面上进行显示。通信数据可以包括实时和/或记录内容的各种实例或流的集合。例如,单个内容流可以包括与视频信源相关联的媒体数据(例如,捕捉参与通信会话的用户的外貌和语音的音频和视觉数据)。单个内容流的另一示例可以包括媒体数据,该数据包括参与会议会话的用户的化身连同捕捉用户语音的音频数据。单个内容流的又一示例可以包括媒体数据,该媒体数据包括在显示屏幕上显示的内容项和/或捕捉用户语音的音频数据。因此,通信数据内的各种内容流使得能够在分散于远程位置的一群人之间促进会议或广播展示。

通信会话的参与者或出席者是照相机或其他图像和/或音频捕捉设备范围内的人,以使得可以捕捉(例如记录)当人正在观看和/或收听通过通信会话共享的内容时所产生的人的动作和/或声音。例如,参与者可以坐在人群中,观看舞台展示处发生的广播位置处的共享现场直播内容。或者,参与者可以坐在办公室会议室中,通过显示屏幕观看与其他同事的通信会话的共享内容。甚至更进一步,参与者可以坐在或站在个人设备(例如,平板电脑、智能手机、计算机等)的前面,独自在其办公室或在家中观看通信会话的共享内容。

系统1102包括设备1110。设备1110和/或系统1102的其他组件可以包括分布式计算资源,其经由一个或多个网络1108彼此通信和/或与客户端计算设备1106(1)至1106(n)通信。在一些示例中,系统1102可以是负责管理一个或多个通信会话(例如通信会话1104)的各个方面的任务的独立系统。作为示例,系统1102可以由诸如slack、webex、gotomeeting、googlehangouts等的实体进行管理。

网络1108可以包括,例如,诸如互联网之类的公共网络、诸如机构和/或个人内联网之类的私有网络,或者私有网络和公共网络的某种组合。网络1108还可以包括任何类型的有线和/或无线网络,包括但不限于局域网(“lan”)、广域网(“wan”)、卫星网络、电缆网络、wi-fi网络、wimax网络、移动通信网络(例如3g、4g等)或其任意组合。网络1108可以利用通信协议,包括基于分组和/或基于数据报的协议,例如互联网协议(“ip”)、传输控制协议(“tcp”)、用户数据报协议(“udp”)或其他类型的协议。此外,网络1108还可以包括促进网络通信和/或形成网络硬件基础的多个设备,例如交换机、路由器、网关、接入点、防火墙、基站、转发器、骨干设备,等等。

在一些示例中,网络1108还可以包括能够连接到无线网络的设备,例如无线接入点(“wap”)。示例支持通过在各种电磁频率(例如,射频)上发送和接收数据的wap的连通性,包括支持电气和电子工程师协会(“ieee”)802.11标准(例如802.11g、802.11n、802.1lac等)和其他标准的wap。

在各种示例中,设备1110可以包括以集群或其他成组的配置进行操作以共享资源、平衡负载、提高性能、提供故障转移支持或冗余或者用于其他目的的一个或多个计算设备。例如,设备1110可以属于各种类型的设备,例如传统的服务器类型设备、桌面式计算机类型设备和/或移动类型设备。因此,尽管被示为单一类型的设备或服务器类型的设备,但设备1110可以包括各种各样的设备类型,并且不限于特定类型的设备。设备1110可以表示但不限于服务器计算机、桌面式计算机、网络服务器计算机、个人计算机、移动计算机、膝上型计算机、平板计算机或任何其他种类的计算设备。

客户端计算设备(例如,客户端计算设备1106(1)至1106(n)中的一个)可以属于各个种类的设备,其可以与设备1110相同或不同,例如传统的客户端类型设备、桌面式计算机类型设备、移动类型设备、专用类型设备、嵌入式类型设备和/或可穿戴类型设备。因此,客户端计算设备可以包括但不限于桌面式计算机、游戏控制台和/或游戏设备、平板计算机、个人数据助理(“pda”)、移动电话/平板电脑混合设备、膝上型计算机、电信设备、计算机导航类型客户端计算设备(例如包括全球定位系统(“gps”)设备的基于卫星的导航系统)、可穿戴设备、虚拟现实(“vr”)设备、增强现实(“ar”)设备、植入式计算设备、汽车计算机、具有网络功能的电视、精简客户端、终端、物联网(“iot”)设备、工作站、媒体播放器、个人录像机(“pvr”)、机顶盒、摄像机,用于包括在计算设备、电器设备或任何其他种类的计算设备中的集成组件(例如外围设备)。此外,客户端计算设备可以包括客户端计算设备的较早列出的示例的组合,例如诸如桌面式计算机类型设备或移动类型设备与可穿戴设备的组合,等等。

各种类别和设备类型的客户端计算设备1106(1)至1106(n)可以表示具有可操作地连接至计算机可读介质1194(例如经由总线1116)的一个或多个数据处理单元1192的任何类型的计算设备,总线1116在一些实例中可以包括系统总线、数据总线、地址总线、pci总线、mini-pci总线以及任何各种本地、外围设备和/或独立总线中的一项或多项。

存储在计算机可读介质1194上的可执行指令可以包括例如操作系统1119、客户端模块1120、简档模块1122以及可由数据处理单元1192加载和执行的其他模块、程序或应用。

客户端计算设备1106(1)至1106(n)还可以包括一个或多个接口1124,以实现客户端计算设备1106(1)至1106(n)通过网络1108与其他联网设备(例如设备1110)之间的通信。这样的网络接口1124可以包括一个或多个网络接口控制器(nic)或其他类型的收发机设备,以通过网络发送和接收通信和/或数据。此外,客户端计算设备1106(1)至1106(n)可以包括输入/输出(“i/o”)接口(设备)1126,其能够与输入/输出设备进行通信,例如包括外围输入设备(例如,游戏控制器、键盘、鼠标、笔、诸如麦克风之类的语音输入设备、用于获得和提供视频信源和/或静止图像的摄像机、触摸输入设备、手势输入设备,等等)的用户输入设备和/或包括外围输出设备(例如,显示器、打印机、音频扬声器、触觉输出设备等)的输出设备。图11示出了客户端计算设备1106(1)以某种方式连接到显示设备(例如,显示屏幕1129(1)),该显示设备可以根据本文所述的技术来显示ui。

在图11的示例环境1100中,客户端计算设备1106(1)至1106(n)可以使用其各自的客户端模块1120与彼此和/或其他外部设备连接,以便参与通信会话1104,或者以便向协作环境贡献活动。例如,第一用户可以利用客户端计算设备1106(1)来与另一客户端计算设备1106(2)的第二用户通信。当执行客户端模块1120时,用户可以共享数据,这可以导致客户端计算设备1106(1)通过网络1108连接到系统1102和/或其他客户端计算设备1106(2)至1106(n)。

客户端计算设备1106(1)至1106(n)可以使用其各自的简档模块1122来生成参与者简档(图11中未示出),并将参与者简档提供给其他客户端计算设备和/或系统1102的设备1110。参与者简档可以包括下列一项或多项:用户或一组用户的身份(例如名称、唯一标识符(“id”)等)、用户数据(例如个人数据)、机器数据(例如位置)(例如ip地址、建筑物中的房间等)以及技术能力,等等。参与者简档可用于注册通信会话的参与者。

如图11所示,系统1102的设备1110包括服务器模块1130和输出模块1132。在该示例中,服务器模块1130被配置为从各个客户端计算设备(例如客户端计算设备1106(1)至1106(n))接收媒体流1134(1)至1134(n)。如上所述,媒体流可以包括视频信源(例如,与用户相关联的音频和视觉数据)、将与用户的化身的呈现一起输出的音频数据(例如,不发送用户视频数据的纯音频体验)、文本数据(例如,文本消息)、文件数据和/或屏幕共享数据(例如,在显示屏幕上显示的文档、幻灯片、图像、视频等)等等。因此,服务器模块1130被配置为在实时观看通信会话1104期间接收各种媒体流1134(1)至1134(n)的集合(该集合在本文中被称为“媒体数据1134”)。在一些情况下,并非所有参与通信会话1104的客户端计算设备都提供媒体流。例如,客户端计算设备可以仅是消费设备或“监听”设备,使得其仅接收与通信会话1104相关联的内容,而不向通信会话1104提供任何内容。

在各个示例中,服务器模块1130可以选择要与参与的客户端计算设备1106(1)至1106(n)中的各个客户端计算设备共享的媒体流1134的各个方面。因此,服务器模块1130可以被配置为基于流1134生成会话数据1136和/或将会话数据1136传递到输出模块1132。然后,输出模块1132可以将通信数据1139传送到客户端计算设备(例如,参与实时观看通信会话的客户端计算设备1106(1)至1106(n))。通信数据1139可以包括视频、音频和/或其他内容数据、由输出模块1132基于与输出模块1132相关联的内容1150并且基于所接收的会话数据1136来提供。

如所示的,输出模块1132将通信数据1139(1)发送到客户端计算设备1106(1),并且将通信数据1139(2)发送到客户端计算设备1106(2),并且将通信数据1139(3)发送到客户端计算设备1106(3),等等。发送到客户端计算设备的通信数据1139可以相同或可以不同(例如,用户界面内的内容流的定位可以在设备之间变化)。

在各种实现中,设备1110和/或客户端模块1120可以包括gui呈现模块1140。gui呈现模块1140可以被配置为对通信数据1139进行分析,该通信数据1139用于传递到一个或多个客户端计算设备1106。具体而言,在设备1110和/或客户端计算设备1106处的ui呈现模块1140可以分析通信数据1139以确定用于在相关联的客户端计算设备1106的显示屏幕1129上显示视频、图像和/或内容的适当方式。在一些实施方式中,gui呈现模块1140可以将视频、图像和/或内容提供给渲染在相关联的客户端计算设备1106的显示屏幕1129上的呈现gui1146。gui呈现模块1140可以使呈现gui1146渲染在显示屏幕1129上。呈现gui1146可以包括由gui呈现模块1140分析的视频、图像和/或内容。

在一些实施方式中,呈现gui1146可以包括多个部分或网格,其可以渲染或包括以供在显示屏幕1129上显示的视频、图像和/或内容。例如,呈现gui1146的第一部分可以包括呈现者或个人的视频信源,并且呈现gui1146的第二部分可以包括由呈现者或个人提供的个人消费会议信息的视频信源。gui呈现模块1140可以以适当地模仿呈现者和个人可以共享的环境体验的方式来填充呈现gui1146的第一和第二部分。

在一些实施方式中,gui呈现模块1140可以放大或提供由视频信源所表示的个体的缩放视图,以便突出显示个人对呈现者的反应,例如面部特征。在一些实施方式中,呈现gui1146可以包括与会议(例如一般通信会话)相关联的多个参与者的视频信源。在其他实施方式中,呈现gui1146可以与诸如聊天频道、企业团队频道等的频道相关联。因此,呈现gui1146可以与不同于一般通信会话的外部通信会话相关联。

图12图示了示出示例设备1200(在本文中也被称为“计算设备”)的示例组件的图,该示例设备1200被配置为生成用于本文公开的一些用户界面的数据。设备1200可以生成可以包括一个或多个部分的数据,该一个或多个部分可以渲染或包括视频、图像、虚拟对象116和/或用于在显示屏幕1129上显示的内容。设备1200可以表示本文描述的设备之一。附加地或可替代地,设备1200可以表示客户端计算设备1106之一。

如所示的,设备1200包括一个或多个数据处理单元1202、计算机可读介质1204和通信接口1206。设备1200的组件例如经由总线1208可操作地连接,该总线1208可以包括系统总线、数据总线、地址总线、pci总线、mini-pci总线和任何种类的本地、外围和/或独立总线中的一项或多项。

如本文所使用的,数据处理单元(例如数据处理单元1202和/或数据处理单元1192)可以表示例如cpu类型数据处理单元、gpu类型数据处理单元、现场可编程门阵列(“fpga”)、另一类数字信号处理器(“dsp”)或者在某些情况下可由cpu驱动的其他硬件逻辑组件。作为示例而非限制,可以利用的说明性类型的硬件逻辑组件包括专用集成电路(“asic”)、专用标准产品(“assp”)、片上系统(“soc”)、复杂可编程逻辑器件(“cpld”),等等。

如本文所利用的,计算机可读介质(例如计算机可读介质1204和计算机可读介质1194)可以存储可由数据处理单元执行的指令。计算机可读介质还可以存储可由外部数据处理单元(例如,外部cpu、外部gpu)执行和/或由外部加速器(例如,fpga类型加速器、dsp类型加速器或任何其他内部或外部加速器)执行的指令。在各种示例中,在计算设备中并入了至少一个cpu、gpu和/或加速器,而在一些示例中,cpu、gpu和/或加速器中的一个或多个在计算设备的外部。

计算机可读介质(在本文中也可以被称为计算机可读媒介)可以包括计算机存储介质和/或通信介质。计算机存储介质可以包括以下中的一个或多个:易失性存储器、非易失性存储器和/或其他持久性和/或辅助计算机存储介质、以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术来实现的可移动和不可移动计算机存储介质。因此,计算机存储介质包括作为设备一部分或在设备外部的设备和/或硬件组件中包括的有形和/或物理形式的介质,包括但不限于随机存取存储器(“ram”)、静态随机存取存储器(“sram”)、动态随机存取存储器(“dram”)、相变存储器(“pcm”)、只读存储器(“rom”)、可擦除可编程只读存储器(“eprom”)、电可擦可编程只读存储器(“eeprom”)、闪存、压缩盘只读存储器(“cd-rom”)、数字多功能磁盘(“dvd”)、光学卡或其他光学存储介质、盒式磁带、磁条、磁盘存储、磁性卡或其他磁性存储设备或介质、固态存储器设备、存储阵列、网络连接存储、存储区域网络、托管计算机存储或任何其他存储存储器、存储设备和/或可用于存储和维护供计算设备访问的信息的存储介质。

相比于计算机存储介质,通信介质可以体现计算机-可读指令、数据结构、程序模块或调制数据信号中的其他数据(如载波波形)或其他传输机制。如本文中定义的,计算机存储介质不包括通信介质。即,计算机存储介质本身不包括仅由调制数据信号、载波或传播信号组成的通信介质。

通信接口1206可以表示例如网络接口控制器(“nic”)或其他类型的收发机设备,以通过网络发送和接收通信。此外,通信接口1206可以包括一个或多个摄像机和/或音频设备1222,以使得能够生成视频信源和/或静止图像等等。

在所说明的示例中,计算机可读介质1204包括数据存储单元1208。在一些示例中,数据存储单元1208包括诸如数据库、数据仓库或其他类型的结构化或非结构化数据存储之类的数据存储库。在一些示例中,数据存储单元1208包括具有一个或多个表、索引、存储过程等的语料库和/或关系数据库,以实现包括例如以下中的一项或多项的数据访问:超文本标记语言(“html”)表、资源描述框架(“rdf”)表、网络本体语言(“owl”)表和/或可扩展标记语言(“xml”)表。

数据存储单元1208可以存储用于存储在计算机可读介质1204中和/或由数据处理单元1202和/或加速器执行的过程、应用、组件和/或模块的操作的数据。例如,在一些示例中,数据存储单元1208可以存储会话数据1210、简档数据1212(例如,与参与者简档相关联的)和/或其他数据。会话数据1210可以包括通信会话中的参与者(例如,用户和/或客户端计算设备)的总数,在该通信会话中发生的活动,该通信会话的受邀者列表和/或与何时以及如何进行或托管通信会话有关的其他数据。数据存储单元1208还可以包括内容数据1214,例如包括视频、音频的内容或用于在一个或多个显示屏幕1129上渲染和显示的其他内容。

可选地,一些或全部上述引用的数据可以存储在一个或多个数据处理单元1202上的分别的存储器1216上,例如cpu类型处理器、gpu类型处理器、fpga类型加速器、dsp类型加速器和/或其他加速器上的存储器。在该示例中,计算机可读介质1204还包括操作系统1218和被配置为向其他设备公开设备1200的功能和数据的应用编程接口1210(api)。另外,尽管示出的模块的数量仅是示例,并且该数量可以变得更高或更低,计算机可读介质1204包括一个或多个模块,例如服务器模块1230、输出模块1232以及gui呈现模块1240。即,本文所描述的与所示出的模块相关联的功能可以由一个设备上的较少数量的模块或较大数量的模块来执行或者分布在多个设备上。

图13是示出可以实现本文公开的系统的各方面的计算设备1300的配置和操作的各方面的计算设备图。计算设备1300示出了图1所示的计算设备101的细节。计算设备1300可以提供增强现实(“ar”)环境或虚拟现实(“vr”)环境。一般而言,ar环境将计算机生成的(“cg”)图像叠加在真实世界环境的用户视图上。例如,计算设备1300可以生成合成视图以使得用户能够在视觉上感知叠加在真实世界环境112的渲染上的计算机生成的图像,其中可以使用朝向真实世界环境112(例如房间)的传感器1399(例如,深度图传感器或照相机)的图像数据来显示真实世界环境112的渲染。在一些实施例中,计算设备1300可以生成合成视图,以使得用户能够在视觉上感知叠加在真实世界环境112的直接视图上的计算机生成的图像。因此,计算设备1300可以具有棱镜或其他光学设备,该棱镜或其他光学设备允许用户透视光学设备以看到真实世界对象或真实世界环境的直接视图,并且同时看到叠加在真实世界对象视图上的计算机生成的图像。ar环境在本文中也可以被称为混合现实(“mr”)环境。vr环境包括虚拟环境和虚拟对象的计算机生成的图像。mr和ar环境可以利用深度图传感器来确定设备与真实世界对象之间的距离。这允许计算机以逼真的方式在真实世界对象的图像上缩放和定位计算机生成的图形。

在图13所示的示例中,光学系统1302包括照明引擎1304,以生成电磁(“em”)辐射,该电磁辐射包括用于生成cg图像的第一带宽以及用于跟踪物理对象的第二带宽。第一带宽可以包括em频谱的可见光部分中的一些或全部,而第二带宽可以包括适合于部署期望的跟踪协议的em频谱的任何部分。在该示例中,光学系统1302还包括光学组件1306,其定位成从照明引擎1304接收em辐射并且沿着一个或多个预定光学路径来引导em辐射(或其单独的带宽)。

例如,照明引擎1304可以沿着由第一带宽和第二带宽二者共享的公共光学路径将em辐射发射到光学组件1306中。光学组件1306还可以包括一个或多个光学部件,其被配置为将第一带宽与第二带宽分开(例如,通过使第一带宽和第二带宽分别沿着不同的图像生成和对象跟踪光学路径传播)。

在一些情况下,用户体验取决于计算设备1300准确地识别物理对象或平面(例如,真实世界的地板)的特性,然后根据这些识别出的特性来生成cg图像。例如,假设对计算设备1300进行编程以生成以下用户感知:虚拟游戏角色正在奔向并最终跳过真实世界结构。为了获得该用户感知,计算设备1300可以获取详细数据,该详细数据定义了计算设备1300周围的真实世界环境112的特征。为了提供该功能,在一些实施例中,计算设备1300的光学系统1302可以包括激光线投影仪和差分成像相机(均未在图13中示出)。

在一些示例中,计算设备1300利用光学系统1302来生成包括一个或多个cg图像以及真实世界环境112的至少一部分的视图的合成视图(例如,从佩戴计算设备1300的用户的角度)。例如,光学系统1302可以利用诸如ar技术之类的各种技术来生成包括叠加在真实世界视图上的cg图像的合成视图。这样,光学系统1302可以被配置为经由包括显示面板1314的光学组件1306来生成cg图像。

在所示的示例中,显示面板包括分别被标记为1314r和1314l的单独的右眼和左眼透明显示面板。在一些示例中,显示面板1314包括可以用两只眼睛观看的单个透明显示面板或仅可以用单只眼睛观看的单个透明显示面板。因此,可以理解,本文描述的技术可以部署在单眼设备(例如,googleglassar设备)内和双眼设备(例如,microsofthololensar设备)内。

从真实世界环境112接收的光穿过透视显示面板1314到达用户的单眼或双眼。由在处理单元1320上执行的图像生成引擎1326计算并由右眼和左眼显示面板显示的图形内容(如果被配置为透视显示面板)可以用于视觉上增强或以其他方式修改用户通过透视显示面板1314观看的真实世界环境112。在这种配置中,用户能够在观看真实世界环境112中的物理对象(在本文中也被称为“真实世界对象”)的同时观看真实世界环境112中不存在的虚拟对象。这会产生一种假象或表象,即虚拟对象是物理对象或物理上呈现真实世界环境112中的基于光的效果。

在一些示例中,显示面板1314是波导显示器,其包括一个或多个衍射光学元件(“doe”),用于将入射光耦合到波导中、在一个或多个方向上扩展入射光以用于出射光瞳扩展,和/或将入射光耦合出波导(例如,朝向用户的眼睛)。在一些示例中,计算设备1300还包括附加的透视光学组件,以透明薄纱1316的形式在图13中示出,该透明薄纱位于真实世界环境112和显示面板1314之间。可以理解的是,出于纯粹的美学和/或保护目的,透明薄纱1316可以被包括在计算设备1300中。

计算设备1300还可以包括各种其他部件(在图13中未全部示出),例如,前置相机(例如,红色/绿色/蓝色(“rgb”),黑白(“b&w”)或红外(“ir”)相机)、扬声器、麦克风、加速计、陀螺仪、磁力计、温度传感器、触摸传感器、生物识别传感器、其他图像传感器、储能部件(例如电池)、通信设施、全球定位系统(“gps”)、接收机、激光线投影仪、差分成像相机以及可能的其他类型的传感器。从一个或多个传感器1308(其中一些已在上文标识)获得的数据可用于确定计算设备1300的方向、位置和移动。如上所述,从差分成像相机和激光线投影仪或其他类型的传感器获得的数据也可以用于生成周围真实世界环境112的3d深度图。

在所示的示例中,计算设备1300包括一个或多个逻辑设备和一个或多个计算机存储设备,该计算机存储设备存储可由逻辑设备执行以实现本文公开的功能的指令。特别地,控制器1318可以包括一个或多个处理单元1320、用于存储操作系统1324的一个或多个计算机可读介质1322、图像生成引擎1326和地形映射引擎1328,以及其他程序(例如被配置为以本文公开的方式生成网格数据的3d深度图生成模块)和数据。

在一些实施方式中,计算设备1300被配置为:对由传感器1308获得的数据进行分析,以对计算设备1300的方向执行基于特征的跟踪。例如,在对象数据包括对真实世界环境112(例如,桌子)内的静止物理对象(在本文中也被称为“真实世界对象”)的指示的场景中,计算设备1300可以监测静止对象在地形映射视场(“fov”)内的位置。然后,基于在地形映射fov内的静止对象的位置的变化和来自计算设备1300的静止对象的深度,在处理单元1320上执行的地形映射引擎可以计算出计算设备1300的方向的变化。

可以理解的是,出于监测用户的头部的方向(例如,在假定用户正确佩戴了计算设备1300的情况下)的目的,这些基于特征的跟踪技术可以用于监测计算设备1300的方向的变化。可以以各种方式来利用计算设备1300的计算出的方向,上文已经描述了其中的一些方式。

处理单元1320可以表示例如中央处理单元(“cpu”)类型的处理器、图形处理单元(“gpu”)类型的处理单元、fpga、一个或多个数字信号处理器(“dsp”)或在某些情况下可能由cpu驱动的其他硬件逻辑部件。作为示例而非限制,可以使用的说明性类型的硬件逻辑部件包括asic、专用标准产品(“assp”)、片上系统(“soc”)、复杂可编程逻辑器件(“cpld”)等。控制器1318还可以包括一个或多个计算机可读介质1322,例如上述计算机可读介质。

除非另外特别说明,否则应该明白的是:在上下文中理解本文使用的条件性语言,例如除了其它项之外,“可以(can)”,“可(could)”,“可能(might)”或“可以(may)”以表达某些示例包括而其他示例不包括某些特征、元素和/或步骤。因此,这种条件性语言通常不意在暗示一个或多个示例以任何方式要求某些特征、元素和/或步骤,或者一个或多个示例必须包括用于(在有或没有用户输入或提示的情况下)决定在任何特定示例中是否包括或将要执行某些特征、元素和/或步骤的逻辑单元。除非另有明确说明,否则诸如短语“x、y或z中的至少一个”之类的合取语言应理解为表示条目、项等可以是x、y或z,或者它们的组合。

还应该明白的是,可以对上述示例进行许多变型和修改,其中的元素应被理解为在其他可接受的示例之中。所有这些修改和变型旨在在本文中被包括在本公开内容的范围内,并由所附权利要求书保护。

最后,虽然以特定于结构特征和/或方法动作的语言对各种配置进行了描述,但应当理解的是:所附表示中定义的主题并不一定受限于所描述的特定特征或动作。而是,所公开的特定特征和动作作为实现要求保护的主题的示例形式。

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