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

虚拟角色的动作控制方法、装置、设备和存储介质与流程

2022-06-11 04:54:42 来源:中国专利 TAG:


1.本技术涉及虚拟交互技术领域,尤其涉及一种虚拟角色的动作控制方法、装置、设备和存储介质。


背景技术:

2.随着虚拟主播、虚拟偶像、虚拟员工等虚拟角色的涌现,基于捕获的动作数据控制虚拟角色动作的应用越来越多,而将捕获的动作数据实时复用到各种有着不同外形(胖瘦、高矮、四肢长短、大头、蓬蓬裙等)的虚拟角色的需求也会越来越大。
3.目前,虚拟角色的动作控制主要有两种方式,一种方式将原模型的骨架等比例缩放到虚拟角色的骨架得到平移量,该通过该平移量对动作数据修改,将平移修改后的动作数据作用于虚拟角色;另一种方式是将原模型的骨骼的旋转数据直接采用前向运动学施加到不同比例的虚拟角色上。
4.上述通过等比缩放的方式控制虚拟角色没有考虑虚拟角色的外形,造成动作语义丢失走样甚至穿模现象,而采用前向运动学控制虚拟角色的方式会导致如图1所示的语义丢失或走样,在图1中左边为原模型做出敬礼动作的示意图,中间为前向运动学控制虚拟角色之后虚拟角色所做的动作,可见,中间的示意图中虚拟角色所做的敬礼动作与右边的示意图中预期虚拟角色所做的敬礼动作存在丢失、走样的缺陷。


技术实现要素:

