CN114730546A - 具有定位服务和基于位置的共享内容的交叉现实系统 - Google Patents
具有定位服务和基于位置的共享内容的交叉现实系统 Download PDFInfo
- Publication number
- CN114730546A CN114730546A CN202080078518.0A CN202080078518A CN114730546A CN 114730546 A CN114730546 A CN 114730546A CN 202080078518 A CN202080078518 A CN 202080078518A CN 114730546 A CN114730546 A CN 114730546A
- Authority
- CN
- China
- Prior art keywords
- map
- virtual content
- location
- user
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009877 rendering Methods 0.000 claims abstract description 65
- 230000002085 persistent effect Effects 0.000 claims description 238
- 238000000034 method Methods 0.000 claims description 221
- 230000009466 transformation Effects 0.000 claims description 130
- 210000003128 head Anatomy 0.000 description 169
- 238000012545 processing Methods 0.000 description 87
- 230000008569 process Effects 0.000 description 81
- 238000010586 diagram Methods 0.000 description 78
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 67
- 230000007613 environmental effect Effects 0.000 description 52
- 238000003860 storage Methods 0.000 description 45
- 238000000844 transformation Methods 0.000 description 40
- 238000001914 filtration Methods 0.000 description 38
- 230000000875 corresponding effect Effects 0.000 description 37
- 230000015654 memory Effects 0.000 description 33
- 101150064138 MAP1 gene Proteins 0.000 description 30
- 230000033001 locomotion Effects 0.000 description 29
- 230000006870 function Effects 0.000 description 28
- 230000008859 change Effects 0.000 description 22
- 238000013528 artificial neural network Methods 0.000 description 18
- 238000005259 measurement Methods 0.000 description 18
- 230000008447 perception Effects 0.000 description 17
- 210000001747 pupil Anatomy 0.000 description 17
- 230000003993 interaction Effects 0.000 description 15
- 230000001965 increasing effect Effects 0.000 description 13
- 230000004807 localization Effects 0.000 description 13
- 230000009471 action Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 12
- 210000001525 retina Anatomy 0.000 description 12
- 238000012549 training Methods 0.000 description 12
- 238000013519 translation Methods 0.000 description 12
- 230000014616 translation Effects 0.000 description 12
- 230000000007 visual effect Effects 0.000 description 12
- 238000001514 detection method Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 11
- 230000004044 response Effects 0.000 description 11
- 230000003190 augmentative effect Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000002688 persistence Effects 0.000 description 9
- 238000004441 surface measurement Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 230000000717 retained effect Effects 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 230000000977 initiatory effect Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000005484 gravity Effects 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 239000013598 vector Substances 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 241000220225 Malus Species 0.000 description 4
- 238000007796 conventional method Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 235000019587 texture Nutrition 0.000 description 4
- 230000001131 transforming effect Effects 0.000 description 4
- 101100206190 Arabidopsis thaliana TCP20 gene Proteins 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 3
- 241000282994 Cervidae Species 0.000 description 3
- 101100082494 Oryza sativa subsp. japonica PCF1 gene Proteins 0.000 description 3
- 101100045761 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) TFC4 gene Proteins 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 3
- 238000004220 aggregation Methods 0.000 description 3
- 230000004075 alteration Effects 0.000 description 3
- 235000021152 breakfast Nutrition 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000004418 eye rotation Effects 0.000 description 3
- 230000004438 eyesight Effects 0.000 description 3
- 229910001416 lithium ion Inorganic materials 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000035807 sensation Effects 0.000 description 3
- 235000019615 sensations Nutrition 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000012800 visualization Methods 0.000 description 3
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 235000021016 apples Nutrition 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005266 casting Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 210000000613 ear canal Anatomy 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000010191 image analysis Methods 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 235000016709 nutrition Nutrition 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- HBBGRARXTFLTSG-UHFFFAOYSA-N Lithium ion Chemical compound [Li+] HBBGRARXTFLTSG-UHFFFAOYSA-N 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 101100260216 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) BRF1 gene Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 210000000744 eyelid Anatomy 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 230000020169 heat generation Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 210000000653 nervous system Anatomy 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000016776 visual perception Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
一种交叉现实系统使多个设备中的任何一个能够有效地渲染共享的基于位置的内容。交叉现实系统可以包括基于云的服务,服务对来自设备的相对于存储的地图进行定位的请求做出响应。服务可以向设备返回相对于存储地图定位设备的信息。结合定位信息,服务可以提供与在物理世界中靠近已被提供虚拟内容的设备的位置有关的信息。基于从服务接收的信息,设备可以基于用户的位置和虚拟内容的指定位置,向多个用户中的每个用户渲染或停止渲染虚拟内容。
Description
相关申请相互参照
本申请根据35U.S.C.§119(e)主张2019年11月12日提交的题为“CROSS REALITYSYSTEM WITH LOCALIZATION SERVICE AND SHARED LOCATION-BASED CONTENT(具有定位服务和基于位置的共享内容的交叉现实系统)”的美国临时专利申请No.62/934,485的权益,该申请的全部内容在此通过引用并入。
技术领域
本申请一般地涉及交叉现实系统。
背景技术
计算机可以控制人类用户界面以创建交叉现实(XR)环境,其中被用户感知到的部分或全部XR环境由计算机生成。这些XR环境可以是虚拟现实(VR)环境、增强现实(AR)环境和混合现实(MR)环境,其中部分或全部XR环境可以由计算机部分地使用描述环境的数据生成。该数据例如可以描述虚拟对象,该虚拟对象能够以用户将该虚拟对象感觉或感知为物理世界的一部分并且可以与该虚拟对象交互的方式被渲染。由于通过用户接口设备(例如头戴式显示设备)渲染和呈现数据,用户可以体验这些虚拟对象。数据可以被显示给用户查看,或者可以控制被播放给用户聆听的音频,或者可以控制触知(或触觉)界面,使用户能够体验在用户感受虚拟对象时感觉或感知到的触感。
XR系统可用于许多应用,涵盖科学可视化、医学培训、工程设计和原型制作、远程操作和远程呈现以及个人娱乐等领域。与VR相比,AR和MR包括与物理世界的真实对象相关的一个或多个虚拟对象。虚拟对象与真实对象交互的体验极大地增强了用户使用XR系统的乐趣,也为呈现有关可能如何改变物理世界的逼真且易于理解的信息的各种应用打开了大门。
为了逼真地渲染虚拟内容,XR系统可以构建系统的用户周围的物理世界的表示。例如,可以通过处理利用在形成XR系统一部分的可穿戴设备上的传感器获取的图像来构建该表示。在这样的系统中,用户可以通过查看用户打算使用XR系统的房间或其他物理环境来执行初始化例程,直到系统获得足够的信息来构建该环境的表示。当系统运行并且用户在环境中四处移动或移动到其他环境时,可穿戴设备上的传感器可能获取额外信息以扩展或更新物理世界的表示。
发明内容
本申请的一些方面涉及用于提供交叉现实(XR)场景的方法和装置。本文描述的技术可以一起使用,单独地使用,或以任何合适的组合使用。
根据一些方面,提供了一种分布式计算环境内的网络资源,用于向能够在3D环境中渲染虚拟内容的多个便携式电子设备提供共享的基于位置的内容。所述资源包括:一个或多个处理器和至少一个计算机可读介质,所述至少一个计算机可读介质包括所述3D环境的多个存储地图以及多个数据结构,所述多个数据结构中的每个数据结构表示在所述3D环境中的将要显示虚拟内容的相应区域。所述多个数据结构中的每个数据结构包括:将所述数据结构与所述多个存储地图中的位置相关联的信息;以及到用于在所述3D环境中的所述相应区域中进行渲染的虚拟内容的链接。所述计算机可读介质还包括计算机可执行指令。在由所述一个或多个处理器中的一个处理器执行时,这些指令实现向所述多个便携式电子设备中的便携式电子设备提供定位信息的服务,其中,所述定位信息指示所述多个便携式电子设备相对于一个或多个共享地图的位置;以及基于所述便携式电子设备相对于由所述多个数据结构表示的个区域的位置,选择性地向所述多个便携式电子设备中的所述便携式电子设备提供所述多个数据结构中的至少一个数据结构的副本。
根据一些实施例,所述计算机可执行指令在由所述处理器执行时,进一步实现确定所述便携式电子设备的访问权的认证服务。此外,选择性地向所述便携式电子设备提供所述至少一个数据结构的所述计算机可执行指令可以部分地基于所述便携式电子设备的所述访问权和与所述至少一个数据结构相关联的访问属性,确定是否发送所述至少一个数据结构。
根据一些实施例,在所述网络资源中,所述多个数据结构中的每个数据结构还包括公共属性。此外,选择性地向所述便携式电子设备提供所述至少一个数据结构的计算机可执行指令可以部分地基于所述至少一个数据结构的所述公共属性,确定是否发送所述至少一个数据结构。
根据一些实施例,对于所述多个数据结构的一部分,到所述虚拟内容的所述链接包括到提供虚拟内容的应用的链接。
根据一些实施例,所述多个数据结构中的每个数据结构还包括在所述便携式电子设备上的棱镜的显示特性。所述棱镜是在其中显示被链接到所述数据结构的所述虚拟内容的体积。
根据一些实施例,所述显示特性可以包括所述棱镜的尺寸。
根据一些实施例,所述显示特性包括在所述棱镜内渲染的虚拟内容相对于物理表面的行为。
根据一些实施例,所述显示特性包括以下中的一项或多项:所述棱镜相对于与地图相关联的持久位置的偏移,所述棱镜的空间取向,在所述棱镜内渲染的虚拟内容相对于所述便携式电子设备的所述位置的行为,以及在所述棱镜内渲染的虚拟内容相对于所述便携式电子设备所面对的方向的行为。
根据一些方面,提供了一种操作便携式电子设备以在3D环境中渲染虚拟内容的方法。所述方法包括使用一个或多个处理器:基于在所述便携式电子设备上的一个或多个传感器的输出,在所述便携式电子设备上生成本地坐标系;基于所述一个或多个传感器的所述输出和所述本地坐标系中的位置的指示,在所述便携式电子设备上生成指示所述3D环境中的所述位置的信息;通过网络向定位服务发送指示所述位置的信息和所述本地坐标系中的所述位置的指示;从所述定位服务获取有关所述3D环境的存储空间信息的坐标系与所述本地坐标系之间的变换;从所述定位服务获取一个或多个数据结构,每个数据结构表示所述3D环境中的相应区域和用于在所述相应区域中显示的虚拟内容;以及在所述一个或多个数据结构的所述相应区域中渲染在所述一个或多个数据结构中表示的虚拟内容。
根据一些实施例,在所述相应区域中渲染虚拟内容包括:基于表示所述相应区域的所述数据结构,创建具有参数集的棱镜。
根据一些实施例,所述虚拟内容以所述一个或多个数据结构中的至少一个中被表示为虚拟内容在网络上的位置的指示符。
根据一些实施例,渲染所述虚拟内容包括:在所述便携式电子设备上执行生成所述虚拟内容的应用。
根据一些实施例,渲染所述虚拟内容还包括:确定所述应用当前是否被安装在所述便携式电子设备上,以及基于确定所述应用当前未被安装,将所述应用下载到所述便携式电子设备。
根据一些实施例,所述方法还包括:检测所述便携式电子设备已经离开由所述一个或多个数据结构中的数据结构表示的区域;以及基于所述检测,删除在所述数据结构中表示的虚拟内容。
根据一些实施例,所接收到的一个或多个数据结构包括第一组数据结构,并且所述第一组数据结构在第一时间被接收。此外,所述方法还可以包括:存储与所述第一组数据结构中的第一数据结构相关联的渲染信息;在所述第一时间之后的第二时间接收第二组数据结构;以及基于确定所述第一数据结构未被包含在所述第二组中,删除与所述第一数据结构相关联的所述渲染信息。
根据一些方面,提供了一种被配置为在交叉现实系统内操作的电子设备。所述电子设备包括:一个或多个传感器,其被配置为捕获有关三维(3D)环境的信息,所捕获的信息包括多个图像;至少一个处理器;以及存储计算机可执行指令的至少一个计算机可读介质。所述计算机指令当在所述至少一个处理器中的处理器上执行时,这些指令:基于所述多个图像的至少第一部分,维持用于表示所述3D环境中的位置的本地坐标系;管理与一个或多个应用相关联的棱镜,以使得在所述棱镜内渲染由所述一个或多个应用中的应用生成的虚拟内容;以及通过网络向服务发送从所述一个或多个传感器的输出中导出的信息。所述指令还从所述服务接收:定位信息;以及表示相应虚拟内容和用于渲染所述虚拟内容的所述3D环境中的区域的数据结构。所述指令还包括创建与所述数据结构相关联的棱镜,以便在所述棱镜内渲染所述相应虚拟内容。
根据一些实施例,所述计算机可执行指令还包括用于执行以下操作的计算机可执行指令:基于所述数据结构中的信息,获取所述相应虚拟内容;以及在所述棱镜内渲染所获取的虚拟内容。
根据一些实施例,基于所述数据结构中的信息,获取所述相应虚拟内容包括:基于所述数据结构中的虚拟内容位置指示符,通过网络访问所述相应虚拟内容。
根据一些实施例,基于所述数据结构中的信息,获取所述相应虚拟内容包括:基于所述数据结构中的所述虚拟内容位置指示符,通过所述网络访问所述相应虚拟内容。
根据一些实施例,所述计算机可执行指令还包括用于执行以下操作的指令:检测所述电子设备已经离开由所述数据结构表示的区域;以及基于所述检测,删除与所述数据结构相关联的棱镜Prism。
根据一些实施例,在所述棱镜内渲染所获取的虚拟内容还包括:使用所述电子设备的坐标系来确定在所述3D环境中的渲染所述虚拟内容的一组坐标。
根据一些方面,提供了一种为交叉现实系统策划基于位置的虚拟内容的方法,所述交叉显示系统可以与能够在3D环境中渲染虚拟内容的多个便携式电子设备一起操作。所述方法包括:使用一个或多个处理器,生成表示所述3D环境中的将要在其中显示虚拟内容的区域的数据结构;使用一个或多个处理器,在所述数据结构中存储指示将要在所述3D环境中的所述区域中渲染的虚拟内容的信息;以及使用一个或多个处理器,将所述数据结构与用于将所述多个便携式电子设备定位到共享坐标系的地图中的位置相关联。
根据一些实施例,所述方法还包括:设置对所述数据结构的访问权。
根据一些实施例,设置有关所述数据结构的访问权包括:指示所述数据结构可以由所述多个便携式电子设备的一个或多个特定类别用户访问。
根据一些实施例,在所述数据结构中存储指示将要在所述3D环境中的所述区域中渲染的虚拟内容的信息包括:指定在便携式电子设备上可执行以生成所述虚拟内容的应用。
根据一些实施例,所述方法还包括:与使用所述地图定位所述多个便携式电子设备的定位服务相关地存储所述数据结构。
根据一些实施例,所述方法还包括:通过用户接口接收对所述3D环境的所述区域和所述虚拟内容的指定。
根据一些实施例,所述的方法还包括:通过编程接口从应用接收所述3D环境的所述区域和所述虚拟内容的指定。
上述发明内容是以说明的方式提供的,并非旨在进行限制。
附图说明
附图并非旨在按比例绘制。在附图中,在各个图中示出的每个相同或几乎相同的部件由相同的参考标号表示。为了清楚起见,并非在每个图中标示出每个部件。在附图中:
图1是示出根据一些实施例的简化的增强现实(AR)场景的示例的草图;
图2是示出根据一些实施例的示出XR系统的示例性用例的示例性简化AR场景的草图;
图3是示出根据一些实施例的被配置为向用户提供与物理世界交互的AR内容的体验的AR系统中单个用户的数据流的示意图;
图4是示出根据一些实施例的向单个用户显示虚拟内容的示例性AR显示系统的示意图;
图5A是示出根据一些实施例的当用户在物理世界环境中移动时穿戴渲染AR内容的AR显示系统的用户的示意图;
图5B是示出根据一些实施例的观察光学组件和附属部件的示意图;
图6A是示出根据一些实施例的使用世界重建系统的AR系统的示意图;
图6B是示出根据一些实施例的维护联结型世界的模型的AR系统的部件的示意图;
图7是由遍历贯通物理世界的路径的设备形成的跟踪地图的示意图。
图8是示出根据一些实施例的感知虚拟内容的交叉现实(XR)系统的用户的示意图;
图9是根据一些实施例的在坐标系之间变换的图8的XR系统的第一XR设备的部件的框图;
图10是示出根据一些实施例的原点坐标系到目的地坐标系以便正确渲染本地XR内容的示例性变换的示意图;
图11是示出根据一些实施例的基于瞳孔的坐标系的俯视图;
图12是示出根据一些实施例的包括所有瞳孔位置的相机坐标系的俯视图;
图13是根据一些实施例的图9的显示系统的示意图;
图14是示出根据一些实施例的持久坐标系(PCF)的创建和XR内容到PCF的附接的框图;
图15是示出根据一些实施例的建立和使用PCF的方法的流程图;
图16是根据一些实施例的包括第二XR设备的图8的XR系统的框图;
图17是示出根据一些实施例的房间和针对房间中各个区域建立的关键帧的示意图;
图18是示出根据一些实施例的基于关键帧的持久姿势的建立的示意图;
图19是示出根据一些实施例的基于持久姿势持久坐标系(PCF)的建立的示意图;
图20A至20C是示出根据一些实施例的创建PCF的示例的示意图;
图21是示出根据一些实施例的用于针对单独的图像和/或地图生成全局描述符的系统的框图;
图22是示出根据一些实施例的计算图像描述符的方法的流程图;
图23是示出根据一些实施例的使用图像描述符的定位方法的流程图;
图24是示出根据一些实施例的训练神经网络的方法的流程图;
图25是示出根据一些实施例的训练神经网络的方法的框图;
图26是示出根据一些实施例的被配置为对多个环境地图进行排名和合并的AR系统的示意图;
图27是示出根据一些实施例的存储在远程存储介质上的多个规范地图的简化框图;
图28是示出根据一些实施例的选择规范地图以例如在一个或多个规范地图中定位新的跟踪地图和/或从规范地图获取PCF的方法的示意图;
图29是示出根据一些实施例的选择多个排名后的环境地图的方法的流程图;
图30是示出根据一些实施例的图26的AR系统的示例性地图排名部分的示意图;
图31A是示出根据一些实施例的数据库中的跟踪地图(TM)和环境地图的区域属性的示例的示意图;
图31B是示出根据一些实施例的确定用于图29的地理位置过滤的跟踪地图(TM)的地理位置的示例的示意图;
图32是示出根据一些实施例的图29的地理位置过滤的示例的示意图;
图33是示出根据一些实施例的图29的Wi-Fi BSSID过滤的示例的示意图;
图34是示出根据一些实施例的使用图29的定位的示例的示意图;
图35和图36是根据一些实施例的被配置为对多个环境地图进行排名和合并的XR系统的框图;
图37是示出根据一些实施例的以规范形式创建物理世界的环境地图的方法的框图;
图38A和图38B是示出根据一些实施例的通过用新的跟踪地图更新图7的跟踪地图,以规范形式创建的环境地图的示意图。
图39A至图39F是示出根据一些实施例的合并地图的示例的示意图;
图40是根据一些实施例的可以由图9的第一XR设备生成的三维第一本地跟踪地图(地图1)的二维表示;
图41是示出根据一些实施例的将地图1从第一XR设备上传到图9的服务器的框图;
图42是示出根据一些实施例的图16的XR系统的示意图,示出了在第一用户终止了第一会话之后第二用户使用XR系统的第二XR设备发起了第二会话;
图43A是示出根据一些实施例的图42的第二XR设备的新会话的框图;
图43B是示出根据一些实施例的为图42的第二XR设备对跟踪地图的创建的框图;
图43C是示出根据一些实施例的将规范地图从服务器下载到图42的第二XR设备的框图;
图44是示出根据一些实施例的将可以由图42的第二XR设备生成的第二跟踪地图(地图2)定位到规范地图的定位尝试的示意图;
图45是示出根据一些实施例的将可以进一步开发并且具有与地图2的PCF相关联的XR内容的图44的第二跟踪地图(地图2)定位到规范地图的定位尝试的示意图;
图46A-图46B是示出根据一些实施例的将图45的地图2成功定位到规范地图的示意图;
图47是示出根据一些实施例的通过将来自图46A的规范地图的一个或多个PCF包括到图45的地图2中而生成的规范地图的示意图;
图48是示出根据一些实施例的在第二XR设备上进一步扩展地图2的图47的规范地图的示意图;
图49是示出根据一些实施例的将地图2从第二XR设备上传到服务器的框图;
图50是示出根据一些实施例的将地图2与规范地图进行合并的框图;
图51是示出根据一些实施例的将新规范地图从服务器发送到第一XR设备和第二XR设备的框图;
图52是示出根据一些实施例的地图2的二维表示和参考地图2的第二XR设备的头部坐标系的框图;
图53是根据一些实施例的以二维方式示出可以在六个自由度中发生的头部坐标系的调整的框图;
图54是示出根据一些实施例的将声音相对于地图2的PCF定位的在第二XR设备上的规范地图的框图;
图55和图56是示出根据一些实施例的当第一用户终止了第一会话并且第一用户使用XR系统发起了第二会话时的XR系统的用例的透视图和框图;
图57和图58是示出根据一些实施例的当三个用户在同一会话中同时使用XR系统时的XR系统的用例的透视图和框图;
图59是示出根据一些实施例的恢复和重置头部姿势的方法的流程图;
图60是根据一些实施例的可以在本发明系统中找到应用的计算机形式的机器的框图;
图61是根据一些实施例的多个设备中的任一个可以访问定位服务的示例XR系统的示意图;
图62是根据一些实施例的用于操作作为提供基于云的定位的XR系统的一部分的便携式设备的示例处理流程;以及
图63A、图63B和图63C是根据一些实施例的基于云的定位的示例处理流程。
图64是用于在物理环境中管理和显示基于位置的共享虚拟内容的系统的示意图,以及如何将示例性内容呈现给物理环境中的用户的草图。
图65是示例性体积数据结构和相关数据的示意图。
图66是被配置为基于交叉现实设备相对于物理环境的位置获取和显示虚拟内容的交叉现实设备的示例性软件架构的框图。
图67是示出获取和显示基于位置的共享内容的系统部件之间的交互的流程图。
图68是将设备配置为与交叉现实系统一起工作以使得该设备可以从交叉现实系统获取和渲染内容的示例性软件架构。
图69是具有被共享为可以被物理环境中多个用户中的任何一个感知的定位内容的示例性物理环境的草图。
具体实施方式
本文描述了用于向可能遍历物理世界的多个用户中的任何一个提供交叉现实(XR)场景的方法和装置。该系统可以使内容管理者能够指定与物理世界中的位置相关联的虚拟内容,使得当穿戴XR设备的用户经过该位置附近时,XR设备可以为用户渲染内容,使该内容出现在物理世界的指定位置。
可以实现这样的系统,以有效地操作提供虚拟内容的服务,以及与这些服务交互以将虚拟内容渲染给用户的XR设备。在一些实施例中,虚拟内容可以由定位服务提供,该定位服务使得多个XR设备中的每一个能够确定其相对于共享地图的位置。根据一些实施例,可以在共享地图中定义将渲染基于位置的虚拟内容的体积。由于定位过程,当服务确定XR设备位于地图内具有与其相关联的这种体积的位置时,该服务可以向XR设备提供体积和将在体积内显示的内容的指示。然后设备可以使用这些指示来渲染虚拟内容。
在定位期间生成的信息可以被类似地用于移除内容。在XR设备已经远离将渲染体积的位置时,设备可以删除指示虚拟内容的位置和性质的信息。XR设备的运动可以由指定内容的服务或设备上的服务确定。由于定位可重复执行以支持XR系统的其他功能,因此识别和/或移除基于位置的虚拟内容的计算负担和网络带宽可能较少。
在一些实施例中,有关基于位置的虚拟内容的信息可以在从服务传递到XR设备时以有效格式表示。例如,可将虚拟内容被表示为到虚拟内容的链接或到生成虚拟内容的应用的链接。因此,由有关服务到XR设备之间的内容的通信消耗的网络带宽较少,使得内容信息能够频繁更新。此外,将显示虚拟内容的体积可与由XR设备使用的构造相对应,以管理在XR设备上执行的应用所指定的内容的渲染,在XR设备上执行的应用的一个示例是棱镜(prism)。XR设备可以使用在其他方面管理棱镜的实用程序来管理与其他虚拟内容相结合的基于位置的虚拟内容的渲染。例如,当多个应用为物理世界中的同一体积指定虚拟内容时,这些实用程序可以确定将渲染的内容,将用户动作与提供待渲染虚拟内容的特定应用进行关联,以及在虚拟内容不再被渲染时,从XR设备中移除虚拟内容和关联数据。
定位过程(可用于识别基于位置的虚拟内容)可用于XR系统的一些功能,诸如为多个用户提供逼真的共享体验。为了向多个用户提供逼真的XR体验,XR系统必须了解用户的物理环境,以便正确关联虚拟对象关于真实对象的位置。XR系统可以构建场景的环境地图,该地图可通过利用传感器收集的图像和/或深度信息来创建,传感器是由XR系统的用户穿戴的XR设备的一部分。
在XR系统中,每个XR设备可以通过整合来自在扫描期间的某个时间点收集的一个或多个图像的信息,开发其物理环境的本地地图。在一些实施例中,该地图的坐标系与开始扫描时的设备取向相关联。当用户与XR系统交互时,取向会随会话而变化,无论不同的会话与不同的用户(每个用户有自己的可穿戴设备和扫描环境的传感器)相关联,还是同一用户在不同时间使用同一设备。发明人已经意识到并理解基于持久空间信息操作XR系统的技术,该技术克服了每个用户设备仅依赖于相对于取向(该取向针对系统的不同用户实例(例如,时间快照)或会话(例如,接通和关断之间的时间)而不同)收集的空间信息的XR系统的限制。例如,这些技术可以通过允许XR系统的多个用户中的任何一个创建、存储和检索持久空间信息,为单个或多个用户提供更节省计算、更佳身临其境的体验的XR场景。
持久空间信息可以由持久地图表示,如此可实现增强XR体验的一个或多个功能。持久地图可以被存储在远程存储介质(例如,云)中。例如,用户穿戴的可穿戴设备在被接通之后可以从诸如云存储之类的持久存储中检索先前创建和存储的适当存储地图。先前存储的地图可已经基于在先前会话期间利用用户可穿戴设备上的传感器收集的有关环境的数据。检索存储地图可以允许在不通过可穿戴设备上的传感器的物理世界的扫描的情况下使用可穿戴设备。替代地或附加地,系统/设备在进入物理世界的新区域时可以类似地检索适当的存储地图。
存储地图可以以规范的形式表示,该形式与在每个XR设备上的本地参考系相关。在多设备XR系统中,被一个设备访问的存储地图可能是由另一设备已经创建和存储的,和/或可能是通过聚合由多个可穿戴设备上的传感器收集的有关物理世界的数据构建了的,这些数据之前存在于由存储地图表示的物理世界的一部分中。
可以通过定位过程来确定规范地图和每个设备的本地地图之间的关系。可以基于一组选择并发送到设备的规范地图,在每个XR设备上执行该定位过程。然而,发明人已经认识到并理解XR设备上的网络带宽和计算资源可以通过提供可以在远程处理器上执行的定位服务(诸如,可以在云中实现)来减少。因此,XR设备上的电池消耗和发热可能会减少,从而使设备能够投入诸如计算时间、网络带宽、电池寿命和热量预算之类的资源来提供更加身临其境的用户体验。但是,通过适当地在每个XR设备和定位服务之间传送的信息的选择,可以以支持这种身临其境体验所需的延迟和准确性来执行定位。
在多个设备之间共享有关物理世界的数据可以实现虚拟内容的共享用户体验。例如,能够访问同一存储地图的两个XR设备可以都相对于存储地图定位。一旦定位,用户设备便可通过将参考存储地图指定的位置变换为由用户设备维护的参考系,在该位置渲染虚拟内容。用户设备可以使用该本地参考系来控制用户设备的显示,以在指定位置渲染虚拟内容。
为了支持这些和其他功能,XR系统可以包括基于利用用户设备上的传感器收集的有关物理世界的数据,开发、维护和使用持久空间信息(包括一个或多个存储地图)的部件。这些部件可以分布在XR系统中,其中,一些部件例如可以在用户设备的头戴部分上进行操作。其他部件可以在与通过局域网或个域网耦合到头戴部分的用户相关联的计算机上进行操作。还有一些部件可以在远程位置(诸如,可通过广域网访问的一个或多个服务器)处进行操作。
例如,这些部件可以包括能够从由一个或多个用户设备收集的有关物理世界的信息中识别具有足够质量存储为持久地图或存储在持久地图中的信息的部件。下面更详细描述的这种部件的示例是地图合并部件。例如,这样的部件可以接收来自用户设备的输入并确定用于更新持久地图的输入的一部分的适用性。例如,地图合并部件可以将由用户设备创建的本地地图分割成多个部分,确定一个或多个部分与持久地图的可合并性,并将满足合并标准的部分合并到持久地图。例如,地图合并部件也可以将未与持久地图合并的部分提升为单独的持久地图。
作为另一示例,这些部件可以包括帮助确定可以由用户设备检索和使用的适当持久地图的部件。下面更详细描述的这种部件的示例是地图排名部件。例如,这样的部件可以接收来自用户设备的输入并识别一个或多个可能表示该设备正操作的物理世界区域的持久地图。例如,地图排名部件可以帮助选择由本地设备在渲染虚拟内容、收集有关环境的数据或执行其他动作时要使用的持久地图。替代地或附加地,地图排名部件可以帮助识别要随着有关物理世界的附加信息被一个或多个用户设备收集而被更新的持久地图。
另外的部件可以确定将关于一个参考系捕获或描述的信息变换为另一参考系的变换。例如,传感器可以被附接到头戴式显示器,以便从该传感器读取的数据指示物理世界中的对象相对于穿戴者头部姿势的位置。可以应用一种或多种变换来将位置信息与持久环境地图的关联坐标系进行关联。类似地,以持久环境地图的坐标系表示的指示将渲染虚拟对象的位置的数据可以经过一次或多次变换以位于用户头部的显示器的参考系中。如下文更详细描述的,可能经过多次这样的变换。这些变换可以跨XR系统部件进行分区,以便它们可以被有效地更新和/或应用于分布式系统。
在一些实施例中,可以根据由多个用户设备收集的信息来构建持久地图。XR设备可以捕获本地空间信息,并利用XR设备中的每一个XR设备的传感器在不同位置和时间收集的信息构建单独的跟踪地图。每个跟踪地图可以包括点,每个点可以与可包括多个特征的真实对象的特征相关联。除了可能为创建和维护持久地图提供输入之外,跟踪地图还可用于跟踪用户在场景中的运动,从而使XR系统能够基于跟踪地图,估计相应用户的头部姿势。
XR系统可以使用提供XR场景的技术来操作,以获取高度身临其境的用户体验,诸如以1kHz的频率估计头部姿势,其中与XR设备相关的计算资源的使用率低,该XR设备可以被配置有例如四个工作频率为30Hz的视频图形阵列(VGA)相机、一个工作频率为1kHz的惯性测量单元(IMU)、单个高级RISC机器(ARM)内核的计算能力、小于1GB的内存和小于100Mbp的网络带宽。这些技术涉及减少生成和维护地图和估计头部姿势所需的处理,以及涉及以低计算开销提供和使用数据。XR系统可以基于匹配的视觉特征,计算其姿势。美国专利申请No.16/221,065描述了混合跟踪,该申请的全部内容通过引用并入此文。
这些技术可以包括减少在构建地图时处理的数据量,诸如通过构建具有绘图点和关键帧集合的稀疏地图和/或将地图划分为块以实现逐块更新。绘图点可以与环境中的兴趣点相关联。关键帧包括从相机捕获的数据中选择信息。美国专利申请No.16/520,582描述了确定和/或评估定位地图,该申请的全部内容通过引用并入此文。
在一些实施例中,持久空间信息可以以容易在用户之间以及在包括应用的分布式部件之间共享的方式来表示。例如,有关物理世界的信息可以被表示为持久坐标系(PCF)。PCF可以基于表示在物理世界中识别的特征的一个或多个点来定义。可以选择特征,使其在XR系统用户会话之间相同。PCF可以稀疏存在,提供少于有关物理世界的全部可用信息,从而有效处理和发送这些信息。用于处理持久空间信息的技术可以包括跨一个或多个会话,基于真实空间中的一个或多个坐标系创建动态地图,并且还包括在稀疏地图上生成持久坐标系(PCF),其例如可以经由应用编程接口(API)被暴露给XR应用,这些性能由对由一个或多个XR设备创建的多个地图进行排名和合并的技术支持。持久空间信息还可以以节省计算的方式在一个或多个XR设备中的每一个上快速恢复和重置头部姿势。
此外,这些技术可以实现空间信息的有效比较。在一些实施例中,图像帧可以由数字描述符表示。该描述符可以经由将图像中标识的特征集映射到描述符的变换来计算。该变换可以在经过训练的神经网络中执行。在一些实施例中,作为输入提供给神经网络的特征集可以是过滤的特征集,其使用例如优先选择可能持久的特征的技术从图像中提取。
将图像帧表示为描述符例如允许新图像信息与存储图像信息进行有效匹配。XR系统可以结合持久地图存储持久地图下的一个或多个帧的描述符。由用户设备获取的本地图像帧可以类似地被转换为这样的描述符。通过选择具有与本地图像帧的描述符相似的描述符的存储地图,可以用相对少量的处理来选择可能表示与用户设备相同的物理空间的一个或多个持久地图。在一些实施例中,可以计算本地地图和持久地图中的关键帧的描述符,从而在比较地图时进一步减少处理。例如,这种有效的比较可用于简化查找将加载到本地设备中的持久地图或用于基于用本地设备获取的图像信息查找将更新的持久地图。
本文所述的技术可以用多种类型的设备一起或单独地使用,以及用于多种类型的场景,包括具有提供增强或混合现实场景的有限计算资源的可穿戴或便携式设备。在一些实施例中,这些技术可以由形成XR系统的一部分的一个或多个服务来实现。
AR系统概述
图1和图2示出了具有结合物理世界的一部分显示的虚拟内容的场景。出于说明的目的,AR系统用作XR系统的示例。图3-图6B示出了示例性AR系统,包括可以根据本文描述的技术进行操作的一个或多个处理器、存储器、传感器和用户界面。
参考图1,示出了室外AR场景354,其中AR技术的用户看到物理世界公园状环境356,该物理世界公园状环境356包括人、树木、背景中的建筑物以及混凝土平台358特征。除了这些项目之外,AR技术的用户还感知到他们“看到”了站在物理世界混凝土平台358上的机器人雕像357,以及飞舞的卡通化身角色352,似乎是一只人形大黄蜂,即使这些元素(例如,化身角色352和机器人雕像357)在物理世界中不存在。由于人类视觉感知和神经系统的极端复杂性,产生一种促进虚拟图像元素在其他虚拟或物理世界影像元素中舒适、感觉自然、丰富地呈现的AR技术具有挑战性。
这样的AR场景可以用基于跟踪信息构建物理世界地图的系统来实现,允许用户将AR内容放在物理直接中,确定物理世界的地图中放置AR内容的位置,保持AR场景,使得所放置的AR内容可以被重新加载,以在例如不同的AR体验会话期间在物理世界中显示,并且允许多个用户共享AR体验。该系统可以构建和更新用户周围物理世界表面的数字表示。该表示可用于渲染虚拟内容使其看起来完全或部分地被用户和虚拟内容的渲染位置之间的物理对象遮挡,用于在基于物理的交互中放置虚拟对象,以及用于虚拟角色路径规划和导航,或用于使用有关物理世界的信息的其他操作。
图2示出了根据一些实施例的室内AR场景400的另一示例,其中示出了示例性XR系统用例。示例性场景400是客厅,其具有墙壁、位于墙壁一侧的书架、位于房间一角的落地灯、地板、位于地板上的沙发和咖啡桌。除这些实物之外,AR技术的用户还可以感知虚拟对象,诸如沙发背后墙上的图像、穿过门飞舞的鸟、从书架上探出头的鹿、放置在咖啡桌上的风车形式的装饰品等。
对于墙壁上的图像,AR技术不仅需要有关墙壁表面的信息,而且还需要有关房间内对象(诸如,灯的形状)和表面的信息,这些对象和表面遮挡图像以正确渲染虚拟对象。对于飞舞的鸟,AR技术需要房间内各角落的所有对象和表面的信息,以逼真的物理现象渲染鸟类避开对象和表面,或者鸟在碰撞这些对象和表面时发生反弹。对于鹿,AR技术需要有关诸如地板或咖啡桌之类的表面的信息来计算鹿的放置位置。对于风车,系统可将其识别为与桌子分开的对象,并确定其可移动,而书架的拐角或墙壁的拐角被确定是静止的。这种区别可用于确定在各种操作中的每一操作中使用或更新场景的哪些部分。
可以将虚拟对象放置在先前的AR体验会话中。当新的AR体验会话在客厅开始时,AR技术要求将虚拟对象准确地显示在先前放置的位置,并且从不同的角度逼真地可见。例如,风车应该被显示为立在书本上,而不是没有书本,漂浮在桌子上方的其他位置。如果新的AR体验会话的用户位置没有准确地定位在客厅中,则可能会发生这种漂浮。再例如,如果用户观看风车的视角不同于放置风车的视角,则AR技术需要显示风车的对应侧面。
场景可以经由包括多个部件的系统呈现给用户,这部件包括可以刺激一种或多种用户感觉(诸如视觉、声音和/或触觉)的用户界面。此外,该系统可以包括一个或多个传感器,这些传感器可以测量场景的物理部分的参数,包括用户在场景的物理部分内的位置和/或运动。此外,该系统可以包括具有相关联的计算机硬件(诸如,存储器)的一个或多个计算设备。这些部件可以被集成到单个设备中,或者可以被分布在多个互连的设备中。在一些实施例中,这些部件中的一些或全部可以被集成到可穿戴设备中。
图3示出了根据一些实施例的被配置为提供与物理世界506交互的AR内容的体验的AR系统502。AR系统502可以包括显示器508。在所示的实施例中,显示器508可以由用户穿戴,作为头戴装置的一部分,使得用户可以在其眼睛上穿戴显示器,如一副护目镜或眼镜。显示器的至少一部分可以是透明的,使得用户可以观察到透视现实510。透视现实510可以与位于AR系统502的当前视点内的物理世界506的一部分相对应,在用户穿戴包含AR系统的显示器和传感器两者以获取有关物理世界的信息的头戴装置的情况下,AR系统502的当前视点对应于用户的视点。
AR内容也可以在显示器508上被呈现,覆盖透视现实510。为了提供显示器508上AR内容和透视现实510之间的准确交互,AR系统502可以包括被配置为捕获有关物理世界506的信息的传感器522。
传感器522可以包括输出深度图512的一个或多个深度传感器。每个深度图512可以具有多个像素,每个像素可以表示在相对于深度传感器的特定方向上到物理世界506中的表面的距离。原始深度数据来自深度传感器以创建深度图。此类深度图的更新速度可以与深度传感器可形成新图像的速度一样快,每秒数百或数千次。然而,该数据可能有噪声且不完整,并且所示深度图上具有显示为黑色像素的空洞。
该系统可以包括其他传感器,诸如图像传感器。图像传感器可以获取通过处理以其他方式表示物理世界的单目或立体信息。例如,可以在世界重建部件516中处理图像以创建网格,表示物理世界中对象的连接部分。有关这些对象的元数据(例如包括颜色和表面纹理)可以类似地使用传感器来获取并被存储为世界重建的一部分。
该系统还可以获取有关相对于物理世界的用户的头部姿势(或“姿势”)的信息。在一些实施例中,可以使用系统的头部姿势跟踪部件实时计算头部姿势。头部姿势跟踪部件可以在具有六个自由度的坐标系中表示用户的头部姿势,包括例如在三个垂直轴(例如,前/后、上/下、左/右)上平移,和围绕三个垂直轴(例如,俯仰、偏航和滚动)旋转。在一些实施例中,传感器522可以包括可用于计算和/或确定头部姿势514的惯性测量单元(“IMU”)。例如,用于深度图的头部姿势514可以以六个自由度指示捕获深度图的传感器的当前视点,但是头部姿势514也可用于其他目的,诸如将图像信息与物理世界的特定部分进行关联或将穿戴在用户头部的显示器的位置与物理世界进行关联。
在一些实施例中,头部姿势信息除了来自IMU以外,还可以以其他方式导出,诸如通过分析图像中的对象。例如,头部姿势跟踪部件可以基于由相机捕获的视觉信息和由IMU捕获的惯性信息,计算AR设备与物理对象的相对位置和取向。头部姿势跟踪部件然后可以通过例如将计算的AR设备与物理对象的相对位置和取向与物理对象的特征进行比较来计算AR设备的头部姿势。在一些实施例中,可以通过识别利用一个或多个传感器522捕获的图像中的特征来执行此比较,这些特征在一段时间内保持稳定,使得在一段时间内捕获的图像中这些特征的位置变化可以与用户的头部姿势变化相关联。
在一些实施例中,当用户携带AR设备在物理世界中四处移动时,AR设备可以根据在所捕获的一系列图像帧内的连续图像中识别的特征点构建地图。尽管当用户移动时,每个图像帧可以取自不同的姿势,但系统可以通过将连续图像帧的特征与先前捕获的特征进行匹配来调整每个连续图像帧的特征的取向,以匹配初始图像帧的取向。可以使用连续图像帧的平移(使得表示相同特征的点将与来自先前收集的图像帧的对应特征点匹配)来对齐每个连续图像帧以匹配先前处理的图像帧的取向。所得地图中的帧可能具有在将第一个图像帧被添加到地图时建立的共同取向。该地图具有位于公共参考系中的特征点集,可用于通过将来自当前图像帧中的特征与地图进行匹配来确定用户在物理世界中的姿势。在一些实施例中,该地图可以被称为跟踪地图。
除了能够跟踪用户在环境中的姿势之外,该地图还可以使系统的其他部件(诸如世界重建部件516)能够确定物理对象相对于用户的位置。世界重建部件516可以接收深度图512和头部姿势514,以及来自传感器的任何其他数据,并且将该数据集成到重建518中。重建518可以比传感器数据更完整且噪声更小。世界重建部件516可以使用一段时间内来自多个视点的传感器数据的空间和时间平均来更新重建518。
重建518可以包括一种或多种数据格式的物理世界表示,例如包括体素、网格、平面等。不同的格式可以表示物理世界的相同部分的替代表示,或者可以表示物理世界的不同部分。在所示示例中,在重建518的左侧,物理世界的一部分被呈现为全局表面;在重建518的右侧,物理世界的一部分被呈现为网格。
在一些实施例中,由头部姿势部件514维护的地图相对于可能维护的物理世界的其他地图可能是稀疏的。稀疏地图可以指示兴趣点和/或结构的位置,诸如角落或边缘,而不是提供有关表面的位置和其他可能的特征的信息。在一些实施例中,地图可以包括由传感器522捕获的图像帧。这些帧可以被简化为可以表示兴趣点和/或结构的特征。结合每个帧,有关从获取该帧的用户姿势的信息也可以被存储为地图的一部分。在一些实施例中,由传感器获取的每个图像可以存储,也可以不被存储。在一些实施例中,系统可以在图像被传感器收集时处理该图像,并选择图像帧的子集用于进一步计算。该选择可以基于限制信息添加但确保地图包含有用信息的一个或多个标准。系统可以将新的图像帧添加到地图,例如基于与已经添加到地图的先前图像帧的重叠或基于包含被确定为可能表示静止对象的足够数量的特征的图像帧。在一些实施例中,所选图像帧或来自所选图像帧的特征组可以用作地图的关键帧,这用于提供空间信息。
AR系统502可以在一段时间内从物理世界的多个视点整合传感器数据。当包括传感器的设备移动时,可以跟踪传感器的姿势(例如,位置和取向)。由于已知传感器的框架姿势以及它与其他姿势的关系,物理世界的这些多个视点中的每一个可以融合在一起形成物理世界的单一组合重建,它可以作为地图的抽象层并提供空间信息。通过使用空间和时间平均(即,平均一段时间内来自多个视点的数据)或任何其他合适的方法,重建可能比原始传感器数据更完整且噪声更小。
在图3所示的实施例中,地图表示单个可穿戴设备的用户所在的物理世界的部分。在这种情况下,与地图中的帧相关联的头部姿势可以被表示为本地头部姿势,指示相对于单个设备在会话开始时的初始取向的取向。例如,当设备被接通或以其他方式被操作以扫描环境来构建该环境的表示时,可以相对于初始头部姿势跟踪头部姿势。
结合表征该物理世界部分的内容,地图可以包括元数据。例如,元数据可以指示用于形成地图的传感器信息的捕获时间。替代地或附加地,元数据可以指示在捕获用于形成地图的信息时传感器的位置。位置可以被直接表达,诸如使用来自GPS芯片的信息,或间接表达,诸如使用无线(例如Wi-Fi)签名(指示在收集传感器数据时从一个或多个无线接入点接收到的信号强度),和/或使用在收集传感器数据时用户设备连接到的无线接入点的标识符,诸如BSSID。
重建518可用于AR功能,诸如产生物理世界的表面表示以进行遮挡处理或基于物理现象的处理。该表面表示可以在用户移动或物理世界中的对象变化时发生变化。重建518的一些方面例如可以被部件320使用,该部件520产生在世界坐标中的可以由其他部件使用的变化的全局表面表示。
AR内容诸如由AR应用504基于该信息生成而产生。AR应用504可以是游戏程序,例如基于有关物理世界的信息,执行一个或多个功能,诸如视觉遮挡、基于物理现象的交互和环境推理。可通过从由世界重建部件516产生的重建518查询不同格式的数据来执行这些功能。在一些实施例中,部件520可以被配置为在物理世界的感兴趣区域中的表示改变时输出更新。例如,该感兴趣区域可以被设置为接近系统用户附近的物理世界的一部分,诸如用户视场内的一部分,或者被投影(预测/确定)为进入用户视场范围内。
AR应用504可以使用该信息来生成和更新AR内容。AR内容的虚拟部分可以结合透视现实510被呈现在显示器508上,创建逼真的用户体验。
在一些实施例中,可通过XR设备向用户提供AR体验,XR设备可以是可穿戴显示设备,它可以是可包括远程处理和/或远程数据存储和/或在一些实施例中包括由其他用户穿戴的其他可穿戴显示设备的系统的一部分。
为了简化说明,图4示出了系统580的示例(以下被称为“系统580”),该系统包括单个可穿戴设备。系统580包括头戴式显示设备562(以下被称为“显示设备562”),以及支持显示设备562的功能的各种机械和电子模块和系统。显示设备562可以被耦合到框架564,框架564可以由显示系统用户或观看者560(以下被称为“用户560”)穿戴并且被配置为将显示设备562定位在用户560的眼前。根据各种实施例,显示设备562可以是顺序显示器。显示设备562可以是单目或双目显示器。在一些实施例中,显示设备562可以是图3中的显示器508的示例。
在一些实施例中,扬声器566被耦合到框架564并被定位在用户560的耳道附近。在一些实施例中,另一扬声器(未示出)被定位在用户560的另一耳道附近以提供立体声/可塑形声音控制。显示设备562诸如通过有线导线或无线连接568被可操作地耦合到本地数据处理模块570,该模块可以以各种配置被安装,诸如被地附接到框架564上,被固定地附接到由用户560穿戴的头盔或帽子上,被嵌入耳机中的或以其他方式被可拆卸地附接到用户560(例如,采取背包式配置,采取腰带耦合式配置)。
本地数据处理模块570可以包括处理器,以及数字存储器,诸如非易失性存储器(例如,闪存),这两者可用于辅助数据的处理、缓存和存储。数据包括:a)从传感器捕获的数据,这些传感器例如可以被可操作地耦合到框架564或以其他方式被附接到用户560,诸如图像捕获设备(诸如相机)、麦克风、惯性测量单元、加速度计、罗盘、GPS单元、无线电设备和/或陀螺仪;和/或b)使用远程处理模块572和/或远程数据存储库574获取和/或处理的数据,这些数据可以在这样的处理或检索之后被传送到显示设备562。
在一些实施例中,可穿戴设备可以与远程部件通信。本地数据处理模块570可以通过通信链路576、578,诸如经由有线或无线通信链路,被分别可操作地耦合到远程处理模块572和远程数据存储库574,使得这些远程模块572、574被可操作地彼此耦合并且可用作本地数据处理模块570的资源。在进一步的实施例中,作为远程数据储存库574的补充或替代,可穿戴设备可以访问基于云的远程数据存储库和/或服务。在一些实施例中,上述头部姿势跟踪部件可以被至少部分地在本地数据处理模块570中实现。在一些实施例中,图3中的世界重建部件516可以被至少部分地在本地数据处理模块570中实现。例如,本地数据处理模块570可以被配置为执行计算机可执行指令以生成地图和/或至少部分地基于至少一部分数据的物理世界表示。
在一些实施例中,处理可以被分布在本地和远程处理器上。例如,本地处理可用于基于利用用户设备上的传感器收集的传感器数据,在用户设备上构建地图(例如,跟踪地图)。此类地图可以由该用户设备上的应用使用。此外,先前创建的地图(例如,规范地图)可以被存储在远程数据存储库574中。在合适的存储地图或持久地图可用的情况下,可以使用这些地图来代替或补充在设备本地创建的跟踪地图。在一些实施例中,可以将跟踪地图定位到存储地图,从而在跟踪地图(可以在用户接通系统时被相对于可穿戴设备的位置取向)和规范地图(可以被相对于一个或多个持久特征取向)之间建立对应关系。在一些实施例中,可以在用户设备上加载持久地图以允许用户设备在没有与扫描位置相关联的延迟的情况下渲染虚拟内容,以根据在扫描期间获取的传感器数据构建用户的完整环境的跟踪地图。在一些实施例中,用户设备可以访问远程持久地图(例如,被存储在云上)而无需在用户设备上下载持久地图。
在一些实施例中,空间信息可以从可穿戴设备传送到远程服务,诸如被配置为将设备定位到在云服务上维护的存储地图的云服务。根据一些实施例,定位处理可以在将设备位置与现有地图(诸如,规范地图)匹配的云中进行,并返回将虚拟内容链接到可穿戴设备位置的变换。在这样的实施例中,系统可以避免将地图从远程资源传送到可穿戴设备。其他实施例可以被配置用于基于设备定位和基于云的定位两者,例如以使能网络连接不可用或用户选择不使能基于云的定位的功能。
替换地或附加地,跟踪地图可以被与先前存储的地图合并以扩展或提升这些地图的质量。可以在本地数据处理模块570或远程处理模块572中完成确定先前创建的合适环境地图是否可用和/或将跟踪地图与一个或多个存储环境地图合并的处理。
在一些实施例中,本地数据处理模块570可以包括一个或多个处理器(例如,图形处理单元(GPU)),其被配置为分析和处理数据和/或图像信息。在一些实施例中,本地数据处理模块570可以包括单个处理器(例如,单核或多核ARM处理器),这将限制本地数据处理模块570的计算预算,但能够实现更小型的设备。在一些实施例中,世界重建部件516可以使用小于单个高级RISC机器(ARM)核的计算预算来在非预定义空间上实时生成物理世界表示,使得单个ARM核的剩余计算预算可用于其他用途,例如提取网格。
在一些实施例中,远程数据存储库574可以包括数字数据存储设施,该设施可通过因特网或“云”资源配置中的其它网络配置存取。在一些实施例中,在本地数据处理模块570中存储所有数据并且执行所有计算,从而允许从远程模块进行完全自主地使用。在一些实施例中,在远程数据存储库574中存储所有数据并执行所有计算,从而允许使用更小的设备。例如,世界重建可以被全部或部分地存储在该存储库574中。
在数据进行远程存储并可通过网络访问的实施例中,数据可由增强现实系统的多个用户共享。例如,用户设备可以上传他们的跟踪地图以扩增环境地图的数据库。在一些实施例中,跟踪地图上传发生在与可穿戴设备的用户会话结束时。在一些实施例中,跟踪地图上传可以连续地、半连续地、间歇地、在预定义的时间、在从前一次上传的预定义的时间段之后或者在由事件触发时发生。由任何用户设备上传的跟踪地图可用于扩展或提升先前存储的地图,无论是基于来自该用户设备还是任何其他用户设备的数据。同样,下载到用户设备的持久地图可以基于来自该用户设备或任何其他用户设备的数据。通过这种方式,用户可以轻松获得高质量的环境地图,以改善他们对AR系统的体验。
在进一步的实施例中,可以基于在远程资源(例如,在云中)上执行的定位,限制和/或避免持久地图下载。在这样的配置中,可穿戴设备或其他XR设备向云服务传送与姿势信息(例如,当感测以特征信息表示的特征时设备的定位信息)耦合的特征信息。云服务的一个或多个部件可以将特征信息与相应的存储地图(例如,规范地图)进行匹配,并生成由XR设备维护的跟踪地图和规范地图的坐标系之间的变换。跟踪地图相对于规范地图进行定位的每个XR设备可以基于其自己的跟踪在相对于规范地图指定的位置准确地渲染虚拟内容。
在一些实施例中,本地数据处理模块570被可操作地耦合到电池582。在一些实施例中,电池582是可拆卸电源,诸如可在柜台购买到的电池。在其他实施例中,电池582是锂离子电池。在一些实施例中,电池582包括由用户560可以在系统580的非操作时间内充电的内置锂离子电池,以及可拆卸电池,这样,用户560不必被拴在电源上为锂离子电池充电,也不必关闭系统580来更换电池即可在更长的时间段内操作系统580。
图5A示出了在用户530在物理世界环境532(以下被称为“环境532”)中移动时穿戴渲染AR内容的AR显示系统的用户530。由AR系统沿着用户的移动路径捕获的信息可以被处理成一个或多个跟踪地图。用户530将AR显示系统定位在位置534处,AR显示系统记录相对于位置534的联结型世界的背景信息(例如,可以随着物理世界中真实对象的变化而存储和更新的物理世界中真实对象的数字表示)。该信息可以结合图像、特征、定向音频输入或其他所需数据存储为姿势。位置534被整合到数据输入536,例如作为跟踪地图的一部分,并且至少被联结型世界模块538处理,该联结型世界模块538例如可通过图4的远程处理模块572上的处理来实现。在一些实施例中,联结型世界模块538可以包括头部姿势部件514和世界重建部件516,使得处理信息能够结合有关在渲染虚拟内容时使用的物理对象的信息指示物理世界中的对象位置。
如根据数据输入536确定的,联结型世界模块538至少部分地确定可将AR内容540放置在物理世界的何处以及如何放置。通过经由用户界面呈现物理世界和AR内容的表示来将AR内容“放置”在物理世界中,AR内容被渲染为好像与物理世界中的对象交互,而物理世界中的对象被呈现为好像AR内容在适当的时候遮蔽了那些对象的用户视图。在一些实施例中,可通过从重建(例如,重建518)中适当地选择固定元素542(例如,桌子)的一部分以确定AR内容540的形状和位置来放置AR内容。作为示例,固定元素可以是桌子,并且虚拟内容可以被定位成它看起来位于该桌子上。在一些实施例中,AR内容可以被放置在视场544中的结构内,该视场可以是当前视场或估计的未来视场。在一些实施例中,AR内容可以被相对于物理世界的模型546(网格)持续存在。
如图所示,固定元素542充当物理世界内任何固定元素的指标(例如,数字副本),其可以被存储在联结型世界模块538中,这样,用户530可以感知固定元素542上的内容而系统不必在用户530每次观看内容时都映射到固定元素542。因此,固定元素542可以是来自先前建模会话,或由单独的用户确定,但仍然由联结型世界模块538存储以供多个用户将来参考的网格模型。因此,联结型世界模块538可以从先前绘制的环境中识别环境532并显示AR内容,而无需用户530的设备首先绘制环境532的全部或部分,从而节省计算过程和周期并避免任何渲染的AR内容的延迟。
物理世界的网格模型546可以由AR显示系统创建,并且用于交互和显示AR内容540的适当表面和度量可以由联结型世界模块538存储以供用户530或其他用户将来检索,无需完全或部分地重建模型。在一些实施例中,数据输入536是诸如地理位置、用户标识和当前活动之类的输入,用于向联结型世界模块538指示一个或多个固定元素中的哪个固定元素542可用,哪个AR内容540已最后被放置在固定元素542上,以及是否显示相同的内容(这种AR内容是“持久的”内容,无论用户是否观看特定的联结型世界模型)。
即使在对象被认为是固定的(例如,厨房桌子)的实施例中,联结型世界模块538也可以在考虑物理世界中可能发生变化的情况下不时地更新物理世界模型中的那些对象。固定对象的模型可能会以非常低的频率更新。物理世界中的其他对象可能正在移动或不被视为固定的(例如,厨房椅子)。为了渲染具有逼真感的AR场景,AR系统可以以比用于更新固定对象的频率高得多的频率更新这些非固定对象的位置。为了能够准确跟踪物理世界中的所有对象,AR系统可以从多个传感器(包括一个或多个图像传感器)获取信息。
图5B是观察光学组件548和附属部件的示意图。在一些实施例中,指向用户眼睛549的两个眼睛跟踪相机550检测用户眼睛549的指标,诸如眼睛形状、眼睑闭合、瞳孔方向和用户眼睛549上的亮斑。
在一些实施例中,传感器之一可以是深度传感器551,诸如飞行时间传感器,向世界发射信号并检测来自附近对象的这些信号的反射以确定到给定对象的距离。例如,深度传感器可以快速确定对象是否由于那些对象的运动或用户姿势的变化而进入了用户的视场。然而,有关对象在用户视场中的位置的信息可以替代地或附加地利用其他传感器来收集。例如,深度信息可以从立体视觉图像传感器或全光传感器获取。
在一些实施例中,世界相机552记录大于外围的视图以绘制和/或以其他方式创建环境532的模型并检测可以影响AR内容的输入。在一些实施例中,世界相机552和/或相机553可以是灰度和/或彩色图像传感器,其可以以固定时间间隔输出灰度和/或彩色图像帧。相机553还可在特定时间捕获用户视场内的物理世界图像。基于帧的图像传感器的像素可以被重复采样,即使它们的值没被改变。世界相机552、相机553和深度传感器551中的每一个具有各自的视场554、555和556以从物理世界场景收集数据并记录物理世界场景,诸如图34A中描绘的物理世界环境532。
惯性测量单元557可以确定观察光学组件548的移动和取向。在一些实施例中,每个部件被可操作地耦合到至少一个其他部件。例如,深度传感器551被可操作地耦合到眼睛跟踪相机550,作为对用户眼睛549正在注视的实际距离的测量调节的确认。
应当理解,观察光学组件548可以包括图34B中所示的一些部件,并且可以包括作为所示部件的替代或补充的部件。在一些实施例中,例如,观察光学部件548可以包括两个世界相机552而不是四个。替代地或附加地,相机552和553不需要捕获它们的全视场的可见光图像。观察光学组件548可以包括其他类型的部件。在一些实施例中,观察光学组件548可以包括一个或多个动态视觉传感器(DVS),其像素可以异步响应超过阈值的光强度的相对变化。
在一些实施例中,观察光学部件548可以不包括基于飞行时间信息的深度传感器551。在一些实施例中,例如,观察光学组件548可以包括一个或多个全光相机,其像素可以捕获光强度和入射光的角度,从中可以确定深度信息。例如,全光相机可以包括覆盖有透射衍射掩模(TDM)的图像传感器。替代地或附加地,全光相机可以包括图像传感器,该图像传感器包含角度敏感像素和/或相位检测自动聚焦像素(PDAF)和/或微透镜阵列(MLA)。这样的传感器可以作为深度传感器551的补充或替代用作深度信息源。
还应当理解,图5B中的部件的配置是作为示例提供的。观察光学组件548可以包括具有任何合适配置的部件,其可被设置为向用户提供对于特定部件组实用的最大视场。例如,如果观察光学组件548具有一个世界相机552,则该世界相机可以被放置在观察光学组件的中心区域而不是侧面。
来自观察光学组件548中的这些传感器的信息可以被耦合到系统中的一个或多个处理器。处理器可以生成可通过渲染使得用户感知与物理世界中的对象交互的虚拟内容的数据。该渲染可以以任何合适的方式实现,包括生成描绘物理和虚拟对象的图像数据。在其他实施例中,可通过调制用户观看物理世界的显示设备的不透明度,在一个场景中示出物理和虚拟内容。可以控制不透明度以创建虚拟对象的外观并且还阻止用户看到物理世界中被虚拟对象遮挡的对象。在一些实施例中,图像数据可以仅包括可以被修改的虚拟内容,使得当通过用户界面查看时,虚拟内容被用户感知为与物理世界逼真地交互(例如,解决遮挡问题的剪辑内容)。
观察光学组件548上显示内容以在特定位置产生对象印象的位置可以取决于观察光学组件的物理特性。此外,用户头部相对于物理世界的姿势和用户眼睛注视的方向可能会影响在观察光学部件上的特定位置显示的内容出现在物理世界中的位置。上述传感器可以收集该信息,和/或提供可以从中计算该信息的信息,使得接收传感器输入的处理器可以计算对象应该在观察光学部件548上的何处渲染以创建用户期望的外观。
无论内容被如何呈现给用户,都可以使用物理世界模型,以便可以正确地计算可以受物理对象影响的虚拟对象的特性,其中包括虚拟对象的形状、位置、运动和可见性。在一些实施例中,该模型可以包括物理世界的重建,例如重建518。
该模型可以根据从用户的可穿戴设备上的传感器收集的数据创建。然而,在一些实施例中,该模型可以根据由多个用户收集的数据被创建,这些数据可以被聚集在远离所有用户的计算设备中(并且可以“在云中”)。
该模型可以至少部分地由世界重建系统创建,例如图3的世界重建部件516,该部件在图6A中被更详细地描绘。世界重建部件516可以包括感知模块660,该模块可以生成、更新和存储物理世界的一部分的表示。在一些实施例中,感知模块660可以将传感器重建范围内的物理世界的一部分表示为多个体素。每个体素可以与物理世界中预定体积的3D立方体相对应,并且包括表面信息,指示由体素所表示的体积中是否存在表面。体素可以被赋值,该值指示其对应的体积是否已经被确定为包括物理对象的表面,被确定为空的或者尚未用传感器测量,则其值未知。应当理解,不需要明确存储指示被确定为空或未知的体素的值,因为这些体素的值可以以任何合适的方式被存储在计算机存储器中,包括对于被确定为空的或未知的体素,不存储任何信息。
除了为持久世界表示生成信息之外,感知模块660可以识别并输出AR系统用户周围区域中变化的指示。这些变化的指示可以触发对被存储为持久世界的一部分的体积数据的更新,或触发其他功能,诸如触发生成AR内容以更新AR内容的部件304。
在一些实施例中,感知模块660可以基于符号距离函数(SDF)模型,识别变化。感知模块660可以被配置为接收传感器数据,例如深度图660a和头部姿势660b,然后将传感器数据融合到SDF模型660c中。深度图660a可以直接提供SDF信息,并且可以处理图像以获得SDF信息。SDF信息表示与用于捕获该信息的传感器的距离。由于那些传感器可以是可穿戴单元的一部分,因此SDF信息可以从可穿戴单元的角度并因此从用户的角度表示物理世界。头部姿势660b可以使SDF信息与物理世界中的体素相关。
在一些实施例中,感知模块660可以针对感知范围内的物理世界的一部分生成、更新和存储表示。感知范围可以至少部分地基于传感器的重建范围被确定,该重建范围可以至少部分地基于传感器的观察范围的极限被确定。作为特定示例,使用主动IR脉冲操作的主动深度传感器可以在一定距离范围内可靠地操作,从而创建传感器的观察范围,该范围可以从几厘米或几十厘米到几米。
世界重建部件516可以包括可与感知模块660交互的附加模块。在一些实施例中,持久世界模块662可以基于由感知模块660获取的数据,接收物理世界的表示。持久世界模块662还可以包括物理世界的各种表示格式。例如,可以存储诸如体素之类的体积元数据662b以及网格662c和平面662d。在一些实施例中,可以保存诸如深度图之类的其他信息。
在一些实施例中,诸如图6A所示的物理世界的表示可提供与稀疏地图(例如,上述基于特征点的跟踪地图)比较的有关物理世界的相对密集的信息。
在一些实施例中,感知模块660可以包括以各种格式(例如包括网格660d、平面和语义660e)生成物理世界的表示的模块。物理世界的表示可以被存储在本地和远程存储介质上。取决于例如存储介质的位置,可以在不同的坐标系中描述物理世界的表示。例如,可以在设备本地的坐标系中描述被存储在设备中的物理世界的表示。物理世界的表示可以具有被存储在云中的对应物。云中的对应物可以由在XR系统中的所有设备共享的坐标系中进行描述。
在一些实施例中,这些模块可以基于在生成表示时位于一个或多个传感器的感知范围内的数据以及在前时间捕获的数据和持久世界模块662中的信息,生成表示。在一些实施例中,这些部件可以对使用深度传感器捕获的深度信息进行操作。然而,AR系统可以包括视觉传感器并且可通过分析单目或双目视觉信息来生成这样的表示。
在一些实施例中,这些模块可以对物理世界的区域进行操作。当感知模块660检测到子区域中的物理世界中的变化时,可以触发那些模块以更新物理世界的子区域。例如,这种变化可通过检测SDF模型660c中的新表面或其他标准(诸如改变表示子区域的足够数量的体素的值)来检测。
世界重建部件516可以包括部件664,该部件可以从感知模块660接收物理世界的表示。有关物理世界的信息可以由这些部件根据例如来自应用的使用请求来拉取。在一些实施例中,信息可以被推送到使用部件,诸如经由预先识别的区域中的变化或感知范围内物理世界表示的变化的指示。部件664例如可以包括执行视觉遮挡、基于物理现象的交互和环境推理的处理的游戏程序和其他部件。
响应于来自部件664的查询,感知模块660可以以一种或多种格式发送物理世界的表示。例如,当部件664指示使用是用于视觉遮挡或基于物理现象的交互时,感知模块660可以发送表面表示。当部件664指示使用是用于环境推理时,感知模块660可以发送物理世界的网格、平面和语义。
在一些实施例中,感知模块660可以包括设置信息的格式以提供部件664的部件。这种部件的示例可以是射线投射部件660f。使用部件(例如,部件664)例如可以查询有关来自特定视角的物理世界的信息。射线投射部件660f可以从来自该视点的视场内的物理世界数据的一个或多个表示中进行选择。
根据前面的描述应当理解,感知模块660或AR系统的另一部件可以处理数据以创建物理世界的一部分的3D表示。可通过至少部分地基于相机视锥体和/或深度图像剔除3D重建体积的一部分,提取和持久化平面数据,捕获、持久化和更新允许在保持邻居一致性的同时进行本地更新的块中的3D重建数据,向生成此类场景的应用提供遮挡数据(其中遮挡数据源自一个或多个深度数据源的组合),和/或执行多阶段网格简化来简化要处理的数据。重建可以包含不同复杂程度的数据,例如包括诸如实时深度数据之类的原始数据、诸如体素之类的融合体积数据,以及诸如网格之类的计算数据。
在一些实施例中,联结型世界模型的部件可以是分布式的,其中一些部分在XR设备本地执行,一些部分远程执行,诸如在网络连接的服务器上或以其他方式在云中执行。本地XR设备和云之间的信息处理和存储的分配会影响XR系统的功能和用户体验。例如,通过将处理分配给云来减少本地设备上的处理可以延长电池寿命并减少本地设备上生成的热量。但是,将过多的处理分配给云可能会产生不希望的延迟,从而导致不可接受的用户体验。
图6B示出了根据一些实施例的被配置用于空间计算的分布式部件架构600。分布式部件架构600可以包括联结型世界部件602(例如,图5A中的PW 538)、Lumin OS 604、API606、SDK 608和应用610。Lumin OS604可以包括基于Linux的内核,该内核具有与XR设备兼容的自定义驱动程序。API 606可以包括应用编程接口,该接口允许XR应用(例如,应用610)访问XR设备的空间计算特征。SDK 608可以包括允许创建XR应用的软件开发工具包。
架构600中的一个或多个部件可以创建和维护联结型世界的模型。在该示例中,传感器数据在本地设备上收集。该传感器数据的处理可以部分地在XR设备本地执行,部分地在云中执行。PW 538可以包括至少部分地基于由多个用户穿戴的AR设备捕获的数据创建的环境地图。在AR体验的会话期间,单个AR设备(诸如上面结合图4描述的可穿戴设备)可以创建跟踪地图,这是一种类型的地图。
在一些实施例中,该设备可以包括构建稀疏地图和稠密地图的部件。跟踪地图可以用作稀疏地图,并且可以包括扫描环境的AR设备的头部姿势以及有关在每个头部姿势在该环境中检测到的对象的信息。可以针对每个设备本地地维护这些头部姿势。例如,每个设备上的头部姿势与接通设备进行会话时的初始头部姿势有关。因此,每个跟踪地图位于创建它的设备本地。稠密地图可以包括可由网格或深度信息表示的表面信息。替代地或附加地,稠密地图可以包括从表面或深度信息导出的更高级别的信息,诸如平面和/或其他对象的位置和/或特性。
在一些实施例中,稠密地图的创建可以独立于稀疏地图的创建。例如,稠密地图和稀疏地图的创建可以在AR系统内的单独处理流水线(pipeline)中执行。例如,分离处理可以使得不同类型地图的生成或处理能够以不同的速率执行。例如,稀疏地图可能以比稠密地图更快的速度被刷新。然而,在一些实施例中,稠密地图和稀疏地图的处理可能是相关的,即使在不同的流水线中被执行。例如,稀疏地图中显示的物理世界的变化可能会触发稠密地图的更新,反之亦然。此外,即使地图是独立创建的,该地图仍然可以一起使用。例如,从稀疏地图导出的坐标系可用于定义稠密地图中对象的位置和/或取向。
稀疏地图和/或稠密地图可以被持久化以供由同一设备重复使用和/或与其他设备共享。这种持久性可以通过将信息存储在云中来实现。AR设备可以将跟踪地图发送到云,以例如与从先前存储在云中的持久地图中选择的环境地图合并。在一些实施例中,所选择的持久地图可以从云发送到AR设备以进行合并。在一些实施例中,持久地图可以相对于一个或多个持久坐标系被定向。这样的地图可以用作规范地图,因为它们可以被多个设备中的任何一个使用。在一些实施例中,联结型世界的模型可以包括或根据一个或多个规范地图被创建。即使设备基于其本地坐标系执行一些操作,它们仍然可以通过确定其设备本地坐标系和规范地图之间的变换来使用规范地图。
规范地图以跟踪地图(TM)(例如,图31A中的TM 1102)为起点,该跟踪地图可以被提升为规范地图。规范地图可以被持久化,使得访问规范地图的设备一旦确定了其本地坐标系和规范地图的坐标系之间的变换,就可以使用规范地图中的信息来确定在设备周围的物理世界中的规范地图中表示的对象的位置。在一些实施例中,TM可以是由XR设备创建的头部姿势稀疏地图。在一些实施例中,可以在XR设备将一个或多个TM发送到云服务器以与由该XR设备在不同时间捕获的或由其他XR设备捕获的附加TM合并时创建规范地图。
规范地图或其他地图可以提供有关由被处理以创建相应地图的数据所表示的物理世界的部分的信息。图7示出了根据一些实施例的示例性跟踪地图700。跟踪地图700可以提供由点702表示的对应物理世界中的物理对象的平面图706。在一些实施例中,地图点702可以表示可包括多个特征的物理对象的特征。例如,桌子的每个角可以是由地图上的一个点表示的特征。这些特征可以从处理图像导出,诸如可以利用增强现实系统中的可穿戴设备的传感器来获取。例如,可以通过处理由传感器输出的图像帧以基于图像中的大梯度或其他合适的标准,识别特征来导出特征。进一步处理可能会限制每个帧中的特征数量。例如,处理可以选择可能表示持久对象的特征。可以使用一种或多种试探法来进行该选择。
跟踪地图700可以包括有关由设备收集的点702的数据。对于每个具有包含在跟踪地图中的数据点的图像帧,可以存储一个姿势。姿势可以表示捕获图像帧的取向,使得每个图像帧内的特征点可以是空间相关的。姿势可以通过定位信息来确定,诸如可以从可穿戴设备上的传感器(诸如IMU传感器)导出。替代地或附加地,姿势可以通过将图像帧与描绘物理世界的重叠部分的其他图像帧进行匹配来确定。通过找到这样的位置相关性,这可以通过将两个帧中的特征点的子集进行匹配来实现,可以计算两个帧之间的相对姿势。相对姿势对于跟踪地图是足够的,因为该地图可以是相对于在开始构建跟踪地图时基于设备的初始姿势建立的设备本地的坐标系的。
并非所有由设备收集的特征点和图像帧都可以被保留作为跟踪地图的一部分,因为利用传感器收集的信息中的许多可能是多余的。相反,只有某些帧可以被添加到地图中。可以基于一个或多个标准来选择这些帧,这些标准诸如包括与地图中已经存在的图像帧的重叠程度、它们包含的新特征的数量或帧中特征的质量指标。未添加到跟踪地图的图像帧可能会被丢弃或可能用于修改特征的位置。作为进一步的替代,可以保留表示为特征集的所有或大部分图像帧,但是可以将这些帧的子集指定为用于进一步处理的关键帧。
可以处理关键帧以产生keyrig 704。可以处理关键帧以产生三维特征点集并保存为keyrig 704。这样的处理可能需要例如比较从两个相机同时导出的图像帧,以立体地确定特征点的3D位置。元数据可以与这些关键帧和/或keyrig相关联,诸如姿势。
环境地图可以具有多种格式中的任何一种,例如,具体取决于环境地图的存储位置,例如包括AR设备的本地存储器和远程存储器。例如,远程存储器中的地图的分辨率可能高于内存有限的可穿戴设备上的本地存储器中的地图。为了将更高分辨率的地图从远程存储器发送到本地存储器,可以对地图进行下采样或以其他方式将其转换为适当的格式,诸如通过减少存储在地图中的物理世界的单位面积的姿势数量和/或针对每个姿势存储的特征点数量。在一些实施例中,来自远程存储器的高分辨率地图的切片或部分可被发送到切片或部分未被下采样的本地存储器。
可以在创建新的跟踪地图时更新环境地图的数据库。为了确定要被更新的数据库中可能非常大量的环境地图中的哪一个,更新可以包括有效地选择存储在与新的跟踪地图相关的数据库中的一个或多个环境地图。选定的一个或多个环境地图可以通过相关性进行排名,并且可以选择一个或多个排名最高的地图进行处理以将排名较高的选定环境地图与新的跟踪地图合并来创建一个或多个更新的环境地图。当新的跟踪地图表示没有要更新的预先存在的环境地图的物理世界的一部分时,该跟踪地图可以作为新的环境地图被存储在数据库中。
观看独立显示
本文描述了用于使用XR系统独立于观看虚拟内容的眼睛的位置提供虚拟内容的方法和装置。传统上,虚拟内容在显示系统进行任何动作时被重新渲染。例如,如果穿戴显示系统的用户在显示器上查看三维(3D)对象的虚拟表示并在3D对象出现的区域周围走动,则应针对每个视点重新渲染3D对象,以便用户感觉他或她正在围绕一个占据真实空间的对象走动。然而,重新渲染会消耗系统的大量计算资源并由于延迟而导致伪影。
发明人已经认识到并理解,可以使用头部姿势(例如,穿戴XR系统的用户的位置和取向)独立于用户头部内的眼睛旋转渲染虚拟内容。在一些实施例中,可以基于跨越一个或多个会话的真实空间中的多个坐标系,生成场景的动态地图,使得与动态地图交互的虚拟内容可以独立于用户头部内的眼睛旋转和/或独立于由例如高速计算密集型操作期间产生的热量引起的传感器变形被稳健地渲染。在一些实施例中,配置多个坐标系可以使由第一用户穿戴第一XR设备和由第二用户穿戴的第二XR设备识别场景中的公共位置。在一些实施例中,配置多个坐标系可以使穿戴XR设备的用户能够查看在场景的同一位置中的虚拟内容。
在一些实施例中,可以在具有世界原点的世界坐标系中构建跟踪地图。世界原点可以是XR设备被供电时的第一姿势。世界原点可以与重力对齐,以便XR应用的开发人员无需额外工作即可获得重力对齐。不同的跟踪地图可以被建立在不同的世界坐标系中,因为跟踪地图可能由同一XR设备在不同的会话中捕获和/或由不同用户穿戴的不同XR设备捕获。在一些实施例中,XR设备的会话可以从设备供电一直延伸到设备断电。在一些实施例中,XR设备可以具有包括头部原点的头部坐标系。头部原点可能是XR设备在拍摄图像时的姿势。世界坐标系的头部姿势和头部坐标系的头部姿势之间的差异可用于估计跟踪路线。
在一些实施例中,XR设备可以具有包括相机原点的相机坐标系。相机原点可以是XR设备的一个或多个传感器的当前姿势。发明人已经认识到并理解,相机坐标系的配置使得能够独立于用户头部内的眼睛旋转,稳健地显示虚拟内容。这种配置还使得能够独立于由例如操作过程中产生的热量导致的传感器变形,稳健地显示虚拟内容。
在一些实施例中,XR设备可以具有带头戴式框架的头部单元(用户可以将其固定到他们的头部)并且可以包括两个波导,用户的每只眼前一个波导。波导可以是透明的,使得来自真实世界对象的背景光可以透射通过波导,并且用户可以看到真实世界对象。每个波导可以将投射光从投影仪透射到用户的相应眼睛。投射光可以在眼睛的视网膜上形成图像。因此眼睛的视网膜接收背景光和投射光。用户可以同时看到真实世界对象和由投影光创建的一个或多个虚拟对象。在一些实施例中,XR设备可以具有检测用户周围真实世界对象的传感器。例如,这些传感器可以是捕获图像的相机,这些图像可以被处理以识别真实世界对象的位置。
在一些实施例中,XR系统可以将坐标系分配给虚拟内容,这与将虚拟内容附接在世界坐标系中相反。这样的配置使得能够描述虚拟内容而不考虑在哪里将虚拟内容渲染给用户,但是虚拟内容可以被附接到更持久的坐标系位置,诸如关于例如图14-图20C描述的持久坐标系(PCF),以便在指定位置被渲染。当对象的位置发生变化时,XR设备可以检测环境地图的变化并确定由用户穿戴的头戴单元相对于真实世界对象的移动。
图8示出了根据一些实施例的用户在物理环境中体验由XR系统10渲染的虚拟内容。XR系统可以包括由第一用户14.1穿戴的第一XR设备12.1、网络18和服务器20。用户14.1处于具有桌子16形式的真实对象的物理环境中。
在所示示例中,第一XR设备12.1包括头部单元22、腰包24和电缆连接26。第一用户14.1将头部单元22固定到他们的头部并且将腰包24远离头部单元22固定在腰上。电缆连接26将头部单元22连接到腰包24。头部单元22包括用于向第一用户14.1显示一个或多个虚拟对象,同时允许第一用户14.1看到诸如桌子16之类的真实对象的技术。腰包24主要包括第一XR设备12.1的处理和通信功能。在一些实施例中,处理和通信功能可以完全或部分地驻留在头部单元22中,从而可以移除腰包24或者腰包24可以位于诸如背包之类的另一设备中。
在所示示例中,腰包24经由无线连接连接到网络18。服务器20被连接到网络18并保存代表本地内容的数据。腰包24经由网络18从服务器20下载表示本地内容的数据。腰包24经由电缆连接26向头部单元22提供数据。头部单元22可以包括显示器,显示器具有例如激光光源或发光二极管(LED)的光源,以及引导光的波导。
在一些实施例中,第一用户14.1可以将头部单元22安装到他们的头部并且将腰包24安装到他们的腰部。腰包24可以通过网络18从服务器20下载表示虚拟内容的图像数据。第一用户14.1可以通过头部单元22的显示器看到桌子16。形成头部单元22的一部分的投影仪可以接收来自腰包24的图像数据并基于图像数据生成光。该光可以行进通过形成头部单元22的显示器的一部分的波导中的一个或多个。然后该光可以离开波导并传播到第一用户14.1的眼睛的视网膜上。投影仪以在第一用户14.1的眼睛视网膜上复制的图案生成光。落在第一用户14.1的眼睛的视网膜上的光可以具有选择的深度场,使得第一用户14.1在波导后面的预选深度处感知图像。此外,第一用户14.1的两只眼睛可以接收稍微不同的图像,使得第一用户14.1的大脑在距头部单元22的选择距离处感知一个或多个三维图像。在所示示例中,第一用户14.1感知到桌面16上方的虚拟内容28。虚拟内容28的比例及其距第一用户14.1的位置和距离由表示虚拟内容28的数据和用于向第一用户14.1显示虚拟内容28的各种坐标系来确定。
在所示示例中,虚拟内容28从绘图的角度是不可见的,并且通过使用第一XR设备12.1对第一用户14.1可见。虚拟内容28最初可以作为数据结构存在于腰带包24中的视觉数据和算法内。然后当头部单元22的投影仪基于数据结构生成光时,数据结构可以将它们自身表现为光。应当理解,虽然虚拟内容28在第一用户14.1面前的三维空间中不存在,但虚拟内容28仍然在图1中以三维空间表示,以说明头部单元22的穿戴者感知的内容。计算机数据在三维空间中的可视化可以在本描述中用于说明促进渲染的数据结构如何被一个或多个用户感知在腰包24中的数据结构内彼此相关。
图9示出了根据一些实施例的第一XR设备12.1的部件。第一XR设备12.1可以包括头部单元22、以及形成视觉数据和算法的一部分的各种部件,例如包括渲染引擎30、各种坐标系32、各种原点和目的地坐标系34以及各种原点至目的地坐标系变换器36。各种坐标系可以基于XR设备的内在因素,或者可以通过参考其他信息(诸如,持久姿势或持久坐标系)来确定,如本文所述。
头部单元22可以包括头戴式框架40、显示系统42、真实对象检测相机44、运动跟踪相机46和惯性测量单元48。
头戴式框架40可以具有可固定到图8中的第一用户14.1的头部的形状。显示系统42、真实对象检测相机44、运动跟踪相机46和惯性测量单元48可以被安装到头戴式框架40,因此与头戴式框架40一起移动。
坐标系32可以包括本地数据系统52、世界坐标系54、头部坐标系56和相机坐标系58。
本地数据系统52可以包括数据通道62、本地坐标系确定例程64和本地坐标系存储指令66。数据通道62可以是内部软件例程、诸如外部电缆或射频接收器之类的硬件部件、或诸如打开的端口之类的混合部件。数据通道62可以被配置为接收表示虚拟内容的图像数据68。
本地坐标系确定例程64可以被连接到数据通道62。本地坐标系确定例程64可以被配置为确定本地坐标系70。在一些实施例中,本地坐标系确定例程可以基于真实世界对象或真实世界位置,确定本地坐标系。在一些实施例中,本地坐标系可以是基于相对于浏览器窗口的底部边缘的顶部边缘、角色的头或脚、棱镜的外表面上的节点或包围虚拟内容的边界框、或放置坐标系的任何其他合适的位置,该坐标系定义虚拟内容的朝向和放置虚拟内容的位置(例如,诸如放置节点或PCF节点之类的节点)等。
本地坐标系存储指令66可以被连接到本地坐标系确定例程64。本领域技术人员将理解,软件模块和例程通过子例程、调用等被相互“连接”。本地坐标系存储指令66可以将本地坐标系70作为本地坐标系72存储在原点和目的地坐标系34中。在一些实施例中,原点和目的地坐标系34可以是一个或多个坐标系,其可以被操纵或变换以便虚拟内容在会话之间持续存在。在一些实施例中,会话可以是XR设备的启动和关闭之间的时间段。两个会话可能是单个XR设备的两次启动和关闭周期,或者可能是两个不同XR设备的一次启动和关闭。
在一些实施例中,原点和目的地坐标系34可以是涉及使第一用户的XR设备和第二用户的XR设备识别共同位置所需的一个或多个变换的坐标系。在一些实施例中,目的地坐标系可以是应用于目标坐标系的一系列计算和变换的输出,以便第一用户和第二用户在相同位置观看虚拟内容。
渲染引擎30可以被连接到数据通道62。渲染引擎30可以从数据通道62接收图像数据68,使得渲染引擎30可以至少部分地基于图像数据68,渲染虚拟内容。
显示系统42可以被连接到渲染引擎30。显示系统42可以包括将图像数据68变换为可见光的部件。可见光可以形成两个图案,每只眼睛一个。可见光可以进入图8中的第一用户14.1的眼睛并且可以在第一用户14.1的眼睛上的视网膜上被检测到。
真实对象检测相机44可以包括一个或多个相机,其可以从头戴式框架40的不同侧捕获图像。运动跟踪相机46可以包括一个或多个相机,其在头戴式框架40的侧面捕获图像帧。可以使用一组一个或多个相机来代替表示一个或多个真实对象检测相机44和一个或多个运动跟踪相机46的两组一个或多个相机。在一些实施例中,相机44、46可以捕获图像。如上所述,这些相机可以收集用于构建跟踪地图的数据。
惯性测量单元48可以包括用于检测头部单元22的移动的多个设备。惯性测量单元48可以包括重力传感器、一个或多个加速度计和一个或多个陀螺仪。惯性测量单元48的传感器组合地跟踪头部单元22在至少三个正交方向上和围绕至少三个正交轴的运动。
在所示示例中,世界坐标系54包括世界表面确定例程78、世界坐标系确定例程80和世界坐标系存储指令82。世界表面确定例程78被连接到真实对象检测相机44。世界表面确定例程78基于由真实对象检测相机44捕获的图像接收图像和/或关键帧,并处理图像以识别图像中的表面。深度传感器(未示出)可以确定到表面的距离。因此,表面由三个维度的数据表示,该三个维度的数据包括它们的大小、形状和距真实对象检测相机的距离。
在一些实施例中,世界坐标系84可以基于头部姿势会话的初始化时的原点。在一些实施例中,世界坐标系可以位于设备被启动的位置,或者如果头部姿势在启动会话期间丢失,则可以位于新的位置。在一些实施例中,世界坐标系可以是头部姿势会话开始处的原点。
在所示示例中,世界坐标系确定例程80被连接到世界表面确定例程78并且基于由世界表面确定例程78确定的表面的位置,确定世界坐标系84。世界坐标系存储指令82被连接到世界坐标系确定例程80以从世界坐标系确定例程80接收世界坐标系84。世界坐标系存储指令82将世界坐标系84存储为原点和目的地坐标系34内的世界坐标系86。
头部坐标系56可以包括头部坐标系确定例程90和头部坐标系存储指令92。头部坐标系确定例程90可以被连接到运动跟踪相机46和惯性测量单元48。头部坐标系确定例程90可以使用来自运动跟踪相机46和惯性测量单元48的数据来计算头部坐标系94。例如,惯性测量单元48可以具有确定重力相对于头部单元22的方向的重力传感器。运动跟踪相机46可以连续捕获由头部坐标系确定例程90用来细化头部坐标系94的图像。当图8中的第一用户14.1移动他们的头部时,头部单元22也移动。运动跟踪相机46和惯性测量单元48可以连续地向头部坐标系确定例程90提供数据,使得头部坐标系确定例程90可以更新头部坐标系94。
头部坐标系存储指令92可以被连接到头部坐标系确定例程90以从头部坐标系确定例程90接收头部坐标系94。头部坐标系存储指令92可以将头部坐标系94作为头部坐标系96存储在原点和目的地坐标系34中。当头部坐标系确定例程90重新计算头部坐标系94时,头部坐标系存储指令92可以重复地将更新的头部坐标系94存储为头部坐标系96。在一些实施例中,头部坐标系可以是可穿戴XR设备12.1相对于本地坐标系72的位置。
相机坐标系58可以包括相机内在因素98。相机内在因素98可以包括作为其设计和制造特征的头部单元22的尺寸。相机内在因素98可用于计算被存储在原点和目的地坐标系34内的相机坐标系100。
在一些实施例中,相机坐标系100可以包括图8中第一用户14.1的左眼的所有瞳孔位置。当左眼从左向右或从上向下移动时,左眼的瞳孔位置被定位在相机坐标系100内。另外,右眼的瞳孔位置被定位在右眼的相机坐标系100内。在一些实施例中,相机坐标系100可以包括相机相对于拍摄图像时的本地坐标系的位置。
原点至目的地坐标系变换器36可以包括本地至世界坐标变换器104、世界至头部坐标变换器106和头部至相机坐标变换器108。本地至世界坐标变换器104可以接收本地坐标系72并将本地坐标系72变换到世界坐标系86。本地坐标系72至世界坐标系86的变换可以被表示为在世界坐标系86内的变换到世界坐标系的本地坐标系110。
世界至头部坐标变换器106可以从世界坐标系86变换到头部坐标系96。世界至头部坐标变换器106可以将变换到世界坐标系的本地坐标系110变换到头部坐标系96。该变换可以被表示为在头部坐标系96内的变换到头部坐标系的本地坐标系112。
头部至相机坐标变换器108可以从头部坐标系96变换到相机坐标系100。头部至相机坐标变换器108可以将变换到头部坐标系的本地坐标系112变换到在相机坐标系100内的变换到相机坐标系的本地坐标系114。可以将变换到相机坐标系的本地坐标系114输入渲染引擎30中。渲染引擎30可以基于变换到相机坐标系的本地坐标系114,渲染表示本地内容28的图像数据68。
图10是各种原点和目的地坐标系34的空间表示。图中表示了本地坐标系72、世界坐标系86、头部坐标系96和相机坐标系100。在一些实施例中,当虚拟内容被放置在真实世界中以便用户可以观看虚拟内容时,与XR内容28相关联的本地坐标系可以具有相对于本地和/或世界坐标系和/或PCF的位置和旋转(例如,可以提供节点和朝向)。每个相机可以具有其自己的相机坐标系100,其中包含一只眼睛的所有瞳孔位置。参考标号104A和106A分别表示由图9中的本地至世界坐标变换器104、世界至头部坐标变换器106和头部至相机坐标变换器108进行的变换。
图11示出了根据一些实施例的用于从头部坐标系变换到相机坐标系的相机渲染协议。在所示示例中,单个眼睛的瞳孔从位置A移动到B。旨在呈现为静止的虚拟对象将在两个位置A或B之一处投影到深度平面上,具体取决于瞳孔的位置(假设相机被配置为使用基于瞳孔的坐标系)。因此,使用变换到头部坐标系的瞳孔坐标系将在眼睛从位置A移动到位置B时导致静止虚拟对象中的抖动。这种情况被称为观看相关显示或投影。
如图12所示,相机坐标系(例如,CR)被定位并包含所有瞳孔位置,并且不考虑瞳孔位置A和B,对象投影现在是一致的。头部坐标系变换到CR坐标系,这被称为观看独立显示或投影。可以对虚拟内容应用图像重投影以应对眼睛位置的变化,然而,在渲染仍然在同一位置时,抖动被最小化。
图13更详细地示出了显示系统42。显示系统42包括被连接到渲染引擎30并形成视觉数据和算法的一部分的立体分析器144。
显示系统42还包括左投影仪166A和右投影仪166B以及左波导170A和右波导170B。左投影仪166A和右投影仪166B被连接到电源。每个投影仪166A和166B具有相应的输入,以便图像数据被提供给相应的投影仪166A或166B。相应的投影仪166A或166B在被供电时生成二维图案的光并从中发出光。左波导170A和右波导170B被定位成分别接收来自左投影仪166A和右投影仪166B的光。左波导170A和右波导170B是透明波导。
在使用中,用户将头戴式框架40安装在他们的头部。头戴式框架40的部件例如可以包括缠绕在用户脑袋后面的带子(未示出)。左波导170A和右波导170B然后位于用户的左眼220A和右眼220B的前面。
渲染引擎30将其接收的图像数据输入立体分析器144中。图像数据是图8中的本地内容28的三维图像数据。图像数据被投影到多个虚拟平面上。立体分析器144分析图像数据以基于投影到每个深度平面上的图像数据,确定左右图像数据集。左右图像数据集是表示二维图像的数据集,这些二维图像被投影到三个维度上,以赋予用户深度感。
立体分析器144将左右图像数据集输入左投影仪166A和右投影仪166B中。左投影仪166A和右投影仪166B然后创建左右光图案。显示系统42的部件以平面图示出,但应当理解,当以正视图示出时,左右图案是二维图案。每个光图案包括多个像素。为了说明的目的,来自两个像素的光线224A和226A被示出为离开左投影仪166A并进入左波导170A。光线224A和226A从左波导170A的侧面反射。示出了光线224A和226A通过从左到右的内反射在左波导170A内传播,尽管应当理解,光线224A和226A也使用折射和反射系统沿一个方向传播到纸中。
光线224A和226A通过瞳孔228A离开左光波导170A,然后通过左眼220A的瞳孔230A进入左眼220A。光线224A和226A然后落在左眼220A的视网膜232A上。以这种方式,左光图案落在左眼220A的视网膜232A上。用户感觉到被形成在视网膜232A上的像素是像素234A和236A,用户感觉像素234A和236A位于与左眼220A相对的左波导170A的一侧上的某个距离处。深度感是通过操纵光的焦距来创建的。
以类似的方式,立体分析器144将右图像数据集输入右投影仪166B中。右投影仪166B发射右光图案,其由光线224B和226B形式的像素表示。光线224B和226B在右波导170B内反射并通过光瞳228B出射。光线224B和226B然后通过右眼220B的瞳孔230B进入并且落在右眼220B的视网膜232B上。光线224B和226B的像素被感知为在右波导170B后面的像素134B和236B。
在视网膜232A和232B上创建的图案被分别感知为左图像和右图像。由于立体分析器144的功能,左右图像彼此略有不同。左右图像在用户的脑海中被感知为三维渲染。
如上所述,左波导170A和右波导170B是透明的。来自诸如与眼睛220A和220B相对的左波导170A和右波导170B的一侧面上的桌子16之类的现实生活对象的光可以通过左波导170A和右波导170B投射并落在视网膜232A和232B上。
持久坐标系(PCF)
本文描述了用于在共享空间内跨用户实例提供空间持久性的方法和装置。如果没有空间持久性,用户在会话中放置在物理世界中的虚拟内容可能不存在,或者可能在不同会话中在用户视图中被放错位置。如果没有空间持久性,一个用户放置在物理世界中的虚拟内容可能不存在,或者放在第二用户视图中不合适,即使第二用户打算与第一用户共享同一物理空间的体验。
发明人已经认识到并理解,可以通过持久坐标系(PCF)来提供空间持久性。PCF可以基于表示物理世界中识别的特征(例如,角落、边缘)的一个或多个点来定义。可以选择特征,使得它们在从XR系统的一个用户实例到另一用户实例之间似乎是相同的。
此外,当相对于仅基于跟踪地图的本地地图进行渲染时,导致计算跟踪路径(例如,相机轨迹)偏离实际跟踪路径的跟踪漂移可造成虚拟内容的位置出现在不适当的位置。随着XR设备在一段时间内收集更多有关场景的信息,可以细化空间的跟踪地图以纠正漂移。但是,如果虚拟内容在地图细化之前被放置在真实对象上并相对于从跟踪地图导出的设备的世界坐标系进行保存,则虚拟内容可能会出现位移,就好像真实对象在地图细化期间已发生移动。PCF可以根据地图细化进行更新,因为PCF是基于特征定义的,并且在地图细化期间随着特征的移动而更新。
PCF可以包括具有相对于地图坐标系的平移和旋转的六个自由度括。PCF可以被存储在本地存储介质和/或远程存储介质中。PCF的平移和旋转可以取决于例如存储位置相对于地图坐标系来计算。例如,由设备在本地使用的PCF具有相对于设备的世界坐标系的平移和旋转。云中的PCF具有相对于规范地图的规范坐标系的平移和旋转。
PCF可以提供物理世界的稀疏表示,提供少于有关物理世界的全部可用信息的信息,以便有效地处理和发送这些信息。用于处理持久空间信息的技术可以包括跨一个或多个会话,基于真实空间中的一个或多个坐标系,创建动态地图,在稀疏地图上方生成持久坐标系(PCF),其例如可以经由应用编程接口(API)暴露给XR应用。
图14是示出根据一些实施例的持久坐标系(PCF)的创建和XR内容到PCF的附接的框图。每个框可以表示存储在计算机存储器中的数字信息。在应用1180的情况下,数据可以表示计算机可执行指令。例如,在虚拟内容1170的情况下,数字信息可以定义例如应用1180所指定的虚拟对象。在其他框的情况下,数字信息可以表征物理世界的某个方面。
在所示实施例中,一个或多个PCF是根据利用可穿戴设备上的传感器捕获的图像创建的。在图14的实施例中,传感器是视觉图像相机。这些相机可以是用于形成跟踪地图的相同相机。因此,图14建议的一些处理可以作为更新跟踪地图的一部分来执行。然而,图14示出了除了跟踪地图之外还生成了提供持久性的信息。
为了导出3D PCF,在允许立体图像分析的配置中,将来自安装在可穿戴设备的两个相机的两个图像1110一起处理。图14示出了图像1和图像2,各自源自相机之一。为简单起见,示出了来自每个相机的单个图像。然而,每个相机都可以输出图像帧流,并且图14所示的处理可以针对流中的多个图像帧被执行。
因此,图像1和图像2各自是图像帧序列中的一个帧。图14所示的处理可以对序列中的连续图像帧进行重复,直到处理包含提供用于形成持久空间信息的合适图像的特征点的图像帧。替代地或附加地,图14的处理可以在用户移动时重复,使得用户不再足够接近先前识别的PCF以可靠地使用该PCF来确定相对于物理世界的位置。例如,XR系统可以为用户维护当前的PCF。当该距离超过阈值时,系统可以切换到更靠近用户的新的当前PCF,其可以根据图14的过程,使用在用户当前位置获取的图像帧而生成。
即使在生成单个PCF时,也可以处理图像帧流以识别描绘物理世界中的内容的图像帧,该内容可能是稳定的并且可以被图像帧中描述的物理世界的区域附近的设备容易地识别。在图14的实施例中,该处理从识别图像中的特征1120开始。例如,可以通过在图像中找到高于阈值的梯度位置或其他特性来识别特征,这例如可以对应于对象的角部。在所示实施例中,特征是点,但是可以替代地或附加地使用其他可识别的特征,诸如边缘。
在所示实施例中,选择固定数量N的特征1120进行进一步处理。可以基于一个或多个标准,诸如梯度大小或与其他特征点的接近度,来选择这些特征点。替代地或附加地,可以试探地选择特征点,诸如基于暗示特征点持久存在的特性。例如,可以基于可能与窗户或门或大件家具的角部相对应的特征点的特性,定义试探法。这种试探法考虑了特征点本身及其周围环境。作为具体示例,每个图像的特征点数量可以在100到500之间,或者在150到250之间,诸如200。
不管选择的特征点的数量,都可以针对特征点计算描述符1130。在该示例中,针对每个选择的特征点计算描述符,但可以针对多组特征点或特征点的子集或图像内的所有特征计算描述符。描述符表征特征点,使得表示物理世界中相同对象的特征点被分配相似的描述符。描述符可以促进两个帧的对齐,诸如当一个地图相对于另一地图定位时可能发生此对齐。可以通过识别具有相似描述符的特征点来进行两个帧的初始对齐,而不是搜索最小化两个图像的特征点之间的距离的相对帧取向。图像帧的对齐可以基于具有相似描述符的点的对齐,这样做所需的处理少于计算图像中所有特征点的对齐所需的处理。
描述符可以被计算为特征点到描述符的映射,或者在一些实施例中,被计算为特征点周围的图像块到描述符的映射。描述符可以是数字量。美国专利申请16/190,948描述了计算特征点的描述符,并且其全部内容通过引用并入此文。
在图14的示例中,针对每个图像帧中的每个特征点计算描述符1130。基于描述符和/或特征点和/或图像本身,图像帧可以被识别为关键帧1140。在所示实施例中,关键帧是满足特定标准的图像帧,然后选择该图像帧做进一步处理。例如,在制作跟踪地图时,可以选择向地图添加有意义信息的图像帧作为集成到地图中的关键帧。另一方面,可以丢弃与已经针对其将图像帧整合到地图中的区域基本重叠的图像帧,使得这些图像帧不会成为关键帧。替代地或附加地,可以基于图像帧中特征点的数量和/或类型,选择关键帧。在图14的实施例中,被选择包含在跟踪地图中的关键帧1150也可以被视为用于确定PCF的关键帧,但是也可以使用不同的或附加的标准来选择用于生成PCF的关键帧。
虽然图14示出了关键帧用于进一步处理,但是从图像获取的信息也可以以其他形式处理。例如,可以替代地或附加地处理诸如Keyrig中的特征点。此外,虽然关键帧被描述为源自单个图像帧,但关键帧和获取的图像帧之间不必存在一对一的关系。例如,可以从多个图像帧中获取关键帧,诸如通过将图像帧拼接在一起或聚合图像帧,使得只有出现在多个图像中的特征被保留在关键帧中。
关键帧可以包括图像信息和/或与图像信息相关联的元数据。在一些实施例中,由相机44、46(图9)捕获的图像可以被计算成一个或多个关键帧(例如,关键帧1、2)。在一些实施例中,关键帧可以包括相机姿势。
在一些实施例中,关键帧可以包括在相机姿势处捕获的一个或多个相机图像。在一些实施例中,XR系统可以确定在相机姿势处捕获的相机图像的一部分是无用的,因此关键帧中不包括该部分。因此,使用关键帧将新图像与早期场景知识对齐可以减少XR系统计算资源的使用。在一些实施例中,关键帧可以包括位于具有方向/角度的位置处的图像和/或图像数据。
在一些实施例中,关键帧可以包括从中可以观察一个或多个地图点的位置和方向。在一些实施例中,关键帧可以包括具有ID的坐标系。美国专利申请No.15/877,359描述了关键帧,并且特此通过引用将全部内容并入此文。
可以选择一些或所有关键帧1140做进一步处理,诸如为关键帧生成持久姿势1150。该选择可以基于图像帧中所有特征点或特征点子集的特性。这些特性可以通过处理描述符、特征和/或图像帧本身来确定。作为具体示例,该选择可以基于被识别为可能与持久对象相关的特征点集群。
每个关键帧与获取该关键帧的相机姿势相关联。对于被选择处理成持久姿势的关键帧,该姿势信息可以与有关关键帧的其他元数据(诸如,获取时间和/或获取位置处的WiFi指纹和/或GPS坐标)一起被保存。在一些实施例中,例如GPS坐标之类的元数据可以被单独地或组合地用作定位过程的一部分。
持久姿势是设备用来相对于先前获取的有关物理世界的信息进行自我取向的信息源。例如,如果创建持久姿势的关键帧被合并到物理世界的地图中,则设备可以使用关键帧中与持久姿势相关联的足够数量特征点相对于该持久姿势来进行自我取向。设备可以将其拍摄的周围环境的当前图像与持久姿势对齐。这种对齐可以基于将当前图像与引起持久姿势的图像1110、特征1120和/或描述符1130、或该图像或这些特征或描述符的任何子集进行匹配。在一些实施例中,与持久姿势匹配的当前图像帧可能是另一个已合并到设备跟踪地图中的关键帧。
有关持久姿势的信息可以以促进在相同或不同设备上执行的多个应用之间共享的格式被存储。在图14的示例中,一些或所有持久姿势可以被反映为持久坐标系(PCF)1160。与持久姿势一样,PCF可以与地图相关联并且可以包括设备用于确定其相对于PCF的取向的特征集或其他信息。PCF可以包括定义其相对于其地图原点的变换的变换,使得设备通过将其位置与PCF进行关联来确定其相对于地图中反映的物理世界中的任何对象的位置。
由于PCF提供了一种用于确定相对于物理对象的位置的机制,因此应用(诸如应用1180)可以定义虚拟对象相对于用作虚拟内容1170的锚点的一个或多个PCF的位置。例如,图14示出了App 1将其虚拟内容2与PCF 1.2进行关联。同样,App 2将其虚拟内容3与PCF1.2进行关联。App 1还被示出为将其虚拟内容1与PCF 4.5进行关联,App 2被示出为将其虚拟内容4与PCF 3进行关联。在一些实施例中,PCF 3可以基于图像3(未示出),并且PCF 4.5可以是基于图像4和图像5(未示出),类似于PCF 1.2如何基于图像1和图像2。在渲染该虚拟内容时,设备可以应用一个或多个变换来计算信息,诸如虚拟内容相对于设备的显示器的位置和/或物理对象相对于虚拟内容的期望位置的位置。使用PCF作为参考可以简化此类计算。
在一些实施例中,持久姿势可以是具有一个或多个相关联的关键帧的坐标位置和/或方向。在一些实施例中,可以在用户已经行进一定距离(例如,三米)之后自动创建持久姿势。在一些实施例中,持久姿势可以在定位期间充当参考点。在一些实施例中,可以将持久姿势存储在联结型世界中(例如,联结型世界模块538)。
在一些实施例中,可以基于相邻PCF之间允许的预定义距离,确定新的PCF。在一些实施例中,当用户行进预定距离(例如,五米)时,可以将一个或多个持久姿势计算成PCF。在一些实施例中,PCF可以与一个或多个世界坐标系和/或规范坐标系相关联,例如,在联结型世界中。在一些实施例中,取决于例如安全设置,PCF可以被存储在本地和/或远程数据库中。
图15示出了根据一些实施例的建立和使用持久坐标系的方法4700。方法4700可以从使用XR设备的一个或多个传感器捕获(动作4702)有关场景的图像(例如,图14中的图像1和图像2)开始。可以使用多个相机并且一个相机可以生成多个图像,例如在一个流中。
方法4700可以包括从捕获的图像中提取(4704)兴趣点(例如,图7中的地图点702、图14中的特征1120),生成(动作4706)提取的兴趣点的描述符(例如,图14中的描述符1130),并基于描述符生成(动作4708)关键帧(例如,关键帧1140)。在一些实施例中,该方法可以比较关键帧中的兴趣点,并形成共享预定数量兴趣点的关键帧对。该方法可以使用单独的关键帧对来重建物理世界的一部分。物理世界的绘图部分可以被保存为3D特征(例如,图7中的Keyrig 704)。在一些实施例中,可以使用关键帧对的选择部分来构建3D特征。在一些实施例中,可以选择性地保存绘图的结果。不用于构建3D特征的关键帧可以通过姿势与3D特征相关联,例如,用关键帧的姿势之间的协方差矩阵表示关键帧之间的距离。在一些实施例中,可以选择关键帧对来构建3D特征,使得每两个构建的3D特征之间的距离在预定距离内,可以确定该预定距离以平衡所需计算量和结果模型的准确程度。这种方法能够为物理世界模型提供合适的数据量,以便于使用XR系统进行高效和准确的计算。在一些实施例中,两个图像的协方差矩阵可以包括两个图像的姿势(例如,六个自由度)之间的协方差矩阵。
方法4700可以包括基于关键帧生成(动作4710)持久姿势。在一些实施例中,该方法可以包括基于从关键帧对重构的3D特征,生成持久姿势。在一些实施例中,可以将持久姿势附加到3D特征。在一些实施例中,持久姿势可以包括用于构建3D特征的关键帧的姿势。在一些实施例中,持久姿势可以包括用于构建3D特征的关键帧的平均姿势。在一些实施例中,可以生成持久姿势,使得相邻持久姿势之间的距离在预定值内,例如在一米到五米的范围内、介于两者之间的任何值,或任何其他合适的值。在一些实施例中,相邻持久姿势之间的距离可以由相邻持久姿势的协方差矩阵表示。
方法4700可以包括基于持久姿势生成(动作4712)PCF。在一些实施例中,PCF可以被附接到3D特征。在一些实施例中,PCF可以与一个或多个持久姿势相关联。在一些实施例中,PCF可以包括相关联的持久姿势之一的姿势。在一些实施例中,PCF可以包括相关联的持久姿势的姿势的平均姿势。在一些实施例中,可以生成PCF,使得相邻PCF之间的距离在预定值内,例如在三米到十米的范围内、介于两者之间的任何值、或任何其他合适的值。在一些实施例中,相邻PCF之间的距离可以由相邻PCF的协方差矩阵表示。在一些实施例中,PCF可以例如经由应用编程接口(API)暴露给XR应用,使得XR应用可以通过PCF访问物理世界的模型,而无需访问模型本身。
方法4700可以包括将要由XR设备显示的虚拟对象的图像数据与至少一个PCF进行关联(动作4714)。在一些实施例中,该方法可以包括计算虚拟对象相对于关联的PCF的平移和取向。应当理解,不必将虚拟对象与由放置虚拟对象的设备生成的PCF进行关联。例如,设备可以检索在云中的规范地图内保存的PCF,并将虚拟对象与检索到的PCF进行关联。应当理解,随着PCF在一段时间内的调整,虚拟对象可以与相关联的PCF一起移动。
图16示出了根据一些实施例的第一XR设备12.1以及第二XR设备12.2和服务器20的视觉数据和算法。图16所示的部件可以操作以执行与生成、更新和/或使用空间信息(诸如,如本文所述的持久姿势、持久坐标系、跟踪地图或规范地图)相关联的一些或所有操作。尽管未示出,但是第一XR设备12.1可以被配置为与第二XR设备12.2相同。服务器20可以具有地图存储例程118、规范地图120、地图发送器122和地图合并算法124。
可以在与第一XR设备12.1相同的场景中的第二XR设备12.2可以包括持久坐标系(PCF)集成单元1300、生成可用于渲染虚拟内容的图像数据68的应用1302、以及帧嵌入生成器308(参见图21)。在一些实施例中,地图下载系统126、PCF识别系统128、地图2、定位模块130、规范地图合并器132、规范地图133和地图发布器136可以被分组为联结型世界单元1304。PCF集成单元1300可以被连接到联结型世界单元1304和第二XR设备12.2的其他部件以允许PCF的检索、生成、使用、上传和下载。
包括PCF的地图可以在变化的世界中实现更多的持久性。在一些实施例中,定位例如包含图像匹配特征的跟踪地图可以包括从由PCF构成的地图中选择表示持久内容的特征,这实现了快速匹配和/或定位。例如,人们进出场景以及诸如门之类的对象相对于场景移动的世界需要较少的存储空间和较低的传输速率,并允许使用单个PCF及其相对于彼此的关系(例如,PCF的集成星座)来绘制场景。
在一些实施例中,PCF集成单元1300可以包括被先前存储在第二XR设备12.2的存储单元上的数据存储中的PCF 1306、PCF跟踪器1308、持久姿势获取器1310、PCF检查器1312、PCF生成系统1314、坐标系计算器1316、持久姿势计算器1318和三个变换器,该三个变换器包括跟踪地图和持久姿势变换器1320、持久姿势和PCF变换器1322、以及PCF和图像数据变换器1324。
在一些实施例中,PCF跟踪器1308可以具有可由应用1302选择的接通提示和关断提示。应用1302可以由第二XR设备12.2的处理器执行,以例如显示虚拟内容。应用1302可以具有经由接通提示接通PCF跟踪器1308的调用。PCF跟踪器1308可以在PCF跟踪器1308被接通时生成PCF。应用1302可以具有经由关断提示关断PCF跟踪器1308的后续调用。当PCF跟踪器1308被关断时,PCF跟踪器1308终止PCF生成。
在一些实施例中,服务器20可以包括先前已经与规范地图120相关联地保存的多个持久姿势1332和多个PCF 1330。地图发送器122可以将规范地图120连同持久姿势1332和/或PCF 1330一起发送到第二XR设备12.2。持久姿势1332和PCF 1330可以与规范地图133相关联地被存储在第二XR设备12.2上。当地图2定位到规范地图133时,可以与地图2相关联地被存储持久姿势1332和PCF 1330。
在一些实施例中,持久姿势获取器1310可以获取地图2的持久姿势。PCF检查器1312可以被连接到持久姿势获取器1310。PCF检查器1312可以基于由持久姿势获取器1310检索到的持久姿势从PCF 1306中检索PCF。由PCF检查器1312检索到的PCF可以形成用于基于PCF的图像显示的初始PCF组。
在一些实施例中,应用1302可能需要生成额外的PCF。例如,如果用户移动到先前未绘制的区域,则应用1302可以接通PCF跟踪器1308。PCF生成系统1314可以被连接到PCF跟踪器1308并且随着地图2开始扩展而开始基于地图2生成PCF。由PCF生成系统1314生成的PCF可以形成可用于基于PCF的图像显示的第二组PCF。
坐标系计算器1316可以被连接到PCF检查器1312。在PCF检查器1312检索到PCF之后,坐标系计算器1316可以调用头部坐标系96来确定第二XR设备12.2的头部姿势。坐标系计算器1316还可以调用持久姿势计算器1318。持久姿势计算器1318可以被直接或间接连接到帧嵌入生成器308。在一些实施例中,图像/帧可以在从上一关键帧开始行进了阈值距离(例如,3米)之后被指定为关键帧。持久姿势计算器1318可以基于多个(例如,三个)关键帧生成持久姿势。在一些实施例中,持久姿势可以基本是多个关键帧的坐标系的平均值。
跟踪地图和持久姿势变换器1320可以被连接到地图2和持久姿势计算器1318。跟踪地图和持久姿势变换器1320可以将地图2变换为持久姿势以确定相对于地图2的原点处的持久姿势。
持久姿势和PCF变换器1322可以被连接到跟踪地图和持久姿势变换器1320并被进一步连接到PCF检查器1312和PCF生成系统1314。持久姿势和PCF变换器1322可以将持久姿势(跟踪地图已经变换成的持续姿势)变换为来自PCF检查器1312和PCF生成系统1314的PCF,以确定相对于持久姿势的PCF。
PCF和图像数据变换器1324可以被连接到持久姿势和PCF变换器1322以及数据通道62。PCF和图像数据变换器1324将PCF变换为图像数据68。渲染引擎30可以被连接到PCF和图像数据变换器1324以向用户显示相对于PCF的图像数据68。
PCF集成单元1300可以将利用PCF生成系统1314生成的附加PCF存储在PCF 1306内。PCF 1306可以相对于持久姿势被存储。当地图发布器136将地图2发送到服务器20时,地图发布器136可以检索PCF 1306和与PCF 1306相关联的持久姿势,地图发布器136还将与地图2相关联的PCF和持久姿势发送到服务器20。当服务器20的地图存储例程118存储地图2时,地图存储例程118还可以存储由第二查看设备12.2生成的持久姿势和PCF。地图合并算法124可以创建规范地图120,其中地图2的持久姿势和PCF与规范地图120相关联并且分别存储在持久姿势1332和PCF 1330中。
第一XR设备12.1可以包括类似于第二XR设备12.2的PCF集成单元1300的PCF集成单元。当地图发送器122将规范地图120发送到第一XR设备12.1时,地图发送器122可以发送与规范地图120相关联并且源自第二XR设备12.2的持久姿势1332和PCF 1330。第一XR设备12.1可以将PCF和持久姿势存储在第一XR设备12.1的存储设备上的数据存储中。第一XR设备12.1然后可以利用源自第二XR设备12.2的持久姿势和PCF进行相对于PCF的图像显示。附加地或替代地,第一XR设备12.1可以以类似于上述第二XR设备12.2的方式检索、生成、使用、上传和下载PCF和持久姿势。
在所示示例中,第一XR设备12.1生成本地跟踪地图(以下被称为“地图1”)并且地图存储例程118从第一XR设备12.1接收地图1。然后地图存储例程118将地图1存储在服务器20的存储设备上作为规范地图120。
第二XR设备12.2包括地图下载系统126、锚点识别系统128、定位模块130、规范地图合并器132、本地内容定位系统134和地图发布器136。
在使用中,地图发送器122将规范地图120发送到第二XR设备12.2,并且地图下载系统126从服务器20下载规范地图120并将其存储为规范地图133。
锚点识别系统128被连接到世界表面确定例程78。锚点识别系统128基于由世界表面确定例程78检测到的对象识别锚点。锚点识别系统128使用锚点生成第二地图(地图2)。如循环138所示,锚点识别系统128继续识别锚点并继续更新地图2。锚点位置被记录为基于由世界表面确定例程78提供的数据的三维数据。世界表面确定例程78接收来自真实对象检测相机44的图像和来自深度传感器135的深度数据以确定表面的位置以及它们距深度传感器135的相对距离。
定位模块130被连接到规范地图133和地图2。定位模块130重复尝试将地图2定位到规范地图133。规范地图合并器132被连接到规范地图133和地图2。当定位模块130将地图2定位到规范地图133时,规范地图合并器132将规范地图133合并到地图2的锚点中。然后用包括在规范地图中的缺失数据更新地图2。
本地内容定位系统134被连接到地图2。例如,本地内容定位系统134可以是用户在世界坐标系内的特定位置定位本地内容的系统。本地内容然后将其自身附加到地图2的一个锚点。本地至世界坐标变换器104基于本地内容定位系统134的设置将本地坐标系变换到世界坐标系。渲染引擎30、显示系统42和数据通道62的功能已经参考图2进行了描述。
地图发布器136将地图2上传到服务器20。服务器20的地图存储例程118然后将地图2存储在服务器20的存储介质中。
地图合并算法124将地图2与规范地图120进行合并。当多于两个地图(例如,与物理世界的相同或相邻区域相关的三个或四个地图)已被存储时,地图合并算法124将所有地图合并到规范地图120中以渲染新的规范地图120。地图发送器122然后将新的规范地图120发送到由新规范地图120表示的区域中的任何和所有设备12.1和12.2。当设备12.1和12.2将它们各自的地图定位到规范地图120时,规范地图120变成提升地图。
图17示出了根据一些实施例的生成场景地图的关键帧的示例。在所示示例中,针对房间左侧墙壁上的门生成第一关键帧KF1。针对房间的地板、左侧墙壁和右侧墙壁相交的角落区域生成第二关键帧KF2。针对房间右侧墙壁上的窗户区域生成第三关键帧KF3。针对房间地板上的地毯远端区域生成第四关键帧KF4。针对最靠近用户的地毯区域生成第五关键帧KF5。
图18示出了根据一些实施例的生成图17的地图的持久姿势的示例。在一些实施例中,在设备测量行进的阈值距离时和/或在应用请求新的持久姿势(PP)时创建新的持久姿势。在一些实施例中,阈值距离可以是3米、5米、20米或任何其他合适的距离。选择较小的阈值距离(例如,1m)可导致计算负荷增加,因为与较大阈值距离相比,将创建和管理更多数量的PP。选择较大阈值距离(例如,40m)可导致虚拟内容放置错误增加,因为创建的PP数量变少,这将导致创建的PCF较少,这意味着附加到PCF的虚拟内容与距PCF较大距离(例如,30m),并且错误随着从PCF到虚拟内容的距离的增加而增加。
在一些实施例中,可以在新会话开始时创建PP。这个初始PP可以被认为是零,并且可以被可视化为半径等于阈值距离的圆的中心。当设备到达圆的周边时,并且在一些实施例中,应用请求新的PP,新的PP可以被放置在设备的当前位置(在阈值距离处)。在一些实施例中,如果设备能够在距设备新位置的阈值距离内找到现有PP,则不会在阈值距离处创建新的PP。在一些实施例中,当创建新的PP(例如,图14中的PP 1150)时,设备将一个或多个最近的关键帧附加到该PP。在一些实施例中,PP相对于关键帧的位置可以基于设备在创建PP时的位置。在一些实施例中,除非应用请求PP,否则不会在设备行进阈值距离时创建PP。
在一些实施例中,当应用具有要显示给用户的虚拟内容时,应用可以向设备请求PCF。来自应用的PCF请求可能会触发PP请求,并且在设备行进阈值距离后会创建一个新的PP。图18示出了第一持久姿势PP1,它可能具有例如通过计算关键帧和持久姿势之间的相对姿势来附接的最近的关键帧(例如,KF1、KF2和KF3)。图18还示出了第二持久姿势PP2,它可能附接最近的关键帧(例如,KF4和KF5)。
图19示出了根据一些实施例的生成图17的地图的PCF的示例。在所示示例中,PCF1可以包括PP1和PP2。如上所述,PCF可用于显示相对于PCF的图像数据。在一些实施例中,每个PCF可以具有位于另一坐标系(例如,世界坐标系)中的坐标,以及例如唯一地标识PCF的PCF描述符。在一些实施例中,可以基于与PCF相关联的帧中的特征的特征描述符计算PCF描述符。在一些实施例中,可以组合各种PCF星座,以持久方式表示真实世界,这需要更少的数据和更少的数据传输。
图20A至图20C是示出建立和使用持久坐标系的示例的示意图。图20A示出了两个用户4802A、4802B,其各自的本地跟踪地图4804A、4804B尚未定位到规范地图。各个用户的原点4806A、4806B由其各自区域中的坐标系(例如,世界坐标系)描绘。每个跟踪地图的这些原点对于每个用户来说都是本地原点,因为这些原点取决于他们各自的设备在启动跟踪时的取向。
当用户设备的传感器扫描环境时,设备可以捕获图像,如上面结合图14所描述的,图像可以包含表示持久对象的特征,从而可以将这些图像分类为用于创建持久姿势的关键帧。在该示例中,跟踪地图4802A包括持久姿势(PP)4808A;跟踪4802B包括PP 4808B。
另如上面结合图14所述,一些PP可被分类为PCF,这些PCF用于确定虚拟内容的取向以将其渲染给用户。图20B示出了各个用户4802A、4802B穿戴的XR设备可以基于PP4808A、4808B创建本地PCF 4810A、4810B。图20C示出了持久内容4812A、4812B(例如,虚拟内容)可以通过相应的XR设备被附接到PCF 4810A、4810B。
在该示例中,虚拟内容可以具有虚拟内容坐标系,该虚拟内容坐标系可以由生成虚拟内容的应用使用,不用考虑将如何显示虚拟内容。例如,虚拟内容可以被指定为相对于虚拟内容坐标系的特定位置和角度处的表面,诸如网格的三角形。为了向用户渲染该虚拟内容,可以相对于感知虚拟内容的用户确定这些表面的位置。
将虚拟内容附加到PCF可以简化确定虚拟内容相对于用户的位置时所涉及的计算。可以通过应用一系列变换来确定虚拟内容相对于用户的位置。其中一些变换可能发生变化,并且可能会经常更新。这些变换中的其他变换可能是稳定的,并且可能经常更新或根本不更新。无论如何,都能够以相对较低的计算负担来应用变换,从而可以相对于用户频繁更新虚拟内容的位置,为所渲染的虚拟内容提供逼真的外观。
在图20A-图20C的示例中,用户1的设备具有与通过变换rig1_T_w1定义地图的原点的坐标系相关的坐标系。用户2的设备具有类似的变换rig2_T_w2。这些变换可以被表示为6自由度变换,指定平移和旋转以将设备坐标系与地图坐标系对齐。在一些实施例中,变换可以被表示为两个单独的变换,一个指定平移,另一个指定旋转。因此,应当理解,变换能够以简化计算或以其他方式提供优势的形式来表达。
由各个用户设备识别的跟踪地图的原点和PCF之间的变换被表示为pcf1_T_w1和pcf2_T_w2。在该示例中,PCF和PP是相同的,因此相同的变换也表征PP。
用户设备相对于PCF的位置因此可以通过这些变换的一系列应用来计算,诸如rig1_T_pcf1=(rig1_T_w1)*(pcf1_T_w1)。
如图20C所示,虚拟内容相对于PCF定位,具有obj1_T_pcf1变换。该变换可以由生成虚拟内容的应用设置,该应用可以接收来自描述关于PCF的物理对象的世界重建系统的信息。为了将虚拟内容渲染给用户,计算到用户设备的坐标系的变换,该变换可以经由通过变换obj1_t_w1=(obj1_T_pcf1)*(pcf1_T_w1)关联虚拟内容坐标系与跟踪地图的原点来计算。然后,该变换通过进一步的变换rig1_T_w1与用户设备进行关联。
虚拟内容的位置可以基于来自生成虚拟内容的应用的输出而改变。当发生变化时,可以重新计算从源坐标系到目标坐标系的端到端变换。此外,用户的位置和/或头部姿势可以随着用户移动而改变。因此,变换rig1_T_w1可能会发生变化,如同任何取决于用户的位置或头部姿势的端到端变换也会发生变化。
可以基于跟踪用户相对于物理世界中静止对象的位置,通过用户的运动更新变换rigl_T_wl。这样的跟踪可以由处理图像序列的耳机跟踪部件(如上所述)或系统的其他部件来执行。这样的更新可以通过确定用户相对于静止参考系(诸如PP)的姿势来进行。
在一些实施例中,用户设备的位置和取向可以相对于最近的持久姿势或者该示例中的PCF(因为PP被用作PCF)来确定。可通过在由设备上的传感器捕获的当前图像中识别来表征PP的特征点做出这样的确定。使用诸如立体图像分析之类的图像处理技术,可以确定设备相对于这些特征点的位置。根据该数据,系统可以基于关系rig1_T_pcf1=(rig1_T_w1)*(pcf1_T_w1)计算与用户运动相关联的变换的变化。
系统可以以节省计算的顺序来确定和应用变换。例如,可以通过跟踪用户姿势和定义虚拟内容相对于PP或建立在持久姿势上的PCF的位置来避免从产生rig1_T_pcf1的测量中计算rig1_T_w1的需要。这样,从虚拟内容的源坐标系到用户设备的目标坐标系的变换可以基于根据表达式(rig1_T_pcf1)*(obj1_t_pcf1)测量的变换,其中,第一变换由系统测量,后续变换由指定待渲染虚拟内容的应用提供。在虚拟内容相对于地图的原点定位的实施例中,端到端变换可以基于地图坐标和PCF坐标之间的进一步变换,将虚拟内容坐标系与PCF坐标系进行关联。在虚拟内容相对于跟踪用户位置所使用的PP或PCF不同的PP或PCF定位的实施例中,可以应用两者之间的变换。这样的变换可以是固定的,并且例如可以从两者都出现的地图中确定。
例如,可以在具有处理传感器数据以构建跟踪地图的部件的设备中实现基于变换的方法。作为该过程的一部分,这些部件可以识别用作持久姿势的特征点,而这些特征点又可以转化为PCF。这些部件可限制为地图生成的持久姿势的数量,以提供持久姿势之间的合适间距,同时允许用户(无论物理环境中的位置如何)足够接近持久姿势位置以准确计算用户姿势,如上面结合图17-图19所描述的。当因为用户移动、对跟踪地图的细化或其他原因而更新最接近用户的持久姿势时,至少在用户离开持久姿势之前,更新并存储用于计算虚拟内容相对于用户的位置的任何变换(取决于PP的位置,如果在使用PCF的情况下,取决于PCF的位置)以供使用。尽管如此,通过计算和存储变换,每次更新虚拟内容位置时的计算负担可能相对较低,从而可以以相对低的延迟执行。
图20A-图20C示出了相对于跟踪地图的定位,并且每个设备具有其自己的跟踪地图。然而,可以相对于任何地图坐标系生成变换。跨XR系统的用户会话的内容持久性可以通过使用持久地图来实现。也可以通过使用多个用户设备可以被定向到的地图来促进用户的共享体验。
在以下更详细描述的一些实施例中,可以相对于规范地图中的坐标来指定虚拟内容的位置,规范地图的格式可以被设置为允许多个设备中的任何一个可以使用该地图。每个设备可以维护一个跟踪地图,并且可以确定用户相对于跟踪地图的姿势变化。在该示例中,跟踪地图和规范地图之间的变换可以通过“定位”过程来确定,此过程可以通过将跟踪地图中的结构(诸如,一个或多个持久姿势)与规范地图的一个或多个结构(诸如,一个或多个PCF)进行匹配来执行。
以下更详细地描述用于以这种方式创建和使用规范地图的技术。
深度关键帧
本文所述的技术依赖于图像帧的比较。例如,为了建立设备相对于跟踪地图的位置,可以利用由用户穿戴的传感器捕获新图像,并且XR系统可以在用于创建跟踪地图的图像集中搜索与新图像共享至少预定数量兴趣点的图像。作为涉及图像帧比较的另一场景的示例,可以通过首先在跟踪地图中找到与持久姿势相关联的图像帧(类似于与规范地图中的PCF相关联的图像帧)来将跟踪地图定位到规范地图。或者,可以通过首先在两个地图中找到相似的图像帧来计算两个规范地图之间的变换。
深度关键帧提供了一种减少识别相似图像帧所需的处理量的方法。例如,在一些实施例中,比较可以在新的2D图像中的图像特征(例如,“2D特征”)和地图中的3D特征之间进行。可以以任何合适的方式进行此比较,诸如通过将3D图像投影到2D平面中。诸如词袋(BoW)之类的传统方法在包括地图中所有2D特征的数据库中搜索新图像的2D特征,这可能需要大量计算资源,尤其是当地图表示大区域时。然后,该传统方法定位与新图像共享至少一个2D特征的图像,其包括对在地图中定位有意义的3D特征无用的图像。然后,该传统方法定位相对于新图像中的2D特征没有意义的3D特征。
发明人已经认识到并理解使用更少的存储器资源(例如,BoW使用的存储器资源的四分之一)、更高的效率(每个关键帧的处理时间2.5ms,100μs用于与500关键帧相比)和更高的准确度(例如,对于1024维模型,检索召回率比BoW高20%,对于256维模型,检索召回率比BoW高5%)检索地图中图像的技术。
为了减少计算,可以计算图像帧的描述符,该描述符用于将图像帧与其他图像帧进行比较。描述符可以被存储作为图像帧和特征点的替代或补充。在可以根据图像帧生成持久姿势和/或PCF的地图中,可以将生成每个持久姿势或PCF的一个或多个图像帧的描述符存储为持久姿势和/或PCF的一部分。
在一些实施例中,可以根据图像帧中的特征点来计算描述符。在一些实施例中,神经网络被配置为计算表示图像的唯一帧描述符。图像可以具有高于1兆字节的分辨率,以便在图像中捕获由用户穿戴的设备的视场内的3D环境的足够细节。帧描述符可以短得多,诸如数字串,例如在128字节到512字节的范围内或介于两者之间的任何数字。
在一些实施例中,训练神经网络,使得计算的帧描述符指示图像之间的相似度。可以通过在包括用于生成地图的图像的数据库中识别最近的图像来定位地图中的图像,这些最近的图像可以具有距新图像的帧描述符的预定距离内的帧描述符。在一些实施例中,图像之间的距离可以由两个图像的帧描述符之间的差值来表示。
图21是示出根据一些实施例的用于生成单个图像的描述符的系统的框图。在所示示例中,示出了帧嵌入生成器308。在一些实施例中,帧嵌入生成器308可在服务器20内使用,但是,替代地或附加地,可以全部或部分地在XR设备12.1和12.2之一或处理图像以与其他图像进行比较的任何其他设备中执行。
在一些实施例中,帧嵌入生成器可以被配置为生成从初始大小(例如,76,800字节)到最终大小(例如,256字节)的精简图像数据表示,尽管尺寸减小,但该表示仍然指示图像中的内容。在一些实施例中,帧嵌入生成器可用于生成图像数据表示,其可以是关键帧或在其他方面使用的帧。在一些实施例中,帧嵌入生成器308可以被配置为将特定位置和取向处的图像转换成唯一的数字串(例如,256字节)。在所示示例中,由XR设备拍摄的图像320可以由特征提取器324处理以检测图像320中的兴趣点322。兴趣点可以根据或可以根据所识别的特征点导出,如上面针对特征1120(图14)描述的或如本文在其他方面描述的。在一些实施例中,兴趣点可以由描述符表示,如上面参考描述符1130(图14)描述的,描述符可以使用深度稀疏特征方法来生成。在一些实施例中,每个兴趣点322可以由数字串(例如,32字节)来表示。例如,可能有n个特征(例如,100个),每个特征由一个32字节字符串表示。
在一些实施例中,帧嵌入生成器308可以包括神经网络326。神经网络326可以包括多层感知器单元312和最大(max)池单元314。在一些实施例中,多层感知器(MLP)单元312可以包括能够被训练的多层感知器。在一些实施例中,兴趣点322(例如,兴趣点的描述符)可以由多层感知器312精简,并且可以作为描述符的加权组合310输出。例如,MLP可以将n个特征减少到少于n个特征的m个特征。
在一些实施例中,MLP单元312可以被配置为执行矩阵乘法。多层感知器单元312接收图像320的多个兴趣点322并将每个兴趣点转换为相应的数字串(例如,256)。例如,可能有100个特征,每个特征可以由256个数字组成的字符串表示。在该示例中,可以创建具有100个水平行和256个垂直列的矩阵。每行有一系列256个数字,这些数字的大小不同,有些较小,有些较大。在一些实施例中,MLP的输出可以是n×256矩阵,其中n表示从图像中提取的兴趣点数量。在一些实施例中,MLP的输出可以是m×256矩阵,其中m是从n减少的兴趣点数量。
在一些实施例中,MLP 312可以具有训练阶段和使用阶段,在该训练阶段期间确定MLP的模型参数。在一些实施例中,可以如图25所示训练MLP。输入训练数据可以包括三个一组的数据,一组中的三个数据包括1)查询图像、2)正样本和3)负样本。查询图像可以被认为是参考图像。
在一些实施例中,正样本可以包括与查询图像相似的图像。例如,在一些实施例中,相似是指在查询图像和正样本图像两者中具有相同对象但从不同角度观看该对象。在一些实施例中,相似是指在查询图像和正样本图像两者中具有相同对象,但对象相对于另一图像移动(例如,左、右、上、下)。
在一些实施例中,负样本可以包括与查询图像不相似的图像。例如,在一些实施例中,不相似图像不包含在查询图像中突出的任何对象或只包含查询图像中突出的对象的一小部分(例如<10%,1%)。相比之下,例如,相似图像具有查询图像中的对象的大部分(例如>50%或>75%)。
在一些实施例中,兴趣点可以从输入训练数据中的图像中提取并且可以被转换为特征描述符。这些描述符可以同时针对图25所示的训练图像,以及图21的帧嵌入生成器308的操作中的提取特征计算。在一些实施例中,如美国专利申请16/190,948中所述,可以使用深度稀疏特征(DSF)过程来生成描述符(例如,DSF描述符)。在一些实施例中,DSF描述符是n×32维。然后可以通过模型/MLP传递描述符以创建256字节的输出。在一些实施例中,模型/MLP可以具有与MLP 312相同的结构,使得一旦通过训练设置模型参数,得到的经过训练的MLP便可用作MLP 312。
在一些实施例中,特征描述符(例如,来自MLP模型的256字节输出)然后可以被发送到三元组边缘损失模块(其可以仅在MLP神经网络的训练阶段期间使用,而不是在MLP神经网络的使用阶段期间使用)。在一些实施例中,三元组边缘损失模块可以被配置为选择模型参数,以减少查询图像的256字节输出与正样本的256字节输出之间的差,并增加查询图像的256字节输出与负样本的256字节输出之间的差。在一些实施例中,训练阶段可以包括将多个三元组输入图像馈送到学习过程中以确定模型参数。例如,该训练过程可以继续,直到正图像的差异被最小化并且负图像的差异被最大化,或者直到达到其他合适的退出标准。
返回参考图21,帧嵌入生成器308可以包括池化层,这里被示为最大(max)池单元314。最大池单元314可以分析每一列以确定相应列中的最大数量。最大池单元314可以将MLP 312的输出矩阵的每一列数字的最大值组合成例如256个数字的全局特征串316。应当理解,在XR系统中处理的图像最好具有高分辨率帧,可能到达数百万像素。全局特征串316是一个相对较小的数字,其占用内存相对较少,并且比图像(例如,具有高于1兆字节的分辨率)更容易搜索。因此,可以在不分析来自相机的每个原始帧的情况下搜索图像,并且存储256字节而不是完整帧的成本也更低。
图22是示出根据一些实施例的计算图像描述符的方法2200的流程图。方法2200可以从接收(动作2202)由用户穿戴的XR设备捕获的多个图像开始。在一些实施例中,方法2200可以包括从多个图像确定(动作2204)一个或多个关键帧。在一些实施例中,动作2204可以被跳过和/或可以在步骤2210之后发生。
方法2200可以包括用人工神经网络在多个图像中识别(动作2206)一个或多个兴趣点,以及用人工神经网络计算(动作2208)各个兴趣点的特征描述符。该方法可以包括针对每个图像,至少部分地基于用人工神经网络计算的图像中已识别兴趣点的特征描述符,计算(动作2210)帧描述符以表示图像。
图23是示出根据一些实施例的使用图像描述符进行定位的方法2300的流程图。在该示例中,可以将描绘XR设备当前位置的新图像帧与结合地图中的点存储的图像帧(诸如,上述持久姿势或PCF)进行比较。方法2300可以从接收(动作2302)由用户穿戴的XR设备捕获的新图像开始。方法2300可以包括识别(动作2304)包括用于生成一个或多个地图的关键帧的数据库中的一个或多个最近的关键帧。在一些实施例中,可以基于粗略的空间信息和/或先前确定的空间信息,识别最近的关键帧。例如,粗略的空间信息可以指示XR设备位于由地图的50mx50m区域表示的地理区域中。图像匹配可以仅针对该区域内的点进行。作为另一示例,基于跟踪,XR系统可以知道XR设备先前靠近地图中的第一持久姿势并且正在向地图中的第二持久姿势的方向上移动。第二持久姿势可以被认为是最近的持久姿势,并且与它一起存储的关键帧可以被认为是最近的关键帧。替代地或附加地,诸如GPS数据或WiFi指纹之类的其他元数据可用于选择最近的关键帧或最近的关键帧集。
不管如何选择最近的关键帧,帧描述符都可用于确定新图像是否匹配被选择为与附近的持久姿势相关联的任何帧。可以通过将新图像的帧描述符与最近的关键帧的帧描述符或以任何其他合适的方式选择的数据库中的关键帧的子集进行比较,并选择具有在新图像的帧描述符的预定距离内的帧描述符的关键帧来做出该确定。在一些实施例中,可以通过获得表示两个帧描述符的两个数字串之间的差来计算两个帧描述符之间的距离。在将串作为多个量的串处理的实施例中,可以将差计算为向量差。
一旦识别出匹配的图像帧,就可以确定XR设备相对于该图像帧的取向。方法2300可以包括针对地图中与所识别的最近关键帧相对应的3D特征执行(动作2306)特征匹配,以及基于特征匹配结果计算(动作2308)由用户穿戴的设备的姿势。以这种方式,可以针对已被确定为可能与新图像匹配的少至一个图像执行两个图像中的特征点的计算密集型匹配。
图24是示出根据一些实施例的训练神经网络的方法2400的流程图。方法2400可以从生成(动作2402)包括多个图像集的数据集开始。多个图像集合中的每一个可以包括查询图像、正样本图像和负样本图像。在一些实施例中,多个图像集可以包括合成记录对,该合成记录对被配置为例如告知神经网络基本信息,例如形状。在一些实施例中,多个图像集可以包括可以从物理世界记录的真实记录对。
在一些实施例中,可以通过拟合两个图像之间的基本矩阵来计算正确数据(inlier)。在一些实施例中,稀疏重叠可以被计算为在两个图像中看到的兴趣点的交并比(IoU)。在一些实施例中,正样本可以包括至少二十个兴趣点,用作正确数据,与查询图像中的兴趣点相同。负样本可以包括少于十个正确数据点。负样本有不到一半的稀疏点与查询图像的稀疏点重叠。
方法2400可以包括针对每个图像集,通过将查询图像与正样本图像和负样本图像进行比较来计算(动作2404)损失。方法2400可以包括基于计算的损失修改(动作2406)人工神经网络,使得由人工神经网络针对查询图像生成的帧描述符和针对正样本图像的帧描述生成的符之间的距离小于针对查询图像生成的帧描述符和针对负样本图像生成的帧描述符之间的距离。
应当理解,尽管上面描述了被配置为生成个体图像的全局描述符的方法和装置,但是这些方法和装置可以被配置为生成个体地图的描述符。例如,地图可以包括多个关键帧,每个关键帧可以具有如上所述的帧描述符。最大池单元可以分析地图关键帧的帧描述符,并将帧描述符组合成地图的唯一地图描述符。
此外,应当理解,其他架构可用于如上所述的处理。例如,描述了用于生成DSF描述符和帧描述符的单独神经网络。这种方法节省计算。然而,在一些实施例中,可以从选择的特征点生成帧描述符,而无需首先生成DSF描述符。
地图排名与合并
本文描述了用于在交叉现实(XR)系统中对多个环境地图进行排名和合并的方法和装置。地图合并可以使表示物理世界的重叠部分的地图能够被组合以表示更大的区域。对地图进行排名可以使得能够有效地执行如本文所述的技术,包括地图合并,地图合并涉及基于相似度从地图集中选择地图。在一些实施例中,例如,可以由系统维护规范地图集,这组规范地图的格式可以通过能够被多个XR设备中的任何一个访问的方式设置。这些规范地图可以通过将来自这些设备的选择跟踪地图与其他跟踪地图或先前存储的规范地图合并来形成。例如,可以对规范地图进行排名,以用于选择与新的跟踪地图合并的一个或多个规范地图和/或从集合中选择一个或多个规范地图以在设备中使用。
为了向用户提供逼真的XR体验,XR系统必须了解用户的物理环境,以便正确地将虚拟对象的位置与真实对象相关联。可以从用户位置的环境地图中获取有关用户物理环境的信息。
发明人已经认识到并理解,XR系统可以通过实现有效共享由多个用户收集的真实/物理世界的环境地图,向共享同一世界的多个用户提供包括真实和/或虚拟内容的增强的XR体验,无论这些用户是在同一时间还是不同时间出现在世界上。然而,在提供这样的系统方面存在重大挑战。这样的系统可以存储由多个用户生成的多个地图和/或系统可以存储在不同时间处生成的多个地图。对于可能使用先前生成的地图执行的操作,诸如,如上所述的定位,可能需要大量处理以从在XR系统中收集的所有环境地图中识别同一世界的相关环境地图(例如,同一真实世界位置)。在一些实施例中,设备只能访问少量的环境地图,例如用于定位。在一些实施例中,设备可以访问大量环境地图。例如,发明人已经认识到并理解从所有可能的环境地图(诸如,图28中的所有规范地图120的全域)中快速和准确地对环境地图的相关性进行排名的技术。然后可以选择高排名地图做进一步处理,诸如在用户显示器上渲染虚拟对象,与用户周围的物理世界逼真地交互,或者将由该用户收集的地图数据与存储的地图进行合并以创建更大或更准确的地图。
在一些实施例中,可以通过基于多个标准过滤存储的地图,识别与物理世界中的位置处的用户任务相关的存储地图。这些标准可以指示由该位置处的用户的可穿戴设备生成的跟踪地图与存储在数据库中的候选环境地图的比较。可以基于与地图相关联的元数据执行比较,这些元数据诸如包括由生成地图的设备检测到的Wi-Fi指纹和/或设备在形成地图时连接到的BSSID集。也可以基于地图的压缩或未压缩内容来执行比较。例如,可以通过比较根据地图内容计算的向量来执行基于压缩表示的比较。例如,可以通过在存储地图内定位跟踪地图来执行基于未压缩地图的比较,反之亦然。可以基于减少考虑的候选地图的数量所需的计算时间,按顺序执行多次比较,其中涉及较少计算的比较在该顺序中比需要更多计算的其他比较更早地执行。
图26示出了根据一些实施例的被配置为对一个或多个环境地图进行排名和合并的AR系统800。AR系统可以包括AR设备的联结型世界模型802。填充联结型世界模型802的信息可以来自AR设备上的传感器,AR设备可以包括存储在处理器804(例如,图4中的本地数据处理模块570)中的计算机可执行指令,该处理器可以执行部分或全部处理以将传感器数据转换为地图。这样的地图可以是跟踪地图,因为它可以在AR设备在一个区域中运行期间收集传感器数据时被构建。区域属性可以与该跟踪地图一起被提供,以指示跟踪地图所表示的区域。这些区域属性可以是地理位置标识符,诸如被表示为经纬度的坐标或被AR系统用来表示位置的ID。替代地或附加地,区域属性可以是对于该区域而言最有可能是唯一的测量特性。例如,区域属性可以从在该区域中检测到的无线网络的参数导出。在一些实施例中,区域属性可以与AR系统附近和/或被连接到的接入点的唯一地址相关联。例如,区域属性可以与5G基站/路由器、Wi-Fi路由器等的MAC地址或基本服务集标识符(BSSID)相关联。
在图26的示例中,跟踪地图可以与环境的其他地图合并。地图排名部806从设备PW802接收跟踪地图并与地图数据库808通信以从地图数据库808中选择环境地图并对环境地图进行排名。排名较高的选择地图被发送到地图合并部810。
地图合并部810可以对从地图排名部806发送的地图执行合并处理。合并处理需要将跟踪地图与一些或所有排名的地图进行合并,并将新的合并地图发送到联结型世界模型812。地图合并部可以通过识别描绘物理世界的重叠部分的地图来合并地图。可以对齐这些重叠部分,使得两个地图中的信息可以被聚合为最终地图。规范地图可以与其他规范地图和/或跟踪地图合并。
聚合需要用来自另一地图的信息来扩展一个地图。替代地或附加地,聚合需要基于另一地图中的信息,调整一个地图中的物理世界的表示。例如,后续地图可以揭示产生特征点的对象已经移动,从而可以基于后续信息,更新地图。或者,两个地图可以用不同的特征点表征同一区域,并且聚合需要从两个地图中选择一特征点集以更好地表示该区域。不管在合并过程中发生的具体处理如何,在一些实施例中,来自被合并的所有地图的PCF可以被保留,使得相对于这些PCF定位内容的应用可以继续操作。在一些实施例中,地图的合并可导致冗余的持久姿势,并且一些持久姿势可被删除。当PCF与要删除的持久姿势相关联时,合并地图可能需要修改PCF以与合并后保留在地图中的持久姿势相关联。
在一些实施例中,地图可以在被扩展和/或更新时进行细化。细化需要计算来减少可能表示物理世界中相同对象的特征点之间的内部不一致。不一致可能是与提供表示物理世界中相同对象的特征点的关键帧向关联的姿势的不准确造成的。例如,这种不一致可能是由于XR设备计算相对于跟踪地图的姿势,而跟踪地图又是基于估计姿势构建的,使得姿势估计中的误差会累积,从而随着时间的推移产生姿势精度的“漂移”。通过执行捆绑调整或其他操作以减少来自多个关键帧的特征点的不一致性,可以细化地图。
在细化时,持久点相对于地图原点的位置可改变。因此,与该持久点(例如,持久姿势或PCF)相关联的变换可能会改变。在一些实施例中,XR系统可以结合地图细化(无论是作为合并操作的一部分还是出于其他原因而执行)重新计算与已改变的任何持久点相关联的变换。这些变换可以被从计算变换的部件推送到使用变换的部件,使得变换的任何使用都基于持久点的更新位置。
联结型世界模型812可以是云模型,其可以由多个AR设备共享。联结型世界模型812可以存储或以其他方式访问地图数据库808中的环境地图。在一些实施例中,当更新先前计算的环境地图时,可以删除该地图的先前版本以便从数据库移除过期数据。在一些实施例中,当先前计算的环境地图被更新时,该地图的先前版本可以被存档,从而允许检索/查看环境的先前版本。在一些实施例中,可以设置许可,使得只有具有特定读/写访问权限的AR系统可以触发删除/存档地图的先前版本。
AR系统中的AR设备可以访问根据一个或多个AR设备/系统提供的跟踪地图创建的这些环境地图。地图排名部806还可用于向AR设备提供环境地图。AR设备可以发送请求其在环境地图中的当前位置的消息,并且地图排名部806可用于选择与请求设备相关的环境地图并对与请求设备相关的环境地图进行排名。
在一些实施例中,AR系统800可以包括下采样部814,该下采样部814被配置为从云PW 812接收合并地图。从云PW 812接收的合并地图可以采用适合云的存储格式,其可以包括高分辨率信息,诸如每平方米大量PCF或多个图像帧或与PCF相关联的巨大的特征点集。下采样部814可以被配置为将云格式地图下采样为适合存储在AR设备上的格式。设备格式地图具有较少的数据,诸如较少的PCF或为每个PCF存储的较少数据,以适应AR设备的有限本地计算能力和存储空间。
图27是示出可以存储在远程存储介质(例如,云)中的多个规范地图120的简化框图。每个规范地图120可以包括多个规范地图标识符,指示规范地图在物理空间内的位置,诸如地球上的某处。这些规范地图标识符可以包括以下标识符中的一个或多个:由一系列经度和纬度表示的区域标识符、帧描述符(例如,图21中的全局特征串316)、Wi-Fi指纹、特征描述符(例如,图21中的特征描述符310)、以及指示对地图有贡献的一个或多个设备的设备标识。在所示示例中,规范地图120在地理上以二维图案布置,因为它们可能存在于地球表面上。规范地图120可以通过对应的经度和纬度被唯一地识别,因为具有重叠经度和纬度的任何规范地图可以合并到新的规范地图中。
图28是示出根据一些实施例的选择规范地图的方法的示意图,该方法可用于将新的跟踪地图定位到一个或多个规范地图。该方法可以从访问(动作120)规范地图120的全域开始,作为示例,可以将规范地图的全域存储在联结型世界(例如,联结型世界模块538)中的数据库中。规范地图的全域可以包括来自所有先前访问过的位置的规范地图。XR系统可以将所有规范地图的全域过滤为一个小的子集或仅过滤为单个地图。应当理解,在一些实施例中,由于带宽限制,不可能将所有规范地图发送到查看设备。选择被选择为匹配要发送到设备的跟踪地图的可能候选者子集可以减少与访问远程地图的数据库相关联的带宽和延迟。
该方法可以包括基于具有预定大小和形状的区域过滤(动作300)规范地图的全域。在图27所示的示例中,每个方格表示一个区域。每个方格可以覆盖50m x 50m。每个方格具有六个相邻区域。在一些实施例中,动作300可以选择至少一个匹配的规范地图120,其覆盖包括从XR设备接收的位置标识符的经度和纬度的经度和纬度,只要至少一个地图存在于该经度和纬度。在一些实施例中,动作300可以选择至少一个覆盖与匹配的规范地图相邻的经度和纬度的相邻的规范地图。在一些实施例中,动作300可以选择多个匹配的规范地图和多个相邻的规范地图。例如,动作300可以将规范地图的数量减少大约十倍,例如,从数千减少到数百以形成第一过滤选择。替代地或附加地,可以使用除了纬度和经度以外的标准来识别相邻地图。例如,XR设备可能先前已使用集合中的规范地图作为同一会话的一部分进行了定位。云服务可能会保留有关XR设备的信息,包括先前定位到的地图。在该示例中,在动作300选择的地图可以包括覆盖与XR设备被定位到的地图相邻的区域的这些地图。
该方法可以包括基于Wi-Fi指纹过滤(动作302)规范地图的第一过滤选择。动作302可以基于作为位置标识符的一部分从XR设备接收的Wi-Fi指纹确定纬度和经度。动作302可以将来自Wi-Fi指纹的纬度和经度与规范地图120的纬度和经度进行比较,以确定形成第二过滤选择的一个或多个规范地图。动作302可以将规范地图的数量减少大约十倍,例如,从数百个到数十个(例如,50个)形成第二选择的规范地图。例如,第一过滤选择可以包括130个规范地图,第二过滤选择可以130个规范地图中的50个,并且可以不包括130个规范地图中的其他80个。
该方法可以包括基于关键帧过滤(动作304)规范地图的第二过滤选择。动作304可以将表示由XR设备捕获的图像的数据与表示规范地图120的数据进行比较。在一些实施例中,表示图像和/或地图的数据可以包括特征描述符(例如,图25中的DSF描述符)和/或全局特征串(例如,图21中的316)。动作304可以提供规范地图的第三过滤选择。在一些实施例中,例如,动作304的输出可能只是在第二过滤选择之后识别的50个规范地图中的五个。地图发送器122然后将基于第三过滤选择的一个或多个规范地图发送到查看设备。动作304可以将规范地图的数量减少大约十倍,例如,从数十个到个位数的(例如,5个)形成第三选择的规范地图。在一些实施例中,XR设备可以在第三过滤选择中接收规范地图,并尝试定位到接收的规范地图中。
例如,动作304可以基于规范地图120的全局特征串316和基于由查看设备捕获的图像(例如,可以作为用户本地跟踪地图的一部分的图像)的全局特征串316,过滤规范地图120。图27中的每一个规范地图120因此具有与其相关联的一个或多个全局特征串316。在一些实施例中,可以在XR设备向云提交图像或特征细节并且云处理该图像或特征细节以生成规范地图120的全局特征串316时获取全局特征串316。
在一些实施例中,云可以接收由查看设备捕获的实时/新的/当前图像的特征细节,并且云可以生成实时图像的全局特征串316。云然后可以基于实时全局特征串316过滤规范地图120。在一些实施例中,可以在本地查看设备上生成全局特征串。在一些实施例中,全局特征串可以被远程生成,例如在云上生成。在一些实施例中,云可以将过滤的规范地图连同与过滤的规范地图相关联的全局特征串316一起发送到XR设备。在一些实施例中,当查看设备将其跟踪地图定位到规范地图时,它可以通过将本地跟踪地图的全局特征串316与规范地图的全局特征串匹配来做到这一点。
应当理解,XR设备的操作可能不会执行所有动作(300、302、304)。例如,如果规范地图的全域相对较小(例如,500个地图),则尝试定位的XR设备可基于Wi-Fi指纹(例如,动作302)和关键帧(例如,动作304)过滤规范地图的全域,但省略基于区域的过滤(例如,动作300)。此外,没有必要对整个地图进行比较。在一些实施例中,例如,两个地图的比较可以导致识别共同的持久点,诸如出现在新地图和来自地图全域的选择地图中的持久姿势或PCF。在这种情况下,描述符可以与持久点相关联,并且可以比较这些描述符。
图29是示出根据一些实施例的选择一个或多个排名的环境地图的方法900的流程图。在所示实施例中,对正在创建跟踪地图的用户AR设备进行排名。因此,跟踪地图可用于对环境地图进行排名。在跟踪地图不可用的实施例中,可以使用不明确依赖跟踪地图的环境地图的选择和排名的一些或所有部分。
方法900可以在动作902开始,其中可以访问来自在形成跟踪地图的位置附近的环境地图(其格式可以设置成规范地图)的数据库的地图集,并且接着过滤这些地图以进行排名。此外,在动作902,确定用户AR设备正在操作的区域的至少一个区域属性。在用户AR设备正在构建跟踪地图的场景中,区域属性可以对应于创建跟踪地图的区域。作为具体示例,可以在AR设备计算跟踪地图时基于从接入点到计算机网络的接收信号计算区域属性。
图30示出了根据一些实施例的AR系统800的示例性地图排名部806。地图排名部806可以在云计算环境中执行,因为它可以包括在AR设备上执行的部分和在诸如云之类的远程计算系统上执行的部分。地图排名部806可以被配置为执行方法900的至少一部分。
图31A示出了根据一些实施例的数据库中的跟踪地图(TM)1102和环境地图CM1-CM4的区域属性AA1-AA8的示例。如图所示,环境地图可以与多个区域属性相关联。区域属性AA1-AA8可以包括由计算跟踪地图1102的AR设备检测到的无线网络的参数,例如,AR设备被连接到的网络的基本服务集标识符(BSSID)和/或通过例如网络塔1104将从接入点到无线网络的接收信号的强度。无线网络的参数可以符合包括Wi-Fi和5G NR在内的协议。在图32所示的示例中,区域属性是用户AR设备收集传感器数据以形成跟踪地图的区域的指纹。
图31B示出了根据一些实施例的跟踪地图1102的确定的地理位置1106的示例。在所示示例中,确定的地理位置1106包括质心点1110和围绕质心点成圆的区域1108。应当理解,本申请的地理位置的确定不限于所示的格式。确定的地理位置可以具有任何合适的格式,例如包括不同的区域形状。在该示例中,使用将区域属性与地理位置相关联的数据库从区域属性确定地理位置。数据库是商业可用的,例如,可以使用将Wi-Fi指纹与表示为纬度和经度的位置进行关联的数据库执行此操作。
在图29的实施例中,包含环境地图的地图数据库还可以包括这些地图的位置数据,其中包括地图所覆盖的纬度和经度。动作902处的处理需要从该数据库中选择环境地图集,该环境地图集覆盖针对跟踪地图的区域属性确定的相同纬度和经度。
动作904是对在动作902中访问的环境地图集的第一次过滤。在动作902中,环境地图基于与跟踪地图的地理位置的接近度被保留在该集合中。该过滤步骤可以通过比较与跟踪地图相关联的纬度和经度和在该集合中的环境地图相关联的纬度和经度来执行。
图32示出了根据一些实施例的动作904的示例。每个区域属性可以具有对应的地理位置1202。该环境地图集可以包括具有至少一个区域属性的环境地图,该区域属性的地理位置与所确定的跟踪地图的地理位置重叠。在所示示例中,该识别的环境地图集包括环境地图CM1、CM2和CM4,其中每一环境地图具有至少一个区域属性,该区域属性的地理位置与跟踪地图1102的确定的地理位置重叠。与区域属性AA6相关联的环境地图CM3不包括在该集合中,因为它位于跟踪地图的确定的地理位置之外。
还可以对该环境地图集执行其他过滤步骤以减少/排列该集中最终处理的环境地图的数量(诸如,用于地图合并或向用户设备提供联结型世界信息)。方法900可以包括基于与跟踪地图相关联的网络接入点的一个或多个标识符与该环境地图集的环境地图的相似度,过滤(动作906)该环境地图集。在地图形成期间,收集传感器数据以生成地图的设备可以通过网络接入点,诸如通过Wi-Fi或类似的无线通信协议,被连接到网络。接入点可以由BSSID标识。当用户设备移动通过收集数据的区域以形成地图时,用户设备可以连接到多个不同的接入点。同样,当多个设备提供信息以形成地图时,这些设备可能已经通过不同的接入点连接,因此也可能有多个接入点用于形成地图。因此,可能存在与地图相关联的多个接入点,并且该接入点集可以是地图的位置的指示。来自接入点的信号的强度(可以反映为RSSI值)可以提供进一步的地理信息。在一些实施例中,BSSID和RSSI值的列表可以形成地图的区域属性。
在一些实施例中,基于网络接入点的一个或多个标识符的相似度,过滤该环境地图集可以包括基于网络接入点的一个或多个标识符,在该环境地图集中保留相对于跟踪地图的至少一个区域属性具有最高Jaccard相似度的环境地图。
图33示出了根据一些实施例的动作906的示例。在所示示例中,与区域属性AA7相关联的网络标识符可以被确定为跟踪地图1102的标识符。在动作906之后的环境地图集包括环境地图CM2和环境地图CM4,环境地图CM2的区域属性与AA7具有较高的Jaccard相似度,环境地图CM2也包括区域属性AA7。环境地CM1不包括在该环境地图集中,因为它与AA7的Jaccard相似度最低。
动作902-906处的处理可以基于与地图相关联的元数据来执行,而无需实际访问存储在地图数据库中的地图的内容。其他处理可能涉及访问地图的内容。动作908指示在基于元数据过滤之后访问保留在子集中的环境地图。应当理解,如果可以对访问的内容执行后续操作,则可以在该过程中更早或更晚地执行该动作。
方法900可以包括基于表示跟踪地图和环境地图集中的环境地图的内容的度量的相似度过滤(动作910)该环境地图集。表示跟踪地图和环境地图的内容的度量可以包括根据地图的内容计算的值的向量。例如,如上所述,针对用于形成地图的一个或多个关键帧计算的深度关键帧描述符可以提供用于比较地图或地图的一部分的度量。度量可以通过在动作908处检索到的地图计算,或者可以被预先计算并存储为与这些地图相关联的元数据。在一些实施例中,基于表示跟踪地图和环境地图集中的环境地图的内容的度量的相似度过滤该环境地图集可以包括:在该环境地图集中保留具有最小的跟踪地图的特性的向量与表示该环境地图集中的环境地图的向量之间的距离的向量距离的环境地图。
方法900可以包括基于跟踪地图的一部分和环境地图集中的环境地图的多个部分之间的匹配程度,进一步过滤(动作912)该环境地图集。匹配程度可以被确定为定位过程的一部分。作为非限制性示例,可以通过识别跟踪地图和环境地图中足够相似(因为它们表示物理世界的相同部分)的关键点来执行定位。在一些实施例中,关键点可以是特征、特征描述符、关键帧/key rig、持久姿势和/或PCF。然后可以对齐跟踪地图中的关键点集,以产生与环境地图中的关键点集的最佳拟合。可以计算对应关键点之间的均方距离,如果低于跟踪地图特定区域的阈值,则用作有关跟踪地图和环境地图表示物理世界的相同区域的指示。
在一些实施例中,基于跟踪地图的一部分和环境地图集中的环境地图的多个部分之间的匹配程度,过滤该环境地图集可以包括计算由跟踪地图表示的物理世界的体积(该体积也在该环境地图集中的环境地图中表示),并且在该环境地图集中保留具有比从该集合中过滤出的环境地图更大的计算的体积的环境地图。图34示出了根据一些实施例的动作912的示例。在所示示例中,经过动作912之后的环境地图集包括环境地图CM4,其具有与跟踪地图1102的区域匹配的区域1402。环境地图CM1不包括在该集合中,因为它没有与跟踪地图1102的区域匹配的区域。
在一些实施例中,可以按照动作906、动作910和动作912的顺序过滤该环境地图集。在一些实施例中,可以基于动作906、动作910和动作912过滤该环境地图集,这些动作可以基于执行过滤所需的处理按照最低到最高的顺序执行。方法900可以包括加载(动作914)该环境地图集和数据。
在所示示例中,用户数据库存储指示使用AR设备的区域的区域标识。区域标识可以是区域属性,其可以包括AR设备在使用时检测到的无线网络的参数。地图数据库可以存储由AR设备提供的数据和相关元数据构建的多个环境地图。相关联的元数据可以包括从提供构建环境地图所需的数据的AR设备的区域标识导出的区域标识。AR设备可以向PW模块发送消息,指示创建或正在创建新的跟踪地图。PW模块可以计算AR设备的区域标识符并基于接收到的参数和/或计算的区域标识符,更新用户数据库。PW模块还可以确定与请求环境地图的AR设备相关联的区域标识符,基于区域标识符从地图数据库中识别多个环境地图集,过滤这些环境地图集,并将过滤后的多个环境地图集发送到AR设备。在一些实施例中,PW模块可以基于一个或多个标准过滤多个环境地图集,这些标准例如包括跟踪地图的地理位置、与跟踪地图和该环境地图集中的环境地图相关联的网络接入点的一个或多个标识符的相似度、表示跟踪地图和该环境地图集中的环境地图的内容的度量的相似度、跟踪地图的一部分和该环境地图集中的环境地图的一部分之间的匹配程度。
已经如此描述了一些实施例的几个方面,应当理解,本领域技术人员将容易地想到各种改变、修改和改进。作为一个示例,结合增强(AR)环境来描述实施例。应当理解,本文描述的一些或所有技术可以应用于MR环境中或更一般地应用于其他XR环境和VR环境中。
作为另一示例,结合诸如可穿戴设备之类的设备来描述实施例。应当理解,本文描述的一些或所有技术可以经由网络(诸如,云)、离散应用和/或设备、网络和离散应用的任何合适组合来实现。
此外,图29提供了可用于过滤候选地图以产生高排名地图集的标准的示例。可以使用其他标准来代替或补充所描述的标准。例如,如果多个候选地图具有用于过滤掉不太合意的地图的度量的相似值,则候选地图的特性可用于确定哪些地图被保留为候选地图或被过滤掉。例如,更大或更密集的候选地图可以优先于更小的候选地图。在一些实施例中,图27-图28可以描述图29-图34中描述的系统和方法的全部或部分。
图35和图36是示出根据一些实施例的被配置为对多个环境地图进行排名和合并的XR系统的示意图。在一些实施例中,联结型世界(PW)可以确定何时触发对地图进行排名和/或合并。在一些实施例中,确定要使用的地图可以至少部分地基于以上根据一些实施例的关于图21-25描述的深度关键帧。
图37是示出根据一些实施例的创建物理世界的环境地图的方法3700的框图。方法3700可以开始于将由用户穿戴的XR设备捕获的跟踪地图定位(动作3702)到规范地图组(例如,由图28的方法和/或图29的方法900选择的规范地图)。动作3702可以包括将跟踪地图的Keyrig定位到该规范地图组中。每个keyrig的定位结果可能包括Keyrig的定位姿势和一组2D至3D的特征对应关系。
在一些实施例中,方法3700可以包括将跟踪地图拆分(动作3704)成连通部件,这些连通部件可以通过合并连通片来稳健地合并地图。每个连通部件可以包括在预定距离内的Keyrig。方法3700可以包括将大于预定阈值的连通部件合并(动作3706)到一个或多个规范地图中,以及从跟踪地图中去除合并的连通部件。
在一些实施例中,方法3700可以包括合并(动作3708)组中与跟踪地图的相同连通部件合并的规范地图。在一些实施例中,方法3700可以包括将尚未与任何规范地图合并的跟踪地图的剩余连通部件提升(动作3710)为规范地图。在一些实施例中,方法3700可以包括合并(动作3712)跟踪地图以及与跟踪地图的至少一个连通部件合并的规范地图的持久姿势和/或PCF。在一些实施例中,方法3700可以包括例如通过融合地图点和修剪冗余Keyrig来最终确定(动作3714)规范地图。
图38A和图38B示出了根据一些实施例的通过更新规范地图700创建的环境地图3800,规范地图700可以是通过新的跟踪地图从跟踪地图700(图7)提升的。如关于图7所示和描述的,规范地图700可以提供由点702表示的对应物理世界中重建的物理对象的平面图706。在一些实施例中,地图点702可以表示可以包括多个特征的物理对象的特征。可以捕获有关物理世界的新的跟踪地图并将其上传到云以与地图700合并。新的跟踪地图可以包括地图点3802和Keyrig 3804、3806。在所示示例中,Keyrig 3804表示例如通过建立与地图700的Keyrig 704(如图38B所示)的对应关系,被成功地定位到规范地图的Keyrig。另一方面,Keyrig 3806表示尚未定位到地图700的Keyrig。在一些实施例中,Keyrig 3806可以被提升为单独的规范地图。
图39A至图39F是示出为相同物理空间中的用户提供共享体验的基于云的持久坐标系的示例的示意图。图39A示出了例如来自云的规范地图4814被图20A-图20C的用户4802A和4802B穿戴的XR设备接收。规范地图4814可以具有规范坐标系4806C。规范地图4814可以具有PCF 4810C,PCF 4810C具有多个相关联的PP(例如,39C中的4818A、4818B)。
图39B示出XR设备在其各自的世界坐标系4806A、4806B和规范坐标系4806C之间建立关系。这例如可以通过定位到相应设备上的规范地图4814来完成。对于每个设备,将跟踪地图定位到规范地图可以导致其本地世界坐标系和规范地图的坐标系之间的变换。
图39C示出了由于定位,可以计算相应设备上的本地PCF(例如,PCF 4810A、4810B)和规范地图上的相应持久姿势(例如,PP 4818A、4818B)之间的变换(例如,变换4816A、4816B)。通过这些变换,每个设备可以使用其本地PCF(可以通过处理由设备上的传感器检测到的图像在设备上本地检测到)来确定关于本地设备在何处显示被附接到规范地图的PP4818A、4818B或其他持久点的虚拟内容。这种方法可以相对于每个用户准确地定位虚拟内容,并且允许每个用户对物理空间中的虚拟内容具有相同的体验。
图39D示出了从规范地图到本地跟踪地图的持久姿势快照。可以看出,本地跟踪地图经由持久姿势相互连接。图39E示出了由用户4802A穿戴的设备上的PCF 4810A可以通过PP 4818A在由用户4802B穿戴的设备中访问。图39F示出跟踪地图4804A、4804B和规范地图4814可以合并。在一些实施例中,一些PCF可以由于合并而被移除。在所示示例中,合并的地图包括规范地图4814的PCF 4810C,但不包括跟踪地图4804A、4804B的PCF 4810A、4810B。先前与PCF 4810A、4810B相关联的PP可以在地图合并之后与PCF 4810C相关联。
示例
图40和图41示出了图9的第一XR设备12.1使用跟踪地图的示例。图40是根据一些实施例的可以由图9的第一XR设备生成的三维第一本地跟踪地图(地图1)的二维表示。图41是示出根据一些实施例将地图1从第一XR设备上传到图9的服务器的框图。
图40示出了第一XR设备12.1上的地图1和虚拟内容(内容123和内容456)。地图1具有原点(原点1)。地图1包括许多PCF(PCF a至PCF d)。从第一XR设备12.1的角度来看,作为示例,PCF a位于地图1的原点处,并且具有X、Y和Z坐标(0,0,0),PCF b具有X、Y和Z坐标(-1,0,0)。内容123与PCF a相关联。在该示例中,内容123相对于PCF a(1,0,0)具有X、Y和Z关系。内容456具有相对于PCF b的关系。在该示例中,内容456相对于PCF b具有X、Y和Z关系(1,0,0)。
在图41中,第一XR设备12.1将地图1上传到服务器20。在该示例中,服务器未存储由跟踪地图表示的物理世界的相同区域的规范地图,并且跟踪地图被存储为初始规范地图。服务器20现在具有基于地图1的规范地图。第一XR设备12.1具有在该阶段为空的规范地图。出于讨论的目的,并且在一些实施例中,服务器20不包括地图1之外的其他地图。第二XR设备12.2未存储任何地图。
第一XR设备12.1还将其Wi-Fi签名数据发送到服务器20。服务器20可以使用Wi-Fi签名数据基于从过去连接到服务器20或其他服务器的其他设备收集的情报以及此类其他设备已记录的GPS位置,确定第一XR设备12.1的大致位置。第一XR设备12.1现在可以结束第一会话(参见8)并且可以断开与服务器20的连接。
图42是示出根据一些实施例的图16的XR系统的示意图,显示了第二用户14.2在第一用户14.1终止第一会话之后使用XR系统的第二XR设备发起第二会话。图43A是示出由第二用户14.2对第二会话的发起的框图。第一用户14.1用虚线显示,因为第一用户14.1的第一会话已经结束。第二XR设备12.2开始记录对象。服务器20可以使用具有不同粒度的各种系统来确定第二XR设备12.2的第二会话与第一XR设备12.1的第一会话在同一附近地区。例如,第一XR设备12.1和第二XR设备12.2中可以包括Wi-Fi签名数据、全球定位系统(GPS)定位数据、基于Wi-Fi签名数据的GPS数据或任何其他指示位置的数据以记录他们的位置。或者,由第二XR设备12.2识别的PCF可以显示与地图1的PCF的相似度。
如图43B所示,第二XR设备启动并开始收集数据,诸如来自一个或多个相机44、46的图像1110。如图14所示,在一些实施例中,XR设备(例如,第二XR设备12.2)可以收集一个或多个图像1110并执行图像处理以提取一个或多个特征/兴趣点1120。每个特征可以被转换为描述符1130。在一些实施例中,描述符1130可用于描述关键帧1140,关键帧1140可以具有附接关联图像的位置和方向。一个或多个关键帧1140可对应于单个持久姿势1150,其可以在距先前持久姿势1150的阈值距离(例如,3米)之后被自动生成。一个或多个持久姿势1150可对应于单个PCF 1160,其可以在预定距离(例如,每5米)之后被自动生成。随着时间的推移,当用户继续在用户环境周围移动,并且XR设备继续收集更多数据,诸如,在收集图像1110时,,可以创建额外的PCF(例如,PCF 3和PCF4、5)。一个或多个应用1180可以在XR设备上运行并向XR设备提供虚拟内容1170以呈现给用户。虚拟内容可以具有关联的内容坐标系,该坐标系可以相对于一个或多个PCF放置。如图43B所示,第二XR设备12.2创建三个PCF。在一些实施例中,第二XR设备12.2可以尝试定位到存储在服务器20上的一个或多个规范地图中。
在一些实施例中,如图43C所示,第二XR设备12.2可以从服务器20下载规范地图120。第二XR设备12.2上的地图1包括PCF a至d和原点1。在一些实施例中,服务器20可以具有用于不同位置的多个规范地图,并且可以确定第二XR设备12.2在第一会话期间与第一XR设备12.1处于同一附近地区,并向第二XR设备12.2发送该附近地区的规范地图。
图44示出了第二XR设备12.2开始识别PCF以用于生成地图2。第二XR设备12.2仅识别了单个PCF,即PCF 1,2。第二XR设备12.2的PCF 1,2的X、Y和Z坐标可以是(1,1,1)。地图2有其自己的原点(原点2),其可以基于设备2在设备启动以进行当前头部姿势会话时的头部姿势。在一些实施例中,第二XR设备12.2可以立即尝试将地图2定位到规范地图中。在一些实施例中,地图2可能无法定位到规范地图(地图1)中(即,定位可能失败),因为系统无法识别两个地图之间的任何或足够的重叠。可以通过识别在第一地图中表示的也在第二地图中表示的物理世界的一部分,并计算对齐这些部分所需的第一地图和第二地图之间的变换来执行定位。在一些实施例中,系统可以基于本地地图和规范地图之间的PCF的比较来定位。在一些实施例中,系统可以基于本地地图和规范地图之间的持久姿势的比较来定位。在一些实施例中,系统可以基于本地地图和规范地图之间的关键帧的比较来定位。
图45示出了在第二XR设备12.2识别了地图2的其他PCF(PCF 1,2、PCF 3、PCF 4,5)之后的地图2。第二XR设备12.2再次尝试将地图2定位到规范地图。由于地图2已扩展至与规范地图的至少一部分重叠,因此定位尝试将成功。在一些实施例中,本地跟踪地图、地图2和规范地图之间的重叠可以由PCF、持久姿势、关键帧或任何其他合适的中间或衍生构造来表示。
此外,第二XR设备12.2已将内容123和内容456关联到地图2的PCF 1,2和PCF 3。内容123具有相对于PCF 1,2的X、Y和Z坐标(1,0,0)。类似地,内容456在地图2中相对于PCF 3的X、Y和Z坐标为(1,0,0)。
图46A和图46B示出了地图2到规范地图的成功定位。定位可以基于将一个地图中的特征与另一地图匹配。通过适当的变换,这里涉及一个地图相对于另一地图的平移和旋转,地图1410的重叠区域/体积/部分表示地图1和规范地图的共同部分。由于地图2在定位之前创建了PCF 3和PCF4,5,而规范地图在创建地图2之前创建了PCF a和PCF c,因此创建了不同的PCF来表示真实空间中的相同体积(例如,在不同的地图中)。
如图47所示,第二XR设备12.2扩展地图2以包括来自规范地图的PCF a-d。包含PCFa-d表示地图2到规范地图的定位。在一些实施例中,XR系统可以执行优化步骤以从重叠区域移除重复的PCF,诸如1410中的PCF、PCF 3和PCF 4,5。在地图2定位之后,虚拟内容(诸如,内容456和内容123)的放置将相对于更新的地图2中最近的更新的PCF。尽管对于内容的PCF附接发生了变化,并且尽管地图2的PCF已更新,但虚拟内容相对于用户出现在相同的真实世界位置。
如图48所示,第二XR设备12.2继续扩展地图2,因为例如当用户在真实世界中来回走动时,由第二XR设备12.2识别出更多的PCF(例如,PCF e、f、g和h)。还可以注意到,地图1在图47和图48中未扩展。
参考图49,第二XR设备12.2将地图2上传到服务器20。服务器20将地图2与规范地图一起存储。在一些实施例中,地图2可以在第二XR设备12.2的会话结束时被上传到服务器20。
服务器20内的规范地图现在包括PCF i,PCF i未被包括在第一XR设备12.1上的地图1中。当第三XR设备(未示出)将地图上传到服务器20并且该地图包括PCF i时,服务器20上的规范地图已扩展为包括PCF i。
在图50中,服务器20将地图2与规范地图合并以形成新的规范地图。服务器20确定PCF a至d是规范地图和地图2共有的。服务器扩展规范地图以包括来自地图2的PCF e至h和PCF 1,2以形成新的规范地图。第一XR设备12.1和第二XR设备12.2上的规范地图基于地图1并且已过时。
在图51中,服务器20将新的规范地图发送到第一XR设备12.1和第二XR设备12.2。在一些实施例中,当第一XR设备12.1和第二设备12.2在不同的会话或新会话或后续会话期间尝试定位时,会发生这种情况。第一XR设备12.1和第二设备12.2如上所述继续将其各自的本地地图(分别为地图1和地图2)定位到新的规范地图。
如图52所示,头部坐标系96或“头部姿势”与地图2中的PCF相关。在一些实施例中,地图的原点(原点2)基于第二XR设备12.2在会话开始时的头部姿势。由于PCF是在会话期间被创建的,因此PCF相对于世界坐标系的原点2被放置。地图2的PCF用作相对于规范坐标系的持久坐标系,其中世界坐标系是前一会话的世界坐标系(例如,图40中地图1的原点1)。这些坐标系通过用于将地图2定位到规范地图的相同变换进行关联,如上面结合图46B所讨论的。
从世界坐标系到头部坐标系96的变换之前已经参考图9讨论过。图52所示的头部坐标系96只有两个正交轴,它们处于相对于地图2的PCF的特定坐标位置,并且处于相对于地图2的特定角度。然而,应当理解,头部坐标系96相对于地图2的PCF处于三维位置并且在三维空间内具有三个正交轴。
在图53中,头部坐标系96已相对于地图2的PCF发生移动。头部坐标系96已移动是因为第二用户14.2已经移动了其头部。用户可以在六个自由度(6dof)内移动其头部。头部坐标系96因此可以在6dof中移动,即从其在图52中的先前位置开始,围绕相对于地图2的PCF的三个正交轴在三维空间内移动。当图9中的真实对象检测相机44和惯性测量单元48分别检测到真实对象和头部单元22的运动时,头部坐标系96做出调整。有关头部姿势跟踪的更多信息在题为“Enhanced Pose Determination for Display Device(显示设备的增强姿势确定)”的美国专利申请No.16/221,065中公开,该申请的全部内容通过引用并入此文。
图54示出了声音可以与一个或多个PCF相关联。例如,用户可以穿戴具有立体声音的头戴式耳机或耳机。可以使用传统技术模拟通过耳机的声音的位置。声音的位置可以位于固定位置,从而当用户将他们的头向左旋转时,声音的位置向右旋转,使得用户感知到来自真实世界中的相同位置的声音。在该示例中,声音的位置由声音123和声音456表示。出于讨论的目的,图54的分析与图48相似。当第一用户14.1和第二用户14.2在相同或不同时间位于同一个房间时,他们感知到声音123和声音456来自真实世界中的相同位置。
图55和图56示出了上述技术的进一步实现。如参考图8所述,第一用户14.1已发起第一会话。如图55所示,第一用户14.1已终止第一会话,如虚线所示。在第一会话结束时,第一XR设备12.1将地图1上传到服务器20。第一用户14.1现在已经在比第一会话晚的时间发起第二会话。第一XR设备12.1不从服务器20下载地图1,因为地图1已经存储在第一XR设备12.1上。如果地图1丢失,则第一XR设备12.1从服务器20下载地图1。然后第一XR设备12.1继续构建地图2的PCF,定位到地图1,并进一步开发如上所述的规范地图。第一XR设备12.1的地图2然后用于关联上述本地内容、头部坐标系、本地声音等。
参考图57和图58,也有可能不止一个用户在同一会话中与服务器交互。在该示例中,具有第三XR设备12.3的第三用户14.3加入第一用户14.1和第二用户14.2。每个XR设备12.1、12.2和12.3开始生成自己的地图,分别为地图1、地图2和地图3。随着XR设备12.1、12.2和12.3继续开发地图1、地图2和地图3,不断地将这些地图上传到服务器20。服务器20合并地图1、地图2和地图3以形成规范地图。然后将规范地图从服务器20发送到XR设备12.1、XR设备12.2和XR设备12.3中的每一个。
图59示出了根据一些实施例的恢复和/或重置头部姿势的查看方法的各方面。在所示示例中,在动作1400,对查看设备供电。在动作1410,响应于被供电,启动新会话。在一些实施例中,新会话可以包括建立头部姿势。固定到用户头部的头戴式框架上的一个或多个捕获设备通过首先捕获环境的图像,然后根据图像确定表面来捕获环境的表面。在一些实施例中,表面数据可以与来自重力传感器的数据组合以建立头部姿势。可以使用建立头部姿势的其他合适方法。
在动作1420,查看设备的处理器进入用于跟踪头部姿势的例程。当用户移动他们的头部以确定头戴式框架相对于表面的取向时,捕获设备继续捕获环境的表面。
在动作1430,处理器确定头部姿势是否已经丢失。头部姿势可能会由于导致特征获取不足的“边缘”情况(诸如,反射面过多、光线不足、墙壁空白、在户外等),或者由于移动并构成地图的一部分的人群的动态情况而丢失。1430处的例程允许一定量的时间(例如,10秒),从而使得具备足够的时间来确定头部姿势是否已经丢失。如果头部姿势没有丢失,则处理器返回1420并再次进入头部姿势跟踪。
如果在动作1430处头部姿势已经丢失,则处理器在1440处进入例程以恢复头部姿势。如果由于光线不足导致头部姿势丢失,则通过查看设备的显示器向用户显示如下消息:
系统正在检测到光线不足的情况。请移到光线更充足的地方。
系统将继续监测是否有足够的光可用以及是否可以恢复头部姿势。系统可以替代地确定表面的低纹理导致头部姿势丢失,在这种情况下,在显示器中向用户提供以下提示作为改进表面捕获的建议:
系统无法检测到足够多具有精细纹理的表面。请移到表面纹理不那么粗糙、纹理更精细的区域。
在动作1450,处理器进入例程以确定头部姿势恢复是否失败。如果头部姿势恢复没有失败(即,头部姿势恢复已经成功),则处理器通过再次进入头部姿势跟踪返回到动作1420。如果头部姿势恢复失败,则处理器返回到动作1410以建立新会话。作为新会话的一部分,所有缓存的数据都将失效,然后重新建立头部姿势。头部跟踪的任何合适的方法都可以与图59描述的过程结合使用。美国专利申请No.16/221,065描述了头部跟踪,其全部内容在此通过引用并入此文。
远程定位
各种实施例可以利用远程资源来促进个人和/或用户组之间持久和一致的交叉现实体验。发明人已经认识到并理解,可以在不下载规范地图集的情况下实现具有如本文所述的规范地图的XR设备的操作益处。上面讨论的图30示出了将规范地图下载到设备的示例实现。例如,不下载地图的好处可以通过将特征和姿势信息发送到维护规范地图集的远程服务来实现。根据一些实施例,寻求使用规范地图以将虚拟内容定位在相对于规范地图指定的位置的设备可以从远程服务接收特征和规范地图之间的一个或多个变换。这些变换可以在维护有关这些特征在物理世界中的位置信息的设备上使用,以将虚拟内容定位在相对于规范地图指定的位置,或者以其他方式识别在物理世界中的相对于规范地图指定的位置。
在一些实施例中,空间信息由XR设备捕获并被传送到远程服务,诸如基于云的服务,该服务使用空间信息将XR设备定位到由应用或XR系统的其他部件使用的规范地图,以指定虚拟内容相对于物理世界的位置。一旦定位,将由设备维护的跟踪地图链接到规范地图的变换便可被传送到设备。可以结合跟踪地图使用变换来确定渲染虚拟内容的相对于规范地图指定的位置,或者以其他方式识别在物理世界中的相对于规范地图指定的位置。
发明人已经意识到,与传送地图数据相比,需要在设备和远程定位服务之间交换的数据可能非常小,当设备将跟踪地图传送到远程服务并从远程服务接收规范地图集以实现基于设备的定位时,可能出现这种情况。在一些实施例中,对云资源执行定位功能仅需要从设备向远程服务发送少量信息。例如,不需要将完整的跟踪地图传送到远程服务以执行定位。在一些实施例中,诸如上述结合持久姿势存储的特征和姿势信息可以被发送到远程服务器。在由描述符表示特征的实施例中,如上所述,上传的信息可能更小。
从定位服务返回到设备的结果可以是将上传的特征与匹配的规范地图的多个部分进行关联的一个或多个变换。这些变换可以在XR系统中结合其跟踪地图使用,以识别虚拟内容的位置或以其他方式识别物理世界中的位置。在使用诸如上述PCF之类的持久空间信息指定相对于规范地图的位置的实施例中,定位服务可以在成功定位之后将特征和一个或多个PCF之间的变换下载到设备。
因此,XR设备和远程服务之间用于执行定位的通信所消耗的网络带宽可能很低。因此系统可以支持频繁定位,允许与系统交互的每个设备能够快速获取用于定位虚拟内容或执行其他基于位置的功能的信息。当设备在物理环境中移动时,可能重复请求更新的定位信息。此外,设备可能频繁获取定位信息的更新,诸如当规范地图发生变化时,诸如通过合并额外的跟踪地图以扩展地图或提高其准确性。
此外,上传特征和下载变换可以通过增加经欺骗获取地图的难度来增强在多个用户之间共享地图信息的XR系统中的隐私。例如,可以阻止未授权用户通过发送对表示并非其所在的物理世界部分的规范地图的虚假请求来从系统获取地图。当未授权用户实际不在其请求地图信息的物理世界区域中,则不太可能访问该区域中的特征。在特征信息被设置成特征描述格式的实施例中,通过请求地图信息骗取特征信息的难度将更复杂。此外,当系统返回旨在应用于被请求位置信息的区域中操作的设备的跟踪地图的变换时,系统返回的信息对冒名顶替者几乎没有用处或没有任何用处。
根据一些实施例,定位服务被实现为基于云的微服务。在一些示例中,实施基于云的定位服务可以帮助节省设备计算资源,并且可以使定位所需的计算能够以非常低的延迟被执行。这些操作可以由几乎无限的计算能力或通过提供额外的云资源可用的其他计算资源来支持,从而确保XR系统能够通过扩展来支持众多设备。在一个示例中,许多规范地图可以在存储器中维护以实现近即时访问,或者被替换地存储在高可用性设备中以减少系统延迟。
此外,对云服务中的多个设备执行定位可以实现过程的改进。定位遥测和统计信息可以提供有关哪些规范地图在活动存储器和/或高可用性存储中的信息。例如,可以使用多个设备的统计数据来识别最常访问的规范地图。
由于在云环境或相对于远程设备具有大量处理资源的其他远程环境中进行处理,也可获得额外的准确性。例如,相对于在本地设备上执行的处理,可以在云中的更高密度的规范地图上进行定位。地图可以被存储在云中,例如具有更多PCF,或者每个PCF的特征描述符密度更高,从而提高了设备的特征集和规范地图之间匹配的准确性。
图61是XR系统6100的示意图。在用户会话期间显示交叉现实内容的用户设备可以有多种形式。例如,用户设备可以是可穿戴XR设备(例如,6102)或手持移动设备(例如,6104)。如上所述,这些设备可以配置有软件,诸如应用或其他部件,和/或硬连线以生成可用于在它们各自的显示器上渲染虚拟内容的本地位置信息(例如,跟踪地图)。
虚拟内容定位信息可以相对于全球位置信息来指定,例如,全球位置信息的格式可以设置成包含一个或多个PCF的规范地图。根据一些实施例,例如图61所示的实施例,系统6100被配置有支持虚拟内容在用户设备上的运行和显示的基于云的服务。
在一个示例中,定位功能作为基于云的服务6106提供,其可以是微服务。基于云的服务6106可以在多个计算设备中的任何一个上被实现,计算资源可以从这些计算设备分配给在云中执行的一个或多个服务。这些计算设备可以彼此互连并且可被诸如可穿戴XR设备6102和手持设备6104之类的设备访问。这些连接可以通过一个或多个网络提供。
在一些实施例中,基于云的服务6106被配置为接受来自各自用户设备的描述符信息并将设备“定位”到一个或多个匹配的规范地图。例如,基于云的定位服务将接收的描述符信息与相应规范地图的描述符信息进行匹配。可以使用如上所述的技术来创建规范地图,该技术通过合并由具有图像传感器或获取有关物理世界的信息的其他传感器的一个或多个设备提供的地图来创建规范地图。然而,规范地图不必由访问它们的设备创建,因为这些地图可以由地图开发者,例如,通过使地图可用于定位服务6106来发布地图的开发者,创建。
根据一些实施例,云服务处理规范地图识别,并且可以包括将规范地图的存储库过滤为潜在匹配物集的操作。可以如图29所示执行过滤,或者作为图29所示过滤标准的替代或补充,使用过滤标准的任何子集和其他过滤标准执行过滤。在一个实施例中,地理数据可用于将对匹配规范地图的搜索限于表示接近请求定位的设备的区域的地图。例如,区域属性,诸如Wi-Fi信号数据、Wi-Fi指纹信息、GPS数据和/或其他设备位置信息,可用作存储的规范地图上的粗略过滤器,从而将描述符的分析限于已知或可能在用户设备附近的规范地图。类似地,每个设备的位置历史可以由云服务维护,以便优先搜索设备最后位置附近的规范地图。在一些示例中,过滤可以包括上面关于图31B、图32、图33和图34讨论的功能。
图62是示例过程流,其可以由设备执行以使用基于云的服务来利用一个或多个规范地图定位设备位置,并接收指定设备本地坐标系和规范地图坐标系之间的一个或多个变换的变换信息。各种实施例和示例可以将一个或多个变换描述为指定从第一坐标系到第二坐标系的变换。其他实施例包括从第二坐标系到第一坐标系的变换。在又一实施例中,变换实现从一个坐标系到另一坐标系的变换,所得到的坐标系仅取决于期望的坐标系输出,例如包括显示内容的坐标系,输出。在又一些实施例中,坐标系变换允许根据第二坐标系确定第一坐标系,以及根据第一坐标系确定第二坐标系。
根据一些实施例,可以将反映相对于规范地图定义的每个持久姿势的变换的信息发送到设备。
根据一些实施例,过程6200可以在6202处以新会话开始。在设备上启动新会话会启动图像信息的捕获以构建设备的跟踪地图。此外,设备可以发送消息,向服务器注册定位服务,提示服务器为该设备创建会话。
在一些实施例中,在设备上开始新会话可选地包括从设备向定位服务发送调整数据。定位服务将基于特征和相关姿势集计算的一个或多个变换返回设备。如果在计算变换之前基于设备指定信息调整特征姿势和/或在计算变换之后基于设备特定信息调整变换,而不是在设备上执行这些计算,则设备指定信息可能被发送到定位服务,以便定位服务应用调整。作为具体示例,发送设备指定调整信息可以包括捕获传感器和/或显示器的校准数据。例如,校准数据可用于调整特征点相对于测量位置的位置。替代地或附加地,校准数据可用于调整命令显示器渲染虚拟内容的位置,以便看起来针对该指定设备准确定位。例如,该校准数据可以从使用设备上的传感器拍摄的同一场景的多个图像中获得。在这些图像中检测到的特征的位置可以被表示为传感器位置的函数,使得多个图像产生可以针对传感器位置求解的方程组。可以将计算的传感器位置与标称位置进行比较,并且可以从任何差异中得出校准数据。在一些实施例中,也可使用有关设备构造的内在信息计算显示器的校准数据。
在为传感器和/或显示器生成校准数据的实施例中,可以在测量或显示过程中的任何点应用校准数据。在一些实施例中,可以将校准数据发送到定位服务器,该定位服务器可以将校准数据存储在为已经向定位服务器注册并因此与服务器会话的每个设备建立的数据结构中。定位服务器可以将校准数据应用于作为提供校准数据的设备的定位过程的一部分而计算的任何变换。因此,使用校准数据来提高感测和/或显示信息的准确性的计算负担由校准服务承担,从而提供了进一步的机制来减少设备上的处理负担。
一旦建立新会话,过程6200便可以在6204处继续捕获设备环境的新帧。在6206处,可以处理每个帧以生成被捕获的帧的描述符(例如包括上面讨论的DSF值)。这些值可以使用上面描述的一些或所有技术来计算,包括上面关于图14、图22和图23讨论的技术。如所讨论的,描述符可以被计算为特征点到描述符的映射,或者在一些实施例中,被计算为特征点周围图像块到描述符的映射。描述符可以具有能够实现新获取的帧/图像与存储的地图之间的有效匹配的值。此外,从图像中提取的特征数量可以限制为每个图像的最大特征点数量,诸如每个图像200个特征点。如上所述,可以选择特征点来表示兴趣点。因此,动作6204和6206作为形成跟踪地图或以其他方式定期收集设备周围物理世界的图像的设备过程的一部分来执行,或者可以但不必为了定位而单独执行。
6206处的特征提取可以包括将姿势信息附加到在6206处的提取的特征上。姿势信息可以是设备本地坐标系中的姿势。在一些实施例中,姿势可以相对于跟踪地图中的参考点,诸如如上述持久姿势。替代地或附加地,姿势可以相对于设备跟踪地图的原点。这样的实施例可以使本文所述的定位服务能够为范围广泛的设备提供定位服务,即使它们不使用持久姿势。无论如何,姿势信息都可以被附加到每个特征或每个特征集,使得定位服务可以使用姿势信息来计算能够在将特征与存储的地图中的特征进行匹配时返回到设备的变换。
过程6200可以继续到决策框6207,其中做出是否请求定位的决策。可以应用一个或多个标准来确定是否请求定位。该标准可以包括时间流逝,使得设备能够在某个阈值时间量之后请求定位。例如,如果在阈值时间量内未尝试定位,则该过程可以从决策框6207继续到动作6208,动作6208从云请求定位。该阈值时间量可以在10到30秒之间,诸如25秒。替代地或附加地,定位可以由设备的运动触发。执行过程6200的设备可以使用IMU和/或其跟踪地图来跟踪其运动,并且在检测到距设备最后请求定位的位置超过阈值距离的运动时启动定位。例如,阈值距离可以在1到10米之间,例如在3到5米之间。作为又一替代,定位可以响应于事件而触发,该事件为诸如当如上所述设备创建新的持久姿势或设备的当前持久姿势改变时。
在一些实施例中,可以实现决策框6207,使得可以动态地建立触发定位的阈值。例如,在特征基本一致,使得将提取的特征集与存储的地图的特征进行匹配的置信度较低,可能更频繁地请求定位以增加至少一次定位尝试成功的机会。在这种情况下,可以降低在决策框6207处应用的阈值。类似地,在特征相对较少的环境中,可以降低在决策框6207处应用的阈值以增加定位尝试的频率。
无论如何触发定位,当被触发时,过程6200可以进行到动作6208,此时设备向定位服务发送请求,其中包括定位服务用来执行定位的数据。在一些实施例中,可以提供来自多个图像帧的数据用于定位尝试。例如,除非多个图像帧中的特征产生一致的定位结果,否则定位服务不会认为定位成功。在一些实施例中,过程6200可以包括将特征描述符和附加的姿势信息保存到缓冲区中。例如,缓冲区可以是循环缓冲区,存储从最近捕获的帧中提取的特征集。因此,定位请求可以与在缓冲区中累积的多个特征集一起发送。在某些设置中,缓冲区大小被实现为累积多个数据集,这些数据将更有可能产生成功的定位。在一些实施例中,缓冲区大小可以被设置为从例如两个、三个、四个、五个、六个、七个、八个、九个或十个帧累积特征。可选地,缓冲区大小可以具有基线设置,该基线设置响应于定位失败而增加。在一些示例中,增加缓冲区大小和传输的对应数量特征集会降低后续定位功能无法返回结果的可能性。
不管如何设置缓冲区大小,设备都可以将缓冲区的内容作为定位请求的一部分传送到定位服务。其他信息可以连同特征点和附加姿势信息一起发送。例如,在一些实施例中,可以发送地理信息。地理信息例如可以包括与设备跟踪地图或当前持久姿势相关联的GPS坐标或无线签名。
响应于在6208处发送的请求,云定位服务可以分析特征描述符以将设备定位到规范地图或由服务维护的其他持久地图。例如,描述符与设备定位到的地图中的特征集相匹配。基于云的定位服务可以执行如上文关于相对于设备的定位所描述的定位(例如,可以依赖上面讨论的任何功能进行定位,包括地图排名、地图过滤、位置估计、过滤的地图选择、图44-图46中的示例、和/或关于定位模块、PCF和/或PP识别和匹配等所讨论的)。然而,不是将识别的规范地图发送到设备(例如,在设备定位中),而是基于云的定位服务可以继续基于从设备发送的特征集的相对取向和规范地图的匹配特征生成变换。定位服务可以将这些变换返回到设备,可以在框6210处接收变换。
在一些实施例中,由定位服务维护的规范地图可以采用PCF,如上所述。在这样的实施例中,与从设备发送的特征点匹配的规范地图的特征点可以具有相对于一个或多个PCF指定的位置。因此,定位服务可以识别一个或多个规范地图,并且可以计算在随定位请求发送的姿势中表示的坐标系和一个或多个PCF之间的变换。在一些实施例中,通过基于相应设备的地理数据过滤潜在地图来帮助识别一个或多个规范地图。例如,一旦过滤成候选集(例如,通过GPS坐标以及其他选项),便可以详细分析规范地图的候选集以确定上述匹配的特征点或PCF。
在动作6210处返回到请求设备的数据的格式可以设置成持久姿势变换表。该表可以包含一个或多个规范地图标识符,指示设备被定位服务定位到的规范地图。然而,应当理解,定位信息可以以其他方式设置格式,包括作为具有相关联的PCF和/或规范地图标识符的变换列表。
不管如何设置变换的格式,在动作6212处,设备可以使用这些变换来计算渲染虚拟内容的位置,该虚拟内容的位置已经由XR系统的应用或其他部件相对于PCF中的任一者指定。该信息可替代地或附加地在设备上用于执行任何基于位置的操作,其中位置被基于PCF指定。
在一些场景中,定位服务可能无法将从设备发送的特征与任何存储的规范地图进行匹配,或者可能无法匹配与定位服务请求通信足够数量的特征集以认定成功进行了定位。在这样的场景中,定位服务可以向设备指示定位失败,而不是如上面结合动作6210描述的那样将变换返回到设备。在这样的场景中,过程6200可以在决策框6209处分支到动作6230,此时设备可采取一个或多个动作进行失败处理。这些动作包括增加保存为定位而发送的特征集的缓冲区的大小。例如,如果定位服务不认为定位成功,除非三个特征积极匹配,否则缓冲区大小可能会从5增加到6,从而增加发送的三个特征集与由定位服务维护的规范地图匹配的机会。
替代地或附加地,失败处理可以包括调整设备操作参数以触发更频繁的定位尝试。例如,可以减少定位尝试之间的阈值时间和/或阈值距离。作为另一示例,可以增加每个特征集中的特征点数量。当从设备发送的特征集中足够数量的特征与地图的特征匹配时,可以认为特征集与存储在规范地图内的特征之间存在匹配。增加发送的特征数量会增加匹配的机会。作为具体示例,初始特征集大小可以是50,在每次连续定位失败时,其可以被增加到100、150,然后是200。在成功匹配时,可将特征集的大小返回到其初始值。
失败处理还可以包括从定位服务以外获得定位信息。根据一些实施例,用户设备可以被配置为缓存规范地图。缓存地图允许设备在云不可用的情况下访问和显示内容。例如,缓存的规范地图允许在通信失败或其他不可用的情况下进行基于设备的定位。
根据各种实施例,图62描述了设备发起基于云的定位的高级流程。在其他实施例中,所示的各种步骤中的一个或多个可以组合、省略,或调用其他过程来完成定位,并最终在相应设备的视图中实现虚拟内容的可视化。
此外,应当理解,虽然过程6200示出了设备在决策框6207处确定是否启动定位,但是用于启动定位的触发可以来自设备外部,包括来自定位服务。例如,定位服务可以维护有关与其会话的设备中的每一个设备的信息。例如,该信息可以包括每个设备最近定位到的规范地图的标识符。XR系统的定位服务或其他部件可以更新规范地图,包括使用上面结合图26描述的技术。当规范地图更新时,定位服务可以向最近定位到该地图的每个设备发送通知。该通知可以用作设备请求定位的触发和/或可以包括使用最近从设备发送的特征集重新计算的更新的变换。
图63A、图63B和图63C是示出设备和云服务之间的操作和通信的示例过程流。框6350、6352、6354和6456示出了示例架构和参与基于云的定位过程的部件之间的分离。例如,被配置为处理用户设备上的感知的模块、部件和/或软件在6350处示出(例如,图6A中的660)。用于持久世界操作的设备功能在6352处示出(例如,包括上面关于持久世界模块(例如,图6A中的662)所述)。在其他实施例中,不需要6350和6352之间的分离并且所示的通信可以存在于在设备上执行的进程之间。
类似地,框6354示出了被配置为处理与联结型世界/联结型世界建模(例如,图26中的802、812)相关联的功能的云进程。框6356示出了被配置为处理与基于从设备发送的信息将设备定位到存储的规范地图的存储库的一个或多个地图相关联的功能。
在所示实施例中,当新会话开始时,过程6300在6302处开始。在6304获得传感器校准数据。获得的校准数据可以取决于在6350处表示的设备(例如,多个相机、传感器、定位设备等)。一旦获得设备的传感器校准,便可以在6306处缓存校准。如果设备操作导致频率参数(例如,收集频率、采样频率、匹配频率等选项)发生变化,则频率参数在6308处被重置为基线。
一旦新会话功能完成(例如,校准,步骤6302-6306),过程6300便可继续新帧的捕获6312。在6314处从帧中提取特征及其对应的描述符。在一些示例中,如上所述,描述符可以包括DSF。根据一些实施例,描述符可以具有被附接到其上的空间信息以促进后续处理(例如,变换生成)。在设备上生成的姿势信息(例如,上面讨论的相对于设备的跟踪地图指定的用于定位物理世界中特征的信息)可以在6316处被附加到提取的描述符上。
在6318处,描述符和姿势信息被添加到缓冲区。在循环中执行步骤6312-6318所示的新帧捕获和到缓冲区的添加,直到在6319处超过缓冲区大小阈值。响应于确定满足缓冲区大小,在6320处将定位请求从设备发送到云。根据一些实施例,该请求可以由在云(例如6354)中实例化的联结型世界服务来处理。在其他实施例中,用于识别候选规范地图的功能操作可以与用于实际匹配的操作分离(例如,显示为框6354和6356)。在一个实施例中,用于地图过滤和/或地图排名的云服务可以在6354处被执行并处理从6320处接收的定位请求。根据一些实施例,地图排名操作被配置为在6322处确定可能包括设备位置的候选地图集。
在一个示例中,地图排名功能包括基于地理属性或其他位置数据(例如,观察或推断的位置信息),识别候选规范地图的操作。例如,其他位置数据可以包括Wi-Fi签名或GPS信息。
根据其他实施例,可以在与设备和用户的交叉现实会话期间捕获位置数据。过程6300可以包括为给定设备和/或会话(未示出)填充位置的附加操作。例如,位置数据可以存储为设备区域属性值和用于选择接近设备位置的候选规范地图的属性值。
可使用任何一个或多个位置选项来将多个规范地图集过滤成可能表示包括用户设备位置的区域的规范地图集。在一些实施例中,规范地图可以覆盖相对较大的物理世界区域。规范地图可以被分割成多个区域,使得地图的选择需要地图区域的选择。例如,地图区域可以在几十平方米的数量级上。因此,过滤的规范地图集可以是地图区域集。
根据一些实施例,可以根据候选规范地图、姿势特征和传感器校准数据构建定位快照。例如,候选规范地图、姿势特征和传感器校准信息的阵列可以与确定特定匹配规范地图的请求一起发送。可以基于从设备接收的描述符和与规范地图相关联的存储的PCF数据,执行与规范地图的匹配。
在一些实施例中,将来自设备的特征集与作为规范地图的一部分存储的特征集进行比较。比较可以基于特征描述符和姿势。例如,可以基于候选集中多个特征选择规范地图的候选特征集,其中,该多个特征的描述符与来自设备的特征集的描述符足够相似,这些特征可以是相同的特征。例如,候选集可以是从用于形成规范地图的图像帧中导出的特征。
在一些实施例中,如果相似特征的数量超过阈值,则可以对候选特征集执行进一步处理。进一步的处理可以确定来自设备的姿势特征集与候选特征集中的特征对齐的程度。可以对来自规范地图的特征集,如来自设备的特征,进行摆姿势(pose)。
在一些实施例中,将特征的格式设置成高维嵌入(例如,DSF等)并且可以使用最近邻搜索进行比较。在一个示例中,系统被配置(例如,通过执行过程6200和/或6300)为使用欧几里得距离找到前两个最近邻,并且可以执行比率测试。如果该最近邻比次近邻更接近,则系统认为最近邻是匹配的。例如,可以根据欧几里得距离相对于次近邻的比率大于阈值乘以欧几里得距离相对于最近邻的比率来确定该上下文中的“更接近”。一旦来自设备的特征被认为与规范地图中的特征“匹配”,系统便可以被配置为使用匹配特征的姿势来计算相对变换。从姿势信息发展而来的变换可用于指示将设备定位到规范地图所需的变换。
正确数据的数量可以用作匹配质量的指示。例如,在DSF匹配的情况下,正确数据的数量反映了在接收到的描述符信息和存储的地图/规范地图之间匹配的特征数量。在其他实施例中,可以通过计算每个集合中“匹配”的特征数量来在此实施例中确定正确数据。
替代地或附加地,可以以其他方式确定匹配质量的指示。在一些实施例中,例如,当计算变换以基于匹配特征的相对姿态将来自包含多个特征的设备的地图定位到规范地图时,为多个匹配特征中的每一个计算的变换统计可以用作质量指示。例如,大方差可以指示匹配质量较差。替代地或附加地,对于确定的变换,系统可以计算具有匹配描述符的特征之间的平均误差。可以计算变换的平均误差,反映位置失配程度。均方误差是误差度量的一个具体示例。不管具体的误差度量如何,如果误差低于阈值,则可以确定变换可用于从设备接收的特征,并且计算的变换用于定位设备。替代地或附加地,正确数据的数量还可用于确定是否存在与从设备接收到的设备位置信息和/或描述符匹配的地图。
如上所述,在一些实施例中,设备可以发送多个特征集进行定位。当至少阈值数量的特征集与来自规范地图的特征集匹配、误差低于阈值和/或正确数据数量高于阈值时,可以认为定位是成功的。例如,该阈值数量可以是三个特征集。然而,应当理解,用于确定足够数量的特征集是否具有合适值的阈值可根据经验或以其他合适的方式来确定。同样,可以根据经验或以其他合适的方式确定匹配过程的其他阈值或参数,诸如被视为匹配的特征描述符之间的相似度、用于选择候选特征集的正确数据数量和/或失配误差的大小。
一旦确定匹配,就识别与匹配的一个或多个规范地图相关联的持久地图特征集。在匹配基于地图区域的实施例中,持久地图特征可以是匹配区域中的地图特征。持久地图特征可以是如上所述的持久姿势或PCF。在图63的示例中,持久地图特征是持久姿势。
不管持久地图特征的格式如何,每个持久地图特征可以具有相对于它所属的规范地图的预定取向。该相对取向被应用于变换,计算该变换以将来自设备的特征集与来自规范地图的特征集对齐,以确定来自设备的特征集和持久地图特征之间的变换。诸如可以由校准数据导出任何调整然后可以被应用于该计算的转换。得到的变换可以是设备本地坐标系和持久地图特征之间的变换。该计算可以针对匹配地图区域的每个持久地图特征执行,并且可以将结果存储在表格中,该表格在6326处表示为持久_姿势_表格(persistent_pose_table)。
在一个示例中,框6326返回持久姿势变换表、规范地图标识符和正确数据的数量。根据一些实施例,规范地图ID是用于唯一地标识规范地图和规范地图版本(或地图区域,在定位基于地图区域的实施例中)的标识符。
在各种实施例中,计算的定位数据可用于填充由定位服务在6328处维护的定位统计和遥测。该信息可以针对每个设备存储,并且可以针对每个定位尝试更新,在设备会话结束时,可以清除该信息。例如,设备匹配的哪些地图可用于改进地图排名操作。例如,覆盖设备先前匹配的相同区域的地图可以在排名中被优先考虑。同样,覆盖相邻区域的地图可以比更远的区域具有更高优先级。此外,可以基于检测到的设备随时间的轨迹对相邻地图进行优先级排序,其中在运动方向上的地图区域被赋予比其他地图区域更高的优先级。定位服务可以使用该信息,例如,当来自设备的后续定位请求限制搜索存储的规范地图中的候选特征集的地图或地图区域时,定位服务可以使用该信息。如果在该有限区域中识别出具有低误差度量和/或大量正确数据或大百分比正确数据的匹配,则可以避免处理该区域外的地图。
过程6300继续将信息云(例如,6354)传送到用户设备(例如,6352)。根据一些实施例,在6330将持久姿势表和规范地图标识符传送到用户设备。在一个示例中,持久姿势表可以由多个元素构成,这些元素包括至少一个标识持久姿势ID的字符串和链接设备的跟踪地图与该持久姿势的变换。在持久地图特征是PCF的实施例中,该表可以代替地指示到匹配地图的PCF的变换。
如果在6336处定位失败,则过程6300通过调整参数继续,这些参数可以增加从设备发送到定位服务的数据量,从而增加定位成功的机会。例如,当在规范地图中找不到具有超过阈值数量的相似描述符的特征集时,或者当与所有变换的候选特征集相关联的误差度量高于阈值时,可以指示失败。作为可调参数的示例,描述符缓冲区的大小约束可以被增加(6319)。例如,在描述符缓冲区大小为5的情况下,定位失败会触发增加到从至少六个图像帧中提取的至少六个特征集。在一些实施例中,过程6300可以包括描述符缓冲区增量值。在一个示例中,增量值可用于例如响应定位失败而控制缓冲区大小的增加速率。其他参数,诸如控制定位请求速率的参数,可以在找不到匹配的规范地图时更改。
在一些实施例中,执行6300可以在6340处生成错误条件,其包括在定位请求未能工作而不是返回不匹配结果的情况下的执行。例如,当网络错误导致保存规范地图数据库的存储器对于执行定位服务的服务器不可用或接收到的对包含不正确格式信息的定位服务的请求时,可能会发生错误。在该示例中,在错误条件的情况下,过程6300在6342处调度请求的重试。
当定位请求成功时,可以重置响应于失败而调整的任何参数。在6332处,过程6300可以继续操作以将频率参数重置为任何默认值或基线。在一些实施例中,无论有任何改变,都执行6332,从而确保始终建立基线频率。
在6334处,设备可以使用接收到的信息来更新缓存定位快照。根据各种实施例,相应的变换、规范地图标识符和其他定位数据可以由设备存储并用于将相对于规范地图或其持久地图特征(诸如,持久姿势或PCF)指定的位置与由设备相对于其本地坐标系(诸如,可以从其跟踪地图确定)确定的位置进行关联。
用于在云中定位的过程的各种实施例可以实现前述步骤中的任何一个或多个并且基于前述架构。其他实施例可组合前述各个步骤中的一个或多个,同时、并行或以另一顺序执行步骤。
根据一些实施例,在交叉现实体验的情境中的云中定位服务可以包括附加功能。例如,可以执行规范地图缓存来解决连接问题。在一些实施例中,设备可以定期下载和缓存它所定位到的规范地图。如果云中的定位服务不可用,则设备可以自己运行定位(例如,如上所述—包括关于图26所述的)。在其他实施例中,从定位请求返回的变换可以链在一起并应用于后续会话。例如,设备可以缓存一系列变换并使用该变换序列来建立定位。
系统的各种实施例可以使用定位操作结果来更新变换信息。例如,定位服务和/或设备可以被配置为维护有关跟踪地图到规范地图变换的状态信息。可以对一段时间内接收到的变换进行平均。根据一些实施例,可以将平均操作限制为在阈值数量的定位成功之后(例如,三、四、五或更多次)发生。在其他实施例中,可以在云中跟踪其他状态信息,例如通过联结型世界模块。在一个示例中,状态信息可以包括设备标识符、跟踪地图ID、规范地图参考(例如,版本和ID)、以及规范地图到跟踪地图的变换。在一些示例中,系统通过每次执行基于云的定位功能,可以使用状态信息来不断更新并获得更准确的规范地图到跟踪地图变换。
对基于云的定位的附加增强可以包括将特征集中不与规范地图中的特征匹配的错误数据(outlier)传送给设备。例如,设备可以使用该信息来改进其跟踪地图,诸如通过从用于构建其跟踪地图的特征集中移除错误数据。替代地或附加地,来自定位服务的信息可以使设备能够将针对其跟踪地图的捆绑调整限制为基于正确数据特征计算调整或以其他方式对捆绑调整过程施加约束。根据另一实施例,各种子过程或附加操作可以结合针对基于云的定位讨论的过程和/或步骤和/或作为其替代来使用。例如,候选地图识别可以包括基于与相应地图一起存储的区域标识符和/或区域属性来访问规范地图。
基于位置的共享内容
在一些实施例中,XR系统可以使虚拟内容能够与特定位置相关联并且与到达这些位置的用户共享该内容。这种基于位置的虚拟内容可以以任何多样的方式被添加到系统中。例如,XR系统可以包括认证服务,该服务允许或阻止特定用户访问将虚拟内容与物理世界中特定位置相关联的功能。这种关联可以通过编辑存储地图,诸如,上述规范地图,来实现。
被授权将虚拟内容添加到规范地图的用户可以充当内容管理者。内容管理者可以被授权访问存储的规范地图,并且可以使用一个或多个标准来确定每个内容管理者被授权访问哪些地图。例如,每个内容管理者可以被授权访问与物理世界中指定位置相对应的存储的规范地图或这些地图的一部分。
作为具体示例,商店所有者可以被授权作为其商店10米内的物理位置的内容管理者。作为内容管理者,商店所有者可以指定描述商店中待售商品的虚拟内容,在商店10米范围内经过的XR设备用户将看到这些内容。作为另一示例,游戏组织者可以被临时授权在一个下午作为公园内的内容管理者。这样的内容管理者可以指定将由游戏应用渲染的虚拟内容的位置。XR设备用户可以在经过公园玩游戏时与该虚拟内容进行交互。
在一些实施例中,可以通过指定表示将显示内容的位置的区域或体积,来将虚拟内容添加到规范地图。例如,这种体积可以通过中心点和半径、确认该体积周长的顶点集等来指定。包含在与这些体积相关联的数据结构或体积数据结构中的信息可以指定虚拟内容和其他参数,这些参数指定当体积位于设备用户的视场中时,是否以及如何在位于体积中或足够接近体积的用户设备上渲染虚拟内容。在一些实施例中,体积中的内容可以在用户设备上维护的棱镜中渲染。
棱镜是显示来自应用的虚拟内容的体积,例如立方体或矩形。单个应用可将内容渲染到多个棱镜中。棱镜在2018年12月18日提交,2019年6月27日公布的题为“METHODS ANDSYSTEM FOR MANAGING AND DISPLAYING VIRTUAL CONTENT IN A MIXED REALITY SYSTEM(在混合现实系统中管理和显示虚拟内容的方法和系统)”的共同拥有的美国专利申请公开No.2019/0197785中有更全面的描述,该申请的全部内容通过引用并入此文。每个棱镜可以具有允许管理棱镜的应用(可称为“棱镜管理器(Prism Manager)”)在混合现实环境中控制与一个或多个棱镜相关联的虚拟内容的显示的特性和属性。在一些实施例中,棱镜类似于2D显示环境中的“窗口”。在2D环境中,可以使用窗口定义位置和菜单结构以及2D内容的显示。同样,在XR系统的3D环境中,棱镜允许棱镜管理器包裹例如与内容位置、3D窗口行为和围绕3D内容显示的菜单结构的控制。例如,控制可以包括至少将虚拟内容放置在用户环境中的特定位置,从环境中移除虚拟内容,复制虚拟内容和/或将副本放置在不同的位置等。在3D环境中显示与棱镜相关联的内容的过程在2018年5月1日提交,并以美国专利申请公开号2018/0315248公布的题为“MATCHING CONTENT TO A SPATIAL 3D ENVIRONMENT(内容与空间3D环境的匹配)”的共同拥有的美国专利申请15/968,673中进行了描述,该申请的全部内容通过引用并入此文。
图64示出了XR设备用户在查看已经被指定虚拟内容的物理环境区域时可能感知到的内容。还示出了为管理和显示基于位置的共享内容而构建的系统部件。环境6400的代表性物理环境和系统包括用户6403使用XR设备6460观看的用户景观6410。请注意,尽管图64显示用户的XR设备6460是头戴式系统,但基于位置的共享内容的特征也可以在其他类型的XR设备上工作,诸如上面关于图61讨论的手持设备。用户景观6410是世界的3D视图,其中虚拟内容可以被合成在真实世界之上(例如,虚拟内容可能与真实世界的物理对象交互)。
环境6400的代表性系统可以包括棱镜管理器6430(下面讨论),其可以在可操作地耦合到网络(未示出)的处理器6470上执行。尽管处理器6470在图中被示为与XR设备6460分离的单独部件,但是处理器可以与XR设备6460的一个或多个部件集成。或者,处理器可以在用户穿戴之外的任何位置,从该位置,处理器与向用户渲染虚拟内容的部件进行通信。处理器6470可以配置有软件(例如,棱镜管理器6430),用于接收和处理信息,例如从头戴式系统6460、本地存储设备6437、一个或多个应用6440、计算网络和/或一个或多个外部存储设备6450接收的视频、音频和内容。
棱镜管理器应用6430可以是3D窗口管理器,其类似于在例如台式计算机上运行的用于管理在台式计算机的显示屏上显示的2D窗口的2D窗口管理器。然而,棱镜管理器应用6430管理虚拟内容115在3D空间环境中的创建、放置和显示,以及在用户的景观6410中显示的多个虚拟内容115之间的交互。来自应用6440的虚拟内容115是在一个或多个棱镜113内呈现给用户6403,出于说明目的,棱镜113在图64中以虚线勾勒出。棱镜可以具有在设备维护的坐标系中指定的位置,诸如相对于上述持久姿势和/或PCF。因此,在棱镜中渲染的虚拟内容具有相对于物理世界中的对象(诸如,墙壁117a或桌子117b)的指定的位置。
棱镜113可以是矩形、立方形、圆柱形,或者具有可在空间中定位和取向的任何其他形状。棱镜113可以是具有边界的体积显示空间,其中可以渲染虚拟内容。尽管图64示出了棱镜的边界,但是在一些实施例中,不显示边界。设备可以确定棱镜边界所依据的信息可以被保持在设备上,并且这些边界可以限制指定在棱镜中显示的虚拟内容的显示,使得与棱镜相关联的虚拟内容不会显示在棱镜边界之外。在一些实施例中,棱镜113可以被实现为多应用场景图的子树。场景图是由基于向量的图形、编辑应用和现代游戏软件共用的通用数据结构,它安排图形场景的逻辑且通常(但不一定)安排空间表示。
一个或多个应用6440被赋予棱镜113的实例以在其中放置内容。应用可以使用相对放置算法和变换在棱镜113内渲染2D/3D内容,但棱镜管理器仍最终负责总体交互模式,诸如内容提取。多个应用可以经由棱镜113渲染虚拟内容,其中进程边界将棱镜113分开。在所示实施例中,每个应用进程有多个棱镜113,但每个棱镜恰好对应一个应用进程。因此,例如,站在杂货店农产品过道中的用户会看到两个不同的棱镜,其中的内容由同一个文档显示应用显示,该应用在装有苹果的箱子上方显示有关苹果的营养信息,在装有橙子的箱子上方显示有关橙子的营养信息。但是,在该示例中,两个不同的应用无法在同一棱镜中显示内容。此外,在共享棱镜的情况下,多个用户会看到单个应用在单个共享棱镜中呈现内容。因此,例如在杂货店农产品过道中看苹果的两个不同用户会看到苹果上方的棱镜,其中文档查看应用显示营养信息。
图65示意性地示出了根据一些实施例的示例体积数据结构,该体积数据结构可以被下载到用户设备以促进设备渲染与棱镜内的该体积相关联的内容。与体积相关联的图形内容由应用在对应棱镜内呈现给XR设备用户。例如,图形内容可以包括文本、2D图像、3D图像或视频。
可以基于情景因素调整棱镜内的内容放置和取向,情景因素为诸如特定坐标系中用户相对于棱镜的位置、用户头部姿势(在用户使用可穿戴XR设备的情况下)、或用户使用的其他一些支持XR的设备(例如,手机)的姿势。替代地或附加地,内容的外观和位置可以由应用控制以创建运动的外观、虚拟对象与其他虚拟对象的交互或其他动态行为。用于基于这些因素调整内容的渲染的技术可以在以美国专利申请公开号2018/0315248公布的题为“MATCHING CONTENT TO A SPATIAL 3DENVIRONMENT(内容与空间3D环境的匹配)”的共同拥有的美国专利申请15/968,673中找到,该申请先前通过引用并入本文。此外,在棱镜中渲染内容的应用也可以生成声音。
棱镜可以具有清晰和明确的边界。限制体积以及关联虚拟内容的边界仅在棱镜的边界内显示。当用户看到在棱镜6513内显示的虚拟内容时,不会向用户显示棱镜的边界。
在一些实施例中,应用将要渲染的内容发送到在XR设备上运行的集中渲染软件,该软件又将应用内容放置在专门为该应用创建的棱镜中。这可以通过集中式场景图来实现,如在2018年3月29日提交,在2018年10月4日公布的题为“CENTRALIZED RENDERING(集中式渲染)”的共同拥有的美国专利申请No.2018/0286116中更全面地描述的,该专利申请的全部内容通过引用并入本文。对于带有链接应用的棱镜,链接应用(或其实例)内容将被放置在它所链接的棱镜中。应用可以使用相对放置算法和任意变换在棱镜中渲染2D/3D内容。
每个棱镜可以具有与其相关联的数据,这些数据定义棱镜、其自身或棱镜内的内容显示的属性。例如,每个棱镜可以有关联的键值特性集,可以调整特性集以指定行为方面或以其他方式传达有关给定棱镜为何存在的信息。在一些实施例中,棱镜的一些或全部特性可以从表示棱镜对应的体积的体积数据结构复制;例如,棱镜的特性可以包括从如上所述可被下载到XR设备的体积数据结构复制的显示特性6510和应用特定特性6520。与棱镜相关联的其他特性在共同拥有的申请美国专利申请公开No.2019/0197785中进行了讨论,该申请先前通过引用并入本文。
棱镜特性可以包括与以下项相关的选项:棱镜尺寸(最小/最大/默认尺寸、大小调整与重新缩放)、棱镜在环境中的放置(“广告牌选项”、“表面行为”)、以及“子”棱镜(由其他棱镜创建的棱镜)的行为(“子棱镜生成位置”、“子棱镜头部姿势高光”)。棱镜特性还包括与触发内容在棱镜中显示的条件相关的选项。例如,可以配置棱镜,使得当XR设备用户与棱镜相距一定距离时,棱镜显示有关内容可用的指示,但不显示内容本身,除非用户请求查看内容。这样的配置例如可以用在博物馆环境中,其中棱镜显示,解释特定绘画历史的文档可被放置在绘画旁边,但是被配置为仅在用户请求查看时才显示文档。有关各种示例性棱镜特性的其他细节可以在共同拥有的申请美国专利申请公开No.2019/0197785中找到,该申请先前通过引用并入本文。
体积数据结构可以具有棱镜的一些或全部特性。在一些实施例中,指定体积的特性和用于体积的虚拟内容的一个或多个体积数据结构可以基于设备位置被下载到设备6460。然后可以至少部分地基于上述体积数据结构中的数据,在设备上针对这些体积创建出现在环境6400中的对应棱镜。XR系统可以支持物理世界中的体积规范,在这些体积中将出现特定基于位置的虚拟内容。可以将有关体积和要在这些体积中渲染的内容的信息提供给在这些体积附近经过的设备。
在提供定位服务(其中如上所述设备相对于规范地图进行定位)的XR系统中,可以基于定位识别有关被指定基于位置的内容的体积的信息。该识别可以由定位服务或可以与定位服务通信的其他云服务做出。例如,在定位到规范地图的一部分时,定位服务可以向设备发送与该规范地图相关联的体积列表及其对应的体积数据结构。对于每个识别的体积,设备可以创建对应的棱镜,在其中显示为该体积指定的虚拟内容。此外,体积具有与其相关联(在其对应的体积数据结构中)的特性,这些特性可应用于棱镜以影响其显示或操作的特性。
以这种方式,每当设备利用规范地图进行定位时,它可以接收体积数据结构的列表。在一些实施例中,对于列表中的每个新体积数据结构,设备可以至少部分地基于数据结构中的数据创建新的对应棱镜。对于已经有对应棱镜的每个体积,设备可以更新棱镜,或者在与基于位置的内容相关联的体积的体积数据结构是静态的实施例中,对这些体积不采取任何动作。
相反,如果设备先前已针对未出现在列表中的体积数据结构创建了棱镜,则在一些实施例中,设备可以删除该棱镜以及专门为了渲染棱镜而存储的任何信息。例如,如果设备在其跟踪地图中创建了一个持久位置,该持久位置的格式被设置成持久姿势或另一格式的锚点,与用于指定体积位置的规范地图中的持久位置相对应,则也可以删除该持久位置。例如,可以通过在定义每个棱镜的数据结构中存储应用、持久姿势和作为创建该棱镜的一部分而保存在设备上的其他数据的指示来执行这样的删除操作。
图65提供了可以在诸如定位服务6106(图61)之类的服务上维护的体积数据结构的信息的图解说明。图65示出了地图的一部分6500,诸如上述规范地图。在一些实施例中,可以将地图划分为片段。例如,地图片段可能约为3立方米。然而,部分6500可以更大或更小,并且当地图被划分为片段时,可以是单个或多个片段。在一些实施例中,体积数据结构可以表示与规范地图或作为规范地图一部分的某个片段的大小和形状相同的体积。
在该示例中,地图片段为服务提供确定便携式电子设备在具有相关联的基于位置的虚拟内容的体积附近的基础。当设备被定位到规范地图的片段内的某个位置时,该片段内的所有体积的体积数据结构可以被视为接近设备并且被提供给便携式电子设备。因此,尽管图65示出了部分6500内的单个体积的体积数据结构,但是在一些场景中可以有多个这样的体积数据结构被提供给设备。
无论体积的数量如何,定位服务都可以在便携式设备成功地相对于包含部分6500的地图定位时向该设备发送体积数据结构的列表。在一些实施例中,可以过滤发送到设备的体积数据结构的列表,使得仅当用户在对应体积的某个阈值距离内时,给定体积数据结构才包含在列表中;这种技术在地图非常大的情况下可能是有利的。该体积数据结构的列表可以包括片段中所有体积或基于一个或多个标准选择的体积的子集的结构,上述标准可以基于设备的特性和/或设备的用户和/或体积数据结构。例如,某些体积数据结构具有指示它们将被提供给某些类别的设备或具有某些访问权限的用户的特性。
不管用于向特定便携式设备提供体积数据结构的数量和选择标准如何,每个体积数据结构都可以包括位置信息。在一些实施例中,该位置信息可用作替代或附加标准,以确定对应体积是否接近设备的当前位置。位置信息也可用于指定棱镜在设备上的位置,在该位置渲染与体积相关联的虚拟内容。在该示例中,每个体积的位置被定义为相对于该体积所附接到的地图中的持久位置的偏移。
因此,部分6500可以包括至少一个持久位置,诸如PCF 6502,该位置可以被位于其附近的收集有关物理世界的数据的设备识别。在该示例中,体积数据结构6513对应于与PCF6502相关联的体积。此关联可以被存储在与PCF、体积数据结构或地图片段相关联的数据结构中。替代地或附加地,关联可以以其他方式存储,例如被存储在体积数据结构的索引中。
在图65的示例中,可以相对于PCF 6502指定由体积数据结构6513表示的体积的位置。此关联可以作为体积的显示特性6510之一被存储在体积数据结构中。该示例中的关联被存储为PCF的标识符和体积相对于该PCF的偏移。
无论如何存储定义体积位置的信息,定位服务或与定位服务共享信息的其他基于位置的内容服务都可以在设备定位到规范地图中的位置时确定附近体积,并向设备提供表示这些体积的体积数据结构的列表以用于渲染相关联的虚拟内容。在本文描述的实施方式中,存储体积特性的体积数据结构可以通过发送该数据结构的副本来发送到便携式设备。
在图65的示例中,体积特性被示为显示特性6510,涉及渲染与体积相关联的信息。特性6520涉及生成要渲染的内容的应用。然而,应当理解,可以以多种方式中的任一种来存储特性,诸如在单个位置中、在多个位置中、在表示体积的数据结构中、或者在与该数据相关联的一个或多个其他数据结构中。
存储在体积数据结构中的某些特性可以与共享的基于位置的内容结合使用。一个这样的特性是标识符。如本文所述,在定位时,设备可以接收有关附近体积的信息。标识符使设备能够识别由定位之后提供的体积数据结构表示的任何体积是否为新体积,或者是否已经为所有体积建立了棱镜。同样,标识符使设备能够识别之前为其创建了棱镜但不再接近设备的体积。
另一这样的特性是内容URL(Content URL)特性。该特性的值可以是链接,诸如URL,或者使XR设备上的棱镜管理器能够识别和检索将要在棱镜中显示的内容的类似标识符。在指定位置可访问的虚拟内容可以是静态内容,使得通过直接从指定位置下载内容来获得内容。
替代地或附加地,将要在体积内渲染的虚拟内容可以由应用生成。在这种情况下,该链接指示可从中下载应用的位置。在一个示例性实施方式中,内容URL可以指向应用包(这里被称为“MPK”),该应用包可以被存储为文件,可以从作为应用商店操作的服务下载。提供可在便携式设备上执行的应用的应用商店在本文中被称为“ML世界(ML World)”。MPK文件可包含应用和应用旨在生成虚拟内容时使用的任何媒体(诸如,文档或视频文件)。因此,在一个实施例中,内容URL可以指向单个可下载包,其中包含将要显示的内容(诸如,视频文件、文档或图像)和设备需要运行以显示内容的应用。
可以在共享的基于位置的内容时使用的另一特性是PCF特性。PCF特性包含一个标识符,该标识符标识体积索引到的PCF。
当用户设备定位到规范地图时,它可以接收定位信息,该定位信息包括上述PCF列表以及PCF与其本地坐标系之间的变换。通过使用该信息,设备上的棱镜管理器可以确定棱镜的位置,以表示索引到这些PCF的体积。因此,表示发送到设备的体积的体积数据结构可以包括体积被索引到的PCF。一个相关的特性是偏移特性,它也可以是被发送到设备的体积数据结构的一部分。偏移是一种数据结构(诸如,坐标集),它使设备能够确定将表示体积的棱镜相对于PCF放置在虚拟空间中的什么位置。
“公共标志(Public Flag)”和其他访问控制属性可用于自定义体积数据结构的可访问性,并且可以被类似地存储在表示体积的体积数据结构中。例如,“公共标志”是真/假特性。在一些实施例中,可以基于体积特性、用户和/或用户设备过滤便携式设备附近的体积列表。例如,可以通过认证服务或与认证服务相关联地确定将向每个便携式设备提供哪些体积数据结构。可以使用密码、用户标识符、设备标识符、用户帐户、身份令牌和/或其他技术来确定与使用便携式设备的特定用户会话相关联的访问权限。可以将这些访问权限与体积数据结构的访问控制属性进行比较,并且基于该比较,可以仅向特定用户设备发送设备对其具有访问权限的这些体积数据结构。
作为具体示例,每当任何设备定位到地图时,服务便可以向设备发送“公共标志”被设置为“真”的任何体积数据结构。
应用特定特性6520可以是键值对列表,当应用生成将要在棱镜中渲染的内容时,键值对提供棱镜的应用特定状态信息。如果要基于随体积数据结构提供的数据设置状态,则可以将该状态包括在应用特定特性6520中。键值对列表可以特定于应用。
例如,如果应用是视频流应用,则一些键值对可以包括视频名称、从中获取视频流的视频URL、视频观看时间、用于显示视频的宽高比等。因此,在一些实施例中,将要显示的内容和显示该内容的应用可以被分别获得,而不是在由内容URL特性指向的单个MPK文件中提供。例如,体积数据结构可以具有指向ML世界上包含视频流应用的MPK文件的内容URL特性,体积数据结构还可以具有包含URL的应用特定特性,视频流应用可以从该URL获取要流式传输的视频。
图66示出了用于实现共享的内容的显示的示例性软件架构。
该架构包括在XR设备上运行的棱镜管理器6601。该架构还包括联结型世界模型6602,其部件可以分布在XR设备和云之间,如上文例如关于图5A和图6B所讨论的。在一些实施例中,例如,联结型世界可以实现为在云中实例化的联结型世界服务,诸如图63A中的元素6354所示的服务。有关联结型世界模型的更多细节在2014年3月11日提交,2014年10月16日公布的题为“SYSTEM AND METHOD FOR AUGMENTED AND VIRTUAL REALITY(用于增强和虚拟现实的系统和方法)”的共同拥有的美国专利申请公开No.2014/0306866中进行了描述,该申请的全部内容通过引用并入本文。
在该示例性架构中,当XR设备定位到上述具有指定位置特定内容的体积的规范地图时,棱镜管理器6601与联结型世界6602通信以从定位服务的云部分接收信息。作为定位过程的一部分,设备基于设备定位到的规范地图获得PCF集。在一些实施例中,该PCF集可以是与地图相关联(例如,在地图中)的所有PCF,或者它可以是地图中位于设备的某个距离内的PCF的某个子集。
设备还可以获得一组表示与这些PCF相关联的体积的体积数据结构。在该示例中,该体积数据结构集的格式被设置成来自定位服务的列表。体积数据结构列表可以限于那些已经被内容“管理者”“发布”到联结型世界的体积数据结构,如下文更详细讨论的,和/或以其他方式被授权由XR设备访问的体积数据结构。棱镜管理器在定位时获得的体积数据结构列表会受到上述“公共标志”的值的影响。
在一些实施例中,有关附近体积的信息可以是上述表示体积的体积数据结构集。或者,有关附近体积的信息的格式可被设置成体积标识符集。在这样的实施例中,当棱镜管理器6601确定要为体积建立棱镜时,它可以获得该体积的关联体积数据结构,注如通过从联结型世界6602请求关联体积数据结构,从另一服务获得关联体积数据结构,或从另一云资源获得关联体积数据结构。
无论该体积集如何被识别,棱镜管理器6601会将该列表与其形成为表示先前遇到的体积的活动棱镜进行比较以确定哪些体积需要动作。对于该体积集中的新体积,棱镜管理器6601可以建立关联的棱镜。
另外,棱镜管理器6601可以确定是否需要动作来执行被指定为体积内容源的应用。例如,棱镜管理器可以使用体积的显示特性(诸如,内容URL)来确定将生成该棱镜中显示的内容的MagicScript App。如果该应用未被加载到设备上,则棱镜管理器6601可以获得识别的MagicScript App。
在图66的示例性架构中,棱镜管理器6601从ML世界6603获得应用。该架构还包括ML世界6603,其如上所述用作应用商店,可以通过或不通过支付交易从该应用商店下载在XR设备上运行的应用。此类应用可以用编程语言(诸如如,脚本语言)编写,该语言具有便于创建XR应用(诸如,MagicScript)的特殊功能。这些MagicScript应用(或图66中的MagicScript App元素6605)可以被包含在上述MPK文件中。当启动时,MagicScript App可以由用于执行脚本的运行时框架执行,诸如MagicScript Framework 6604(MagicScript框架)的运行时框架。
在该示例中,并且在一些实施例中,设备运行MagicScript Framework 6604。MagicScript Framework 6604的功能类似于操作系统或虚拟机以执行应用软件。在该示例中,MagicScript Framework 6604被配置为执行MagicScript App,这些应用可以使用由MagicScript Framework6604识别的语言和其他结构编写。因此,棱镜管理器6601可以启动从ML世界6603下载的MagicScript App以在MagicScript Framework 6604上执行。然后,MagicScript App根据其编程在棱镜中显示内容。
应当理解,渲染基于位置的虚拟内容的便携式电子设备可以配置有MagicScriptFramework 6604之外的框架。在这些实施例中,下载的生成内容的app可以与该框架兼容。在其他实施例中,与设备上的框架不兼容的app可以在包装器或模拟与设备兼容的框架的其他部件内执行。下面结合图67提供这种部件的示例。
在图66的示例中,棱镜管理器6601已启动并正在执行三个MagicScript App:MagicScript App 6605a、MagicScript App 6605b和MagicScript App 6605c。这样的场景对应于设备处于有三个体积的地图的区域内的示例性操作状态,这三个体积具有相关联的体积数据结构,这些体积数据结构具有使设备能够访问这些体积数据结构的访问特性。然而,可以同时执行任何合适数量的应用。在所示实施例中,棱镜管理器6601可以控制与棱镜的交互以及棱镜之间的交互,其方式与控制为了基于位置的内容创建的棱镜之外的棱镜的方式相同。
在执行中,app可以对用户输入或其他外部刺激做出响应,或者执行除了简单地提供虚拟内容之外的计算或功能。因此,基于位置的虚拟内容是高度动态的,响应于用户动作、app编程、提供给与app交互的服务器的输入或其他标准而变化。然而,内容不一定通过执行app来生成。如上所述,为体积指定的内容可以是静态内容。在这样的实施例中,棱镜管理器6601可以启动输出要渲染的虚拟内容的默认应用,或者可以控制静态内容本身的渲染的默认应用,或者可以以其他方式导致静态内容被渲染的默认应用。
尽管图66中讨论的示例性架构包括ML世界6603,但是棱镜管理器6601不必从ML世界下载应用来显示内容。相反,在一些实施例中,棱镜管理器6601可以确定必要的应用已经安装在设备上,并且在确认的情况下运行安装的应用。在一个示例性实施方式中,例如,可以实现棱镜管理器6601,使得如果棱镜管理器6601读取体积数据结构内容URL特性并确定它指向MPK文件,则棱镜管理器6601可以确定MPK文件包含的应用(例如,通过读取嵌入在URL中的应用标识符和版本号)并检查应用是否已安装在XR设备上。如果是,则棱镜管理器6601不需要从ML世界下载MPK文件,而是可以简单地从本地存储器加载应用并启动它。例如,如果特定的内容URL指向用于播放视频的MagicScript App,并且该应用已经存在于设备上,则棱镜管理器6601可直接启动该应用,而无需下载。以这种方式使用以前安装的应用可以通过消除需要从ML世界下载应用时可能发生的潜在延迟,从而改善性能和用户体验。
下面参考图67描述可以与上述使XR设备能够显示共享的基于位置的内容的架构一起使用的示例性消息流。首先,棱镜管理器6601将“Localize(定位)”消息6701发送到联结型世界6602以初始化定位进程。该消息可以如上面结合图63所描述的那样。
联结型世界6602通过定位地图中的PCF列表等,以及与这些PCF相关联的体积的体积数据结构做出响应(6702)。棱镜管理器6601检查体积数据结构中的数据并确定将用于在每个体积的棱镜中显示内容的应用(例如,通过检查每个体积数据结构中的内容URL特性)。如果棱镜管理器6601需要下载应用,诸如由于当前未安装应用,棱镜管理器6601将发送一条或多条消息(6703)作为认证过程的一部分,以向ML世界6603认证设备并请求(6704)包含应用的必要MPK文件。ML世界6603将MPK文件发送(6705)回棱镜管理器6601,棱镜管理器6601在XR设备上安装(6706)应用。棱镜管理器6601然后启动(6708)生成要在MagicScriptFramework 6604上执行的内容的应用。
为了增强系统资源的有效使用,棱镜管理器6601可以响应于XR设备移动到新位置而自动关闭应用并酌情删除棱镜。例如,XR设备用户,可能正在进出购物中心的商店。当用户进入商店时,XR设备上的棱镜管理器6601可以定位到对应于该商店的地图。该地图又包含对应于商店中不同展示架的PCF,并且PCF具有与文档相关联的体积,该文档基于由关联的MagicScript App发送的虚拟内容显示每个展示架上的商品定价信息。如果用户稍后退出商店,将不再渲染商店中的棱镜,因为用户不再在该商店中。因此,棱镜管理器6601可以移除与商店对应的任何棱镜,并关闭在这些棱镜中显示内容的应用。
未使用的棱镜的去除和其他清理通过动作6709和6710反映在图67中的流程中。在动作6709处,棱镜管理器确定XR设备已经定位到不同于先前区域的新区域(例如,用户已经离开商店并定位到表示购物中心走廊的新地图)。棱镜管理器通过移除对应于商店的棱镜并关闭在这些棱镜中显示内容的应用来执行“清理”(动作6709)。应当理解,图67所示的流程可以针对XR设备定位到的每个新区域不断重复;因此,当用户离开商店时,一旦棱镜管理器定位到商店外的区域,由元素6701-6708表示的动作便可适当地重复。
如上面关于图61所讨论的,渲染基于位置的内容的XR设备可以是专门为XR应用设计的设备,诸如可穿戴设备。或者,该设备可以是更通用的设备,诸如蜂窝电话、平板计算机、个人数字助理(PDA)、膝上型计算机、或能够运行软件并向用户显示内容的任何其他合适的设备,例如图61所示的手机6104。用于在这种通用XR设备上实现本发明的替代软件架构在下面关于图68进行了描述。为了说明的目的,下面对替代架构的讨论涉及诸如蜂窝电话之类的通用设备,诸如运行iOS或Android操作系统的智能手机,但普通技术人员将理解,这种替代架构可用于能够提供XR体验,但不是专门为XR用途设计的其他类型设备。
在该替代架构中,类似于由图66的“棱镜管理器”部件提供的功能可以由设备的Native AR Framework(本地AR框架)6810执行。然而,本地AR框架6810可能无法执行MagicScript App。相反,AppMagicVerse Brower App(MagicVerse浏览器App)6801可以被编码为在设备上执行,另外也执行MagicScript App。在执行此操作时,MagicVerse BrowerApp 6801可以处理在具有MagicScript Framework 6604的设备上操作时MagicScript App与MagicScript Framework 6604的任何交互(。但是,它将这些交互转换为与Native ARFramework 6810的交互。这样,通过在MagicVerse Brower App 6801中执行,MagicScriptApp可以在任何类型的设备上执行,诸如执行iOS或Android操作系统的设备。
Magicverse Browser App使基于位置的内容能够在诸如蜂窝电话之类的设备上呈现,该设备具有XR功能但未配备MagicScript Framework 6604,因此不能直接渲染结合体积指定的MagicScript App。MagicVerse Brower App可以在诸如MagicScriptFramework框架之类的框架中编写,该框架是允许MagicScript App在多个平台上运行的框架。这样的配置支持跨平台操作,例如MagicScript App可以在运行iOS或Android操作系统的设备上执行。
在该示例中,MagicVerse Brower App 6801执行与服务或交叉现实环境的其他部分接口的部件。例如,Magic Leap Augmented Reality Framework(MLXR)SoftwareDevelopment Kit(SDK)(奇跃增强现实框架(MLXR)软件开发Kit(SDK))模块(元素6802)与联结型世界(元素6602)通信以将设备定位到例如上述共享地图。作为此过程的一部分,设备接收属于共享地图的PCF列表,并且还接收包含有关与这些PCF相关联的体积的信息的体积数据结构。PCF可以被转换为设备的本地增强现实框架格式。例如,与基于位置的内容的显示相关的PCF可以被转换为设备本地坐标系中的锚点。作为执行MagicScript部件的一部分,MagicVerse Brower App 6801可以将对相对于PCF表达的位置的引用转换为相对于这些锚点的位置,以便设备的本地增强现实框架可用于渲染由MagicScript部件生成的基于位置的内容。
如上所述,通过使用体积数据结构中的指示符(例如,内容URL),可以从ML世界6603中检索(如果需要)MPK文件的应用。例如,可以通过MagicVerse Brower App 6801检索部件。为了向用户显示内容,MagicScript件模块创建MagicScript部件视图(元素6804a和6804b),这些视图对应于显示与每个体积相对应的每个棱镜的内容的应用。
相反,来自设备的本地框架的输入可以被转换为可以被MagicScript部件使用的格式。为了实现这一点,Magic-Script-Components-React-Native(Magic-脚本-部件-反应-本地)模块6805可以在MagicVerse Browser App中执行。Magic-Script-Components-React-Native模块6805用作Brower App和特定于平台的增强现实框架之间的接口,例如iOS的ARKit或Android的ARCore。例如,对于iOS设备,Magic-Script-Components-React-Native模块将执行一些功能,诸如将用户与虚拟内容的交互转换为MagicScript部件被配置为处理的格式。
MagicVerse Brower App 6801的功能类似于传统计算机上的浏览器。然而,MagicVerse Brower App 6801不是基于用户点击链接来打开和关闭窗口,而是在用户穿过物理环境并移动到被指定体积的位置附近时打开和关闭棱镜。然后,系统可以基于用户在3D环境中的移动自动渲染或删除内容。
虽然许多用户观看上述共享的基于位置的内容,但一些用户可以创建基于位置的内容以供其他用户观看。后面这些用户可以被称为内容的“管理者”。在示例性实施例中,管理者通过创建相对于与该位置对应的PCF定位的体积,使用适当的体积数据结构特性将期望的应用和内容与该体积进行关联,然后将“公共标志”设置为“真”,来允许其他人在指定位置看到共享内容。然后可以将体积数据结构“发布”到联结型世界,例如通过将其与联结型世界用于定位的规范地图相关联地存储。
例如,作为餐厅老板的管理者可能希望在XR设备用户接近餐厅的桌子时能够看到菜单。在图69的示例中,餐厅中有一个PCF 6901,它可以用来指定显示内容的体积的位置。餐厅老板可以通过将表示体积的体积数据结构中的“PCF”特性设置为PCF 6901的标识符并将“PCF偏移”特性设置为适当的值来指定餐桌上方体积位置,创建位于餐桌上空中的体积6902。
然后餐厅老板可以设置体积数据结构的内容URL特性以指向包含文档查看器MagicScript App和包含菜单的文档的MPK文件。或者,内容URL可以指向仅包含查看器应用的MPK文件,而体积数据结构的应用特定特性可以单独标识构成将要显示的菜单的数据。餐厅老板然后可以发布此体积数据结构并将“公共标志”设置为“真”。
当正在使用XR设备的顾客或潜在顾客进入餐厅时,她的XR设备将定位到对应于餐厅或餐厅内相关区域的适当地图,并从联结型世界获取包含PCF 6901的PCF列表,并且还从联结型世界获得与这些PCF相关联的体积的体积数据结构列表,包括高出桌子表面一英尺的体积的已发布体积数据结构。顾客的XR设备随后将启动文档查看器应用(在下载后,如有必要)并渲染菜单6903,如图69所示,只要用户的视场包含桌子上方的体积。
内容管理者还可以选择改变在棱镜中显示的内容。例如,在餐厅老板希望更改显示在餐桌上的菜单的时点,例如以显示午餐菜单而不是早餐菜单。为此,餐厅老板可以编辑她之前创建的体积数据结构的特性,以指向包含午餐菜单而不是早餐菜单的不同文档。可以赋予已编辑的体积数据结构一个新的标识符,使得当设备下一次定位时,它将接收具有新标识符的体积数据结构的指示。由于附近体积数据结构的当前列表不包括先前的体积标识符,因此设备将确定先前的体积数据结构不再适用并删除为该体积建立的棱镜和任何关联数据。此后,接近餐桌的用户将基于新获得的餐桌上方体积的体积数据结构,看到午餐菜单而不是早餐菜单。
系统还可以使XR设备用户能够在他们仍在棱镜附近时看到表示体积的棱镜中内容的变化。例如,在餐厅用例中,如果菜单上的某一项因为已售罄而不再可用,则餐厅老板可以调整菜单以删除该项。替代地或附加地,在任何棱镜中渲染的内容可以由app提供。该app可以执行以便维护为了在与基于位置的内容的体积相关联的棱镜内渲染而生成的内容。例如,app可以下载菜单项并提供这些菜单项以渲染为虚拟内容。通过这种方式,app会随着下载的菜单信息的变化或响应于其他事件而动态地更改渲染的内容。
所描述的配置允许多个用户中的任一个在物理世界中的相同位置看到相同的虚拟内容。替代地或附加地,由于内容可以由在每个用户的设备上执行的app提供,因此,该app可以被配置为自定义用于设备用户的虚拟内容,从而为多个用户中的每个用户渲染不同的基于位置的内容。
尽管图69示出了单个体积,但应当理解,在餐厅内,可以有多张桌子并因此有多个体积。可以设置与这些体积相关联的体积数据结构的特性,以便为餐厅内的所有XR设备用户渲染菜单。
进一步的考虑
图60示出了根据一些实施例的计算机系统1900的示例性形式的机器的图解表示,其中可以执行指令集,用于使机器执行本文讨论的方法中的任何一种或多种。在替代实施例中,机器作为独立设备操作或可以被连接(例如,联网)到其他机器。此外,虽然仅示出了单个机器,但术语“机器”也应被理解为包括单独或联合执行一个或多个指令集以执行本文讨论的方法中度任何一种或多种的机器的任何集合。
示例性计算机系统1900包括经由总线1908相互通信的处理器1902(例如,中央处理单元(CPU)和/或图形处理单元(GPU))、主存储器1904(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM),诸如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等),以及静态存储器1906(例如,闪存、静态随机存取存储器(SRAM)等)。
计算机系统1900还可以包括磁盘驱动单元1916和网络接口设备1920。
磁盘驱动器单元1916包括机器可读介质1922,其上存储有体现本文描述的方法或功能中的任何一种或多种的一个或多个指令(例如,软件)集1924。该软件还可以在由计算机系统1900执行期间完全或至少部分地驻留在主存储器1904内和/或处理器1902内,主存储器1904和处理器1902也构成机器可读介质。
该软件还可以经由网络接口设备1920在网络18上发送或接收。
计算机系统1900包括用于驱动投影仪生成光的驱动芯片1950。驱动芯片1950包括它自己的数据存储器1960和它自己的处理器1962。
尽管机器可读介质1922在示例性实施例中示出为单个介质,但术语“机器可读介质”应当被理解为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的缓存和服务器)。术语“机器可读介质”还应被理解为包括能够存储、编码或携带指令集以供机器执行并且使机器执行本发明的方法中任何一种或多种的任何介质。因此,术语“机器可读介质”应包括但不限于固态存储器、光和磁介质以及载波信号。
已经如此描述了一些实施例的几个方面,应当理解,本领域技术人员将容易地理解各种改变、修改和改进。
作为一个示例,结合增强(AR)环境来描述实施例。应当理解,本文描述的技术中的一些或全部可以应用于MR环境或更一般地应用于其他XR环境以及VR环境。
作为另一示例,结合诸如可穿戴设备之类的设备来描述实施例。应当理解,本文描述的一些或所有技术可以经由网络(诸如,云)、离散应用和/或设备、网络和离散应用的任何合适组合来实现。
此外,图29提供了可用于过滤候选地图以产生高排名地图集的标准的示例。可以使用其他标准来代替或补充所描述的标准。例如,如果多个候选地图具有用于过滤掉不太合意的地图的相似的度量值,则候选地图的特性可用于确定哪些地图被保留为候选地图或哪些地图被过滤掉。例如,更大或更密集的候选地图的优先级高于更小的候选地图。
这样的改变、修改和改进旨在成为本公开的一部分,并且旨在落入本公开的精神和范围内。此外,虽然指出了本公开的优点,但应当理解,并非本公开的每个实施例都包括每个描述的优点。一些实施例可能不实施在本文中和在一些情况下描述为有利的任何特征。因此,前述描述和附图仅作为示例。
本公开的上述实施例可以多种方式中的任一种实现。例如,可使用硬件、软件或其组合来实现实施例。当以软件实现时,软件代码可以在任何合适的处理器或处理器集合上执行,无论这些处理器或处理器集合是在单个计算机中提供还是分布在多个计算机中。这些处理器可被实现为集成电路,其中在集成电路部件中具有一个或多个处理器,包括本领域已知的市售集成电路部件,诸如CPU芯片、GPU芯片、微处理器、微控制器或协处理器。在一些实施例中,处理器可以在定制电路中实现,例如ASIC,或通过配置可编程逻辑器件产生的半定制电路。作为又一替代,处理器可以是较大电路或半导体器件的一部分,无论是市售的、半定制的还是定制的。作为具体示例,一些市售微处理器具有多个内核,使得这些内核之一或其子集可以构成处理器。但是,可以使用任何合适格式的电路来实现处理器。
此外,应当理解,计算机可以以多种形式中的任何一种来体现,诸如机架安装式计算机、桌面计算机、膝上型计算机或平板计算机。此外,计算机被可以嵌入在通常不被视为计算机但具有适当处理能力的设备中,其中包括个人数字助理(PDA)、智能电话或任何其他适当的便携式或固定电子设备。
此外,计算机可能具有一个或多个输入和输出设备。除其他外,这些设备可用于呈现用户界面。可用于提供用户界面的输出设备的示例包括用于输出的视觉呈现的打印机或显示屏和用于输出的可听呈现的扬声器或其他声音生成设备。可用于用户界面的输入设备的示例包括键盘和点指设备,诸如鼠标、触摸板和数字化平板电脑。作为另一示例,计算机可通过语音识别或其他可听格式接收输入信息。在所示实施例中,输入/输出设备被示出为与计算设备物理分离。然而,在一些实施例中,输入和/或输出设备可以与计算设备的处理器或其他元件物理地集成到同一单元中。例如,键盘可能被实现为触摸屏上的软键盘。在一些实施例中,输入/输出设备可以与计算设备完全断开,并且通过无线连接在功能上集成。
此类计算机可通过一个或多个网络以任何合适的形式互连,包括局域网或广域网,诸如企业网络或互联网。这些网络可以基于任何合适的技术并且可以根据任何合适的协议操作并且可包括无线网络、有线网络或光纤网络。
此外,本文概述的各种方法或过程可被编码为可在一个或多个处理器上执行的软件,这些处理器采用多种操作系统或平台中的任一者。此外,此类软件可以使用多种合适的编程语言和/或编程或脚本工具中的任何一种来编写,并且还可以编译为在框架或虚拟机上执行的可执行机器语言代码或中间代码。
在这方面,本公开可以体现为计算机可读存储介质(或多个计算机可读介质)(例如,计算机存储器、一个或多个软盘、压缩盘(CD)、光盘、数字视频盘(DVD)、磁带、闪存、现场可编程门阵列或其他半导体设备中的电路配置,或其他有形计算机存储介质)用一个或多个程序编码,当在一个或多个计算机或其他处理器上执行时,这些程序执行实现上述公开的各种实施例的方法。从上述示例中显而易见的是,计算机可读存储介质可以将信息保留足够长的时间以提供非暂时性形式的计算机可执行指令。这样的计算机可读存储介质或媒介可以是可运输的,使得存储在其上的一个或多个程序可以被加载到一个或多个不同的计算机或其他处理器上以实现如上所述的本公开的各个方面。如本文所用,术语“计算机可读存储介质”仅涵盖可被视为制造品(即,制品)或机器的计算机可读介质。在一些实施例中,本公开可以体现为不同于计算机可读存储介质的计算机可读介质,例如传播信号。
术语“程序”或“软件”在本文中以一般意义使用,指示任何类型的计算机代码或计算机可执行指令集,它们可用于对计算机或其他处理器进行编程以实现上述本公开的各个方面。此外,应当理解,根据该实施例的一个方面,当执行本公开的方法时,一个或多个计算机程序不需要驻留在单个计算机或处理器上,而是可以以模块化方式分布在多个不同的计算机或处理器上来实现本公开的各个方面。
计算机可执行指令可以是多种形式,诸如程序模块,由一个或多个计算机或其他设备执行。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、部件、数据结构等。通常,程序模块的功能可以根据需要在各种实施例中进行组合或分布。
此外,数据结构可以以任何合适的形式存储在计算机可读介质中。为简单起见,可以将数据结构显示为具有通过数据结构中的位置相关的字段。这种关系同样可通过为字段分配存储来实现,该存储具有在计算机可读介质中传达字段之间的关系的位置。然而,可以使用任何合适的机制来在数据结构的字段中的信息之间建立关系,包括通过使用指针、标签或在数据元素之间建立关系的其他机制。
本公开的各个方面可以单独使用、组合使用或以在上文描述的实施例中未具体讨论的各种布置使用,因此其应用不限于在上面的描述中阐述或在附图中示出的部件的细节和布置。例如,一个实施例中描述的方面可以以任何方式与其他实施例中描述的方面组合。
此外,本公开可以被体现为一种方法,已经提供了该方法的示例。作为该方法的一部分执行的动作可以以任何合适的方式进行排序。因此,实施例可以被构造为以不同于所示出的顺序执行动作,这可以包括同时执行一些动作,即使这些动作在说明性实施例中被示为顺序动作。
在权利要求中使用诸如“第一”、“第二”、“第三”等顺序术语来修改权利要求要素本身并不意味着一个权利要求要素相对于另一权利要求要素的任何优先级、优先权或顺序,也不意味着执行方法中的动作的时间顺序,而是仅用作标签以将具有特定名称的一个权利要求要素与具有相同名称的另一要素(倘若不使用顺序术语)区分开来以区分权利要求要素。
此外,此处使用的措辞和术语是为了描述的目的,不应被视为限制。“包括”、“包含”或“具有”、“含有”、“涉及”及其变体在本文中的使用意在涵盖其后列出的项目及其等同物以及附加项目。
Claims (28)
1.一种分布式计算环境内的网络资源,用于向能够在3D环境中渲染虚拟内容的多个便携式电子设备提供共享的基于位置的内容,所述网络资源包括:
一个或多个处理器:
至少一个计算机可读介质,包括:
所述3D环境的多个存储地图;
多个数据结构,所述多个数据结构中的每个数据结构表示在所述3D环境中的将要在其中显示虚拟内容的相应区域,其中,所述多个数据结构中的每个数据结构包括:
将所述数据结构与所述多个存储地图中的位置相关联的信息;以及
到用于在所述3D环境中的所述相应区域中进行渲染的虚拟内容的链接;以及
计算机可执行指令,其在由所述一个或多个处理器中的处理器执行时:
实现向所述多个便携式电子设备中的便携式电子设备提供定位信息的服务,其中,所述定位信息指示所述多个便携式电子设备相对于一个或多个共享地图的位置;以及
基于所述便携式电子设备相对于由所述多个数据结构表示的各区域的位置,选择性地向所述多个便携式电子设备中的所述便携式电子设备提供所述多个数据结构中的至少一个数据结构的副本。
2.根据权利要求1所述的网络资源,其中:
所述计算机可执行指令在由所述处理器执行时进一步实现确定所述便携式电子设备的访问权的认证服务;以及
选择性地向所述便携式电子设备提供所述至少一个数据结构的所述计算机可执行指令部分地基于所述便携式电子设备的所述访问权和与所述至少一个数据结构相关联的访问属性,确定是否发送所述至少一个数据结构。
3.根据权利要求1所述的网络资源,其中:
所述多个数据结构中的每个数据结构还包括公共属性;以及
选择性地向所述便携式电子设备提供所述至少一个数据结构的计算机可执行指令部分地基于所述至少一个数据结构的所述公共属性,确定是否发送所述至少一个数据结构。
4.根据权利要求1所述的网络资源,其中:
对于所述多个数据结构的一部分,到所述虚拟内容的所述链接包括到提供虚拟内容的应用的链接。
5.根据权利要求1所述的网络资源,其中:
所述多个数据结构中的每个数据结构还包括在所述便携式电子设备上的棱镜的显示特性,其中,所述棱镜是在其中显示被链接到所述数据结构的所述虚拟内容的体积。
6.根据权利要求5所述的网络资源,其中:
所述显示特性包括所述棱镜的尺寸。
7.根据权利要求5所述的网络资源,其中:
所述显示特性包括在所述棱镜内渲染的虚拟内容相对于物理表面的行为。
8.根据权利要求5所述的网络资源,其中:
所述显示特性包括以下中的一项或多项:所述棱镜相对于与地图相关联的持久位置的偏移,所述棱镜的空间取向,在所述棱镜内渲染的虚拟内容相对于所述便携式电子设备的所述位置的行为,以及在所述棱镜内渲染的虚拟内容相对于所述便携式电子设备所面对的方向的行为。
9.一种操作便携式电子设备以在3D环境中渲染虚拟内容的方法,所述方法包括使用一个或多个处理器:
基于在所述便携式电子设备上的一个或多个传感器的输出,在所述便携式电子设备上生成本地坐标系;
基于所述一个或多个传感器的所述输出和所述本地坐标系中的位置的指示,在所述便携式电子设备上生成指示所述3D环境中的位置的信息;
通过网络向定位服务发送指示所述位置的信息和所述本地坐标系中的所述位置的指示;
从所述定位服务获取有关所述3D环境的已存储空间信息的坐标系与所述本地坐标系之间的变换;
从所述定位服务获取一个或多个数据结构,每个数据结构表示所述3D环境中的相应区域和用于在所述相应区域中显示的虚拟内容;以及
在所述一个或多个数据结构的所述相应区域中渲染在所述一个或多个数据结构中表示的虚拟内容。
10.根据权利要求9所述的方法,其中:
在所述相应区域中渲染虚拟内容包括:基于表示所述相应区域的所述数据结构,创建具有参数集的棱镜。
11.根据权利要求9所述的方法,其中,所述虚拟内容在所述一个或多个数据结构中的至少一个数据结构中被表示为虚拟内容在网络上的位置的指示符。
12.根据权利要求9所述的方法,其中:
渲染所述虚拟内容包括:在所述便携式电子设备上执行生成所述虚拟内容的应用。
13.根据权利要求12所述的方法,其中,渲染所述虚拟内容还包括:
确定所述应用当前是否被安装在所述便携式电子设备上;以及
基于确定所述应用当前未被安装,将所述应用下载到所述便携式电子设备。
14.根据权利要求9所述的方法,还包括:
检测所述便携式电子设备已经离开由所述一个或多个数据结构中的数据结构表示的区域;以及
基于所述检测,删除在所述数据结构中表示的虚拟内容。
15.根据权利要求9所述的方法,其中:
所接收到的一个或多个数据结构包括第一组数据结构;
所述第一组数据结构在第一时间被接收;
所述方法还包括:
存储与所述第一组数据结构中的第一数据结构相关联的渲染信息;
在所述第一时间之后的第二时间接收第二组数据结构;
基于确定所述第一数据结构未被包含在所述第二组中,删除与所述第一数据结构相关联的所述渲染信息。
16.一种被配置为在交叉现实系统内操作的电子设备,所述电子设备包括:
一个或多个传感器,其被配置为捕获有关三维(3D)环境的信息,所捕获的信息包括多个图像;
至少一个处理器;
存储计算机可执行指令的至少一个计算机可读介质,所述计算机可执行指令当在所述至少一个处理器中的处理器上执行时:
基于所述多个图像的至少第一部分,维持用于表示所述3D环境中的位置的本地坐标系;
管理与一个或多个应用相关联的棱镜,以使得在所述棱镜内渲染由所述一个或多个应用中的应用生成的虚拟内容;
通过网络向服务发送从所述一个或多个传感器的输出中导出的信息;
从所述服务接收:
定位信息;以及
表示相应虚拟内容和用于渲染所述虚拟内容的所述3D环境中的区域的数据结构;以及
创建与所述数据结构相关联的棱镜,以使得在所述棱镜内渲染所述相应虚拟内容。
17.根据权利要求16所述的电子设备,其中,所述计算机可执行指令还包括用于执行以下操作的计算机可执行指令:
基于所述数据结构中的信息,获取所述相应虚拟内容;以及
在所述棱镜内渲染所获取的虚拟内容。
18.根据权利要求17所述的电子设备,其中,基于所述数据结构中的信息,获取所述相应虚拟内容包括:基于所述数据结构中的虚拟内容位置的指示符,通过网络访问所述相应虚拟内容。
19.根据权利要求18所述的电子设备,其中,基于所述数据结构中的信息,获取所述相应虚拟内容包括:基于所述数据结构中的所述虚拟内容位置的所述指示符,通过网络下载生成所述相应虚拟内容的应用。
20.根据权利要求16所述的电子设备,其中,所述计算机可执行指令还包括用于执行以下操作的指令:
检测所述电子设备已经离开由所述数据结构表示的区域;以及
基于所述检测,删除与所述数据结构相关联的所述棱镜。
21.根据权利要求17所述的电子设备,其中,在所述棱镜内渲染所获取的虚拟内容还包括:使用所述电子设备的坐标系来确定所述3D环境中的渲染所述虚拟内容的一组坐标。
22.一种为交叉现实系统策划基于位置的虚拟内容的方法,所述交叉现实系统能够用能够在3D环境中渲染虚拟内容的多个便携式电子设备操作,所述方法包括使用一个或多个处理器:
生成表示所述3D环境中的将要在其中显示虚拟内容的区域的数据结构;
在所述数据结构中存储指示将要在所述3D环境中的所述区域中渲染的虚拟内容的信息;以及
将所述数据结构与用于将所述多个便携式电子设备定位到共享坐标系的地图中的位置相关联。
23.根据权利要求22所述的方法,还包括:
设置对所述数据结构的访问权。
24.根据权利要求23所述的方法,其中,设置对所述数据结构的访问权包括:指示所述数据结构能够由所述多个便携式电子设备的一个或多个特定类别用户访问。
25.根据权利要求22所述的方法,其中,在所述数据结构中存储指示将要在所述3D环境中的所述区域中渲染的虚拟内容的信息包括:指定在便携式电子设备上能够执行以生成所述虚拟内容的应用。
26.根据权利要求22所述的方法,还包括:
与使用所述地图定位所述多个便携式电子设备的定位服务相关地存储所述数据结构。
27.根据权利要求22所述的方法,还包括:
通过用户接口接收对所述3D环境的所述区域和所述虚拟内容的指定。
28.根据权利要求22所述的方法,还包括:
通过编程接口从应用接收对所述3D环境的所述区域和所述虚拟内容的指定。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962934485P | 2019-11-12 | 2019-11-12 | |
US62/934,485 | 2019-11-12 | ||
PCT/US2020/059975 WO2021096931A1 (en) | 2019-11-12 | 2020-11-11 | Cross reality system with localization service and shared location-based content |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114730546A true CN114730546A (zh) | 2022-07-08 |
Family
ID=75846970
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080078518.0A Pending CN114730546A (zh) | 2019-11-12 | 2020-11-11 | 具有定位服务和基于位置的共享内容的交叉现实系统 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11386627B2 (zh) |
EP (1) | EP4059007A4 (zh) |
JP (1) | JP2023504775A (zh) |
CN (1) | CN114730546A (zh) |
WO (1) | WO2021096931A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112805750A (zh) | 2018-08-13 | 2021-05-14 | 奇跃公司 | 跨现实系统 |
US11227435B2 (en) | 2018-08-13 | 2022-01-18 | Magic Leap, Inc. | Cross reality system |
CN113196209A (zh) | 2018-10-05 | 2021-07-30 | 奇跃公司 | 在任何位置渲染位置特定的虚拟内容 |
US11410328B1 (en) * | 2019-04-30 | 2022-08-09 | Apple Inc. | Techniques for maintaining feature point maps |
US11748445B1 (en) | 2019-04-30 | 2023-09-05 | Apple Inc. | Techniques for managing feature maps |
US11257294B2 (en) | 2019-10-15 | 2022-02-22 | Magic Leap, Inc. | Cross reality system supporting multiple device types |
US11632679B2 (en) | 2019-10-15 | 2023-04-18 | Magic Leap, Inc. | Cross reality system with wireless fingerprints |
CN114600064A (zh) | 2019-10-15 | 2022-06-07 | 奇跃公司 | 具有定位服务的交叉现实系统 |
EP4059007A4 (en) | 2019-11-12 | 2023-11-01 | Magic Leap, Inc. | CROSS-REALLY SYSTEM WITH LOCATION SERVICE AND SHARED LOCATION-BASED CONTENT |
US11562542B2 (en) * | 2019-12-09 | 2023-01-24 | Magic Leap, Inc. | Cross reality system with simplified programming of virtual content |
KR20210098130A (ko) * | 2020-01-31 | 2021-08-10 | 한국전자통신연구원 | 현실 객체와의 상호 작용을 이용한 다중 사용자 참여 기반의 증강현실 제공 방법 및 이를 위한 장치 |
US20210248826A1 (en) * | 2020-02-07 | 2021-08-12 | Krikey, Inc. | Surface distinction for mobile rendered augmented reality |
US11562525B2 (en) | 2020-02-13 | 2023-01-24 | Magic Leap, Inc. | Cross reality system with map processing using multi-resolution frame descriptors |
CN115427758A (zh) | 2020-02-13 | 2022-12-02 | 奇跃公司 | 具有精确共享地图的交叉现实系统 |
WO2021163295A1 (en) * | 2020-02-13 | 2021-08-19 | Magic Leap, Inc. | Cross reality system with prioritization of geolocation information for localization |
JP2023515524A (ja) | 2020-02-26 | 2023-04-13 | マジック リープ, インコーポレイテッド | 高速位置特定を伴うクロスリアリティシステム |
WO2021222371A1 (en) * | 2020-04-29 | 2021-11-04 | Magic Leap, Inc. | Cross reality system for large scale environments |
US11531467B1 (en) * | 2021-01-29 | 2022-12-20 | Pure Storage, Inc. | Controlling public access of resources in a secure distributed storage system |
US20230199623A1 (en) * | 2021-12-17 | 2023-06-22 | Juniper Networks, Inc. | Radio access network tracking area visualization management and monitoring |
WO2023166524A1 (en) * | 2022-03-01 | 2023-09-07 | Flying Flamingos India Pvt Ltd | Method and system for enabling users to experience an extended reality-based social multiverse |
KR102651604B1 (ko) * | 2023-03-07 | 2024-03-25 | 고려대학교 산학협력단 | 비유클리드 공간 모델링과 렌더링 방법, 및 그 장치 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100287485A1 (en) * | 2009-05-06 | 2010-11-11 | Joseph Bertolami | Systems and Methods for Unifying Coordinate Systems in Augmented Reality Applications |
US8243102B1 (en) * | 2011-10-12 | 2012-08-14 | Google Inc. | Derivative-based selection of zones for banded map display |
US20130293468A1 (en) * | 2012-05-04 | 2013-11-07 | Kathryn Stone Perez | Collaboration environment using see through displays |
US20130321402A1 (en) * | 2012-06-05 | 2013-12-05 | Apple Inc. | Rotation operations in a mapping application |
CN107924584A (zh) * | 2015-08-20 | 2018-04-17 | 微软技术许可有限责任公司 | 增强现实 |
CN108885522A (zh) * | 2016-12-30 | 2018-11-23 | 谷歌有限责任公司 | 渲染3d环境中的内容 |
US20190197785A1 (en) * | 2017-12-22 | 2019-06-27 | Magic Leap, Inc. | Methods and system for managing and displaying virtual content in a mixed reality system |
WO2019210284A1 (en) * | 2018-04-26 | 2019-10-31 | SCRRD, Inc. | Augmented reality platform and method for use of same |
Family Cites Families (166)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7032185B1 (en) | 1995-12-29 | 2006-04-18 | Microsoft Corporation | Graphical method and system for accessing information on a communications network |
KR100483806B1 (ko) | 2002-07-18 | 2005-04-20 | 한국과학기술원 | 예제동작을 이용한 영상기반 동작복원방법 |
US20050228849A1 (en) | 2004-03-24 | 2005-10-13 | Tong Zhang | Intelligent key-frame extraction from a video |
US7542034B2 (en) | 2004-09-23 | 2009-06-02 | Conversion Works, Inc. | System and method for processing video images |
US7583858B2 (en) | 2004-10-12 | 2009-09-01 | Eastman Kodak Company | Image processing based on direction of gravity |
US20080303787A1 (en) * | 2005-10-21 | 2008-12-11 | Zheng Yu Brian | Touch Screen Apparatus And Methods |
EP2032224A2 (en) | 2006-06-26 | 2009-03-11 | Icosystem Corporation | Methods and systems for interactive customization of avatars and other animate or inanimate items in video games |
US8781162B2 (en) | 2011-01-05 | 2014-07-15 | Ailive Inc. | Method and system for head tracking and pose estimation |
US20080090659A1 (en) | 2006-10-12 | 2008-04-17 | Maximino Aguilar | Virtual world event notification from a persistent world game server in a logically partitioned game console |
JP4292426B2 (ja) | 2007-05-15 | 2009-07-08 | ソニー株式会社 | 撮像装置および撮像データ補正方法 |
EP2179600B1 (en) | 2007-08-06 | 2015-07-01 | TRX Systems, Inc. | Locating, tracking, and/or monitoring people and/or assets both indoors and outdoors |
US9812096B2 (en) | 2008-01-23 | 2017-11-07 | Spy Eye, Llc | Eye mounted displays and systems using eye mounted displays |
US9258337B2 (en) | 2008-03-18 | 2016-02-09 | Avaya Inc. | Inclusion of web content in a virtual environment |
GB0818561D0 (en) | 2008-10-09 | 2008-11-19 | Isis Innovation | Visual tracking of objects in images, and segmentation of images |
US20100208033A1 (en) | 2009-02-13 | 2010-08-19 | Microsoft Corporation | Personal Media Landscapes in Mixed Reality |
KR20100138725A (ko) | 2009-06-25 | 2010-12-31 | 삼성전자주식회사 | 가상 세계 처리 장치 및 방법 |
US20130162481A1 (en) | 2009-10-01 | 2013-06-27 | Parviz Parvizi | Systems and methods for calibration of indoor geolocation |
US9119027B2 (en) | 2009-10-06 | 2015-08-25 | Facebook, Inc. | Sharing of location-based content item in social networking service |
US8185596B2 (en) | 2010-02-22 | 2012-05-22 | Samsung Electronics Co., Ltd. | Location-based communication method and system |
US20150205489A1 (en) | 2010-05-18 | 2015-07-23 | Google Inc. | Browser interface for installed applications |
KR101686171B1 (ko) | 2010-06-08 | 2016-12-13 | 삼성전자주식회사 | 영상 및 거리 데이터를 이용한 위치 인식 장치 및 방법 |
WO2012006578A2 (en) | 2010-07-08 | 2012-01-12 | The Regents Of The University Of California | End-to-end visual recognition system and methods |
US20120249416A1 (en) | 2011-03-29 | 2012-10-04 | Giuliano Maciocci | Modular mobile connected pico projectors for a local multi-user collaboration |
US8526368B2 (en) | 2011-05-17 | 2013-09-03 | Qualcomm Incorporated | Wi-Fi access point characteristics database |
US20120314031A1 (en) | 2011-06-07 | 2012-12-13 | Microsoft Corporation | Invariant features for computer vision |
US9082214B2 (en) | 2011-07-01 | 2015-07-14 | Disney Enterprises, Inc. | 3D drawing system for providing a real time, personalized, and immersive artistic experience |
US10019962B2 (en) | 2011-08-17 | 2018-07-10 | Microsoft Technology Licensing, Llc | Context adaptive user interface for augmented reality display |
EP2751742A1 (en) | 2011-08-31 | 2014-07-09 | metaio GmbH | Method of matching image features with reference features |
US20130141419A1 (en) | 2011-12-01 | 2013-06-06 | Brian Mount | Augmented reality with realistic occlusion |
EP2797542B1 (en) | 2011-12-30 | 2019-08-28 | MAKO Surgical Corp. | Systems and methods for customizing interactive haptic boundaries |
US9530221B2 (en) | 2012-01-06 | 2016-12-27 | Pelco, Inc. | Context aware moving object detection |
US9310882B2 (en) | 2012-02-06 | 2016-04-12 | Sony Computer Entertainment Europe Ltd. | Book object for augmented reality |
US9386297B2 (en) | 2012-02-24 | 2016-07-05 | Casio Computer Co., Ltd. | Image generating apparatus generating reconstructed image, method, and computer-readable recording medium |
KR20130110907A (ko) | 2012-03-30 | 2013-10-10 | 삼성전자주식회사 | 가상 현실과 증강 현실을 이용한 원격 제어 장치 및 방법 |
US9293118B2 (en) | 2012-03-30 | 2016-03-22 | Sony Corporation | Client device |
WO2013167864A1 (en) | 2012-05-11 | 2013-11-14 | Milan Momcilo Popovich | Apparatus for eye tracking |
US9671566B2 (en) | 2012-06-11 | 2017-06-06 | Magic Leap, Inc. | Planar waveguide apparatus with diffraction element(s) and system employing same |
CN107817556B (zh) | 2012-06-11 | 2020-01-31 | 奇跃公司 | 使用波导反射器阵列投射器的多深度平面三维显示器 |
US9111135B2 (en) | 2012-06-25 | 2015-08-18 | Aquifi, Inc. | Systems and methods for tracking human hands using parts based template matching using corresponding pixels in bounded regions of a sequence of frames that are a specified distance interval from a reference camera |
GB2506338A (en) | 2012-07-30 | 2014-04-02 | Sony Comp Entertainment Europe | A method of localisation and mapping |
US8829409B2 (en) | 2012-10-10 | 2014-09-09 | Thermo Fisher Scientific Inc. | Ultra-high speed imaging array with orthogonal readout architecture |
IL298018B2 (en) | 2013-03-11 | 2024-04-01 | Magic Leap Inc | System and method for augmentation and virtual reality |
US9349072B2 (en) | 2013-03-11 | 2016-05-24 | Microsoft Technology Licensing, Llc | Local feature based image compression |
US10025486B2 (en) | 2013-03-15 | 2018-07-17 | Elwha Llc | Cross-reality select, drag, and drop for augmented reality systems |
US20140267234A1 (en) | 2013-03-15 | 2014-09-18 | Anselm Hook | Generation and Sharing Coordinate System Between Users on Mobile |
WO2014169238A1 (en) | 2013-04-11 | 2014-10-16 | Digimarc Corporation | Methods for object recognition and related arrangements |
US9154919B2 (en) | 2013-04-22 | 2015-10-06 | Alcatel Lucent | Localization systems and methods |
EP2808842B1 (en) | 2013-05-31 | 2017-08-16 | Technische Universität München | An apparatus and method for tracking and reconstructing three-dimensional objects |
US10262462B2 (en) | 2014-04-18 | 2019-04-16 | Magic Leap, Inc. | Systems and methods for augmented and virtual reality |
US9874749B2 (en) | 2013-11-27 | 2018-01-23 | Magic Leap, Inc. | Virtual and augmented reality systems and methods |
US9406137B2 (en) | 2013-06-14 | 2016-08-02 | Qualcomm Incorporated | Robust tracking using point and line features |
US9329682B2 (en) | 2013-06-18 | 2016-05-03 | Microsoft Technology Licensing, Llc | Multi-step virtual object selection |
US9412173B2 (en) | 2013-06-21 | 2016-08-09 | National University Of Ireland, Maynooth | Method for mapping an environment |
US9779548B2 (en) | 2013-06-25 | 2017-10-03 | Jordan Kent Weisman | Multiuser augmented reality system |
US9646384B2 (en) | 2013-09-11 | 2017-05-09 | Google Technology Holdings LLC | 3D feature descriptors with camera pose information |
NZ755272A (en) | 2013-11-27 | 2020-05-29 | Magic Leap Inc | Virtual and augmented reality systems and methods |
CN106171012B (zh) | 2013-12-20 | 2020-01-17 | 英特尔公司 | 用于低功率室内定位的Wi-Fi扫描调度和功率适应 |
US10586395B2 (en) | 2013-12-30 | 2020-03-10 | Daqri, Llc | Remote object detection and local tracking using visual odometry |
US10203762B2 (en) | 2014-03-11 | 2019-02-12 | Magic Leap, Inc. | Methods and systems for creating virtual and augmented reality |
US9830679B2 (en) | 2014-03-25 | 2017-11-28 | Google Llc | Shared virtual reality |
US10380410B2 (en) | 2014-04-07 | 2019-08-13 | Eyeways Systems Ltd. | Apparatus and method for image-based positioning, orientation and situational awareness |
GB2526263B (en) | 2014-05-08 | 2019-02-06 | Sony Interactive Entertainment Europe Ltd | Image capture method and apparatus |
WO2015192117A1 (en) | 2014-06-14 | 2015-12-17 | Magic Leap, Inc. | Methods and systems for creating virtual and augmented reality |
US10068373B2 (en) | 2014-07-01 | 2018-09-04 | Samsung Electronics Co., Ltd. | Electronic device for providing map information |
CN104143212A (zh) | 2014-07-02 | 2014-11-12 | 惠州Tcl移动通信有限公司 | 基于穿戴设备的增强现实方法及系统 |
US10198865B2 (en) | 2014-07-10 | 2019-02-05 | Seiko Epson Corporation | HMD calibration with direct geometric modeling |
US10509865B2 (en) | 2014-09-18 | 2019-12-17 | Google Llc | Dress form for three-dimensional drawing inside virtual reality environment |
US20200252233A1 (en) | 2014-09-24 | 2020-08-06 | James Thomas O'Keeffe | System and method for user profile enabled smart building control |
US10719727B2 (en) | 2014-10-01 | 2020-07-21 | Apple Inc. | Method and system for determining at least one property related to at least part of a real environment |
US9754419B2 (en) | 2014-11-16 | 2017-09-05 | Eonite Perception Inc. | Systems and methods for augmented reality preparation, processing, and application |
WO2016087008A1 (en) | 2014-12-04 | 2016-06-09 | Here Global B.V. | Supporting a collaborative collection of data |
US10335677B2 (en) | 2014-12-23 | 2019-07-02 | Matthew Daniel Fuchs | Augmented reality system with agent device for viewing persistent content and method of operation thereof |
US9685005B2 (en) | 2015-01-02 | 2017-06-20 | Eon Reality, Inc. | Virtual lasers for interacting with augmented reality environments |
US9852546B2 (en) | 2015-01-28 | 2017-12-26 | CCP hf. | Method and system for receiving gesture input via virtual control objects |
US20160300389A1 (en) | 2015-04-08 | 2016-10-13 | Exactigo, Inc. | Correlated immersive virtual simulation for indoor navigation |
US9467718B1 (en) | 2015-05-06 | 2016-10-11 | Echostar Broadcasting Corporation | Apparatus, systems and methods for a content commentary community |
US20160335275A1 (en) | 2015-05-11 | 2016-11-17 | Google Inc. | Privacy-sensitive query for localization area description file |
KR101725478B1 (ko) | 2015-05-21 | 2017-04-11 | 주식회사 맥스트 | 3d 점군 인식 기반의 증강 현실 출력 방법과 이를 수행하기 위한 장치 및 시스템 |
US20160381118A1 (en) | 2015-06-23 | 2016-12-29 | Microsoft Technology Licensing, Llc | Extracting and formatting content from web-resources |
US20170061696A1 (en) | 2015-08-31 | 2017-03-02 | Samsung Electronics Co., Ltd. | Virtual reality display apparatus and display method thereof |
CN108351217B (zh) | 2015-09-10 | 2022-03-01 | 欧里伊恩特新媒体有限公司 | 在全球定位系统拒绝访问的导航、追踪及定位的移动装置 |
CA2941893C (en) | 2015-09-14 | 2020-02-25 | The Toronto-Dominion Bank | Connected device-based property evaluation |
US20170094227A1 (en) | 2015-09-25 | 2017-03-30 | Northrop Grumman Systems Corporation | Three-dimensional spatial-awareness vision system |
IL291685B2 (en) | 2015-09-25 | 2023-09-01 | Magic Leap Inc | Methods and systems for discovering and integrating structural features in 3D reconstruction |
GB201517101D0 (en) | 2015-09-28 | 2015-11-11 | Univ Essex Entpr Ltd | Mixed-reality system |
US10471355B2 (en) | 2015-10-21 | 2019-11-12 | Sharp Kabushiki Kaisha | Display system, method of controlling display system, image generation control program, and computer-readable storage medium |
US9706366B2 (en) | 2015-11-06 | 2017-07-11 | International Business Machines Corporation | WiFi-fingerprint based indoor localization map |
US10254845B2 (en) | 2016-01-05 | 2019-04-09 | Intel Corporation | Hand gesture recognition for cursor control |
US10523865B2 (en) | 2016-01-06 | 2019-12-31 | Texas Instruments Incorporated | Three dimensional rendering for surround view using predetermined viewpoint lookup tables |
CN114995647A (zh) | 2016-02-05 | 2022-09-02 | 奇跃公司 | 用于增强现实的系统和方法 |
WO2017143303A1 (en) | 2016-02-17 | 2017-08-24 | Meta Company | Apparatuses, methods and systems for sharing virtual elements |
US10373380B2 (en) | 2016-02-18 | 2019-08-06 | Intel Corporation | 3-dimensional scene analysis for augmented reality operations |
JP6776609B2 (ja) | 2016-02-22 | 2020-10-28 | デクセリアルズ株式会社 | 異方性導電フィルム |
US20180122143A1 (en) | 2016-03-15 | 2018-05-03 | Sutherland Cook Ellwood, JR. | Hybrid photonic vr/ar systems |
US10115234B2 (en) | 2016-03-21 | 2018-10-30 | Accenture Global Solutions Limited | Multiplatform based experience generation |
US10802147B2 (en) | 2016-05-18 | 2020-10-13 | Google Llc | System and method for concurrent odometry and mapping |
AU2017203641B2 (en) | 2016-05-31 | 2018-05-24 | Accenture Global Solutions Limited | Interactive virtual reality platforms |
US11201981B1 (en) | 2016-06-20 | 2021-12-14 | Pipbin, Inc. | System for notification of user accessibility of curated location-dependent content in an augmented estate |
US10627625B2 (en) | 2016-08-11 | 2020-04-21 | Magic Leap, Inc. | Automatic placement of a virtual object in a three-dimensional space |
WO2018039270A1 (en) | 2016-08-22 | 2018-03-01 | Magic Leap, Inc. | Virtual, augmented, and mixed reality systems and methods |
US10162362B2 (en) | 2016-08-29 | 2018-12-25 | PerceptIn, Inc. | Fault tolerance to provide robust tracking for autonomous positional awareness |
US10007868B2 (en) | 2016-09-19 | 2018-06-26 | Adobe Systems Incorporated | Font replacement based on visual similarity |
EP3563343A4 (en) | 2017-01-02 | 2020-08-19 | Gauss Surgical, Inc. | SURGICAL ITEM FOLLOW-UP WITH DUAL ELEMENT IMAGING PREDICTION |
US10354129B2 (en) | 2017-01-03 | 2019-07-16 | Intel Corporation | Hand gesture recognition for virtual reality and augmented reality devices |
US10812936B2 (en) | 2017-01-23 | 2020-10-20 | Magic Leap, Inc. | Localization determination for mixed reality systems |
WO2018139773A1 (ko) | 2017-01-25 | 2018-08-02 | 한국과학기술연구원 | 무선 환경 변화에 강인한 slam 방법 및 장치 |
US10534964B2 (en) | 2017-01-30 | 2020-01-14 | Blackberry Limited | Persistent feature descriptors for video |
US10460489B2 (en) | 2017-03-15 | 2019-10-29 | Facebook, Inc. | Visual editor for designing augmented-reality effects and configuring scaling parameters |
JP7007396B2 (ja) | 2017-03-17 | 2022-01-24 | マジック リープ, インコーポレイテッド | 拡張現実データを記録するための手法 |
KR20240036150A (ko) | 2017-03-30 | 2024-03-19 | 매직 립, 인코포레이티드 | 중앙화된 렌더링 |
US10600252B2 (en) | 2017-03-30 | 2020-03-24 | Microsoft Technology Licensing, Llc | Coarse relocalization using signal fingerprints |
US9754397B1 (en) | 2017-04-07 | 2017-09-05 | Mirage Worlds, Inc. | Systems and methods for contextual augmented reality sharing and performance |
IL301087A (en) | 2017-05-01 | 2023-05-01 | Magic Leap Inc | Adapting content to a three-dimensional spatial environment |
US11417091B2 (en) | 2017-05-30 | 2022-08-16 | Ptc Inc. | Use of coordinated local user devices during a shared augmented reality session |
CN109145927A (zh) | 2017-06-16 | 2019-01-04 | 杭州海康威视数字技术股份有限公司 | 一种对形变图像的目标识别方法及装置 |
JP6585665B2 (ja) | 2017-06-29 | 2019-10-02 | ファナック株式会社 | 仮想オブジェクト表示システム |
US10503955B2 (en) | 2017-08-29 | 2019-12-10 | Synaptics Incorporated | Device with improved circuit positioning |
WO2019046774A1 (en) | 2017-09-01 | 2019-03-07 | Memorial Sloan Kettering Cancer Center | SYSTEMS AND METHODS FOR GENERATING 3D MEDICAL IMAGES BY SCANNING A WHOLE TISSUE BLOCK |
US10546387B2 (en) | 2017-09-08 | 2020-01-28 | Qualcomm Incorporated | Pose determination with semantic segmentation |
US10685456B2 (en) | 2017-10-12 | 2020-06-16 | Microsoft Technology Licensing, Llc | Peer to peer remote localization for devices |
US10422648B2 (en) | 2017-10-17 | 2019-09-24 | AI Incorporated | Methods for finding the perimeter of a place using observed coordinates |
AU2018369757B2 (en) | 2017-11-14 | 2023-10-12 | Magic Leap, Inc. | Fully convolutional interest point detection and description via homographic adaptation |
CA3084057A1 (en) | 2017-12-15 | 2019-06-20 | Magic Leap, Inc. | Enhanced pose determination for display device |
US10630857B2 (en) | 2017-12-21 | 2020-04-21 | Ricoh Company, Ltd. | Electronic apparatus and method to update firmware of the electronic apparatus when adding a web application to the electronic apparatus |
US11237004B2 (en) | 2018-03-27 | 2022-02-01 | Uatc, Llc | Log trajectory estimation for globally consistent maps |
US10838574B2 (en) | 2018-04-09 | 2020-11-17 | Spatial Systems Inc. | Augmented reality computing environments—workspace save and load |
US10803671B2 (en) | 2018-05-04 | 2020-10-13 | Microsoft Technology Licensing, Llc | Authoring content in three-dimensional environment |
US10812711B2 (en) | 2018-05-18 | 2020-10-20 | Samsung Electronics Co., Ltd. | Semantic mapping for low-power augmented reality using dynamic vision sensor |
CN110515452B (zh) | 2018-05-22 | 2022-02-22 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、存储介质和计算机设备 |
US11010977B2 (en) | 2018-05-31 | 2021-05-18 | Jido, Inc. | Method for establishing a common reference frame amongst devices for an augmented reality session |
US10706629B2 (en) | 2018-06-15 | 2020-07-07 | Dell Products, L.P. | Coordinate override in virtual, augmented, and mixed reality (xR) applications |
CN112639664B (zh) | 2018-07-24 | 2023-03-24 | 奇跃公司 | 用于确定和/或评价图像显示设备的定位地图的方法和装置 |
US11227435B2 (en) | 2018-08-13 | 2022-01-18 | Magic Leap, Inc. | Cross reality system |
CN112805750A (zh) | 2018-08-13 | 2021-05-14 | 奇跃公司 | 跨现实系统 |
CN112889118A (zh) | 2018-09-04 | 2021-06-01 | 阿克提雅有限公司 | 用于确定一个或多个用户的血压的系统 |
EP3629290B1 (en) | 2018-09-26 | 2023-01-04 | Apple Inc. | Localization for mobile devices |
CN113196209A (zh) | 2018-10-05 | 2021-07-30 | 奇跃公司 | 在任何位置渲染位置特定的虚拟内容 |
US10854007B2 (en) | 2018-12-03 | 2020-12-01 | Microsoft Technology Licensing, Llc | Space models for mixed reality |
US20200211290A1 (en) | 2018-12-26 | 2020-07-02 | Lg Electronics Inc. | Xr device for providing ar mode and vr mode and method for controlling the same |
EP3895416A4 (en) | 2019-03-27 | 2022-03-02 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | THREE-DIMENSIONAL LOCATION USING LIGHT DEPTH IMAGERY |
CN111815755B (zh) | 2019-04-12 | 2023-06-30 | Oppo广东移动通信有限公司 | 虚拟物体被遮挡的区域确定方法、装置及终端设备 |
US11151792B2 (en) | 2019-04-26 | 2021-10-19 | Google Llc | System and method for creating persistent mappings in augmented reality |
US10748302B1 (en) | 2019-05-02 | 2020-08-18 | Apple Inc. | Multiple user simultaneous localization and mapping (SLAM) |
US11010921B2 (en) | 2019-05-16 | 2021-05-18 | Qualcomm Incorporated | Distributed pose estimation |
US20200364937A1 (en) | 2019-05-16 | 2020-11-19 | Subvrsive, Inc. | System-adaptive augmented reality |
US11145083B2 (en) | 2019-05-21 | 2021-10-12 | Microsoft Technology Licensing, Llc | Image-based localization |
US10854012B1 (en) | 2019-05-29 | 2020-12-01 | Dell Products, L.P. | Concealing loss of distributed simultaneous localization and mapping (SLAM) data in edge cloud architectures |
US20200380263A1 (en) | 2019-05-29 | 2020-12-03 | Gyrfalcon Technology Inc. | Detecting key frames in video compression in an artificial intelligence semiconductor solution |
US10852828B1 (en) | 2019-07-17 | 2020-12-01 | Dell Products, L.P. | Automatic peripheral pairing with hand assignments in virtual, augmented, and mixed reality (xR) applications |
US10936874B1 (en) | 2019-08-13 | 2021-03-02 | Dell Products, L.P. | Controller gestures in virtual, augmented, and mixed reality (xR) applications |
KR20190104928A (ko) | 2019-08-22 | 2019-09-11 | 엘지전자 주식회사 | Xr 디바이스 및 xr 디바이스 제어 방법 |
US11270515B2 (en) | 2019-09-04 | 2022-03-08 | Qualcomm Incorporated | Virtual keyboard |
US11698674B2 (en) | 2019-09-09 | 2023-07-11 | Apple Inc. | Multimodal inputs for computer-generated reality |
CN114600064A (zh) * | 2019-10-15 | 2022-06-07 | 奇跃公司 | 具有定位服务的交叉现实系统 |
US11257294B2 (en) | 2019-10-15 | 2022-02-22 | Magic Leap, Inc. | Cross reality system supporting multiple device types |
US11632679B2 (en) | 2019-10-15 | 2023-04-18 | Magic Leap, Inc. | Cross reality system with wireless fingerprints |
JP2023501952A (ja) | 2019-10-31 | 2023-01-20 | マジック リープ, インコーポレイテッド | 持続座標フレームについての品質情報を伴うクロスリアリティシステム |
EP4059007A4 (en) | 2019-11-12 | 2023-11-01 | Magic Leap, Inc. | CROSS-REALLY SYSTEM WITH LOCATION SERVICE AND SHARED LOCATION-BASED CONTENT |
US11562542B2 (en) | 2019-12-09 | 2023-01-24 | Magic Leap, Inc. | Cross reality system with simplified programming of virtual content |
CN115427758A (zh) | 2020-02-13 | 2022-12-02 | 奇跃公司 | 具有精确共享地图的交叉现实系统 |
US11562525B2 (en) | 2020-02-13 | 2023-01-24 | Magic Leap, Inc. | Cross reality system with map processing using multi-resolution frame descriptors |
WO2021163295A1 (en) | 2020-02-13 | 2021-08-19 | Magic Leap, Inc. | Cross reality system with prioritization of geolocation information for localization |
WO2021163289A1 (en) | 2020-02-13 | 2021-08-19 | Magic Leap, Inc. | Cross reality system for large scale environments |
US11593951B2 (en) | 2020-02-25 | 2023-02-28 | Qualcomm Incorporated | Multi-device object tracking and localization |
JP2023515524A (ja) | 2020-02-26 | 2023-04-13 | マジック リープ, インコーポレイテッド | 高速位置特定を伴うクロスリアリティシステム |
WO2021222371A1 (en) | 2020-04-29 | 2021-11-04 | Magic Leap, Inc. | Cross reality system for large scale environments |
-
2020
- 2020-11-11 EP EP20886597.2A patent/EP4059007A4/en active Pending
- 2020-11-11 WO PCT/US2020/059975 patent/WO2021096931A1/en unknown
- 2020-11-11 US US17/095,551 patent/US11386627B2/en active Active
- 2020-11-11 JP JP2022526729A patent/JP2023504775A/ja active Pending
- 2020-11-11 CN CN202080078518.0A patent/CN114730546A/zh active Pending
-
2022
- 2022-05-25 US US17/824,839 patent/US11869158B2/en active Active
-
2023
- 2023-10-27 US US18/496,407 patent/US20240054741A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100287485A1 (en) * | 2009-05-06 | 2010-11-11 | Joseph Bertolami | Systems and Methods for Unifying Coordinate Systems in Augmented Reality Applications |
US8243102B1 (en) * | 2011-10-12 | 2012-08-14 | Google Inc. | Derivative-based selection of zones for banded map display |
US20130293468A1 (en) * | 2012-05-04 | 2013-11-07 | Kathryn Stone Perez | Collaboration environment using see through displays |
US20130321402A1 (en) * | 2012-06-05 | 2013-12-05 | Apple Inc. | Rotation operations in a mapping application |
CN107924584A (zh) * | 2015-08-20 | 2018-04-17 | 微软技术许可有限责任公司 | 增强现实 |
CN108885522A (zh) * | 2016-12-30 | 2018-11-23 | 谷歌有限责任公司 | 渲染3d环境中的内容 |
US20190197785A1 (en) * | 2017-12-22 | 2019-06-27 | Magic Leap, Inc. | Methods and system for managing and displaying virtual content in a mixed reality system |
WO2019210284A1 (en) * | 2018-04-26 | 2019-10-31 | SCRRD, Inc. | Augmented reality platform and method for use of same |
Also Published As
Publication number | Publication date |
---|---|
US20240054741A1 (en) | 2024-02-15 |
US11869158B2 (en) | 2024-01-09 |
WO2021096931A1 (en) | 2021-05-20 |
EP4059007A4 (en) | 2023-11-01 |
US20210142580A1 (en) | 2021-05-13 |
EP4059007A1 (en) | 2022-09-21 |
JP2023504775A (ja) | 2023-02-07 |
US20220292789A1 (en) | 2022-09-15 |
US11386627B2 (en) | 2022-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11869158B2 (en) | Cross reality system with localization service and shared location-based content | |
US11748963B2 (en) | Cross reality system with simplified programming of virtual content | |
CN114600064A (zh) | 具有定位服务的交叉现实系统 | |
CN115151947B (zh) | 具有基于wifi/gps的地图合并的交叉现实系统 | |
CN114586071A (zh) | 支持多设备类型的交叉现实系统 | |
CN115427758A (zh) | 具有精确共享地图的交叉现实系统 | |
CN114616534A (zh) | 具有无线指纹的交叉现实系统 | |
CN112805750A (zh) | 跨现实系统 | |
CN115380264A (zh) | 用于大规模环境的交叉现实系统 | |
CN115461787A (zh) | 具有快速定位的交叉现实系统 | |
CN115398484A (zh) | 具有用于定位的地理定位信息优先级的交叉现实系统 | |
CN115398314A (zh) | 使用多分辨率帧描述符进行地图处理的交叉现实系统 | |
CN114616509A (zh) | 具有关于持久坐标框架的质量信息的交叉现实系统 | |
US11694394B2 (en) | Cross reality system for large scale environment reconstruction | |
CN113544748A (zh) | 交叉现实系统 | |
CN115176285B (zh) | 利用缓冲的交叉现实系统用于定位精度 | |
JP7504212B2 (ja) | Wifi/gpsベースのマップマージを伴うクロスリアリティシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |