用于实时复杂角色动画和交互性的系统和方法

文档序号:1327767 发布日期:2020-07-14 浏览:11次 >En<

阅读说明:本技术 用于实时复杂角色动画和交互性的系统和方法 (System and method for real-time complex character animation and interactivity ) 是由 纳撒尼尔·克里斯托弗·德克森 迈克尔·斯科特·哈钦森 艾瑞克·理查德·达内尔 劳伦斯·戴维·卡 于 2018-07-25 设计创作,主要内容包括:系统、方法和非暂时性计算机可读介质可识别在实时沉浸式环境中被呈现给用户的虚拟角色。确定要应用于虚拟角色的第一动画。确定将与第一动画同时应用于虚拟角色的非语言沟通动画。基于第一动画和非语言沟通动画对虚拟角色进行实时动画制作。(Systems, methods, and non-transitory computer-readable media can identify a virtual character presented to a user in a real-time immersive environment. A first animation to be applied to the virtual character is determined. A non-verbal communication animation is determined that is to be applied to the virtual character concurrently with the first animation. Real-time animation of the virtual character is performed based on the first animation and the non-verbal communication animation.)

用于实时复杂角色动画和交互性的系统和方法

技术领域

本技术涉及数字角色动画的领域。更具体地,本技术涉及用于实时复杂角色动画和交互性的技术。

背景技术

虚拟现实(VR)和增强现实(AR)是用于娱乐和讲故事的新媒体,使内容创建者能够以其他媒体无法实现的方式将观看者沉浸其中。VR和AR是强大的沉浸式平台,可以用观看者可以理解的角色来讲述引人入胜的故事,就像人们在文学或电影中所经历的那样。数字角色(digital character,数字人物),如VR和AR体验中使用的那些,通常始于中性化的3D模型(通常称为“默认模型”)。角色“骨架(rig)”是一种数字化的木偶,可以使角色模型产生动画效果(animated),从而使它们能够以可信的方式移动、行动和表现感情,从而给人以生命的幻觉。角色骨架将静态默认角色模型作为输入,然后根据动画输入控件(例如,肘部弯曲了多少度或角色的嘴巴微笑了多少),对这些模型应用一组过程修改,从而生成随时间变化作动画的有表现力的变形角色。角色骨架通常包含一组动画控件,这些控件驱动骨骼关节或骨头的低层层次结构或集合。此过程通常称为角色的运动系统。然后,变形层使用多种技术将角色模型附加或绑定到这些动画骨骼。

发明内容

本公开的各种实施例可以包括系统、方法和非暂时性计算机可读介质,被配置为接收与虚拟可变形几何模型相关联的虚拟模型信息。虚拟模型信息包括:复杂骨架,其包括多个变换和由默认模型定义的第一多个顶点;以及简化骨架,其包括第二多个变换和第二多个顶点。第二多个顶点对应于由默认模型定义的第一多个顶点。基于将应用于虚拟可变形几何模型的动画,使简化骨架和复杂骨架变形。计算偏移数据集。偏移数据集包括对于第一多个顶点中的每个顶点而言的顶点与第二多个顶点中的对应顶点之间的偏移。

在实施例中,动画包括多个帧,以及偏移数据集包括对于第一多个顶点中的每个顶点并且对于多个帧中的每个帧而言的顶点与第二多个顶点中的对应顶点之间的偏移。

在实施例中,接收动画将在沉浸式环境中实时应用于虚拟可变形几何模型的指示。

在实施例中,基于动画使简化骨架实时变形,并且基于简化骨架的变形和偏移数据集而生成复杂模型变形。

在实施例中,第二多个变换表示第一多个变换的子集。

在实施例中,第一多个变换包括多个变形变换和多个控制变换,并且第二多个变换包括多个变形变换的子集。

在实施例中,第一多个变换中的至少一部分被分层次地布置。

在实施例中,第二多个变换中的至少一部分被分层次地布置。

在实施例中,简化骨架还包括蒙皮权重集,该蒙皮权重集定义了第二多个变换与第二多个顶点之间的关系。

在实施例中,第二多个顶点中的每个顶点与第二多个变换中的不超过四个变换相关联。

本公开的各种实施例可以包括系统、方法和非暂时性计算机可读介质,被配置为接收与虚拟可变形几何模型相关联的虚拟模型信息。虚拟模型信息包括:复杂骨架,其包括多个变换和由默认模型定义的第一多个顶点;以及简化骨架,其包括第二多个变换和第二多个顶点。第二多个顶点对应于由默认模型定义的第一多个顶点。基于将应用于虚拟可变形几何模型的动画使简化骨架和复杂骨架变形。计算偏移数据集。偏移数据集包括针对第一多个顶点中的每个顶点而言的顶点与第二多个顶点中的对应顶点之间的偏移。偏移数据集的压缩版本被导出到实时处理引擎,以对虚拟可变形几何模型进行实时动画制作(实时添加动画效果)。

在实施例中,生成偏移数据集的压缩版本。

在实施例中,生成偏移数据集的压缩版本包括:通过针对第一多个顶点的每个顶点,跟踪针对所述顶点的偏移在整个所述动画期间的最小和最大的X、Y和Z偏移值,来计算第一多个顶点中的每个顶点的紧边界框(tight bounding box)。

在实施例中,生成偏移数据集的压缩版本还包括:基于紧边界框,使用16位或更少的整数来量化偏移数据集中的偏移,以生成偏移数据的低位量化。

在实施例中,生成偏移数据集的压缩版本还包括:通过将X、Y和Z偏移值映射到颜色分量值,将偏移数据的低位量化与视频压缩技术相结合。

在实施例中,生成偏移数据集的压缩版本还包括:通过将X、Y和Z偏移值映射到音频流的通道,将偏移数据的低位量化与有损或无损音频压缩技术结合。

在实施例中,生成偏移数据集的压缩版本还包括:通过将X、Y和Z偏移值映射到照片中像素的颜色分量值并使用顺序动画帧的相邻像素,将偏移数据的低位量化与有损或无损照片压缩技术结合。

在实施例中,生成偏移数据集的压缩版本还包括:将第一多个顶点中的每个顶点与视频流的像素相关联。

在实施例中,将第一多个顶点中的每个顶点与视频流的像素相关联包括:通过使用纹理查找或通过使用索引方式将第一多个顶点中的每个顶点映射到纹理位置,来将第一多个顶点中的每个顶点与视频流的像素相关联。

在实施例中,生成偏移数据集的压缩版本包括:将偏移数据集聚类以生成多个簇(cluster),并且进一步地,其中,将偏移数据集聚类包括使用K-均值聚类偏移数据集。

在实施例中,生成偏移数据集的压缩版本包括:将偏移数据集聚类以生成多个簇;并且将主成分分析(PCA)应用于多个簇中的每个簇。

在实施例中,生成偏移数据集的压缩版本包括:使用近似参数化分析函数表示偏移数据集的偏移的随时间的变化;并仅保留(retaining)近似参数化分析函数的参数的子集。

本公开的各种实施例可以包括系统、方法和非暂时性计算机可读介质,被配置为识别将在实时沉浸式环境中被制作动画(to be animated,被添加动画效果)的虚拟可变形几何模型。虚拟可变形几何模型包括虚拟模型网格,该虚拟模型网格包括多个顶点、多个边和多个面。在一个或多个迭代中对虚拟模型网格进行迭代地细化以生成细化网格。一个或多个迭代中的每一个迭代增加顶点的数量、边的数量和/或面的数量。在实时沉浸式环境内对虚拟可变形几何模型实时制作动画(real-time animation,实时添加动画效果)期间呈现细化网格。

在实施例中,实时沉浸式环境是虚拟现实环境或增强现实环境。

在一个实施例中,细化网格包括第二多个顶点,并且第二多个顶点中的每个顶点是多个顶点中的顶点的线性加权组合。

在实施例中,顶点的每个线性加权组合包括一个或多个权重,并且该方法还包括:在实时沉浸式环境内对虚拟可变形几何模型实时制作动画之前预先计算每个线性加权组合的一个或多个权重。

在实施例中,每个线性加权组合限于预定义的最大数量的权重。

在实施例中,对于第二多个顶点中具有的多个权重比预定义的最大数量的权重还多的每个顶点,基于权重的绝对大小从多个权重中选择用于包括在线性加权组合中的权重的子集。

在实施例中,为第二多个顶点中的每个顶点计算近似法线向量和近似切线向量。

在实施例中,第二多个顶点的第一顶点子集中的每个顶点正好具有四个相邻(adjacent,邻近)的顶点;为第一顶点子集中的每个顶点计算近似法线向量包括:对于第一顶点子集的每个顶点,基于与顶点相邻的四个顶点计算近似法线向量;以及为第一顶点子集的每个顶点计算近似切线向量包括:针对第一顶点子集中的每个顶点,基于与顶点相邻的四个顶点计算近似切线向量。

在实施例中,第二多个顶点的第一顶点子集中的每个顶点具有大于四个的相邻顶点;为第一顶点子集中的每个顶点计算近似法线向量包括:对于第一顶点子集中的每个顶点,选择与顶点相邻的四个顶点,并基于所选择的与顶点相邻的四个顶点计算近似法线矢量;以及为第一顶点子集中的每个顶点计算近似切线向量包括:针对第一顶点子集中的每个顶点,基于所选择的与顶点相邻的四个顶点来计算近似切线向量。

在实施例中,第二多个顶点的第一顶点子集中的每个顶点具有少于四个的相邻顶点;为第一顶点子集中的每个顶点计算近似法线向量包括:对于第一顶点子集中的每个顶点,确定与该顶点相关联的四个顶点的集合,该四个顶点的集合包括与该顶点相邻的所有顶点以及替换任何丢失的顶点的该顶点本身,并基于该四个顶点的集合计算该顶点的近似法线向量;以及为第一顶点子集中的每个顶点计算近似切线向量包括:针对第一顶点子集中的每个顶点,基于四个顶点的集合来计算近似切线向量。

本公开的各种实施例可以包括系统、方法和非暂时性计算机可读介质,被配置为识别在实时沉浸式环境内被呈现给用户的虚拟角色。确定要应用于虚拟角色的第一动画。确定将与第一动画同时应用于虚拟角色的非语言沟通动画。基于第一个动画和非语言沟通动画对虚拟角色实时制作动画(实时添加动画效果)。

在实施例中,基于与用户相关联的用户输入来确定非语言沟通动画。

在实施例中,用户输入包括与在沉浸式环境中跟踪的用户上的一组特征位置相关联的位置和方向信息。

在实施例中,非语言沟通动画包括:使虚拟角色基于位置和方向信息观看用户上的一组特征位置中的一个或多个特征位置的观看动画。

在实施例中,非语言沟通动画包括使虚拟角色交替地观看实时沉浸式环境中的两个或更多个对象的观看动画,其中,两个或更多个对象包括以下各项中的至少两个:用户的头部、用户的手、用户身体或面部的特征位置、实时沉浸式环境中的另一用户、实时沉浸式环境中的第二个虚拟角色或实时沉浸式环境中的模拟对象。

在实施例中,位置和方向信息包括:与用户的头部相关联的头部位置和方向信息,并且非语言沟通动画包括使虚拟角色基于头部位置和方向信息来镜像用户的头部运动的镜像动画。

在实施例中,位置和方向信息还包括与用户的一只或多只手相关的手的位置和方向信息。

在实施例中,基于第一动画和非语言沟通动画对虚拟角色实时制作动画包括将非语言沟通动画与第一动画分层。

在实施例中,基于与沉浸式环境相关联的虚拟环境状态信息来确定非语言沟通动画。

在实施例中,非语言沟通动画包括基于虚拟环境状态信息来增加虚拟角色的活动程度。

应当理解,根据附图和以下详细描述,所公开技术的许多其他特征、应用、实施例和/或变化将是显而易见的。在不脱离所公开技术的原理的情况下,可以采用本文描述的结构、系统、非暂时性计算机可读介质和方法的额外和/或替代实现方式。

附图说明

图1A示出根据本公开的实施例的包括角色动画模块的示例系统。

图1B示出根据本公开的实施例的动画剪辑数据的示例的框图表示。

图2示出根据本公开的实施例的示例数据导出模块。

图3示出根据本公开的实施例的示例非语言角色提示模块。

图4示出根据本公开的实施例的示例复杂模型变形模块。

图5示出根据本公开的实施例的示例模型镶嵌模块。

图6示出根据本公开的实施例的与模型镶嵌相关联的示例场景。

图7示出根据本公开的实施例的与法向矢量的近似相关联的示例场景。

图8示出根据本公开的实施例的与法向矢量的近似相关联的示例场景。

图9示出根据本公开的实施例的与法向矢量的近似相关联的示例场景。

图10示出根据本公开的实施例的用于生成细分表面的示例流程图。

图11示出根据本公开的实施例的用于计算复杂角色模型和简单角色模型的顶点之间的顶点偏移数据的示例方法。

图12示出根据本公开的实施例的用于计算复杂角色模型和简单角色模型的顶点之间的压缩的顶点偏移数据的示例方法。

图13示出根据本公开的实施例的从基础网格生成细化网格的示例方法。

图14示出根据本公开的实施例的用非语言沟通动画来增强虚拟角色动画的示例方法。

图15示出根据本公开的实施例的可以在各种场景中使用的计算机系统或计算装置的示例。

附图仅出于说明的目的描述了所公开技术的各种实施例,其中,附图使用相同的附图标记来标识相同的元件。本领域技术人员将从下面的讨论中容易地认识到,在不脱离本文描述的公开技术的原理的情况下,可以采用附图中所示的结构和方法的替代实施例。

具体实施方式

实时复杂模型动画和交互性

虚拟现实(VR)和增强现实(AR)是用于娱乐和讲故事的新媒体,使内容创建者能够以其他媒体无法实现的方式将观看者沉浸其中。VR和AR是强大的沉浸式平台,可以用观看者可以共情的角色(character,人物)来讲述引人入胜的故事,就像人们在文学或电影中所经历的那样。但是,与电影体验不同,VR和AR为数字角色提供了与观看者实时交互并对观看者做出反应的机会,因为观看者完全沉浸在故事的虚拟世界中。

数字角色通常始于中性化的3D模型(通常称为“默认模型”)。角色“骨架(rig)”是一种使角色模型能够被制作动画的数码木偶,使得角色模型能够均以可信的方式移动、行动和表现感情,从而给人以生命的幻觉。角色骨架将静态默认角色模型作为输入,然后根据动画输入控件(例如,肘部弯曲了多少度或角色的嘴巴微笑了多少),对这些模型应用一组过程修改,从而生成随时间变化制作动画的有表现力的变形角色。角色骨架通常包含一组动画控件,这些控件驱动低层的骨骼关节或骨头的层次结构或集合。此过程通常称为角色的运动系统。然后,一个或多个变形层使用多种技术将角色模型附加或绑定到这些动画骨骼。

角色动画的常规方法对实时应用(例如视频游戏、VR和/或AR)和非实时应用(例如故事片)通常需要不同质量级别。可以理解,大多数实时应用固有的计算限制导致实时应用通常比非实时应用使用质量低的动画。视频游戏通常会以每秒30或60帧(FPS)渲染单个视点。VR项目对计算的要求甚至更高,因为它们通常会以90FPS渲染两个视点(每只眼睛一个)。这样,VR和AR以及大多数视频游戏的常规方法,都使用蒙皮和变形目标(morphtarget)的变体,它们是可导致产生较低质量的角色动画但经过优化可实时运行的简单角色变形技术。在用于实时应用的角色骨架中,“蒙皮”是一种通常用于将默认模型的皮肤绑定到骨架的骨头的技术。每个骨头与受该骨头的运动影响的皮肤上的一组顶点相关联。每个皮肤顶点可受到多个骨头的影响。用于实时应用的角色骨架通常会限制每个皮肤顶点可以与之关联的骨头的数量以及骨架中的总骨头的数量,以使角色可以实时变形。在实时角色骨架中,经常将面部表情表达(capture,刻画,捕捉)为一组混合形状或变形目标。面部骨架可由动画师启用或禁用混合(blended on or off)的许多建模面部形状(例如微笑姿势)组成。

相反,在用于故事片的角色骨架中,与实时动画相关联的约束不适用,因此,可以应用更广泛的技术来生成动画角色模型。可以使用一组更复杂的变形器以及多个变形层来表达肌肉组织、脂肪和皮肤的复杂性,或保持角色的形状或轮廓的特定视觉品质。面部表情不限于混合形状,并且可以包含许多变形层以表达面部的所有复杂的细节。在许多情况下,复杂角色骨架可运行基于物理的模拟,以更准确地描绘在人体构造顶部滑动的长长的头发、衣服、肌肉和皮肤。复杂的故事片骨架不需要实时运行,且通常使用分布式计算机集群(尤其是有模拟元素的)来离线计算最终角色模型。由于对实时处理固有的计算资源的限制,实时应用(如游戏和VR)中的常规的角色动画方法导致动画在非实时应用,例如故事片中缺乏角色动画的质量、复杂性和丰富性。

植根于计算机技术的改进方法克服了与计算机技术领域中具体出现的常规方法相关的前述和其他缺点。通常,本技术提供了一种针对任何模拟的沉浸式环境(包括VR和AR)而设计的创新系统,而且还扩展到了其他沉浸式场景,例如全息技术和脑机接口。为了简化起见,沉浸式环境可以适当地统称为VR。本技术可以适用于许多领域,例如娱乐、医疗、培训和教育环境。尽管将参考VR和AR娱乐描述本文描述的许多功能,但应理解,本技术可以应用于娱乐以外的广泛应用的任何模拟或沉浸式环境,并且本文讨论的特征代表一个特定的示例应用。在各种实施例中,本技术提供了一种设计用于VR和AR(为简化起见,在适当时可以统称为VR)娱乐的创新系统,该系统可以创建高质量的动画,包括角色动画,具有人们希望从故事片或其他非实时动画应用获得的但可以在VR计算设备上实时运行的所有视觉保真度和动作细腻度。本技术实现了既具有高表现力又对用户输入具有高响应性的VR角色表现。本技术可以成为创建将用户置于故事中的真正身临其境的VR体验的基础,其中用户是角色,并且可以与其他角色互动并参与叙述。本技术使VR体验能够将电影的共鸣与游戏的作用(agency)相结合,但又具有现实生活的激励。

