CN113345062B - 三维虚拟角色动作补全方法、装置和服务器 - Google Patents
三维虚拟角色动作补全方法、装置和服务器 Download PDFInfo
- Publication number
- CN113345062B CN113345062B CN202110890185.8A CN202110890185A CN113345062B CN 113345062 B CN113345062 B CN 113345062B CN 202110890185 A CN202110890185 A CN 202110890185A CN 113345062 B CN113345062 B CN 113345062B
- Authority
- CN
- China
- Prior art keywords
- joint points
- frame
- preset
- vector
- joint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供了一种三维虚拟角色动作补全方法,包括:将待补全动作数据的过去帧和目标帧的数据经预处理和拼接后生成输入向量,输入训练好的动作补全神经网络模型得到预测数据,根据预测数据计算出当前过渡帧数据,将当前过渡帧数据经过处理和拼接生成输入向量,再次输入训练好的动作补全神经网络模型得到预测数据,根据预测数据计算出下一个过渡帧数据,照此方法得到所有过渡帧的数据。该方法适合生成时间长、过渡帧帧数多、动作复杂的场景,且生成的过渡帧动作真实,减少了原本插值方案所需的人力成本,提升了项目质量,缩短了项目周期。本申请同时还提供了一种三维虚拟角色动作补全装置、服务器和计算机可读存储介质,均具有上述有益效果。
Description
技术领域
本申请涉及角色动画动作生成与编辑技术领域,特别涉及一种三维虚拟角色动作补全方法、三维虚拟角色动作补全补全装置、服务器和计算机可读存储介质。
背景技术
在三维动画或游戏等应用中,三维虚拟形象都是通过动画数据进行驱动,形成走路、跑步、跳跃、舞蹈等各种动作。动画数据可以通过动画师手工制作,或者通过动作捕捉设备获取。动作捕捉设备捕获的动画数据很多时候无法直接使用,往往在某些不满意的动作片段,还需要经过动画师的手工修改。因此在这两种情况,都需要动画师的手工编辑。
在动画师使用动画软件时,会编辑或修改若干个关键帧,并指定前后相关的若干个关键帧,通过动画软件自带的数学插值方法,生成中间指定帧数目的过渡帧,从而得到一段平滑的动作序列组。但是,这种方式只适用于生成时间短、过渡帧数少、动作简单的动作过渡。而在实际生产过程中,动画师不得不编辑或修改大量的关键帧,如果关键帧数量太少,时间间隔太短,或者动作过于复杂,插值方法会得到不真实、不合理的过渡序列。使用现有方案,会非常依赖动画师的技术和经验,进而增加了人力成本;由于容易出现不合理的过渡序列,又因为动画师等人员的技术水平参差不齐,导致项目质量也会受到影响;同时,由于需要调试和编辑大量关键帧,也会大大增加项目周期。
因此,如何提供一种解决上述技术问题的方案是本领域技术人员目前亟需解决的问题。
发明内容
本申请的目的是提供一种三维虚拟角色动作补全方法、三维虚拟角色动作补全补全装置、服务器和计算机可读存储介质,能够处理复杂的、高频快速的动作补全,且补全的动作真实、丰富。具体方案如下:
本申请提供一种三维虚拟角色动作补全方法,包括:
S101:获取待补全动作数据的目标帧、至少两个过去帧、动画帧率、标准差、待补全动作帧数,根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标;
S102:加载训练好的动作补全神经网络模型,输入动画帧率和标准差;
S103:将当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标进行数据拼接,得到第一输入向量、第二输入向量和第三输入向量;
S104:将第一输入向量、第二输入向量、第三输入向量和待补全动作帧数输入训练好的动作补全神经网络模型,输出预测的所有过渡帧的所有关节点的6D旋转向量增量、所有过渡帧的Hips关节点的3D空间坐标增量;
S105:将预测的所有过渡帧的所有关节点的6D旋转向量增量加上当前帧的所有关节点的6D旋转向量得到下一个过渡帧的所有关节点的6D旋转向量并保存,将预测的所有过渡帧的Hips关节点的3D空间坐标增量加上当前帧的Hips关节点的3D空间坐标得到下一个过渡帧的Hips关节点的3D空间坐标并保存,将待补全动作帧数减1;
S106:若待补全动作帧数大于0,则根据下一个过渡帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据下一个过渡帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量,返回S103,若待补全动作帧数等于0,则进入S107;
S107:得到每一个过渡帧的所有关节点的6D旋转向量和Hips关节点的3D空间坐标,将每一个过渡帧的所有关节点的6D旋转向量转换为预设数据格式,即得到所有过渡帧的动作补全数据。
优选的,所述S101的方法包括:
获取待补全动作数据的第一过去帧、第二过去帧和目标帧的数据,将第一过去帧、第二过去帧和目标帧的所有关节点的欧拉角进行数据格式转换,得到第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵;
将第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵保留前两个列向量并将其压缩为一个6维向量,得到第一过去帧、第二过去帧和目标帧的所有关节点的6D旋转向量;
根据第一过去帧、第二过去帧和目标帧的Hips关节点的3D空间坐标、第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到第一过去帧、第二过去帧和目标帧的所有关节点的3D空间坐标;
将第二过去帧的所有关节点的3D空间坐标减去第一过去帧的所有关节点的3D空间坐标得到差值后再乘以动画帧率,得到当前帧的所有关节点的速度向量;
读取第二过去帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度向量,分别判断每个预设关节点的速度向量与预设速度向量的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度判断布尔值,将其拼接得到当前帧的第一布尔向量;读取第二过去帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的3D空间坐标,分别判断每个预设关节点的y坐标值与预设长度值的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的距离判断布尔值,将其拼接得到当前帧的第二布尔向量;将当前帧的第一布尔向量和第二布尔向量进行与运算,得到当前帧的四维布尔向量。
优选的,所述S102中训练好的动作补全神经网络模型包括第一映射子网络、第二映射子网络、第三映射子网络、门控神经网络和128个专家神经网络EPi,其中第一映射子网络、第二映射子网络和第三映射子网络构成了一个编码系统,将动作状态量编码到768维的隐向量上,门控神经网络接收隐向量并做出决策,选择不同的专家神经网络EPi以及对应的权重做隐向量计算的加权融合,专家神经网络EPi对隐向量进行计算得到下一帧的动作状态增量。
优选的,所述S103的方法包括:
拼接当前帧的所有关节点的6D旋转向量、当前帧的所有关节点的速度向量和当前帧的四维布尔向量,得到第一输入向量;
将目标帧的所有关节点的3D空间坐标减去当前帧的所有关节点的3D空间坐标,得到第一偏移向量,将目标帧的所有关节点的6D旋转向量减去当前帧的所有关节点的6D旋转向量,得到第二偏移向量,拼接第一偏移向量和第二偏移向量,得到第二输入向量;
将目标帧的所有关节点的6D旋转向量作为第三输入向量。
优选的,所述S106中根据当前帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据当前帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量的方法包括:
将当前帧的所有关节点的6D旋转向量的前3个值作为向量x,后3个值作为向量y,将向量x进行标准化得到更新的向量x,将向量y和更新的向量x求叉积得到向量z,将向量z进行标准化得到更新的向量z,将更新的向量z和更新的向量x求叉积得到更新的向量y,将更新的向量x、更新的向量y和更新的向量z分别作为三维方阵的列向量,得到当前帧的所有关节点的旋转矩阵;
根据当前帧的Hips关节点的3D空间坐标、当前帧的所有关节点的旋转矩阵,预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到当前帧的所有关节点的3D空间坐标;
将当前帧的所有关节点的3D空间坐标减去当前帧对应的上一帧的所有关节点的3D空间坐标得到差值后再乘以动画帧率,得到当前帧的所有关节点的速度向量;
读取当前帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度向量,分别判断每个预设关节点的速度向量与预设速度向量的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度判断布尔值,将其拼接得到当前帧的第一布尔向量;读取当前帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的3D空间坐标,分别判断每个预设关节点的y坐标值与预设长度值的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的距离判断布尔值,将其拼接得到当前帧的第二布尔向量;将当前帧的第一布尔向量和第二布尔向量进行与运算,得到当前帧的四维布尔向量。
优选的,所述S102中训练好的动作补全神经网络模型的生成方法包括:
S201:采集大量人体运动的原始动作数据,并根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到除第一帧以外每一帧的所有关节点的6D旋转向量、所有关节点的速度向量、四维布尔向量和所有关节点的3D空间坐标作为数据集,将数据集分为训练集和验证集;
S202:建立动作补全神经网络模型,设置标准差值为预设标准差值;
S203:从训练集中提取预设批次数量个动作数据批次作为动作补全神经网络模型的输入数据,输入动作补全神经网络模型得到动作补全神经网络模型的输出结果,所述每个动作数据批次包括预设组数个动作序列组,每个动作序列组包括过去帧、目标帧和S个过渡帧,其中S是预设采样范围值内的预设组数个均匀采样值;
S204:根据动作补全神经网络模型的输入数据和输出结果计算每个动作序列组中系统的总损失项,并根据系统的总损失项对动作补全神经网络模型进行优化,得到训练好的动作补全神经网络模型。
本申请还提供一种三维虚拟角色动作补全装置,包括:
动作数据预处理模块,用于获取待补全动作数据的目标帧、至少两个过去帧、动画帧率、标准差、待补全动作帧数,根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标;
神经网络加载模块,用于加载训练好的动作补全神经网络模型,输入动画帧率和标准差;
输入向量生成模块,用于将当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标进行数据拼接,得到第一输入向量、第二输入向量和第三输入向量;
神经网络处理模块,用于将第一输入向量、第二输入向量、第三输入向量和待补全动作帧数输入训练好的动作补全神经网络模型,输出预测的所有过渡帧的所有关节点的6D旋转向量增量、所有过渡帧的Hips关节点的3D空间坐标增量;
过渡帧数据计算模块,用于将预测的所有过渡帧的所有关节点的6D旋转向量增量加上当前帧的所有关节点的6D旋转向量得到下一个过渡帧的所有关节点的6D旋转向量并保存,将预测的所有过渡帧的Hips关节点的3D空间坐标增量加上当前帧的Hips关节点的3D空间坐标得到下一个过渡帧的Hips关节点的3D空间坐标并保存,将待补全动作帧数减1;
补全帧判断模块,用于当待补全动作帧数大于0时,设定下一个过渡帧的所有关节点的6D旋转向量为当前帧的所有关节点的6D旋转向量、下一个过渡帧的Hips关节点的3D空间坐标为当前帧的Hips关节点的3D空间坐标,根据当前帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据当前帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量,返回输入向量生成模块,当待补全动作帧数等于0时,则进入过渡帧汇总模块;
过渡帧汇总模块,用于得到每一个过渡帧的所有关节点的6D旋转向量和Hips关节点的3D空间坐标,将每一个过渡帧的所有关节点的6D旋转向量转换为预设数据格式,即得到所有过渡帧的动作补全数据。
优选的,三维虚拟角色动作补全装置还包括神经网络生成模块,用于生成训练好的动作补全神经网络模型;所述神经网络生成模块包括:
数据集获取单元,用于采集大量人体运动的原始动作数据,并根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到除第一帧以外每一帧的所有关节点的6D旋转向量、所有关节点的速度向量、四维布尔向量和所有关节点的3D空间坐标作为数据集,将数据集分为训练集和验证集;
神经网络建立单元,用于建立动作补全神经网络模型,设置标准差值为预设标准差值;
神经网络训练单元,用于从训练集中提取预设批次数量个动作数据批次作为动作补全神经网络模型的输入数据,输入动作补全神经网络模型得到动作补全神经网络模型的输出结果,所述每个动作数据批次包括预设组数个动作序列组,每个动作序列组包括过去帧、目标帧和S个过渡帧,其中S是预设采样范围值内的预设组数个均匀采样值;
神经网络优化单元,用于根据动作补全神经网络模型的输入数据和输出结果计算每个动作序列组中系统的总损失项,并根据系统的总损失项对动作补全神经网络模型进行优化,得到训练好的动作补全神经网络模型。
本申请还提供一种服务器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述三维虚拟角色动作补全方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述三维虚拟角色动作补全方法的步骤。
本申请提供一种三维虚拟角色动作补全方法,包括:将待补全动作数据的过去帧和目标帧的数据经预处理和拼接后生成第一输入向量、第二输入向量和第三输入向量,输入训练好的动作补全神经网络模型得到预测数据,根据预测数据计算出当前过渡帧数据,将当前过渡帧数据经过处理和拼接生成第一输入向量、第二输入向量和第三输入向量,再次输入训练好的动作补全神经网络模型得到预测数据,根据预测数据计算出下一个过渡帧数据,照此方法得到所有过渡帧的数据。
可见,本申请通过获取过去帧和目标帧的数据进行预处理和拼接,基于训练好的动作补全神经网络模型进行预测和计算自动生成大量动作过渡帧的数据,适合生成时间长、过渡帧帧数多、动作复杂的场景,且生成的过渡帧动作真实,减少了原本插值方案所需的人力成本,提升了项目质量,缩短了项目周期。本申请同时还提供了一种三维虚拟角色动作补全装置、服务器和计算机可读存储介质,均具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种三维虚拟角色动作补全方法的流程图;
图2为本申请实施例提供的一种数据预处理方法的流程图;
图3为本申请实施例提供的一种动作补全神经网络模型的结构示意图;
图4为本申请实施例提供的一种训练好的动作补全神经网络模型的生成方法的流程图;
图5为本申请实施例提供的一种第一映射子网络的结构示意图;
图6为本申请实施例提供的一种第二映射子网络的结构示意图;
图7为本申请实施例提供的一种第三映射子网络的结构示意图;
图8为本申请实施例提供的一种门控神经网络的结构示意图;
图9为本申请实施例提供的一种专家神经网络的结构示意图;
图10为本申请实施例提供的一种三维虚拟角色动作补全装置的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在三维动画或游戏等应用中,三维虚拟形象都是通过动画数据进行驱动,形成走路、跑步、跳跃、舞蹈等各种动作。动画数据可以通过动画师手工制作,或者通过动作捕捉设备获取。动作捕捉设备捕获的动画数据很多时候无法直接使用,往往在某些不满意的动作片段,还需要经过动画师的手工修改。因此在这两种情况,都需要动画师的手工编辑。在动画师使用动画软件时,会编辑或修改若干个关键帧,并指定前后相关的若干个关键帧,通过动画软件自带的数学插值方法,生成中间指定帧数目的过渡帧,从而得到一段平滑的动作序列组。但是,这种方式只适用于生成时间短、过渡帧数少、动作简单的动作过渡。而在实际生产过程中,动画师不得不编辑或修改大量的关键帧,如果关键帧数量太少,时间间隔太短,或者动作过于复杂,插值方法会得到不真实、不合理的过渡序列。使用现有方案,会非常依赖动画师的技术和经验,进而增加了人力成本;由于容易出现不合理的过渡序列,又因为动画师等人员的技术水平参差不齐,导致项目质量也会受到影响;同时,由于需要调试和编辑大量关键帧,也会大大增加项目周期。
基于上述问题,本实施例提供一种三维虚拟角色动作补全方法,通过获取过去帧和目标帧的数据进行预处理和拼接,基于训练好的动作补全神经网络模型进行预测和计算自动生成大量动作过渡帧的数据,适合生成时间长、过渡帧帧数多、动作复杂的场景,且生成的过渡帧动作真实,减少了原本插值方案所需的人力成本,提升了项目质量,缩短了项目周期,具体请参考图1,图1为本申请实施例提供的一种三维虚拟角色动作补全方法的流程图,具体包括:
S101:获取待补全动作数据的目标帧、至少两个过去帧、动画帧率、标准差、待补全动作帧数,根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标。
其中,过去帧的目的是为了确定当前角色动作状态,是指在待补充的过渡帧之前的帧,目标帧是由用户指定,用于满足用户的需求,通常是用户修改后的动作状态。即目标帧是用户所希望加入过渡帧后,角色应达到的动作状态。这里需要至少两个过去帧的数据是因为要计算当前帧的所有关节点的速度向量,所以至少需要两帧数据才能计算出帧与帧之间的速度向量。这里的当前帧是指待补充的过渡帧的前一帧。
本实施例不对过去帧的数量进行限定,可以是2个、3个或者更多,也不限定2个过去帧的位置,可以为相邻帧,也可以不为相邻帧,只要能实现计算出当前帧的所有关节点的速度向量的目的即可。例如在20FPS的动画中,2个过去帧是相邻帧,这2个过去帧仅相差1/20=0.05秒,若2个过去帧不是相邻帧,那么2个过去帧相差的时间除以2个过去帧之间间隔的帧数即可。本实施例不对动画帧率进行限定,可以设置动画帧率为30FPS。本实施例不对标准差sigma进行限定,sigma是概率论里的标准差,它可以调节动作补全的变化性,根据需要进行设置。这里不对待补全动作帧数进行限制,用户可以根据需要设置。具体的,用户可以通过插件提供的用户交互接口,指定2个过去帧和1个目标帧的动画数据、动画帧率,设置标准差输入sigma、以及需要补全的动画帧数S。
本实施例预设的人体骨骼的关节点数目为33个,具体包括:{0, Hips}、{1,Spine}、{2, Spine1}、{3, Spine2}、{4, Spine3}、{5, Neck}、{6, Neck1}、{7, Head}、{8,HeadEnd}、{9, RightShoulder}、{10, RightArm}、{11, RightForeArm}、{12,RightHand}、{13, RightHandThumb}、{14, RightHandMiddle}、{15, LeftShoulder}、{16,LeftArm}、{17, LeftForeArm}、{18, LeftHand}、{19, LeftHandThumb}、{20,LeftHandMiddle}、{21, RightUpLeg}、{22, RightLeg}、{23, RightFoot}、{24,RightForeFoot}、{25, RightToeBase}、{26, RightToeBaseEnd}、{27, LeftUpLeg}、{28,LeftLeg}、{29, LeftFoot}、{30, LeftForeFoot}、{31, LeftToeBase}、{32,LeftToeBaseEnd}。其中Hips关节点为人体骨骼的根关节点。
每个关节点的旋转轴为:{0, {X,Y,Z}}、{1, {X,Y,Z}}、{2, {X,Y,Z}}、{3, {X,Y,Z}}、{4, {X,Y,Z}}、{5, {X,Y,Z}}、{6, {X,Y,Z}}、{7, {X,Y,Z}}、{8, {}}、{9, {X,Z}}、{10, {X,Y,Z}}、{11, {X,Y}}、{12, {X,Z}}、{13, {}}、{14, {}}、{15, {X,Z}}、{16, {X,Y,Z}}、{17, {X,Y}}、{18, {X,Z}}、{19, {}}、{20, {}}、{21, {X,Y,Z}}、{22, {X}}、{23,{X,Y,Z}}、{24, {}}、{25, {X}}、{26, {}}、{27, {X,Y,Z}}、{28, {X}}、{29, {X,Y,Z}}、{30, {}}、{31, {X}}、{32, {}}。其中,0-32代表关节点的序号,X、Y、Z分别表示X轴、Y轴和Z轴。
预设所有关节点对应父节点列表为:{0, {}}、{1, {0}}、{2, {1}}、{3, {2}}、{4,{3}}、{5, {4}}、{6, {5}}、{7, {8}}、{8, {7}}、{9, {4}}、{10, {9}}、{11, {10}}、{12,{11}}、{13, {12}}、{14, {12}}、{15, {4}}、{16, {15}}、{17, {16}}、{18, {17}}、{19,{18}}、{20, {18}}、{21, {0}}、{22, {21}}、{23, {22}}、{24, {23}}、{25, {24}}、{26,{25}}、{27, {0}}、{28, {27}}、{29, {28}}、{30, {29}}、{31, {30}}、{32, {31}}。
预设所有关节点相对于对应父节点的标准骨骼偏移值列表为:{1, {0.0,10.973504172820446,-1.8905411922178885}}、{2, {0.0,9.839155069029879,0.0}}、{3,{0.0,9.839155069029879,0.0}}、{4, {0.0,9.839155069029879,0.0}}、{5, {0.0,12.650342231609844,1.2650342231609846}}、{6, {0.0,5.627352749797471,0.0}}、{7,{0.0,5.627352749797471,0.0}}、{8, {0.0,9.727720099469252,0.0}}、{9, {0.0,9.035958736864172,7.079303955478363}}、{10, {0.0,18.540949701045772,0.0}}、{11,{0.0,28.886655990727327,0.0}}、{12, {0.0,22.323240911467128,0.0}}、{13, {-3.0643109737346546,3.252690113828508,2.418667007718634}}、{14, {0.0,8.673840303542688,-0.055601540407324915}}、{15, {0.0,9.035958736864172,7.079303955478363}}、{16, {0.0,18.540949701045772,0.0}}、{17, {0.0,28.886655990727327,0.0}}、{18, {0.0,22.323240911467128,0.0}}、{19,{3.0643109737346546,3.252690113828508,2.418667007718634}}、{20, {0.0,8.673840303542688,-0.055601540407324915}}、{21, {-9.336602969020769,0.0,0.0}}、{22, {0.0,-41.79405063115827,0.0}}、{23, {0.0,-39.71819658810898,0.0}}、{24,{0.0,-3.5319294628875477,0.0}}、{25, {0.0,0.0,13.83215668621111}}、{26, {0.0,0.0,7.599936005436189}}、{27, {9.336602969020769,0.0,0.0}}、{28, {0.0,-41.79405063115827,0.0}}、{29, {0.0,-39.71819658810898,0.0}}、{30, {0.0,-3.5319294628875477,0.0}}、{31, {0.0,0.0,13.83215668621111}}、{32, {0.0,0.0,7.329371066117648}}。
在一种可实现的实施方式中,图2为本申请实施例提供的一种数据预处理方法的流程图,步骤S101包括:
S1011:获取待补全动作数据的第一过去帧、第二过去帧和目标帧的数据,将第一过去帧、第二过去帧和目标帧的所有关节点的欧拉角进行数据格式转换,得到第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵。
其中,本实施例采用2个相邻过去帧,第二过去帧是距离待生成的过渡帧最近的相邻帧,第一过去帧是与第二过去帧相邻的帧。目前动画数据帧通常都是采用所有关节点的欧拉角格式,因此首先需要将第一过去帧、第二过去帧和目标帧进行数据格式转换,得到本实施例所需要的所有关节点的旋转矩阵。具体的,可以使用scipy数学工具库将欧拉角数据转换为旋转矩阵。
S1012:将第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵保留前两个列向量并将其压缩为一个6维向量,得到第一过去帧、第二过去帧和目标帧的所有关节点的6D旋转向量。
具体的,将第一过去帧的所有关节点的旋转矩阵保留前两个列向量并将其压缩为一个6维向量,得到第一过去帧的所有关节点的6D旋转向量;将第二过去帧的所有关节点的旋转矩阵保留前两个列向量并将其压缩为一个6维向量,得到第二过去帧的所有关节点的6D旋转向量;将目标帧的所有关节点的旋转矩阵保留前两个列向量并将其压缩为一个6维向量,得到目标帧的所有关节点的6D旋转向量。
S1013:根据第一过去帧、第二过去帧和目标帧的Hips关节点的3D空间坐标、第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到第一过去帧、第二过去帧和目标帧的所有关节点的3D空间坐标。
具体的,根据第一过去帧的Hips关节点的3D空间坐标、第一过去帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到第一过去帧的所有关节点的3D空间坐标。
根据第二过去帧的Hips关节点的3D空间坐标、第二过去帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到第二过去帧的所有关节点的3D空间坐标。
根据目标帧的Hips关节点的3D空间坐标、目标帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到目标帧的所有关节点的3D空间坐标。
其中,由于第二过去帧是与待生成的过渡帧距离最近的帧,所以将第二过去帧指定为当前帧,那么所述第二过去帧的所有关节点的6D旋转向量为当前帧的所有关节点的6D旋转向量、所述第二过去帧的所有关节点的3D空间坐标为当前帧的所有关节点的3D空间坐标。
S1014:将第二过去帧的所有关节点的3D空间坐标减去第一过去帧的所有关节点的3D空间坐标得到差值后再乘以动画帧率,得到当前帧的所有关节点的速度向量。
S1015:读取第二过去帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度向量,分别判断每个预设关节点的速度向量与预设速度向量的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度判断布尔值,将其拼接得到当前帧的第一布尔向量;读取第二过去帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的3D空间坐标,分别判断每个预设关节点的y坐标值与预设长度值的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的距离判断布尔值,将其拼接得到当前帧的第二布尔向量;将当前帧的第一布尔向量和第二布尔向量进行与运算,得到当前帧的四维布尔向量。
其中,预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点分别为RightForeFoot、RightToeBaseEnd、LeftForeFoot、LeftToeBaseEnd。这里不对预设速度向量进行限制,可以根据具体需要设置,例如可以设置为0.7m/s。这里不对预设长度值进行限制,可以根据具体需要设置,例如可以设置为5cm。具体的,根据当前帧的RightForeFoot、RightToeBaseEnd、LeftForeFoot、LeftToeBaseEnd关节点的速度向量,如果该关节点上速度向量大于等于0.7m/s,则速度判断布尔值赋值为0;如果小于0.7m/s,则速度判断布尔值赋值为1。将这四个关节点的布尔值拼接,即得到第一布尔向量。根据当前帧的RightForeFoot、RightToeBaseEnd、LeftForeFoot、LeftToeBaseEnd的3D空间坐标,如果该关节点上的y坐标大于等于5cm,则距离判断布尔值赋值为0;如果y坐标小于5cm,则距离判断布尔值赋值为1。将这四个关节点的距离判断布尔值拼接,即得到第二布尔向量,将当前帧的第一布尔向量和第二布尔向量进行与运算,得到当前帧的四维布尔向量。
基于上述技术方案,获得了当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标,完成了数据预处理,为后面生成过渡帧做好准备。
S102:加载训练好的动作补全神经网络模型,输入动画帧率和标准差。
其中,动作补全神经网络模型训练好后,会把神经网络参数保存在硬盘上或者其他存储空间,当需要使用动作补全神经网络模型时,会读取硬盘或其他存储空间上的神经网络参数,这个过程称为加载,而待补全动作帧数、标准差、动作帧率是在加载完成后对动作补全神经网络模型做的额外配置,为后面生成过渡帧做好准备。
在一种可实现的实施方式中,图3为本申请实施例提供的一种动作补全神经网络模型的结构示意图,S102中训练好的动作补全神经网络模型包括第一映射子网络E1、第二映射子网络E2、第三映射子网络E3、门控神经网络G和128个专家神经网络EPi,i=1,2,3,...128,其中第一映射子网络E1、第二映射子网络E2和第三映射子网络E3构成了一个编码系统,将动作状态量编码到768维的隐向量上,门控神经网络G接收隐向量并做出决策,选择不同的专家神经网络EPi以及对应的权重做隐向量计算的加权融合,专家神经网络EPi对隐向量进行计算得到下一帧的动作状态增量。
S103:将当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标进行数据拼接,得到第一输入向量、第二输入向量和第三输入向量。
在一种可实现的实施方式中,步骤S103包括:拼接当前帧的所有关节点的6D旋转向量、当前帧的所有关节点的速度向量和当前帧的四维布尔向量,得到第一输入向量;将目标帧的所有关节点的3D空间坐标减去当前帧的所有关节点的3D空间坐标,得到第一偏移向量,将目标帧的所有关节点的6D旋转向量减去当前帧的所有关节点的6D旋转向量,得到第二偏移向量,拼接第一偏移向量和第二偏移向量,得到第二输入向量;将目标帧的所有关节点的6D旋转向量作为第三输入向量。
其中,拼接是指数据合并操作,例如,拼接当前帧的所有关节点的6D旋转向量、当前帧的所有关节点的速度向量和当前帧的四维布尔向量,就是将当前帧的所有关节点的6D旋转向量、当前帧的所有关节点的速度向量和当前帧的四维布尔向量在同一维度上合并起来,得到的结果包含了两者的数据信息。
S104:将第一输入向量、第二输入向量、第三输入向量和待补全动作帧数输入训练好的动作补全神经网络模型,输出预测的所有过渡帧的所有关节点的6D旋转向量增量、所有过渡帧的Hips关节点的3D空间坐标增量。
S105:将预测的所有过渡帧的所有关节点的6D旋转向量增量加上当前帧的所有关节点的6D旋转向量得到下一个过渡帧的所有关节点的6D旋转向量并保存,将预测的所有过渡帧的Hips关节点的3D空间坐标增量加上当前帧的Hips关节点的3D空间坐标得到下一个过渡帧的Hips关节点的3D空间坐标并保存,将待补全动作帧数减1。
其中,获得的下一个过渡帧的数据包含下一个过渡帧的所有关节点的6D旋转向量和下一个过渡帧的Hips关节点的3D空间坐标,将其保存,获得了下一个过渡帧的数据后,待补全动作帧数就要少一个了,所以将待补全动作帧数减1。
S106:若待补全动作帧数大于0,则根据下一个过渡帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据下一个过渡帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量,返回S103,若待补全动作帧数等于0,则进入S107。
其中,判断待补全动作帧数的值是否大于0,若待补全动作帧数大于0,表明还有过渡帧没有生成,因此根据下一个过渡帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据下一个过渡帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量,返回S103步骤再一次执行生成过渡帧的步骤,可以理解的是,若需要生成S个过渡帧,那么就需要执行S次S103-S106的步骤。具体的,当待补全动作帧数大于0时,当前获得的下一个过渡帧数据将作为要求解的下一个过渡帧数据的当前帧数据参与计算,以求解出下一个过渡帧的数据。若待补全动作帧数等于0,则表明已经生成了全部的过渡帧,可进入S107步骤。
在一种可实现的实施方式中,步骤S106中根据当前帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据当前帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量的方法包括:
S1061:将当前帧的所有关节点的6D旋转向量的前3个值作为向量x,后3个值作为向量y,将向量x进行标准化得到更新的向量x,将向量y和更新的向量x求叉积得到向量z,将向量z进行标准化得到更新的向量z,将更新的向量z和更新的向量x求叉积得到更新的向量y,将更新的向量x、更新的向量y和更新的向量z分别作为三维方阵的列向量,得到当前帧的所有关节点的旋转矩阵;
S1062:根据当前帧的Hips关节点的3D空间坐标、当前帧的所有关节点的旋转矩阵,预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到当前帧的所有关节点的3D空间坐标;
S1063:将当前帧的所有关节点的3D空间坐标减去当前帧对应的上一帧的所有关节点的3D空间坐标得到差值后再乘以动画帧率,得到当前帧的所有关节点的速度向量;
S1064:读取当前帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度向量,分别判断每个预设关节点的速度向量与预设速度向量的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度判断布尔值,将其拼接得到当前帧的第一布尔向量;读取当前帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的3D空间坐标,分别判断每个预设关节点的y坐标值与预设长度值的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的距离判断布尔值,将其拼接得到当前帧的第二布尔向量;将当前帧的第一布尔向量和第二布尔向量进行与运算,得到当前帧的四维布尔向量。
S107:得到每一个过渡帧的所有关节点的6D旋转向量和Hips关节点的3D空间坐标,将每一个过渡帧的所有关节点的6D旋转向量转换为预设数据格式,即得到所有过渡帧的动作补全数据。
具体的,所有关节点的6D旋转向量和Hips关节点的3D空间坐标构成了每一个过渡帧的完整的动画数据,由于6D旋转向量不是当前动画数据常用的数据格式,因此还需要将6D旋转向量转换为预设数据格式,例如欧拉角格式,这里并不限定具体的数据格式,可以根据具体情况设置,最后将S个过渡帧的动画数据补充到原始动画数据。
以上是一次完整的动作补全的流程,用户可以多次调用以上流程,可以得到不同形态的合理的过渡动作数据,以满足用户的不同需求。
本实施例提供了一种S102中训练好的动作补全神经网络模型的生成方法,请参考图4,图4为本申请实施例提供的一种训练好的动作补全神经网络模型的生成方法,包括:
S201:采集大量人体运动的原始动作数据,并根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到除第一帧以外每一帧的所有关节点的6D旋转向量、所有关节点的速度向量、四维布尔向量和所有关节点的3D空间坐标作为数据集,将数据集分为训练集和验证集。
其中,本实施例并不限定采集人体运动的原始动作数据的方式,只要能够采集到满足本实施例需求的动作数据都是可以的。例如,可以通过Vicon动捕设备采集大量人体运动的动作数据,其中预设人体骨骼的关节点数目为33个,帧率为25FPS。
具体的关节点包括:{0, Hips}、{1, Spine}、{2, Spine1}、{3, Spine2}、{4,Spine3}、{5, Neck}、{6, Neck1}、{7, Head}、{8, HeadEnd}、{9, RightShoulder}、{10,RightArm}、{11, RightForeArm}、{12, RightHand}、{13, RightHandThumb}、{14,RightHandMiddle}、{15, LeftShoulder}、{16, LeftArm}、{17, LeftForeArm}、{18,LeftHand}、{19, LeftHandThumb}、{20, LeftHandMiddle}、{21, RightUpLeg}、{22,RightLeg}、{23, RightFoot}、{24, RightForeFoot}、{25, RightToeBase}、{26,RightToeBaseEnd}、{27, LeftUpLeg}、{28, LeftLeg}、{29, LeftFoot}、{30,LeftForeFoot}、{31, LeftToeBase}、{32, LeftToeBaseEnd}。其中,括号中前面的数据是关节点的序号,后面的英文是关节点的名称。
每个关节点的旋转轴为:{0, {X,Y,Z}}、{1, {X,Y,Z}}、{2, {X,Y,Z}}、{3, {X,Y,Z}}、{4, {X,Y,Z}}、{5, {X,Y,Z}}、{6, {X,Y,Z}}、{7, {X,Y,Z}}、{8, {}}、{9, {X,Z}}、{10, {X,Y,Z}}、{11, {X,Y}}、{12, {X,Z}}、{13, {}}、{14, {}}、{15, {X,Z}}、{16, {X,Y,Z}}、{17, {X,Y}}、{18, {X,Z}}、{19, {}}、{20, {}}、{21, {X,Y,Z}}、{22, {X}}、{23,{X,Y,Z}}、{24, {}}、{25, {X}}、{26, {}}、{27, {X,Y,Z}}、{28, {X}}、{29, {X,Y,Z}}、{30, {}}、{31, {X}}、{32, {}}。其中,0-32代表关节点的序号,X、Y、Z分别表示X轴、Y轴和Z轴。
预设所有关节点对应父节点列表为:{0, {}}、{1, {0}}、{2, {1}}、{3, {2}}、{4,{3}}、{5, {4}}、{6, {5}}、{7, {8}}、{8, {7}}、{9, {4}}、{10, {9}}、{11, {10}}、{12,{11}}、{13, {12}}、{14, {12}}、{15, {4}}、{16, {15}}、{17, {16}}、{18, {17}}、{19,{18}}、{20, {18}}、{21, {0}}、{22, {21}}、{23, {22}}、{24, {23}}、{25, {24}}、{26,{25}}、{27, {0}}、{28, {27}}、{29, {28}}、{30, {29}}、{31, {30}}、{32, {31}}。其中,外括号中前面的数字0-32代表关节点的序号,内括号中的数字代表该关节点对应的父节点的序号。
预设所有关节点相对于对应父节点的标准骨骼偏移值列表为:{1, {0.0,10.973504172820446,-1.8905411922178885}}、{2, {0.0,9.839155069029879,0.0}}、{3,{0.0,9.839155069029879,0.0}}、{4, {0.0,9.839155069029879,0.0}}、{5, {0.0,12.650342231609844,1.2650342231609846}}、{6, {0.0,5.627352749797471,0.0}}、{7,{0.0,5.627352749797471,0.0}}、{8, {0.0,9.727720099469252,0.0}}、{9, {0.0,9.035958736864172,7.079303955478363}}、{10, {0.0,18.540949701045772,0.0}}、{11,{0.0,28.886655990727327,0.0}}、{12, {0.0,22.323240911467128,0.0}}、{13, {-3.0643109737346546,3.252690113828508,2.418667007718634}}、{14, {0.0,8.673840303542688,-0.055601540407324915}}、{15, {0.0,9.035958736864172,7.079303955478363}}、{16, {0.0,18.540949701045772,0.0}}、{17, {0.0,28.886655990727327,0.0}}、{18, {0.0,22.323240911467128,0.0}}、{19,{3.0643109737346546,3.252690113828508,2.418667007718634}}、{20, {0.0,8.673840303542688,-0.055601540407324915}}、{21, {-9.336602969020769,0.0,0.0}}、{22, {0.0,-41.79405063115827,0.0}}、{23, {0.0,-39.71819658810898,0.0}}、{24,{0.0,-3.5319294628875477,0.0}}、{25, {0.0,0.0,13.83215668621111}}、{26, {0.0,0.0,7.599936005436189}}、{27, {9.336602969020769,0.0,0.0}}、{28, {0.0,-41.79405063115827,0.0}}、{29, {0.0,-39.71819658810898,0.0}}、{30, {0.0,-3.5319294628875477,0.0}}、{31, {0.0,0.0,13.83215668621111}}、{32, {0.0,0.0,7.329371066117648}}。其中,外括号中前面的数字1-32代表关节点的序号,内括号中的数据代表标准骨骼偏移值,是一个三维向量。
在一种可实现的实施方式中,步骤S201的方法包括:
S2011:获取原始动作数据中每一帧的Hips关节点的3D空间坐标、所有关节点的欧拉角,将每一帧的所有关节点的欧拉角进行数据格式转换,得到每一帧的所有关节点的旋转矩阵。
其中,原始动作数据包括每一帧的Hips关节点(根节点)的3D空间坐标、所有关节点的欧拉角,即旋转用欧拉角表示。可以使用scipy数学工具库将欧拉角数据转换为旋转矩阵。
S2012:将每一帧的所有关节点的旋转矩阵保留前两个列向量并将其压缩为一个6维向量,得到每一帧的所有关节点的6D旋转向量。
S2013:根据每一帧的Hips关节点的3D空间坐标、每一帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到每一帧的所有关节点的3D空间坐标。
S2014:将除第一帧以外的每一帧的所有关节点的3D空间坐标减去该帧对应的上一帧的所有关节点的3D空间坐标得到差值后再乘以动画帧率,得到除第一帧以外的每一帧的所有关节点的速度向量。
其中,由于第一帧数据没有前一帧数据,所以不能求解出第一帧的所有关节点的速度向量,因此只能获得除第一帧以外的每一帧的所有关节点的速度向量。
S2015:读取除第一帧以外的每一帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度向量,分别判断每个预设关节点的速度向量与预设速度向量的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度判断布尔值,将其拼接得到除第一帧以外的每一帧的第一布尔向量;读取除第一帧以外的每一帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的3D空间坐标,分别判断每个预设关节点的y坐标值与预设长度值的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的距离判断布尔值,将其拼接得到除第一帧以外的每一帧的第二布尔向量;将除第一帧以外的每一帧的第一布尔向量和第二布尔向量进行与运算,得到除第一帧以外的每一帧的四维布尔向量。
其中,预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点分别为RightForeFoot、RightToeBaseEnd、LeftForeFoot、LeftToeBaseEnd。这里不对预设速度向量进行限制,可以根据具体需要设置,例如可以设置为0.7m/s。这里不对预设长度值进行限制,可以根据具体需要设置,例如可以设置为5cm。具体的,根据当前帧的RightForeFoot、RightToeBaseEnd、LeftForeFoot、LeftToeBaseEnd关节点的速度向量,如果该关节点上速度向量大于等于0.7m/s,则速度判断布尔值赋值为0;如果小于0.7m/s,则速度判断布尔值赋值为1。将这四个关节点的布尔值拼接,即得到第一布尔向量。根据当前帧的RightForeFoot、RightToeBaseEnd、LeftForeFoot、LeftToeBaseEnd的3D空间坐标,如果该关节点上的y坐标大于等于5cm,则距离判断布尔值赋值为0;如果y坐标小于5cm,则距离判断布尔值赋值为1。将这四个关节点的距离判断布尔值拼接,即得到第二布尔向量,将除第一帧以外的每一帧的第一布尔向量和第二布尔向量进行与运算,得到除第一帧以外的每一帧的四维布尔向量。
S2016:保存除第一帧以外的每一帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量和四维布尔向量作为数据集,其中划分第一预设比例的数据集为训练集,划分第二预设比例的数据集为测试集。
其中,将数据集划分为训练集和验证集,其比例是训练集占80%,测试集占20%。
S202:建立动作补全神经网络模型,设置标准差值为预设标准差值。
其中,设置标准差值为预设标准差值,预设标准差值sigma=0.01,标准差值设置为0.01可以确保动作补全的变化性和多样性处于理想范围。
在一种可实现的实施方式中,图3为本申请实施例提供的一种动作补全神经网络模型的结构示意图,动作补全神经网络模型包括第一映射子网络E1、第二映射子网络E2、第三映射子网络E3、门控神经网络G和128个专家神经网络EPi,i=1,2,3,...128,其中第一映射子网络E1、第二映射子网络E2和第三映射子网络E3构成了一个编码系统,将动作状态量编码到768维的隐向量上,门控神经网络G接收隐向量并做出决策,选择不同的专家神经网络EPi以及对应的权重做隐向量计算的加权融合,专家神经网络EPi对隐向量进行计算得到下一帧的动作状态增量,由此得到所有过渡帧的所有动作数据。
动作补全神经网络模型的功能包括:该系统实现了根据过去帧和目标帧的动作数据,生成中间过渡帧的动作数据的功能。优点包括:系统通过大型数据集和深度学习方法,可以自动生成合理的过渡帧动画,由此减少动画师人工介入,并且比较简单的插值技术,可以合成更加丰富、真实的动画。系统通过采用混合专家技术和加入位置信息模块,具有很强的合成能力和鲁棒性。系统通过加入控制信息模块,可以增加合成的随机性,由用户控制合成不同变化场景下的过渡帧动画,保障了生产环境下的系统灵活性。加入位置信息模块的设计,可以加快模型训练的收敛性,并使得生成的过渡帧动画是平滑的。
具体的,图5、图6和图7分别为本申请实施例提供的第一映射子网络、第二映射子网络、第三映射子网络的结构,在所有神经网络结构中,中括号都表示数据维度,J表示关节点数目大小,本实施例中J=33。全连接层[m, n]是含参数的全连接层,其公式为:,其中,矩阵和是模型参数。带泄漏线性整流的公式为:,其中,λ=0.01。
第一映射子网络、第二映射子网络和第三映射子网络均包括全连接层和带泄漏线性整流。图5-图7都是一个从输入到输出的含参数、可学习的组合函数。功能为将动作输入数据映射到维度为256的隐空间上。工作原理为全连接层提供线性映射,带泄露线性整流提供非线性映射。其优点为有助于提取数据特征,有助于神经网络的模型训练。
具体的,图5中,输入数据[J*9+4]代表输入数据的维度为(J*9+4)维,其中J=33,输入向量的维度和模型的输入维度是匹配的,全连接层[J*9+4,1024]代表该全连接层将(J*9+4)维数据变换为1024维数据,全连接层[1024,256]代表该全连接层将1024维数据变换为256维数据,输出数据[256]代表输出的数据为维度为(256)的隐空间;图6中,输入数据[J*9]代表输入数据的维度为(J*9)维,其中J=33,输入向量的维度和模型的输入维度是匹配的,全连接层[J*9,1024]代表该全连接层将(J*9)维数据变换为1024维数据,全连接层[1024,256]代表该全连接层将1024维数据变换为256维数据,输出数据[256]代表输出的数据为维度为(256)的隐空间;图7中,输入数据[J*6]代表输入数据的维度为(J*6)维,其中J=33,输入向量的维度和模型的输入维度是匹配的,全连接层[J*6]代表该全连接层将(J*6)维数据变换为1024维数据,全连接层[1024,256]代表该全连接层将1024维数据变换为256维数据,输出数据[256]代表输出的数据为维度为(256)的隐空间;其中1024是深度学习里面常用的全连接层的宽度,是一个经验值,一般取2的指数,比如512,1024、2048之类的。其中1024是深度学习里面常用的全连接层的宽度,是一个经验值,一般取2的指数,比如512,1024、2048之类的。
图8为本申请实施例提供的一种门控神经网络的结构示意图,图8中噪音添加模块,其函数表示是:,其中,i表示每个向量的第i个元素;"StandardNormal" 表示均值为0,标准差为1的高斯噪声;Softplus的函数表示为:,符号表示向量的按元素加法。保留最大的K个值,在本实施例中K=16,其函数表示是:,在归一化中,使用函数为Softmax:。
门控神经网络包括全连接层、噪音添加模块、保留最大的K个值、归一化。图8是一个从输入到输出的含参数、可学习的组合函数。功能包括:可学习的门控神经网络G,读取维度为768的隐空间上的动作特征,得到128个稀疏的(大多数的值为0)权重,这些权重分别对应128个不同的专家网络EPi。门控神经网络G用于学习和判断,该选择哪些专家网络进行后续的数据处理。工作原理为:在维度为768的隐空间上,用一个全连接层对输入进行线性变换,得到128个稀疏的权重。此外,还有一个并行的全连接层对输入进行线性变换,用于噪音添加。经过保留最大的K个值和归一化后,可以得到128个稀疏的权重,并保证所有分量加起来为1。其优势包括:基于“术业有专攻”的思想,针对不同的动作状态,选择不同的专家网络进行计算,该模块可以大大提升系统的建模能力;由于角色动画存在很多复杂变化,该模块可以对不同动作变化进行消歧,进而有利于系统的模型训练;由于不依赖于一个专家神经网络,而是使用混合专家模型,该模块可以帮助系统提升鲁棒性。
图9为本申请实施例提供的一种专家神经网络的结构示意图,图9中加入位置信息
模块依赖于系统输入s的取值,它的作用是添加维度大小为256的位置向量。已知函数:,取,生成位置向
量: ,该
模块的作用定义为函数:,加入控制信息模块依赖于系统输入s和
sigma的取值,其作用是添加维度大小为256的随机向量。对于均值为0,标准差为sigma的正
态分布,采样256个样本作为随机向量vr("sigma")。该模块的作用定义为函数:。专家神经网络
的功能包括:可学习的专家神经网络EPi,读取维度为768的隐空间上的动作特征,输出下一
帧的动作状态变化量。用该状态变化量加上当前帧的动作状态,就可以得到下一帧的动作
状态。由此迭代计算,可以得到补全的动作动画。工作原理为:加入位置信息模块通过引入
距离目标帧的帧数s,可以让系统识别当前帧的位置,进而有助于模型训练的收敛。加入控
制信息模块可以通过用户设置sigma,在隐空间加入噪音,来控制补全动画的变化性。优点
包括:该模块通过接收隐空间的特征向量,自动补全合理动作数据帧;通过加入控制信息模
块,使得系统由确定性系统变为随机性系统,使得用户可以生成不同的合理动作数据帧。加
入控制信息模块的设计,通过再隐向量中加入控制信息,使得系统是一个随机性模型。采用
该方法,可以增加系统生成动作的多样性。
具体的,图9中输入数据A、输入数据B和输入数据C分别为第一映射子网络、第二映射子网络和第三映射子网络的输出数据,全连接层[768,1024]代表该全连接层将768维数据变换为1024维数据,全连接层[1024,J*9+4] 代表该全连接层将1024维数据变换为(J*9+4)维数据,输出数据[J*6+7] 代表输出数据的维度为(J*6+7)维,J=33,其中1024是深度学习里面常用的全连接层的宽度,是一个经验值,一般取2的指数,比如512,1024、2048之类的。
通过采用门控神经网络和专家神经网络技术,可以适用于大型动作捕捉数据集。系统因此可以自动根据不同的动作状态,选择最适合的专家神经网络进行混合计算,有效提升了模型的鲁棒性和性能。
S203:从训练集中提取预设批次数量个动作数据批次作为动作补全神经网络模型的输入数据,输入动作补全神经网络模型得到动作补全神经网络模型的输出结果,所述每个动作数据批次包括预设组数个动作序列组,每个动作序列组包括过去帧、目标帧和S个过渡帧,其中S是预设采样范围值内的预设组数个均匀采样值。
其中,本实施例不对预设批次进行限定,也不对动作序列组方式进行限定,也不对预设采样范围值进行限定,提取训练集中的动作数据的方式可以根据具体要求进行设计。本实施例采取的预设数据提取方式可以为:将训练集的数据按照批次分为不同的动作序列组输入到动作补全神经网络模型,例如,根据数据集的数据量确定批次数量,每个批次包括32个动作序列组,每个动作序列组可以包括1个过去帧,S个过渡帧和1个目标帧,其中S可以是5到100的均匀采样值。训练时一个批次一个批次的输入模型进行模型训练。
具体的,进行神经网络前向运算,提取训练集的数据作为动作补全神经网络模型的输入,得到动作补全神经网络模型的输出。其中,提取数据集数据特征的方法包括:使用动作补全神经网络模型第一映射子网络E1、第二映射子网络E2和第三映射子网络E3,将三种动作输入数据分别映射到维度为256的隐空间上。第一输入向量表示当前帧的动作状态;第二输入向量表示当前帧动作状态与目标帧动作状态之间的偏差;第三输入向量表示目标帧的动作状态。
在一种可实现的实施方式中,步骤S203的方法包括:
S2031:指定过去帧为当前帧,获取当前帧距离目标帧的距离帧数,初始化k=1。
S2032:提取当前帧的所有关节点的6D旋转向量、当前帧的所有关节点的速度向量和当前帧的四维布尔向量拼接成第一输入向量,输入动作补全神经网络模型的第一映射子网络,输出向量Cs。
S2033:提取目标帧的所有关节点的3D空间坐标和所有关节点的6D旋转向量,将目标帧的所有关节点的3D空间坐标减去当前帧的所有关节点的3D空间坐标得到第一偏移向量,将目标帧的所有关节点的6D旋转向量减去当前帧的所有关节点的6D旋转向量得到第二偏移向量,将第一偏移向量和第二偏移向量拼接成第二输入向量,输入动作补全神经网络模型的第二映射子网络,输出向量Co。
S2034:提取目标帧的所有关节点的6D旋转向量作为第三输入向量,输入动作补全神经网络模型的第三映射子网络,输出向量Ct。
S2035:将输出向量Cs、Co和Ct拼接成向量D,将向量D输入动作补全神经网络模型的门控神经网络,门控神经网络输出128个权重Wi,权重Wi的值在0到1之间,对应128个专家神经网络EPi,若权重值为0则冻结对应的专家神经网络EPi,若权重值不为0则激活对应的专家神经网络EPi。
其中,通过门控神经网络G进行专家权重计算。将三种256维的向量Cs、Co和Ct拼接得到向量D,作为门控神经网络G的输入,输出得到稀疏的专家权重Wi。即门控神经网络G输出稀疏的不小于0的权重Wi,其维度大小为N=128。
S2036:将向量D、距离帧数和标准差分别输入激活的专家神经网络EPi,输出结果Ti,i=0,1,2,...127,Ti乘以权重Wi得到Mi,将所有Mi相加得到Tk并保存,将距离帧数减1,k=k+1。
其中,动作补全神经网络模型包括128个相同结构的专家神经网络EPi,权重的维度对应不同序号的专家神经网络EPi,若权重为0,则冻结对应的专家神经网络,若权重大于0,则激活专家神经网络。
使用128个专家神经网络EPi计算结果,根据上述稀疏的128个权重Wi,选择若干专家神经网络EPi进行加权计算,其输入的数据是向量D,最终得到结果Tk每一次计算会得到一个Tk,k=1,2,...S。
S2037:若距离帧数大于0,则指定下一个过渡帧为当前帧,返回S2032,若距离帧数为0,则进入S2038;
其中,步骤S2023-S2027为一帧过渡帧的结果,重复执行S次S2023-S2027求解出S个Tk。
S2038:将得到的S个过渡帧的Tk进行拼接得到动作序列组中所有过渡帧的结果T,即动作补全神经网络模型的输出结果。
S204:根据动作补全神经网络模型的输入数据和输出结果计算每个动作序列组中系统的总损失项,并根据系统的总损失项对动作补全神经网络模型进行优化,得到训练好的动作补全神经网络模型。
在一种可实现的实施方式中,步骤S204的方法包括:
S2041:从所有过渡帧的结果T中得到动作补全神经网络模型预测的所有过渡帧的所有关节点的6D旋转向量增量、预测的所有过渡帧的Hips关节点的3D空间坐标增量和预测的所有过渡帧的四维布尔向量。
其中,获得所有过渡帧的结果T可以划分为动作补全神经网络模型预测的所有过渡帧的所有关节点的6D旋转向量增量、预测的所有过渡帧的Hips关节点的3D空间坐标增量和预测的所有过渡帧的四维布尔向量。
S2042:将预测的所有过渡帧的所有关节点的6D旋转向量增量加上动作序列组中对应的上一帧的所有关节点的6D旋转向量,得到预测的所有过渡帧的所有关节点的6D旋转向量,计算预测的所有过渡帧的所有关节点的6D旋转向量和动作序列组中对应过渡帧的所有关节点的6D旋转向量之间差值的2范数,得到第一损失项。
S2043:将预测的所有过渡帧的Hips关节点的3D空间坐标增量加上动作序列组中对应的上一帧的Hips关节点的3D空间坐标,得到预测的所有过渡帧的Hips关节点的3D空间坐标;
S2044:将预测的所有过渡帧的所有关节点的6D旋转向量的前3个值作为向量x,后3个值作为向量y,将向量x进行标准化得到更新的向量x,对向量y和更新的向量x求叉积得到向量z,将向量z进行标准化得到更新的向量z,将更新的向量z和更新的向量x求叉积得到更新的向量y,将更新的向量x、更新的向量y、更新的向量z分别作为三维方阵的列向量,得到预测的所有过渡帧的所有关节点的旋转矩阵;根据预测的所有过渡帧的Hips关节点的3D空间坐标、预测的所有过渡帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到预测的所有过渡帧的所有关节点的3D空间坐标。计算预测的所有过渡帧的所有关节点的3D空间坐标和动作序列组中对应的过渡帧的所有关节点的3D空间坐标之间差值的2范数,得到第二损失项;
S2045:计算预测的过渡帧的四维布尔向量和动作序列组中对应过渡帧的四维布尔向量之间差值的2范数,得到第三损失项;
S2046:在动作序列组中,将每个专家神经网络EPi的不同样本的权重Wi进行求和,得到该动作序列组中每个专家神经网络EPi的重要度,根据128个专家神经网络EPi的重要度计算出其方差的平方,得到第四损失项;
S2047:将第一损失项、第二损失项、第三损失项和第四损失项相加,得到总损失项,根据总损失项使用预设优化器进行动作补全神经网络模型的神经网络参数的优化,通过所述验证集对动作补全神经网络模型进行验证,选择使所述验证集的损失函数收敛且损失最低时的神经网络参数作为训练好的动作补全神经网络模型的神经网络参数。
其中,在每个批次的动作序列组的迭代中,根据总损失项,可以使用Adam优化器进行神经网络参数的优化。通过不断的迭代,使验证集的损失函数收敛,即连续遍历3次训练集后验证集损失仍然不降低,选取验证集损失最低时的神经网络参数作为训练好的动作补全神经网络模型的神经网络参数。
具体的,损失函数的设计帮助系统从数据集中学习,得到健壮的神经网络模型。其中第一损失函数、第二损失函数、第三损失函数保障了计算结果的精度;第四损失函数保障了专家神经网络的负载均衡。
下面对本申请实施例提供的一种三维虚拟角色动作补全装置进行介绍,下文描述的三维虚拟角色动作补全装置与上文描述的三维虚拟角色动作补全方法可相互对应参照,参考图10,图10为本申请实施例提供的一种三维虚拟角色动作补全装置的结构示意图,包括:
动作数据预处理模块301,用于获取待补全动作数据的目标帧、至少两个过去帧、动画帧率、标准差、待补全动作帧数,根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标;
神经网络加载模块302,用于加载训练好的动作补全神经网络模型,输入动画帧率和标准差;
输入向量生成模块303,用于将当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标进行数据拼接,得到第一输入向量、第二输入向量和第三输入向量;
神经网络处理模块304,用于将第一输入向量、第二输入向量、第三输入向量和待补全动作帧数输入训练好的动作补全神经网络模型,输出预测的所有过渡帧的所有关节点的6D旋转向量增量、所有过渡帧的Hips关节点的3D空间坐标增量;
过渡帧数据计算模块305,用于将预测的所有过渡帧的所有关节点的6D旋转向量增量加上当前帧的所有关节点的6D旋转向量得到下一个过渡帧的所有关节点的6D旋转向量并保存,将预测的所有过渡帧的Hips关节点的3D空间坐标增量加上当前帧的Hips关节点的3D空间坐标得到下一个过渡帧的Hips关节点的3D空间坐标并保存,将待补全动作帧数减1;
补全帧判断模块306,用于若待补全动作帧数大于0,则根据下一个过渡帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据下一个过渡帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量,返回输入向量生成模块,若待补全动作帧数等于0,则进入过渡帧汇总模块;
过渡帧汇总模块307,用于得到每一个过渡帧的所有关节点的6D旋转向量和Hips关节点的3D空间坐标,将每一个过渡帧的所有关节点的6D旋转向量转换为预设数据格式,即得到所有过渡帧的动作补全数据。
可选的,所述动作数据预处理模块301包括:
第一旋转矩阵获取单元,用于获取待补全动作数据的第一过去帧、第二过去帧和目标帧的数据,将第一过去帧、第二过去帧和目标帧的所有关节点的欧拉角进行数据格式转换,得到第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵;
第一6D向量获取单元,用于将第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵保留前两个列向量并将其压缩为一个6维向量,得到第一过去帧、第二过去帧和目标帧的所有关节点的6D旋转向量;
第一3D坐标获取单元,用于根据第一过去帧、第二过去帧和目标帧的Hips关节点的3D空间坐标、第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到第一过去帧、第二过去帧和目标帧的所有关节点的3D空间坐标;
第一速度向量获取单元,用于将第二过去帧的所有关节点的3D空间坐标减去第一过去帧的所有关节点的3D空间坐标得到差值后再乘以动画帧率,得到当前帧的所有关节点的速度向量;
第一布尔向量获取单元,用于读取第二过去帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度向量,分别判断每个预设关节点的速度向量与预设速度向量的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度判断布尔值,将其拼接得到当前帧的第一布尔向量;读取第二过去帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的3D空间坐标,分别判断每个预设关节点的y坐标值与预设长度值的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的距离判断布尔值,将其拼接得到当前帧的第二布尔向量;将当前帧的第一布尔向量和第二布尔向量进行与运算,得到当前帧的四维布尔向量。
可选的,还包括:神经网络生成模块,用于生成训练好的动作补全神经网络模型;所述神经网络生成模块包括:
数据集获取单元,用于采集大量人体运动的原始动作数据,并根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到除第一帧以外每一帧的所有关节点的6D旋转向量、所有关节点的速度向量、四维布尔向量和所有关节点的3D空间坐标作为数据集,将数据集分为训练集和验证集;
神经网络建立单元,用于建立动作补全神经网络模型,设置标准差值为预设标准差值;
神经网络训练单元,用于从训练集中提取预设批次数量个动作数据批次作为动作补全神经网络模型的输入数据,输入动作补全神经网络模型得到动作补全神经网络模型的输出结果,所述每个动作数据批次包括预设组数个动作序列组,每个动作序列组包括过去帧、目标帧和S个过渡帧,其中S是预设采样范围值内的预设组数个均匀采样值;
神经网络优化单元,用于根据动作补全神经网络模型的输入数据和输出结果计算每个动作序列组中系统的总损失项,并根据系统的总损失项对动作补全神经网络模型进行优化,得到训练好的动作补全神经网络模型。
下面对本申请实施例提供的一种服务器进行介绍,下文描述的服务器与上文描述的三维虚拟角色动作补全方法可相互对应参照。
本申请提供一种服务器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述三维虚拟角色动作补全方法的步骤。
由于服务器部分的实施例与三维虚拟角色动作补全方法部分的实施例相互对应,因此服务器部分的实施例请参见三维虚拟角色动作补全方法部分的实施例的描述,这里暂不赘述。
下面对本申请实施例提供的一种计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的三维虚拟角色动作补全方法可相互对应参照。
本申请提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述三维虚拟角色动作补全方法的步骤。
由于计算机可读存储介质部分的实施例与三维虚拟角色动作补全方法部分的实施例相互对应,因此计算机可读存储介质部分的实施例请参见三维虚拟角色动作补全方法部分的实施例的描述,这里暂不赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种三维虚拟角色动作补全方法、三维虚拟角色动作补全装置、服务器及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (9)
1.一种三维虚拟角色动作补全方法,其特征在于,包括:
S101:获取待补全动作数据的目标帧、至少两个过去帧、动画帧率、标准差、待补全动作帧数,根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标;
S102:加载训练好的动作补全神经网络模型,输入动画帧率和标准差;
S103:将当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标进行数据拼接,得到第一输入向量、第二输入向量和第三输入向量,包括:拼接当前帧的所有关节点的6D旋转向量、当前帧的所有关节点的速度向量和当前帧的四维布尔向量,得到第一输入向量;将目标帧的所有关节点的3D空间坐标减去当前帧的所有关节点的3D空间坐标,得到第一偏移向量,将目标帧的所有关节点的6D旋转向量减去当前帧的所有关节点的6D旋转向量,得到第二偏移向量,拼接第一偏移向量和第二偏移向量,得到第二输入向量;将目标帧的所有关节点的6D旋转向量作为第三输入向量;
S104:将第一输入向量、第二输入向量、第三输入向量和待补全动作帧数输入训练好的动作补全神经网络模型,输出预测的所有过渡帧的所有关节点的6D旋转向量增量、所有过渡帧的Hips关节点的3D空间坐标增量;
S105:将预测的所有过渡帧的所有关节点的6D旋转向量增量加上当前帧的所有关节点的6D旋转向量得到下一个过渡帧的所有关节点的6D旋转向量并保存,将预测的所有过渡帧的Hips关节点的3D空间坐标增量加上当前帧的Hips关节点的3D空间坐标得到下一个过渡帧的Hips关节点的3D空间坐标并保存,将待补全动作帧数减1;
S106:若待补全动作帧数大于0,则根据下一个过渡帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据下一个过渡帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量,返回S103,若待补全动作帧数等于0,则进入S107;
S107:得到每一个过渡帧的所有关节点的6D旋转向量和Hips关节点的3D空间坐标,将每一个过渡帧的所有关节点的6D旋转向量转换为预设数据格式,即得到所有过渡帧的动作补全数据。
2.根据权利要求1所述的三维虚拟角色动作补全方法,其特征在于,所述S101的方法包括:
获取待补全动作数据的第一过去帧、第二过去帧和目标帧的数据,将第一过去帧、第二过去帧和目标帧的所有关节点的欧拉角进行数据格式转换,得到第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵;
将第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵保留前两个列向量并将其压缩为一个6维向量,得到第一过去帧、第二过去帧和目标帧的所有关节点的6D旋转向量;
根据第一过去帧、第二过去帧和目标帧的Hips关节点的3D空间坐标、第一过去帧、第二过去帧和目标帧的所有关节点的旋转矩阵、预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到第一过去帧、第二过去帧和目标帧的所有关节点的3D空间坐标;
将第二过去帧的所有关节点的3D空间坐标减去第一过去帧的所有关节点的3D空间坐标得到差值后再乘以动画帧率,得到当前帧的所有关节点的速度向量;
读取第二过去帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度向量,分别判断每个预设关节点的速度向量与预设速度向量的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度判断布尔值,将其拼接得到当前帧的第一布尔向量;读取第二过去帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的3D空间坐标,分别判断每个预设关节点的y坐标值与预设长度值的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的距离判断布尔值,将其拼接得到当前帧的第二布尔向量;将当前帧的第一布尔向量和第二布尔向量进行与运算,得到当前帧的四维布尔向量。
3.根据权利要求1所述的三维虚拟角色动作补全方法,其特征在于,所述S102中训练好的动作补全神经网络模型包括第一映射子网络、第二映射子网络、第三映射子网络、门控神经网络和128个专家神经网络EPi,其中第一映射子网络、第二映射子网络和第三映射子网络构成了一个编码系统,将动作状态量编码到768维的隐向量上,门控神经网络接收隐向量并做出决策,选择不同的专家神经网络EPi以及对应的权重做隐向量计算的加权融合,专家神经网络EPi对隐向量进行计算得到下一帧的动作状态增量。
4.根据权利要求1所述的三维虚拟角色动作补全方法,其特征在于,所述S106中根据当前帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据当前帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量的方法包括:
将当前帧的所有关节点的6D旋转向量的前3个值作为向量x,后3个值作为向量y,将向量x进行标准化得到更新的向量x,将向量y和更新的向量x求叉积得到向量z,将向量z进行标准化得到更新的向量z,将更新的向量z和更新的向量x求叉积得到更新的向量y,将更新的向量x、更新的向量y和更新的向量z分别作为三维方阵的列向量,得到当前帧的所有关节点的旋转矩阵;
根据当前帧的Hips关节点的3D空间坐标、当前帧的所有关节点的旋转矩阵,预设所有关节点对应父节点列表、预设所有关节点相对于对应父节点的标准骨骼偏移值列表,对每个关节点采用将关节点的旋转矩阵与其对应的标准骨骼偏移值求积后再与其对应的父节点的3D空间坐标求和的结果作为该关节点的3D空间坐标的方法,计算得到当前帧的所有关节点的3D空间坐标;
将当前帧的所有关节点的3D空间坐标减去当前帧对应的上一帧的所有关节点的3D空间坐标得到差值后再乘以动画帧率,得到当前帧的所有关节点的速度向量;
读取当前帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度向量,分别判断每个预设关节点的速度向量与预设速度向量的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的速度判断布尔值,将其拼接得到当前帧的第一布尔向量;读取当前帧的预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的3D空间坐标,分别判断每个预设关节点的y坐标值与预设长度值的大小关系,生成预设第一关节点、预设第二关节点、预设第三关节点和预设第四关节点的距离判断布尔值,将其拼接得到当前帧的第二布尔向量;将当前帧的第一布尔向量和第二布尔向量进行与运算,得到当前帧的四维布尔向量。
5.根据权利要求1所述的三维虚拟角色动作补全方法,其特征在于,所述S102中训练好的动作补全神经网络模型的生成方法包括:
S201:采集大量人体运动的原始动作数据,并根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到除第一帧以外每一帧的所有关节点的6D旋转向量、所有关节点的速度向量、四维布尔向量和所有关节点的3D空间坐标作为数据集,将数据集分为训练集和验证集;
S202:建立动作补全神经网络模型,设置标准差值为预设标准差值;
S203:从训练集中提取预设批次数量个动作数据批次作为动作补全神经网络模型的输入数据,输入动作补全神经网络模型得到动作补全神经网络模型的输出结果,所述每个动作数据批次包括预设组数个动作序列组,每个动作序列组包括过去帧、目标帧和S个过渡帧,其中S是预设采样范围值内的预设组数个均匀采样值;
S204:根据动作补全神经网络模型的输入数据和输出结果计算每个动作序列组中系统的总损失项,并根据系统的总损失项对动作补全神经网络模型进行优化,得到训练好的动作补全神经网络模型。
6.一种三维虚拟角色动作补全装置,其特征在于,包括:
动作数据预处理模块,用于获取待补全动作数据的目标帧、至少两个过去帧、动画帧率、标准差、待补全动作帧数,根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标;
神经网络加载模块,用于加载训练好的动作补全神经网络模型,输入动画帧率和标准差;
输入向量生成模块,用于将当前帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量、以及目标帧的所有关节点的6D旋转向量、所有关节点的3D空间坐标进行数据拼接,得到第一输入向量、第二输入向量和第三输入向量,包括:拼接当前帧的所有关节点的6D旋转向量、当前帧的所有关节点的速度向量和当前帧的四维布尔向量,得到第一输入向量;将目标帧的所有关节点的3D空间坐标减去当前帧的所有关节点的3D空间坐标,得到第一偏移向量,将目标帧的所有关节点的6D旋转向量减去当前帧的所有关节点的6D旋转向量,得到第二偏移向量,拼接第一偏移向量和第二偏移向量,得到第二输入向量;将目标帧的所有关节点的6D旋转向量作为第三输入向量;
神经网络处理模块,用于将第一输入向量、第二输入向量、第三输入向量和待补全动作帧数输入训练好的动作补全神经网络模型,输出预测的所有过渡帧的所有关节点的6D旋转向量增量、所有过渡帧的Hips关节点的3D空间坐标增量;
过渡帧数据计算模块,用于将预测的所有过渡帧的所有关节点的6D旋转向量增量加上当前帧的所有关节点的6D旋转向量得到下一个过渡帧的所有关节点的6D旋转向量并保存,将预测的所有过渡帧的Hips关节点的3D空间坐标增量加上当前帧的Hips关节点的3D空间坐标得到下一个过渡帧的Hips关节点的3D空间坐标并保存,将待补全动作帧数减1;
补全帧判断模块,用于当待补全动作帧数大于0时,设定下一个过渡帧的所有关节点的6D旋转向量为当前帧的所有关节点的6D旋转向量、下一个过渡帧的Hips关节点的3D空间坐标为当前帧的Hips关节点的3D空间坐标,根据当前帧的所有关节点的6D旋转向量计算得到当前帧的所有关节点的旋转矩阵,根据当前帧的Hips关节点的3D空间坐标和当前帧的所有关节点的旋转矩阵计算得到当前帧的所有关节点的3D空间坐标、所有关节点的速度向量、四维布尔向量,返回输入向量生成模块,当待补全动作帧数等于0时,则进入过渡帧汇总模块;
过渡帧汇总模块,用于得到每一个过渡帧的所有关节点的6D旋转向量和Hips关节点的3D空间坐标,将每一个过渡帧的所有关节点的6D旋转向量转换为预设数据格式,即得到所有过渡帧的动作补全数据。
7.根据权利要求6所述的三维虚拟角色动作补全装置,其特征在于,还包括神经网络生成模块,用于生成训练好的动作补全神经网络模型;所述神经网络生成模块包括:
数据集获取单元,用于采集大量人体运动的原始动作数据,并根据预设所有关节点对应父节点列表和预设所有关节点相对于对应父节点的标准骨骼偏移值列表进行数据预处理,得到除第一帧以外每一帧的所有关节点的6D旋转向量、所有关节点的速度向量、四维布尔向量和所有关节点的3D空间坐标作为数据集,将数据集分为训练集和验证集;
神经网络建立单元,用于建立动作补全神经网络模型,设置标准差值为预设标准差值;
神经网络训练单元,用于从训练集中提取预设批次数量个动作数据批次作为动作补全神经网络模型的输入数据,输入动作补全神经网络模型得到动作补全神经网络模型的输出结果,所述每个动作数据批次包括预设组数个动作序列组,每个动作序列组包括过去帧、目标帧和S个过渡帧,其中S是预设采样范围值内的预设组数个均匀采样值;
神经网络优化单元,用于根据动作补全神经网络模型的输入数据和输出结果计算每个动作序列组中系统的总损失项,并根据系统的总损失项对动作补全神经网络模型进行优化,得到训练好的动作补全神经网络模型。
8.一种服务器,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5中任一项所述三维虚拟角色动作补全方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述三维虚拟角色动作补全方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110890185.8A CN113345062B (zh) | 2021-08-04 | 2021-08-04 | 三维虚拟角色动作补全方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110890185.8A CN113345062B (zh) | 2021-08-04 | 2021-08-04 | 三维虚拟角色动作补全方法、装置和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113345062A CN113345062A (zh) | 2021-09-03 |
CN113345062B true CN113345062B (zh) | 2021-11-05 |
Family
ID=77480645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110890185.8A Active CN113345062B (zh) | 2021-08-04 | 2021-08-04 | 三维虚拟角色动作补全方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113345062B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113554736B (zh) * | 2021-09-22 | 2021-12-21 | 成都市谛视科技有限公司 | 骨骼动画顶点矫正方法及模型的学习方法、装置和设备 |
CN116664555B (zh) * | 2023-07-26 | 2024-02-06 | 瀚博半导体(上海)有限公司 | 实时应用场景下的神经网络切片部署方法、系统 |
CN117635897B (zh) * | 2024-01-26 | 2024-05-07 | 腾讯科技(深圳)有限公司 | 三维对象的姿态补全方法、装置、设备、存储介质及产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112700010A (zh) * | 2020-12-30 | 2021-04-23 | 深圳前海微众银行股份有限公司 | 基于联邦学习的特征补全方法、装置、设备及存储介质 |
CN113112577A (zh) * | 2021-04-20 | 2021-07-13 | 网易(杭州)网络有限公司 | 过渡帧预测模型的训练方法以及过渡帧预测方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11004264B2 (en) * | 2017-08-07 | 2021-05-11 | Verizon Patent And Licensing Inc. | Systems and methods for capturing, transferring, and rendering viewpoint-adaptive three-dimensional (3D) personas |
US10474988B2 (en) * | 2017-08-07 | 2019-11-12 | Standard Cognition, Corp. | Predicting inventory events using foreground/background processing |
WO2019212698A1 (en) * | 2018-05-01 | 2019-11-07 | Magic Leap, Inc. | Avatar animation using markov decision process policies |
US10977872B2 (en) * | 2018-10-31 | 2021-04-13 | Sony Interactive Entertainment Inc. | Graphical style modification for video games using machine learning |
US11024041B2 (en) * | 2018-12-10 | 2021-06-01 | Intel Corporation | Depth and motion estimations in machine learning environments |
CN110717927A (zh) * | 2019-10-10 | 2020-01-21 | 桂林电子科技大学 | 基于深度学习和视惯融合的室内机器人运动估计方法 |
CN112749613B (zh) * | 2020-08-27 | 2024-03-26 | 腾讯科技(深圳)有限公司 | 视频数据处理方法、装置、计算机设备及存储介质 |
CN112037312B (zh) * | 2020-11-04 | 2021-02-09 | 成都市谛视科技有限公司 | 实时人体姿态逆向运动学求解方法及装置 |
CN113205148B (zh) * | 2021-05-20 | 2022-10-11 | 山东财经大学 | 一种迭代层间信息融合的医学图像帧插值方法及终端机 |
-
2021
- 2021-08-04 CN CN202110890185.8A patent/CN113345062B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112700010A (zh) * | 2020-12-30 | 2021-04-23 | 深圳前海微众银行股份有限公司 | 基于联邦学习的特征补全方法、装置、设备及存储介质 |
CN113112577A (zh) * | 2021-04-20 | 2021-07-13 | 网易(杭州)网络有限公司 | 过渡帧预测模型的训练方法以及过渡帧预测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113345062A (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113345062B (zh) | 三维虚拟角色动作补全方法、装置和服务器 | |
CN113345061B (zh) | 动作补全模型的训练方法、装置、补全方法、设备和介质 | |
Starke et al. | Neural state machine for character-scene interactions | |
US9892539B2 (en) | Fast rig-based physics simulation | |
US7944449B2 (en) | Methods and apparatus for export of animation data to non-native articulation schemes | |
CN111223168B (zh) | 目标对象控制方法、装置、存储介质和计算机设备 | |
CN108983605B (zh) | 一种基于深度强化学习进行流体导向的刚体控制的方法 | |
Al Borno et al. | Robust Physics‐based Motion Retargeting with Realistic Body Shapes | |
CN115797606A (zh) | 基于深度学习的3d虚拟数字人交互动作生成方法及系统 | |
CN113706670B (zh) | 生成动态三维人体网格模型序列的方法及装置 | |
CN117218300B (zh) | 三维模型的构建方法、三维构建模型的训练方法及装置 | |
CN115147559B (zh) | 基于神经隐式函数的三维人体参数化表示方法及装置 | |
CN111462274A (zh) | 一种基于smpl模型的人体图像合成方法及系统 | |
CN115412102A (zh) | 基于稀疏随机Kaczmarz算法稀疏信号恢复方法、系统、设备和介质 | |
CN114494003A (zh) | 一种联合形状变换和纹理转换的古文字生成方法 | |
CN111882659B (zh) | 一种融合人体脚型规律和可视外壳的高精度人体脚型重建方法 | |
CN116541593B (zh) | 一种基于超图神经网络的课程推荐方法 | |
CN113077383B (zh) | 一种模型训练方法及模型训练装置 | |
CN109711543A (zh) | 一种可重构的深度置信网络实现系统 | |
CN114120245A (zh) | 基于深度神经网络的人群图像分析方法、装置以及设备 | |
Li et al. | Embedded key-frame extraction for CG animation by frame decimation | |
Bal et al. | JMASM 55: MATLAB Algorithms and Source Codes of'cbnet'Function for Univariate Time Series Modeling with Neural Networks (MATLAB) | |
CN112439200B (zh) | 数据处理方法、装置、存储介质及电子设备 | |
Hwang et al. | Modularized Predictive Coding-Based Online Motion Synthesis Combining Environmental Constraints and Motion-Capture Data | |
Palit et al. | A Fusion of Variational Distribution Priors and Saliency Map Replay for Continual 3D Reconstruction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211202 Address after: 610000 No. 04 and 05, 27th floor, building 1, No. 716, middle section of Jiannan Avenue, Chengdu hi tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan Patentee after: Chengdu Tishi infinite Technology Co.,Ltd. Address before: No.04 and No.05, 27th floor, building 1, No.716, middle section of Jiannan Avenue, Chengdu high tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan 610094 Patentee before: Chengdu Tishi Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |