掌桥专利:专业的专利平台
掌桥专利
首页

三维交互系统

文献发布时间:2024-04-18 19:58:21


三维交互系统

本申请是2017年12月29日提交的申请号为201780084184.6、发明名称为“三维交互系统”的专利申请的分案申请。

优先权

本申请要求提交于2017年11月6日的美国专利申请第15/804,550号的优先权的权益,该申请要求提交于2017年1月23日的美国临时专利申请第62/449,451号的和2017年3月20日提交的美国临时专利申请第62/473,933号的优先权的权益,并且上述申请通过引用以其全部内容并入本文。

背景技术

增强真实(AR)是指用计算机生成的图形内容补充真实世界对象和环境的视图。除了别的以外,本公开的实施例解决了AR环境中的虚拟3D对象的操纵。

附图说明

在不按比例绘制的附图中,相似的数字可以描述不同视图中的类似部件。具有不同字母后缀的相同数字可表示相似部件的不同实例。在附图的图中,通过示例而非限制的方式示出了一些实施例,在附图中:

图1是示出用于通过网络交换数据(例如,消息和相关内容)的示例性消息传送系统的框图;

图2是示出根据示例性实施例的关于消息传送系统的进一步细节的框图;

图3是示出根据各种示例性实施例的可以存储在消息服务器系统的数据库中的数据的示意图;

图4是根据本公开的各个方面的示例性过程的流程图;

图5A-5V是说明本公开的系统和方法的各个方面的截屏图和示图;

图6是示出代表性软件架构的框图,该软件架构可以与本文所描述的各种硬件架构结合使用;以及

图7是示出根据一些示例性实施例,能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的任何一种或多种方法的机器的部件框图。

具体实施方式

以下描述包括体现本公开的说明性实施例的系统、方法、技术、指令序列和计算机程序产品。在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对本发明主题的各种实施例的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本发明主题的实施例。通常,不需要详细示出公知的指令实例、协议、结构和技术。

此外,本公开的实施例通过促进结合真实世界对象和环境的图像显示的虚拟内容的操纵,改进计算机成像软件和系统的功能。本公开的实施例允许虚拟对象相对于真实世界环境移动并以其他方式被操纵。

图1是示出用于通过网络交换数据(例如,消息和相关内容)的消息传送系统100的示例的框图。消息传送系统100包括多个客户端设备102,每个客户端设备102托管多个应用,包括消息传送客户端应用104。每个消息传送客户端应用104经由网络106(例如,因特网)通信地耦合到其他消息传送客户端应用104和消息传送服务器系统108。如此处所使用的,术语“客户端设备”可以指连接到通信网络(例如网络106)以从一个或多个服务器系统或其他客户端设备获得资源的任何机器。客户端设备可以是,但不限于,移动电话、台式计算机、笔记本电脑、便携式数字助理(PDA)、智能电话,平板电脑,超级本,上网本,笔记本电脑,多处理器系统,基于微处理器或可编程消费电子产品,游戏控制台,机顶盒或用户可用于访问网络的任何其他通信设备。

在图1所示的示例中,每个消息传送客户端应用104能够经由网络106与另一个消息传送客户端应用104和消息传送服务器系统108通信和交换数据。在消息传送客户端应用104之间以及在消息传送客户端应用104和消息传送服务器系统108之间交换的数据包括功能(例如,调用功能的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。

网络106可以包括以下网络或与以下网络协同操作:自组织网络、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线局域网(WLAN)、广域网络(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、

消息传送服务器系统108经由网络106向具体的消息传送客户端应用104提供服务器端功能。虽然消息传送系统100的某些功能在本文中被描述为由消息传送客户端应用104或由消息传送服务器系统108执行,但应当理解,消息传送客户端应用104或消息传送服务器系统108内的某些功能的位置是设计选择。例如,技术上优选的是在消息传送服务器系统108内初始部署某些技术和功能,但后来将该技术和功能迁移到消息客户端应用104(其中客户端设备102具有足够的处理能力)。

消息传送服务器系统108支持提供给消息传送客户端应用104的各种服务和操作。这些操作包括向消息传送客户端应用104发送数据、从其接收数据和处理由其生成的数据。例如,该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体注释和覆盖、消息内容持久性条件、社交网络信息和直播事件信息。消息传送系统100内的数据交换是通过经由消息传送客户端应用104的用户接口(UI)可用的功能来调用和控制的。

现在具体到消息传送服务器系统108,应用程序接口(API)服务器110耦合到应用服务器112并向其提供程序化的接口。应用服务器112通信地耦合到数据库服务器118,这便于访问数据库120,在数据120中存储与由应用服务器112处理的消息相关联的数据。

具体处理应用程序接口(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,其专用于执行各种图像处理操作,该操作通常是关于在消息传送服务器应用114处的消息的有效载荷内接收的电子图像或视频。

社交网络系统122支持各种社交网络功能服务,并使这些功能和服务是消息服务器应用114可获得的。为此,社交网络系统122维护和访问数据库120内的实体图304。由社交网络系统122支持的功能和服务示例包括特定用户与之有关系或“跟随”的消息传送系统100的其他用户的标识,以及其他实体和特定用户的兴趣的标识。

应用服务器112通信地耦合到数据库服务器118,数据库服务器118便于访问数据库120,在数据库120中存储与由消息传送服务器应用114处理的消息相关联的数据。

一些实施例可以包括一个或多个可穿戴设备,诸如具有集成相机的挂件,该相机与客户端设备102集成、通信或耦合到客户端设备102。任何期望的可穿戴设备可以与本发明的实施例结合使用,例如,手表、眼镜、护目镜、头戴式耳机、腕带、耳塞、衣服(例如,具有集成电子器件的帽子或夹克)、夹式电子设备或任何其他可穿戴设备。

图2是示出根据示例性实施例的关于消息传送系统100的进一步细节的框图。具体地,消息传送系统100被示出为包括消息传送客户端应用104和应用服务器112,其继而体现多个子系统,即短暂计时器系统202、集合管理系统204和注释系统206。

短暂计时器系统202负责实施对由消息传送客户端应用104和消息传送服务器应用114允许的内容的临时访问。为此,短暂计时器系统202结合了多个计时器,该多个计时器基于与消息或消息集合(例如,

集合管理系统204负责管理媒体集合(例如:文本、图像、视频和音频数据的集合)。在一些示例中,内容的集合(例如,消息,包括图像、视频、文本和音频)可以被组织成“事件库”或“事件故事”,这样的集合可以在指定的时间段内可用,例如内容所涉及的事件的持续时间,例如,与音乐会有关的内容可以在该音乐会期间作为“故事”可用。集合管理系统204还可以负责将提供存在特定集合的通知的图标发布到消息传送客户端应用104的用户接口。

集合管理系统204还包括策划接口208,其允许集合管理器管理和管理特定的内容集合。例如,策划接口208使事件组织者能够管理与特定事件有关的内容集合(例如,删除不适当的内容或冗余消息)。另外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动管理内容集合。在某些实施例中,可以向用户支付补偿以将用户生成的内容包括到集合中。在这种情况下,策划接口208操作以自动向此类用户付款以使用其内容。

注释系统206提供使用户能够注释或以其他方式修改或编辑与消息相关联的媒体内容的各种功能。例如,注释系统206基于客户端设备102的地理位置,可操作地向消息传送客户端应用104提供媒体覆盖(例如,SNAPCHAT过滤器)。在另一个示例中,注释系统206基于诸如客户端设备102的用户的社交网络信息之类的其他信息,可操作地向消息传送客户端应用104提供媒体覆盖。媒体覆盖可以包括音频和视觉内容以及视觉效果。音频和视频内容的示例包括图片、文本、徽标、动画和声音效果。视觉效果的示例包括颜色重叠。可以将音频和视频内容或视觉效果应用于客户端设备102处的媒体内容项(例如,图像或视频)。例如,媒体覆盖包括可以覆盖由客户端设备102拍摄生成的照片的顶部上的文本。在另一示例中,媒体覆盖图包括位置覆盖的标识(例如,威尼斯海滩)、直播事件的名称或商家覆盖图的名称(例如,海滩咖啡馆)。在另一示例中,注释系统206使用客户端设备102的地理位置来识别包括客户端设备102的地理位置处的商家名称的媒体覆盖。媒体覆盖可以包括与商家相关联的其他标记。媒体覆盖可以存储在数据库120中并通过数据库服务器118访问。

在一个示例性实施例中,如下文更详细讨论的,本公开的实施例可以生成、显示、分发媒体内容项并将媒体覆盖应用于媒体内容项。例如,实施例可以利用由客户端设备102生成的媒体内容项(例如,使用耦合到客户端设备102的数码相机捕获的图像或视频)来生成可以应用于其他媒体内容项的媒体覆盖。

图3是示出根据某些示例性实施例的可以存储在消息传送服务器系统108的数据库120中的数据300的示意图300。虽然数据库120的内容被示为包括多个表,但是应该理解为,数据可以存储在其他类型的数据结构中(例如,作为面向对象的数据库)。

数据库120包括存储在消息表314中的消息数据。实体表302存储实体数据,包括实体图304。记录被维护在实体表302内的实体可以包括个人、公司实体、组织、对象、地点、事件等。无论何种类型,消息服务器系统108存储与其有关的数据的任何实体都可以是识别的实体。每个实体被提供有唯一标识符,以及实体类型标识符(未示出)。

实体图304还存储关于实体之间的关系和关联的信息。例如,此类关系可以是社交的、专业的(例如,在共同的公司或组织工作)、基于兴趣或基于活动的。

数据库120以过滤器的示例形式将注释数据存储在注释表312中。为其在注释表312内的存储数据的过滤器被关联于并应用于视频(其数据存储在视频表310中)、图像(其数据存储在图像表308中)。在一个示例中,过滤器是在向接收者用户呈现期间显示为覆盖在图像或视频上的覆盖。过滤器可以是各种类型的,包括来自过滤器库中的用户选择的过滤器,当发送用户正在编写消息时由消息传送客户端应用104向发送用户呈现该过滤器库。

其他类型的过滤器包括地理定位过滤器(也称为地理过滤器),其可以基于地理位置呈现给发送用户。例如,基于由客户端设备102的GPS单元确定的地理位置信息,消息客户端应用104可以在用户接口内呈现特定于邻居或特殊位置的地理定位过滤器。另一种类型的文件管理器是数据过滤器,可以基于客户端设备102在消息创建过程期间收集的其他输入或信息,由消息传送客户端应用104选择性地将该数据过滤器呈现给发送用户。数据过滤器的示例包括特定位置所处的当前温度,发送用户正在行进的当前速度,客户端设备102的电池寿命或当前时间。可以存储在图像表308中的其他注释数据是所谓的“镜头”数据。“镜头”可以是可以添加到图像或视频的实时特殊效果和声音。

如上所述,视频表310存储视频数据,在一个实施例中,该视频数据与在消息表314中维护记录的消息相关联。类似地,图像表308存储与实体表302中为其存储的消息数据的消息相关联的图像数据。实体表302可以将来自注释表312的各种注释与存储在图像表308和视频表310中的各种图像和视频相关联。

故事表306存储关于消息和相关图像、视频或音频数据的集合数据,这些数据被编译成集合(例如,

集合也可以构成“现场故事”,它是来自多个用户的内容的集合,这些内容是手动、自动或使用手动和自动技术的结合创建的。例如,“现场故事”可以构成来自不同位置和事件的用户提交内容的策划流。例如,可以经由消息传送客户端应用104的用户接口向用户呈现了向特定的现场故事贡献内容的选项,该用户的客户设备启用了位置服务并且在特定时间处于公共位置事件。可以由消息传送客户端应用104基于他或她的位置向用户识别实况故事。最终结果是从社区的角度讲述一个“现场故事”。

另一种类型的内容集合被称为“位置故事”,“位置故事”使得其客户端设备102位于特定地理位置(例如,在学院或大学校园内)的用户能够对特定集合做出贡献。在一些实施例中,对位置故事的贡献可能需要第二程度的认证来验证最终用户属于特定组织或其他实体(例如,大学校园中的学生)。

本公开的实施例可以生成并呈现定制图像,用于电子消息/通信,诸如短消息服务(SMS)或多媒体消息服务(MMS)文本和电子邮件内的电子消息/通信内使用。定制图像还可以与本文讨论的SNAPCHAT故事、SNAPCHAT过滤器和短暂消息传送功能结合使用。

图4描绘了根据本公开的各个方面的示例性过程。在该示例中,方法400包括在计算设备的显示器上显示真实世界场景的图像(例如,经由移动计算设备的相机捕获的图像)(405),在真实世界中映射和显示虚拟对象(410),接收来自用户的输入(415),以及修改虚拟对象的特征(420)。方法400的步骤可以全部或部分地执行,可以彼此结合地执行以及与其他方法中的一些或所有步骤一起执行,并且可以由任何数量的不同系统执行,例如在图1和图7中描述的系统。

在方法400中,系统在计算设备的显示屏上显示(405)三维(3D)真实世界场景的二维(2D)图像。在一些实施例中,图像可以是静止图像或先前记录的视频(例如,先前由计算设备的相机捕获的)。在其他实施例中,图像可以是通过相机捕获并显示在显示屏上的实况视频或流的一部分。在此种情况下,“真实世界场景”的图像是指有形物理对象的图像,而“虚拟对象”是指计算机生成的对象。例如,在图5A-5C中,经由用户的移动设备的相机捕获的图像显示真实世界场景的各种物理对象,例如地板、椅子和其他家具,而图5B和5C还包括虚拟对象505(微笑的彩虹),其被映射到真实世界场景并与真实世界对象一起显示(如下面更详细描述的)。

该系统可以将虚拟对象映射到三维真实世界场景,并在计算设备的显示屏幕上显示的二维图像内显示虚拟对象(410)。可以在图像内映射和显示任何数量和类型的不同虚拟对象,包括文本、动画、用户的化身和其他对象。例如,在图5B-5E所示的截屏中,图像包括虚拟对象505,虚拟对象505包括映射到由移动计算设备的相机捕获的真实世界场景的3D微笑彩虹。在图5F中,虚拟对象510是猫。

本公开的实施例允许用户将虚拟对象放置在图像内的任何选定位置,以及与对象交互。例如,如图5A所示,用户从显示在屏幕底部的对象库中选择虚拟对象,按下用于彩虹虚拟对象的选择508,然后用户的拇指轻敲屏幕,如图5B所示,响应于用户的输入,系统将虚拟对象505映射到真实世界场景,将真实世界场景的地板识别为与用户的选择对应的位置,从而将虚拟对象505映射到在地板上选择的位置。

系统可以接收来自用户的输入(415),并且响应于输入和/或响应于其他条件和事件来修改虚拟对象的特征(420)。例如,可以修改的虚拟对象的特征包括虚拟对象在真实世界场景中的位置。可以以各种不同方式操纵图像中的虚拟对象和其他内容,包括向图像添加新虚拟对象、从图像中移除虚拟对象、重新定位虚拟内容以及修改虚拟内容(例如,更改其大小、比例、方向/取向/旋转、颜色、形状等)。可以显示各种虚拟内容,包括文本、视频和图像。另外,系统可以修改虚拟对象的非视觉特征,例如虚拟对象的内部状态值。可以互相不同地修改虚拟对象的不同部分的视觉特征。例如,在图5H-5I中所示,虚拟对象的形状可以响应于各种输入或事件在球体514和立方体516之间变换。如图5I和5J所示,虚拟对象的比例可以独立于其在真实世界场景内的位置而变化。在图5I和图5J之间,尽管虚拟对象518的比例从立方体516的比例增加,但虚拟对象的位置保持不变。

在图5C-5E中所示,用户通过在触摸屏上用拇指按压虚拟对象505(图5C)上的来选择虚拟对象505,用户可以将他/她的拇指放在触摸屏上并拖动虚拟对象505以重新定位它。例如,在图5D中,用户将拇指向左滑动,并且系统在用户向左横向滑动的情况下移动对象。在图5E中,用户正在向上滑动用户的拇指,并且系统因此在真实世界场景内更深地重新定位虚拟对象505。在其他示例中,用户可以通过点击虚拟对象505来选择虚拟对象505,然后通过点击触摸屏上的另一位置来移动虚拟对象。

系统可以通过确定在用户显示器上的选择位置和虚拟对象在真实世界空间中的映射位置之间的交叉,来识别用户对虚拟对象的选择。图5T示出了示例,其中用户触摸虚拟对象所在的用户计算设备的屏幕上的区域。作为响应,系统将计算设备屏幕上的2D触摸位置投射(即投影)到由计算设备的相机捕获的3D真实世界场景中的虚拟对象的位置,以确定它们是否相交叉。在此特定示例中,系统计算从显示屏幕上的对象原点到轴对齐边界框(aabb)上的交叉点的偏移。另外,系统计算相对于相机的向上轴(y)的对象取向。

在一些实施例中,虚拟对象从第一位置向第二位置的移动包括确定虚拟对象的平截头体相对取位,并保持虚拟对象在第一位置和第二位置之间的平截头体相对取位。图5U示出了平截头体与地平面交叉的示例,从而产生具有左平截头体平面和右平截头体平面的梯形二维平面。在图5V中,平截头体表面径向被定义为沿梯形延伸的径向线,其中“L”和“R”分别是左平截头体平面和右平截头体平面与表面之间的交叉。内部径向是被插值的。

用户的计算设备的移动可以结合选择虚拟对象来解释,以修改虚拟对象的特征(诸如虚拟对象在真实世界空间中的位置)。图5K示出了用户在用户的移动计算设备的屏幕上选择虚拟对象524的示例。在该示例中,虚拟对象524的位置被描绘在它被映射到的真实世界空间中的位置处。在图5L中,用户在屏幕上选择虚拟对象,并将用户的计算设备从第一位置526移动到第二位置528,使得虚拟对象在三维真实世界空间中从位置530到重新映射到位置532。用户身体上围绕所选择的虚拟对象行走也可以将虚拟对象从一个位置转换到另一个位置。类似地,在图5M中,用户将他的手指从屏幕534上的第一位置向下滑动到屏幕536上的第二位置,将虚拟对象在图像中的深度从半径R1处的第一位置538调整到半径为R2处的第二位置540。在一些实施例中,系统可以识别三维真实世界场景中的空间限制,例如地面或物理对象(例如,桌子或墙壁),并基于空间限制来限制虚拟对象的移动。在特定示例中,系统可以防止虚拟物体移动到地平面下方或穿过墙壁或其他物理物体。

该系统可以结合各种不同的用户手势和输入中的任何一种来操作。另外,尽管这里参考用户与触摸屏的交互描述来自用户的输入,但是本公开的实施例可以接收采用各种其他输入格式的输入,诸如通过键盘、鼠标接收的输入、经由麦克风的语音指令等接收的输入。

图5N是可以结合一些实施例,用于处理来自用户的输入使用的示例性软件架构的图。在该示例中,触摸数据和跟踪数据由触摸处理器接收。操纵逻辑单元被分层应用(例如:平移、缩放、旋转等)。操作层输出被累积并作为对象转换来应用(例如:对象1和对象2)。在该示例中,每个操纵单元消耗特定类型的触摸/手势作为输入,并产生增量被输出。可以组合单元以产生独特的控制方案。操纵单元的示例包括用于缩放、旋转、回转、平移、高度调整和深度调整的单元。

图5O是可以由本公开的实施例采用的软件过程图的示例。在该示例中,触摸数据由输入线程中的手势识别器解释,并被发送到手势事件队列。操纵管理器在核心线程中执行,消耗事件缓冲区并将手势数据转换为应用于真实世界对象的三维变换。结合图5N中所示的操纵单元,系统可以解释用户做出的各种触摸屏手势。例如,该系统可以实现二维屏幕坐标系,其具有沿“x”轴的左右移动以及沿“y”轴的上下移动。该系统同样可以实现用于真实世界场景的三维坐标系,例如,地平面被定义在“xz”平面(宽度和深度)和高度沿着“y”轴。在该示例中,虚拟对象上的平移动作可以包括识别由用户单指滚动手势的“x”和“y”分量,并将该手势应用于在真实世界的场景“xz”平面中的虚拟对象的平移。在虚拟对象翻译的特定示例中,再次参考图5C-5E所示,用户将单个手指(用户的拇指)按压在触摸屏上以选择虚拟对象505(图5C)并将用户的拇指向左滑动以将虚拟对象505向左移动(如图5D),并且向上调整虚拟对象505在图像中更深的位置(图5E)。在备选实施例中,系统可解释触摸屏上的单指移动以仅在x和y平面中调整虚拟对象的位置(保持深度不变),同时解释由用户进行的虚拟对象的双指选择和移动以调整虚拟对象的深度(例如,在真实世界场景中更深或更浅)。该系统可以结合各种不同的输入操作,来操纵虚拟对象在真实世界场景内的位置。

虚拟对象可以以各种方式映射到三维真实世界场景。在一个示例中,系统生成矩阵,该矩阵包含来自用户的移动计算设备的照相机的图像数据和从设备的惯性测量传感器接收的移动数据。可以由系统跟踪计算设备(例如智能手机)的移动,以向真实世界场景添加、移除和/或修改虚拟内容。例如,系统可以实现虚拟画笔效用,由此用户在三维空间中移动用户的移动设备,在屏幕上留下虚拟线的轨迹,并允许用户生成与真实世界场景一起显示的虚拟绘画。系统可以以三维方式跟踪设备的移动(例如,跟踪计算设备的向前和向后移动以增加绘画的深度),给虚拟绘画提供三维外观。

图5P和5Q示出了响应于用户在第一位置按压触摸屏(在矩阵中反映为“触摸开始事件”)并且将用户的手指对角地滑过屏幕(在矩阵中反映为“触摸移动事件”)到第二个位置(在矩阵中反映为“触摸结束事件”),而生成的矩阵的一个示例。图5R和5S示出了用户在屏幕上执行双指旋转手势以旋转虚拟对象的另一示例。在该示例中,用户在第一位置处按压屏幕(“旋转开始事件”),并且顺时针旋转用户的手指(“旋转更新事件”)到第二位置(“旋转结束事件”)。

结合在真实世界场景中更深或更浅地重新定位虚拟对象505,系统可以适当的缩放对象来调整虚拟对象的大小。例如,如图5E所示,当虚拟对象移动到场景的背景时,相对于虚拟对象在图5C中的场景前景中的较大尺寸,虚拟对象的尺寸将减小。另外,系统可以在用户输入期间和/或之后显示动画或其他效果。例如,在图5D和5E所示,随着移动虚拟对象505,将显示动画星星的轨迹。

如上所述,系统可以响应于各种事件来修改虚拟对象的特征(420),包括图像中的变化、日期、时间、地理定位信息、图像内发生的事件的上下文等。在一些实施例中,可以从一个或多个传感器接收对系统的输入,并且系统可以响应地修改虚拟对象的特征。在一个实施例中,实现方法400的功能的移动计算设备包括检测移动计算设备的移动的惯性测量传感器(例如加速度计)。在图5F中,虚拟对象510(猫)被显示为坐在由用户的智能手机的相机捕获的真实世界场景的地板上。在图5G中,用户朝向虚拟对象在真实世界场景中的映射位置移动。随着移动设备(由用户携带)越来越接近虚拟对象510,系统增加了对象510的大小,正如当用户接近物理对象时物理对象对用户来说看起来会显得更大一样。响应于移动设备接近虚拟对象在真实世界场景中的映射位置预定距离内,系统触发虚拟对象510中的反应,即猫向用户挥动爪子并显示“O,Hai”文字在猫头部上方。系统还可以检测其他类型的事件,例如图像中的虚拟对象与物理元素(例如用户的手或其他身体部位)之间的冲突或接触,并作为响应调用针对虚拟对象的行为。

本公开的实施例可以测量系统的各种不同类型的移动,例如高度的变化、系统绕轴的旋转、系统从一个位置到另一个位置的移动/重新定位、系统移动的速度、系统速度的变化(例如,加速或减速)等。当系统相对于虚拟对象在真实世界中的映射位置移动时,本公开的实施例还可以更新图像内的虚拟对象的呈现。例如,虚拟对象可以被映射到手持移动计算设备的用户前面的地面上的固定位置,例如图5B中描绘的彩虹505。用户可以围绕虚拟对象505以圆圈移动(移动设备的相机固定在虚拟对象505上),并且系统更新对象的显示视角以反映用户移动设备相对于虚拟对象的位置变化。例如,当用户站在彩虹前面时,系统显示彩虹505的笑脸,但是当用户围绕对象505移动时,修改彩虹的视图以显示其侧面和背面。

虚拟对象的显示可以在有限的预定时间段内或基于事件标准来执行。例如,在图5F-5G所示的示例的情况下,猫可以在图像内显示预定的一段时间,除非用户以某种方式(例如,在一小时内)与猫交互,否则猫可被描绘为走开(例如,离开图像)。

该系统可以显示包含虚拟对象的图像,作为各种媒体内容项的一部分或与其配合。在这种情况下,“媒体内容项”可以包括任何格式的任何类型的电子媒体。例如,媒体内容项可以包括JPG格式的图像、PNG格式的图像、FLV格式的视频、AVI格式的视频等。在一些示例性实施例中,媒体内容项可以包括使用耦合到执行方法400的功能的系统或与之通信的图像捕获设备或部件(例如数码相机)捕获的内容。在图7所示的示例性机器700中,包括数码相机作为输入部件728之一。附加地或替代地,媒体内容项目可以从另一个系统或设备接收。例如,如图1所示,执行方法400的功能的客户端设备102可以经由网络106从另一客户端设备102或其他系统接收媒体内容项目。

在一些实施例中,由系统生成或使用的媒体内容项目可以包括在媒体覆盖层中,例如“标签”(即,可以覆盖到其他图像上的图像)、过滤器(如上所述)或者另一个媒体覆盖层。这种覆盖可以包括静态(即,非移动)特征以及动态(即,移动)特征。通过本公开的实施例进行的媒体内容项生成可以包括生成包含关于内容项的信息的一个或多个数据结构字段。例如,系统可以为媒体覆盖生成在数据结构中的名称字段,该名称字段包括从内容提供商接收的媒体内容项目的名称。媒体内容项目可以与其他计算设备和系统实时或接近实时地共享。

本公开的实施例可以发送和接收包含媒体内容项目、媒体覆盖或任何形式的电子通信的其他内容的电子通信,例如短信文本、彩信文本、电子邮件和其他通信。包括在这种通信中的媒体内容项目可以作为附件提供、在消息中行内嵌入、在媒体覆盖内显示或以任何其他合适的方式传送。

软件架构

图6是说明示例性软件架构606的框图,该软件体系结构606可与本文中描述的各种硬件架构结合使用。图6是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构来促进本文描述的功能。软件架构606可以在诸如图7的机器700的硬件上执行,除其它之外,机器700包括处理器704、存储器714和I/O部件718,代表性的硬件层652被示出,并且可以表示例如图7的机器700。代表性硬件层652包括具有相关联的可执行指令604的处理单元654。可执行指令604代表软件架构606的可执行指令,包括本文描述的方法、部件等的具体实现。硬件层652还包括存储器或存储模块存储器/存储器656,其也具有可执行指令604。硬件层652还可以包括其他硬件658。

如这里所使用的,术语“部件”可以指代设备、物理实体或具有通过功能或子例程调用定义边界的逻辑、分支点、应用程序接口(API),以及提供了特定处理或控制功能的分割或模块化的其他技术。部件可以经由它们的接口与其他部件组合以执行机器过程。部件可以是被设计成用于与其他部件一起使用的封装功能硬件单元,也可以是通常执行相关功能的特定功能程序的一部分。

部件可以构成软件部件(例如,包含在机器可读介质上的代码)或硬件部件。“硬件部件”是能够执行某些特定操作的有形单元,并且可以以某种物理方式配置或布置。在各种示例性实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件部件(例如,处理器或一组处理器)可以通过软件(例如,应用或应用部分)将其配置为用于执行如本文所述的某些操作的硬件部件。硬件部件也可以机械地、电子地或其任何合适的组合来实现。例如,硬件部件可以包括永久配置为执行某些特定操作的专用电路或逻辑。

硬件部件可以是专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件部件还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦由此类软件配置,硬件部件就成为特定机器(或机器的特定部件),其被独特地定制成为专门为执行所配置的功能并且不再是通用处理器。应当理解,在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中机械地实现硬件部件的决定可以通过成本和时间考虑来驱动。

处理器可以是或包括任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路),其根据控制信号(例如,“命令”、“操作码”、“机器代码”等等)操纵数据值并产生应用于操作机器相应的输出信号。例如,处理器可以是中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)或其任何组合。处理器还可以是具有可以同时执行指令的有两个或更多个独立处理器(有时称为“核”)的多核处理器。

因此,短语“硬件部件”(或“硬件实现的部件”)应被理解为包含有形实体,其为被物理构造、永久配置(例如,硬连线),或临时配置(例如,编程的)的实体,从而以某种方式操作或执行本文描述的某些操作。考虑其中临时配置(例如,编程)硬件部件的实施例,硬件部件中的每个不需要在任何一个时刻被配置或实例化。例如,在硬件部件包括由软件配置成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间被配置为分别不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置特定的一个或多个处理器,例如,在一个时刻构成特定的硬件部件,并在不同的时刻构成不同的硬件部件。硬件部件可以向其它硬件部件提供信息并从其接收信息。因此,所描述的硬件部件可以被视为通信地耦合。在同时存在多个硬件部件的情况下,可以通过在硬件部件中的两个或更多个之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中在不同时间配置或实例化多个硬件部件的实施例中,可以例如通过存储和检索多个硬件部件可访问的存储器结构中的信息来实现这些硬件部件之间的通信。

例如,一个硬件部件可以执行操作并将该操作的输出存储在与其通信耦合的存储器设备中。然后,另一硬件部件可以稍后访问存储器设备以检索和处理存储的输出。硬件部件还可以发起与输入或输出设备的通信,并且可以在针对资源(例如,信息集合)操作。本文描述的示例方法的各种操作可以至少部分地由临时配置(例如,通过软件)或永久配置为执行相关操作的一个或多个处理器来执行。无论是临时配置还是永久配置,此类处理器可以构成处理器实现的部件,其操作以执行本文描述的一个或多个操作或功能。如本文所使用的,“处理器实现的部件”指的是使用一个或多个处理器实现的硬件部件。类似地,本文描述的方法可以至少部分地由处理器实现,其中特定处理器是硬件的示例。例如,方法的操作中的至少一些可以由一个或多个处理器或处理器实现的部件来执行。

此外,一个或多个处理器还可以操作以支持“云计算”环境中的相关操作或作为“软件即服务”(SaaS)中的相关操作的性能。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以经由网络(例如,因特网)并且经由一个或多个适当的接口(例如,应用程序接口(API))。某些操作的性能可以在处理器之间分配,不仅驻留在单个机器中,而且部署在多个机器上。在一些示例性实施例中,处理器或处理器实现的部件可以位于单个地理位置(例如,

在家庭环境,办公室环境或服务器群内)。在其他示例性实施例中,处理器或处理器实现的部件可以分布在多个地理位置上。

在图6的示例性架构中,软件架构606可以被概念化为其中每个层提供特定功能的层的叠堆。例如,软件架构606可以包括层诸如操作系统602、库620、应用程序616和表示层614。在操作上,层内的应用程序616或其他部件可以通过软件栈调用应用编程接口(API)API调用608,并响应于API调用608,接收消息612。所示的层只在本质上具有代表性的,并且并非所有软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件618,而其他操作系统可提供这样的层。其他软件架构可以包括附加或不同的层。

操作系统602可以管理硬件资源并提供公共服务。操作系统602可以包括例如内核622、服务624和驱动器626。内核622可以充当硬件和其它软件层之间的抽象层。例如,内核622可以负责存储器管理、处理器管理(例如,调度)、部件管理、联网、安全设置等。服务624可以为其它软件层提供其它公共服务。驱动器626负责控制底层硬件或与其接合。例如,取决于硬件配置,驱动器626包括显示驱动器、相机驱动器、

库620提供由应用616、其它部件、层或其组合使用的共同基础设施。库620提供允许其它软件部件以比直接与底层操作系统602功能(例如,内核622、服务624或驱动器626)接合更容易的方式执行任务的功能。库620可以包括系统库644(例如,C标准库),其可以提供功能诸如存储器分配功能、字符串操纵功能、数学功能等。另外,库620可以包括API库646,诸如媒体库(例如,用于支持各种媒体格式的呈现和操纵的库,诸如MPREG4、H.264、MP3、AAC、AMR、JPG、PNG)、图形库(例如,可用于在显示器上的图形内容中呈现2D和3D的OpenGL框架)、数据库库(例如,可提供各种关系数据库功能的SQLite)、网络库(例如,可提供网络浏览功能的WebKit)等。库620还可以包括各种其它库648,以向应用616和其它软件部件/模块提供许多其它API。

框架/中间件618(有时也被称为中间件)提供可由应用616或其它软件部件/模块使用的更高级的共同基础设施。例如,框架/中间件618可以提供各种图形用户接口(GUI)功能、高级资源管理、高级位置服务等。框架/中间件618可以提供可以由应用616或其它软件部件/模块利用的宽范围的其它API,其中一些可以针对特定的操作系统602或平台。

应用616包括内置应用638或第三方应用640。代表性内置应用638的示例可以包括但不限于联系人应用、浏览器应用、电子书阅读器应用、位置应用、媒体应用、消息传送应用或游戏应用。第三方应用640可以包括由特定平台的供应商以外的实体使用ANDROID

应用616可以使用内置的操作系统功能(例如,内核622、服务624或驱动器626)、库620和框架/中间件618来创建用户接口,以与该系统的用户进行交互。替换地或附加地,在一些系统中,与用户的交互可以通过表示层(诸如表示层614)发生。在这些系统中,应用/部件“逻辑”可以从与用户交互的应用/部件的方面分离。

图7是示出根据一些示例性实施例的机器700的部件(本文中也称为“模块”)的框图,该部件能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所论述的方法中的任一种或多种。具体而言,图7以计算机系统的示例形式示出了机器700的图示表示,在其内可执行用于使机器700执行本文所论述的方法中的任一种或多种的指令710(例如,软件、程序、应用、小应用、应用程序或其它可执行代码)。这样,指令710可用于实现本文描述的模块或部件。指令710将通用的、未编程的机器700变换成特定的机器700,其被编程为以所描述的方式执行所描述和示出的功能。在另选实施例中,机器700作为独立设备操作或者可以耦合(例如,联网)到其它机器。在联网部署中,机器700可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力操作,或者在对等(或分布式)网络环境中作为对等机器操作。机器700可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本、机顶盒(STB)、个人数字助理(PDA)、娱乐媒体系统、蜂窝电话、智能电话、移动设备、可穿戴设备(例如,智能手表)、智能家居设备(例如,智能家电)、其它智能设备、网络设备、网络路由器、网络交换机、网络桥接器或能够顺序地或以其它方式执行指令710的任何机器,指令710指定机器700要采取的动作。进一步地,虽然仅示出了单个机器700,但术语“机器”还应被视为包括单独或联合执行指令710以执行本文所论述的方法中的任一种或多种的机器的集合。

机器700可包括处理器704、存储器/存储装置706和I/O部件718,其可以被配置为诸如经由总线702彼此通信。存储器/存储装置706可以包括存储器714诸如主存储器或其它存储器存储装置,以及存储单元716,两者都可由处理器704访问,诸如经由总线702。存储单元716和存储器714存储实施本文描述的方法或功能中的任一种或多种的指令710。在由机器700执行指令710期间,指令710还可以完全或部分地驻留在存储器714内、存储单元716内、处理器704中的至少一个内(例如,处理器的高速缓冲存储器内),或其任何合适的组合。因此,存储器714、存储单元716和处理器704的存储器是机器可读介质的示例。

如本文所使用的,术语“机器可读介质”、“计算机可读介质”等可以指代能够暂时或永久存储指令和数据的任何部件、设备或其它有形介质。此类介质的示例可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、缓冲存储器、闪存存储器、光学介质、磁介质、高速缓冲存储器、其它类型的存储装置(例如,可擦除可编程只读存储器(EEPROM))或其任何合适的组合。术语“机器可读介质”应被认为包括能够存储指令的单个介质或多个介质(例如,集中式或分布式数据库,或相关联的高速缓冲存储器和服务器)。术语“机器可读介质”还可以被认为包括能够存储指令(例如,代码)的任何介质或多个介质的组合,该指令用于由机器执行,使得指令在由机器的一个或多个处理器执行时致使机器执行本文所述的方法中的任一种或多种。因此,“机器可读介质”可以指单个存储装置或设备,以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。术语“机器可读介质”本身排除信号。

I/O部件718可包括各种部件以提供用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量结果等的用户接口。包括在特定机器700的用户接口中的特定I/O部件718将取决于机器的类型。例如,便携式机器诸如移动电话将可能包括触摸输入设备或其它此类输入机构,而无头服务器机器将可能不包括此种触摸输入设备。应当理解,I/O部件718可以包括图7中未示出的许多其它部件。根据功能对I/O部件718进行分组仅用于简化以下论述,并且分组决不是限制性的。在各种示例性实施例中,I/O部件718可以包括输出部件726和输入部件728。输出部件726可以包括视觉部件(例如,显示器诸如等离子显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT))、听觉部件(例如,扬声器)、触觉部件(例如,振动电机、电阻机构)、其它信号发生器等。输入部件728可以包括字母数字输入部件(例如,键盘、配置为接收字母数字输入的触摸屏、光电键盘,或其它字母数字输入部件)、基于指点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其它指点仪器)、触觉输入部件(例如,实体按钮、提供触摸或触摸手势的位置或力的触摸屏,或其它触觉输入部件)、音频输入部件(例如,麦克风)等的位置或力。输入部件728还可以包括一个或多个图像捕获设备,诸如用于生成数字图像或视频的数字相机。

在进一步的示例性实施例中,I/O部件718可以包括生物测定部件730、运动部件734、环境部件736,或位置部件738,以及宽范围的其他部件。此类部件(或其部分)中的一个或多个在本文中可统称为“传感器部件”或“传感器”,用于收集与机器700、机器700的环境、机器700的用户或其组合相关的各种数据。

例如,生物测定部件730可以包括以下部件:用于检测表达(例如,手部表达、面部表达、语音表达、身体姿势或眼睛跟踪)、测量生物信号(例如,血压、心率、体温、出汗或脑波)、识别人(例如,语音识别、视网膜识别、面部识别、指纹识别或基于脑电图的识别)等。运动部件734可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等。环境部件736可以包括例如亮度传感器部件(例如,光度计)、温度传感器部件(例如,一个或多个检测环境温度的温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,一个或多个检测背景噪声的麦克风)、接近度传感器部件(例如,检测附近物体的红外传感器)、气体传感器(例如,检测危险气体浓度以确保安全或测量大气中污染物的气体检测传感器),或可提供与周围物理环境对应的指示、测量或信号的其它部件。位置部件738可以包括位置传感器部件(例如,全球定位系统(GPS)接收器部件)、海拔高度传感器部件(例如,检测可以从其导出海拔高度的空气压力的海拔高度计或气压计)、取向传感器部件(例如,磁力计)等。例如,位置传感器部件可以提供与机器700相关联的位置信息,诸如机器700的GPS坐标或关于机器700当前所处位置的信息(例如,餐馆或其它商业的名称)。

可以使用各种技术来实现通信。I/O部件718可以包括通信部件740,其可操作以分别经由耦合722和耦合724将机器700耦合到网络732或设备720。例如,通信部件740可以包括网络接口部件或其它合适的设备以与网络732接合。在进一步的示例中,通信部件740可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(NFC))部件、