与常规方法相比,本技术的一些优点包括:

·虚拟可变形几何模型的高质量虚拟表示,包括具有模拟运动的虚拟环境的角色和其他方面;

·可以响应用户输入的为VR实时渲染的高质量的角色表现,包括视觉保真度和动画(运动)质量;

·可以动态响应用户输入的以实时VR体验运行的故事片质量的面部表情;

·在实时VR体验中运行的皮肤、衣服和头发的角色模拟;

·在实时VR体验中运行的平滑细分曲面模型;

·角色的视觉保真度不受可以在实时游戏引擎中运行的快速但低质量的技术(例如蒙皮)的限制;

·将角色动画管线(pipeline)与实时引擎管线解耦;以及

·在绑定到高端计算机的VR头戴式耳机上运行的能力,以及缩小规模以在功能更弱的设备(如移动驱动的VR头戴式耳机设备、AR设备和其他沉浸式技术)上运行的能力。

本技术使艺术家能够创作出具有人们所期望的故事片所有细微效果的高质量角色动画,但是可以在实时引擎中实时运行,其中结果可以由实时引擎在程序上进行修改。通过允许在动画创建工具中任意复杂的角色设置,本技术消除了对实时动画角色表现的限制。所公开的实时引擎管线通过基于游戏逻辑和用户输入将循环动画混合在一起来产生完整的角色交互性,以产生变形的复杂角色模型,该角色模型呈现为平滑的细分表面,而不是硬边多边形模型。下面提供与所公开的技术有关的更多细节。

图1A示出根据本公开的实施例的包括角色动画模块102的示例系统100。角色动画模块102可以在运行在一个或多个计算设备上的一个或多个软件应用中实现。该图和本文中所有图所示的组件(例如,模块、元件等)仅是示例性的,并且其他实施例可以包括附加的、更少的、集成的或不同的组件。某些组件可能未显示,以免混淆相关细节。在各种实施例中,结合角色动画模块102描述的一个或多个功能可以以任何合适的组合来实现。

如图1A的示例所示,角色动画模块102可以包括动画创建模块104和实时引擎模块116。也如图1A的示例所示,动画创建模块104可以包括复杂角色骨架模块106、简化角色骨架模块108、动画模块110和数据导出模块112。如图1A的示例进一步所示,实时引擎模块116可以包括数据导入模块118、动画驱动器模块120、角色交互约束模块122、非语言角色提示模块124、简化角色骨架动画模块126、复杂模型变形模块128、模型镶嵌模块(modeltessellation module,模型细分曲面模块)130和渲染管线模块132。在一个实施例中,复杂模型变形模块128、模型镶嵌模块130和/或渲染管线132可以部分或全部使用图形处理单元(GPU)134来实现。

在一些实施例中,本文描述的各种模块和/或应用可以部分或全部地实现为软件、硬件或其任何组合。通常,如本文所讨论的,模块和/或应用可以与软件、硬件或其任何组合相关联。在一些实施例中,模块和/或应用的一个或多个功能、任务和/或操作可以由软件例程、软件进程、硬件和/或它们的任意组合来进行或执行。在一些情况下,本文描述的各种模块和/或应用可以部分或整体地实现为在一个或多个计算设备或系统上运行的软件,例如在用户或客户端计算设备上或服务器上运行的软件。例如,本文描述的一个或多个模块和/或应用,或其至少一部分,可以作为在用户计算设备或客户端计算系统上运行的应用程序(例如,app)、程序或小程序等或在其内部实现。在另一示例中,可以使用包括一个或多个服务器(例如网络服务器或云服务器)的一个或多个计算设备或系统来实现一个或多个模块和/或应用或其至少一部分。应该理解的是,可以有许多变化或其他可能性。

复杂角色骨架模块106可以被配置为接收和保持定义用于数字虚拟角色的复杂角色骨架的数据。通常,复杂角色骨架可以与具有多个顶点的默认角色模型关联和/或包括该默认角色模型。复杂角色骨架还可以包括一组动画控件,该动画控件驱动基础的变换集(例如,层次结构,集合),从而定义3D位置和方向。如前所述,这些变换通常表示为角色骨架中的骨骼关节或骨头。复杂骨架的骨骼关节使默认角色模型中的顶点变形和移动这些顶点。在某些实施例中,骨骼关节可以包括3D点位置(没有方向变换信息)。在某些实施例中,骨骼关节可以包括点位置和完整变换的组合。在某些实施例中,关节的集合可以按层次构造。但是,在其他实施例中,关节的集合可以不分层次地布置。此外,本公开技术可以应用于驱动几何变形的点和变换的任何任意组。尽管将参考由骨骼关节驱动的角色变形来描述此处描述的许多特征,但应理解,本技术可以应用于由点和变换的任意集驱动的任何可变形几何模型,并且本文讨论的虚拟角色模型的变形代表一个特定的示例应用。骨架艺术家可以创建复杂的角色骨架,以在各种实施例中,可以利用多种技术,包括:一系列变形器、多个变形层和基于物理的模拟。在某些实施例中,变形关节的集从骨骼控制关节派生而来,这些变形关节驱动几何变形层。变形关节提供了变形层与骨骼组件的分离和封装。在某些实施例中,复杂角色骨架可以采用多个变形层来表达各种材料的复杂性,例如肌肉组织、脂肪和皮肤,或保持角色的形状或轮廓的特定视觉品质。在某些实施例中,复杂角色骨架包含对应于各种变形层的多个变形关节集。在某些实施例中,骨骼关节和变形关节的组合驱动几何变形。复杂角色骨架还可以包括面部表情,其可包含许多变形层以表达面部的所有复杂细节。在各个实施例中,复杂角色骨架可以运行基于物理的模拟,以更准确地描绘角色的元素,例如在人体构造顶部滑动的长发、衣服、肌肉、皮肤等。复杂角色骨架还可以包含复杂的面部动画设置,以表达夸张的面部表情和细微的细节。如将在本文中更详细描述的,所公开的技术通过将前端角色设置、动画和管线(即动画创建模块104)与在实时处理引擎(即实时引擎模块116)中运行的实时角色系统分离,消除了对角色骨架的任何限制。这样,在各个实施例中,复杂角色骨架可除了包括默认角色模型作为输入和关节层次结构外不具有特定的数据要求。

简化角色骨架模块108可以被配置为接收、保持和/或生成定义简化角色骨架的数据以表示数字虚拟角色。在实施例中,简化角色骨架可以与由复杂角色骨架模块106生成、接收和/或保持的复杂角色骨架相关联。在实施例中,简化角色骨架可以包括一组骨骼关节变换(类似于复杂角色骨架中的骨骼关节)。在各种实施例中,简化的骨骼关节变换可以独立于复杂的角色骨架而定义,并且可以是分层次的,也可以不是分层次的。在一个实施例中,简化角色骨架可以是复杂角色骨架的简化版本。例如,简化角色骨架可以包括表示复杂角色骨架骨骼中存在的骨骼关节的子集的简化骨骼,并且从复杂角色骨架骨骼中排除所有动画控制数据(例如,从复杂角色骨架骨骼中排除一个或多个控制关节)。在实施例中,简化角色骨架可以包括简化的骨骼关节层次结构、定义默认角色模型的默认模型信息(例如,这可以是复杂角色骨架中包括的相同的默认角色模型)、定义了默认角色模型中简化骨骼与顶点之间的关系的蒙皮权重贴图、以及一个或多个混合形状。在实施例中,简化角色骨架可以是有限的蒙皮的角色骨架,其中默认角色模型中的每个顶点可以附接到简化的骨骼中不超过最大数量的骨头,例如不超过4个骨头。在某些实施例中,除了由实时引擎模块116支持的蒙皮(例如网格或平滑变形器)之外,简化角色骨架还可以包括更复杂的变形器。在某些实施例中,简化角色骨架可以由骨架艺术家手动创建。在某些实施例中,可以通过使用统计或机器学习方法从复杂的角色骨架中自动导出简化角色骨架。例如,可以通过使用健美操动画姿势构建训练集,其中目标是复杂角色骨架的变形模型控制顶点。可以定义计算复杂的变形控制顶点和简化控制顶点之间的差异的成本函数(cost function,代价函数)。然后可以学习顶点附件和输出骨架蒙皮的权重贴图,以最小化此成本函数。

动画模块110可以被配置为接收用于复杂角色骨架和/或简化角色骨架的动画数据。给定项目的动画可以分为一系列镜头或剪辑。给定的镜头或剪辑可以包括一个或多个虚拟角色,每个虚拟角色由复杂角色骨架和简化角色骨架表示和/或与之关联。对于给定的镜头,动画师可以对一个或多个角色的角色骨架(复杂和/或简化的)进行手工制作动画或制作关键帧(keyframe,关键画格),或者动画可以是从演员的现场表演中捕获的动作或者可以是多种技术的结合。在某些实施例中,一个镜头可以表示单个角色动作(也可以称为动画循环或循环动画(cycle animation))。动画模块110可以被配置为输出一个或多个镜头的动画数据。镜头的输出动画数据可以包括每个虚拟角色的简化角色的动画骨骼关节数据以及任何其他相关的场景数据(例如道具和环境元素的位置)。如上所述,使用本技术对虚拟角色进行动画处理提供了重要的好处,即与常规的实时角色动画处理方法不同,对复杂角色骨架没有任何限制。这样,与常规管线相比,动画师能够实现更强的角色表现。

数据导出模块112可以被配置为导出用于单个或多个角色骨架的角色骨架数据和用于一组动画的角色动画数据114。角色骨架数据和角色动画数据114可以被导出以供实时处理引擎(例如,实时引擎模块116)使用。角色骨架数据可以包括例如角色默认模型信息(例如顶点位置、网格拓扑)、关节层次结构数据、简化角色骨架蒙皮权重贴图、与用于简化角色骨架的任何额外变形器有关的数据等。在一个实施例中,角色骨架数据可以每个角色导出一次(即,不是每帧动画导出一次)。

在实施例中,可以为每帧动画的每个角色导出与要应用于虚拟角色的一个或多个动画有关的角色动画数据。角色动画数据的一些示例可以包括相对于简化骨架的关节层次结构和角色模型控制顶点的局部空间动画关节变换。在一个实施例中,角色模型控制顶点可以包括作为空间中相对于简化角色骨架的网格的偏移位置而存储的复杂角色网格数据,该空间为每个顶点的蒙皮权重贴图关节的加权平均值。如将在下面更详细地描述的,可以为每个动画中每个帧,计算角色模型中的每个顶点的偏移(offset,偏移量)。偏移可由实时引擎模块116用于通过使简化角色骨架变形,然后将偏移应用于角色模型中的顶点来实现复杂角色骨架的变形。数据导出模块112可以将该数据本地存储在磁盘上,或者可以将其发送到远程服务器。导出每帧顶点偏移数据可导致将大型数据集存储在磁盘上或通过网络传输到远程服务器。本技术的各种实施例提供多种形式的有损或无损压缩以减小导出数据大小。压缩技术的一些示例可以包括通过曲线拟合动画帧上的顶点偏移来随时间减少数据,或者通过使用统计或机器学习技术(例如主成分分析(PCA))来减少存储的顶点数。下面将参考图2提供关于数据导出模块112的更多细节。

数据导入模块118可以被配置为导入角色骨架数据和角色动画数据114。在实施例中,数据导入模块118可以根据需要通过异步数据管理器加载由数据导出模块112导出的角色骨架数据和角色动画数据114。在各种实施例中,异步数据管理器可以从本地磁盘或从远程服务器加载数据。在实施例中,异步数据管理器可以将角色骨架数据和角色动画数据导入到实时游戏引擎(例如,实时引擎模块116)中。

如前所述,角色动画数据可以包括大量数据,因为它包括用于动画的每一帧的一个或多个角色的数据,例如偏移数据。在实施例中,可以对角色动画数据进行调节,以便可以在运行时快速使用它。图1B提供了如何以这种方式调节角色动画数据的框图。如上所述,角色动画数据可以包括与一个或多个动画剪辑有关的数据。在图1B的示例中,一组动画剪辑数据包括简化骨架的关节动画数据(例如,用于简化骨架的关节层次结构的动画关节变换)和压缩的顶点动画数据(例如,每个模型控件相对于简化骨架的顶点偏移)。将压缩的顶点动画数据切成块(例如256个帧),这些块可以在运行时异步传输到GPU(例如GPU 134)而不会停顿。该动画剪辑数据可以从本地计算机提供或者可以从基于云的服务器流式传输。为了确保将角色动画数据流传输到GPU不会造成故障,数据导入模块118可以实施集中式调度器,以根据需要对动画的切片进行排队和流传输。如上所述,角色动画数据可以包括与多个动画剪辑有关的数据。在某些实施例中,所有动画剪辑的第一块(例如256个帧)可以在VR应用启动时被流传输到GPU存储器。在某些实施例中,数据导入模块118可以流式传输本地存储在VR设备上的角色动画数据,以获得最佳的加载性能。但是,这可能导致大量的VR应用占用空间(例如,大量的本地存储使用量)。或者,数据导入模块118可以从远程服务器流式传输角色动画数据。在某些实施例中,根据在VR应用使用期间的需要,在预期流传输到GPU时,可以获取额外块并将其存储在本地,而不再需要的块可以从本地存储中丢弃,从而平衡了本地存储的可用性以及本地计算机与基于云的服务器之间的流传输速度。

返回图1A,可以将动画驱动器模块120配置为驱动动画循环。实时处理引擎提供了许多机制来驱动或混合不同的循环动画。例如,基于时间轴的线性编辑工具可用于创建叙事体验,例如游戏中的电影艺术。状态机可以允许交互式游戏在不同的周期之间融合,并基于用户的交互来创建复杂的角色行为。在某些情况下,工程师还可以对过程人工智能(AI)进行编程,以获得更复杂的角色响应。

角色交互约束模块122可以被配置为在角色骨架关节位置上放置约束。为了在循环动画之间混合(blend,融合)并创建可信的角色响应,期望在角色的关节位置放置约束。为了在一组动画循环之间进行混合,角色交互约束模块122可以在一组关节层次结构之间线性内插。为了放置诸如使角色看起来在指定位置处的其他约束,角色交互约束模块122可以直接修改特定的关节位置(例如颈部和头部关节)。本技术还实现了丰富的约束集,包括例如支持关节层次结构的区域分层以一起实现动画循环的分层(即,一个在另一个之上)。

非语言角色提示模块124可以被配置为基于用户和场景输入来修改和/或调整角色骨架关节位置。人类使用潜意识的沟通提示来建立情感联系。这些非语言提示对于在现实世界中建立有意义的关系至关重要。VR具有独特的功能,可以使观看者完全沉浸在体验中,使观看者可以通过虚拟化身成为体验中的角色,并忠实地跟踪观看者的运动(例如,使用头部和手部位置)。这些是将有意义的潜意识沟通提示构建到VR系统中的关键要素,而在传统电影或游戏中是不可能的。在实施例中,非语言角色提示模块124可以使用用户输入,例如用户的头和手输入,来将复杂的非语言角色响应合并到VR动画中。用例示例包括:

1.看着用户/保持眼睛接触

2.反映用户的行为

3.活动增加

4.动态表演。

如所提及的,非语言角色提示模块124可以接收用户输入,以通过修改角色骨架的一个或多个关节和/或顶点来生成非语言沟通动画。在实施例中,非语言角色提示模块124可以从实时跟踪用户的VR平台接收用户输入数据。例如,非语言角色提示模块124可以使用头戴式显示器(HMD)的位置和方向以及手部控制器的位置和方向来准确地跟踪用户的头部和手的位置和方向。在另一个实施例中,非语言角色提示模块124可以接收附加的跟踪输入,诸如与并入VR体验中的附加真实世界对象的位置和方向有关的数据。在另一个实施例中,非语言角色提示模块124可以接收针对用户的全身和面部跟踪,从而向系统提供了更复杂的用户输入。在另一实施例中,非语言角色提示模块124可以接收来自用户的一个或多个用户输入,这些用户通过诸如舌头控制器、眼睛扫描仪或脑机接口之类的辅助技术来表达他们的情绪。在另一实施例中,非语言角色提示模块124可以在共享的社交体验中从多个用户接收一个或多个用户输入。

非语言角色提示模块124还可以被配置为从VR场景接收输入并且基于场景输入生成非语言沟通动画。例如,非语言角色提示模块124可以利用虚拟角色关节位置作为输入以及其他环境输入,例如VR场景中各种道具的位置。该系统还可以使用与VR体验相关的状态信息。

非语言角色提示模块124输出的非语言沟通动画数据可以使非语言沟通动画基于用户和场景输入而被分层放置在虚拟角色的动画表演上。例如,可以确定将要执行的虚拟角色的源动画或基础动画,并且还可以确定单独的非语言沟通动画。源动画可以使虚拟角色以第一方式进行动画处理(例如,可以为动画骨架的一组关节定义第一组方向和/或位置)。非语言沟通动画数据可以导致动画骨架的一个或多个关节位置被进一步调整以创建一组修改的关节位置。例如,基本动画可以使虚拟角色走向用户。单独的镜像非语言沟通动画可以使虚拟角色在虚拟角色向用户行走时镜像用户。或者单独看起来的非语言沟通动画可以使虚拟角色在虚拟角色向用户行走时保持与用户的眼睛接触。程序关节修改提供了一种直观、直接的机制来修改现有动画。在另一实施例中,可以将一个或多个非语言沟通动画和层混合在一起。动画的混合或分层可以出现在所有动画骨架关节上,也可以仅出现在关节的特定子集或区域上。这种方法使艺术家能够为非语言表演明确地制作设置。混合的性质可以任意复杂。下面将参考图3提供关于角色非语言沟通模块124的更多细节。

