身体动画共享和再混合的制作方法

未命名 08-03 阅读:61 评论:0

身体动画共享和再混合
1.优先权要求
2.本技术要求于2020年11月18日提交的序列号为16/951,921的美国专利申请的优先权的权益,该美国专利申请的全部内容通过引用并入本文中。
技术领域
3.本公开内容总体上涉及视觉呈现,并且更特别地涉及在真实世界环境中渲染虚拟对象。


背景技术:

4.虚拟渲染系统可以用于创建引人入胜且有趣的增强现实体验,其中三维虚拟对象图形内容似乎存在于真实世界中。由于环境条件、用户动作、摄像装置与正在被显现的对象之间的意外视觉中断等,这样的系统可能会遇到呈现问题。这会导致虚拟对象消失或者以其他方式表现异常,从而打破虚拟对象存在于真实世界中的错觉。
附图说明
5.在不一定按比例绘制的附图中,相似的附图标记可以在不同的视图中描述类似的部件。为了容易地识别对任何特定元件或动作的讨论,附图标记中的一个或多个最高位数字指代该元件被首次引入时所在的图号。在附图的图中以示例而不是限制的方式示出了一些实施方式,在附图中:
6.图1是根据一些示例的可以在其中部署本公开内容的联网环境的图解表示。
7.图2是根据一些示例的具有客户端侧功能和服务器侧功能两者的消息系统的图解表示。
8.图3是根据一些示例的在数据库中维护的数据结构的图解表示。
9.图4是根据一些示例的消息的图解表示。
10.图5是示出根据示例实施方式的示例访问限制过程的示意图,根据该访问限制过程,对内容(例如,短暂消息和相关联的数据的多媒体净荷)或内容集合(例如,短暂消息故事)的访问可以是时间受限的(例如,使得是短暂的)。
11.图6是示出根据示例实施方式的增强系统的各种部件的框图。
12.图7和图8是示出根据示例实施方式的在执行用于基于移动捕获渲染虚拟对象的过程时的增强系统的示例操作的流程图。
13.图9至图11是描绘根据示例实施方式的由增强系统在三维空间内渲染的对象的图。
14.图12是示出根据示例实施方式的可以结合本文中描述的各种硬件架构使用的代表性软件架构的框图。
15.图13是示出根据示例实施方式的能够从机器可读介质(例如,机器可读存储介质)读取指令并且执行本文中讨论的方法中的任何一种或更多种方法的机器的部件的框图。
具体实施方式
16.以下描述包括实施本公开内容的说明性实施方式的系统、方法、技术、指令序列及计算机器程序产品。在下面的描述中,出于说明的目的,阐述了许多具体细节以提供对各种实施方式的理解。然而,对于本领域技术人员将明显的是,可以在没有这些具体细节的情况下实践实施方式。一般地,不一定详细地示出公知的指令实例、协议、结构和技术。
17.除其他事项外,本公开内容的实施方式通过渲染增强现实项和效果来改进电子消息和成像软件和系统的功能,就像增强现实对象存在于包含视频中有特征的真实世界对象的真实世界场景中一样。增强现实项的一些示例包括二维虚拟对象或三维(3d)虚拟对象,例如,3d题注、表情符号、角色、化身、动画、个性化化身或角色的循环动画、诸如跳舞的热狗的循环或非循环动画图形、具有动画和粒子效果的风格化词、多个虚拟对象等。在一些实施方式中,一个这样的增强现实项由用户来选择并添加到视频,以提供所选择的增强现实项是真实世界场景的一部分的错觉。在一个示例中,该增强现实项可以是表示视频中的用户或人的化身。
18.在一些实施方式中,基于视频中描绘的人的先前捕获的移动确定所选择的增强现实项的放置、定位和移动,以维持增强现实项是真实世界场景的一部分的错觉。为了动态地调整增强现实项相对于场景中的人的放置、定位和移动,识别人的一组骨骼关节,并且将这样的关节的移动存储在移动矢量中。随后,该移动矢量被用于更新诸如化身的增强现实项的3d移动。在一些情况下,使3d移动动画化并且连续地循环,以允许用户调整动画化的增强现实项在视频中的定位。这维持了虚拟对象存在于真实世界中的错觉。
19.在一些实施方式中,可以在用户之间交换移动矢量,以允许第二用户将移动矢量应用于由第二用户选择的3d化身。以这种方式,第一用户可以记录移动矢量并且将该移动矢量发送至第二用户。然后,第二用户可以使用由第一用户记录的移动矢量来使由第二用户选择的3d化身动画化。第二用户可以基于第二用户的记录的移动来更新或修改移动矢量。在一些情况下,多个化身可以被呈现为使不同移动矢量的不同动画循环(例如,第一化身可以使基于第一用户的记录的移动生成的第一移动矢量的动画循环,并且与第一化身一起呈现的另一化身可以使基于第二用户的记录的移动生成的第二移动矢量的动画循环)。可以记录多个化身(以及可选地一个或更多个用户)的视频,并将其与消息应用平台上的其他用户共享。
20.联网计算环境
21.图1是示出用于通过网络交换数据(例如,消息和相关联的内容)的消息系统100的示例的框图。消息系统100包括客户端设备102的多个实例,每个实例托管包括消息客户端104和其他外部应用109(例如,第三方应用)的若干应用。每个消息客户端104经由网络112(例如,因特网)通信地耦接至(例如,托管在相应的其他客户端设备102上的)消息客户端104的其他实例、消息服务器系统108以及外部app服务器110。消息客户端104还可以使用应用程序接口(api)与本地托管的第三方应用109进行通信。
22.消息客户端104能够经由网络112与其他消息客户端104和消息服务器系统108进行通信并且交换数据。在消息客户端104之间以及在消息客户端104与消息服务器系统108之间交换的数据包括功能(例如,用于激活功能的命令)以及净荷数据(例如,文本、音频、视频或其他多媒体数据)。
23.消息服务器系统108能够经由网络112向特定消息客户端104提供服务器侧功能。虽然消息系统100的某些功能在本文中被描述为由消息客户端104或由消息服务器系统108执行,但是某些功能是定位在消息客户端104内还是定位在消息服务器系统108内可以是设计选择。例如,在技术上可能优选的是:最初将某些技术和功能部署在消息服务器系统108内,但是后期将该技术和功能迁移至客户端设备102具有足够处理能力的消息客户端104。
24.消息服务器系统108支持向消息客户端104提供的各种服务和操作。这样的操作包括向消息客户端104发送数据、从消息客户端104接收数据以及对由消息客户端104生成的数据进行处理。作为示例,该数据可以包括消息内容、客户端设备信息、地理定位信息、媒体增强和叠加(overlay)、消息内容持续条件、社交网络信息和实况事件信息。通过经由消息客户端104的用户界面(ui)可用的功能来激活和控制消息系统100内的数据交换
25.现在具体地转至消息服务器系统108,应用程序接口(api)服务器116耦接至应用服务器114并且向应用服务器114提供编程接口。应用服务器114通信地耦接至数据库服务器120,数据库服务器120有助于对数据库126的访问,该数据库126存储与通过应用服务器114处理的消息相关联的数据。类似地,web服务器128耦接至应用服务器114,并且向应用服务器114提供基于web的界面。为此,web服务器128通过超文本传输协议(http)和几个其他相关协议处理传入的网络请求。
26.应用程序接口(api)服务器116在客户端设备102与应用服务器114之间接收和发送消息数据(例如,命令和消息净荷)。具体地,应用程序接口(api)服务器116提供一组接口(例如,例程和协议),该组接口可以由消息客户端104调用或查询以激活应用服务器114的功能。应用程序接口(api)服务器116显露由应用服务器114支持的各种功能,包括:账户注册;登录功能;经由应用服务器114将消息从特定消息客户端104发送至另一消息客户端104;将媒体文件(例如,图像或视频)从消息客户端104发送至消息服务器118并用于另一消息客户端104的可能访问;媒体数据集合(例如,故事)的设置;检索客户端设备102的用户的朋友列表;检索这样的集合;检索消息和内容;在实体图(例如,社交图)中添加和删除实体(例如,朋友);在社交图中定位朋友;以及打开应用事件(例如,与消息客户端104有关)。
27.应用服务器114托管若干服务器应用和子系统,包括例如消息服务器118、图像处理服务器122以及社交网络服务器124。消息服务器118实现了若干消息处理技术和功能,特别是与从消息客户端104的多个实例接收到的消息中包括的内容(例如,文本和多媒体内容)的聚合和其他处理有关的消息处理技术和功能。如将更详细地描述的,来自多个源的文本和媒体内容可以被汇集成内容的集合(例如,被称为故事或图库(gallery))。然后,使这些集合对消息客户端104可用。鉴于对数据的其他处理器和存储器密集处理的硬件要求,也可以由消息服务器118在服务器侧执行这样的处理。
28.应用服务器114还包括图像处理服务器122,该图像处理服务器122专用于执行各种图像处理操作,通常相对于在从消息服务器114发送或者在消息服务器118处接收的消息的净荷内的图像或视频,执行各种图像处理操作。
29.社交网络服务器124支持各种社交联网功能和服务并使这些功能和服务可用于消息服务器118。为此,社交网络服务器124维护并且访问数据库126内的实体图308(如图3所示)。社交网络服务器124所支持的功能和服务的示例包括识别消息系统100中的与特定用户具有关系或该特定用户正在“关注”的其他用户,以及识别特定用户的兴趣和其他实体。
30.返回至消息客户端104,外部资源(例如,第三方应用109或小程序(applet))的特征和功能经由消息客户端104的接口对用户可用。消息客户端104接收对用于启动或访问外部资源(例如,第三方资源)例如外部app 109的特征的选项的用户选择。外部资源可以是安装在客户端设备102上的第三方应用(外部app 109)(例如,“原生app”),或者是托管在客户端设备102上或客户端设备102远端(例如,托管在第三方服务器110上)的第三方应用的小规模版本(例如,“小程序”)。第三方应用的小规模版本包括第三方应用(例如,第三方独立应用的全规模原生版本)的特征和功能的子集并且使用标记语言文档来实现。在一个示例中,第三方应用的小规模版本(例如,“小程序”)是第三方应用的基于web的标记语言版本,并且被嵌入在消息客户端104中。除了使用标记语言文档(例如,*ml文件)以外,小程序可以包括脚本语言(例如,.*js文件或.json文件)和样式表(例如,*ss文件)。
31.响应于接收到对用于启动或访问外部资源(外部app 109)的特征的选项的用户选择,消息客户端104确定所选择的外部资源是基于web的外部资源还是本地安装的外部应用。在一些情况下,本地安装在客户端设备102上的外部应用109可以例如通过在客户端设备102的主画面上选择与外部应用109对应的图标来独立于消息客户端104并且与消息客户端104分开地启动。这样的外部应用的小规模版本可以经由消息客户端104来启动或访问,并且在一些示例中,小规模外部应用的任何部分都不能(或者有限部分才能)在消息客户端104之外被访问。可以通过消息客户端104从外部app服务器110接收与小规模外部应用相关联的标记语言文档并对这样的文档进行处理来启动小规模外部应用。
32.响应于确定外部资源是本地安装的外部应用109,消息客户端104指示客户端设备102通过执行与外部应用109对应的本地存储的代码来启动外部应用109。响应于确定外部资源是基于web的资源,消息客户端104与外部app服务器110进行通信以获得与所选择的资源对应的标记语言文档。然后消息客户端104处理获得的标记语言文档以在消息客户端104的用户界面内呈现基于web的外部资源。
33.消息客户端104可以向客户端设备102的用户或与这样的用户有关的其他用户(例如,“朋友”)通知一个或更多个外部资源中正发生的活动。例如,消息客户端104可以向消息客户端104中的对话(例如,聊天会话)的参与者提供与一组用户的一个或更多个成员当前或最近使用外部资源有关的通知。可以邀请一个或更多个用户加入有效的外部资源或启动最近使用但当前不活动的(在该组朋友中)外部资源。外部资源可以向对话中的各自使用相应的消息客户端104的参与者提供与进入聊天会话中的用户组中的一个或更多个成员分享外部资源中的项目、状况、状态或定位的能力。共享项可以是交互式聊天卡,聊天的成员可以利用该交互式聊天卡进行交互,例如,以启动对应的外部资源,查看外部资源内的特定信息,或将聊天的成员带到外部资源内的特定位置或状态。在给定的外部资源内,可以向消息客户端104上的用户发送响应消息。外部资源可以基于外部资源的当前上下文将不同的媒体项选择性地包括在响应中。
34.消息客户端104可以向用户呈现可用外部资源(例如,第三方或外部应用109或小程序)的列表以启动或访问给定的外部资源。该列表可以以上下文相关菜单的方式呈现。例如,表示外部应用109(或小程序)中的不同外部应用的图标可以基于用户如何启动菜单(例如,从对话界面启动还是从非对话界面启动)而变化。
35.系统架构
36.图2是示出根据一些示例的关于消息系统100的其他细节的框图。具体地,消息系统100被示为包括消息客户端104和应用服务器114。消息系统100包含若干子系统,这些子系统在客户端侧由消息客户端104支持并且在服务器侧由应用服务器114支持。这些子系统包括例如短暂定时器系统202、集合管理系统204、增强系统208、地图系统210、游戏系统212和外部资源系统220。
37.短暂定时器系统202负责实施由消息客户端104和消息服务器118对内容进行临时或限时访问。短暂定时器系统202包含若干个定时器,这些定时器基于与消息或消息集合(例如,故事)相关联的持续时间和显示参数来选择性地实现经由消息客户端104访问(例如,用于呈现和显示)消息和相关联的内容。下面提供关于短暂定时器系统202的操作的进一步的细节。
38.集合管理系统204负责管理媒体的集或集合(例如,文本、图像、视频和音频数据的集合)。内容(例如,消息,包括图像、视频、文本和音频)的集合可以被组织成“事件图库”或“事件故事”。可以使这样的集合在指定的时间段(诸如内容所涉及的事件的持续时间)内可用。例如,可以在音乐会的持续时间内使与音乐会有关的内容作为“故事”可用。集合管理系统204还可以负责向消息客户端104的用户界面发布提供对存在特定集合的通知的图标。
39.此外,集合管理系统204还包括允许集合管理器管理和策展内容的特定集合的策展接口206。例如,策展接口206使得事件组织者能够策展与特定事件相关的内容的集合(例如,删除不适当的内容或冗余消息)。此外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动地策展内容集合。在某些示例中,可以向用户支付补偿以将用户生成的内容包括到集合中。在这样的情况下,集合管理系统204进行操作以自动向这样的用户支付费用以使用其内容。
40.增强系统208提供使得用户能够增强(例如,注解或以其他方式修改或编辑)与消息相关联的媒体内容的各种功能。例如,增强系统208提供与生成和发布用于由消息系统100处理的消息的媒体叠加有关的功能。增强系统208基于客户端设备102的地理定位可操作地向消息客户端104提供媒体叠加或增强(例如,图像过滤器)。在另一示例中,增强系统208基于诸如客户端设备102的用户的社交网络信息的其他信息可操作地向消息客户端104提供媒体叠加。媒体叠加可以包括音频和视觉内容和视觉效果。音频和视觉内容的示例包括图片、文本、标志、动画和声音效果。视觉效果的示例包括颜色叠加。音频和视觉内容或视觉效果可以应用于客户端设备102处的媒体内容项(例如,照片)。例如,媒体叠加可以包括可以叠加在由客户端设备102拍摄的照片的顶部的文本、图形元素或者图像。在另一示例中,媒体叠加包括位置标识(例如,威尼斯海滩)叠加、现场事件的名称或商家名称(例如,海滩咖啡馆)叠加。在另一示例中,增强系统208使用客户端设备102的地理定位来识别包括客户端设备102的地理定位处的商家名称的媒体叠加。媒体叠加可以包括与商家相关联的其他标记。媒体叠加可以存储在数据库126中并且通过数据库服务器120进行访问。
41.在一些示例中,增强系统208提供基于用户的发布平台,该基于用户的发布平台使得用户能够选择地图上的地理定位,并且上传与选择的地理定位相关联的内容。用户还可以指定特定媒体叠加应当被提供给其他用户的环境。增强系统208生成包括所上传的内容并将所上传的内容与所选择的地理定位相关联的媒体叠加。
42.在其他示例中,增强系统208提供基于商家的发布平台,该基于商家的发布平台使
得商家能够经由竞标处理选择与地理定位相关联的特定媒体叠加。例如,增强系统208将最高竞价商家的媒体叠加与对应地理定位相关联达预定义时间量。增强系统208与图像处理服务器122通信以自动选择和激活与由客户端设备102捕获的图像相关的增强现实体验。一旦在用户使用用户环境中的摄像装置扫描图像时选择增强现实体验,一个或更多个图像、视频或增强现实图形元素被检索并呈现为扫描图像顶部上的叠加。在一些情况下,摄像装置被切换至正面视角(例如,客户端设备102的前置摄像装置响应于特定增强现实体验的激活而被激活),并且来自客户端设备102的前置摄像装置而不是客户端设备102的后置摄像装置的图像开始显示在客户端设备102。一个或更多个图像、视频或增强现实图形元素被检索并呈现为由客户端设备102的前置摄像装置捕获和显示的图像之上的叠加。
43.增强系统208提供在相对于由客户端设备102捕获的视频中描绘的真实世界对象(例如,人)的位置处生成、显示和跟踪虚拟对象的功能。例如,增强系统208跟踪在相对于视频的真实世界场景中有特征的真实世界对象的位置内的虚拟对象或增强现实项(例如,化身)。增强系统208包括一组跟踪子系统,该组跟踪子系统被配置成基于可以被存储并且与视频相关联的一组跟踪标记以及跟踪子系统之间的转换来跟踪在三维空间中的位置处的虚拟对象。增强系统208还可以基于针对视频存储的跟踪标记的可用性,在具有六个自由度(6dof)的跟踪与具有三个自由度(3dof)的跟踪之间进行转换。
44.增强系统208提供了捕获视频中描绘的人的移动或运动的功能。捕获移动需要识别和跟踪视频中描绘的人的多个骨骼关节的3d位置和移动。在捕获移动或运动(例如,价值3秒的移动)之后,将骨骼关节的3d位置和移动存储在移动矢量中。接收到对化身的用户选择,并且移动矢量被用于使执行相同移动(例如,价值3秒的化身移动)的化身动画化。使化身动画连续地循环,以连续地表示存储在移动矢量中的移动。化身可以在3d空间中的场景中四处移动和放置。经动画化的化身也可以与一个或更多个其他用户共享,例如在聊天消息中共享。
45.增强系统208允许第一用户记录并生成移动或运动矢量,并且与一个或更多个其他用户共享该移动矢量。例如,在记录第一用户的移动以生成移动矢量之后,第一用户可以选择用于向第二用户发送通信(例如,聊天消息)的选项。该通信可以包括由第一用户生成的移动矢量。在接收到移动矢量时,第二用户可以选择用于打开通信以查看移动矢量的选项。增强系统208获得通用骨骼装备(rig),并且基于包括在通信中的移动矢量来使骨骼装备动画化。这允许第二用户预览存储在移动矢量中的运动。在一些情况下,通信包括描绘第一用户的视频以及使移动矢量的动画循环的第一3d化身(例如,可以基于移动矢量中指定的移动或运动在视频中移动第一化身)。在第一3d化身循环进行模拟(存储在移动矢量中的)第一用户的先前捕获的运动的动画的同时,第二用户可以打开视频以观看第一用户的同时显示(执行一个姿势或一个运动)。
46.增强系统208允许第二用户选择第二3d化身。在选择了第二3d化身时,增强系统208将移动矢量应用于所选择的第二3d化身。增强系统208使执行由从第一用户接收到的移动矢量指定的运动的第二3d化身的动画循环。即,基于移动矢量中指定的关节移动、速度、方向、位置和加速度来修改所选择的第二3d化身的骨骼装备。这样,第二用户可以将由第一用户记录的移动或运动应用于由第二用户选择的化身。第二用户还可以修改运动或移动矢量,以增加或减少在移动矢量中指定的移动的量或持续时间。在一个示例中,第二用户可以
记录附加的移动(例如,以与第一用户在移动矢量中记录移动相同的方式),并且可以将附加移动追加到从第一用户接收到的移动矢量或附加到其前面。在另一示例中,第二用户可以记录新的移动矢量,并将新记录的移动应用于由第二用户选择的化身。由第二用户选择的化身可以循环进行新的移动矢量的动画,并且可以与另一化身一起显示,该另一化身循环进行从第一用户接收到的移动矢量中指定的移动的动画。
47.地图系统210提供各种地理定位功能,并且支持由消息客户端104呈现基于地图的媒体内容和消息。例如,地图系统210使得能够在地图上显示(例如,存储在配置文件数据316中的)用户图标或化身表示,以指示用户的“朋友”的当前或过去位置,以及由这样的朋友在地图的上下文内生成的媒体内容(例如,包括照片和视频的消息的集合)。例如,在消息客户端104的地图界面上,可以将用户从特定地理定位发布到消息系统100的消息在地图的该特定位置的情境内显示给特定用户的“朋友”。用户还可以经由消息客户端104与消息系统100的其他用户(例如,使用适当的状况化身)分享他或她的定位和状况信息,其中,在消息客户端104的地图界面的上下文内该定位和状况信息被类似地显示给选择的用户。
48.游戏系统212在消息客户端104的上下文中提供各种游戏功能。消息客户端104提供游戏界面,该游戏界面提供可以由用户在消息客户端104的上下文内启动并且与消息系统100的其他用户一起玩的可得游戏(例如,基于web的游戏或基于web的应用)的列表。消息系统100还使得特定用户能够通过从消息客户端104向其他用户发出邀请来邀请这样的其他用户参与玩特定游戏。消息客户端104还支持在游戏上下文内进行语音消息和文本消息(例如,聊天)两者,为游戏提供排行榜,并且还支持提供游戏内奖励(例如,游戏币和物品)。
49.外部资源系统220向消息客户端104提供用于与外部app服务器110通信以启动或访问外部资源的接口。每个外部资源(app)服务器110托管例如基于标记语言(例如,html5)的应用或外部应用(例如,消息客户端104外部的游戏、实用程序、支付或乘车共享应用)的小规模版本。消息客户端104可以通过从与基于web的资源(例如,应用)相关联的外部资源(app)服务器110访问html5文件来启动该基于web的资源。在某些示例中,由外部资源服务器110托管的应用是利用由消息服务器118提供的软件开发工具包(sdk)以javascript编程的。sdk包括应用编程接口(api),这些api具有可以由基于web的应用调用或激活的功能。在某些示例中,消息服务器118包括javascript库,该javascript库向给定的第三方资源提供对消息客户端104的某些用户数据的访问权限。html5被用作用于对游戏进行编程的示例技术,但是可以使用基于其他技术编程的应用和资源。
50.为了将sdk的功能集成到基于web的资源中,由外部资源(app)服务器110从消息服务器118下载sdk或者由外部资源(app)服务器110以其他方式来接收sdk。一旦被下载或接收,sdk就作为基于web的外部资源的应用代码的一部分被包括在内。然后,基于web的资源的代码可以调用或激活sdk的某些功能以将消息客户端104的特征集成到基于web的资源内。
51.存储在消息服务器118上的sdk有效地提供了外部资源(例如,第三方或外部应用109或小程序)与消息客户端104之间的桥接。这为用户提供了在消息客户端104上与其他用户交流的无缝体验,同时还保留了消息客户端104的外观和感觉。为了桥接外部资源与消息客户端104之间的通信,在某些示例中,sdk有助于外部资源服务器110与消息客户端104之间进行通信。在某些示例中,在客户端设备102上运行的网络视图javascript桥接在外部资
源与消息客户端104之间建立两个单向通信通道。在外部资源与消息客户端104之间经由这些通信通道异步地发送消息。每个sdk功能激活被作为消息和回调来发送。每个sdk功能通过构造唯一的回调标识符并发送具有该回调标识符的消息来实现。
52.通过使用sdk,并非所有来自消息客户端104的信息都与外部资源服务器110共享。sdk基于外部资源的需求来限制共享哪些信息。在某些示例中,每个外部资源服务器110将与基于web的外部资源对应的html5文件提供给消息服务器118。消息服务器118可以在消息客户端104中添加基于web的外部资源的视觉表示(例如盒设计或其他图形)。一旦用户通过消息客户端104的gui选择该视觉表示或指示消息客户端104访问基于web的外部资源的特征,消息客户端104就获得html5文件并且使访问基于web的外部资源的特征所需的资源实例化。
53.消息客户端104呈现用于外部资源的图形用户界面(例如,登陆页面或标题画面)。在呈现登陆页面或标题画面期间、之前或之后,消息客户端104确定所启动的外部资源是否先前已被授权访问消息客户端104的用户数据。响应于确定启动的外部资源先前已被授权访问消息客户端104的用户数据,消息客户端104呈现包括外部资源的功能和特征的外部资源的另一图形用户界面。响应于确定所启动的外部资源先前未被授权访问消息客户端104的用户数据,在显示外部资源的登陆页面或标题画面的阈值时间段(例如,3秒)之后,消息客户端104滑动用于授权外部资源访问用户数据的菜单(例如,使菜单动画化为从画面底部浮现到画面的中间或其他部分)。该菜单标识外部资源将被授权进行使用的用户数据的类型。响应于接收到对接受选项的用户选择,消息客户端104将外部资源添加到授权的外部资源的列表中,并且使得外部资源能够访问来自消息客户端104的用户数据。在一些示例中,消息客户端104根据oauth 2框架来授权外部资源访问用户数据。
54.消息客户端104基于被授权的外部资源的类型来控制与外部资源共享的用户数据的类型。例如,向包括全规模外部应用(例如,第三方或外部应用109)的外部资源提供对第一类型的用户数据(例如,具有或不具有不同化身特征的用户的仅二维化身)的访问权限。作为另一示例,向包括外部应用的小规模版本(例如,第三方应用的基于web的版本)的外部资源提供对第二类型的用户数据(例如,支付信息、用户的二维化身、用户的三维化身以及具有各种化身特征的化身)的访问权限。化身表示特性包括定制化身表示的外观和感觉(例如不同的姿势、面部特征、服装等)的不同方式。
55.数据架构
56.图3是示出根据某些示例的可以存储在消息服务器系统108的数据库126中的数据结构300的示意图。虽然数据库126的内容被示为包括若干表,但是应当理解,数据可以存储在其他类型的数据结构中(例如,作为面向对象的数据库)。
57.数据库126包括存储在消息表302中的消息数据。对于任何特定的一个消息,该消息数据至少包括消息发送数据、消息接收方(或接收者)数据和净荷。下面参照图4描述了关于可以被包括在消息中并且被包括在存储在消息表302中的消息数据中的信息的另外的细节。
58.实体表306存储实体数据,并且(例如,参考地)链接至实体图308和配置文件数据316。在实体表306内针对其维护记录的实体可以包括个人、公司实体、组织、对象、地点、事件等。无论实体类型如何,消息服务器系统108存储关于其的数据的任何实体可以是识别的
实体。每个实体被提供有唯一标识符以及实体类型标识符(未示出)。
59.实体图308存储关于实体之间的关系和关联的信息。仅作为示例,这样的关系可以是基于感兴趣的或基于活动的社交关系、职业关系(例如,在共同的公司或组织中工作)。
60.配置文件数据316存储关于特定实体的多种类型的配置文件数据。基于由特定实体指定的隐私设置,配置文件数据316可以被选择性地使用并呈现给消息系统100的其他用户。在实体是个人的情况下,配置文件数据316包括例如用户名、电话号码、地址、设置(例如,通知和隐私设置)、以及用户选择的化身表示(或这样的化身表示的集合)。然后,特定用户可以将这些化身表示中的一个或更多个化身表示选择性地包括在经由消息系统100传送的消息的内容中以及包括在由消息客户端104向其他用户显示的地图界面上。化身表示的集合可以包括“状态化身”,其呈现用户在特定时间可以选择来进行通信的状态或活动的图解表示。
61.在实体是团体的情况下,除了团体名称、成员和相关团体的各种设置(例如,通知)之外,团体的配置文件数据316还可以类似地包括与团体相关联的一个或更多个化身表示。
62.数据库126还在增强表310中存储增强数据,例如叠加或过滤器。增强数据与视频(其数据存储在视频表304中)和图像(其数据存储在图像表312中)相关联并应用于视频和图像。
63.在一个示例中,过滤器是在向接收方用户呈现期间被显示为叠加在图像或视频上的叠加。过滤器可以是各种类型的,包括当发送用户正在编写消息时从由消息客户端104呈现给发送用户的一组过滤器中用户选择的过滤器。其他类型的过滤器包括地理定位过滤器(也称为地理过滤器),其可以基于地理定位被呈现给发送用户。例如,可以基于由客户端设备102的全球定位系统(gps)单元确定的地理定位信息,由消息客户端104在用户界面内呈现特定于附近或特殊位置的地理定位过滤器。
64.另一种类型的过滤器是数据过滤器,其可以由消息客户端104基于在消息创建处理期间由客户端设备102收集的其他输入或信息选择性地呈现给发送用户。数据过滤器的示例包括特殊定位处的当前温度、发送用户行进的当前速度、客户端设备102的电池寿命或当前时间。
65.可以被存储在图像表312内的其他增强数据包括增强现实内容项(例如,对应于应用透镜或增强现实体验)。增强现实内容项可以是可以添加到图像或视频的实时特殊效果和声音。增强数据可以包括一个或更多个移动矢量,这样的移动矢量表示人的骨骼关节的先前捕获的移动(例如,在3秒或4秒的间隔内)。
66.如上所述,增强数据包括增强现实内容项、叠加、图像变换、ar图像、虚拟对象以及指代可以应用于图像数据(例如,视频或图像)的修改的类似的术语。这包括实时修改,其在使用客户端设备102的设备传感器(例如,一个或多个摄像装置)捕获图像时对该图像进行修改,然后在客户端设备102的屏幕上使用该修改进行显示。这还包括对所存储的内容诸如图库中可以被修改的视频剪辑的修改。例如,在具有对多个增强现实内容项的访问权的客户端设备102中,用户可以使用具有多个增强现实内容项的单个视频来查看不同的增强现实内容项将如何修改存储的视频。例如,通过针对内容选择不同的增强现实内容项,可以将应用不同伪随机运动模型的多个增强现实内容项应用于同一内容。类似地,实时视频捕获可以与所示出的修改一起使用,以示出当前由客户端设备102的传感器捕获的视频图像将
如何修改所捕获的数据。这样的数据可以仅显示在屏幕上而不存储在存储器中,或者由设备传感器捕获的内容可以在进行或不进行修改(或进行和不进行修改两者)的情况下被记录并且存储在存储器中。在一些系统中,预览特征可以示出不同的增强现实内容项同时在显示器中的不同窗口内看起来如何。这可以例如使得能够同时在显示器上查看具有不同伪随机动画的多个窗口。
67.因此,使用增强现实内容项的数据和各种系统或使用该数据修改内容的其他这样的变换系统可以涉及对象(例如,面部、手、身体、猫、狗、表面、物体等)的检测,在这些对象离开、进入视频帧中的视场以及在视场四处移动时跟踪这些对象,以及在跟踪这些对象时对其进行修改或变换。在各种示例中,可以使用用于实现这样的变换的不同的方法。一些示例可以涉及生成一个或多个对象的6维网格模型,以及在视频内使用模型的变换和动画纹理来实现变换。在其他示例中,可以使用对对象上的点的跟踪来将图像或纹理(可以是二维或三维的)放置在所跟踪的位置处。在更进一步的示例中,可以使用视频帧的神经网络分析来将图像、模型或纹理放置在内容(例如,图像或视频帧)中。因此,增强现实内容项既指用于在内容中创建变换的图像、模型和纹理,也指利用对象检测、跟踪和放置实现这样的变换所需的附加建模和分析信息。
68.可以利用保存在任何种类的计算机化系统的存储器中的任何种类的视频数据(例如,视频流、视频文件等)来执行实时视频处理。例如,用户可以加载视频文件并将它们保存在设备的存储器中,或者可以使用设备的传感器来生成视频流。此外,可以使用计算机动画模型来处理任何对象,例如人的面部和人身体的各部分、动物或非生命事物(例如椅子、汽车或其他对象)。
69.在一些示例中,当连同要变换的内容一起选择特定修改时,由计算设备识别要变换的元素,并且然后如果要变换的元素存在于视频的帧中,则检测并跟踪要变换的元素。根据针对修改的请求来修改对象的元素,从而变换视频流的帧。可以通过用于不同类型的变换的不同方法来执行视频流的帧的变换。例如,对于主要是指对象的元素的变化形式的帧变换,计算对象的每个元素的特征点(例如,使用主动形状模型(asm)或其他已知方法)。然后,针对对象的至少一个元素中的每一个生成基于特征点的网格。该网格被用于后续阶段,在所述后续阶段中跟踪视频流中对象的元素。在跟踪过程中,所提及的每个元素的网格与每个元素的位置对准。然后,在网格上生成附加点。基于对修改的请求针对每个元素生成第一点的第一集合,并且基于第一点的集合和对修改的请求针对每个元素生成第二点的集合。然后,可以通过基于第一点的集合和第二点的集合以及网格来修改对象的元素,对视频流的帧进行变换。在这样的方法中,也可以通过跟踪和修改背景来使所修改对象的背景改变或变形。
70.在一些示例中,可以通过计算针对对象的每个元素的特征点并基于所计算的特征点生成网格来执行使用对象的元素改变对象的一些区域的变换。在网格上生成点,然后基于所述点生成各种区域。然后,通过将每个元素的区域与至少一个元素中的每一个的位置对准来跟踪对象的元素,并且可以基于对修改的请求来修改区域的属性,从而变换视频流的帧。根据具体的修改请求,可以以不同的方式对所提及区域的属性进行变换。这样的修改可以涉及改变区域的颜色;从视频流的帧中去除区域的至少一些部分;将一个或更多个新对象包括到基于针对修改的请求的区域中;以及修改或扭曲区域或对象的元素。在各种示
例中,可以使用这样的修改的任何组合或其他类似修改。对于某些要被动画化的模型,可以选择一些特征点作为控制点,以用于确定模型动画的选项的整个状态空间。
71.在使用面部检测来变换图像数据的计算机动画模型的一些示例中,使用特定的面部检测算法(例如,viola-jones)在图像上检测面部。然后,将主动形状模型(asm)算法应用于图像的面部区域以检测面部特征参考点。
72.可以使用适合面部检测的其他方法和算法。例如,在一些示例中,使用界标来定位特征,该界标表示在所考虑的大多数图像中存在的可区分点。例如,对于面部界标,可以使用左眼瞳孔的位置。如果初始界标不可识别(例如,如果人带眼罩),则可以使用次要界标。这样的界标标识过程可以被用于任何这样的对象。在一些示例中,界标集合形成形状。可以使用形状中的点的坐标来将形状表示为矢量。一个形状用相似性变换(允许平移、缩放和旋转)与另一个形状对准,该相似性变换使形状点之间的平均欧几里德距离最小化。平均形状(mean shape)是经对准的训练形状的平均值。
73.在一些示例中,从与由全局面部检测器确定的面部的位置和大小对准的均值形状开始搜索界标。然后,这样的搜索重复以下步骤:通过每个点周围的图像纹理的模板匹配来调整形状点的定位来建议暂定形状,并且然后使暂定形状符合全局形状模型,直到出现收敛。在一些系统中,个体模板匹配是不可靠的,并且形状模型将弱模板匹配的结果进行池化,以形成更强的整体分类器。整个搜索在从粗分辨率到细分辨率的图像金字塔的每个级别上重复。
74.变换系统可以在客户端设备(例如,客户端设备102)上捕获图像或视频流,并且在客户端设备102上本地执行复杂的图像操纵,同时保持适当的用户体验、计算时间和功耗。复杂的图像操纵可以包括大小和形状改变、情感变换(例如,将面部从皱眉改变为微笑)、状态变换(例如,使主体变老、减小外表年龄、改变性别)、风格变换、图形元素应用以及由已经被配置成在客户端设备102上有效执行的卷积神经网络实现的任何其他合适的图像或视频操纵。
75.在一些示例中,用于变换图像数据的计算机动画模型可以由系统使用,在该系统中,用户可以使用具有神经网络的客户端设备102来捕获用户的图像或视频流(例如,自拍),该神经网络操作为在客户端设备102上操作的消息客户端104的一部分。在消息客户端104内操作的变换系统确定图像或视频流内的面部的存在,并且提供与计算机动画模型相关联的修改图标以变换数据图像,或者计算机动画模型可以被呈现为与本文中描述的界面相关联。修改图标包括可以是用于作为修改操作的一部分修改图像或视频流内的用户面部的基础的变化。一旦选择了修改图标,则变换系统发起将用户的图像转换以反映所选择的修改图标(例如,在用户上生成笑脸)的处理。一旦捕获图像或视频流并且选择了指定的修改,就可以在客户端设备102上显示的图形用户界面中呈现经修改的图像或视频流。变换系统可以在图像或视频流的一部分上实现复杂的卷积神经网络,以生成和应用选择的修改。也就是说,用户可以捕获图像或视频流,并且一旦已经选择了修改图标,就可以实时或接近实时地呈现经修改的结果。此外,当正在捕获视频流时,修改可以是持久的,并且选择的修改图标保持被切换。机器教导的神经网络可以用于实现这样的修改。
76.呈现由变换系统执行的修改的图形用户界面可以为用户供应附加的交互选项。这样的选项可以基于用于发起内容捕获以及选择特定计算机动画模型的界面(例如,从内容
创建者用户界面发起)。在各种示例中,在最初选择了修改图标之后,修改可以是持久的。用户可以通过轻敲或以其他方式选择正由变换系统修改的面部来切换以打开或关闭修改,并对其进行存储以供稍后查看或浏览成像应用的其他区域。在变换系统修改多个面部的情况下,用户可以通过轻敲或选择在图形用户界面内修改和显示的单个面部来全局地切换以打开或关闭修改。在一些示例中,可以通过轻击或选择图形用户界面内显示的单独面部或一系列面部来单独修改一组多个面部中的各个面部,或者单独切换这样的修改。。
77.故事表314存储关于消息的集合的数据以及相关联的图像、视频或音频数据,这些数据被编译成集合(例如,故事或图库)。特定集合的创建可以由特定用户(例如,在实体表306中维护其记录的每个用户)发起。用户可以创建以已经由该用户创建和发送/广播的内容的集合的形式的“个人故事”。为此,消息客户端104的用户界面可以包括用户可选择的图标,以使得发送用户能够将特定内容添加到他或她的个人故事。
78.集合还可以构成“实况故事”,“实况故事”是被手动地、自动地或使用手动和自动技术的组合来创建的来自多个用户的内容的集合。例如,“实况故事”可以构成来自各种位置和事件的用户提交的内容的策展流。可以例如经由消息客户端104的用户界面向其客户端设备启用了定位服务并且在特定时间处于共同定位事件处的用户呈现选项,以将内容贡献给特定的实况故事。可以由消息客户端104基于他或她的定位向用户标识实况故事。最终结果是从社群角度讲述的“实况故事”。
79.另一类型的内容集合被称为“定位故事”,“定位故事”使得其客户端设备102位于特定地理定位(例如,在学院或大学校园)内的用户能够对特定集合做出贡献。在一些示例中,对位置故事的贡献可能需要第二程度的认证来验证终端用户属于特定组织或其他实体(例如,是大学校园中的学生)。
80.如上面所提及的,视频表304存储视频数据,在一个示例中,该视频数据与其记录维护在消息表302内的消息相关联。类似地,图像表312存储与消息数据被存储在实体表306中的消息相关联的图像数据。实体表306可以使来自增强表310的各种增强与存储在图像表312和视频表304中的各种图像和视频相关联。
81.数据通信架构
82.图4是示出根据一些示例的消息400的结构的示意图,该消息400由消息客户端104生成,以传送至另外的消息客户端104或消息服务器118。特定消息400的内容用于填充存储在数据库126内的消息表302,该消息表302可由消息服务器118访问。类似地,消息400的内容被存储在存储器中作为客户端设备102或应用服务器114的“传输中”或“飞行中”数据。消息400被示出包括以下示例组成部分:
83.·
消息标识符402:标识消息400的唯一标识符。
84.·
消息文本净荷404:要由用户经由客户端设备102的用户界面生成并且包括在消息400中的文本。
85.·
消息图像净荷406:由客户端设备102的摄像装置部件捕获的或从客户端设备102的存储器部件检索到的并且包括在消息400中的图像数据。用于发送或接收的消息400的图像数据可以存储在图像表312中。
86.·
消息视频净荷408:由摄像装置部件捕获的或从客户端设备102的存储器部件检索到的并且包括在消息400中的视频数据。用于发送或接收的消息400的视频数据可以存储
在视频表304中。
87.·
消息音频净荷410:由麦克风捕获的或从客户端设备102的存储器部件检索到的并且包括在消息400中的音频数据。
88.·
消息增强数据412:表示要应用于消息400的消息图像净荷406、消息视频净荷408、或消息音频净荷410的增强的增强数据(例如,过滤器、标贴或其他注释或增强)。针对发送或接收的消息400的增强数据可以被存储在增强表310中。
89.·
消息持续时间参数414:指示消息的内容(例如,消息图像净荷406、消息视频净荷408、消息音频净荷410)将经由消息客户端104呈现给用户或使其可由用户访问的以秒为单位的时间量的参数值。
90.·
消息地理定位参数416:与消息的内容净荷相关联的地理定位数据(例如,纬度坐标和经度坐标)。在净荷中可以包括多个消息地理定位参数416值,这些参数值中的每个参数值都与包括在内容中的内容项(例如,消息图像净荷406内的特定图像,或消息视频净荷408中的特定视频)相关联。
91.·
消息故事标识符418:标识与消息400的消息图像净荷406中的特定内容项相关联的一个或更多个内容集合(例如,故事表314中标识的“故事”)的标识符值。例如,消息图像净荷406内的多个图像可以各自使用标识符值与多个内容集合相关联。
92.·
消息标签420:每个消息400可以用多个标签来标记,这些标签中的每个标签都指示消息净荷中包括的内容的主题。例如,在包括在消息图像净荷406中的特定图像描绘动物(例如,狮子)的情况下,标签值可以包括在指示相关动物的消息标签420内。标签值可以基于用户输入手动生成,或者可以使用例如图像识别自动生成。
93.·
消息发送者标识符422:指示在其上生成消息400以及从其发送消息400的客户端设备102的用户的标识符(例如,消息系统标识符、电子邮件地址或设备标识符)。
94.·
消息接收者标识符424:指示消息400寻址到的客户端设备102的用户的标识符(例如,消息系统标识符、电子邮件地址或设备标识符)。
95.消息400的各个要素的内容(例如,值)可以是指向在其内存储内容数据值的表中的位置的指针。例如,消息图像净荷406中的图像值可以是指向图像表312内的位置的指针(或是图像表312内的位置的地址)。类似地,消息视频净荷408内的值可以指向存储在视频表304内的数据,存储在消息增强数据412内的值可以指向存储在增强表310中的数据,存储在消息故事标识符418内的值可以指向存储在故事表314中的数据,以及存储在消息发送者标识符422和消息接收者标识符424内的值可以指向存储在实体表306内的用户记录。
96.图5是示出访问限制过程500的示意图,根据该访问限制过程,对内容(例如,短暂消息502和相关联的数据的多媒体净荷)或内容集合(例如,短暂消息故事504)的访问可以是限时的(例如,使得是短暂的)。
97.短暂消息502被示出为与消息持续时间参数506相关联,该消息持续时间参数506的值确定由消息客户端104将短暂消息502显示给短暂消息502的接收用户的时间量。在一个实施方式中,在消息客户端104是应用客户端的情况下,根据发送用户使用消息持续时间参数506指定的时间量,由接收用户可查看短暂消息502达到最多10秒。
98.消息持续时间参数506和消息接收者标识符424被示出为是消息定时器512的输入,该消息定时器512负责确定向由消息接收者标识符424标识的特定接收用户示出短暂消
息502的时间量。特别地,仅将短暂消息502向相关的接收用户示出由消息持续时间参数506的值确定的时间段。消息定时器512被示出为向更一般化短暂定时器系统202提供输出,该短暂定时器系统202负责向接收用户显示内容(例如,短暂消息502)的总体定时。
99.在图5中短暂消息502被示出为包括在短暂消息故事504(例如,个人故事或事件故事)内。短暂消息故事504具有相关联的故事持续时间参数508,故事持续时间参数508的值确定短暂消息故事504被呈现并且可由系统100的用户访问的持续时间。例如,故事持续时间参数508可以是音乐会的持续时间,其中,短暂消息故事504是有关该音乐会的内容的集合。替选地,当执行短暂消息故事504的设置和创建时,用户(拥有用户或策展者用户)可以指定故事持续时间参数508的值。
100.此外,短暂消息故事504内的每个短暂消息502具有相关联的故事参与参数510,故事参与参数510的值确定在短暂消息故事504的上下文内可访问短暂消息502的持续时间。因此,在短暂消息故事504本身根据故事持续时间参数508到期之前,特定的短暂消息故事504可以“到期”并且在短暂消息故事504的上下文中变得不可访问。故事持续时间参数508、故事参与参数510和消息接收者标识符424各自向故事定时器514提供输入,故事定时器514可操作地首先确定短暂消息故事504的特定短暂消息502是否将被显示给特定接收用户,并且如果是,则确定显示多长时间。注意,作为消息接收者标识符424的结果,短暂消息故事504也知道特定接收用户的身份。
101.因此,故事定时器514可操作地控制相关联的短暂消息故事504以及包括在短暂消息故事504中的单独的短暂消息502的总寿命。在一个实施方式中,在短暂消息故事504内的每个短暂消息502在由故事持续时间参数508指定的时间段内保持可查看和可访问。在另一实施方式中,在短暂消息故事504的上下文内,某个短暂消息502可能基于故事参与参数510而到期。注意,即使在短暂消息故事504的上下文内,消息持续时间参数506也仍然可以确定向接收用户显示特定短暂消息502的持续时间。因此,消息持续时间参数506确定向接收用户显示特定短暂消息502的持续时间,而不管接收用户是在短暂消息故事504的上下文内还是在短暂消息故事504的上下文外查看该短暂消息502。
102.短暂定时器系统202还可以基于确定已经超过相关联的故事参与参数510而从短暂消息故事504中可操作地移除特定的短暂消息502。例如,当发送用户已经建立了从发布起24小时的故事参与参数510时,短暂定时器系统202将在指定的二十四小时之后从短暂消息故事504中移除相关的短暂消息502。当针对短暂消息故事504内的每个短暂消息502的故事参与参数510已经到期时或者当短暂消息故事504本身根据故事持续时间参数508已经到期时,短暂定时器系统202还进行操作以移除短暂消息故事504。
103.在某些使用情况下,特定短暂消息故事504的创建者可以指定无期限的故事持续时间参数508。在这种情况下,短暂消息故事504内最后剩余的短暂消息502的故事参与参数510的到期将确定短暂消息故事504本身何时到期。在这种情况下,添加至短暂消息故事504的具有新的故事参与参数510的新的短暂消息502实际上将短暂消息故事504的寿命延长到等于故事参与参数510的值。
104.响应于短暂定时器系统202确定短暂消息故事504已经到期(例如,不再是可访问的),短暂定时器系统202与消息系统100(并且例如特别是消息客户端应用104)进行通信,以使得与相关短暂消息故事504相关联的标记(例如,图标)不再显示在消息客户端应用104
的用户界面内。类似地,当短暂定时器系统202确定针对特定短暂消息502的消息持续时间参数506已经到期时,短暂定时器系统202使消息客户端应用104不再显示与短暂消息502相关联的标记(例如,图标或文本标识)。
105.增强系统
106.图6是示出增强系统208的被配置成对视频中描绘的三维空间的虚拟修改进行渲染的功能部件的框图。例如,增强系统208相对于参考点渲染三维空间内的虚拟物,该参考点与视频中描绘的真实世界对象(例如,人)相关联。如图6所示,增强系统208包括渲染模块602、跟踪模块604、中断检测模块606、对象模板模块608和处理器610。
107.在一些示例实施方式中,跟踪模块604包括第一跟踪子系统604a、第二跟踪子系统604b和第三跟踪子系统604c,其中每个跟踪子系统基于与视频相关联的一组跟踪标记,跟踪虚拟对象在视频中的真实世界对象的三维空间内的位置。在客户端设备102的摄像装置捕获视频时,从/在客户端设备102上获得并存储跟踪标记。增强系统208的各个部件被配置成(例如,经由总线、共享的存储器或交换机)彼此通信。虽然在图6中未示出,但是在一些实施方式中,增强系统208可以包括摄像装置或者可以与摄像装置通信,该摄像装置被配置成产生包括包含图像或帧的序列(例如,视频)的图像数据的实况摄像装置馈送。
108.所描述的任何一个或更多个部件可以单独使用硬件(例如,机器的一个或更多个处理器610)或者硬件和软件的组合来实现。例如,增强系统208的所描述的任何部件可以物理地包括处理器610中的一个或更多个(例如,机器的一个或更多个处理器的子集或在机器的一个或更多个处理器之中)的布置,所述布置被配置成执行本文中针对该部件描述的操作。作为另一示例,增强系统208的任何部件可以包括软件、硬件或软件和硬件,所述软件、硬件或软件和硬件配置一个或更多个处理器610(例如,在机器的一个或更多个处理器之中)的布置以执行本文中针对该部件描述的操作。因此,增强系统208的不同部件可以包括并配置这样的处理器610的不同布置或者这样的处理器610在不同的时间点的单个布置。
109.此外,增强系统208中的任何两个或更多个部件可以组合成单个部件,并且本文中针对单个部件描述的功能可以在多个部件之间细分。此外,根据各种示例实施方式,本文描述为在单个机器、数据库或设备内实现的部件可以跨多个机器、数据库或设备分布。
110.由于环境条件、用户动作、摄像装置与被跟踪的对象/场景之间的意外的视觉中断等,跟踪系统经常经受跟踪失败。常规地,这样的跟踪失败会导致虚拟对象在三维空间中的呈现中断。例如,虚拟对象可能会消失或以其他方式表现异常,从而中断虚拟对象存在于视频的三维空间内的错觉。这会破坏整体三维体验的感知质量。
111.常规的跟踪系统依赖于以单个方式(自然特征跟踪(nft)、同步定位和映射(slam)、陀螺仪等)从设备实时接收到的传感器信息的传递以及深度传感器,以在视频被捕获时跟踪视频中的对象,以使得用户能够将虚拟对象添加到实况场景。这些系统利用增强现实中的摄像装置、深度和运动传感器输入数据,并且允许用户在视频被捕获时的实时时刻与虚拟对象交互。但这些方法并未考虑到诸如视频中描绘的真实世界的对象的另一对象的位置和移动。即,这些典型的方法将虚拟对象放置在指定的位置处,并且相对于真实世界坐标系移动这些对象。当捕获视频的摄像装置或客户端设备102四处移动时,这样的对象在视频中移动。如果给定真实世界对象在视频中移动,则常规的跟踪系统不改变虚拟对象的定位。这打破了作为这些系统的目标的现实的错觉。所公开的实施方式不是跟踪虚拟对象
相对于客户端设备102或摄像装置的位置的定位和放置,而是调整虚拟对象相对于真实世界对象参考位置的定位和移动(例如,图像中描绘的人的定位和移动)。在一些实施方式中,所公开的实施方式使用通常的2d红色、绿色和蓝色(rgb)摄像装置跟踪真实世界对象的定位,并且不捕获关于对象的任何深度信息。
112.增强系统208存储与给定对象(例如,被选择并出现在真实世界视频中的人或其他参考对象)相关联的跟踪标记或参考点。这提供了对该问题的解决方案,该解决方案使得用户能够将虚拟对象添加到视频中的场景,并且使虚拟对象相对于真实世界对象移动并基于真实世界对象进行移动。作为一个示例,虚拟对象的大小可以基于真实世界对象的大小的变化而增大或减小。例如,如果从视频中的一帧到视频中的另一帧的真实世界对象更靠近客户端设备102,则可以类似地改变虚拟对象的位置和移动。即,虚拟对象也以与真实世界对象相同的距离并沿与真实世界对象相同的轨迹移动得更靠近客户端设备102。当真实世界对象接近或更靠近客户端设备102或摄像装置时,真实世界对象的大小也可以改变。具体地,大小可以与真实世界对象移动的距离成比例地增大给定量。在这种情况下,虚拟对象的大小也可以从一帧到另一帧增大相同的给定量。
113.增强系统208将参考点计算为位于与真实世界对象对应的区域内的任何点。作为示例,参考点可以是任何一个骨骼关节位置或多于一个的骨骼关节位置的组合。一旦骨骼关节位置或多个骨骼关节位置的组合被选择,增强系统208就使用它们在整个视频中的位置的变化来调整参考点。作为示例,参考点被计算为人体的多个骨骼关节位置之间的中心点。
114.在一些实施方式中,增强系统208在整个多个帧的序列中跟踪真实世界对象的多个骨骼关节。增强系统208仅从用rgb摄像装置捕获的2d视频而无需深度传感器信息来识别并跟踪骨骼关节。增强系统208识别多个骨骼关节中的给定骨骼关节,该给定骨骼关节在整个帧序列中相对于其他骨骼关节移动最小量。增强系统208选择被确定为已经在帧序列中移动最小量的骨骼关节作为参考点,作为相对于真实世界对象跟踪和定位虚拟对象的基础。例如,增强系统208生成表示在整个帧序列中多个骨骼关节中每一个的移动的多个矢量。增强系统208对多个矢量进行比较,以识别与沿三维中的一个或全部的维度的最小位移量或改变量相关联的给定矢量。作为示例,手臂或肘关节可以移动得更多,并与指示3d中的大位移量的矢量相关联,而颈关节可能比肘关节移动得少,并与指示3d中的最小位移的矢量相关联。在这种情况下,增强系统208选择颈关节作为参考点,以用作跟踪虚拟对象的基础。
115.在一些实施方式中,用户选择视频中描绘的真实世界对象上的位置以用作参考点。在一些情况下,在多个虚拟对象被添加到视频的情况下,真实世界对象的多个不同参考点用于跟踪每个虚拟对象。例如,可以基于颈关节的移动来跟踪和重新定位第一虚拟对象,并且可以基于躯干或膝关节的移动来跟踪和重新定位第二虚拟对象。以这种方式,不同的虚拟对象相对于真实世界对象如何移动或基于真实世界对象的不同部分如何移动以不同的方式移动。
116.在一些实施方式中,使用机器学习技术来训练增强系统208,以预测或估计真实世界对象上的与最小移动或噪音相关联的位置。增强系统208处理描绘相同类型的真实世界对象的多个训练图像。一旦增强系统208识别出在新视频中接收到的真实世界对象与训练
的真实世界对象之一相匹配,增强系统208就沿训练的真实世界对象检索参考点位置,并将参考点放置在新的真实世界对象上,以用作跟踪虚拟对象的基础。
117.在一些示例中,如果真实世界对象在3d空间中相对于摄像装置或客户端设备102向右移动指定量,则增强系统208更新虚拟对象的位置,以在视频中也向右移动相同的指定量。类似地,如果真实世界对象在3d空间中相对于摄像装置或客户端设备102向左移动指定量,则增强系统208更新虚拟对象的位置,以在视频中也向左移动相同的指定量。
118.增强系统208计算与真实世界对象对应的真实世界参考点与虚拟对象的初始位置之间的偏移量。当真实世界对象在给定的方向上和沿给定轨迹移动时,增强系统208以相对于与真实世界对象对应的真实世界参考点维持相同偏移量的方式来沿相同的方向和轨迹调整或移动虚拟对象。在一些情况下,虚拟对象模仿真实世界对象的移动。例如,如果真实世界对象围绕其自身的轴线转动,则虚拟对象也通过以与真实世界的对象相同的速率围绕其自身的轴线转动而做出响应。
119.增强系统208基于移动矢量来使虚拟对象(例如,选择的化身)动画化。可以由用户从显示表示不同移动矢量的图标的用户界面中选择该移动矢量。在另一示例中,可以由第一用户在通信(例如,聊天消息)中从第二用户接收移动矢量。移动矢量存储在描绘人(用户)的视频中被识别、检测和跟踪的多个骨骼关节的3d定位、加速度、方向和速度的改变。将移动矢量中的骨骼关节映射到虚拟对象的骨骼装备,以使虚拟对象模仿在移动矢量中存储的对应骨骼关节的移动。作为示例,如果移动矢量指示手臂关节在给定的时间间隔(例如,3秒)的过程中以一定的距离和一定的速度从一个3d坐标向上移动到第二3d坐标,则增强系统208类似地使虚拟对象的骨骼装备的手臂部分在给定时间间隔的过程中以相同的一定距离和相同的一定速度从一个3d坐标向上移动到第二3d坐标。增强系统208类似地移动骨骼装备的每个其他部分,以使化身动画化以模仿在移动矢量中存储的骨骼关节的移动。
120.在一些实施方式中,增强系统208接收来自第一用户的用于记录新的移动的输入。作为示例,第一用户可以按压并保持所显示的记录选项。在继续保持按压记录选项时,识别在描绘人的视频中检测到的任何骨骼关节,并且跟踪其3d移动。在记录移动矢量期间,基于对骨骼关节的跟踪,实时更新化身装备。即,当跟踪和移动骨骼关节时,增强系统208更新化身骨骼装备,以便以与跟踪的用户的骨骼关节相同的方式移动化身(与视频中的人一起显示在画面上)。在释放记录选项后(例如,在3秒之后),将识别的骨骼关节的跟踪的3d移动存储在第一移动矢量中。跟踪和记录移动的时间段设置在移动矢量中存储的移动的给定时间间隔。作为另一示例,第一用户可以轻击记录选项,该记录选项可以是切换选项。在轻击记录选项之后,在描绘人的视频中检测到的任何骨骼关节都被识别,并且对其3d移动进行跟踪。在接收到记录选项的后续的轻击或选择后(例如,在3秒之后),将识别的骨骼关节的跟踪的3d移动存储在第一移动矢量中。
121.在一些实施方式中,增强系统208将3d化身与视频中的人一起呈现。3d化身可以在增强系统208跟踪并存储骨骼关节的移动的同时模仿视频中的人的移动。即,基于视频中的人的骨骼关节的实时跟踪来更新3d化身的运动。在记录终止之后,3d化身停止模仿在后续帧中描绘的人的移动(例如,不再基于骨骼关节如何被跟踪而更新3d化身)。替代地,使3d化身动画化,以模仿人的先前捕获的移动。具体地,在停止记录人的移动之后,以循环方式基于被记录的移动矢量中存储的移动更新3d化身运动。即,3d化身最初可以被呈现并动画化,
以在选择记录选项之后与第一组帧(例如,视频的3秒的时段或给定时间间隔)中的人的移动同步,并且模仿第一组帧中的人的移动。在这种情况下,基于骨骼关节的实时跟踪来更新3d化身。然后,在后续第二组帧或第二视频中,3d化身停止模仿在第二组帧中描绘的人的移动,并且具体地,3d化身停止基于骨骼关节的实时移动而更新。替代地,在第二组帧或第二视频中,更新3d化身,并基于先前存储的移动矢量移动3d化身,这导致使3d化身的移动的动画连续地循环。
122.3d化身在3d空间中的放置可以由用户重新定位。当重新定位3d化身时,3d化身继续使存储在表示人的先前捕获的移动的移动矢量中的移动的动画循环。作为示例,在第一组帧中,将3d化身叠加在第一组帧中的人之上,并以与第一组帧中的人相同的方式移动。在停止记录人的移动之后,可以将3d化身放置在第二组帧中描绘的人的旁边。第二组帧中的人可以似乎在看3d化身,而3d化身执行在第一组帧中记录的人的移动。即,在第二组帧中,人可以是静态的或静止的,并且可以不移动,同时使3d化身动画化,以便以与先前在第一组帧中移动的人相同的方式移动。
123.在一个示例中,在跟踪人的移动以生成第一移动矢量的同时在第一组帧中呈现的3d化身可以与在第二组帧中呈现的3d化身不同。即,第一3d化身(例如,第一虚拟动物,如猴子)可以叠加在第一组帧中的人之上,并且可以在移动被记录在移动矢量中的同时模仿第一组帧中的人的移动。随后,用户可以选择第二3d化身(例如,人类外观的化身)。可以基于根据第一组帧中的人的移动而生成的移动矢量来使第二3d化身动画化。可以在3d空间中将人定位在视频中的某个其他位置旁边或某个其他位置处(例如,凝视或看着执行先前捕获的移动的第二3d化身)的同时,在第二组帧中使第二3d化身动画化。可以由用户使第二3d化身在3d空间中四处移动,并且当第二3d化身四处移动时,第二3d化身继续被动画化以模仿第一组帧中的人的先前捕获的移动。
124.在一些实施方式中,可以从用户接收输入,以捕获描绘第二组帧中的人的新图像或新视频以及正在被动画化以模仿在先前组帧中捕获的人的移动的第二3d化身。例如,可以捕获静止地凝视正在被动画化以模仿先前捕获的运动的3d化身的人的图像或视频。可以例如在聊天界面中与一个或更多个其他用户共享该图像或视频。
125.在一些实施方式中,3d化身可以结合移动矢量存储在一组经动画化的3d化身中。可以将一组经动画化的3d化身呈现给用户,以进行选择并与另一个用户共享。可以以列表形式或某种其他形式呈现经动画化的化身。与其他化身同时地呈现每个化身,并且根据与相应化身相关联的移动矢量,使每个化身动画化。用户可以轻击给定的动画化的化身,以与另一个用户共享。
126.增强系统208允许第一用户向第二用户发送包括第一移动矢量的通信。在一些情况下,发送给第二用户的通信包括根据第一移动矢量执行运动的经动画化的化身和人的图像或视频。一旦第二用户接收到通信并打开移动矢量,第二用户就可以预览由第一移动矢量指定的移动。然后,第二用户可以将由第一移动矢量指定的移动应用于由第二用户选择的第二化身。以这种方式,由第一用户在第一移动矢量中记录的任何运动都可以由第二用户应用于由第二用户选择的替选化身。
127.在一些实施方式中,增强系统208向用户呈现移动矢量的列表。每个移动矢量用相同或不同的虚拟对象表示,以向用户示出移动看起来如何。在一些情况下,虚拟对象是其中
骨骼关节以骨骼关节在移动矢量中移动的方式移动的人类骨架。用户可以从列表中轻击或选择给定的移动矢量。然后,可以由用户选择化身或虚拟对象,并将选择的移动矢量应用于选择的化身或虚拟对象,以使化身或虚拟对象以与选择的移动矢量中的骨骼关节相同的方式移动。动画化身或虚拟对象被放置在描绘或不描绘用户的视频中,并且可以与一个或更多个其他用户共享。在列表中包括的移动矢量可以包括在通信中从一个或更多个其他用户接收到的移动矢量。
128.在一些实施方式中,第二用户可以增加或修改在第一移动矢量中指定的移动。例如,第二用户可以选择用于将第二化身添加到由第二用户的客户端设备捕获的实时视频馈送的选项。增强系统208向第二用户呈现用于将从第一用户接收到的第一移动矢量应用于第二化身的选项。响应于将第一移动矢量应用于第二化身,使第二化身动画化以循环进行在第一移动矢量中指定的运动。在描绘第二化身的视频上呈现记录选项。响应于选择记录选项,增强系统208识别视频中的人,并且跟踪所识别的人的骨骼关节的移动。可以基于第一移动矢量停止使第二化身动画化,并且第二化身可以基于骨骼关节的实时跟踪开始模仿或被移动。在另一示例中,可以响应于接收到对记录选项的用户选择,在实时视频馈送上呈现两个化身。第二化身可以继续被显示并且基于第一移动矢量循环进行动画,并且附加化身可以与第二化身一起显示,其中附加化身基于对视频中的人的骨骼关节的实时跟踪和记录而移动。具体地,增强系统208基于第一移动矢量以循环方式更新第二化身的移动,并且基于根据骨骼关节跟踪而实时跟踪的用户的移动来更新附加化身的移动。
129.增强系统208记录所识别的人的移动,并且响应于接收到来自第二用户的用于停止记录移动的输入而生成第二移动矢量。例如,当第二用户释放记录选项时,增强系统208将在按压记录选项的时间与接收到记录选项的时间之间捕获的骨骼关节的移动存储在第二移动矢量中。增强系统208向第二用户呈现用于基于第二移动矢量修改第一移动矢量的选项。具体地,呈现屏幕上选项,该屏幕上选项要求用户指定是将第二移动矢量放置到第一移动矢量前面(例如,在由第一移动矢量指定的移动之前插入第二移动矢量的所有移动)还是将第二移动矢量追加到第一移动矢量(例如,在由第一移动矢量指定的移动之后插入第二移动矢量的所有移动)。
130.响应于接收到选择前置选项的用户输入,通过将第二移动矢量复制到第一移动矢量的开头来修改第一移动矢量。因此,基于修改或更新的第一移动矢量而被动画化的3d化身使首先由第二移动矢量指定的移动的动画以及然后使由第一移动矢量指定的移动的动画循环。即,使3d化身执行由第二移动矢量指定的所有移动,然后执行由第一移动矢量指定的所有移动。响应于接收到选择追加选项的用户输入,通过将第二移动矢量复制到第一移动矢量的末尾来修改第一移动矢量。因此,基于修改或更新的第一移动矢量而被动画化的3d化身首先循环进行由第一移动矢量指定的移动的动画以及然后循环进行由第二移动矢量指定的移动的动画。即,使3d化身执行由第一移动矢量指定的所有移动,然后执行由第二移动矢量指定的所有移动。
131.作为另一示例,第二用户可以在不修改第一移动矢量的情况下记录第二移动矢量。即,在第二用户记录第二移动矢量之后,与第二化身一起呈现的附加化身停止跟踪和模仿被跟踪的骨骼关节的运动,并且开始被动画化以使第二移动矢量地动画循环。因此,向第二用户呈现多个化身的实时视频馈送,所述多个化身执行在其相关联的移动矢量中指定的
移动并且使移动的动画循环。例如,第二化身可以被动画化以使从第一用户接收到的第一移动矢量中指定的移动循环,并且附加化身可以被动画化以使由第二用户新创建的第二移动矢量指定的移动循环。第二用户可以使视频中的多个化身在3d空间中四处移动。随着每个化身在3d空间中移动,化身继续循环进行在与相应化身相关联的移动矢量中指定的移动的动画。
132.第二用户可以捕获根据修改或更新的第一移动矢量执行移动的选择的化身的图像或视频。然后,第二用户可以将通信发送回第一用户或第三用户,该通信包括描绘执行修改的第一移动矢量的移动的所选择的化身(以及可选地一个或更多个人)的视频或更新的第一移动矢量。第二用户可以捕获根据相应的移动矢量执行移动的多个化身的图像或视频。
133.增强系统208包括多个冗余跟踪子系统604a至604c,这些冗余跟踪子系统604a至604c使得能够在这样的跟踪子系统之间无缝转换,增强系统208从在捕获视频时存储的多个跟踪方法获得传感器信息,并将这样的多个跟踪方法传感器信息合并到单个跟踪系统中。该系统能够基于由跟踪系统跟踪的跟踪标记的可用性通过在来自多个跟踪系统的存储的传感器信息之间进行组合和转换,来将跟踪虚拟对象与6dof和3dof(自由度)进行组合。当由任何一个跟踪子系统跟踪的标记在视频的捕获期间变得不可用时,增强系统208在以6dof与3dof进行的跟踪之间无缝地切换,从而向用户提供不中断的体验。例如,在视觉跟踪系统(例如,nft、slam)的情况下,通常分析以确定取向的跟踪标记可以用来自陀螺仪跟踪系统的陀螺仪跟踪标记代替。这将因此能够基于跟踪标记的可用性在6dof与3dof的跟踪之间进行转换。
134.在一些示例实施方式中,为了在6dof与3dof的跟踪之间转换,增强系统208收集跟踪标记并将其存储在包括平移标记(例如,上、下、左、右)和旋转标记(例如,俯仰、偏航、滚转)的跟踪矩阵内。由nft系统收集的平移标记由此可以从跟踪矩阵中提取,并且在由nft系统收集的未来平移标记变得不准确或不可用时使用。同时,旋转标记继续由陀螺仪提供。以这种方式,当移动设备丢失跟踪标记时,存在于三维空间中的被跟踪对象将不会在跟踪标记丢失时的帧处突然改变。随后,当目标跟踪对象重新出现在屏幕中,并且获得新的平移t1时,视图矩阵的平移部分将利用新的平移t1,并且使用t1至t0作为视图矩阵的平移。
135.图7是示出在执行用于在视频中渲染虚拟对象的过程700时的增强系统208的示例操作的流程图。过程700可以被体现在计算机可读指令中以供一个或更多个处理器执行,使得过程700的操作可以由客户端设备208的功能部件部分或全部执行;因此,下面以示例的方式参照示例来描述过程700。然而,在其他实施方式中,过程700的操作中的至少一些操作可以被布置在各种其他硬件配置上。因此,该过程700不旨在限于增强系统208。
136.在操作701处,由与第一用户相关联的客户端设备102实现的增强系统208接收来自第二用户的通信。例如,第二用户的客户端设备102向第一用户发送聊天消息,该聊天消息附接或包括由第二用户记录的移动矢量。
137.在操作702处,如以上所说明的,增强系统208从通信中检索表示第二用户的一组骨骼关节的3d移动的移动矢量。例如,第一用户可以打开聊天消息以获得由第二用户记录的移动矢量,该移动矢量指定第二用户的骨骼关节在给定时间间隔(例如,3秒)中的3d定位、速度和加速度。作为另一个示例,第二用户可以生成移动矢量并将移动矢量上传到远程
数据库。远程数据库可以将移动矢量的标识符提供回至第二用户。在这种情况下,通信提供移动矢量的标识符。然后,第一用户客户端设备102访问远程数据库服务器,并提供移动矢量的标识符以检索由第二用户生成的移动矢量。
138.在操作703处,增强系统208接收选择3d化身的输入。例如,增强系统208在客户端设备102的显示器上呈现化身或虚拟对象的列表,并且第一用户从列表中轻击或选择给定化身或虚拟对象。在一些实施方式中,除了选择3d化身以应用所接收的移动矢量之外,或者作为选择3d化身以应用所接收的移动矢量的替选,增强系统208接收用于预览由移动矢量表示的运动的输入。在这种情况下,增强系统208呈现移动矢量的骨骼动画。在一些实施方式中,除了选择3d化身以应用所接收的移动矢量之外或作为选择3d化身以应用所接收的移动矢量的替选,增强系统208接收用于修改移动矢量的输入。在这种情况下,增强系统208呈现图形用户界面,该图形用户界面允许用户将新的移动矢量追加到所接收的移动矢量,将新的移动矢量附加到所接收的移动矢量的前面,以及/或者删除或移除所接收的移动矢量的部分。在一些实施方式中,除了选择3d化身以应用所接收的移动矢量之外,或者作为选择3d化身以应用所接收的移动矢量的替选,增强系统208接收用于生成新的移动矢量的输入。在这种情况下,增强系统208呈现基于接收到的移动矢量被动画化的3d化身以及一个或更多个附加化身(例如,个性化化身),该一个或更多个附加化身模仿由用户做出的移动,同时这样的移动被记录到新的移动矢量中。然后,用户可以与第三用户共享从第二用户接收到的移动矢量和新的移动矢量。第三用户可以将接收到的移动矢量应用于包括个性化化身(例如,包括与第三用户的面部特征和身体特征相似的面部特征和身体特征的化身)的一个或更多个化身,或者应用于与第一用户和第二用户相关联的化身。
139.在操作704处,增强系统208使3d化身动画化,以模仿第二用户的一组骨骼关节的3d移动。例如,增强系统208移动与存储在移动矢量中的骨骼关节对应的化身(由第一用户选择)的骨骼装备部分,以反映在移动矢量中表示的第二用户的骨骼关节在给定时间段内的运动。即,第一用户可以选择化身来以循环方式动画化,以模仿所捕获和存储在从第二用户接收到的移动矢量中的第二用户的运动。
140.返回参照图6,增强系统208被配置成在三维空间中相对于真实世界对象的位置处渲染和显示虚拟对象。在一个示例中,增强系统208维护一组模板,以生成要在视频中显示的虚拟对象。在接收到从一组模板之中对模板的选择和对视频中的位置的选择时,增强系统208生成虚拟对象并将其分配至视频的三维空间内的位置。
141.由此,增强系统208通过6dof中的一个或更多个跟踪系统在三维空间中跟踪虚拟对象相对于视频中的真实世界对象的位置。例如,增强系统208的一个或更多个跟踪系统收集一组跟踪标记(例如,滚转、俯仰、偏航、自然特征等)并对其进行分析,以在具有6dof的三维空间中跟踪虚拟对象相对于真实世界对象的位置。在这样的实施方式中,增强系统208基于跟踪标记的可用性在跟踪系统之间转换,以在6dof中保持一致的跟踪。
142.在一些实施方式中,增强系统208自动地跟踪并调整虚拟对象(例如,经动画化的3d化身)相对于作为人的真实世界对象的移动和定位。即,增强系统208处理视频以确定在视频中是否存在人。响应于检测人在视频中的存在,增强系统208自动地执行3d骨骼跟踪,以确定人的各种关节位置和3d真实世界坐标作为参考点。然后,增强系统208自动地开始基于人的参考点来调整虚拟对象的移动和放置。作为示例,增强系统208计算3d骨骼关节相对
于3d参考点的一组3d变换。3d变换用于以与3d骨骼关节实时移动相同的方式调整虚拟对象(角色)。在一些情况下,将每个3d骨骼关节映射到化身的对应3d骨骼装备部分(关节)。3d变换指示化身的对应3d骨骼装备关节应当如何移动以反映相关联人的关节在3d中的移动。
143.在一些情况下,增强系统208计算人在视频中的3d姿势,并且将3d姿势应用于一个或更多个虚拟对象,使得虚拟对象在3d中反映人的姿势和移动。作为示例,实时地捕获和跟踪在视频中检测到的人的运动,并且将相同的运动应用于一个或更多个虚拟对象,使得一个或更多个虚拟对象以与该人相同或相似的方式在3d中移动。被在给定的时间间隔或时段(例如,3秒)内记录该运动或姿势,并且将其存储在移动矢量中。然后,可以将该移动矢量应用于同一虚拟对象或任何其他合适的化身或虚拟对象。
144.在一些实施方式中,增强系统208未能在视频中检测到人。在这种情况下,增强系统208向客户端设备102上的用户呈现在视频中存在的检测到的对象的列表。增强系统208接收对给定的检测到的对象(例如,猫)的用户选择,并且作为响应,增强系统208计算所选择的检测对象在3d空间中的参考位置,并调整虚拟对象相对于参考位置的定位和移动。以这种方式,当参考位置指示对象(例如,人或所选择的真实世界对象)在特定的方向上以及以特定速度移动时,增强系统208立即且自动地更新虚拟对象按相同方向和速度的位置和移动。在一个示例中,真实世界对象可以跳跃,从而使3d参考位置沿y轴移位指定距离。作为响应,增强系统208更新虚拟对象位置,以使其也跳跃,并沿y轴移位与真实世界对象相同的指定距离。
145.在检测到所跟踪的一组标记之中的一个或更多个标记的中断,使得在6dof中进行的跟踪变得不可靠或不可能时,增强系统208转换成在3dof的三维空间中跟踪虚拟对象,以防止显示的中断。例如,增强系统208从第一跟踪系统(或一组跟踪系统中的第一组跟踪系统)转换到一组跟踪系统(或第二组跟踪系统)中的第二跟踪系统。在一个示例中,第二跟踪系统能够基于可用的跟踪标记,在三维空间中以3dof跟踪虚拟对象。
146.在一些示例实施方式中,增强系统208的一组跟踪系统包括陀螺仪跟踪系统、nft系统和slam跟踪系统。一组跟踪系统中的每个跟踪系统可以分析跟踪标记,以跟踪虚拟对象在三维空间内相对于真实世界对象参考位置的位置。例如,为了以6dof跟踪虚拟对象,增强系统208可能需要至少六个跟踪标记是可用的。当跟踪标记由于各种原因而变为遮挡或不可用时,增强系统208可以在该组跟踪系统之中的可用跟踪系统之间转换,以在必要时维持6dof或转换到3dof。
147.将容易理解的是,这些增强现实系统124用于在各种环境和情况下的真实世界三维空间中提供一致的渲染虚拟对象。在许多应用中,可能期望为这些虚拟对象在真实世界场景的视频内的位置提供牢固的一致性。这可以涉及在真实世界场景中识别和使用特定的固定参考点(例如,固定表面或对象)。
148.为了确保虚拟对象的位置方面的牢固的一致性,可以采用特定于本文中描述的视频剪辑中进行的三维对象跟踪和渲染的以呈现“透镜”的示例形式的注释数据。特别地,运动捕获603是呈现透镜,其识别和参考真实世界对象(例如,人)以用于生成和记录表示真实世界对象在给定时间段内的运动的运动或移动矢量或者用于利用新捕获和生成的移动矢量来修改所接收的移动矢量。运动捕获603可以是呈现透镜,当用户在记录运动时以及当用户选择给定移动矢量(表示先前捕获的运动)以应用于使插入视频中的虚拟对象动画化时,
该呈现透镜被激活。如所示出的,运动捕获603可以是以上所阐述的整个增强系统208的渲染模块602内的特定部分或子模块。
149.将3dof姿势连同视频剪辑帧提供给增强系统208的表面跟踪部件,在该表面跟踪部件中提取和跟踪视频帧中的感兴趣的特征或关键点,以确定它们跨视频帧移动的方式,从而融合来自3dof姿势的取向信息,以生成所得到的6dof姿势。在benezra等人的题为“systems and methods for simultaneous localization and mapping”的美国公开第2018/0061072号中描述了可以如何执行该融合的示例性细节,该美国公开的全部内容通过引用并入本文中。
150.然后,将来自表面跟踪部件的6dof姿势提供给渲染模块602,以定位摄像装置,使得虚拟对象(例如,经动画化的化身)被渲染,就像它们在原始视频捕获期间被放置在真实世界中一样。渲染模块602使虚拟对象的放置和张贴的改变与所捕获的场景中的摄像装置位置和取向的改变同步。
151.使用这样的运动捕获603作为整个虚拟渲染的一部分,可以引起甚至在一个或更多个对象位置或摄像装置角度在整个视频中改变时更动态地令人信服的呈现。
152.在一方面,增强系统208提供用于接收用户输入以添加虚拟动画对象来增强视频的图形用户界面。图形用户界面可以包括工具栏或窗格(它可以是部分透明的,或者可以是不透明的)。工具栏或窗格可以在图形用户界面中通过每个虚拟动画对象的图标的方式呈现多个虚拟动画对象。使每个虚拟动画对象动画化,以表示存储在对应移动矢量中的运动。
153.在一些情况下,将相同的移动矢量应用于每个虚拟动画对象,在这种情况下,使所有的虚拟动画对象动画化,以便以相同的方式移动。在一些情况下,将第一移动矢量应用于第一组虚拟动画对象,并且将第二移动矢量应用于第二虚拟动画对象。在这种情况下,使第一组虚拟动画对象动画化以基于第一移动矢量以相同的第一方式移动,并且使第二组虚拟动画对象动画化以基于第二移动矢量以相同的第二方式移动。
154.用户可以与工具栏或窗格交互,以选择给定的虚拟动画对象以放置在视频中。一旦该虚拟动画对象被放置在视频中,图形用户界面就允许用户在给定的帧周围移动虚拟动画对象。一旦虚拟动画对象被放置在选择的位置处,就计算相对于给定的真实世界对象(例如,人)的3d参考位置的3d偏移量。该3d偏移量继续被跟踪和计算,以基于真实世界对象的移动连续调整虚拟动画对象的3d位置。
155.在将虚拟对象添加到视频之后,可以在3dof或6dof中以各种方式修改或操纵虚拟对象。在于2017年4月28日提交的题为“augmented reality object manipulation”的共同拥有、共同转让的美国专利申请第15/581,994号中讨论了可以如何操纵虚拟对象的示例,该美国专利申请的全部内容通过引用并入本文中。
156.在一些情况下,用户可以选择要添加的随机数量的相同经动画化增强现实项。在这种情况下,运动捕获603将增强现实项(例如,增强现实项的4个副本)在真实世界对象周围或围绕真实世界对象均匀地分布。一旦指定数量的虚拟对象或增强现实项围绕真实世界对象(例如,在虚拟对象的4个副本围绕真实世界对象之后),运动捕获603就可以将附加的虚拟对象(例如,第五个副本)放置在虚拟对象中的给定虚拟对象的前方。该过程继续直到所有的副本被添加到视频。然后,运动捕获603以相同的方式跟踪和更新虚拟对象的每个副本的移动,以模仿在移动矢量中先前捕获并且存储的真实世界对象的移动。
157.可以基于被添加的虚拟对象的类型来设置可以添加到视频的相同经动画化虚拟对象的最大数量。例如,属于某种第一类型的虚拟对象(例如,动物或具有某种第一大小的对象)可以被复制第一次数(例如,8次)。属于某种第二类型的虚拟对象(例如,表示用户的化身或具有比第一大小大的某种第二大小的对象)可以被复制第二次数(例如,4次)。
158.图8是示出根据某些示例实施方式的在执行用于在视频中渲染虚拟对象的过程800时的增强系统208的操作的流程图。过程800可以被体现在计算机可读指令中以供一个或更多个处理器执行,使得过程800的操作可以由客户端设备208的功能部件部分或全部执行;因此,下面以示例的方式参照示例来描述过程800。然而,应当理解的是,过程800的至少一些操作可以被部署在各种其他硬件配置上,并且过程800不旨在限于增强系统208。
159.在操作802处,增强系统208接收输入以激活运动捕获。例如,第二用户可以选择屏幕上选项,以开始记录第二用户的移动(例如,以跟踪人的骨骼关节在指定时间段内的3d移动),并且将移动存储在第一移动矢量中。
160.在操作804处,增强系统208检测视频(例如,由客户端设备102捕获的实时视频馈送)中描绘的真实世界对象的3d参考点。例如,增强系统208选择视频中描绘的人的一个或更多个骨骼关节,并且计算所选择的骨骼关节的3d坐标作为3d参考点。
161.在操作806处,增强系统208基于3d参考点来定向虚拟对象。例如,增强系统208将虚拟对象放置在远离3d参考点的指定距离处。指定距离可以预先确定,或由第二用户选择,或基于与3d参考点相关联的真实世界对象的类型来确定。例如,真实世界对象的表面类型可以与虚拟对象被放置的第一距离相关联。作为另一示例,真实世界移动的对象(例如,汽车或动物)可以与虚拟对象被放置的第二距离相关联。
162.在操作807处,增强系统208将第一移动矢量应用于虚拟对象(例如,虚拟角色或3d化身)。例如,增强系统208将人在一段时间(例如,3秒的阈值或与由第二用户通过与记录选项的交互选择的持续时间对应的时段)期间的移动存储在给定的一组帧中。然后,应用该移动以使虚拟对象的动画循环,以模仿人在随后一组帧中的移动。具体地,第二用户首先记录他/她的移动的前三秒视频,并且这样的移动被用于生成第一运动或移动矢量。然后,在第二实时视频中使用该第一运动或移动矢量来使模仿与该移动或运动矢量对应的运动的虚拟对象的动画循环。在一些情况下,第一视频和第二视频都是同一实时视频的一部分,并且将用户的移动捕获并存储在移动矢量中,而无需记录视频。相反,移动是通过分析和存储给定时间段(例如,由第二用户通过切换记录/停止选项指定的时间段)内的骨骼关节移动来捕获和存储的。
163.在操作808处,增强系统208相对于视频中描绘的真实世界对象使虚拟对象动画化。例如,由于真实世界对象在3d空间中是静止的并且不四处移动(或者,由于真实世界对象独立于虚拟对象四处移动),因此使虚拟对象动画化,以模仿先前捕获并存储在第一移动矢量中的人的移动。具体地,在第二用户记录了在给定时间段内执行的移动以生成第一移动矢量之后,第一移动矢量被用于生成循环模仿这样的移动的经动画化虚拟对象。经动画化的虚拟对象(以循环的方式执行用户的先前捕获的移动)可以在视频中被四处拖动并放置在任何地方,而不管并独立于由用户执行的任何进一步的运动。
164.在操作809处,增强系统208捕获第二移动矢量。作为示例,第二用户在与第一用户的通信中发送第一移动矢量。然后,第一用户可以通过选择记录运动选项来类似地记录新
的或第二移动矢量。具体地,第一用户可以选择第二虚拟对象以显示在实时馈送中并模仿实时馈送中描绘的人的移动。当激活记录运动选项时,第二虚拟对象可以表示人的运动(例如,基于对人的骨骼关节的跟踪来更新)。在不再激活记录运动选项之后,将先前捕获的运动存储在第二移动矢量中,并且第二虚拟对象开始以循环方式使先前捕获的运动动画化。
165.在操作810处,增强系统208基于第二移动矢量更新第一移动矢量,以修改虚拟对象运动。例如,在第一用户完成记录第二移动矢量之后,第一用户可以将第二移动矢量附加到第一移动矢量前面或追加到第一移动矢量。在用户选择用于前置或追加第二移动矢量以修改第一移动矢量的选项之后,现在基于经修改的第一移动矢量使第二虚拟对象动画化。
166.替选地,可以独立于修改第一移动矢量来存储第二移动矢量。在这种情况下,第一虚拟对象可以被呈现在实时视频馈送中,并且可以基于从第二用户接收到的第一移动矢量被动画化(例如,第一虚拟对象循环进行模仿第二用户的先前捕获和存储的移动的动画),并且第二虚拟对象可以(与第一虚拟对象一起)被呈现在实时视频馈送中并且可以基于第二移动矢量被动画化(例如,第二虚拟对象循环进行模仿第一用户的先前捕获和存储的移动的动画)。
167.图9至图11是描绘根据示例实施方式的由增强系统208在三维空间内渲染的对象的图。如图9所示,将图形用户界面900呈现在第二用户的客户端设备102的显示器上。图形用户界面900呈现用于开始运动捕获的选项902,并且提供指示第二用户可以记录一组移动、将该组移动发送给第一用户以及出现在朋友的新闻馈送中的提示。响应于从第二用户接收到选择选项902以开始运动捕获的输入,增强系统208开始记录第二用户的移动并且生成第一移动矢量(如图10的示例用户界面中所示的)。
168.如图10所示,图形用户界面1000呈现在第二用户的客户端设备102的显示器上,其中,真实世界对象1002(例如,人或用户)与虚拟对象1001(例如,3d化身)一起示出。如界面1000中所示出的,真实世界对象1002直接在虚拟对象1001的后面,并且可能被虚拟对象1001遮挡(至少部分地),虚拟对象1001叠加在真实世界对象1002的顶部上。即,虚拟对象1001的大小可以对应于真实世界对象1002的大小。这样,当用户执行移动时,虚拟对象1001以相同的方式移动,因此在模仿用户的移动时,用户可以可视化虚拟对象1001看起来如何。第二用户可以通过与记录开始/停止选项1003交互,控制用户执行的移动何时被存储在移动矢量中,以随后使由虚拟对象1001循环进行移动的动画。
169.记录开始/停止选项1003也被呈现在图形用户界面1000中。响应于接收到对记录开始/停止选项1003的用户选择,增强系统208开始跟踪真实世界对象1002的骨骼关节的移动。例如,真实世界对象1002在图形用户界面1000中处于第一姿势,并且移动到第二姿势,如图形用户界面1010中的真实世界对象姿势1012所示的。当真实世界对象1002在从图形用户界面1000到图形用户界面1010的帧序列中移动时,虚拟对象1001模仿人的骨骼关节的移动。例如,如图形用户界面1000中所示出的,虚拟对象1001以相同的方式摆姿势以模仿真实世界对象1002的姿势。如图形用户界面1010所示,更新虚拟对象1011的姿势,以反映处于第二姿势的真实世界对象1012的移动。即,在记录真实世界对象1002的骨骼关节的移动的同时,虚拟对象1001也移动并被动画化。在一个示例中,在记录开始/停止选项1003上呈现圆形进度条1090,以指示记录的进度(例如,向第二用户通知记录的移动有多长时间)。在一些情况下,进度条在5秒处终止,这限制了捕获并存储在移动矢量中的运动的持续时间。
170.响应于接收到对记录开始/停止选项1003的用户选择,在移动开始被记录之后,增强系统208停止记录移动。将骨骼关节跨记录开始时与记录终止时之间的时间段期间的帧序列的任何移动都存储在第一移动矢量中。响应于接收到对用于停止记录移动的选项1003的用户选择,虚拟对象1001停止模仿真实世界对象1002的移动,并且变成经动画化的虚拟对象。在这一点上,虚拟对象1001转换以使第一移动矢量中的移动的动画循环。即,通过在记录真实世界对象1002的移动的同时虚拟对象1001所进行的移动,虚拟对象1001开始循环。可以在专用画面中呈现循环,该专用画面示出不同的虚拟对象根据其相关联的移动矢量的动画循环。替选地,可以在示出真实世界场景的实时摄像装置馈送的摄像装置视图中呈现循环。
171.第二用户可以向第一用户发送包括第一移动矢量的通信。该通信还可以包括将第二用户与虚拟对象1001一起描绘的视频或图像。在虚拟对象1001循环进行第一移动矢量中指定的运动的动画时,视频中的第二用户可以处于一个连续姿势或一组姿势。第一用户可以打开通信并访问第一移动矢量,以将第一移动矢量中指定的移动应用于第二化身(第二虚拟对象)。结合图11示出并描述了在第一用户的客户端设备102上呈现的图形用户界面。
172.如图11所示,呈现了图形用户界面1100,在该图形用户界面1100中,可以由第一用户将经动画化的虚拟对象1102放置在3d空间中相对于真实世界对象1102的位置的任何地方。即,在第一用户接收和访问来自第二用户的第一移动矢量之后,呈现图11的图形用户界面1100,以允许第一用户将经动画化的虚拟对象1102放置在视频上的任何地方。经动画化的虚拟对象1102循环进行在从第二用户接收到的第一移动矢量中指定的运动的动画。当经动画化的虚拟对象1102在3d空间中四处移动时,经动画化的虚拟对象1102通过由第一移动矢量指定的移动进行循环。即,经动画化的虚拟对象1102通过对由第二用户先前捕获的真实世界对象1002的移动进行模仿的移动来进行循环。真实世界对象1101可以处于任何姿势,并且是静止的,或者以与动画虚拟对象1102的移动不同的方式进行移动。
173.作为示例,真实世界对象1101站立在位置上,并且似乎凝视或看向放置动画虚拟对象1102的方向。如图形用户界面1110所示,经动画化的动画虚拟对象1102自动地从第一姿势(在图形用户界面1100中示出的)移动到由经动画化的虚拟对象1112进行的第二姿势(图形用户界面1110)。在该示例中,真实世界对象1101执行一组运动,而经动画化的虚拟对象移动并改变姿势以模仿从第二用户接收到的第一移动矢量中指定的移动。
174.如所示出的,由第一用户选择的经动画化虚拟对象1102的移动反映在捕获运动时呈现给第二用户的虚拟对象1001的移动并且与虚拟对象1001的移动相同。即,界面1000示出处于第一姿势的第一虚拟对象1001,并且该姿势被记录在第一移动矢量中的姿势序列中。当将第一移动矢量应用于虚拟对象1102时,虚拟对象1102执行与第一虚拟对象1001相同的姿势。界面1010示出了处于第二姿势的第一虚拟对象1011,该第二姿势顺序地跟随由第一虚拟对象1001执行的第一姿势。该第二姿势被记录在第一移动矢量中的姿势序列中,作为在第一姿势之后执行的姿势。如界面1110中所示出的,当将第一移动矢量应用于虚拟对象1102时,虚拟对象1112执行与第一虚拟对象1011相同的姿势。更具体地,将由第二用户选择的第一虚拟对象执行的相同姿势序列(例如,从界面1000到界面1010所示的虚拟对象1001的姿势转换)存储在第一移动矢量中,并且应用于由第一用户选择的第二虚拟对象(例如,从界面1100到界面1110所示的虚拟对象1102的姿势转换与从界面1000到界面1010的虚
拟对象1001的姿势转换相同)。以这种方式,由一个用户记录的移动可以应用于由另一个用户选择的虚拟对象。
175.还呈现了记录选项1113,以允许第一用户将移动记录在新的移动矢量中,或者替换在从第二用户接收到的第一移动矢量中记录的移动。响应于接收到选择记录选项1113的用户输入,可以呈现新的虚拟对象以模仿在实时视频馈送中呈现的人1101的骨骼关节移动。在一些情况下,响应于接收到选择记录选项1113的用户输入,虚拟对象1102停止基于第一移动矢量被动画化,并且开始模仿在实时视频馈送中呈现的人1101的骨骼关节移动。在第一用户选择终止运动的记录的选项之后,跟踪骨骼关节移动并且将其存储在第二移动矢量中。可以呈现提示,该提示要求用户指示是否要将第二移动矢量附加在第一移动矢量前面、追加至第一移动矢量或独立于第一移动矢量进行存储。被呈现的新虚拟对象可以开始基于第二移动矢量而被动画化,以循环进行由人在运动被记录的时间段内执行的移动。替选地,虚拟对象1102开始基于第一移动矢量的经修改版本而被动画化(例如,如果将第二移动矢量追加到第一移动矢量,则虚拟对象1101开始循环进行第一移动矢量的移动,随后是循环进行第二移动矢量的移动)。
176.可以在图11中同时呈现多个虚拟对象,其中每个虚拟对象执行运动或者被动画化以循环进行在相应移动矢量中指定的运动。例如,第一虚拟对象可以由第一用户呈现并定位在3d空间中,其中第一虚拟对象循环进行由从第二用户接收到的第一移动矢量指定的移动的动画。此外,第二虚拟对象可以由第一用户呈现并定位在3d空间中,其中第二虚拟对象循环进行由第二移动矢量指定的移动的动画。第三虚拟对象可以由第一用户呈现并定位在3d空间中,其中第三虚拟对象循环进行由第一移动矢量和第二移动矢量的组合指定的移动的动画。
177.软件架构
178.图12是示出示例软件架构1206的框图,该示例软件架构1806可以与本文中描述的各种硬件架构结合使用。图12是软件架构的非限制性示例,应当理解的是,可以实现许多其他架构以促进本文中描述的功能。软件架构1206可以在硬件诸如图13的机器1300上执行,机器1200包括处理器1304、存储器1314和输入/输出(i/o)部件1318等。示出了代表性硬件层1252并且该代表性硬件层1852可以表示例如图13的机器1300。代表性硬件层1252层包括具有相关联的可执行指令1204的处理单元1254。可执行指令1204表示软件架构1206的可执行指令,包括本文中描述的方法、部件等的实现方式。硬件层1252还包括也具有可执行指令1204的存储器和/或存储模块存储器/存储装置1256。硬件层1252还可以包括其他硬件1258。
179.在图12的示例架构中,软件架构1206可以被概念化为层的堆叠,在所述层的堆叠中,每个层提供特定功能。例如,软件架构1206可以包括诸如操作系统1202、库1220、应用1216、框架/中间件1218和呈现层1214的层。在操作上,层内的应用1216和/或其他部件可以通过软件堆栈激活应用编程接口(api)调用1208并且响应于api调用1208而接收消息1212。所示的层在本质上是代表性的,并且并非所有软件架构都具有所有的层。例如,一些移动操作系统或专用操作系统可能不提供框架/中间件1218,而其他操作系统可能提供这样的层。其他软件架构可以包括另外的层或不同的层。
180.操作系统1202可以管理硬件资源并且提供公共服务。操作系统1202可以包括例如
内核1222、服务1224和驱动器1226。内核1222可以用作硬件与其他软件层之间的抽象层。例如,内核1222可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务1224可以为其他软件层提供其他公共服务。驱动器1226负责控制底层硬件或与底层硬件接口(interface)。例如,根据硬件配置,驱动器1226包括显示器驱动器、摄像装置驱动器、驱动器、闪速存储器驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动器、音频驱动器、电源管理驱动器等。
181.库1220提供由应用1216和/或其他部件和/或层使用的公共基础设施。库1220提供如下功能,该功能允许其他软件组件以比与底层操作系统1202的功能(例如,内核1222、服务1224和/或驱动器1226)直接对接的方式更容易的方式来执行任务。库1220可以包括系统库1244(例如,c标准库),该系统库1244可以提供函数,诸如存储器分配函数、字符串操纵函数、数学函数等。此外,库1220可以包括api库1246,例如媒体库(例如,支持诸如mpreg4、h.264、mp3、aac、amr、jpg、png的各种媒体格式的呈现和操纵的库)、图形库(例如,可以用于在显示器上以图形内容呈现二维和三维的opengl框架)、数据库库(例如,可以提供各种关系数据库功能的sqlite)、web库(例如,可以提供web浏览功能的webkit)等。库1220还可以包括各种其他库1248,以向应用1216和其他软件部件/模块提供许多其他api。
182.框架/中间件1218(有时也被称为中间件)提供可以由应用1216和/或其他软件组件/模块使用的较高级别的公共基础设施。例如,框架/中间件1218可以提供各种图形用户界面(gui)功能、高级资源管理、高级位置服务等。框架/中间件1218可以提供可以由应用1216和/或其他软件组件/模块利用的广泛的其他api,其中一些api可以专用于特定的操作系统1202或平台。
183.应用1216包括内置应用1238和/或第三方应用1240。代表性内置应用1238的示例可以包括但不限于:联系人应用、浏览器应用、图书阅读器应用、位置应用、媒体应用、消息应用和/或游戏应用。第三方应用1240可以包括由除了特定平台的供应商之外的实体使用android
tm
或ios
tm
软件开发工具包(sdk)开发的应用,并且可以是在诸如ios
tm
、android
tm
、电话的移动操作系统或其他移动操作系统上运行的移动软件。第三方应用1240可以调用由移动操作系统(例如,操作系统1202)提供的api调用1208,以促进本文中描述的功能。
184.应用1216可以使用内置操作系统功能(例如,内核1222、服务1224和/或驱动器1226)、库1220以及框架/中间件1218来创建用户界面,以与系统的用户交互。替选地或另外地,在一些系统中,可以通过表示层诸如呈现层1214来进行与用户的交互。在这些系统中,应用/部件“逻辑”可以与同用户交互的应用/部件的方面分开。
185.机器
186.图13是示出根据一些示例实施方式的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的方法中的任何一种或更多种方法的机器1300的部件的框图。具体地,图13示出了呈计算机系统的示例形式的机器1300的图形表示,在该机器1300内可以执行用于使机器1900执行本文讨论的方法中的任何一种或更多种方法的指令1310(例如,软件、程序、应用、小程序、app或其他可执行代码)。因此,可以使用指令1310来实现本文中描述的模块或部件。指令1310将通用的非编程的机器1300变换成被编程成以所描述的方式执行描述和示出的功能的特定机器1300。在替选实施方式中,机器1300作为独立设
备进行操作或者可以耦接(例如,联网)至其他机器。在联网的部署中,机器1300可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力进行操作,或者在对等(或分布式)网络环境中作为对等机器进行操作。机器1300可以包括但不限于:服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字助理(pda)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能电器)、其他智能设备、web设备、网络路由器、网络交换机、网络桥接器、或者能够顺序地或以其他方式执行指定要由机器1300采取的动作的指令1310的任何机器。此外,虽然仅示出了单个机器1300,但是术语“机器”还应被认为包括单独地或联合地执行指令1310以执行本文中讨论的任何一种或更多种方法的机器的集合。
187.机器1300可以包括可以被配置成例如经由总线1302相互通信的处理器1304、存储器/存储装置1306和i/o部件1318。在示例实现方式中,处理器1304(例如,中央处理单元(cpu)、简化指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、另一处理器或其任何合适的组合)可以包括例如可以执行指令1310的处理器1308和处理器1312。术语“处理器”旨在包括多核处理器1304,该多核处理器704可以包括可以同时执行指令的两个或更多个独立的处理器(有时被称为“核”)。虽然图13示出了多处理器1304,但是机器1300可以包括具有单个核的单个处理器、具有多个核的单个处理器(例如,多核处理器)、具有单个核的多个处理器、具有多个核的多个处理器或者其任何组合。
188.存储器/存储装置1306可以包括存储器1314诸如主存储器或其他存储器存储装置以及存储单元1316,处理器1304诸如可经由总线1302访问存储器1914和存储单元1916两者。存储单元1316和存储器1314存储体现本文中描述的方法或功能中的任何一个或更多个方法或功能的指令1310。指令1310还可以在其被机器1300执行期间完全地或部分地驻留在存储器1314内、存储单元1316内、处理器1304中的至少一个内(例如,处理器的高速缓冲存储器内)或者它们的任何合适的组合内。因此,存储器1314、存储单元1316以及处理器1304的存储器是机器可读介质的示例。
189.i/o部件1318可以包括接收输入、提供输出、产生输出、传送信息、交换信息、捕获测量结果等的各种各样的部件。包括在特定机器1300中的具体i/o部件1318将取决于机器的类型。例如,便携式机器例如移动电话将很可能包括触摸输入设备或其他这样的输入机构,而无头服务器(headless server)机器将很可能不包括这样的触摸输入设备。将理解,i/o部件1318可以包括图13中未示出的许多其他部件。仅为了简化以下讨论,i/o部件1318根据功能被分组,并且该分组决不是限制性的。在各种示例实施方式中,i/o部件1318可以包括输出部件1326和输入部件1328。输出部件1326可以包括视觉部件(例如,诸如等离子显示面板(pdp)、发光二极管(led)显示器、液晶显示器(lcd)、投影仪或阴极射线管(crt)的显示器)、听觉部件(例如,扬声器)、触觉部件(例如,振动马达、阻力机构)、其他信号生成器等。输入部件1328可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他定点仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
190.在其他示例实施方式中,i/o部件1318可以包括生物计量部件1330、运动部件
1334、环境部件1336或定位部件1338以及各种其他部件。例如,生物计量部件1330可以包括用于检测表达(例如,手表达、面部表达、声音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑电波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等的部件。运动部件1334可以包括:加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件1336可以包括例如照明传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或更多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声音传感器部件(例如,检测背景噪声的一个或更多个麦克风)、接近度传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,用于检测危险气体的浓度以确保安全或者用于测量大气中的污染物的气体检测传感器)或者可以提供与周围物理环境对应的指示、测量结果或信号的其他部件。位置部件1338可以包括定位传感器部件(例如,gps接收器部件)、海拔高度传感器部件(例如,检测可以从其得到海拔高度的气压的高度计或气压计)、取向传感器部件(例如,磁力计)等。
191.可以使用各种各样的技术来实现通信。i/o部件1318可以包括通信部件1340,该通信部件1940能够操作成分别经由耦接1324和耦接1322将机器1300耦接至网络1332或设备1320。例如,通信部件1340可以包括网络接口部件或与网络1332对接的其他合适的设备。在其他示例中,通信部件1340可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(nfc)部件、部件(例如,低功耗)、部件、以及经由其他模态提供通信的其他通信部件。设备1320可以是另一机器或各种外围设备中的任何一个外围设备(例如,经由usb耦接的外围设备)。
192.此外,通信部件1340可以检测标识符或者包括可操作成检测标识符的部件。例如,通信部件1340可以包括射频识别(rfid)标签读取器部件、nfc智能标签检测部件、光学读取器部件(例如,用于检测下述项的光学传感器:一维条形码诸如通用产品代码(upc)条形码;多维条形码,诸如快速响应(qr)代码、aztec代码、数据矩阵、数据图示符(dataglyph)、麦克斯码(maxicode)、pdf417、超代码、ucc rss-2d条形码和其他光学代码)、或者声学检测部件(例如,用于标识标记的音频信号的麦克风)。此外,可以经由通信部件1340得到各种信息,诸如,经由因特网协议(ip)地理定位得到位置、经由信号三角测量得到位置、经由检测可以指示特定位置的nfc信标信号得到位置等。
193.术语表:
194.该上下文中的“载波信号”是指能够存储、编码或携载由机器执行的指令的任何无形介质,并且包括数字通信信号或模拟通信信号或者促进这些指令的通信的其他无形介质。可以经由网络接口设备利用传输介质并且利用若干公知的传输协议中的任何一种传输协议来通过网络发送或接收指令。
195.该上下文中的“客户端设备”是指与通信网络接口以从一个或更多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是但不限于移动电话、桌上型计算机、膝上型计算机、pda、智能电话、平板计算机、超级本、上网本、多个膝上型计算机、多处理器系统、基于微处理器或可编程消费电子产品、游戏控制台、机顶盒或用户可以用于访问网络的任何其他通信设备。
196.该上下文中的“通信网络”是指网络的一个或更多个部分,网络可以是自组织网
络、内联网、外联网、虚拟专用网络(vpn)、局域网(lan)、无线lan(wlan)、广域网(wan)、无线wan(wwan)、城域网(man)、因特网、因特网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、其他类型的网络或两个或更多个这样的网络的组合。例如,网络或网络的一部分可以包括无线网络或蜂窝网络,并且耦接可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或其他类型的蜂窝或无线耦接。在该示例中,耦接可以实现各种类型的数据传输技术中的任何数据传输技术,例如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线电服务(gprs)技术、增强型数据速率gsm演进(edge)技术、包括3g的第三代合作伙伴计划(3gpp)、第四代无线(4g)网络、通用移动通信系统(umts)、高速分组接入(hspa)、全球微波接入互操作性(wimax)、长期演进(lte)标准、由各种标准设置组织定义的其他数据传输技术、其他长距离协议或其他数据传输技术。
197.该上下文中的“短暂消息”是指可以在时间有限的持续时间内访问的消息。短暂消息可以是文本、图像、视频等。针对短暂消息的访问时间可以由消息发送者设置。替选地,访问时间可以是默认设置或者由接收者指定的设置。无论设置技术如何,该消息都是暂态的。
198.该上下文中的“机器可读介质”是指能够临时或永久地存储指令1002和数据的部件、设备或其他有形介质,并且可以包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪速存储器、光学介质、磁介质、高速缓冲存储器、其他类型的存储装置(例如,可擦除可编程只读存储器(eeprom))和/或其任何合适的组合。术语“机器可读介质”应当被认为包括能够存储指令的单个介质或多个介质(例如,集中式或分布式数据库或者相关联的高速缓冲存储器和服务器)。术语“机器可读介质”还应被认为包括能够存储由机器执行的指令(例如,代码)的任何介质或多个介质的组合,使得指令在由机器的一个或更多个处理器执行时使机器执行本文中所描述的方法中的任何一种或更多种方法。因此,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云”的存储系统或存储网络。术语“机器可读介质”不包括信号本身。
199.该上下文中的“部件”是指具有由功能或子例程调用、分支点、api或者对特定处理或控制功能提供分区或模块化的其他技术定义的边界的设备、物理实体或逻辑。部件可以经由它们的接口与其他部件组合以执行机器处理。部件可以是被设计用于与其他部件一起使用的经封装的功能硬件单元并且可以是通常执行相关功能中的特定功能的程序的一部分。部件可以构成软件组件(例如,在机器可读介质上实施的代码)或硬件部件。“硬件部件”是能够执行某些操作的有形单元,并且可以以某种物理方式来配置或布置。在各种示例实施方式中,一个或更多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或更多个硬件部件(例如,处理器或处理器组)可以通过软件(例如,应用或应用部分)被配置为进行操作以执行如本文中描述的某些操作的硬件部件。
200.也可以机械地、电子地或其任何合适的组合来实现硬件部件。例如,硬件部件可以包括被永久地配置成执行某些操作的专用电路系统或逻辑。硬件部件可以是专用处理器,例如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件部件还可以包括通过软件被短暂配置成执行某些操作的可编程逻辑或电路系统。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过这样的软件被配置,则硬件部件成为被独特地
定制成执行所配置的功能的特定机器(或机器的特定部件),而不再是通用处理器。将理解的是,可以出于成本和时间考虑来推动在专用且永久配置的电路中或在临时配置(例如,通过软件配置)的电路中机械地实现硬件部件的决策。因此,短语“硬件部件”(或者“硬件实现的部件”)应当被理解成包含有形实体,即为被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)成以某种方式操作或者执行本文中描述的某些操作的实体。考虑硬件部件被短暂配置(例如,被编程)的实施方式,无需在任一时刻对硬件部件中的每个硬件部件进行配置或实例化。例如,在硬件部件包括通过软件配置而成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间处被配置为分别不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置一个或多个特定处理器,以例如在一个时刻处构成特定硬件部件并且在不同的时刻处构成不同的硬件部件。
201.硬件部件可以向其他硬件部件提供信息并且从其他硬件部件接收信息。相应地,所描述的硬件部件可以被认为是通信上耦接的。在同时存在多个硬件部件的情况下,可以通过在两个或更多个硬件部件之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中多个硬件部件在不同时间处被配置或被实例化的实施方式中,可以例如通过将信息存储在多个硬件部件可以访问的存储器结构中并且在该存储器结构中检索信息来实现这样的硬件部件之间的通信。例如,一个硬件部件可以执行操作,并且将该操作的输出存储在通信上耦接的存储器设备中。然后,其他硬件部件可以在随后的时间处访问存储器设备以检索和处理所存储的输出。
202.硬件部件还可以发起与输入设备或输出设备的通信,并且可以对资源(例如,信息的集合)进行操作。在本文中描述的示例方法的各种操作可以至少部分地由被临时地配置(例如,通过软件)或被永久地配置成执行相关操作的一个或更多个处理器来执行。无论是被临时地配置还是被永久地配置,这样的处理器可以构成进行操作以执行本文描述的一个或更多个操作或功能的处理器实现的部件。如本文所使用的,“处理器实现的部件”是指使用一个或更多个处理器实现的硬件部件。类似地,本文中描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是硬件的示例。例如,方法的至少一些操作可以由一个或更多个处理器或处理器实现的部件来执行。此外,一个或更多个处理器还可以进行操作以支持“云计算”环境中的相关操作的执行或作为“软件即服务”(saas)操作。例如,操作中的至少一些操作可以由计算机组(作为包括处理器的机器的示例)执行,其中,这些操作可经由网络(例如,因特网)并且经由一个或更多个适当的接口(例如,api)进行访问。某些操作的执行可以分布在处理器之间,不仅仅驻留在单个机器内,而是可以被部署在若干机器上。在一些示例实施方式中,处理器或处理器实现的部件可以位于单个地理定位中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施方式中,处理器或处理器实现的部件可以跨若干地理定位分布。
203.在该上下文中,“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器代码”等)操纵数据值并产生被应用以操作机器的相应输出信号的任何电路或虚拟电路(通过实际处理器上执行的逻辑模拟的物理电路)。例如,处理器可以是中央处理单元(cpu)、简化指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、asic、射频集成电路(rfic)或其任何组合。处理器还可以是具有两个或更多个可以同时执行指令的独立处理器(有时称为“核”)的多核处理器。
204.该上下文中的“时间戳”指的是标识某个事件何时发生的字符或编码信息的序列,例如,从而给出日期和一天中的时间,有时精确到几分之一秒。

