一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据的修正方法及装置、电子设备、可读存储介质与流程

2021-12-04 01:14:00 来源:中国专利 TAG:


1.本技术涉及数据处理领域,尤其涉及一种数据的修正方法及装置、电子设备、可读存储介质。


背景技术:

2.3d虚拟对象(通常包括人物以及动物)的制作在动画制作以及电影特效等场景中有广泛的应用。以3d虚拟人物作为3d虚拟对象的一种示例,制作3d虚拟人物的大体流程为:通过动作捕捉技术捕捉实体如演员的各种动作,生成指示这些动作的数据,再将数据分配到指定的3d模型上。
3.实际中,制作出的虚拟对象展示的动作可能与实体展示的动作的差异性较大。例如:作为实体的人体展示的是迈步,而虚拟对象展示为劈叉。又例如,作为实体的人体展示的是接地迈步,而虚拟对象展示为离地或者入地迈步。
4.可见,如何降低虚拟对象的动作与实体动作之间的差异以提高虚拟对象动作的精准性,成为目前虚拟对象制作领域中亟待解决的问题。


技术实现要素:

5.本技术提供了一种数据的修正方法及装置、电子设备、可读存储介质,目的在于解决降低虚拟对象的动作与实体动作之间的差异以提高虚拟对象动作的精准性的问题。
6.为了实现上述目的,本技术提供了以下技术方案:
7.一种数据的修正方法,应用在将第一模型的数据迁移至拓扑关系相同的第二模型之后,包括:
8.获取第一参数和第二参数,所述第一参数表示运动部位在所述第一模型中的长度,所述第二参数表示所述运动部位在所述第二模型中的长度;
9.获取第一起始节点与第二起始节点在第一方向的位置坐标的差值,作为位置偏差量,所述第一起始节点为所述运动部位在所述第一模型中的起始节点,所述第二起始节点为所述运动部位在所述第二模型的起始节点,所述起始节点为所述运动部位的端部对应节点中,距离根节点近的节点,所述第一方向为所述根节点指向末端节点的方向,所述末端节点为所述端部对应节点中,距离所述根节点远的节点;
10.依据所述位置偏差量,修正迁移后位置坐标在所述第一方向的分量,所述迁移后位置坐标为:将所述第一模型的所述末端节点的位置坐标迁移到所述第二模型的所述末端节点,得到的位置坐标;
11.依据所述第一参数对目标向量进行归一化处理,得到归一化目标向量,所述目标向量为所述第一模型中的所述第一起始节点指向所述末端节点的向量;
12.依据所述第二参数,将所述归一化目标向量反归一化至所述第二模型,得到指向向量;
13.依据所述指向向量以及所述第二起始节点的位置坐标,确定所述第二模型中的所
述末端节点的位置坐标在目标方向的分量,所述目标方向包括与所述第一方向垂直的第二方向和第三方向,所述第一方向、所述第二方向以及所述第三方向构成三维坐标空间。
14.可选的,所述获取第一参数包括:
15.获取所述运动部位的各个关节点在所述第一模型中的对应节点的初始位置坐标,所述初始位置坐标为构建所述第一模型时,为所述第一模型分配的位置坐标;
16.依据所述第一模型中的对应节点的初始位置坐标,确定所述运动部位在所述第一模型中的长度,作为第一参数。
17.可选的,所述第一模型为人体模型,所述运动部位为左腿和/或右腿;
18.所述依据所述第一模型中的对应节点的初始位置坐标,确定所述运动部位在所述第一模型中的长度,作为所述第一参数,包括:
19.依据所述左腿关节点对应节点的初始位置坐标,确定所述左腿在所述第一模型中的长度;
20.依据所述右腿关节点对应节点的初始位置坐标,确定所述右腿在所述第一模型中的长度;
21.依据所述左腿在所述第一模型中的长度以及所述右腿在所述第一模型中的长度,确定所述左腿和/或右腿在所述第一模型中的长度,作为所述第一参数。
22.可选的,所述获取第二参数包括:
23.获取运动部位的各个关节点在所述第二模型中的对应节点的初始位置坐标,所述初始位置坐标为构建所述第二模型时,为所述第二模型分配的位置坐标;
24.依据所述第二模型中的对应节点的初始位置坐标,确定所述运动部位在所述第二模型中的长度,作为所述第二参数。
25.可选的,所述获取第一起始节点与第二起始节点在第一方向的位置坐标的差值,作为位置偏差量包括:
26.依据第一起始节点在所述第一方向的分量,与所述第一模型中的所述末端节点的位置坐标在所述第一方向的分量之差,确定第一差值;
27.依据第二起始节点在所述第一方向的分量,与所述第二模型中的所述末端节点的位置坐标在所述第一方向的分量之差,确定第二差值;
28.依据所述第一差值与所述第二差值之差,确定所述第一起始节点与所述第二起始节点在第一方向的所述位置偏差量。
29.可选的,所述第一模型和所述第二模型均为人体模型,所述运动部位为左腿和/或右腿;
30.所述末端节点包括左脚踝的对应节点以及右脚踝的对应节点;
31.所述依据第一起始节点在所述第一方向的分量,与所述第一模型中的所述末端节点的位置坐标在所述第一方向的分量之差,确定所述第一差值,包括:
32.依据所述第一起始节点在所述第一方向的分量,与所述第一模型的左腿的末端节点以及右腿的末端节点分别在所述第一方向的分量之差,确定所述第一差值;
33.所述依据第二起始节点在所述第一方向的分量,与所述第二模型中的所述末端节点的位置坐标在所述第一方向的分量之差,确定所述第二差值,包括:
34.依据所述第二起始节点在所述第一方向的分量,与所述第二模型的左腿的末端节
点以及右腿的末端节点分别在所述第一方向的分量之差,确定所述第二差值。
35.可选的,还包括:
36.依据所述迁移后位置坐标在所述第一方向以及所述目标方向的分量、所述第二模型中的所述末端节点的位置坐标在所述的分量、以及所述第二模型的节点的初始位置坐标,确定所述运动部位在所述第二模型的对应节点中,除所述末端节点外的其它节点的迁移后位置坐标。
37.一种数据的修正装置,应用在将第一模型的数据迁移至拓扑关系相同的第二模型之后,包括:
38.第一获取模块,用于获取第一参数和第二参数,所述第一参数表示运动部位在所述第一模型中的长度,所述第二参数表示所述运动部位在所述第二模型中的长度;
39.第二获取模块,用于获取第一起始节点与第二起始节点在第一方向的位置坐标的差值,作为位置偏差量,所述第一起始节点为所述运动部位在所述第一模型中的起始节点,所述第二起始节点为所述运动部位在所述第二模型的起始节点,所述起始节点为所述运动部位的端部对应节点中,距离根节点近的节点,所述第一方向为所述根节点指向末端节点的方向,所述末端节点为所述端部对应节点中,距离所述根节点远的节点;
40.修正模块,用于依据所述位置偏差量,修正迁移后位置坐标在所述第一方向的分量,所述迁移后位置坐标为:将所述第一模型的所述末端节点的位置坐标迁移到所述第二模型的所述末端节点,得到的位置坐标;
41.第一处理模块,用于依据所述第一参数对目标向量进行归一化处理,得到归一化目标向量,所述目标向量为所述第一模型中的所述第一起始节点指向所述末端节点的向量;
42.第二处理模块,用于依据所述第二参数,将所述归一化目标向量反归一化至所述第二模型,得到指向向量;
43.确定模块,用于依据所述指向向量以及所述第二起始节点的位置坐标,确定所述第二模型中的所述末端节点的位置坐标在目标方向的分量,所述目标方向包括与所述第一方向垂直的第二方向和第三方向,所述第一方向、所述第二方向以及所述第三方向构成三维坐标空间。
44.一种电子设备,包括:
45.处理器和存储器;
46.所述存储器用于存储程序,所述处理器用于运行所述程序,以实现上述的数据的修正方法。
47.一种计算机可读存储介质,其上存储有程序,在电子设备运行所述程序时,实现上述的数据的修正方法。
48.本技术实施例公开的技术方案,利用运动部位在第一模型以及第二模型中的长度差异在第一方向的分量,修正末端节点的迁移后位置数据,从而消除了长度差异对于末端节点的位置坐标在第一方向的影响,并且,利用归一化方法,屏蔽第一模型中的运动部位的长度的特异性,再利用反归一化加入第二模型中的运动部位的长度的特性,因此,使用指向向量确定的末端节点的位置坐标在第二方向以及第三方向的分量,综上所述,得到第一模型的末端节点的位置坐标迁移到第二模型的末端节点后,与第二模型中运动部位的长度匹
配,从而能够减小虚拟对象展示的动作与实体的动作之间的差异,进一步提高虚拟对象的动作的精准性。
附图说明
49.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
50.图1为与人体一部分关节点对应的人体3d模型的示例图;
51.图2为人体3d模型中的双腿的示例图;
52.图3为本技术实施例公开的一种数据的修正方法的流程图;
53.图4为本技术实施例公开的一种数据的修正方法的流程图;
54.图5为本技术实施例公开的又一种数据的修正方法的流程图;
55.图6为本技术实施例公开的一种数据的修正装置的结构示意图。
具体实施方式
56.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
57.申请人在研究的过程中发现,因为要展示实体做出的动作,所以指定的3d模型中的驱动骨骼节点(以下简称为节点)与实体中的关节点通常具有相同的拓扑关系,即指定的3d模型中的驱动骨骼节点,与实体中的全部或部分关节点一一对应。
58.但指定的3d模型中,节点距离的比例,不一定与实体中的对应关节点长度的比例相同,所以,指定的3d模型展示的动作,可能与实体做出的动作有较大偏差。
59.因此,申请人提出:
60.为了提高虚拟对象的动作的精准性,可以先构建与实体适配的3d模型,以下称为第一模型。将捕捉到的数据分配至第一模型,得到第一模型中的节点的数据(位置坐标以及旋转数据),再将第一模型中的节点的数据,迁移至指定的3d模型,以下称为第二模型,使用第二模型驱动虚拟对象。
61.但申请人又发现:即使使用上述方式,因为运动部位在第一模型中的长度,可能与运动部位在第二模型中的长度不同,所以,将第一模型的节点的数据迁移至第二模型后,第二模型驱动的虚拟对象的运动部位表现出的运动可能与实体的运动有较大差异。
62.差异主要体现在以下两个方面:
63.一方面,运动部位与空间中某个对象(简称为空间对象)的相对位置关系不同,以人体以及人体模型为例:实体的双腿与作为空间对象的地面的相对位置关系为接地,而因为运动部位在第一模型与第二模型的长度的差异,虚拟对象展示为入地或离地。
64.另一方面,运动部位展示的运动类型不同,还以人体以及人体模型为例:作为实体的人体展示的是迈步,而虚拟对象展示为劈叉。
65.所以数据迁移并不能完全解决动作精确性的问题。
66.在以下实施例中,提出了一种修正迁移后数据的技术方案,目的在于在第一模型中节点的数据迁移到第二模型中的节点,得到迁移后数据之后,对迁移后数据进行修正,以降低第二模型驱动的虚拟对象展示的动作与实体展示的动作之间的差异,从而进一步提高虚拟对象的动作的精准性。
67.下面先对一些定义进行解释和说明:
68.拓扑关系是指节点的类型以及节点之间的连接关系。节点的类型为对应的实体中的关节点的类型,例如图1所示的各种节点。可以理解的是,图1所示为与人体的一部分关节点对应的节点。
69.第一模型和第二模型均为3d模型,其中包括的节点的数据包括位置坐标和旋转数据。旋转数据的定义可参见现有技术。
70.节点距离的比例是指:第一节点a与第二节点b之间的距离s1,与其它两个节点c和d之间的距离s2的比值,即s1/s2。其中,距离可由节点的位置坐标计算得到。以图1为例,利用hips和lefthipships的位置坐标,得到hips与lefthips之间的距离s1,利用hips和righthips的位置坐标,得到hips与righthips之间的距离s2,s1除以s2,得到节点距离的比例。
71.实体中关节点长度的比例是指,关节点之间的骨骼长度的比值,例如,关节点1与关节点2之间的骨骼长度为s3,关节点3与关节点4之间的骨骼长度为s4,s3/s4即为一个关节点长度比例。
72.第一模型与实体适配是指:第一模型中的节点与实体中的关节点一一对应,且,第一模型中的节点距离的比例,与实体中对应关节点长度的比例相同,例如,图1中hips与lefthips之间的距离除以hips与righthips之间的距离得到的比值,与人体中的hips与lefthips之间的骨骼长度除以人体中的hips与righthips的骨骼长度得到的比值相等。
73.模型中的节点与实体中的关节点对应是指:模型中的某个节点被分配的数据,是实体中的某个关节点的位移或旋转采集得到的数据,则该节点与该关节点对应。
74.基于上述内容可知,第一模型与第二模型具有相同的拓扑关系,第一模型中的节点与第二模型中的节点一一对应,即第一模型中的节点,在第二模型中均有唯一的对应节点。
75.无论是实体还是模型,均可被划分出运动部位以及其它部位。实体中,运动部位是指用于展示动作的关节点连接而成的部位,而其它部位为不用于展示运动的关节点连接而成的部位。模型中,运动部位是指构成实体中的运动部位的关节点的对应节点构成的部位。
76.运动部位的端部在模型中的对应节点称为端部对应节点。基于上述定义运动部位的定义,通常运动部位具有两个端部,以下实施例均已两个端部为例,但同样适用于多个端部的情况。
77.运动部位在模型中的长度是指,从一个端部对应节点,依次经过其它对应节点,移动到另一个端部对应节点,所经过的距离。其它对应节点是指,实体中的运动部位的关节点的对应节点中,除端部对应节点外的节点。
78.两个端部节点中,距离模型的根节点最近的节点,称为起始节点,距离根节点最远的节点,称为末端节点。
79.图1为本技术实施例使用的一种人体3d模型的示例,hips表示臀部节点,spine1表示脊柱第一(关)节点,spine2表示脊柱第二(关)节点,neck表示颈部(关)节点,head表示头部(关)节点,leftshoulder表示左肩(关)节点,rightshoulder表示右肩(关)节点,leftelbow表示左肘(关)节点,rightelbow表示右肘(关)节点,leftwrist表示左手腕(关)节点,rightwrist表示右手腕(关)节点,lefthips表示左臀部(关)节点,righthips表示右臀部(关)节点,leftknee表示左膝盖(关)节点,rightknee表示右左膝盖(关)节点,leftankle表示左脚踝(关)节点,rightankle表示右脚踝(关)节点。
80.图1中的运动部位包括双腿、双臂以及头部,躯干则为其它部位。在本技术的以下实施例中,运动部位均以左腿和/或右腿为例。
81.在图1所示的模型中,左腿为运动部位的一部分,左腿的节点为hips、lefthips、leftknee以及leftankle。左腿的端部节点为hips以及leftankle。所以左腿的长度为在hips、lefthips、leftknee以及leftankle中,从hips移动到leftankle所经历的距离,即hips与lefthips的距离、lefthips与leftknee的距离、以及leftknee与leftankle的距离之和。
82.无论第一模型还是第二模型,均设置有根节点。模型的根节点为模型的节点中预先被指定的参照节点,参照节点的位置坐标为其它节点的位置坐标的参照。本实施例中,根节点以图1所示的hips为例。
83.端部节点hips以及leftankle中,hips为起始节点(起始节点与根节点相同),leftankle为末端节点。
84.无论第一模型还是第二模型,在模型构建时,以某种姿态作为初始姿态,使得模型呈现初始姿态的位置数据,称为初始位置数据。还以人体模型为例,初始姿态为t

pose,即“t”字形状的姿态。
85.下面将对本技术实施例提出的数据的修正流程进行详细说明。
86.图3为本技术实施例公开的一种数据的修正方法的流程,应用在将第一模型的数据迁移至拓扑关系相同的第二模型之后,可以理解的是,本技术的实施例中,不对将第一模型的数据迁移至第二模型的具体方式做限定。
87.图3中包括以下步骤:
88.s31、获取第一参数和第二参数。
89.第一参数表示运动部位在第一模型中的长度,第二参数表示运动部位在第二模型中的长度。
90.可以理解的是,基于上述定义,运动部位的长度可以使用运动部位的关节点在模型中的对应节点的位置坐标确定。具体实现方式可以参见以下实施例。
91.s32、获取第一起始节点与第二起始节点在第一方向的位置偏差量。
92.第一起始节点为运动部位在第一模型中的起始节点,第二起始节点为运动部位在第二模型的起始节点。第一方向为根节点指向运动部位的末端节点的方向。其中,起始节点以及末端节点的定义如前所述。
93.第一起始节点与第二起始节点在第一方向的位置偏差量,能够反映运动部位在第一模型与第二模型中的长度的差距。
94.可以理解的是,s31与s32的执行顺序不做限定。
95.s33、使用位置偏差量,修正迁移后位置坐标在第一方向的分量。
96.修正迁移后位置坐标为第一模型的末端节点的位置坐标,迁移到第二模型的末端节点后得到的位置坐标。如前所述,这里不对位置坐标的迁移方式进行限定。
97.可以理解的是,因为位置偏差量,能够反映运动部位在第一模型与第二模型中的长度的差距,所以修正的迁移后位置坐标能够消除运动部位在第一模型与第二模型中的长度的差距的影响,从而能够解决将实体运动部位与空间对象的相对位置关系展示错误的问题。
98.s34、使用第一参数对目标向量进行归一化处理,得到归一化目标向量。
99.目标向量为第一模型中的第一起始节点指向末端节点的向量。
100.因为第一参数表示运动部位在第一模型中的长度,所以使用第一参数进行归一化处理得到的归一化目标向量,可以看作是消除了第一模型中运动部位的长度的特异性的向量。
101.s35、使用第二参数,将归一化目标向量反归一化至第二模型,得到指向向量。
102.因为第二参数表示运动部位在第二模型中的长度,所以使用第二参数反归一化得到的指向向量,可以看作具备了第二模型中运动部位的长度特性。
103.s36、依据指向向量以及第二起始节点的位置坐标,确定第二模型中的末端节点的位置坐标在目标方向的分量。
104.目标方向包括与第一方向垂直的第二方向和第三方向,第一方向、第二方向以及第三方向构成三维坐标空间。
105.可以理解的是,因为指向向量消除了第一模型中运动部位的长度特性且具备第二模型中运动部位的长度特性,所以,使用指向向量确定的位置坐标的分量,也消除了第一模型与第二模型的运动部位的长度差异的影响。
106.并且,指向向量表示的是第二模型中的第二起始节点与末端节点的距离,所以,依据指向向量以及第二起始节点的位置坐标,能够确定出第二模型中的末端节点的位置坐标。进一步的,已知向量以及位置坐标的情况下,能够获取向量在目标方向的分量以及位置坐标在目标方向的分量,所以能够确定出末端节点的位置坐标在目标方向的分量。
107.可以理解的是,与修正末端节点的迁移后位置坐标在第一方向的分量相比,在目标方向的分量并非对迁移后位置坐标的修正,而是重新确定运动部位在第二模型中的末端节点的位置坐标。
108.s34

s36的目的在于,消除运动部位在第一模型与第二模型中的长度差异对于末端节点的位置坐标的影响,从而解决虚拟对象的运动类型与实体的运动类型不一致的问题。
109.综上所述,本实施例中,利用运动部位在第一模型以及第二模型中的长度差异在第一方向的分量,修正末端节点的迁移后位置数据,从而消除了长度差异对于末端节点的位置坐标在第一方向的影响,并且,利用归一化方法,屏蔽第一模型中的运动部位的长度的特异性,再利用反归一化加入第二模型中的运动部位的长度的特性,因此,使用指向向量确定的末端节点的位置坐标在第二方向以及第三方向的分量,综上所述,得到第一模型的末端节点的位置坐标迁移到第二模型的末端节点后,与第二模型中运动部位的长度匹配,从而能够减小虚拟对象展示的动作与实体的动作之间的差异,进一步提高虚拟对象的动作的
精准性。
110.下面将上述实施例应用在图1所示的人体3d模型的流程,其中,如图2所示,运动部位为图1中所示的左腿和右腿。
111.如图4所示,本实施例包括以下步骤:
112.s41、获取运动部位的各个关节点在第一模型中的对应节点的初始位置坐标。
113.图2中,运动部位的各个关节点在第一模型中的对应节点分别为:hips、lefthips、righthips、leftknee、rightknee、leftankle以及rightankle。
114.如前所述,初始位置坐标为构建第一模型时,为第一模型分配的位置坐标。对于人体3d模型而言,初始位置坐标为t

pose状态下的位置坐标。
115.第一模型在t

pose状态下运动部位的各个节点的位置数据(即第一模型中运动部位的各个节点的初始位置数据)记为:
116.其中,a表示t

pose状态下的第一模型。
117.s42、依据第一模型中的对应节点的初始位置坐标,确定运动部位在第一模型中的长度,作为第一参数。
118.具体的,因为图2中的双腿包括左腿和右腿,所以为了第一参数更为准确,s42的实现方式为:
119.依据左腿关节点对应节点的初始位置坐标,确定左腿的长度。即如图2所示,双腿均以根节点为起始节点,从起始节点至末端节点,左腿上节点之间的向量分别为v
l1a
、v
l2a
和v
l3a
,则左腿的长度为v
l1a
、v
l2a
和v
l3a
的长度之和。
120.依据右腿关节点对应节点的初始位置坐标,确定右腿的长度。类似的,图2中所示的右腿的长度为向量v
r1a
、v
r2a
和v
r3a
长度之和。
121.依据左腿的长度以及右腿的长度,确定第一模型的腿长,作为第一参数。一种实现方式可以为:将左腿的长度与右腿的长度之和的均值,作为第一参数。
122.s43、获取运动部位的各个关节点在第二模型中的对应节点的初始位置坐标。
123.s44、依据第二模型中的对应节点的初始位置坐标,确定运动部位在第二模型中的长度,作为第二参数。
124.与第一参数的确定方式类似,将第二参数中左腿的长度与右腿的长度之和的均值,作为第二参数。
125.s45、依据第一起始节点在第一方向的分量,以及第一模型中的末端节点的位置坐标在第一方向的分量之差,确定第一差值。
126.以图2为例,第一方向为竖直方向,第一起始节点在第一方向的分量记为左腿的末端节点为leftankle,在第一方向的分量记为右腿的末端节点为rightankle,在第一方向的分量记为
127.可选的,本步骤中,第一起始节点与末端节点的第一差值为可见,第一差值表示第一起始节点与第一模型中的末端节点在竖直方向的距离。
128.使用左腿末端节点以及右腿末端节点确定差值,准确性更高。
129.s46、依据第二起始节点在第一方向的分量,以及第二模型中的末端节点的位置坐
标在第一方向的分量之差,确定第二差值。
130.类似的,第二差值为其中,b表示第二模型。可见,第二差值表示第二起始节点与第二模型中的末端节点在竖直方向的距离。
131.s47、依据第一差值与第二差值之差,确定第一起始节点与第二起始节点在第一方向的位置偏差量。
132.即位置偏差量
133.可以理解的是,位置偏差量表示的是腿长的差异。
134.s48、使用位置偏差量,修正末端节点在第一模型的位置坐标迁移到第二模型的迁移后位置坐标在第一方向的分量。
135.具体的,其中,为修正的迁移后位置坐标,为迁移后位置坐标在第一方向的分量。
136.s49、使用第一参数对目标向量进行归一化处理,得到归一化目标向量。
137.目标向量为第一模型中的第一起始节点指向末端节点的向量。以图2为例,目标向量为v
l
。归一化处理即
138.s410、使用第二参数,将归一化目标向量反归一化至第二模型,得到指向向量。
139.反归一化至第二模型即:
140.s411、依据指向向量以及第二起始节点的位置坐标,确定第二模型中的末端节点的位置坐标在目标方向的分量。
141.本实施例中,第一方向为竖直方向,以y轴表示,则第二方向可以为x轴方向,第三方向可以为z轴方向。其中,x轴、y轴以及z轴相互垂直。
142.第二模型中的左腿末端节点的位置坐标在第二方向的分量为:
[0143][0144]
第二模型中的左腿末端节点的位置坐标在第三方向的分量为:
[0145][0146]
右腿的末端节点的位置坐标在目标方向的分量的确定方式与左腿末端节点的位置坐标在目标方向的分量的确定方式类似,这里不再赘述。
[0147]
本实施例所述的方法,以双腿在第一模型和第二模型中的长度为依据,分别获取第一参数和第二参数,再利用第一参数去除第一模型中的双腿长度对末端节点的位置坐标的影响,利用第二参数使得末端节点在第二模型中的位置坐标适配运动部位在第二模型中的长度,利用起始节点的偏差量修正末端节点的迁移后位置坐标在竖直方向的分量,从而降低第二模型驱动的虚拟对象展示的动作与实体展示的动作之间的差异。
[0148]
并且,对于人体3d模型,在运动部位为双腿的情况下,以双腿的末端节点的数据确定第一参数、第二参数以及偏差量,因此能够进一步提高优化的准确性。
[0149]
图5为本技术实施例公开的一种数据的修正方法的流程,与上述实施例相比,新增了进一步增强虚拟对象的精准性以及节省算力资源的步骤,图5所示的流程包括以下步骤:
[0150]
s51、获取第一模型和第二模型的初始状态下的节点的位置数据(即初始位置数据)。
[0151]
本实施例中,模型的初始状态以模型在t

pose状态为例。t

pose状态下的节点的位置数据为:
[0152]
第一模型在t

pose状态下的各个节点的位置数据(即第一模型中各个节点的初始位置数据)记为:其中,a表示t

pose状态下的第一模型。
[0153]
第二模型在t

pose状态下的各个节点的位置数据(即第二模型中各个节点的初始位置数据)为:b表示t

pose状态下的第二模型。
[0154]
其中,hips表示臀部(关)节点,spine1表示脊柱第一(关)节点,spine2表示脊柱第二(关)节点,neck表示颈部(关)节点,head表示头部(关)节点,leftshoulder表示左肩(关)节点,rightshoulder表示右肩(关)节点,leftelbow表示左肘(关)节点,rightelbow表示右肘(关)节点,leftwrist表示左手腕(关)节点,rightwrist表示右手腕(关)节点,lefthips表示左臀部(关)节点,righthips表示右臀部(关)节点,leftknee表示左膝盖(关)节点,rightknee表示右左膝盖(关)节点,leftankle表示左脚踝(关)节点,rightankle表示右脚踝(关)节点。
[0155]
s52、获取第一起始节点与第二起始节点在第一方向的位置偏差量。
[0156]
s53、获取第一参数以及第二参数。
[0157]
本实施例中,s52以及s53的具体实现方式可以参见上述实施例,不再赘述。
[0158]
s54、采集第一模型的节点的数据。
[0159]
其中,第一模型的节点的数据包括第一模型中的节点的位置坐标以及旋转数据。
[0160]
通常,可以使用动作捕捉技术采集实体在运动过程中,各个关节点的数据,并将采集到的数据分配至第一模型中的节点。第一模型中任意一个节点的数据包括节点的位置坐标以及旋转数据。
[0161]
可以理解的是,如果连续采集动作数据,则可以形成多帧动作数据,本实施例中,将第一模型的任意一帧动作数据记为:
[0162]
旋转数据:
[0163]
[0164]
其中,a