简化角色骨架动画模块126可以被配置为接收动画驱动器(例如,来自动画驱动器模块120)、交互约束(例如,来自角色交互约束模块122)以及非语言沟通动画数据(例如,来自非语言角色提示模块124)作为输入,并基于这些输入为简化角色骨架关节层次结构设置动画。简化角色骨架动画模块126可以从动画驱动器模块120接收一组动画剪辑、混合权重和时间。可以从数据导入模块118接收用于这组动画剪辑的角色动画数据。可以从非语言角色提示模块124接收对动画数据的修改。接下来,简化角色骨架动画模块126可以基于动画和混合来更新简化角色骨架关节层次结构。最后,简化角色骨架动画模块126可以基于从角色交互约束模块122接收的交互约束来修改关节位置。

简化角色骨架动画模块126可以被配置为触发、混合和/或分层实时引擎中的一个或多个动画。这可以通过多种方式来实现,包括通过使用状态机、非线性时间轴工具和/或基于事件的触发器。动画可以全部或部分地使用预定义的遮罩进行组合和混合。这提供了创建分层表演的能力。例如,可以基于用户输入或动作来修改面部表情或手势。简化角色骨架动画模块126可以混合局部关节变换并计算顶点偏移的权重以驱动复杂模型变形模块128(在下面更详细地讨论)。

复杂模型变形模块128可以被配置为基于由简化角色骨架动画模块126进行的简化角色骨架动画和顶点偏移数据来计算最终角色模型变形。如上所述,由数据导出模块112导出并由数据导入模块118导入的角色动画数据可以包括针对动画的每一帧的每帧顶点偏移数据,该数据详细描述角色模型中每个顶点的每帧偏移。顶点偏移数据可用于模拟复杂角色骨架变形,尽管实际上仅对简化角色骨架实时变形了。对于角色网格上的每个控制顶点,复杂模型变形模块128可以将简化角色骨架关节蒙皮应用于修改后的关节层次结构以及任何额外简化角色骨架网格变形器(例如晶格或平滑),然后应用复杂角色骨架网格的顶点偏移。这可能涉及混合来自不同动画的顶点偏移集和/或基于动画驱动器分层来自不同动画的顶点偏移。下面将参考图4提供关于复杂模型变形模块128的更多细节。

模型镶嵌模块130可以被配置成镶嵌和渲染角色模型。可以对多边形模型进行镶嵌和渲染,但这会使最终角色变形看起来粗糙而多面(传统上与游戏角色相关联的外观)。为了使最终的模型显得平滑且保真度高(与故事片角色相关联的外观),在一个实施例中,模型镶嵌模块130可以实时细分并渲染卡特姆-克拉克(Catmull-Clark)细分表面。模型镶嵌模块130可以对变形的复杂模型的一个细分迭代进行镶嵌,并计算顶点法线和切线。然后可以将该细分的曲面细分的模型移交给渲染管线模块132以进行栅格化。下面将参考图5提供关于模型镶嵌模块130的更多细节。

图2示出根据本公开的实施例的示例数据导出模块202。在一些实施例中,图1A的数据导出模块112可以被实现为数据导出模块202。如图2的示例所示,数据导出模块202可以包括动画导出模块204和数据压缩模块206。

动画导出模块204可以被配置为生成和导出角色动画数据,以供实时处理引擎(例如,实时引擎模块116)使用。在一个实施例中,动画导出模块204可以接收至少两个输入:(1)复杂角色骨架的所有顶点的世界空间位置;以及(2)简化角色骨架。在一个实施例中,简化角色骨架可以包括:(a)简化骨骼,表示复杂角色骨架的重要变形关节的子集,但不包括控制关节;(b)角色模型的全分辨率副本;(c)一组蒙皮权重,它们提供了骨骼与模型之间的关系;以及(d)蒙皮模型(例如,线性混合蒙皮或双四元数蒙皮)。对于动画中的每个帧以及模型中的每个顶点,动画导出模块204可以被配置为计算复杂角色骨架和简化角色骨架相对于简化角色骨架的权重和影响变换矩阵的变形结果之间的偏移。

在一个实施例中,线性混合蒙皮等式(具有四个关节)可以表示为:

其中v'是变形的顶点位置,v是顶点的参考位置,w是给定关节的蒙皮权重,R是给定关节在其参考状态下的变换,以及M是给定关节在变形状态下的变换。

可以将总和分解以产生一个组合变换S:

然后可以计算出偏移(o):

o=v"(S-1)-v

其中v”是来自复杂角色骨架的顶点的世界空间位置,S是由简化角色骨架产生的组合变换,而v是顶点的参考位置。应该注意的是,S可以通过其他蒙皮方法,例如双四元数蒙皮来产生。S也可以从其他变形器(例如晶格和平滑操作)生成。

数据压缩模块206可以被配置为压缩要由数据导出模块202导出的数据。由数据导出模块202导出的数据(例如,角色骨架数据、角色动画数据)具有空间和时间上的一致性,从而使其高度可压缩的。

在某些实施例中,可以为动画上的角色模型的每个顶点计算紧边界框(tightbounding box),从而允许在保持亚毫米精度的同时使用低阶(例如8或16位)整数来量化顶点偏移。在一个实施例中,数据压缩模块206可以被配置为通过在整个动画中跟踪顶点的偏移的最小和最大X、Y和Z值来为模型中的每个顶点计算紧边界框。然后可以使用低阶整数将顶点偏移嵌入边界框。在某些实施例中,可以使用8位量化。在许多情况下,8位量化没有显示出明显的精度损失,而与数据的32位单精度浮点表示相比却提供了4倍的改进。在某些实施例中,低阶整数能够以非线性方式表示现实世界中的距离,使得它们可以更好地表达整个动画中的顶点偏移分布,在该动画中,观察到与边框的面相比,偏向边框的中心的偏差(例如,8位值不解释为整数,而是被视为具有1位符号、5位尾数和2位指数的浮点数)。在某些实施例中,低阶整数可以表示连续动画帧之间的真实世界距离增量(例如,具有值1、2、5和4的连续偏移表示为1,+1(=2-1),+3(=5-2)和-1(=4-5))。

在各个实施例中,数据压缩模块206可以配置为通过将X、Y和Z顶点偏移值映射到单个多通道音频流的三个通道,将角色动画的8位或16位量化与有损或无损音频压缩技术(例如MP3和WAV)结合起来。在各种实施例中,数据压缩模块206可以配置为通过将X、Y和Z顶点偏移值映射到照片像素的R、G和B颜色值,并利用顺序动画帧的相邻像素,将角色动画的8位或16位量化与有损或无损照片压缩技术(例如JPEG和PNG)结合起来。在各种实施例中,数据压缩模块206可以配置为通过将X,Y和Z顶点偏移值映射到视频帧的R,G和B颜色值,将角色动画的8位或16位量化与有损或无损视频压缩技术(例如H.264,H.265和VP9)结合使用。用于AR和VR的许多计算设备(例如移动设备(例如电话、平板电脑)和计算机)都包含解码流行的照片、音频和/或视频压缩格式,同时最大程度地减少CPU或GPU资源的消耗的专用硬件。

在各个实施例中,数据压缩模块206可以被配置为应用统计分析和机器学习技术以利用由数据导出模块202导出的数据的空间和时间一致性。作为一个示例实现,主成分分析(PCA)可以识别较低维度的空间来投影所有目标姿势(角色动画数据内的动画帧数据),使得可以在给定的可接受误差(例如,精度在99%以内)水平内重新创建角色动画数据。可以将聚类PCA方法与聚类算法(如K均值(K-means))结合使用,以获得更好的结果。在某些实施例中,随时间变化的顶点偏移的参数化分析近似表示(例如,多项式、正弦函数、样条曲线,例如钳位三次贝塞尔曲线)通过关键帧缩减技术提供了显着节省的机会。在某些实施例中,样条曲线近似地表示随时间的顶点偏移,并且选择这些曲线的参数(例如,样条的顺序以及样条的控制点的数量和位置)使得通过众所周知的曲线拟合算法,可以最小化存储参数所需的存储空间。在某些实施例中,通过将其去除不会导致曲线偏离拟合的偏移超出指定的可接受阈值的每个控制点消除,从而最大程度地减少了控制点的数量。在某些实施例中,样条控制点的消除与将相邻的样条控制点移向消除点的位置相结合,以最小化消除对样条曲线形状的影响。

在一个实施例中,角色模型的每个顶点可以使用标准的UV纹理查找技术映射到纹理位置。这样可以改善数据的空间一致性(从而提高可压缩性),但会浪费用于无法映射到顶点的像素的纹理存储空间。在另一个实施例中,可以通过索引方案在模型的每个顶点与视频流的每个像素之间进行一对一的相关。在某些情况下,此方案的质量和可压缩性可取决于索引。为了确保数据更好的空间一致性,可以使用统计分析进行聚类和排序。在一个实施例中,可以使用K-均值对数据进行聚类。然后,可以将PCA应用于每个簇,并且可以通过将时间序列投影到其最大特征向量上来对簇内的顶点进行排序。