此外,通信部件740可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件740可以包括射频识别(RFID)标签读取器部件、NFC智能标签检测部件、光学读取器部件(例如,光学传感器,其用于检测一维条形码,诸如通用产品代码(UPC)条形码的一维条形码,诸如快速响应(QR)码的多维条形码、Aztec码、数据矩阵、Dataglyph、MaxiCode,PDF417,超级码、UCCRSS-2D条形码和其它光学代码),或听觉检测部件(例如,用于识别标记的音频信号的麦克风)。另外,可以经由通信部件740导出各种信息,诸如经由互联网协议(IP)地理位置导出的位置,经由

在使用类似于“A,B或C中的至少一个”、“A,B和C中的至少一个”、“A,B或C中的一个或多个”或“A,B和C中的一个或多个”的短语的情况下,意图将该短语解释为意味着在实施例中可以仅存在A、在实施例中可以仅存在B、在实施例中可以仅存在C,或要素A、B和C的任何组合可以在单个实施例中存在;例如,A和B、A和C、B和C,或A和B和C。

如本文所用,术语“或”可以以包含性或排他性的含义来解释。此外,可以为在此描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且特定操作在特定说明性配置的上下文中示出。功能分配是可以预见的,并且可以落在本公开的各种实施例的范围内。通常,在示例配置中呈现为独立资源的结构和功能可以实现为组合结构或资源。类似地,呈现为独立资源的结构和功能可以实现为单独的资源。这些和其他变化、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应被视为说明性,而非限制性的。

本专利文件的公开内容的一部分包含受版权保护的材料。版权所有者不反对任何人对专利文件或专利公开进行完全相同的复制,因为它出现在专利和商标局的专利文件或记录中,但在其他方面保留所有版权。以下声明适用于下文和构成本文档一部分的附图中所述的软件和数据:版权2016,SNAP公司2016,保留所有权利。

相关技术
  • 基于智能设备的三维交互系统及三维交互方法
  • 一种基于笔式交互及语音交互的三维立体几何绘制系统
技术分类

06120116484760