CN116685935A - 确定注视方向以生成增强现实内容 - Google Patents

确定注视方向以生成增强现实内容 Download PDF

Info

Publication number
CN116685935A
CN116685935A CN202180088786.5A CN202180088786A CN116685935A CN 116685935 A CN116685935 A CN 116685935A CN 202180088786 A CN202180088786 A CN 202180088786A CN 116685935 A CN116685935 A CN 116685935A
Authority
CN
China
Prior art keywords
view
field
eye
anchor point
user
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
CN202180088786.5A
Other languages
English (en)
Inventor
凯尔·古德里奇
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.)
Snap Inc
Original Assignee
Snap 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 Snap Inc filed Critical Snap Inc
Publication of CN116685935A publication Critical patent/CN116685935A/zh
Pending legal-status Critical Current

Links

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
    • G06F3/013Eye tracking input arrangements
    • 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/0093Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 with means for monitoring data relating to the user, e.g. head-tracking, eye-tracking
    • 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
    • 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/0179Display position adjusting means not related to the information to be displayed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/18Eye characteristics, e.g. of the iris
    • G06V40/19Sensors therefor
    • 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
    • G02B2027/0178Eyeglass type
    • 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/0179Display position adjusting means not related to the information to be displayed
    • G02B2027/0185Displaying image at variable distance
    • 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/0179Display position adjusting means not related to the information to be displayed
    • G02B2027/0187Display position adjusting means not related to the information to be displayed slaved to motion of at least a part of the body of the user, e.g. head, eye

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Optics & Photonics (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • General Health & Medical Sciences (AREA)
  • Ophthalmology & Optometry (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本主题技术使用眼戴设备确定用户的视场中的注视方向。本主题技术至少部分地基于所确定的注视方向在视场中生成锚点。本主题技术识别与视场中的地平面对应的表面。本主题技术确定从所识别的表面到锚点的距离。本主题技术至少部分地基于所确定的距离来生成AR内容。本主题技术在视场中渲染所生成的AR内容以由眼戴设备显示。

Description

确定注视方向以生成增强现实内容
优先权请求
本申请要求2020年12月31日提交的第63/133,143号美国临时专利申请的优先权权益,该美国临时专利申请的全部内容在此出于所有目的通过引用并入本文。
背景技术
随着数字图像的使用的增加、便携式计算设备的可负担性、数字存储介质的增加的容量的可获得性以及网络连接的增加的带宽和可访问性,数字图像已经成为越来越多人日常生活的一部分。
一些电子眼戴设备(诸如所谓的智能眼镜)允许用户在用户参与某一活动的同时与虚拟内容交互。用户佩戴眼戴设备并且可以在与由眼戴设备显示的虚拟内容交互的同时通过眼戴设备观察真实世界环境。
附图说明
为了容易标识对任何特定元件或动作的讨论,附图标记中的一个最高位数字或多个最高位数字指代该元件被首次引入时所在的图号。
图1是根据一些示例实施方式的其中可以部署本公开内容的联网环境的图解表示。
图2是根据一些示例实施方式的消息客户端应用的图解表示。
图3是根据一些示例实施方式的如在数据库中维护的数据结构的图解表示。
图4是根据一些示例实施方式的消息的图解表示。
图5示出了根据一个示例实施方式的包括眼戴系统的以一副智能眼镜形式的眼戴设备的前透视图。
图6是示出根据一些实施方式的包括与给定消息相对应的附加信息的如图4中所述的消息注释的结构的示意图。
图7是示出根据某些示例实施方式的眼戴系统的各种模块的框图。
图8A和图8B示出了根据本主题技术的实现方式的由眼戴系统跟踪注视方向以执行操作的示例。
图9示出了在使用眼戴设备的同时基于所确定的用户的注视方向在用户的视场中生成的AR内容的示例。
图10是示出根据某些示例实施方式的方法的流程图。
图11是示出根据一些示例实施方式的在其中可以实现本公开内容的软件架构的框图。
图12是根据一些示例实施方式的呈计算机系统形式的机器的图解表示,在该计算机系统中可以执行一组指令以使机器执行本文中讨论的方法中任何一种或更多种。
具体实施方式
来自各种位置的兴趣广泛的用户可以捕获各种主题的数字图像,并且使其他人可经由网络(诸如因特网)获得所捕获的图像。为了增强用户对数字图像的体验并提供各种特征,使得计算设备能够对在各种变化条件(例如,图像尺度、噪声、照明、运动或几何失真的变化)下捕获的各种对象和/或特征执行图像处理操作可能是有挑战性的并且是计算密集的。
增强现实技术旨在通过提供利用电子信息增强的增强真实世界环境来缩小虚拟环境与真实世界环境之间的差距。因此,电子信息看起来是用户所感知的真实世界环境的一部分。在示例中,增强现实技术还提供用户界面以与覆盖在增强真实世界环境中的电子信息进行交互。
增强现实(AR)系统使得真实环境和虚拟环境能够以不同的程度组合以促进来自用户的实时交互。因此,如本文所描述的这样的AR系统可以包括真实环境和虚拟环境的各种可能的组合,其包括主要包括真实元素并且比虚拟环境(例如,没有真实元素)更接近真实环境的增强现实。以这种方式,真实环境可以通过AR系统与虚拟环境连接。沉浸在AR环境中的用户可以导航通过这样的环境,并且AR系统可以跟踪用户的视点以基于用户如何位于环境中提供可视化。可以在本文的实施方式中所描述的消息收发客户端应用(或消息收发系统)中提供增强现实(AR)体验。
本文所描述的主题技术的实施方式支持涉及AR内容的各种操作,所述各种操作利用给定电子设备(诸如可穿戴头戴式耳机设备(例如,给定眼戴设备)和移动计算设备)来捕获和修改这样的内容。
在各种场景中,移动计算设备的用户经常使用和越来越多地利用消息收发系统,以用便利的方式提供不同类型的功能。如本文中所描述的,本主题消息收发系统包括以下实际应用:该实际应用通过至少向使用电力和资源受限电子设备捕获图像数据提供技术改进,来提供捕获图像数据和基于所捕获的图像数据渲染AR内容(例如,图像、视频等)方面的改进。通过由本主题技术提供的技术实现捕获图像数据的这种改进,这减少了对所捕获的图像数据进行处理的时延并提高了效率,从而也降低了捕获设备中的功耗。
如本文进一步讨论的,本主题基础设施支持在消息收发系统的全部各种组件中创建和共享包括3D内容或AR效果的交互式媒体,本文称为消息。在本文所描述的示例实施方式中,消息可以从现场摄像装置或经由存储装置(例如,其中,包括3D内容和/或AR效果的消息被存储在存储器或数据库中)进入系统。本主题系统支持运动传感器输入以及外部效果和资产数据的加载。
如本文所提及的,短语“增强现实体验”、“增强现实内容项”、“增强现实内容生成器”包括或指代与图像修改、滤波、AR内容生成器、媒体叠加、变换等相对应的各种图像处理操作,并且另外可以包括在AR内容或媒体内容的呈现期间音频或音乐内容的回放,如本文进一步描述的。
图1是示出用于通过网络交换数据(例如,消息和相关联的内容)的示例消息收发系统100的框图。消息收发系统100包括客户端设备102的多个实例,每个实例托管包括消息收发客户端应用104的多个应用。每个消息收发客户端应用104经由网络106(例如,因特网)通信地耦接至消息收发客户端应用104的其他实例和消息收发服务器系统108。
消息收发客户端应用104能够经由网络106与另一消息收发客户端应用104和消息收发服务器系统108进行通信和交换数据。在消息收发客户端应用104之间以及在消息收发客户端应用104与消息收发服务器系统108之间交换的数据包括函数(例如,调用函数的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。
消息收发系统100包括眼戴设备150,该眼戴设备150托管眼戴系统160以及其他应用。眼戴设备150经由网络106(其可以包括经由专用短程通信路径,诸如BluetoothTM或Wi-Fi直接连接)通信地耦接至客户端设备102。
眼戴设备150可以是由用户佩戴的头戴式便携式系统,其包括能够向用户呈现增强现实环境的可视化的显示系统(例如头戴式显示设备)。眼戴设备150可以用某种电池供电。在示例中,由眼戴设备150的眼戴系统160控制的显示系统向用户提供增强现实环境的立体呈现,所述立体呈现实现特定场景的渲染的三维视觉显示。此外,眼戴设备150可以包括各种传感器,包括但不限于摄像装置、图像传感器、触摸传感器、麦克风、惯性测量单元(IMU)、心率、温度以及其他类型的传感器。而且,眼戴设备150可以包括能够接收用户输入的硬件元件诸如硬件按钮或开关。由这样的传感器和/或硬件元件检测到的用户输入对应于各种输入模态以发起特定操作。例如,这样的输入模态可以包括但不限于面部跟踪、眼睛跟踪(例如,注视方向)、手部跟踪、姿势跟踪、生物计量读数(例如,心率、脉搏、瞳孔扩张、呼吸、温度、脑电波、嗅觉)、识别语音或音频(例如,特定热词)以及激活按钮或开关等。
眼戴设备150可以通信地耦接至诸如客户端设备102的基础设备。通常,与眼戴设备150相比,这样的基础设备可以包括更多的计算资源和/或可用的电力。在示例中,眼戴设备150可以以各种模式操作。例如,眼戴设备150可以独立于任何基础设备以独立模式操作。
眼戴设备150还可以以无线拴系模式操作(例如,经由与诸如客户端设备102的基础设备的无线连接来连接),从而与给定基础设备一起工作。当眼戴设备150以无线拴系模式操作时,处理用户输入和/或渲染增强现实环境的至少一部分可以被卸载至基础设备,从而减少对眼戴设备150的处理负担。例如,在实现方式中,眼戴设备150与客户端设备102一起工作以生成包括物理和/或虚拟对象的增强现实环境,该增强现实环境实现用户与所生成的增强现实环境之间的不同形式的实时交互(例如,视觉、听觉和/或物理或触感交互)。在示例中,眼戴设备150提供可以由用户感知并且与之实时交互的增强现实环境相对应的场景的渲染。另外,作为呈现所渲染的场景的一部分,眼戴设备150可以向用户提供声音、触觉或触感反馈。给定渲染场景的内容可以取决于可用处理能力、网络可用性和容量、可用电池功率以及当前系统工作负荷。
在实现方式中,眼戴系统160生成包括真实环境的记录的消息,并且生成包括用于共享和回放的二维(2D)视频的增强现实环境。在另一实现方式中,眼戴系统160生成消息,并且随后生成合并来自所有传感器的信息和/或将记录与其他用户的消息(例如,不同的视点(POV))组合的三维(3D)表示。还应当理解的是,客户端设备102也可以以与眼戴设备150一起工作或者独立于眼戴设备150工作的方式生成这样的增强现实环境。
当用户围绕眼戴设备150移动时,眼戴系统160自动地或选择性地将增强现实或虚拟现实内容从一个虚拟位置移动到另一个虚拟位置。例如,眼戴设备150的用户或穿戴者最初可以看向真实世界环境的第一部分(例如,房屋中的第一房间)。用户可以提供输入(例如,使用客户端设备102或者眼戴设备150的语音激活或触摸激活的界面)来启动或访问包括一个或更多个对象的虚拟内容。
消息收发服务器系统108经由网络106向特定消息收发客户端应用104提供服务器侧功能。虽然消息收发系统100的某些功能在本文中被描述为由消息收发客户端应用104或由消息收发服务器系统108执行,但是在消息收发客户端应用104或消息收发服务器系统108内的某些功能的位置是设计选择。例如,在技术上可能优选的是最初在消息收发服务器系统108内部署某些技术和功能,但是后面将该技术和功能迁移至其中客户端设备102具有足够处理能力的消息收发客户端应用104。
消息收发服务器系统108支持被提供至消息收发客户端应用104的各种服务和操作。这样的操作包括向消息收发客户端应用104发送数据、从消息收发客户端应用104接收数据以及对由消息收发客户端应用104生成的数据进行处理。作为示例,该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体注释和覆盖、消息内容持续条件、社交网络信息和现场事件信息。通过经由消息收发客户端应用104的用户接口(UI)可用的功能来激活和控制消息收发系统100内的数据交换。
现在具体地转至消息收发服务器系统108,应用程序接口(API)服务器110耦接至应用服务器112并且向应用服务器112提供编程接口。应用服务器112通信地耦接至数据库服务器118,数据库服务器118有助于访问其中存储有与由应用服务器112处理的消息相关联的数据的数据库120。
应用程序接口(API)服务器110在客户端设备102与应用服务器112之间接收和发送消息数据(例如,命令和消息有效载荷)。特别地,应用程序接口(API)服务器110提供一组接口(例如,例程和协议),消息收发客户端应用104可以调用或查询这组接口以调用应用服务器112的功能。应用程序接口(API)服务器110公开由应用服务器112支持的各种功能,包括帐户注册、登录功能、经由应用服务器112从特定的消息收发客户端应用104向另一消息收发客户端应用104发送消息、从消息收发客户端应用104向消息收发服务器应用114发送媒体文件(例如,图像或视频)、用于另一消息收发客户端应用104的可能访问、媒体数据的集合(例如,故事)的设置、客户端设备102的用户的好友列表的检索、这样的集合的检索、消息和内容的检索、向社交图添加和删除好友、社交图内好友的位置、以及打开应用事件(例如,涉及消息收发客户端应用104)。
应用服务器112托管多个应用和子系统,包括消息收发服务器应用114、图像处理系统116和社交网络系统122。消息收发服务器应用114实现许多消息处理技术和功能,尤其涉及包括在从消息收发客户端应用104的多个实例接收的消息中的内容(例如,文本和多媒体内容)的汇集和其他处理。如将进一步详细描述的,来自多个来源的文本和媒体内容可以聚合成内容的集合(例如,称为故事或库)。然后,消息收发服务器应用114使得这些集合对消息收发客户端应用104可用。考虑到对数据的其他处理器和存储器密集处理的硬件要求,也可以由消息收发服务器应用114在服务器侧执行这样的处理。
应用服务器112还包括图像处理系统116,该图像处理系统116专用于通常针对在消息收发服务器应用114处的消息的有效载荷内接收的图像或视频执行各种图像处理操作。
社交网络系统122支持各种社交联网功能服务,并且使这些功能和服务对消息收发服务器应用114可用。为此,社交网络系统122维护并访问数据库120内的实体图304(如图3中所示)。社交网络系统122所支持的功能和服务的示例包括识别特定用户与之有关系或特定用户所“关注”的消息收发系统100的其他用户,以及还识别特定用户的兴趣以及其他实体。
应用服务器112通信地耦接至数据库服务器118,该数据库服务器118便于访问数据库120,在数据库120中存储有与由消息收发服务器应用114处理的消息相关联的数据。
图2是示出根据示例实施方式的关于消息传递系统100的另外的细节的框图。具体地,消息收发系统100被示出为包括消息收发客户端应用104和应用服务器112,它们又包含多个一些子系统,即短暂定时器系统202、集合管理系统204和注释系统206。
短暂定时器系统202负责施行对消息收发客户端应用104和消息收发服务器应用114所允许的内容的临时访问。为此,短暂定时器系统202结合了多个定时器,这些定时器基于与消息或消息的集合(例如,故事)相关联的持续时间和显示参数,选择性地显示消息和相关联的内容以及使得能够经由消息收发客户端应用104访问消息和相关联的内容。下面提供关于短暂定时器系统202的操作的另外的细节。
集合管理系统204负责管理媒体的集合(例如,文本、图像视频和音频数据的集合)。在一些示例中,内容(例如,消息,包括图像、视频、文本和音频)的集合可以被组织成‘事件库’或‘事件故事’。这样的集合可以在指定的时间段(例如,与内容相关的事件的持续时间)内可用。例如,可以使与音乐会有关的内容在该音乐会的持续期间内作为‘故事’可用。集合管理系统204还可以负责向消息收发客户端应用104的用户界面发布提供存在特定集合的通知的图标。
此外,集合管理系统204还包括策展接口208,策展接口208使得集合管理者能够管理和策展特定内容集合。例如,策展接口208使得事件组织者能够策展与特定事件相关的内容的集合(例如,删除不适当的内容或冗余消息)。此外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动地策展内容集合。在某些实施方式中,可以向用户支付补偿以将用户生成的内容包括到集合中。在这样的情况下,策展接口208进行操作以自动向这样的用户支付费用以使用其内容。
注释系统206提供使得用户能够注释或以其他方式修改或编辑与消息相关联的媒体内容的各种功能。例如,注释系统206提供与生成和发布用于由消息收发系统100处理的消息的媒体叠加相关的功能。注释系统206基于客户端设备102的地理位置可操作地向消息收发客户端应用104供应媒体叠加或补充(例如,图像过滤器)。在另一示例中,注释系统206基于其他信息(诸如客户端设备102的用户的社交网络信息)可操作地向消息收发客户端应用104供应媒体覆盖。媒体覆盖可以包括音频和视觉内容以及视觉效果。音频和视觉内容的示例包括图片、文本、标志、动画和声音效果。视觉效果的示例包括颜色覆盖。音频和视觉内容或视觉效果可以应用于客户端设备102处的媒体内容项(例如,照片)。例如,媒体覆盖可以包括可以覆盖在由客户端设备102拍摄的照片之上的文本。在另一示例中,媒体覆盖包括位置标识(例如,威尼斯海滩)覆盖、现场事件的名称或商家名称(例如,海滩咖啡馆)覆盖。在另一示例中,注释系统206使用客户端设备102的地理位置来标识包括在客户端设备102的地理位置处的商家的名称的媒体覆盖。媒体覆盖可以包括与商家相关联的其他标记。媒体覆盖可以存储在数据库120中并通过数据库服务器118被访问。
在一个示例实施方式中,注释系统206提供基于用户的发布平台,该基于用户的发布平台使得用户能够选择地图上的地理位置并且上传与所选择的地理位置相关联的内容。用户还可以指定特定媒体覆盖应当被提供给其他用户的环境。注释系统206生成包括所上传的内容的媒体覆盖并且将所上传的内容与所选择的地理位置相关联。
在另一示例实施方式中,注释系统206提供基于商家的发布平台,该基于商家的发布平台使得商家能够经由竞价过程来选择与地理位置相关联的特定媒体覆盖。例如,注释系统206在预定义时间量内将出价最高的商家的媒体覆盖与对应的地理位置相关联。
图3是示出根据某些示例实施方式的可以存储在消息收发服务器系统108的数据库120中的数据结构300的示意图。虽然数据库120的内容被示出为包括多个表,但是应当理解,数据可以存储在其他类型的数据结构(例如,作为面向对象的数据库)中。
数据库120包括存储在消息表314内的消息数据。实体表302存储实体数据,实体数据包括实体图304。其记录在实体表302内被维护的实体可以包括个人、公司实体、组织、对象、地点、事件等。不管类型如何,关于消息收发服务器系统108存储数据的任何实体都可以是被识别的实体。每个实体设置有唯一标识符以及实体类型标识符(未示出)。
实体图304还存储关于实体之间的关系和关联的信息。仅作为示例,这样的关系可以是基于感兴趣的或基于活动的社交关系、职业关系(例如,在共同的公司或组织中工作)。
数据库120还以过滤器的示例形式将注释数据存储在注释表312中。其数据存储在注释表312内的过滤器与视频(其数据存储在视频表310中)和/或图像(其数据存储在图像表308中)相关联,并且应用于视频(其数据存储在视频表310中)和/或图像(其数据存储在图像表308中)。在一个示例中,过滤器是在呈现给接收者用户期间被显示为覆盖在图像或视频上的覆盖。过滤器可以是各种类型,包括当发送用户正在编写消息时由消息收发客户端应用104向发送用户呈现的来自过滤器的库中的用户选择的过滤器。其他类型的过滤器包括地理位置过滤器(也称为地理过滤器),其可以基于地理位置呈现给发送用户。例如,基于由客户端设备102的GPS单元确定的地理位置信息,消息收发客户端应用104可以在用户界面内呈现特定于邻域或特定位置的地理位置过滤器。另一类型的过滤器是数据过滤器,其可以由消息收发客户端应用104基于在消息创建过程期间由客户端设备102收集的其他输入或信息来选择性地呈现给发送用户。数据过滤器的示例包括特定位置处的当前温度、发送用户行进的当前速度、客户端设备102的电池寿命或当前时间。
可以存储在图像表308内的其他注释数据是增强现实内容生成器(例如,对应于应用AR内容生成器、增强现实体验或增强现实内容项)。增强现实内容生成器可以是可以添加至图像或视频的实时特殊效果和声音。
如上所述,增强现实内容生成器、增强现实内容项、覆盖、图像变换、AR图像和类似术语是指可以对视频或图像进行的修改。这包括实时修改,该实时修改在使用设备传感器捕获图像时修改该图像并且然后在设备的屏幕上显示具有修改的图像。这还包括对所存储的内容的修改,诸如在可以被修改的库中的视频片段。例如,在访问多个增强现实内容生成器的设备中,用户可以将单个视频片段与多个增强现实内容生成器一起使用来查看不同的增强现实内容生成器将如何修改所存储的剪辑。例如,通过针对内容选择不同的增强现实内容生成器,可以将应用不同伪随机运动模型的多个增强现实内容生成器应用于同一内容。类似地,实时视频捕获可以与所示出的修改一起使用,以示出当前由设备的传感器捕获的视频图像将如何修改所捕获的数据。这样的数据可以简单地被显示在屏幕上并且不被存储在存储器中,或者由设备传感器捕获的内容可以在有修改或没有修改(或两者)的情况下被记录并被存储在存储器中。在一些系统中,预览特征可以示出不同的增强现实内容生成器同时在显示器中的不同窗口内看起来如何。这可以例如使得能够同时在显示器上观看具有不同伪随机动画的多个窗口。
因此,数据和使用增强现实内容生成器或其他这样的变换系统来使用该数据修改内容的各种系统可以涉及:对象(例如,面部、手、身体、猫、狗、表面、对象等)的检测;当这样的对象离开视频帧中的视场、进入视频帧中的视场以及在视频帧中的视场四处移动时对这样的对象的跟踪;以及当跟踪这样的对象时对这样的对象的修改或变换。在各种实施方式中,可以使用用于实现这样的变换的不同方法。例如,一些实施方式可以涉及生成一个或多个对象的三维网格模型,并且使用视频内的模型的变换和动画纹理来实现变换。在其他实施方式中,可以使用对对象上的点的跟踪以将图像或纹理(其可以是二维或三维的)放置在所跟踪的位置处。在又一实施方式中,视频帧的神经网络分析可以用于将图像、模型或纹理放置在内容(例如,视频的图像或帧)中。因此,增强现实内容生成器既涉及用于创建内容中的变换的图像、模型和纹理,也涉及利用对象检测、跟踪和放置实现这样的变换所需的附加建模和分析信息。
可以用保存在任何类型的计算机化系统的存储器中的任何类型的视频数据(例如,视频流、视频文件等)来执行实时视频处理。例如,用户可以加载视频文件并将它们保存在设备的存储器中,或者可以使用设备的传感器来生成视频流。另外,可以使用计算机动画模型来处理任何对象,诸如人的面部和人体的部分、动物或非生物(诸如椅子、汽车或其他对象)。
在一些实施方式中,当连同要变换的内容一起选择特定修改时,计算设备对要变换的元素进行标识,并且然后如果所述元素存在于视频帧中,则检测并跟踪它们。根据针对修改的请求来修改对象的元素,从而变换视频流的帧。可以通过用于不同类型的变换的不同方法来执行视频流的帧的变换。例如,对于主要涉及改变对象元素的形式的帧的变换,计算针对对象的每个元素的特征点(例如,使用主动形状模型(ASM)或其他已知方法)。然后,针对对象的至少一个元素中的每个元素,生成基于特征点的网格。该网格用于跟踪视频流中的对象的元素的后续阶段。在跟踪过程中,所提及的针对每个元素的网格与每个元素的位置对准。然后,在网格上生成附加点。基于针对修改的请求来针对每个元素生成第一点的第一集合,并且基于第一点的集合和针对修改的请求来针对每个元素生成第二点的集合。然后,可以基于第一点的集合和第二点的集合以及网格通过修改对象的元素来对视频流的帧进行变换。在这样的方法中,也可以通过跟踪和修改背景来使经修改的对象的背景改变或变形。
在一个或更多个实施方式中,可以通过计算针对对象的每个元素的特征点并基于所计算的特征点生成网格,来执行使用对象的元素改变对象的一些区域的变换。在网格上生成点,并且然后生成基于这些点的各种区域。然后通过将针对每个元素的区域与针对至少一个元素中的每个元素的位置对准来跟踪对象的元素,并且可以基于针对修改的请求来修改区域的特性,从而变换视频流的帧。根据针对修改的特定请求,可以以不同的方式对所提及的区域的特性进行变换。这样的修改可以涉及:改变区域的颜色;从视频流的帧中去除区域的至少一些部分;将一个或更多个新对象包括到基于对修改的请求的区域中;以及修改区域或对象的元素或使区域或对象的元素变形。在各种实施方式中,可以使用这样的修改或其他类似修改的任何组合。对于要被动画化的某些模型,可以选择一些特征点作为控制点,以用于确定针对模型动画的选项的整个状态空间。
在使用面部检测变换图像数据的计算机动画模型的一些实施方式中,使用特定的面部检测算法(例如,Viola-Jones)在图像上检测面部。然后,将主动形状模型(ASM)算法应用于图像的面部区域以检测面部特征参考点。
在其他实施方式中,可以使用适合于面部检测的其他方法和算法。例如,在一些实施方式中,使用表示在所考虑的大多数图像中存在的可区分点的界标来定位特征。例如,对于面部界标,可以使用左眼瞳孔的位置。在初始界标不可标识的情况下(例如,如果人具有眼罩),则可以使用次级界标。这样的界标标识过程可以用于任何这样的对象。在一些实施方式中,界标的集合形成形状。可以使用形状中的点的坐标将形状表示为向量。用使形状点之间的平均欧几里得距离最小化的相似性变换(允许平移、缩放和旋转)将一个形状与另一个形状对准。平均形状是对准的训练形状的平均。
在一些实施方式中,开始从与由全局面部检测器确定的面部的位置和大小对准的平均形状搜索界标。然后,这样的搜索重复以下步骤:通过对每个点周围的图像纹理进行模板匹配来调整形状点的位置以建议暂定形状,并且然后使暂定形状符合全局形状模型,直到出现收敛。在一些系统中,单独的模板匹配是不可靠的,并且形状模型汇集弱模板匹配器的结果以形成更强的整体分类器。在图像金字塔中的每一级处从粗分辨率到细分辨率重复整个搜索。
变换系统的实施方式可以在客户端设备(例如,客户端设备102)上捕获图像或视频流,并且在客户端设备102上本地执行复杂的图像操纵,同时保持适当的用户体验、计算时间和功耗。复杂的图像操纵可以包括大小和形状改变、情感变换(例如,将面部从皱眉改变为微笑)、状态变换(例如,使主体变老、减小外表年龄、改变性别)、风格变换、图形元素应用以及由已经被配置成在客户端设备102上高效执行的卷积神经网络实现的任何其他合适的图像或视频操纵。
在一些示例实施方式中,用于变换图像数据的计算机动画模型可以由如下系统使用,在该系统中,用户可以使用具有作为在客户端设备102上操作的消息收发客户端应用104的一部分而操作的神经网络的客户端设备102来捕获用户的图像或视频流(例如,自拍照)。在消息收发客户端应用104内操作的变换系统确定图像或视频流内面部的存在,并且提供与用于变换图像数据的计算机动画模型相关联的修改图标,或者计算机动画模型可以与本文描述的接口相关联地存在。修改图标包括可以是用于作为修改操作的一部分修改图像或视频流内的用户面部的基础的变化。一旦选择了修改图标,则变换系统发起转换用户的图像以反映所选择的修改图标的处理(例如,在用户上生成微笑面部)。在一些实施方式中,一捕获图像或视频流并且选择了指定的修改,就可以在移动客户端设备上显示的图形用户界面中呈现修改后的图像或视频流。变换系统可以在图像或视频流的一部分上实现复杂的卷积神经网络,以生成和应用所选择的修改。也就是说,用户可以捕获图像或视频流,并且一旦选择了修改图标,就可以实时或接近实时地呈现修改后的结果。此外,在捕获视频流并且所选择的修改图标保持切换时,修改可以是持久的。机器教导的神经网络可以用于实现这样的修改。
在一些实施方式中,呈现由变换系统执行的修改的图形用户界面可以向用户提供附加的交互选项。这样的选项可以基于用于发起特定计算机动画模型的内容捕获和选择的界面(例如,从内容创建者用户界面发起)。在各种实施方式中,在初始选择修改图标之后,修改可以是持久的。用户可以通过轻敲或以其他方式选择正由变换系统修改的面部来切换修改的开或关,并对其进行存储以供稍后查看或浏览成像应用的其他区域。在变换系统修改多个面部的情况下,用户可以通过轻敲或选择在图形用户界面内修改和显示的单个面部来全局地切换修改的开或关。在一些实施方式中,可以分别修改多个面部的组中的各个面部,或者可以通过轻敲或选择图形用户界面内显示的各个面部或一系列各个面部来分别切换这样的修改。
在一些示例实施方式中,提供了图形处理流水线架构,其使得能够将不同的增强现实体验(例如,AR内容生成器)应用在对应的不同层中。这样的图形处理流水线提供了可扩展渲染引擎,所述可扩展渲染引擎用于提供复合媒体(例如,图像或视频)或者复合AR内容中包括的多个增强现实体验,所述复合媒体或复合AR内容用于由消息收发客户端应用104(或消息收发系统100)进行渲染。
如上面所提及的,视频表310存储视频数据,在一个实施方式中,视频数据与其记录在消息表314中被维护的消息相关联。类似地,图像表308存储与其消息数据存储在实体表302中的消息相关联的图像数据。实体表302可以将来自注释表312的各种注释与存储在图像表308和视频表310中的各种图像和视频相关联。
故事表306存储与消息和相关联的图像、视频或音频数据的集合相关的数据,所述消息和相关联的图像、视频或音频数据被编译成集合(例如,故事或库)。特定集合的创建可以由特定用户(例如,其记录在实体表302中被维护的每个用户)发起。用户可以创建以已经由该用户创建和发送/广播的内容的集合的形式的‘个人故事’。为此,消息收发客户端应用104的用户界面可以包括用户可选以使得发送用户能够将特定内容添加至他或她的个人故事的图标。
集合还可以构成‘现场故事’,‘现场故事’是手动地、自动地或使用手动技术和自动技术的组合来创建的来自多个用户的内容的集合。例如,‘现场故事’可以构成来自不同位置和事件的用户提交的内容的策展流。其客户端设备具有启用的位置服务并且在特定时间处于共同位置事件的用户可以例如经由消息收发客户端应用104的用户界面被呈现有选项,以向特定现场故事贡献内容。可以由消息收发客户端应用104基于用户的位置向用户标识现场故事。最终结果是从社区角度讲述的‘现场故事’。
另一类型的内容集合被称为‘位置故事’,‘位置故事’使得其客户端设备102位于特定地理位置(例如,在学院或大学校园)内的用户能够对特定集合做出贡献。在一些实施方式中,对位置故事的贡献可能需要第二程度的认证来验证终端用户属于特定组织或其他实体(例如,是大学校园中的学生)。
图4是示出根据一些实施方式的消息400的结构的示意图,该消息400由消息收发客户端应用104或眼戴系统160生成以传送至另一消息收发客户端应用104或消息收发服务器应用114。特定消息400的内容用于填充存储在消息收发服务器应用114可访问的数据库120内的消息表314。类似地,消息400的内容作为客户端设备102或应用服务器112的‘传输中’或‘飞行中’数据存储在存储器中。消息400被示出为包括以下要素:
消息标识符402:标识消息400的唯一标识符。
消息文本有效载荷404:要由用户经由客户端设备102的用户界面生成并且包括在消息400中的文本。
消息图像有效载荷406:由客户端设备102的摄像装置部件捕获或从客户端设备102的存储器部件检索并且包括在消息400中的图像数据。
消息视频有效载荷408:由摄像装置部件捕获或从客户端设备102的存储器部件检索并且包括在消息400中的视频数据。
消息音频有效载荷410:由麦克风捕获或从客户端设备102的存储器部件检索并且包括在消息400中的音频数据。
消息注释412:表示要应用于消息400的消息图像有效载荷406、消息视频有效载荷408或消息音频有效载荷410的注释的注释数据(例如,过滤器、贴纸或其他增强)。
消息持续时间参数414:以秒为单位指示消息的内容(例如,消息图像有效载荷406、消息视频有效载荷408、消息音频有效载荷410)将被呈现或使得用户可经由消息收发客户端应用104访问的时间量的参数值。
消息地理位置参数416:与消息的内容有效载荷相关联的地理位置数据(例如,纬度坐标和经度坐标)。多个消息地理位置参数值416可以被包括在有效载荷中,这些参数值中的每个参数值与关于包括在内容中的内容项(例如,消息图像有效载荷406内的特定图像或消息视频有效载荷408中的特定视频)相关联。
消息故事标识符418:标识与消息400的消息图像有效载荷406中的特定内容项相关联的一个或更多个内容集合(例如,‘故事’)的标识符值。例如,消息图像有效载荷406内的多个图像可以各自使用标识符值与多个内容集合相关联。
消息标签420:每个消息400可以用多个标签来标记,多个标签中的每个标签指示包括在消息有效载荷中的内容的主题。例如,在包括在消息图像有效载荷406中的特定图像描绘动物(例如,狮子)的情况下,标签值可以包括在指示相关动物的消息标签420内。标签值可以基于用户输入手动生成或者可以使用例如图像识别自动生成。
消息发送者标识符422:指示在其上生成消息400并且从其发送消息400的客户端设备102的用户的标识符(例如,消息收发系统标识符、电子邮件地址或设备标识符)。
消息接收者标识符424:指示消息400寻址到的客户端设备102的用户的标识符(例如,消息收发系统标识符、电子邮件地址或设备标识符)。
消息400的各个要素的内容(例如,值)可以是指向在其内存储内容数据值的表中的位置的指针。例如,消息图像有效载荷406中的图像值可以是指向图像表308内的位置(或其地址)的指针。类似地,消息视频有效载荷408内的值可以指向存储在视频表310内的数据,存储在消息注释412内的值可以指向存储在注释表312中的数据,存储在消息故事标识符418内的值可以指向存储在故事表306中的数据,并且存储在消息发送者标识符422和消息接收者标识符424内的值可以指向存储在实体表302内的用户记录。
图5示出了根据一个示例实施方式的包括眼戴系统160的一副智能眼镜的形式的眼戴设备150的前透视图。眼戴设备150包括本体503,本体503包括前部件或框架506以及一对镜腿509,一对镜腿509连接至框架506以在佩戴眼戴设备150时将框架506支撑在用户的面部上的适当位置。框架506可以由任何合适的材料(诸如,塑料或金属)制成,包括任何合适的形状记忆合金。
眼戴设备150包括呈一副透镜512的形式的一对光学元件,所述一对光学元件由对应的光学元件保持器来保持,所述光学元件保持器具有形成框架506的一部分的一对边框515的形式。边框515通过鼻梁架518连接。在其他实施方式中,光学元件中的一个或两个可以是显示器、显示组件或透镜及显示器组合。
框架506包括限定框架506的横向端部的一对端部件521。在该示例中,各种电子部件容纳在端部件521中的一个或两个中。镜腿509联接至相应的端部件521。在该示例中,镜腿509通过相应的铰链联接至框架506,以便在可穿戴模式和折叠模式之间可铰接地移动,在折叠模式下,镜腿509朝向框架506枢转以基本上平靠着框架506。在其他实施方式中,镜腿509可以通过任何合适的手段联接至框架506,或者可以刚性地或固定地固定至框架506,以便与其成一体。
镜腿509中的每一个镜腿包括联接至框架506的镜腿的前部和用于联接至用户的耳朵的任何合适的后部,诸如图5的示例实施方式中所示的弯曲或尖部件。在一些实施方式中,框架506由单件材料形成,以便具有统一的或整体性的构造。在一些实施方式中,本体503的整体(包括框架506和镜腿509两者)可以是统一的或整体性的构造。
眼戴设备150具有携带的电子部件,电子部件包括计算设备,诸如计算机524或低功率处理器,其在不同的实施方式中可以是任何合适的类型,以便由本体503携载。在一些实施方式中,计算机524至少部分地容纳在镜腿509中的一个或两个中。在本实施方式中,计算机524的各个部件容纳在框架506的横向端部件521中。计算机524包括具有存储器(例如,易失性存储设备,诸如随机访问存储器或寄存器)、存储设备(例如,非易失性存储设备)、无线通信电路(例如,BLE通信设备和/或WiFi直连设备)以及电源的一个或更多个处理器。计算机524包括低功率电路、高速电路,以及在一些实施方式中包括显示处理器。各个实施方式可以包括不同配置或以不同方式集成在一起的这些元件。
计算机524另外包括电池527或其他合适的便携式电力供应装置。在一个实施方式中,电池527被设置在镜腿509中的一个中。在图5中所示的眼戴设备150中,电池527被示出为设置在端部件521中的一个中,其电耦接至容纳在对应的端部件521中的计算机524的其余部分。
眼戴设备150是支持摄像装置功能的,在该示例中包括摄像装置530,摄像装置530安装在端部件521中的一个中并且面向前方,以便与眼戴设备150的佩戴者的视线方向或多或少地对准。摄像装置530被配置成捕获数字图像(在本文中也被称为数字照片或图片)以及数字视频内容。摄像装置530的操作由计算机524提供的摄像装置控制器控制,表示由摄像装置530捕获的图像或视频的图像数据临时存储在形成计算机524的一部分的存储器上。在一些实施方式中,眼戴设备150可以具有例如由相应的端部件521容纳的一对摄像装置530。
如下文将更详细描述的,携载的计算机524和透镜512被一起配置成提供眼戴系统160,眼戴系统160通过将虚拟内容从第一虚拟位置移动到第二虚拟位置来自动且选择性地使虚拟内容重新居中以使虚拟内容进入透镜512的视野内。具体地,透镜512可以显示虚拟内容或一个或更多个虚拟对象。这使得用户看起来虚拟内容融入在用户通过透镜512观看的真实世界环境内。在一些实施方式中,从客户端设备102接收虚拟内容。在一些实施方式中,从应用服务器112直接接收虚拟内容。
眼戴设备150包括加速度计和触摸界面以及语音命令系统。基于由眼戴设备150从加速度计和触摸界面以及语音命令系统接收的输入,眼戴设备150可以控制用户与虚拟内容的交互。在一个示例中,用户交互可以控制呈现在透镜512上的内容的回放。在另一示例中,用户交互可以浏览播放列表或者音乐或视频库。在另一示例中,用户交互可以例如通过滚动各种三维或二维对话元素(例如,聊天气泡)并且选择各个对话元素来进行响应以生成向对话的参与者发送的消息来处理用户所参与的对话。
眼戴系统160(其可以由计算机524实现)将虚拟内容指定到虚拟位置。眼戴系统160监视在真实世界环境的视野内的当前虚拟位置。眼戴系统160检索在视野内的当前虚拟位置的指定范围内的用于显示的虚拟内容。当眼戴设备150四处移动以指向与不同的一组虚拟位置的相关联的真实世界环境的新的部分时,眼戴系统160排除不在该不同的一组虚拟位置的范围内的任何虚拟内容。例如,当眼戴设备150四处移动以指向不与真实世界环境的先前显示的部分重叠的真实世界环境的新的部分时,眼戴系统160排除不在该不同的一组虚拟位置的范围内的任何虚拟内容。
眼戴系统160可以接收使虚拟内容进入当前视野中的请求。作为响应,眼戴系统160将指定的并与虚拟内容相关联的虚拟位置更新为与真实世界环境的当前视野相关联的虚拟位置。因此,现在将虚拟内容从视野中移出以包括在当前视野中,从而允许用户与虚拟内容交互。在一些情况下,用户可以仅与在透镜512的视野内的虚拟内容交互。如果用户四处移动以面向导致虚拟内容从视野中消失的另一方向,则用户输入不再能够控制先前显示的虚拟内容或与先前显示的虚拟内容交互,直到虚拟内容被带回视野中。
眼戴设备150还包括一个或更多个通信设备,诸如蓝牙低能量(BLE)通信接口。这样的BLE通信接口使得眼戴设备150能够与客户端设备102无线地通信。代替BLE通信接口或者除了BLE通信接口之外,还可以采用其他形式的无线通信,例如WiFi直连接口。BLE通信接口实现标准数量的BLE通信协议。
由眼戴设备150的BLE接口实现的通信协议中的第一通信协议使得能够在眼戴设备150与客户端设备102之间建立未加密链路。在该第一协议中,眼戴设备150与客户端设备102之间的链路层通信(物理接口或介质)包括未加密数据。在该第一协议中,应用层(对物理交换的数据操作的通信层)对在BLE通信接口的链路层上以未加密形式物理交换的数据进行加密和解密。以这种方式,在物理层上交换的数据可以由窃听设备自由地读取,但是该窃听设备在没有在应用层中执行解密操作的情况下将不能对交换的数据进行解密。
由眼戴设备150的BLE接口实现的通信协议中的第二通信协议使得能够在眼戴设备150与客户端设备102之间建立加密链路。在该第二协议中,眼戴设备150与客户端设备102之间的链路层通信(物理接口)从应用层接收数据,并且在通过物理介质交换数据之前向数据添加第一类型的加密。在该第二协议中,应用层(对物理交换的数据操作的通信层)可以使用或可以不使用第二类型的加密对在BLE通信接口的链路层上使用第一类型的加密以加密形式物理交换的数据进行加密和解密。即,数据可以首先由应用层加密,并且然后在通过物理介质被交换之前由物理层进一步加密。在通过物理介质进行交换之后,数据随后由物理层解密,并且然后由应用层再次解密(例如,使用不同类型的加密)。以这种方式,由于数据在物理介质中被加密,通过物理层交换的数据不由被窃听设备读取。
在一些实施方式中,客户端设备102使用第一协议与眼戴设备150通信以在消息收发客户端104与眼戴设备150之间交换图像或视频或虚拟内容。
如上所述,媒体覆盖诸如AR内容生成器、覆盖、图像变换、AR图像和类似术语是指可以对视频或图像进行的修改。这包括实时修改,实时修改在图像被使用设备传感器进行捕获并且然后显示在设备的屏幕上时用所述修改来修改图像。这还包括对所存储的内容,例如对可以被修改的库中的视频片段的修改。例如,在可以访问多个媒体覆盖(例如,AR内容生成器)的设备中,用户可以将多个AR内容生成器用于单个视频片段来查看不同的AR内容生成器将如何修改所存储的片段。例如,通过针对同一内容选择不同的AR内容生成器,可以将应用不同伪随机移动模型的多个AR内容生成器应用于该同一内容。类似地,可以将实时视频捕获与示出的修改一起使用,以显示当前由设备的传感器捕获的视频图像将如何修改所捕获的数据。这样的数据可以简单地显示在屏幕上而不存储在存储器中,或者由设备传感器捕获的内容可以在进行修改或不进行修改(或两者)的情况下记录并存储在存储器中。在一些系统中,预览特征可以示出不同的AR内容生成器同时在显示器中的不同窗口内看起来如何。例如,这可以使得能够同时在显示器上查看具有不同伪随机动画的多个窗口。
因此,数据和使用AR内容生成器或其他这样的变换系统来使用该数据以修改内容的各种系统可以涉及:对象(例如,面部、手、身体、猫、狗、表面、对象等)的检测;当这样的对象离开视频帧中的视场、进入视频帧中的视场以及在视频帧中的视场四处移动时对这样的对象的跟踪;以及在这样的对象被跟踪时对这样的对象的修改或变换。在各种实施方式中,可以使用用于实现这样的变换的不同方法。例如,一些实施方式可能涉及生成一个或多个对象的三维网格模型,并且使用视频中模型的变换和动画纹理来实现变换。在其他实施方式中,对象上的点的跟踪可以用于将图像或纹理(其可以是二维或三维的)放置在所跟踪的位置处。在更进一步的实施方式中,可以使用视频帧的神经网络分析将图像、模型或纹理放置在内容(例如,图像或视频帧)中。因此,透镜(lens)数据既涉及用于创建内容中的变换的图像、模型和纹理,也涉及利用对象检测、跟踪和放置实现这样的变换所需的附加建模和分析信息。
可以用保存在任何种类的计算机化系统的存储器中的任何种类的视频数据(例如,视频流、视频文件等)来执行实时视频处理。例如,用户可以加载视频文件并将其保存在设备的存储器中,或者可以使用设备的传感器生成视频流。此外,可以使用计算机动画模型来处理任何对象,诸如人的面部以及人体的各部分、动物或非生物(诸如椅子、汽车或其他对象)。
在一些实施方式中,当与要变换的内容一起选择特定修改时,由计算设备标识要变换的元素,并且然后在要变换的元素存在于视频的帧中的情况下对要变换的元素进行检测和跟踪。根据对修改的请求来修改对象的元素,因此变换视频流的帧。可以通过用于不同种类的变换的不同方法来执行视频流的帧的变换。例如,对于主要涉及改变对象元素形式的帧变换,计算对象的元素中的每一个元素的特征点(例如,使用主动形状模型(ASM)或其他已知方法)。然后,针对对象的至少一个元素中的每一个元素生成基于特征点的网格。该网格用于跟踪视频流中的对象的元素的后续阶段。在跟踪过程中,所提及的针对每个元素的网格与每个元素的位置对准。然后,在网格上生成附加点。基于对修改的请求针对每个元素生成第一点的第一集合,并且基于第一点的集合和对修改的请求针对每个元素生成第二点的集合。然后,可以通过基于第一点的集合和第二点的集合以及网格修改对象的元素,对视频流的帧进行变换。在这样的方法中,也可以通过跟踪和修改背景来使经修改的对象的背景改变或变形。
在一个或更多个实施方式中,可以通过计算针对对象的每个元素的特征点并基于所计算的特征点生成网格,执行使用对象的元素来改变对象的一些区域的变换。在网格上生成点,并且然后生成基于点的各种区域。然后,通过将针对每个元素的区域与针对至少一个元素中的每一个元素的位置对准来跟踪对象的元素,并且可以基于对修改的请求来修改区域的属性,从而变换视频流的帧。根据具体的对修改的请求,可以以不同的方式对所提及的区域的特性进行变换。这样的修改可以涉及:改变区域的颜色;从视频流的帧中去除区域的至少一些部分;将一个或更多个新对象包括到基于对修改的请求的区域中;以及修改区域或对象的元素或使区域或对象的元素变形。在各种实施方式中,可以使用这样的修改或其他类似修改的任何组合。对于要被动画化的某些模型,可以选择一些特征点作为控制点,以用于确定针对模型动画的选项的整个状态空间。
在使用面部检测变换图像数据的计算机动画模型的一些实施方式中,使用特定的面部检测算法(例如,Viola-Jones)在图像上检测面部。然后,将主动形状模型(ASM)算法应用于图像的面部区域以检测面部特征参考点。
在其他实施方式中,可以使用适合于面部检测的其他方法和算法。例如,在一些实施方式中,使用表示在所考虑的大多数图像中存在的可区分点的界标来定位特征。例如,对于面部界标,可以使用左眼瞳孔的位置。在初始界标不可标识的情况下(例如,如果人具有眼罩),则可以使用次级界标。这样的界标标识过程可以用于任何这样的对象。在一些实施方式中,界标的集合形成形状。可以使用形状中的点的坐标将形状表示为向量。用使形状点之间的平均欧几里得距离最小化的相似性变换(允许平移、缩放和旋转)将一个形状与另一个形状对准。平均形状是对准的训练形状的平均。
在一些实施方式中,开始从与由全局面部检测器确定的面部的位置和大小对准的平均形状搜索界标。然后,这样的搜索重复以下步骤:通过对每个点周围的图像纹理进行模板匹配来调整形状点的位置以建议暂定形状,并且然后使暂定形状符合全局形状模型,直到出现收敛。在一些系统中,单独的模板匹配是不可靠的,并且形状模型汇集弱模板匹配器的结果以形成更强的整体分类器。在图像金字塔中的每一级处从粗分辨率到细分辨率重复整个搜索。
变换系统的实施方式可以在客户端设备上捕获图像或视频流,并且在客户端设备(诸如,客户端设备102)上本地执行复杂的图像操纵,同时保持适当的用户体验、计算时间和功耗。复杂的图像操纵可以包括大小和形状改变、情感变换(例如,将面部从皱眉改变为微笑)、状态变换(例如,使主体变老、减小外表年龄、改变性别)、风格变换、图形元素应用以及由已经被配置成在客户端设备上高效执行的卷积神经网络实现的任何其他合适的图像或视频操纵。
在一些示例实施方式中,用于变换图像数据的计算机动画模型可以由如下系统使用,在该系统中,用户可以使用具有作为在客户端设备102上操作的消息收发客户端应用104的一部分而操作的神经网络的客户端设备102来捕获用户的图像或视频流(例如,自拍照)。在消息收发客户端应用104内操作的变换系统确定图像或视频流内面部的存在,并且提供与用于变换图像数据的计算机动画模型相关联的修改图标,或者计算机动画模型可以与本文描述的接口相关联地存在。修改图标包括可以是用于作为修改操作的一部分修改图像或视频流内的用户面部的基础的变化。一旦选择了修改图标,则变换系统发起转换用户的图像以反映所选择的修改图标的处理(例如,在用户上生成微笑面部)。在一些实施方式中,一捕获图像或视频流并且选择了指定的修改,就可以在移动客户端设备上显示的图形用户界面中呈现修改后的图像或视频流。变换系统可以在图像或视频流的一部分上实现复杂的卷积神经网络,以生成和应用所选择的修改。也就是说,用户可以捕获图像或视频流,并且一旦选择了修改图标,就可以实时或接近实时地呈现修改后的结果。此外,在捕获视频流并且所选择的修改图标保持切换时,修改可以是持久的。机器教导的神经网络可以用于实现这样的修改。
在一些实施方式中,呈现由变换系统执行的修改的图形用户界面可以向用户提供附加的交互选项。这样的选项可以基于用于发起特定计算机动画模型的内容捕获和选择的界面(例如,从内容创建者用户界面发起)。在各种实施方式中,在初始选择修改图标之后,修改可以是持久的。用户可以通过轻敲或以其他方式选择正由变换系统修改的面部来切换修改的开或关,并对其进行存储以供稍后查看或浏览成像应用的其他区域。在变换系统修改多个面部的情况下,用户可以通过轻敲或选择在图形用户界面内修改和显示的单个面部来全局地切换修改的开或关。在一些实施方式中,可以分别修改多个面部的组中的各个面部,或者可以通过轻敲或选择图形用户界面内显示的各个面部或一系列各个面部来分别切换这样的修改。
在一些示例实施方式中,提供了图形处理流水线架构,其使得能够在对应的不同层中应用不同的媒体覆盖。这样的图形处理流水线提供了可扩展渲染引擎,所述可扩展渲染引擎用于提供由消息收发客户端应用104(或消息收发系统100)进行渲染的复合媒体(例如,图像或视频)或者复合AR内容中包括的多个增强现实内容生成器。
如本文所讨论的,本主题基础设施支持在消息收发系统100的全部各种组件中创建和共享具有交互式效果的交互式消息。在示例中,为了提供这样的交互式效果,给定的交互式消息可以包括图像数据以及2D数据或3D数据。如本文所描述的基础设施使得能够跨本主题系统提供其他形式的3D且交互式的媒体(例如,2D媒体内容),这允许将这样的交互式媒体跨消息收发系统100并且连同照片和视频消息一起被共享。在本文描述的示例实施方式中,消息可以从现场摄像装置或经由存储装置(例如,具有2D或3D内容或增强现实(AR)效果(例如,3D效果或其他交互式效果)的消息被存储在存储器或数据库中)进入系统。在具有3D数据的交互式消息的示例中,本主题系统会支持运动传感器输入,并且管理3D数据的发送和存储以及外部效果和资产数据的加载。
如上所述,交互式消息包括与2D效果或3D效果和深度数据结合的图像。在示例实施方式中,除了传统的图像纹理之外,还使用本主题系统来渲染消息以使摄像装置所看到的空间细节/几何形状可视化。当观看者通过将客户端设备移动来与该消息进行交互时,该移动会触发向观看者渲染图像和几何形状的视角的相应变化。
在实施方式中,本主题系统提供AR效果(其可以包括使用3D数据的3D效果或者不使用3D数据的交互式2D效果),该AR效果与系统的其他组件一起工作,以提供可以占据消息中的不同3D平面的粒子、着色器、2D资产和3D几何形状。在示例中,以实时方式向用户渲染如本文所描述的AR效果。
如本文所提及的,基于陀螺仪的交互是指其中给定客户端设备的旋转被用作输入以改变效果的方面(例如,沿x轴旋转电话以便改变场景中的光的颜色)的交互类型。
如本文所提及的,增强现实内容生成器是指可以添加至消息的实时特殊效果和/或声音,并且用AR效果和/或其他3D内容(诸如3D动画图形元素)、3D对象(例如,非动画的)等来修改图像和/或3D数据。
以下讨论涉及结合根据一些实施方式的这样的消息存储的示例数据。
图6是示出根据一些实施方式的由消息收发客户端应用104或眼戴系统160生成的包括与给定消息相对应的附加信息的如上面在图4中所描述的消息注释412的结构的示意图。
在实施方式中,如图3中所示,包括图6所示的附加数据的特定消息400的内容用于填充存储在数据库120内的用于给定消息的消息表314,然后该数据库120可由消息收发客户端应用104访问。如在图6中所示的,消息注释412包括与各种数据相对应的以下要素:
○增强现实(AR)内容标识符652:消息中使用的AR内容生成器的标识符
○消息标识符654:消息的标识符
○资产标识符656:消息中针对资产的标识符的集合。例如,可以针对由特定AR内容生成器确定的资产包括相应的资产标识符。在实施方式中,这样的资产由发送者侧客户端设备上的AR内容生成器创建,上传到消息收发服务器应用114,并且在接收者侧客户端设备上使用以便重新创建消息。典型资产的示例包括:
■由摄像装置捕获的原始静态RGB图像
■具有应用于原始图像的AR内容生成器效果的后处理图像
○增强现实(AR)内容元数据658:与对应于AR标识符652的AR内容生成器相关联的附加元数据,诸如:
○AR内容生成器类别:对应于针对特定AR内容生成器的类型或分类
○AR内容生成器轮播索引
○轮播组:当合格的捕获后AR内容生成器被插入到轮播界面中时,轮播组可以被填充和利用。在实现方式中,新值“AR_DEFAULT_GROUP”(例如,分配给AR内容生成器的默认组可以被添加至有效组名的列表。
○与附加元数据相对应的捕获元数据660,诸如:
○摄像装置图像元数据
■摄像装置固有数据
●焦距
●主点
■其他摄像装置信息(例如,摄像装置定位)
○传感器信息:
■陀螺仪传感器数据
■定位传感器数据
■加速度计传感器数据
■其他传感器数据
■位置传感器数据
图7是示出根据某些示例实施方式的眼戴系统160的各个模块的框图。眼戴系统160被示出为包括AR内容记录系统700。如进一步所示,AR内容记录系统700包括摄像装置模块702、捕获模块704、图像数据处理模块706、渲染模块708和内容记录模块710。AR内容记录系统700的各个模块被配置成(例如,经由总线、共享存储器或交换机)彼此通信。这些模块中的任何一个或更多个模块可以使用一个或更多个计算机处理器720来实现(例如,通过将这样的一个或更多个计算机处理器配置成执行针对该模块描述的功能),并且因此可以包括计算机处理器720中的一个或更多个计算机处理器720(例如,由眼戴设备150提供的一组处理器)。
所描述的模块中的任何一个或更多个模块可以单独使用硬件来实现(例如,机器(例如,机器1200)的计算机处理器720中的一个或更多个计算机处理器720)或者可以使用硬件和软件的组合来实现。例如,眼戴系统160的任何所描述的模块可以物理地包括被配置成执行本文针对该模块所描述的操作的计算机处理器720(例如,机器(例如,机器1200)的一个或更多个计算机处理器的子集或者在机器(例如,机器1200)的一个或更多个计算机处理器之中)的一个或更多个计算机处理器720的布置。作为另一示例,AR内容记录系统700的任何模块可以包括软件、硬件或软件和硬件两者,其将(例如,在机器(例如,机器1200)的一个或更多个计算机处理器之中的)一个或更多个计算机处理器720的布置配置成执行本文中针对该模块所描述的操作。因此,AR内容记录系统700的不同模块可以在不同时间点包括并且配置这样的计算机处理器720的不同布置或这样的计算机处理器720的单一布置。此外,眼戴系统160的任何两个或更多个模块可以被组合成单一模块,并且本文中针对单一模块所描述的功能可以在多个模块之间细分。此外,根据各种示例实施方式,本文中描述为在单一机器、数据库或设备中实现的模块可以跨多个机器、数据库或设备分布。
摄像装置模块702执行摄像装置相关操作,包括针对涉及眼戴设备150的一个或更多个摄像装置的操作的功能。在示例中,摄像装置模块702可以跨在眼戴设备150上执行的不同进程来访问摄像装置功能,从而确定用于面部或表面跟踪的表面,响应于来自这样的进程的针对摄像装置数据或图像数据(例如,帧)的各种请求(例如,涉及特定分辨率或格式的图像数据),将元数据提供到消耗所请求的摄像装置数据或图像数据的这样的进程。如本文中所提到的,“进程”或“计算进程”可以指由给定处理器的一个或更多个线程执行的计算机程序的实例。
如本文中所提到的,表面跟踪是指用于跟踪与输入帧中的平面(例如,给定的水平面、地板、桌子)相对应的表面的一个或更多个表示的操作。在示例中,表面跟踪是使用命中测试(hit testing)和/或射线投射(raycasting)技术来完成的。在示例中,命中测试确定输入帧中的选定点(例如,像素或像素的集合)是否与输入帧中的物理对象的表示的表面或平面相交。在示例中,射线投射利用基于笛卡尔的坐标系(例如,x和y坐标),并且将射线(例如,矢量)投射到如在输入帧中捕获的摄像装置的世界视图中,以检测射线相交的平面。
如进一步所示,摄像装置模块702接收输入帧(或替选地,实施方式中输入帧的副本)。摄像装置模块702可以包括基于要跟踪的对象类型的各种跟踪功能。在示例中,摄像装置模块702包括用于表面跟踪、面部跟踪、对象跟踪等的跟踪能力。在实现方式中,摄像装置模块702可以一次仅执行多个跟踪过程中的每一个跟踪过程中的一个,以有助于客户端设备102或眼戴设备150处的计算资源的管理。另外,摄像装置模块702可以对输入帧执行一个或更多个对象识别或检测操作。
如本文中所提及的,跟踪是指用于在后处理阶段期间确定给定对象(或其部分)的空间属性(例如,位置和/或取向)的操作。在实现方式中,在跟踪期间,以连续的方式测量对象的位置和取向。可以跟踪不同的对象,例如用户的头部、眼睛或肢体、表面或其他对象。跟踪涉及动态感测和测量以使得能够相对于与场景(例如,输入帧)相对应的三维空间中的物理对象来渲染虚拟对象和/或效果。因此,摄像装置模块702确定与输入帧中的一个或更多个物理对象的至少相对位置和取向相对应的度量,并且将这些度量包括在提供给渲染模块708的跟踪数据中。在示例中,摄像装置模块702从帧到后续帧更新(例如,随时间跟踪)这样的度量。
在实现方式中,摄像装置模块702提供与前述度量(例如,位置和取向)相对应的跟踪数据(例如,元数据)作为输出。在一些实例中,摄像装置模块702包括用于形状识别、边缘检测或任何其他合适的对象检测机制的逻辑。还可以由摄像装置模块702将感兴趣对象确定为预定对象类型的示例,从而将一定范围内的形状、边缘或界标与预定对象类型的集合中的对象类型进行匹配。
在实现方式中,摄像装置模块702可以利用将来自设备的运动传感器(例如,加速度计和陀螺仪传感器等)的信息与对输入帧中提供的场景的分析相结合的技术。例如,摄像装置模块702检测输入帧中的特征,并且因此,使用至少部分地基于来自设备的运动传感器的数据而得出的信息来跟踪这样的特征跨若干输入帧的各自位置的差异。
如本文中所提到的,面部跟踪是指用于跟踪输入帧中的面部特征(诸如,用户面部的部分)的表示的操作。在一些实施方式中,摄像装置模块702包括面部跟踪逻辑以识别一个或更多个图像内的面部的全部或一部分并且跨视频流的图像的集合来跟踪面部的界标(landmark)。如本文中所提到的,对象跟踪是指跟踪输入帧中的物理对象的表示。
在实施方式中,摄像装置模块702确定佩戴眼戴设备的用户的注视方向,并且基于所确定的注视方向促进AR内容的生成。这在下面的图8A、图8B和图9中更详细地讨论。
在实施方式中,摄像装置模块702充当捕获模块704与AR内容记录系统700的其他组件之间的中介。如上所述,摄像装置模块702可以从图像数据处理模块706接收对所捕获的图像数据的请求。摄像装置模块702还可以从内容记录模块710接收对所捕获的图像数据的请求。摄像装置模块702可以将这样的请求转发至捕获模块704以供处理。
捕获模块704(例如,响应于来自其他组件的前述请求)捕获由眼戴设备150的一个或更多个摄像装置捕获的图像(其还可以包括深度数据)。例如,图像是由眼戴设备150的光学传感器(例如,摄像装置)捕获的照片。图像包括一个或更多个真实世界特征,诸如在图像中检测到的用户的面部或真实世界对象。在一些实施方式中,图像包括对图像进行描述的元数据。每个被捕获的图像可以被包括在本文中提到的作为“帧”的数据结构中,其可以包括原始图像数据以及元数据和其他信息。在实施方式中,捕获模块704可以将捕获的图像数据和元数据作为(捕获的)帧发送至AR内容记录系统700的一个或更多个部件。捕获的帧的发送可以异步地发生,这可能导致同步问题,因为一个部件可能在另一部件接收和处理给定帧之前或之后不久接收和处理同一帧。在用于渲染AR效果和AR环境的应用中,这样的同步问题可能导致相对于用户的视点的感知滞后(例如,非响应性感知或故障),这降低和减损AR环境的沉浸式体验。如以下进一步讨论的,本主题技术的实施方式因此使得能够生成每个捕获的帧的时间信息(例如,时间戳)以促进操作的同步并且对呈现给眼戴设备150的观看用户的AR效果和AR环境的渲染进行改进。
图像数据处理模块706生成捕获的图像数据的跟踪数据和其他元数据,包括与用于生成应用于捕获的图像数据的AR内容和AR效果的操作相关联的元数据。图像数据处理模块706对接收到的图像数据执行操作。例如,由图像数据处理模块706执行各种图像处理操作。图像数据处理模块706基于与动画和/或向接收到的图像数据提供视觉和/或听觉效果相对应的算法或技术来执行各种操作。在实施方式中,给定的增强现实内容生成器可以利用图像数据处理模块706来执行操作,作为生成AR内容和AR效果的一部分,然后AR内容和AR效果被提供至渲染过程以渲染这样的AR内容和AR效果(例如,包括2D效果或3D效果)等。
渲染模块708基于由以上提及的模块中的至少之一提供的数据来执行AR内容的渲染以由眼戴系统160显示。在示例中,渲染模块708利用图形处理流水线来执行图形操作以渲染AR内容以供显示。在示例中,渲染模块708实现可扩展的渲染引擎,该可扩展的渲染引擎支持与各个增强现实内容生成器相对应的多个图像处理操作。在示例中,渲染模块708可以接收复合AR内容项以用于在由眼戴设备150提供的显示器上渲染。
在一些实现方式中,渲染模块708提供将来自三维(3D)世界(真实或虚构)的一个或多个二维(2D)对象渲染到2D显示屏上的图形系统。在一些实现方式中,这样的图形系统(例如,包括在眼戴设备150上的图形系统)包括图形处理单元(GPU),以用于执行图像处理操作和渲染图形元素以用于显示。
在实现方式中,GPU包括逻辑图形处理流水线,逻辑图形处理流水线可以接收2D或3D场景的表示并且提供表示2D图像的位图的输出以用于显示。现有的应用程序接口(API)已经实现了图形流水线模型。这样的API的示例包括开放图形库(OPENGL)API和METAL API。图形处理流水线包括将一组顶点、纹理、缓冲器和状态信息转换成屏幕上的图像帧的许多阶段。在实现方式中,图形处理流水线的阶段之一是着色器,着色器可以用作应用于输入帧(例如,图像或视频)的特定增强现实内容生成器的一部分。着色器可以被实现为在通常执行若干计算线程的专用处理单元(也称为着色器单元或着色器处理器)上运行的代码,所述代码被编程成针对正在被渲染的片段生成适当等级的颜色和/或特殊效果。例如,顶点着色器处理顶点的属性(定位、纹理坐标、颜色等),并且像素着色器处理像素的属性(纹理值、颜色、z深度和α值)。在一些实例中,像素着色器被称为片段着色器。
应当理解的是,可以提供其他类型的着色器处理。在示例中,在图形处理流水线内利用特定采样率来渲染整个帧,以及/或者以特定每像素率执行像素着色。以这种方式,给定电子设备(例如,眼戴设备150)操作图形处理流水线,以将与对象相对应的信息转换成可以由电子设备显示的位图。
内容记录模块710向摄像装置模块702发送请求以通过由眼戴设备150提供的一个或更多个摄像装置来发起对图像数据的记录。在实施方式中,摄像装置模块702充当AR内容记录系统中的其他部件之间的中介。例如,摄像装置模块可以从内容记录模块710接收用以发起记录的请求,并且将该请求转发至捕获模块704以用于处理。捕获模块704在从摄像装置模块702接收到请求之后就执行操作以发起由眼戴设备150提供的摄像装置进行的图像数据捕获。然后,可以将捕获的图像数据(包括来自捕获的图像数据的每一帧的时间戳信息)发送至内容记录模块710以用于处理。在示例中,内容记录模块710可以执行操作以处理捕获的图像数据以供渲染模块708进行渲染。
在实施方式中,AR内容记录系统700的部件可以使用进程间通信(IPC)协议进行通信。在实施方式中,AR内容记录系统700的部件可以通过由AR内容记录系统700提供的API进行通信。
在实施方式中,摄像装置模块702接收停止对(例如,从内容记录模块710发送的)图像数据的记录的信号或命令(或请求)。作为响应,摄像装置模块702向捕获模块704发送停止捕获图像数据的请求。响应于停止记录的请求,捕获模块704遵守请求并且停止使用眼戴设备150的一个或更多个摄像装置捕获图像数据的进一步操作。在接收到停止记录的信号或命令之后,摄像装置模块702还可以异步地向图像数据处理模块706发送关于图像数据的记录(例如,由捕获模块704对图像数据进行的捕获)已经(被请求)停止的信号。图像数据处理模块706在接收到信号之后执行操作以完成或结束图像处理操作,包括执行操作以生成与AR内容项目和AR效果相关的元数据。然后,这样的元数据可以发送至捕获模块704,捕获模块704然后生成包括元数据的复合AR内容项。复合AR内容项可以由渲染模块708接收并且被渲染以用于在由眼戴设备150提供的显示设备上显示。
图8A和图8B示出了根据本主题技术的实现方式的跟踪注视方向以执行增强现实操作的示例。以下讨论涉及眼戴设备150的部件,该眼戴设备150包括各种摄像装置以使得能够跟踪用户面部的眼睛的注视方向。
如图8A所示,眼戴设备150的至少一个摄像装置捕获并分析图像以确定用户801的眼睛在视场820内的相对位置。在实现方式中,眼戴设备150可以区分用户的瞳孔,并且可以利用瞳孔相对于眼睛位置的相对位置来确定注视方向。例如,在图8B中,眼戴设备150可以使用检测到的用户的瞳孔相对于用户的眼睛的位置,并且确定在眼戴设备150的显示器上的用户801正在视场820内观看的区域。另外,在实现方式中,眼戴设备150还可以检测诸如用户在特定时间段合上他或她的眼睛的移动,该移动可以由眼戴系统160用于发起一个或更多个操作。
在实施方式中,为了确定用户的注视方向,摄像装置模块702确定用户相对于眼戴设备150的相对位置,以及用户在该位置处的维度或其他方面,这包括确定用户的头部和用户的眼睛的相对位置。在示例中,摄像装置模块702可以区分用户的瞳孔,系统还可以利用瞳孔相对于眼睛位置的相对位置。在示例中,用户向左看(例如,向用户的右侧),摄像装置模块702确定每个用户的瞳孔的中心点在相应眼睛的中心点的左侧(例如,在图像数据中)。在用户正向“下”看的示例中,摄像装置模块702确定瞳孔的位置已经移动到眼睛的中心点以下。在用户正向“上”看的示例中,摄像装置模块702确定瞳孔的位置已经移动到眼睛的中心点以上。瞳孔的位置可以在用户没有移动他或她的头部的情况下改变,并且在示例中,摄像装置模块702可以因此在用户的头部位置不改变的情况下检测注视方向。眼戴系统160可以基于检测到的用户瞳孔相对于用户眼睛的位置来生成AR内容,并且眼戴系统160可以在用户当前观看的眼戴设备150的显示器上的确定区域中渲染AR内容。
图9示出了在使用眼戴设备150的同时基于所确定的用户的注视方向在用户的视场中生成的AR内容的示例。
如第一AR环境900中所示,视场910包括基于所确定的用户的注视方向的锚点915。识别与视场910中的地平面相对应的表面920。在实施方式中,确定表面920与锚点915之间的距离。基于该距离,生成并渲染AR内容925(例如,虚拟AR雪球)以由眼戴系统160显示。
如第二AR环境950中所示,视场960包括基于所确定的用户的注视方向的锚点915。至少部分地基于锚点915与所识别的表面920之间的确定的距离,在视场960中生成并渲染表示一组AR内容项(例如,虚拟AR雪球)的AR内容970。如进一步所示,AR内容975也已经被生成并渲染以由眼戴系统160显示,在该示例中,AR内容975将被动画化以落入AR内容970的顶部上的位置。
图10是示出根据某些示例实施方式的方法1000的流程图。方法1000可以用计算机可读指令来实施,所述计算机可读指令用于由一个或更多个计算机处理器执行,使得方法1000的操作可以由眼戴设备150(特别是关于上面在图7中描述的AR内容记录系统700的各个部件)部分地或整体地执行;因此,下面参考其通过示例的方式来描述方法1000。然而,应当理解的是,方法1000的操作中的至少一些可以被部署在各种其他硬件配置上,并且方法1000不旨在受限于AR内容记录系统700。
在操作1002处,摄像装置模块702确定使用眼戴设备(例如,眼戴设备150)的用户的视场中的注视方向。
在操作1004处,摄像装置模块702至少部分地基于所确定的注视方向在视场中生成锚点。
在操作1006处,摄像装置模块702识别与视场中的地平面对应的表面。
在操作1008处,摄像装置模块702确定从所识别的表面到锚点的距离。
在操作1010处,图像数据处理模块706至少部分地基于所确定的距离来生成AR内容。
在操作1012处,渲染模块708在视场中渲染所生成的AR内容以由眼戴设备(例如,眼戴设备150)显示。
在实施方式中,摄像装置模块702生成锚点,这包括至少部分地基于注视方向执行射线投射操作,以选择视场中的点,该点对应于锚点。
在实施方式中,射线投射操作包括:确定用户的瞳孔或虹膜的位置;从瞳孔或虹膜的位置沿朝向视场的方向投射射线,该视场包括像素集合;从视场中确定与射线相交的至少一个像素;以及选择该至少一个像素作为锚点。
摄像装置模块702基于使用眼戴设备的用户的瞳孔或虹膜的相对位置和头部取向来确定注视方向。
在实施方式中,摄像装置模块702基于表面检测处理来识别与地平面对应的表面。
在实施方式中,表面检测处理包括基于视场生成点云,点云包括特征点的集合,每个特征点包括在三维空间中的相应的x、y和z坐标的集合,并且对点云执行命中测试以确定视场中的第一表面平面,该命中测试确定点云中的中间特征点以下的第一表面平面对应的至少一个特征点的交集。
在实施方式中,摄像装置模块702执行命中测试,该命中测试包括生成三维线,该三维线包括与用户的瞳孔或虹膜的位置相对应的起始位置,并且从注视方向延伸至与视场中的第一表面平面对应的一个特征点。
在实施方式中,摄像装置模块702确定从所识别的表面到锚点的距离,该确定包括生成在所识别的表面内的第二锚点,确定第二锚点与视场中的锚点之间的第一距离,第二锚点在相对于锚点以下的位置处,以及沿着第二锚点与锚点之间的第一距离选择特定位置。
在实施方式中,图像数据处理模块706在视场中渲染所生成的增强现实内容以用于由眼戴设备显示,这包括生成第一三维对象,在特定位置处渲染第一三维对象,生成第二三维对象,以及在第一三维对象之上或之下的第二位置处渲染第二三维对象。
在实施方式中,第一三维对象是与第二三维对象的不同类型的对象,或者第一三维对象是与第二三维对象的相同类型的对象。
图11是示出示例软件架构1106的框图,该示例软件架构1106可以与本文中描述的各种硬件架构结合使用。图11是软件架构的非限制性示例,应当理解的是,可以实现许多其他架构以促进本文中描述的功能。软件架构1106可以在诸如图12的机器1200的硬件上执行,机器1200包括处理器1204、存储器1214和(输入/输出)I/O部件1218等。示出了代表性硬件层1152并且该代表性硬件层1152可以表示例如图12的机器1200。代表性硬件层1152包括具有相关联的可执行指令1104的处理单元1154。可执行指令1104表示软件架构1106的可执行指令,包括本文中描述的方法、组件等的实现方式。硬件层1152还包括也具有可执行指令1104的存储器和/或存储模块存储器/存储装置1156。硬件层1152还可以包括其他硬件1158。
在图11的示例架构中,软件架构1106可以被概念化为层的堆叠,在所述层的堆叠中,每个层提供特定功能。例如,软件架构1106可以包括诸如操作系统1102、库1120、框架/中间件1118、应用1116和表示层1114的层。在操作上,这些层内的应用1116和/或其他组件可以通过软件堆栈调用API调用1108,并且接收如在消息1112中的对API调用1108的响应。所示出的层在本质上是代表性的,并且不是所有软件架构都具有所有层。例如,一些移动操作系统或专用操作系统可能不提供框架/中间件1118,而其他操作系统可能提供这样的层。其他软件架构可以包括另外的层或不同的层。
操作系统1102可以管理硬件资源并且提供公共服务。操作系统1102可以包括例如核1122、服务1124和驱动器1126。核1122可以用作硬件与其他软件层之间的抽象层。例如,核1122可以负责存储器管理、处理器管理(例如,调度)、组件管理、联网、安全设置等。服务1124可以为其他软件层提供其他公共服务。驱动器1126负责控制底层硬件或与底层硬件对接。例如,根据硬件配置,驱动器1126包括显示器驱动器、摄像装置驱动器、驱动器、闪速存储器驱动器、串行通信驱动器(例如,通用串行总线(USB)驱动器)、/>驱动器、音频驱动器、电源管理驱动器等。
库1120提供由应用1116和/或其他组件和/或层使用的公共基础设施。库1120提供如下功能,该功能允许其他软件组件以比与底层操作系统1102的功能(例如,核1122、服务1124和/或驱动器1126)直接对接的方式更容易的方式来执行任务。库1120可以包括系统库1144(例如,C标准库),系统库1144可以提供函数,诸如存储器分配函数、字符串操纵函数、数学函数等。另外,库1120可以包括API库1146,诸如媒体库(例如,支持诸如MPREG4、H.264、MP3、AAC、AMR、JPG、PNG的各种媒体格式的呈现和操纵的库)、图形库(例如,可以用于在显示器上以图形内容渲染2D和3D的OpenGL框架)、数据库库(例如,可以提供各种关系数据库功能的SQLite)、网络库(例如,可以提供网络浏览功能的WebKit)等。库1120还可以包括各种其他库1148,以向应用1116和其他软件组件/模块提供许多其他API。
框架/中间件1118(有时也被称为中间件)提供可以由应用1116和/或其他软件组件/模块使用的较高级别的公共基础设施。例如,框架/中间件1118可以提供各种图形用户界面(GUI)功能、高级资源管理、高级位置服务等。框架/中间件1118可以提供可以由应用1116和/或其他软件组件/模块使用的广泛的其他API,其中一些可以专用于特定操作系统1102或平台。
应用1116包括内置应用1138和/或第三方应用1140。代表性内置应用1138的示例可以包括但不限于:联系人应用、浏览器应用、图书阅读器应用、位置应用、媒体应用、消息收发应用和/或游戏应用。第三方应用1140可以包括由除了特定平台的供应商之外的实体使用ANDROIDTM或IOSTM软件开发工具包(SDK)开发的应用,并且可以是在诸如IOSTM、ANDROIDTM电话的移动操作系统或其他移动操作系统上运行的移动软件。第三方应用1140可以调用由移动操作系统(诸如,操作系统1102)提供的API调用1108,以促进本文中描述的功能。
应用1116可以使用内置操作系统功能(例如,核1122、服务1124和/或驱动器1126)、库1120和框架/中间件1118来创建用户接口以与系统的用户进行交互。可替选地或另外地,在一些系统中,可以通过表示层诸如表示层1114来进行与用户的交互。在这些系统中,应用/组件‘逻辑’可以与应用/组件的与用户交互的方面分开。
图12是示出根据一些示例实施方式的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的方法中的任何一种或更多种方法的机器1200的部件的框图。具体地,图12示出了呈计算机系统的示例形式的机器1200的图解表示,在该机器1200内可以执行用于使机器1200执行本文讨论的方法中的任何一种或更多种方法的指令1210(例如,软件、程序、应用、小程序、app或其他可执行代码)。因此,指令1210可以被用来实现本文中描述的模块或组件。指令1210将通用的未编程的机器1200转换成被编程成以所描述的方式执行所描述和所示出的功能的特定机器1200。在替选实施方式中,机器1200作为独立装置进行操作或者可以耦接(例如,联网)至其他机器。在联网的部署中,机器1200可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器1200可以包括但不限于:服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web装置、网络路由器、网络交换机、网络桥接器、或者能够顺序地或以其他方式执行指定要由机器1200采取的动作的指令1210的任何机器。此外,虽然仅示出了单个机器1200,但是术语“机器”还应该被视为包括单独或联合执行指令1210以执行本文中讨论的方法中的任何一个或更多个方法的机器的集合。
机器1200可以包括处理器1204(包括处理器1208至处理器1212)、存储器/存储装置1206和I/O部件1218,它们可以被配置成诸如经由总线1202彼此进行通信。存储器/存储装置1206可以包括存储器1214诸如主存储器或其他存储器存储装置以及存储单元1216,处理器1204诸如可经由总线1202访问存储器1214和存储单元1216两者。存储单元1216和存储器1214存储体现本文中描述的方法或功能中的任何一个或更多个方法或功能的指令1210。指令1210还可以在其被机器1200执行期间完全地或部分地驻留在存储器1214内、存储单元1216内、处理器1204中的至少一个内(例如,处理器的高速缓冲存储器内)或者它们的任何合适的组合内。因此,存储器1214、存储单元1216以及处理器1204的存储器是机器可读介质的示例。
I/O部件1218可以包括接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量结果等的各种各样的部件。包括在特定机器1200中的具体I/O部件1218将取决于机器的类型。例如,诸如移动电话的便携式机器将很可能包括触摸输入装置或其他这样的输入机构,而无头服务器机器将很可能不包括这样的触摸输入装置。将理解的是,I/O部件1218可以包括图11中未示出的许多其他部件。仅仅为了简化下面的讨论,I/O部件1218根据功能被分组,并且分组决不是限制性的。在各种示例实施方式中,I/O部件1218可以包括输出部件1226和输入部件1228。输出部件1226可以包括视觉部件(例如,诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、听觉部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号生成器等。输入部件1228可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他定点仪器)、触感输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触感输入部件)、音频输入部件(例如,麦克风)等。
在其他示例实施方式中,I/O部件1218可以包括生物特征识别部件1230、运动部件1234、环境部件1236或定位部件1238以及各种其他部件。例如,生物特征识别部件1230可以包括用于检测表达(例如,手表达、面部表情、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1234可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件1236可以包括例如照明传感器部件(例如,光度计)、温度传感器部件(例如,检测周围温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、听觉传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近传感器部件(例如,检测附近物体的红外传感器)、气体传感器(例如,出于安全考虑而检测危险气体的浓度或者测量大气中的污染物的气体检测传感器)或者可以提供与周围物理环境相对应的指示、测量或信号的其他部件。定位部件1238可以包括位置传感器部件(例如,GPS接收器部件)、海拔高度传感器部件(例如,检测可以从其得出海拔高度的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。
可以使用各种各样的技术来实现通信。I/O部件1218可以包括通信部件1240,该通信部件1240能够操作成分别经由耦接1224和耦接1222将机器1200耦接至网络1232或设备1220。例如,通信部件1240可以包括网络接口部件或其他合适的设备以与网络1232对接。在其他示例中,通信部件1240可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC)部件、部件(例如,/>)、/>部件、以及经由其他模态提供通信的其他通信部件。设备1220可以是另一机器或各种外围设备中的任何外围设备(例如,经由USB耦接的外围设备)。
此外,通信部件1240可以检测标识符或包括可操作成检测标识符的部件。例如,通信部件1240可以包括射频识别(RFID)标签读取器部件、NFC智能标签检测部件、光学读取器部件(例如,用于检测下述项的光学传感器:一维条形码诸如通用产品代码(UPC)条形码;多维条形码,诸如快速响应(QR)代码、Aztec代码、数据矩阵、数据图示符(Dataglyph)、麦克斯码(MaxiCode)、PDF417、超代码、UCC RSS-2D条形码和其他光学代码)、或者声学检测部件(例如,用于标识标记的音频信号的麦克风)。另外,可以经由通信部件1240得到各种信息,诸如,经由因特网协议(IP)地理位置得到位置、经由信号三角测量得到位置、经由检测可以指示特定位置的NFC信标信号得到位置等。
以下讨论涉及贯穿本主题公开内容提及的各种术语或短语。
“信号介质”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进软件或数据的通信。术语“信号介质”应当被视为包括任何形式的经调制的数据信号、载波等。术语“经调制的数据信号”意指使其特性中的一个或更多个特性以对信号中的信息进行编码的这样的方式来设置或改变的信号。术语“传输介质”和“信号介质”意指相同的事物,并且可以在本公开内容中互换使用。
“通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、另一类型的网络、或者两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何数据传输技术,诸如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、GSM演进的增强数据速率(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、第四代无线(4G)网络、通用移动通信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他数据传输技术、其他长距离协议或其他数据传输技术。
“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器码”等)操纵数据值并且产生被应用以操作机器的对应输出信号的任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路)。例如,处理器可以是中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)或它们的任何组合。处理器还可以是具有可以同时执行指令的两个或更多个独立处理器(有时被称为“核”)的多核处理器。
“机器存储介质”指的是存储可执行指令、例程和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓冲存储器和服务器)。因此,上述术语应被视为包括但不限于固态存储器以及光学和磁性介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例以示例的方式包括:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、FPGA和闪速存储器设备;磁盘,诸如内部硬盘和可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。术语“机器存储介质”、“设备存储介质”、“计算机存储介质”意指相同的事物,并且在本公开内容中可以互换使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确地排除了载波、经调制的数据信号和其他这样的介质,载波、经调制的数据信号和其他这样的介质中的至少一些被涵盖在术语“信号介质”中。
“组件”是指具有以下边界的设备、物理实体或逻辑,所述边界由函数或子例程调用、分支点、API或提供用于对特定处理或控制功能进行划分或模块化的其他技术来定义。组件可以经由它们的接口与其他组件组合以执行机器处理。组件可以是被设计用于与其他组件一起使用的经封装的功能硬件单元并且可以是通常执行相关功能中的特定功能的程序的一部分。组件可以构成软件组件(例如,体现在机器可读介质上的代码)或硬件组件。“硬件组件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或更多个硬件组件(例如,处理器或处理器组)可以通过软件(例如,应用或应用部分)被配置为操作成执行如本文中描述的某些操作的硬件组件。也可以机械地、电子地或其任何合适的组合来实现硬件组件。例如,硬件组件可以包括被永久地配置成执行某些操作的专用电路或逻辑。硬件组件可以是专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件组件还可以包括通过软件被短暂配置成执行某些操作的可编程逻辑或电路。例如,硬件组件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件被配置,硬件组件就成为被唯一地定制成执行配置的功能的特定机器(或机器的特定组件),并且不再是通用处理器。将理解的是,可以出于成本和时间考虑来推动在专用且永久配置的电路中或在短暂配置(例如,通过软件配置)的电路中机械地实现硬件组件的决策。因此,短语“硬件组件”(或者“硬件实现的组件”)应当被理解成包含有形实体,即作为被物理构造、永久配置(例如,硬连线)或短暂配置(例如,编程)成以某种方式进行操作或者执行本文中描述的某些操作的实体。考虑硬件组件被短暂配置(例如,被编程)的实施方式,无需在任一时刻对硬件组件中的每个硬件组件进行配置或实例化。例如,在硬件组件包括通过软件被配置成专用处理器的通用处理器的情况下,该通用处理器可以在不同时间处分别被配置为不同的专用处理器(例如,包括不同的硬件组件)。软件相应地配置一个特定处理器或多个特定处理器,以例如在一个时刻处构成特定硬件组件并且在不同的时刻处构成不同的硬件组件。硬件组件可以向其他硬件组件提供信息并且从其他硬件组件接收信息。相应地,所描述的硬件组件可以被认为是通信上耦接的。在同时存在多个硬件组件的情况下,可以通过在两个或更多个硬件组件之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中多个硬件组件在不同时间处被配置或被实例化的实施方式中,可以例如通过将信息存储在多个硬件组件可以访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件组件之间的通信。例如,一个硬件组件可以执行操作,并且将该操作的输出存储在通信上耦接的存储器设备中。然后,另外的硬件组件可以在随后的时间处访问存储器设备,以检索和处理所存储的输出。硬件组件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的收集)。本文中描述的示例方法的各种操作可以至少部分地由暂时被配置(例如,由软件)或永久地被配置成执行相关操作的一个或更多个处理器来执行。无论是短暂配置还是永久配置,这样的处理器可以构成进行操作以执行本文中描述的一个或更多个操作或功能的处理器实现的组件。如本文中使用的,“处理器实现的组件”是指使用一个或更多个处理器实现的硬件组件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中,特定的一个或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器或处理器实现的组件来执行。此外,一个或更多个处理器还可以进行操作以支持“云计算”环境中的相关操作的执行或者操作为“软件即服务”(SaaS)。例如,操作中的至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,其中,这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,API)被访问。某些操作的执行可以分布在处理器之间,不仅驻留在单个机器内,而且跨多个机器被部署。在一些示例实施方式中,处理器或处理器实现的组件可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的组件可以跨多个地理位置分布。
“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这样的指令的通信。可以使用传输介质经由网络接口设备来通过网络发送或接收指令。
“计算机可读介质”是指机器存储介质和传输介质两者。因此,这些术语包括存储设备/介质和载波/经调制的数据信号两者。术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意指相同的事物,并且可以在本公开内容中可互换地使用。
“客户端设备”是指与通信网络对接以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。在本公开内容中,客户端设备也被称为“电子设备”。
“短暂消息”是指在时间有限的持续时间内可访问的消息。短暂消息可以是文本、图像、视频等。针对短暂消息的访问时间可以由消息发送者设置。可替选地,访问时间可以是默认设置或者由接收者指定的设置。无论设置技术如何,该消息都是暂时的。
“信号介质”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进软件或数据的通信。术语“信号介质”应当被视为包括任何形式的经调制的数据信号、载波等。术语“经调制的数据信号”意指使其特性中的一个或更多个特性以对信号中的信息进行编码的这样的方式来设置或改变的信号。术语“传输介质”和“信号介质”意指相同的事物,并且可以在本公开内容中互换使用。
“通信网络”是指网络的一个或更多个部分,该网络可以是自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、因特网、因特网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、其他类型的网络、或者两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何数据传输技术,诸如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、GSM演进的增强数据速率(EDGE)技术、包括3G的第三代合作伙伴计划(3GPP)、第四代无线(4G)网络、通用移动通信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准、由各种标准设置组织定义的其他数据传输技术、其他长距离协议或其他数据传输技术。/>
“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器码”等)操纵数据值并且产生被应用以操作机器的对应输出信号的任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路)。例如,处理器可以是中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)或它们的任何组合。处理器还可以是具有可以同时执行指令的两个或更多个独立处理器(有时被称为“核”)的多核处理器。
“机器存储介质”指的是存储可执行指令、例程和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓冲存储器和服务器)。因此,上述术语应被视为包括但不限于固态存储器以及光学和磁性介质,包括处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例以示例的方式包括:非易失性存储器,包括例如半导体存储器设备,例如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、FPGA和闪速存储器设备;磁盘,诸如内部硬盘和可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。术语“机器存储介质”、“设备存储介质”、“计算机存储介质”意指相同的事物,并且在本公开内容中可以互换使用。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”明确地排除了载波、经调制的数据信号和其他这样的介质,载波、经调制的数据信号和其他这样的介质中的至少一些被涵盖在术语“信号介质”中。
“组件”是指具有以下边界的设备、物理实体或逻辑,所述边界由函数或子例程调用、分支点、API或提供用于对特定处理或控制功能进行划分或模块化的其他技术来定义。组件可以经由它们的接口与其他组件组合以执行机器处理。组件可以是被设计用于与其他组件一起使用的经封装的功能硬件单元并且可以是通常执行相关功能中的特定功能的程序的一部分。组件可以构成软件组件(例如,体现在机器可读介质上的代码)或硬件组件。“硬件组件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或更多个硬件组件(例如,处理器或处理器组)可以通过软件(例如,应用或应用部分)被配置为进行操作以执行如本文中描述的某些操作的硬件组件。也可以机械地、电子地或其任何合适的组合来实现硬件组件。例如,硬件组件可以包括被永久地配置成执行某些操作的专用电路或逻辑。硬件组件可以是专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件组件还可以包括通过软件被短暂配置成执行某些操作的可编程逻辑或电路。例如,硬件组件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件被配置,则硬件组件成为被唯一地定制成执行配置的功能的特定机器(或机器的特定组件),并且不再是通用处理器。将理解的是,可以出于成本和时间考虑来推动在专用且永久配置的电路中或在短暂配置(例如,通过软件配置)的电路中机械地实现硬件组件的决策。因此,短语“硬件组件”(或者“硬件实现的组件”)应当被理解成包含有形实体,即作为被物理构造、永久配置(例如,硬连线)或短暂配置(例如,被编程)成以某种方式进行操作或者执行本文中描述的某些操作的实体。考虑硬件组件被短暂配置(例如,被编程)的实施方式,无需在任一时刻对硬件组件中的每个硬件组件进行配置或实例化。例如,在硬件组件包括通过软件被配置成变为专用处理器的通用处理器的情况下,该通用处理器可以在不同时间处分别被配置为不同的专用处理器(例如,包括不同的硬件组件)。软件相应地配置一个特定处理器或多个特定处理器,以例如在一个时刻处构成特定硬件组件并且在不同时刻处构成不同的硬件组件。硬件组件可以向其他硬件组件提供信息并且从其他硬件组件接收信息。相应地,所描述的硬件组件可以被认为是通信上耦接的。在同时存在多个硬件组件的情况下,可以通过在两个或更多个硬件组件之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中多个硬件组件在不同时间处被配置或被实例化的实施方式中,可以例如通过将信息存储在多个硬件组件可以访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件组件之间的通信。例如,一个硬件组件可以执行操作,并且将该操作的输出存储在通信上耦接的存储器设备中。然后,另外的硬件组件可以在随后的时间处访问存储器设备,以检索和处理所存储的输出。硬件组件还可以发起与输入设备或输出设备的通信,并且可以对资源进行操作(例如,信息的收集)。本文中描述的示例方法的各种操作可以至少部分地由被短暂地配置(例如,由软件)或被永久地配置成执行相关操作的一个或更多个处理器来执行。无论是短暂配置还是永久配置,这样的处理器可以构成进行操作以执行本文中描述的一个或更多个操作或功能的处理器实现的组件。如本文中使用的,“处理器实现的组件”是指使用一个或更多个处理器实现的硬件组件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中,特定的一个或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器或处理器实现的组件来执行。此外,一个或更多个处理器还可以进行操作以支持“云计算”环境中的相关操作的执行或者操作为“软件即服务”(SaaS)。例如,操作中的至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,其中,这些操作能够经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,API)被访问。某些操作的执行可以分布在处理器之间,不仅驻留在单个机器内,而且跨多个机器被部署。在一些示例实施方式中,处理器或处理器实现的组件可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的组件可以跨多个地理位置分布。
“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这样的指令的通信。可以使用传输介质经由网络接口设备来通过网络发送或接收指令。
“计算机可读介质”是指机器存储介质和传输介质两者。因此,这些术语包括存储设备/介质和载波/经调制的数据信号两者。术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意指相同的事物,并且可以在本公开内容中可互换地使用。
“客户端设备”是指与通信网络对接以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、便携式数字助理(PDA)、智能电话、平板计算机、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。
“短暂消息”是指在时间有限的持续时间内可访问的消息。短暂消息可以是文本、图像、视频等。针对短暂消息的访问时间可以由消息发送者设置。可替选地,访问时间可以是默认设置或者由接收者指定的设置。无论设置技术如何,该消息都是暂时的。

Claims (20)

1.一种方法,包括:
确定使用眼戴设备的用户的视场中的注视方向;
至少部分地基于所确定的所述注视方向来生成所述视场中的锚点;
识别与所述视场中的地平面对应的表面;
确定从所识别的表面到所述锚点的距离;
至少部分地基于所确定的距离来生成增强现实内容;以及
在所述视场中渲染所生成的增强现实内容以由所述眼戴设备显示。
2.根据权利要求1所述的方法,其中,生成所述锚点包括:
至少部分地基于所述注视方向执行射线投射操作,以选择所述视场中的点,所述点对应于所述锚点。
3.根据权利要求2所述的方法,其中,所述射线投射操作包括:
确定所述用户的瞳孔或虹膜的位置;
从所述瞳孔或虹膜的位置沿朝向所述视场的方向投射射线,所述视场包括像素集合;
从所述视场确定与所述射线相交的至少一个像素;以及
选择所述至少一个像素作为所述锚点。
4.根据权利要求1所述的方法,其中,确定所述注视方向是基于使用所述眼戴设备的所述用户的瞳孔或虹膜的相对位置和头部取向。
5.根据权利要求1所述的方法,其中,识别与所述地平面对应的所述表面是基于表面检测处理。
6.根据权利要求5所述的方法,其中,所述表面检测处理包括:
基于所述视场生成点云,所述点云包括特征点的集合,每个特征点包括三维空间中的相应x、y和z坐标的集合;以及
对所述点云执行命中测试,以确定所述视场中的第一表面平面,所述命中测试确定所述点云中的中间特征点以下的所述第一表面平面对应的至少一个特征点的交集。
7.根据权利要求6所述的方法,其中,执行命中测试包括:
生成三维线,所述三维线包括与所述用户的瞳孔或虹膜的位置对应的起始位置,并且从所述注视方向延伸至与所述视场中的第一表面平面对应的所述一个特征点。
8.根据权利要求1所述的方法,其中,确定从所识别的表面到所述锚点的距离包括:
在所识别的表面内生成第二锚点;
确定所述视场中的锚点与所述第二锚点之间的第一距离,所述第二锚点在相对于所述锚点的以下的位置处;以及
沿着所述第二锚点与所述锚点之间的所述第一距离选择特定位置。
9.根据权利要求8所述的方法,其中,在所述视场中渲染所生成的增强现实内容以由所述眼戴设备显示包括:
生成第一三维对象;
在所述特定位置处渲染所述第一三维对象;
生成第二三维对象;以及
在所述第一三维对象之上或之下的第二位置处渲染所述第二三维对象。
10.根据权利要求9所述的方法,其中,所述第一三维对象是与所述第二三维对象不同类型的对象,或者所述第一三维对象是与所述第二三维对象相同类型的对象。
11.一种系统,包括:
处理器;以及
存储器,所述存储器包括指令,所述指令在由所述处理器执行时使所述处理器执行操作,所述操作包括:
确定使用眼戴设备的用户的视场中的注视方向;
至少部分地基于所确定的注视方向来生成所述视场中的锚点;
识别与所述视场中的地平面对应的表面;
确定从所识别的表面到所述锚点的距离;
至少部分地基于所确定的距离来生成增强现实内容;以及
在所述视场中渲染所生成的增强现实内容以由所述眼戴设备显示。
12.根据权利要求11所述的系统,其中,生成所述锚点包括:
至少部分地基于所述注视方向执行射线投射操作,以选择所述视场中的点,所述点对应于所述锚点。
13.根据权利要求12所述的系统,其中,所述射线投射操作包括:
确定用户的瞳孔或虹膜的位置;
从所述瞳孔或虹膜的位置沿朝向所述视场的方向投射射线,所述视场包括像素集合;
从所述视场中确定与所述射线相交的至少一个像素;以及
选择所述至少一个像素作为所述锚点。
14.根据权利要求11所述的系统,其中,确定所述注视方向是基于使用所述眼戴设备的用户的瞳孔或虹膜的相对位置和头部取向。
15.根据权利要求11所述的系统,其中,识别与所述地平面对应的所述表面是基于表面检测处理。
16.根据权利要求15所述的系统,其中,所述表面检测处理包括:
基于所述视场生成点云,所述点云包括特征点的集合,每个特征点包括三维空间中的相应x、y和z坐标的集合;以及
对所述点云执行命中测试,以确定所述视场中的第一表面平面,所述命中测试确定所述点云中的中间特征点以下的所述第一表面平面对应的至少一个特征点的交集。
17.根据权利要求16所述的系统,其中,执行命中测试包括:
生成三维线,所述三维线包括与所述用户的瞳孔或虹膜的位置对应的起始位置,并且从所述注视方向延伸至与所述视场中的第一表面平面对应的所述一个特征点。
18.根据权利要求11所述的系统,其中,确定从所识别的表面到所述锚点的距离包括:
在所识别的表面内生成第二锚点;
确定所述视场中的锚点与所述第二锚点之间的第一距离,所述第二锚点在相对于所述锚点的以下的位置处;以及
沿着所述第二锚点与所述锚点之间的所述第一距离选择特定位置。
19.根据权利要求18所述的系统,其中,在所述视场中渲染所生成的增强现实内容以由所述眼戴设备显示包括:
生成第一三维对象;
在所述特定位置处渲染所述第一三维对象;
生成第二三维对象;以及
在所述第一三维对象之上或之下的第二位置处渲染所述第二三维对象。
20.一种包括指令的非暂态计算机可读介质,所述指令在由计算设备执行时使所述计算设备执行操作,所述操作包括:
确定使用眼戴设备的用户的视场中的注视方向;
至少部分地基于所确定的注视方向来生成所述视场中的锚点;
识别与所述视场中的地平面对应的表面;
确定从所识别的表面到所述锚点的距离;
至少部分地基于所确定的距离来生成增强现实内容;以及
在所述视场中渲染所生成的增强现实内容以由所述眼戴设备显示。
CN202180088786.5A 2020-12-31 2021-12-28 确定注视方向以生成增强现实内容 Pending CN116685935A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063133143P 2020-12-31 2020-12-31
US63/133,143 2020-12-31
PCT/US2021/065369 WO2022147031A1 (en) 2020-12-31 2021-12-28 Determining gaze direction to generate augmented reality content

