CN120500707A - 用于沉浸式数字体验的系统和方法 - Google Patents
用于沉浸式数字体验的系统和方法Info
- Publication number
- CN120500707A CN120500707A CN202380090871.4A CN202380090871A CN120500707A CN 120500707 A CN120500707 A CN 120500707A CN 202380090871 A CN202380090871 A CN 202380090871A CN 120500707 A CN120500707 A CN 120500707A
- Authority
- CN
- China
- Prior art keywords
- data
- digital
- motion
- location
- virtual environment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
一种用于提供沉浸式数字体验的方法,可以包括:在第一计算设备产生虚拟环境,所述虚拟环境包括至少一个数字对象的位置数据。第一计算设备可以接收对应于第一物理主体的实时运动并且包括第一多个数据点的第一流式运动数据,第一多个数据点中的每个数据点与第一物理主体的一部分的位置关联。在所述虚拟环境内,可以产生第一骨架网格,并将第一骨架网格定位在相对于所述至少一个数字对象的第一初始位置。第一多个数据点中的每个数据点可以与沿着所述骨架网格的对应点关联。第一骨架网格和所述至少一个数字对象的位置信息可以流式传输到客户端设备。
Description
相关申请的交叉引用
本申请要求2022年12月1日提交的美国临时专利申请No.63/429,494和2023年9月19日提交的美国临时专利申请No.63/583,772的优先权,这些申请的全部内容通过引用并入本文中。
背景技术
虚拟环境,例如包括视频游戏和虚拟现实环境,可以包括人、动物、机器等的动态三维表示。在一些情况下,对虚拟环境中的三维对象来说,对物理环境中的移动做出响应会是有用的。
发明内容
根据所公开的主题的一些实施例,提供了用于沉浸式数字体验的系统和方法。
根据所公开的主题的一些实施例,可以提供一种用于提供沉浸式数字体验的方法。所述方法可以包括在第一计算设备产生虚拟环境,所述虚拟环境包括至少一个数字对象的位置数据。可以接收第一流式运动数据,第一流式运动数据对应于第一物理主体的实时运动并且包括第一多个数据点,第一多个数据点中的每个数据点与第一物理主体的一部分的位置关联。在所述虚拟环境内,可以产生第一骨架网格,并将第一骨架网格定位在相对于所述至少一个数字对象的第一初始位置。第一多个数据点中的每个数据点可以与沿着所述骨架网格的对应点关联。第一骨架网格和所述至少一个数字对象的位置信息可以流式传输到客户端设备。
在一些实施例中,所述方法还包括:接收第二流式运动数据,第二流式运动数据对应于第二物理主体的运动并且包括第二多个数据点,第二多个数据点中的每个数据点与第二物理主体的一部分的位置关联;在所述虚拟环境内产生第二骨架网格,并将第二骨架网格定位在相对于所述至少一个数字对象的第二初始位置;使第二多个数据点中的每个数据点与沿着第二骨架网格的对应点关联;以及将第二骨架网格的位置信息流式传输到所述客户端设备。
在一些实施例中,第一流式运动数据是从第一服务器接收的,而第二流式运动数据是从第二服务器接收的。
在一些实施例中,所述方法还包括:在所述虚拟环境内产生与所述虚拟环境的用户对应的数字化身;从所述客户端设备接收指令,所述指令对应于所述数字化身在所述虚拟环境内的移动;响应于所述指令,在所述虚拟环境内移动所述数字化身;以及将所述数字化身的位置信息流式传输到所述客户端设备。
在一些实施例中,流式数据被压缩,并且所述方法还包括解压缩所述流式数据。
在一些实施例中,解压缩所述流式数据包括从第一多个数据点推断出推断数据点,所述推断数据点的位置是相对于第一多个数据点中的至少一个数据点计算的。
在一些实施例中,第一流式运动数据可以包括第一位置坐标,并且所述方法还可以包括确定第一位置坐标不对应于第一物理主体的一部分,并且从被流式传输到所述客户端设备的所述位置信息中排除第一位置坐标。
在一些实施例中,所述方法还可以包括确定第一位置坐标不对应于第一物理主体的对应部分的位置,产生与第一物理主体的对应部分的预测位置对应的更新的第一位置坐标,并使更新的第一位置坐标与沿着所述骨架网格的对应点关联。在一些情况下,确定第一位置坐标不对应于第一主体的对应部分的位置可以包括确定第一位置坐标位于第一主体的对应部分的可能位置的第一范围之外。在一些例子中,更新的第一位置坐标是使用逆运动学算法产生的。在一些例子中,逆运动学算法是循环坐标下降逆运动学(CCDIK)算法和前向与后向抵达逆运动学(FABRIK)算法中的一个。在一些例子中,更新的第一位置坐标是实时产生的。
在一些实施例中,所述方法还包括接收用户在所述虚拟环境内的位置数据,其中第一多个数据点是至少部分地基于所述用户的所述位置数据确定的。
在一些实施例中,所述方法可以包括至少部分地基于计算约束或网络约束来确定第一骨架网格的分辨率,并从第一流式运动数据中选择第一多个数据点,第一多个数据点包括比第一流式运动数据少的数据点。
在一些实施例中,第一多个数据点中的每个数据点至少包括单位四元数的一部分。在一些例子中,所述方法还包括针对第一多个数据点中的每个数据点,基于单位四元数的对应部分确定完整的单位四元数。在一些例子中,使第一多个数据点中的每个数据点与沿着所述骨架网格的对应点关联包括将第一多个数据点中的至少一个数据点的完整单位四元数乘以与第一主体的维度关联的比例值。在一些示例中,第一多个数据点包括第一数据点和第二数据点,其中第二数据点的值指示第一主体的第二部分相对于与第一数据点对应的第一主体的第一部分的位置的位置。
根据所公开的主题的一些实施例,可以提供一种计算机系统。所述计算机系统可以包括至少一个存储器;以及耦合到所述至少一个存储器的至少一个处理器。所述系统可被配置为使所述至少一个处理器执行存储在所述至少一个存储器中的指令,以便:产生虚拟环境,所述虚拟环境包括至少一个数字对象的位置数据;从第一设备接收第一流式运动数据,第一流式运动数据对应于第一物理主体的实时运动并且包括第一多个数据点,第一多个数据点中的每个数据点与第一物理主体的一部分的位置关联;从第二设备接收第二流式运动数据,第二流式运动数据对应于第二物理主体的实时运动并且包括第二多个数据点,第二多个数据点中的每个数据点与第二物理主体的一部分的位置关联;在所述虚拟环境内产生第一骨架网格和第二骨架网格;将第一骨架网格定位在相对于所述至少一个数字对象的第一初始位置;将第二骨架网格定位在相对于所述至少一个数字对象的第二初始位置;使第一多个数据点中的每个数据点与沿着第一骨架网格的对应点关联;使第二多个数据点中的每个数据点与沿着第二骨架网格的对应点关联;以及将第一骨架网格、第二骨架网格和所述至少一个数字对象的位置信息实时流式传输到客户端设备。
根据所公开的主题的一些实施例,可以提供一种非临时性计算机可读介质。所述非临时性计算机可读介质可以包括使计算机上的至少一个处理器执行以下操作的指令:产生虚拟环境,所述虚拟环境包括至少一个数字对象的位置数据;从第一设备接收第一流式运动数据,第一流式运动数据对应于第一物理主体的实时运动并且包括第一多个数据点,第一多个数据点中的每个数据点与第一物理主体的一部分的位置关联;从第二设备接收第二流式运动数据,第二流式运动数据对应于第二物理主体的实时运动并且包括第二多个数据点,第二多个数据点中的每个数据点与第二物理主体的一部分的位置关联;在所述虚拟环境内产生第一骨架网格和第二骨架网格;将第一骨架网格定位在相对于所述至少一个数字对象的第一初始位置;将第二骨架网格定位在相对于所述至少一个数字对象的第二初始位置;使第一多个数据点中的每个数据点与沿着第一骨架网格的对应点关联;使第二多个数据点中的每个数据点与沿着第二骨架网格的对应点关联;以及将第一骨架网格、第二骨架网格和所述至少一个数字对象的位置信息实时流式传输到客户端设备。
附图说明
并入本说明书中并构成本说明书的一部分的附图图解说明本发明的实施例,并与本描述一起用于解释本发明的实施例的原理:
图1是按照一些实施例的用于使用流式位置数据提供沉浸式数字体验的系统的示例示意图;
图2是按照一些实施例的可用于实现图1中所示的运动数据捕捉系统、现场游戏引擎服务器、远程游戏引擎服务器和客户端设备的硬件的例子;
图3是图解说明按照一些实施例的图1中所示的系统的组件之间的数据流的示例示意图;
图4是示出按照一些实施例的由现场游戏引擎服务器进行的示例处理的流程图;
图5是示出按照一些实施例的可以由远程游戏引擎服务器进行以向用户提供流式沉浸式数字体验的示例处理的流程图;
图6是示出按照一些实施例的由客户端设备进行以向一个或多个用户提供流式沉浸式数字体验的示例处理的流程图;
图7是按照一些实施例的用于使用来自多个地理位置的流式位置数据来提供沉浸式数字体验的系统的示意图;
图8A-图8B是按照一些实施例的用于提供流式沉浸式数字体验的骨架网格的透视图;
图9是图解说明用于流式传输位置数据的处理的流程图,其中示出了系统的组成部分之间的交互;
图10是图解说明动态校正系统的各个方面的位置数据的连续帧的示意图;和
图11是图解说明可用于对数字骨架的位置数据实现动态校正的系统和处理的示图。
具体实施方式
在详细解释本发明的任何实施例之前,应当理解的是,本发明的应用不限于在以下描述中阐述的或在以下附图中图解所示的构造细节和组件布置。本发明能够具有其他实施例,并且能够以各种方式实践或执行。此外,应当理解的是,本文中使用的措辞和术语是为了描述的目的,而不应被视为限制性的。本文中的“包括”、“包含”或“具有”及其变体的使用意味着包含之后列出的项目及其等同物,以及附加项目。除非另有规定或限制,否则术语“安装”、“连接”、“支撑”和“耦合”及其变体被广泛使用,并且包含直接和间接安装、连接、支撑和耦合。此外,“连接”和“耦合”不限于物理或机械连接或耦合。
同样如本文中所使用的,除非另有限制或定义,否则“或”指示可以存在于任意各种组合中的组件或操作的非排他性列表,而不是只能作为彼此的替代物存在的组件的排他性列表。例如,列表“A、B或C”指示以下选项:A;B;C;A和B;A和C;B和C;以及A、B和C。相应地,本文中使用的用语“或”只有当在前面有排他性用语,比如“要么”、“其中之一”、“仅其中之一”或“恰好其中之一”时,才旨在指示排他性替代物。例如,列表“A、B或C之一”指示以下选项:A,但不是B和C;B,但不是A和C;以及C,但不是A和B。以“一个或多个”(及其变体)开头并且包括“或”以分隔所列元素的列表指示所列元素中的任何或所有元素中的一个或多个的选项。例如,短语“A、B或C中的一个或多个”和“A、B或C中的至少一个”指示以下选项:一个或多个A;一个或多个B;一个或多个C;一个或多个A和一个或多个B;一个或多个B和一个或多个C;一个或多个A和一个或多个C;以及A中的一个或多个、B中的一个或多个和C中的一个或多个。类似地,前面带有“多个”(及其变体)并包括“或”以分隔所列元素的列表指示所列元素中的任何或所有元素的多个实例的选项。例如,短语“多个A、B或C”和“A、B或C中的两个或更多个”指示以下选项:A和B;B和C;A和C;以及A、B和C。
同样如本文中所使用的,除非另有限制或定义,否则用语“大约”、“基本上”和“近似”指的是该术语前面的数值的±5%的值范围。默认情况下,用语“大约”和“近似”包括相关范围的端点,但也旨在公开不包含端点的范围。提出以下讨论是为了使本领域技术人员能够实现和使用本发明的实施例。对所示实施例的各种修改对于本领域技术人员来说将是显而易见的,并且本文的一般原理可以应用于其他实施例和应用,而不脱离本发明的实施例。因此,本发明的实施例并不旨在局限于所示的实施例,而是应被给予与本文中公开的原理和特征一致的最宽范围。以下详细描述将参考附图来阅读,其中不同附图中的相同元件具有相同的附图标记。不一定按比例绘制的附图描绘了选择的实施例,并不意图限制本发明的实施例的范围。本领域技术人员将认识到本文中提供的例子具有许多有用的替代方案,并且落入本发明的实施例的范围内。
本文中使用的“实时”指的是在短到用户无法识别的时间间隔内处理和提供信息。例如,实时可以包括事件的100毫秒内、200毫秒内、300毫秒内、400毫秒内或500毫秒内的时间段。“近乎实时”指的是在捕捉信息的同时处理和提供信息,但可能包括大于实时处理的±5%的延迟(例如,相对于事件的发生,用户可能会察觉到滞后)。另外,如本文中所使用的,“至少一个处理器”被描述为进行一种或多种功能指的是:一个处理器进行所述一种或多种功能,多个处理器进行所述一种或多种功能,其中一个处理器进行一些功能,并且一个或多个其他处理器进行其他功能,多个处理器进行所述一种或多种功能,其中所述多个处理器中的至少一些处理器一起工作以进行一种或多种功能(例如,可以包括一起进行单个所列举功能的第一处理器和第二处理器),或者它们的组合。换句话说,如本文中所使用的,“至少一个处理器”进行一种或多种功能不一定要求单个处理器进行所列举的每种功能。运动捕捉系统可用于收集主体的运动数据,并在数字环境(例如,三维环境、捕捉运动数据的二维投影等)中渲染该数据。例如,在一些情况下,运动捕捉系统包括一个或多个摄像头来检测主体的运动。在一些情况下,捕捉并记录运动数据以提供逼真的游戏体验(例如,可以记录足球球员进行各种动作,并且可以通过三维骨架或数字角色在数字游戏中复制球员的运动)。为了捕捉三维运动数据,运动捕捉系统可以识别沿着主体的身体的点,并跟踪这些点的移动,在一些情况下,包括这些点在三维坐标系中的坐标以及与这些点关联的旋转值。在一些情况下,可以手动指定要由运动捕捉系统识别的点。例如,可以在主体的身体上在沿着身体的点处放置标记,这些标记可以向运动捕捉系统提供关于主体的特定关节、骨骼或任何其他部位的有用信息。标记可以被运动捕捉系统在视觉上识别,并且可以允许运动捕捉系统通过捕捉和记录每个点的位置坐标和旋转坐标来重建主体的移动。位置值和旋转值可用于渲染场景(例如,二维(“2D”)场景、三维(“3D”)场景和扩展现实场景等),其中运动捕捉系统捕捉的运动数据用于控制场景中的模型(例如,基于3D骨架)的移动。例如,标记可以定位在运动员身体上的各个点(例如,肘部、膝盖、手腕、脚踝等),以允许运动捕捉系统捕捉关于运动员的关节的运动数据,并且还可以在运动员的四肢(例如,手和脚)和其他骨骼或特征处设置标记,以提供用户的附加移动信息。基于对捕捉的图像数据的一帧或多帧中的标记的视觉识别,可以基于运动捕捉系统所接收的移动信息来捕捉运动数据。在一些情况下,使用数量更多的标记可以捕捉主体的更精确的运动数据,这进而可以在复制主体的运动的三维骨架或网格中产生更逼真的移动。在一些例子中,在本文中描述的连接机制中可以使用任何适当的运动捕捉系统或运动捕捉系统的组合,比如基于声纳的运动捕捉系统、基于光学的运动捕捉系统、基于标签和/或标记的运动捕捉系统、基于计算机视觉的运动捕捉系统、基于惯性测量单元的运动捕捉系统等。作为更具体的例子,运动捕捉系统可以使用可从市场上可获得的运动捕捉系统的传感器和组件的任何组合,比如可从总部位于俄勒冈州科瓦利斯的NaturalPoint获得的OptiTrack运动捕捉系统、可从总部位于英国牛津的Vicon Motion Systems Ltd获得的运动捕捉系统、可从总部位于瑞典哥德堡的QualisysAB获得的运动捕捉系统、可从总部位于荷兰恩斯赫德的Xsens获得的运动捕捉系统、可从总部位于德国慕尼黑的Kinexon获得的运动捕捉系统、可从总部位于英国伦敦的Move.AI获得的运动捕捉系统。
在一些运动捕捉系统中,可以在不使用视觉标记的情况下(或基于较少的视觉标记)产生运动数据。例如,一些运动捕捉系统可以使用机器学习将来自摄像头的二维图像或视频捕捉转换为主体的运动的三维模型。例如,主体可以是跑步者,可以训练机器学习模型从图像(例如,视频帧中的图像)中识别跑步者的身体部位。模型可以使所识别的身体部位(例如,膝盖、手、脖子、肘部、脚跟等)与坐标(例如,位置值和旋转值)关联,并且还可以使这些坐标与三维骨架关联,该三维骨架可以具有与所识别的运动员的身体部位对应的部分。因此,该骨架的部分可以移动以近似或复制捕捉的运动员的移动。在一些情况下,机器学习模型可以识别不同数量的身体部位,从而为身体部位收集不同数量的坐标,产生的坐标数量越多,精度和运动完整性就越高。然而,更多身体部位的跟踪或识别也会与计算资源的成本关联,并且会相应地与较慢的渲染速度关联,这会对三维观看环境中数据的观看产生负面影响。
在一些实施例中,运动捕捉系统和流式传输系统可以包括可以相对靠近视觉运动捕捉元件(例如,摄像头)定位的服务器,这可以允许相对更快地渲染与视觉运动捕捉元件捕捉的运动数据关联的三维模型或骨架。例如,服务器可以是“现场”的(例如,与运动捕捉系统的摄像头位于同一建筑物、校园或综合体内,通过有线或无线局域网(LAN)连接到运动捕捉系统等),因为可以有利地使服务器和运动捕捉系统之间的网络时延降至最小。服务器可以包括(例如,可以托管或执行)游戏引擎,以便利基于与从物理主体捕捉的运动数据关联的骨架的数字身体的处理和渲染。在一些系统中,数字身体的2D视频可以在现场渲染并流式传输到离场客户端,以便系统的用户可以实时观看主体的物理移动的数字渲染。与数字身体和关联的运动关联的数字网格可以包括大量的数据,并且因此可能需要大量的网络带宽和处理能力才能作为流来消耗,这会导致流式传输的滞后和流式数据的质量损失。此外,使用此类技术的流式传输会限制流式数据的有用性,因为它会抑制与流式三维数据的沉浸式交互。
在一些实施例中,本文中描述的机制可以提供用于流式传输动态主体(例如,人类、马、狗、汽车、诸如球棒、球、球杆、网球拍之类的运动设备、或任何其他移动主体)的运动数据的改进系统和方法。运动数据可以包括主体的身体的一个或多个点的位置值和旋转值,并且主体的运动可以映射到数字结构(例如,主体的网格、骨架和/或任何其他适当的数字表示)并且可以由所述数字结构复制。运动可以在三维环境中(例如,在扩展现实场景,比如虚拟现实场景、混合现实场景等中)实时、基本实时或近乎实时地再现,这可以让用户沉浸式地体验移动(例如,提供沉浸式数字体验)。例如,在一些实施例中,可以捕捉足球球员的运动数据并流式传输到游戏引擎,游戏引擎可以向用户实时渲染每个球员的运动,从而允许用户在三维环境中沉浸式地体验足球比赛。用户可以使用任何适当的显示设备,比如虚拟现实或增强现实头显、投影仪或屏幕来体验实时三维运动流。此外,用户可以直接体验实时3D运动流(例如,就像用户位于3D环境中一样),或者间接体验实时3D运动流,例如,当用户在屏幕上观看3D环境并且用户的化身和/或表示用户的视点的虚拟摄像头相对于流式运动定位时。本文中描述的改进系统和方法可以与任何事件的运动流式传输一起使用,包括任何体育赛事、颁奖典礼、流式现场观众演出、或者可以包括运动捕捉和运动数据的流式传输的任何流式事件。
在一些实施例中,本文中描述的机制可以用于各种应用和各种行业。例如,本文中描述的机制可以便利多个远程运动捕捉站点之间的远程协作,并且可以便利基于来自多个运动捕捉站点的运动捕捉信息的内容的离场实时观看。作为另一个例子,本文中描述的机制可以通过便利与其他本地或远程演员一起实时三维观看场景中的一个或多个远程演员的移动,从而便利远程协作,来便利远程电影制作和导演。作为再一个例子,本文中描述的机制可以便利虚拟、动态和协作的学习体验(例如,包括医疗和制造环境中的实时演示和学习)。作为又一个例子,本文中描述的机制可以便利现场活动(比如体育运动、音乐会、节日、演讲活动等)的沉浸式观看。作为另一个例子,本文中描述的机制可以便利实时或近乎实时和高保真的电子竞技游戏,其中用户的身体位置被用作游戏的输入。
图1图解说明按照一些实施例的用于流式传输运动捕捉数据的示例系统100。如图所示,系统100可以包括配置为收集主体的运动数据的运动捕捉系统102。运动捕捉系统102可以包括检测设备104,在图1中,检测设备104是摄像头104。在图解所示的实施例中,摄像头104收集运动员106的运动数据。运动数据可以包括沿着运动员的身体106的点108(例如,在关节、四肢和/或沿着用户身体的任何其他点)的三维位置坐标(例如,沿着x、y和z轴)和旋转坐标(例如,相对于其他点或原点的向量和/或相对于线性轴的径向值和角度偏移)。在一些情况下,点108可以与放置在用户的身体上的期望位置的标记关联,这些标记可以由摄像头104感测,并用于构建作为运动员106的数字表示的骨架网格。在一些情况下,运动捕捉系统可以识别沿着运动员的身体的对其收集坐标信息的点,并且可以通过使用机器学习模型使坐标与数字骨架或骨架网格关联。在一些实施例中,检测设备可以是能够收集和/或导出主体的运动数据的任何设备,包括但不限于LiDAR扫描仪、雷达扫描仪、可穿戴式陀螺仪、全球定位系统(“GPS”)设备、本地定位系统(“LPS”)设备和可穿戴式加速度计等。
运动捕捉系统102可以可操作地连接到现场服务器110(例如,与现场服务器110进行网络通信),现场服务器110可被配置为处理由运动捕捉系统102及其组件收集或产生的运动捕捉数据。在一些实施例中,运动捕捉系统102和现场服务器110可以通过任何适当的通信网络或具有可接受时延的通信网络的组合(例如,局域网(“LAN”),比如使用无线接入点和/或一根或多根电线实现的LAN)连接。例如,系统102和服务器110可以通过Wi-Fi网络(它可以包括一个或多个无线路由器、一个或多个交换机等)、对等网络(例如,本地对等蜂窝网络连接,比如5G侧行链路连接、对等Wi-Fi连接、蓝牙网络等)、有线网络(例如,直接通过以太网或光纤电缆)等连接。在一些实施例中,系统102和服务器110可以通过局域网连接。
在一些实施例中,游戏引擎112可以包括服务器110上的软件和库,所述软件和库可以处理由运动数据捕捉系统102提供的运动数据。在一些实施例中,游戏引擎112可以接收由运动捕捉系统102提供的坐标,并产生可以基本上模仿主体(例如,运动员106)的运动的3D模型。在一些实施例中,游戏引擎可以使用骨架,骨架可以从托管游戏引擎的服务器的存储器(例如,图2中所示的服务器110的存储器216)中检索,并且运动捕捉数据的点可以映射到沿着骨架的对应点。例如,游戏引擎112可以包括可以与四足主体(例如,马、狗等)一起使用的四足骨架、与两足主体(例如,人类)一起使用的两足骨架、与汽车主体一起使用的汽车骨架等。游戏引擎112还可以包括可用于估计主体的未知运动数据的物理模块和机器学习(ML)功能。例如,如果已知髋部和膝盖运动,但脚运动未知,则物理引擎可以基于已知的髋部和膝盖运动预测脚的运动,并且预测的脚的运动可用于渲染脚运动。游戏引擎112可以将三维模型的运动数据流式传输到其他系统、服务器或客户端。然而,在一些实施例中,如上所述,流式传输关于三维模型的高保真运动数据可能会带来计算成本和网络成本,并且可能限制游戏或虚拟环境的功能。按照一些实施例,游戏引擎可被配置为流式传输与主体106的运动关联的位置数据和旋转数据,包括位置坐标和旋转坐标,这些数据可以包括比三维模型少得多的数据。坐标可以按照已知的压缩算法进行压缩,并且可以提供给系统和客户端,所述系统和客户端可以使用流式位置数据为其重建3D模型,并且流式传输用于3D模型的位置数据。
在一些实施例中,代替无损压缩技术或除了无损压缩技术之外,本文中描述的(例如,在游戏引擎112中实现的)机制可以实现有损压缩技术(例如,其中数据被省略并且在解压缩后不恢复到其原始形式的压缩)。例如,本文中描述的机制可以基于数据量以及计算约束和网络约束来选择要发送的数据。例如,如图所示,可以针对沿着运动员的身体106的8个点108捕捉运动数据,但是在一些情况下,流式传输所有8个点108的坐标会对下游系统和客户端的渲染速度产生负面影响。在一些实施例中,可以针对不止一个主体捕捉运动捕捉数据,并且主体数量的增加会增加要流式传输的数据的数量,这会进一步对下游系统和客户端的渲染速度产生负面影响。在一些实施例中,游戏引擎可以选择点108的子集以发送到下游系统,这可以便利供下游系统消耗的运动数据的流式传输。在一些实施例中,可以针对沿着主体的身体的多达32个点,或者多达64个点,或者多达100个点,或者多达200个点,或者多达360个点,或者不止360个点,捕捉运动捕捉数据。
在包括如上所述的一些实施例中,服务器110可以与不在现场的服务器或设备通信(例如,未包括在具有服务器110的LAN中的设备,或者以其他方式位于离服务器110太远之处而无法与服务器110有线连接,或通过Wi-Fi、对等5G网络等进行通信的设备)。如进一步图解所示,可以设置网络114,网络114可以可操作地连接服务器110和下游系统,如图所示,下游系统可以包括托管游戏托管平台118(例如,可以分发场景中的各种角色的运动数据、进行同步等的游戏引擎)的专用服务器116,以及托管离场游戏引擎124的用户(例如,客户端)设备120。下游设备116、120可以消耗来自服务器110的数据,或者以其他方式使用通信网络114与服务器110通信,在一些实施例中,通信网络114可以是广域网(“WAN”),比如因特网。
在一些实施例中,服务器116可以基本上类似于服务器110,并且可以提供类似的能力。例如,如图所示,服务器116可以托管可以类似于游戏引擎112的游戏托管平台118。在一些实施例中,服务器116可以消耗位置数据,包括由服务器110和关联的游戏引擎112通过通信网络114流式传输的压缩的运动数据坐标。在游戏托管平台118,压缩的位置数据可以被解压缩,并被分配给骨架网格,以在服务器116生成主体106(例如,运动员106)的运动的3D模型。在一些情况下,骨架网格和数字身体存储在服务器116的存储器中,并由游戏托管平台118访问,以与流式位置信息关联。在一些实施例中,服务器116可以从服务器110接收要与流式位置数据关联的骨架网格。例如,游戏引擎112可以在服务器116与服务器110连接时,或者应服务器116的请求(例如,通过应用编程接口(API)调用)提供与某些流式数据关联的骨架网格。
在一些实施例中,系统100还可以包括用户设备120,用户设备120可以允许用户实时沉浸式体验由运动捕捉系统102捕捉的运动,并且还可以允许用户在三维中体验捕捉的运动。在图解所示的实施例中,用户设备120包括虚拟现实头显120,用户可以佩戴该头显以产生用户位于虚拟环境内的错觉。在一些实施例中,用户设备可以是混合现实头显、增强现实头显、任何头戴式显示器、投影仪、移动设备(例如智能电话机、平板计算机等)的屏幕、计算机监视器、电视机屏幕或可用于显示流式内容的任何其他设备。用户设备120可以连接到通信网络114,因此可以与服务器110和/或116通信。在一些实施例中,用户设备可以流式传输三维运动数据(例如,进行主体106的运动的三维模型),并且可以基于该数据向用户渲染和显示场景。例如,用户设备120可以向用户显示主体106的三维表示122。用户设备120可以从服务器110和/或116流式传输三维数据。在一些实施例中,托管现场游戏引擎的现场服务器(例如,服务器110)可以进行与具有游戏托管平台(例如,图1中所示的游戏托管平台118)的专用服务器相同的功能,并且用户设备可以确定与现场服务器和专用服务器的接近度,并且可以连接到最接近用户的服务器,以减少源于从远程服务器流式传输三维内容的时延和性能问题。在一些实施例,包括如后所述的实施例中,用户可能期望体验从多个运动数据捕捉系统捕捉的运动数据,并且可以连接到聚合来自多个运动信息捕捉系统的运动数据的服务器(例如,服务器116)。在一些情况下,特定的虚拟现实体验或游戏可以托管在服务器上,因此用户可以选择从其流式传输三维数据的特定服务器。
图2是图解说明系统100的示例硬件配置的示意图,如图所示,包括运动捕捉系统102、现场游戏引擎服务器110、通信网络114、远程游戏引擎服务器116和客户端设备120。
如图2中进一步所示,运动捕捉系统102可以包括处理器202、存储器204、传感器206(例如,摄像头104)和通信系统208。传感器206可以是任何传感器或传感器的组合,它可被配置为单独地或与来自其他传感器的数据结合地捕捉运动数据,如上所述。在一些实施例中,处理器202可以是任何适当的硬件处理器或处理器的组合,比如中央处理单元(CPU)、图形处理单元(GPU)、加速处理单元(APU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、它们的组合等。
在一些实施例中,存储器204可以包括可用于存储指令、值、配置等的任何适当的一个或多个存储设备,所述指令、值、配置等例如可由处理器202用于处理来自传感器的运动数据。例如,存储器204可以包括可由操作员用于配置运动数据捕捉系统的软件、用于处理传感器206获得的图像并由此计算坐标的ML模型等。存储器204可以包括任何适当的易失性存储器、非易失性存储、非临时性计算机可读介质、存储装置或它们的任何适当组合。例如,存储器204可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、一个或多个闪存驱动器、一个或多个硬盘、一个或多个固态驱动器、一个或多个光盘驱动器等。在一些实施例中,存储器204可在其上编码有用于控制运动数据捕捉系统102的操作的计算机程序。
在一些实施例中,通信系统208可以包括用于向现场游戏引擎服务器110,或者通过通信网络114和/或任何其他合适的通信网络传送信息的任何合适的硬件、固件和/或软件。例如,通信系统208可以包括一个或多个收发器、一个或多个通信芯片和/或芯片组等。在更具体的例子中,通信系统208可以包括可用于建立Wi-Fi连接、蓝牙连接、蜂窝连接、以太网连接等的硬件、固件和/或软件。在一些例子中,包括主体的位置坐标和旋转坐标的运动捕捉数据可以通过通信系统208流式传输到服务器110。在一些例子中,通信系统208可以与通信网络114通信,并且可以向通信网络114流式传输运动数据、接收指令或配置、接收固件或软件更新等。
如图2中进一步所示,现场游戏引擎服务器可以包括处理器210、输入端212、通信系统214、存储器216和显示器218。处理器210可以大致类似于处理器202,并且可以包括关于处理器202描述的任何所述设备或系统。类似地,通信系统214可以大致类似于所描述的通信系统208,并且用于存储器216的硬件可以大致类似于用于存储器204的硬件。在一些实施例中,显示器218可以包括任何合适的显示设备,比如计算机监视器、触摸屏、电视机、投影仪、智能电话机、虚拟现实头显、增强现实眼镜等。在一些实施例中,输入端212可以包括可用于接收用户输入的任何合适的输入设备和/或传感器,比如键盘、鼠标、触摸屏、麦克风、摄像头等。在一些实施例中,可以从现场游戏引擎服务器110中省略显示器218和/或输入端212。
存储器216还可以包括用于游戏引擎112的软件的至少一部分,包括骨架网格、压缩算法、渲染算法等。处理器可以与存储器216通信,以检索存储在存储器216上的指令和对象,以进行通过通信系统214从运动捕捉系统接收的运动捕捉数据的处理,并通过通信网络114将压缩的位置数据、未压缩的位置数据、三维渲染、骨架网格等流式传输到下游设备。通信系统214可以与通信网络114通信,以向与其连接的其他设备发布数据或者从与其连接的其他设备接收数据。如图所示,相对于通过通信网络114(它可以是WAN)与设备的连接,运动捕捉系统102和现场游戏引擎服务器110之间的通信可以是相对直接的。更直接的连接(例如,通过以太网或LAN)可以改善现场游戏引擎服务器110和运动捕捉系统102之间的网络带宽和/或连接速度。在一些情况下,对于运动捕捉系统102和现场游戏引擎服务器110之间的通信,这可以允许较低的延迟,与如果运动捕捉系统102和现场游戏引擎服务器110通过WAN(例如,通信网络114)进行通信所能实现的位置数据的流式传输相比,这可以导致来自现场游戏引擎服务器的位置数据的保真度更高的流式传输。
如图所示,远程专用服务器116可以通过通信网络114与现场游戏引擎服务器110通信。远程专用服务器116可以包括处理器220、输入端222、通信系统224、存储器226和显示器228。用于处理器220、输入端222、通信系统224、存储器226和显示器228的硬件可以大致分别类似于用于处理器210、输入端212、通信系统214、存储器216和显示器218的硬件。
由专用服务器116托管的游戏托管平台118可以通过通信系统224从现场游戏引擎服务器110接收位置数据(例如,位置坐标和旋转值)。位置数据可以在处理器220进行处理。在一些例子中,位置数据可以在处理器220被解压缩,并且在一些例子中,位置数据可以由处理器220解密。处理器220还可以与存储器226通信并从存储器226接收指令,存储器226可以存储用于远程游戏托管平台118的软件,所述软件可以包括用于解压缩(例如,使用无损解压缩和/或使用推断在有损压缩中省略的数据的技术)、解密和处理位置数据(例如,从一个或多个现场游戏引擎服务器接收的位置数据)的软件。
此外,如图2中所示,客户端设备120可以通过通信网络114可操作地连接到现场游戏引擎服务器110和/或远程游戏引擎服务器116。远程游戏引擎服务器116可以包括处理器230、输入端232、通信系统234、存储器236和显示器238。用于处理器230、输入端232、通信系统234、存储器236和显示器238的硬件可以大致分别类似于用于处理器210、输入端212、通信系统214、存储器216和显示器218的硬件。如参考图1所述,客户端设备可以(例如,通过通信系统234)从现场游戏引擎服务器110和/或专用服务器116接收流式位置数据(例如,主体106、其他主体、角色、对象等的位置数据),并且可以渲染主体的3D模型(例如,使用存储在存储器236中的骨架网格和数字骨架),并通过显示器238向用户显示渲染的数据。在例子中,显示器238可以是头戴式显示器(例如,虚拟现实头显、增强现实头显等),因为可以有利地允许用户沉浸式体验包括进行主体106的运动的三维模型的虚拟环境。然而,显示器238可以包括向用户呈现视觉数据的任何其他技术或技术的组合。
图3图解说明按照本发明的一些实施例的流式传输系统中的设备之间的示例数据流。如图3中所示并且如上所述,在框302,运动数据捕捉系统102可以确定位置值和旋转值。位置值和旋转值可以是与主体(例如,运动员106)或多个主体的移动关联的坐标,并且可以从运动数据捕捉系统的传感器(例如,摄像头104)所捕捉的视觉数据中确定、计算或导出。如在框302所示,确定位置值和旋转值可以包括将机器学习模型应用于视觉数据,以识别沿着主体的身体的点并跟踪所识别的点的运动。在一些情况下,沿着主体身体的点的识别可以包括识别物理地定位于所述点处的反射标记,或者以其他方式从位于要跟踪的点处的传感器接收数据,并针对其确定位置数据和旋转数据。位置值的坐标可以包括表示沿着不同轴的固定点的数值。例如,如图1中图解所示,x轴可以指示横向位置,y轴可以指示纵向位置,而z轴可以指示相对于原点的垂直位置。在一些实施例中,轴可以以其他方式标记。例如,在一些例子中,z轴指示纵向位置,而y轴指示垂直位置。如果用户的身体上的点位于原点,则该点的位置数据可以包括沿着x、y和z轴中的每一个的值0。在一些实施例中,点相对于原点的位移坐标可以是浮点值,因此可以以十进制格式提供(例如,用一串二进制数编码)。例如,在一些实施例中,可以测量位置,并且可以以英寸、英尺、米、厘米等为单位提供坐标,并且坐标值可以包括精确到任何合适的小数点数(例如,精确到一亿分之一、千万分之一、百万分之一、十万分之一、万分之一、千分之一、百分之一或十分之一英寸、英尺,米,厘米等)的沿轴测量的距离。在一些实施例中,可以相对于另一个点确定一个点的位置坐标。例如,手的坐标可以指示手相对于胸骨或沿着主体的身体的其他点的位移。在一些实施例中,可以用球坐标系测量和提供旋转值,球坐标系可以指定与原点的距离(例如,“rho”或ρ)、与第一轴的角度偏移(例如,“theta”或θ)以及与第二轴的角度偏移(例如,“phi”或)。在一些例子中,运动数据可以以向量形式提供,并且可以包括方向数据或速度数据。例如,除了位置坐标之外,运动数据还可以包括对应点在一个或多个方向上的当前线速度或旋转速度。
运动数据捕捉系统可以向现场游戏引擎服务器110提供(例如,流式传输)位置值和旋转值,现场游戏引擎服务器110可以对这些值进行进一步处理,并将运动数据流式传输到下游系统。例如,在框304,服务器110可以将骨架网格分配给从运动数据捕捉系统102接收的旋转值和位置值。骨架网格可以数字地近似主体的身体,并且位置值和旋转值可以被分配给主体的身体上的点,以产生反映主体的运动的数字身体的运动。例如,数字网格可以包括人类的数字表示,其中可动部位和关节对应于人体的可动部分。在从系统102接收的坐标当中,可以是主体的手的位置数据和主体的肘部的位置数据。服务器110可以使主体的手的位置数据与沿着包括数字人体的骨架网格的手的数字表示关联,并且相应地,可以使主体的肘部的位置坐标与沿着骨架网格的肘部的数字表示关联。因此,骨架网格的手可以被渲染为与主体的手一致地移动,并且骨架网格的肘部可以被渲染为与主体的肘部一致地移动。在一些情况下,服务器110分析从系统102接收的坐标,并基于坐标的点之间的位置关系分配骨架网格。例如,服务器110可以确定由系统102提供的坐标对应于四足动物(例如,马),并且可以为数据分配四足动物骨架网格。在另一个例子中,服务器110可以确定由系统102提供的坐标对应于两足动物(例如,人类),并且可以为数据分配两足骨架网格。在一些实施例中,从系统102接收的数据可以包括关于骨架关系的信息,并且可以指示某些点与同一主体关联。在一些例子中,可以从用户接收对骨架网格的选择(例如,经由用户界面),并且可以将选择的骨架网格分配给运动数据。
在一些情况下,服务器110可以计算与流式数据关联的缩放因子。例如,服务器110可以在存储器(例如,存储器146)中包括与从系统102接收的位置数据关联的单个双足(例如,人类)骨架网格。骨架网格可以代表特定身高的人类(例如,4英尺高的人、5英尺高的人、6英尺高的人或任何其他高度的人),并且所述人类的特征可以具有特定身高的英尺的人的平均尺寸或典型尺寸。从系统102接收的数据可以包括5英尺高的主体和6英尺高的主体的位置数据。6英尺高的主体的坐标可以直接映射到关联的骨架网格上,因为骨架网格的尺寸近似等于6英尺高主体的尺寸。然而,如果将5英尺高的主体的坐标直接映射到骨架网格上,则坐标将与骨架网格的部分不正确地关联。与主体的手对应的坐标可以沿着骨架网格的手臂等定位。因此,可以针对骨架网格计算缩放因子,以使网格适应不同大小的主体的坐标。在一些实施例中,可以针对单个主体计算多个缩放因子(例如,用于手臂的缩放因子、手和肘部之间的距离等)。在一些实施例中,可以将缩放因子应用于接收的位置坐标,并且可以缩放坐标以匹配给定的骨架网格。在一些例子中,来自现场游戏引擎服务器110的流式数据不包括缩放信息,而只包括原始位置数据。缩放信息可以在专用服务器116处计算,并且专用服务器116可以在虚拟环境内缩放骨架网格。
一旦骨架网格被分配给位置值和旋转值,现场游戏引擎服务器110就可以将与位置数据关联的网格传送到下游系统,如图所示,包括远程游戏引擎服务器116。因此,远程游戏引擎服务器116可以被提供为解释和渲染由现场游戏引擎服务器110提供的位置值和旋转值所需的信息,并正确地使运动坐标与骨架网格关联。
在框306,现场游戏引擎服务器可以压缩从系统102接收的位置值和旋转值。在一些实施例中,这些值是根据传统的无损压缩技术直接压缩的。另外,在一些实施例中,压缩运动数据(例如,位置值和旋转值)可以包括减小数据的总大小(例如,使用有损压缩技术)。例如,可以通过降低数据的精度来减小要流式传输的数据的大小。作为另一个例子,可以通过减少要流式传输的数据点的数量(例如,省略与主体身体的某个部位对应的一个或多个数据点的传输)来减少要流式传输的数据的大小。例如,当数据太大而无法流式传输时,可以通过对数据的值进行舍入或截断来降低坐标数据的精度(例如,可以将测量值从万分之一厘米舍入或截断到十分之一厘米)。此外,可以减少数据点的数量,以减少流式传输运动数据所需的带宽,减少存储流式运动数据所需的存储器,并减少处理流式运动数据所需的计算资源。例如,运动数据捕捉系统通常可以为沿着主体的身体的第一数量的点提供第一数量的坐标值,并且网络约束或其他计算约束可以在现场游戏引擎服务器110和远程游戏引擎服务器116之间施加功能限制,使得只有阈值数量的坐标值可以从服务器110流式传输到服务器116,第一数量的坐标值小于阈值数量的坐标值。在一些实施例中,在使用有损压缩技术减少数据之后,可以对数据进行无损压缩。当系统102提供两个主体的位置值和旋转值时,这两个主体的坐标值的组合数量可以超过阈值数量,服务器110可以选择将哪些点包括在发送到远程服务器116的位置值中,并且可以省略两个主体中的一者或两者的若干坐标值,使得要流式传输的坐标值的数量小于阈值数量。在一些情况下,可以基于从其他点推断点的能力,来选择要被省略的点的坐标值。例如,ML技术可以识别身体部位(例如,沿着主体的点)之间的关系,并且可以提供模型以基于第一点或一组点的位置来预测第二点的位置。
压缩的位置值和旋转值可以被流式传输到专用服务器116,以允许游戏托管平台118处理位置值和旋转值。例如,游戏托管平台118可以使用所提供的骨架网格和运动数据在虚拟环境内定向数字骨架或骨架网格,并且可以进一步在虚拟环境内定向与虚拟环境中的数字身体对应的其他数字对象(例如,角色、化身、数字结构等)。专用服务器116可以为其用户提供用于沉浸式体验的虚拟环境,并且可以可操作地连接到用户设备120(例如,客户端),以将虚拟环境的信息流式传输到用户设备120,包括可以与主体的运动数据对应的骨架网格的运动数据。在一些实施例中,如在框310所示,来自用户设备120的数据可用于构建虚拟环境。例如,用户设备可以包含(例如,在图2所示的存储器236中)用户的化身(例如,与用户相关联的三维角色),并且用户设备可以向服务器116提供与化身关联的信息,服务器116可以相对于虚拟环境中的骨架网格、其他化身以及数字对象和结构在虚拟环境内定位化身。服务器116还可以从客户端设备120接收其他信息,包括与要渲染的虚拟环境关联的设定和配置、视觉信息等。
在框312,远程游戏引擎服务器可以使用骨架网格、位置值和旋转值以及客户端化身和输入来生成数字对象。生成数字对象可以包括将数字对象定位在虚拟环境内。在一些实施例中,生成的数字对象可以包括系统102所监测的每个主体的3D数字身体的信息。生成数字对象还可以包括使位置数据和旋转数据与沿着数字身体的点关联,以便3D数字身体在虚拟环境中的移动反映主体在物理环境中的移动。此外,可以将用户的化身或与来自用户的输入相关的其他对象生成到虚拟环境中。在一些实施例中,生成的化身(例如,基于在框310从客户端设备120接收的信息)可以包括关于与化身关联的3D模型的信息,并且可以允许与专用服务器通信的设备为其他用户渲染化身。数字环境的位置信息可以被流式传输到用户设备120。
在框314,托管在用户设备120上的游戏引擎124(即,如图1中所示)可以接收虚拟环境的流式信息,所述流式信息可以包括具有虚拟环境中的数字对象的位置坐标的运动数据。数字对象可以包括与主体106或运动数据捕捉系统(例如,运动数据捕捉系统102)针对其捕捉运动数据的其他主体对应的数字骨架。在一些实施例中,游戏引擎124可以通过将数字网格应用于数字骨架来基于数字骨架渲染数字身体。渲染的数字身体可以被输出到显示器238,以允许用户沉浸式地或以其他方式体验数字环境。游戏引擎124可以从用户的视角渲染虚拟环境,并且可以在用户的视角改变时更新虚拟环境。如果用户的位置在虚拟环境内改变,则用户设备可以向专用服务器116提供用户的位置信息(例如,在框310,可以向专用服务提供用户的化身的位置数据),以允许其他用户设备在虚拟环境内正确地渲染用户的化身。游戏引擎124可以在虚拟环境内渲染主体106的数字身体,并在显示器238显示包括数字身体的虚拟环境,使得用户可以实时地或近乎实时地(例如,在三维环境中)沉浸式地体验或可视化一个或多个主体的移动。
图4是示出按照一些实施例的由现场游戏引擎服务器(例如,服务器110)进行的示例处理400的流程图。图解所示的处理400可以由现场游戏引擎服务器(例如,服务器110)进行,以实现运动数据,包括位置值和/或旋转值的流式传输,从而为用户产生沉浸式三维体验。如图所示,在框402,服务器110可以从运动数据捕捉系统(例如,运动数据捕捉系统102)接收流式运动数据。接收的流数据可以包括对其捕捉运动数据的主体的各个点的位置坐标,并且还可以包括该主体的相同点的旋转坐标。在一些实施例中,流式数据可以包括缩放信息。在一些实施例中,流式运动数据可以包括使给定点的坐标与该点所在的特定主体或身体相关联的信息。
在框404,可以将骨架网格分配给接收的运动数据,并且可以将某些点(例如,点108)的坐标分配给沿着骨架网格的对应点。在一些实施例中,在404,现场游戏引擎可以格式化从运动捕捉系统接收的运动数据,以在多人游戏环境中使用。例如,来自运动捕捉系统的运动数据可以与游戏对象(例如,角色、无生命对象等)的不同部分关联。
在框406,现场游戏引擎服务器110可以将与运动数据关联的骨架网格发送到下游设备(例如,专用服务器116和/或客户端设备120),以使下游服务器能够在虚拟环境中生成与针对其捕捉运动数据的一个或多个主体对应的数字对象。在一些实施例中,游戏引擎服务器110可以直接将骨架网格发送到客户端设备120,并且在现场游戏引擎服务器110和客户端设备120之间不设置下游服务器。在一些实施例中,骨架网格和/或数字骨架存储在下游客户端的存储器中,或者可以由客户端设备分配,并且游戏引擎服务器可以发送可以允许骨架网格与流式运动数据关联的数据。在一些实施例中,框406是可选的,并且将运动数据流式传输到下游服务器不需要与数字骨架和骨架网格相关的关联信息。
在框408,现场游戏引擎可以压缩运动数据。运动数据可以按照如上所述的任何已知压缩方法或算法进行压缩。如上另外所述(例如,关于图3中所示的框306所述),压缩运动数据可以包括在流式传输到下游设备(例如,下游服务器和/或客户端设备)之前,减少运动数据的量和精度中的一个或多个。
在框410,现场游戏引擎服务器110可以向下游设备发送(例如,流式传输)运动数据,包括一个或多个主体的压缩位置坐标或旋转坐标。在一些实施例中,可以使用飞行中加密(例如,使用传输层安全(“TLS”)协议)来加密正在流式传输的数据。在一些实施例中,流式数据可以包括可以使下游客户端验证其完整性的散列。在一些实施例中,流式数据可以包括坐标或骨架网格的缩放信息,并且还可以包括将特定坐标数据与对应的骨架网格或其上的位置链接起来的数据。在一些实施例中,缩放信息不与运动数据一起提供(例如,流式传输)。
在一些实施例中,现场游戏引擎112可以经由任何适当的网络通知调用(例如,向专用服务器)输出运动数据。例如,现场游戏引擎112可以使用远程过程调用(RPC)将运动数据输出到专用服务器116。
在框412,现场游戏引擎服务器110可以接收来自下游设备(例如,下游服务器116或客户端设备120)的输入,所述输入可以指示运动数据被流式传输到的游戏或虚拟环境的状态。在一些例子中,下游客户端的输入可以指示用户在虚拟环境中的移动。例如,用户可以调整虚拟环境内的位置,使得只有一个主体在用户的视野内,或者只有主体的一部分在用户的视野内。因此,来自下游客户端的输入可由现场游戏引擎服务器112消耗,并且在一些情况下可用于选择沿着骨架网格的点的坐标,以包括在流式传输到下游客户端的运动数据中。
在框412,处理400可以连续地评估在框412接收的输入,并且接收的输入可以在框410用于确定要被压缩或者从流式传输中排除的数字身体的运动数据。例如,要压缩或排除的运动数据可以是可能在要渲染和显示给用户的场景之外的数字身体的运动数据。在一些实施例中,要流式传输的运动数据可以被限制为用户在给定时间帧内可以观看的运动数据,前提是用户在虚拟环境内的位置。
图5是示出按照一些实施例的可以由远程游戏引擎服务器(例如,图1中所示的托管游戏托管平台118的服务器116)进行,以向用户提供流式沉浸式数字体验的示例处理500的流程图。处理500可以由托管游戏托管平台的专用服务器或者现场游戏引擎服务器下游的其他服务器(例如,托管游戏托管平台118的专用服务器116,或者现场游戏引擎服务器110的任何下游客户端)执行。
在框506,专用服务器可以从现场游戏引擎服务器接收骨架网格,运动数据的位置坐标和旋转坐标可以与该骨架网格关联。在一些实施例中,远程游戏引擎服务器可以包括存储的骨架网格,并且可以进行运动数据到存储的骨架网格的分配,而不需要从现场游戏引擎服务器接收骨架网格。在一些实施例中,框506的进行可以是可选的,并且专用服务器可以在其存储器中包括骨架网格,并进行运动数据到骨架网格的分配,而不需要从现场游戏引擎服务器接收骨架网格、数字骨架或其信息。在一些情况下,骨架网格可以由系统的用户或操作员提供给服务器。在一些情况下,骨架网格可以存储在存储器中,并且可以手动分配(例如,响应于来自用户的输入)到一个或多个位置坐标。
在框508,专用服务器(例如,图1和图2中所示的专用服务器116)可以从客户端设备接收对象信息,在一些情况下,该对象信息可以包括用户的化身。在一些实施例中,附加对象可以由客户端设备提供给专用服务器,以便在虚拟环境中生成(例如,产生和渲染)。在一些实施例中,不从客户端设备接收对象或化身信息。
在框510,专用服务器可以将与接收的骨架网格和从客户端设备接收的数字对象信息对应的对象生成到虚拟环境中。在一些示例中,生成对象可以包括在虚拟环境中创建对象的三维表示。在一些情况下,可以在生成数字对象时将附加信息层叠在数字对象上。例如,虚拟环境可以包括足球比赛,并且从现场游戏引擎服务器接收的骨架网格可以对应于比赛中的球员。生成球员的骨架网格可以包括例如将球员定位在虚拟足球场上的虚拟环境内。在一些实施例中,可以将用户的化身或用户观看虚拟环境的位置生成到虚拟环境中,并且用户的化身和/或位置可以相对于与主体对应的数字对象位于虚拟环境内。
在框512,专用服务器可以从现场游戏引擎服务器接收针对其捕捉运动数据的主体的运动数据。在一些实施例中,接收的运动数据可以包括压缩的运动数据。例如,运动数据可以是使用无损压缩技术压缩的运动数据。在一些实施例中,由专用服务器接收的运动数据可以使用有损压缩技术进行压缩,这可以包括例如接收主体的运动数据的点的子集。在一些实施例中,运动数据的有损压缩可以包括接收被截断或以其他方式比运动捕捉系统(例如,图1和图2中图解所示的系统102)捕捉的运动数据更不精确的数据点。在一些实施例中,用于运动数据的流式传输的有损压缩可以包括以较低的采样率接收运动数据。在一些实施例中,流式传输到专用服务器的数据不被压缩,从而可以从处理500中省略框510。
在框514,专用服务器可以解压缩运动数据。可以使用已知的解压缩技术(例如,用于无损压缩技术的解压缩)来进行解压缩。在一些实施例中,在框514,处理500可以推断从接收自现场游戏引擎服务器的压缩运动数据中省略的数据点(例如,使用沿着身体的点之间的已知关系,用于从在专用服务器接收的点推断省略的点的ML技术)。在一些实施例中,流式传输到专用服务器的数据不被压缩,从而可以从处理500中省略框512。
在框516,专用服务器可以基于在框512接收的运动数据在虚拟环境中定位数字对象,基于解压缩的运动数据和生成的数字对象在虚拟环境中渲染动态数字对象。定位动态数字对象可以包括使特定坐标与沿着骨架网格的特定点相关联,将骨架网格定位在虚拟环境内。在一些情况下,专用服务器可以推断其中运动数据不完整或缺失的数据。例如,在一些情况下,如上所述,可以从发送到专用服务器的运动数据中省略某些坐标,以便减少时延或以其他方式保持或提高流式传输系统的性能。在一些实施例中,专用服务器可以推断数字对象的对其省略了位置坐标或旋转坐标的部位的运动。在一些实施例中,包括与现场游戏引擎服务器的连接中断的情况,运动数据的接收被延迟的情况,专用服务器可以预测数字对象的运动。该预测可以部分基于数字对象的先前动态,并且可以为观看的用户提供相对不间断的观看体验。当从现场游戏引擎服务器接收到进一步的运动数据时,进一步的运动数据可以覆盖数字对象的预测运动,并且虚拟环境内的数字对象的位置数据可以返回到可以反映针对其捕捉运动数据的主体的运动的状态。
在框518,专用服务器可以将虚拟环境中的对象或数字对象的位置信息流式传输到客户端设备。流式传输的位置信息可以包括虚拟环境内的数字对象的坐标。此外,流式传输的位置信息可以包括在框514解压缩的运动数据。在一些实施例中,专用服务器可以基于计算约束和/或网络约束来选择要流式传输的位置数据。例如,专用服务器可以应用有损压缩技术,如上所述,以保持流式传输位置数据的性能或速度。在一些实施例中,位置数据可以在飞行中压缩(例如,使用TLS)。
在框516,专用服务器可以从客户端设备接收用户输入。在一些实施例中,虚拟环境的一个或多个部分可以是交互式的,并且可以对用户的动作或输入作出响应。例如,用户的移动可能需要改变虚拟环境及其中的对象的定向和渲染,以适应用户的更新的视角。用户输入可以包括用户在虚拟环境内的位置信息。例如,参与共享数字体验,比如与一个或多个其他用户一起观看足球比赛的用户,可以在共享体验中通过化身来表示,这可以便利参与共享数字经验的用户之间的交互。在这样的例子中,用户可能希望改变用户正在体验共享体验的位置。在特定的例子中,用户可以被定位在虚拟看台中观看足球比赛,其中物理足球比赛中的球员在虚拟环境中通过数字对象(例如,身体)来表示,数字对象的移动对应于正在物理世界中进行的足球比赛中的相应足球球员的移动,其中球员和其他对象(例如,球、裁判等)的运动由运动捕捉系统捕捉。从虚拟环境中的该有利位置,所有球员都可以对用户可见。用户可能期望改变位置并从球场上的位置观察比赛,并且可以通过用户输入设备改变他们的视点。专用服务器可以接收用户输入并更新与用户关联的化身在虚拟环境内的位置,并且用户的更新的位置可以流式传输到客户端设备和/或连接到专用服务器的其他客户端设备,这可以便利用户的化身在虚拟环境中的准确放置。
在框522,专用服务器可以将输入传送到现场游戏引擎服务器,该输入可以包括与用户的位置关联的输入。例如,当用户位置的变化改变了用户的场景,或者将用户放置在未包含在先前流式传输的数据中的数字对象附近时,专用服务器可以将输入传送到现场游戏引擎服务器。所述输入可以部分地确定由远程游戏引擎服务器在框512接收的压缩的运动数据的内容。例如,如果没有用户正在观察某些对象,则现场游戏引擎可以从传输中省略与这些对象对应的数据,这可以减少传送到专用服务器的数据量。在一些实施例中,所述输入可用于从由远程游戏引擎服务器在框512接收的压缩的运动数据中删除与特定球员对应的数字对象。在一些实施例中,所述输入可用于将与特定球员对应的数字对象添加到由远程游戏引擎服务器在框512接收的压缩的运动数据中。在一些实施例中,可以从处理500中省略框522。
图6图解说明可以由客户端设备(例如,客户端设备120)执行以流式传输沉浸式数字体验环境(它可以是虚拟现实环境)的内容的处理600。在框602,客户端设备可以连接到游戏服务器,在一些实施例中,所述游戏服务器是相对于运动数据捕捉系统(例如,运动数据捕捉系统102)在现场的游戏服务器(例如,现场游戏引擎服务器110),而在其他实施例中是相对于运动数据捕捉系统在远程的游戏引擎服务器(例如,远程游戏引擎服务器116)。
在框604,数字对象(在一些例子中,包括用户的化身)可以由客户端设备创建或检索(例如,从存储器166),并被发送到游戏服务器以在虚拟环境中生成。将化身和/或其他数字对象生成到虚拟环境中可以包括将化身和数字对象定位在虚拟环境内。
在框606,客户端设备可以接收虚拟环境的流式位置数据,该虚拟环境包括具有与物理空间中的一个或多个主体(例如,主体106)的运动对应的运动的数字身体。流式数据可以包括数字对象的位置数据和旋转数据,以及与主体的运动对应的动态数字对象的流式运动数据(例如,由运动数据捕捉系统102捕捉的运动数据)。在一些实施例中,客户端设备接收的位置数据可以被压缩,并且客户端设备可以对接收的定位数据进行解压缩(例如,使用用于有损和/或无损压缩技术的解压缩技术)。在一些实施例中,在接收到位置数据时,可以对数据进行解密(例如,使用TLS)。
在框608,客户端设备可以基于在框606接收的虚拟环境和其中的数字对象的流式数据,在虚拟环境中渲染数字对象(例如,使用离场游戏引擎124)。渲染动态数字对象可以包括使运动数据的特定坐标与沿着骨架网格的特定点关联,并在与之关联的运动数据的位置坐标或旋转坐标的更新时渲染骨架网格和关联的数字对象的移动。在一些实施例中,渲染虚拟环境可以包括基于对象的位置、骨架、网格、纹理等创建虚拟环境的3D场景的表示,并且创建适合于显示的视觉表示。在一些情况下,托管在客户端设备上的离场游戏引擎可以推断其中运动数据不完整和/或缺失的数据。例如,在一些情况下,如上所述,可以从发送到专用服务器和/或客户端设备的运动数据中省略某些坐标,以减少时延或以其他方式保持或提高流式传输系统的性能。在一些实施例中,离场游戏引擎可以推断数字对象的对于其省略了位置坐标和/或旋转坐标的部位的运动。在一些实施例中,包括与现场游戏引擎服务器的连接中断的情况,运动数据的接收被延迟的情况,或者用户输入(例如,用户的视角的改变)需要在现场游戏引擎服务提供进一步的运动数据之前更新所渲染的数据的情况,远程游戏引擎服务器可以预测数字对象的运动(例如,使用逆运动学技术)。该预测可以部分基于数字对象的先前动态,并且可以为观看的用户提供相对不间断的观看体验。当从现场游戏引擎服务器接收到进一步的运动数据时,进一步的运动数据可以覆盖数字对象的预测运动,并且虚拟环境内的所渲染的对象可以返回到可以反映针对其捕捉运动数据的主体的运动的状态。
在框610,用户设备可以向用户显示(例如,在图2中所示的显示器238)渲染的虚拟环境。虚拟环境可以三维地显示给用户,用户可以从多个视角观看数字对象,包括动态数字对象。在一些情况下,用户可以观看与针对其捕捉运动数据的主体对应的3D数字身体。在一些实施例中,可以显示相对于动态数字对象移动的用户的化身。在一些实施例中,渲染的虚拟环境的显示可以从位于虚拟环境中的虚拟摄像头的视角呈现,所述视角可以由用户调整。显示虚拟环境可以包括基于接收的对虚拟环境的渲染的更新来更新显示。在一些实施例中,必要时,显示虚拟环境的渲染可以包括进行所渲染的虚拟环境中的运动数据的预测。例如,在一些实施例中,包括与游戏引擎服务器的连接中断的情况,来自游戏引擎的流式传输被延迟的情况,或者用户输入(例如,用户视角的改变)需要渲染数据的更新的情况,客户端设备可以预测虚拟环境的状态并将预测的虚拟环境渲染给用户,直到从游戏引擎获得进一步的数据为止。因此,即使在尚未获得虚拟环境中的数字身体的权威运动数据的情况下,客户端设备对运动数据的预测(例如,使用逆运动学技术和/或任何其他适当的技术)也可以用于提供相对不间断的用户体验。
在框612,客户端设备可以接收来自用户的输入。来自用户的输入可以影响虚拟环境的状态或虚拟环境的视觉渲染。例如,如上所述,当用户在虚拟环境中改变视角时(例如,在将虚拟现实头显戴在用户的头部时,通过转动用户的头部),离场游戏引擎可以更新虚拟环境的渲染。客户端设备可以继续接收输入,将输入提供给离场游戏引擎,并接收虚拟环境的更新的渲染,直到用户退出虚拟环境(例如,通过移除虚拟现实头显、完成游戏等)为止。在一些实施例中,输入可以包括用户佩戴的耳机的定向,并且响应于头部位置的变化,处理600可以在框608更新渲染,以从调整后的视角显示虚拟环境。在一些实施例中,可以通过图2中所示的输入端232接收输入。在一些实施例中,输入可以对应于用户在虚拟环境内的移动。
图7是按照一些实施例的用于使用来自多个地理位置的流式位置数据来提供沉浸式虚拟现实的系统的示意图。在一些实施例中,可以在不同的地理位置捕捉主体的运动,并将其流式传输到单个虚拟环境。因此,该虚拟环境内的用户可以在虚拟环境中彼此接近地观察与不同地理位置的主体对应的数字身体。在一些实施例中,不同地理位置的现场游戏引擎服务器可以将位置数据流式传输到单个远程游戏引擎服务器,以将与物理对象对应的数字身体渲染到同一虚拟环境中。例如,图7图解说明包括位于不同地理位置的两个运动数据捕捉系统702a、702b的流式传输系统700。在一些实施例中,流式传输系统可以包括位于不止两个地理位置的不止两个运动数据捕捉系统。运动数据捕捉系统702a、702b可以将主体706a的位置数据流式传输到现场游戏引擎服务器710a。在一些实施例中,运动数据捕捉系统可以针对不止一个主体捕捉运动数据。因此,如图所示,运动数据捕捉系统702b可以将与主体706b、707的运动对应的位置数据流式传输到现场游戏引擎服务器710b。
如图7中进一步所示,每个现场游戏引擎服务器710a、710b可以将位置数据(例如,与主体的点关联的位置坐标和/或旋转坐标)流式传输到专用服务器716。专用服务器716可以处理来自服务器710a、710b中的每一个的位置数据,并且可以将主体放置在公共虚拟环境780中,公共虚拟环境780可以包括对应于主体706a的数字身体782、对应于主体706b的数字身体784和对应于主体707的数字身体785。用户786可以虚拟地位于虚拟环境780内(例如,虚拟摄像头可以为用户提供虚拟环境内的视角,或者用户的化身可以位于虚拟环境中)。专用服务器716可以将虚拟环境780的位置信息流式传输到客户端设备718,客户端设备718可以渲染虚拟环境780并向用户786显示虚拟环境780。用户786可以在客户端设备718同时观看所有数字身体782、784、785的运动。在一些实施例中,现场游戏引擎服务器710a、710b之一可以将位置数据流式传输到专用服务器710a和710b,并且接收专用服务器可以将数字身体782、784、785定位在虚拟环境780中,并将虚拟环境的位置数据流式传输到客户端设备718。在一些实施例中,虚拟环境的观众(例如,客户端设备718的用户)可以是运动数据捕捉系统702a、702b中的一个或全部的主体。例如,主体706a可以佩戴头显,所述头显可以包括可以与远程游戏引擎服务器716通信的客户端设备,并且可以向主体706a显示由此渲染的虚拟环境。
在一些情况下,运动捕捉系统的主体(例如,主体706a、706b和707)可以观看与他们的移动对应的运动数据被流式传输到其中的虚拟环境。例如,继续参考图7,客户端设备718可以是一个或多个主体706a佩戴的头戴式显示器。因此,主体706a可以观看与虚拟环境780内的其他主体706b、707对应的数字身体784、785,同时主体706a的运动数据也被流式传输到虚拟环境780中。在例子中,运动捕捉系统(例如运动捕捉系统702a、702b)的所有主体都可以查看(例如,使用头戴式显示器)虚拟环境内的其他主体的数字身体的运动。在一些情况下,允许主体查看其运动数据也被流式传输到其中的虚拟环境的显示器可以便利在不同位置的主体之间的协作。在例子中,在第一运动捕捉位置的演员可以通过使用允许虚拟环境对每个演员可见的显示器(例如头戴式显示器),与在另一个运动捕捉系统的演员协作来捕捉动画电影的运动数据。在另一个例子中,虚拟环境可以是视频游戏(例如,体育视频游戏、战斗视频游戏、赛车视频游戏),其中玩家处于不同的运动捕捉位置。视频游戏中的玩家可以使用头戴式显示器观看视频游戏,同时他们的运动也被捕捉并流式传输到视频游戏中,并且可以与处于其他运动捕捉位置的其他玩家对应的数字身体进行交互。
在一些例子中,用于提供沉浸式数字体验的系统可以进行接收的位置数据的平衡。例如,可以基于约束接收更多或更少的位置坐标或将其流式传输到给定系统,这些约束可以包括所需的渲染质量、网络约束、虚拟环境中的数字身体的数量等。在一些情况下,计算机系统(例如,专用服务器716、现场游戏引擎服务器710、710b或客户端设备718中的任何一个或全部)可以基于虚拟环境中的数字身体的数量来确定要流式传输的位置坐标的数量。例如,网络约束和计算约束可以在为虚拟环境保持最低渲染质量的同时,限制系统处理位置坐标的能力。在例子中,系统在给定时间可能只能处理60个位置坐标。当单个数字身体(例如,数字身体782)被流式传输到虚拟环境(例如,专用服务器716)中时,虚拟环境可以使用单个数字身体的60个位置坐标在虚拟环境中渲染数字身体。当环境包括另外两个数字身体(例如,数字身体784、785)时,针对每个身体处理的位置坐标的数量可以是20个位置坐标,并且可以降低渲染的分辨率以容纳额外的数字身体。在一些应用中,一些数字身体可以比其他数字身体获得更高的优先级。例如,虚拟环境可以是手术模拟,手术模拟可能对于与患者对应的数字身体和与进行模拟手术的外科医生对应的数字身体的多个部分要求高分辨率,但是对于虚拟环境中的观察者要求较低的分辨率。因此,如果达到约束(例如,虚拟环境包括最大数量的位置坐标),则实现虚拟环境的服务器(例如,专用服务器716)上的处理可以降低较低优先级数字身体的总分辨率,以维持较高优先级数字身体的分辨率。
在一些情况下,数字身体的优先级可以由虚拟环境的管理员、虚拟环境的用户确定,或者优先级可以在虚拟环境的设定中设定。例如,在一些情况下,虚拟环境可以使从特定计算机系统流式传输的运动数据优先于从其他计算机系统流式传输的运动数据(例如,图7中图解所示,来自现场游戏引擎服务器710a的运动数据可以优先于来自现场游戏引擎服务器710b的运动数据)。在一些例子中,用户可以选择虚拟环境中的数字身体或对象以如上所述进行优先排序。例如,虚拟环境中的用户可以关注虚拟环境中一个或多个身体(例如,用户786可以观看虚拟环境780中的数字身体784,如图7中所示),并且就分辨率而言,用户观看的数字身体可以优先于虚拟环境中的其他数字身体。当用户观看数字身体时,可以维持或增加在用户视野内的数字身体的分辨率,并且如果流式传输到虚拟环境中的运动数据的量超过网络约束或计算约束,则可以降低在用户视野外围或者在用户视野外的其他身体的分辨率(例如,可以减少在用户视野外的数字身体的流式位置坐标的数量),如上所述(例如,本公开的系统和方法可以实现注视点渲染技术)。
图8A和图8B图解说明示例骨架网格800(例如,足球球员的骨架网格)。图8A中示出骨架网格800处于第一位置,对应于主体的第一姿势。在第一位置,如图所示,点802与主体的脚(对应于骨架网格的脚)的第一位置坐标关联。在第一位置,点802包括x、y、z、ρ、θ和值的第一测量值,如上所述(例如,x1、y1、z1、ρ1、θ1和)。图8B图解说明处于与主体的第二姿势对应的第二位置的骨架网格800。在第二位置,如图所示,骨架网格800的脚相对于图8A中的手的位置移位。于是,点802的坐标相对于图8A中点802的坐标被改变(例如,x、y、z、ρ、θ和分别具有x2、y2、z2、ρ2、θ2和的值)。在一些实施例中,坐标仅包括位置值x、y、z,而不包括旋转坐标ρ、θ和
图9示出了图解说明运动数据捕捉系统、现场游戏引擎服务器、远程游戏引擎服务器和客户端设备中的每一个的功能的泳道流程图。图9中的处理反映了图1-图6中描述的处理和系统。
在框902,运动数据捕捉系统可以处理图像数据(例如,来自摄像头的视觉数据),并基于图像数据为主体创建数字骨架。创建骨架可以包括确定沿着主体的身体的点的位置数据值和/或旋转数据值。在一些实施例中,在框902从捕捉的图像数据创建骨架可以包括关于图1中的运动数据捕捉系统102描述的用于捕捉主体(例如,主体106)的运动数据的技术。
在框904,运动数据捕捉系统可以流式传输沿着所创建的数字骨架的点的位置值和/或旋转值。这些点可以用坐标表示,如上关于图1中所示的点108所述。沿着数字骨架的点的进一步位置值和/或旋转值可以包括缩放数据,或者可以与至少部分基于流式值产生虚拟环境相关的其他数据。
在框906,现场游戏引擎服务器可以从运动数据捕捉系统接收流式位置数据(例如,在框904流式传输的位置值和/或旋转值)。
在框908,可以将流式位置数据分配给骨架网格。将位置数据分配给骨架网格可以包括进行关于图4中所示的处理400的框404描述的任何或所有技术。将位置值和/或旋转值分配给骨架网格可以使基于骨架网格的数字对象能够根据针对其捕捉流式位置数据的主体的移动而移动。
在框910,现场游戏引擎服务器可以将骨架网格发送到指定的服务器,该服务器可以托管游戏托管平台(例如,图1中所示的托管游戏托管平台118的专用服务器116)。在一些实施例中,如上关于框408所述,骨架网格不从现场游戏引擎服务器发送到专用服务器。在一些实施例中,向专用服务器提供信息,所述信息可以便利基于流式位置数据从专用服务器的存储器或客户端设备的存储器中选择数字网格。
在框912,现场游戏引擎服务器可以压缩并减少从运动数据捕捉系统接收的流式位置数据。如上所述,位置数据的压缩和减少可以包括有损和/或无损压缩技术。在一些实施例中,压缩并减少流式位置数据可以与关于图4中所示的处理400的框410描述的压缩和/或减少类似或相同。
在框914,现场游戏引擎服务器可以将压缩的(例如,压缩并减少的)位置数据流式传输到专用服务器(例如,专用服务器116)。在一些实施例中,压缩的位置数据可以直接流式传输到客户端设备(例如,图1中所示的客户端设备120)。将压缩的数据流式传输到专用服务器可以包括进行关于图4中所示的处理400的框412描述的任何或所有技术。
在框916,专用服务器可以接收在框910由现场游戏引擎服务器提供的骨架网格。在一些实施例中,在接收骨架网格时,骨架网格可以存储在专用服务器的存储器(例如,图2中所示的存储器226)中。在一些实施例中,骨架网格存储在专用服务器的存储器上,并且现场游戏引擎服务器可以提供要使用的骨架网格的标识或给定的位置数据。
在框920,客户端设备(例如,图1中图解所示的客户端设备120)可以向专用服务器提供输入,以向虚拟环境生成数字对象。数字对象可以包括用户的化身。在一些实施例中,在框920,客户端设备可以进行关于图6中所示的处理600的框604描述的任何或所有技术。
在框922,专用服务器可以从客户端设备接收要生成到虚拟环境中的数字对象。从客户端设备接收的数字对象可以包括用户的化身,并且化身可以存储在专用服务器的存储器中。
在框918,可以将数字对象生成到虚拟环境中,这可以包括将数字对象定位在虚拟环境内。如图所示,生成的数字对象可以是在框916从现场游戏引擎服务器获得的骨架网格,以及在框922从客户端设备接收的化身。生成数字对象可以包括进行关于图5中所示的框510描述的任何或所有技术。
在框924,专用服务器可以接收在框914由现场游戏引擎服务器流式传输的压缩的位置数据。在框926,可以使用与用于压缩位置数据的有损和/或无损压缩技术对应的解压缩技术对压缩的位置数据进行解压缩。在一些实施例中,在框926解压缩位置数据可以包括进行与在图5中所示的处理500的框514进行的技术类似或相同的技术。
在框928,专用服务器可以将位置数据分配给在框916从现场游戏引擎服务器接收的骨架网格。将位置数据分配给骨架网格可以产生虚拟环境中骨架网格的移动,该移动可以对应于物理环境中针对其捕捉位置数据的主体的移动。
在框932,客户端设备可以从专用服务器接收虚拟环境的位置数据。位置数据可以包括数字对象的位置数据,包括与针对主体捕捉的位置数据关联的骨架网格。
在框934,客户端设备可以渲染虚拟环境。渲染虚拟环境可以包括进行在图6中所示的处理600的框608描述的任何或所有技术。
在框934,客户端设备可以向用户显示虚拟环境。显示虚拟环境可包括进行在图6中所示的处理600的框610描述的任何或所有技术。
在框930,用户可以向客户端设备提供输入。在一些实施例中,所述输入可以包括用户的头部位置,该头部位置可以由用户佩戴的头显提供。在一些实施例中,所述输入是通过键盘、鼠标或客户端设备的任何其他输入端(例如,通过图2中所示的输入端232)提供的输入。所述输入可以对应于用户的虚拟摄像头或用户的化身在虚拟环境内的移动。所述输入可以被提供给专用服务器,并且可以用于更新用户在虚拟环境中的位置。在一些实施例中,接收用户输入可以包括进行关于图5中所示的处理500的框520描述的技术。
在测试中,本文中描述的方法和处理允许将每帧流式传输的数据从每帧730字节减少到每帧40比特。在另一个例子中,两足身体的运动数据从每帧4116字节减少到每帧624字节。另外,两足身体的每个关节的运动数据被减少到24个字节。在一些情况下,传统的运动捕捉技术可能在运动数据的捕捉和数据的显示或呈现之间需要编辑处理(例如,在动画视频、视频游戏、模拟等中)。一些运动捕捉系统识别捕捉的视频帧中的高对比度区域,并将这些高对比度的区域映射到主体的身体的部分。例如,反射标记可以定位在主体的身体的各个已知点,运动捕捉系统可以将这些反射标记映射到数字骨架上,以近似主体的运动。在一些情况下,运动捕捉系统可能会将正在捕捉的数据的反射元件或高对比度部分错误地识别为标记。例如,其运动正在被捕捉的主体可以穿着带有反射元件的鞋子,运动捕捉系统可能会错误地将反射元件识别为反射标记(例如,放置在主体的小腿上的反射标记)。当反射或高对比度元件被识别为标记时,由此产生的数字骨架的运动,从而网格或数字对象(例如,数字角色)的运动可能不准确地反映主体的运动。例如,在一些情况下,将反射元件错误地识别为标记可能导致对应数字骨架的肢体或其他部分“弹出(popping)”或进行对主体来说物理上不可能的突然移动。在一些情况下,反射标记的视图可能会从帧中丢失,这可能导致要用与反射标记关联的主体的部分标记或识别的沿着主体的其他高对比度区域或反射元件的错误识别。由于这些和其他原因,来自运动捕捉系统的坐标可能包括对主体的运动的不准确表示,包括可能导致相应数字骨架的移动的失真的不准确性(例如,弹出、“猴屁股(monkey-butt)”等)。
在一些情况下,需要编辑处理来纠正从主体捕捉的位置坐标的不准确性。例如,在动画电影的制作中,可以采用编辑来确认或校正动画电影的帧中的主体的三维位置数据,以确保电影中的角色的真实移动。该处理在准备基于动作捕捉的动画(例如,用于动画电影、视频游戏、模拟等)的处理中会招致巨大的成本。此外,这种方法对于实时流式传输的运动数据可能是不利的,因为个人(例如,编辑)实际上可能无法实时校正不准确的位置坐标。因此,实时流式传输的坐标可能包含会降低使用流式位置坐标的实时沉浸式数字体验的使用体验。
在一些实施例中,本文中描述的机制可以提供用于流式传输动态主体的运动数据的改进系统和方法,并提供用于实时数字沉浸式体验或其他数字体验(例如,视频游戏、动画视频、模拟等)的流式位置坐标的动态校正。在一些情况下,系统可以包括求解器(例如,软件求解器)来识别不准确性,并为被识别为不准确性的流式位置坐标提供改进的位置坐标。按照一些实施例,求解器可以由接收位置坐标的一个或多个计算系统实现。例如,求解器可以在图1中图解所示的服务器110、116和设备120、图7中图解所示的服务710a、710b、716和客户端设备718、或接收流式位置坐标的任何其他计算设备或系统中的一个或多个上实现。例如,参考图1-图3,可以在现场服务器110上实现用于基于求解器生成校正位置数据的系统,本文中称为“动态校正系统”。按照本文中描述的处理,现场服务器110可以从运动捕捉系统102接收位置坐标,并且可以基于从运动捕捉系102接收的位置坐标产生校正位置坐标。现场服务器110可以将校正位置坐标(例如,包括动态校正系统产生的校正位置坐标的位置坐标)从服务器110流式传输到远程游戏引擎服务器116(例如,供将包括校正位置坐标的运动数据渲染到虚拟环境中的游戏托管平台118使用)。在一些情况下,动态校正系统可以另外地或可替选地在远程游戏引擎服务器116上实现。例如,远程游戏引擎服务器116可以(例如,从现场服务器110)接收包括位置坐标的流式运动数据,并且可以实现动态校正系统,以基于接收的运动数据产生校正位置坐标。在远程游戏引擎服务器116产生的校正位置坐标可以被提供给游戏托管平台118,并由游戏托管平台118用来指示对应数字身体在虚拟环境内的运动。在一些情况下,在托管虚拟环境的计算系统上操作动态校正系统会是有用的,因为这可以确保流式传输到虚拟环境的运动数据的一致性。例如,如果从多个源接收到运动数据(例如,位置坐标),则可以使用动态校正系统来产生来自每个源的与数字骨架关联的校正位置坐标,从而不会基于位置数据的源在虚拟环境内不同地表示运动。例如,参考图7,动态校正系统可以在专用服务器716上实现,并且可以用于对从现场游戏引擎服务器710a、710b接收的运动数据进行校正。在例子中,来自现场游戏引擎服务器710a的运动数据可以不同于从现场游戏引擎服务710b接收的运动数据(例如,来自服务器710a的运动数据可以比来自服务器710b的运动数据包括每个数字骨架更多的位置坐标,与服务器710a、710b之一的连接的中断会导致该服务器在给定时间的位置坐标的丢失,运动捕捉系统702a会在运动捕捉的质量方面有所不同等)。专用服务器716可以使用动态校正系统基于接收的主体706a、706b和707中的每一个的运动数据来产生校正位置坐标,并且数字身体782、784、785在虚拟环境780中的运动可以由校正位置坐标来指示。在其他实施例中,动态校正系统可以由其他计算系统进行,包括例如专用动态校正服务器,该专用动态校正服务器从现场游戏引擎服务器(例如,服务器110、710a、710b)接收位置坐标,并将校正位置坐标流式传输到下游游戏引擎服务器(例如服务器116、716)。
在一些情况下,与位置坐标关联的数字骨架的一部分的移动可以被约束在可能的运动范围内。例如,标记可以与其他标记具有固定的空间关系,例如,当标记沿着同一骨骼定位时。动态校正系统可以评估标记的位置,并且如果标记之间的距离大于或小于标记之间的已知空间关系,则动态校正系统可以计算标记中的一个或两者的校正位置,并且可以更新该标记的坐标以包括校正后的位置。如上所述,动态校正系统可以在图1-图3和图7中图解所示的服务器110、116、710、716中的任何一个或全部上实现。坐标的动态校正还可以基于主体的已知动力学和基于物理的模型来进行。例如,动态校正系统可以将沿着数字骨架的点的坐标与该点的可能位置范围进行比较,如果该点落在可能位置范围之外,则动态校正系统可以计算该点的坐标并更新位置坐标。该点的校正后的坐标可以基于该点或沿数字骨架的其他点的已知速度。
在一些情况下,动态校正系统(例如,本文中描述的任何动态校正系统)的求解器可以使用逆运动学(IK)算法至少部分地基于与数字骨架的其他部分的关系来计算沿着数字骨架的点的校正坐标。IK算法可以通过求解沿着运动链(例如,一系列关节和骨骼)的数字骨架的部位的位置来计算沿着数字骨架的期望的点(例如,关节或沿着骨骼的点)的位置。在一些例子中,循环坐标下降逆运动学(CCDIK)算法或前向与后向抵达逆运动学(FABRIK)算法可以用于确定沿着数字骨架的点的校正位置或预测位置。因此,动态校正系统(例如,包括IK求解器的动态校正系统)可以使用IK算法对流式位置坐标进行动态校正,这可以提高沉浸式数字体验的质量,并且对于需要比可以由一些传统的位置流式传输系统提供的精度和准确性更高的精度或准确性的应用和用例,可以允许实时的位置流式传输。
图10图解说明按照一些实施例的动态校正技术或算法的二维例子。动态校正技术或算法可以由上述动态校正系统执行。在图解所示的例子中,示出了数字骨架1002,数字骨架1002的各个部位(例如,关节和骨骼)的位置是从接收自运动捕捉系统(例如,图1中所示的运动捕捉系统102)的位置坐标获得的。图10中示出了3个帧1000a、1000b、1000c,其中帧1000a对应于第一时间点,帧1000b对应于在第一时间点之后的第二时间点,而帧1000c对应于在第二时间点之后的第三时间点。数字骨架1002在每个帧1000a、1000b、1000c中的位置对应于在与相应帧1000a,1000b,1000c对应的时间点从运动捕捉系统接收的位置坐标。例如,“肘”关节1007在每个帧1000a、1000b、1000c中都有示出,并且在每个帧1000a,1000b,1000c中保持静止,而远端点1004(例如,数字骨架1002的手)从帧1000a到帧1000b,再从帧1000b到帧1000c改变位置。
当沿着数字骨架的点的位置坐标符合基于物理学的规则时(例如,该点位于基于数字骨架的各个部分的已知尺寸、数字骨架的各个部分相对于骨架的其他部分的移动和旋转的自由度、数字骨架的一个或多个部分的已知速度、加速度或其他运动学参数等,被视为“可能”的空间范围内),可以不使用动态校正来求解该点的位置,该点的位置坐标可以保持不变。例如,图10图解说明了约束远端点1004在帧之间的可能移动的空间包络1006a。在图解所示的例子中,远端点1004可以在图解所示的约束角运动的边界之间围绕肘关节1007沿顺时针或逆时针方向旋转。在一些实施例中,可以为多个自由度提供空间约束,并且可以允许点在一定范围内的线性平移、围绕多个轴的旋转等。在一些情况下,空间包络可以包括三个维度中的可能运动的限制。在一些情况下,可以基于沿着运动链的多个点可能运动来计算空间包络(例如,可以计算远端点1004的空间包络,以除了远端点1004相对于肘关节1007的可能运动之外,还适应肘关节1007的可能运动)。
如图10中进一步所示,在帧1000b中所示的第二时间点,远端点1004相对于帧1000a中的远端点1004的位置移位。沿着数字骨架1002的点(包括肘关节1007和远端点1004)的位置可以对应于从用于主体的移动的运动捕捉系统接收的位置坐标。如图所示,远端点1004的位置可以在空间包络1006a内(例如,在考虑到数字骨架1002的运动学、点1004的先前位置、运动链中的数字骨架1002的其他部分的移动、帧1000a和1000b之间的时间等的远端点1004的可能位置的范围内)。在一些情况下,如果沿着数字骨架的点(例如,远端点1004)的位置在先前计算的空间包络内(例如,在该点的可能位置的范围内),则实现动态校正技术的动态校正系统可以接受该点的位置坐标。如图所示,对于远端点1004的位置不进行校正,因为远端点1004在空间包络1006a内。在一些情况下,可以在进行运动捕捉的每个时间点确定空间包络或其他位置约束(例如,数字骨架1002的全部或部分的可能位置的范围),以约束在后续时间点接收的位置坐标。在一些情况下,可以确定空间包络以约束多个后续帧的数字包络的全部或一部分的移动。例如,可以确定相对于数字骨架的一部分的第一位置计算的空间包络,以包括数字骨架的该部分在一秒钟的运动内(例如,在一秒钟内捕捉的位置坐标的帧数内)的所有可能移动。在一些情况下,可以确定空间包络,以约束数字骨架的全部或一部分在捕捉运动的任何数量的帧或任何时间段内的运动。在一些情况下,对于数字骨架的全部或一部分的移动设定约束(例如,空间包络)的帧数或时间段可以由用户配置。在图解所示的实施例中,确定空间包络1006b,将远端点1004的可能位置的范围约束在从第二时间点开始的一段时间内。
在一些例子中,动态校正系统可以判定从运动捕捉系统提供的坐标是否对应于针对其捕捉运动的数字骨架或对象。例如,在运动捕捉系统使用反射标记的情况下,高对比度元件(例如,反射元件)可以被运动捕捉系统识别为标记,并且运动捕捉系统可以将高对比度元件的位置坐标与主体的身体的位置坐标一起进行流式传输。如图10中进一步图解所示,帧1000b包括对应于从与帧1000b对应的运动捕捉系统流式传输的位置坐标的点1008。在一些情况下,动态校正系统可以确定点1008不与正在针对其捕捉运动的任何已知位置标记关联,并且可以确定点1008不与数字骨架1002关联。例如,IK算法可以对照数字骨架1002的其他点的可能位置来检查点1008的位置。如果点1008落在沿着数字骨架1002的所有点的可能位置之外,则IK算法可以确定点1008的位置是不正确的。IK算法还可以判定是否考虑了数字骨架1002的完整一组点(例如,存在于帧1000b中),如果是,则点1008可以被确定为无关的点,而不是沿着数字骨架1002的错位的点。在一些情况下,动态校正系统可以通过去除点1008的位置坐标来校正帧1000b,并且基于数字骨架显示数字网格的移动的下游计算系统将不包括与点1008对应的移动。在一些例子中,由实现动态校正系统的计算系统接收的运动捕捉数据(例如,位置坐标)可以仅包括与数字骨架(例如,数字骨架1002)关联的点。例如,一些运动捕捉系统可以将识别的点分配给已知的数字骨架,之后流式传输到下游系统(例如,实现动态校正系统的计算系统),因此,错误识别的点可以作为沿着数字骨架的点(例如,与数字骨架1002的关节或骨骼关联的点),而不是无关的位置坐标流式传输到下游系统。
在一些例子中,当动态校正系统确定与沿着数字骨架的已知点(例如,关节或骨骼)对应的位置坐标在该点的可能位置的范围之外时,动态校正系统可以计算或确定该已知点的在该点的可能位置的范围内的位置坐标,并且可以用更新的位置坐标校正该点的位置坐标(例如,替换先前的位置坐标)。在一些情况下,可以基于该点的已知先前位置或速度来确定更新的位置坐标。例如,帧1000c图解说明在空间包络1006b之外的点1010。点1010可以对应于(例如,类似于远端点1004的)主体的手的从运动捕捉系统流式传输的位置坐标。由于点1010在空间包络1006之外,因此动态校正系统可以计算远端点1004的校正位置坐标,如帧1000c中图解所示,该校正位置坐标在空间包络1006b内。校正位置坐标可以部分地基于来自先前帧的远端点1004的已知速度。例如,在帧1000b中,远端点1004相对于远端点1004在帧1000a中的位置沿顺时针方向发生角位移,并且动态校正系统可以计算远端点1004在帧1000c中的位置坐标,该位置坐标相对于远端点1004在帧1000b中的位置进一步沿顺时针方向移位。在一些情况下,如上所述,动态校正系统可以使用一种或多种逆运动学算法(例如,CCDIK、FABRIK等)计算沿着数字骨架(例如,数字骨架1002)的点的校正位置坐标。在一些情况下,流式位置坐标可以包括间隙,例如当网络连接丢失时,全部或部分的位置坐标在一帧或多帧中被省略。动态校正系统可以以如上所述类似的方式用于计算给定帧(例如,在特定时间点)的数字骨架的全部或部分的缺失位置坐标。
在一些例子中,沉浸式数字环境可以从多个源接收运动数据(例如,位置坐标),例如如关于图7所示和所述。动态校正系统可以用于对于流式传输到数字环境中的任何或所有位置坐标校正位置坐标。例如,参考图7,数字身体782、784和785中的每一个的位置坐标可以包括由动态校正系统确定的坐标,所述动态校正系统可以在现场游戏引擎服务器710a、710b、专用服务器716、客户端设备718或接收位置坐标的任何其他设备中的任何一个或全部上实现。此外,可以为沉浸式数字环境中的用户产生位置坐标,并且可以为用户计算数字骨架,以近似用户在数字环境内的运动。例如,可以为用户786捕捉运动数据,并将其提供给专用服务器716,以允许在虚拟环境780中复制用户786的移动。在一些情况下,用户786可以佩戴头戴式显示器(HMD)(例如,图1中所示的客户端设备120),并且HMD可以通过运动传感器(例如,加速度计、陀螺仪、摄像头、红外传感器等)捕捉用户的运动数据。在一些情况下,可以产生与用户身体的各个部分对应的位置坐标,以产生对应于用户的数字骨架。人工智能模型可用于基于从HMD或用户使用的任何其他运动捕捉设备感测的用户运动来产生用户的位置坐标。如上所述的动态校正系统可用于分析用户的位置坐标并进行校正或预测坐标,如上所述,以提供数字环境(例如,虚拟环境780)内的用户运动的改进体验。
图11图解说明用于流式传输运动数据(例如,一个或多个数字骨架的位置坐标)的示例系统和处理1100,所述流式传输包括实现动态校正系统(例如,与能够产生图10中所示的输出的动态校正系统相似或相同)。系统和处理1100的系统部分可以类似于系统100、700,并且可以包括类似组件的类似编号(加上1000)。例如,系统和处理1100的系统部分包括运动捕捉系统1102、现场服务器1110和专用服务器1116,运动捕捉系统1102可以与运动捕捉系统102相似或相同,现场服务器1110可以与现场服务器110相似或相同,专用服务器1116可以与专用服务器116相似或相同。系统和处理1100的处理部分可以包括图11中图解所示的功能框1150-1178。功能框在图11中的系统组件(运动捕捉系统1102、现场服务器1110和专用服务器1116)之间的特定分布是一个示例分布;在其他例子中,在一个系统组件中图解所示的功能框中的一个或多个由图11的其他系统组件实现。例如,功能框1164-1178中的一个或多个可以由现场服务器1110实现,或者功能框1154-1162中的一个或多个可以由专用服务器实现。在一些例子中,功能框1150-1178由另一个系统实现。此外,尽管框1150-1178被图示为按特定顺序进行的离散框,但是在一些例子中,功能框1150-1178中的一个或多个功能框与一个或多个功能框1150-1178中的另一个功能框并行地或部分并行地执行,和/或功能框1150-1178中的一个或多个功能框被绕过。另外,在至少一些例子中,每个功能框对应于能够实现该功能框的对应系统组件(该功能框驻留于其中)的一个或多个电子硬件组件,和/或存储在能够实现该功能框的一个或多个电子硬件组件(该功能框驻留于其中)中和/或由所述一个或多个电子硬件组件执行的软件。这样的硬件组件例如可以包括处理器(例如,与处理器202、210、220或230相似)、存储器(例如,与存储器204、216、226或236相似)、输入端(例如,与输入端212、222、232相似)和/或通信系统(例如,与通信系统208、214、224、234相似)中的一个或多个。
如图所示,在框1150,运动捕捉系统1102可以捕捉一个或多个主体的运动数据,并将运动数据映射到数字骨架。运动数据可以包括与沿着主体身体(例如,在与主体的骨骼、关节或节段对应的位置)的点的运动关联的位置坐标、旋转坐标和其他数据,并且运动捕捉系统1102可以使用任何已知的运动捕捉装置(例如,基于光的运动捕捉系统、使用惯性传感器检测运动的动作捕捉系统、捕捉或产生主体的运动数据的HMD或其他可穿戴式设备、使用机器视觉识别沿着主体的点等)来获得运动数据。此外,在框1150,该处理可以将运动数据映射到动画骨骼。例如,各个位置坐标可以被指定(例如,自动地或通过人工输入标记)为属于特定的数字骨架,并且还可以与数字身体的数字骨架的特定骨骼或关节关联。数字骨架可以包括主体的身体的各个部分之间的空间关系。例如,骨架可以定义数字身体的关节层次结构以及骨骼的长度(例如,关节之间的长度)。例如,数字骨架可以包括前臂和小腿的长度,并且可以在数字骨架的整个移动过程中强制执行前臂与小腿的长度比。在一些情况下,数字骨架可用于按照已知的物理模型,约束一个骨骼相对于数字骨架的相邻骨骼或相邻关节的运动。在一些情况下,运动捕捉系统1102可以如关于运动捕捉系统102所述,进行运动数据的捕捉并映射到数字骨架。
在框1152,运动捕捉系统1102还可以将数字骨架生成到一个或多个本地客户端(例如,现场服务器1110)或远程客户端(例如,专用服务器1116)。生成数字骨架可以包括将数字骨架发送到下游设备,以供下游设备在映射和解释对应的运动数据时使用。数字骨架可以通过“推送”来发送,其中运动捕捉系统向一个或多个设备广播数字骨架,或者可以从运动捕捉系统1102“拉取”(例如,服务器1110、1116中的一个或更多个可以发出API调用来检索数字骨架)。在一些情况下,可以使用上面关于框312、510、604和/或918描述的任何或所有技术将数字骨架生成到其他计算机系统。如上所述,在一些情况下,数字骨架可以是保留针对其捕捉运动数据的主体的尺寸或尺寸比率的数字骨架(例如,数字骨架的骨骼长度的比率可以与主体的骨骼长度的比率基本相同)。在一些情况下,数字骨架可以具有与主体不同的相对尺寸。例如,数字骨架可以是与两足动画老鼠对应的数字骨架,并且动画老鼠的数字骨架的骨骼长度的比率可以不同于主体(例如,人类)的骨骼长度的比率。如果主体的相对尺寸(例如,骨骼长度的比率)与主体的移动被映射到的数字骨架不同,则数字骨架的位置坐标可能容易出现“弹出”、“猴屁股”或降低动画质量的其他效果。在其他例子中,可以从存储器中具有数字骨架的任何设备生成数字骨架(例如,提供给下游设备,以供下游设备在渲染运动数据时使用)。例如,在一些实施例中,主体的数字骨架可以从现场服务器1110生成到专用服务器1116。在一些例子中,可以设置包括要生成的数字骨架的附加服务器。
在框1154,现场服务器1110可以从运动捕捉系统接收运动数据和数字骨架数据,并且可以从数字骨架确定比例信息和期望的分辨率信息。例如,捕捉并保留数字骨架的骨骼长度可以减少位置坐标所需的存储空间,位置坐标可以减少到单位向量(例如,单位四元数)。向下游系统提供长度(例如,比例信息)可以允许下游系统将长度应用于接收的表示为单位向量(例如,归一化四元数)的位置坐标,使得流式传输需要较少的信息。此外,可以为比例(例如,长度)信息选择分辨率(例如,由用户手动选择或者由在现场服务器上运行的处理自动选择),并且可以用于确定与每个组件关联的比特数。例如,对于需要较低精度的应用,与数字骨架的特定骨骼关联的比例可以包括整数值,或者用户可以为需要更高分辨率的应用选择较高的分辨率(例如,具有更高精度的比例值)。包括用于数字骨架中的关节之间的长度以及其他距离的比例的比例信息可以(例如,经由“推送”或“拉取”操作)发送到专用服务器,用于解压缩数字骨架的流式运动数据。比例可以针对一个或多个骨骼来确定,并且可以变换从主体接收的位置坐标和其他运动数据,以产生数字骨骼的位置坐标。
在框1156,现场服务器1110可以继续在运动数据的当前帧中确定(例如,查找)髋骨或髋关节位置(例如,数字骨架及其各个点在特定时间点的位置)。髋骨或髋关节可以通过使用数字骨架的各个部分的分析从数字骨架中识别,或者根据将沿着数字骨架的一个或多个点识别为髋部的标签或其他指定来识别。髋骨的位置可用于确定数字骨架的其他骨骼和关节的相对位置。在其他例子中,数字骨架的另一个骨骼或关节可以是起始骨骼,从该起始骨骼测量数字骨架的其他骨骼或关节的位置和定向。查找初始骨骼(例如,从其测量数字骨架的其他骨骼的相对位置和定向的骨骼)可以帮助减少要流式传输的数据,因为流式位置数据(例如,向量或四元数)可以减少为相对于相邻骨骼或关节的单位向量。因此,在现场服务器1110上进行框1156以及其他压缩步骤,以减少向远程客户端流式传输运动数据的时延(例如,归因于运动捕捉系统1102和现场服务器1110之间的较低时延)可能是有利的。
在框1158,现场服务器1110可以判定是流式传输一个或多个数字骨架的完整一组运动数据,还是有限的(例如,缩减的一组)运动数据。在一些情况下,完整的一组运动数据可以包括与数字骨架关联的所有位置坐标和定向信息。缩减的一组运动数据可以是用于传达给定应用所需的运动,但是排除与数字骨架的运动关联然而与特定应用不太相关的一些或所有关节信息(例如,对于与踢足球的主体关联的运动数据的流式传输,去除手指关节位置坐标)的一组位置坐标和定向数据。流式传输一组有限的运动数据的决定可以基于现场服务器1110和专用服务器1116之间的网络约束、现场服务器1110和专用服务器1116中的任意一个的计算约束、虚拟环境(例如,图7中所示的虚拟环境780)的环境约束或其他约束。例如,现场服务器1110和专用服务器之间的网络连接可以具有足够的容量在特定时间范围内流式传输100个位置坐标。如果第一数字骨架的运动数据包括100个或更少的位置坐标,则在框1158,服务器1116可以确定压缩并流式传输与第一数字骨架关联的所有位置坐标。如果除了第一数字骨架之外,现场服务器1116还正在流式传输第二数字骨架,则要流式传输的位置坐标的组合数量可能大于最多100个位置坐标,并且服务器1110可以针对第一骨架和第二骨架中的每一个,确定要压缩和流式传输哪组位置坐标(例如,与特定骨骼和关节关联的位置坐标)。确定要流式传输哪些位置坐标可以基于特定目的地虚拟环境的要求来确定(例如,在一些应用中,数字骨架的特定部分的运动可能比数字骨架的其他部分的运动更重要)。在一些情况下,可以基于在下游系统(例如,专用服务器1116)重新计算被排除的骨骼或关节(例如,使用人工智能模型或生物力学模型)的相对容易性来排除某些骨骼和关节。在一些情况下,当限制流式传输的骨骼的数量时,可以基于流式运动数据的特定虚拟环境和应用来选择骨骼。例如,如果运动数据对应于运动员(例如,足球球员)的运动数据,则可以省略与各个手指相关的关节,并且有限的骨骼据可以包括肘关节和肩关节的相对位置,但不包括腕关节和指关节的相对位置。在这个例子中,与运动员的各个手指的特定位置相比,运动员的身体及主要肢体在虚拟环境中的整体定位对用户或观众来说可能更相关或更有趣。在一些情况下,特定的关节可能很重要。例如,在运动医学的背景下,对于主体身体的特定区域可能需要更高的分辨率,因此,例如,可以保留腰部以下的大部分或全部关节信息,而对应于手指运动、颈部运动等的关节可以从要流式传输的运动数据中省略。
在一些情况下,计算约束可以规定要流式传输的位置坐标的数量。例如,现场服务器可以具有在第一时间段内对阈值数量的位置坐标进行处理(例如,进行压缩)的容量,如果超过该数量,则现场服务器可以选择有限数量的位置坐标(例如,关联的骨骼和关节)进行处理,以使在第一时间段内处理的位置坐标的数量低于第一阈值。在一些情况下,其他约束(例如,包括临时容量限制)可以促使现场服务器1110做出限制要处理和流式传输的骨骼及关联位置坐标的数量的决定。
在一些例子中,为了在框1158中确定用于流式传输的一组有限的特定骨骼,现场服务器1110可以包括和/或访问将特定约束映射到用于流式传输的一组特定骨骼的查找表或数据库。
当现场服务器1110已经确定了要流式传输的一组骨骼(例如,有限或完整的一组骨骼以及关联的位置坐标和旋转坐标)时,在框1160,现场服务器可以确定连续骨骼的末端关节之间的位置差异(例如,骨骼的末端关节的位置坐标或四元数)。例如,膝关节和髋骨之间的位置差异可以确定为四元数(例如,表示膝关节相对于髋骨的位置偏移,以及跨越关节的骨骼的定向)。随后,可以类似地确定踝关节和膝关节之间的位置差异。可以一直到运动链的特定分支(例如,在髋骨和手指末端、或脚趾末端、或头部关节等之间延伸的运动链的分支)中的末端关节地确定差异。因此,了解髋骨的位置以及沿着数字骨架(例如,沿着运动链)的后续关节的相对位置可以便利数字骨架的重建。框1160的输出可以包括表示髋骨以及沿着数字骨架的运动链的连续关节之间的位置差异(例如,包括定向数据)的向量或四元数的序列化列表。在一些实施例中,可以从任何骨骼或关节开始测量位置差异,并且不限于髋骨。例如,在框1156可以确定踝关节的位置,并且可以针对从踝关节开始的沿着数字骨架的运动链的每个关节计算位置差异。
在框1162,现场服务器1110可以压缩从框1160输出的位置数据,包括沿着数字骨架的运动链的相对位置数据。压缩数据可以包括使位置向量归一化以产生单位向量(例如,单位四元数)。在例子中,膝关节相对于髋关节的相对位置可以表示为(0,0,-9.6743,0)(例如,在给定方向上,跨越髋关节和膝关节的骨骼的总长度可以为9.6743,用负号表示)。该长度可以包括在框1154提供给专用服务器1116的比例信息中,并且通过将四元数转换为单位四元数(0,0,-1,0)可以减小相对位置四元数的大小,从而为所表示的骨骼提供方向和定向。如图所示,单位四元数(例如,或者单位向量)中表示的小数位数可以相对于计算的相对位置向量减少,因此减少了四元数所需的总存储空间。在一些情况下,单位向量的一个或多个部分可以从单位向量的其他值导出,并且可导出的部分可以从要流式传输的部分中排除,从而进一步减小要流式传输的数据的大小。例如,在一些情况下,单位四元数可以具有为1的单位长度,并且可以具有值(W,X,Y,Z),这些值满足方程X2+Y2+Z2+W2=1。因此,例如,W的值可以从X、Y和Z的已知值得出,并且可以从流式传输中省略W的值(W的符号被保留并包含在流式数据中),这可以进一步减小流式传输的运动数据的大小。在一些情况下,所得到的压缩单位四元数(例如,省略W的值但包括符号)可以按特定顺序排列,其中相应压缩单位四元数的位置与特定的骨骼、关节或与在先的压缩单位四元数的关系关联。在一些实施例中,压缩位置数据可以包括设定四元数的W、X、Y和Z值的精度(例如,包括的小数点的数量,更多的小数点需要更大的存储空间)。在一些情况下,现场服务器1110可以另外地或可替选地进行上面关于框306和框408描述的压缩方法。这里描述的压缩方法和处理相较于位置数据流(例如,运动数据)的一些传统的流式传输可以带来显著的改进,包括减少存储数字骨架的单个骨骼的信息所需的空间。例如,在一些用于流式传输运动数据的传统系统中,流式传输数字骨架的单个骨骼的信息可能需要48个字节,但是使用这里描述的压缩方法,单个骨骼每帧(例如,带有压缩四元数的被省略维度的符号的压缩单位四元数值)可能只需要8个字节(或者可以用少至8个字节来表示)。
在框1164,专用服务器1116可以从现场服务器1110接收流式运动数据(例如,从框1162输出的运动数据)。专用服务器可以使用本文中(例如,分别关于图3和图5的框308和框514)描述的任何有损或无损解压缩技术来解压缩运动数据。在一些情况下,解压缩运动数据可以包括重新计算向量或四元数的丢弃值。例如,单位四元数的值之间的关系(即,X2+Y2+Z2+W2=1)可用于从X、Y和Z值产生W的值(即,从压缩单位四元数产生完整的单位四元数),并且可以将包含在流式运动数据中的W的符号分配给计算的W值。在一些情况下,解压缩可以包括使用人工智能模型或生物力学模型来导出从位置数据中排除的关节的位置(例如,当在框1158限制数据时,从运动数据中排除的位置坐标)。
在框1166,专用服务器1116可以使用在框1164解压缩的单位四元数值(例如,相对位置值),以及数字骨架的其他已知信息,例如包括在框1154(例如,从现场服务器1110)提供给专用服务器1116的比例值来构建数字骨架。例如,专用服务器可以从髋骨的已知位置开始,通过将单位四元数乘以关联比例值来生成连续关节(例如,膝关节)的位置,以获得跨越髋骨和连续关节的骨骼的长度和定向。对于沿着数字骨架的运动链的每个后续关节(例如,如在从框1152生成的数字骨架中提供的),可以重复该处理,直到确定了流式运动数据中所表示的每个关节和骨骼的位置为止。在一些情况下,如果在框1154的选定精度较低,则数字骨架的分辨率会较低,相反,如果在框1154以更高的精度(例如,更高的小数点数)保留比例(例如,长度),则构建的数字骨架的分辨率和质量会更高。
在框1168,专用服务器1116可以基于已知的数字骨架运行逆运动学求解器,以评估构建的数字骨架。在一些情况下,可以针对每个长度(例如,数字骨架的每个骨骼或连续关节之间的距离)运行求解器,以评估沿着数字骨架的每个点。在一些情况下,IK求解器可以是CCDIK求解器或FABRIK求解器之一。在一些情况下,可以基于求解器对于正在求解的骨架的特定节段的适用性,或者依据与相应求解器关联的计算约束来选择求解器。例如,专用服务器1116可以包括和/或访问将骨架的特定节段映射到特定求解器的查找表或数据库。在框1170,专用服务器1116可以实现所选择的IK求解器,以迭代地求解数字骨架的关节以及在关节之间延伸的骨骼的位置坐标。在例子中,IK求解器可以基于关于图10描述的处理产生输出。例如,IK求解器可以考虑数字骨架的已知约束和状态信息,包括沿着数字骨架的特定点的可能的运动范围、自由度、在先位置、速度和加速度值等。在一些情况下,如果在框1170,所选择的求解器未能求解特定长度,则如果进行另外的求解不超过时间阈值,那么该处理可以继续使用其他求解器来求解该长度(例如,如果最初选择的求解器是FABRIK,则专用服务器1116可以针对给定长度运行CCDIK求解器)。
在框1174,专用服务器1116可以用求解器在框1170或1172之一产生的更新的位置值替换被确定为有误的数字骨架的位置值。例如,参考图10,当数字骨架1002c的手的流式位置点1010落在由IK求解器确定的可接受范围之外时,该值可以用产生的点1004的位置值替换,如图所示。在一些情况下,当校正位置值时,IK求解器可以基于校正点的值产生校正点“下游”(例如,更靠近远端或最终关节)的点的值。在一些情况下,在框1170、1172的IK求解器可用于求解缺失点。例如,如果专用服务器116和现场服务器1110之间的连接丢失,则数字骨架的一帧的运动数据可以完全由IK求解器产生。在一些情况下,IK求解器可以产生数字骨架中的缺失点的位置坐标。框1174的输出可以是一帧时间内的数字骨架的关节和骨骼的位置坐标,包括校正的位置坐标,如果在框1174,专用服务器1116(例如,在专用服务器1116上运行的IK求解器)确定从现场服务器1110接收的值不正确的话。
在框1176,专用服务器1116可以评估来自框1174的位置数据,以确定数字骨架的骨骼或关节是否缺失。这可以包括将来自框1174的包含校正的运动数据的数字骨架与在框1152从运动捕捉系统1102接收的数字骨架进行比较。如果所生成的数字骨架的骨骼未包括在从框1174输出的数字骨架中,则专用服务器可以再次重建骨架,并实现框1166-1174以产生包含进一步校正的位置数据的数字骨架。在一些情况下,虚拟环境可能只要求数字骨架的某一组骨骼存在,在框1176,专用服务器1116可以只检查这些骨骼的存在。如果在框1176,从框1175输出的数字骨架没有缺失必不可少的骨骼,则运动数据(例如,包括其关节和骨骼的位置坐标的数字骨架的帧)可以被流式传输到虚拟环境(例如,图7中图解所示的虚拟环境780)中。在一些情况下,图11中所示的步骤可以在任何服务器或设备上进行,包括除了系统1102及服务器1110和1116之外或替代系统1102及服务器1110和1116的服务器或设备。例如,可以设置附加服务器来进行动态校正系统的全部或一部分,并且可以将校正的位置坐标流式传输到任何下游系统。在一些情况下,动态校正可以作为服务来进行,并且实现动态校正的服务器可以从任何源接收位置坐标,并对流式位置坐标进行IK求解器以产生校正的位置坐标。在一些例子中,提供一种包括功能框1164-1178的方法。在一些例子中,提供一种包括功能框1154-1160的方法。在一些例子中,提供一种包括功能框1150-1178的不同子集的方法。
提供所公开的实施例的之前描述是为了使本领域的任何技术人员能够制造或使用本发明。对这些实施例的各种修改对于本领域技术人员来说将是显而易见的,并且本文中定义的一般原理可以应用于其他实施例,而不脱离本发明的精神或范围。因此,本发明并不旨在局限于本文中所示的实施例,而是应被赋予与本文中所公开的原理和新颖特征一致的最宽范围。
本文中对设备或系统的特定特征、能力或预期用途的任何描述通常旨在包括将此类设备用于预期用途的方法的公开、以其他方式实现此类能力的方法的公开、制造此类设备或系统的相关组件(或整个设备或系统)的方法的公开,以及安装所公开(或以其他方式已知)的组件以支持此类用途或能力的方法的公开。类似地,除非另有说明或限制,否则本文中对制造或使用特定设备或系统,包括安装设备或系统的任何方法的讨论旨在固有地包括作为本发明实施例的对此类设备或系统的所利用的特征和所实现的能力的公开。
Claims (20)
1.一种用于提供沉浸式数字体验的方法,所述方法包括:
在第一计算设备产生虚拟环境,所述虚拟环境包括至少一个数字对象的位置数据;
接收第一流式运动数据,第一流式运动数据对应于第一物理主体的实时运动并且包括第一多个数据点,第一多个数据点中的每个数据点与第一物理主体的一部分的位置关联;
在所述虚拟环境内产生第一骨架网格,并将第一骨架网格定位在相对于所述至少一个数字对象的第一初始位置;
使第一多个数据点中的每个数据点与沿着所述骨架网格的对应点关联;以及
将第一骨架网格和所述至少一个数字对象的位置信息流式传输到客户端设备。
2.按照权利要求1所述的方法,还包括:
接收第二流式运动数据,第二流式运动数据对应于第二物理主体的运动并且包括第二多个数据点,第二多个数据点中的每个数据点与第二物理主体的一部分的位置关联;
在所述虚拟环境内产生第二骨架网格,并将第二骨架网格定位在相对于所述至少一个数字对象的第二初始位置;
使第二多个数据点中的每个数据点与沿着第二骨架网格的对应点关联;以及
将第二骨架网格的位置信息流式传输到所述客户端设备。
3.按照权利要求2所述的方法,其中第一流式运动数据是从第一服务器接收的,而第二流式运动数据是从第二服务器接收的。
4.按照权利要求1所述的方法,还包括:
在所述虚拟环境内产生与所述虚拟环境的用户对应的数字化身;
从所述客户端设备接收指令,所述指令对应于所述数字化身在所述虚拟环境内的移动;
响应于所述指令,在所述虚拟环境内移动所述数字化身;以及
将所述数字化身的位置信息流式传输到所述客户端设备。
5.按照权利要求1所述的方法,其中流式数据被压缩,并且其中所述方法还包括解压缩所述流式数据。
6.按照权利要求5所述的方法,其中解压缩所述流式数据包括从第一多个数据点推断出推断数据点,所述推断数据点的位置是相对于第一多个数据点中的至少一个数据点计算的。
7.按照权利要求1所述的方法,其中第一流式运动数据包括第一位置坐标,其中所述方法还包括:
确定第一位置坐标不对应于第一物理主体的一部分;以及
从被流式传输到所述客户端设备的所述位置信息中排除第一位置坐标。
8.按照权利要求1所述的方法,还包括:
确定第一位置坐标不对应于第一物理主体的对应部分的位置;
产生与第一物理主体的所述对应部分的预测位置对应的更新的第一位置坐标;以及
使更新的第一位置坐标与沿着所述骨架网格的对应点关联。
9.按照权利要求8所述的方法,其中确定第一位置坐标不对应于第一主体的对应部分的位置包括:确定第一位置坐标位于第一主体的所述对应部分的可能位置的第一范围之外。
10.按照权利要求8所述的方法,其中更新的第一位置坐标是使用逆运动学算法产生的。
11.按照权利要求10所述的方法,其中所述逆运动学算法是循环坐标下降逆运动学(CCDIK)算法和前向与后向抵达逆运动学(FABRIK)算法中的一个。
12.按照权利要求8所述的方法,其中更新的第一位置坐标是实时产生的。
13.按照权利要求1所述的方法,还包括接收用户在所述虚拟环境内的位置数据,其中第一多个数据点是至少部分地基于所述用户的所述位置数据确定的。
14.按照权利要求1所述的方法,还包括至少部分地基于计算约束或网络约束来确定第一骨架网格的分辨率,并从第一流式运动数据中选择第一多个数据点,第一多个数据点包括比第一流式运动数据少的数据点。
15.按照权利要求1所述的方法,其中第一多个数据点中的每个数据点至少包括单位四元数的一部分。
16.按照权利要求15所述的方法,还包括针对第一多个数据点中的每个数据点,基于单位四元数的对应部分确定完整的单位四元数。
17.按照权利要求16所述的方法,其中使第一多个数据点中的每个数据点与沿着所述骨架网格的对应点关联包括:将第一多个数据点中的至少一个数据点的完整单位四元数乘以与第一主体的维度关联的比例值。
18.按照权利要求15所述的方法,其中第一多个数据点包括第一数据点和第二数据点,其中第二数据点的值指示第一主体的第二部分相对于与第一数据点对应的第一主体的第一部分的位置的位置。
19.一种计算机系统,所述计算机系统包括:
至少一个存储器;以及耦合到所述至少一个存储器的至少一个处理器,所述系统被配置为使所述至少一个处理器执行存储在所述至少一个存储器中的指令,以便:
产生虚拟环境,所述虚拟环境包括至少一个数字对象的位置数据;
从第一设备接收第一流式运动数据,第一流式运动数据对应于第一物理主体的实时运动并且包括第一多个数据点,第一多个数据点中的每个数据点与第一物理主体的一部分的位置关联;
从第二设备接收第二流式运动数据,第二流式运动数据对应于第二物理主体的实时运动并且包括第二多个数据点,第二多个数据点中的每个数据点与第二物理主体的一部分的位置关联;
在所述虚拟环境内产生第一骨架网格和第二骨架网格;
将第一骨架网格定位在相对于所述至少一个数字对象的第一初始位置;
将第二骨架网格定位在相对于所述至少一个数字对象的第二初始位置;
使第一多个数据点中的每个数据点与沿着第一骨架网格的对应点关联;
使第二多个数据点中的每个数据点与沿着第二骨架网格的对应点关联;以及
将第一骨架网格、第二骨架网格和所述至少一个数字对象的位置信息实时流式传输到客户端设备。
20.一种非临时性计算机可读介质,所述非临时性计算机可读介质包括使计算机上的至少一个处理器执行以下操作的指令:
产生虚拟环境,所述虚拟环境包括至少一个数字对象的位置数据;
从第一设备接收第一流式运动数据,第一流式运动数据对应于第一物理主体的实时运动并且包括第一多个数据点,第一多个数据点中的每个数据点与第一物理主体的一部分的位置关联;
从第二设备接收第二流式运动数据,第二流式运动数据对应于第二物理主体的实时运动并且包括第二多个数据点,第二多个数据点中的每个数据点与第二物理主体的一部分的位置关联;
在所述虚拟环境内产生第一骨架网格和第二骨架网格;
将第一骨架网格定位在相对于所述至少一个数字对象的第一初始位置;
将第二骨架网格定位在相对于所述至少一个数字对象的第二初始位置;
使第一多个数据点中的每个数据点与沿着第一骨架网格的对应点关联;
使第二多个数据点中的每个数据点与沿着第二骨架网格的对应点关联;以及
将第一骨架网格、第二骨架网格和所述至少一个数字对象的位置信息实时流式传输到客户端设备。
Applications Claiming Priority (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202263429494P | 2022-12-01 | 2022-12-01 | |
| US63/429,494 | 2022-12-01 | ||
| US202363583772P | 2023-09-19 | 2023-09-19 | |
| US63/583,772 | 2023-09-19 | ||
| PCT/US2023/081890 WO2024118955A1 (en) | 2022-12-01 | 2023-11-30 | Systems and methods for immersive digital experiences |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN120500707A true CN120500707A (zh) | 2025-08-15 |
Family
ID=91279908
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202380090871.4A Pending CN120500707A (zh) | 2022-12-01 | 2023-11-30 | 用于沉浸式数字体验的系统和方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US20240185496A1 (zh) |
| CN (1) | CN120500707A (zh) |
| WO (1) | WO2024118955A1 (zh) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11599717B2 (en) * | 2020-03-20 | 2023-03-07 | Capital One Services, Llc | Separately collecting and storing form contents |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7848564B2 (en) * | 2005-03-16 | 2010-12-07 | Lucasfilm Entertainment Company Ltd. | Three-dimensional motion capture |
| US7864168B2 (en) * | 2005-05-25 | 2011-01-04 | Impulse Technology Ltd. | Virtual reality movement system |
| CA2685353C (en) * | 2007-03-07 | 2016-04-26 | Ideaflood, Inc. | Multi-instance, multi-user animation platforms |
| US9060714B2 (en) * | 2008-12-04 | 2015-06-23 | The Regents Of The University Of California | System for detection of body motion |
| US9247212B2 (en) * | 2010-08-26 | 2016-01-26 | Blast Motion Inc. | Intelligent motion capture element |
| EP3268096A4 (en) * | 2015-03-09 | 2018-10-10 | Ventana 3D LLC | Avatar control system |
| GB201709199D0 (en) * | 2017-06-09 | 2017-07-26 | Delamont Dean Lindsay | IR mixed reality and augmented reality gaming system |
| US11145125B1 (en) * | 2017-09-13 | 2021-10-12 | Lucasfilm Entertainment Company Ltd. | Communication protocol for streaming mixed-reality environments between multiple devices |
| CN111771231A (zh) * | 2018-02-27 | 2020-10-13 | 奇跃公司 | 用于虚拟化身的匹配网格 |
-
2023
- 2023-11-30 US US18/524,880 patent/US20240185496A1/en active Pending
- 2023-11-30 CN CN202380090871.4A patent/CN120500707A/zh active Pending
- 2023-11-30 WO PCT/US2023/081890 patent/WO2024118955A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| WO2024118955A1 (en) | 2024-06-06 |
| US20240185496A1 (en) | 2024-06-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10582191B1 (en) | Dynamic angle viewing system | |
| US9947139B2 (en) | Method and apparatus for providing hybrid reality environment | |
| RU2621644C2 (ru) | Мир массового одновременного удаленного цифрового присутствия | |
| US10650590B1 (en) | Method and system for fully immersive virtual reality | |
| US10049496B2 (en) | Multiple perspective video system and method | |
| CN111862348B (zh) | 视频显示方法、视频生成方法、装置、设备及存储介质 | |
| CA3162163A1 (en) | Real-time system for generating 4d spatio-temporal model of a real world environment | |
| US20170192496A1 (en) | Methods and systems of a motion-capture body suit with wearable body-position sensors | |
| US20240153226A1 (en) | Information processing apparatus, information processing method, and program | |
| US11694380B2 (en) | System and method for immersive telecommunications | |
| WO2015122108A1 (ja) | 情報処理装置、情報処理方法及びプログラム | |
| US20200241299A1 (en) | Enhanced reality systems | |
| CN113822970A (zh) | 直播控制方法、装置、存储介质与电子设备 | |
| CN110832442A (zh) | 注视点渲染系统中的优化的阴影和自适应网状蒙皮 | |
| US12356054B2 (en) | Video data generation method and apparatus, electronic device, and readable storage medium | |
| US12062207B2 (en) | Low bandwidth transmission of event data | |
| CN109529350B (zh) | 一种应用于游戏中的动作数据处理方法及其装置 | |
| CN114630173A (zh) | 虚拟对象的驱动方法、装置、电子设备及可读存储介质 | |
| US20240185496A1 (en) | Systems and Methods for Immersive Digital Experiences | |
| WO2022209220A1 (ja) | 画像処理装置および画像処理方法、並びに記録媒体 | |
| CN115937371B (zh) | 人物模型的生成方法和系统 | |
| CN117765157A (zh) | 一种虚拟人物表情驱动方法及重建设备 | |
| CN117475043A (zh) | 动捕数据的处理方法、装置、电子设备及存储介质 | |
| JP2023169697A (ja) | 情報処理装置、情報処理方法およびプログラム | |
| JP7458731B2 (ja) | 画像生成システム、画像処理装置、情報処理装置、画像生成方法、及びプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication |