数据的迁移方法及装置、电子设备、可读存储介质

文档序号:1906254 发布日期:2021-11-30 浏览:13次 >En<

阅读说明:本技术 数据的迁移方法及装置、电子设备、可读存储介质 (Data migration method and device, electronic equipment and readable storage medium ) 是由 刘思阳 于 2021-09-10 设计创作,主要内容包括:本申请提供的数据的迁移方法及装置,依据第一模型中的节点的旋转数据获取第一模型中的参考点的位置坐标。依据第一参考点和目标节点的位置坐标,获取第一参考点指向目标节点的第一向量,确定第一向量与第一网格的经过第一参考点的法线之间的夹角,依据夹角的余弦值的绝对值与影响因子正相关的预设规则,确定第一参考点的影响因子,将第一模型的参考点的影响因子作为权重,基于依据第一模型的第一参考点以及节点的位置坐标确定的第一模型的参考点的指向位移坐标的加权和,确定第一模型的节点的位置坐标迁移至第二模型中的对应节点后的迁移位置坐标,使得第二模型驱动的虚拟对象呈现的动作具有较高的精准性,并且上述方法通用性较高。(According to the data migration method and device, the position coordinates of the reference point in the first model are obtained according to the rotation data of the nodes in the first model. According to the position coordinates of the first reference point and the target node, a first vector of the first reference point pointing to the target node is obtained, an included angle between the first vector and a normal line of the first grid passing through the first reference point is determined, an influence factor of the first reference point is determined according to a preset rule that an absolute value of a cosine value of the included angle is positively correlated with the influence factor, the influence factor of the reference point of the first model is used as a weight, and a migration position coordinate of the node of the first model after the position coordinate of the node of the first model is migrated to a corresponding node in the second model is determined based on a weighted sum of a pointing displacement coordinate of the reference point of the first model determined according to the first reference point of the first model and the position coordinate of the node, so that an action presented by a virtual object driven by the second model has high accuracy, and the method is high in universality.)

数据的迁移方法及装置、电子设备、可读存储介质

技术领域

本申请涉及电子信息领域,尤其涉及一种数据的迁移方法及装置、电子设备、可读存储介质。

背景技术

3D虚拟对象(通常包括人物以及动物)的制作在动画制作以及电影特效等场景中有广泛的应用。以3D虚拟人物作为3D虚拟对象的一种示例,制作3D虚拟人物的大体流程为:通过动作捕捉技术捕捉实体如演员的各种动作,生成指示这些动作的数据,再将数据分配到指定的3D模型上。

目前,有多种方式用于提高3D模型展示的动作的精准性,但这些方法的通用性有待提升。也就是说,这些方法能够提高一部分3D模型展示的动作的精准性,而在对于另一部分3D模型,即使采用了这些方法,3D模型展示的动作的精准性仍然有待提升。例如,3D模型在展示动作时仍然会出现“穿模”问题。“穿模”是指3D模型做出一些不符合物理原理的动作,比如肢体伸到了身体内部,如图1中被圈住的区域所示,二次元虚拟偶像的右臂穿入到了身体内部。

可见,如何提出一种通用性较高的提升3D模型的动作精准性的方法,是目前需要解决的问题。

发明内容

本申请提供了一种数据的迁移方法及装置、电子设备、可读存储介质,目的在于如何提出一种通用性较高的提升3D模型的动作精准性的方法的问题。

为了实现上述目的,本申请提供了以下技术方案:

一种数据的迁移方法,用于将第一模型的数据迁移至拓扑关系相同的第二模型,包括:

依据所述第一模型中的节点的旋转数据,获取所述第一模型的参考点的位置坐标,所述第一模型的参考点为所述第一模型的网格中的点;

依据第一参考点的位置坐标和所述第一模型中的第一节点的位置坐标,获取所述第一参考点指向所述第一节点的向量,作为第一向量;所述第一参考点为所述第一模型的任意一个所述参考点,所述第一节点为所述第一模型中的任意一个节点;

确定所述第一向量与目标网格的第一法线之间的夹角,所述目标网格为所述第一参考点所属的网格,所述第一法线为经过所述第一参考点的法线;

依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子,所述影响因子指示所述目标网格对所述第一节点的影响程度;

将所述第一模型的参考点的影响因子作为权重,依据所述第一模型的参考点的指向位移坐标的加权和,确定将所述第一模型的节点的位置坐标迁移至所述第二模型中的对应节点后得到的迁移位置坐标,所述指向位移坐标依据所述第一模型的参考点以及节点的位置坐标确定。

可选的,所述依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子,包括:

如果所述余弦值的绝对值大于预设的极小值,则依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子;

如果所述余弦值的绝对值不大于所述极小值,则依据所述极小值的余弦值的绝对值,确定所述第一参考点的影响因子。

可选的,所述依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子,包括:

依据所述夹角的余弦值的绝对值以及所述目标网格的面积,确定所述第一参考点的影响因子;

依据所述极小值的余弦值的绝对值,确定所述第一参考点的影响因子,包括:

依据所述极小值的余弦值的绝对值以及所述目标网格的面积,确定所述第一参考点的影响因子。

可选的,所述依据所述夹角的余弦值的绝对值以及所述目标网格的面积,确定所述第一参考点的影响因子,包括:

将所述面积的n次方与所述夹角的余弦值的绝对值的乘积,作为所述第一参考点的影响因子;

所述依据所述极小值的余弦值的绝对值以及所述目标网格的面积,确定所述第一参考点的影响因子,包括:

将所述面积的n次方与所述极小值的余弦值的绝对值的乘积,作为所述第一参考点的影响因子,n为大于或等于1的整数。

可选的,将所述第一模型中的参考点的影响因子作为权重,依据所述第一模型的参考点的指向位移坐标的加权和,确定将所述第一模型中的节点的位置坐标迁移至所述第二模型中的对应节点后得到的迁移位置坐标,包括:

依据所述第一模型的各个参考点的影响因子以及各个参考点的指向位移坐标的加权和,确定将所述第一节点的位置坐标迁移至所述对应第一节点后得到的迁移位置坐标,所述第一参考点的指向位移坐标为将所述第一参考点沿所述第一参考点的指向向量的方向,移动所述指向向量的长度后得到的坐标;

其中,所述第一参考点的指向向量通过将所述第一向量使用预设的第一参数归一化处理后,再使用预设的第二参数反归一化至所述第二模型得到。

可选的,所述第一向量的获取方法包括:

依据所述第一节点的位置坐标,确定所述第一参考点的初始位移坐标,所述第一参考点的初始位移坐标为将所述第一参考点沿所述第一向量的方向,移动所述第一向量的长度后的得到的坐标;

依据所述第一参考点的初始位移坐标以及所述第一参考点的位置坐标,获取所述第一向量。

一种数据的迁移装置,包括:

第一获取模块,用于依据所述第一模型中的节点的旋转数据,获取所述第一模型的参考点的位置坐标,所述第一模型的参考点为所述第一模型的网格中的点;

第二获取模块,用于依据第一参考点的位置坐标和所述第一模型中的第一节点的位置坐标,获取所述第一参考点指向所述第一节点的向量,作为第一向量;所述第一参考点为所述第一模型的任意一个所述参考点,所述第一节点为所述第一模型中的任意一个节点;

第一确定模块,用于确定所述第一向量与目标网格的第一法线之间的夹角,所述目标网格为所述第一参考点所属的网格,所述第一法线为经过所述第一参考点的法线;

第二确定模块,用于依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子,所述影响因子与所述余弦值正相关,所述影响因子指示所述目标网格对所述第一节点的影响程度;

迁移模块,用于将所述第一模型的参考点的影响因子作为权重,依据所述第一模型的参考点的指向位移坐标的加权和,确定将所述第一模型的节点的位置坐标迁移至所述第二模型中的对应节点后得到的迁移位置坐标,所述指向位移坐标依据所述第一模型的参考点以及节点的位置坐标确定。。

可选的,所述第二确定模块用于依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子,包括:

所述第二确定模块具体用于,如果所述余弦值的绝对值大于预设的极小值,则依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子;如果所述余弦值的绝对值不大于所述极小值,则依据所述极小值的余弦值的绝对值,确定所述第一参考点的影响因子。

一种电子设备,包括:

处理器和存储器;

所述存储器用于存储程序,所述处理器用于运行所述程序,以实现上述的数据的迁移方法。

一种计算机可读存储介质,其上存储有程序,在电子设备运行所述程序时,实现上述的数据的迁移方法。

本申请所述的方法及装置,依据第一模型中的节点的旋转数据获取第一模型中的参考点的位置坐标。依据第一参考点的位置坐标和第一模型中的第一节点的位置坐标,获取第一参考点指向第一节点的第一向量,确定第一向量与第一网格的经过第一参考点的法线之间的夹角,依据夹角的余弦值的绝对值与影响因子正相关的预设规则,确定指示目标网格对第一节点的影响程度的第一参考点的影响因子,将第一模型的参考点的影响因子作为权重,基于依据第一模型的第一参考点以及节点的位置坐标确定的第一模型的参考点的指向位移坐标的加权和,确定将第一模型的节点的位置坐标迁移至第二模型中的对应节点后得到的迁移位置坐标,因为使用参考点的位置坐标实现数据迁移,所以第二模型依据迁移位置坐标驱动的虚拟对象呈现的动作能够贴近实体的动作,即具有较高的精准性。又因为夹角的余弦值的绝对值表示第一节点与目标网格之间的位置关系,即越靠近目标网格的正上方或正下方,则余弦值越大,影响因子越大,所以,适用于更多的模型,因此通用性较高。

附图说明

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

图1为作为虚拟对象的示例的虚拟动画人物“穿模”的示例图;

图2a为数量不同的网格表示的人体3D模型的示例图;

图2b为与人体一部分关节点对应的人体3D模型的示例图;

图2c为图2b所示的模型被驱动获得的网格的示例图;

图2d为参考点与节点之间的距离的示例图;

图3为本申请实施例公开的一种数据的迁移方法的流程图;

图4为本申请实施例公开的又一种数据的迁移方法的流程图;

图5为本申请实施例公开的一种数据的迁移装置的结构示意图。

具体实施方式

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

申请人在研究的过程中发现,因为要展示实体做出的动作,所以指定的3D模型中的驱动骨骼节点(以下简称为节点)与实体中的关节点通常具有相同的拓扑关系,即指定的3D模型中的驱动骨骼节点,与实体中的全部或部分关节点一一对应。

但指定的3D模型中,节点距离的比例,不一定与实体中的对应关节点长度的比例相同,所以,指定的3D模型展示的动作,可能与实体做出的动作有较大偏差。

因此,申请人提出:

为了提高虚拟对象的动作的精准性,可以先构建与实体适配的3D模型,以下称为第一模型。将捕捉到的数据分配至第一模型,得到第一模型中的节点的数据(位置坐标以及旋转数据),再将第一模型中的节点的数据,迁移至指定的3D模型,以下称为第二模型,使用第二模型驱动虚拟对象。

在以下实施例中,提出了一种将第一模型中节点的数据迁移到第二模型中节点的技术方案,目的在于屏蔽第一模型与第二模型中节点之间距离的比例的差异,使得第二模型按照迁移后的数据展示的动作,更贴近实体的动作,即虚拟对象的动作更为精准。

但申请人在研究的过程中还发现:上述数据迁移方法,能够提高一部分第二模型的动作的精准性,而对于有些第二模型,动作的精准性仍然不高。

申请人研究发现,导致上述问题的原因在于:

3D模型使用网格表示时,如图2a所示,从左到右的各列中,模型所使用的网格的数量递减,对于最右边的一列,因为网格的数量较少,所以每个网格对于节点的影响都比较大,因此,影响权重可以看作相同或者使用固定的影响权重即可。但对于最左边一列,因为网格的数量远远多于比最右边一列的数量,所以不同网格对于节点的影响程度的差异较大,在此情况下,如果不区分网格对于节点的影响程度或仅简单使用固定的权重参数,则即使使用上述数据迁移方法,第二模型的动作精准性仍然不高。

综上所述,申请人提出以下实施例所述的数据迁移方法,在数据迁移过程中,进一步区分网格对于节点的影响权重,以实现一种通用性较高的能够提升3D模型的动作精准性的方法。

下面先对一些定义进行解释和说明:

拓扑关系是指节点的类型以及节点之间的连接关系。图2b为本申请实施例使用的一种人体3D模型的示例,Hips表示臀部节点,Spine1表示脊柱第一(关)节点,Spine2表示脊柱第二(关)节点,Neck表示颈部(关)节点,Head表示头部(关)节点,LeftShoulder表示左肩(关)节点,RightShoulder表示右肩(关)节点,LeftElbow表示左肘(关)节点,RightElbow表示右肘(关)节点,LeftWrist表示左手腕(关)节点,RightWrist表示右手腕(关)节点,LeftHips表示左臀部(关)节点,RightHips表示右臀部(关)节点,LeftKnee表示左膝盖(关)节点,RightKnee表示右左膝盖(关)节点,LeftAnkle表示左脚踝(关)节点,RightAnkle表示右脚踝(关)节点。

节点的类型为对应的实体中的关节点的类型,例如图2b所示的各种节点。可以理解的是,图2b所示为与人体的一部分关节点对应的节点。

第一模型和第二模型均为3D模型,其中包括的节点的数据包括位置坐标和旋转数据。旋转数据的定义可参见现有技术。

节点距离的比例是指:第一节点A与第二节点B之间的距离S1,与其它两个节点C和D之间的距离S2的比值,即S1/S2。其中,距离可由节点的位置坐标计算得到。以图2b为例,利用Hips和LeftHips Hips的位置坐标,得到Hips与LeftHips之间的距离S1,利用Hips和RightHips的位置坐标,得到Hips与RightHips之间的距离S2,S1除以S2,得到节点距离的比例。

实体中关节点长度的比例是指,关节点之间的骨骼长度的比值,例如,关节点1与关节点2之间的骨骼长度为S3,关节点3与关节点4之间的骨骼长度为S4,S3/S4即为一个关节点长度比例。

第一模型与实体适配是指:第一模型中的节点与实体中的关节点一一对应,且,第一模型中的节点距离的比例,与实体中对应关节点长度的比例相同,例如,图2b中Hips与LeftHips之间的距离除以Hips与RightHips之间的距离得到的比值,与人体中的Hips与LeftHips之间的骨骼长度除以人体中的Hips与RightHips的骨骼长度得到的比值相等。

模型中的节点与实体中的关节点对应是指:模型中的某个节点被分配的数据,是实体中的某个关节点的位移或旋转采集得到的数据,则该节点与该关节点对应。

模型的网格是指,对3D模型中的节点的旋转数据进行驱动,得到的包围所述3D模型的平面。如果将3D模型中连接的节点看作是骨架,则网格可以看作是包裹骨架的“皮肉”。

通常使用Unity或Blender等3D软件利用3D模型的旋转数据将3D模型驱动起来获得网格。这里不再赘述具体流程。

在驱动3D模型的旋转数据获得网格时,可以设置网格的形状。参考点为网格中的某点,可以在获得网格之前指定。例如网格可以为矩形,参考点可以为矩形的左上顶点。

在第一模型以及第二模型被构建时,各个节点被赋值默认的位置坐标和选择数据,而此时还没有为模型分配从实体采集的运动数据,此时模型的状态称为初始状态。以人体模型为例,通常,模型的初始的状态为T-Pose状态,即模型中的节点的连线呈“T”状。

基于上述内容可知,第一模型与第二模型具有相同的拓扑关系,第一模型中的节点与第二模型中的节点一一对应,即第一模型中的节点,在第二模型中均有唯一的对应节点。

图2c为基于图2b生成的模型的网格的示例,其中网格以三角形为例。参考点以三角形的重心为例。网格包括头部网格和躯干网格。

图2c中所示的头部网格记为:MA-H={T1 A-H,T2 A-H,T3 A-H,T4 A-H,...}。

图2c中所示的躯干网格记为MA-B={T1 A-B,T2 A-B,T3 A-B,T4 A-B,...}。

各个头部网格的参考点为refA-H={P1 A-H,P2 A-H,P3 A-H,P4 A-H,...},各个躯干网格的参考点为refA-B={P1 A-B,P2 A-B,P3 A-B,P4 A-B,...},因此,第一模型的参考点为refA=refA-H+refA-B

其中,T表示网格中的三角形。P1 A-B表示三角形T1 A-B的重心,可看作一个参考点的位置坐标。

基于上述网格的定义可以看出,网格跟节点连接构成的骨架相比更接近实体。

在以下实施例中,将第一模型中的任意一个待数据迁移的节点称为第一节点,将第一节点在第二模型中的对应节点称为对应第一节点。任意节点(如第一节点)在第一模型中表示的拓扑关系,与对应节点(如对应第一节点)在第二模型表示的拓扑关系相同,即任意节点的对应节点,为在拓扑关系中表示相同关系的节点。

例如,如图2b所示,第一节点为第一模型中的LeftWrist,则第二模型中的LeftWrist为对应第一节点。第一模型中的LeftWrist的拓扑关系为与LeftElbow相连,第二模型中的LeftWrist的拓扑关系也为与LeftElbow相连。

下面将对本申请实施例提出的数据的迁移流程进行详细说明。

图3为本申请实施例公开的一种数据的迁移方法的流程,包括以下步骤:

S31、依据第一模型中的节点的旋转数据,获取第一模型的参考点的位置坐标。

S31的具体实现方式如前所述,这里不再赘述。

S32、依据第一参考点的位置坐标和第一模型中的第一节点的位置坐标,获取第一参考点指向第一节点的向量,作为第一向量。

第一参考点为第一模型的任意一个参考点,第一节点为第一模型中的任意一个节点。

本实施例中,第一向量的获取方式具体可以为:第一参考点指向第一节点的方向作为第一向量的方向,将第一参考点的位置坐标与第一节点的位置坐标的差值的绝对值,作为第一向量的长度。

S33、确定第一向量与目标网格的第一法线之间的夹角。