图3示出根据本公开的实施例的示例非语言角色提示模块302。在一些实施例中,图1A的非语言角色提示模块124可以被实现为非语言角色提示模块302。如上所述,非语言角色提示模块302可以被配置为生成用于实现虚拟角色中的一个或多个非语言沟通动画的非语言沟通动画数据。非语言角色提示模块302可以基于一个或多个用户输入和/或VR环境状态信息来生成非语言沟通动画数据。如图3的示例所示,非语言角色提示模块302可以包括眼睛接触和观看模块304、镜像模块306、增强活动模块308和动态表演模块310。

眼睛接触和观看模块304可以被配置为基于用户输入和/或VR环境状态信息来生成观看动画数据。可以(例如,由简化角色骨架动画模块126)使用观看动画数据,以使虚拟角色观看目标位置。非语言沟通的最有力形式之一是眼睛接触,即一个人看着别人并直接进行眼睛接触。这在两个人之间建立了一种参与和联系的感觉。但是,长时间的眼睛接触有时会导致不适。相反,避免眼睛接触会产生相反的效果,表示无兴趣,缺乏参与甚至回避。

VR在场景中向观看者提供完整的代理。他们可以看任何地方,因此可能会错过故事的重要部分。VR内容创建者可能会希望在正确的时间将观看者的眼睛引导到正确的位置。当虚拟角色通过程序调整他或她的眼睛方向以直接注视并跟随用户时,用户自然会通过将他或她的注意力完全集中在角色上做出响应。虚拟角色可以保持眼睛接触,以固定的时间间隔暂时停止眼睛接触以防止不适,但又不会完全摆脱用户,或者中断眼睛接触(例如仰望天空)并引导用户(已经在看着她的人))专注于下一个故事情节。在一个实施例中,眼睛接触和观看模块304可以被配置为生成使角色观看用户的观看动画数据。当确定用户正在回看角色时,眼睛接触和观看模块304可以被配置为生成第二组观看动画数据,以保持眼睛接触,中止眼睛接触或使角色观看另一个对象,以引导用户观看另一个对象。

在一个实施例中,眼睛接触和观看模块304可以被配置为调整虚拟角色的一个或多个眼睛、一个或多个头部、一个或多个脖子和/或身体配置和位置(例如,调整角色骨架/模型的关联顶点和/或关节),使得角色可以直接看到目标位置,例如观看者的头部或手部位置或其他物体。眼睛接触和观看模块304可以配置为随时间推移在任意数量的目标位置之间融合,以动态调整角色的眼睛接触。

眼睛接触和观看模块304可以被配置为使用用户的HMD头部位置作为输入,以便将用户的头部设置为虚拟角色的眼睛接触目标。在一个实施例中,眼睛接触和观看模块304可以被配置为使用HMD头部位置和一个或多个手部控制器位置两者作为输入,使得虚拟角色可以随着时间来在用户的头部和用户的手之间程序性地切换眼睛接触。在一个实施例中,使用计算机视觉和运动捕捉技术来跟踪用户的身体和面部上的一组特征。眼睛接触和观看模块304可以被配置为跟踪所跟踪的任何用户特征。在另一个实施例中,独立于头部位置和方向来跟踪用户的眼睛方向。例如,用户可能面对一个方向而看向另一方向。眼睛接触和观看模块304可以被配置为独立于头部位置和方向来跟踪用户的眼睛方向。在一个实施例中,眼睛接触和观看模块304可以被配置为使用用户的HMD头部和手部控制器位置以及其他角色(例如,其他角色的头部)的位置作为输入。这使得虚拟角色能够在观看者与场景中其他角色之间改变眼睛接触。在另一个实施例中,该系统使用与多个用户关联的多个HMD头部和手部控制器位置,以使得虚拟角色实现在共享体验的多个用户之间的眼睛接触。

眼睛接触和观看模块304可以被配置为基于目标位置来调整虚拟角色的动画骨架。最简单的调整是根据目标位置在程序上修改角色的眼部关节位置。但是,此解决方案可能会限制可以实现的眼睛接触范围、动作的真实感或角色传达的情感(例如,没有任何头部或颈部移动的剧烈眼睛动作可能表明角色已丧失活动能力或感觉到猜疑)。在另一实施例中,眼睛接触和观看模块304可以基于眼睛需要旋转多远才能看到目标位置,在程序上修改一系列附加关节(例如,角色的身体、颈部和头部的一个或多个关节)以及眼睛关节的位置。眼睛接触和观看模块304还可以被配置为在程序上修改目标位置,使得角色可以随时间观看不同的对象。

在一个示例实施例中,动画关节可以被混合或直接锁定到目标位置。在某些情况下,此方法可能会受到限制,因为它会删除这些动画关节中存在的任何源动画,并且可能会删除重要的表演提示。在另一个实施例中,可以相对于动画内容创建工具中的观看相机来对各种颈部,头部和眼睛关节进行动画处理。在实时处理引擎中,眼睛接触和观看模块304可以将观看相机转换到目标位置,然后在默认观看相机和目标观看相机之间融合每个脖子、头部和眼睛的关节。这种方法使角色可以观看特定的目标位置,但保留相对于观看而分层的原始动画效果。该方法还可以在其他交互式动画中实现,例如镜像和增加的活动,如将在本文中更详细地描述的。

在一个实施例中,眼睛接触和观看模块304可以被配置为在修改动画骨架的一组(例如,多个)观看动画之间融合。这使美术师可以根据目标位置精确微调角色的调整方式。它还使动画师能够将个性注入到观看行为中。在另一个实施例中,眼睛接触和观看模块304可以被配置为混合其他动画以表达细微的性能,例如眼神飘忽。

镜像模块306可以被配置为基于用户输入和/或虚拟环境状态信息来生成镜像动画数据。镜像动画数据可(例如,由简化角色骨架动画模块126)用于使虚拟角色反映用户的移动和动作,同时尽管角色和用户之间的大小或外观有任何差异,但仍然产生逼真的角色移动。另一个强有力的非语言提示是模仿或镜像。两个人经常会在不知不觉中潜意识地镜像对方的行为。这种人类行为建立了联系,不仅用于娱乐场合,而且还用于临床或教育场合,例如治疗或教孩子。镜像模块306使虚拟角色能够镜像用户的动作以与用户建立微妙的联系。

在一个示例中,镜像模块306可以接收HMD位置和方向信息作为输入,并从头部变换中提取感兴趣的特定行为,例如头部倾斜。镜像模块306可以生成镜像动画数据,该镜像动画数据使得虚拟角色在一定时间延迟(例如在4秒延迟)地镜像用户的动作。镜像模块306可以生成镜像动画数据,该镜像动画数据使虚拟角色模仿用户的头部倾斜。在一个实施例中,头部倾斜变换可以有时间延迟地在程序上分层到动画骨架的头部关节中。在另一个示例中,镜像模块306可以将HMD位置和手部控制器位置用作输入,以有时间延迟地在程序上修改动画骨架的头部和手部关节。在一实施例中,输入变换可用于在镜像动画之间混合,然后修改动画骨架。例如,头部倾斜动画可包含面部特征,例如角色随着头部旋转而微笑。在一实施例中,镜像模块306可以基于全身追踪来镜像用户的整个身体运动。在另一个实施例中,镜像模块306可以在镜像用户动作之前动态地调整时间延迟。

增加活动模块308可以被配置为基于用户输入生成活动程度动画数据。(例如,简化角色骨架动画模块126)可以使用活动程度动画数据,以引起虚拟角色的活动程度的调整。活动程度的提高可表示积极的感觉,例如感兴趣和兴奋,消极的感觉,例如紧张、压力和恐惧,或是对诸如低温等环境因素的自主反应。在儿童中,这种兴奋感很明显。甚至兴奋的成年人也会更烦躁,说话更多,说话也更快。活动程度上升可以是两个成年人正在探索建立更紧密关系的潜意识暗示。增加活动模块308使内容创建者能够基于VR体验的状态信息在程序上分层所增加的活动。可以通过加快动画的强度或加快角色语音来调整动画骨架关节来在程序上分层此行为。在另一个实施例中,通过混合诸如烦躁行为或紧张的特定动画来实现增加的活动。

动态表演模块310可以被配置为基于用户输入和/或虚拟环境状态信息对角色表演进行动态调整。例如,动态表演模块310可以被配置为基于用户位置信息来调整角色演出,使得用户可以始终清楚地看到表演。作为另一个示例,用户可以触发分层的角色响应,例如使角色看起来感觉冷。在该示例中,动态表演模块310可以使颤抖的动画被层叠在角色的现有动作之上。

在另外的示例中,动态表演模块310可以被配置为使得角色能够根据需要调整他们的面部表情,诸如在用户处增加媚眼、眨眼和/或抬起他们的眉毛。可以在叙述中的特定点处或基于用户响应(例如用户注视或用户触摸)进行过程非语言调整。

动态表演模块310可以支持调整和/或交换角色在表演期间操纵或使用的道具。动态表演模块310可以基于关于用户的外部信息将道具交换为一条内容。这可用于动态调整或更改用于商品在内容中放置的道具。动态道具还可以基于有关用户的先验知识来为个人特制一条内容。道具可以包括例如衣服以及角色外观的其他元素,例如头发或肤色。

图4示出根据本公开的实施例的示例复杂模型变形模块402。在一些实施例中,图1A的复杂模型变形模块128可以被实现为复杂模型变形模块402。如图4的示例所示,复杂模型变形模块402可包括数据重建模块404和皮肤计算着色器模块406。

数据重建模块404可以被配置为在运行时解压缩任何必要的角色动画数据(例如,顶点动画数据),使用在简化角色骨架的动画期间(例如,动画模块110)计算出的权重来混合所存储的偏移,并应用蒙皮变换。例如,可以使用计算着色器完成此操作,使其性能更高。如果已将统计方法(例如PCA)应用于角色动画数据,则可以将数据重建模块404配置为从较低维度的数据空间重建顶点的完整集合。

皮肤计算着色器模块406可以被配置为基于给定顶点的简化角色变形来重构全品质角色(即,复杂角色)变形,如下所示:

其中v”是重构的完整质量的复杂角色骨架中顶点的世界空间位置,S是简化角色骨架所产生的组合变换,v是模型的参考位置,x是给定动画剪辑的权重,且o是动画剪辑的给定帧处的顶点的偏移。结果是对数据导出模块202提供的数据进行了重构,但是使用了从简化角色骨架动画模块126应用的过程动画。如果数据导出模块202不使用压缩,或者如果进行了无损压缩,则此重构是完美的;否则,如果使用有损压缩,则重建是很接近。

图5示出根据本公开的实施例的示例性模型镶嵌模块502。在一些实施例中,图1A的模型镶嵌模块130可以被实现为模型镶嵌模块502。如图5的示例所示,模型镶嵌模块502可以包括细分镶嵌器模块504和法线和切线计算模块506。

细分镶嵌器模块504可以被配置为平滑和细化角色动画几何形状以生成细化的网格。在一个实施例中,细分镶嵌器模块504可以使用卡特姆-克拉克细分表面来平滑角色动画几何形状。可以为所有细分的顶点位置预先计算模板权重,从而实时计算壳体顶点位置的简单线性组合。在一个实施例中,细分镶嵌器模块504可以被配置为使用递归细化技术来平滑和细化角色动画几何形状,该递归细化技术产生渐进更平滑的网格版本。在每次迭代中:

·网格的每个面在其质心处产生一个附加的顶点(F);

·网格的每个边产生一个附加顶点(E),作为其质心和入射面的质心(F)的加权组合;以及

·网格的每个顶点(V)以其原始位置、入射边的重心(E)和入射面的重心(F)的加权组合放置。

图6示出描述上述递归技术的两个示例迭代的示例场景600。初始(或基本)网格602在第一次迭代中进行细化以生成第一细化网格604,然后在第二次迭代中对其进行进一步细化以生成第二细化网格606。可以看出,每次迭代都会产生更多数量的顶点、面和边,从而产生渐进更细化的网格。(V)对(F)和(E)的依赖关系以及(E)对(F)的依赖关系可以通过反替换来简化。通过应用此替换,细化网格的任何细分级别中的任何顶点都可以表示为变形基础网格中顶点的线性加权组合。线性组合中使用的权重仅取决于在运行时保持不变的基础网格拓扑。这样,权重可以作为流水线步骤进行一次计算并存储。尽管用于表示细化网格中特定顶点的权重数可能仅受基础网格中顶点数的限制,但在某些实施例中,该数目可以与每个入射面上的顶点的价数(valence)和顶点的数目相关。在某些实施例中,可以设置硬限制。例如,细化网格中的每个顶点可以用不超过10的权重表示。在某些实施例中,保留的权重可以是具有最大绝对量的那些权重。例如,每个顶点可以由10个最大权重表示。

返回到图5,法线和切线计算模块506可以被配置为通过使用网格对偶图的模拟(analog),计算网格(例如细化网格或基础网格)中每个顶点的近似法线和切线向量。即使在任意变形的几何体上,这种方法也可以产生高质量的法线和切线。

在每个面周围有序顶点的分段网格中,几何法线隐式定义在网格面上。但是,要使外观看起来像平滑的网格,可以为每个顶点分配一个法线,作为入射面法线的一些线性组合,然后可以使用重心权重将这些顶点法线线性插值到整个多边形上。但是,此技术在计算上昂很贵,因为它需要将所有入射面的面法线预先计算到给定的顶点。结果,实时游戏引擎很少从变形的顶点位置计算顶点法线。取而代之的是,它们通常在参考姿势中计算一次,然后使用蒙皮权重和变换进行变形。

在一个实施例中,法线和切线计算模块506可以被配置为使用四个均匀间隔的相邻顶点来近似顶点法线。对于四主导网格,例如通常与克拉姆克拉克细分一起使用的网格,大多数顶点具有恰好四个相邻的顶点,这使得四个相邻顶点A、B、C和D的选择变得简单而明确。图7示出示例场景700,其中顶点V正好具有四个邻居A、B、C和D。在这种情况下,法线可以按以下方式计算:

对于具有四个以上相邻顶点的非寻常顶点,法线和切线计算模块506可以配置为从一组相邻顶点中选择四个均匀间隔的相邻顶点。在一实施例中,可仅使用拓扑考虑来选择四个相邻顶点。例如,如果一个顶点有八个入射边,则可以使用每隔一个而相邻的顶点。在一实施例中,可使用网格的固有特性来选择四个相邻的顶点。例如,可以选择四个相邻的顶点,以使由将顶点连接到任意两个选定的连续相邻顶点的两个边在顶点处形成的角度尽可能接近90度。图8示出示例场景800,其中顶点V具有多于四个的相邻顶点。在示例场景800中,顶点V具有八个相邻的顶点,并且已经通过选择每隔一个相邻的顶点来选择四个相邻的顶点A、B、C和D。

对于其中一个顶点具有少于四个相邻顶点的边界顶点,法线和切线计算模块506可以配置为在任何缺失的顶点位置替换成顶点本身。图9示出示例场景900,其中顶点V具有少于四个的相邻顶点。在示例场景900中,顶点V仅具有三个相邻的顶点A、B和C。因此,顶点V本身被代替作为第四相邻的顶点D。

在一个实施例中,切线向量可以遵循类似的构造。尽管对于给定的顶点存在无限数量的切线向量(垂直于所定义法线的任何向量),但是在一个实施例中,法线和切线计算模块506可以被配置为选择与网格的UV参数化的U方向成直线的切线向量。方便地,在所公开的表示中,该切线向量是基向量(A-C)和(B-D)的线性组合。系数仅取决于拓扑和UV参数化法,它们在运行时保持固定,从而允许将线性组合的权重作为流水线步骤进行预先计算。在一个实施例中,切线向量可以如下计算:

Av,Bv,Cv,Dv表示网格在顶点A,B,C和D处的UV参数化的V分量。

(由细分镶嵌器模块504确定的)细化网格的顶点位置以及(由法线和切线计算模块506计算得出的)细化网格中每个顶点的近似法线和切线向量被传递到顶点着色器,在这里它们可以被图1A的渲染管线模块132使用。

图10详述了用于基于多边形控制模型为克拉姆克拉克细分表面生成顶点位置、法线和切线的示例性过程。该管线已针对GPU上的实时计算进行了优化。

图11示出根据本技术的实施例的示例方法1100。在框1102处,方法1100可以接收与虚拟可变形几何模型相关联的虚拟模型信息,该虚拟模型信息包括复杂骨架和简化骨架,复杂骨架包括第一多个变换和默认模型定义的第一多个顶点,简化骨架包括第二多个变换和第二多个顶点,其中,第二多个顶点对应于默认模型定义的第一多个顶点。在框1104处,方法1100可以基于将要应用于虚拟可变形几何模型的动画来使简化骨架和复杂骨架变形。在框1106,方法1100可以计算偏移数据集,该偏移数据集对于第一多个顶点中的每个顶点包括该顶点与第二多个顶点中的对应顶点之间的偏移。

图12示出根据本技术的实施例的示例方法1200。在框1202处,方法1200可以接收与虚拟可变形几何模型相关联的虚拟模型信息,该虚拟模型信息包括复杂骨架和简化骨架,复杂骨架包括第一多个变换和默认模型定义的第一多个顶点,简化骨架包括第二多个变换和第二多个顶点,其中,第二多个顶点对应于默认模型定义的第一多个顶点。在框1204,方法1200可以基于将要应用于虚拟可变形几何模型的动画来使简化骨架和复杂骨架变形。在框1206处,方法1200可以计算偏移数据集,对于第一多个顶点中的每个顶点,该偏移数据集包括顶点与第二多个顶点中的对应顶点之间的偏移。在框1208,方法1200可以将偏移数据集的压缩版本导出到实时处理引擎以用于虚拟可变形几何模型的实时动画。

图13示出根据本技术的实施例的示例方法1300。在框1302处,方法1300可以识别将在实时沉浸式环境中制作动画的虚拟可变形几何模型,该虚拟可变形几何模型包括虚拟模型网格,该虚拟模型网格包括多个顶点、多个边以及多个面。在框1304,方法1300可以在一个或多个迭代中迭代地细化虚拟模型网格以生成细化网格,其中一个或多个迭代中的每个迭代增加了顶点的数量、边的数量和/或面的数量。在框1306,方法1300可以在实时沉浸式环境内的虚拟可变形几何模型的实时动画期间呈现细化网格。

图14示出根据本技术的实施例的示例方法1400。在框1402,方法1400可以识别在实时沉浸式环境内呈现给用户的虚拟角色。在框1404,方法1400可以确定要应用于虚拟角色的第一动画。在框1406,方法1400可以确定将与第一动画同时应用于虚拟角色的非语言沟通动画。在框1408,方法1400可以基于第一动画和非语言沟通动画对虚拟角色实时制作动画。

示例方法的许多变体是可能的。应当理解,除非另有说明,否则在本文讨论的各种实施例的范围内,可以以相似或替代的顺序或并行地执行另外的、更少的或替代的步骤。

硬件实施方式

可以通过多种机器和计算机系统架构以及在多种网络和计算环境中实现前述处理和特征。图15示出根据本公开的实施例的示例机器1500,在其中可以执行用于使机器执行本文描述的一个或多个实施例的一组指令。实施例可以涉及一种或多种系统、方法或计算机可读介质。该机器可以被连接(例如,联网)到其他机器。在网络部署中,机器可以在客户端-服务器网络环境中以服务器或客户端计算机的身份运行,或者在对等(或分布式)网络环境中作为对等机器运行。

计算机系统1500包括通过总线1508彼此通信的处理器1502(例如,中央处理单元(CPU)、图形处理单元(GPU)或两者)、主存储器1504和非易失性存储器1506(例如,易失性RAM和非易失性RAM)。处理器1502可以以任何合适的形式实现,例如并行处理系统。在一些情况下,示例性机器1500可以对应于、包括或被包括在计算设备或系统内。例如,在一些实施例中,机器1500可以是台式计算机、膝上型计算机、个人数字助理(PDA)、设备、可穿戴设备、相机、平板电脑或移动电话等。在一个实施例中,计算机系统1500还包括视频显示器1510、字母数字输入设备1512(例如键盘)、光标控制设备1514(例如鼠标)、驱动单元1516、信号生成设备1518(例如扬声器)和网络接口设备1520。

在一个实施例中,视频显示器1510包括用于用户输入的触敏屏。在一实施例中,使用触敏屏代替键盘和鼠标。磁盘驱动单元1516包括机器可读介质1522,其上存储了实现本文所述方法或功能中的任何一个或多个的一组或多组指令1524(例如,软件)。在计算机系统1500执行指令期间,指令1524还可以全部或至少部分地驻留在主存储器1504内和/或处理器1502内。指令1524可以进一步经由网络接口设备1520在网络1540上发送或接收。在一些实施例中,机器可读介质1522还包括数据库1525。

易失性RAM可以被实现为动态RAM(DRAM),其连续需要电力以便刷新或保持存储器中的数据。非易失性存储器通常是磁性硬盘驱动、磁性光学驱动、光学驱动(例如DVD RAM)或即使在系统断电后仍可保持数据的其他类型的存储系统。非易失性存储器1506也可以是随机存取存储器。非易失性存储器1506可以是直接耦合到计算机系统1500中的其余组件的本地设备。也可以使用远离系统的非易失性存储器,例如通过诸如调制解调器或以太网接口之类的网络接口耦合到本文所述的任何计算机系统的网络存储设备。

虽然在示例性实施例中将机器可读介质1522示为单个介质,但是术语“机器可读介质”应被认为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,和/或关联的缓存和服务器)。术语“机器可读介质”也应被视为包括能够存储、编码或携带由机器执行并且使机器执行本公开的任何一个或多个方法的一组指令的任何介质。因此,术语“机器可读介质”应被认为包括但不限于固态存储器、光学和磁性介质以及载波信号。如本文所使用的术语“存储模块”可以使用机器可读介质来实现。

通常,被执行以实现本发明的实施例的例程可以被实现为操作系统或特定应用程序、组件、程序、对象、模块或被称为“程序”或“应用程序”的指令序列的一部分。例如,一个或多个程序或应用程序可用于执行本文所述的任何或所有功能、技术和处理。程序或应用程序通常包含在不同时间的一个或多个指令集,在机器中各种存储器和存储设备中并且当由一个或多个处理器读取并执行时,使计算系统1500执行操作以执行涉及本文所述实施例的各个方面的元素。

可执行例程和数据可以存储在各个位置,包括例如ROM、易失性RAM、非易失性存储器和/或高速缓冲存储器。这些例程和/或数据的一部分可以存储在这些存储设备中的任何一个中。此外,可以从集中式服务器或对等网络获得例程和数据。例程和数据的不同部分可以在不同时间并且在不同沟通会话中或在同一沟通会话中从不同的集中式服务器和/或对等网络获得。例程和数据可以在执行应用程序之前整体获得。另外,例程和数据的某些部分可以在需要执行时及时地动态获取。因此,在特定的时间实例中,不需要例程和数据整体上位于机器可读介质上。

尽管已经在计算系统的上下文中充分描述了实施例,但是本领域技术人员将理解,各种实施例能够以各种形式作为程序产品来分发,并且此处描述的实施例同等地适用,而不管用于实际影响分发的机器或计算机可读介质的特定类型如何。机器可读介质的示例包括但不限于可记录类型的介质,例如易失性和非易失性存储设备、软盘和其他可移动磁盘、硬盘驱动、光盘(例如,光盘只读存储器(CDROMS)、数字多功能磁盘(DVD)等)以及传输类型的媒体(例如数字和模拟通信链接)。

替代地或组合地,可以使用具有或不具有软件指令的专用电路来实现本文描述的实施例,诸如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)。可以使用没有软件指令的硬连线电路或结合软件指令来实施实施例。因此,技术既不限于硬件电路和软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。

为了解释的目的,阐述了许多具体细节,以提供对描述的透彻理解。然而,对于本领域技术人员来说,显而易见的是,可以在没有这些具体细节的情况下实施本公开的实施例。在某些情况下,模块、结构、过程、特征和装置以方框图形式显示,以避免描述或本文中所讨论的内容模糊。在其他情况下,功能方框图和流程图被显示为表示数据和逻辑流程。方框图和流程图的部件(例如,模块、引擎、方框、结构、装置、特征等)可以以不同于本文明确描述和描绘的方式进行各种组合、分离、移除、重新排序和替换。

在本说明书中对“一个实施例”、“实施例”、“其他实施例”、“另一实施例”、“在各种实施例中”等的引用意味着所描述的特定特征、设计、结构或特性与实施例相关的结合被包括在本公开的至少一个实施例中。例如,说明书中各个地方出现的短语“根据实施例”、“在一个实施例中”、“在实施例中”、“在各种实施例中”或“在另一实施例中”不一定全部指的是同一实施例,也不是与其他实施例互斥的单独或替代的实施例。此外,无论是否明确提及“实施例”等,都描述了各种特征,这些特征可以不同地组合并包括在一些实施例中,但是在其他实施例中也可以不同地省略。类似地,描述了各种特征,这些特征可以是某些实施例(但不是其他实施例)的偏好或要求。

尽管已经参考特定的示例性实施例描述了实施例,但是显而易见的是,可以对这些实施例进行各种修改和改变。因此,说明书和附图应被认为是说明性的而不是限制性的。前述说明书提供了参考特定示例性实施例的描述。显而易见的是,在不脱离所附权利要求书所阐述的更广泛的精神和范围的情况下,可以对其进行各种修改。因此,说明书和附图应被认为是说明性的而不是限制性的。

尽管一些附图以特定顺序示出多个操作或方法步骤,但是可以将没有顺序依赖的步骤重新排序,并且可以组合或省略其他步骤。尽管具体提到了一些重新排序或其他分组,但是其他分组对于本领域普通技术人员而言将是显而易见的,因此并未提供详尽的替代列表。而且,应当认识到,这些阶段可以以硬件、固件、软件或其任何组合来实现。

还应当理解,在不脱离本发明的实质的情况下,可以进行多种改变。这种改变也隐含在说明书中。它们仍然落入本发明的范围内。应当理解,本公开旨在以方法和装置模式来独立地以及作为整体系统产生涵盖本发明的多个方面的专利。

此外,本发明和权利要求的各个要素中的每个也可以以各种方式实现。应该理解本公开包括每一种这样的变型,可以是任何装置实施例、方法或处理实施例的实施例变型,或者甚至仅仅是这些装置的任何元件的变型。

此外,根据传统的权利要求解释,过渡短语“包括”的使用被用于维持本文的“开放式”权利要求。因此,除非上下文另外要求,否则应理解,术语“包括”或诸如“包括”或“包含”的变体旨在暗示包括所述要素或步骤或要素或步骤组,但不排除任何其他元素或步骤或元素或步骤组。这些术语应以其最广泛的形式进行解释,以便根据以下权利要求为申请人提供法律上允许的最广泛的覆盖范围。

本文使用的语言主要是出于可读性和指导性目的而选择的,可能没有被选择来描绘或限定本发明的主题。因此,本发明的范围不是由该详细描述限制的,而是由基于此的申请上发布的任何权利要求限制的。因此,本发明的实施例的公开旨在说明而非限制在下面的权利要求中阐述的本发明的范围。

38页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于实时复杂角色动画和交互性的系统和方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!