首页> 中国专利> 一种角色动画中衣物的驱动方法及设备

一种角色动画中衣物的驱动方法及设备

摘要

本申请涉及VR技术领域,提供一种角色动画中衣物的驱动方法及设备,获取每一帧骨骼动画数据后,驱动由人体三角形网格模型生成的人体四面体网格模型的顶点运动并进行全局碰撞检测,这相当于对人体和衣物的骨架进行了全局碰撞检测,获得全局碰撞检测后每个骨骼节点的第一坐标,并通过拉伸保证骨骼长度不变,保证检测前后骨架的真实性,获得校正后骨骼节点的第二坐标,并用各骨骼节点的第二坐标反向驱动衣物三角形网格模型跟随人体三角形网格模型进行运动,从而在不对衣物三角形网格模型进行传统的碰撞检测的情况下,解决衣物三角形网格模型的穿模问题,极大的减少了计算量,提高了角色动画的性能和交互的实时性。

著录项

  • 公开/公告号CN114926572A

    专利类型发明专利

  • 公开/公告日2022-08-19

    原文格式PDF

  • 申请/专利权人 聚好看科技股份有限公司;

    申请/专利号CN202210551997.4

  • 发明设计人 任子健;吴连朋;

    申请日2022-05-18

  • 分类号G06T13/40(2011.01);G06T17/20(2006.01);G06T7/70(2017.01);

  • 代理机构北京同达信恒知识产权代理有限公司 11291;

  • 代理人刘醒晗

  • 地址 266100 山东省青岛市崂山区松岭路399号

  • 入库时间 2023-06-19 16:26:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-06

    实质审查的生效 IPC(主分类):G06T13/40 专利申请号:2022105519974 申请日:20220518

    实质审查的生效

说明书

技术领域

本申请涉及虚拟现实(Virtual Reality,VR)技术领域,尤其涉及一种角色动画中衣物的驱动方法及设备。

背景技术

角色动画是计算机图形技术的一个重要组成部分,在动画电影、广告、游戏等场景中发挥着重要的作用。

角色动画过程中,人体模型的部分区域可能会穿透到其他部分当中,产生穿模现象,不符合现实情况,严重影响了模型的真实性,降低了用户的沉浸式体验。

目前,大多数方法通过对人体模型进行全局碰撞检测来解决穿模问题,在实际应用中,人体模型一般会穿着有衣物,衣物模型需要与人体模型的运动姿态相匹配,这样,不仅需要解决人体模型的穿模问题,还需要解决衣物模型的穿模问题。但由于全局碰撞检测会消耗较大的计算性能,如果对衣物模型和人体模型均进行全局碰撞检测,将会严重影响交互的实时性。

发明内容

本申请实施例提供了一种角色动画中衣物的驱动方法及设备,用以解决衣物模型的穿模问题,提高交互的实时性。

一方面,本申请实施例提供一种角色动画中衣物的驱动方法,包括:

获取衣物三角形网格模型与人体三角形网格模型共同的每一帧骨骼动画数据,并用所述骨骼动画数据,驱动人体四面体网格模型的顶点运动,所述人体四面体网格模型是基于所述人体三角形网格模型生成的;

对驱动后的人体四面体网格模型进行全局碰撞检测;

根据骨骼节点与所述人体四面体网格模型中四面体的对应关系,以及四面体的顶点坐标,计算每个骨骼节点的第一坐标;

根据预设拉伸约束拉伸相邻骨骼节点间的骨骼,获得每个骨骼节点的第二坐标;

根据每个骨骼节点的第二坐标以及初始全局坐标,确定每个骨骼节点的目标全局姿态矩阵,并用各目标全局姿态矩阵驱动所述衣物三角形网格模型运动。

另一方面,本申请实施例提供一种电子设备,包括处理器、存储器和显示器,所述存储器包含数据存储单元和程序存储单元,所述处理器、所述存储器和所述显示器通过总线连接:

所述显示器用于显示人体三角形网格模型和衣物三角形网格模型;

所述存储器的程序存储单元中存储有计算机程序,所述处理器根据所述计算机程序,执行以下操作:

从所述数据存储单元中,获取衣物三角形网格模型与人体三角形网格模型共同的每一帧骨骼动画数据,并用所述骨骼动画数据,驱动人体四面体网格模型的顶点运动,所述人体四面体网格模型是基于所述人体三角形网格模型生成的;

对驱动后的人体四面体网格模型进行全局碰撞检测;

根据骨骼节点与所述人体四面体网格模型中四面体的对应关系,以及四面体的顶点坐标,计算每个骨骼节点的第一坐标;

根据预设拉伸约束拉伸相邻骨骼节点间的骨骼,获得每个骨骼节点的第二坐标;

根据每个骨骼节点的第二坐标以及初始全局坐标,确定每个骨骼节点的目标全局姿态矩阵,并用各目标全局姿态矩阵驱动所述衣物三角形网格模型运动。

另一方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机设备执行本申请实施例提供的角色动画中衣物的驱动方法。

本申请实施例提供的一种角色动画中衣物的驱动方法及设备中,角色动画中的衣物和人体一般使用三角形网格模型来提高渲染显示效率,且为了衣物和人体相适配,衣物三角形网格模型与人体三角形网格模型具有相同的骨架和骨骼动画数据,由于人体三角形网格模型内部是空的,在真实度较高的仿真场景中无法使用,因此,根据人体三角形网格模型生成具有体积概念的人体四面体网格模型,当获取每一帧骨骼动画数据后,驱动人体四面体网格模型的顶点运动,并对驱动后的人体四面体网格模型进行全局碰撞检测,以解决人体的穿模现象。对人体四面体网格模型进行全局碰撞检测,相当于对人体的骨架进行了全局碰撞检测,这样,可以根据骨骼节点与四面体的对应关系以及四面体的顶点坐标,计算全局碰撞检测后每个骨骼节点的第一坐标,并通过拉伸保证骨骼长度不变,保证检测前后骨架的真实性,获得校正后骨骼节点的第二坐标。进一步地,根据每个骨骼节点的第二坐标以及初始全局坐标,确定每个骨骼节点的目标全局姿态矩阵,并用所述目标全局姿态矩阵驱动衣物三角形网格模型运动,从而实现在不对衣物三角形网格模型进行碰撞检测的情况下,解决跟随人体运动的衣物的穿模问题,节约计算量,提高角色动画的效率和交互的实时性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1A为本申请实施例提供的三角形网格模型示意图;

图1B为本申请实施例提供的三角形网格模型的组成元素示意图;

图2A为本申请实施例提供的四面体网格模型示意图;

图2B为本申请实施例提供的四面体网格模型的组成元素示意图;

图3A为本申请实施例提供的一种穿模现象示意图;

图3B为本申请实施例提供的另一种穿模现象示意图;

图4为本申请实施例提供的衣物和人体的三角形网格模型的骨架示意图;

图5为本申请实施例提供的骨骼节点和四面体的对应关系建立方法流程图;

图6为本申请实施例提供的骨骼节点在四面体内的重心坐标示意图;

图7为本申请实施例提供的一种角色动画中衣物的驱动方法流程图;

图8为本申请实施例提供的计算碰撞检测后骨骼节点的第一坐标的方法流程图;

图9为本申请实施例提供的骨骼节点的目标全局姿态矩阵的计算方法流程图;

图10为本申请实施例提供的骨骼节点驱动衣物三角形网格模型运动的方法流程图;

图11A为本申请实施例提供的骨骼节点驱动人体三角形网格模型运动的方法流程图;

图11B为本申请实施例提供的四面体的顶点驱动人体三角形网格模型运动的方法流程图;

图12为本申请实施例提供的人体三角形网格模型的顶点与四面体的对应关系示意图;

图13为本申请实施例提供的人体和衣物的三角形网格模型渲染显示效果图;

图14为本申请实施例提供的电子设备的结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为清楚描述本申请的实施例,下面对本申请实施例的名词进行解释说明。

三角形网格模型:可以视作一个空壳,模型表面由三角形组成,内部是空的,如图1A所示。一般的,在3D领域中,人们往往关注三维模型的外形,因此,大多数三维场景模型和角色动画模型都使用三角形网格模型。三角形网格模型的组成元素为三角形,如图1B所示。

四面体网格模型:在一些物理仿真中,往往需要对物体内部的应力情况进行分析,或者在一些高逼真度仿真(如流体、气体仿真)中,为了追求真实性,需要对物体的物理特性进行可视化描述。由于传统的三角形网格模型内部是空的,在真实度较高的仿真场景中无法使用,需要使用具有体积概念的模型,最常见的就是四面体网格模型。四面体网格模型由四面体组成,内部不是空的。如图2A所示,为一个由四面体网格模型组成的人体模型剖面图,可以看到剖面(即模型内部)不为空,四面体网格模型的组成元素为四面体,如图2B所示。

骨骼驱动:骨骼动画是模型动画中的一种,在骨骼动画中,模型具有互相连接的“骨骼″组成的骨架结构,组成模型的网格顶点与骨骼节点绑定。当改变骨骼的朝向和位置时,模型的网格顶点就会随着骨骼的运动而运动,从而表现为角色动画。

下面对本申请实施例的设计思想进行概述。