技术特征:
1.一种方法,包括:通过与第一用户相关联的客户端设备,接收来自第二用户的通信;从所述通信中检索表示所述第二用户的一组骨骼关节的三维(3d)移动的移动矢量;通过与所述第一用户相关联的所述客户端设备,接收选择3d化身的输入;以及基于所述移动矢量,使所述3d化身动画化,以模仿所述第二用户的所述一组骨骼关节的3d移动。2.根据权利要求1所述的方法,还包括:通过与所述第二用户相关联的另一客户端设备,捕获描绘第二用户的视频;识别所述视频中描绘的所述第二用户的一组骨骼关节;以及基于检测到的所述第二用户的所识别的所述一组骨骼关节的移动,生成所述移动矢量。3.根据权利要求1至2中任一项所述的方法,还包括:接收来自所述第一用户的输入以修改所述移动矢量。4.根据权利要求3所述的方法,其中,所述移动矢量包括第一移动矢量,所述方法还包括:接收来自所述第一用户的用于记录新移动的输入;响应于接收到用于记录所述新移动的所述输入,捕获描绘所述第一用户的视频;识别所述视频中描绘的所述第一用户的一组骨骼关节;以及基于检测到的所述第一用户的所识别的所述一组骨骼关节的移动,生成第二移动矢量。5.根据权利要求3至4中任一项所述的方法,还包括:通过将所述第二移动矢量追加到所述第一移动矢量来修改所述第一移动矢量;以及基于所修改的第一移动矢量,使所述3d化身动画化,以模仿所述第二用户的所述一组骨骼关节的3d移动,随后模仿所述第一用户的所述一组骨骼关节的3d移动。6.根据权利要求3至5中任一项所述的方法,还包括:通过将所述第二移动矢量附加到所述第一移动矢量前面来修改所述第一移动矢量;以及基于所修改的第一移动矢量,使所述3d化身动画化,以模仿所述第一用户的所述一组骨骼关节的3d移动,随后模仿所述第二用户的所述一组骨骼关节的3d移动。7.根据权利要求3至6中任一项所述的方法,其中,接收用于记录所述新移动的所述输入包括:接收输入以开始捕捉所述视频中描绘的所述第一用户的所述一组骨骼关节的3d移动;以及捕获所述一组骨骼关节在由所述第一用户定义的给定时间段内的所述3d移动。8.根据权利要求1至7中任一项所述的方法,还包括:使所述3d化身的动画循环。9.根据权利要求1至8中任一项所述的方法,其中,所述通信包括第一3d化身,并且其中,所选择的3d化身包括第二3d化身,所述方法还包括:使得所述第一3d化身基于所述移动矢量被动画化。10.根据权利要求9所述的方法,还包括:使得所述第二3d化身基于所述移动矢量被动
画化。11.根据权利要求9至10中任一项所述的方法,还包括:生成表示所述第一用户在给定时间段内的移动的新移动矢量;以及在基于从所述通信中检索到的所述移动矢量使所述第一3d化身动画化的同时,使得所述第二3d化身基于所述新移动矢量被动画化。12.根据权利要求1至11中任一项所述的方法,还包括:计算用于相对于所述第一用户的3d参考点放置所述3d化身的3d位置;以及使得所述3d化身在描绘所述第一用户的视频内显示在所述3d位置处。13.根据权利要求12所述的方法,其中,所述3d化身在所述视频内的3d空间中四处移动的同时,继续被动画化。14.根据权利要求1至13中任一项所述的方法,其中,在不使用深度传感器的情况下,使用由rgb摄像装置捕获的图像来跟踪所述一组骨骼关节的3d移动。15.根据权利要求1至14中任一项所述的方法,还包括:在使所述3d化身动画化以模仿所述第二用户的所述一组骨骼关节的3d移动之前显示所述移动矢量的表示。16.根据权利要求1至15中任一项所述的方法,其中,所述通信包括第一3d化身,并且所述方法还包括:生成表示所述第一用户在给定时间段内的移动的新移动矢量;基于所述新移动矢量,使得第二3d化身被动画化;以及向第三用户发送新通信,所述新通信包括根据表示所述第二用户的移动的移动矢量被动画化的所述第一3d化身,并且其中,所述新通信包括基于所述新移动矢量被动画化的所述第二3d化身。17.根据权利要求16所述的方法,还包括:在所述第三用户的客户端设备上显示根据表示所述第二用户的移动的移动矢量被动画化的所述第一3d化身以及基于表示所述第一用户在所述给定时间段内的移动的所述新移动矢量被动画化的第二3d化身。18.一种系统,包括:一个或更多个处理器,所述一个或更多个处理器被配置成执行操作,所述操作包括:通过与第一用户相关联的客户端设备接收来自第二用户的通信;从所述通信中检索表示所述第二用户的一组骨骼关节的三维(3d)移动的移动矢量;通过与所述第一用户相关联的所述客户端设备,接收选择3d化身的输入;以及基于所述移动矢量,使所述3d化身动画化,以模仿所述第二用户的所述一组骨骼关节的3d移动。19.根据权利要求18所述的系统,其中,所述操作还包括:通过与所述第二用户相关联的另一客户端设备,捕获描绘第二用户的视频;识别所述视频中描绘的所述第二用户的一组骨骼关节;以及基于检测到的所述第二用户的所识别的一组骨骼关节的移动,生成所述移动矢量。20.一种非暂态机器可读存储介质,包括增强现实系统,所述增强现实系统包括指令,所述指令在由机器的一个或多个处理器执行时,使得所述机器执行操作,所述操作包括:通过与第一用户相关联的客户端设备接收来自第二用户的通信;从所述通信中检索表示所述第二用户的一组骨骼关节的三维(3d)移动的移动矢量;
通过与所述第一用户相关联的所述客户端设备,接收选择3d化身的输入;以及基于所述移动矢量,使所述3d化身动画化,以模仿所述第二用户的所述一组骨骼关节的3d移动。

技术总结
本公开内容的各方面涉及用于执行操作的方法和系统,包括存储至少一个程序的计算机可读存储介质,所述操作包括:通过与第一用户相关联的客户端设备接收来自第二用户的通信;从该通信中检索表示第二用户的一组骨骼关节的三维(3D)移动的移动矢量;通过与第一用户相关联的客户端设备接收选择3D化身的输入;以及基于该移动矢量,使3D化身动画化以模仿第二用户的一组骨骼关节的3D移动。的一组骨骼关节的3D移动。的一组骨骼关节的3D移动。


技术研发人员:阿维豪伊
受保护的技术使用者:斯纳普公司
技术研发日:2021.11.10
技术公布日:2023/8/1
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