目标网格为第一参考点所属的网格,因此,第一参考点可以为目标网格上的一点,如前所述例如顶点,或者重心等。

可以理解的是,网格的法线为垂直于网格的线,网格的法线可以为多条。本实施例中,第一法线为经过第一参考点的法线。

S34、依据夹角的余弦值的绝对值与影响因子正相关的预设规则,确定第一参考点的影响因子。

影响因子指示目标网格对第一节点的影响程度。

依据夹角的余弦值的绝对值与影响因子正相关的预设规则,确定第一参考点的影响因子的一种实现方式为:预设夹角的余弦值与影响因子的对应关系,对应关系满足上述正相关特点,依据夹角的余弦值查询对应关系,从而确定影响因子。

在以下实施例中,还提供了一种更为精确的计算方式。

S35、将第一模型中的参考点的影响因子作为权重,依据第一模型的参考点的指向位移坐标的加权和,确定将第一模型的节点的位置坐标迁移至第二模型中的对应节点后得到的迁移位置坐标。

指向位移坐标依据第一模型的参考点以及节点的位置坐标确定,具体实现方式将在以下实施例中说明。

因为对于任意一个节点,越靠近某个网格的正上方或正下方,该网格对于该节点的影响程度越大,所以,本实施例中,使用夹角的余弦值的绝对值与影响因子正相关的预设规则,确定第一参考点对第一节点的影响因子,再将影响因子作为权重,确定将第一模型的节点的位置坐标迁移至第二模型中的对应节点后得到的迁移位置坐标,所以,能够提高迁移后位置坐标的准确性,从而使得第二模型依据位置坐标驱动虚拟对象呈现的动作能够贴近实体的动作,即具有较高的精准性。并且,因为考虑了不同网格的权重,所以,适用于更多的模型,因此通用性较高。

下面为将上述实施例应用在图2b以及图2c所示的人体3D模型的流程,另外还将详细说明了S34的具体实现方式:

1、依据第一模型中的节点的旋转数据,获取所述第一模型的网格中的参考点的位置坐标。

2、依据第一参考点的位置坐标和第一模型中的第一节点的位置坐标,获取第一参考点指向第一节点的向量,作为第一向量。

如前所述,第一节点为第一模型中的任意一个节点,在本步骤以及以下实施例中,第一节点的示例为LeftWrist。

第一参考节点为图2d所示的作为任意一个网格的三角形ABC的重心R。第一向量为R指向LeftWrist(简称为P)的向量。

3、确定第一向量与目标网格的第一法线之间的夹角。

还以图2d为例,第一法线为经过R的法线。夹角记为α。

4、依据夹角的余弦值的绝对值,确定第一参考点的影响因子。

除了上述实现方式之外,本实施例还提供一种实现方式:

具体的,如果余弦值的绝对值大于预设的极小值,则依据夹角的余弦值的绝对值与影响因子正相关的规则,确定第一参考点的影响因子。如果余弦值的绝对值不大于极小值,则依据极小值的余弦值的绝对值,确定第一参考点的影响因子。

因为余弦值有可能为零,而导致影响因子为零,这种情况与实际不符,因为实际中,网格不可能对节点没有影响,所以,将极小值作为阈值,区分两种计算方式,保证能够得到不为零的影响因子。

进一步的,申请人发现,网格的面积也关系到网格对节点的影响程度,网格的面积越大,对节点的影响越大。因此,本实施例中,将网格的面积引入影响因子的计算,即:依据夹角的余弦值的绝对值以及目标网格的面积,确定第一参考点的影响因子。依据极小值的余弦值的绝对值以及目标网格的面积,确定第一参考点的影响因子。

可选的,影响因子的确定方式如下:

λ为影响因子,SABC为网格的面积,为距离,eps为极小值,具体数值为0.00001。

其中,n为大于0的整数。

可以理解的是,上述公式中,面积的n次方与余弦值的绝对值相乘,仅为引入面积的一种示例,除了相乘之外,还可以是其它运算方式,这里不做限定。

可选的,为了进一步提高面积对影响因子的影响程度,n大于1。本实施例中,在图2a所示的网格数量等级下,n为3或4。

可以理解的是,如前所述,因为构成网格的点由3D软件利用3D模型的旋转数据得到,所以各点的坐标已知,因此能够依据各点的坐标,得到网格的面积,这里不再赘述。

5、将第一模型中的参考点的影响因子作为权重,依据第一模型的参考点的指向位移坐标的加权和,确定将第一模型的节点的位置坐标迁移至第二模型中的对应节点后得到的迁移位置坐标。

本实施例所述的方法,依据第一向量与第一法线之间的夹角的余弦值以及参考点所属的网格的面积,获取网格对于节点的影响因子,因此,影响因子能够准确反映不同网格对于不同节点的影响程度的区分,从而进一步提高数据迁移得到的迁移后位置坐标的准确性。

下面将结合上述实施例确定的影响因子,对于数据迁移过程进行更为详细的说明。

图4为本申请实施例公开的一种数据的迁移方法的流程,包括以下步骤:

S41、采集第一模型的节点的数据。

其中,第一模型的节点的数据包括第一模型中的节点的位置数据以及旋转数据。

如前所述,可以使用动作捕捉技术采集实体在运动过程中,各个关节点的数据,并将采集到的数据分配至第一模型中的节点。第一模型中任意一个节点的数据包括节点的位置坐标以及旋转数据。

可以理解的是,如果连续采集动作数据,则可以形成多帧动作数据,本实施例中,将第一模型的任意一帧动作数据记为:

旋转数据:

其中,src表示第一模型,Hips表示臀部(关)节点,Spine1表示脊柱第一(关)节点,Spine2表示脊柱第二(关)节点,Neck表示颈部(关)节点,Head表示头部(关)节点,LeftShoulder表示左肩(关)节点,RightShoulder表示右肩(关)节点,LeftElbow表示左肘(关)节点,RightElbow表示右肘(关)节点,LeftWrist表示左手腕(关)节点,RightWrist表示右手腕(关)节点,LeftHips表示左臀部(关)节点,RightHips表示右臀部(关)节点,LeftKnee表示左膝盖(关)节点,RightKnee表示右左膝盖(关)节点,LeftAnkle表示左脚踝(关)节点,RightAnkle表示右脚踝(关)节点。

位置数据:

S42、依据旋转数据,获取第一模型的参考点的位置坐标。

S43、将第一模型中的躯干节点的位置坐标,作为第二模型中的对应节点的迁移位置坐标。

躯干节点是指位于躯干部分的节点。也就是说,对于人体3D模型中的躯干上的节点的位置数据,可以直接将通过动作捕捉技术分配给第一模型中的位置坐标作为第二模型中对应节点的位置坐标,而无需通过以下步骤迁移。

因为人体的躯干节点不参与运动,或者对于运动的贡献有限,所以躯干节点的位置坐标,对于动作精准性的影响不大,因此,直接将第一模型的躯干节点的位置坐标,作为第二模型中对应节点的迁移位置坐标,在不会明显降低虚拟对象的动作的精准性的前提下,能够节省算力,以及降低时延。

如前所述,第一节点为第一模型中的任意一个待数据迁移的节点,在本步骤以及以下实施例中,第一节点的示例为LeftWrist。

第一参考节点为图2c所示的任意一个三角形的重心。

为了便于说明,将第一模型的参考点中的任一参考点,称为第一参考点。

具体的,将LeftWrist节点的位置坐标、以及参考点的位置坐标作为已知数据,代入:得到多个向量vi

其中,refi A为参考点,其中i=1、2、……n,i的不同取值表示各个参考点。λi为使用上述实施例所述的方法确定的各个参考点的影响因子。可以理解的是,在上式(1)中,对于参考点refi A,λi为refi A所在的网格对LeftWrist节点的影响因子。

以下将第一参考点指向LeftWrist节点的向量称为第一参考向量。

可以理解的是,式(1)的含义为:LeftWrist节点的位置坐标为,各个参考点的第二向量的加权和,其中,第一参考点的第二向量为,第一参考点的第一参考向量与第一参考点在第一模型中的位置坐标之和。

也就是说,以上流程还可以表述为:依据目标节点的位置坐标,确定第一节点的初始位移坐标,第一参考点的初始位移坐标为将第一参考点沿第一向量的方向,移动第一向量的长度后的得到的坐标。依据第一参考点的初始位移坐标以及第一参考点的位置坐标,获取第一向量。

可以理解的是,本实施例中,每一个参考点均按照上述流程,即可获得对应的第一向量。与上述实施例中所述的第一向量的获取方式相比,该方式具有更高的准确性。

因此,上述计算夹角的步骤,可以使用上述较为简便的方式获取第一向量,而本实施例中,迁移数据的流程中,可以使用式(1)重新计算第一向量(上述得到的权重不再重新计算)。

S45、使用预设的第一参数,归一化处理第一向量,得到归一化第一向量。

第一参数的一种设置方式可以为:将第一模型各向量在第一向量上的投影长度之和,作为第一参数。

第一模型各向量为第一节点序列中,相邻的两个节点的前一个节点指向后一个节点的向量。第一节点序列为在第一模型上,从与第一参考点距离最近的节点,移动到第一节点的过程中,依次经过的节点按照被经过的顺序,构成的序列。

