CN111052045B - 计算机生成的现实平台 - Google Patents

计算机生成的现实平台 Download PDF

Info

Publication number
CN111052045B
CN111052045B CN201880055357.6A CN201880055357A CN111052045B CN 111052045 B CN111052045 B CN 111052045B CN 201880055357 A CN201880055357 A CN 201880055357A CN 111052045 B CN111052045 B CN 111052045B
Authority
CN
China
Prior art keywords
data object
application
computer
cgr
environment
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.)
Active
Application number
CN201880055357.6A
Other languages
English (en)
Other versions
CN111052045A (zh
Inventor
H·加斯特诺尔
M·加斯特诺尔
E·埃斯坎达
T·R·欧瑞奥
G·斯塔尔
C·J·怀特
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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Priority to CN202210824799.0A priority Critical patent/CN115167677A/zh
Publication of CN111052045A publication Critical patent/CN111052045A/zh
Application granted granted Critical
Publication of CN111052045B publication Critical patent/CN111052045B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1827Network arrangements for conference optimisation or adaptation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/10Multimedia information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本公开涉及提供一种用于生成包括虚拟现实环境和增强现实环境的CGR环境的计算机生成的现实(CGR)平台。在一些实施方案中,该平台包括在CGR环境中模拟和渲染内容的操作***级(OS级)进程,以及提供与要被模拟并渲染给OS级进程的内容相关的信息的一个或多个应用程序级进程。

Description

计算机生成的现实平台
相关申请的交叉引用
本专利申请要求2018年1月26日提交的名称为“MIXED-REALITY PLATFORM”(混合现实平台)的美国临时专利申请62/622,725以及2017年9月29日提交的名称为“MIXED-REALITY PLATFORM”(混合现实平台)的美国临时专利申请62/565,831的优先权,这些专利申请据此全文以引用方式并入本文。
技术领域
本公开整体涉及计算机生成的现实***,并且更具体地涉及用于提供计算机生成的现实环境的技术。
背景技术
随着电子设备的功能增加,以及其输出高质量视觉显示的能力的提高,应用程序变得更令人沉浸。一个此类示例是对计算机生成的现实(例如,“混合现实”和“虚拟现实”)应用程序的主流需求的增加。
发明内容
本文所述的技术提供了用于生成计算机生成的现实环境的计算机生成的现实平台。此类技术任选地补充或替换用于生成计算机生成的现实环境的其他方法。此类技术可改善用户体验,提高隐私性和安全性,并且使计算机生成的现实界面(例如,3D接口)具有高级功能。
在一些实施方案中,在电子设备处执行的计算机实现的方法包括:接收指示在计算机生成的三维现实环境中启动第一应用程序的请求的第一输入;响应于接收到所述第一输入,启动所述第一应用程序的进程;接收指示在所述计算机生成的三维现实环境中启动不同于所述第一应用程序的第二应用程序的请求的第二输入;响应于接收到所述第二输入,启动不同于所述第一应用程序的所述进程的所述第二应用程序的进程;通过所述第一应用程序的所述进程向所述电子设备的操作***的进程提供第一数据对象,其中所述操作***的所述进程不同于所述第一应用程序的所述进程和所述第二应用程序的所述进程;通过所述第二应用程序的所述进程向所述操作***的所述进程提供不同于所述第一数据对象的第二数据对象;通过所述电子设备的所述操作***的所述进程,在所述计算机生成的三维现实环境中渲染所述第一数据对象的三维表示和所述第二数据对象的三维表示;以及使得显示所渲染的计算机生成的三维现实环境。
在一些实施方案中,非暂态计算机可读存储介质存储被配置为由电子设备的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行以下操作的指令:接收指示在计算机生成的三维现实环境中启动第一应用程序的请求的第一输入;响应于接收到所述第一输入,启动所述第一应用程序的进程;接收指示在所述计算机生成的三维现实环境中启动不同于所述第一应用程序的第二应用程序的请求的第二输入;响应于接收到所述第二输入,启动不同于所述第一应用程序的所述进程的所述第二应用程序的进程;通过所述第一应用程序的所述进程向所述电子设备的操作***的进程提供第一数据对象,其中所述操作***的所述进程不同于所述第一应用程序的所述进程和所述第二应用程序的所述进程;通过所述第二应用程序的所述进程向所述操作***的所述进程提供不同于所述第一数据对象的第二数据对象;通过所述电子设备的所述操作***的所述进程,在所述计算机生成的三维现实环境中渲染所述第一数据对象的三维表示和所述第二数据对象的三维表示;以及使得显示所渲染的计算机生成的三维现实环境。
在一些实施方案中,暂态计算机可读存储介质存储被配置为由电子设备的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行以下操作的指令:接收指示在计算机生成的三维现实环境中启动第一应用程序的请求的第一输入;响应于接收到所述第一输入,启动所述第一应用程序的进程;接收指示在所述计算机生成的三维现实环境中启动不同于所述第一应用程序的第二应用程序的请求的第二输入;响应于接收到所述第二输入,启动不同于所述第一应用程序的所述进程的所述第二应用程序的进程;通过所述第一应用程序的所述进程向所述电子设备的操作***的进程提供第一数据对象,其中所述操作***的所述进程不同于所述第一应用程序的所述进程和所述第二应用程序的所述进程;通过所述第二应用程序的所述进程向所述操作***的所述进程提供不同于所述第一数据对象的第二数据对象;通过所述电子设备的所述操作***的所述进程,在所述计算机生成的三维现实环境中渲染所述第一数据对象的三维表示和所述第二数据对象的三维表示;以及使得显示所渲染的计算机生成的三维现实环境。
在一些实施方案中,电子设备包括一个或多个处理器,以及存储被配置为由一个或多个处理器执行的一个或多个程序的存储器,该一个或多个程序包括用于执行以下操作的指令:接收指示在计算机生成的三维现实环境中启动第一应用程序的请求的第一输入;响应于接收到所述第一输入,启动所述第一应用程序的进程;接收指示在所述计算机生成的三维现实环境中启动不同于所述第一应用程序的第二应用程序的请求的第二输入;响应于接收到所述第二输入,启动不同于所述第一应用程序的所述进程的所述第二应用程序的进程;通过所述第一应用程序的所述进程向所述电子设备的操作***的进程提供第一数据对象,其中所述操作***的所述进程不同于所述第一应用程序的所述进程和所述第二应用程序的所述进程;通过所述第二应用程序的所述进程向所述操作***的所述进程提供不同于所述第一数据对象的第二数据对象;通过所述电子设备的所述操作***的所述进程,在所述计算机生成的三维现实环境中渲染所述第一数据对象的三维表示和所述第二数据对象的三维表示;以及使得显示所渲染的计算机生成的三维现实环境。
在一些实施方案中,电子设备包括:用于接收指示在计算机生成的三维现实环境中启动第一应用程序的请求的第一输入的装置;用于响应于接收到所述第一输入,启动所述第一应用程序的进程的装置;用于接收指示在所述计算机生成的三维现实环境中启动不同于所述第一应用程序的第二应用程序的请求的第二输入的装置;用于响应于接收到所述第二输入,启动不同于所述第一应用程序的所述进程的所述第二应用程序的进程的装置;用于通过所述第一应用程序的所述进程向所述电子设备的操作***的进程提供第一数据对象的装置,其中所述操作***的所述进程不同于所述第一应用程序的所述进程和所述第二应用程序的所述进程;用于通过所述第二应用程序的所述进程向所述操作***的所述进程提供不同于所述第一数据对象的第二数据对象的装置;用于通过所述电子设备的所述操作***的所述进程在所述计算机生成的三维现实环境中渲染所述第一数据对象的三维表示和所述第二数据对象的三维表示的装置;以及用于使得显示所渲染的计算机生成的三维现实环境的装置。
在一些实施方案中,在电子设备处执行的计算机实现的方法包括:接收指示在计算机生成的现实环境中启动应用程序的请求的第一输入;在接收到所述第一输入时,启动所述应用程序的进程;以及通过应用程序的进程向电子设备的操作***的进程提供第一数据对象,其中该数据对象对应于应用程序;接收指示对物理实体在所述计算机生成的现实环境中的表示的请求的第二输入;在接收到第二输入时:通过操作***的进程获得第二数据对象,其中第二数据对象对应于物理实体;通过所述操作***的所述进程模拟所述计算机生成的现实环境,其中所述所模拟的计算机生成的现实环境包括所述第一数据对象的表示和所述第二数据对象的表示。
在一些实施方案中,非暂态计算机可读存储介质存储被配置为由电子设备的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行以下操作的指令:接收指示在计算机生成的现实环境中启动应用程序的请求的第一输入;在接收到所述第一输入时,启动所述应用程序的进程;以及通过应用程序的进程向电子设备的操作***的进程提供第一数据对象,其中该数据对象对应于应用程序;接收指示对物理实体在所述计算机生成的现实环境中的表示的请求的第二输入;在接收到第二输入时:通过操作***的进程获得第二数据对象,其中第二数据对象对应于物理实体;通过所述操作***的所述进程模拟所述计算机生成的现实环境,其中所述所模拟的计算机生成的现实环境包括所述第一数据对象的表示和所述第二数据对象的表示。
在一些实施方案中,暂态计算机可读存储介质存储被配置为由电子设备的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行以下操作的指令:接收指示在计算机生成的现实环境中启动应用程序的请求的第一输入;在接收到所述第一输入时,启动所述应用程序的进程;以及通过应用程序的进程向电子设备的操作***的进程提供第一数据对象,其中该数据对象对应于应用程序;接收指示对物理实体在所述计算机生成的现实环境中的表示的请求的第二输入;在接收到第二输入时:通过操作***的进程获得第二数据对象,其中第二数据对象对应于物理实体;通过所述操作***的所述进程模拟所述计算机生成的现实环境,其中所述所模拟的计算机生成的现实环境包括所述第一数据对象的表示和所述第二数据对象的表示。
在一些实施方案中,电子设备包括一个或多个处理器,以及存储被配置为由一个或多个处理器执行的一个或多个程序的存储器,该一个或多个程序包括用于执行以下操作的指令:接收指示在计算机生成的现实环境中启动应用程序的请求的第一输入;在接收到所述第一输入时,启动所述应用程序的进程;以及通过应用程序的进程向电子设备的操作***的进程提供第一数据对象,其中该数据对象对应于应用程序;接收指示对物理实体在所述计算机生成的现实环境中的表示的请求的第二输入;在接收到第二输入时:通过操作***的进程获得第二数据对象,其中第二数据对象对应于物理实体;通过所述操作***的所述进程模拟所述计算机生成的现实环境,其中所述所模拟的计算机生成的现实环境包括所述第一数据对象的表示和所述第二数据对象的表示。
在一些实施方案中,电子设备包括:用于接收指示在计算机生成的现实环境中启动应用程序的请求的第一输入的装置;在接收到所述第一输入时,用于启动所述应用程序的进程的装置;以及用于通过应用程序的进程向电子设备的操作***的进程提供第一数据对象的装置,其中该数据对象对应于应用程序;用于接收指示对物理实体在所述计算机生成的现实环境中的表示的请求的第二输入的装置;在接收到第二输入时:用于通过操作***的进程获得第二数据对象的装置,其中第二数据对象对应于物理实体;用于通过所述操作***的所述进程模拟所述计算机生成的现实环境的装置,其中所述所模拟的计算机生成的现实环境包括所述第一数据对象的表示和所述第二数据对象的表示。
在一些实施方案中,在电子设备处执行的计算机实现的方法包括:通过电子设备的操作***的进程模拟包括空间的三维表示的计算机生成的三维现实环境;以及在模拟计算机生成的三维现实环境时:接收指示在计算机生成的三维现实环境中启动应用程序的请求的输入;以及响应于接收到输入:启动应用程序的进程;通过所述操作***的所述进程从应用程序的所述进程接收数据对象;以及通过操作***的进程在计算机生成的三维现实环境中模拟所接收的数据对象的三维表示。
在一些实施方案中,非暂态计算机可读存储介质存储被配置为由电子设备的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行以下操作的指令:通过电子设备的操作***的进程模拟包括空间的三维表示的计算机生成的三维现实环境;以及在模拟计算机生成的三维现实环境时:接收指示在计算机生成的三维现实环境中启动应用程序的请求的输入;以及响应于接收到输入:启动应用程序的进程;通过所述操作***的所述进程从应用程序的所述进程接收数据对象;以及通过操作***的进程在计算机生成的三维现实环境中模拟所接收的数据对象的三维表示。
在一些实施方案中,暂态计算机可读存储介质存储被配置为由电子设备的一个或多个处理器执行的一个或多个程序,该一个或多个程序包括用于执行以下操作的指令:通过电子设备的操作***的进程模拟包括空间的三维表示的计算机生成的三维现实环境;以及在模拟计算机生成的三维现实环境时:接收指示在计算机生成的三维现实环境中启动应用程序的请求的输入;以及响应于接收到输入:启动应用程序的进程;通过所述操作***的所述进程从应用程序的所述进程接收数据对象;以及通过操作***的进程在计算机生成的三维现实环境中模拟所接收的数据对象的三维表示。
在一些实施方案中,电子设备包括一个或多个处理器,以及存储被配置为由一个或多个处理器执行的一个或多个程序的存储器,该一个或多个程序包括用于执行以下操作的指令:通过电子设备的操作***的进程模拟包括空间的三维表示的计算机生成的三维现实环境;以及在模拟计算机生成的三维现实环境时:接收指示在计算机生成的三维现实环境中启动应用程序的请求的输入;以及响应于接收到输入:启动应用程序的进程;通过所述操作***的所述进程从应用程序的所述进程接收数据对象;以及通过操作***的进程在计算机生成的三维现实环境中模拟所接收的数据对象的三维表示。
在一些实施方案中,电子设备包括:用于通过电子设备的操作***的进程模拟包括空间的三维表示的计算机生成的三维现实环境的装置;以及在模拟计算机生成的三维现实环境时:用于接收指示在计算机生成的三维现实环境中启动应用程序的请求的输入的装置;以及响应于接收到输入:用于启动应用程序的进程的装置;用于通过所述操作***的所述进程从所述应用程序的所述进程接收数据对象的装置;以及用于通过操作***的进程在计算机生成的三维现实环境中模拟所接收的数据对象的三维表示的装置。
用于执行这些功能的可执行指令任选地被包括在被配置用于由一个或多个处理器执行的非暂态计算机可读存储介质或其他计算机程序产品中。用于执行这些功能的可执行指令任选地被包括在被配置用于由一个或多个处理器执行的暂态计算机可读存储介质或其他计算机程序产品中。
附图说明
在下面的描述中,参考形成本公开的一部分并且示出本公开的多个实施方案的附图。应当理解,其他实施方案也可被利用,并且在不脱离本公开的范围的情况下可进行结构改变和操作改变。在不同附图中使用相同的标引符号表示相似或相同项目。
图1A-图1B描绘了用于各种计算机生成的现实技术的示例性***,这些技术包括虚拟现实和混合现实。
图1C-图1E示出了移动设备形式的***的实施方案。
图1F-图1H示出了头戴式显示器设备形式的***的实施方案。
图1I示出了平视显示器设备形式的***的实施方案。
图2描绘了根据一些实施方案的计算机生成的现实平台的示例性共享进程框架的框图。
图3描绘了根据一些实施方案的计算机生成的现实平台的示例性数据对象的内容。
图4A-图4C描绘了根据一些实施方案的计算机生成的现实平台的部件的示例性框图。
图5描绘了根据一些实施方案的在电子设备上执行的进程的示例性框图。
图6A-图6E描绘了根据一些实施方案的示例性计算机生成的现实环境。
图7A-图7C描绘了示出根据一些实施方案的生成计算机生成的现实环境的方法的流程图。
图8描绘了根据一些实施方案的在计算机生成的现实环境中创建示例性虚拟对象。
图9A-图9C描绘了示出根据一些实施方案的生成计算机生成的现实环境的方法的流程图。
图10A-图10B描绘了根据一些实施方案的将虚拟对象添加至计算机生成的现实环境。
图11A-图11C描绘了示出根据一些实施方案的生成计算机生成的现实环境的方法的流程图。
具体实施方式
提供以下描述以使得本领域的一般技术人员能够制备和使用各种实施方案。特定设备、特定技术和特定应用程序的描述仅作为实施方案提供。本文中描述的针对实施方案的各种修改形式对于本领域的一般技术人员而言将是显而易见的,并且本文中所限定的一般性原则在不脱离各种实施方案的实质和范围的情况下,可应用于其他实施方案和应用程序。因此,各种实施方案并非旨在限于本文所述和所示的实施方案,而是要符合权利要求的范围。
本文描述了与各种计算机生成的现实技术有关的使用此类***的电子***和技术的各种实施方案,这些技术包括虚拟现实和混合现实(其结合了来自物理环境的感官输入)。
物理环境(或真实环境)是指人们在没有电子***帮助的情况下能够感测和/或交互的物理世界。物理环境诸如物理公园包括物理物品(也称为物理对象、物理实体或真实对象),诸如物理树、物理建筑物和物理人。人们能够诸如通过视觉、触觉、听觉、味觉和嗅觉来直接感测物理环境和/或与物理环境交互。
相反,计算机生成现实(CGR)环境是指人们经由电子***感知和/或交互的完全或部分模拟的环境。在CGR中,跟踪人的物理运动的一个子集或其表示,并且作为响应,以符合至少一个物理定律的方式调节在CGR环境中模拟的一个或多个虚拟对象的一个或多个特征。例如,CGR***可以检测人的头部转动,并且作为响应,以与此类视图和声音在物理环境中变化的方式类似的方式调节呈现给人的图形内容和声场。在一些情况下(例如,出于可达性原因),对CGR环境中虚拟对象的特征的调节可以响应于物理运动的表示(例如,声音命令)来进行。
人可以利用其感官中的任一者来感测CGR对象和/或与CGR对象交互,包括视觉、听觉、触觉、味觉和嗅觉。例如,人可以感测音频对象和/或与音频对象交互,音频对象创建3D或空间音频环境,3D或空间音频环境提供3D空间中点音频源的感知。又如,音频对象可以使能音频透明度,该音频透明度在有或者没有计算机生成的音频的情况下选择性地引入来自物理环境的环境声音。在某些CGR环境中,人可以感测和/或只与音频对象交互。
CGR的示例包括虚拟现实和混合现实。
虚拟现实(VR)环境(虚拟环境)是指被设计成对于一个或多个感官完全基于计算机生成的感官输入的模拟环境。VR环境包括人可以感测和/或交互的多个虚拟对象。例如,树木、建筑物和代表人的化身的计算机生成的图像是虚拟对象的示例。人可以通过在计算机生成的环境内人的存在的模拟、和/或通过在计算机生成的环境内人的物理运动的一个子组的模拟来感测和/或与VR环境中的虚拟对象交互。
与被设计成完全基于计算机生成的感官输入的VR环境相比,混合现实(MR)环境是指被设计成除了包括计算机生成的感官输入(例如,虚拟对象)之外还引入来自物理环境的感官输入或其表示的模拟环境。在虚拟连续体上,混合现实环境是完全物理环境作为一端和虚拟现实环境作为另一端之间的任何状况,但不包括这两端。
在一些MR环境中,计算机生成的感官输入可以对来自物理环境的感官输入的变化进行响应。另外,用于呈现MR环境的一些电子***可以跟踪相对于物理环境的位置和/或取向,以使虚拟对象能够与真实对象(即,来自物理环境的物理物品或其表示)交互。例如,***可以导致运动使得虚拟树木相对于物理地面看起来是静止的。
混合现实的示例包括增强现实和增强虚拟。
增强现实(AR)环境是指其中一个或多个虚拟对象叠加在物理环境或其表示之上的模拟环境。例如,用于呈现AR环境的电子***可具有透明或半透明显示器,人可以透过该显示器直接查看物理环境。该***可以被配置成在透明或半透明显示器上呈现虚拟对象,使得人利用该***感知叠加在物理环境之上的虚拟对象。另选地,***可以具有不透明显示器和一个或多个成像传感器,成像传感器捕获物理环境的图像或视频,这些图像或视频是物理环境的表示。***将图像或视频与虚拟对象组合,并在不透明显示器上呈现组合物。人利用***经由物理环境的图像或视频而间接地查看物理环境,并且感知叠加在物理环境之上的虚拟对象。如本文所用,在不透明显示器上显示的物理环境的视频被称为“透传视频”,意味着***使用一个或多个图像传感器捕获物理环境的图像,并且在不透明显示器上呈现AR环境时使用那些图像。进一步另选地,***可以具有投影***,该投影***将虚拟对象投射到物理环境中,例如作为全息图或者在物理表面上,使得人利用该***感知叠加在物理环境之上的虚拟对象。
增强现实环境也是指其中物理环境的表示被计算机生成的感官信息进行转换的模拟环境。例如,在提供透传视频中,***可以对一个或多个传感器图像进行转换以施加与成像传感器所捕获的视角不同的选择视角(例如,视点)。又如,物理环境的表示可以通过图形地修改(例如,放大)其部分而进行转换,使得经修改部分可以是原始捕获图像的代表性的但不是真实的版本。再如,物理环境的表示可以通过以图形方式消除其部分或将其部分进行模糊处理而进行转换。
增强虚拟(AV)环境是指虚拟或计算机生成环境结合了来自实体环境的一项或多项感官输入的模拟环境。感官输入可以是物理环境的一个或多个特征的表示。例如,AV公园可以具有虚拟树木和虚拟建筑物,但人的脸部是从对物理人拍摄的图像逼真再现的。又如,虚拟对象可以采用一个或多个成像传感器所成像的物理物品的形状或颜色。再如,虚拟对象可以采用符合太阳在物理环境中的位置的阴影。
有许多不同类型的电子***使人能够感测和/或与各种CGR环境交互。示例包括头戴式***、基于投影的***、平视显示器(HUD)、集成有显示能力的车辆挡风玻璃、集成有显示能力的窗户、被形成为被设计用于放置在人眼睛上的透镜的显示器(例如,类似于隐形眼镜)、耳机/听筒、扬声器阵列、输入***(例如,具有或没有触觉反馈的可穿戴或手持控制器)、智能电话、平板电脑、和台式/膝上型计算机。头戴式***可以具有一个或多个扬声器和集成的不透明显示器。另选地,头戴式***可以被配置成接受外部不透明显示器(例如,智能电话)。头戴式***可以结合用于捕获物理环境的图像或视频的一个或多个成像传感器、和/或用于捕获物理环境的音频的一个或多个麦克风。头戴式***可以具有透明或半透明显示器,而不是不透明显示器。透明或半透明显示器可以具有媒介,代表图像的光通过该媒介被引导到人的眼睛。显示器可以利用数字光投影、OLED、LED、uLED、硅基液晶、激光扫描光源或这些技术的任意组合。媒介可以是光学波导、全息图媒介、光学组合器、光学反射器、或它们的任意组合。在一个实施方案中,透明或半透明显示器可被配置成选择性地变得不透明。基于投影的***可以采用将图形图像投影到人的视网膜上的视网膜投影技术。投影***也可以被配置成将虚拟对象投影到物理环境中,例如作为全息图或在物理表面上。
图1A和图1B描绘了用于各种计算机生成的现实技术的示例性***100,这些技术包括虚拟现实和混合现实。
在一些实施方案中,如图1A所示,***100包括设备100a。设备100a包括各种部件,诸如处理器102、RF电路104、存储器106、图像传感器108、取向传感器110、麦克风112、位置传感器116、扬声器118、显示器120和触敏表面122。这些部件任选地通过设备100a的通信总线150进行通信。
在一些实施方案中,***100的元件在基站设备(例如,计算设备,诸如远程服务器、移动设备或膝上型计算机)中实现,并且***100的其他元件在设计成由用户佩戴的头戴式显示器(HMD)设备中实现,其中HMD设备与基站设备通信。在一些实施方案中,设备100a在基站设备或HMD设备中实现。
如图1B所示,在一些实施方案中,***100包括两个(或更多个)通信中的设备,诸如通过有线连接或无线连接。第一设备100b(例如,基站设备)包括处理器102、RF电路104和存储器106。这些部件可选地通过设备100b的通信总线150进行通信。第二设备100c(例如,头戴式设备)包括各种部件,诸如处理器102、RF电路104、存储器106、图像传感器108、取向传感器110、麦克风112、位置传感器116、扬声器118、显示器120和触敏表面122。这些部件可选地通过设备100c的通信总线150进行通信。
在一些实施方案中,***100是移动设备,诸如在相对于图1C-图1E中的设备100a描述的实施方案中。在一些实施方案中,***100是头戴式显示器(HMD)设备,诸如在相对于图1F-图1H中的设备100a描述的实施方案中。在一些实施方案中,***100是可穿戴HUD设备,诸如在关于图1I中的设备100a描述的实施方案中。
***100包括处理器102和存储器106。处理器102包括一个或多个通用处理器、一个或多个图形处理器、和/或一个或多个数字信号处理器。在一些实施方案中,存储器106是存储计算机可读指令的一个或多个非暂态计算机可读存储介质(例如,闪存存储器,随机存取存储器),所述计算机可读指令被配置为由处理器102执行以执行下述技术。
***100包括RF电路104。RF电路104可选地包括用于与电子设备、网络(诸如互联网、内联网)和/或无线网络(诸如蜂窝网络和无线局域网(LAN))通信的电路。RF电路104可选地包括用于使用近场通信和/或短程通信(诸如
Figure BDA0002392143620000121
)进行通信的电路。
***100包括显示器120。在一些实施方案中,显示器120包括第一显示器(例如,左眼显示面板)和第二显示器(例如,右眼显示面板),每个显示器用于向用户的相应眼睛显示图像。对应的图像同时显示在第一显示器和第二显示器上。可选地,对应的图像包括来自不同视点的相同虚拟对象和/或相同物理对象的表示,从而产生视差效应,该视差效应向用户提供显示器上对象的立体感效应。在一些实施方案中,显示器120包括单个显示器。对于用户的每只眼睛,对应的图像同时显示在单个显示器的第一区域和第二区域上。可选地,对应的图像包括来自不同视点的相同虚拟对象和/或相同物理对象的表示,从而产生视差效应,该视差效应向用户提供单个显示器上对象的立体感效应。
在一些实施方案中,***100包括用于接收用户输入的触敏表面122,诸如轻击输入和轻扫输入。在一些实施方案中,显示器120和触敏表面122形成触敏显示器。
***100包括图像传感器108。图像传感器108可选地包括一个或多个可见光图像传感器(诸如电荷耦合设备(CCD)传感器)和/或可操作以从真实环境获得物理对象的图像的互补金属氧化物半导体(CMOS)传感器。图像传感器还可选地包括一个或多个红外(IR)传感器,诸如无源IR传感器或有源IR传感器,用于检测来自真实环境的红外光。例如,有源IR传感器包括IR发射器,诸如IR点发射器,用于将红外光发射到真实环境中。图像传感器108还可选地包括一个或多个事件相机,这些事件相机被配置为捕获真实环境中的物理对象的移动。图像传感器108还可选地包括一个或多个深度传感器,这些深度传感器被配置为检测物理对象与***100的距离。在一些实施方案中,***100组合使用CCD传感器、事件相机和深度传感器来检测***100周围的物理环境。在一些实施方案中,图像传感器108包括第一图像传感器和第二图像传感器。第一图像传感器和第二图像传感器可选地被配置为从两个不同的视角捕获真实环境中的物理对象的图像。在一些实施方案中,***100使用图像传感器108来接收用户输入,诸如手势。在一些实施方案中,***100使用图像传感器108来检测***100和/或显示器120在真实环境中的位置和取向。例如,***100使用图像传感器108来跟踪显示器120相对于真实环境中的一个或多个固定对象的位置和取向。
在一些实施方案中,***100包括麦克风112。***100使用麦克风112来检测来自用户和/或用户的真实环境的声音。在一些实施方案中,麦克风112包括麦克风阵列(包括多个麦克风),其任选地串联操作,以便识别环境噪声或在真实环境的空间中定位声源。
***100包括用于检测***110和/或显示器120的取向和/或移动的取向传感器100。例如,***100使用取向传感器110来跟踪***100和/或显示器120的位置和/或取向的变化,诸如关于真实环境中的物理对象。取向传感器110可选地包括一个或多个陀螺仪和/或一个或多个加速度计。
图1C-图1E示出了设备100a形式的***100的实施方案。在图1C-图1E中,设备100a是移动设备,诸如蜂窝电话。图1C示出了执行虚拟现实技术的设备100a。设备100a在显示器120上显示虚拟环境160,该虚拟环境包括虚拟对象,诸如太阳160a、鸟160b和海滩160c。所显示的虚拟环境160和虚拟环境160的虚拟对象(例如,160a、160b、160c)都是计算机生成的图像。需注意,图1C中示出的虚拟现实环境不包括来自真实环境180的物理对象的表示,诸如人180a和树180b,即使真实环境180的这些元素在设备100a的图像传感器108的视野内。
图1D示出了使用透传视频执行混合现实技术,特别是增强现实技术的设备100a。设备100a正在显示器120上显示具有虚拟对象的真实环境180的表示170。真实环境180的表示170包括人180a的表示170a和树180b的表示170b。例如,该设备使用图像传感器108来捕获真实环境180的图像,这些图像经透传以在显示器120上显示。设备100a在人180a的表示170a的头部上覆盖帽子160d,该帽子是由设备100a生成的虚拟对象。设备100a相对于设备100a的位置和/或取向来跟踪物理对象的位置和/或取向,以使虚拟对象能够与来自增强现实环境中的真实环境的物理对象进行交互。在该实施方案中,设备100a考虑设备100a和人180a的移动,以将帽子160d显示为在人180a的表示170a的头部上,即使设备100a和人180a相对于彼此移动也是如此。
图1E示出了执行混合现实技术,特别是增强虚拟技术的设备100a。设备100a在显示器120上显示具有物理对象的表示的虚拟环境160。虚拟环境160包括虚拟对象(例如,太阳160a、鸟160b)和人180a的表示170a。例如,设备100a使用图像传感器108来捕获真实环境180a中的人180的图像。设备100a将人180a的表示170a放置在虚拟环境160中,以在显示器120上显示。设备100a相对于设备100a的位置和/或取向任选地跟踪物理对象的位置和/或取向,以使虚拟对象能够与来自真实环境180的物理对象进行交互。在该实施方案中,设备100a考虑设备100a和人180a的移动,以将帽子160d显示为在人180a的表示170a的头部上。值得注意的是,在该实施方案中,在执行混合现实技术时,即使树180b也在设备100a的图像传感器的视野内,设备100a也不显示树180b的表示。
图1F-图1H示出了设备100a形式的***100的实施方案。如图1F-图1H所示,设备100a是被配置为佩戴在用户头部上的HMD设备,其中用户的每只眼睛观看相应的显示器120a和120b。图1F示出了执行虚拟现实技术的设备100a。设备100a在显示器120a和显示器120b上显示虚拟环境160,该虚拟环境包括虚拟对象,诸如太阳160a、鸟160b和海滩160c。所显示的虚拟环境160和虚拟对象(例如,160a、160b、160c)是计算机生成的图像。在该实施方案中,设备100a同时在显示器120a和显示器120b上显示对应的图像。对应的图像包括来自不同视点的相同虚拟环境160和虚拟对象(例如,160a、160b、160c),从而产生视差效应,该视差效应向用户提供显示器上对象的立体感效应。需注意,图1F中描绘的虚拟现实环境不包括来自真实环境的物理对象的表示,诸如人180a和树180b,即使人180a和树180b在执行虚拟现实技术时位于设备100a的图像传感器的视野内。
图1G示出了使用透传视频执行增强现实技术的设备100a。设备100a正在显示器120a和120b上显示具有虚拟对象的真实环境180的表示170。真实环境180的表示170包括人180a的表示170a和树180b的表示170b。例如,设备100a使用图像传感器108来捕获真实环境180的图像,这些图像经透传以在显示器120a和120b上显示。设备100a将计算机生成的帽子160d(虚拟对象)覆盖在人180a的表示170a的头部上,以在每个显示器120a和120b上显示。设备100a相对于设备100a的位置和/或取向来跟踪物理对象的位置和/或取向,以使虚拟对象能够与来自真实环境180的物理对象进行交互。在该示例中,设备100a考虑设备100a和人180a的移动,以将帽子160d显示为在人180a的表示170a的头部上。
图1H示出了使用透传视频执行混合现实技术,特别是增强虚拟技术的设备100a。设备100a在显示器120a和120b上显示具有物理对象的表示的虚拟环境160。虚拟环境160包括虚拟对象(例如,太阳160a、鸟160b)和人180a的表示170a。例如,设备100a使用图像传感器108来捕获人180a的图像。设备100a将人180a的表示170a放置在虚拟环境中,以在显示器120a和120b上显示。设备100a相对于设备100a的位置和/或取向任选地跟踪物理对象的位置和/或取向,以使虚拟对象能够与来自真实环境180的物理对象进行交互。在该实施方案中,设备100a考虑设备100a和人180a的移动,以将帽子160d显示为在人180a的表示170a的头部上。值得注意的是,在该实施方案中,在执行混合现实技术时,即使树180b也在设备100a的图像传感器108的视野内,设备100a也不显示树180b的表示。
图1I示出了设备100a形式的***100的实施方案。在图1I中,设备100a是被配置为佩戴在用户头上的HUD设备(例如,眼镜设备),其中用户的每只眼睛观看相应的平视显示器120c和120d。图1I示出了使用平视显示器120c和120d执行增强现实技术的设备100a。平视显示器120c和120d是(至少部分地)透明显示器,因此允许用户结合平视显示器120c和120d观看真实环境180。设备100a在每个平视显示器120c和120d上显示虚拟帽子160d(虚拟对象)。设备100a相对于设备100a的位置和/或取向以及相对于用户眼睛的位置来跟踪真实环境中的物理对象的位置和/或取向,以使虚拟对象能够与来自真实环境180的物理对象进行交互。在该实施方案中,设备100a考虑设备100a的移动、用户眼睛相对于设备100a的移动,以及人180a在显示器120c和120d上的位置处至显示帽子160d的移动,使得用户看来帽子160d位于人180a的头部。
以下描述包括示例性软件***(例如,电子设备使用的***)来执行计算机生成的现实技术。
执行一个或多个应用程序的常规软件***(特别是操作***(OS))对于实现CGR***(例如,一个或多个设备,诸如100a、100b和/或100c,以及存储的用于生成CGR环境的指令(例如,软件))可能不能令人满意。在此类常规***中,应用程序各自在其自己的进程空间中执行它们自己的图形渲染,并且每个应用程序向OS(例如,OS的进程)呈现平面渲染图像以输出至显示器。在OS级别,渲染的平面图像被呈现在显示屏的不同区域上。值得注意的是,这些单独的窗口可在视觉上重叠,但它们所描绘的内容彼此不交互,因为OS没有关于所描绘的内容的信息(例如,属性、行为等),这些信息足以对计算机生成的现实中的内容之间的交互执行现实模拟和渲染。例如,在此类常规***中,操作***将没有足以显示所渲染图像的背面的信息。
另外,在一些常规软件***中,安装的应用程序在运行时可能有权访问用户信息(例如,来自用户的输入),有时甚至在后台执行时也是如此。因此,输入到一个应用程序中的信息可由另一个应用程序读取。如果不努力减少可安装应用程序的数量,则可能会损害用户的隐私性和安全性。
该描述包括示例性软件***(例如,电子设备使用的***)来执行计算机生成的现实技术。
1.计算机生成的现实环境的集中处理
***(例如,100)可提供从增强现实到虚拟现实的一系列体验。为简明起见,增强现实环境、混合现实环境和虚拟现实环境可由***100(本文也称为CGR***100)提供,并且在本文中统称为CGR环境。
现在描述用于提供CGR环境的软件平台的实施方案。该软件平台提供由多个进程用于轻松模拟和渲染富CGR环境的框架。值得注意的是,该软件平台启用限定3D空间界面的用户界面,并且包括从一个或多个应用程序同步到单个共享模拟中的内容,从而超越在任何给定时间针对单个应用程序显示内容的常规概念。通过不以此方式减少来自应用程序的内容输出,***可允许使用集中进程在一个应用程序的模拟虚拟对象(虚拟内容)与另一个应用程序的模拟元素(虚拟内容)之间进行交互。另外,该软件平台可用于创建在多个设备之间共享的模拟(例如,每个设备运行一个或多个应用程序)。例如,多个用户可(例如,经由其相应设备上的显示器)体验模拟CGR环境,其中(在单独的语言环境中操作独立设备的)用户可在相应独立设备上的共享虚拟空间中彼此交互,其中共享虚拟空间(其也可称为共享虚拟环境)包括被同步的内容,从而向彼此营造一种他们存在于同一空间中的感觉。
在一些实施方案中,通过使用操作***级(OS级)进程在CGR环境中模拟和渲染内容,以及使用一个或多个应用程序级进程提供与要被模拟并渲染给OS级进程的内容相关的信息,来实现软件平台。如本文所用,OS级进程用于指具有内核级执行权限的进程。如本领域的技术人员所知,OS通常具有内核,内核是对充当应用程序和设备硬件之间的接口的计算***具有控制权的功能或程序。例如,具有内核级执行权限的进程通常具有访问设备资源的最高级别权限,包括访问输入/输出(I/O)设备(例如,显示设备)的能力。如本文所用,应用程序级进程用于指执行权限比内核级进程的执行权限更低的进程。例如,应用程序级进程(例如,第三方应用程序)通常从权限级别高于应用程序级进程的进程请求访问I/O设备的权限。如本领域的技术人员所知,可使用其他类型的设备资源安全方案来实现相同或相似的结果(例如,具有不同级别的权限和/或设备资源可访问性的进程),所有这些都旨在在本公开的范围内。
如本文所述,在一些实施方案中,软件平台包括多个软件应用程序,其可包括本机应用程序(例如,与设备的操作***相关联和/或集成到设备的操作***中的应用程序)和第三方应用程序(例如,与第三方服务提供方相关联的应用程序)的任何组合。在一些实施方案中,每个应用程序级进程将一个或多个CGR数据对象提供给OS级进程(共享进程),OS级进程继而基于所接收的CGR数据对象来模拟(例如,和渲染)单个共享空间CGR环境。这样,OS级进程能够使用单个共享模拟来模拟由CGR环境中任意数量的应用程序所提供的各种内容之间的交互。例如,如果应用程序由模拟CGR环境中的三维虚拟对象表示,并且三维虚拟对象中的一者是光源,则OS级进程能够模拟光源照亮该CGR环境中的其他三维虚拟对象(例如,来自其他应用程序)的方式。相比之下,如果每个应用程序级进程要单独模拟和渲染对应的三维虚拟对象并将所渲染的图像提供给OS级进程,则OS级进程将需要相应地改变和/或组合每个所渲染的图像,使得每个所渲染的三维虚拟对象被正确照亮。应当认识到,后一种方法更加复杂、耗时且耗费资源。
图2示出了描绘多应用程序结构的框图。在一些实施方案中,根据指示启动CGR环境的请求的用户输入,CGR***启动OS级进程(例如,共享进程206)。OS级进程模拟并渲染CGR环境的初始实例(例如,房间的三维表示),例如,在初始化或接收到来自一个或多个进程的内容时。此外,根据指示启动应用程序(例如,应用程序202)的请求的用户输入,CGR***启动与该应用程序相关联的应用程序级进程,应用程序级进程继而向OS级进程提供与要被模拟和渲染的内容相关的信息。OS级进程从应用程序级进程接收信息,并且基于该信息来相应地模拟和渲染CGR环境(例如,模拟和渲染三维虚拟环境中的虚拟内容)。此外,在一些实施方案中,第二应用程序(例如,应用程序204)执行信息并将信息发送到同一OS级进程(例如,共享进程206),该进程使用来自两个同时执行的应用程序(例如,202和204)的信息来模拟CGR环境。在一些实施方案中,第二应用程序在与第一应用程序相同的设备上执行,或者在远程设备上执行。
在一些实施方案中,CGR环境是共享空间CGR环境,或者是可包括来自多个不同源(例如,应用程序、集中进程、设备、用户等)的内容的CGR环境。通过举例的方式,CGR数据对象(在下文中描述)由应用程序级进程创建并且被提供给OS级进程,OS级进程继而将共享空间CGR环境中的虚拟对象与一个或多个其他虚拟对象同时渲染。
根据本文所述的技术在运行时(例如,通过OS级进程)对CGR环境进行的集中模拟和渲染可提供多项好处。例如,与常规技术相比(例如,在OS进程接收已由应用程序渲染的图像数据的情况下),显示来自可在CGR环境中进行交互的各种应用程序的内容要容易实现得多。再如,通过限制与在共享CGR环境中执行的应用程序共享的内容,可以提高隐私性和安全性。又如,可容易地捕获CGR环境中的虚拟对象以用于记录和/或回放,或用于与同时查看共享CGR环境的远程设备同步。此外,根据本文所述的技术的软件平台的好处可扩展至CGR环境的开发,例如,通过提供用于开发CGR应用程序的简化框架。
2.用于计算机生成的现实模拟的数据结构——CGR数据对象
在一些实施方案中,进程(例如,应用程序级进程)经由一个或多个数据对象(也称为“CGR数据对象”)来指定要被模拟和渲染给OS级进程的内容。CGR数据对象指定CGR环境中的实体(例如,诸如表格、光源、头像的虚拟对象)的三维表示的各个方面(例如,特征)。如本文相对于计算机生成的环境所用的,除非另外指明(例如,诸如通过将其指定为物理实体),否则“实体”是指虚拟实体。在一些实施方案中,CGR数据对象是包括以下各项中的一者或多者的数据结构:属性数据、事件数据和行为数据。在一些实施方案中,CGR数据对象包括对数据的引用(例如,文件路径、URL、指针等)。例如,CGR数据对象可包括对3D模型(例如,属性)的引用,其中3D模型数据被存储在CGR数据对象的外部(例如,设备存储器中的其他位置)。
属性数据可包括在特定状态下模拟和渲染实体的三维表示所必需的任何数据,诸如:位置、取向(例如,坐标)、形状、尺寸、质地、质量、动画、声音和材料。在一些实施方案中,集中进程(例如,OS级进程)包括一个或多个子***,诸如指向以下各项的子***:图形、音频、物理模拟、动画和AI。在一些实施方案中,属性数据包括由子***处理的数据。例如,属性数据可包括:3D模型、声音效果数据、碰撞形状(例如,凸壳)、约束(例如,结合部、马达)、材料属性(例如,摩擦、复原)、动画(例如,关键帧数据)、当前位置、目标位置和决策树。在一些实施方案中,图形子***渲染3D模型。在一些实施方案中,音频子***播放声音效果。在一些实施方案中,物理子***使用碰撞形状、约束和材料属性来模拟动态。在一些实施方案中,动画子***使用关键帧数据回放动画。在一些实施方案中,AI子***基于当前位置和目标位置来计算路径,并且/或者评估决策树。在一些实施方案中,由CGR数据对象表示的实体对应于物理环境中的物理实体,并且CGR***基于物理实体的特征获取属性数据(例如,使用机器学习经由目视检查所捕获的图像)。属性数据还可包括与实体相关联的设置,诸如名称和访问权数据。
事件数据定义可触发实体响应的状态更改。例如,事件数据可指定触摸事件(例如,实体响应于触摸输入)、单击事件(例如,实体响应于点击输入)等。
行为数据指定实体能够表现出的行为。在一些实施方案中,行为数据包括控制子***之间的数据执行和流动以模拟由CGR数据对象表示的实体的指令。例如,CGR数据对象可包括指定相应虚拟对象具有“物理行为”的数据,这向集中进程指示CGR数据对象应作为共享物理模拟的一部分进行处理(例如,由物理子***处理,使得模拟中的其他虚拟对象可与其发生碰撞并反弹)。该“行为”是可将CGR数据对象添加至子***模拟或从子***模拟中移除的一块自定义逻辑或预定义逻辑,并且可读取模拟结果以更新CGR数据对象(例如,在由物理子***处理之后更新CGR数据对象的位置属性)。其他行为的示例包括“图形行为”、“音频行为”、“动画行为”、“AI行为”等。这些行为的另外示例包括“静态对象”行为(例如,对于建筑物)、“动态对象”行为(例如,对于球)和“动物”行为(例如,对于狗)。例如,CGR数据对象可包括“静态对象”行为,该行为定义具有物理表示(例如,碰撞形状、材料)但不可移动并且不被物理***模拟的虚拟对象——其仅由图形***渲染。例如,CGR数据对象可包括“动态对象”行为,该行为定义具有物理表示(例如,碰撞形状、材料)的虚拟对象,该物理表示由物理子***模拟——然后物理模拟的结果被用于更新由图形***渲染的图形模型。如果存在冲突,则它可触发由音频子***回放的声音效果。例如,CGR数据对象可包括“动物”行为,其使得AI子***评估定义类动物行为(例如,用于模拟人类、狗、猫等)的决策树。决策树评估可定义动画***(例如,在给定时间、响应于给定交互等)回放哪些动画(例如,3D模型姿态)。产生的动画姿态驱动由图形子***渲染的物理模拟和模型中的碰撞形状。行为可包括能够被拾取、能够被推动、能够与CGR环境中的另一个三维表示碰撞,以及能够根据重力表现出行为。行为数据可指定复杂行为,诸如人类行为、犬行为等。
在一些实施方案中,为了***完整性,CGR数据对象不能指定在集中进程(例如,OS级进程)中执行的任意代码。然而,集中进程可(例如,通过包括对一个或多个行为的引用)提供对CGR数据对象可利用的安全的预定义行为库的访问。在此类示例中,“行为”是可(例如,通过在数据对象中包括特定行为或引用而调用,诸如“动态对象”或“动物”)附接到CGR数据对象的预定义逻辑块(例如,集中进程中的“path following logic”(路径遵循逻辑))。在一些实施方案中,行为数据可包括定义(例如,由AI子***使用的)AI行为的自定义(例如,用户定义的)脚本或逻辑。在一些实施方案中,CGR数据对象的属性数据包括用于AI行为的一个或多个参数(例如,移动目标、速度)和/或状态(例如,其可被称为“AI属性”)。
图3示出了示例性CGR数据对象的框图。在所描绘的实施方案中,CGR数据对象301定义要在CGR环境中模拟的虚拟飞机。在一些实施方案中,CGR数据对象包括以下各项中的一者或多者:一个或多个属性、一个或多个行为,以及一个或多个事件。例如,CGR数据对象301包括属性数据301A(例如,定义飞机的属性)、行为数据301B(例如,定义将由飞机表现出的行为)和事件数据301C(例如,定义触发飞机响应的事件)。表302包括关于属性数据301A的详细信息。例如,属性数据301A包括与以动画方式显示虚拟飞机有关的以下数据:用于以动画方式显示虚拟飞机的门的打开和关闭的数据,用于以动画方式显示飞机的雨刷的运动的数据,以及用于以动画方式显示飞机的发动机涡轮的旋转的数据。属性数据301A还包括关于飞机的基本信息,诸如飞机的名称、飞机的位置和飞机的取向(例如,指示飞机的哪个方向是前部)。表302中所示的其他属性数据包括图形数据、音频数据、物理数据和人工智能(AI)数据。该数据可由适当的模拟和渲染进程(例如子***)使用,以便在CGR环境中创建虚拟飞机。如箭头所示,各种类型的属性数据可相互关联并且与多个模拟进程相关(例如,由多个子***使用,如上所述)。例如,避障AI数据将依赖于飞机物理特性的数据(例如,使得AI计算可确定飞机何时将接触障碍物,并且使用该信息来避开障碍物)。
在一些实施方案中,行为数据包括定义虚拟对象的行为的脚本。例如,行为数据301B包括定义虚拟飞机的行为(例如,在CGR环境内)的用户定义的脚本。例如,用户定义的脚本可使虚拟飞机四处转一分钟的时间,在驾驶期间避免障碍物,停泊一分钟的时间,移动其襟翼,起飞和飞行,以及在飞行5分钟后降落。
在一些实施方案中,事件数据包括触发来自虚拟对象的响应的事件。例如,事件数据301C包括名为“鸟”的事件,该事件定义虚拟飞机将如何响应于即将发生的鸟撞。例如,此类响应可包括改变行进方向,向飞机的机头显示凹陷,将飞机着陆,和/或停止旋转飞机的发动机涡轮。
在一些实施方案中,虚拟对象表示应用程序本身——当应用程序被运行时,其在CGR环境中被表现为三维虚拟对象(例如,可与之交互)。因此,与表示应用程序的视觉表示的交互是与应用程序进行交互,并且可使得应用程序的子进程被执行或以其他方式变为活动状态。
CGR数据对象可以由应用程序进程或OS级进程创建。例如,模拟用户的附近物理环境的虚拟环境可包括由应用程序创建的虚拟对象(例如,与物理环境中的物理实体不对应的灯),并且OS级进程可提供表示桌子的虚拟渲染(例如,对应于物理环境中的物理实体)的CGR数据对象。因此,使用如本文所述的CGR数据对象可允许内容被提供到共享空间(例如,由OS级进程渲染),而与CGR数据对象的源无关。通过扩展,如下文将更详细论述的,来自远程源的CGR数据对象(例如,通过不同OS级进程在不同设备上执行的应用程序)可另外地或另选地在OS级进程的共享空间中被渲染。
CGR数据对象是轻量数据结构,例如,该结构描述将放置在CGR环境中的对象的属性和行为。因此,CGR数据对象易于并且高效地在进程(例如,使用IPC从应用程序级进程到OS级进程)和设备(例如,模拟在两个设备处模拟的虚拟环境中的两个远程用户的存在的远程设备之间)之间共享。CGR数据对象的轻量性质可允许原本会是对CGR环境的计算重模拟和渲染由接收CGR数据对象的单个集中进程(例如,OS级进程)来执行。可省略定义虚拟对象不需要的信息,诸如渲染例程或在公共库中找到的信息。
CGR数据对象用于在CGR环境中(例如,在混合现实环境中)表示虚拟对象。如上所述,CGR数据对象包括用于模拟和渲染虚拟对象的数据。例如,虚拟房间的模拟可具有分别表示每个房间、房间中的桌子、表示房间中存在的用户的头像、房间中的程序性内容等的CGR数据对象。
在一些实施方案中,CGR数据对象包括附加数据。在一些实施方案中,CGR数据对象包括一个或多个与隐私相关的属性。例如,CGR数据对象可包括指示对应的虚拟对象不应被共享(例如,对其他用户不可见)的属性。例如,如果第一用户邀请第二用户进入模拟第一用户的家的CGR环境中的共享虚拟空间,而在模拟该用户的家的虚拟环境中,第一用户的家中存在他们不希望对第二用户可见的特定物理对象(例如,放置在桌子上的名片)。因此,表示对应于这些特定物理对象的虚拟对象的CGR数据对象可(例如,在默认情况下或由用户指定)包括阻止共享此类虚拟对象的属性。在一些实施方案中,虚拟对象可为可共享的,但具有被指定为在表示性CGR数据对象中不可共享的一个或多个属性(例如,少于其所有属性)。例如,就名片而言,表示名片的虚拟对象的质地可被指定为不可共享的属性(例如,第二用户将可看到名片的形状,但名字和电话信息不被再现,例如,通过将图形内容替换为一般质地,诸如纯色)。在一些实施方案中,软件平台可选择性地与其他用户共享CGR数据对象的属性,诸如利用基于用户的权限。因此,CGR数据对象(表示虚拟对象)的一部分或全部可与指定的可信用户(例如,配偶)共享,但不与用户指定的不可信用户(例如,熟人)共享。
应当注意的是,与隐私相关的属性不仅可用于防止与其他用户共享内容,而且可用于防止与其他应用程序的未经授权或不必要的共享。由于软件平台提供的框架,应用程序不需要关于CGR环境的信息来向CGR环境提供内容。相反,应用程序将定义虚拟对象的目标属性和行为的一个或多个CGR数据对象传递到执行模拟和渲染的集中OS级进程(例如,经由IPC)。因此,OS级进程具有关于CGR环境的信息,包括在其中运行的其他应用程序所提供的任何其他内容,但此类信息不一定与所有应用程序共享。然而,在向应用程序提供关于CGR环境中的其他虚拟对象的数据(例如,由用户)的访问权的情况下,应用程序之间共享的内容的范围可按上文相对于其他设备所述的相同方式来控制。例如,可能向应用程序提供房间中有人与用户一起存在的信息,但不向应用程序提供该人的详细视觉信息(例如,面部特征的描绘)。
前面的示例旨在帮助理解本发明技术。需注意,本公开涉及可用于传送信息的基础技术。出于谨慎起见,使用这些技术来传送可能被视为个人信息数据的信息的实体应遵守既定的隐私政策和/或隐私惯例。具体地,此类实体应实施并坚持使用被公认为满足或超出对维护个人信息数据的隐私性和安全性的行业或政府要求的隐私政策和实践。用户可以方便地访问此类策略,并应随着数据的采集和/或使用变化而更新。用户的个人信息应采集为实体的合法和合理使用,而不应在这些合法使用之外共享或销售。此外,在收到用户知情同意后,应进行此类采集/共享。此外,此类实体应考虑采取任何必要步骤,保卫和保障对此类个人信息数据的访问,并确保其他有权访问个人信息数据的人遵守其隐私政策和流程。另外,此类实体可使其本身经受第三方评估以证明其遵守广泛接受的隐私政策和实践。此外,应调整政策和实践,以便采集和/或访问的特定类型的个人信息数据,并适用于包括管辖范围的具体考虑的适用法律和标准。实际上,本公开考虑了可能控制信息以提高隐私性的实施方案。然而,本发明技术可被配置为允许用户选择“选择加入”或“选择退出”参与。本公开的目的是提供提高他们认为是个人信息的数据(无论是名片、事件日历等)的安全性的技术。
CGR数据对象的其他特征包括跨多个设备进行同步的能力。例如,在同时由两个或更多个远程设备渲染的CGR环境中,可同步CGR环境内的虚拟内容(由CGR数据对象表示),以便在两个模拟中看到变化。因此,在一些实施方案中,软件平台同步设备之间的属性(例如,以定期间隔,响应于变化等)。例如,软件平台可在给定时间点(或一个时间段内)保存CGR数据对象的快照,并将其发送至在同一模拟中共享的其他设备。远程设备上的软件平台可接收和处理数据(例如,其可包括使用所接收的数据更新存储在接收设备处的CGR数据对象的实例),并且相应地更新第二设备处的模拟。在一些实施方案中,CGR数据对象的模拟在每个设备处执行,但一个模拟相对于其他模拟具有权限(例如,邀请其他用户(设备)进入CGR环境或共享虚拟空间的主机用户)。下文相对于图4C更详细地描述了CGR数据对象的同步,该附图描绘了两个设备之间的示例性共享虚拟空间会话。
3.CGR***软件平台
图4A示出了根据一些实施方案的软件平台部件的示例性框图。在一些实施方案中,CGR数据对象由软件平台的部件模拟,该软件平台被称为“CGR引擎”。在一些实施方案中,CGR引擎包括用于执行涉及CGR数据对象的模拟(例如,对虚拟对象物理现象、碰撞、人工智能(AI)、行为等的模拟)的指令。在一些实施方案中,模拟包括执行一个或多个计算以创建表示(例如,CGR环境和/或一个或多个数据对象的表示)。在一些实施方案中,(例如,CGR环境和/或一个或多个数据对象的)模拟包括将表示保留在存储器中。在一些实施方案中,CGR引擎渲染用于显示的模拟内容。例如,CGR引擎可包括图形渲染器,该图形渲染器从一个或多个应用程序接收图形信息,并基于所接收的图形信息渲染用于显示的虚拟对象。
CGR引擎可以实现为软件平台的其他进程的子进程。例如,如本文所述,CGR引擎可以是应用程序级进程、OS级进程或这两者的一部分(例如,以不同的配置文件模式运行)。在一些实施方案中,CGR引擎执行的特定操作可取决于实现CGR引擎的进程的类型。此外,CGR引擎的特定功能可取决于其在其中运行的配置文件模式,例如,该模式继而可取决于其所属的进程的类型。应用程序可被分类为“协作”类型或“独占”类型应用程序,这可影响CGR引擎在哪个配置文件模式中执行。在CGR***的示例性实施中,软件平台允许可在三个不同的配置文件中运行以支持上述各种场景的CGR引擎。配置文件可能包括客户端配置文件、服务器配置文件和完整配置文件。用于支持软件平台的配置文件在下文中进行了更详细的描述。
图4A的框图包括多个不同的进程类型。图4A包括协作应用程序402,其包括应用程序A(402A)、应用程序B(402B)和应用程序C(402C)。每个应用程序可被视为一个进程,并且每个进程都可具有任意数量的子进程(或线程)。应用程序B和C各自包括CGR引擎(在客户端配置文件中运行)。如图所示,应用程序402A至应用程序402C各自与集中进程410(例如,OS级进程)通信。此类通信可包括例如交换与模拟和处理CGR内容相关的信息。
集中进程410包括CGR引擎(在服务器配置文件中运行)。在一些实施方案中,集中进程是共享进程(例如,共享进程206)。如下文更详细地描述,服务器和客户端配置文件CGR引擎部件管理CGR虚拟对象(例如,三维对象)的交换和模拟。
图4A还包括独占应用程序406,其包括应用程序D(406A)、应用程序E(406B)和应用程序F(406C)。应用程序E包括CGR引擎(在完整配置文件中运行)。如图所示,应用程序406A至应用程序406C各自与OS 420通信,但不与集中进程410通信。图4A中所示的进程(及其部件)在下文中进行了更详细的描述。
在一些实施方案中,CGR引擎在“服务器配置文件”模式中运行。在服务器配置文件模式中,可以从本地或远程定义CGR数据对象。例如,两个彼此远离的设备可同时渲染计算机生成的现实环境共享虚拟空间,并且每个设备都在服务器配置文件模式中执行CGR引擎。在服务器配置文件模式中,CGR引擎可渲染(例如,通过本地设备的OS级进程或应用程序级进程)从本地创建的或(例如,通过远程设备的OS级进程或应用程序级进程)从远程创建的CGR数据对象。通常来说,OS级进程将在服务器配置文件模式中运行CGR引擎。例如,OS级进程可从多个本地和远程应用程序级进程接收CGR数据对象,并且渲染包括所接收的每个CGR数据对象的视觉表示的CGR环境。应用程序级进程将在客户端配置文件中运行CGR引擎的轻量版本,如下所述。因此,运行服务器配置文件的CGR引擎在服务器-客户端关系中充当服务器(例如,其中CGR引擎在客户端配置文件中运行,如下所述)。
在一些实施方案中,CGR引擎在“客户端配置文件”模式中运行。在客户端配置文件模式中,CGR引擎定义CGR数据对象,但CGR引擎不控制模拟(例如,不执行模拟和渲染计算),并且将CGR数据对象传递给在服务器配置文件中运行CGR引擎的进程。例如,此类模式允许一个或多个同时执行的应用程序将CGR数据对象提供给共享模拟空间,该共享模拟空间随后由另一个进程(例如,在服务器配置文件中运行CGR引擎的OS级进程)渲染。这样,客户端配置文件中的CGR引擎表现为瘦客户端,将信息传递给服务器(服务器配置文件中的CGR引擎)以进行处理(例如,模拟和渲染)。例如,第一应用程序级进程可在客户端配置文件模式中运行CGR引擎,并在增强现实CGR空间中定义表示灯的CGR数据对象;第二应用程序级进程可在客户端配置文件模式中运行CGR引擎,并在增强现实CGR空间中定义表示计算器的CGR数据对象。灯和计算器CGR数据对象可由在服务器配置文件模式中运行CGR引擎的OS级进程(例如,对第一应用程序级进程和第二应用程序级进程而言是共享进程或集中进程)渲染,从而渲染灯和计算器以显示给用户。此外,虚拟对象可进行交互——在渲染计算器的视觉外观时可考虑灯的照明(例如,灯的照明的颜色影响CGR环境中的计算器对象的显示颜色)。
在一些实施方案中,在客户端配置文件中运行CGR引擎的进程(例如,协作应用程序)使用进程间通信(其也可称为“进程间通信”或IPC),以将CGR数据对象传递给控制模拟的集中进程(例如,OS级进程)。然后由集中进程(例如,从应用程序远程地)模拟CGR数据对象。在一些实施方案中,集中进程(例如,在模拟之后)使用IPC向应用程序进程提供CGR数据对象的更新数据。
在一些实施方案中,CGR引擎在“完整配置文件”模式中运行。在完整配置文件模式中,CGR引擎对CGR环境(例如,包含CGR数据对象)的模拟具有完全控制权。例如,在完整配置文件中运行的CGR引擎既可定义要添加至计算机生成的现实环境的新CGR数据对象,又可实际执行所述新CGR数据对象的渲染和模拟。通常来说,在“独占”模式(也称为“独占”类型应用程序)中运行的、对计算机生成的现实环境模拟和渲染具有完全控制权的应用程序将在完整配置文件模式中运行CGR引擎。在独占模式中运行的应用程序对显示输出具有控制权,因此另一个应用程序(例如,协作或独占)不能向独占应用程序的所显示的CGR环境提供内容。
如上文总体所述,应用程序可共享协作模拟或对模拟具有独占控制权。这些应用程序分别被分类为“协作”类型应用程序和“独占”类型应用程序。
协作应用程序是可与其他协作应用程序同时运行并共享模拟的应用程序(例如,工具)。例如,模拟共享空间可同时包括由第一协作应用程序提供的灯虚拟对象的渲染和由第二协作应用程序提供的计算器的渲染。协作应用程序可向模拟添加新的CGR数据对象,但不控制模拟(例如,其在客户端配置文件中运行CGR引擎并且将表示虚拟内容的数据对象传递给共享/集中进程)。相反,共享空间(虚拟环境)由集中进程(例如,在服务器配置文件中运行CGR引擎的OS级进程)来模拟。在一些实施方案中,协作应用程序被表示为在共享空间中模拟的三维虚拟对象(例如,书桌、椅子、小型电子表格应用、计算器、光源)。在一些实施方案中,单个应用程序级进程可包括多个协作应用程序。例如,办公套件应用程序(例如,“父应用程序”)可包括各自为独立应用程序的一组软件工具,包括计算器应用程序和电子表格应用程序。这些独立“子应用程序”仍可运行其自己的本地模拟,但与其他虚拟对象(例如,来自与办公套件应用程序不同的应用程序)的交互(例如,物理碰撞)受到限制。
在一些实施方案中,协作应用程序可执行例如与应用程序的内部功能相关的特定于应用程序的进程,该内部功能不影响与其他协作应用程序(例如,CGR环境中的其他虚拟内容)的交互。例如,电子表格应用程序可在应用程序级对打开的电子表格中的数据执行算术计算(例如,作为执行中的应用程序的子进程)。某些计算(及其结果)由应用程序进程处理,并且应用程序仅与集中进程共享和与其他应用程序的交互的模拟相关的信息。相比之下,表示电子表格应用程序的三维虚拟对象与表示另一个应用程序的三维虚拟对象的交互将由OS级进程处理(例如,模拟和渲染)。
独占应用程序是在执行时控制整个CGR模拟的应用程序。独占应用程序控制和模拟并渲染它自己的CGR环境。因此,例如,除独占应用程序之外的应用程序通常不向由独占应用程序控制的模拟提供内容。在一些实施方案中,独占类型应用程序可包括被配置为在完整配置文件模式中操作(例如,用于处理CGR数据对象的模拟)的CGR引擎部件。
在一些实施方案中,独占应用程序和协作应用程序被实现为不同类型的应用程序。即,协作应用程序无法在独占模式中运行,而独占应用程序无法在协作模式中运行。在一些实施方案中,应用程序表现为协作应用程序还是独占应用程序取决于应用程序的执行状态。例如,应用程序可根据应用程序的执行状态在协作模式或独占模式中运行(或在模式之间转换)。
如本文所述的软件平台适用于模拟可被分类为VR或MR的虚拟环境(例如,CGR环境)。在一些实施方案中,用于显示的所有内容以3D渲染。例如,无论是源自OS级进程还是应用程序级进程的任何内容都会被渲染,以显示在3D共享空间环境中。在一些实施方案中,2D内容可包括在3D模拟中(例如,但看上去基本上是平面的)。
图4B示出了根据软件平台的一些实施方案的运行时程序堆栈的示例性框图。如图所示,用户界面模块454在与CGR引擎的通信中执行。例如,用户界面模块可将用户界面控件定义为CGR数据对象,其通过CGR引擎进行模拟和渲染。CGR引擎450在与OS库452的通信中执行。示例性OS库包括以下各项中的一者或多者:用于与处理硬件交互的库,用于与图形硬件交互的库,用于处理并发代码执行的库,用于编程语言的库,用于处理3D模型数据的库,应用编程接口(API)库等。
如上所述,在一些实施方案中,CGR引擎(例如,在服务器配置文件模式中)执行模拟和渲染两者。CGR引擎可由例如执行支持模拟和渲染CGR环境的功能的一个或多个子***或模块(例如,进程或子进程)支持(例如,包括该一个或多个子***或模块)。在一些实施方案中,这些子***中的一者或多者并行运行。
在一些实施方案中,CGR引擎的子***构建在一组公共库(例如,图4B的450A)上。示例性公共库包括与以下各项中的一者或多者相关的资源:数学、碰撞检测、动画、作业处理、虚拟文件***(VFS)等等。数学库可包括特定于CGR模拟的函数。碰撞检测库可提供例程以加速图形(例如,视锥体剔除)、用于音频的遮挡信息、用于物理现象的碰撞接触信息、用于AI的可见性和导航信息等等。动画库可包括驱动用户界面(UI)动画以及虚拟对象和角色动画的功能。作业处理库可包括针对特定设备或硬件定制的例程,使得每个子***能够以适当的优先级并行运行。在一些实施方案中,每个子***可将其内部工作分割成更多的作业。虚拟文件***(VFS)库可以简化应用程序的输入和输出(I/O)。例如,VFS库可使得使用CGR引擎的应用程序能够容易地引用现有资源,而不考虑资源是从硬盘加载,从网络流传输还是在内存中本地缓存。因此,使用一组公共库实现CGR引擎允许CGR数据对象的尺寸更紧凑(例如,仅限于描述定义虚拟对象的特征,而不包括与执行模拟和/或渲染此类虚拟对象的功能相关的广泛数据)。
现在描述示例性子***进程。然而,此类实施方案并非旨在是穷尽的。此外,在一些实施方案中,软件平台允许使用来自一个或多个第三方提供方的各种第三方部件来实现子***。
一个示例性子***是输入/输出(I/O)子***(例如,图4B的450B)。在一些实施方案中,I/O子***处理CGR引擎所使用的数据的输入、输出和存储。例如,I/O子***可执行CGR场景数据的存储和加载(例如,从存储器检索CGR数据对象)、CGR场景数据的记录(例如,在特定时间捕获CGR场景数据(CGR数据对象))、CGR场景数据的回放(例如,为特定的时间,为CGR引擎的模拟和渲染检索适当的CGR场景数据),以及CGR场景数据通过网络的同步(例如,处理CGR数据对象数据的交换和相关联的更改,使得两个用户之间的共享虚拟空间保持同步)。在同步的情况下,例如,I/O子***可确保一个用户(例如,在第一设备处)的CGR环境中的变化反映在另一个用户(例如,在第二设备处)的CGR环境中,其中每个设备都模拟和渲染共享CGR环境(例如,共享虚拟空间)。
另一个示例性子***是外观和行为(A&B)子***(例如,图4B的450C)。在一些实施方案中,A&B子***可指并行运行的一个或多个子***,该子***可包括:图形子***(例如,渲染引擎)、音频子***(例如,用于处理3D空间音频)、物理现象模拟子***和人工智能子***。A&B子***执行模拟和渲染CGR环境中的虚拟对象的核心功能。A&B子***可访问适当数据(例如,用于图形子***的来自CGR数据对象的外观信息)并执行用于创建CGR环境模拟的适当计算。A&B子***可通过“对象层”子***(例如,图4B的450D)与CGR数据对象进行交互,该子***将信息传递给A&B子***以及从A&B子***传递信息。例如,当来自物理现象模拟的计算导致CGR数据对象表示的虚拟对象的属性发生变化时,需要在存储器中更新CGR数据对象中的数据——A&B子***通过对象层与CGR数据对象进行通信,这允许更新适当的CGR数据对象。在一些实施方案中,进程或应用程序将数据输出至图像缓冲器(例如,称为CGR层)。然后可使用2D图像合成来组合多个应用程序的“层”。例如,集中进程将表示3D环境的图像数据绘制到CGR层中,并且另一个进程可将OS通知(例如,要叠加在3D环境的显示器上)绘制到另一个层中。然后,OS将两个层组合,并将组合的/混合的图像发送至显示器。
4.计算机生成的现实环境的记录和回放
如上所述,软件平台能够在提供CGR环境时在给定时间存储CGR环境的快照。在一些实施方案中,这通过在特定时间(或一个时间段内)存储CGR数据对象及其属性来实现。由于CGR数据对象的数据结构的效率,可容易地存储或传输此类快照。相反,软件平台可从存储器检索快照,并使用记录在快照中的CGR数据对象来重新创建CGR环境。例如,CGR引擎的实例可使用检索的CGR数据对象来执行模拟和渲染。为了在一个时间段内记录和回放CGR环境,CGR数据对象属性值可存储为关键帧(例如,类似于计算机生成的动画)并存储在故事板(例如,时间线)中。因此,在回放时,软件平台可例如通过内插关键帧令人满意地再现一个时间段内的CGR环境模拟。
应注意,CGR环境的回放包括关于底层内容的信息,不只是CGR环境的图形描绘(例如,图像、视频)。这部分是由于CGR数据对象,其中包括模拟环境的虚拟对象所需的信息。因此,因为***了解CGR环境的内容,所以在回放期间,用户可将所保存的模拟再现为和模拟被记录时一样,或者修改CGR环境的内容以提供另选的CGR模拟。
此外,来自不同模拟或CGR环境的CGR数据对象可在单个模拟中混合。例如,来自第一CGR环境的一个或多个存储的CGR数据对象可被存储在存储器中,被检索,以及被添加至第二CGR环境。
因此,用户可保存CGR模拟(例如,用于本地或远程/云存储)以供后续回放,并且此类模拟可与其他人共享。此类保存的环境可与被记录和存储时的体验一样,或者可在回放期间被改变(例如,动态地改变)。
5.计算机生成的现实环境在多个设备之间的同步
在一些实施方案中,CGR***允许不同位置的多个用户共享CGR环境。例如,CGR***可允许(例如,在两个不同用户的两个设备上)模拟同一CGR环境(例如,同一虚拟房间)的两个实例。即,在第一设备上模拟的CGR环境与在第二设备上模拟的CGR环境同步。为了允许模拟CGR环境的两个实例,CGR***通过将一个或多个CGR数据对象从第一设备传输至第二设备,来使CGR环境的一个实例中的内容(例如,虚拟内容)同步到CGR环境的另一个实例。在一些实施方案中,第一设备和第二设备交换少于全部的CGR数据对象(例如,由于模拟而改变的CGR数据对象的部分)。在一些实施方案中,CGR数据对象是根据相关联的安全性设置被传输的。例如,只有CGR数据对象的可共享属性被同步。
CGR环境同步的示例性应用被用于共享虚拟空间会话。图4C示出了各自使用相应设备的两个用户之间的示例性共享虚拟空间会话。在一些实施方案中,共享虚拟空间会话包括模拟两个或多个不同设备处的共享CGR环境(例如,每个设备由不同用户使用)。在图4C的共享虚拟空间会话中,使用两个不同设备的两个用户被置于共享CGR环境中。第一设备460(例如,与第一用户相关联)包括在与OS 460C的集中进程460B通信中执行的应用程序460A。第二设备470(例如,与第二用户相关联)包括在与OS 470C的集中进程470B通信中执行的应用程序470A。应用程序460A和应用程序470A可以是在不同设备上执行的同一应用程序(例如,共享虚拟空间应用程序)的不同实例。在一些实施方案中,共享虚拟空间会话是集中进程(例如,460B、470B)的进程,而不是应用程序(例如,460A、470A)的进程。
在一些实施方案中,为了建立共享虚拟空间会话,第一用户(例如,设备460的用户)可以与拨打电话类似的方式向第二用户(例如,设备470的用户)发送建立共享虚拟空间会话的请求。如果第二用户接受,例如第一用户的头像(例如,468A)和第二用户的头像(例如,466A)可被放置到共享虚拟空间CGR环境中。在一些实施方案中,每个用户的相应设备接收和/或提供用于共享虚拟空间会话的一个或多个CGR数据对象。例如,在图4C中,设备460和设备470经由通信链路461连接(例如,直接连接(例如,经由Wi-Fi)、通过局域网、通过广域网,或用于交换数据的任何合适方式)。设备460向设备470提供CGR数据对象462,并且设备470通过通信链路461向设备460提供CGR数据对象464。CGR数据对象462和/或CGR数据对象464可表示要在共享虚拟空间会话中模拟的内容,例如用户的头像(例如,466A、468A)、植物、桌子或椅子,以及CGR环境中的其他事物。
在一些实施方案中,在共享虚拟空间会话期间,相应其他用户的头像在占据共享虚拟空间会话的共享CGR环境时,将被显示给每个用户。例如,在图4C中,设备460显示共享空间CGR环境的视图466,其包括表示设备470的第二用户的头像466A。因此,当第一用户(例如,经由使用设备460来显示视图466)查看共享空间时,可看起来好像第二用户存在于同一房间中一样。同样,设备470显示同一共享空间的视图468,其包括表示设备460的第一用户的头像468A。因此,当第二用户(例如,经由使用设备470来显示视图468)查看共享空间时,可看起来好像第一用户存在于同一房间中一样。在该实施方案中,视图466是头像468A(例如,第一用户的头像、设备460的头像)的模拟透视图,并且视图468是头像466A(例如,第二用户的头像、设备470的头像)的模拟透视图。在一些实施方案中,用户头像可彼此交互(例如,物理交互或听觉交互)和/或与共享虚拟空间CGR环境内的其他内容交互(例如,与图4C中所示的空间中的桌子、椅子或植物进行交互)。例如,对环境、虚拟对象或头像的更改(例如,移动)将在两个设备处的模拟中同步和反映,这会造成用户占据共享空间的感觉。
在一些实施方案中,模拟在每个设备上运行时,一个模拟可对另一个模拟具有权限。在一些实施方案中,属于邀请另一个用户进入CGR环境的用户(例如,本示例中的第一用户)的设备具有权限。例如,如果第一用户设备(例如,460)处的模拟具有控制权,则可限制第二用户与共享空间CGR环境进行交互和/或修改共享空间CGR环境的能力。在一些实施方案中,具有权限的模拟建立对一个或多个无权限模拟的限制(例如,用户定义的或***定义的)。在一些实施方案中,具有权限的模拟控制模拟之间是否存在不一致性或争论(例如,如果CGR数据对象不同步)。
如基于以上描述应当认识到的,软件平台能够接收和处理(例如,通过另一个设备)远程定义的CGR数据对象。CGR数据对象的有效数据结构和内容允许各自运行软件平台的两个设备轻松地为两个或多个用户提供共享体验,这些用户处于包括共享内容的CGR环境中。
6.隐私性和安全性
应进一步认识到,如本文所述的实施方案允许CGR***(例如,运行软件平台的设备)以保护隐私的方式模拟具有多个应用程序的CGR环境。不会自动向应用程序提供模拟和渲染所需的所有信息,诸如用户输入、眼睛跟踪、运动跟踪等。因此,不会仅仅因为应用程序同时被安装或运行,而将与用户的活动或其环境(例如,即时物理环境或专用虚拟环境)有关的信息不必要地提供给此类应用程序。因此,来自第一进程(例如,第一应用程序或OS级进程)的CGR数据对象或其属性对于其他进程(例如,第二应用程序)不一定是可见的,即,进程之间的隐私性得以保持。
在一些实施方案中,不向在CGR模拟中定义虚拟对象的应用程序提供关于虚拟对象相对于CGR环境的位置(例如,3D空间位置)的信息。也就是说,控制模拟的集中进程知道CGR环境中每个虚拟对象相对于“全局”或“世界”坐标帧的位置信息。在一些实施方案中,该全局坐标帧不与应用程序共享。相反,应用程序可根据与全局坐标帧不同的对象坐标***来定义虚拟对象。集中进程可在模拟和渲染期间将对象坐标帧映射到全局坐标帧,以便正确地生成虚拟对象。然而,因为应用程序本身不模拟和渲染与其他虚拟对象的交互,所以不需要与应用程序共享其他虚拟对象的位置或虚拟对象(由应用程序定义)相对于其他虚拟对象的相对位置或者全局坐标帧。相反,向应用程序显示此类信息可允许应用程序以其他方式确定私有信息,诸如关于用户的位置(例如,房间尺寸)或同时运行的其他应用程序(例如,基于三维虚拟对象尺寸、移动等)的信息。
在一些实施方案中,在同步会话期间,一个或多个CGR数据对象或CGR数据对象的属性不会与远程参与者共享。如上所述,CGR数据对象可以保护隐私的方式来定义,例如,禁止其属性中的一者或多者与任何其他用户共享,或者仅与特定其他用户共享。例如,可以向没有必要权限的共享虚拟空间用户显示虚拟对象的不同表示。
另外,本文所述的示例性软件平台的结构保持了使应用程序相对于彼此以及操作***在隔离的存储器空间中运行的安全性。任何通信(例如,到/来自协助应用程序)经由可由OS管理的IPC执行。
7.计算机生成的现实应用程序开发
本文所述的软件平台提供了框架,该框架可与应用程序开发工具一起使用以轻松地创建沉浸式和动态的CGR应用程序。
该框架允许简化应用程序和CGR内容的开发。例如,应用程序可以像定义3D对象一样简单。因此,此类应用程序的开发人员不必致力于定义模拟和渲染例程,以便正确执行程序。相反,该程序可简单地根据一个或多个CGR数据对象来定义内容,如上所述。在应用程序开发期间,定义CGR数据对象的属性、行为和事件可由用户定义,或者可从值、状态或逻辑的预定义集合(例如,来自公共库)中选择。在协助应用程序的运行时期间,客户端配置文件中的CGR引擎的实例作为应用程序的应用程序级进程运行,该应用程序将CGR数据对象定义为由控制模拟的集中进程(在服务器配置文件中运行)处理。
CGR数据对象可用于构建简单或复杂的3D用户界面和控件。这些用户界面和控件可具有可由CGR引擎模拟的图形、音频、物理现象和行为。
现在转向在一个或多个电子设备(诸如***100)上实现的软件平台的实施方案。
图5示出了根据软件平台的一些实施方案的在电子设备上执行的进程的示例性框图。具体地,设备500(也称为设备A)正在执行应用程序502(App A)和应用程序504(App B)。在一些实施方案中,设备500包括***100的一个或多个特征。如图5中所示,应用程序502和应用程序504与(例如,操作***的)集中进程510结合执行并与其通信。在一些实施方案中,集中进程510包括共享进程206的一个或多个特征。在一些实施方案中,设备(例如,设备500)接收启动应用程序(例如,应用程序502或应用程序504)的请求。响应于该请求,设备启动该应用程序的进程。例如,执行应用程序(例如,502或504)可包括执行与应用程序相关联的一个或多个进程。
如图5中所示,应用程序502生成数据对象502A(对象D)和数据对象502B(对象E),这些数据对象在表示应用程序502的框内被描绘,其中使用实线边框来指示它们由应用程序502生成。同样,应用程序504生成数据对象504A(对象F),该数据对象在表示应用程序504的框内被描绘,其中使用实线边框来指示它们由应用程序504生成。数据对象502A、数据对象502B和数据对象504A被提供给集中进程510,并且在表示集中进程510的框内被描绘,其中使用虚线边框来指示它们由除集中进程510之外的进程生成并且被提供给集中进程510。在一些实施方案中,集中进程(例如,510)是操作***的进程。在一些实施方案中,使用进程间通信(IPC)将数据对象提供给集中进程(例如,510)。例如,可使用IPC将数据对象通过AppA的进程传送至集中进程510(例如,OS的进程)。在一些实施方案中,集中进程(例如,510)可包括其他数据对象。例如,如图5中所示,集中进程510包括数据对象510A、数据对象510B和数据对象510C(每个均由集中进程510生成)和数据对象510D(由图5中未示出的另一个进程生成)。在一些实施方案中,数据对象(例如,502A、502B、504A)包括如上所述的CGR数据对象的一个或多个特征。在该实施方案中,数据对象502A、数据对象502B和数据对象504A表示虚拟对象,集中进程510将其模拟并渲染到计算机生成的现实环境中。
图6A-图6E示出了根据一些实施方案生成的示例性计算机生成的现实环境。图6A-图6E中描绘的计算机生成的现实环境示出了例如通过图5的集中进程510进行模拟和渲染的结果。
图6A示出了表示物理世界中的房间的计算机生成的现实环境600。CGR环境600包括虚拟房间602,该虚拟房间包括虚拟内容,诸如以下各项的虚拟表示:桌子610、电子表格612、灯614、椅子616、狗618和窗户620。如上所述,应用程序可生成对应于CGR环境中的虚拟内容的一个或多个CGR数据对象。虚拟内容本身可表示应用程序,其中与虚拟内容的交互形成用户与此类应用程序的交互。在图6A的示例中,灯614表示应用程序A的数据对象502A(图5),桌子610表示应用程序A的数据对象502B(图5),以及电子表格612表示应用程序B的数据对象504A(图5)。在该实施方案中,图5的集中进程510接收数据对象502A和数据对象502B(来自第一应用程序502),接收数据对象504A(来自第二应用程序504),并且在CGR环境600中生成这些数据对象的视觉表示。例如,数据对象502A包括定义图6A中所示的灯614的一个或多个属性、一个或多个行为,以及一个或多个事件的信息。属性信息可包括指示灯的外观的值,诸如:灯的几何尺寸、灯罩的图案、由灯产生的光(例如,强度、方向、色度等)、灯的开/关状态、灯的基座的材料等。另外,属性信息还可包括表示灯614的数据对象的一部分或全部的访问级别(例如,其控制与其他设备或其他用户的共享)。事件信息可包括灯614如何对输入诸如与灯上的开/关开关的交互(例如,用户输入)作出反应。行为信息可包括由灯表现出的行为的动画或脚本。就灯而言,虚拟对象可包含简单的行为数据(例如,灯受重力影响)。
在一些实施方案中,集中进程(例如,510)模拟计算机生成的现实环境。在一些实施方案中,模拟包括执行一个或多个计算以创建表示(例如,CGR环境和/或一个或多个数据对象的表示)。在一些实施方案中,(例如,CGR环境和/或一个或多个数据对象的)模拟包括将表示保留在存储器中。例如,集中进程510执行一个或多个计算以生成(或更新)CGR环境的表示(例如,在设备存储器中,使得其可被存储、复制、传输、渲染等)。在一些实施方案中,集中进程渲染计算机生成的现实环境。在一些实施方案中,渲染计算机生成的现实环境包括渲染由集中进程所接收或生成的一个或多个数据对象的(例如,图形)表示。例如,在该实施方案中,图5的设备500接收数据对象(例如,502A、502B和504A)并生成图6A所示的渲染的CGR环境600(例如,用于显示)。
在一些实施方案中,第一应用程序(例如,502)和第二应用程序(例如,504)与不同的服务提供方相关联。例如,应用程序A可与第一第三方开发人员相关联,而应用程序B可与不同于第一第三方开发人员的第二第三方开发人员相关联。如图6A中所示,尽管与不同的第三方开发人员相关联,来自应用程序A和应用程序B的虚拟内容被模拟并渲染到共享空间CGR环境600中,使得虚拟内容可同时显示在同一模拟中。
图6B-图6C示出了根据一些实施方案的数据对象访问属性(例如,共享限制)的示例性用法。图6B示出了计算机生成的现实环境600的放大视图,其更详细地示出了电子表格612。如图6B的视图中所示,电子表格612包括对电子表格数据的描绘。在该实施方案中,图6B中电子表格612的表示包括设备的用户不希望与(例如,使用其他设备的)其他用户共享的敏感数据,例如在CGR环境600内的共享虚拟空间会话期间。图6C示出了受到共享限制的CGR环境600的视图。例如,图6C中的视图可在不同的第二设备(其不属于设备500的用户)上显示为图6B中的视图。如图6C中所示,不显示电子表格612的内容。例如,这可能是由于定义电子表格612的外观的属性信息不与渲染图6C中所示的CGR环境600的视图的进程(例如,在相对于设备500的远程设备上执行)共享而导致的。在一些实施方案中,该属性信息与特定用户共享。例如,图6C可为在属于不是特定用户之一的用户的设备上显示的视图。在一些实施方案中,该属性信息不与任何其他用户共享。例如,图6C可为在属于与(例如,生成表示电子表格612的数据对象的)设备500的用户不同的用户的任何设备上显示的视图。在一些实施方案中,数据对象的任何部分都不与另一个设备共享。例如,第一设备(例如,500)不共享数据对象的任何部分,而不是向第二设备提供定义电子表格612的特定属性(例如,形状、位置)并且保留其他属性(例如,电子表格中的值)。例如,第二设备因为没有与此类设备共享关于相应数据对象的任何信息,而根本不显示电子表格(未示出),而不是渲染空白电子表格612(如图6C中所示)。因此,使用两个不同设备的两个用户可查看CGR环境以及两者均可察觉的虚拟内容。然而,此类内容无需是相同的,例如,这允许用户保持数据的隐私性。
图6D-图6E示出了对计算机生成的现实环境的示例性更改。图6D示出了CGR环境600,如图6A中所示。在一些实施方案中,基于由第二进程提供的第二数据对象(例如,表示灯614的502A)来渲染由第一进程(504)提供的第一数据对象(例如,表示电子表格612的504A)。例如,为了创建真实的视觉渲染,由于电子表格612被放置在图6D中的CGR环境600内,因此该电子表格应看起来由从灯614发射的光照亮。因此,集中进程510基于表示灯614的数据对象502A的属性来渲染表示电子表格612的数据对象504A。例如,如果电子表格612被限定为具有纯白色背景,但灯614发射限定为具有轻微黄色的光,则电子表格612将被渲染为呈现入射在其表面上的光的颜色(例如,因而看起来具有轻微的黄色色度)。在渲染第二虚拟对象时可被考虑的第一虚拟对象的效果的非限制性示例包括:灯光(例如,直接、间接)、阴影、反射(例如,漫射、镜面反射)、碰撞、遮挡等。
在一些实施方案中,计算机生成的现实环境在被模拟(例如,和渲染)之后发生改变。图6E示出了对图6D的CGR环境600的示例性改变。如图6E中所示,灯614的灯罩已经改变,现在看起来具有线条图案。在一些实施方案中,CGR环境的改变可归因于在设备(例如,500)处所接收的输入(例如,用户输入)。例如,设备500的用户可已选择了灯罩或灯614或者与之进行了交互,然后选择了不同的图案化灯罩。例如,可通过用于在虚拟环境中定制和放置家具的应用程序来生成灯614。因此,集中进程更新计算机生成的现实环境600的模拟和渲染以反映该改变。因此,图6E的视图将在改变后显示给用户。
在一些实施方案中,CGR环境的改变是由于与一个或多个数据对象相关联的行为或事件。例如,图6E还示出了狗618已改变位置,现在处于坐姿并面向不同方向。在该实施方案中,狗618与定义行为的数据对象相关联。一种此类行为可以是狗四处走动,并且从站立改变到坐姿(例如,随机地,或在某一组间隔处)。同样,基于事件,狗618可能已从站立改变到坐姿,例如,设备500的用户发出指示狗坐下的输入命令,诸如语音输入。在此类示例中,可使用AI例程在集中进程510中由CGR引擎的实例来处理该命令,然后将模拟狗618以作出相应地响应。因此,集中式进程更新计算机生成的现实环境600的模拟和渲染,以反映由于该变化而对狗的姿势和位置作出的改变。
在一些实施方案中,计算机生成的现实环境(例如,600)为三维(例如,3D)。在一些实施方案中,数据对象(例如,502A、502B、504A)的表示(例如,灯614、桌子610、狗618)是三维的。
图7A-图7C是流程图,其示出了根据一些实施方案的用于提供能够生成计算机生成的三维现实环境的计算机生成的现实平台的方法。在电子设备(例如,100或500)处执行方法700。
电子设备(例如,500)接收(702)指示在计算机生成的三维现实环境(例如,600)中启动第一应用程序(例如,504)的请求的第一输入(例如,第一用户输入,诸如选择1010B)。例如,第一输入可以是在设备500的麦克风处所接收的语音输入(例如,语音命令),该语音输入被处理并被确定为启动应用程序的请求。在一些实施方案中,第一输入是对示能表示的选择。例如,示能表示可显示在应用程序选择界面(例如,1010)中。
响应于接收到第一输入,电子设备启动(704)第一应用程序(例如,504)的进程。
电子设备接收(706)指示在计算机生成的三维现实环境(例如,600)中启动不同于第一应用程序(例如,504)的第二应用程序(例如,502)的请求的第二输入(例如,用户输入,诸如选择1010A)。
响应于接收到第二输入,电子设备启动(708)不同于第一应用程序的进程的第二应用程序(例如,502)的进程。例如,第一应用程序和第二应用程序都是协作应用程序。因此,应用程序不控制其视觉方面(例如,数据对象)的模拟和渲染,并且可在共享空间CGR环境中一起执行。相反,应用程序的内容在一个共享空间中被模拟和渲染,并且因此可彼此交互(例如,视觉和/或音频的交互)。
电子设备通过第一应用程序的进程向电子设备的操作***的进程(例如,510)提供(710)第一数据对象(例如,504A),其中操作***的进程不同于第一应用程序的进程和第二应用程序的进程。例如,数据对象(例如,CGR数据对象)对应于电子表格应用程序。CGR数据对象(也称为“智能对象”或“游戏对象”)表示计算机生成的现实环境中的虚拟对象(例如,房间、桌子、用户头像、程序性内容)。数据对象定义计算机生成的现实环境中的实体(虚拟对象)的外观和行为。外观的各方面包括但不限于:图形表示、声音、碰撞模型、物理属性(例如,质量、材料)。行为的各方面包括虚拟对象是静态对象,虚拟对象是动态的使得用户能够与其交互(例如,拾取该虚拟对象)还是虚拟对象表现出AI驱动的行为(例如,是可与用户进行交互的虚拟角色)。在一些实施方案中,第一数据对象经由IPC提供。
电子设备通过第二应用程序(例如,502)的进程向操作***的进程(例如,510)提供(712)不同于第一数据对象的第二数据对象(例如,502A)。在一些实施方案中,第二数据对象经由进程间通信提供。
电子设备通过电子设备的操作***的进程(例如,510)渲染(714)计算机生成的三维现实环境(例如图6A的600)中的第一数据对象(例如,504A)的三维表示(例如,图6A的电子表格612)和第二数据对象(例如,502A)的三维表示(例如,图6A的灯614)。在一些实施方案中,从两个不同的视角(例如,用户的每只眼睛对应一个视角)渲染计算机生成的现实环境。
电子设备使得显示(716)所渲染的计算机生成的三维现实环境(例如,在设备500上显示600)。在一些实施方案中,从两个不同的视角(例如,用户的每只眼睛对应一个视角)显示计算机生成的现实环境。例如,这两个视角略微偏移,并且每个视角被显示给用户的相应眼睛以提供3D的感觉。
在一些实施方案中,电子设备通过第一应用程序的进程生成(718)第一数据对象(例如,504A)。在一些实施方案中,电子设备通过第二应用程序的进程生成(720)第二数据对象(例如,502A)。在一些实施方案中,第一应用程序的进程在向操作***提供第一数据对象之前生成第一数据对象。在一些实施方案中,第二应用程序的进程在向操作***提供第二数据对象之前生成第二数据对象。例如,由应用程序的进程生成数据对象可包括通过该进程程序性地生成数据对象。
在一些实施方案中,第一数据对象(例如,504A)包括(732)表示以下各项中的一者或多者的数据(例如,在301A-301C中显示的数据,或在表302中显示的数据):第一数据对象的一个或多个属性(例如,301A)、第一数据对象的一个或多个行为(例如,301B),以及第一数据对象的一个或多个事件(例如,301C)。例如,数据对象504A(对应于图6A的电子表格612)可包括与模拟和渲染电子表格虚拟对象的表示相关联的属性、行为和事件,如图6A的CGR环境600中所示。在一些实施方案中,第二数据对象(例如,502A)包括表示以下各项中的一者或多者的数据:第二数据对象的一个或多个属性、第二数据对象的一个或多个行为,以及第二数据对象的一个或多个事件。例如,数据对象502A(对应于图6A的灯614)可包括与模拟和渲染灯虚拟对象的表示相关联的属性、行为和事件,如图6A的CGR环境600中所示。
在一些实施方案中,一个或多个属性(例如,301A)包括指示第一数据对象(例如,504A)的所渲染的三维表示(例如,图6A的电子表格612)的外观的值(例如,诸如在表302中“图形”下列出的那些),其中基于指示外观的值来渲染(例如,如图6A的CGR环境600的视图中所示的渲染)第一数据对象的三维表示。属性定义实体的外观和存储状态。在一些实施方案中,这些属性包括:名称、位置、取向(例如,相对于全局坐标***(例如,由OS保持)或对象坐标***(例如,由应用程序保持)的坐标)、3D模型、碰撞形状、声音、质地、形状、质量、动画、摩擦、材料,以及可用于模拟虚拟对象的其他数据。
在一些实施方案中,一个或多个属性包括(722)指示第一数据对象(例如,504A)的一部分(例如,全部、第一部分而不是第二部分等)的访问级别的至少一个值。例如,访问级别可包括设置或属性,该设置或属性控制数据对象的任何部分(至多并包括对象的整体)是否可由另一个用户、另一个设备或另一个应用程序访问(例如,共享)。因此,数据对象可具有内置的安全性和隐私属性。例如,数据对象可包括定义属性是否可被同步到另一设备和/或被其他应用程序知道的元数据。某些数据对象是完全可共享的,某些数据对象只具有某些可共享的属性,某些数据对象则不可共享。
在一些实施方案中,指示第一数据对象的该部分的访问级别的值指示(724)第一数据对象的该部分受到共享限制(例如,数据对象的一部分表示不共享的属性),并且第一数据对象的该部分是第一部分。例如,第一部分可包括表示图6B的电子表格612的数据对象(例如,504A)内的表面质地信息。电子设备通过操作***的进程向第二应用程序的进程提供(726)第一数据对象的数据对象数据,包括:向第二应用程序的进程提供(728)第一数据对象的第二部分,其中第一数据对象的第二部分不受共享限制的约束;以及放弃向第二应用程序的进程提供(730)第一数据对象的第一部分。例如,如图6C中所示,电子表格612的表面质地信息(例如,第一部分)尚未与渲染电子表格612的视觉表示的进程(例如,第二设备上的远程进程)共享,因此所描绘的电子表格内的数据不可见。然而,共享了电子表格612的3D模型(例如,数据对象的第二部分),因此空白电子表格612仍被渲染,使得在图6C中仍可察觉虚拟对象的存在。
在一些实施方案中,操作***的进程(例如,510)在内核级访问级别下操作(732)。在一些实施方案中,第一应用程序的进程和第二应用程序的进程在比内核级访问级别低的访问级别下操作。在一些实施方案中,内核级别为最高权限级别/环(例如,环0),并且应用程序在较低权限级别(例如,诸如环1、2、3等)下操作。在一些实施方案中,权限级别定义访问设备资源的相应许可级别。
在一些实施方案中,一个或多个行为(例如,301B)通过计算机生成的现实环境中的第一数据对象的三维表示来指示一个或多个动作(例如,图3的表302中的“避障”)。例如,行为定义应用程序逻辑,并且可以是公共库或开发工具中可用的用户定义的行为或预定义的行为。行为的示例包括定义可对重力作出反应、可被推动、可碰撞、可执行复杂的AI行为(诸如像狗/人一样自己移动)等的虚拟对象。
在一些实施方案中,一个或多个事件指示第一数据对象的三维表示响应于状态变化而在计算机生成的现实环境中执行的一个或多个动作。例如,事件定义可触发其他动作的状态变化。例如,数据对象可具有“触摸事件”(例如,当相应虚拟对象被另一个虚拟对象(例如,用户的手的表示)在计算机生成的现实环境中触摸时),或者表示虚拟按钮或开关的数据对象可具有“单击事件”(例如,当在CGR环境中按下按钮时)。在一些实施方案中,响应于状态变化而执行的动作可以是如上所述的一个或多个行为。例如,响应于图6A的灯614的开关上的触摸事件,灯的表示可关闭(例如,停止发射照明)。
在一些实施方案中,基于第一数据对象(例如,504A)和第二数据对象(例如,502A)来渲染第一数据对象的三维表示(例如,电子表格612)。例如,如图10A的视图1004所示,灯614的照明(例如,由数据对象诸如502A表示)影响电子表格612的渲染外观(例如,由数据对象诸如504A表示)。因此,第二应用程序的数据对象影响第一应用程序的模拟。
在一些实施方案中,操作***(例如,执行进程510的420)和第一应用程序(例如,504)与不同的服务提供方相关联。例如,第一应用程序是由不同的创建者、开发人员、发布者等制作的第三方应用程序,而不是执行用于执行模拟和渲染的共享进程的操作***。在一些实施方案中,操作***与第一服务提供方相关联,而不与第二服务提供方相关联,并且第一应用程序与第二服务提供方相关联,而不与第一服务提供方相关联。
在一些实施方案中,第一应用程序(例如,504)和第二应用程序(例如,502)与不同的服务提供方相关联。例如,第一应用程序和第二应用程序由彼此不同的创建者/开发人员/发布者制作(例如,都是由不同的第三方制作的第三方应用程序)。在一些实施方案中,第一应用程序与第三服务提供方相关联,而不与第四服务提供方相关联,并且第二应用程序与第四服务提供方相关联,而不与第三服务提供方相关联。
在一些实施方案中,电子设备是头戴式耳机基站。例如,电子设备执行CGR环境的模拟和渲染,该CGR环境经由连接传送至头戴式耳机设备(例如,用于显示给用户)。在一些实施方案中,电子设备是头戴式耳机。例如,电子设备包括显示设备并且执行CGR环境的模拟、渲染和显示。
图8示出了根据一些实施方案生成的示例性计算机生成的现实环境。捕获的图像800示出了捕获的物理环境(例如,用户的卧室)的图像。图像800包括对以下物理实体的描绘:房间802(例如,限定房间的墙壁)、植物804、桌子806、床808和窗户810。物理实体802至物理实体810各自存在于物理房间中,该物理房间由捕获的图像800表示。
如上文相对于图6A-图6E所论述的,集中进程510可例如经由进程间通信从应用程序获得数据对象。根据一些实施方案,进程(例如,集中进程510)使用从除应用程序(例如,协作应用程序,诸如502或504)之外的源获得的至少一个数据对象来生成CGR环境。例如,操作***的共享进程(诸如集中进程510或其子进程)可生成表示CGR环境中的虚拟实体的数据对象。
如图所示,图8示出了仅包括虚拟房间602、桌子610、狗618和窗户620的CGR环境600的视图。在该实施例中,狗618由在集中进程中从应用程序(例如,图5的数据对象510D)所接收(并且由其生成)的数据对象表示。如在捕获的图像800中可见,物理房间中不存在对应于狗618的物理实体。因此,狗618表示纯粹的虚拟实体。此外,在该实施例中,桌子610和窗户620是捕获的图像800中所描绘的物理实体的表示。桌子610对应于物理实体桌子806,并且窗户620对应于物理实体窗户810。在一些实施方案中,虚拟对象(例如,620、610)通过共享进程(例如,集中进程510)获得。在一些实施方案中,共享进程(例如,510)获取关于物理实体的信息。例如,由于应用程序未提供将创建图8中所示的桌子610的表示的数据对象,集中进程510获取(例如,生成、检索、编译或创建)此类数据对象或其部分,或用于创建此类数据对象的信息。
在一些实施方案中,共享进程(例如,510)基于一个或多个机器学习模型(例如,计算机视觉模型)来获取关于物理实体的至少一部分信息。在一些实施方案中,共享进程(例如,510)使用图像分析来获取关于物理实体的信息。例如,集中进程510可对包括桌子806的描绘的图像部分820(图像800的图像部分)使用图像分析,以便确定一个或多个特征,这些特征可被表示为可被模拟(例如,和渲染)的数据对象。在一些实施方案中,设备(例如,执行集中进程510的设备500)使用图像传感器来获取物理实体的图像。例如,图像传感器可以是设备的部件(例如,500),或者与设备通信。图8示出了可使用图像分析确定的多个示例性属性822,包括:桌子的位置(例如,相对于其他物理对象,在房间中等)、桌子的尺寸(例如,桌子各部分的长度、宽度、高度)和桌子的材料(例如,木材、金属、塑料等)。该列表并非旨在穷举可使用图像分析确定的属性。在一些实施方案中,进程使用一个或多个捕获的图像来确定物理对象的类型,并且基于物理对象的类型来获取数据对象(或其部分)。例如,图像部分820的图像分析可用于确定物理实体是桌子。在知道所描绘的物理实体是桌子的情况下,进程向相应的数据对象分配一个或多个属性、行为和/或事件,这些属性、行为和/或事件(通常)是桌子的属性。例如,尽管所捕获的图像未描绘具有搁置在其上的对象的桌子,但***可创建具有刚性表面顶部的虚拟对象。
在一些实施方案中,共享进程(例如,510)创建表示物理实体的数据对象。例如,集中进程510可使用由***获取或生成的信息来创建表示图8中所示的桌子610的数据对象(例如,510A)。
图9A-图9C是流程图,其示出了根据一些实施方案的用于提供能够生成计算机生成的现实环境的计算机生成的现实平台的方法。在电子设备(例如,100或500)处执行方法900。
电子设备(例如,500)接收(902)指示在计算机生成的现实环境(例如,图8的600)中启动应用程序(例如,502)的请求的第一输入(例如,选择示能表示,诸如图10B的1010C)。例如,设备接收表示对表示狗应用程序的示能表示1010C的输入选择(例如,用户想要在CGR环境中启动虚拟狗应用程序)。
在接收到第一输入(904)时,电子设备启动应用程序(例如,502)的进程,并且通过应用程序的进程向电子设备的操作***的进程(例如,510)提供第一数据对象(例如,502A),其中该数据对象对应于该应用程序。例如,响应于接收到启动虚拟狗应用程序的请求,启动虚拟狗应用程序的进程。虚拟狗应用程序进程向集中进程(例如,510)提供表示虚拟狗的数据对象。
电子设备接收(906)指示对物理实体(例如,由806表示)在计算机生成的现实环境中的表示的请求的第二输入。例如,第二输入可以是显示CGR环境的请求(例如,启动集中进程510),该CGR环境包括程序性地生成的内容(例如,表示来自物理环境的内容的虚拟内容)。例如,用户希望在CGR环境中模拟来自物理世界的真实办公桌。
在接收到第二输入时,电子设备通过操作***的进程来获取(908)第二数据对象(例如,510A),其中第二数据对象对应于物理实体。例如,集中进程(例如,510)在不启动单独进程的情况下获取第二数据对象。
电子设备通过操作***的进程(例如,510)模拟(910)计算机生成的现实环境(例如,图8的600),其中模拟的计算机生成的现实环境包括第一数据对象(例如,502A)的表示(例如,618)和第二数据对象(例如,510A)的表示(例如图8的610)。例如,CGR***模拟图8中所示的虚拟狗618(来自由应用程序提供的数据对象)并模拟桌子610(来自通过集中进程获取的数据对象)。在一些实施方案中,桌子610可以是由负责模拟和渲染的集中进程(例如,用于一个或多个协作应用程序)程序性地生成的一件家具,而不是从协作应用程序接收相应的数据对象。在一些实施方案中,表示是二维的。在一些实施方案中,表示是三维的。
在一些实施方案中,模拟包括执行一个或多个计算以创建表示(例如,CGR环境和/或一个或多个数据对象的表示)。在一些实施方案中,(例如,CGR环境和/或一个或多个数据对象的)模拟包括将表示保留在存储器中。
在一些实施方案中,电子设备获取(912)关于物理实体(例如,806)的信息(例如,图像820)。例如,电子设备获取(例如,检索、确定、创建等)描述物理实体的信息。例如,此类信息可以针对该特定物理实体(例如,该物理实体先前已被模拟)预先存在,或类似物理实体的数据(例如,物理实体属于一类,诸如桌子,并且获取该类的属性)。
在一些实施方案中,电子设备基于所获取的关于物理实体(例如,806)的信息来创建(914)第二数据对象。例如,创建第二数据对象并且包括表示桌子806的属性、行为和/或事件。
在一些实施方案中,获取关于物理实体的信息包括:使用图像传感器获取(916)物理实体的图像。例如,如果物理实体与电子设备物理接近,诸如在同一房间中,则该设备捕获物理实体的图像。在一些实施方案中,图像传感器是电子设备的部件(例如,在智能电话上)。在一些实施方案中,图像传感器连接到电子设备(例如,设备是基站并且相机位于与其连接的头戴式耳机上)。在一些实施方案中,物理实体是一件家具。在一些实施方案中,物理实体是人。
在一些实施方案中,关于物理实体的信息包括物理实体的视觉特征。例如,信息可包括与颜色、形状、尺寸、材料等相关的信息。
在一些实施方案中,关于物理实体的信息包括物理实体的物理特征。例如,该信息可包括与摩擦、弹性、材料类型等相关的信息。在一些实施方案中,关于物理实体的信息由***推断。例如,CGR***可推断确定为木材的虚拟对象的表面摩擦(例如,并设定为木材表面典型的预定义默认值)。
在一些实施方案中,获取关于物理实体的信息包括:基于一个或多个机器学习模型来获取(918)关于物理实体的信息的至少一部分。例如,可基于对物理实体的捕获图像的分析,根据该物理实体与已知特征的其他实体的相似性来导出物理特性。
在一些实施方案中,所模拟的计算机生成的现实环境(例如,图8的600)包括具有视觉特征(例如,狗618的姿势)的第一数据对象的表示(例如,618),并且电子设备通过操作***的进程更新(920)所模拟的计算机生成的现实环境,其中更新所模拟的计算机生成的现实环境导致第一数据对象的表示的视觉特征发生变化。例如,在图8的计算机生成的现实环境(例如,600)中,狗618处于第一姿势(站立),并且更新模拟可导致该姿势的变化,使得狗被描绘成第二姿势(坐下)(例如,如图6E的CGR环境600中所示)。因此,虚拟狗的外观因更新CGR环境而改变。
在一些实施方案中,模拟计算机生成的现实环境包括:基于第一数据对象和第二数据对象来模拟(922)物理实体(例如,由806表示)的表示(例如,图8的610)。例如,第一数据对象(例如,对应于灯614)照亮第二对象(例如,对应于桌子610),从而影响桌子的视觉外观。
在一些实施方案中,电子设备是头戴式耳机基站。
在一些实施方案中,计算机生成的现实环境是计算机生成的三维现实环境。在一些实施方案中,从两个不同的视角(例如,用户的每只眼睛对应一个视角)渲染计算机生成的现实环境。
在一些实施方案中,第一数据对象的表示(例如,图8的618)是三维的,并且第二数据对象的表示(例如,图8的610)是三维的。
在一些实施方案中,操作***和应用程序与不同的服务提供方相关联。例如,应用程序是第三方应用程序。在一些实施方案中,操作***与第一服务提供方相关联,而不与第二服务提供方相关联,并且第一应用程序与第二服务提供方相关联,而不与第一服务提供方相关联。
在一些实施方案中,电子设备通过操作***的进程渲染(924)计算机生成的现实环境(例如,图8的600),该环境包括第一数据对象的表示(例如,618)和第二数据对象的表示(例如,610)。在一些实施方案中,电子设备使得显示所渲染的计算机生成的现实环境。例如,CGR***显示图8中所示的环境600的视图。
在一些实施方案中,操作***的进程(例如,510)在内核级访问级别下操作。在一些实施方案中,应用程序的进程(例如,510)在比内核级访问级别低的访问级别下操作。
图10A-图10B示出了根据一些实施方案的用于启动计算机生成的现实应用程序的示例性技术。在一些实施方案中,设备(例如,500)接收请求(例如,经由输入,诸如对示能表示1010A的选择)以将应用程序(例如,协作应用程序,诸如502)启动到现有计算机生成的现实环境模拟中。例如,图10A的视图1000示出了在设备启动灯应用程序(例如,502)之前的计算机生成的现实环境(例如,600)。如图所示,灯614不存在于桌子上。虽然视图1000是CGR环境600的当前视图,但设备(例如,经由输入,诸如对示能表示1010A的选择)接收请求以启动由灯614表示的应用程序。因此,集中进程510接收表示灯614的数据对象502A,以及模拟灯614并将其渲染到CGR环境600中。图10A的视图1002示出了启动灯应用程序之后的当前视图——如图所示,CGR环境现在包括灯614。因此,可在CGR环境已被模拟(例如,和渲染)时接收启动应用程序的请求。作为响应,可将一个或多个新数据对象添加到模拟中,并相应地更新模拟。因此,根据本文所述的实施方案的CGR***的用户可将协作应用程序及其相应的数据对象动态地添加到(例如,或移除)活动CGR环境模拟中。由于数据对象的集中处理,可根据用户选择的任何数据对象和应用程序的组合来更新和渲染模拟,即使此类应用程序来自不同的第三方创建者也是如此。本领域的技术人员将会知道由本文所述的技术提供的定制和可扩展性。
为了进一步说明CGR环境模拟的动态性质,CGR环境600的视图1004描绘了来自在共享模拟空间中进行交互的两个不同协助应用程序的数据对象的示例。视图1004是视图1002的详细放大视图。在视图1004中,灯614打开,并且创建光图案1006,其覆盖电子表格612的一部分和桌子的一部分。因为在CGR环境600和电子表格612已被模拟和渲染时响应于启动应用程序的请求添加了灯614,所以可更新模拟(例如,包括其中的虚拟对象)以考虑添加的灯614的光图案1006的效果。
在一些实施方案中,启动应用程序的请求是指示对示能表示的选择的输入。在一些实施方案中,CGR***在应用程序选择界面处接收启动应用程序的请求。例如,图10B示出了示例性应用程序选择界面1010。在该实施例中,设备500经由在设备500显示的应用程序选择界面1010处对示能表示1010A的选择来接收对灯应用程序的输入(例如,用户输入)选择。在一些实施方案中,应用程序选择界面在CGR环境中显示。例如,界面1010本身可被渲染为CGR环境600中的虚拟对象。因此,用户可在CGR环境600的3D环境中使用交互(例如,通过选择示能表示1010A)来与界面1010进行交互。响应于接收到对示能表示1010A的选择,CGR***可启动灯应用程序(例如,如图10A中所示)。应用程序选择界面1010还包括用于启动电子表格应用程序的示能表示1010B(例如,由图10A的电子表格612表示)。应用程序选择界面1010还包括用于下载(例如,和启动)飞机应用程序(例如,由图3的数据对象301表示)的示能表示1010D。
图11A-图11C是流程图,其示出了根据一些实施方案的用于提供能够生成计算机生成的三维现实环境的计算机生成的现实平台的方法。在电子设备(例如,100或500)处执行方法1100。
电子设备(例如,500)通过电子设备的操作***的进程(例如,510)来模拟(1102)计算机生成的三维现实环境(例如,600),该环境包括空间(例如,物理房间802的空间)的三维表示(例如,如图10A的视图1000中所示)。例如,集中进程510模拟CGR环境的初始体验(例如,响应于初始化CGR环境)。初始体验可以是例如用户的房间、森林等的模拟。
在一些实施方案中,模拟包括执行一个或多个计算以创建表示(例如,CGR环境和/或一个或多个数据对象的表示)。在一些实施方案中,(例如,CGR环境和/或一个或多个数据对象的)模拟包括将表示保留在存储器中。
在模拟(例如,并且任选地渲染并使得显示)计算机生成的三维现实环境时:电子设备接收(1104)指示在计算机生成的三维现实环境中启动应用程序(例如,灯应用程序)的请求的输入(例如,选择1010A)。在一些实施方案中,设备的用户导航至应用程序选择界面(例如,1010),选择和/或下载应用程序,并且设备启动相应的应用程序。
响应于接收到输入(1106),电子设备启动(1108)应用程序(例如,502)的进程。此外,响应于接收到输入,电子设备通过操作***的进程从应用程序的进程接收(1110)数据对象(例如,502A)。此外,响应于接收到输入,电子设备通过操作***的进程在计算机生成的三维现实环境中模拟(1112)所接收的数据对象的三维表示(例如,图10A的视图1002中的灯614)。例如,如图10A中所示,响应于输入(例如,选择图10B的示能表示1010A),将灯614(对应于数据对象502A)添加到CGR环境600中。
在一些实施方案中,计算机生成的三维现实环境包括用于启动第二应用程序(例如,504)的示能表示(例如,1010B),其中应用程序(例如,502)是第一应用程序,并且其中所接收的数据对象是第一数据对象(例如,502A)。电子设备接收(1114)指示对示能表示(例如,1010B)的选择的输入。
在一些实施方案中,响应于接收到(1116)指示对示能表示的选择的输入,电子设备启动(1118)第二应用程序(例如,504)的进程。此外,响应于接收到指示对示能表示的选择的输入,电子设备通过操作***的进程从第二应用程序的进程接收(1120)第二数据对象(例如,504A)。例如,第二应用程序经由IPC向操作***的进程提供数据对象。
此外,响应于接收到指示对示能表示的选择的输入,电子设备通过操作***的进程在计算机生成的三维现实环境(例如,如图10A的视图1004中所示)中模拟(1122)第二数据对象(例如,504A)的三维表示(例如,图10A的视图612),其中在计算机生成的三维现实环境的空间中同时模拟第一数据对象的三维表示和第二数据对象的三维表示。例如,启动的电子表格应用程序将电子表格612添加到CGR环境600中,如图10A的视图1002(无电子表格)和视图1004(存在电子表格612)中所示。在视图1004中,在CGR环境中同时模拟灯614和电子表格612两者。
在一些实施方案中,计算机生成的三维现实环境包括实体(例如,桌子)的三维表示(例如,图10A的视图1004中的桌子610),并且其中在计算机生成的三维现实环境中模拟所接收的数据对象的三维表示包括:基于所接收的数据对象(例如,视图1004中表示灯614的数据对象502A)更新(1124)实体的三维表示(例如,图10A的视图1004中的桌子610),其中在计算机生成的三维现实环境的空间中同时模拟所接收的数据对象的三维表示和实体的所更新的三维表示。例如,在将光源(灯614,由所接收的数据对象表示)添加到空间(搁置在桌子610上)之后,对桌子610的模拟进行更新以考虑来自灯614的光的效果。
在一些实施方案中,第二数据对象通过操作***(例如,420)的进程(例如,510)获得。
在一些实施方案中,应用程序是第一应用程序,其中实体(例如,图10A的桌子610)是(例如,表示为)对应于第三应用程序的第三数据对象,并且电子设备通过操作***的进程从第三应用程序的进程接收(1126)第三数据对象。例如,实体可由通过应用程序(例如,协作应用程序)的进程而不是操作***的进程生成的数据对象来表示。
在一些实施方案中,应用程序是第一应用程序,并且其中第一应用程序和第二应用程序与不同的服务提供方相关联。例如,第一应用程序和第二应用程序与不同的第三方开发人员/创建者/发布者等相关联。在一些实施方案中,第一应用程序与第一服务提供方相关联,而不与第二服务提供方相关联,并且第二应用程序与第二服务提供方相关联,而不与第一服务提供方相关联。
在一些实施方案中,操作***和应用程序与不同的服务提供方相关联。例如,应用程序与第三方开发人员/创建者/发布者等相关联。在一些实施方案中,操作***与第一服务提供方相关联,而不与第二服务提供方相关联,并且应用程序与第二服务提供方相关联,而不与第一服务提供方相关联。
在一些实施方案中,所接收的数据对象包括表示以下各项中的一者或多者的数据:所接收的数据对象的一个或多个属性、所接收的数据对象的一个或多个行为,以及所接收的数据对象的一个或多个事件。
在一些实施方案中,电子设备通过操作***的进程渲染(1128)计算机生成的现实环境,该环境包括第一数据对象的表示和第二数据对象的表示。
在一些实施方案中,电子设备使得显示所渲染的计算机生成的现实环境。
在一些实施方案中,操作***的进程在内核级访问级别下操作。在一些实施方案中,应用程序的进程在比内核级访问级别低的访问级别下操作。
如上所述,本发明技术的一个方面在于采集和使用得自各种来源的数据,以改进向用户递送其可能感兴趣的交互内容或任何其他内容。本公开预期,在一些实例中,这些所采集的数据可包括唯一地识别或可用于联系或定位特定人员的个人信息数据。此类个人信息数据可以包括人口统计数据、基于位置的数据、电话号码、电子邮件地址、推特ID、家庭地址、与用户的健康或健康水平有关的数据或记录(例如,生命体征测量、药物信息、锻炼信息)、出生日期或任何其他识别或个人信息。
本公开认识到在本发明技术中使用此类个人信息数据可用于使用户受益。例如,个人信息数据可用于递送用户更感兴趣的目标内容,或用于防止此类信息与其他用户共享。因此,使用此类个人信息数据使得用户能够对所递送的内容进行有计划的控制。此外,本公开还预期个人信息数据有益于用户的其他用途。例如,健康和健身数据可用于向用户的总体健康状况提供见解,或者可用作使用技术来追求健康目标的个人的积极反馈。
本公开设想负责采集,分析,公开,传输,存储或其他使用此类个人信息数据的实体将遵守既定的隐私政策和/或隐私实践。具体地,此类实体应实施并坚持使用被公认为满足或超出对维护个人信息数据的隐私性和安全性的行业或政府要求的隐私政策和实践。用户可以方便地访问此类策略,并应随着数据的采集和/或使用变化而更新。用户的个人信息应采集为实体的合法和合理使用,而不应在这些合法使用之外共享或销售。此外,在收到用户知情同意后,应进行此类采集/共享。此外,此类实体应考虑采取任何必要步骤,保卫和保障对此类个人信息数据的访问,并确保其他有权访问个人信息数据的人遵守其隐私政策和流程。另外,此类实体可使其本身经受第三方评估以证明其遵守广泛接受的隐私政策和实践。此外,应调整政策和实践,以便采集和/或访问的特定类型的个人信息数据,并适用于包括管辖范围的具体考虑的适用法律和标准。例如,在美国,收集或访问某些健康数据可能受联邦和/或州法律的约束,诸如健康保险携带与责任法案(HIPAA);而其他国家的健康数据可能受其他法规和政策的约束并且应予以相应处理。因此,应针对每个国家不同的个人数据类型保持不同的隐私实践。
不管前述情况如何,本公开还设想用户选择性地阻止使用或访问个人信息数据的实施方案。即本公开设想可提供硬件元件和/或软件元件,以防止或阻止对此类个人信息数据的访问。例如,就共享虚拟空间服务而言,本发明技术可被配置为在注册服务期间或之后任何时候允许用户选择“选择加入”或“选择退出”参与对个人信息数据的收集。除了提供“选择加入”和“选择退出”选项外,本公开设想提供与访问或使用个人信息相关的通知。例如,用户可在下载应用程序时通知用户,其个人信息数据将被访问,然后在个人信息数据被应用程序访问之前再次提醒用户。
此外,本公开的目的是应管理和处理个人信息数据以最小化无意或未经授权访问或使用的风险。一旦不再需要数据,通过限制数据采集和删除数据可最小化风险。此外,并且当适用时,包括在某些健康相关应用中,数据去标识可用于保护用户的隐私。可在适当时通过移除特定标识符(例如,出生日期等)、控制所存储数据的量或特异性(例如,在城市级别而不是在地址级别收集位置数据)、控制数据如何被存储(例如,在用户之间聚合数据)、和/或其他方法来促进去标识。
因此,虽然本公开广泛地覆盖了使用个人信息数据来实现一个或多个各种所公开的实施方案,但本公开还预期各种实施方案也可在无需访问此类个人信息数据的情况下被实现。即,本发明技术的各种实施方案不会由于缺少此类个人信息数据的全部或一部分而无法正常进行。例如,可通过基于非个人信息数据或最少数量的个人信息(诸如由设备请求的与用户相关联的内容、与用户相关联的设备可用的其他非个人信息或公开可用的信息)推断偏好来选择内容并向用户递送该内容。
出于解释的目的,前面的描述是通过参考具体实施方案来描述的。然而,上面的例示性论述并非旨在是穷尽的或将本发明限制为所公开的精确形式。根据以上教导内容,很多修改形式和变型形式都是可能的。选择并描述这些实施方案是为了最好地解释这些技术的原理及其实际应用程序。本领域的其他技术人员由此能够最好地利用这些技术以及具有适合于所预期的特定用途的各种修改的各种实施方案。
虽然参考附图对本公开以及实施方案进行了全面的描述,但应当注意,各种变化和修改对于本领域内的技术人员而言将变得显而易见。应当理解,此类变化和修改被认为被包括在由权利要求书所限定的本公开和实施方案的范围内。

Claims (37)

1.一种用于提供能够生成计算机生成的三维现实环境的计算机生成的现实平台的方法,所述方法包括:
在具有存储器和一个或多个处理器的电子设备处:
接收指示在所述计算机生成的三维现实环境中启动第一应用程序的请求的第一输入;
响应于接收到所述第一输入,启动所述第一应用程序的进程;
接收指示在所述计算机生成的三维现实环境中启动不同于所述第一应用程序的第二应用程序的请求的第二输入;
响应于接收到所述第二输入,启动不同于所述第一应用程序的进程的所述第二应用程序的进程;
通过所述第一应用程序的进程向所述电子设备的操作***的进程提供用于第一数据对象的数据对象数据,其中:
所述操作***的进程不同于所述第一应用程序的进程和所述第二应用程序的进程,
所述第一数据对象包括受共享限制的约束的第一部分和不受共享限制的约束的第二部分,以及
所述数据对象数据包括所述第二部分,而不包括所述第一部分;
用替代内容替换与所述第一数据对象的所述第一部分对应的图形内容;
通过所述第二应用程序的进程向所述操作***的进程提供不同于所述第一数据对象的第二数据对象;
通过所述电子设备的所述操作***的进程,在所述计算机生成的三维现实环境中渲染所述第一数据对象的三维表示,其中所述替代内容替换与所述第一数据对象的所述第一部分对应的图形内容;
通过所述电子设备的所述操作***的进程,在所述计算机生成的三维现实环境中渲染所述第二数据对象的三维表示;以及
使得显示所渲染的计算机生成的三维现实环境,其中所述替代内容替换与所述第一数据对象的所述第一部分对应的图形内容。
2.根据权利要求1所述的方法,进一步包括:
通过所述第一应用程序的进程生成所述第一数据对象;以及
通过所述第二应用程序的进程生成所述第二数据对象。
3.根据权利要求1所述的方法,其中所述第一数据对象包括表示以下各项中的一者或多者的数据:
所述第一数据对象的一个或多个属性;
所述第一数据对象的一个或多个行为;以及
所述第一数据对象的一个或多个事件。
4.根据权利要求3所述的方法,其中所述一个或多个属性包括指示所述第一数据对象的所渲染的三维表示的外观的值,其中所述第一数据对象的三维表示是基于指示所述外观的所述值来渲染的。
5.根据权利要求1-4中任一项所述的方法,其中所述操作***的进程在内核级访问级别下操作。
6.根据权利要求1-4中任一项所述的方法,其中所述第一应用程序的进程和所述第二应用程序的进程在比内核级访问级别低的访问级别下操作。
7.根据权利要求3-4中任一项所述的方法,其中所述一个或多个行为指示所述第一数据对象的三维表示在所述计算机生成的现实环境中的一个或多个动作。
8.根据权利要求3-4中任一项所述的方法,其中所述一个或多个事件指示所述第一数据对象的三维表示响应于在所述计算机生成的现实环境中的状态变化而执行的一个或多个动作。
9.根据权利要求1-4中任一项所述的方法,其中基于所述第一数据对象和所述第二数据对象来渲染所述第一数据对象的三维表示。
10.根据权利要求1-4中任一项所述的方法,其中所述操作***和所述第一应用程序与不同的服务提供方相关联。
11.根据权利要求1-4中任一项所述的方法,其中所述第一应用程序和所述第二应用程序与不同的服务提供方相关联。
12.根据权利要求1-4中任一项所述的方法,其中所述电子设备是头戴式耳机基站。
13.一种计算机可读存储介质,所述计算机可读存储介质存储被配置为由电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行以下操作的指令:
接收指示在计算机生成的三维现实环境中启动第一应用程序的请求的第一输入;
响应于接收到所述第一输入,启动所述第一应用程序的进程;
接收指示在所述计算机生成的三维现实环境中启动不同于所述第一应用程序的第二应用程序的请求的第二输入;
响应于接收到所述第二输入,启动不同于所述第一应用程序的进程的所述第二应用程序的进程;
通过所述第一应用程序的进程向所述电子设备的操作***的进程提供用于第一数据对象的数据对象数据,其中:
所述操作***的进程不同于所述第一应用程序的进程和所述第二应用程序的进程,
所述第一数据对象包括受共享限制的约束的第一部分和不受共享限制的约束的第二部分,以及
所述数据对象数据包括所述第二部分,而不包括所述第一部分;
用替代内容替换与所述第一数据对象的所述第一部分对应的图形内容;
通过所述第二应用程序的进程向所述操作***的进程提供不同于所述第一数据对象的第二数据对象;
通过所述电子设备的所述操作***的进程,在所述计算机生成的三维现实环境中渲染所述第一数据对象的三维表示,其中所述替代内容替换与所述第一数据对象的所述第一部分对应的图形内容;
通过所述电子设备的所述操作***的进程,在所述计算机生成的三维现实环境中渲染所述第二数据对象的三维表示;以及
使得显示所渲染的计算机生成的三维现实环境,其中所述替代内容替换与所述第一数据对象的所述第一部分对应的图形内容。
14.根据权利要求13所述的计算机可读存储介质,所述一个或多个程序包括用于执行以下操作的指令:
通过所述第一应用程序的进程生成所述第一数据对象;以及
通过所述第二应用程序的进程生成所述第二数据对象。
15.根据权利要求13所述的计算机可读存储介质,其中所述第一数据对象包括表示以下各项中的一者或多者的数据:
所述第一数据对象的一个或多个属性;
所述第一数据对象的一个或多个行为;以及
所述第一数据对象的一个或多个事件。
16.根据权利要求15所述的计算机可读存储介质,其中所述一个或多个属性包括指示所述第一数据对象的所渲染的三维表示的外观的值,其中基于指示所述外观的所述值来渲染所述第一数据对象的三维表示。
17.根据权利要求13-16中任一项所述的计算机可读存储介质,其中所述操作***的进程在内核级访问级别下操作。
18.根据权利要求13-16中任一项所述的计算机可读存储介质,其中所述第一应用程序的进程和所述第二应用程序的进程在比内核级访问级别低的访问级别下操作。
19.根据权利要求15-16中任一项所述的计算机可读存储介质,其中所述一个或多个行为指示所述第一数据对象的三维表示在所述计算机生成的现实环境中的一个或多个动作。
20.根据权利要求15-16中任一项所述的计算机可读存储介质,其中所述一个或多个事件指示所述第一数据对象的三维表示响应于在所述计算机生成的现实环境中的状态变化而执行的一个或多个动作。
21.根据权利要求13-16中任一项所述的计算机可读存储介质,其中基于所述第一数据对象和所述第二数据对象来渲染所述第一数据对象的三维表示。
22.根据权利要求13-16中任一项所述的计算机可读存储介质,其中所述操作***和所述第一应用程序与不同的服务提供方相关联。
23.根据权利要求13-16中任一项所述的计算机可读存储介质,其中所述第一应用程序和所述第二应用程序与不同的服务提供方相关联。
24.根据权利要求13-16中任一项所述的计算机可读存储介质,其中所述电子设备是头戴式耳机基站。
25.一种电子设备,所述电子设备包括:
一个或多个处理器;和
存储器,所述存储器存储被配置为由所述一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行以下操作的指令:
接收指示在计算机生成的三维现实环境中启动第一应用程序的请求的第一输入;
响应于接收到所述第一输入,启动所述第一应用程序的进程;
接收指示在所述计算机生成的三维现实环境中启动不同于所述第一应用程序的第二应用程序的请求的第二输入;
响应于接收到所述第二输入,启动不同于所述第一应用程序的进程的所述第二应用程序的进程;
通过所述第一应用程序的进程向所述电子设备的操作***的进程提供用于第一数据对象的数据对象数据,其中:
所述操作***的进程不同于所述第一应用程序的进程和所述第二应用程序的进程,
所述第一数据对象包括受共享限制的约束的第一部分和不受共享限制的约束的第二部分,以及
所述数据对象数据包括所述第二部分,而不包括所述第一部分;
用替代内容替换与所述第一数据对象的所述第一部分对应的图形内容;
通过所述第二应用程序的进程向所述操作***的进程提供不同于所述第一数据对象的第二数据对象;
通过所述电子设备的所述操作***的进程,在所述计算机生成的三维现实环境中渲染所述第一数据对象的三维表示,其中所述替代内容替换与所述第一数据对象的所述第一部分对应的图形内容;
通过所述电子设备的所述操作***的进程,在所述计算机生成的三维现实环境中渲染所述第二数据对象的三维表示;以及
使得显示所渲染的计算机生成的三维现实环境,其中所述替代内容替换与所述第一数据对象的所述第一部分对应的图形内容。
26.根据权利要求25所述的电子设备,所述一个或多个程序包括用于执行以下操作的指令:
通过所述第一应用程序的进程生成所述第一数据对象;以及
通过所述第二应用程序的进程生成所述第二数据对象。
27.根据权利要求25所述的电子设备,其中所述第一数据对象包括表示以下各项中的一者或多者的数据:
所述第一数据对象的一个或多个属性;
所述第一数据对象的一个或多个行为;以及
所述第一数据对象的一个或多个事件。
28.根据权利要求27所述的电子设备,其中所述一个或多个属性包括指示所述第一数据对象的所渲染的三维表示的外观的值,其中基于指示所述外观的所述值来渲染所述第一数据对象的三维表示。
29.根据权利要求25-28中任一项所述的电子设备,其中所述操作***的进程在内核级访问级别下操作。
30.根据权利要求25-28中任一项所述的电子设备,其中所述第一应用程序的进程和所述第二应用程序的进程在比内核级访问级别低的访问级别下操作。
31.根据权利要求27-28中任一项所述的电子设备,其中所述一个或多个行为指示所述第一数据对象的三维表示在所述计算机生成的现实环境中的一个或多个动作。
32.根据权利要求27-28中任一项所述的电子设备,其中所述一个或多个事件指示所述第一数据对象的三维表示响应于在所述计算机生成的现实环境中的状态变化而执行的一个或多个动作。
33.根据权利要求25-28中任一项所述的电子设备,其中基于所述第一数据对象和所述第二数据对象来渲染所述第一数据对象的三维表示。
34.根据权利要求25-28中任一项所述的电子设备,其中所述操作***和所述第一应用程序与不同的服务提供方相关联。
35.根据权利要求25-28中任一项所述的电子设备,其中所述第一应用程序和所述第二应用程序与不同的服务提供方相关联。
36.根据权利要求25-28中任一项所述的电子设备,其中所述电子设备是头戴式耳机基站。
37.一种电子设备,所述电子设备包括:
用于执行根据权利要求1-12中任一项所述的方法的装置。
CN201880055357.6A 2017-09-29 2018-09-25 计算机生成的现实平台 Active CN111052045B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210824799.0A CN115167677A (zh) 2017-09-29 2018-09-25 计算机生成的现实平台

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762565831P 2017-09-29 2017-09-29
US62/565,831 2017-09-29
US201862622725P 2018-01-26 2018-01-26
US62/622,725 2018-01-26
PCT/US2018/052732 WO2019067476A2 (en) 2017-09-29 2018-09-25 PLATFORM OF REALITY GENERATED BY COMPUTER

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210824799.0A Division CN115167677A (zh) 2017-09-29 2018-09-25 计算机生成的现实平台

Publications (2)

Publication Number Publication Date
CN111052045A CN111052045A (zh) 2020-04-21
CN111052045B true CN111052045B (zh) 2022-07-15

Family

ID=64017437

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210824799.0A Pending CN115167677A (zh) 2017-09-29 2018-09-25 计算机生成的现实平台
CN201880055357.6A Active CN111052045B (zh) 2017-09-29 2018-09-25 计算机生成的现实平台

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202210824799.0A Pending CN115167677A (zh) 2017-09-29 2018-09-25 计算机生成的现实平台

Country Status (4)

Country Link
US (3) US11372655B2 (zh)
EP (1) EP3659015A2 (zh)
CN (2) CN115167677A (zh)
WO (1) WO2019067476A2 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107357560A (zh) * 2017-04-28 2017-11-17 阿里巴巴集团控股有限公司 交互处理方法及装置
CN115167677A (zh) 2017-09-29 2022-10-11 苹果公司 计算机生成的现实平台
US11157739B1 (en) 2018-08-31 2021-10-26 Apple Inc. Multi-user computer generated reality platform
EP4300430A3 (en) * 2019-05-06 2024-03-06 Apple Inc. Device, method, and graphical user interface for composing cgr files
US11775130B2 (en) 2019-07-03 2023-10-03 Apple Inc. Guided retail experience
US11816800B2 (en) * 2019-07-03 2023-11-14 Apple Inc. Guided consumer experience
US11961294B2 (en) * 2019-09-09 2024-04-16 Techinvest Company Limited Augmented, virtual and mixed-reality content selection and display
US10997418B2 (en) 2019-09-09 2021-05-04 Ar, Llc Augmented, virtual and mixed-reality content selection and display
US10699124B1 (en) 2019-09-09 2020-06-30 Ar, Llc Augmented reality content selection and display based on printed objects having security features
US20210073429A1 (en) * 2019-09-10 2021-03-11 Apple Inc. Object Relationship Estimation From A 3D Semantic Mesh
US11410359B2 (en) * 2020-03-05 2022-08-09 Wormhole Labs, Inc. Content and context morphing avatars
US11423620B2 (en) * 2020-03-05 2022-08-23 Wormhole Labs, Inc. Use of secondary sources for location and behavior tracking
US20210390778A1 (en) * 2020-06-10 2021-12-16 Nvidia Corporation Environment generation using one or more neural networks
US12010155B2 (en) 2020-09-24 2024-06-11 Apple Inc. Operating system level management of group communication sessions
WO2022066459A1 (en) * 2020-09-24 2022-03-31 Sterling Labs Llc Synchronization in a multiuser experience
CN116601921A (zh) 2020-09-24 2023-08-15 苹果公司 第三方应用程序的会话隐私
CN112331235B (zh) * 2021-01-04 2021-04-06 腾讯科技(深圳)有限公司 多媒体内容的编辑控制方法、装置、电子设备和存储介质
US20220374543A1 (en) * 2021-05-24 2022-11-24 Samsung Electronics Co., Ltd. Method and apparatus for removing privacy sensitive objects in an augmented reality system
KR20220165414A (ko) * 2021-06-08 2022-12-15 현대자동차주식회사 에어모빌리티의 비행 사고 방지 시스템 및 방법

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105453011A (zh) * 2013-06-18 2016-03-30 微软技术许可有限责任公司 虚拟对象朝向和可视化
CN105637563A (zh) * 2013-04-19 2016-06-01 华为技术有限公司 在屏幕上显示3d场景图的方法
CN106716306A (zh) * 2014-09-30 2017-05-24 索尼互动娱乐股份有限公司 将多个头戴式显示器同步到统一空间并且使统一空间中的对象移动关联

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7692649B2 (en) 2005-10-04 2010-04-06 Rdv Systems Ltd. Method and apparatus for virtual reality presentation of civil engineering, land planning and infrastructure
JP5294612B2 (ja) * 2007-11-15 2013-09-18 インターナショナル・ビジネス・マシーンズ・コーポレーション 仮想共有空間における参照マークの自動生成方法、装置及びプログラム
US9901828B2 (en) * 2010-03-30 2018-02-27 Sony Interactive Entertainment America Llc Method for an augmented reality character to maintain and exhibit awareness of an observer
US8564621B2 (en) * 2010-08-11 2013-10-22 International Business Machines Corporation Replicating changes between corresponding objects
US9529424B2 (en) * 2010-11-05 2016-12-27 Microsoft Technology Licensing, Llc Augmented reality with direct user interaction
CN102843349B (zh) * 2011-06-24 2018-03-27 中兴通讯股份有限公司 实现移动增强现实业务的方法及***、终端及服务器
WO2013085639A1 (en) * 2011-10-28 2013-06-13 Magic Leap, Inc. System and method for augmented and virtual reality
JP2013105346A (ja) * 2011-11-14 2013-05-30 Sony Corp 情報提示装置、情報提示方法、情報提示システム、情報登録装置、情報登録方法、情報登録システムおよびプログラム
US9626798B2 (en) * 2011-12-05 2017-04-18 At&T Intellectual Property I, L.P. System and method to digitally replace objects in images or video
CN105051662B (zh) * 2012-10-23 2019-03-15 漫游控股有限公司 三维虚拟环境
GB201303707D0 (en) * 2013-03-01 2013-04-17 Tosas Bautista Martin System and method of interaction for mobile devices
US20140285519A1 (en) * 2013-03-22 2014-09-25 Nokia Corporation Method and apparatus for providing local synchronization of information for augmented reality objects
US10008034B2 (en) * 2013-05-03 2018-06-26 Nvidia Corporation System, method, and computer program product for computing indirect lighting in a cloud network
US9582849B2 (en) * 2013-10-28 2017-02-28 Vmware, Inc. Method and system to virtualize graphic processing services
US9426259B2 (en) * 2014-02-05 2016-08-23 Fen Research Limited Client server interaction for graphical/audio applications
US9406157B2 (en) 2014-04-21 2016-08-02 Airwatch Llc Concealing sensitive information on a display
EP3155560B1 (en) * 2014-06-14 2020-05-20 Magic Leap, Inc. Methods and systems for creating virtual and augmented reality
WO2016112017A2 (en) * 2015-01-05 2016-07-14 Worcester Polytechnic Institute System and method for controlling immersiveness of head-worn displays
US10725297B2 (en) * 2015-01-28 2020-07-28 CCP hf. Method and system for implementing a virtual representation of a physical environment using a virtual reality environment
US9696795B2 (en) * 2015-02-13 2017-07-04 Leap Motion, Inc. Systems and methods of creating a realistic grab experience in virtual reality/augmented reality environments
US10775878B2 (en) * 2015-04-10 2020-09-15 Sony Interactive Entertainment Inc. Control of personal space content presented via head mounted display
JP2017004354A (ja) 2015-06-12 2017-01-05 富士通株式会社 表示制御方法、表示制御プログラム、情報処理端末、及びウェアラブルデバイス
US20160371884A1 (en) * 2015-06-17 2016-12-22 Microsoft Technology Licensing, Llc Complementary augmented reality
US9818228B2 (en) * 2015-08-07 2017-11-14 Microsoft Technology Licensing, Llc Mixed reality social interaction
US20210006478A1 (en) * 2017-09-05 2021-01-07 Trixta, Inc. Distributed computing platform service management
CN115167677A (zh) 2017-09-29 2022-10-11 苹果公司 计算机生成的现实平台
US11157739B1 (en) * 2018-08-31 2021-10-26 Apple Inc. Multi-user computer generated reality platform

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105637563A (zh) * 2013-04-19 2016-06-01 华为技术有限公司 在屏幕上显示3d场景图的方法
CN105453011A (zh) * 2013-06-18 2016-03-30 微软技术许可有限责任公司 虚拟对象朝向和可视化
CN106716306A (zh) * 2014-09-30 2017-05-24 索尼互动娱乐股份有限公司 将多个头戴式显示器同步到统一空间并且使统一空间中的对象移动关联

Also Published As

Publication number Publication date
CN115167677A (zh) 2022-10-11
US11372655B2 (en) 2022-06-28
WO2019067476A2 (en) 2019-04-04
US11875162B2 (en) 2024-01-16
WO2019067476A3 (en) 2019-05-16
CN111052045A (zh) 2020-04-21
US20220318035A1 (en) 2022-10-06
EP3659015A2 (en) 2020-06-03
US20200233681A1 (en) 2020-07-23
US20240211279A1 (en) 2024-06-27

Similar Documents

Publication Publication Date Title
CN111052045B (zh) 计算机生成的现实平台
JP6967043B2 (ja) 3次元コンテンツ内の場所に基づく仮想要素モダリティ
US11188156B2 (en) Artificial reality notification triggers
US20230092103A1 (en) Content linking for artificial reality environments
US11157739B1 (en) Multi-user computer generated reality platform
CN112105983B (zh) 增强的视觉能力
US20230071584A1 (en) Parallel Video Call and Artificial Reality Spaces
US20200004327A1 (en) Focus-Based Debugging And Inspection For A Display System
US20210326594A1 (en) Computer-generated supplemental content for video
US20230260233A1 (en) Coordination of Interactions of Virtual Objects
US20240126406A1 (en) Augment Orchestration in an Artificial Reality Environment
KR20220024827A (ko) 가상 및 물리적 카메라들의 위치 동기화
US20230343049A1 (en) Obstructed objects in a three-dimensional environment
US20230221830A1 (en) User interface modes for three-dimensional display
CN113678173A (zh) 用于虚拟对象的基于图绘的放置的方法和设备
US20230072623A1 (en) Artificial Reality Device Capture Control and Sharing
US20240192973A1 (en) Artificial Reality Simulation for Augment Manipulation Controls on a Two-Dimensional Interface
US20220244903A1 (en) Application casting
US11361473B1 (en) Including a physical object based on context
US20230298250A1 (en) Stereoscopic features in virtual reality
TW202345102A (zh) 用於渲染遠距化身、環境和動態物件的可擴展視差系統
EP4264422A1 (en) Application casting
CN116848507A (zh) 应用程序投屏
CN118284880A (zh) 用于三维显示的用户界面模式
CN117242497A (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
GR01 Patent grant
GR01 Patent grant