基于虚拟场景的虚拟实体描述帧从不同有利点渲染虚拟场景的帧的方法和系统

文档序号:1602876 发布日期:2020-01-07 浏览:31次 >En<

阅读说明:本技术 基于虚拟场景的虚拟实体描述帧从不同有利点渲染虚拟场景的帧的方法和系统 (Method and system for rendering frames of a virtual scene from different vantage points based on a virtual entity description frame of the virtual scene ) 是由 威廉·帕特里克·杰尔瓦西奥 奥利弗·S·卡斯塔涅达 丹尼·布赖滕费尔德 于 2018-05-24 设计创作,主要内容包括:示例性虚拟场景捕获系统(“系统”)维护表示虚拟场景的虚拟3D空间内包括的多个虚拟实体的数据。多个虚拟实体包括虚拟对象以及到所述虚拟3D空间中的多个虚拟有利点。基于所维护的数据,所述系统生成虚拟实体描述帧,所述虚拟实体描述帧表示在时间序列中的特定点处所述虚拟实体中的至少一个的状态。随后,所述系统将所述虚拟实体描述帧提供到多个服务器侧3D渲染引擎,所述多个服务器侧3D渲染引擎对应于所述多个虚拟有利点中的不同有利点并且被配置成基于所述虚拟实体描述帧而渲染表面数据帧,所述表面数据帧表示在所述时间序列中的所述特定点处从所述不同虚拟有利点可见的所述虚拟对象的表面的颜色和深度数据。(An exemplary virtual scene capture system (&#34;system&#34;) maintains data representing a plurality of virtual entities included within a virtual 3D space of a virtual scene. The plurality of virtual entities comprises a virtual object and a plurality of virtual vantage points into the virtual 3D space. Based on the maintained data, the system generates a virtual entity description frame representing a state of at least one of the virtual entities at a particular point in a time series. Subsequently, the system provides the virtual entity description frame to a plurality of server-side 3D rendering engines, the plurality of server-side 3D rendering engines corresponding to different vantages in the plurality of virtual vantages and configured to render a surface data frame based on the virtual entity description frame, the surface data frame representing color and depth data of a surface of the virtual object visible from the different virtual vantages at the particular point in the time series.)

基于虚拟场景的虚拟实体描述帧从不同有利点渲染虚拟场景 的帧的方法和系统

相关申请

本申请要求2017年5月31日提交的标题为“基于虚拟场景的虚拟实体描述帧从不同有利点渲染虚拟场景的帧的方法和系统(METHODS AND SYSTEMS FOR RENDERING FRAMESOF A VIRTUAL SCENE FROM DIFFERENT VANTAGE POINTS BASED ON A VIRTUAL ENTITYDESCRIPTION FRAME OF THE VIRTUAL SCENE)”的第15/610,572号美国专利申请的优先权,所述专利申请特此以引用方式全文并入。

背景技术

出于各种原因并且关于各种类型的应用,用户可以体验虚拟三维(“3D”)空间(例如,基于虚拟现实世界或混合现实场景)。例如,用户可以出于娱乐目的、教育目的、远距离通信目的、替代体验/旅行目的,或关于各种其他目标和/或应用来体验虚拟3D空间。

虚拟现实是用户体验虚拟3D空间的应用的一个示例。虚拟现实媒体内容可以用于将用户(即,虚拟现实媒体内容的观看者)沉浸在交互式虚拟现实世界中,用户可以通过将注意力集中到沉浸式虚拟现实世界中同时呈现的各种事物中的任一者来体验所述交互式虚拟现实世界。例如,在呈现虚拟现实媒体内容期间的任何时间,体验虚拟现实媒体内容的用户可以在任何方向上环顾沉浸式虚拟现实世界,从而使用户感觉到他或她实际上处于沉浸式虚拟现实世界中并且从沉浸式虚拟现实世界内的特定视角或有利点体验沉浸式虚拟现实世界。

在一些示例中,用户可能期望能够从虚拟3D空间内的任意虚拟有利点体验虚拟3D空间(例如,沉浸式虚拟现实世界)的灵活性。换句话说,用户可能希望随意地四处移动到虚拟3D空间内的不同位置,以从用户可以动态地选择的虚拟3D空间内的任何位置处的任意虚拟有利点体验虚拟3D空间(例如,以观看虚拟3D空间内呈现的对象等)。为了向用户提供移动到不同位置的这种自由,常规媒体播放器装置通常在用户体验虚拟3D空间之前就接收到表示虚拟3D空间的数据(例如,在3D空间内的对象的3D模型等)。例如,常规媒体播放器装置可以下载与虚拟3D空间相关联的数据(例如,3D模型、纹理等)并且将所述数据存储在例如媒体播放器装置的硬盘驱动器等本地存储设施上,或者可以从媒体播放器装置可访问的本地物理媒体(例如,物理磁盘)访问与虚拟3D空间相关联的数据。然而,不幸地,在体验此种虚拟3D空间之前可能需要用户进行更多设置(例如,与下载表示虚拟3D空间的数据内容、安装所述数据内容、将所述数据内容加载到存储器中等相关联的设置),并且由于在用户体验之前需要通过媒体播放器装置接收大量数据,因此在此类示例中的虚拟3D空间可能难以反映内容的即时或实时更新。

此外,即使表示虚拟3D空间的所有数据被实时传输到媒体播放器装置,表示虚拟3D空间内包括的对象的各个3D模型的数据也可以允许从虚拟3D空间内的任意虚拟有利点渲染虚拟3D空间,但可能无法缩放以在不牺牲质量的情况下呈现较大虚拟3D空间或包括更多对象的虚拟3D空间。例如,如果正传输到媒体播放器装置的数据表示虚拟3D空间内包括的每个对象的可单独渲染的3D模型,则与表示具有例如五个对象的虚拟3D空间所需的数据量相比,可能需要大量附加数据(例如,大约两倍的数据)来表示具有例如十个对象的虚拟3D空间。因此,即使可以将表示包括五个对象的模型的虚拟3D空间的数据实时传输到媒体播放器装置,这种类型的传输也可能无法缩放以类似地表示虚拟3D空间内的十个对象或一百个对象或更多对象。

具体实施方式

本文描述用于基于虚拟场景的虚拟实体描述帧从不同有利点渲染虚拟场景的帧的方法和系统。例如,虚拟场景捕获系统可以维护表示虚拟场景的虚拟三维(“3D”)空间内包括的多个虚拟实体的数据。多个虚拟实体可以包括一个或多个虚拟对象以及进入虚拟3D空间中的多个虚拟有利点(例如,从其查看虚拟3D空间内包括的一个或多个虚拟对象的虚拟位置、角度、视角等)。具体来说,多个虚拟有利点可以包括至少第一虚拟有利点以及不同于第一虚拟有利点的第二虚拟有利点。

基于表示多个虚拟实体的维护的数据,虚拟场景捕获系统可以生成虚拟实体描述帧,所述虚拟实体描述帧表示在时间序列中的特定点处多个虚拟实体中的至少一个虚拟实体的状态。例如,虚拟实体描述帧可以是表示多个虚拟实体中包括的所有虚拟实体(即,虚拟对象和虚拟有利点)的相应状态信息的关键描述帧,或者可以是表示仅多个虚拟实体中自生成先前关键描述帧以后已改变的那些虚拟实体的状态信息的更新描述帧。

在生成虚拟实体描述帧之后,虚拟场景捕获系统可以将虚拟实体描述帧提供到与内容提供者系统相关联的多个服务器侧3D渲染引擎,以有助于3D渲染引擎基于虚拟现实描述帧而从不同有利点渲染虚拟场景的帧。例如,虚拟场景捕获系统可以将虚拟实体描述帧提供到第一3D渲染引擎,所述第一3D渲染引擎与第一虚拟有利点相关联并且被配置成基于虚拟实体描述帧而渲染第一表面数据帧,所述第一表面数据帧表示在时间序列中的特定点处从第一虚拟有利点可见的虚拟对象的表面的颜色和深度数据。类似地,虚拟场景捕获系统可以将虚拟实体描述帧提供到第二3D渲染引擎,所述第二3D渲染引擎与第二虚拟有利点相关联并且被配置成还基于虚拟实体描述帧而渲染第二表面数据帧,所述第二表面数据帧表示在时间序列中的特定点处从第二虚拟有利点可见的虚拟对象的表面的颜色和深度数据。

本文所描述的用于基于虚拟场景的虚拟实体描述帧而从不同有利点渲染虚拟场景的帧的系统和方法可以提供各种优点和益处。例如,本文所描述的系统和方法可以有助于用户体验虚拟场景的虚拟3D空间。如本文所使用,虚拟场景的“虚拟3D空间”可以指环境或世界(例如,沉浸式虚拟现实世界)的渲染(例如,完全虚拟化渲染),用户可以通过与用户可以体验现实世界类似的方式来体验所述环境或世界。例如,正体验虚拟场景的用户可能够在虚拟3D空间内四处移动,并且查看虚拟空间内包括的对象和/或否则与所述对象交互。在一些示例中,虚拟3D空间可以完全虚拟化(例如,计算机生成)并且以与可以渲染现实世界场景类似的方式进行渲染。在其他示例中,虚拟3D空间可以至少部分地基于从现实世界场景捕获的一个或多个现实世界对象。

在任何情况下,本文所描述的系统和方法可以有助于用户体验从提供者系统整体流传输的虚拟场景的虚拟3D空间,使得在媒体播放器装置的用户体验虚拟3D空间之前,不需要将表示虚拟3D空间以及其中包括的虚拟实体的数据预加载或存储在媒体播放器装置上。例如,可以将媒体播放器装置呈现虚拟场景所需的所有数据流传输到媒体播放器装置(例如,在某些实施方式中实时地),使得在向用户呈现虚拟场景之前不需要下载、存储或以其他方式访问表示虚拟场景内容的数据(例如,借助于本地物理磁盘)。

此外,本文所描述的用于基于虚拟场景的虚拟实体描述帧而从不同有利点渲染虚拟场景的帧的系统和方法可以有助于将表示虚拟场景的虚拟实体媒体内容提供到媒体播放器装置,其方式为使得可以从虚拟3D空间内的任意虚拟位置和动态选择的虚拟有利点渲染虚拟现实媒体内容。具体来说,如下文将更详细地描述,通过从不同有利点(例如,虚拟有利点)渲染虚拟场景的帧,虚拟场景捕获系统可以包括数据管道中的帧,所述数据管道被配置成允许媒体播放器装置基于多个二维(“2D”)视频流而从任意的以及可动态选择的虚拟有利点在三维中渲染虚拟3D空间,所述多个2D视频流被包括在数据管道中并且与例如相对固定的有利点(例如,虚拟有利点)相关联。因此,媒体播放器装置可以允许用户体验虚拟3D空间,就像基于承载表示虚拟3D空间的数据的2D视频流,而不是基于表示与虚拟3D空间相关联的可变以及可能无限数量的3D模型的3D模型数据而在虚拟3D空间内自由地四处移动一样。例如,代替提供表示虚拟3D空间内包括的每一虚拟对象的3D模型的数据,数据管道可以从虚拟有利点提供表示虚拟3D空间内的所有虚拟对象的2D视频数据(例如,颜色数据和深度数据)。因此,可以在渲染虚拟场景时表示无限数量的对象,而除了渲染仅具有例如一个或两个对象的虚拟场景所需之外,媒体播放器装置不必接收附加数据或执行附加渲染工作。

另外,通过维护表示虚拟场景的所有数据并将所述数据提供到媒体播放器装置,而不依赖于已存储在媒体播放器装置处的预加载内容,本文所描述的系统和方法可以允许提供者生成或修改(例如,实时地)虚拟3D空间,而不必修改存储在媒体播放器装置上的预加载数据。因此,负责生成虚拟场景的内容创建者或体验虚拟场景的一个或多个用户可以将命令提供到虚拟场景捕获系统,以修改虚拟场景的各方面(例如,修改、替代,或去除虚拟对象等),并且这些修改可以在流传输到用户的数据中立即反映,使得实时地或近实时地修改虚拟场景。

类似地,可以由与虚拟场景捕获系统相关联的强大计算资源执行可能极难计算(例如,对于某些媒体播放器系统而言成本过高)的各个操作,所述虚拟场景捕获系统可以由虚拟现实媒体提供者操作并且与例如与用户相关联的媒体播放器装置相比可以与更强大的计算资源(例如,大的服务器等)相关联。例如,虚拟场景捕获系统可以执行相对于虚拟场景内的对象极难计算的物理操作,相对于所述对象的人工智能操作等等。因为这些操作在提供者层执行,所以用户操作的媒体播放器装置可能不需要与特别强大的计算资源相关联,这样节省用户装置资源,为用户提供便利(例如,在可携性、冷却等方向),并且使各种类型的媒体播放器装置(例如,具有各种形状因子、各种价格点等)向用户提供虚拟场景的体验。

尽管本文所描述的某些示例可以引用可以具有任何合适数量的物品的多个若干特定物品,但应理解,根据若干特定物品描述的相同原理可以应用于多个中的一个或多个其他物品,多达且包括每个相应多个物品中的所有物品。例如,为了方便且清楚地描述,可以用例如“第一”、“第二”等的序数形容词表示若干物品(例如,第一和第二虚拟有利点、第一和第二3D渲染引擎、第一和第二表面数据帧等)。然而,如将在附图中大体说明,与例如仅第一和第二物品相比,本文所描述的原理可以应用于多个物品中包括的许多或所有物品。因此,如下文将描述,某些实施方式可以包括渲染许多表面数据帧的许多(即,多于两个)3D渲染引擎,每个表面数据帧与从多个虚拟有利点中的一个的视图等相关联。

现在将参考附图更详细地描述各种实施例。所公开的方法和系统可以提供上述益处,和/或将在本文中变得显而易见的各种附加和/或替代益处中的一个或多个。

图1说明用于基于虚拟场景的虚拟实体描述帧而从不同有利点渲染虚拟场景的帧的示例性虚拟场景捕获系统100(“系统100”)。如图所示,系统100可以包括但不限于,虚拟实体状态跟踪设施102、虚拟实体描述帧设施104以及存储设施106,所述存储设施选择性地且通信地彼此耦合。应认识到,尽管设施102到106在图1中示为单独的设施,但是设施102到106可以组合成更少设施,例如,组合成单个设施,或如可以服务特定实施方式分成更多设施。在一些示例中,如可以服务特定实施方式,设施102到106中的每个可以分布在多个装置和/或多个位置之间。现在将更详细地描述设施102到106中的每个。

虚拟实体状态跟踪设施102可以包括一个或多个物理计算装置(例如,硬件和/或软件部件,例如,处理器、存储器、通信接口、存储于存储器中以供处理器执行的指令等),所述物理计算装置基于虚拟场景的虚拟实体描述帧而从不同有利点执行与虚拟场景的渲染帧相关联的各种操作。例如,使用一个或多个物理计算装置,虚拟实体状态跟踪设施102可以维护表示虚拟场景的虚拟3D空间内包括的多个虚拟实体的数据。虚拟实体状态跟踪设施102可以通过任何合适方式维护数据。例如,虚拟实体状态跟踪设施102可以接收、跟踪、生成、分析、组织和/或以其他方式处理表示虚拟场景的多个虚拟实体的数据。如下文将更详细地描述,虚拟实体状态跟踪设施102还可以接收命令以修改维护的数据(例如,例如通过添加、去除、替代、移动、旋转、放大或以其他方式修改虚拟实体来修改虚拟实体中的一个或多个),并且可以通过修改正维护的数据来实施命令。虚拟实体状态跟踪设施102还可以通过与存储设施106互操作来维护数据,以将表示每个虚拟实体的数据存储在存储设施106中。

如本文所使用,“虚拟实体”可以指可以与虚拟场景和/或虚拟3D空间相关联的任何虚拟项。例如,在虚拟实体状态跟踪设施102维护其数据的虚拟实体之中,虚拟场景的虚拟3D空间可以包括虚拟实体例如一个或多个虚拟对象、进入虚拟3D空间中的多个虚拟有利点(例如,相对于虚拟3D空间以特定方式定位和成角,以便从各种不同视角捕获虚拟3D空间的虚拟捕获装置),和/或如可以服务特定实施方式的任何其他虚拟实体。具体来说,如下文将描述和说明,一个示例性虚拟3D空间可以包括由多个虚拟有利点围绕的虚拟对象,所述多个虚拟有利点包括第一虚拟有利点以及不同于第一虚拟有利点的第二虚拟有利点。

虚拟实体描述帧设施104可以包括一个或多个物理计算部件(例如,与虚拟实体状态跟踪设施102的那些部件分离或与虚拟实体状态跟踪设施102共享的硬件和/或软件部件),所述物理计算部件执行与生成和/或提供虚拟实体描述帧以用于从包括第一和第二虚拟有利点的多个有利点渲染虚拟场景的帧相关联的各种操作。例如,使用一个或多个物理计算装置,虚拟实体描述帧设施104可以生成(例如,基于表示由虚拟实体状态跟踪设施102维护的多个虚拟实体的数据)虚拟实体描述帧,所述虚拟实体描述帧表示在时间序列中的特定点处(例如,实际时间中的特定时刻、与实际时间不相关的表示虚拟时间线上的时刻的特定点等)在多个虚拟实体中的至少一个虚拟实体(例如,以及在一些示例中,所有虚拟实体)的状态。

如本文所使用,“虚拟实体描述帧”可以指代数据集(例如,包括以例如JavaScript对象标记(“JSON”)等语言表示的对象描述数据),所述数据集描述在虚拟场景的虚拟3D空间中包括的一个或多个虚拟实体的状态。例如,虚拟实体描述帧可以包括描述在时间序列中的特定点处在虚拟3D空间中包括的若干虚拟实体中的每个的数据。例如,虚拟实体描述帧可以包括表示其中每个虚拟实体相对于全局坐标系定位的位置的状态数据,与以下项相关联:每个虚拟实体所处的虚拟3D空间、角度和定向、每个虚拟实体的相对尺寸、每个虚拟实体的一个或多个移动向量、每个虚拟实体的各个表面的颜色和/或纹理,和/或如可以服务特定实施方式可以用于描述在时间序列中的特定点处特定虚拟实体的任何其他状态数据。下文将更详细地描述示例性虚拟实体描述帧。

在虚拟实体描述帧设施104已生成虚拟实体描述帧之后,虚拟实体描述帧设施104可以将虚拟实体描述帧提供到与内容提供者系统相关联的多个服务器侧3D渲染引擎。如本文所使用,“服务器侧”可以指服务器-客户端交易的服务器侧(例如,提供者侧),所述交易诸如内容提供者系统将内容(例如,虚拟现实媒体内容)提供到终端用户使用的客户端装置的交易。例如,如下文将更详细地描述,虚拟现实媒体内容提供者系统可以将虚拟现实媒体内容提供到与用户相关联的媒体播放器装置。因此,服务器侧系统和部件可以指与内容提供者系统相关联(例如,被包括在内容提供者系统内、由内容提供者系统实施、通过内容提供者系统实现等)的那些系统和部件,所述内容提供者系统用于将数据(例如,虚拟现实媒体内容)提供到媒体播放器装置(例如,借助于网络)。相反,“客户端侧”装置可以与用户在网络的另一侧上使用的客户端装置(例如,媒体播放器装置)相关联,并且可以包括有助于客户端装置从内容提供者系统(例如,媒体播放器装置和/或用户在网络的用户侧上操作的其他计算机部件)接收数据的装置。

因此,3D渲染引擎可以由硬件和/或软件资源在网络的服务器侧(即,与系统100和/或内容提供者系统的其他元件相关联)上实施,所述硬件和/或软件资源可以与系统100的硬件和/或软件资源集成,或与系统100的硬件和/或软件资源分离,以及通信地耦合到系统100的硬件和/或软件资源。3D渲染引擎可以被配置成基于虚拟实体描述帧而渲染与特定虚拟有利点相关联的相应表面数据帧。例如,虚拟实体描述帧设施104可以将虚拟实体描述帧提供到第一3D渲染引擎,所述第一3D渲染引擎与第一虚拟有利点相关联并且被配置成(例如,基于虚拟实体描述帧)渲染第一表面数据帧,所述第一表面数据帧表示在时间序列中的特定点处从第一虚拟有利点可见的虚拟对象的表面的颜色和深度数据。另外,虚拟实体描述帧设施104可以将相同虚拟实体描述帧提供到第二3D渲染引擎,所述第二3D渲染引擎与第二虚拟有利点相关联并且被配置成(例如,也基于虚拟实体描述帧)渲染第二表面数据帧,所述第二表面数据帧表示在时间序列中的特定点处从第二虚拟有利点可见的虚拟对象的表面的颜色和深度数据。

如本文所使用,“表面数据帧”可以指表示与从特定有利点以及在与虚拟场景相关联的时间序列中的特定点处在虚拟场景内可见第对象(例如,虚拟对象)的表面相关联的各种类型的数据的数据集。例如,表面数据帧可以包括表示相对于虚拟场景从特定有利点观看的对象的颜色数据(即,图像数据)以及深度数据。因此,当从特定有利点观看或体验虚拟场景时,多个相关表面数据帧可以排序在一起,以创建虚拟场景的类似视频的表示(不仅表示颜色,而且还表示深度数据)。在某些示例中,表面数据帧还可以与其他类型的数据相关联,例如,音频数据、元数据(例如,元数据包括关于表面数据帧中表示的特定对象的信息和/或关于与虚拟场景相关联的有利点的信息),和/或如可以服务特定实施方式的其他类型的数据。下文将描述和说明与不同有利点相关联的表面数据帧,以及相关表面数据帧的序列的示例。

如本文所使用,“颜色数据”可以广泛地包括任何图像数据、视频数据等,无论用颜色还是灰度(即,“黑和白”)表示,所述颜色数据表示主体(例如,在虚拟场景的虚拟3D空间内包括的虚拟对象)可以如何从特定有利点的角度在时间序列中的特定点处或特定时间段内出现。颜色数据不限于可以与本领域中定义图像数据和/或视频数据的各种定义和/或标准相关联的任何特定格式、文件类型、帧速率、分辨率、质量水平或其他特征。类似地,如本文所使用,“深度数据”可以包括表示主体在空间中的位置的任何数据。例如,表示虚拟对象的深度数据可以包括用于虚拟对象的表面上的不同点的相对于全局坐标系(例如,与虚拟场景的虚拟3D空间相关联的全局坐标系)的坐标。

在特定实施方式中,存储设施106可以维护由设施102或104接收、生成、管理、跟踪、维护、使用和/或传输的任何合适数据。例如,如图所示,存储设施106可以包括:虚拟对象数据108,所述虚拟对象数据可以包括与虚拟场景的虚拟3D空间内包括的一个或多个虚拟对象相关联的数据(例如,状态数据);以及虚拟有利点数据110,所述虚拟有利点数据可以包括与进入虚拟3D空间中的一个或多个虚拟有利点相关联的数据(例如,状态数据)。另外,存储设施106可以包括与虚拟场景的虚拟3D空间内包括的其他类型的虚拟实体相关联的数据、用于执行本文所描述的操作的指令(例如,编程指令),和/或可以有助于设施102和104执行本文所描述的操作的任何其他数据。例如,存储设施106还可以包括与表面数据帧、虚拟实体描述帧等相关联的数据(例如,对象描述数据、颜色数据、深度数据、音频数据、元数据等)。如可以服务特定实施方式,存储设施106还可以维护附加或替代数据。

在某些示例中,系统100可以与一起被包括在内容提供者系统(例如,虚拟现实媒体内容提供者系统)内的各种配置中的各种其他服务器侧系统(例如,虚拟场景控制系统、资产存储系统、视频数据封装系统、3D渲染引擎等)相关联,以便从不同有利点渲染虚拟场景的表面数据帧,并且提供将呈现给用户的表面数据帧(例如,作为虚拟现实媒体内容的一部分)以允许用户体验虚拟场景。

在一些实施方式中,应理解,这些其他服务器侧系统中的一个或多个可以与系统100集成(例如,被包括在系统100内)或以其他方式与系统100紧密相关联(例如,通信地耦合到系统100,由相同或相关虚拟现实媒体提供者实体操作等)。例如,在特定实施方式中,系统100可以包括资产存储系统,所述资产存储系统存储表示一个或多个虚拟对象的颜色和深度数据;多个3D渲染引擎,所述多个3D渲染引擎通信地耦合到资产存储系统;以及虚拟实体状态跟踪系统,所述虚拟实体状态跟踪系统通信地耦合到资产存储系统和/或3D渲染引擎。实体状态跟踪系统可以被配置成执行上文关于设施102到106描述的操作中的一个或多个。在其他实施方式中,系统100可以实施为单独的独立系统,该单独的独立系统不与这些其他服务器侧系统集成,而是通信地耦合到其他服务器侧系统,和/或如可以服务特定实施方式以其他方式配置成与其他服务器侧系统互操作。

举例来说,图2示出示例性配置200,其中系统100有助于基于虚拟场景的虚拟实体描述帧而从不同有利点渲染虚拟场景的帧。如图2中所示,系统100的实施方式可以通信地耦合到多个虚拟场景控制系统202(例如,虚拟场景控制系统202-1到202-M),以及多个服务器侧3D渲染引擎204(例如,3D渲染引擎204-1到204-N)。例如,系统100可以借助于一个或多个网络(例如,包括本文所描述的网络或网络技术中的任一者),或如可以服务特定实施方式借助于其他通信模式通信地耦合到虚拟场景控制系统202和/或3D渲染引擎204。如配置200中所示,可以通过系统100实施虚拟实体状态跟踪系统,所述虚拟实体状态跟踪系统执行上文关于设施102到106所描述的操作。如上所述,在其他实施方式中,系统100可以实施被配置成执行这些操作的实体跟踪系统以及在配置200中说明的其他系统和装置中的一个或多个两者。

系统100可以通过与3D渲染引擎204的通信连接来提供一个或多个虚拟实体描述帧,所述一个或多个虚拟实体描述帧包括虚拟实体描述帧206。基于虚拟实体描述帧206以及从与3D渲染引擎204通信地耦合的资产存储系统208请求和接收的数据,3D渲染引擎204可以各自渲染相应的表面数据帧210(例如,表面数据帧210-1到210-N),并且可以将表面数据帧210提供到视频数据封装系统212。上文已关于图1详细地描述系统100。现在将更详细地描述在配置200中说明的其他系统和项目中的每个。

虚拟场景控制系统202可以表示任何计算系统,所述计算系统被配置成请求和/或以其他方式实施对虚拟场景的虚拟3D空间中包括的一个或多个虚拟实体(例如,由系统100维护数据的虚拟实体)的改变。例如,一个或多个虚拟场景控制系统202(例如,虚拟场景控制系统202-1)可以与负责最初生成表示虚拟场景的虚拟3D空间内包括的虚拟实体的数据的内容创建者相关联(例如,由内容创建者维护、由内容创建者操作等)。另外,在某些实施方式中,一个或多个其他虚拟场景控制系统202(例如,虚拟场景控制系统202-2)可以与正体验虚拟场景的虚拟3D空间的终端用户相关联。例如,虚拟场景控制系统202-2可以由当前渲染虚拟实体的媒体播放器装置实施,以允许媒体播放器装置的用户体验虚拟场景的虚拟3D空间内的虚拟实体并且与所述虚拟实体交互。

因为系统100可以维护表示虚拟3D空间内包括的所有虚拟实体的一个统一数据集(例如,与表示每个虚拟场景控制系统202的虚拟实体的单独数据集相比),随着每个虚拟场景控制系统202对虚拟实体做出修改,这些修改可以在统一数据集中反映。因此,多个用户(即,与不同虚拟场景控制系统202相关联的不同用户)都可以对相同虚拟场景的相同虚拟3D空间执行修改。因此,所有虚拟场景控制系统202做出的修改可以在由系统100输出的虚拟实体描述帧(例如,虚拟实体描述帧206)中反映,并且又可以在由3D渲染引擎204渲染的每个表面数据帧(例如,表面数据帧210)中反映。

为了说明虚拟场景控制系统202可以如何修改虚拟3D空间中的虚拟实体,图3示出包括多个虚拟实体的示例性虚拟场景300,并且图4示出可以对虚拟场景300做出的示例性修改。具体来说,首先参考图3,虚拟场景300与虚拟3D空间302相关联,所述虚拟3D空间包括虚拟对象304并且由多个虚拟有利点306(例如,虚拟有利点306-1到306-8)围绕。

如可以服务特定实施方式,虚拟场景300可以表示任何类型的场景(例如,现实世界场景、计算机生成的场景、事件等)。如通过圆圈所示,与虚拟场景300相关联的虚拟3D空间302可以是特别描绘的区域,例如舞台、竞技场等。相反,在其他示例中,可能没有很好地定义或描绘虚拟3D空间302。例如,虚拟3D空间302可以表示任何室内或室外位置(例如,基于现实世界或基于虚构或计算机生成的世界)、事件、风景、结构等。

虚拟对象304可以表示与虚拟3D空间302相关联(例如,位于虚拟3D空间302内或周围)并且从虚拟有利点306中的至少一个可检测(例如,可观看等)的任何虚拟对象,无论活的还是无生命的。例如,虚拟对象304可以基于现实世界对象(例如,已为其生成3D模型的对象)、虚构或计算机生成的对象等。尽管为了清楚起见将虚拟对象304绘制为相对简单的几何形状,但是应理解,虚拟对象304可以表示具有各种复杂程度的各种类型的对象。例如,代替几何形状,虚拟对象304可以表示任何有生命或无生命对象或表面,例如人或另一生物、不透明的固体、液体或气体、不太离散的对象例如墙壁、天花板或地板或本文所描述或如可以服务特定实施方式的任何其他类型的对象。如图所示,如下文将说明,虚拟对象304可以包括各种表面,使得当从每个不同虚拟有利点306观看时虚拟对象304可以看起来不同。

与虚拟对象304一起,虚拟场景300还包括进入虚拟3D空间302中的虚拟有利点306。如本文所使用,“进入”虚拟3D空间中的虚拟有利点可以指相对于虚拟3D空间以任何合适方式定位、成角、定向等的虚拟有利点。例如,进入虚拟3D空间中的虚拟有利点可以是被包括在虚拟3D空间内的虚拟有利点,以看向虚拟3D空间的视角处于虚拟3D空间外部,围绕虚拟3D空间以及其他虚拟有利点,和/或另外通过任何合适方式与虚拟3D空间相关联,以便提供虚拟3D空间的至少一些部分的视图。

如图所示,每个虚拟有利点306可以在图3中用标记的圆圈表示,所述标记的圆圈相对于虚拟3D空间302安置于特定位置处,并且具有从其发出的虚线以说明与虚拟有利点306相关联的视场。与虚拟有利点306相关联的位置可以相对于虚拟3D空间302固定,但是如下文将描述,固定位置可以由虚拟场景控制系统202中的一个进行修改。另外,在一些示例中,应理解,虚拟3D空间302和虚拟有利点306可以一起正移动通过虚拟场景300(例如,例如太空船、热气球等的车辆虚拟3D空间等)。如图所示,在一些示例中,虚拟有利点306安置的固定位置可以沿着与虚拟3D空间302相关联的至少两个维度(例如,沿着例如地面的平面)围绕虚拟3D空间302。在其他示例中,位置306可以进一步沿着三个维度围绕虚拟3D空间302(例如,通过也被包括在302上方和下方的位置306)。即使在虚拟有利点306仅沿着两个维度围绕虚拟3D空间302的示例中,多个虚拟有利点306也可以相对于围绕图3中所示的虚拟3D空间302的位置“堆叠”在不同高度处,以便从相关但略微不同的视角观看虚拟对象304。

尽管图3中所示的每个虚拟有利点306朝向虚拟3D空间302向内成角,以便从各个角度捕获虚拟3D空间302,从而使得稍后能够从任意虚拟有利点渲染虚拟3D空间302,但是应理解,在某些示例中,虚拟有利点306中的一个或多个可以向外成角(即,远离虚拟3D空间302),以观看围绕虚拟3D空间302的虚拟对象等。例如,360度虚拟有利点可以位于虚拟3D空间302(未明确示出)的中间,以提供从附加视角被包括在虚拟3D空间302内的虚拟对象的数据,和/或表示虚拟3D空间302外部的虚拟对象的数据。

如上所述,图4说明可以对虚拟场景300做出的示例性修改。具体来说,在一些示例中,系统100可以接收命令以修改表示多个实体的维护的数据(即,表示虚拟对象304、虚拟有利点306,和/或虚拟3D空间302中包括的任何其他虚拟实体的数据),并且响应于接收命令,可以根据命令修改表示多个虚拟实体的维护的数据。例如,可以通过虚拟场景控制系统202中的任一者使用JSON代码或描述要做出的修改的另一合适对象描述代码来发送命令(例如,通过web套接字或另一合适类型的通信)。

可以通过任何合适方式修改虚拟场景300内包括的虚拟实体,这可以部分地由正修改的虚拟实体的类型来确定。例如,如果正修改的虚拟实体是虚拟对象,则根据命令修改表示多个虚拟实体的维护的数据可以包括将附加的虚拟对象添加到多个虚拟实体。另外或可替选地,修改可以包括用附加的虚拟对象替代多个虚拟实体内包括的虚拟对象,从多个虚拟实体中去除虚拟对象,修改多个虚拟实体中包括的虚拟对象的至少一个属性,和/或以其他方式相对于其他虚拟实体和/或相对于虚拟场景的虚拟3D空间修改虚拟对象。

为了进行说明,图4示出与虚拟对象304一起添加到虚拟3D空间302的附加虚拟对象402。应理解,在其他示例中,替代地,虚拟对象402可以替代虚拟对象304(即,使得在将虚拟对象402添加到虚拟3D空间302时,虚拟对象304从虚拟3D空间302去除)。如在图4中进一步示出,可以修改虚拟对象304的某些属性(例如,虚拟对象304的位置和定向)。在其他示例中,可以类似地修改虚拟对象304的其他属性例如,大小、颜色、纹理、姿势和/或任何其他属性。

如果正修改的虚拟实体是虚拟有利点(例如,虚拟有利点306中的一个),则根据命令修改表示多个虚拟实体的维护的数据可以包括将附加的虚拟有利点添加到多个虚拟实体。另外或可替选地,修改可以包括:修改多个虚拟实体内包括的多个虚拟有利点中的至少一个;从多个虚拟实体中去除多个虚拟有利点中的至少一个等。例如,可以改变或转向与虚拟有利点306中的一个(例如,虚拟有利点306-1)相关联的视场,以获得在虚拟3D空间302的不同角度上的视角。在其他示例中,虚拟有利点306可以向内或向外移动(例如,以相对于虚拟3D空间302内的特定虚拟对象产生放大或缩小效果),从多个虚拟有利点306中去除,或其他方式进行修改。作为另一示例,可以将附加的虚拟有利点添加到多个虚拟有利点306,以获得虚拟对象304和402上的另一视角(例如,没有被虚拟有利点306-1到306-8中的一个很好地覆盖的视角)。

如上所述,在一些示例中,可以基于来自虚拟场景控制系统202中的一个的用于修改虚拟对象的直接命令来修改虚拟对象例如虚拟对象304(例如,相对于虚拟3D空间302移动和/或旋转所述虚拟对象)。然而,在其他示例中,可以基于与虚拟3D空间302内包括的其他虚拟实体的交互自动地修改虚拟对象(即,以相同或不同方式修改,但不基于来自虚拟场景控制系统202的明确命令)。更具体来说,例如,通过系统100维护表示多个虚拟实体的数据可以包括应用基于物理的对象行为和基于人工智能(基于AI)的对象行为中的至少一个(例如,应用于虚拟场景的虚拟3D空间内包括的虚拟对象)。

例如,图4中说明基于物理的对象行为404。当做出修改以将虚拟对象402添加到虚拟3D空间302(例如,通过系统100)时,系统100可以确定虚拟对象304和402各自表示不能存在于相同虚拟空间中的实体虚拟对象。因此,如通过基于物理的对象行为404说明,可以根据物理规则修改虚拟对象304的位置和定向属性,使得虚拟对象402部分地将虚拟对象304移位(即,将虚拟对象304“撞开”)。其他基于物理的对象行为可以模仿定义对象如何彼此相互作用以及如何与物理力和原理(例如,重力、动量、摩擦、浮力、光反射等)相互作用的其他物理规则(例如,现实世界物理学或仅应用于虚拟世界的虚构物理学)。这些基于物理的对象行为还可以由系统100应用于表示虚拟3D空间302内包括的虚拟对象的维护的数据。此外,基于AI的对象行为还可以有助于定义虚拟对象如何彼此相互作用,以及如何与虚拟对象所处的环境相互作用。例如,基于AI的对象行为可以特别适用于表示可以使用人工智能做出“选择”例如在虚拟3D空间302内步行去哪、与谁交谈和说什么、何时从危险中逃脱等等的生物诸如人和/或动物的虚拟对象(例如,化身)。

返回图2,系统100在时间序列(例如,真实时间序列、与虚拟世界中的时间相关联的虚拟时间线等)中的特定点处生成表示多个虚拟实体中的虚拟实体的状态的虚拟实体描述帧。例如,如图所示,系统100可以生成特定虚拟实体描述帧(即,虚拟实体描述帧206),并且可以将虚拟实体描述帧206提供到3D渲染引擎204中的每个。3D渲染引擎204可以是服务器侧3D渲染引擎(例如,跨越网络和/或以其他方式与例如用户使用的媒体播放器装置的客户端侧装置分离的3D渲染引擎)。在一些示例中,3D渲染引擎204可以由单独装置(例如,单独服务器、服务器内的单独处理器等)或由单独的软件过程(例如,单独的指令线程等)实施,而在其他示例中,如可以服务特定实施方式,3D渲染引擎204可以一起集成到通用硬件和/或软件装置或过程中。在一些实施方式中,3D渲染引擎可以与例如系统100的虚拟场景捕获系统联合地操作,或甚至完全地集成到所述系统中,而在其他实施方式中,3D渲染引擎可以单独地进行操作(例如,通过提供基于云的处理服务的不同实体等)。

提供到3D渲染引擎204的某些虚拟实体描述帧可以是关键描述帧,包括表示与时间序列中的特定点处的虚拟场景(即,虚拟场景300)相关联的所有虚拟实体的状态数据,而其他虚拟实体描述帧可以是更新描述帧,所述更新描述帧表示仅自从生成先前关键描述帧以来进行修改的与虚拟场景相关联的那些虚拟实体的变化状态(例如,在时间序列中的特定点处),所述先前关键描述帧表示在时间序列中的先前点处的所有虚拟实体的状态。例如,参考图4中所说明的修改,关键描述帧可以包括与虚拟对象304和402相关联的状态数据,以及与虚拟有利点306相关联的状态数据。相反,更新描述帧可以包括仅与虚拟对象304和402相关联的状态数据,或仅与虚拟对象304和402的变化相关联的状态数据,因为例如自从生成先前关键描述帧以来已修改虚拟对象304和402。表示虚拟有利点306的状态的数据可能未在此示例性更新描述帧中表示,因为自从先前关键描述帧以来,虚拟有利点306可能维护静态定位并维护不变。

图5示出可以由系统100生成的多个示例性虚拟实体描述帧500(例如,虚拟实体描述帧500-1到500-12)。如通过从一个虚拟实体描述帧500指向另一个的箭头所指示,虚拟实体描述帧500可以在时间序列中排序,从虚拟实体描述帧500-1开始,并前进到虚拟实体描述帧500-12,此后时间序列可以前进到未在图5中明确示出的附加虚拟实体描述帧500。沿着每个虚拟实体描述帧500的底部,指示虚拟实体描述帧(例如,关键描述帧或更新描述帧)的类型。具体来说,虚拟实体描述帧500-1、500-5和500-9指示为关键描述帧,而虚拟实体描述帧500-2到500-4、500-6到500-8以及500-10到500-12指示为更新描述帧。

因此,在此示例中,在时间序列中每个关键描述帧之后跟随若干个(例如,三个)更新描述帧,在时间序列中每个更新描述帧之后又跟随另一关键描述帧。然而,应理解,图5中所示的关键描述帧和更新描述帧的布置仅仅是示例性的,并且如可以服务特定实施方式,关键描述帧和更新描述帧的布置可以通过任何方式实施。例如,不是特别动态(即,不受对虚拟实体的大量修改影响)的虚拟场景可以由相对较少的关键描述帧以及随后相对大量的更新描述帧表示。相反,可以通过较大比例的关键描述帧(多达并且排他性地包括关键描述帧)以及较小比例的更新描述帧(低至并且不包括更新描述帧)表示动态性更高的虚拟场景。

如图5中进一步所示,每个虚拟实体描述帧500可以包括虚拟实体描述代码(例如,JSON代码、XML代码,或适合于描述与系统100所维护的虚拟实体相关联的状态数据的另一类型的代码)或由虚拟实体描述代码实施,并且可以与指示相应虚拟实体描述帧500在时间序列中相对于其他虚拟实体描述帧500的位置的序列号(例如,识别号或“ID”)相关联。例如,如图所示,虚拟实体描述帧500-1可以具有作为整数(即,“1.0”)的序列号,以指示虚拟实体描述帧500-1是关键描述帧并且指示帧相对于其他关键描述帧(例如,“1.0”处于“2.0”之前)的相对位置。虚拟实体描述帧500-2到500-4随后可以各自与以1开始的序列号相关联(即,以指示这些帧是对关键描述帧1.0的更新),并且包括子标识符(即,“.1”、“.2”和“.3”),以指示更新描述帧在时间序列中相对于其他更新描述帧(例如,“1.1”处于“1.2”之前)的相对位置。这种虚拟实体描述帧编号方案仅仅是示例性的,并且如可以服务特定实施方式,可以采用任何合适的帧编号方案。

返回图2,无论虚拟实体描述帧206是关键描述帧(例如,虚拟实体描述帧500-1、500-5或500-9)还是更新描述帧(例如,图5中的其他虚拟实体描述帧500),包括虚拟实体描述帧206的虚拟实体描述帧的序列可以提供3D渲染引擎204从每个3D渲染引擎204与其相关联的相应有利点渲染虚拟场景300的虚拟3D空间302所需的所有信息。因此,可能不需要3D渲染引擎204按顺序接收或处理虚拟实体描述帧。相反,3D渲染引擎204可以按照对于特定3D渲染引擎204可能方便或有效的任何顺序渲染相应的表面数据帧210(例如,所述表面数据帧可以各自从序列中的单个虚拟实体描述帧生成),并且表面数据帧210稍后可以进行重新排序并进行同步(例如,通过视频数据封装系统212)。

在一些示例中,虚拟实体描述帧206可以包括表示虚拟实体的状态信息,以及到存储在资产存储系统208中的详细信息(例如,表示虚拟对象几何形状、纹理等的二进制数据)的链路,并且可以由每个3D渲染引擎204按需要基于虚拟实体描述帧206中的链路而从资产存储系统208中访问所述虚拟实体描述帧。资产存储系统208可以由与系统100和/或3D渲染引擎204分离的装置(例如,单独服务器、单独处理器以及服务器内的存储设施等),由单独的软件过程(例如,单独的指令线程等)实施,或者如可以服务特定实施方式,可以与系统100和/或3D渲染引擎204一起集成到共同硬件和/或软件装置或过程中。在一些实施方式中,资产存储系统208可以与例如系统100的虚拟场景捕获系统和/或还包括3D渲染引擎204的系统联合地操作,或完全地集成到这些系统中,而在其他实施方式中,资产存储系统208可以单独地进行操作(例如,通过提供基于云的处理服务的不同实体等)。

在任何情况下,在虚拟实体描述帧206内包括的数据与使用在虚拟实体描述帧206内提供的链路从资产存储系统208访问的数据之间,3D渲染引擎204可以从相应的虚拟有利点接收对渲染表示虚拟3D空间302的表面数据帧210所需的所有信息的访问,而不必依赖于通过3D渲染引擎204本地维护的信息。

每个3D渲染引擎204可以与由系统100维护的多个虚拟实体中表示的虚拟有利点中的一个相关联。例如,3D渲染引擎204-1到204-8(在图2中仅明确地示出其中的3D渲染引擎204-1和204-2)可以分别与虚拟有利点306-1到306-8(图3中所说明)相关联。因此,如从特定3D渲染引擎204与其相关联的虚拟有利点306的视角(即,位置、角度、视场等)看到,每个3D渲染引擎204可以渲染相应的表面数据帧210。此外,如上所述,每个表面数据帧210不仅可以包括表示虚拟对象从相应虚拟有利点的外观的颜色数据(即,图像数据),而且还包括深度数据。

为了进行说明,图2示出表示表面数据帧210-1的图像,所述表面数据帧可以是由3D渲染引擎204-1渲染的表面数据帧,3D渲染引擎与虚拟有利点306-1(参看图3)相关联。如图所示,表面数据帧210-1可以包括颜色数据214,所述颜色数据可以表示从虚拟有利点306-1可见的虚拟3D空间302的视图(包括来自虚拟对象304的表面的颜色数据)。尽管颜色数据214在图2中说明为图像,但是应理解,可以通过任何合适形式捕获、编码、格式化、传输和表示颜色数据214。例如,颜色数据可以是根据标准视频编码协议、标准图像格式等格式化的数字数据。颜色数据214可以表示从虚拟有利点306-1观看的虚拟3D空间302内包括的虚拟对象的彩色图像(例如,类似于彩色照片)。另外或可替选地,颜色数据214可以是表示虚拟对象的灰度图像(例如,类似于黑白照片)。

另外,表面数据帧210-1可以包括深度数据216,所述深度数据可以表示虚拟3D空间302的另一视图,所述视图包括从与虚拟有利点306-1相关联的空间中的点开始虚拟对象304的表面的深度数据。类似于颜色数据214,深度数据216可以从虚拟有利点306-1的视角描绘虚拟3D空间302内的虚拟对象304。然而,代替表示虚拟对象304的可见外观(即,以颜色或灰度表示光如何与虚拟对象304的表面交互),深度数据216可以表示在虚拟对象304(例如,以及虚拟3D空间302内的其他对象)的表面上的每个点相对于虚拟有利点306-1的虚拟位置的深度(即,距离或位置)。与颜色数据214一样,可以通过任何合适形式捕获、编码、格式化、传输和表示深度数据216。例如,如图所示,深度数据216可以通过灰度图像数据表示(例如,用于深度数据216内表示的每个像素的六个或八个位)。然而,代替表示可见光如何从虚拟对象304的表面反射(即,如在颜色数据214中表示),对于图像中的每个像素,深度数据216的灰度图像可以表示由像素表示的点与虚拟有利点306-1相距多远。例如,可以用表示较深灰色阴影的值(例如,在其中0b111111表示黑色的六位实施方式的情况下更接近0b111111的二进制值)表示更接近虚拟有利点306-1的点。相反,可以用表示较浅灰色阴影的值(例如,在其中0b000000表示白色的六位实施方式的情况下更接近0b000000的二进制值)表示距离虚拟有利点306-1较远的点。

表面数据帧210的相应集合可以由3D渲染引擎204生成,使得由系统100提供的每个虚拟实体描述帧(例如,包括虚拟实体描述帧206)与表面数据帧的相应集合(例如,包括表面数据帧210-1到210-N的集合)相关联,所述表面数据帧的相应集合表示虚拟场景300的虚拟3D空间302从到虚拟3D空间302中的不同虚拟有利点的渲染。如图2中所示,随后可以将表面数据帧的相应集合中的每个表面数据帧210提供到视频数据封装系统212,所述视频数据封装系统可以组织、同步、编码、压缩、组合和/或以其他方式处理表面数据帧,以生成与每个虚拟有利点306相关联的相应颜***数据流和深度视频数据流。

为了进行说明,图6示出配置200的某些部件的更详细视图。具体来说,图6说明渲染表面数据帧210的完整集合(即,表面数据帧210-1到210-8)的八个3D渲染引擎204(即,3D渲染引擎204-1到204-8)。表面数据帧210-1到210-8可以表示虚拟3D空间内包括的虚拟对象(即,虚拟3D空间302内的虚拟对象304)的表面的颜色和深度数据,因为所述表面将相对于虚拟3D空间从不同有利点(例如,分别虚拟有利点306-1到306-8)出现。应理解,尽管表面数据帧可以各自在图6中通过与图2中所说明的颜色数据图像类似的图像(即,说明颜色数据214的图像)表示,但是每个表面数据帧210还可以包括表示深度数据的数据,所述数据可以通过与图2中所说明的深度数据图像类似的图像(即,说明深度数据216的图像)表示。

如上所述,3D渲染引擎204可以分别基于虚拟实体描述帧206,以及基于从资产存储系统208访问的数据而从相关联的虚拟有利点306生成表面数据帧210。例如,表示与虚拟场景300相关联的多个虚拟实体的维护的数据可以包括到存储在资产存储系统208中的表示虚拟对象304的颜色和深度数据的链路。因此,可以生成虚拟实体描述帧206(所述虚拟实体描述帧已通过系统100生成并且提供给上述3D渲染引擎204),以包括到表示存储于资产存储系统208中的虚拟对象304的颜色和深度数据的链路。3D渲染引擎204中的每个可以被配置成通过执行包括以下项的操作从其相应虚拟有利点306渲染其相应表面数据帧210:从系统100接收虚拟实体描述帧206;以及使用虚拟实体描述帧206内包括的链路从资产存储系统208访问表示存储于资产存储系统208中的虚拟对象304的颜色和深度数据。如图所示,通过虚拟实体描述帧206内包括的数据以及从资产存储系统208访问的颜色和深度数据两者,3D渲染引擎204可以渲染表面数据帧210,以从围绕虚拟3D空间302的有利点提供虚拟3D空间302(例如,包括虚拟对象304)的视图。

每个表面数据帧210可以被包括在表示在时间序列期间从相应虚拟有利点306可见的虚拟对象304的表面的颜色和深度数据的表面数据帧的单独序列内。例如,表面数据帧210-1可以被包括在表面数据帧的第一序列内,所述表面数据帧的第一序列表示在时间序列期间从虚拟有利点306-1可见的虚拟对象304的表面的颜色和深度数据,表面数据帧210-2可以被包括在表面数据帧的第二序列内,所述表面数据帧的第二序列表示在时间序列期间从虚拟有利点306-2可见的虚拟对象304的表面的颜色和深度数据等等。换句话说,一旦渲染了表面数据帧210,每个3D渲染引擎204可以继续渲染在表面数据帧的不同相应序列中的其他表面数据帧。例如,3D渲染引擎204可以接收在虚拟实体描述帧206之后的附加虚拟实体描述帧(例如,图5中所说明的虚拟实体描述帧500的序列),并且可以基于附加虚拟实体描述帧进一步生成表面数据帧。

为了进行说明,图7示出分别表示从有利点306-1到306-8可见的虚拟对象304的表面的颜色和深度数据的表面数据帧的多个示例性帧序列702(例如,帧序列702-1到702-8)。例如,在每个帧序列702(即,未被覆盖的表面数据帧,使得对象304的不同视图在图7中可见)中的第一表面数据帧可以对应于图6中所说明的表面数据帧210。因此,帧序列702-1到702-8可以分别与3D渲染引擎204-1到204-8相关联,并且因此与虚拟有利点306-1到306-8相关联。例如,帧序列702-1可以表示在特定时间序列704期间(例如,特定的实际时间段、与沉浸式虚拟现实世界相关联的特定虚拟时间线等)从虚拟有利点306-1观看时虚拟3D空间302内包括的虚拟对象的颜色和深度两者。类似地,帧序列702-2可以表示在时间序列704期间从虚拟有利点306-2观看时虚拟3D空间302内包括的虚拟对象的颜色和深度,并且对于帧序列702-3到702-8同样如此。

如上文描述和说明,通过3D渲染引擎204生成并且被包括在帧序列702中的表面数据帧中的每个可以传输或以其他方式传递到视频数据封装系统212中,所述视频数据封装系统可以通信地耦合到3D渲染引擎204。基于表面数据帧的不同帧序列702中的每个,视频数据封装系统212可以生成一个或多个传输流,以传输每个虚拟有利点306的颜***数据流和深度视频数据流。例如,视频数据封装系统212可以生成单个传输流,所述单个传输流包含与每个帧序列702相关联(即,与每个3D渲染引擎204和虚拟有利点306相关联)的个别颜***数据流和深度视频数据流,或者视频数据封装系统212可以生成与每个帧序列702相关联的颜***数据流和深度视频数据流的不同传输流。

一旦生成传输流,视频数据封装系统212就可以提供传输流用于流传输到与用户相关联的客户端侧媒体播放器装置。例如,视频数据封装系统212可以将传输流(transportstream)流传输(例如,借助于网络传输)到媒体播放器装置本身,或者可以包括数据管道中的传输流,传输流在所述数据管道中由另一系统进一步处理并流传输到媒体播放器装置(例如,在由与管道相关联的其他装置、过程和/或系统处理和/或封装之后)。

如上所述,在一些示例中,系统100和/或其他系统(例如,其他服务器侧系统)以及本文描述用于基于虚拟实体描述帧而从不同有利点渲染虚拟场景的帧的装置可以用于生成将由用户体验的虚拟现实媒体内容。例如,除了上述操作之外,虚拟现实媒体内容提供者系统(例如,系统100、视频数据封装系统212,和/或本文所描述的其他装置和系统可以被包括在所述虚拟现实媒体内容提供者系统内,或这些系统可以另外与所述虚拟现实媒体内容提供者系统相关联)可以进一步基于视频数据封装系统212生成并提供的传输流而生成并提供虚拟现实媒体内容。虚拟现实媒体内容可以表示虚拟场景并且可以向用户呈现,以便相对于虚拟场景从对应于任意虚拟位置的动态可选择虚拟有利点进行体验。例如,在用户使用媒体播放器装置体验虚拟场景时,可以由媒体播放器装置的用户选择动态可选择虚拟有利点。此外,可以将虚拟现实媒体内容(例如,通过包括系统100或另外与系统100相关联的虚拟现实媒体内容提供者系统)提供到媒体播放器装置,以允许用户从对应于虚拟场景内的任意虚拟位置的动态可选择虚拟有利点体验虚拟场景。

为了进行说明,图8示出示例性配置800,其中包括系统100以及视频数据封装系统212的示例性虚拟现实媒体内容提供者系统802(“提供者系统802”)生成借助于网络804提供给示例性客户端侧媒体播放器装置806(“媒体播放器装置806”)的虚拟现实媒体内容,用户808使用所述客户端侧媒体播放器装置来体验虚拟场景。

在已基于上述帧序列702生成一个或多个传输流之后,提供者系统802可以进一步编码、封装、加密或以其他方式处理一个或多个传输流,以形成虚拟现实媒体内容,媒体播放器装置806可以被配置成渲染所述虚拟现实媒体内容。例如,如下文将描述,虚拟现实媒体内容可以包括多个2D视频数据流或表示多个2D视频数据流(例如,对于每个虚拟有利点306,与颜色数据和深度数据相关联的2D视频数据流),所述2D视频数据流可以由媒体播放器装置806渲染,以便从虚拟场景300内的任何任意虚拟有利点(例如,包括除了用户808可能感兴趣的虚拟有利点306之外的虚拟有利点)呈现虚拟场景300的视图。另外或可替选地,虚拟现实媒体内容可以包括表示还可以渲染的虚拟场景300内包括的虚拟对象的一个或多个体积模型(例如,3D或4D模型)的数据以可从任意的虚拟有利点观看。随后,可以通过网络804将虚拟现实媒体内容分布到一个或多个媒体播放器装置,例如,与用户808相关联的媒体播放器装置806。例如,提供者系统802可以将虚拟现实媒体内容提供到媒体播放器装置806,使得用户808可以使用媒体播放器装置806体验虚拟场景300。

在一些示例中,可能不希望用户808被限于通过虚拟现实媒体内容(例如,表示虚拟场景300)表示的沉浸式虚拟现实世界内的一个或多个离散位置。因此,提供者系统802可以在表示虚拟场景300的虚拟现实媒体内容内提供足够数据,以允许不仅从虚拟有利点306,而且从对应于虚拟场景300内(例如,在虚拟3D空间302内或周围)的任意虚拟位置的任何动态可选择虚拟有利点渲染虚拟场景300。例如,在用户808使用媒体播放器装置806体验虚拟场景300时,可以由用户808选择动态可选择虚拟有利点。

如本文所使用,“任意虚拟位置”可以指在空间上与虚拟场景相关联的任何虚拟点(例如,在虚拟场景的虚拟3D空间内或周围)。例如,任意虚拟位置不限于围绕虚拟场景的固定位置(例如,与虚拟有利点306相关联的固定位置),而且还包括在与虚拟有利点306相关联的位置与在虚拟3D空间302内部的位置之间的所有位置。此外,任意虚拟位置可以与任意虚拟有利点相关联,而不限于与虚拟有利点306中的任一者对准。在一些示例中,此类任意虚拟位置可以对应于虚拟场景300内的最期望的虚拟有利点。例如,如果虚拟场景300包括篮球比赛,则用户808可以动态地选择是篮球场上的任何任意虚拟位置中的从其体验所述比赛的虚拟有利点。例如,用户可以动态地选择其虚拟有利点以跟随篮球在篮球场上上下移动并体验篮球比赛,就像在比赛中站在篮球场上一样。换句话说,例如,尽管虚拟有利点306可以位于围绕篮球场的固定位置处,但是用户808可以动态地选择任意的与篮球场上的任何任意位置相关联的、从其体验所述比赛的虚拟有利点。

网络804可以包括提供者特定的有线或无线网络(例如,电缆或卫星载波网络,或移动电话网络)、因特网、广域网、内容传递网络,或任何其他合适的网络。如可以服务特定实施方式,数据可以使用任何通信技术、装置、媒体和协议在提供者系统802与媒体播放器装置806(以及未明确示出的其他媒体播放器装置)之间流动。

用户808可以使用媒体播放器装置806来访问和体验从提供者系统802接收的虚拟现实媒体内容。例如,媒体播放器装置806可以被配置成从任意虚拟有利点(例如,由用户选择并且对应于虚拟3D空间302内的任意虚拟位置的动态可选择虚拟有利点)生成(例如,基于用于传输流内包括的每个虚拟有利点的颜***数据流和深度视频数据流,所述传输流可以是2D视频数据流)将由用户808体验的虚拟场景300的虚拟3D空间302的3D表示。为此,媒体播放器装置806可以包括能够呈现沉浸式虚拟现实世界(例如,表示虚拟场景300的沉浸式虚拟现实世界)的视场以及在用户808体验沉浸式虚拟现实世界时检测来自用户808的用户输入以动态地更新视场内呈现的沉浸式虚拟现实世界的任何装置,或通过所述装置实施。

例如,图9示出可以由用户808用于体验虚拟现实媒体内容的各种示例性类型的媒体播放器装置806。具体来说,如图所示,媒体播放器装置806可以采用若干不同形状因子中的一个形状因子,例如,包括头戴式显示屏的头戴式虚拟现实装置902(例如,虚拟现实游戏装置)、个人计算机装置904(例如,桌面型计算机、膝上型计算机等)、移动或无线装置906(例如,可能借助于头戴式设备安装到用户808的头部的智能电话、平板计算机装置等),或通过可以服务特定实施方式以有助于接收和/或呈现虚拟现实媒体内容的任何其他装置或装置配置。不同类型的媒体播放器装置(例如,头戴式虚拟现实装置、个人计算机装置、移动装置等)可以为用户808提供具有不同沉浸度的不同类型的虚拟现实体验。

图10说明示例性虚拟现实体验1000,其中向用户808呈现表示如从与相对于虚拟场景的示例性任意虚拟位置对应的动态可选择虚拟有利点体验的虚拟场景的示例性虚拟现实媒体内容。具体来说,虚拟现实媒体内容1002呈现在视场1004内,所述视场从虚拟有利点示出虚拟场景,所述虚拟有利点对应于处于正进行投篮的虚拟场景的虚拟3D空间内的篮球标准正下方的任意虚拟位置基于虚拟场景的沉浸式虚拟现实世界1006可用于观看者通过提供用户输入(例如,头部移动、键盘输入等)以四处观看和/或四处移动(即,动态地选择从其体验的虚拟有利点)沉浸式虚拟现实世界1006来进行体验。

例如,视场1004可以提供窗口,用户808可以通过所述窗口容易地且自然地四处查看沉浸式虚拟现实世界1006。视场1004可以由媒体播放器装置806呈现(例如,呈现在媒体播放器装置806的显示屏上),并且可以包括描绘在沉浸式虚拟现实世界1006内的用户周围的对象的视频。另外,当用户808体验沉浸式虚拟现实世界1006时,视场1004可以响应于用户808提供的用户输入而动态地变化。例如,媒体播放器装置806可以检测用户输入(例如,移动或转向其上呈现视场1004的显示屏)。作为响应,视场1004可以显示不同对象和/或从不同虚拟有利点或虚拟位置看到的对象,而不是从先前虚拟有利点或虚拟位置看到的对象。

在图10中,沉浸式虚拟现实世界1006被说明为半球形,从而指示用户808可以在沉浸式虚拟现实世界1006内从用户808当前已选择的篮球标准下方的位置的虚拟有利点基本上向前、向后、向左、向右和/或向上的任何方向上观看。在其他示例中,沉浸式虚拟现实世界1006可以包括整个360°乘180°球体,使得用户808也可以向下看。另外,用户808可以四处移动到沉浸式虚拟现实世界1006内的其他位置(即,动态地选择虚拟3D空间内的不同的动态可选择虚拟有利点)。例如,用户808可以选择半场处的虚拟有利点、从面向篮球标准的罚球线的虚拟有利点、悬浮在篮球标准上方的虚拟有利点等。

图11说明用于基于虚拟场景的虚拟实体描述帧而从不同有利点渲染虚拟场景的帧的示例性方法1100。尽管图11说明根据一个实施例的示例性操作,但是其他实施例可以省略、添加、重新排序和/或修改图11中所示的操作中的任一者。图11中所示的操作中的一个或多个可以由系统100和/或由其任何实施方式执行。

在操作1102中,虚拟场景捕获系统可以维护表示虚拟场景的虚拟3D空间内包括的多个虚拟实体的数据。多个虚拟实体可以包括虚拟对象以及进入虚拟3D空间中的多个虚拟有利点。具体来说,例如,多个虚拟有利点可以包括第一虚拟有利点以及不同于第一虚拟有利点的第二虚拟有利点。可以通过本文所描述的方式中的任一者执行操作1102。

在操作1104中,虚拟场景捕获系统可以生成表示在时间序列中的特定点处多个虚拟实体中的至少一个虚拟实体的状态的虚拟实体描述帧。例如,虚拟场景捕获系统可以基于表示多个虚拟实体的维护的数据而生成虚拟实体描述帧。可以通过本文所描述的方式中的任一者执行操作1104。

在操作1106中,虚拟场景捕获系统可以将在操作1104中生成的虚拟实体描述帧提供到与内容提供者系统相关联的多个服务器侧3D渲染引擎。例如,虚拟场景捕获系统可以将虚拟实体描述帧提供到第一3D渲染引擎,所述第一3D渲染引擎与第一虚拟有利点相关联并且被配置成基于虚拟实体描述帧而渲染第一表面数据帧,所述第一表面数据帧表示在时间序列中的特定点处从第一虚拟有利点可见的虚拟对象的表面的颜色和深度数据。此外,虚拟场景捕获系统可以将虚拟实体描述帧提供到第二3D渲染引擎,所述第二3D渲染引擎与第二虚拟有利点相关联并且被配置成基于虚拟实体描述帧而渲染第二表面数据帧,所述第二表面数据帧表示在时间序列中的特定点处从第二虚拟有利点可见的虚拟对象的表面的颜色和深度数据。可以通过本文所描述的方式中的任一者执行操作1106。

在某些实施例中,本文所描述的系统、部件和/或过程中的一个或多个可以通过一个或多个适当配置的计算装置实施和/或执行。为此,上述系统和/或部件中的一个或多个可以包括在至少一个非暂时性计算机可读介质上体现的任何计算机硬件和/或计算机实施的指令(例如,软件),或由所述计算机硬件和/或计算机实施的指令实施,所述至少一个非暂时性计算机可读介质被配置成执行本文所描述的过程中的一个或多个。具体来说,系统部件可以在一个物理计算装置上实施,或可以在多于一个物理计算装置上实施。因此,系统部件可以包括任何数量的计算装置,并且可以采用多个计算机操作系统中的任一个。

在某些实施例中,本文所描述的过程中的一个或多个可以至少部分地实施为指令,所述指令在非暂时性计算机可读介质中体现并且可由一个或多个计算装置执行。一般来说,处理器(例如,微处理器)从非暂时性计算机可读介质(例如,存储器等)接收指令,并且执行那些指令,由此执行一个或多个过程,包括本文所描述的过程中的一个或多个。此类指令可以使用各种已知的计算机可读介质中的任一者来存储和/或传输。

计算机可读介质(还称为处理器可读介质)包括参与提供可以由计算机(例如,由计算机的处理器)读取的数据(例如,指令)的任何非暂时性介质。此种介质可以采用许多形式,包括但不限于非易失性介质和/或易失性介质。例如,非易失性介质可以包括光盘或磁盘以及其他持久性存储器。例如,易失性介质可以包括通常构成主存储器的动态随机存取存储器(“DRAM”)。计算机可读介质的常见形式包括,例如,磁盘、硬盘、磁带、任何其他磁性介质、光盘只读存储器(“CD-ROM”)、数字视频光盘(“DVD”)、任何其他光学介质、随机存取存储器(“RAM”)、可编程只读存储器(“PROM”)、电可擦除可编程只读存储器(“EPROM”)、FLASH-EEPROM、任何其他存储器芯片或盒式磁带,或计算机可以读取的任何其他有形介质。

图12说明示例性计算装置1200,所述计算装置可以被具体地配置成执行本文所描述的过程中的一个或多个。如图12中所示,计算装置1200可以包括通信接口1202、处理器1204、存储装置1206,以及通过通信基础设施1210通信地连接的输入/输出(“I/O”)模块1208。尽管图12中示出示例性计算装置1200,但是图12中所说明的部件并不预期为限制性的。在其他实施例中可以使用另外的或替代的部件。现在将更详细地描述图12中所示的计算装置1200的部件。

通信接口1202可以被配置成与一个或多个计算装置通信。通信接口1202的示例包括但不限于有线网络接口(例如,网络接口卡)、无线网络接口(例如,无线网络接口卡)、调制解调器、音频/视频连接,以及任何其他合适的接口。

处理器1204通常表示能够处理数据或解释、执行和/或引导本文所描述的指令、过程和/或操作中的一个或多个的执行的任何类型或形式的处理单元(例如,中央处理单元和/或图形处理单元)。处理器1204可以根据一个或多个应用1212或例如可以存储在存储装置1206中的其他计算机可执行指令或另一计算机可读介质来引导操作的执行。

存储装置1206可以包括一个或多个数据存储介质、装置或配置,并且可以采用数据存储介质和/或装置的任何类型、形式和组合。例如,存储装置1206可以包括但不限于硬盘驱动器、网络驱动器、闪存驱动器、磁盘、光盘、RAM、动态RAM、其他非易失性和/或易失性数据存储单元,或其组合或子组合。包括本文所描述的数据的电子数据可以临时地和/或永久地存储在存储装置1206中。例如,表示一个或多个可执行应用1212的数据可以存储在存储装置1206内,所述一个或多个可执行应用被配置成引导处理器1204执行本文所描述的操作中的任一者。在一些示例中,数据可以布置在驻留在存储装置1206内的一个或多个数据库中。

I/O模块1208可以包括被配置成接收用户输入并提供用户输出的一个或多个I/O模块。一个或多个I/O模块可以用于接收用于单个虚拟现实体验的输入。I/O模块1208可以包括支持输入和输出能力的任何硬件、固件、固件或其组合。例如,I/O模块1208可以包括用于捕获用户输入的硬件和/或软件,包括但不限于键盘或小键盘、触摸屏部件(例如,触摸屏显示器)、接收器(例如,RF或红外接收器)、运动传感器,和/或一个或多个输入按钮。

I/O模块1208可以包括用于将输出呈现给用户的一个或多个装置,包括但不限于图形引擎、显示器(例如,显示屏)、一个或多个输出驱动器(例如,显示驱动器)、一个或多个音频扬声器,以及一个或多个音频驱动器。在某些实施例中,I/O模块1208被配置成将图形数据提供给显示器以向用户呈现。如可以服务特定实施方式,图形数据可以表示一个或多个图形用户接口和/或任何其他图形内容。

在一些示例中,本文所描述的设施中的任一者可以由计算装置1200的一个或多个组件或在计算装置1200的一个或多个组件内实施。例如,驻留在存储装置1206内的一个或多个应用1212可以被配置成引导处理器1204执行与系统100(参看图1)的虚拟实体状态跟踪设施102或虚拟实体描述帧设施104相关联的一个或多个操作或功能。同样,系统100的存储设施106可以由存储装置1206或在存储装置1206内实施。

就上述实施例收集、存储和/或采用个人提供的个人信息这一点来说,应理解,应根据与保护个人信息有关的所有适用法律适用此类信息。另外,此类信息的收集、存储和使用可能需要得到个人对此种活动的同意,例如,通过可以适用于信息的情况和类型的众所周知的“选择加入”或“选择退出”过程。个人信息的存储和使用可以按照适当安全的方式反映信息的类型,例如,通过针对特别敏感信息的各种加密和匿名技术。

在先前的描述中,已参考附图描述各种示例性实施例。然而,显而易见的是,在不脱离所附权利要求书中所阐述的本发明的范围的情况下,可以对其作出各种修改和变化,并且可以实施另外的实施例。例如,本文所描述的一个实施例的某些特征可以与本文所描述的另一实施例的特征组合或替代本文所描述的另一实施例的特征。因此,说明书和附图被视为说明性的,而非限制性的。

37页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:使用场景的2D捕获图像提供虚拟现实内容的方法和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类