其中,前一个节点指向后一个节点的向量的长度,通过前一个节点与后一个节点的位置坐标的之差得到,方向为前一个节点指向后一个节点的方向。

以图2a为例,假设与第一参考点距离最近的节点为图2a所示的Hips,则从第一模型中的Hips移动到LeftWrist的过程中,依次被经过的节点为:Hips->Spine1->Spine2->LeftShoulder->LeftElbow->LeftWrist,因此,第一节点序列为(Hips,Spine1,Spine2,LeftShoulder,LeftElbow,LeftWrist)。

各第一模型向量为:

在以上各式中,P表示位置坐标,src表示第一模型。

任意一个第一模型向量在第一向量上的投影长度表示为:

式(1)中表示第一向量的单位向量,表示的单位向量,因此,表示vi的夹角的cos值,从而表示在vi上的投影长度。

第i个节点的第一参数为以上述第一节点序列为例,则m=5。

从上述第一参数的计算公式可以看出,第一参数表示第一节点序列中的节点构成的路径,在第一向量方向上的长度分量。

具体的,归一化第一向量为:因为第一参数表示第一节点序列中的节点构成的路径,在第一向量方向上的长度分量,所以第一向量使用第一参数得到的归一化第一向量,可以看作是消除了长度的特异性的向量。即第一模型中的第一节点序列构成的路径中,各节点之间的距离对归一化第一向量的影响已经被消除。

可以理解的是,上述计算归一化向量的公式仅为示例,还可以为其它形式,例如,在上式乘以一个系数等。

S46、使用预设的第二参数将归一化第一向量反归一化至第二模型,得到第一参考点的指向向量。

第二参数的一种设置方式可以为:将第二模型各向量在第一向量上的投影长度之和,作为第二参数。

第二模型各向量为第二节点序列中,相邻的两个节点的前一个节点指向后一个节点的向量。第二节点序列为在第二模型上,从与第一参考点距离最近的节点的对应节点移动到对应第一节点的过程中,依次经过的节点按照被经过的顺序,构成的序列。

依据以上对应节点的定义,与第一模型中的第一节点序列的示例相对应的第二节点序列的示例为第二模型中节点构成的如下序列:

(Hips,Spine1,Spine2,LeftShoulder,LeftElbow,LeftWrist)。

各第二模型向量为:

在以上各式中,P表示位置坐标,tar表示第二模型。

第二参数为从第二参数的计算公式可以看出,第二参数表示第二节点序列中的节点构成的路径,在第一向量方向上的长度分量。

第一节点的指向向量为:第二参数表示第二节点序列中的节点构成的路径,在第一向量方向上的长度分量,所以归一化第一向量乘以第二参数,可以看作将归一化第一向量映射到了第二模型。即指向向量具有了第二节点序列构成的路径中,各个节点之间的距离特征。

S47、将第一参考点沿第一参考点的指向向量的方向,移动指向向量的长度后,得到第一参考点的指向位移坐标

可以理解的是,按照第一参考点的指向位移坐标的获取方式,能够获取各个参考点的指向位移坐标。

S48、依据第一模型的各个参考点的影响因子以及各个参考点的指向位移坐标的加权和,确定将第一节点的位置坐标迁移至对应第一节点后得到的迁移位置坐标。

具体的,第二模型中LeftWrist节点的迁移位置坐标为:

其中,为第一参考点的指向位移坐标。λi为第一参考点的影响因子。

因为目标节点为除躯干节点之外的任意一个节点,所以依次对除躯干节点之外的节点进行上述处理,即可得到除躯干节点之外的全部其它节点的迁移位置坐标。

S49、依据对应第一节点的迁移位置坐标以及第二模型中的节点的初始位置坐标,确定对应第一节点的迁移旋转数据。

其中,初始位置坐标可以在构建第二模型时配置,对于本步骤是已知数据。

具体的,可以利用IK算法,由迁移位置坐标以及初始位置坐标,确定迁移旋转数据,这里不再赘述。

可以理解的是,使用迁移后位置坐标以及初始位置坐标,确定迁移旋转数据的方式,与确定迁移位置坐标的方式相比,比较易于实现,所以也能够节省算力以及时间资源。

利用归一化方式将第一模型中的数据去除人体身材比例的影响后,再将数据分配至第二模型,且分配至第二模型时考虑到了第二模型的身材比例,并且,引入能够反映人体“胖瘦”的参考点,所以,能够使得第二模型驱动的虚拟人物的动作与实体的动作更为贴近,从而具有更高的准确性。并且,因为依据节点与网格的夹角的余弦值的绝对值与网格的面积,确定了各个参考点的影响因子,所以,该方法适用于更广泛的模型,具有更高的通用性。