传统的角色动画过程中,常常出现影响模型真实性的穿模现象。如图3A所示,在人体模型的肘部、膝盖等关节处容易造成塌陷、体积损失、鼓包等异常,导致关节连接的人体模型的两部分不协调,产生穿模现象。如图3B所示为另一种穿模现象,人体模型的手部区域穿透到腰部部分当中,不符合现实情况。

从图3A和图3B可以看出,穿模现象有悖于对真实模型的认知,为了提高模型的真实性,需要解决穿模现象。

目前,大多通过全局碰撞检测来解决模型的穿模现象。在实际应用中,人体模型一般会穿着有衣物,衣物模型需要与人体模型的运动姿态相匹配,这样,不仅需要解决人体模型的穿模问题,还需要解决衣物模型的穿模问题,往往会对人体模型和衣物模型进行自身的全局碰撞检测外,还会对人体模型和衣服模型进行全局碰撞检测。但由于全局碰撞检测的计算量较大,会严重消耗计算性能,这会显著降低角色动画的性能,甚至会影响交互的实时性。

鉴于此,本申请实施例提供一种角色动画中衣物的驱动方法及设备,在对驱动后的人体四面体网格模型进行全局碰撞检测的基础上,逆向计算碰撞检测后骨架的姿态,反向驱动衣物三角形网格模型跟随人体三角形网格模型进行运动,从而在不对衣物三角形网格模型进行传统的碰撞检测的情况下,解决衣物三角形网格模型的穿模问题,极大的减少了计算量,提高了角色动画的性能和交互的实时性。

一般的,在3D领域中,人们往往关注三维模型的外形,因此,大多数三维场景模型和角色动画模型都使用三角形网格模型。因此,本申请实施例预先存储了人体三角形网格模型和衣物三角形网格模型,其中,人体三角形网格模型和衣物三角形网格模型可以是对真实数据采用三维重建技术重建的,也可以是动画师建模得到的,本申请实施例不做限制性要求。

通常的,衣物需要穿着在人体上,为了使衣物三角形网格模型与人体三角形网格模型相适配,衣物三角形网格模型与人体三角形网格模型使用相同的骨架,如图4所示。

基于位置动力学(Position-based Dynamics,PBD)技术是一种具有物理仿真效果的顶点变形技术,其主要原理是通过对组成模型的网格建立各种约束条件,从而达到较为真实的变形结果。传统的三角形网格模型的每个三角形并不封闭,不构成一个具有体积的元素,无法建立体积约束,因此,PBD技术无法直接应用于三角形网格模型。而四面体网格模型中的四面体元素,具有体积概念,可以建立体积约束,将PBD技术用于驱动四面体网格模型变形,能够实现较好的驱动效果。

因此,本申请实施例在重建好人体三角形网格模型后,将其预先转换为人体四面体网格模型并存储。其中,本申请实施例对人体三角形网格模型转人体四面体网格模型的方式不做限制性要求,例如通过第三方工具或插件进行转换。

在角色动画中,一个骨骼节点可以驱动多个网格顶点(包括三角形网格模型的顶点以及四面体网格模型的顶点)运动,一个网格顶点也可以受多个骨骼节点的驱动,即一个网格顶点关联至少一个骨骼节点。

本申请的实施例中,在获得人体四面体网格模型后,遍历骨架中的每一个骨骼节点,通过判断该骨骼节点位于人体四面体网格模型的哪一四面体内,建立骨骼节点与四面体的对应关系。其中,一个骨骼节点是否位于一个四面体内,可以通过骨骼节点在四面体中的重心坐标来判断。对应关系的建立过程具体参见图5,主要包括以下几步:

S501:遍历骨架中的每一个骨骼节点,确定该骨骼节点在人体四面体网格模型中每个四面体内的重心坐标。

