CN114762008A - 简化的虚拟内容编程的交叉现实系统 - Google Patents

简化的虚拟内容编程的交叉现实系统 Download PDF

Info

Publication number
CN114762008A
CN114762008A CN202080084894.0A CN202080084894A CN114762008A CN 114762008 A CN114762008 A CN 114762008A CN 202080084894 A CN202080084894 A CN 202080084894A CN 114762008 A CN114762008 A CN 114762008A
Authority
CN
China
Prior art keywords
map
content
user
maps
pcf
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
Application number
CN202080084894.0A
Other languages
English (en)
Inventor
H·张
R·J·C·麦克唐纳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Magic Leap Inc
Original Assignee
Magic Leap Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Magic Leap Inc filed Critical Magic Leap Inc
Publication of CN114762008A publication Critical patent/CN114762008A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/954Navigation, e.g. using categorised browsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9558Details of hyperlinks; Management of linked annotations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04815Interaction with a metaphor-based environment or interaction object displayed as three-dimensional, e.g. changing the user viewpoint with respect to the environment or object
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04817Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance using icons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/0141Head-up displays characterised by optical features characterised by the informative content of the display

Abstract

渲染通过执行本机模式应用生成的虚拟内容的交叉现实(XR)系统可以被配置为使用渲染来自本机应用的内容的部件渲染基于网络的内容。该系统可以包括提供棱镜的棱镜管理器,在该棱镜中渲染来自执行本机应用的内容。为了渲染基于网络的内容,访问基于网络的内容的浏览器可以与棱镜相关联并且可以将内容渲染到其相关联的棱镜中,从而为用户创建与本机应用生成内容时相同的沉浸式体验。用户可以从与本机应用相同的程序启动器菜单访问网络应用。系统可以具有使用户能够访问这些能力的工具,包括通过针对网络位置创建可安装实体,当系统处理该可安装实体时,在程序启动器菜单中产生用于网络内容的图标。

Description

简化的虚拟内容编程的交叉现实系统
相关申请的交叉引用
本申请根据35U.S.C.第119(e)条要求于2019年12月09日提交的题为“CROSSREALITY SYSTEM WITH SIMPLIFIED PROGRAMMING OF VIRTUAL CONTENT”(“具有简化的虚拟内容编程的交叉现实系统”)的美国临时专利申请序列号62/945,357的权益,其全部内容通过引用并入本文。
技术领域
本申请总体上涉及交叉现实系统。
背景技术
计算机可以控制人类用户界面以创建交叉现实(XR)环境,在该环境中,由计算机生成用户所感知的一些或全部XR环境。这些XR环境可以是虚拟现实(VR)、增强现实(AR)和混合现实(MR)环境,其中的一些或所有XR环境可以由计算机部分使用描述环境的数据来生成。例如,该数据可以描述虚拟对象,该虚拟对象可以以用户的感觉或感知为物理世界的一部分的方式渲染,并且可以与虚拟对象进行交互。由于数据是通过用户接口设备(诸如例如头戴式显示设备)渲染和呈现的,因此用户可以体验这些虚拟对象。数据可以显示给用户看,或者可以控制被播放给用户听的音频,或者可以控制触觉(或触知)界面,从而使用户能够体验到用户感觉或感知为感觉到虚拟对象的触摸感觉。
XR系统可以被用于跨科学可视化、医学培训、工程设计和原型、远程操纵和远程呈现以及个人娱乐领域的许多应用。与VR相比,AR和MR包括与物理世界的真实对象相关的一个或多个虚拟对象。虚拟对象与真实对象交互的体验显著地增强了用户使用XR系统的乐趣,并且也为呈现有关如何改变物理世界的现实且易于理解的信息的各种应用打开了大门。
为了现实地渲染虚拟内容,XR系统可以建立围绕系统的用户的物理世界的表示。例如,此表示可以通过对利用可穿戴设备上的传感器获取的图像进行处理来构建,其中的可穿戴设备形成XR系统的一部分。在这样的系统中,用户可以通过环顾用户打算在其中使用XR系统的房间或其他物理环境,直到系统获得足够的信息来构建该环境的表示,来执行初始化例程。随着系统运行且用户在环境中移动或移动到其他环境,可穿戴设备上的传感器可以获取其他信息以扩展或更新物理世界的表示。
发明内容
本申请的各方面涉及用于提供交叉现实(XR)场景的方法和装置。如本文所述的技术可以一起、单独或以任何合适的组合使用。
根据一些方面,提供了一种操作混合现实系统的方法,其中,所述混合现实系统可以被配置为渲染通过执行本机应用生成的虚拟内容,其中,用于所述本机应用的所述虚拟内容可以在由所述系统管理的棱镜(Prism)内渲染,以便与所述本机应用相关联。所述方法可以包括,基于通过浏览器渲染来自链接的内容的指示,通过所述链接获取表示所述内容的标准化形式的信息;以及基于所获取的信息,在棱镜内渲染所述内容,其中,所述棱镜可以由所述混合现实系统管理,以便与所述浏览器相关联,其中,所述棱镜是在其内显示所述内容的体积。
根据一些实施例,所述方法还可以包括接收基于在程序启动器菜单中选择与所述链接相关联的图标的用户输入来渲染所述内容的指示,其中,所述程序启动器菜单可以包括与所述本机应用相关联的至少一个图标。
根据一些实施例,所述混合现实系统可以包括便携式电子设备,所述浏览器可以在便携式电子设备上执行,并且接收渲染所述内容的所述指示还可以包括向所述便携式电子设备的用户生成提示以确认所述内容的渲染。
根据一些实施例,该方法还可以包括处理可安装实体,其中,所述处理可以包括基于所述可安装实体生成与所述链接相关联的所述图标;以及在注册表中创建将所述图标与所述链接相关联的条目。
根据一些实施例,所述可安装实体可以包括所述图标的规范;并且生成所述图标可以包括基于所述图标的所述规范渲染所述图标。
根据一些实施例,所述可安装实体还可以包括指定网络应用的数据;并且生成所述图标可以包括基于指定所述网络应用的所述数据形成所述图标。
根据一些实施例,所述方法还可以包括基于用户输入生成所述可安装实体,其可以包括在所述混合现实系统上安装与所述链接相关联的网络应用的命令。
根据一些实施例,在所述棱镜内渲染所述内容可以包括在无需所述浏览器的导航控件的情况下渲染所述内容。
根据一些实施例,在所述棱镜内渲染所述内容可以包括基于从所述链接下载的所述内容的3D模型渲染3D内容。
根据一些实施例,在所述棱镜内渲染所述内容可以包括基于从所述链接下载的所述内容的动画的3D模型通过所述浏览器生成动态3D内容。
根据一些实施例,在所述棱镜内渲染所述内容可以包括:在第一时间,在所述混合现实系统上下载和缓存指定所述内容的信息;以及第二时间,在第一时间之后,基于所缓存的信息渲染所述内容。
根据一些实施例,来自所述链接的表示所述内容的标准化形式的信息可以部分地基于从所述混合现实系统的部件获得的信息;并且渲染来自所述链接的所述内容可以包括提示所述混合现实系统的用户授权对所述混合现实系统的所述部件的访问。
根据一些实施例,所述棱镜可以包括由所述混合现实系统生成并被配置为使用户能够控制所述棱镜的用户界面。
根据一些方面,提供一种混合现实系统,其被配置为渲染由本机应用生成的虚拟内容,其中,用于所述本机应用的所述虚拟内容可以在由所述混合现实系统管理的体积内渲染,以便与所述本机应用相关联。所述混合现实系统可以包括便携式电子设备,其包括:一个或多个处理器;以及至少一种计算机可读介质,所述计算机可读介质包括计算机可执行指令,当由所述一个或多个处理器中的处理器执行时,所述计算机可执行指令基于用浏览器渲染来自链接的内容的指示:从所述链接获取表示所述内容的标准化形式的信息;以及基于所获取的信息,在体积内渲染所述内容,其中,所述体积由所述混合现实系统管理,以便与所述浏览器相关联。
根据一些实施例,所述混合现实系统可以被配置为使得所述浏览器具有对所述便携式电子设备的硬件部件的访问权。
根据一些实施例,所述浏览器对其具有访问权的所述便携式电子设备的所述硬件部件可以包括被配置为获得音频、视频或图像数据或其任意组合的硬件。
根据一些实施例,所述混合现实系统可以被配置为使得基于在使能对所述便携式电子设备的硬件部件的访问之前从所述便携式电子设备的用户接收的许可,所述浏览器有条件地具有对所述便携式电子设备的硬件部件的访问权。
根据一些实施例,所述计算机可执行指令在由所述一个或多个处理器中的处理器执行时,可以处理可安装的实体,所述处理可以包括:基于所述可安装实体生成与所述链接相关联的图标;以及在注册表中创建将所述图标与所述链接相关联的条目。
根据一些实施例,所述可安装实体可以包括所述图标的规范;并且生成所述图标可以包括基于所述图标的所述规范渲染所述图标。
根据一些实施例,所述可安装实体可以包括指定网络应用的数据;并且生成所述图标可以包括用标识所述网络应用的信息形成图标。
根据一些方面,提供一种基于网络内容为能够在3D环境中渲染虚拟内容的便携式电子设备生成可安装实体的方法。所述方法可以包括使用一个或多个处理器执行:接收与所述网络内容相关联的链接;以及基于所述网络内容生成可安装实体,其中,所述可安装实体包括清单,所述清单包括与所述网络内容相关联的所述链接,以及渲染来自所述链接的所述网络内容的计算机可执行指示。
根据一些实施例,所述方法还可以包括使用所述一个或多个处理器来执行在所述便携式电子设备上注册所述可安装实体。
根据一些实施例,所述方法还可以包括使用所述一个或多个处理器来执行:确定对应于所述网络内容的可安装实体是否已经在所述便携式电子设备上注册。
根据一些实施例,在所述便携式电子设备上注册所述可安装实体可以包括将代表所述可安装实体的图标添加到所述便携式电子设备上的程序启动器菜单。
根据一些实施例,所述网络内容可以包括3D内容。
根据一些实施例,所述3D内容可以包括动画的3D内容。
根据一些实施例,所述方法还可以包括使用所述一个或多个处理器来执行:确定所述网络内容是否符合一组标准。
根据一些实施例,所述一组标准可以包括W3C标准。
根据一些实施例,所述网络内容可以由网络应用生成,所述网络应用包括网络清单;并且所述方法还可以包括使用所述一个或多个处理器来执行:访问所述网络应用的所述网络清单;以及进一步基于所述网络清单生成所述可安装实体。
根据一些实施例,所述可安装实体还可以包括代表所述可安装实体的一个或多个图标。
根据一些实施例,所述一个或多个图标可以是3D图标。
根据一些实施例,所述可安装实体还可以包括代表所述可安装实体的一个或多个图标,其中,所述一个或多个图标可以基于所述网络清单。
根据一些实施例,所述可安装实体的所述清单还可以包括与所述网络内容相关联的名称。
根据一些实施例,所述可安装实体的所述清单还可以包括所述一个或多个图标的规范。
根据一些实施例,所述可安装实体的所述清单还可以包括包含多个字段的文件;并且所述方法还可以包括基于来自用户的输入来更新所述文件的所述多个字段中的一个或多个。
根据一些实施例,所述方法还可以包括使用所述一个或多个处理器来执行:存储所述可安装实体。
根据一些实施例,存储所述可安装实体可以包括将所述可安装实体存储在云服务器中。
根据一些实施例,生成所述可安装实体可以利用安装工具来执行。
根据一些方面,提供一种用于基于网络内容为能够在3D环境中渲染虚拟内容的便携式电子设备生成可安装实体的系统。所述系统可以包括一个或多个处理器;以及至少一种计算机可读介质,其包括计算机可执行指令,当由一个或多个处理器中的处理器执行时,所述计算机可执行指令:接收与网络内容相关的链接;并基于所述网络内容生成可安装实体,其中,所述可安装实体包括清单,所述清单包括与所述网络内容相关联的所述链接,以及渲染来自所述链接的所述网络内容的计算机可执行指示。
前述概述是通过说明的方式提供的,并非旨在进行限制。
附图说明
附图并非旨在按比例绘制。在附图中,在各个附图中示出的每个相同或几乎相同的部件由相似的数字表示。为了清楚起见,并非每个部件都可以在每个附图中标记。在附图中:
图1是示出根据一些实施例的简化的增强现实(AR)场景的示例的草图;
图2是根据一些实施例的示例性简化AR场景的草图,示出了XR系统的示例性使用情况;
图3是示出根据一些实施例的用于AR系统中的单个用户的数据流的示意图,该AR系统被配置为向用户提供AR内容与物理世界交互的体验;
图4是示出根据一些实施例的示例性AR显示系统的示意图,该示例性AR显示系统针对单个用户显示虚拟内容;
图5A是示出根据一些实施例的当用户穿着AR显示系统时,该AR显示系统在用户移动穿过物理世界环境时渲染AR内容的示意图;
图5B是示出根据一些实施例的观看光学组件和随附部件的示意图;
图6A是示出根据一些实施例的使用世界重建系统的AR系统的示意图;
图6B是示出根据一些实施例的维持可通行世界的模型的AR系统的部件的示意图。
图7是由设备遍历穿过物理世界的路径形成的跟踪图的示意图。
图8是示出根据一些实施例的交叉现实(XR)系统的用户感知虚拟内容的示意图;
图9是根据一些实施例的在坐标系之间进行变换的图8的XR系统的第一XR设备的部件的框图;
图10是示出根据一些实施例的将原点坐标框架示例性变换为目的地(destination)坐标框架以便正确地渲染本地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是示出根据一些实施例的将图44的第二跟踪地图(地图2)定位到规范地图的定位尝试的示意图,该第二跟踪地图可以进一步被开发并且具有与地图2的PCF相关联的XR内容;
图46A至图46B是示出根据一些实施例的将图45的地图2成功定位到规范地图的示意图;
图47是示出根据一些实施例的通过将来自图46A的规范地图的一个或多个PCF包括到图45的地图2中而生成的规范地图的示意图;
图48是示出根据一些实施例的图47的规范地图以及第二XR设备上的地图2的进一步扩展的示意图;
图49是示出根据一些实施例的将地图2从第二XR设备上传到服务器的框图;
图50是示出根据一些实施例的将地图2与规范地图合并的框图;
图51是示出根据一些实施例的将新规范地图从服务器传输到第一XR设备和第二XR设备的框图;
图52是示出根据一些实施例的地图2的二维表示和参考地图2的第二XR设备的头部坐标框架的框图;
图53是根据一些实施例的以二维方式示出可以在六个自由度中发生的头部坐标框架的调节的框图;
图54是示出根据一些实施例的第二XR设备上的规范地图的框图,其中,声音相对于地图2的PCF被定位;
图55和图56是示出根据一些实施例的当第一用户已经终止第一会话并且第一用户已经使用XR系统发起第二会话时XR系统的使用的透视图和框图;
图57和图58是示出根据一些实施例的当三个用户在同一会话中同时使用XR系统时XR系统的使用的透视图和框图;
图59是示出根据一些实施例的恢复和重置头部姿势的方法的流程图;
图60是根据一些实施例的可以在本发明的系统中找到应用的计算机形式的机器的框图;
图61是根据一些实施例的示例XR系统的示意图,,在该示例XR系统中,多个设备中的任一个可以访问定位服务;
图62是根据一些实施例的用于操作便携式设备的示例处理流程,其中的便携式设备作为提供基于云的定位的XR系统的一部分;以及
图63A、图63B和图63C是根据一些实施例的用于基于云的定位的示例处理流程。
图64是用于在物理环境中管理和显示共享的基于位置的虚拟内容的系统的示意图,其中描绘了示出示例性内容将如何在物理环境中呈现给用户。
图65是具有可与XR应用相关联的图标的示例性用户界面的草图。
图66是示出在用户选择与XR应用相关联的图标时XR系统的操作的流程图。
图67是示例性用户界面的示意图,用户可以通过该用户界面访问安装工具以将与网络内容相关联的图标添加到程序启动器菜单。
图68是在用户激活用于将图标添加到程序启动器菜单的工具时操作浏览器和包管理器的示例性方法的流程图。
图69是根据一些实施例的内容创建者创建和共享可安装实体的示例性过程的流程图。
图70是XR系统的部件的示意图,这些部件实现了许可,使得用户可以安全地访问网络内容。
具体实施方式
本文描述了用于使交叉现实(XR)系统的简化编程能够渲染虚拟内容的技术。该系统可以利用管理用户和在系统上执行的本机应用之间的交互的部件,以使得用户能够基于网络内容与虚拟内容进行交互。以这种方式控制XR系统使用户能够享受身沉浸式的用户体验,而无需对本机应用进行编程来生成虚拟内容。相反,内容可以生成并存储在网络上,或者可以由使用在XR系统之外使用的编程技术实现的网络应用生成,诸如根据万维网联盟(W3C)规范开发的网络应用。
可以通过使用户能够从菜单中选择网络内容来简单地提供对网络内容的访问,用户可以通过该菜单来指定对用于执行的本机应用的选择。例如,与特定网络位置相关联的网络内容可以表示为图标,这些图标与代表本机应用的图标一起出现在启动器菜单中。根据从启动器菜单中对图标的选择,系统可以建立棱镜,在该棱镜中渲染与所选图标相关联的内容。当所选图标与本机应用相关联时,该应用可以由XR系统执行以生成内容并处理与棱镜相关联的用户输入。相反,当所选图标与网络内容相关联时,XR系统可以执行与棱镜相关联的浏览器,其中,浏览器被配置为渲染来自与所选图标相关联的网络位置的内容,并且当网络位置被配置为接收用户输入时,浏览器被配置为将与棱镜相关联的用户输入传递到网络位置。
在一些实施例中,XR系统可以实现网络内容的简单集成。与特定网络位置相关联的可安装实体在由XR系统处理时可自动将图标添加到启动器菜单。在一些实施例中,可安装实体可以由内容创建者创建。在一些实施例中,XR系统可以包括一旦指定网络位置就创建可安装实体的工具,使得开发者和用户可以快速方便地配置XR系统,以提供来自网络位置的虚拟内容。
在此描述的技术可以与许多类型的设备以及对于许多类型的场景一起或单独使用,包括具有有限的计算资源的提供增强或混合现实场景的可穿戴或便携式设备。在一些实施例中,可以通过形成XR系统的一部分的一个或多个服务来全部或部分实现该技术。
AR系统概述
图1和图2示出了具有与物理世界的一部分一起显示的虚拟内容的场景。为了说明的目的,AR系统被用作XR系统的示例。图3至图6B示出示例性AR系统,其包括可以根据在此描述的技术操作的一个或多个处理器、存储器、传感器和用户界面。
参考图1,描绘了室外AR场景354,其中AR技术的用户看到了物理世界的类似公园的设置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描绘了根据一些实施例的AR系统502,其被配置为提供与物理世界506交互的AR内容的体验。AR系统502可以包括显示器508。在所示的实施例中,显示器508可以由用户作为头戴式耳机(headset)的一部分来佩戴,以使得用户可以像一副护目镜或眼镜一样将显示器戴在他们的眼睛上。显示器的至少一部分可以是透明的,使得用户可以观察到透视现实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可以从物理世界的多个角度随时间整合传感器数据。当包括传感器的设备移动时,可以跟踪传感器的姿势(例如,位置和取向)。由于已知传感器的帧姿势及其如何与其他姿势的关系相关联,因此可以将物理世界的这些多个视点中的每个视点融合在一起,形成物理世界的单个组合重建,这可以用作地图的抽象(abstract)层并提供空间信息。通过使用空间和时间平均(即,随时间推移从多个视点对数据进行平均)或任何其他适当的方法,重建可以比原始传感器数据更完整且噪声更少。
在图3所示的实施例中,地图表示存在单个可穿戴设备的用户的物理世界的部分。在那种情况下,与地图中的框架相关联的头部姿势可以被表示为本地头部姿势,指示相对于会话开始时单个设备的初始取向的取向。例如,头部姿势可以在设备被开启时相对于初始头部姿势被跟踪,或者以其他方式操作来扫描环境以建立该环境的表示。
结合表征物理世界的那部分的内容,地图可以包括元数据。元数据例如可以指示捕获用于形成地图的传感器信息的时间。可替代地或另外地,元数据可以指示在捕获用于形成地图的信息时传感器的位置。位置可以直接表示,诸如采用来自GPS芯片的信息,也可以间接表示,诸如采用无线(例如,Wi-Fi)签名,该Wi-Fi签名指示在收集传感器数据的同时从一个或多个无线接入点接收到的信号的强度,和/或采用收集传感器数据的同时用户设备连接到的无线接入点的标示符,诸如BSSID。
重建518可以用于AR功能,诸如产生用于遮挡处理或基于物理的处理的物理世界的表面表示。该表面表示可能随着用户移动或物理世界中的对象改变而改变。重建518的各方面可以例如由在世界坐标中产生改变的全局表面表示的部件520使用,改变的全局表面表示可以由其它部件使用。
可以基于该信息,诸如通过AR应用504来生成AR内容。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,该本地数据处理模块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既包括在系统580的非操作时间期间可由用户560充电的内部锂离子电池,又包括可移除的电池,以使得用户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,以使得经处理的信息可以结合在渲染虚拟内容中使用的关于物理对象的其他信息来指示对象在物理世界中的位置。
可通行世界模块538至少部分地确定如从数据输入536确定的AR内容540可以被放置在物理世界中的如何以及如何放置。AR内容通过经由用户界面呈现物理世界表示和AR内容二者来“放置”在物理世界中,其中,AR内容渲染为好像与物理世界中的对象交互,并且物理世界中的对象呈现为好像AR内容在适当时掩盖了用户对这些对象的观看。在一些实施例中,可以通过从重建(例如重建518)中适当地选择固定元素542(例如桌子)的部分以确定AR内容540的形状和位置来放置AR内容。作为示例,固定元素可以是桌子,并且虚拟内容可以定位成使得其看起来好像在该桌子上。在一些实施例中,可以将AR内容放置在视野544中的结构内,该视野可以是当前视野或估计的未来视野。在一些实施例中,AR内容可以相对于物理世界的模型546(例如网格)持续。
如所描绘的,固定元素542用作可存储在可通行世界模块538中的物理世界内的任何固定元素的代理(例如,数字副本),使得用户530可以感知固定元素542上的内容,而无需每次用户530看到固定元素542时系统都必须地图构建到固定元素542。因此,固定元素542可以是来自先前建模会话的网格模型,或者可以从单独的用户确定但是仍然由可通行世界模块538存储,以供多个用户将来参考。因此,可通行世界模块538可以从先前地图构建的环境中识别环境532并显示AR内容,而无需用户530的设备首先对环境532的全部或一部分进行地图构建,从而节省了计算过程和周期并避免了任何渲染的AR内容的时延。
可以通过AR显示系统来创建物理世界的网格模型546,并且用于交互和显示AR内容540的适当的表面和度量可以由可通行世界模块538存储,以供用户530或其他用户将来取得,而无需完全或部分地重新创建模型。在一些实施例中,数据输入536是诸如地理位置、用户标识和当前活动的输入,以向可通行世界模块538指示一个或多个固定元素中的哪个固定元素542可用,哪个AR内容540最后被放置在固定元素542上,以及是否显示该相同的内容(无论用户如何观看特定的可通行世界模型,这种AR内容都是“持久”内容)。
即使在对象被认为是固定的(例如,厨房桌子)实施例中,可通行世界模块538也可以时不时更新物理世界模型中的那些对象新,以考虑到物理世界中变化的可能性。固定对象的模型可能以非常低的频率更新。物理世界中的其它对象可能正在移动或以其它方式不被认为是固定的(例如厨房椅子)。为了渲染具有真实感的AR场景,AR系统可以以比用于更新固定对象的频率高得多的频率来更新这些非固定对象的位置。为了能够准确跟踪物理世界中的所有对象,AR系统可以从多个传感器(包括一个或多个图像传感器)中获取信息。
图5B是观看光学组件548和随附部件的示意图。在一些实施例中,指向用户眼睛549的两个眼睛跟踪相机550检测用户眼睛549的度量,诸如眼睛形状、眼睑遮挡、瞳孔方向和用户眼睛549上的闪烁。
在一些实施例中,传感器之一可以是深度传感器551,诸如飞行时间传感器,其向世界发射信号并检测那些信号从附近对象的反射以确定与给定对象的距离。深度传感器例如可以快速确定由于那些对象的运动或用户姿势的变化对象是否已经进入用户的视野。然而,关于对象在用户视野中的位置的信息可以可替代地或另外地由其它传感器收集。深度信息例如可以从立体视觉图像传感器或全光传感器获得。
在一些实施例中,世界相机552记录大于外围的视图以对环境532进行地图构建和/或以其他方式创建环境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或除了深度传感器551之外,这种传感器可以用作深度信息源。
还应当理解,图5B中的部件的配置被提供为示例。观看光学组件548可以包括具有任何适当配置的部件,该适当配置可以设定为向用户提供对于一组特定部件实际可行的最大视野。例如,如果观看光学组件548具有一个世界相机552,则该世界相机可以放置在观看光学组件的中心区域而不是一侧。
来自观看光学组件548中的传感器的信息可以耦合到系统中的一个或多个处理器。处理器可以生成可以被渲染以便使用户感知与物理世界中的对象交互的虚拟内容的数据。可以以任何合适的方式来实现该渲染,包括生成描绘物理和虚拟对象二者的图像数据。在其它实施例中,可以通过调制用户在物理世界中浏览的显示设备的不透明度来在一个场景中描绘物理和虚拟内容。可以控制不透明度以便创建虚拟对象的外观,并且还阻止用户看到物理世界中被虚拟对象遮挡的对象。在一些实施例中,当通过用户界面观看时,图像数据可以仅包括虚拟内容,该虚拟内容可以被修改以使得虚拟内容被用户感知为与物理世界现实地交互(例如,剪辑内容以考虑遮挡)。
观看光学组件548上的显示内容以产生对象位于特定位置的印象的位置可以取决于观看光学组件的物理性质。此外,用户头部相对于物理世界的姿势以及用户眼睛注视的方向可影响在观察光学组件上的特定位置处显示的内容将在物理世界中出现的位置。如上所述的传感器可以收集该信息,和/或提供可以从中计算该信息的信息,以使得接收传感器输入的处理器可以计算应该在观看光学组件548上渲染对象的位置从而为用户创建期望的外观。
无论如何向用户呈现内容,都可以使用物理世界的模型,以使得可以正确计算可受到物理对象影响的虚拟对象的特性,包括虚拟对象的形状、位置、运动和可见性。在一些实施例中,模型可以包括物理世界的重建,例如重建518。
可以根据从用户的可穿戴设备上的传感器收集的数据来创建该模型。尽管,在一些实施例中,可以根据由多个用户收集的数据创建模型,该数据可以在远离所有用户的计算设备中汇总(并且该数据可以在“云中”)。
模型可以至少部分地由世界重建系统创建,诸如例如,图6A中更详细地描绘的图3的世界重建部件516。世界重建部件516可以包括感知模块660,该感知模块660可以生成、更新和存储物理世界的一部分的表示。在一些实施例中,感知模块660可以将传感器的重建范围内的物理世界的部分表示为多个体素。每个体素可以对应于物理世界中预定体积的3D立方体,并且包括表面信息,该表面信息指示在由体素表示的体积中是否存在表面。可以为体素分配值,该值指示它们的对应体积是否已经被确定为包括物理对象的表面,确定为空的或者尚未用传感器测量,并且因此其值是未知的。应当理解,不需要明确地存储指示被确定为空或未知的体素的值,因为可以以任何合适的方式将体素的值存储在计算机存储器中,包括不存储被确定为空或未知的体素的信息。
除了生成用于持久世界表示的信息之外,感知模块660还可以识别并输出AR系统的用户周围的区域中的变化的指示。这种变化的指示可以触发对作为持久世界的一部分存储的体积数据的更新,或者触发其它功能,诸如触发生成AR内容以更新AR内容的触发部件604。
在一些实施例中,感知模块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可以包括可以从感知模块660接收物理世界的表示的部件664。关于物理世界的信息可以由这些部件根据例如来自应用的使用请求来提取。在一些实施例中,可以诸如经由对预识别区域中的变化或感知范围内的物理世界表示的变化的指示,将信息推送到使用部件。部件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。LuminOS 604可以包括基于Linux的内核,其具有与XR设备兼容的自定义驱动器。API 606可包括准许XR应用(例如,应用610)访问XR设备的空间计算特征的应用编程接口。SDK 608可包括允许创建XR应用的软件开发套件。
架构600中的一个或多个部件可以创建并保持可通行世界的模型。在此示例中,传感器数据是在本地设备上收集的。该传感器数据的处理可以部分地在XR设备上本地执行,部分地在云中执行。PW 538可以包括至少部分基于由多个用户佩戴的AR设备所捕获的数据而创建的环境地图。在AR体验的会话期间,各个AR设备(诸如以上结合图4描述的可穿戴设备)可以创建跟踪地图,该跟踪地图是地图的一种类型。
在一些实施例中,设备可以包括构建稀疏地图和密集地图的部件。跟踪地图可以用作稀疏地图,并且可以包括扫描环境的AR设备的头部姿势以及在每个头部姿势处在该环境内检测到的对象有关的信息。可以为每个设备在本地保持那些头部姿势。例如,每个设备上的头部姿势可以是相对于设备开启其会话时的初始头部姿势。结果,每个跟踪地图对创建它的设备可以是本地的。密集地图可以包括表面信息,该表面信息可以由网格或深度信息表示。替代地或附加地,密集地图可以包括从表面或深度信息中导出的更高级别的信息,例如平面和/或其他对象的位置和/或特征。
在一些实施例中,密集地图的创建可以独立于稀疏地图的创建。例如,可以在AR系统内的单独的处理管线中执行密集地图和稀疏地图的创建。例如,分开的处理可以使得能够以不同的速率来执行不同类型的地图的生成或处理。例如,稀疏地图的刷新速度可能比密集地图的刷新速度快。然而,在一些实施例中,即使在不同的管线中执行,密集地图和稀疏地图的处理也可能是相关的。例如,在稀疏地图中显露的物理世界的变化可以触发密集地图的更新,反之亦然。此外,即使是独立创建的,这些地图也可以一起使用。例如,从稀疏地图导出的坐标系可以用于定义密集地图中的对象的位置和/或取向。
稀疏地图和/或密集地图可以被持久保存以由同一设备重用和/或与其他设备共享。这样的持久性可以通过将信息存储在云中来实现。AR设备可以将跟踪地图发送到云,从而例如与从先前存储在云中的持久地图中选择的环境地图合并。在一些实施例中,可以将所选的持久地图从云发送到AR设备以进行合并。在一些实施例中,持久地图可以相对于一个或多个持久坐标框架取向。这样的地图可以用作规范地图,因为它们可以被多个设备中的任何一个使用。在一些实施例中,可通行世界的模型可以包括一个或多个规范地图或由一个或多个规范地图创建。即使基于设备本地的坐标框架执行一些操作,设备也可以通过确定设备本地的坐标框架与规范地图之间的变换来使用规范地图。
规范地图可以起源于跟踪地图(TM)(例如,图31A中的TM 1102),其可以被提升为规范地图。可以持久保存规范地图,以使得访问规范地图的设备一旦确定其本地坐标系与规范地图的坐标系之间的变换,就可以使用规范地图中的信息来确定规范地图中表示的对象在设备周围的物理世界中的位置。在一些实施例中,TM可以是由XR设备创建的头部姿势稀疏地图。在一些实施例中,当XR设备将一个或多个TM发送到云服务器以与由XR设备在不同时间或由其他XR设备捕获的附加TM合并时,可以创建规范地图。
规范地图或其他地图可以提供关于物理世界的由被处理以创建相应地图的数据所表示的各个部分的信息。图7描绘了根据一些实施例的示例性跟踪地图700。跟踪地图700可以提供由点702表示的对应物理世界中的物理对象的平面图706。在一些实施例中,地图点702可以表示可以包括多个特征的物理对象的特征。例如,桌子的每个角部可以是由地图上的点所表示的特征。这些特征可以通过处理图像导出,诸如可以用增强现实系统中的可穿戴设备的传感器来获取。例如,可以通过以下方式来导出特征:处理由传感器输出的图像帧,以基于图像中的大梯度或其他适当的标准来识别特征。进一步的处理可能会限制每个帧中的特征数量。例如,处理可以选择可能表示持久对象的特征。一种或多种试探法可以应用于该选择。
跟踪地图700可以包括关于由设备收集的点702的数据。对于具有跟踪地图中所包括的数据点的每个图像帧,可以存储姿势。姿势可以表示捕获图像帧的取向,以使得每个图像帧内的特征点可以在空间上相关。该姿势可以通过定位信息来确定,诸如可通过可穿戴设备上的传感器(诸如IMU传感器)导出。替代地或附加地,可以通过将图像帧匹配到描绘物理世界的重叠部分的其他图像帧来确定姿势。通过寻找这种位置相关性,这可以通过匹配两个帧中的特征点的子集来实现,可以计算两个帧之间的相对姿势。相对姿势对于跟踪地图可能就足够了,因为该地图可以相对于基于在开始构建跟踪地图时设备的初始姿势而建立的对该设备本地的坐标系。
并非由设备收集的所有特征点和图像帧都可以保留为跟踪地图的一部分,因为用传感器收集的许多信息很可能是多余的。相反,仅某些帧可以添加到地图。可以基于一个或多个标准来选择那些帧,例如与地图中已经存在的图像帧的重叠程度,它们包含的新特征的数量、或该帧中特征的质量度量。未添加到跟踪地图的图像帧可以被丢弃或可用于修改特征的位置。作为另一替代方案,可以保留表示为一组特征的所有或大多数图像帧,但是可以将这些帧的子集指定为关键帧,以用于进一步处理。
关键帧可以被处理以产生关键装配(keyrig)704。关键帧可以被处理以产生特征点的三维集合并被保存为关键装配704。例如,这种处理可能需要比较从两个相机同时得到的图像帧来立体确定特征点的3D位置。元数据可以与这些关键帧和/或关键装配(例如,姿势)相关联。
环境地图可以取决于例如环境地图的存储位置(包括例如AR设备的本地存储和远程存储)而具有多种格式中的任何一种。例如,远程存储中的地图可比在内存有限的可穿戴设备上的本地存储中的地图具有更高的分辨率。为了将更高分辨率的地图从远程存储发送到本地存储,可以对地图进行下采样或以其它方式转换为适当的格式,诸如通过减少存储在地图中的物理世界的每个区域的姿势数量和/或为每个姿势存储的特征点的数量。在一些实施例中,来自远程存储的高分辨率地图的切片或部分可以被发送到本地存储,其中切片或部分未被下采样。
当创建新的跟踪地图时,可以更新环境地图的数据库。为了确定数据库中可能非常大量的环境地图中的哪一个环境地图将被更新,更新可以包括有效地选择数据库中存储的与新的跟踪地图有关的一个或多个环境地图。可以通过相关性对所选的一个或多个环境地图进行排名,并且可以选择最高排名的地图中的一个或多个地图以进行处理,以将较高排名的所选环境地图与新的跟踪地图合并以创建一个或多个更新的环境地图。当新的跟踪地图表示物理世界的没有预先存在的环境地图要更新的一部分时,该跟踪地图可以作为新的环境地图存储在数据库中。
观看独立显示
在此描述了用于使用与观看虚拟内容的眼睛的位置无关的XR系统提供虚拟内容的方法和装置。传统上,虚拟内容在显示系统的任何运动时被重新渲染。例如,如果佩戴显示系统的用户观看显示器上的三维(3D)对象的虚拟表示并围绕3D对象出现的区域走动,则应为每个视点重新渲染3D对象,以使得用户具有他或她正围绕占据真实空间的对象走动的感觉。然而,重新渲染消耗系统的大量计算资源,并且由于时延而导致伪像。
发明人已经认识并理解到,头部姿势(例如,佩戴XR系统的用户的位置和取向)可以用于渲染与用户的头部内的眼睛旋转无关的虚拟内容。在一些实施例中,可以基于跨一个或多个会话的真实空间中的多个坐标框架来生成场景的动态地图,以使得与动态地图交互的虚拟内容可以被稳健地渲染,而与用户头部内的眼睛旋转无关和/或与例如在高速的计算密集型操作期间生成的热量所引起的传感器变形无关。在一些实施例中,多个坐标框架的配置可以使第一用户所佩戴的第一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固定至其头部,并且将远离头部单元22的腰包24固定至其腰部。电缆连接26将头部单元22连接到腰包24。头部单元22包括用于在允许第一用户14.1看到诸如桌子16的真实对象的同时向第一用户14.1显示一个或多个虚拟对象的技术。腰包24主要包括第一XR设备12.1的处理和通信能力。在一些实施例中,处理和通信能力可以全部或部分地驻留在头部单元22中,以使得腰包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存储为原点和目的地坐标框架34内的本地坐标框架72。在一些实施例中,原点和目的地坐标框架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存储为原点和目的地坐标框架34中的头部坐标框架96。头部框架存储指令92可以在头部框架确定例程90重新计算头部坐标框架94时,将更新的头部坐标框架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框架,该CR框架被称为视图无关显示或投射。可以将图像重新投射应用于虚拟内容以解释眼睛位置的变化,然而,由于渲染仍处于相同位置,因此可以最小化抖动。
图13更详细地示出显示系统42。显示系统42包括立体分析器144,该立体分析器144连接到渲染引擎30并形成视觉数据和算法的一部分。
显示系统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上的像素是用户感知为在左波导170A的与左眼220A相对的一侧上的某个距离处的像素234A和236A。深度感知通过操纵光的焦距来创建。
以类似的方式,立体分析器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是透明的。来自诸如左波导170A和右波导170B的与眼睛220A和220B相对的一侧的桌子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,图像1和图像2中的每个图像均来自相机之一。为了简单起见,示出了来自每个相机的单个图像。然而,每个相机可以输出图像帧的流,并且可以针对流中的多个图像帧执行图14的处理。
因此,图像1和图像2可以分别是图像帧序列中的一个帧。可以对序列中的连续图像帧重复图14所示的处理,直到包含提供合适的图像的特征点的图像帧被处理,根据该合适的图像,形成持久的空间信息。替代地或附加地,在用户移动使得用户不再足够靠近先前识别的PCF以可靠地使用该PCF来确定相对于物理世界的位置时,可以重复图14的处理。例如,XR系统可以为用户保持当前的PCF。当该距离超过阈值时,系统可以切换到更靠近用户的新的当前PCF,其可以根据图14的过程使用在用户当前位置获取的图像帧来生成。
即使当生成单个PCF时,图像帧的流也可以被处理以识别描述物理世界中的可能是稳定的内容的图像帧,并且可以由图像帧中描绘的物理世界的区域附近的设备容易地识别。在图14的实施例中,该处理开始于图像中的特征1120的识别。例如,可以通过寻找图像中超过阈值的梯度的位置或其他特征来识别特征,该特征可以例如对应于对象的角部。在所示的实施例中,特征是点,但是可以替代地或附加地使用其他可识别的特征,例如边缘。
在所示的实施例中,选择固定数量N的特征1120进行进一步处理。可以基于一个或多个标准,例如,梯度的大小或与其他特征点的接近度,来选择那些特征点。替代地或附加地,特征点可以例如基于暗示特征点是持久的特性来试探性地选择。例如,可以基于可能对应于窗户或门或大件家具的角部的特征点的特性来定义试探法。这种试探法可以考虑特征点本身及其周围的事物。作为特定示例,每个图像的特征点的数量可以在100与500之间或150与250之间,诸如200。
不管选择的特征点的数量如何,都可以为特征点计算描述符1130。在该示例中,为每个选择的特征点计算描述符,但是可以为特征点的组或特征点的子集或图像内的所有特征计算描述符。描述符表征特征点,以使得在物理世界中表示相同对象的特征点被分配相似的描述符。描述符可以有利于两个帧的对齐,诸如在一个地图相对于另一个地图定位时可能会发生。代替搜索使两个图像的特征点之间的距离最小化的帧的相对取向,可以通过识别具有相似的描述符的特征点来进行两个帧的初始对齐。图像帧的对齐可以基于具有相似描述符的对齐点,与计算图像中所有特征点的对齐相比,这可能需要更少的处理。
描述符可以被计算为特征点到描述符的映射,或者在一些实施例中,计算为特征点周围的图像的块(patch)到描述符的映射。描述符可以是数值量。美国专利申请16/190,948描述了特征点的计算描述符,并且通过引用将其全部内容结合在此。
在图14的示例中,为每个图像帧中的每个特征点计算描述符1130。基于描述符和/或特征点和/或图像本身,图像帧可以被识别为关键帧1140。在所示的实施例中,关键帧是满足某一标准的图像帧,然后选择该图像帧用于进一步处理。例如,在制作跟踪地图时,可以选择将有意义的信息添加到地图的图像帧作为整合到地图中的关键帧。另一方面,可以丢弃基本上与已经将图像帧整合到地图中的区域重叠的图像帧,使得它们不会成为关键帧。替代地或附加地,可以基于图像帧中的特征点的数量和/或类型来选择关键帧。在图14的实施例中,被选择以包括在跟踪地图中的关键帧1150也可以被视为用于确定PCF的关键帧,但是可以使用选择用于生成PCF的关键帧的不同或附加标准。
尽管图14示出了关键帧被用于进一步处理,但是从图像获取的信息可以以其他形式被处理。例如,可以替代地或附加地处理诸如在关键装配中的特征点。而且,尽管关键帧被描述为是从单个图像帧导出的,但是关键帧与所获取的图像帧之间不必存在一对一的关系。例如,关键帧例如可以从多个图像帧获取,诸如通过将图像帧拼接或者聚合在一起,使得在关键帧中仅保留出现在多个图像中的特征。
关键帧可以包括图像信息和/或与图像信息相关联的元数据。在一些实施例中,可以将由相机44、46(图9)捕获的图像计算为一个或多个关键帧(例如,关键帧1、2)。在一些实施例中,关键帧可以包括相机姿势。在一些实施例中,关键帧可以包括以相机姿势捕获的一个或多个相机图像。在一些实施例中,XR系统可以确定以相机姿势捕获的相机图像的一部分是无用的,并且因此不将该部分包括在关键帧中。因此,使用关键帧将新图像与场景的早期认知对齐减少了XR系统计算资源的使用。在一些实施例中,关键帧可以在具有方向/角度的位置处包括图像和/或图像数据。在一些实施例中,关键帧可以包括可以观察到一个或多个地图点的位置和方向。在一些实施例中,关键帧可以包括具有ID的坐标框架。美国专利申请第15/877,359号描述了关键帧,在此通过引用将其全部内容并入本文。
可以选择一些或全部关键帧1140进行进一步处理,诸如针对关键帧生成持久姿势1150。该选择可以基于图像帧中所有特征点或其子集的特性。这些特性可以根据对描述符、特征和/或图像帧本身进行处理来确定。作为特定示例,该选择可以基于被识别为可能与持久对象有关的特征点的聚类。
每个关键帧与相机的获取该关键帧的姿势相关联。对于被选择用于处理成持久姿势的关键帧,该姿势信息可以与关于关键帧的其他元数据一起保存,诸如在获取时和/或在获取位置处的WiFi指纹和/或GPS坐标。在一些实施例中,例如GPS坐标的元数据可以单独地或组合地用作定位过程的一部分。
持久姿势是设备可以用来相对于先前获取的有关物理世界的信息进行自身定向的信息源。例如,如果从中创建了持久姿势的关键帧被合并到物理世界的地图中,则设备可以使用与持久姿势相关联的关键帧中足够数量的特征点,相对于该持久姿势进行自身定向。设备可以将其对周围环境拍摄的当前图像与持久姿势对齐。该对齐可以基于将当前图像与引起持久姿势的图像1110、特征1120和/或描述符1130、或该图像或那些特征或描述符的任何子集进行匹配。在一些实施例中,与持久姿势匹配的当前图像帧可以是已合并到设备的跟踪地图中的另一关键帧。
关于持久姿势的信息可以以有利于在多个应用之间共享的格式存储,这些多个应用可以在相同或不同的设备上执行。在图14的示例中,一些或所有的持久姿势可以被反映为持久坐标框架(PCF)1160。像持久姿势一样,PCF可以与地图相关联并且可以包括设备可以用来确定其相对于该PCF的取向的一组特征或其他信息。PCF可以包括定义相对于其地图的原点的变换的变换,使得通过将其位置与PCF相关联,设备可以确定其相对于地图中所反映的物理世界中的任何对象的位置。
由于PCF提供了用于确定相对于物理对象的位置的机制,因此应用(诸如应用1180)可以定义虚拟对象相对于一个或多个PCF的位置,这些位置用作虚拟内容1170的锚点。例如,图14示出了App 1已经将其虚拟内容2与PCF 1.2相关联。同样,应用2已将其虚拟内容3与PCF 1.2相关联。还示出了App 1将其虚拟内容1与PCF 4.5相关联,并且示出了App2将其虚拟内容4与PCF 3相关联。在一些实施例中,PCF 3可以基于图像3(未示出),并且PCF4.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中的关键装配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和/或PCF1330一起发送到第二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可以用于基于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向服务器20发送地图2时,地图发布者136可以取得PCF 1306和与PCF 1306相关联的持久姿势,地图发布者136还向服务器20发送与地图2相关联的PCF和持久姿势。当服务器20的地图存储例程118存储地图2时,地图存储例程118还可以存储由第二观看设备12.2生成的持久姿势和PCF。地图合并算法124可以采用与规范地图120相关联并分别存储在持久姿势1332和PCF 1330内的地图2的持久姿势和PCF来创建规范地图120。
第一XR设备12.1可以包括与第二XR设备12.2的PCF集成单元1300相似的PCF集成单元。当地图发送器122向第一XR设备12.1发送规范地图120时,地图发送器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作为规范地图120存储在服务器20的存储设备上。
第二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的设置将本地坐标框架变换为世界坐标框架。已经参考图2描述了渲染引擎30、显示系统42和数据通道62的功能。
地图发布者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中的PP1150),设备将一个或多个最接近的关键帧附接到PP。在一些实施例中,PP相对于关键帧的位置可以基于在创建PP时设备的位置。在一些实施例中,当设备行进阈值距离时将不会创建PP,除非应用请求PP。
在一些实施例中,当应用具有要显示给用户的虚拟内容时,应用可以从设备请求PCF。来自应用的PCF请求可触发PP请求,并且在设备行进阈值距离后将创建新的PP。图18示出第一持久姿势PP1,其可以具有通过例如计算关键帧之间的相对姿势而附接到该持久姿势的最接近的关键帧(例如,KF1、KF2和KF3)。图18还示出第二持久姿势PP2,其可以具有附接的最接近的关键帧(例如,KF4和KF5)。
图19示出了根据一些实施例的针对图17的地图生成PCF的示例。在所示示例中,PCF 1可以包括PP1和PP2。如上所述,PCF可用于显示与PCF相关的图像数据。在一些实施例中,每个PCF可以具有另一个坐标框架(例如,世界坐标框架)中的坐标和PCF描述符,例如,唯一地识别PCF的PCF描述符。在一些实施例中,可以基于与PCF相关联的帧中的特征的特征描述符来计算PCF描述符。在一些实施例中,可以组合PCF的各种星座以需要较少数据和较少数据传输的持久方式来表示现实世界。
图20A至20C是示出建立和使用持久坐标框架的示例的示意图。图20A示出具有尚未定位到规范地图的相应的本地跟踪地图4804A、4804B的两个用户4802A、4802B。各个用户的原点4806A、4806B由其相应区域中的坐标系(例如,世界坐标系)来描绘。每个跟踪地图的这些原点对于每个用户来说可能是本地的,因为这些原点取决于启动跟踪时他们各自设备的取向。
当用户设备的传感器扫描环境时,该设备可以捕获如以上结合图14所描述的可以包含表示持久对象的特征的图像,使得那些图像可以被分类为关键帧,可以根据这些关键帧创建持久姿势。在该示例中,跟踪地图4802A包括持久姿势(PP)4808A;跟踪4802B包括PP4808B。
同样如以上结合图14所述,一些PP可以被分类为PCF,这些PCF用于确定用于将其渲染给用户的虚拟内容的取向。图20B示出了相应的用户4802A、4802B所佩戴的XR设备可以基于PP 4808A、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所示,通过obj1_T_pcf1的变换,虚拟内容相对于PCF进行定位。该变换可以由生成虚拟内容的应用来设置,该应用可以从世界重建系统接收描述相对于PCF的物理对象的信息。为了将虚拟内容渲染给用户,计算到用户设备的坐标系的变换,这可以通过变换obj1_t_w1=(obj1_T_pcf1)*(pcf1_T_w1)将虚拟内容坐标框架关联到跟踪地图的原点来计算。然后,该变换可以通过进一步的变换rig1_T_w1与用户的设备相关。
基于来自生成虚拟内容的应用的输出,虚拟内容的位置可以改变。当变化时,可以重新计算从源坐标系到目的地坐标系的端到端变换。另外,用户的位置和/或头部姿势可以随着用户移动而改变。结果,变换rig1_T_w1可以改变,如取决于用户的位置或头部姿势的任何端到端变换也可以改变那样。
可以基于跟踪用户相对于物理世界中的静止对象的位置,随着用户的运动来更新变换rig1_T_w1。可以通过如上所述的处理图像序列的耳机跟踪部件或系统的其他部件来执行这种跟踪。可以通过确定用户相对于固定参考框架(诸如PP)的姿势来进行这样的更新。
在一些实施例中,由于PP被用作PCF,因此可以相对于最近的持久姿势或在该示例中为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,如果正在使用的话)的位置的虚拟内容相对于用户的位置的任何变换都可以进行更新并存储以供使用,至少直到用户离开该持久姿势为止。尽管如此,通过计算和存储变换,每次更新虚拟内容的位置时的计算负担可以相对较低,从而可以以相对较低的延迟来执行它。
图20A至图20C示出了相对于跟踪地图进行定位,并且每个设备具有其自己的跟踪地图。但是,可以相对于任何地图坐标系生成变换。XR系统的用户会话之间的内容持久性可以通过使用持久地图来实现。通过使用可以将多个用户设备定向到的地图,也可以利于用户的共享体验。
在下面更详细描述的一些实施例中,可以相对于规范地图中的坐标来指定虚拟内容的位置,规范地图的格式被设置为使得多个设备中的任何一个可以使用该地图。每个设备可能保持跟踪地图,并且可以确定用户的姿势相对于跟踪地图的变化。在此示例中,可以通过“定位“过程来确定跟踪地图与规范地图之间的变换,该过程可以通过将跟踪地图中的结构(诸如一个或多个持久姿势)匹配到规范地图的一个或多个结构(例如一个或多个PCF)来执行。
下面更详细地描述了以这种方式创建和使用规范地图的技术。
深度关键帧
本文所述的技术依赖于图像帧的比较。例如,为了建立设备相对于跟踪地图的位置,可以使用用户佩戴的传感器捕获新图像,并且XR系统可以在用于创建跟踪地图的图像集中搜索与新图像共享至少预定数量的关注点的图像。作为涉及图像帧比较的另一种场景的示例,可以通过首先寻找跟踪地图中的与持久姿势相关联的图像帧,其类似于规范地图中的与PCF相关联的图像帧,来将跟踪地图定位到规范地图。可替代地,可以通过首先寻找两个地图中相似的图像帧来计算两个规范地图之间的变换。
深度关键帧提供了减少识别相似图像帧所需的处理量的方法。例如,在一些实施例中,比较可以是在新的2D图像中的图像特征(例如,“2D特征”)和地图中的3D特征之间。这种比较可以以任何适当的方式进行,诸如通过将3D图像投射到2D平面中。诸如词袋(Bag ofWords,BoW)之类的常规方法在包括地图中所有2D特征的数据库中搜索新图像的2D特征,这可能需要大量的计算资源,尤其是当地图表示大区域时。然后,常规方法定位与新图像共享至少一个2D特征的图像,这些图像可能包括对于定位地图中有意义的3D特征没有用的图像。然后,常规方法定位相对于新图像中的2D特征没有意义的3D特征。
发明人已经认识并理解使用更少的存储器资源(例如,BoW使用的存储器资源的四分之一)、更高的效率(例如,每个关键帧的处理时间为2.5ms,针对500个关键帧进行比较为100μs)、并且更高的准确性(例如,对于1024维模型,检索召回率比BoW好20%,对于256维模型,检索召回率比BoW好5%)来检索地图中的图像的技术。
为了减少计算,可以针对图像帧计算描述符,该描述符可以用于将图像帧与其他图像帧进行比较。可以代替图像帧和特征点存储描述符,或者除图像帧和特征点之外还存储描述符。在可以根据图像帧生成持久姿势和/或PCF的地图中,可以将生成每个持久姿势或PCF所根据的一个或多个图像帧的描述符存储为持久姿势和/或PCF的一部分。
在一些实施例中,可以根据图像帧中的特征点来计算描述符。在一些实施例中,神经网络被配置为计算表示图像的唯一帧描述符。该图像可以具有高于1兆字节的分辨率,使得在图像中捕获用户所佩戴的设备的视场内的3D环境的足够的细节。帧描述符可以短得多,诸如数字字符串(string),例如,在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可以包括多层感知器,可以对该多层感知器进行训练。在一些实施例中,可以通过多层感知器312来减少关注点322(例如,用于关注点的描述符),并且可以将关注点322输出为描述符的加权组合310。例如,MLP可以将n个特征减少为少于n个特征的m个特征。
在一些实施例中,MLP单元312可以被配置为执行矩阵乘法。多层感知器单元312接收图像320的多个关注点322,并将每个关注点转换为相应的数字字符串(例如,256)。例如,可能有100个特征,并且每个特征可以由256个数字字符串来表示。在此示例中,可以创建具有100个水平行和256个垂直列的矩阵。每行可具有一系列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神经网络的使用阶段期间使用)。在一些实施例中,三元组边界损失模块可以被配置为选择模型的参数,以减小来自查询图像的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设备位于由地图的50m×50m区域表示的地理区域中。可以仅对该区域内的点执行图像匹配。作为另一示例,基于跟踪,XR系统可以知道XR设备先前接近地图中的第一持久姿势并且当时正在朝地图中的第二持久姿势的方向移动。该第二持久姿势可以被认为是最近的持久姿势,并且与其一起存储的关键帧可以被认为是最近的关键帧。替代地或附加地,诸如GPS数据或WiFi指纹的其他元数据可以用于选择最近的关键帧或最近的关键帧的集合。
不管如何选择最近的关键帧,都可以使用帧描述符来确定新图像是否与被选择为与附近的持久姿势相关联的任何帧相匹配。可以通过以下处理来进行该确定:将新图像的帧描述符与最近的关键帧的帧描述符或以任何其他适当方式选择的数据库中的关键帧的子集的帧描述符进行比较,并选择具有在新图像的帧描述符的预定距离内的帧描述符的关键帧。在一些实施例中,可以通过获得可以表示两个帧描述符的两个数字字符串之间的差来计算两个帧描述符之间的距离。在将字符串作为多个数量的字符串进行处理的实施例中,可以将差计算为向量差。
一旦识别出匹配的图像帧,就可以确定XR设备相对于该图像帧的取向。方法2300可以包括:对与所识别的最近关键帧相对应的地图中的3D特征执行(动作2306)特征匹配,以及基于特征匹配结果来计算(动作2308)用户所佩戴的设备的姿势。以此方式,可以针对已经被确定为与新图像的可能匹配的少至一个图像,来执行两个图像中的特征点的计算密集匹配。
图24是示出根据一些实施例的训练神经网络的方法2400的流程图。方法2400可以从生成(动作2402)包括多个图像集的数据集开始。多个图像集的每一个可以包括查询图像、正样本图像和负样本图像。在一些实施例中,多个图像集可以包括合成记录对,该合成记录对被配置为例如教导神经网络基本信息(诸如形状)。在一些实施例中,多个图像集可以包括真实记录对,这些真实记录对可以根据物理世界记录。
在一些实施例中,可以通过在两个图像之间拟合基本矩阵来计算内围者(inlier)。在一些实施例中,稀疏重叠可以被计算为两个图像中看到的关注点的联合交叉(intersection over union,IoU)。在一些实施例中,正样本可以包括与查询图像中的相同的至少二十个关注点作为内点。负样本可以包括少于十个内点。负样本可以具有少于一半的与查询图像的稀疏点重叠的稀疏点。
方法2400可以包括针对每个图像集通过比较查询图像与正样本图像和负样本图像来计算(动作2404)损失。方法2400可以包括基于计算出的损失来修改(动作2406)人工神经网络,使得由人工神经网络生成的针对查询图像的帧描述符与针对正样本图像的帧描述符之间的距离小于针对查询图像的帧描述符与针对负样本图像的帧描述符之间的距离。
应该理解,尽管以上描述了被配置为生成各个图像的全局描述符的方法和装置,但是方法和装置可以被配置为针对各个地图生成描述符。例如,地图可以包括多个关键帧,每个关键帧可以具有如上所述的帧描述符。最大池化单元可以分析地图的关键帧的帧描述符,并将帧描述符组合为该地图的唯一地图描述符。
此外,应了解,可将其他架构用于如上所述的处理。例如,描述了用于生成DSF描述符和帧描述符的分离的神经网络。这种方法在计算上是高效的。然而,在一些实施例中,可以在不首先生成DSF描述符的情况下,根据所选择的特征点生成帧描述符。
对地图进行排名和合并
在此描述的是用于在交叉现实(XR)系统中对多个环境地图进行排名和合并的方法和装置。地图合并可以使表示物理世界的重叠部分的地图能够被组合以表示更大的区域。对地图进行排名可以使得能够有效地执行本文所述的技术,包括地图合并,该技术涉及基于相似性从一组地图中选择地图。在一些实施例中,例如,系统可以保持一组规范地图,该组规范地图以许多XR设备中的任何XR设备可以对其进行访问的方式被格式化。这些规范地图可以通过将来自那些设备的所选择的跟踪地图与其他跟踪地图或先前存储的规范地图进行合并而形成。可以对规范地图进行排名,例如,用于选择一个或多个规范地图以与新的跟踪地图合并和/或从集合中选择一个或多个规范地图以在设备中使用。
为了向用户提供逼真的XR体验,XR系统必须了解用户的物理环境,以便正确关联虚拟对象相对于真实对象的位置。可以从用户位置的环境地图中获得有关用户实际环境的信息。
发明人已经认识到并且理解到,XR系统可以通过使能有效地共享由多个用户收集的真实/物理世界的环境地图来向共享包括真实和/或虚拟内容的相同世界的多个用户提供增强的XR体验,无论这些用户是在同一时间还是在不同时间出现在世界中。然而,在提供这种系统方面存在重大挑战。这样的系统可以存储由多个用户生成的多个地图和/或系统可以存储在不同时间生成的多个地图。对于可能采用先前生成的地图执行的操作(诸如例如如上所述的定位),可能需要进行大量处理才能从XR系统中收集的所有环境地图中识别同一世界(例如,相同的真实世界位置)的相关环境地图。在一些实施例中,可能仅存在设备可以访问的少量环境地图以例如用于定位。在一些实施例中,可以存在设备可访问的大量的环境地图。发明人已经认识并理解用于快速且准确地对来自所有可能的环境地图(诸如例如图28中的所有规范地图120的总体(universe))中的环境地图的相关性进行排名的技术。然后可以选择高排名地图以进行进一步处理,诸如在用户显示器上渲染虚拟对象,使其与用户周围的物理世界进行现实交互,或者将该用户收集的地图数据与存储的地图合并以创建更大或更准确的地图。
在一些实施例中,可以通过基于多个标准过滤存储的地图来识别与在物理世界中的位置处的用户的任务有关的存储的地图。这些标准可以指示由在该位置的用户的可穿戴设备生成的跟踪地图与存储在数据库中的候选环境地图的比较。可以基于与地图相关联的元数据(诸如由生成地图的设备检测到的Wi-Fi指纹和/或在形成地图的同时设备所连接到的一组BSSID)来执行比较。还可以基于地图的压缩或未压缩内容执行比较。可以通过比较从地图内容计算出的矢量来执行基于压缩表示的比较。例如,可以通过在存储的地图内定位跟踪地图来执行基于未压缩地图的比较,反之亦然。可以基于减少要考虑的候选地图的数量所需的计算时间来按顺序执行多次比较,其中与需要更多计算的其它比较相比,涉及较少计算的比较将在该顺序中更早地执行。
图26描绘了根据一些实施例的被配置为对一个或多个环境地图进行排名和合并的AR系统800。AR系统可以包括AR设备的可通行世界模型802。填充可通行世界模型802的信息可来自AR设备上的传感器,该传感器可包括存储在处理器804(例如,图4中的本地数据处理模块570)中的计算机可执行指令,该处理器可执行一些或全部处理以将传感器数据转换为地图。这种地图可以是跟踪地图,因为当AR设备在区域中操作时可以一边收集传感器数据一边构建跟踪地图。与该跟踪地图一起,可以提供区域属性,以便指示该跟踪地图表示的区域。这些区域属性可以是地理位置标识符,诸如表示为纬度和经度的坐标,或者是AR系统用来表示位置的ID。可替代地或另外,区域属性可以是对于该区域具有唯一的很高的可能性的被测量的特性。区域属性例如可以从在该区域中检测到的无线网络的参数导出。在一些实施例中,区域属性可以与AR系统在附近和/或连接到的接入点的唯一地址相关联。例如,区域属性可以与5G基站/路由器、Wi-Fi路由器等的MAC地址或基本服务集标识符(BSSID)相关联。
在图26的示例中,可以将跟踪地图与环境的其它地图合并。地图排名部分806从设备PW 802接收跟踪地图,并与地图数据库808通信以选择和排名来自地图数据库808中的环境地图。将排名较高的所选择地图发送到地图合并部分810。
地图合并部分810可以对从地图排名部分806发送的地图执行合并处理。合并处理可能需要将跟踪地图与一些或所有排名地图合并,并将新的合并地图发送到可通行世界模型812。地图合并部可以通过识别描绘物理世界的重叠部分的地图来合并地图。可以对齐那些重叠的部分,以便可以将两个地图中的信息聚合到最终地图中。规范地图可以与其他规范地图和/或跟踪地图合并。
聚合可能需要用来自另一地图的信息来扩展一个地图。替代地或附加地,聚合可能需要基于另一地图中的信息来调整一个地图中的物理世界的表示。例如,后面的地图可以揭示产生特征点的对象已经移动,从而可以基于后面的信息来更新地图。替代地,两个地图可以用不同的特征点来表征同一区域,并且聚合可能需要从两个地图中选择一组特征点以更好地表示该区域。不管合并过程中发生的具体处理如何,在一些实施例中,来自被合并的所有地图的PCF可以被保留,使得相对于它们对内容进行定位的应用可以继续这样做。在一些实施例中,地图的合并可以导致冗余的持久姿势,并且一些持久姿势可以被删除。当PCF与要删除的持久姿势相关联时,合并地图可能需要修改PCF以与合并后保留在地图中的持久姿势相关联。
在一些实施例中,随着地图进行扩展和或更新,它们可以被细化。细化可能需要进行计算以减少可能表示物理世界中相同对象的特征点之间的内部不一致。不一致可能产生于与提供表示物理世界中相同对象的特征点的关键帧相关联的姿势不准确。例如,这种不一致可能产生于计算相对于跟踪地图的姿势的XR设备,该跟踪地图又是基于估计姿势而建立的,使得姿势估计中的误差会累积,从而随时间推移形成姿势准确性的“漂移”。通过执行束调整或其他操作来减少来自多个关键帧的特征点的不一致,可以细化地图。
在细化时,持久点相对于地图原点的位置可以改变。因此,与该持久点相关联的变换,诸如持久姿势或PCF,可能会发生变化。在一些实施例中,结合地图细化(无论是作为合并操作的一部分还是出于其他原因而执行)的XR系统可以重新计算与已变化的任何持久点相关联的变换。这些变换可能被从计算变换的部件推送到使用该变换的部件,以使变换的任何使用都可以基于持久点的经更新的位置。
可通行世界模型812可以是云模型,该云模型可以由多个AR设备共享。可通行世界模型812可以存储或以其它方式访问地图数据库808中的环境地图。在一些实施例中,当先前计算的环境地图被更新时,可以删除该地图的先前版本,以便从数据库中删除过时的地图。在一些实施例中,当先前计算的环境地图被更新时,该地图的先前版本可以被存档,从而使得能够取得/观看环境的先前版本。在一些实施例中,可以设置许可,使得只有具有某些读/写访问权限的AR系统才可以触发地图的先前版本被删除/存档。
从由一个或多个AR设备/系统提供的跟踪地图创建的这些环境地图可以由AR系统中的AR设备访问。地图排名部分806也可以用于向AR设备提供环境地图。AR设备可以发送请求其当前位置的环境地图的消息,并且地图排名部分806可以用于选择和排名与请求设备有关的环境地图。
在一些实施例中,AR系统800可以包括被配置为从云PW 812接收合并地图的下采样部814。从云PW 812接收的合并地图可以是用于云的存储格式,其可以包括高分辨率信息,例如每平方米大量的PCF或多个图像帧或与PCF相关的大量特征点集。下采样部814可以被配置为将云格式地图下采样为适合于存储在AR设备上的格式。设备格式的地图可以包含较少的数据,诸如较少的PCF或针对每个PCF存储的较少数据,以适应AR设备有限的本地计算能力和存储空间。
图27是示出了可以存储在远程存储介质(例如云)中的多个规范地图120的简化框图。每个规范地图120可以包括多个规范地图标识符,这些标识符指示规范地图在物理空间内的位置,例如地球上某处。这些规范地图标识符可以包括以下标识符中的一个或多个:由经度和纬度范围表示的区域标识符、帧描述符(例如,图21中的全局特征串316)、Wi-Fi指纹、特征描述符(例如,图21中的特征描述符310)、以及指示对地图做出贡献的一个或多个设备的设备标识。
在示出的示例中,规范地图120在地理上以二维图案布置,因为它们可以存在于地球表面上。规范地图120可以由相应的经度和纬度唯一地识别,因为具有重叠的经度和纬度的任何规范地图都可以合并为新的规范地图。
图28是示出根据一些实施例的选择规范地图的方法的示意图,其可以用于将新的跟踪地图定位到一个或多个规范地图。该方法可以从访问(动作120)规范地图120的总体开始,作为示例,该规范地图120的总体可以存储在可通行世界的数据库中(例如,可通行世界模块538)。规范地图的总体可以包括来自所有先前到访过的位置的规范地图。XR系统可以将所有规范地图的总体过滤为一个小的子集或仅单个地图。应当理解,在一些实施例中,由于带宽限制,不可能将所有规范地图发送到观看设备。选择被选择为可能是用于匹配跟踪地图的候选的子集发送到设备可以减少与访问地图的远程数据库相关联的带宽和等待时间。
该方法可以包括基于具有预定大小和形状的区域来过滤(动作300)规范地图的总体。在图27所示的示例中,每个方形可以表示一个区域。每个方形可以覆盖50m×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和5GNR的协议。在图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,其可具有与AA7更高的Jaccard相似性内的区域属性;以及环境地图CM4,其也包括区域属性AA7。环境地图CM1不包括在该组中,因为它具有与AA7最低的Jaccard相似性。
可以基于与地图相关联的元数据来执行动作902-906的处理,而无需实际访问存储在地图数据库中的地图的内容。其它处理可涉及访问地图的内容。动作908指示在基于元数据过滤之后访问保留在子集中的环境地图。应当理解,如果可以用所访问的内容执行后续操作,则可以在该过程中的较早或较晚时执行该动作。
方法900可以包括基于表示跟踪地图和该组环境地图中的环境地图的内容的度量的相似性来过滤(动作910)该组环境地图。表示跟踪地图和环境地图的内容的度量可以包括从地图的内容计算出的值的矢量。例如,如上所述,为用于形成地图的一个或多个关键帧计算的深度关键帧描述符可以提供用于比较地图或地图的部分的度量。度量可以从在动作908处取得的地图来计算,或者可以被预先计算并被存储为与那些地图相关联的元数据。在一些实施例中,基于表示跟踪地图和该组环境地图中的环境地图的内容的度量的相似性来过滤该组环境地图可包括:将跟踪地图的特征矢量与表示该组环境地图中的环境地图的矢量之间具有最小矢量距离的环境地图保留在该组环境地图中。
方法900可以包括:基于跟踪地图的一部分与该组环境地图中的环境地图的部分之间的匹配程度来进一步过滤(动作912)该组环境地图。匹配程度可以被确定为定位过程的一部分。作为非限制性示例,可以通过在跟踪地图和环境地图中识别足够相似的临界(critical)点来执行定位,因为它们可能表示物理世界的相同部分。在一些实施例中,临界点可以是特征、特征描述符、关键帧、关键装配、持久姿势和/或PCF。然后,跟踪地图中的该组临界点可能被对齐以与环境地图中的该组临界点产生最优适配。对应的临界点之间的均方距离可能被计算,并且如果低于跟踪地图的特定区域的阈值,则用作跟踪地图和环境地图表示物理世界的相同区域的指示。
在一些实施例中,基于跟踪地图的一部分与该组环境地图中的环境地图的部分之间的匹配程度来过滤该组环境地图可包括:计算由跟踪地图表示的物理世界(也在一组环境地图的环境地图中表示)的体积;以及将具有比从该组环境地图中过滤出的环境地图更大的计算体积的环境地图保留在该组环境地图中。图34描绘了根据一些实施例的动作912的示例。在示出的示例中,在动作912之后的该组环境地图包括环境地图CM4,该环境地图CM4具有与跟踪地图1102的区域匹配的区域1402。环境地图CM1不包括在该组中,因为它不具有与跟踪地图1102的区域匹配的区域。
在一些实施例中,可以按照动作906、动作910和动作912的顺序来过滤该组环境地图。在一些实施例中,可以基于动作906、动作910和动作912来过滤该组环境地图,可以根据从最低到最高的,基于执行过滤所需的处理的顺序来执行该动作906、动作910和动作912。方法900可以包括加载(动作914)该组环境地图和数据。
在所示的示例中,用户数据库存储指示使用AR设备的区域的区域标识。区域标识可以是区域属性,该区域属性可以包括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的方法和/或图900的方法900选择的规范地图)的群组开始。动作3702可以包括将跟踪地图的关键装配定位到规范地图的群组中。每个关键装配的定位结果可以包括关键装配的本地化姿势和一组2D到3D特征对应关系。
在一些实施例中,方法3700可以包括将跟踪地图分裂(动作3704)为连接的部分,这可以通过合并连接的片来鲁棒地合并地图。每个连接的部分可以包括在预定距离内的关键装配。方法3700可以包括:将大于预定阈值的连接部分合并(动作3706)到一个或多个规范地图中;以及从跟踪地图中移除已合并的连接部分。
在一些实施例中,方法3700可以包括合并(动作3708)与跟踪地图的相同连接部分进行合并的群组中的规范地图。在一些实施例中,方法3700可以包括将尚未与任何规范地图合并的跟踪地图的其余连接部分提升(动作3710)为规范地图。在一些实施例中,方法3700可以包括合并(动作3712)跟踪地图和与跟踪地图的至少一个连接部分合并的规范地图的持久姿势和/或PCF。在一些实施例中,方法3700可以包括例如通过融合地图点并修剪冗余关键装配来最终化(行动3714)规范地图。
图38A和38B示出了根据一些实施例的通过更新规范地图700创建的环境地图3800,该规范地图700可以用新跟踪地图从跟踪地图700(图7)进行升级。如相对于图7所图示和描述的,规范地图700可以提供由点702表示的在相应物理世界中的重建物理对象的平面图706。在一些实施例中,地图点702可以表示物理对象的特征,该物理对象可以包括多个特征。可以捕获关于物理世界的新跟踪地图,并将其上传到云以与地图700合并。新跟踪地图可以包括地图点3802以及关键装配3804、3806。在所示的示例中,关键装配3804表示通过例如建立与地图700的关键装配704的对应关系(如图38B所示)而成功地定位到规范地图的关键装配。另一方面,关键装配3806表示尚未定位到地图700的关键装配。在一些实施例中,可以将关键装配3806提升为单独的规范地图。
图39A至39F是示出基于云的持久坐标系的示例的示意图,该基于云的持久坐标系为相同物理空间中的用户提供共享的体验。图39A示出了例如来自云的规范地图4814由图20A至图20C的用户4802A和4802B所佩戴的XR设备接收。规范地图4814可具有规范坐标框架4806C。规范地图4814可以具有带有多个相关联的PP(例如,图39C中的4818A、4818B)的PCF4810C。
图39B示出了XR设备在其相应的世界坐标系4806A、4806B与规范坐标框架4806C之间建立的关系。例如,这可以通过定位到相应设备上的规范地图4814来完成。对于每个设备,将跟踪地图定位到规范地图可以导致对于每个设备其本地世界坐标系与规范地图的坐标系之间的变换。
图39C示出可以计算在相应设备上的本地PCF(例如,PCF 4810A、PCF 4810B)到规范地图上的相应持久姿势(例如,PP 4818A、PP 4818B)之间的变换(例如,变换4816A、变换4816B)作为定位的结果。利用这些转换,每个设备都可以使用其本地PCF来确定相对于本地设备在何处显示附接到PP 4818A、PP 4818B或规范地图的其他持久点的虚拟内容,其中,本地PCF可以通过处理利用设备上的传感器检测到的图像来在设备上本地检测。这样的方法可以相对于每个用户准确地定位虚拟内容,并且可以使每个用户能够在物理空间中具有虚拟内容的相同体验。
图39D示出了从规范地图到本地跟踪地图的持久姿势快照。可以看出,本地跟踪地图通过持久姿势相互连接。图39E示出了由用户4802A佩戴的设备上的PCF 4810A能够通过PP 4818A在由用户4802B佩戴的设备中访问。图39F示出了跟踪地图4804A、4804B和规范地图4814可以合并。在一些实施例中,一些PCF可以由于合并而被去除。在所示的示例中,合并地图包括规范地图4814的PCF 4810C,但不包括跟踪地图4804A、4804B的PCF 4810A、PCF4810B。在地图合并之后,先前与PCF 4810A、PCF 4810B相关联的PP可以与PCF 4810C相关联。
示例
图40和图41示出了由图9的第一XR设备12.1使用跟踪地图的示例。图40是根据一些实施例的三维的第一本地跟踪地图(地图1)的二维表示,其可以由图9的第一XR设备生成。图41是示出根据一些实施例的将地图1从图9的第一XR设备上传到服务器的框图。
图40示出地图1第一XR设备12.1上的和虚拟内容(内容123和内容456)。地图1具有原点(原点1)。地图1包括许多PCF(PCF a至PCF d)。从第一XR设备12.1的角度来看,PCF a例如被定位在地图1的原点处并具有(0,0,0)的X、Y和Z坐标,并且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的(1,0,0)的X、Y和Z关系。
在图41中,第一XR设备12.1将地图1上传到服务器20。在该示例中,由于服务器没有存储针对由跟踪地图所表示的物理世界的同一区域的规范地图,并且跟踪地图被存储为初始规范地图。服务器20现在具有基于地图1的规范地图。在该阶段第一XR设备12.1具有为空的规范地图。为了讨论的目的,并且在一些实施例中,服务器20除了地图1之外不包括其它地图。第二XR设备12.2上没有存储地图。
第一XR设备12.1还向服务器20发送其Wi-Fi签名数据。服务器20可以使用Wi-Fi签名数据基于从其它设备收集的情报来确定第一XR设备12.1的大致位置,该其它设备过去已经与已记录的这类其它设备的GPS位置一起连接到服务器20或其它服务器。第一XR设备12.1现在可以结束第一会话(参见图8),并且可以与服务器20断开连接。
图42是示出了根据一些实施例的图16的XR系统的示意图,其示出了在第一用户14.1终止第一会话之后,第二用户14.2已经使用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可以在距先前持久姿势1150阈值距离(例如3米)之后被自动生成。一个或多个持久姿势1150可以对应于单个PCF 1160,该单个PCF 1160可以在预定距离(例如,每5米)之后被自动生成。随着时间推移,随着用户继续在用户的环境周围移动,并且XR设备继续收集更多的数据(诸如图像1110),可以创建附加PCF(例如PCF 3和PCF 4、5)。一个或多个应用1180可以在XR设备上运行,并将虚拟内容1170提供给XR设备以呈现给用户。虚拟内容可以具有关联的内容坐标框架,该内容坐标框架可以相对于一个或多个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和4、5,而规范地图在创建地图2之前创建了PCF a和c,因此创建了不同的PCF以表示实际空间中的相同体积(例如,在不同的地图中)。
如图47中所示,第二XR设备12.2扩展了地图2,以包括来自规范地图的PCF a-d。包括PCF a-d表示地图2到规范地图的定位。在一些实施例中,XR系统可以执行优化步骤以从重叠区域去除重复的PCF,诸如1410中的PCF,PCF 3和PCF 4、5。在地图2定位后,虚拟内容(诸如内容456和内容123)的放置将予更新的地图2中最接近的更新的PCF相关联。虚拟内容相对于用户出现在相同的真实世界位置中,尽管更改了用于内容的PCF附加,并且尽管更新了用于地图2的PCF。
如图48中所示,随着进一步的PCF(PCF e、f、g和h)由第二XR设备12.2识别出,例如当用户真实世界周围走动时,第二XR设备12.2继续扩展地图2。还应注意,地图1在图47和图48中没有扩展。
参考图49,第二XR设备12.2将地图2上传到服务器20。服务器20将地图2与规范地图一起存储。在一些实施例中,当针对第二XR设备12.2的会话结束时,地图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是共同的。服务器扩展规范地图以包括PCF e至h和来自地图2的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和第二XR设备12.2如上所述继续,以将其相应的本地地图(分别为地图1和地图2)定位到新的规范地图。
如图52中所示,头部坐标框架96或“头部姿势”与地图2中的PCF相关。在一些实施例中,地图的原点,原点2,是基于会话开始时第二XR设备12.2的头部姿势。当在会话期间创建PCF时,将相对于世界坐标框架原点2放置PCF。地图2的PCF用作相对于规范坐标框架的持久坐标框架,其中世界坐标框架可以是前一会话的世界坐标框架(例如,图40中的地图1的原点1)。这些坐标框架通过用于将地图2定位到规范地图的相同变换相关,如上面结合图46B所讨论的。
先前已经参考图9讨论了从世界坐标框架到头部坐标框架96的变换。图52中所示的头部坐标框架96仅具有两个正交轴,该两个正交轴相对于地图2的PCF处于特定的坐标位置中,以及相对于地图2处于特定的角度。然而应当理解,头部坐标框架96相对于地图2的PCF处于三维位置,并且在三维空间内具有三个正交轴。
在图53中,头部坐标框架96已相对于地图2的PCF移动。由于第二用户14.2已移动其头部,因此头部坐标框架96已移动。用户可以以六个自由度(6dof)移动其头部。头部坐标框架96因此可以在6dof(即,从其在图52中的先前位置在三维中,以及相对于地图2的PCF围绕三个正交轴)中移动。当图9中的真实对象检测相机44和惯性测量单元48分别检测头部单元22的真实对象和运动时,头部坐标框架96被调节。关于头部姿势跟踪的更多信息公开在题为“用于显示设备的增强姿势确定(Enhanced Pose Determination for DisplayDevice)”的美国专利申请序列号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现在已在比第一会话更晚的时间发起了第二会话。由于地图1已经存储在第一XR设备12.1上,因此第一XR设备12.1不会从服务器20下载地图1。如果丢失了地图1,则第一XR设备12.1从服务器20下载地图1。然后,第一XR设备12.1继续构建地图2的PCF、定位到地图1,并进一步开发如上所述的规范地图。然后,如上所述,第一XR设备12.1的地图2用于关联本地内容、头部坐标框架、本地声音等。
参考图57和图58,也有可能一个以上的用户在同一会话中与服务器交互。在本示例中,第一用户14.1和第二用户14.2由第三用户14.3与第三XR设备12.3结合在一起。每个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、12.2和12.3中的每个XR设备。
图59示出根据一些实施例的用于恢复和/或重置头部姿势的观看方法的方面。在所示的示例中,在动作1400处,观看设备被通电。在动作1410处,响应于通电,发起新的会话。在一些实施例中,新的会话可以包括建立头部姿势。通过首先捕获环境的图像并且然后从图像确定表面,在固定到用户头部的头戴式框架上的一个或多个捕获设备捕获环境的表面。在一些实施例中,表面数据可以与来自重力传感器的数据相结合以建立头部姿势。可以使用其他合适的建立头部姿势的方法。
在动作1420处,观看设备的处理器进入用于跟踪头部姿势的例程。当用户移动其头部时,捕获设备继续捕获环境的表面,以确定头戴式框架相对于表面的取向。
在动作1430处,处理器确定头部姿势是否已经丢失。头部姿势可能丢失,这是由于“边缘”情况,诸如可导致低特征获取的过多的反射表面、弱光、空白的墙壁、在室外等;或者由于动态情况,诸如移动和形成地图的一部分的人群。在1430处的例程允许经过一定量的时间,例如10秒,以允许足够的时间来确定头部姿势是否已经丢失。如果头部姿势尚未丢失,则处理器返回到1420,并再次进入对头部姿势的跟踪。
如果在动作1430处头部姿势已经丢失,则处理器在1440处进入例程以恢复头部姿势。如果由于弱光导致头部姿势丢失,则将通过观看设备的显示器向用户显示诸如以下消息的消息:
系统正在检测弱光条件。请移动到光线更充足的区域。
系统将继续监视是否有足够的光可用以及是否可以恢复头部姿势。该系统可以可替代地确定表面的低纹理正在导致头部姿势丢失,在这种情况下,在显示器中向用户给出以下提示,作为改善表面捕获的建议:
系统无法检测到具有精细纹理的足够的表面。请移动至表面纹理较不粗糙以及纹理更精细的区域。
在动作1450处,处理器进入例程以确定头部姿势恢复是否已经失败。如果头部姿势恢复没有失败(即,头部姿势恢复已经成功),则处理器通过再次进入对头部姿势的跟踪来返回动作1420。如果头部姿势恢复已经失败,则处理器返回到动作1410以建立新的会话。作为新会话的一部分,所有缓存的数据均无效,此后重新建立头部姿势。任何合适的头部跟踪方法都可以与图59中描述的过程结合使用。美国专利申请第16/221,065号描述了头部跟踪,因此通过引用将其全部内容并入本文。
远程定位
各种实施例可以利用远程资源来促进个人和/或用户组之间的持久且一致的交叉现实体验。发明人已经认识到并理解,可以在不下载一组规范地图的情况下实现利用如本文所述的规范地图操作XR设备的益处。上面讨论的图30示出了将规范下载到设备的示例实现方式。例如,不下载地图的益处可以通过将特征和姿势信息发送到维护一组规范地图的远程服务来实现。根据一些实施例,寻求使用规范地图以将虚拟内容定位在相对于规范地图指定的位置的设备可以从远程服务接收特征与规范地图之间的一个或多个变换。这些变换可以在设备上使用,该设备维护关于这些特征在物理世界中的位置的信息,以将虚拟内容定位在相对于规范地图指定的位置中,或者以其他方式识别物理世界中相对于规范地图指定的位置。
在一些实施例中,空间信息由XR设备捕获并传送到远程服务,诸如基于云的服务,该服务使用空间信息将XR设备定位到由XR系统的应用或其他部件使用的规范地图,从而指定虚拟内容相对于物理世界的位置。一旦被定位,将由设备维护的跟踪地图链接到规范地图的变换可以被传送到设备。可以结合跟踪地图使用变换来确定渲染相对于规范地图指定的虚拟内容的位置,或者以其他方式识别物理世界中相对于规范地图指定的位置。
发明人已经意识到,相对于传送地图数据,需要在设备和远程定位服务之间交换的数据可能非常小,传送地图数据可能在设备将跟踪地图传送到远程服务并从该服务接收一组规范地图以用于基于设备的定位时发生这种情况。在一些实施例中,在云资源上执行定位功能仅需要从设备向远程服务发送少量的信息。例如,不需要将完整的跟踪地图传送给远程服务以执行定位。在一些实施例中,诸如可能与如上所述的持久姿势相关地存储的特征和姿势信息可以被发送到远程服务器。如上所述,在特征由描述符表示的实施例中,上传的信息可能更小。
从定位服务返回到设备的结果可以是将上传的特征与匹配的规范地图的部分相关的一个或多个变换。这些变换可以在XR系统中结合其跟踪地图用于识别虚拟内容的位置或以其他方式识别物理世界中的位置。在使用诸如上述PCF的持久空间信息来指定相对于规范地图的位置的实施例中,定位服务可以在成功定位之后将特征与一个或多个PCF之间的变换下载到设备。
结果,XR设备和用于执行定位的远程服务之间的通信所消耗的网络带宽可能很低。该系统因此可以支持频繁定位,使与系统交互的每个设备能够快速获得用于定位虚拟内容或执行其他基于位置的功能的信息。当设备在物理环境中移动时,它可能会重复针对更新的定位信息的请求。此外,诸如通过合并额外的跟踪地图以扩展地图或提高其准确性,设备可能会频繁地获取对定位信息的更新,诸如当规范地图发生变化时。
此外,上传特征和下载变换可以通过增加凭借欺骗获得地图的难度,来增强XR系统中的在多个用户之间共享地图信息的隐私。例如,可以阻止未授权的用户通过发送对表示物理世界中未授权的用户并不处于的部分的规范地图的虚假请求来从系统获取地图。如果并非在该区域中实际存在的话,未授权的用户不可能访问其所正在请求的地图信息的物理世界的区域中的特征。在特征信息被格式化为特征描述的实施例中,在对地图信息的请求中欺骗特征信息的难度将复杂化。此外,当系统返回旨在应用于在请求位置信息的区域中操作的设备的跟踪地图的变换时,系统返回的信息可能对冒名顶替者几乎没有用处或没有用。
根据一些实施例,定位服务被实现为基于云的微服务。在一些示例中,实现基于云的定位服务可以帮助节省设备计算资源,并且可以使定位所需的计算能够以非常低的延迟执行。这些操作可以由几乎无限的计算能力或通过提供额外的云资源而可用的其他计算资源来支持,从而确保XR系统的可扩展性以支持众多设备。在一个示例中,可以在存储器中维护许多规范地图以进行几乎即时的访问,或者替代地将其存储在高可用性设备中以减少系统延迟。
此外,在云服务中对多个设备执行定位可以实现对过程的改进。定位遥感(telemetry)和统计可以提供关于哪些规范地图在有源存储器和/或高可用性存储中的信息。例如,可以使用对多个设备的统计来识别最频繁被访问的规范地图。
作为在云环境或具有相对于远程设备的大量处理资源的其他远程环境中的处理的结果,也可以实现额外的准确性。例如,相对于在本地设备上执行的处理,可以在云中可以在更高密度的规范地图上进行定位。地图可以存储在云中,例如,具有更多的PCF或每个PCF更高密度的特征描述符,从而提高了来自设备的一组特征与规范地图之间匹配的准确性。
图61是XR系统6100的示意图。在用户会话期间显示交叉现实内容的用户设备可以有多种形式。例如,用户设备可以是可穿戴XR设备(例如,6102)或手持移动设备(例如,6104)。如上所述,这些设备可以配置有软件,诸如应用或其他部件,和/或硬连线以生成可以用于在它们各自的显示器上渲染虚拟内容的本地位置信息(例如,跟踪地图)。
可以相对于全局位置信息指定虚拟内容定位信息,例如,全局位置信息可以被格式化为包含一个或多个PCF的规范地图。根据一些实施例,例如图61所示的实施例,系统6100配置有支持虚拟内容在用户设备上的运行和显示的基于云的服务。
在一个示例中,定位功能被提供为基于云的服务6106,其可以是微服务。基于云的服务6106可以在多个计算设备中的任何一个上实现,计算资源可以从这些计算设备分配给在云中执行的一个或多个服务。那些计算设备可以彼此互连并且对于诸如可穿戴XR设备6102和手持设备6104的设备是可访问的。这样的连接可以通过一个或多个网络提供。
在一些实施例中,基于云的服务6106被配置为接受来自各个用户设备的描述符信息并且将设备“定位”到一个或多个匹配的规范地图。例如,基于云的定位服务将接收到的描述符信息与相应的(一个或多个)规范地图的描述符信息相匹配。可以使用如上所述的技术来创建规范地图,这些技术通过合并由具有图像传感器或获取关于物理世界的信息的其他传感器的一个或多个设备所提供的地图来创建规范地图。然而,不要求规范地图由访问它们的设备来创建,因为这样的地图可以由地图开发者创建,例如,地图开发者可以通过使地图对定位服务6106能够使用来发布地图。
根据一些实施例,云服务处理规范地图身份证明,并且可以包括将规范地图的存储库过滤为一组潜在匹配的操作。过滤可以如图29所示来执行,或者通过使用过滤标准的任何子集和代替图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中做出是否请求定位的决定。可以应用一个或多个标准来确定是否请求定位。该标准可以包括时间的流逝,使得设备可以在一定阈值时间量之后请求定位。例如,如果在阈值时间量内没有尝试定位,则该过程可以从决策框6207继续到动作6208,在该动作6208处从云请求定位。该阈值时间量可以在10到30秒之间,例如25秒。替代地或附加地,定位可以由设备的运动来触发。执行过程6200的设备可以使用IMU或跟踪地图来跟踪其运动,并在检测到运动超过距设备最后被请求定位的位置的阈值距离时启动定位。例如,阈值距离可以在1到10米之间,诸如在3到5米之间。作为又一替代,可以响应于事件来触发定位,如上所述,诸如当设备创建新的持久姿势或设备的当前持久姿势改变时。
在一些实施例中,可以实现决策框6207,从而可以动态地建立用于触发定位的阈值。例如,在特征很大程度上一致使得将一组提取的特征与存储的地图的特征进行匹配的置信度可能较低的环境中,可能会更频繁地请求定位,以增加至少一次定位尝试将会成功的机会。在这种情况下,可以降低在决策框6207处应用的阈值。类似地,在特征相对较少的环境中,可以降低在决策框6207处应用的阈值以增加定位尝试的频率。
不管定位如何被触发,当被触发时,过程6200可以进行到动作6208,在该动作处,设备向定位服务发送请求,包括由定位服务用来执行定位的数据。在一些实施例中,可以提供来自多个图像帧的数据用于定位尝试。例如,除非多个图像帧中的特征产生一致的定位结果,否则定位服务可能不会认为定位成功。在一些实施例中,过程6200可以包括将特征描述符和所附的姿势信息保存到缓冲器中。缓冲器可以例如是循环缓冲器,存储从最近捕获的帧中提取的特征集。因此,定位请求可以与在缓冲器中累积的多个特征集一起发送。在一些设置中,缓冲器大小被实现为累积更有可能产生成功定位的若干数据集。在一些实施例中,缓冲器大小可以被设置为从例如两个、三个、四个、五个、六个、七个、八个、九个或十个帧中累积特征。可选地,缓冲器大小可以具有可以响应于定位失败而增加的基线(baseline)设置。在一些示例中,增加缓冲器大小和传输的特征集的相应数量会降低后续定位功能无法返回结果的可能性。
不管如何设置缓冲器大小,设备都可以将缓冲器的内容传送到定位服务作为定位请求的一部分。其他信息可以连同特征点和所附的姿势信息一起发送。例如,在一些实施例中,可以发送地理信息。地理信息可以包括例如GPS坐标或与跟踪地图或当前持久姿势的设备相关联的无线签名。
响应于在6208处发送的请求,云定位服务可以分析特征描述符以将设备定位到规范地图或由服务维护的其他持久地图。例如,描述符与设备所定位的地图中的一组特征相匹配。基于云的定位服务可以相对于基于设备的定位执行如上所述的定位(例如,可以依赖于上面讨论的用于定位的任何功能(包括地图排名、地图过滤、位置估计、过滤的地图选择、图44至图46中的示例,和/或相对于定位模块、PCF和/或PP识别和匹配等进行讨论的)。然而,代替将识别的规范地图传送到设备(例如,在设备定位中),基于云的定位服务可以继续基于规范地图的匹配特征和从设备发送的特征集的相对取向来生成变换。定位服务可以将这些变换返回给设备,设备可以在框6210处接收。
在一些实施例中,如上所述,由定位服务维护的规范地图可以采用PCF。在这样的实施例中,规范地图的与从设备发送的特征点匹配的特征点可以具有相对于一个或多个PCF指定的位置。因此,定位服务可以识别一个或多个规范地图,并且可以计算在随定位请求发送的姿势中表示的坐标框架与一个或多个PCF之间的变换。在一些实施例中,通过基于相应设备的地理数据过滤潜在地图来帮助识别一个或多个规范地图。例如,一旦过滤到候选集(例如,通过gps坐标等其他选项),可以详细分析规范地图的候选集以如上所述的确定匹配的特征点或PCF。
在动作6210处返回到请求设备的数据可以被格式化为持久姿势变换表。该表可以伴随一个或多个规范地图标识符,指示设备由定位服务定位到的规范地图。然而,应当理解,定位信息可以以其他方式格式化,包括作为变换列表,具有相关联的PCF和/或规范地图标识符。
不管变换是如何被格式化的,在动作6212,设备可以使用这些变换来计算渲染虚拟内容的位置,该虚拟内容的位置已经由XR系统的应用或其他部件相对于任何PCF进行指定。该信息可以替代地或附加地在设备上用于执行任何基于位置的操作,其中基于PCF来指定位置。
在一些场景中,定位服务可能无法将从设备发送的特征匹配到任何存储的规范地图,或者可能无法匹配与对定位服务的请求一起传送的足够数量的特征集来认为成功进行了定位。在这样的场景中,定位服务可以向设备指示定位失败,而不是如上面结合动作6210所述的将变换返回给设备。在这样的场景中,过程6200可以在决策框6209处分支到动作6230,在该动作6230处,设备可以采取一个或多个动作用于失败处理。这些动作可以包括增加保持为了定位而发送的特征集的缓冲器的大小。例如,如果定位服务不认为定位成功,除非三个特征集匹配,则缓冲器大小可以从5增加到6,从而增加三个所发送的特征集与由定位服务维护的规范地图匹配的机会。
替代地或附加地,失败处理可以包括调整设备的操作参数以触发更频繁的定位尝试。例如,可以减少定位尝试之间的阈值时间和/或阈值距离。作为另一示例,可以增加每个特征集中的特征点的数量。当从设备发送的集合中的足够数量的特征与地图的特征匹配时,可以认为发生特征集与存储在规范地图内的特征之间的匹配。增加发送的特征数量可以增加匹配的机会。作为具体示例,初始特征集大小可以是50,在每次连续定位失败时,其可以增加到100、150,然后是200。在成功匹配后,集合的大小然后可以返回到它的初始值。
失败处理还可以包括除了从定位服务以外获得定位信息。根据一些实施例,用户设备可以被配置为缓存规范地图。缓存地图允许设备访问和显示云端不可用的内容。例如,缓存的规范地图允许在通信失败或其他不可用的情况下进行基于设备的定位。
根据各种实施例,图62描述了用于设备发起基于云的定位的高级流程。在其他实施例中,所示步骤中的各种一个或多个步骤可以进行组合、省略、或调用其他过程以完成对相应设备视图中的虚拟内容的定位和最终可视化。
此外,应当理解,虽然过程6200示出了设备在决策框6207处确定是否启动定位,但是用于启动定位的触发可以来自设备外部,包括来自定位服务。例如,定位服务可以维护关于与其会话中的每个设备的信息。例如,该信息可以包括每个设备最近被定位到的规范地图的标识符。XR系统的定位服务或其他部件可以更新规范地图,包括使用上面结合图26描述的技术。当规范地图被更新时,定位服务可以向最近被定位到该地图的每个设备发送通知。该通知可以用作设备请求定位的触发和/或可以包括使用从设备最近发送的特征集所重新计算的更新的变换。
图63A、图63B和图63C是示出设备和云服务之间的操作和通信的示例过程流。框6350、6352、6354和6456所示的是示例架构和参与基于云的定位过程的部件之间的分离。例如,被配置为处理用户设备上的感知的模块、部件和/或软件在6350处示出(例如,660,图6A)。用于持久世界操作的设备功能在6352处示出(包括,例如,如上并且关于持久世界模块(例如,662,图6A)所描述的)。在其他实施例中,不需要6350和6352之间的分离并且所示的通信可以在设备上执行的过程之间。
类似地,在框6354处示出的是被配置为处理与可通行世界/可通行世界建模相关联的功能的云过程(例如,802、812,图26)。在框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可以包括针对给定设备和/或会话(未示出)填入(populate)位置的附加操作。例如,位置数据可以存储为设备区域属性值和用于选择接近设备位置的候选规范地图的属性值。
任何一个或多个位置选项可用于将规范地图集过滤为可能表示包括用户设备的位置的区域的那些规范地图集。在一些实施例中,规范地图可以覆盖物理世界的相对较大的区域。规范地图可以被分割成区域,使得地图的选择可能需要地图区域的选择。例如,地图区域可以是几十平方米的数量级。因此,经过滤的规范地图集可以是地图的区域集。
根据一些实施例,可以从候选规范地图、姿势特征、和传感器校准数据构建定位快照(snapshot)。例如,候选规范地图、姿势特征和传感器校准信息的阵列可以与确定特定匹配规范地图的请求一起发送。可以基于从设备接收的描述符和与规范地图相关联的存储的PCF数据来执行与规范地图的匹配。
在一些实施例中,将来自设备的特征集与作为规范地图的一部分存储的特征集进行比较。该比较可以基于特征描述符和姿势。例如,可以基于候选集中特征的数量来选择规范地图的候选特征集,候选集中的这些特征的描述符与来自设备的特征集的描述符足够相似以致于它们可能是相同的特征。例如,候选集可以是从用于形成规范地图的图像帧中导出的特征。
在一些实施例中,如果相似特征的数量超过阈值,则可以对候选特征集执行进一步处理。进一步的处理可以确定来自设备的姿势特征集可以与候选特征集对齐的程度。可以对于来自规范地图的特征集(类似于来自设备的特征)进行摆姿势。
在一些实施例中,特征被格式化为高维嵌入(例如,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)。设备可以使用该信息例如来改进其跟踪地图,诸如通过从用于构建其跟踪地图的特征集中移除离群者。替代地或附加地,来自定位服务的信息可以使设备能够将针对其跟踪地图的束调整(bundle adjustment)限制为基于内围者特征的计算调整或以其他方式对束调整过程施加约束。
根据另一个实施例,各种子过程或附加操作可以结合针对基于云定位所讨论的过程和/或步骤和/或作为针对基于云定位所讨论的过程和/或步骤的替代来使用。例如,候选地图识别可以包括基于与相应地图一起存储的区域标识符和/或区域属性来访问规范地图。
使用基于网络的内容的简化编程
在一些实施例中,XR系统可以被简单地编程以渲染虚拟内容。然而,该系统可以提供像通过执行诸如应用504(图3)的本机应用所提供的那样的沉浸式体验。可以通过使XR系统能够渲染基于网络的内容以看起来像由本机应用生成的内容那样来提供这样的体验。在一些实施例中,可以使用渲染由本机应用生成的虚拟内容的XR系统的部件来渲染基于网络的内容。
在一些实施例中,XR设备可以具有执行本机应用的架构。这种框架的一个例子是MagicScript架构。该架构可以执行以架构被配置为执行的语言编码的应用。这种应用的示例是MagicScript应用。MagicScript应用可以在由MagicScript架构执行时生成虚拟内容并可以响应于用户输入。
XR设备可以用在MagicScript框架中运行的应用进行编程,并进而以非本机语言执行程序,否则这些程序可能不会在架构上执行。该应用可能是模拟非本机架构的包装器或其他部件。在一些实施例中,该非本机语言可以与网络标准兼容,例如W3C。这种应用的示例是浏览器应用。例如,浏览器应用可以基于从网络位置下载的信息提供用于渲染的虚拟内容,以实现网络应用。下载的信息可以是内容本身,也可以是诸如动画之类的元素,当执行这些元素时,会生成用于渲染的内容。该下载信息中的网络内容可以由任何熟悉W3C标准的内容提供者准备,而不需要使用本机架构语言的可执行代码,从而减轻了内容开发者的负担。
XR设备可以被配置为使用户能够容易地指定用于渲染的网络内容。为了支持该功能,可以针对可以访问网络内容以获得用于渲染的虚拟内容的网络位置创建可安装实体。可以提供一种工具以使用户能够基于用户指定的网络位置和可选的其他信息针对网络位置创建可安装实体。
XR系统可以处理可安装实体以在用户界面中呈现用于渲染网络内容的选项,该用户界面可以是用户通过其选择本机应用的相同用户界面。程序启动器界面是这种用户界面的一个示例。在通过用户界面做出选择时,XR系统可以基于选择渲染内容。如果选择的是本机代码应用,则可以通过启动与应用相关联的可执行代码来生成该内容,该应用在被执行时提供虚拟内容。相反,如果选择是网络应用,则可以从网络内容导出虚拟内容,而不需要执行本机应用来生成内容。相反,例如,浏览器应用可以基于与网络应用相关联的网络内容来提供用于渲染的内容。然而,在每种情况下,可以使用管理虚拟内容渲染的XR系统的部件,从而为XR设备提供有效的机制来渲染来自网络应用或本机应用的虚拟内容。此外,在每种情况下,用户体验都可以是类似的沉浸的。
在一些实施例中,XR设备的本机框架可以在与本机应用相关联的有界体积内渲染由本机应用生成的内容。有界体积的示例是在用户设备上维护的棱镜。当本机应用提供内容时,它可以在与本机应用关联的棱镜中渲染。当用户在棱镜中做出象征命令或其他输入的手势时,XR设备可以向与该棱镜相关联的本机应用提供该输入的指示。根据一些实施例,浏览器应用可以与棱镜相关联。以这种方式,与网络应用相关联的网络内容可以被渲染为具有与通过执行本机应用所生成的内容相同的特征。
棱镜是诸如立方体或矩形的体积,在该体积中显示来自应用的虚拟内容。单个应用可以将内容渲染到多个棱镜中。棱镜在2018年12月18日提交并于2019年6月27日公布的共同拥有的美国专利申请公开号2019/0197785,题为“METHODS AND SYSTEM FOR MANAGINGAND DISPLAYING VIRTUAL CONTENT IN A MIXED REALITY SYSTEM”(“用于在混合现实中管理和显示虚拟内容的方法和系统”)中有更全面的描述,其全部内容通过引用并入本文。每个棱镜可以具有允许管理棱镜的应用(可称为“棱镜管理器”)控制在混合现实环境中的与一个或多个棱镜相关联的虚拟内容的显示的特征和特性。在一些实施例中,棱镜可以类似于2D显示环境中的“窗口”。在2D环境中,可以使用窗口来定义位置和菜单结构以及显示2D内容。同样,在XR系统的3D环境中,棱镜允许棱镜管理器围绕3D内容的显示包装与例如内容位置、3D窗口行为和菜单结构相关的控制。例如,控制可以包括至少将虚拟内容放置在用户环境中的特定位置、从环境中移除虚拟内容、复制虚拟内容和/或将副本放置在不同位置等。用于在3D环境中显示与棱镜相关联的内容的过程在以下专利申请中描述:2018年5月1日提交的、题为“MATCHING CONTENT TO A SPATIAL 3D ENVIRONMENT”(“将内容与空间3D环境匹配”),并被公布为美国专利申请公开号2018/0315248的共同拥有的美国专利申请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可以是类似于在例如台式计算机上运行的2D窗口管理器的3D窗口管理器,该2D窗口管理器用于管理在台式计算机的显示屏上显示的2D窗口。然而,棱镜管理器应用6430管理虚拟内容115在3D空间环境中的创建、放置和显示,以及在用户的景观6410中显示的多个虚拟内容115之间的交互。来自应用6440的虚拟内容115在一个或多个棱镜113内呈现给用户6403,为了说明的目的,在图64中以虚线勾勒出棱镜113。棱镜可以具有在由设备维护的坐标框架中指定的位置,柱如相对于如上所述的持久姿势和/或PCF。结果,在棱镜中呈现的虚拟内容可以具有相对于物理世界中的对象(诸如墙壁117a或桌子117b)的指定位置。
棱镜113可以是矩形的、立方体的、圆柱形的,或者可以在空间中定位和定向的任何其他形状。棱镜113可以是具有可以在其中呈现虚拟内容的边界的体积显示空间。虽然棱镜的边界在图64中示出,但是在一些实施例中,边界并不显示。设备可以从中确定棱镜边界的信息可以保持在设备上,并且这些边界可以限制虚拟内容的显示,指定用于在棱镜中显示,使得与棱镜相关联的虚拟内容不会显示在棱镜的边界之外。在一些实施例中,棱镜113可以实现为多应用场景图的子树。场景图是基于矢量的图形、编辑应用和现代游戏软件常用的通用数据结构,其安排图形场景的逻辑以及通常的(但不一定)空间表示。
(一个或多个)应用6440被给予棱镜113的实例以在其中放置内容。应用可以使用相对放置算法和变换在棱镜113内渲染2D/3D内容,但棱镜管理器最终仍负责总体交互模式,诸如内容提取。多个应用可以经由棱镜113渲染虚拟内容,具有将棱镜113分开的进程边界。在所示实施例中,每个应用进程可能有多个棱镜113,但每个棱镜精确地对应一个应用进程。因此,例如,站在杂货店的农产品过道中的用户可能会看到两个不同的棱镜,在两个不同的棱镜中,内容由同一个文档显示应用显示,该应用在装有苹果的箱上方显示有关苹果的营养信息并且在装有橙子的箱上方显示有关橙子的营养信息。但是,在此示例中,两个不同的应用无法在同一个棱镜中显示内容。此外,在共享棱镜的情况下,多个用户可能会看到单个应用在单个共享棱镜中呈现内容。因此,例如,在杂货店的农产品过道中都在看苹果的两个不同用户可能会看到苹果上方的棱镜,在该棱镜中,文档查看应用显示营养信息。
可以基于背景因素调整棱镜内的内容的放置和方向,诸如用户在特定坐标框架中相对于棱镜的位置、用户头部的姿势(在用户正在使用可穿戴XR设备的情况下)、或用户正在使用的其他一些支持XR的设备(诸如手机)的姿势。替代地或附加地,内容的外观和位置可以由应用控制以创建运动的外观、虚拟对象与其他虚拟对象的交互或其他动态行为。用于基于这些因素调整内容渲染的技术可以在作为美国专利申请公开号2018/0315248公布的题为“MATCHING CONTENT TO A SPATIAL 3D ENVIRONMENT”(“将内容与空间3D环境匹配”)的共同拥有的美国专利申请号15/968,673中找到,其先前通过引用并入。此外,在棱镜中渲染内容的应用也可以产生声音。
棱镜可以具有清晰和确定的边界。边界界定体积,相关的虚拟内容仅显示在棱镜的边界内。当用户看到棱镜6513中显示的虚拟内容时,可以不向用户显示棱镜的边界。
在一些实施例中,应用将要渲染的内容发送到在XR设备上运行的集中式渲染软件,该集中式渲染软件又将应用内容放置在专门为该应用创建的棱镜内。这可以通过集中式场景图来实现,如在2018年3月29日提交并于2018年10月4日公布的、标题为“CENTRALIZED RENDERING”(“集中渲染”)的共同拥有的美国专利申请第2018/0286116号中更全面地描述,其全部内容通过引用并入本文。在具有链接应用的棱镜的情况下,链接应用(或其实例)内容将被放置在它所链接的棱镜中。应用可以使用相对放置算法和任意变换在棱镜中渲染2D/3D内容。
每个棱镜可以具有与其相关联的数据,该数据定义棱镜、棱镜本身或棱镜内的内容显示的属性。例如,每个棱镜可以具有一组关联的键值特性,可以调整这些键值特性以指定行为的各个方面或传达有关给定棱镜为何存在的信息。在一些实施例中,棱镜的一些或全部特性可以由本机应用、Web应用提供,由XR系统基于上下文设置,或者可以默认分配施加的值,除非用户输入更改。例如,棱镜的默认位置可能是距离用户1.5米。这样的特性可以被分配给渲染来自本机应用的内容的棱镜和经由例如浏览器应用渲染网络内容的棱镜。可能与棱镜相关联的特性的示例在共同拥有的申请美国专利申请公开号2019/0197785中进行了讨论,该申请先前通过引用并入。
棱镜特性可以包括与棱镜尺寸(最小/最大/默认尺寸,调整尺寸v.重新缩放)、棱镜在环境中的放置(“广告牌选项”、“表面行为”),以及“子”棱镜(由其他棱镜创建的棱镜)的行为(“子棱镜生成位置”、“子棱镜头位高光”)相关的选项。棱镜特性还可以包括与触发棱镜中内容显示的条件相关的选项。例如,棱镜可以被配置为使得当XR设备的用户距离棱镜一定距离时,棱镜显示内容可用的指示,但不显示内容本身,除非用户请求查看内容。这样的配置可以在例如博物馆环境中使用,在该博物馆环境中,显示解释特定绘画历史的文档的棱镜可以放置在绘画旁边,但配置为仅当用户请求查看文档时才显示该文档。关于各种示例性棱镜特性的其他细节可以在共同拥有的申请美国专利申请公开号2019/0197785中找到,该申请先前通过引用并入本文。
另一个这样的特性是内容URL特性。此特性的值可以是链接,例如URL,或使XR设备上的棱镜管理器能够识别和检索要在棱镜中显示的内容的类似的标识符。在指定位置可访问的虚拟内容可以是静态的,使得通过直接从指定位置下载内容来获得内容。
替代地或附加地,要在体积内渲染的虚拟内容可以由应用生成。在这种场景下,该链接可以指示可以下载应用的位置。在一个示例性实施方式中,内容URL可以指向应用包(这里称为“MPK”),该应用包可以被存储为可以从作为应用商店操作的服务下载的文件。提供可在便携式设备上执行的应用的应用商店在本文中被称为“ML World”。MPK文件可以包含应用和应用旨在用于生成虚拟内容的媒介,诸如文档或视频文件。
在一些实施例中,可以通过使XR系统的用户能够从显示在用户环境中的用户界面选择网络内容来简单地提供对网络内容的访问。图65示出了XR系统的用户可以看到的环境6500。在该图示中,XR系统正在环境6500中显示用户界面。在该示例中,用户界面呈现程序启动器菜单6502。程序启动器菜单可以根据以上关于在环境中渲染虚拟内容设想的任何技术来渲染。
如图所示,程序启动器菜单6502被配置为向用户显示多个图标,包括图标6504和6506。用户可以从菜单中进行选择,诸如通过向3D空间中的菜单的图标被渲染的位置做出手势,通过注视图标阈值时间段或使用控制器(例如手持)指向菜单。基于对图标的选择,XR系统可以为用户渲染内容。作为非限制性示例,图标6504可以标识在执行时为多人游戏生成虚拟内容的本机应用。其他图标,例如图标6502,可以是与基于网络的内容相关联的网络应用。基于对图标6502的选择,XR系统可以从与图标6502相关联的网络位置获得信息,该信息指定随后可以渲染的web内容。
XR系统可以包括充当关于在启动器菜单6502中显示的图标的信息的注册表的数据存储。注册表可以存储将图标与它们识别的应用链接的信息。对于本机应用,注册表可以将图标与可执行代码相关联,当该可执行代码在本机架构上执行时生成用于渲染的虚拟内容。例如,对于网络应用,注册表可以包含将图标与标识网络位置的URL相关联的注册表条目。在选择该条目后,来自该URL的信息可以被访问并提供给浏览器应用的实例,该浏览器应用的实例然后可以提供用于根据从所指示的URL访问的网络内容渲染的虚拟内容。
图65提供了用户界面的示例。在一些实施例中,图标可以显示在不同于图65所示的用户界面中,诸如列表或其他类型的菜单。此外,图标不要求是图形图标。例如,文本字符串可以用作图标。
图66是图示在用户选择与XR应用相关联的图标时XR系统6600的操作的流程图,例如结合图65的程序启动器菜单6502的图标6504、6506所描述的。在步骤6602,XR系统6600可以接收选择程序启动器菜单中的图标的用户输入。
基于所选择的图标,在步骤6604,XR系统6600可以确定所选择的应用是否是本机应用或者所选择的图标是否与URL相关联,诸如当所选择的图标与网络应用相关联时可能是这种情况。步骤6604处的处理可能需要访问与启动器菜单相关联的注册表并访问关于与所选图标相关联的应用的信息。替代地或附加地,程序启动器或处理用户输入的XR系统的另一部件可以访问所指示的应用并确定该应用是否包括诸如来自URL的渲染网络内容的指示。替代地或附加地,所访问的信息可以指示所选择的图标指示本机应用或者不与将从其获得内容以供渲染的URL相关联。该步骤可以包括例如访问应用的清单文件。应当理解,在步骤6604,在确定如何启动应用时可以替代地或附加地考虑应用的其他方面,诸如应用类型的指示,其可以被编码在文件名、文件扩展名或以其他方式与应用或与应用相关的信息一起存储。
如果,作为步骤6604处的处理的结果,XR系统6600确定应用应该作为本机应用启动,则处理进行到步骤6606。在步骤6606,可以通过执行本机应用来生成内容。在一些实施例中,这可能需要XR系统6600的架构执行本机应用,如上所述。
在步骤6608,可以渲染通过在步骤6606执行本机应用而生成的内容。例如,如图64中关于应用6440和虚拟内容115所示出的,可以在系统管理的棱镜内渲染内容。
相反,如果,作为步骤6604处的处理的结果,XR系统确定所选择的图标与网络应用或呈现来自URL的内容的其他指示相关联,则XR系统可以进行到步骤6612和6614,在所示示例中,步骤6612和6614可以发生在浏览器6610内。在步骤6612,XR系统6600可以创建棱镜并启动链接到该棱镜的浏览器应用的实例。
可以向浏览器提供URL并且可以从URL获得表示内容的信息。这可能涉及XR系统6600访问信息以确定适当的URL,诸如通过与所选网络应用相关联的注册表条目或访问与所选网络应用相关联的清单。在一些实施例中,浏览器6610可以将包含表示来自URL的内容的信息的文件下载到XR系统6600。来自URL的内容可包括2D或3D对象,在某些示例中这些对象可以是动画的。表示内容的信息可以包括表示对象的信息和/或用于使对象有动画感的指令。在一些实施例中,从由URL指示的网络位置获得的文件或其他信息可以根据诸如W3C之类的标准来格式化,或者可以是浏览器被配置为处理的格式。
在步骤6614,XR系统6600与浏览器6610在由系统管理的棱镜内渲染步骤6612的内容,如图64中关于应用6440和虚拟内容115所示出的。在一些实施例中,可以渲染来自浏览器的内容,而无需也渲染可能与浏览器渲染的内容相关联出现的一些或全部视觉元素。例如,浏览器应用可以渲染用户界面,诸如用户可以通过其指定URL的导航栏。如结合以上一些实施例所描述的,诸如结合图64所描述的那些,可以无边界地显示棱镜中的内容。这可以通过提供逼真的物理和内容与真实世界环境之间的交互(例如,如结合以上图2所描述的)而具有为XR系统6600的用户实现沉浸式体验的效果。省略浏览器界面的导航栏或其他可见元素可以提供期望的用户体验。因此,XR系统可以在步骤6614渲染来自浏览器的内容,这与当浏览器用于其他功能时不同,诸如使用户能够指定从其获取网络内容的URL。
替代地或附加地,该用户界面可以是浏览器界面的简化版本。例如,当显示在棱镜中时,浏览器的用户界面可能比其他设置中使用的相应浏览器界面涉及更少或更多的基本控件。例如,当用户希望在他们的浏览器中流式传输视频内容、查看图像或玩游戏时,这可能是期望的,而无需具有浏览器界面的所有控件。在一些实施例中,可以渲染来自浏览器的内容,而无需也渲染可能与浏览器渲染的内容相关地出现的一些或所有视觉元素。例如,可以不渲染可能与内容相关联出现的视觉元素,直到通过用户输入与内容交互,诸如通过指向内容最短时间的用户凝视、通过手势、或通过用户对图腾上控件的启动。当检测到指向内容的用户输入时,可以显示视觉元素的简化或完整版本。在一些实施例中,当检测到特定用户交互或缺少用户交互时,可以停止渲染视觉元素。
在一些实施例中,XR系统可以配置有工具或实用程序,这些工具或实用程序使用户能够简单地将网络应用添加到程序启动器界面,从程序启动器界面,可以容易地选择网络应用。图67是描绘用户界面的实施例的示意图,用户可以通过该用户界面访问安装工具以将与网络内容相关联的图标添加到程序启动器菜单。在该示意图中,示出两个XR用户界面6700a和6700b,因为它们可能对XR系统的用户出现。可以向与浏览器交互的用户显示诸如6700a和6700b中描绘的那些XR用户界面。例如,用户可以通过导航栏或其他用户界面元素指定与他们希望访问的网络内容相关联的URL,从而导航到该URL。
例如,在经由浏览器导航到URL时,用户可以在浏览器用户界面中选择图标6710,该图标6710下拉用于与该菜单交互的选项菜单,从而创建用户界面6700a。经由用户界面6700a,用户可以指示他们希望将与网络内容相关联的图标添加到程序启动器菜单。用户可以选择菜单选项6704。如图所示,这里的菜单选项6704是“添加到启动器”选项,用户可以选择该选项作为对XR系统的命令以将在当前URL处的网络内容的图标添加到程序启动器菜单。在从用户接收到他们想要添加图标的指示时,可以访问安装工具以执行生成图标和/或将图标添加到程序启动器菜单的过程。
替代地或附加地,浏览器可以检测到URL指向可以从其访问网络应用的网络位置。基于这样的确定,浏览器可以生成用户界面6700b。在此示例中,浏览器已确定由URL指示的网络位置将信息存储在适合添加到程序启动器的网络应用中。例如,网络应用可以存储网络清单文件,该网络清单文件包括例如应用名称、用于打开网络应用的起始URL和/或可下载图标的URL。在一些实施例中,网络应用可以被配置为检测由浏览器发送的标准事件,并且在接收到该事件时,可以请求浏览器通知用户网络应用可用。例如,可以通过提示6702通知用户,该提示6702指示web应用可用,并提示用户确认将图标添加到程序启动器,以使得用户可以选择如上所述渲染该内容。提示6702可以允许用户指示他们是否想要将针对应用的图标添加到程序启动器菜单。
在从用户接收到他们想要添加图标的指示时,安装工具可以将图标添加到程序启动器菜单。图68是示出浏览器6800、安装工具6810和包管理器6830的操作的流程图。在该示例中,安装工具在浏览器内执行。例如,这样的配置可以在被配置为执行可配置部件(诸如插件或其他程序)的浏览器内实现。包管理器可以是XR系统架构的一部分。在所示实施例中,与URL相关联的网络应用被表示为可安装实体,其可以是包含用于将图标添加到启动器菜单的信息的数据结构。在所示示例中,可安装实体由安装工具生成。替代地或附加地,可安装实体可以从其他来源获得,包括从网络位置获得,在该网络位置处指定的URL处的网络内容的创建者存储可安装实体。
根据所示实施例,安装工具6810可以通过用户输入来激活,诸如结合图67所描述的,以便生成可用于将与网络内容相关联的图标添加到程序启动器菜单的可安装实体。应当理解,图68中所示的过程是示例性的,并且在一些实施例中,过程的步骤可以跳过、重复、用替代步骤替换等。还应当理解,图68的过程的一些或所有步骤可以在XR系统内执行,或者可以在诸如云计算环境的替代计算环境内执行。在所示示例中,指示网络内容的图标将被安装在作为XR系统的一部分的便携式电子设备上。
在所示实施例中,创建可安装实体的过程可以以多种方式之一启动。例如,在步骤6802或6804,用户可以从浏览器激活安装工具6810。例如,在步骤6802,XR系统可以检测到用户通过浏览器指示的URL包含适合安装在程序启动器中的网络应用。因此,系统可以生成提示,其可以是图67中的提示6702的形式,使用户能够指示他们希望将与网络内容相关联的图标添加到程序启动器菜单,从而激活安装工具。类似地,在图68中的步骤6804,对应于图67中6704的菜单选项允许用户指示他们希望将与网络内容相关联的图标添加到程序启动器菜单,从而激活安装工具6810。
不管如何启动过程,如果用户提供指示指定URL是要通过启动器菜单访问的网络内容的源的输入,则过程可以进行到步骤6812。在步骤6812,安装工具6810可以接收标识网络内容的URL。在当用户通过浏览器导航到URL时启动安装工具的示例中,该URL可以是浏览器的当前URL。在其他实施例中,除了URL之外或代替URL,可以接收web内容的另一标识符。
在步骤6814,安装工具可以基于接收到的标识符访问web内容。在一些实施例中,访问网络内容可能需要加载标识网络内容的URL。在一些实施例中,作为访问网络内容的一部分,可以从标准化形式的URL获得表示网络内容的信息。例如,在网络内容是网络应用的情况下,可以访问与网络应用相关联的网络清单并且由此可以获得表示网络内容的信息。例如,可以根据W3C规范来格式化该信息。
不管访问网络内容的方式如何,在步骤6816,安装工具6810可以确定所访问的网络内容是否满足一组标准。在一些实施例中,该组标准可以包括网络标准,例如W3C标准。在一些实施例中,该组标准可以包括其他标准,诸如格式化标准。可以通过处理内容或基于与内容一起存储的信息(诸如标准证书)来确定是否符合标准。
如果在步骤6816处确定,安装工具确定网络内容未能满足适当的标准,则可以结束安装过程并且通知用户安装失败。尽管图68示出了在步骤6834这发生在包管理器6830内,但是应当理解,安装可以在没有通知用户的情况下结束和/或可以在没有将控制传递给包管理器的情况下结束。例如,如果网络内容不符合标准,则可能根本不启动包管理器,并且该过程可以由于未启动包管理器而结束。
如果步骤6816确定网络内容确实符合该组标准,则通过安装工具6810的执行所执行的过程可以替代地进行到步骤6818。替代地,在一些场景中可以省略步骤6816并且过程可以进行到步骤6818而不执行步骤6816。
在步骤6818,可以执行检查以确定对应于网络内容的可安装实体是否已经在便携式电子设备上注册。在所示示例中,该步骤由安装工具6810执行。然而,在一些实施例中,包管理器6830可以执行该步骤。确定对应于网络内容的可安装实体是否已经在便携式电子设备上注册可以涉及访问注册表中的条目,其中存储在便携式电子设备上的由图标标识的应用可以与URL相关联。注册表可以以任何合适的形式存储在便携式电子设备上,例如表格、数据库或其他数据结构。如果在步骤6818安装工具确定与网络内容相关联的可安装实体已经在便携式电子设备上注册,则可以结束安装过程。安装过程可以在步骤6834或以如上面结合步骤6816所描述的其他方式结束,并且用户可能会或可能不会被通知安装失败。
如果安装工具6810确定与网络内容相关联的可安装实体尚未在设备上注册,或者通过其他方式确定要生成新的可安装实体,则安装工具进行到步骤6820。在步骤6820,安装工具可以基于在步骤6814访问的网络内容生成新的可安装实体。可安装实体可以包含XR系统可以用来呈现网络内容的菜单选项并在选择该菜单选项时访问它的信息。该信息可以被格式化为可以在计算设备和/或计算设备的部件之间传递的文件或其他数据结构。
在一些实施例中,安装工具6810可以为可安装实体创建清单。可安装实体的清单提供有关网络内容的信息。在一些实施例中,清单包括与网络内容相关联的URL,以及渲染来自URL的网络内容的指示,诸如应用类型标志或其他信息。除了清单之外,在一些实施例中,安装工具6810可以另外生成以表示便携式电子设备上的程序启动器菜单中的可安装实体的图标。图标可以是2D或3D图标,并且可以基于网络内容、与网络内容相关联的网络清单,或者可以是由安装工具6810产生的不基于网络内容的默认图标。不管图标是如何产生的,图标的规范都可以包含在可安装实体的清单中。例如,图标的规范可以是指示网络或便携式电子设备上的存储图标的位置的路径。图标可以替代地或附加地表示为图形文件或其他格式。
一旦根据步骤6820生成了可安装实体,控制就转移到包管理器6830。在步骤6832,包管理器可以在便携式电子设备上注册可安装实体。如上所述,这可能需要在便携式电子设备的注册表中创建条目。此外,注册可安装实体可以包括将从在步骤6820生成的图标中选择的可安装实体的图标添加到程序启动器菜单。在步骤6834,安装过程结束。在一些实施例中,包管理器可以通知用户与网络内容相关联的应用已经成功地安装在便携式电子设备上。
在一些实施例中,可能希望生成可安装实体而不将其安装在便携式电子设备上。例如,内容创建者可能希望生成可安装实体并在应用商店中共享它,应用商店的示例是MLWorld。在这样的实施例中,内容创建者可以使用类似于安装工具6810的生成工具,以便为可安装实体自动生成清单和图标。生成工具可以跳过由安装工具执行的某些步骤,诸如确定可安装实体是否已经在便携式电子设备上注册。相反,生成工具可以执行安装工具6810不执行的步骤,诸如将可安装实体存储在内存中或将其上传到云。此外,在一些实施例中,内容创建者可以通过提供清单文件和图标来手动产生可安装实体。
图69是描绘根据一些实施例的内容创建者6900可以如何创建和共享可安装实体的示意图。在所示示例中,内容创建者6900将包含他们创建或选择的网络内容的URL输入到创建者门户6902,创建者门户6902将请求转发到后端服务器6904。后端服务器6904可以执行与上面生成工具关联地描述的一些步骤。在所示示例中,后端服务器通过访问网络内容的网络清单基于URL访问网络内容(诸如在图68的安装工具的步骤6814中),并执行检查以确定网络内容是否满足可安装的标准(诸在图68的安装工具的步骤6816中)。
然后后端服务器生成可安装实体,如结合以上图68的步骤6820所描述的,并尝试用ML World注册可安装实体。应当理解,在一些替代实施例中,可安装实体可以存储在存储器中而无需在ML World或另一个应用商店中注册,或者可以简单地返回给内容创建者。在图69的示例中,后端服务器6904可以通过创建者门户6902向内容创建者6900通知其尝试基于输入的URL注册可安装实体的结果。例如,可以通知内容创建者提交的URL不符合要求的标准,或者可以通知内容创建者可安装实体已成功用ML World注册。在一些实施例中,在用ML World注册可安装实体之后,在可安装实体可用于用户从ML World安装之前可能需要手动验证步骤。
根据本文描述的技术基于网络内容生成和安装XR应用可以在某些场景中提供一个或多个益处。无需使用可执行代码生成内容即可获得内容的能力允许以最小的开发努力生成与网络内容相关联的应用,同时本文描述的用于启动此类应用并在棱镜中显示相应网络内容的技术允许完全沉浸式的用户体验,如可以用通过执行代码生成内容的本地应用来实现的那样。此外,根据这些技术的应用可以利用现有的浏览器功能,诸如内容缓存。网络内容可以本地缓存,这样可以改进应用的启动时间。此外,由于此类应用可以自动生成并直接从内容创建者或发布者的网站安装,因此可以减少应用的下载时间。
此外,如本文所述的技术可以是安全的,因为在浏览器内渲染而不是由本地下载和执行的代码渲染的网络内容可能更受限于不正确地访问XR系统的部件。在一些实施例中,这种配置使应用能够访问便携式电子设备的硬件和/或软件部件,同时使用户能够通过许可来控制这种访问。图70是描绘根据本文描述的技术的一些实施例的用户7000可以如何利用由浏览器7004管理的许可7042安全地访问网络内容7002的示意图。
在所示示例中,用户7000访问网络内容7002。在该示例中,内容由调度服务7010渲染。调度服务可以被实现为例如控制XR系统操作(诸如上面结合图66所描述的),或者以其他方式导致选择的网络内容由浏览器呈渲染的过程的一个或多个部分。
当内容由浏览器7004渲染时,可能发生与网络内容7002相关联的应用需要对便携式电子设备的部件的访问。这些部件可以通过平台API 7006访问。例如,网络内容7002可以是视频聊天应用,其可能需要对便携式电子设备的相机或麦克风的访问。在其他示例中,可以访问其他硬件部件,包括便携式电子设备的任何传感器。对硬件部件的访问还可能需要对与本身可以是软件部件的部件相关联的数据和平台API 7006的访问。由于下载的网络内容本身并不在平台上执行,而仅在浏览器内执行,对平台API 7006的访问将基于浏览器的权限受到限制。
在一些实施例中,浏览器7004可以存储与特定网站相关联的许可。关于许可的数据可以由用户提供,从而授权或阻止某些网站相对于平台部件采取行动。替代地或附加地,与每个网站相关联的许可可以通过用户界面来查看、添加或编辑。例如,用户界面可以是浏览器的软件部件,或者是便携式电子设备提供诸如系统设置的平台部件。
即使网络内容包含执行禁止和/或未经授权的动作的命令,浏览器7004也不会在平台API 7006上进行调用来执行该动作。在一些实施例中,如果所请求的动作不被允许,则浏览器可以为用户生成提示。用户对该提示的响应可以存储为许可7042的一部分。
例如,在视频聊天应用的情况下,网络内容可以基于经由设备麦克风或相机获取的数据来指定动作。浏览器7004可以提示用户允许视频聊天应用的麦克风或摄像头访问,然后存储用户的响应。这允许浏览器7004访问必要的平台API 7006,同时还给予用户7000对与网络内容7002相关联的给定应用的浏览器访问级别的完全控制。相反,本机应用可以具有对执行它的便携式电子设备的部件的完全或更少限制的访问权。
其它考虑
图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 (39)

1.一种操作混合现实系统的方法,所述混合现实系统被配置为渲染通过执行本机应用生成的虚拟内容,其中,用于所述本机应用的所述虚拟内容在由所述系统管理的棱镜内渲染,以便与所述本机应用相关联,所述方法包括:
基于通过浏览器渲染来自链接的内容的指示:
通过所述链接获取表示所述内容的标准化形式的信息;以及
基于所获取的信息,在棱镜内渲染所述内容,其中,所述棱镜由所述混合现实系统管理,以便与所述浏览器相关联,其中,所述棱镜是在其内显示所述内容的体积。
2.根据权利要求1所述的方法,还包括:
接收基于在程序启动器菜单中选择与所述链接相关联的图标的用户输入来渲染所述内容的指示,其中,所述程序启动器菜单包括与所述本机应用相关联的至少一个图标。
3.根据权利要求2所述的方法,其中:
所述混合现实系统包括便携式电子设备;
所述浏览器在所述便携式电子设备上执行;并且
接收渲染所述内容的所述指示还包括向所述便携式电子设备的用户生成提示以确认所述内容的渲染。
4.根据权利要求2所述的方法,还包括:
处理可安装实体,所述处理包括:
基于所述可安装实体生成与所述链接相关联的所述图标;以及
在注册表中创建将所述图标与所述链接相关联的条目。
5.根据权利要求4所述的方法,其中:
所述可安装实体包括所述图标的规范;并且
生成所述图标包括基于所述图标的所述规范渲染所述图标。
6.根据权利要求4所述的方法,其中:
所述可安装实体包括指定网络应用的数据;并且
生成所述图标包括基于指定所述网络应用的所述数据形成所述图标。
7.根据权利要求4所述的方法,还包括:
基于用户输入生成所述可安装实体,所述生成包括在所述混合现实系统上安装与所述链接相关联的网络应用的命令。
8.根据权利要求1所述的方法,其中,在所述棱镜内渲染所述内容包括:
在无需所述浏览器的导航控件的情况下渲染所述内容。
9.根据权利要求1所述的方法,其中,在所述棱镜内渲染所述内容包括:
基于从所述链接下载的所述内容的3D模型渲染3D内容。
10.根据权利要求1所述的方法,其中,在所述棱镜内渲染所述内容包括:
基于从所述链接下载的所述内容的动画的3D模型通过所述浏览器生成动态3D内容。
11.根据权利要求1所述的方法,其中,在所述棱镜内渲染所述内容包括:
在第一时间,在所述混合现实系统上下载和缓存指定所述内容的信息;以及
第二时间,在第一时间之后,基于所缓存的信息渲染所述内容。
12.根据权利要求1所述的方法,其中:
来自所述链接的表示所述内容的标准化形式的信息部分地基于从所述混合现实系统的部件获得的信息;并且
渲染来自所述链接的所述内容包括提示所述混合现实系统的用户授权对所述混合现实系统的所述部件的访问。
13.根据权利要求1所述的方法,其中,所述棱镜包括由所述混合现实系统生成并被配置为使用户能够控制所述棱镜的用户界面。
14.一种混合现实系统,其被配置为渲染由本机应用生成的虚拟内容,其中,用于所述本机应用的所述虚拟内容在由所述混合现实系统管理的体积内渲染,以便与所述本机应用相关联,所述混合现实系统包括:
便携式电子设备,其包括:
一个或多个处理器;
至少一种计算机可读介质,其包括计算机可执行指令,当由所述一个或多个处理器中的处理器执行时,所述计算机可执行指令:
基于通过浏览器渲染来自链接的内容的指示:
从所述链接获取表示所述内容的标准化形式的信息;以及
基于所获取的信息,在体积内渲染所述内容,其中,所述体积由所述混合现实系统管理,以便与所述浏览器相关联。
15.根据权利要求14所述的混合现实系统,其中,所述混合现实系统被配置为使得所述浏览器具有对所述便携式电子设备的硬件部件的访问权。
16.根据权利要求15所述的混合现实系统,其中,所述浏览器对其具有访问权的所述便携式电子设备的所述硬件部件包括被配置为获得音频、视频或图像数据或其任意组合的硬件。
17.根据权利要求16所述的混合现实系统,其中,所述混合现实系统被配置为:使得基于在使能对所述便携式电子设备的硬件部件的访问之前从所述便携式电子设备的用户接收的许可,所述浏览器有条件地具有对所述便携式电子设备的硬件部件的访问权。
18.根据权利要求14所述的混合现实系统,其中,在由所述一个或多个处理器中的处理器执行时,所述计算机可执行指令:
处理可安装的实体,所述处理包括:
基于所述可安装实体生成与所述链接相关联的图标;以及
在注册表中创建将所述图标与所述链接相关联的条目。
19.根据权利要求18所述的混合现实系统,其中:
所述可安装实体包括所述图标的规范;并且
生成所述图标包括基于所述图标的所述规范渲染所述图标。
20.根据权利要求18所述的混合现实系统,其中:
所述可安装实体包括指定网络应用的数据;并且
生成所述图标包括用标识所述网络应用的信息形成图标。
21.一种基于网络内容为能够在3D环境中渲染虚拟内容的便携式电子设备生成可安装实体的方法,所述方法包括:
使用一个或多个处理器执行:
接收与所述网络内容相关联的链接;
基于所述网络内容生成可安装实体,其中,所述可安装实体包括清单,所述清单包括:
与所述网络内容相关联的所述链接,以及
渲染来自所述链接的所述网络内容的计算机可执行指示。
22.根据权利要求21所述的方法,其中,所述方法还包括使用所述一个或多个处理器来执行:
在所述便携式电子设备上注册所述可安装实体。
23.根据权利要求22所述的方法,其中,所述方法还包括使用所述一个或多个处理器来执行:
确定对应于所述网络内容的可安装实体是否已经在所述便携式电子设备上注册。
24.根据权利要求22所述的方法,其中,在所述便携式电子设备上注册所述可安装实体包括将代表所述可安装实体的图标添加到所述便携式电子设备上的程序启动器菜单。
25.根据权利要求21所述的方法,其中,所述网络内容包括3D内容。
26.根据权利要求25所述的方法,其中,所述3D内容包括动画的3D内容。
27.根据权利要求21所述的方法,其中,所述方法还包括使用所述一个或多个处理器来执行:
确定所述网络内容是否符合一组标准。
28.根据权利要求27所述的方法,其中,所述一组标准是W3C标准。
29.根据权利要求21所述的方法,其中:
所述网络内容由网络应用生成,并且所述网络应用包括网络清单;
所述方法还包括使用所述一个或多个处理器来执行:
访问所述网络应用的所述网络清单;以及
进一步基于所述网络清单生成所述可安装实体。
30.根据权利要求21所述的方法,其中,所述可安装实体还包括代表所述可安装实体的一个或多个图标。
31.根据权利要求30所述的方法,其中,所述一个或多个图标是3D图标。
32.根据权利要求29所述的方法,其中,所述可安装实体还包括代表所述可安装实体的一个或多个图标,并且其中,所述一个或多个图标基于所述网络清单。
33.根据权利要求21所述的方法,其中,所述可安装实体的所述清单还包括:
与所述网络内容相关联的名称。
34.根据权利要求30所述的方法,其中,所述可安装实体的所述清单还包括:
所述一个或多个图标的规范。
35.根据权利要求21所述的方法,其中:
所述可安装实体的所述清单还包括包含多个字段的文件;并且
所述方法还包括基于来自用户的输入来更新所述文件的所述多个字段中的一个或多个。
36.根据权利要求21所述的方法,其中,所述方法还包括使用所述一个或多个处理器来执行:
存储所述可安装实体。
37.根据权利要求36所述的方法,其中,存储所述可安装实体包括将所述可安装实体存储在云服务器中。
38.根据权利要求21所述的方法,其中,生成所述可安装实体利用安装工具来执行。
39.一种用于基于网络内容为能够在3D环境中渲染虚拟内容的便携式电子设备生成可安装实体的系统,所述系统包括:
一个或多个处理器;
至少一种计算机可读介质,其包括计算机可执行指令,当由一个或多个处理器中的处理器执行时,所述计算机可执行指令:
接收与网络内容相关的链接;
基于所述网络内容生成可安装实体,其中,所述可安装实体包括清单,所述清单包括:
与所述网络内容相关联的所述链接,以及
渲染来自所述链接的所述网络内容的计算机可执行指示。
CN202080084894.0A 2019-12-09 2020-12-08 简化的虚拟内容编程的交叉现实系统 Pending CN114762008A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962945357P 2019-12-09 2019-12-09
US62/945,357 2019-12-09
PCT/US2020/063719 WO2021118962A1 (en) 2019-12-09 2020-12-08 Cross reality system with simplified programming of virtual content

Publications (1)

Publication Number Publication Date
CN114762008A true CN114762008A (zh) 2022-07-15

Family

ID=76209843

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080084894.0A Pending CN114762008A (zh) 2019-12-09 2020-12-08 简化的虚拟内容编程的交叉现实系统

Country Status (5)

Country Link
US (3) US11562542B2 (zh)
EP (1) EP4073763A4 (zh)
JP (1) JP2023504570A (zh)
CN (1) CN114762008A (zh)
WO (1) WO2021118962A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK201870351A1 (en) 2018-05-07 2020-01-13 Apple Inc. Devices and Methods for Measuring Using Augmented Reality
JP7445642B2 (ja) 2018-08-13 2024-03-07 マジック リープ, インコーポレイテッド クロスリアリティシステム
US11227435B2 (en) 2018-08-13 2022-01-18 Magic Leap, Inc. Cross reality system
US10785413B2 (en) 2018-09-29 2020-09-22 Apple Inc. Devices, methods, and graphical user interfaces for depth-based annotation
JP2022512600A (ja) 2018-10-05 2022-02-07 マジック リープ, インコーポレイテッド 任意の場所における場所特有の仮想コンテンツのレンダリング
US11625806B2 (en) * 2019-01-23 2023-04-11 Qualcomm Incorporated Methods and apparatus for standardized APIs for split rendering
US11227446B2 (en) 2019-09-27 2022-01-18 Apple Inc. Systems, methods, and graphical user interfaces for modeling, measuring, and drawing using augmented reality
CN114616534A (zh) 2019-10-15 2022-06-10 奇跃公司 具有无线指纹的交叉现实系统
EP4046070A4 (en) 2019-10-15 2023-10-18 Magic Leap, Inc. CROSS-REALLY SYSTEM THAT SUPPORTS MULTIPLE DEVICE TYPES
CN114600064A (zh) 2019-10-15 2022-06-07 奇跃公司 具有定位服务的交叉现实系统
JP2023504775A (ja) 2019-11-12 2023-02-07 マジック リープ, インコーポレイテッド 位置特定サービスおよび共有場所ベースのコンテンツを伴うクロスリアリティシステム
EP4073763A4 (en) * 2019-12-09 2023-12-27 Magic Leap, Inc. CROSS-REALLY SYSTEM WITH SIMPLIFIED PROGRAMMING OF VIRTUAL CONTENT
US11003308B1 (en) 2020-02-03 2021-05-11 Apple Inc. Systems, methods, and graphical user interfaces for annotating, measuring, and modeling environments
CN115398314A (zh) 2020-02-13 2022-11-25 奇跃公司 使用多分辨率帧描述符进行地图处理的交叉现实系统
JP2023514205A (ja) 2020-02-13 2023-04-05 マジック リープ, インコーポレイテッド 正確な共有マップを伴うクロスリアリティシステム
US11830149B2 (en) 2020-02-13 2023-11-28 Magic Leap, Inc. Cross reality system with prioritization of geolocation information for localization
CN115461787A (zh) 2020-02-26 2022-12-09 奇跃公司 具有快速定位的交叉现实系统
US11727650B2 (en) * 2020-03-17 2023-08-15 Apple Inc. Systems, methods, and graphical user interfaces for displaying and manipulating virtual objects in augmented reality environments
CN115803788A (zh) 2020-04-29 2023-03-14 奇跃公司 用于大规模环境的交叉现实系统
US11727638B1 (en) * 2020-08-21 2023-08-15 Meta Platforms Technologies. LLC Adaptive geometric smoothing
EP4047558A1 (en) * 2021-02-17 2022-08-24 Miehee Ju Kim System for generating 3d mobile augmented reality
US11941764B2 (en) 2021-04-18 2024-03-26 Apple Inc. Systems, methods, and graphical user interfaces for adding effects in augmented reality environments
CN113836439B (zh) * 2021-09-14 2024-01-30 上海任意门科技有限公司 用户匹配方法、计算设备和计算机可读存储介质
US20240048607A1 (en) * 2022-08-08 2024-02-08 Google Llc Links for web-based applications

Family Cites Families (218)

* Cited by examiner, † Cited by third party
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 한국과학기술원 예제동작을 이용한 영상기반 동작복원방법
US7467356B2 (en) * 2003-07-25 2008-12-16 Three-B International Limited Graphical user interface for 3d virtual display browser using virtual display windows
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
WO2008002906A2 (en) 2006-06-26 2008-01-03 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
US8306348B2 (en) 2007-04-24 2012-11-06 DigitalOptics Corporation Europe Limited Techniques for adjusting the effect of applying kernels to signals to achieve desired effect on signal
JP4292426B2 (ja) 2007-05-15 2009-07-08 ソニー株式会社 撮像装置および撮像データ補正方法
US7779161B2 (en) * 2007-07-24 2010-08-17 Hiconversion, Inc. Method and apparatus for general virtual application enabling of websites
AU2008283845A1 (en) 2007-08-06 2009-02-12 Trx Systems, Inc. Locating, tracking, and/or monitoring personnel 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
US9064023B2 (en) * 2008-12-29 2015-06-23 Avaya Inc. Providing web content in the context of a virtual environment
US20100208033A1 (en) 2009-02-13 2010-08-19 Microsoft Corporation Personal Media Landscapes in Mixed Reality
US8839121B2 (en) 2009-05-06 2014-09-16 Joseph Bertolami Systems and methods for unifying coordinate systems in augmented reality applications
KR20100138806A (ko) * 2009-06-23 2010-12-31 삼성전자주식회사 자동 3차원 영상 포맷 변환 방법 및 그 장치
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
WO2011063347A2 (en) 2009-11-20 2011-05-26 Pelican Imaging Corporation Capturing and processing of images using monolithic camera array with heterogeneous imagers
US8185596B2 (en) 2010-02-22 2012-05-22 Samsung Electronics Co., Ltd. Location-based communication method and system
US8725585B1 (en) 2010-05-18 2014-05-13 Google Inc. Automatic vetting of web applications to be listed in a marketplace for web 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
EP2686827A1 (en) 2011-03-18 2014-01-22 C3 Technologies AB 3d streets
EP2691936A1 (en) 2011-03-29 2014-02-05 Qualcomm Incorporated 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
US9400941B2 (en) 2011-08-31 2016-07-26 Metaio Gmbh Method of matching image features with reference features
US8243102B1 (en) 2011-10-12 2012-08-14 Google Inc. Derivative-based selection of zones for banded map display
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
CN104245067B (zh) 2012-02-06 2017-05-10 索尼电脑娱乐欧洲有限公司 用于增强现实的书对象
CN103297677B (zh) 2012-02-24 2016-07-06 卡西欧计算机株式会社 生成重构图像的图像生成装置以及图像生成方法
US9293118B2 (en) 2012-03-30 2016-03-22 Sony Corporation Client device
KR20130110907A (ko) 2012-03-30 2013-10-10 삼성전자주식회사 가상 현실과 증강 현실을 이용한 원격 제어 장치 및 방법
CN102682091A (zh) 2012-04-25 2012-09-19 腾讯科技(深圳)有限公司 基于云服务的视觉搜索方法和系统
US9122321B2 (en) 2012-05-04 2015-09-01 Microsoft Technology Licensing, Llc Collaboration environment using see through displays
WO2013167864A1 (en) 2012-05-11 2013-11-14 Milan Momcilo Popovich Apparatus for eye tracking
US11089247B2 (en) 2012-05-31 2021-08-10 Apple Inc. Systems and method for reducing fixed pattern noise in image data
US9743057B2 (en) 2012-05-31 2017-08-22 Apple Inc. Systems and methods for lens shading correction
US9311750B2 (en) 2012-06-05 2016-04-12 Apple Inc. Rotation operations in a mapping application
US9671566B2 (en) 2012-06-11 2017-06-06 Magic Leap, Inc. Planar waveguide apparatus with diffraction element(s) and system employing same
EP2859403B1 (en) 2012-06-11 2022-10-19 Magic Leap, Inc. Multiple depth plane three-dimensional display using a wave guide reflector array projector
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
US8798357B2 (en) 2012-07-09 2014-08-05 Microsoft Corporation Image-based localization
WO2014015889A1 (en) 2012-07-23 2014-01-30 Metaio Gmbh Method of providing image feature descriptors
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
CN102932582B (zh) 2012-10-26 2015-05-27 华为技术有限公司 实现运动检测的方法及装置
KR102052605B1 (ko) * 2012-11-13 2019-12-06 네이버 주식회사 모바일 어플리케이션을 통한 바탕화면에 바로가기 설치 방법 및 그 시스템
US9596481B2 (en) 2013-01-30 2017-03-14 Ati Technologies Ulc Apparatus and method for video data processing
US9349072B2 (en) 2013-03-11 2016-05-24 Microsoft Technology Licensing, Llc Local feature based image compression
CN105188516B (zh) 2013-03-11 2017-12-22 奇跃公司 用于增强和虚拟现实的系统与方法
US20140267234A1 (en) 2013-03-15 2014-09-18 Anselm Hook Generation and Sharing Coordinate System Between Users on Mobile
US10025486B2 (en) 2013-03-15 2018-07-17 Elwha Llc Cross-reality select, drag, and drop for augmented reality systems
KR101380854B1 (ko) * 2013-03-21 2014-04-04 한국과학기술연구원 웹 정보구조에 기반한 증강현실 콘텐츠 제공장치 및 방법
US9269022B2 (en) 2013-04-11 2016-02-23 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
US10533850B2 (en) 2013-07-12 2020-01-14 Magic Leap, Inc. Method and system for inserting recognized object data into a virtual world
WO2015006784A2 (en) 2013-07-12 2015-01-15 Magic Leap, Inc. Planar waveguide apparatus with diffraction element(s) and system employing same
US9646384B2 (en) 2013-09-11 2017-05-09 Google Technology Holdings LLC 3D feature descriptors with camera pose information
CN107315249B (zh) 2013-11-27 2021-08-17 奇跃公司 虚拟和增强现实系统与方法
WO2015094360A1 (en) 2013-12-20 2015-06-25 Intel Corporation Wi-fi scan scheduling and power adaptation for low-power indoor location
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
US20150281869A1 (en) * 2014-03-31 2015-10-01 Google Inc. Native web-based application
WO2015155628A1 (en) 2014-04-07 2015-10-15 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
US9596411B2 (en) 2014-08-25 2017-03-14 Apple Inc. Combined optical and electronic image stabilization
US20190347865A1 (en) 2014-09-18 2019-11-14 Google Inc. Three-dimensional drawing inside virtual reality environment
KR102276847B1 (ko) 2014-09-23 2021-07-14 삼성전자주식회사 가상 오브젝트 제공 방법 및 그 전자 장치
US20200252233A1 (en) 2014-09-24 2020-08-06 James Thomas O'Keeffe System and method for user profile enabled smart building control
WO2016050290A1 (en) 2014-10-01 2016-04-07 Metaio Gmbh Method and system for determining at least one property related to at least part of a real environment
CN106663411A (zh) 2014-11-16 2017-05-10 易欧耐特感知公司 用于增强现实准备、处理和应用的系统和方法
US20160147408A1 (en) 2014-11-25 2016-05-26 Johnathan Bevis Virtual measurement tool for a wearable visualization device
EP3227708A1 (en) 2014-12-04 2017-10-11 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
US9697796B2 (en) 2015-03-26 2017-07-04 Intel Corporation Adaptive linear luma domain video pipeline architecture
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
US10373366B2 (en) 2015-05-14 2019-08-06 Qualcomm Incorporated Three-dimensional model generation
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
US10492981B1 (en) 2015-07-17 2019-12-03 Bao Tran Systems and methods for computer assisted operation
US10335572B1 (en) 2015-07-17 2019-07-02 Naveen Kumar Systems and methods for computer assisted operation
WO2017039308A1 (en) 2015-08-31 2017-03-09 Samsung Electronics Co., Ltd. Virtual reality display apparatus and display method thereof
ES2920837T3 (es) 2015-09-10 2022-08-10 Oriient New Media Ltd Navegar, seguir y posicionar los dispositivos móviles en zonas sin GPS o con GPS inexacto con la generación automática de mapas
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
CN114863059A (zh) 2015-09-25 2022-08-05 奇跃公司 用于在3d重建中检测和组合结构特征的方法和系统
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
JP2019505926A (ja) 2016-02-05 2019-02-28 マジック リープ, インコーポレイテッドMagic Leap,Inc. 拡張現実のためのシステムおよび方法
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
US10586391B2 (en) 2016-05-31 2020-03-10 Accenture Global Solutions Limited Interactive virtual reality platforms
US10607408B2 (en) * 2016-06-04 2020-03-31 Shape Labs Inc. Method for rendering 2D and 3D data within a 3D virtual environment
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
US10504008B1 (en) 2016-07-18 2019-12-10 Occipital, Inc. System and method for relocalization and scene recognition
IL310337A (en) 2016-08-11 2024-03-01 Magic Leap Inc Automatic positioning of a virtual object in 3D space
CN109863533B (zh) 2016-08-22 2024-03-15 奇跃公司 虚拟、增强和混合现实系统和方法
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
RU2016138608A (ru) 2016-09-29 2018-03-30 Мэджик Лип, Инк. Нейронная сеть для сегментации изображения глаза и оценки качества изображения
US10452133B2 (en) 2016-12-12 2019-10-22 Microsoft Technology Licensing, Llc Interacting with an environment using a parent device and at least one companion device
JP7268879B2 (ja) 2017-01-02 2023-05-08 ガウス サージカル,インコーポレイテッド 重複撮像を予測した手術アイテムの追跡
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
US11275163B2 (en) 2017-01-25 2022-03-15 Korea Institute Of Science And Technology Slam method and apparatus robust to wireless environment change
US10534964B2 (en) 2017-01-30 2020-01-14 Blackberry Limited Persistent feature descriptors for video
WO2018146558A2 (en) 2017-02-07 2018-08-16 Mindmaze Holding Sa Systems, methods and apparatuses for stereo vision and tracking
US10664993B1 (en) 2017-03-13 2020-05-26 Occipital, Inc. System for determining a pose of an object
US10460489B2 (en) 2017-03-15 2019-10-29 Facebook, Inc. Visual editor for designing augmented-reality effects and configuring scaling parameters
CN110402415A (zh) 2017-03-17 2019-11-01 奇跃公司 记录增强现实数据的技术
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
KR20240046613A (ko) 2017-04-19 2024-04-09 매직 립, 인코포레이티드 웨어러블 시스템을 위한 멀티모달 임무 실행 및 텍스트 편집
KR102432283B1 (ko) 2017-05-01 2022-08-11 매직 립, 인코포레이티드 콘텐츠를 공간 3d 환경에 매칭
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 ファナック株式会社 仮想オブジェクト表示システム
US10929945B2 (en) 2017-07-28 2021-02-23 Google Llc Image capture devices featuring intelligent use of lightweight hardware-generated statistics
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
US10612929B2 (en) 2017-10-17 2020-04-07 AI Incorporated Discovering and plotting the boundary of an enclosure
CA3078977A1 (en) 2017-11-14 2019-05-23 Magic Leap, Inc. Fully convolutional interest point detection and description via homographic adaptation
US10943120B2 (en) 2017-12-15 2021-03-09 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
WO2019126238A1 (en) * 2017-12-22 2019-06-27 Magic Leap, Inc. Methods and system for managing and displaying virtual content in a mixed reality system
US20190206258A1 (en) * 2018-01-04 2019-07-04 nuTonomy Inc. Augmented reality vehicle interfacing
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
US11093103B2 (en) 2018-04-09 2021-08-17 Spatial Systems Inc. Augmented reality computing environments-collaborative workspaces
US10803671B2 (en) 2018-05-04 2020-10-13 Microsoft Technology Licensing, Llc Authoring content in three-dimensional environment
US11202006B2 (en) 2018-05-18 2021-12-14 Samsung Electronics Co., Ltd. CMOS-assisted inside-out dynamic vision sensor tracking for low power mobile platforms
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
US10964053B2 (en) 2018-07-02 2021-03-30 Microsoft Technology Licensing, Llc Device pose estimation using 3D line clouds
CN116088783A (zh) 2018-07-24 2023-05-09 奇跃公司 用于确定和/或评价图像显示设备的定位地图的方法和装置
US11227435B2 (en) 2018-08-13 2022-01-18 Magic Leap, Inc. Cross reality system
JP7445642B2 (ja) 2018-08-13 2024-03-07 マジック リープ, インコーポレイテッド クロスリアリティシステム
KR101985703B1 (ko) * 2018-08-24 2019-06-04 주식회사 버넥트 증강현실 서비스형 소프트웨어 기반의 증강현실운영시스템
EP3847668A1 (en) 2018-09-04 2021-07-14 Aktiia SA System for determining a blood pressure of one or a plurality of users
EP3629290B1 (en) 2018-09-26 2023-01-04 Apple Inc. Localization for mobile devices
JP2022512600A (ja) 2018-10-05 2022-02-07 マジック リープ, インコーポレイテッド 任意の場所における場所特有の仮想コンテンツのレンダリング
US10839556B2 (en) 2018-10-23 2020-11-17 Microsoft Technology Licensing, Llc Camera pose estimation using obfuscated features
US10937191B2 (en) 2018-10-23 2021-03-02 Dell Products, Lp Predictive simultaneous localization and mapping system using prior user session positional information
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
US11030812B2 (en) 2019-01-02 2021-06-08 The Boeing Company Augmented reality system using enhanced models
WO2020192039A1 (en) 2019-03-27 2020-10-01 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Three-dimensional localization using light-depth images
US11074706B2 (en) 2019-04-12 2021-07-27 Intel Corporation Accommodating depth noise in visual slam using map-point consensus
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
US20200380263A1 (en) 2019-05-29 2020-12-03 Gyrfalcon Technology Inc. Detecting key frames in video compression in an artificial intelligence semiconductor solution
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
US20200401617A1 (en) 2019-06-21 2020-12-24 White Raven Ltd Visual positioning system
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
US20210103449A1 (en) * 2019-10-03 2021-04-08 Magic Leap, Inc. Management framework for mixed reality devices
US11425220B2 (en) * 2019-10-08 2022-08-23 Magic Leap, Inc. Methods, systems, and computer program products for implementing cross-platform mixed-reality applications with a scripting framework
CN114600064A (zh) 2019-10-15 2022-06-07 奇跃公司 具有定位服务的交叉现实系统
EP4046070A4 (en) 2019-10-15 2023-10-18 Magic Leap, Inc. CROSS-REALLY SYSTEM THAT SUPPORTS MULTIPLE DEVICE TYPES
CN114616534A (zh) 2019-10-15 2022-06-10 奇跃公司 具有无线指纹的交叉现实系统
US11494995B2 (en) * 2019-10-29 2022-11-08 Magic Leap, Inc. Systems and methods for virtual and augmented reality
CN114616509A (zh) 2019-10-31 2022-06-10 奇跃公司 具有关于持久坐标框架的质量信息的交叉现实系统
JP2023504775A (ja) * 2019-11-12 2023-02-07 マジック リープ, インコーポレイテッド 位置特定サービスおよび共有場所ベースのコンテンツを伴うクロスリアリティシステム
EP4073763A4 (en) * 2019-12-09 2023-12-27 Magic Leap, Inc. CROSS-REALLY SYSTEM WITH SIMPLIFIED PROGRAMMING OF VIRTUAL CONTENT
EP4104144A1 (en) 2020-02-13 2022-12-21 Magic Leap, Inc. Cross reality system for large scale environments
JP2023514205A (ja) 2020-02-13 2023-04-05 マジック リープ, インコーポレイテッド 正確な共有マップを伴うクロスリアリティシステム
CN115398314A (zh) 2020-02-13 2022-11-25 奇跃公司 使用多分辨率帧描述符进行地图处理的交叉现实系统
US11830149B2 (en) 2020-02-13 2023-11-28 Magic Leap, Inc. Cross reality system with prioritization of geolocation information for localization
US11593951B2 (en) 2020-02-25 2023-02-28 Qualcomm Incorporated Multi-device object tracking and localization
CN115461787A (zh) 2020-02-26 2022-12-09 奇跃公司 具有快速定位的交叉现实系统
US11900322B2 (en) * 2020-03-20 2024-02-13 Procore Technologies, Inc. Presence and collaboration tools for building information models
CN115803788A (zh) 2020-04-29 2023-03-14 奇跃公司 用于大规模环境的交叉现实系统

Also Published As

Publication number Publication date
EP4073763A4 (en) 2023-12-27
EP4073763A1 (en) 2022-10-19
US11748963B2 (en) 2023-09-05
US20240029369A1 (en) 2024-01-25
JP2023504570A (ja) 2023-02-03
US20210174596A1 (en) 2021-06-10
US11562542B2 (en) 2023-01-24
US20230119305A1 (en) 2023-04-20
WO2021118962A1 (en) 2021-06-17

Similar Documents

Publication Publication Date Title
US11748963B2 (en) Cross reality system with simplified programming of virtual content
US11869158B2 (en) Cross reality system with localization service and shared location-based content
US11568605B2 (en) Cross reality system with localization service
US11257294B2 (en) Cross reality system supporting multiple device types
CN114616534A (zh) 具有无线指纹的交叉现实系统
CN115427758A (zh) 具有精确共享地图的交叉现实系统
CN112805750A (zh) 跨现实系统
CN115151947B (zh) 具有基于wifi/gps的地图合并的交叉现实系统
CN115380264A (zh) 用于大规模环境的交叉现实系统
CN115461787A (zh) 具有快速定位的交叉现实系统
CN114616509A (zh) 具有关于持久坐标框架的质量信息的交叉现实系统
CN115398484A (zh) 具有用于定位的地理定位信息优先级的交叉现实系统
CN115398314A (zh) 使用多分辨率帧描述符进行地图处理的交叉现实系统
CN115803788A (zh) 用于大规模环境的交叉现实系统
CN115244493A (zh) 用于大规模环境重建的交叉现实系统
CN113544748A (zh) 交叉现实系统
CN115176285B (zh) 利用缓冲的交叉现实系统用于定位精度

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