图5为本申请实施例公开的一种运动数据的迁移装置,包括:

第一获取模块,用于依据所述第一模型中的节点的旋转数据,获取所述第一模型的参考点的位置坐标,所述第一模型的参考点为所述第一模型的网格中的点;

第二获取模块,用于依据第一参考点的位置坐标和所述第一模型中的第一节点的位置坐标,获取所述第一参考点指向所述第一节点的向量,作为第一向量;所述第一参考点为所述第一模型的任意一个所述参考点,所述第一节点为所述第一模型中的任意一个节点;

第一确定模块,用于确定所述第一向量与目标网格的第一法线之间的夹角,所述目标网格为所述第一参考点所属的网格,所述第一法线为经过所述第一参考点的法线;

第二确定模块,用于依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子,所述影响因子与所述余弦值正相关,所述影响因子指示所述目标网格对所述第一节点的影响程度;

迁移模块,用于将所述第一模型的参考点的影响因子作为权重,依据所述第一模型的参考点的指向位移坐标的加权和,确定将所述第一模型的节点的位置坐标迁移至所述第二模型中的对应节点后得到的迁移位置坐标,所述指向位移坐标依据所述第一模型的参考点以及节点的位置坐标确定。

可选的,第二确定模块用于依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子,包括:所述第二确定模块具体用于,如果所述余弦值的绝对值大于预设的极小值,则依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子;如果所述余弦值的绝对值不大于所述极小值,则依据所述极小值的余弦值的绝对值,确定所述第一参考点的影响因子。

可选的,第二确定模块依据所述夹角的余弦值的绝对值与影响因子正相关的预设规则,确定所述第一参考点的影响因子的具体实现方式为:依据所述夹角的余弦值的绝对值以及所述目标网格的面积,确定所述第一参考点的影响因子。

第二确定模块依据所述极小值的余弦值的绝对值,确定所述第一参考点的影响因子的具体实现方式为:依据所述极小值的余弦值的绝对值以及所述目标网格的面积,确定所述第一参考点的影响因子。

可选的,第二确定模块依据所述夹角的余弦值的绝对值以及所述目标网格的面积,确定所述第一参考点的影响因子的具体实现方式为:将所述面积的n次方与所述夹角的余弦值的绝对值的乘积,作为所述第一参考点的影响因子。

第二确定模块依据所述极小值的余弦值的绝对值以及所述目标网格的面积,确定所述第一参考点的影响因子的具体实现方式为:将所述面积的n次方与所述极小值的余弦值的绝对值的乘积,作为所述第一参考点的影响因子,n为大于或等于1的整数。

可选的,迁移模块用于将所述第一模型的参考点的影响因子作为权重,依据所述第一模型的参考点的指向位移坐标的加权和,确定将所述第一模型的节点的位置坐标迁移至所述第二模型中的对应节点后得到的迁移位置坐标包括:

迁移模块具体用于,依据所述第一模型的各个参考点的影响因子以及各个参考点的指向位移坐标的加权和,确定将所述第一节点的位置坐标迁移至所述对应第一节点后得到的迁移位置坐标,所述第一参考点的指向位移坐标为将所述第一参考点沿所述第一参考点的指向向量的方向,移动所述指向向量的长度后得到的坐标;其中,所述第一参考点的指向向量通过将所述第一向量使用预设的第一参数归一化处理后,再使用预设的第二参数反归一化至所述第二模型得到。

可选的,迁移模块用于获取所述第一向量的具体实现方式包括:迁移模块具体用于,依据所述第一节点的位置坐标,确定所述第一参考点的初始位移坐标,所述第一参考点的初始位移坐标为将所述第一参考点沿所述第一向量的方向,移动所述第一向量的长度后的得到的坐标;依据所述第一参考点的初始位移坐标以及所述第一参考点的位置坐标,获取所述第一向量。

本实施例所述的装置,用于将第一模型的数据迁移至拓扑关系相同的第二模型,使得得到迁移后数据的第二模型驱动的虚拟对象的动作精准性较高,并且本装置通用于使用较多网格以及较少网格表示的模型。

本申请实施例还公开了一种电子设备,包括:处理器和存储器,所述存储器用于存储程序,所述处理器用于运行所述程序,以实现上述实施例所述的数据的迁移方法。

本申请实施例还公开了一种计算机可读存储介质,其上存储有程序,其特征在于,在电子设备运行所述程序时,实现上述实施例所述的数据的迁移方法。

本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种三维重建方法及装置

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!