Publications (1)

Publication Number Publication Date
CN116685935A true CN116685935A (zh) 2023-09-01

Family

ID=80050857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180088786.5A Pending CN116685935A (zh) 2020-12-31 2021-12-28 确定注视方向以生成增强现实内容

Country Status (5)

Country Link
US (3) US11630511B2 (zh)
EP (1) EP4272058A1 (zh)
KR (1) KR20230121919A (zh)
CN (1) CN116685935A (zh)
WO (1) WO2022147031A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934575B2 (en) 2020-12-31 2024-03-19 Snap Inc. Determining gaze direction to generate augmented reality content

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9652896B1 (en) 2015-10-30 2017-05-16 Snap Inc. Image based tracking in augmented reality systems
US10956743B1 (en) 2020-03-27 2021-03-23 Snap Inc. Shared augmented reality system
US11430091B2 (en) 2020-03-27 2022-08-30 Snap Inc. Location mapping for large scale augmented-reality
EP4272180A1 (en) 2020-12-31 2023-11-08 Snap Inc. Post-capture editing of augmented reality content
KR20230127311A (ko) * 2020-12-31 2023-08-31 스냅 인코포레이티드 안경류 디바이스 상에서의 증강 현실 콘텐츠의 기록

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9245388B2 (en) 2013-05-13 2016-01-26 Microsoft Technology Licensing, Llc Interactions of virtual objects with surfaces
JP2019028603A (ja) 2017-07-27 2019-02-21 ソニー株式会社 情報処理装置、情報処理方法、及びプログラム
IL255671B (en) * 2017-11-14 2021-09-30 Everysight Ltd System and method for determining an image position using one or more anchors
US10902628B1 (en) * 2018-06-22 2021-01-26 Mirametrix Inc. Method for estimating user eye orientation using a system-independent learned mapping
US11630511B2 (en) 2020-12-31 2023-04-18 Snap Inc. Determining gaze direction to generate augmented reality content

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934575B2 (en) 2020-12-31 2024-03-19 Snap Inc. Determining gaze direction to generate augmented reality content