如图6所示,假设p点为一个骨骼节点,A、B、C、D四点组成人体四面体网格模型中的一个四面体,p点驱动前的初始全局坐标为(x

p(x

其中,(α,β,γ,λ)表示点p(x

S502:将参数满足预设取值条件的一个重心坐标对应的四面体,作为该骨骼节点对应的四面体。

具体实施时,如果重心坐标中的参数α、β、γ、λ均在取值区间[0,1]内,且α+β+γ+λ=1,则认为该重心坐标中的参数满足预设取值条件,将该重心坐标对应的四面体作为该骨骼节点对应的四面体,并存储对应关系。

遍历全部的骨骼节点后,可以得到每个骨骼节点对应的四面体,并将该对应关系进行存储。

在人体的骨架结构中,相邻的骨骼节点构成的线段为一段骨骼。以图4为例,编号为19和20的骨骼节点构成的线段为一段骨骼。本申请实施例可通过PBD技术实现人体四面体网格模型的变形驱动,并针对变形后的人体四面体网格模型,根据骨骼节点与人体四面体网格模型中四面体的对应关系,推算出的骨骼节点的新坐标,这样,骨骼节点坐标的改变,可能会导致相邻骨骼节点间构成的骨骼的长度相较原始骨骼的长度发生一定的改变,引起模型失真。因此,在本申请的实施例中,可通过预设拉伸约束对骨骼长度进行约束变形,防止驱动后模型失真问题。

基于上述存储的对应关系、拉伸约束,可实现角色动画中衣物的驱动方法,参见图7,该方法的流程由电子设备执行,其中,电子设备包括但不限于智能手机、智能电视、平板、笔记本电脑、台式机、可穿戴设备(如VR眼镜、VR头戴式显示设备等),该流程主要包括以下几步:

S701:获取衣物三角形网格模型与人体三角形网格模型共同的每一帧骨骼动画数据,并用骨骼动画数据,驱动人体四面体网格模型的顶点运动。

本申请的实施例中,由于衣物三角形网格模型与人体三角形网格模型共用一个人体骨架,因此,在S701中,衣物三角形网格模型与人体三角形网格模型共用一份骨骼动画数据。其中,骨骼动画数据可以是基于采集的每一帧图像,采用运动捕捉技术实时获取的,也可以是由动画师针对每一帧图像预先建立,并存储在电子设备本地中的,本申请实施例对骨骼动画数据的生成方式不做限制性要求。

获取每一帧骨骼动画数据后,采用传统的驱动方法,用获取的骨骼动画数据驱动人体四面体网格模型的顶点运动。具体的,可以采用基于几何的线性混合蒙皮(LinearBlending Skinning,LBS)方法,也可以采用基于几何的双四元数蒙皮(Dual QuaternionSkinning,DQS)方法,还可以采用基于物理的驱动方法(如PBD技术),驱动人体四面体网格模型的顶点运动,本申请实施例对骨骼节点驱动人体四面体网格模型的顶点运动的传统驱动方法不做限制性要求。

S702:对驱动后的人体四面体网格模型进行全局碰撞检测。

本申请的实施例中,基于三角形网格模型与四面体网格模型的特点,驱动变形过程可以针对人体四面体网格模型进行,最终进行渲染显示时使用人体三角形网格模型。由于人体四面体网格模型是基于人体三角形网格模型生成的,因此,在S702中,对骨骼动画数据驱动后的人体四面体网格模型进行全局碰撞检测后,可以解决渲染显示时,人体三角形网格模型中的穿模问题。

本申请实施例对全局碰撞检测的方式不做限制性要求,例如,可以采用先验碰撞检测法(即,碰撞发生前检测),还可以采用后验碰撞检测法(即,碰撞发生后检测)。其中,先验碰撞检测法一般通过预测模型的运动轨迹来避免穿模现象的发生,而后验碰撞检测法是在模型驱动之后对模型顶点之间的空间关系进行判断,纠正模型顶点位置使其不再穿模。

对人体四面体网格模型进行全局碰撞检测后,更新相应的人体三角形网格模型。从现实角度来讲,当人体三角形网格模型更新后,其内部对应的骨架的姿态也发生了改变,也可以理解为对骨架进行了全局碰撞检测。因此,可以利用经过碰撞检测后骨架的骨骼动画数据,代替原始的骨骼动画数据去驱动衣物三角形网格模型运动,从而解决衣物三角形模型的穿模问题。具体过程参见S703~S705。

S703:根据骨骼节点与人体四面体网格模型中四面体的对应关系,以及四面体的顶点坐标,计算每个骨骼节点的第一坐标。

由前述实施例可知,骨骼节点与人体四面体网格模型中四面体的对应关系,是基于骨骼节点在四面体内的重心坐标建立的,而重心坐标对于平移、旋转和缩放等操作具有不变性,这样,在驱动人体四面体网格变形后,骨骼节点在对应的四面体中的重心坐标不变。因此,在S703中,根据骨骼节点与四面体的对应关系,计算全局碰撞检测后骨骼节点的第一坐标。具体过程参见图8,主要包括以下几步:

S7031:针对每一个骨骼节点,根据骨骼节点与人体四面体网格模型中四面体的对应关系,确定人体四面体网格模型中与该骨骼节点对应的一个四面体。

在执行S7031时,针对每一个骨骼节点,根据预先存储的骨骼节点与四面体的一一对应关系,可以确定该骨骼节点在人体四面体网格模型中对应的一个四面体。以图4所示的骨架为例,骨骼节点与四面体的对应关系如表1所示。

表l、骨骼节点与四面体的对应关系

其中,A

S7032:获取该骨骼节点在对应的四面体中的重心坐标。

在执行S7032时,确定该骨骼节点对应的一个四面体后,可以获取该骨骼节点在对应的四面体中的重心坐标。

例如,以编号为0的骨骼节点为例,该骨骼节点在(A

S7033:根据重心坐标以及对应的四面体的顶点坐标,确定该骨骼节点的第一坐标。

在执行S7033时,针对每一个骨骼节点,根据该骨骼节点在对应的四面体内的重心坐标,以及全局碰撞检测后对应的四面体的顶点坐标,利用公式1,可以计算全局碰撞检测后相应骨骼节点的第一坐标,从而更新骨骼节点在全局碰撞检测后的位置,也可以理解为,第一坐标即为该骨骼节点被对应的四面体网格驱动后的新坐标。

S704:根据预设拉伸约束拉伸相邻骨骼节点间的骨骼,获得每个骨骼节点的第二坐标。

一般的,根据骨骼节点与四面体的对应关系,推算出的骨骼节点的第一坐标,可能会导致相邻骨骼节点间构成的骨骼的长度相较原始骨骼的长度发生一定的改变,引起模型失真。因此,在S704中,根据预先建立针对骨骼的拉伸约束,拉伸相邻骨骼节点间的骨骼以对骨骼节点的第一坐标进行校正,获得每个骨骼节点的第二坐标。通过拉伸约束,保证驱动后相邻骨骼节点间的骨骼长度不变,减少驱动后的异常形态,保证驱动后模型的真实性。

S705:根据每个骨骼节点的第二坐标以及初始全局坐标,确定每个骨骼节点的目标全局姿态矩阵,并用各目标全局姿态矩阵驱动衣物三角形网格模型运动。

以图4所示的骨架为例,相邻骨骼节点间存在父子关系。例如,编号为0的骨骼节点为根节点,编号为0的骨骼节点是编号为1和5的骨骼节点的父节点,编号为2的骨骼节点是编号为1的骨骼节点的子节点。整个骨架的全局坐标系是以根节点为原点建立的,以每个骨骼节点为原点,也可以构成一个局部坐标系。

在S705中,根据每个骨骼节点最终的第二坐标与初始全局坐标,利用相邻骨骼节点的父子关系,可以推算出骨架的最新骨骼动画数据。

本申请的实施例中,骨架中一个骨骼节点的局部姿态矩阵是该骨骼节点相对于其父节点的局部坐标系来说的,表示其相对于父节点的空间变换,初始局部姿态矩阵可以从预先存储的初始骨架数据中计算得到。

例如,以图4所示的骨架中编号为2的骨骼节点为例分别用P

假设q点为编号为2的骨骼节点构成的局部坐标系下的一点,模型驱动前,q点在编号为2的骨骼节点的局部坐标系下的初始局部坐标记为q

q

其中,矩阵P

对公式2进行数学变换后,获得公式3:

q

其中,(P

三维模型的绘制最终都是在全局坐标系下进行的,因此,需要求出利用获取的骨骼动画数据驱动模型运动并进行全局碰撞检测后的点在全局坐标系中的新坐标。

假设利用获取的骨骼动画数据驱动模型运动并进行全局碰撞检测后,q点的全局坐标记为q

q

其中,P′

G′=q

上述推算过程中,假设的q点为编号为2的骨骼节点的局部坐标系下的点,而全局碰撞检测后编号为3的骨骼节点也可以看做是编号为2的骨骼节点自身局部坐标系下的点。因此,上述推算过程可以应用到骨骼节点的目标全局姿态矩阵的计算中。具体过程参见图9,主要包括以下几步:

S7051:从预先存储的初始骨架数据中,获取每个骨骼节点在其父节点的局部坐标系下的初始局部姿态矩阵。

在执行S7051时,本地预先存储了人体三角形网格模型的初始骨架数据,从初始骨架数据中,可以获取每个骨骼节点在其父节点的局部坐标系下的初始局部姿态矩阵。

仍以图4所示的骨架为例,P

S7052:根据每个骨骼节点的初始局部姿态矩阵,依据相邻骨骼节点间的父子关系,确定每个骨骼节点相对于根节点的初始全局姿态矩阵。

针对编号为1的骨骼节点,其关联的初始局部姿态矩阵为P

G=P

针对编号为2的骨骼节点,其关联的初始局部姿态矩阵为P1和P0,则编号为2的骨骼节点相对于根节点的初始全局姿态矩阵为:

G=P

依次类推,可以得到各骨骼节点的初始全局姿态矩阵。

S7053:针对每一个骨骼节点,根据该骨骼节点的第二坐标、该骨骼节点的初始全局姿态矩阵,以及该骨骼节点的初始全局坐标,确定该骨骼节点的目标全局姿态矩阵。

模型驱动前,该骨骼节点的初始全局坐标可以初始骨架数据中读取到,其中,初始骨架数据可以与骨骼动画数据单独存储,也可以与骨骼动画数据独立存储。

在执行S7053时,根据全局碰撞检测后该骨骼节点的第二坐标、初始全局姿态矩阵,以及该骨骼节点的初始全局坐标,确定该骨骼节点的目标全局姿态矩阵,计算公式如下:

G′=q′

其中,i表示骨骼节点的编号,i为大于等于0的整数,q′

S7054:用各目标全局姿态矩阵驱动衣物三角形网格模型运动。

遍历骨架中的每一个骨骼节点后,可以得到各骨骼节点的目标全局姿态矩阵,并对衣物三角形网格模型进行驱动。

在一种可选的实施方式中,驱动过程参见图10,主要包括以下几步:

S7054_1:针对衣物三角形网格模型的每个顶点,根据该顶点的初始全局坐标,该顶点对应的骨骼节点的目标全局姿态矩阵,以及该顶点对应的骨骼节点相对于根节点的初始全局姿态矩阵,确定该顶点的目标全局坐标。

根据前述实施例可知,每个骨骼节点相对于根节点的初始全局姿态矩阵,是从预先存储的初始骨架数据中计算出各骨骼节点的初始局部姿态矩阵后,依据相邻骨骼节点间的父子关系确定的。而在三维重建时,衣物三角形网格模型的每个顶点与骨骼节点的绑定关系是已知的,且衣物三角形网格模型的每个顶点的初始全局坐标,可以从驱动前的衣物三角形网格模型中读取到,因此,在执行S7054_1时,根据每个顶点的初始全局坐标,每个顶点对应的骨骼节点的目标全局姿态矩阵,以及每个顶点对应的骨骼节点相对于根节点的初始全局姿态矩阵,确定经骨骼动画数据驱动以及全局碰撞检测后衣物三角形网格模型中每个顶点的目标全局坐标。其中,顶点的目标全局坐标的计算公式为:

w′=G′Ow,O=(P

其中,w表示衣物三角形网格模型中一个顶点的初始全局坐标,w′表示该顶点的目标全局坐标,G′表示该顶点对应的骨骼节点的目标全局姿态矩阵,(P

S7054_2:根据衣物三角形网格模型各顶点的目标全局坐标,驱动衣物三角形网格模型运动。

由于人体四面体网格模型是基于人体三角形网格模型生成的,人体三角形网格模型与衣物三角形网格模型共用一个骨架,且衣物三角形网格模型各顶点的目标全局坐标,是经过人体四面体网格模型碰撞后计算得到的,也即相当于对衣物三角形网格模型的骨架进行了全局碰撞检测,通过全局碰撞检测的骨架来确定衣物三角形网格模型顶点的目标全局坐标,从而驱动衣物三角形网格模型运动。在不对衣物三角形网格模型进行全局碰撞检测的情况下,能够有效避免衣物三角形网格模型的穿模现象,节约了计算量,提高了角色动画的效率和交互的实时性。

由于人体四面体网格数据量大于人体三角形网格模型,如果角色动画中使用人体四面体网格模型进行渲染显示,会造成额外计算和渲染性能的浪费,并且在角色动画中,通常只关注模型的外形。因此,本申请实施例中,在解决穿模问题时,使用人体四面体网格模型计算全局碰撞检测后的骨架,用全局碰撞检测后的骨架来驱动人体三角形网格模型和衣物三角形网格模型的顶点并进行渲染显示。

在一种可选的实施方式中,在渲染显示时,可以使用全局碰撞检测并校正后的骨架包含的各骨骼节点的第二坐标,来驱动人体三角形网格模型中相应的顶点运动。具体过程参见图11A,主要包括以下几步:

S706:根据人体三角形网格模型中顶点与骨骼节点的对应关系,利用各骨骼节点的第二坐标,驱动人体三角形网格模型中相应的顶点运动。

在角色动画中,一个骨骼节点可以驱动人体三角形网格模型中的一个或多个网格顶点运动,一个网格顶点也可以受多个骨骼节点的驱动,即一个网格顶点关联至少一个骨骼节点。网格顶点与关联的不同骨骼节点之间存在不同的关联权重,关联权重越大,表明网格顶点受该骨骼节点的影响越大。在S706中,可以根据人体三角形网格模型中顶点与骨骼节点的对应关系,确定每个骨骼节点在人体三角形网格模型中关联的顶点,并利用每个骨骼节点的第二坐标及关联权重,驱动人体三角形网格模型中相应的顶点运动,从而获得与骨骼动画数据的姿态相适配的人体三角形网格模型。由于借助于人体四面体网格模型对骨架进行了全局碰撞检测,因此,根据各骨骼节点的第二坐标驱动后的人体三角形网格模型,不会出现穿模现象。

S707:叠加渲染驱动后的人体三角形网格模型和衣物三角形网格模型,得到当前帧的角色动画并显示。

人体三角形网格模型和衣物三角形网格模型在驱动前具有相同的骨架,且均是使用骨骼动画数据驱动后且经过全局碰撞检测后的骨架进行的驱动,因此,驱动后二者依然适配,且能够解决渲染显示过程中模型的穿模问题。

在另一种可选的实施方式中,由于人体四面体网格模型是基于人体三角形网格模型生成的,因此,在渲染显示时,还可以使用全局碰撞检测后各四面体的顶点坐标,驱动人体三角形网格模型中相应的顶点运动。具体过程参见图11B,主要包括以下几步:

S708:根据人体三角形网格模型中顶点与人体四面体网格模型中四面体的对应关系,利用全局碰撞检测后各四面体的顶点坐标,驱动人体三角形网格模型中相应的顶点运动。

在本申请的实施例中,由于人体四面体网格模型是基于人体三角形网格模型生成的,因此,可以基于人体三角形网格模型中的顶点,在人体四面体网格模型中四面体内的重心坐标,获得人体三角形网格模型的顶点与人体四面体网格模型中四面体的对应关系。其中,该对应关系可预先建立并存储,建立过程与骨骼节点在四面体内的重心坐标的计算过程一致,在此不再重复。

与骨骼顶点与四面体的对应关系不同的是,在实际场景中,有部分三角形网格的顶点可能没有位于人体四面体网格模型的任何一个四面体内,如图12中圈出的部分。针对这部分人体三角形网格模型中的顶点,可通过计算其与各四面体的质心坐标的最小距离,确定对应关系。

d

r

其中,v(x

在S708中,人体四面体网格模型是经骨骼动画数据驱动且进行了全局碰撞检测,各四面体的顶点坐标发生了更新,因此,根据人体三角形网格模型中顶点与人体四面体网格模型中四面体的对应关系,利用全局碰撞检测后各四面体的顶点坐标,驱动人体三角形网格模型中相应的顶点运动。

S709:叠加渲染驱动后的人体三角形网格模型和衣物三角形网格模型,得到当前帧的角色动画并显示。

衣物三角形网格模型使用骨骼动画数据驱动后且经过全局碰撞检测后的骨架进行了驱动,人体三角形网格模型使用骨骼动画数据驱动后且经过全局碰撞检测后的各四面体的顶点坐标进行的驱动,由于均是使用同一骨骼动画数据,驱动后二者的姿态仍适配,且经过了全局碰撞检测,能够解决渲染显示过程中模型的穿模问题。

参见图13为本申请实施例提供的衣物三角形网格模型和人体三角形网格模型的渲染显示效果图,驱动后的衣物和人体依然能够完美的适配且解决了穿模问题。

本申请实施例提供的一种角色动画中衣物的驱动方法中,角色动画中的衣物和人体一般使用三角形网格模型来提高渲染显示效率,且为了衣物和人体相适配,衣物三角形网格模型与人体三角形网格模型具有相同的骨架和骨骼动画数据,由于人体三角形网格模型内部是空的,在真实度较高的仿真场景中无法使用,因此,根据人体三角形网格模型生成具有体积概念的人体四面体网格模型,当获取每一帧骨骼动画数据后,驱动人体四面体网格模型的顶点运动,并对驱动后的人体四面体网格模型进行全局碰撞检测,以解决人体的穿模现象。对人体四面体网格模型进行全局碰撞检测,相当于对人体的骨架进行了全局碰撞检测,这样,可以根据骨骼节点与四面体的对应关系以及四面体的顶点坐标,计算全局碰撞检测后每个骨骼节点的第一坐标,并通过拉伸保证骨骼长度不变,保证检测前后骨架的真实性,获得校正后骨骼节点的第二坐标。进一步地,根据每个骨骼节点的第二坐标以及初始全局坐标,确定每个骨骼节点的目标全局姿态矩阵,并用所述目标全局姿态矩阵驱动衣物三角形网格模型运动,从而实现在不对衣物三角形网格模型进行碰撞检测的情况下,解决跟随人体运动的衣物的穿模问题,节约计算量,提高角色动画的效率和交互的实时性。

基于相同的技术构思,本申请实施例提供一种电子设备,该设备可实现上述实施例中角色动画中衣物的驱动方法步骤,且能达到相同的技术效果。

参见图14,该电子设备包含处理器1401、存储器1402和显示器1403,其中,所述显示器1403、所述存储器1402与所述处理器1401通过总线1404连接;

所述显示器1403用于显示人体三角形网格模型和衣物三角形网格模型;

所述存储器1402包含数据存储单元和程序存储单元,所述程序存储单元中存储有计算机程序,所述处理器1401根据所述计算机程序,执行以下操作:

从所述数据存储单元中,获取衣物三角形网格模型与人体三角形网格模型共同的每一帧骨骼动画数据,并用所述骨骼动画数据,驱动人体四面体网格模型的顶点运动,所述人体四面体网格模型是基于所述人体三角形网格模型生成的;

对驱动后的人体四面体网格模型进行全局碰撞检测;

根据骨骼节点与所述人体四面体网格模型中四面体的对应关系,以及四面体的顶点坐标,计算每个骨骼节点的第一坐标;

根据预设拉伸约束拉伸相邻骨骼节点间的骨骼,获得每个骨骼节点的第二坐标;

根据每个骨骼节点的第二坐标以及初始全局坐标,确定每个骨骼节点的目标全局姿态矩阵,并用各目标全局姿态矩阵驱动所述衣物三角形网格模型运动。

可选的,所述处理器1401根据骨骼节点与所述人体四面体网格模型中四面体的对应关系,以及四面体的顶点坐标,计算相应骨骼节点的第一坐标,具体操作为:

针对每一个骨骼节点,根据骨骼节点与所述人体四面体网格模型中四面体的对应关系,确定所述人体四面体网格模型中与所述骨骼节点对应的一个四面体;

获取所述骨骼节点在对应的四面体中的重心坐标;

根据所述重心坐标以及对应的四面体的顶点坐标,确定所述骨骼节点的第一坐标。

可选的,相邻骨骼节点间存在父子关系,所述处理器1401根据每个骨骼节点的第二坐标以及初始全局坐标,确定每个骨骼节点的目标全局姿态矩阵,具体操作为:

从所述数据存储单元中预先存储的初始骨架数据中,获取每个骨骼节点在其父节点的局部坐标系下的初始局部姿态矩阵;

根据每个骨骼节点的初始局部姿态矩阵,依据相邻骨骼节点间的父子关系,确定每个骨骼节点相对于根节点的初始全局姿态矩阵;

针对每一个骨骼节点,根据所述骨骼节点的第二坐标、初始全局姿态矩阵以及初始全局坐标,确定所述骨骼节点的目标全局姿态矩阵。

可选的,所述骨骼节点的目标全局姿态矩阵的确定公式为:

G′=q′

其中,i表示骨骼节点的编号,q′

可选的,所述处理器1401用所述目标全局姿态矩阵驱动所述衣物三角形网格模型运动,具体操作为:

针对所述衣物三角形网格模型的每个顶点,根据所述顶点的初始全局坐标,所述顶点对应的骨骼节点的目标全局姿态矩阵,以及所述顶点对应的骨骼节点相对于根节点的初始全局姿态矩阵,确定所述顶点的目标全局坐标,其中,所述骨骼节点相对于根节点的初始全局姿态矩阵根据预先存储的初始骨架数据确定的;

根据所述衣物三角形网格模型各顶点的目标全局坐标,驱动所述衣物三角形网格模型运动。

可选的,所述顶点的目标全局坐标的计算公式为:

w′=G′Ow,O=(P

其中,w表示所述顶点的初始全局坐标,w′表示所述顶点的目标全局坐标,G′表示所述顶点对应的骨骼节点的目标全局姿态矩阵,P

可选的,用各目标全局姿态矩阵驱动所述衣物三角形网格模型运动之后,所述处理器1401还执行:

根据所述人体三角形网格模型中顶点与骨骼节点的对应关系,利用各骨骼节点的第二坐标,驱动所述人体三角形网格模型中相应的顶点运动;或者

根据所述人体三角形网格模型中顶点与所述人体四面体网格模型中四面体的对应关系,利用全局碰撞检测后各四面体的顶点坐标,驱动所述人体三角形网格模型中相应的顶点运动;

叠加渲染驱动后的所述人体三角形网格模型和所述衣物三角形网格模型,得到当前帧的角色动画。

可选的,所述处理器1401通过以下方式确定所述骨骼节点与所述人体四面体网格模型中四面体的对应关系:

p(x

其中,p(x

需要说明的是,图14仅是一种示例,给出电子设备执行本申请实施例提供的角色动画中衣物的驱动方法步骤所必要的硬件,未示出的,该电子设备还包含显示设备的常用硬件,如扬声器、麦克风、摄像头等。

本申请实施例图14中涉及的处理器可以是中央处理器(Central ProcessingUnit,CPU),通用处理器,图形处理器(Graphics Processing Unit,GPU)数字信号处理器(Digital SignalProcessor,DSP),专用集成电路(Application-specific IntegratedCircuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。其中,所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。

本申请实施例还提供一种计算机可读存储介质,用于存储一些指令,这些指令被执行时,可以完成前述实施例的方法。

本申请实施例还提供一种计算机程序产品,用于存储计算机程序,该计算机程序用于执行前述实施例的方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号