5.本技术实施例提供了一种虚拟角色的动作控制方法、装置、设备和存储介质,以解决现有技术中虚拟角色的动作控制存在动作语义丢失、走样、穿模的问题。
6.第一方面,本技术实施例提供了一种虚拟角色的动作控制方法,包括:
7.获取原始动作数据,所述原始动作数据为原始模型执行目标动作时骨骼上的关节点的位置数据;
8.根据所述原始动作数据确定虚拟角色的初始动作数据,所述初始动作数据为所述虚拟角色的骨骼上的关节点的初始位置数据,所述原始模型和所述虚拟角色的关节点包括骨骼关节点和外形关节点;
9.采用所述初始动作数据和所述原始动作数据构建目标函数,所述目标函数用于计算所述初始动作数据与所述原始动作数据的相似度;
10.生成所述虚拟角色上所述骨骼关节点与所述外形关节点之间的碰撞约束,以及以所述虚拟角色上的骨骼关节点之间的距离不变生成相邻关节点之间的长度约束;
11.求解所述目标函数在所述长度约束和所述碰撞约束下的最小距离值,得到所述虚拟角色的目标动作数据,所述目标动作数据为所述虚拟角色的关节点的目标位置数据;
12.控制所述虚拟角色的各个关节点移动到所述目标位置数据所指示的位置,以驱动所述虚拟角色执行所述目标动作。
13.第二方面,本技术实施例提供了一种虚拟角色的动作控制装置,包括:
14.原始动作数据获取模块,用于获取原始动作数据,所述原始动作数据为原始模型执行目标动作时骨骼上的关节点的位置数据;
15.初始动作数据确定模块,用于根据所述原始动作数据确定虚拟角色的初始动作数据,所述初始动作数据为所述虚拟角色的骨骼上的关节点的初始位置数据,所述原始模型和所述虚拟角色的关节点包括骨骼关节点和外形关节点;
16.目标函数生成模块,用于采用所述初始动作数据和所述原始动作数据构建目标函数,所述目标函数用于计算所述初始动作数据与所述原始动作数据的相似度;
17.约束构建模块,用于生成所述虚拟角色上所述骨骼关节点与所述外形关节点之间的碰撞约束,以及以所述虚拟角色上的骨骼关节点之间的距离不变生成相邻关节点之间的长度约束;
18.目标函数求解模块,用于求解所述目标函数在所述长度约束和所述碰撞约束下的最小距离值,得到所述虚拟角色的目标动作数据,所述目标动作数据为所述虚拟角色的关节点的目标位置数据;
19.虚拟角色控制模块,用于控制所述虚拟角色的各个关节点移动到所述目标位置数据所指示的位置,以驱动所述虚拟角色执行所述目标动作。
20.第三方面,本技术实施例提供了一种虚拟角色的动作控制设备,所述虚拟角色的动作控制设备包括:
21.一个或多个处理器;
22.存储装置,用于存储一个或多个计算机程序,
23.当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本技术第一方面所述的虚拟角色的动作控制方法。
24.第四方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本技术第一方面所述的虚拟角色的动作控制方法。
25.第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品中的指令被处理器执行时实现第一方面所述的虚拟角色的动作控制方法。
26.本技术实施例在获取原始模型的执行目标动作时的原始动作数据后,根据该原始动作数据确定虚拟角色的初始动作数据,并采用初始动作数据和原始动作数据构建目标函数,目标函数用于计算初始动作数据与原始动作数据的相似度,并且生成虚拟角色上骨骼关节点与外形关节点之间的碰撞约束,以及以虚拟角色上的骨骼关节点之间的距离不变生成相邻关节点之间的长度约束,进一步求解目标函数在长度约束和碰撞约束下的最小距离值得到虚拟角色的目标动作数据,该目标动作数据为虚拟角色的关节点的目标位置数据,最终控制虚拟角色的各个关节点移动到目标位置数据所指示的位置,以驱动虚拟角色执行目标动作,一方面,初始动作数据和原始动作数据的距离越小,说明虚拟角色的动作和原始模型的动作更为接近,保证了虚拟角色能够准确地执行原始模型所做的目标动作,另一方面,通过长度约束和碰撞约束,可以保证动作语义的完整以及避免穿模。
附图说明
27.图1是现有技术中虚拟角色动作控制中动作语义走样的示意图;
28.图2是本技术实施例一提供的一种虚拟角色的动作控制方法的流程图;
29.图3a是本技术实施例二提供的一种虚拟角色的动作控制方法的流程图;
30.图3b是本技术的一个示例中添加外形关节点的示意图;
31.图3c是本技术实施例中骨架上关节点的示意图;
32.图3d是本技术实施例中关节点邻接矩阵图表化之后的示意图;
33.图3e是本技术实施例中动作邻接关系的示意图;
34.图3f是本技术实施例中碰撞约束的示意图;
35.图4是本技术实施例三提供的一种虚拟角色的动作控制装置的结构框图;
36.图5是本技术实施例四提供的一种虚拟角色的动作控制设备的结构框图。
具体实施方式
37.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,而非对本技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术相关的部分而非全部结构。
38.实施例一
39.图2为本技术实施例一提供的一种虚拟角色的动作控制方法的流程图,本技术实施例可适用于捕获原始模型的动作来控制虚拟角色模拟动作的情况,该方法可以由本技术实施的虚拟角色的动作控制装置来执行,该虚拟角色的动作控制装置可以由硬件或软件来实现,并集成在本技术实施例所提供的虚拟角色的动作控制中,具体地,如图2所示,本技术实施例的虚拟角色的动作控制方法可以包括如下步骤:
40.s201、获取原始动作数据,原始动作数据为原始模型执行目标动作时骨骼上的关节点的位置数据。
41.在本技术实施例中,原始模型可以是做出目标动作的模型,虚拟角色可以是模仿原始模型所做出的目标动作的角色,在一个示例中,原始模型可以是人体模型,虚拟角色可以是数字人,示例性地,原始模型可以是现实生活中的真实人体,虚拟角色可以是虚拟主播、虚拟主持人、虚拟人偶、机器人等,当然,原始模型还可以是动物,虚拟角色可以是虚拟动物,需要说明的是原始模型和虚拟角色具有同样的骨架结构,为了方便说明,本技术实施例以原始模型为现实生活中的人,虚拟角色为虚拟人作为示例对虚拟角色的动作控制方法进行说明。
42.在一个应用场景中,通过捕获主播的动作来控制网络中虚拟人偶时,主播即为原始模型,虚拟人偶即为虚拟角色,虚拟人偶需要做出与主播一样的动作,则在获取原始动作数据时,可以通过摄像头对主播采集至少一张图像,通过至少一张图像进行关节点识别,得到主播做出目标动作时骨骼上各个关节点的位置数据作为原始动作数据,可选地,可以将至少一张图像输入预先训练的人体关节点识别网络中得到主播的各个关节点的位置数据作为原始动作数据。
43.s202、根据原始动作数据确定虚拟角色的初始动作数据,初始动作数据为虚拟角色的骨骼上的关节点的初始位置数据,原始模型和虚拟角色的关节点包括骨骼关节点和外形关节点。
44.动作数据可以是模型上骨骼的旋转数据,原始模型执行目标动作可以视为原始模型的骨架在运动,骨架由多根骨骼连接而成,具有父子连接关系,子骨骼相对父骨骼的旋转
运动可以用矩阵来记录,在人体骨架中,根骨骼可以为盆骨,向上与盆骨相连的子骨骼、子骨骼的子骨骼等具有传递关系,例如从盆骨向上经过脊骨、大臂、小臂,然后达到手,将从盆骨到手经过的所有骨骼的旋转矩阵依次相乘即可以得到手的动作数据,由于关节点为骨骼与骨骼之间连接的节点,在获取到骨骼的旋转数据之后即可以确定骨骼上各个关节点的位置数据,或者是在获取各个关节点的位置数据之后,也可以得到关节点所构成的骨骼的旋转数据。
45.具体到本技术实施例中,原始动作数据表示原始模型所做的目标动作,可以将原始动作数据赋值到虚拟角色的骨骼上,即初始化虚拟角色的各个骨骼,使得虚拟角色的各个骨骼与原始模型中对应的骨骼具有相同的旋转数据,亦即初始化虚拟角色上各个关节点的位置数据,从而可以在该位置数据附近范围内求解关节点的最优位置,降低求解难度,提高求解效率以实现实时控制虚拟角色的动作。
46.在另一可选实施例中,关节点可以包括骨骼关节点和外形关节点,骨骼关节点为连接连根骨骼的节点,外形关节点可以是为了避免穿模而在原始模型和虚拟角色外形轮廓上所设置的虚拟点,在一个示例中,一帧原始动作数据可以应用于具有相同骨架不同外形轮廓的虚拟角色,例如,对于虚拟人偶有胖瘦之分,或者有的虚拟人头头部较大,或者穿着裙子等导致外形轮廓差异,则可以在需要避免穿模的原始模型和虚拟角色的外轮廓上设置一个以上的虚拟点作为外形关节点。
47.s203、采用所述初始动作数据和所述原始动作数据的距离作为构建目标函数。
48.原始动作数据表示原始模型所执行的动作,初始动作数据表示虚拟角色的初始化动作,可以将初始动作数据和原始动作数据代入目标函数中,该目标函数用于计算初始动作数据与原始动作数据的相似度,亦即计算原始模型所执行的动作与虚拟角色的动作的相似度。
49.在一个示例中,相似度可以计算初始动作数据与原始动作数据的距离来表示,相似度越小表明虚拟角色的动作与原始模型的动作越接近,具体地,在目标函数中,原始动作数据为固定数值,初始动作数据为变量,目标函数值为因变量,可以通过不断对初始动作数据进行迭代更新使得目标函数值最小,在一个示例中,目标函数可以是计算两个数值距离的函数,例如可以是l2范数(欧几里德)距离函数,切比雪夫距离函数等,本发明实施例对计算相似度的目标函数不作限制。
50.s204、生成虚拟角色上骨骼关节点与外形关节点之间的碰撞约束,以及以虚拟角色上的骨骼关节点之间的距离不变生成相邻关节点之间的长度约束。
51.在骨架上同一位置的骨骼,该骨骼在原始模型和虚拟角色中的长度可能不一致,而且不同虚拟角色的骨骼长度也不相同,例如,虚拟角色a的手臂长,虚拟角色b的手臂短,而对同一虚拟角色而言,每根骨骼的长度是固定不变的,可以约束虚拟角色上每根骨骼的长度不变,具体地,可以计算虚拟角色的每根骨骼的长度,然后计算初始动作数据中构成骨骼的相邻两个关节点的距离,该距离与骨骼原始距离的差值作为长度约束,即在改变关节点位置的同时要保证两个关节点所构成的骨骼的长度不变。
52.同时,可以确定虚拟角色上预先设置的需要受碰撞约束的关节点以及碰撞点,计算该受碰撞约束的关节点与碰撞点之间的距离作为碰撞深度,约束该碰撞深度小于或者等于0即可以保证受碰撞约束的关节点不会与碰撞点发生碰撞,虚拟角色的动作不会发生穿
模。
53.s205、求解目标函数在长度约束和碰撞约束下的最小距离值,得到虚拟角色的目标动作数据,目标动作数据为虚拟角色的关节点的目标位置数据。
54.具体地,求解目标函数在长度约束和碰撞约束下的最小距离值的过程为:在保证骨骼长度不变以及受碰撞约束的关节点不会与碰撞点发生碰撞的情况下,不断改变初始动作数据使得目标函数的函数值最小,即不断地改变虚拟角色的各个关节点的位置使得目标函数值最小即可以得到虚拟角色的各个关节点的位置数据,在实际应用中可以通过序列二次规划(sqp,sequential quadratic programming)或者增广拉格朗日法(alm,augmented lagrange method)来求解目标函数的最优解即可以得到虚拟角色的关节点的目标位置数据,序列二次规划(sqp)或者增广拉格朗日法(alm)的求解方法可参考现有技术,在此不再详述。
55.s206、控制虚拟角色的各个关节点移动到目标位置数据所指示的位置,以驱动虚拟角色执行目标动作。
56.在求解得到虚拟角色的各个关节点的目标位置数据之后,可以控制虚拟角色的骨架上的各个关节点移动到目标位置数据所指示的位置,各个关节点位于目标位置数据所指示的位置之后,关节点所构成的各个骨骼所呈现出的动作即为原始模型所执行的目标动作。
57.本技术实施例在获取原始模型的执行目标动作时的原始动作数据后,根据该原始动作数据确定虚拟角色的初始动作数据,并采用初始动作数据和原始动作数据构建目标函数,目标函数用于计算初始动作数据与原始动作数据的相似度,并且生成虚拟角色上骨骼关节点与外形关节点之间的碰撞约束,以及以虚拟角色上的骨骼关节点之间的距离不变生成相邻关节点之间的长度约束,进一步求解目标函数在长度约束和碰撞约束下的最小距离值得到虚拟角色的目标动作数据,该目标动作数据为虚拟角色的关节点的目标位置数据,最终控制虚拟角色的各个关节点移动到目标位置数据所指示的位置,以驱动虚拟角色执行目标动作,一方面,初始动作数据和原始动作数据的距离越小,说明虚拟角色的动作和原始模型的动作更为接近,保证了虚拟角色能够准确地执行原始模型所做的目标动作,另一方面,通过长度约束和碰撞约束,可以保证动作语义的完整以及避免穿模。
58.实施例二
59.图3a为本技术实施例二提供的一种虚拟角色的动作控制方法的流程图,本技术实施例在前述实施例一的基础上进行优化,具体地,如图3a所示,本技术实施例的虚拟角色的动作控制方法可以包括如下步骤:
60.s301、获取原始动作数据,原始动作数据为原始模型执行目标动作时骨骼上的关节点的位置数据。
61.本技术实施例在获取原始动作数据之前,可以先设置原始模型和虚拟角色的关节点,所设置的关节点包括骨骼关节点和外形关节点,其中,骨骼关节点为构成骨骼的两个节点,外形关节点是根据虚拟角色的外形,避免虚拟角色动作时穿模而设置的虚拟关节点,外形关节点可以根据虚拟角色的不同外形而设置。
62.如图3b所示的虚拟人偶中,该虚拟人偶的头部比较大并且所穿的裙子外形较大,为了避免手部动作时手穿入头部或者穿入到裙子里面造成穿模现象,可以在头部和裙子上
添加外形关节点,在一个示例中,在头部添加外形关节点如图3b中头部的黑色方块p1、p2、p3,在裙子添加外形关节点如图3b中的黑色方块p4、p5、p6、p7,当然,在实际应用中,可以根据不同的虚拟角色预先设置不同的外形关节点,本技术实施例对此不作限制。
63.在一个可选实施例中,在获取原始动作数据时,可以采集原始模型的图像,对图像进行关节点识别得到原始模型上各个骨骼的关节点的位置数据作为原始动作数据,示例性地,原始模型为主播时,可以通过摄像头采集主播的至少一帧图像输入预先训练好的人体关节点识别网络中得到主播的关节点的位置数据作为原始动作数据。
64.如图3c为人体骨架示意图,该人体骨架由多根骨骼构成,每根骨骼的两端为关节点,本技术实施例中以17个关节点(点0-点16)的位置数据来表示模型的动作,在本技术的一个示例中,原始动作数据可以是骨架中骨骼的旋转数据,具体地,可以以盆骨为根骨骼,其他骨骼为盆骨的子骨骼或者次级骨骼,则旋转数据为各个骨骼相对于其父骨骼的位置数据,示例性地,如图3c中,假设骨骼p07的相对于关节点0的旋转数据为d07,骨骼p78的相对于骨骼p07的旋转数据为d78,则骨骼p78相对于关节点0的旋转数据为d07
×
d78,以此类推可以得到每根骨骼相对与关节点0的旋转数据,并且由于关节点为骨骼与骨骼之间连接的节点,在获取到骨骼的旋转数据之后即可以确定骨骼上各个关节点的位置数据,或者是在获取各个关节点的位置数据之后,也可以得到关节点所构成的骨骼的旋转数据。
65.s302、根据原始动作数据中原始模型的相邻两个关节点的位置数据计算两个相邻关节点之间的骨骼的旋转数据。
66.在本技术的可选实施例中,位置数据可以是关节点的三维坐标,人体关节点识别的是各个关节点相对于人体坐标系的三维坐标,例如,坐标系原点为如图3c所述的关节点0,则人体关节点识别时可以得到关节点1到关节点16的各个关节点相对于关节点0的三维坐标,从而可以根据构成骨骼的两个关节点的坐标计算该骨骼相对于副骨骼的旋转数据。
67.如图3c所示,以盆骨的关节点0为坐标原点,在得到关节点0与关节点7的三维坐标后,可以通过关节点7和关节点0的三维坐标计算骨骼p07的旋转数据,然后根据关节点8和关节点7的三维坐标计算骨骼p78相对于其父骨骼p07的旋转数据,将骨骼p07和骨骼p78的旋转数据相乘即可以得到骨骼p78相对于关节点0的旋转数据,以此类推得到各个骨骼相对于关节点0的旋转数据。
68.s303、将原始模型中每根骨骼的旋转数据移植到虚拟角色的对应的骨骼上作为虚拟角色的骨骼的旋转数据,得到虚拟角色的初始动作数据。
69.原始动作数据表示原始模型所做的目标动作,可以将原始动作数据赋值到虚拟角色的骨骼上,即初始化虚拟角色的各个骨骼,使得虚拟角色的各个骨骼与原始模型中对应的骨骼具有相同的旋转数据,亦即初始化虚拟角色上各个关节点的位置数据,从而可以在该位置数据附近范围内求解关节点的最优位置,降低求解难度,提高求解效率以实现实时控制虚拟角色的动作。
70.具体地,对于虚拟角色,可以同样以盆骨的关节点0为原点,依次设置每根骨骼的旋转数据,使得虚拟角色的每根骨骼的旋转数据与原始模型中对应的骨骼的旋转数据相同,使得虚拟角色的每个关节点初始化位置,从而可以在该初始位置附近范围内求解关节点的最优位置,降低求解难度,提高求解效率以实现实时控制虚拟角色的动作。
71.s304、采用原始动作数据计算原始模型的关节点的原始向量,以及采用初始动作
数据计算虚拟角色的关节点的初始向量。
72.示例性地,可以通过骨骼的旋转数据计算出各个关节点的三维坐标,将各个关节点的三维坐标连接成一个向量即为模型的所有关节点的向量,如图3c所示,一共有17个关节点,每个关节点有x,y,z三个维度的坐标值,则可以用模型的所有关节点写成一个向量x∈r^51。
73.s305、基于原始模型的骨骼结构和预设动作邻接关系生成目标动作的动作语义矩阵。
74.在本技术的可选实施例中,可以获取原始模型的关节点邻接矩阵,关节点邻接矩阵中每个关节点所在的行中的每个元素值表示该关节点与其他关节点的关节邻接关系,针对原始模型上的每个目标关节点,根据预设动作语义邻接关系确定目标关节点的动作语义邻接关节点,更新关节点邻接矩阵中目标关节点所在的行中动作语义邻接关节点的元素值得到目标动作的动作语义矩阵。
75.关节点邻接矩阵表示模型中关节点之间的邻接关系,如图3c所示,关节点8分别与关节点11、关节点9、关节点14、关节点7相邻,关节点8与其他关节点均不相邻,两个关节点相邻则在矩阵中对应的元素的元素值记为-1,否则为0,图3d为图3c中各个关节点的邻接矩阵,为了便于标识,将矩阵表格化,在图3d中第一行和第一列是关节点序号,以关节点8作为示例,关节点8所在的行中,由于关节点8与关节点11、关节点9、关节点14、关节点7相邻,对应的元素值为-1,关节点8有4相邻关节点,则在关节点8所在的行和列对应的元素值为4,其余不相邻的关节点的元素值为0,从图3d可知,表中对角线为每个关节点邻接的关节点的数量。
76.预设动作语义邻接关系表示的是一个动作中关节点之间的邻接关系,亦即通过定义关节点的邻接关系来表示动作的语义,如图3e所示,用于手部动作为示例,可以预先定义手的关节点16与其他关节点的邻接关系,在一个示例中,可以定义手的关节点16分别与头的关节点10、肩膀的关节点14、脊椎的关节点7、大腿的关节点1以及脚的关节点3共5个关节点邻接,则图3d中关节点16所在的行的元素值如下表1:
77.表1
78.0-10-1000-100-1000-105
79.由于两个关节点邻接时元素值为-1,反之为0,由上述关节点16所在的行可以看出关节点16的动作语义连接关系,对于原始模型和虚拟角色中的关节点,可以预先定义各个关节点的动作语义邻接关系,如图3c定义的是手的关节点16与头的关节点10、肩膀的关节点14、脊椎的关节点7、大腿的关节点1以及脚的关节点3共5个关节点邻接,更为关注的是手部动作,因此定义手的关节点16与其他相对固定的关节点动作语义邻接,如果是更为关注头部动作,则可以定义头的关节点10分别与关节点8、关节点11、关节点14、关节点7动作语义邻接,本技术实施例对关节点的动作语义邻接关系不作限制。
80.以上表1为关节点16的动作语义连接关系在矩阵上的表示,将表1的元素值更新到如图3d中的矩阵中,并以此类推更新其他关节点的所在行的元素值即可以得到目标动作的动作语义矩阵,该动作语义矩阵表示原始模型执行目标动作时,各个关节点在动作上的邻接关系,即表示的是图3e中虚线连接的两个关节点的动作邻接关系,整个动作语义矩阵表示的是原始模型所做的动作的动作语义。
programming)或者增广拉格朗日法(alm,augmented lagrange method)来求解目标函数的最优解即可以得到虚拟角色的关节点的目标位置数据,序列二次规划(sqp)或者增广拉格朗日法(alm)的求解方法可参考现有技术。
108.在可选实施例中,对于一个目标动作,动作语义矩阵l固定不变,同时碰撞约束为碰撞深度等于0,则目标函数可以简化为等式约束的函数:
109.min 0.5
×
‖tarpos3d-srcpos3d‖2[0110][0111]
求解过程如下:
[0112]
假设c(tarpos3d)=‖tarpos3d[i]-tarpos3d[j]‖-resetlength
[0113]
c(tarpos3d)为二次等式非线性约束,可以对c(tarpos3d)作泰勒展开进行一阶线性变换后得到:
[0114]
c(tarpos3d)=j
×
tarpos3d-b,
[0115]
j为c(tarpos3d)的雅可比矩阵,b为泰勒展开后的常数,具体泰勒展开可参考现有技术,在此不再详述。
[0116]
由于动作确定后,动作语义矩阵固定不变,构建拉格朗日函数:
[0117]
min 0.5
×
‖tarpos3d-srcpos3d‖ λ
×
(j
×
tarpos3d-b)
[0118]
假设x=tarpos3d-srcpos3d,则拉格朗日函数变换为:
[0119]
l(x,λ)=0.5
×
‖x‖ transpose(λ)
×
(j
×
x-b)
ꢀꢀꢀ
(1)
[0120]
transpose(.)为取转置矩阵。
[0121]
令公式(1)对x、λ的导数分别等于0,则可以得到以下方程组:
[0122]
x transpose(j)
×
λ=0
ꢀꢀꢀ
(2)
[0123]j×
x=b
ꢀꢀꢀ
(3)
[0124]
对公式(2)变形得到:
[0125]
x=-transpose(j)
×
λ
ꢀꢀꢀ
(4)
[0126]
公式(4)代入公式(3)中得到:
[0127]j×
(-transpose(j)
×
λ)=b
ꢀꢀꢀ
(5)
[0128]
解出λ:
[0129][0130]
公式(6)代入公式(2)求解出x:
[0131][0132]
用高斯-赛德尔迭代法对x进行迭代直到收敛得到最终x,由于x=tarpos3d-srcpos3d,srcpos3d固定不变,亦即得到tarpos3d,即虚拟角色的关节点的最优位置,具体迭代过程可参考现有技术高斯-赛德尔迭代法的迭代过程,在此不再详述。
[0133]
s310、控制虚拟角色的各个关节点移动到目标位置数据所指示的位置,以驱动虚拟角色执行目标动作。
[0134]
在求解得到虚拟角色的各个关节点的目标位置数据之后,可以控制虚拟角色的骨架上的各个关节点移动到目标位置数据所指示的位置,各个关节点位于目标位置数据所指示的位置之后,关节点所构成的各个骨骼所呈现出的动作即为原始模型所执行的目标动作。
[0135]
本技术实施例在获取原始模型的执行目标动作时的原始动作数据后,根据该原始动作数据确定虚拟角色的初始动作数据,采用原始动作数据计算原始模型的关节点的原始向量,以及采用初始动作数据计算虚拟角色的关节点的初始向量,基于原始模型的骨骼结构和预设动作邻接关系生成目标动作的动作语义矩阵,分别计算动作语义矩阵与原始向量、初始向量的乘积得到第一乘积和第二乘积,计算第一乘积和第二乘积的距离作为目标函数,并且生成虚拟角色上骨骼关节点与外形关节点之间的碰撞约束,以及以虚拟角色上的骨骼关节点之间的距离不变生成相邻关节点之间的长度约束,进一步求解目标函数在长度约束和碰撞约束下的最小距离值得到虚拟角色的目标动作数据,该目标动作数据为虚拟角色的关节点的目标位置数据,最终控制虚拟角色的各个关节点移动到目标位置数据所指示的位置,以驱动虚拟角色执行目标动作,一方面,初始动作数据和原始动作数据的距离越小,说明虚拟角色的动作和原始模型的动作更为接近,保证了虚拟角色能够准确地执行原始模型所作出的目标动作,另一方面,通过长度约束和碰撞约束,可以保证动作语义的完整以及避免穿模。
[0136]
实施例三
[0137]
图4是本技术实施例三提供的一种虚拟角色的动作控制装置的结构框图,如图4所示,本技术实施例的虚拟角色的动作控制装置具体可以包括如下模块:
[0138]
原始动作数据获取模块401,用于获取原始动作数据,所述原始动作数据为原始模型执行目标动作时骨骼上的关节点的位置数据;
[0139]
初始动作数据确定模块402,用于根据所述原始动作数据确定虚拟角色的初始动作数据,所述初始动作数据为所述虚拟角色的骨骼上的关节点的初始位置数据,所述原始模型和所述虚拟角色的关节点包括骨骼关节点和外形关节点;
[0140]
目标函数生成模块403,用于采用所述初始动作数据和所述原始动作数据构建目标函数,所述目标函数用于计算所述初始动作数据与所述原始动作数据的相似度;
[0141]
约束构建模块404,用于生成所述虚拟角色上所述骨骼关节点与所述外形关节点之间的碰撞约束,以及以所述虚拟角色上的骨骼关节点之间的距离不变生成相邻关节点之间的长度约束;
[0142]
目标函数求解模块405,用于求解所述目标函数在所述长度约束和所述碰撞约束下的最小距离值,得到所述虚拟角色的目标动作数据,所述目标动作数据为所述虚拟角色的关节点的目标位置数据;
[0143]
虚拟角色控制模块406,用于控制所述虚拟角色的各个关节点移动到所述目标位置数据所指示的位置,以驱动所述虚拟角色执行所述目标动作。
[0144]
本技术实施例所提供的虚拟角色的动作控制装置可执行本技术实施例一、实施例二所提供的虚拟角色的动作控制方法,具备执行方法相应的功能模块和有益效果。
[0145]
实施例四
[0146]
参照图5,示出了本技术一个示例中的一种虚拟角色的动作控制设备的结构示意
图。如图5所示,该虚拟角色的动作控制设备具体可以包括:处理器501、存储装置502、具有触摸功能的显示屏503、输入装置504、输出装置505以及通信装置506。该虚拟角色的动作控制设备中处理器501的数量可以是一个或者多个,图5中以一个处理器501为例。该虚拟角色的动作控制设备的处理器501、存储装置502、显示屏503、输入装置504、输出装置505以及通信装置506可以通过总线或者其他方式连接,图5中以通过总线连接为例,所述虚拟角色的动作控制设备用于执行如本技术实施例提供的虚拟角色的动作控制方法。
[0147]
实施例五
[0148]
本技术实施例提供一种计算机可读存储介质,所述存储介质中的计算机程序被处理器执行时实现如上述方法实施例所述的虚拟角色的动作控制方法。
[0149]
实施例六
[0150]
本技术实施例提供一种计算机程序产品,计算机程序产品中的指令被处理器执行时实现上述方法实施例所述的虚拟角色的动作控制方法。
[0151]
就本技术而言,计算机可读存储介质可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。计算机程序产品可以是包含计算机可读存储介质的产品,使得计算机可读存储介质中的指令被处理器执行时实现上述方法实施例所述的虚拟角色的动作控制方法。
[0152]
需要说明的是,对于装置、设备、存储介质、计算机程序产品实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
再多了解一些

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

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

相关文献