Also Published As

Publication number Publication date
US20230214013A1 (en) 2023-07-06
US20220206572A1 (en) 2022-06-30
US20240176417A1 (en) 2024-05-30
EP4272058A1 (en) 2023-11-08
US11934575B2 (en) 2024-03-19
US11630511B2 (en) 2023-04-18
KR20230121919A (ko) 2023-08-21
WO2022147031A1 (en) 2022-07-07

Similar Documents

Publication Publication Date Title
US11934575B2 (en) Determining gaze direction to generate augmented reality content
US11538225B2 (en) Augmented reality content generator for suggesting activities at a destination geolocation
US20220101606A1 (en) Augmented reality content generators for spatially browsing travel destinations
US20220207840A1 (en) Recording augmented reality content on an eyewear device
US11816926B2 (en) Interactive augmented reality content including facial synthesis
US11900504B2 (en) Augmented reality experiences for physical products in a messaging system
US20220207869A1 (en) Detection and obfuscation of display screens in augmented reality content
US20220207804A1 (en) Automated content curation for generating composite augmented reality content
US11875600B2 (en) Facial synthesis in augmented reality content for online communities
KR20230162987A (ko) 서드 파티 애플리케이션들을 위한 증강 현실 콘텐츠에서의 얼굴 합성
US20240144616A1 (en) Post-capture editing of augmented reality content
EP4315255A1 (en) Facial synthesis in augmented reality content for advertisements
WO2022147404A1 (en) Automated content curation for generating composite augmented reality content
KR20230162971A (ko) 오버레이된 증강 현실 콘텐츠에서의 얼굴 합성

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