一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

纹理化网格构建的制作方法

2022-02-24 17:45:37 来源:中国专利 TAG:

纹理化网格构建
1.相关申请的交叉引用
2.本技术要求samuel edward hare等人于2019年7月2日提交的美国专利申请号16/460,519的优先权,其全部内容通过引用合并于此。
技术领域
3.本公开大体上涉及虚拟内容的视觉呈现,并且更具体地,涉及在计算设备的相机馈送中捕获的真实世界环境内渲染三维(3d)对象。


背景技术:

4.虚拟渲染系统可用于创建引人入胜且有趣的增强现实体验,其中3d虚拟对象图形内容似乎存在于真实世界中。这样的系统允许用户从预定义的3d对象列表中进行选择,并在相机馈送的视图中显示所选的3d对象。
附图说明
5.在不一定按比例绘制的附图中,相似的数字可以在不同的视图中描述相似的部件。为了容易地识别任何特定元素或动作的讨论,参考数字中的一个或多个最高位有效数字是指该元素首先被引入的图号。一些实施例以示例而非限制的方式在附图中示出,其中:
6.图1是示出了根据示例实施例的用于通过网络交换数据(例如,消息和相关联的内容)的消息传递系统的框图;
7.图2是图示根据示例实施例的关于消息传递系统的进一步细节的框图;
8.图3是图示根据示例实施例的可以存储在消息传递服务器系统的数据库中的数据的示意图;
9.图4是图示根据示例实施例的由用于通信的消息传递客户端应用生成的消息的结构的示意图;
10.图5是图示根据示例实施例的示例访问限制过程的示意图,在该过程中,对内容(例如,短时消息和关联多媒体数据有效载荷)或内容集合(例如,短时消息故事)的访问可以有时间限制性的(例如,变得短时的);
11.图6是图示根据示例实施例的可以作为消息传递系统的部分提供的3d对象生成系统的各种部件的框图;
12.图7和图8是图示根据示例实施例的3d对象生成系统在执行用于生成包括3d对象的消息的方法中的示例操作的流程图;
13.图9是图示根据示例实施例的3d对象生成系统在执行用于生成包括3d对象的消息的方法中的示例操作的框图;
14.图10和11是根据示例实施例的用于生成3d对象的说明性纹理;
15.图12-13是图示根据一些示例实施例的由消息传递系统提供的各种界面的界面图;
16.图14是图示根据示例实施例的可以与本文描述的各种硬件架构结合使用的代表性软件架构的框图;以及
17.图15是图示根据示例实施例的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文中讨论的任何一种或多种方法的机器的部件的框图。
具体实施方式
18.下面的描述包括体现本公开的说明性实施例的系统、方法、技术、指令序列和计算机程序产品。在以下描述中,为了解释的目的,阐述了许多具体细节以提供对本发明主题的各种实施例的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节的情况下实践本发明主题的实施例。一般而言,不必详细示出众所周知的指令实例、协议、结构和技术。
19.其中,本公开的实施例通过提供允许用户从二维(2d)图像(例如标题、用户生成的内容、预先生成的内容、策划的内容、地理过滤器、图片、贴纸、表情符号和gif)创建虚拟3d对象的功能,来提高电子消息传递和成像软件和系统的功能。然后渲染所创建的虚拟3d对象,就好像它们存在于真实世界的环境中一样。例如,3d图像的媒体覆盖可以由系统生成并与由图像捕获设备(例如,数码相机)生成的真实世界环境内容(例如,图像和/或视频)结合显示。
20.用户总是在寻求与内容交互的新方式,就好像它存在于真实世界中一样。典型的系统使用户能够将2d图像插入视频帧中并控制其二维位置(例如x和y坐标)。然而,简单地将2d对象插入视频帧中而不考虑视频帧中的其他对象(例如,表面)会使所得的带有2d对象的视频帧看起来不真实,特别是因为无法利用对象的深度。此外,由于可插入的2d图像缺乏任何3d质量,典型系统无法考虑如何相对于视频帧中出现的真实对象放置和定位2d图像。一些系统允许用户从预定义的3d对象列表中进行选择,以插入在相机馈送中描绘的真实环境中。虽然此类系统通常在真实世界环境中呈现此类3d对象时运行良好,但用户缺乏定制和操纵3d对象内容的能力使系统对用户的吸引力和兴趣降低。
21.本公开的实施例允许用户从任何2d图像创建虚拟3d对象。这使用户能够将已创建的3d虚拟对象添加到包含真实世界对象的真实世界视频帧中。用户不仅可以在二维上而且可以在三维上(例如,x、y和z坐标)控制对象的位置。因为2d图像已经被转换为3d对象,所以所公开的实施例能够相对于出现在场景中的真实3d对象实时地跟踪和重新定位或重新对齐3d对象。特别地,生成的3d对象具有真实的3d属性(例如,深度、宽度、高度和长度),可用于调整3d对象相对于真实世界场景中对象的3d属性的位置。例如,3d对象可以被放置在出现在场景中的桌子的顶部,并且可以相对于桌子的表面被重新定位。当相机四处移动时,系统可以继续相对于桌面跟踪3d对象,这使得包含真实和虚拟对象的整体图像看起来更加逼真。通过这种方式,本公开的实施例允许用户通过添加3d虚拟对象来生成和修改视频的帧并以新的方式与这些对象交互。
22.图1是示出用于通过网络交换数据(例如,消息和相关联的内容)的示例消息传递系统100的框图。消息传递系统100包括多个客户端设备102,每个客户端设备托管包括消息传递客户端应用104在内的多个应用。每个消息传递客户端应用104经由网络106(例如,互联网)通信地耦合到消息传递客户端应用104的其他实例和消息传递服务器系统108。
23.因此,每个消息传递客户端应用104能够经由网络106与另一个消息传递客户端应用104和消息传递服务器系统108进行通信和交换数据。在消息传递客户端应用104之间以及在消息传递客户端应用104和消息传递服务器系统108之间交换的数据包括功能(例如,调用功能的命令)以及有效载荷数据(例如,文本、音频、视频或其他多媒体数据)。
24.在一些实施例中,消息传递客户端应用104向用户呈现用于选择或创建对象的给定2d图像的图形用户界面(gui)。例如,用户可以打字2d文本并输入该2d文本作为选定的2d对象图像。消息客户端应用104处理对象的2d图像以从2d图像生成虚拟3d对象。用户可以激活消息传递客户端应用104的相机以实时查看用户的真实世界周围环境(例如,相机馈送)的图像。用户可以指示消息传递客户端应用104将新创建的虚拟3d对象添加到由相机捕获的真实世界图像。通过这种方式,用户可以将虚拟3d对象添加到相机馈送中描绘的真实世界对象中。用户可以操纵虚拟3d对象以相对于真实世界对象重新定位虚拟对象。在一些实施例中,用户可以捕获和存储包括虚拟3d对象和真实世界对象的视频或图像,并与另一个消息传递客户端应用104的另一个用户共享视频或图像。
25.消息传递服务器系统108通过网络106向特定的消息传递客户端应用104提供服务器端功能。尽管消息传递系统100的某些功能在本文中被描述为由消息传递客户端应用104或由消息传递服务器系统108执行,但是应当理解,在消息传递客户端应用104或消息传递服务器系统108内的某些功能的位置是设计选择。例如,最初在消息传递服务器系统108内部署某些技术和功能在技术上可能是优选的,但是稍后在客户端设备102具有足够处理能力的情况下将该技术和功能迁移到消息传递客户端应用104。
26.消息传递服务器系统108支持被提供给消息传递客户端应用104的各种服务和操作。此类操作包括向消息传递客户端应用104发送数据、从其接收数据以及处理由其生成的数据。作为示例,该数据可以包括消息内容、客户端设备信息、地理位置信息、媒体注释和覆盖、消息内容持久性条件、社交网络信息和现场事件信息。消息传递系统100内的数据交换通过经由消息传递客户端应用104的用户界面(ui)可用的功能来调用和控制。
27.现在具体地转到消息传递服务器系统108,应用程序接口(api)服务器110耦合到应用程序服务器112并向其提供编程接口。应用程序服务器112通信耦合到数据库服务器118,数据库服务器118便于访问数据库120,在数据库120中存储了与应用服务器112处理的消息相关联的数据。
28.具体说api服务器110,该服务器在客户端设备102和应用服务器112之间接收和发送消息数据(例如,命令和消息有效载荷)。具体地,api服务器110提供可以由消息传递客户端应用104调用或查询的一组接口(例如,例程和协议),以便调用应用服务器112的功能。api服务器110揭示应用服务器112支持的各种功能,包括:帐户注册,登录功能,经由应用服务器112从特定消息传递客户端应用104向另一个消息传递客户端应用104发送消息,将媒体文件(例如,图像或视频)从消息传递客户端应用104发送到消息传递服务器应用114并用于另一个消息传递客户端应用104的可能访问,媒体数据集合(例如,故事)的设置,检索这类集合,检索客户端设备102的用户的朋友列表,检索消息和内容,向社交图添加和删除朋友,社交图内朋友的定位,打开应用事件(例如,与消息传递客户端应用104相关的)。
29.应用服务器112托管多个应用和子系统,包括消息传递服务器应用114、图像处理系统116、社交网络系统122。消息传递服务器应用114实现多种消息处理技术和功能,具体
涉及对从消息传递客户端应用104的多个实例接收的消息中包括的内容(例如,文本和多媒体内容)的聚合和其他处理。如将进一步详细描述的,来自多个源的文本和媒体内容可聚合成内容集合(例如,被称为故事或图库)。然后,消息传递服务器应用114使这些集合可用于消息传递客户端应用104。鉴于其他处理器和存储器密集的数据处理的硬件要求,这种处理还可在服务器侧由消息传递服务器应用114执行。
30.应用服务器112还包括图像处理系统116,其专用于执行通常关于在消息传递服务器应用114处的消息的有效载荷内接收到的图像或视频的各种图像处理操作。
31.社交网络系统122支持各种社交网络功能和服务,并使这些功能和服务对消息传递服务器应用114可用。为此,社交网络系统122维护并访问数据库120内的实体图。社交网络系统122支持的功能和服务的示例包括标识消息传递系统100的与特定用户有关系的或特定用户正在“关注”的其他用户以及标识其他实体和特定用户的兴趣。
32.应用服务器112通信地耦合到数据库服务器118,数据库服务器118便于访问数据库120,在数据库120中存储与由消息传递服务器应用114处理的消息相关联的数据。
33.图2是示出根据示例实施例的关于消息传递系统100的进一步细节的框图。具体地,消息传递系统100被示为包括消息传递客户端应用104和应用服务器112,它们进而包含一些子系统,即短暂计时器系统202、集合管理系统204和注释系统206。
34.短暂计时器系统202负责实施对由消息传递客户端应用104和消息传递服务器应用114许可的内容的暂时访问。为此,短暂计时器系统202包括多个计时器,这些计时器基于与消息或消息的集合(例如,故事)相关联的持续时间和显示参数,经由消息传递客户端应用104选择性地显示和启用对消息和相关联的内容的访问。下面提供关于短暂计时器系统202的操作的进一步细节。
35.集合管理系统204负责管理媒体集合(例如,文本、图像、视频和音频数据的集合)。在一些示例中,内容的集合(例如,消息,其包括图像、视频、文本和音频)可被组织成“事件图库”或“事件故事”。这种集合可在指定的时间段内(例如内容所涉及的事件的持续时间)可用。例如,与音乐会有关的内容可在该音乐会的持续时间内作为“故事”可用。集合管理系统204还可负责发布图标,该图标将存在特定集合的通知提供给消息传递客户端应用104的用户界面。
36.集合管理系统204还包括策划接口208,其允许集合管理器管理和策划特定的内容集合。例如,策划接口208使事件组织者能够策划与特定事件有关的内容集合(例如,删除不适当的内容或冗余消息)。另外,集合管理系统204采用机器视觉(或图像识别技术)和内容规则来自动策划内容集合。在某些实施例中,可向用户支付补偿以将用户生成的内容包括在集合中。在这种情况下,策划接口208操作以自动向这些用户支付使用他们的内容的费用。
37.注释系统206提供使用户能够注释或以其他方式修改或编辑与消息相关联的媒体内容的各种功能。例如,注释系统206提供与由消息传递系统100处理的消息的媒体覆盖的生成和发布有关的功能。注释系统206可操作地向消息传递客户端应用104提供媒体覆盖(例如,过滤器或镜头)。在另一示例中,注释系统206基于其他信息,诸如客户端设备102的用户的社交网络信息,可操作地向消息传递客户端应用104提供媒体覆盖。媒体覆盖可包括音频和视觉内容以及视觉效果。音频和视觉内容的示例包括图片、文本、徽标、动画和声音
效果。视觉效果的示例包括颜色覆盖。
38.音频和视觉内容或视觉效果可被应用于客户端设备102处的媒体内容项目(例如,照片)。例如,媒体覆盖包括可以被覆盖在客户端设备102生成的图像或视频之上的文本。在另一个示例中,媒体覆盖包括位置覆盖的标识(例如,威尼斯海滩)、实况事件的名称或商家覆盖的名称(例如,海滩咖啡馆)。
39.注释系统206包括3d对象生成系统210,其提供功能性用以接收2d对象和从2d对象生成虚拟3d对象,以及在客户端设备102的相机馈送(也被本领域普通技术人员称为“相机流”、“视频流”或“视频馈送”)内捕获的3d空间内在相对于客户端设备102的位置处显示和跟踪虚拟3d对象。由3d对象生成系统210生成、显示和跟踪的虚拟3d对象包括从2d对象生成的3d对象。3d对象表示任何2d提供的用户生成内容、策划内容、图像、文本、视频、动画或由用户选择或自动识别的其他视觉项目。在一个实施例中,2d对象和3d对象同时呈现在显示器上。在这种情况下,3d对象随视频馈送并相对于视频馈送移动,其中3d对象由用户定位,而2d对象在显示器上的预定或用户选择的位置保持静止。在一个实施例中,2d对象包括2d视频或动画。在这种情况下,2d视频或动画用于生成包括3d动画或3d视频的3d对象,该3d动画或视频在3d对象所在的视频馈送中循环或轮转(例如,虚拟跳舞热狗)。
40.3d对象生成系统210提供功能性用以使用户能够通过提供2d对象来创作、编辑和预览3d对象。为此,3d对象生成系统210包括编辑界面212和预览界面214。编辑界面212允许用户创作和选择2d对象(例如,用户可以从图像和视频列表中选择2d图像或视频,或者可以手动键入与文本相对应的一组字符)。编辑界面212使用户能够使用键盘输入和包括基于触摸屏的手势的其他类型的输入来编辑2d对象。例如,用户可以改变2d内容的缩放、配色方案、大小或任何其他视觉属性。在用户对编辑的2d对象满意后,用户可以指示3d对象生成系统210从2d对象创建虚拟3d对象。预览界面214允许用户在生成包括3d对象的消息之前预览和查看生成的3d对象。预览界面214还可以使用户能够编辑3d对象的呈现(例如,通过改变显示屏幕上3d对象的缩放、取向或放置)。3d对象生成系统210根据结合图7和8描述的过程从2d对象创建3d对象。
41.3d对象生成系统210可以使3d对象基于在3d空间中检测到的参考面(例如,地面)被显示在相机馈送内捕获的3d空间中的位置处(例如,在客户端设备102的显示器上)。如下文将进一步详细讨论的,3d对象生成系统210包括冗余跟踪系统,该系统包括一组跟踪子系统,该跟踪子系统被配置为基于一组标记和跟踪子系统之间的转换来跟踪3d空间中的位置处的3d对象。3d对象生成系统210可以进一步基于跟踪标记的可用性在六自由度(6dof)跟踪和三自由度(3dof)跟踪之间转换。在一个实施例中,3d对象生成系统210在相机馈送内捕获的3d空间中的位置处跟踪和显示3d对象,同时在静态位置呈现对应的2d对象。即,在3d空间中不会跟踪2d对象,因为相机会改变3d空间中的位置,从而改变呈现3d对象的相机馈送。
42.图3是示出了根据某些示例实施例的可以存储在消息传递服务器系统108的数据库120中的数据的示意图300。虽然数据库120的内容被示出为包括多个表,但是应当理解,数据可存储在其他类型的数据结构中(例如,作为面向对象的数据库)。
43.数据库120包括存储在消息表314中的消息数据。实体表302存储实体数据,其包括实体图304。在实体表302内维护其记录的实体可以包括个人、公司实体、组织、2d和/或3d对象、3d对象模板、3d对象纹理、地点、事件等等。无论何种类型,消息传递服务器系统108存储
数据所关于的任何实体都可以是识别的实体。每个实体都提供有唯一标识符,以及实体类型标识符(未示出)。
44.实体图304进一步存储关于实体之间的关系和关联的信息。仅作为示例,这种关系可以是社交的、专业的(例如,在共同的社团或组织工作)、基于兴趣的或基于活动的。
45.数据库120还以过滤器和镜头的示例形式将注释数据存储在注释表312中。为其在注释表312中存储数据的过滤器和镜头被关联于并应用于视频(其数据存储在视频表310中)和/或图像(其数据存储在图像表308中)。过滤器是在呈现给接收用户期间显示为覆盖在图像或视频上的覆盖。另一方面,镜头包括实时特殊效果和/或声音,当用户正在编写消息时,这些效果和/或声音可以添加到相机馈送的图像中。相比之下,在客户端设备102处捕获图像或视频之后过滤器被应用于图像或视频,同时镜头被应用于客户端设备102的相机馈送,使得当在客户端设备102处捕获图像或视频时应用了镜头,所应用的镜头被合并为所生成的图像或视频的一部分。过滤器和镜头可以是各种类型,包括来自当发送用户正在撰写消息时由消息传递客户端应用104呈现给发送用户的过滤器图库或镜头图库的用户选择过滤器和镜头。
46.如上所述,视频表310存储视频数据,在一个实施例中,该视频数据与在消息表314中为其维护记录的消息相关联。类似地,图像表308存储与在实体表302中为其存储消息数据的消息相关联的图像数据。实体表302可将来自注释表312的各种注释与存储在图像表308和视频表310中的各种图像和视频相关联。
47.故事表306存储关于消息和相关图像、视频或音频数据的集合的数据,这些数据被编译成集合(例如,故事或图库)。特定集合的创建可由特定用户(例如,在实体表302中为其维护记录的每个用户)发起。用户可以采用已由该用户创建和发送/广播的内容集合的形式创建“个人故事”。为此,消息传递客户端应用104的用户界面可包括用户可选择的图标,以使发送用户能够将特定内容添加到他或她的个人故事中。
48.集合还可构成“现场故事”,其是来自多个用户的内容的集合,其是手动、自动或使用手动和自动技术的结合而创建的。例如,“现场故事”可构成来自各种位置和事件的用户提交的内容的策划流。例如,可经由消息传递客户端应用104的用户界面向用户呈现以向特定的现场故事贡献内容的选项,其中该用户的客户端设备已启用位置服务并且在特定时间处于公共位置事件。可由消息传递客户端应用104基于他或她的位置向用户识别现场故事。最终结果是从社区角度讲述的“现场故事”。
49.另一种类型的内容集合被称为“位置故事”,其使得其客户端设备102位于特定地理位置(例如,在学院或大学校园内)的用户能够对特定集合做出贡献。在一些实施例中,对位置故事的贡献可需要第二级的认证以验证最终用户属于特定组织或其他实体(例如,是大学校园中的学生)。
50.图4是图示根据一些实施例的消息400的结构的示意图,消息400由消息传递客户端应用104生成以用于与另外的消息传递客户端应用104或消息传递服务器应用114通信。具体消息400的内容用于填充存储在数据库120中的消息表314,消息表314可由消息传递服务器应用114访问。类似地,消息400的内容作为客户端设备102或应用服务器112的“传输中”或“飞行中”数据被存储在存储器中。消息400被显示为包括以下组成部分:
51.·
消息标识符402:标识消息400的唯一标识符。
52.·
消息文本有效载荷404:文本,其由用户经由客户端设备102的用户界面生成并且被包括在消息400中。
53.·
消息图像有效载荷406:图像数据,其由客户端设备102的相机部件捕获或从客户端设备102的存储器取得,并且被包括在消息400中。
54.·
消息视频有效载荷408:视频数据,其由相机部件捕获或从客户端设备102的存储器部件取得并且被包括在消息400中。
55.·
消息音频有效载荷410:音频数据,其由麦克风捕获或从客户端设备102的存储器部件取得,并且被包括在消息400中。
56.·
消息注释412:注释数据(例如,过滤器、贴纸或其他增强),其表示要应用于消息400的消息图像有效载荷406、消息视频有效载荷408或消息音频有效载荷410的注释。
57.·
消息持续时间参数414:参数值,其以秒为单位指示消息内容(例如,消息图像有效载荷406,消息视频有效载荷408,消息音频有效载荷410)将经由消息传递客户端应用104呈现给用户或可由用户访问的时间量。
58.·
消息地理定位参数416:与消息的内容有效载荷相关联的地理定位数据(例如,纬度和纵向坐标)。多个消息地理定位参数416值可以被包括在有效载荷中,这些参数值中的每一个与内容中包括的内容项目(例如,消息图像有效载荷406内的特定图像,或消息视频有效载荷408中的特定视频)相关联。
59.·
消息故事标识符418:标识符值,其标识与消息400的消息图像有效载荷406中的特定内容项相关联的一个或多个内容集合(例如,“故事”)。例如,消息图像有效载荷406内的多个图像可各自使用标识符值与多个内容集合相关联。
60.·
消息标签420:每一消息400可以被加上多个标签,这些标签中的每一个指示消息有效载荷中包括的内容的主题。例如,在消息图像有效载荷406中包括的特定图像描绘动物(例如,狮子)的情况下,标签值可包括在指示相关动物的消息标签420内。标签值可基于用户输入手动生成,或者可使用例如图像识别自动生成。
61.·
消息发送者标识符422:标识符(例如,消息传递系统标识符、电子邮件地址或设备标识符),其指示生成消息400并且发送消息400的客户端设备102的用户。
62.·
消息接收者标识符424:标识符(例如,消息传递系统标识符、电子邮件地址或设备标识符),其指示消息400被寻址到的客户端设备102的用户。
63.消息400的各种组成部分的内容(例如,值)可以是指向内容数据值存储在其中的表中的位置的指针。例如,消息图像有效载荷406中的图像值可以是指向图像表308内的位置(或其地址)的指针。类似地,消息视频有效载荷408内的值可指向存储在视频表310内的数据,存储在消息注释412内的值可指向存储在注释表312中的数据,存储在消息故事标识符418内的值可指向存储在故事表306中的数据,并且存储在消息发送者标识符422和消息接收者标识符424内的值可指向存储在实体表302内的用户记录。
64.图5是示出访问限制过程500的示意图,在该过程中,对内容(例如,短暂消息502以及相关联的多媒体数据有效载荷)或内容集合(例如,短暂的消息故事504)的访问可以是有时间限制的(例如,使其短暂的)。
65.短暂消息502被示出与消息持续时间参数506相关联,消息持续时间参数506的值确定消息传递客户端应用104将把短暂消息502显示给短暂消息502的接收用户的时间量。
在一个实施例中,在消息传递客户端应用104是应用客户端的情况下,短暂消息502可由接收用户查看最多10秒,这取决于发送用户使用消息持续时间参数506指定的时间量。
66.消息持续时间参数506和消息接收者标识符424被示为对消息计时器512的输入,消息计时器512负责确定向由消息接收者标识符424标识的特定接收用户显示短暂消息502的时间量。具体地,短暂消息502将仅被显示给相关接收用户由消息持续时间参数506的值确定的一段时间段。消息计时器512被示出为向更通用的短暂计时器系统202提供输出,该短暂计时器系统202负责对于接收用户的内容(例如,短暂消息502)显示的整体计时。
67.短暂消息502在图5中示出为被包括在短暂的消息故事504(例如,个人故事或事件故事)内。短暂消息故事504具有相关联的故事持续时间参数508,其值确定短暂消息故事504被呈现给消息传递系统100的用户并且消息传递系统100的用户可访问的持续时间。例如,故事持续时间参数508可以是音乐会的持续时间,其中短暂消息故事504是与该音乐会有关的内容的集合。另选地,当执行短暂消息故事504的设置和创建时,用户(拥有用户或策划用户)可指定故事持续时间参数508的值。
68.另外,短暂消息故事504内的每个短暂消息502具有相关联的故事参与参数510,其值确定短暂消息502将在短暂消息故事504的上下文内可访问的持续时间。因此,在短暂消息故事504本身在故事持续时间参数508方面到期之前,特定短暂消息故事504可能在短暂消息故事504的上下文中“过期”并变得不可访问。故事持续时间参数508、故事参与参数510和消息接收者标识符424各自向故事计时器514提供输入,故事计时器514首先在操作上确定短暂消息故事504的特定短暂消息502是否将被显示给特定接收用户,并且如果是,则显示多长时间。需注意,作为消息接收者标识符424的结果,短暂消息故事504还意识到特定接收用户的身份。
69.因此,故事计时器514可操作地控制相关联的短暂消息故事504的整体寿命,以及短暂消息故事504中包括的个别短暂消息502。在一个实施例中,短暂消息故事504内的每个短暂消息502在故事持续时间参数508指定的时间段内保持可见和可访问。在另外的实施例中,某个短暂消息502可在短暂消息故事504的上下文中基于故事参与参数510到期。需注意,即使在短暂消息故事504的上下文中,消息持续时间参数506仍然可确定向接收用户显示特定短暂消息502的持续时间。因此,消息持续时间参数506确定向接收用户显示特定短暂消息502的持续时间,而不管接收用户是否正在观看短暂消息故事504的上下文内部或外部的短暂消息502。
70.短暂计时器系统202还可基于特定短暂消息502已经超过相关联的故事参与参数510的确定,在操作上从短暂消息故事504中移除特定短暂消息502。例如,当发送用户已经建立了从发布起24小时的故事参与参数510时,短暂计时器系统202将在指定的24小时之后从短暂消息故事504中移除相关的短暂消息502。短暂计时器系统202还操作以,在短暂消息故事504内的每个短暂消息502的故事参与参数510已经到期时,或者当短暂消息故事504本身已经在故事持续时间参数508方面到期时,移除短暂的消息故事504。
71.在某些使用情况下,特定短暂消息故事504的创建者可指定不确定的故事持续时间参数508。在这种情况下,对于短暂消息故事504内的最后剩余短暂消息502的故事参与参数510的到期将确定短暂消息故事504本身何时到期。在这种情况下,添加到短暂消息故事504的具有新故事参与参数510的新短暂消息502有效地将短暂消息故事504的寿命延长到
等于故事参与参数510的值。
72.响应于短暂计时器系统202确定短暂消息故事504已经到期(例如,不再可访问),短暂计时器系统202与消息传递系统100(以及例如,具体地,消息传递客户端应用104)通信,以使得与相关短暂消息故事504相关联的标记(例如,图标)不再被显示在消息传递客户端应用104的用户界面内。类似地,当短暂计时器系统202确定对于特定短暂消息502的消息持续时间参数506已经到期时,短暂计时器系统202使消息传递客户端应用104不再显示与短暂消息502相关联的标记(例如,图标或文本标识)。
73.图6是图示3d对象生成系统210的功能部件的框图,其配置3d对象生成系统210以在实时相机馈送中描绘的2d/3d空间中渲染来自2d对象的3d对象。3d对象生成系统210被示为包括渲染模块602、跟踪模块604和中断检测模块606。3d对象生成系统210的各种部件和模块可以被配置为彼此通信(例如,经由总线、共享存储器或交换机)。虽然图6中未示出,但在一些实施例中,3d对象生成系统210可以包括相机或者可以与相机通信,该相机被配置为产生包括图像数据的相机馈送,该图像数据包括图像序列(例如,视频)。
74.所描述的任何一个或多个部件和模块可以单独使用硬件(例如,机器的一个或多个处理器1504(图15))或硬件和软件的组合来实现。例如,所述的3d对象生成系统210的任何部件和模块可以物理地包括一个或多个处理器1504的布置(例如,机器的一个或多个处理器的子集或其中的处理器),该布置被配置为执行本文针对该部件描述的操作。作为另一示例,3d对象生成系统210的任何部件和模块可以包括软件、硬件或两者,其配置一个或多个处理器1504(例如,在机器的一个或多个处理器之中)的布置以执行本文针对该部件描述的操作。因此,3d对象生成系统210的不同部件和模块可以在不同时间点包括和配置这种处理器1504的不同布置或这种处理器1504的单一布置。
75.此外,3d对象生成系统210的任何两个或多个部件和模块可以组合成单个部件或模块,并且本文针对单个部件或模块描述的功能可以在多个部件和模块之间细分。此外,根据各种示例实施例,本文描述为在单个机器、数据库或设备内实现的部件和模块可以分布在多个机器、数据库或设备上。
76.跟踪系统604可以包括第一跟踪子系统604a、第二跟踪子系统604b和第三跟踪子系统604c。每个跟踪子系统基于一组跟踪标记跟踪3d对象在2d/3d空间内的位置。
77.由于环境条件、用户动作、在相机与被跟踪对象/场景之间的意外视觉中断等,跟踪系统经常出现跟踪故障。传统上,此类跟踪失败会导致3d空间中虚拟对象的呈现中断。例如,虚拟对象可能会消失或以其他方式表现不稳定,从而中断虚拟对象在3d空间内呈现的错觉。这会破坏整体3d体验的感知质量。
78.传统的跟踪系统依赖于单一方法(自然特征跟踪(nft)、同时定位和映射(slam)、陀螺仪等),由于传感器数据不准确、移动、视觉标记的丢失或遮挡或场景的动态中断,每种方法在实际使用中都有断裂点。此外,每种方法在能力上可能有各自的限制。例如,陀螺仪跟踪系统只能以3dof跟踪物品。此外,由于每个单独系统的固有限制,使用单个跟踪系统会提供不准确或不稳定的位置估计。例如,由于单独的视觉跟踪不准确性,nft系统可能无法提供足够的俯仰、偏航或滚转估计,而陀螺仪跟踪系统提供不准确的平移(向上、向下、向左、向右)。
79.为了解决传统跟踪系统的上述问题,3d对象生成系统210包括多个冗余跟踪子系
统604a-c,其使得能够进行跟踪子系统之间的无缝转换。多个冗余跟踪子系统604a-c通过将多个跟踪方法合并到单个跟踪系统604中来解决传统跟踪系统的问题。跟踪系统604能够基于由跟踪系统跟踪的跟踪标记(例如,滚转、俯仰、偏航、自然特征等)的可用性,通过在多个跟踪系统之间组合和转换来组合6dof和3dof跟踪技术。因此,当由任何一个跟踪系统跟踪的标记变得不可用时,3d对象生成系统210在6dof和3dof中的跟踪之间无缝切换,从而为用户提供不间断的体验。例如,在视觉跟踪系统(例如,nft、slam)的情况下,通常被分析以确定取向的跟踪标记可以被来自陀螺跟踪系统的陀螺跟踪标记替换。因此,这将使得能够基于跟踪标记的可用性在采用6dof的跟踪和3dof的跟踪之间转换。
80.在一些示例实施例中,为了在6dof和3dof中的跟踪之间转换,3d对象生成系统210收集和存储在跟踪矩阵内的跟踪标记,该跟踪矩阵包括平移标记(例如,向上、向下、向左、向右)和旋转标记(例如,俯仰、偏航、滚转)。由此,由nft系统收集的平移标记可以从跟踪矩阵中提取,并在由nft系统收集的未来的平移标记变得不准确或不可用时被使用。同时,陀螺仪继续提供旋转标记。通过这种方式,当移动设备丢失跟踪标记时,呈现在3d空间中的被跟踪对象不会在丢失跟踪标记时在帧处被突然改变。随后,当目标跟踪对象重新出现在屏幕中,并得到新的平移t1时,视图矩阵的平移部分将利用新的平移t1,并使用t
1-t0作为视图矩阵的平移。
81.3d对象生成系统210的渲染模块602被配置为获得2d对象,并且从2d对象生成虚拟3d对象并在由相机产生的实时相机馈送内捕获的3d空间中渲染虚拟3d对象。例如,渲染模块602可以基于从用户接收到的2d对象(例如,2d图像或文本)的输入来生成3d对象并且在实时相机馈送内捕获的3d空间中渲染3d对象。在渲染3d对象时,3d对象生成系统210基于在3d空间中检测到的真实世界参考面将3d对象分配到3d空间中的位置。渲染模块602可以呈现已经在两个不同位置生成的2d对象以及3d对象。2d对象可以被放置在第一用户指定位置并且与2d对象对应的3d对象可以被放置在屏幕上的第二用户指定位置。
82.3d对象生成系统210此后可以由一个或多个跟踪系统按照6dof跟踪在3d空间中3d对象相对于用户设备的位置。例如,3d对象生成系统210的一个或多个跟踪系统可以收集和分析一组跟踪标记(例如,滚转、俯仰、偏航、自然特征等),以用6dof跟踪在3d空间中3d对象相对于用户设备的位置。在这样的实施例中,3d对象生成系统210可以基于被跟踪标记的可用性来在跟踪系统之间转换以保持按照6dof的一致的跟踪。在同时呈现2d和3d对象的实施例中,可以在3d空间中跟踪3d对象,而2d对象保持在静态位置并且不被跟踪并且不在3d空间中移动。在另一个实施例中,3d对象和2d对象两者都在3d空间中相对于彼此被跟踪,因为实时相机角度移动和改变以修改其中呈现3d对象和2d对象的实时相机馈送的呈现。在一些实施例中,在指定的时间间隔之后从显示中移除2d对象,或者在3d对象被生成并显示在相机馈送中之后根本不呈现该2d对象。在这种情况下,从2d对象生成的虚拟3d对象在相机馈送中被呈现,而2d对象不在相机馈送中被呈现。
83.中断检测模块606监测跟踪标记以检测中断。在中断检测部件606检测到一个或多个标记的中断从而使得按照6dof的跟踪变得不可靠或不可能时,3d对象生成系统210转变为按照3dof 3d空间中跟踪3d对象以防止显示的中断。例如,3d对象生成系统210可以从按照6dof跟踪对象的第一跟踪子系统604a(或跟踪子系统组中的第一组跟踪子系统)转换到跟踪子系统组中的第二跟踪子系统604b(或第二组跟踪子系统),其中,第二跟踪系统能够
基于可用的跟踪标记在3d空间中以3dof跟踪3d对象。
84.在一些示例实施例中,3d对象生成系统210的一组跟踪系统包括陀螺跟踪系统、nft系统和slam跟踪系统。跟踪系统组中的每个跟踪系统可以分析跟踪标记以跟踪在3d空间内虚拟对象的位置。例如,为了用6dof跟踪虚拟对象,3d对象生成系统210可能需要至少六个跟踪标记可用。当跟踪标记由于各种原因变得受阻或不可用时,3d对象生成系统210可以在跟踪系统集合中的可用跟踪系统之间转换,以便维持6dof或在必要时转换到3dof。
85.将容易理解的是,3d对象生成系统210在各种环境和情况中提供在真实世界3d空间中一致渲染的虚拟对象(例如,3d字幕或3d动画、视频或图像)。在许多应用中,可能需要当一个或多个用户、相机或其他跟踪项目在环境中四处移动时,为这些虚拟对象的位置提供牢固的一致性。这可能涉及对真实世界环境中特定固定参考点(例如,固定表面)的识别和使用。不使用固定参考点或项目会导致在虚拟对象的渲染和呈现中出现浮动或其他不希望的不一致。
86.为了确保在虚拟对象位置中的牢固一致性,可以采用呈现镜头的示例形式的注释数据,该示例形式专用于本文描述的3d对象跟踪和渲染。特别是,表面感知镜头是一种呈现镜头,它识别和引用真实世界的表面(例如,地面),以用于在3d空间中虚拟对象的一致的渲染和呈现。表面感知镜头可以是渲染模块602内的特定部分或子模块。渲染模块602的这个表面感知镜头可以被配置为基于视觉相机内容识别参考面,并且还可以利用其他设备输入(例如,陀螺仪、加速度计、罗盘)来确定什么是在实时相机馈送中描绘的3d空间内的适当表面。一旦确定了参考面,就可以关于该参考面定位虚拟3d对象。在一个示例中,3d空间中的参考面是地面。在该示例中,3d对象生成系统210在3d空间中的位置处渲染3d对象,使得3d对象看起来在3d空间上或略高于3d空间。
87.图7-8是图示根据示例实施例的3d对象生成系统在执行用于生成包括从2d对象创建的3d对象的消息的方法700和800中的示例操作的流程图。方法700和800可以通过计算机可读指令实施,该计算机可读指令由一个或多个处理器执行,使得方法700和800的操作可以部分或全部由3d对象生成系统210的的功能部件执行;因此,方法700和800在下面通过示例的方式参考其进行描述。然而,应当理解,方法700和800的至少一些操作可以部署在各种其他硬件配置上,并且方法700和800不旨在限于3d对象生成系统210。结合方法700和800描述的操作中的任何一个操作可以以不同于所示出和描述的顺序来执行或完全省略。
88.在操作702处,注释系统206接收第一输入以激活3d对象镜头。3d对象镜头可以从一组镜头中选择。
89.在操作704处,3d对象生成系统210致使在客户端设备102上显示编辑界面212。编辑界面212使用户能够输入对2d对象的选择以及对2d对象的修改或编辑,这些修改或编辑提供用于从2d对象生成3d对象的基础。为此,编辑界面212可以包括键盘或其他输入机制以使得用户能够输入对2d内容的选择(例如,一个或多个文本字符、图像选择、视频选择、动画选择,等等)。用户输入的2d内容被显示为在由客户端设备102的相机产生的相机馈送之上的2d覆盖。
90.在操作706处,3d对象生成系统210接收包括由客户端设备的用户使用编辑界面212输入的一个或多个2d对象的第二输入。
91.在操作708处,3d对象生成系统210从用户经由编辑界面212输入的2d内容生成一
个或多个3d对象。如上所述,由用户输入的一个或多个2d对象的2d表示在编辑界面212中被显示为在由客户端设备102的相机产生的相机馈送之上的覆盖。在一个实施例中,从2d内容生成的3d对象与内容的2d表示同时被呈现。在其他实施例中,仅呈现3d对象并且从显示中移除2d对象。下面结合图12-13讨论编辑界面212的示例。
92.在操作710处,3d对象生成系统210检测第三输入,并且响应于检测到第三输入,在操作712处,3d对象生成系统210致使显示预览界面214。例如,第三输入可以包括基于运动的输入,例如客户端设备102的取向的变化。例如,如果用户正在将客户端设备102的相机指向向上的取向,则在编辑界面212中呈现2d内容的2d表示。如果用户将相机的取向改变为面朝下,则3d对象生成系统212可以从显示编辑界面212切换到显示预览界面214。预览界面214包括基于用户输入的2d内容生成的3d对象的呈现。3d对象是用户输入的2d内容的3d表示。可以在相机馈送中捕获的3d空间中的位置处渲染3d对象,该位置基于3d空间中检测到的参考面(例如地面或地板表面)。
93.在操作714处,消息传递系统100生成包括应用了3d对象的一个或多个图像的消息。在生成消息时,消息传递系统100可以记录用户指定或预定长度(例如,3秒)的视频,该视频包括来自相机馈送的应用了3d对象的一个或多个图像。消息传递系统100可以进一步在生成消息时将一个或多个用户指定的过滤器应用于所记录的一个或多个图像。
94.如图8的方法800所示,在一些实施例中,方法700可以包括操作802、804、806、808和810。与这些实施例一致,操作802、804、806、808和810可以作为操作708的一部分(例如,作为子例程或子操作)来执行,其中3d对象生成系统210从输入的2d对象生成虚拟3d对象并致使显示预览界面,该预览界面包括在实时或记录的相机馈送内捕获的真实世界环境内虚拟3d对象的呈现。
95.在操作802处,渲染部件602接收包括2d对象的2d图像。例如,渲染部件602从编辑界面接收2d图像,该2d图像包括文本、动画角色、人物或任何其他合适的用户生成或预生成内容。在一个实施例中,图像作为预定尺寸的正方形图像被接收,该正方形图像包括正方形内的感兴趣的对象或主体。作为示例,图9示出了包括图像内的对象910的输入图像901(例如,正方形图像)。在一些实施例中,响应于接收到输入图像901,渲染部件602生成在图10-11中示出(并且在下面描述)的纹理图,其表示输入图像中的对象910的纹理。
96.在操作804处,渲染部件602基于2d图像生成阿尔法图像或蒙版,其中2d对象的形状和位置以第一像素颜色表示,而2d图像中的其他内容以第二像素颜色表示。具体地,渲染部件602生成阿尔法图像或蒙版,其中前景内容(例如,2d对象或目标对象)以第一像素颜色表示,而2d图像中的背景内容以第二像素颜色表示。例如,渲染部件602逐个像素地处理接收到的正方形图像901。对于每个像素,渲染部件602确定该像素是透明的(对应于透明像素值)还是不透明的(对应于不同于透明像素值的像素值)。响应于确定像素是透明的,渲染部件602为透明像素分配白色。响应于确定像素是不透明的,渲染部件602为不透明像素分配黑色。渲染部件602生成阿尔法图像,该图像包括在其对应透明或不透明像素的对应位置处的白色和黑色像素。示例阿尔法图像920在图9中示出。如图所示,对象910由不透明像素组成并且由阿尔法图像920中的所有黑色像素表示,而对象外部的像素是透明的并且由阿尔法图像920中的白色像素表示。
97.在操作806处,渲染部件602使用阿尔法图像识别2d对象的轮廓或外形。例如,渲染
部件602识别阿尔法图像920中的黑白边界。特别地,渲染部件602确定阿尔法图像中的像素在哪里从黑色过渡到白色。过渡点用另一个像素(例如,白色或灰色像素)标记,并且轮廓图像930被生成以表示白色像素和黑色像素之间的所有过渡点。过渡点对应于输入图像901中的2d对象910的轮廓。在一些实施例中,使用归一化过程将过渡点归一化为围绕2d对象910的平滑路径。
98.在操作808处,渲染部件602基于2d对象的轮廓生成3d网格。例如,渲染部件602归一化轮廓并识别在轮廓图像930中的2d对象的归一化轮廓的片段。对于每个片段,渲染部件602生成多边形边缘以包括在对应于2d对象910的3d网格中。在一个实施例中,渲染部件602将2d对象910围绕其轴线旋转预定度数(例如,20度)并且将生成的多边形边缘附加到2d对象910的轮廓周围。这产生对应于2d对象910的3d网格,如图9的3d网格940所示。
99.在操作810处,渲染部件602将2d对象的纹理应用于3d网格以输出表示2d对象的3d对象。例如,渲染部件602检索将输入纹理映射到3d网格的uv位置的材料。如图10所示,该材料包括正面区域1010、背面区域1020、外侧区域1030和内侧区域1040。正面区域1010标识3d网格中与3d对象的正面对应的一组uv位置,背面区域1020标识3d网格中与3d对象的背面对应的一组uv位置,外侧区域1030标识3d网格中对应于3d对象外侧的一组uv位置,以及内侧区域1040标识3d网格中对应于3d对象内侧的一组uv位置。
100.具体地,渲染部件602使用uv映射过程将材料区域映射到3d网格的对应部分。即,uv映射是将2d图像投影到3d模型表面以进行纹理映射的3d建模过程。字母“u”和“v”表示2d纹理的轴线,因为“x”、“y”和“z”已经用于表示模型空间中3d对象的轴线。例如,uv映射过程涉及将材料部分中的像素分配给多边形上的表面映射,例如通过复制材料部分的三角形片并将其粘贴到3d对象上的三角形上。可以为3d网格中的每个顶点生成uv坐标(例如,纹理坐标)。
101.渲染部件602将来自正面区域1010的第一纹理应用于3d网格的正面部分;将来自内侧区域1040的第二纹理应用于3d网格的内侧部分;将来自外侧区域1030的第三纹理应用于3d网格的外侧部分;并且将来自背面区域1020的第四纹理应用于3d网格的背面部分。例如,渲染部件602将来自正面区域1010的第一纹理1110(图11)应用于3d网格的正面部分;将来自内侧区域1040的第二纹理1140应用于3d网格的内侧部分;将来自外侧区域1030的第三纹理1130应用于3d网格的外侧部分;并且将来自背面区域1020的第四纹理1120应用于3d网格的背面部分。通过将第一、第二、第三和第四纹理覆盖在与材料映射指示的uv位置相对应的3d网格的部分上来应用第一、第二、第三和第四纹理。
102.在一些实施例中,材料的至少第一和第四纹理1110和1120是从用户提供的2d对象生成的,而第二和第三纹理1130和1140是从预选或预定图案预先生成的。在一些实施例中,基于接收到的2d对象的类型来选择第二和第三纹理1130和1140的图案。例如,如果2d对象是图像,则第二和第三纹理1130和1140对应于第一对相反的图案(例如,第一对角线方向上的线和相反对角线方向上的线)。如果2d对象是文本,则第二和第三纹理1130和1140对应于第二对图案(例如,具有不同密度的散列标记)。在一些实施例中,第四纹理1120或用于背面区域1020的纹理是通过生成用于正面区域1010的第一纹理1110的镜像来生成的,生成用于正面区域1010的第一纹理1110的镜像是通过垂直镜像用于正面区域1010的第一纹理1110进行的。
103.在一些实施例中,材料的纹理基于生成3d对象的设备的背景随时间变化。例如,如果3d对象是在早上的第一时间点生成的,则可以使用更亮的颜色纹理,如果相同的3d对象是在晚上的第二时间点生成的,则可以使用更暗的颜色纹理。在一些实施例中,基于设备的背景仅调整来自正面区域1010的第一纹理和来自背面区域1020的第四纹理。例如,第一和第四纹理中显示的背景可以基于呈现3d对象的设备的背景而变化。具体地,如果设备被确定为处于表明用户正在乘坐飞机的高海拔,则第一和第四纹理中显示的背景可以改变以说明天空。另一方面,如果设备被确定为处于低海拔但位于存在表明用户在船上的水体的地理位置,则第一和第四纹理中显示的背景可以改变以说明海洋。
104.在一些实施例中,当用户在3d空间中操纵3d对象时,将应用于3d对象的各种纹理呈现给用户。例如,可以在相机馈送中描绘的真实世界环境中向用户呈现3d对象。3d对象最初可以以面向前的布置呈现,使得3d对象的背面不可见。因此,来自背面区域1020的第四纹理是不可见的。用户可以在真实世界中围绕3d对象移动相机和/或可以围绕3d对象的垂直轴线转动或旋转3d对象。随着用户移动相机以查看对象的背面或随着3d对象的旋转,来自背面区域1020的第四纹理变得越来越可见。一旦用户将对象旋转180度或通过相机围绕对象行走以查看对象的背面,则来自背面区域1020的第四纹理完全可见并且来自正面区域1010的第一纹理不再可见。作为另一个示例,用户可以围绕3d对象的水平轴线旋转3d对象或定位相机以查看对象的底部。在这种情况下,来自内侧区域1040的第二纹理变得越来越可见,直到当相机定位到对象底部的全视图时对象围绕其水平轴线旋转90度。
105.在一些实施例中,除了或替代使用挤出过程从2d对象生成3d对象之外,在该过程中,如上文所讨论的基于阿尔法图像的推断轮廓并将3d网格和/或纹理应用于所推断轮廓来生成3d对象,3d对象可以直接从2d输入图像901、直接从推断轮廓、直接从阿尔法图像或其任意组合生成,而不应用3d网格。通过直接从输入图像901生成3d对象,需要较少的计算资源并且降低了计算复杂性。这可以延长电池寿命并提高生成3d对象的速度。在一些实施例中,呈现部件602确定客户端设备102的处理能力是否超过阈值或对应于指定的最小处理能力集。例如,可以确定客户端设备102的处理器是否具有超过特定范围的处理速度以及是否具有特定量的空闲和可用存储空间。如果客户端设备102的处理能力超过阈值或对应于指定的最小处理能力集,则渲染部件602可以采用挤出过程,在该过程中,基于2d阿尔法图像的推断轮廓,并且将3d网格和/或纹理应用于推断的轮廓,来生成3d对象。如果客户端设备102的处理能力未能超过或对应于阈值或未能对应于指定的最小处理能力集,则渲染部件602可以使用需要较少的计算资源的过程直接从2d输入图像901生成3d对象。
106.在一个实施例中,为了直接从2d对象生成3d对象,图像901中描绘的2d对象910在3d空间中绕其垂直轴线旋转指定的度数(例如,20度)。指定长度的像素阵列从第一位置(例如,2d对象的正面)扩展到第二位置(例如,对象的背面)。每个像素阵列复制从中延伸阵列的像素的颜色或像素值。例如,来自2d对象顶部的第一像素具有第一值。在这种情况下,20个像素长或1厘米长的阵列可以从第一像素向后延伸或延伸到z轴。阵列中20个像素的颜色也是第一值。然后选择与第一像素相邻的第二像素,并且长度相同或更短的另一个阵列可以从第二像素向后延伸或延伸到z轴。从第二像素延伸的该阵列中的像素与第二像素具有相同的值。在一些实施例中,只有一部分阵列是可见的,并且随着3d对象在3d空间中旋转,直到其他阵列的其他部分变得可见。
107.在一个实施例中,为了在不应用3d网格的情况下直接从2d对象、直接从推断的轮廓、直接从阿尔法图像或其任何组合生成3d对象,2d对象910被复制指定次数。2d对象的副本被堆叠在2d对象后面,并且当虚拟3d对象旋转或相机围绕对象移动时,副本的边缘变得可见。这被称为用于生成虚拟3d对象的堆叠2d复制过程。2d对象的每个副本都位于另一个副本之后,并且其在3d空间中的位置被偏移指定数量的像素(例如,5或10个像素)。通过这种方式,每隔指定数量的像素地将新副本放置在初始2d对象后面。
108.图13示出了说明性3d对象,其中当3d对象绕其垂直轴线旋转时,2d对象的副本变得可见。具体地,2d对象的正面由2d对象的第一实例1310示出。空间1313被插入在第一实例1310之后,第一实例1310在3d空间中5或10个像素深且可由具有灰色值的像素表示。在空间1313后面,2d对象的第二实例1311被呈现在3d空间中并且随着3d对象绕其垂直轴线旋转而变得可见。如果3d对象被操纵以将3d对象绕其垂直轴线旋转90度,则2d图像的所有副本的外边缘(或沿边缘的像素值)和具有灰色像素值的偏移变得完全可见。作为一个示例,在这种情况下,2d图像的20个不同副本的边缘变得可见,并且当3d对象围绕其垂直轴线旋转时,将副本彼此分开的20个灰色偏移像素值变得可见。因此,不是使用3d网格以视觉和空间连续的方式在3d空间中扩展2d对象的边缘,而是使用2d对象的非连续副本来创建虚拟3d对象。在一个实施例中,随着在3d空间中堆叠在2d对象后面的副本数量增加,使用应用于2d对象轮廓的3d网格创建的3d对象变得与使用堆叠的2d复制过程创建的3d对象在视觉上几乎无法区分。
109.图12-13是图示根据一些实施例的由消息传递系统100提供的用户界面的界面图。用户界面包括镜头转盘,通过选择镜头或编辑图标或选项(未示出)用户可以从该镜头转盘启动3d对象生成系统210的功能。与一些实施例一致,在接收到对镜头或编辑图标或选项的用户选择时,向用户呈现编辑界面,该编辑界面被配置用于从选择的2d对象创建和编辑3d对象。例如,一旦接收到用户对选项的选择,3d对象生成系统210就可以致使显示图12-13所示的用户界面。如图12所示,用户界面呈现由用户选择的2d对象1210,其为要在3d空间内渲染的3d对象1220提供基础。
110.如图12所示,在从用户接收到2d对象1210的输入时,用户界面被更新以呈现2d对象1210的表示。客户端设备102的用户可以通过提供诸如改变客户端设备102的取向(例如,将相机的取向从指向上改变为指向下)的输入或通过选择呈现在客户端设备102的用户界面内的界面元素(例如,按钮),来访问包括3d对象的预览的预览界面(例如,预览界面214)。图12图示包括基于用户提供的2d对象1210生成的3d对象1220的预览的界面。在(例如,基于计算设备的取向变化)检测到在相机馈送内捕获的3d空间中的参考表面(例如,地面)时,在相机馈送中捕获的3d空间内渲染基于2d对象1210的3d对象1220。如图所示,3d对象1220相对于3d空间中的参考表面被渲染。也就是说,所渲染的3d对象1220在3d空间内相对于参考表面(例如,地面)的位置处定向。以这种方式渲染3d对象1220使其看起来附着在相机馈送中捕获的真实世界表面上。
111.3d对象可以被渲染在3d空间内的第一位置处,并且3d对象被渲染成使得它看起来附着在参考表面(例如,地面)上。通过与3d对象的适当交互(例如,选择和拖动手势),用户可以移动3d对象以使其被渲染在3d空间内的第二位置处。
112.用户可以通过与3d对象的适当交互来改变3d对象的缩放和旋转。例如,用户可以
用两根手指在显示相机馈送的输入触摸屏显示器上执行捏合和旋转手势,以在参考面上缩放和旋转3d对象,而不影响3d对象的布局。
113.一旦用户对3d对象的放置和外观感到满意,用户就可以创建包括3d对象和来自相机馈送的一个或多个图像的消息。例如,用户可以使用客户端设备102来记录其中渲染了3d对象以使得它看起来附着到视频中的表面的视频。在录制视频时,可以省略与3d对象同时呈现的2d对象,从而在录制的视频中仅保留3d对象可见。
114.作为创建消息的一部分,可以向用户呈现菜单或其他界面元素,其允许用户选择并应用一个或多个过滤器,以应用于相机馈送的图像以及在相机视图中捕获的3d空间中渲染的3d对象。
115.图14是图示示例软件架构1406的框图,其可以与本文描述的各种硬件架构结合使用。图14是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构以促进本文描述的功能。软件架构1406可以在诸如图15的机器1500的硬件上执行,该硬件包括处理器1504、存储器1514和输入/输出(i/o)部件1518等。代表性的硬件层1452被示出并且可以表示例如图15的机器1500。代表性硬件层1452包括处理单元1454,其具有相关联的可执行指令1404。可执行指令1404表示软件架构1406的可执行指令,包括本文所述的方法、部件等的实现。硬件层1452还包括存储器和/或存储模块存储器/存储设备1456,其也具有可执行指令1404。硬件层1452还可以包括其他硬件1458。
116.在图14的示例架构中,软件架构1406可以被概念化为层堆栈,其中每一层提供特定功能。例如,软件架构1406可以包括诸如操作系统1402、库1420、应用1416、框架/中间件1418和表示层1414的层。在操作上,层内的应用1416和/或其他部件可以通过软件堆栈调用api调用1408并且接收响应1412作为对api调用1408的响应。所示的层本质上具有代表性,并非所有软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件1418,而其他操作系统可能提供这样的层。其他软件架构可能包括额外的或不同的层。
117.操作系统1402可以管理硬件资源并提供公共服务。操作系统1402可以包括例如内核1422、服务1424和驱动器1426。内核1422可以充当硬件和其他软件层之间的抽象层。例如,内核1422可以负责存储器管理、处理器管理(例如调度)、部件管理、联网、安全设置等。服务1424可以为其他软件层提供其他公共服务。驱动器1426负责控制底层硬件或与底层硬件接口。例如,取决于硬件配置,驱动器1426包括显示器驱动器、相机驱动器、驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(usb)驱动器)、驱动程序、音频驱动器、电源管理驱动器等。
118.库1420提供由应用1416和/或其他部件和/或层使用的公共基础设施。库1420提供的功能允许其他软件部件以比直接与底层操作系统1402功能(例如,内核1422、服务1424和/或驱动器1426)接口更容易的方式执行任务。库1420可以包括系统库1444(例如,c标准库),其可以提供诸如存储器分配函数、字符串操作函数、数学函数等的函数。此外,库1420可以包括api库1446,诸如媒体库(例如,支持例如mpreg4、h.264、mp3、aac、amr、jpg、png,的各种媒体格式的呈现和操纵的库)、图形库(例如,可用于在显示器上的图形内容中渲染2d和3d的opengl框架)、数据库库(例如,可提供各种关系数据库功能的sqlite)、网络库(例如,可提供web浏览功能的webkit)等。库1420还可以包括多种其他库1448以向应用1416和其他软件部件/模块提供许多其他api。
119.框架/中间件1418(有时也称为中间件)提供可由应用1416和/或其他软件部件/模块使用的更高级别的公共基础设施。例如,框架/中间件1418可以提供各种gui功能、高级资源管理、高级定位服务等。框架/中间件1418可以提供可由应用1416和/或其他软件部件/模块使用的广泛范围的其他api,其中一些可以专用于特定操作系统1402或平台。
120.应用1416包括内置应用1438和/或第三方应用1440。代表性内置应用1438的示例可以包括但不限于联系人应用、浏览器应用、书籍阅读器应用、定位应用、媒体应用、消息传递应用和/或游戏应用。第三方应用1440可以包括由特定平台的供应商以外的实体使用android
tm
或ios
tm
软件开发工具包(sdk)开发的应用,并且可以是在诸如ios
tm
、android
tm
、phone或其他移动操作系统的移动操作系统上运行的移动软件。第三方应用1440可以调用由移动操作系统(诸如操作系统1402)提供的api调用1408以促进本文描述的功能。
121.应用1416可以使用内置操作系统功能(例如,内核1422、服务1424和/或驱动器1426)、库1420和框架/中间件1418来创建用户接口以与系统用户交互。可替代地或附加地,在一些系统中,与用户的交互可以通过表示层(例如表示层1414)发生。在这些系统中,应用/部件“逻辑”可以与与用户交互的应用/部件的各个方面分开。
122.图15是图示根据一些示例实施例的能够从机器可读介质(例如,机器可读存储介质)读取指令并执行本文中讨论的任何一种或多种方法的机器1500的部件的框图。具体地,图15示出了计算机系统的示例形式的机器1500的图解表示,在机器1500中,可以执行用于致使机器1400执行本文讨论的任何一种或多种方法的指令1510(例如,软件、程序、应用、小应用、app或其他可执行代码)。因此,指令1510可用于实现本文描述的模块或部件。指令1510将通用的非编程机器1500转换成特定机器1500,所述特定机器1500被编程为以所描述的方式执行所描述和图示的功能。在替代实施例中,机器1500作为独立设备操作或者可以耦合(例如,联网)到其他机器。在联网部署中,机器1500可以在服务器-客户端网络环境中以服务器机器或客户端机器的能力运行,或者在对等(或分布式)网络环境中作为对等机器运行。机器1500可以包括但不限于服务器计算机、客户端计算机、个人计算机(pc)、平板计算机、膝上型计算机、上网本、机顶盒(stb)、个人数字计算机助理(pda)、娱乐媒体系统、蜂窝电话、智能手机、移动设备、可穿戴设备(例如智能手表)、智能家居设备(例如智能电器)、其他智能设备、web设备、网络路由器、网络交换机、网桥或任何能够顺序或以其他方式执行指令1510的机器,指令1510指定机器1500要采取的动作。此外,虽然仅示出了单个机器1500,但术语“机器”也应被视为包括单独或联合执行指令1510以执行本文讨论的任何一种或多种方法的机器的集合。
123.机器1500可以包括处理器1504、存储器/存储设备1506和i/o部件1518,它们可以被配置为诸如经由总线1502彼此通信。在一个示例实施例中,处理器1504(例如,中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp)、专用集成电路(asic)、射频集成电路(rfic)、另一处理器或其任何合适的组合)可以包括例如可以执行指令1510的处理器1508和处理器1512。术语“处理器”旨在包括多核处理器1504,其可包括可同时执行指令的两个或更多个独立处理器(有时称为“内核”)。尽管图15示出了多个处理器,但是机器1500可以包括具有单核的单个处理器、具有多核的单个处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个
处理器或其任何组合。
124.存储器/存储设备1506可以包括存储器1514(诸如主存储器或其他存储器存储)和存储单元1516,两者都可由处理器1504诸如经由总线1502访问。存储单元1516和存储器1514存储实施本文描述的方法或功能中的任何一种或多种的指令1510。指令1510还可以在机器1500对其执行期间完全或部分地驻留在存储器1514内、存储单元1516内、处理器1504中的至少一个内(例如,在处理器的高速缓存内)、或它们的任何合适的组合内。因此,存储器1514、存储单元1516和处理器1504的存储器是机器可读介质的示例。
125.i/o部件1518可以包括多种部件以接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量值等等。包括在特定机器1500中的特定i/o部件1518将取决于机器的类型。例如,诸如移动电话的便携式机器将可能包括触摸输入设备或其他此类输入机制,而无头服务器机器将可能不包括此类触摸输入设备。应当理解,i/o部件1518可以包括图15中未示出的许多其他部件。i/o部件1518根据功能分组仅仅是为了简化以下讨论并且分组决不是限制性的。在各种示例实施例中,i/o部件1518可以包括输出部件1526和输入部件1528。输出部件1526可以包括视觉部件,例如,诸如等离子体显示面板(pdp)的显示器,发光二极管(led)显示器,液晶显示器(lcd),投影仪或阴极射线管(crt),声学部件(例如,扬声器),触觉部件(例如,振动电机、阻力机制),其他信号发生器等。输入部件1528可包括字母数字输入部件(例如,键盘、被配置为接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于点的输入部件(例如,鼠标、触摸板、轨迹球、操纵杆、运动传感器或其他指点仪器)、触觉输入部件(例如,物理按钮、提供位置和/或触摸力或触摸手势的触摸屏,或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
126.在进一步的示例实施例中,i/o部件1518可以包括生物特征部件1530、运动部件1534、环境部件1536或位置部件1538,以及大量其他部件。例如,生物特征部件1530可以包括用于检测表情(例如,手部表情、面部表情、声音表情、身体姿势或眼动追踪)、测量生物信号(例如,血压、心率、体温、出汗或脑电波)、标识人(例如,语音标识、视网膜标识、面部标识、指纹标识或基于脑电图的标识)等的部件。运动部件1534可以包括加速度传感器部件(例如,加速度计)、重力传感器部件、旋转传感器部件(例如,陀螺仪)等等。环境部件1536可包括例如照度传感器部件(例如,光度计)、温度传感器部件(例如,检测环境温度的一个或多个温度计)、湿度传感器部件、压力传感器部件(例如,气压计)、声学传感器部件(例如,一个或多个检测背景噪声的麦克风)、接近度传感器部件(例如,检测附近对象的红外传感器)、气体传感器(例如,用于检测危险气体的浓度以确保安全或测量大气中的污染物的气体检测传感器)或可以提供与周围物理环境相对应的指示、测量值或信号的其他部件。位置部件1538可包括定位传感器部件(例如,gps接收器部件)、海拔传感器部件(例如,海拔计或检测可从中导出海拔的气压的气压计)、取向传感器部件(例如,磁力计),等等。
127.可以使用多种技术来实现通信。i/o部件1518可以包括通信部件1540,其可操作以分别经由耦合1524和耦合1522将机器1500耦合到网络1532或设备1520。例如,通信部件1540可以包括网络接口部件或其他合适的设备以与网络1532接口。在进一步的示例中,通信部件1540可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(nfc)部件、信部件1540可以包括有线通信部件、无线通信部件、蜂窝通信部件、近场通信(nfc)部件、部件(例如,低功耗)、部件和其他通信部件以经由其他方式提供通信。设备1520可以是另一台机器或多种外围设备(例如,经由usb耦合的外围设备)中的任一个。
128.此外,通信部件1540可以检测标识符或包括可操作以检测标识符的部件。例如,通信部件1540可以包括射频识别(rfid)标签读取器部件、nfc智能标签检测部件、光学读取器部件(例如光学传感器,用于检测例如通用产品代码(upc)条码的一维条码,例如快速响应(qr)码、aztec码、datamatrix、dataglyph、maxicode、pdf417、ultracode、uccrss-2d条码的多维条码和其他光学代码)、或声学检测部件(例如,标识标记的音频信号的麦克风)。此外,可以经由通信部件1540导出各种信息,例如经由因特网协议(ip)地理定位进行定位、经由信号三角测量导出定位、经由检测可以指示特定的位置的nfc信标信号进行定位,等等。
129.词汇表:
130.在此上下文中,“载体信号”是指能够存储、编码或携带由机器执行的指令的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进此类指令的通信。可以使用传输介质经由网络接口设备并使用多种众所周知的传输协议中的任何一种在网络上传输或接收指令。
131.在此上下文中,“客户端设备”是指与通信网络接口以从一个或多个服务器系统或其他客户端设备获取资源的任何机器。客户端设备可以是但不限于移动电话、台式计算机、膝上型计算机、pda、智能电话、平板电脑、超级本、上网本、膝上型计算机、多处理器系统、基于微处理器或可编程的消费电子产品、游戏机、机顶盒或用户可以用来访问网络的任何其他通信设备。
[0132]“通信网络”在此上下文中是指网络的一个或多个部分,这些部分可以是自组织网络、内联网、外联网、虚拟专用网(vpn)、局域网(lan)、无线局域网(wlan)、广域网(wan)、无线广域网(wwan)、城域网(man)、因特网、因特网的一部分、公共交换电话网(pstn)的一部分、普通老式电话服务(pots)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络或两个或更多个此类网络的组合。例如,网络或网络的一部分可以包括无线或蜂窝网络,并且耦合可以是码分多址(cdma)连接、全球移动通信系统(gsm)连接或其他类型的蜂窝或无线耦合。在该示例中,耦合可以实现多种类型的数据传输技术中的任何一种,诸如单载波无线电传输技术(1xrtt)、演进数据优化(evdo)技术、通用分组无线电服务(gprs)技术、增强型数据速率gsm演进(edge)技术、包括3g的第三代合作伙伴计划(3gpp)、第四代无线(4g)网络、通用移动电信系统(umts)、高速分组接入(hspa)、全球微波互操作性接入(wimax)、长期演进(lte)标准、由各种标准制定组织定义的其他技术、其他远程协议或其他数据传输技术。
[0133]
在此上下文中的“短暂消息”是指在限时持续时间内可访问的消息。短暂消息可以是文本、图像、视频等。短暂消息的访问时间可以由消息发送者设置。可替代地,访问时间可以是默认设置或由接收者指定的设置。无论设置技术如何,消息都是暂时的。
[0134]“机器可读介质”在此上下文中是指能够短暂或永久存储指令和数据的部件、设备或其他有形介质,并且可包括但不限于随机存取存储器(ram)、只读存储器(rom)、缓冲存储器、闪存、光学介质、磁介质、高速缓存、其他类型的存储(例如、可擦可编程只读存储器(eeprom)和/或其任何合适的组合。术语“机器可读介质”应被认为包括能够存储指令的单个介质或多个介质(例如,集中式或分布式数据库或相关联的高速缓存和服务器)。术语“机器可读介质”还应被认为包括能够存储由机器执行的指令(例如,代码)的任何介质或多种
介质的组合,使得指令在由机器的一个或多个处理器执行时,促使机器执行本文描述的任何一种或多种方法。因此,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的基于云的存储系统或存储网络。术语“机器可读介质”不包括信号本身。
[0135]
术语“部件”在此上下文中是指具有由函数或子例程调用、分支点、api和/或提供特定处理或控制功能的分区或模块化的其他技术定义的边界的设备、物理实体或逻辑。部件可以经由它们的接口与其他部件组合以执行机器过程。部件可以是设计用于与其他部件一起使用的封装功能硬件单元,以及通常执行相关功能的特定功能的程序的一部分。部件可以构成软件部件(例如,包含在机器可读介质上的代码)或硬件部件。“硬件部件”是能够执行某些操作并且可以以某种物理方式配置或布置的有形单元。在各种示例实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件部件(例如,处理器或一组处理器)可以由软件(例如,应用或应用部分)配置为运行以执行如本文所述的某些操作的硬件部件。硬件部件也可以机械地、电子地或其任何合适的组合来实现。例如,硬件部件可以包括永久配置为执行某些操作的专用电路或逻辑。硬件部件可以是专用处理器,诸如现场可编程门阵列(fpga)或asic。硬件部件还可包括由软件临时配置以执行某些操作的可编程逻辑或电路。例如,硬件部件可以包括由通用处理器或其他可编程处理器执行的软件。一旦被这样的软件配置,硬件部件就变成了专门为执行配置的功能而量身定制并且不再是通用处理器的特定机器(或机器的特定部件)。应当理解,以机械方式、在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中实现硬件部件的决定可能由成本和时间考虑因素驱动。因此,短语“硬件部件”(或“硬件实现的部件”)应理解为包含有形实体,即物理构造、永久配置(例如,硬连线)或临时配置(例如,编程的)以某种方式操作或执行本文描述的某些操作的实体。考虑其中硬件部件被临时配置(例如,编程)的实施例,每个硬件部件不需要在任何一个时间实例被配置或实例化。例如,在硬件部件包括通过软件配置成为专用处理器的通用处理器的情况下,该通用处理器可以在不同时间分别被配置为不同的专用处理器(例如,包括不同的硬件部件)。软件相应地配置一个或多个特定处理器,例如,以在一个时间实例构成特定硬件部件并在不同时间实例构成不同硬件部件。硬件部件可以向其他硬件部件提供信息以及从其他硬件部件接收信息。因此,所描述的硬件部件可以被认为是通信耦合的。在多个硬件部件同时存在的情况下,可以通过两个或多个硬件部件之间的信号传输(例如,通过适当的电路和总线)来实现通信。在多个硬件部件在不同时间被配置或实例化的实施例中,可以例如通过在多个硬件部件可以访问的存储器结构中存储和检索信息来实现这些硬件部件之间的通信。例如,一个硬件部件可以执行操作并将该操作的输出存储在与它通信耦合的存储器设备中。然后,另一个硬件部件可以在稍后访问存储设备以检索和处理所存储的输出。硬件部件还可以发起与输入或输出设备的通信,并且可以对资源(例如,信息集合)进行操作。本文描述的示例方法的各种操作可以至少部分地由一个或多个临时配置(例如,通过软件)或永久配置为执行相关操作的处理器执行。无论是临时配置还是永久配置,这样的处理器都可以构成处理器实现的部件,这些部件操作以执行本文所述的一个或多个操作或功能。如本文所用,“处理器实现的部件”是指使用一个或多个处理器实现的硬件部件。类似地,本文描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是硬件的示例。例如,一种方法的至少一些操作可以由一个或多个处理器或处理器实现的部件来执行。此外,
一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(saas)。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可经由网络(例如,因特网)并经由一个或多个适当的接口(例如,api)访问。某些操作的性能可能分布在处理器之间,不仅驻留在单个机器内,而且部署在多个机器上。在一些示例实施例中,处理器或处理器实现的部件可以位于单个地理位置中(例如,在家庭环境、办公环境或服务器群内)。在其他示例实施例中,处理器或处理器实现的部件可以分布在多个地理位置上。
[0136]
在此上下文中,“处理器”是指根据控制信号(例如,“命令”、“操作码”、“机器码”等)操纵数据值并产生对应的用于操作机器的输出信号的任何电路或虚拟电路(由在实际处理器上执行的逻辑模拟的物理电路)。例如,处理器可以是中央处理单元(cpu)、精简指令集计算(risc)处理器、复杂指令集计算(cisc)处理器、图形处理单元(gpu)、数字信号处理器(dsp))、asic、射频集成电路(rfic)或其任何组合。处理器可以进一步是具有可以同时执行指令的两个或更多个独立处理器(有时称为“内核”)的多核处理器。
[0137]
在此上下文中,“时间戳”是指识别特定事件何时发生的字符序列或编码信息,例如给出日期和时间,有时精确到几分之一秒。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献