src表示运动状态下的第一模型。
[0165]
位置坐标:
[0166][0167]
s55、将第一模型的节点的位置坐标,迁移至第二模型的对应节点,得到第二模型的节点的迁移后位置坐标。
[0168]
具体的,数据的迁移方法不做限定。
[0169]
例如,第二模型的各个节点的旋转数据,为第一模型的各个对应节点的旋转数据,即直接将第一模型的节点的旋转数据作为第二模型的对应节点的旋转数据。
[0170]
第二模型的各个节点的位置坐标,可以依据第二模型的各个节点的旋转数据以及第二模型的拓扑结构,使用fk算法计算获得。具体计算过程可以参见现有技术,这里不再赘述。
[0171]
本实施例中,将本步骤中得到的运动部位在第二模型的位置坐标记为:
[0172][0173]
需要说明的是,第二模型的节点中,除运动部位的关节点的对应节点之外,均可以将本步骤得到的数据,作为迁移后数据。而运动部位的关节点的对应节点,为了避免动作不协调的问题,需要执行以下步骤进行优化。
[0174]
s56、使用位置偏差量,修正末端节点在第一模型的位置坐标迁移到第二模型的迁移后位置坐标在第一方向的分量。
[0175]
s57、确定末端节点在目标方向的分量。
[0176]
s56以及s57的具体实现方式可参见上述实施例,这里不再赘述。
[0177]
s58、依据第二模型中的末端节点的迁移后位置坐标在第一方向以及目标方向的分量,以及第二模型的节点的初始位置坐标,确定运动部位的对应节点中,除末端节点之外的其它节点的迁移后位置坐标。
[0178]
如图2所示,其它节点包括lefthips、righthips、leftknee以及rightknee。在已知leftankle和rightankle的迁移后位置坐标的情况下,结合第二模型的骨骼拓扑结构以及上述步骤得到的第二模型中腿部末端节点的位置坐标,使用ik算法可以得到腿部lefthips、righthips、leftknee以及rightknee的迁移后位置坐标。
[0179]
本实施例中所述的方法,对于非运动部位的节点,不进行数据迁移后的修正,而仅针对运动部位的节点进行迁移后的修正,因此能够节省算力资源。进一步的,不仅修正末端节点还修正运动部位的其它节点的位置坐标,能够进一步提高虚拟对象的动作的精准性。并且,利用运动部位的末端节点的迁移后位置坐标,确定运动部位除末端节点之外的其它节点的位置坐标,而不再利用末端节点相同的方式确定,能够进一步节省算力资源。
[0180]
下面将对上述流程所述的步骤进行更为详细的举例说明,需要说明的是,在以下举例中,将以根节点和双腿节点为例:
[0181]
1、第一模型在t

pose下的节点的位置坐标为:
[0182][0183]
第二模型在t

pose下的节点的位置坐标为:
[0184][0185]
2、在假设竖直方向的坐标轴为y轴的情况下,
[0186]
3、基于1和2中的位置坐标,确定归一化参数的过程为:
[0187][0188]
归一化参数的x轴分量为:
[0189][0190]
归一化参数的z轴分量为:
[0191][0192]
4、基于1和2中的位置坐标,确定反归一化参数的过程为:
[0193][0194]
反归一化参数的x轴分量为:
[0195][0196]
反归一化参数的z轴分量为:
[0197][0198]
5、假设第一模型的第一帧的根节点和运动部位的末端节点的位置坐标为:
[0199][0200]
依据第一模型的第一帧的节点的位置数据确定的第二模型的第一帧的节点的位置坐标为:
[0201][0202]
第二模型中根节点指向运动部位的末端节点的向量为:
[0203][0204]
6、第二模型的第一帧中双腿末端节点的优化后位置数据为:
[0205]
[0206][0207][0208]
图6为本技术实施例公开的一种数据的修正装置,应用在将第一模型的数据迁移至拓扑关系相同的第二模型之后,包括:
[0209]
第一获取模块,用于获取第一参数和第二参数,所述第一参数表示运动部位在所述第一模型中的长度,所述第二参数表示所述运动部位在所述第二模型中的长度。
[0210]
第二获取模块,用于获取第一起始节点与第二起始节点在第一方向的位置坐标的差值,作为位置偏差量,所述第一起始节点为所述运动部位在所述第一模型中的起始节点,所述第二起始节点为所述运动部位在所述第二模型的起始节点,所述起始节点为所述运动部位的端部对应节点中,距离根节点近的节点,所述第一方向为所述根节点指向末端节点的方向,所述末端节点为所述端部对应节点中,距离所述根节点远的节点。
[0211]
修正模块,用于依据所述位置偏差量,修正迁移后位置坐标在所述第一方向的分量,所述迁移后位置坐标为:将所述第一模型的所述末端节点的位置坐标迁移到所述第二模型的所述末端节点,得到的位置坐标。
[0212]
第一处理模块,用于依据所述第一参数对目标向量进行归一化处理,得到归一化目标向量,所述目标向量为所述第一模型中的所述第一起始节点指向所述末端节点的向量。
[0213]
第二处理模块,用于依据所述第二参数,将所述归一化目标向量反归一化至所述第二模型,得到指向向量。
[0214]
确定模块,用于依据所述指向向量以及所述第二起始节点的位置坐标,确定所述第二模型中的所述末端节点的位置坐标在目标方向的分量,所述目标方向包括与所述第一方向垂直的第二方向和第三方向,所述第一方向、所述第二方向以及所述第三方向构成三维坐标空间。
[0215]
可选的,第一获取模块用于获取第一参数的具体实现方式包括:所述第一获取模块具体用于,获取所述运动部位的各个关节点在所述第一模型中的对应节点的初始位置坐标,所述初始位置坐标为构建所述第一模型时,为所述第一模型分配的位置坐标;依据所述第一模型中的对应节点的初始位置坐标,确定所述运动部位在所述第一模型中的长度,作为第一参数。
[0216]
可选的,所述第一模型为人体模型,所述运动部位为左腿和/或右腿。所述第一获取模块用于依据所述第一模型中的对应节点的初始位置坐标,确定所述运动部位在所述第一模型中的长度,作为第一参数的具体实现方式包括:所述第一获取模块具体用于,依据所述左腿关节点对应节点的初始位置坐标,确定所述左腿在所述第一模型中的长度;依据所述右腿关节点对应节点的初始位置坐标,确定所述右腿在所述第一模型中的长度;依据所述左腿在所述第一模型中的长度以及所述右腿在所述第一模型中的长度,确定所述左腿和/或右腿在所述第一模型中的长度,作为所述第一参数。
[0217]
可选的,第一获取模块用于获取第二参数的具体实现方式包括:所述第一获取模块具体用于,获取运动部位的各个关节点在所述第二模型中的对应节点的初始位置坐标,所述初始位置坐标为构建所述第二模型时,为所述第二模型分配的位置坐标;依据所述第二模型中的对应节点的初始位置坐标,确定所述运动部位在所述第二模型中的长度,作为所述第二参数。
[0218]
可选的,所述第二获取模块用于获取第一起始节点与第二起始节点在第一方向的位置坐标的差值,作为位置偏差量包括:所述第二获取模块具体用于,依据第一起始节点在所述第一方向的分量,与所述第一模型中的所述末端节点的位置坐标在所述第一方向的分量之差,确定第一差值;依据第二起始节点在所述第一方向的分量,与所述第二模型中的所述末端节点的位置坐标在所述第一方向的分量之差,确定第二差值;依据所述第一差值与所述第二差值之差,确定所述第一起始节点与所述第二起始节点在第一方向的所述位置偏差量。
[0219]
可选的,所述第一模型和所述第二模型均为人体模型,所述运动部位为左腿和/或右腿;所述末端节点包括左脚踝的对应节点以及右脚踝的对应节点。所述第二获取模块用于依据第一起始节点在所述第一方向的分量,与所述第一模型中的所述末端节点的位置坐标在所述第一方向的分量之差,确定所述第一差值的具体实现方式包括:所述第二获取模块具体用于,依据所述第一起始节点在所述第一方向的分量,与所述第一模型的左腿的末端节点以及右腿的末端节点分别在所述第一方向的分量之差,确定所述第一差值。
[0220]
所述第二获取模块用于依据第二起始节点在所述第一方向的分量,与所述第二模型中的所述末端节点的位置坐标在所述第一方向的分量之差,确定所述第二差值的具体实现方式包括:所述第二获取模块用于,依据所述第二起始节点在所述第一方向的分量,与所述第二模型的左腿的末端节点以及右腿的末端节点分别在所述第一方向的分量之差,确定所述第二差值。
[0221]
可选的,所述确定模块还用于:依据所述迁移后位置坐标在所述第一方向以及所述目标方向的分量、所述第二模型中的所述末端节点的位置坐标在所述的分量、以及所述第二模型的节点的初始位置坐标,确定所述运动部位在所述第二模型的对应节点中,除所述末端节点外的其它节点的迁移后位置坐标。
[0222]
本实施例所述的数据的修正装置,能够降低第二模型驱动的虚拟对象展示的动作与实体展示的动作之间的差异,从而提高虚拟对象动作的精准性。
[0223]
本技术实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本技术实施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,移动计算设备或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0224]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0225]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献