本发明涉及骨骼模型动画,具体为一种基于unity3d引擎生成骨骼系统模型动画的方法。
背景技术:
1、骨骼系统模型动画(skeletonanimation)又称骨架动画,是一种计算机动画技术,将三维模型分为两部分:用于绘制模型的蒙皮,以及用于控制动作的骨架;跟传统逐格动画相异,骨骼动画利用建立好的骨架套用到一张或多张图片使之动作,比起一弛一张一张绘出动作省了很多时间与精力,且能更生动的动作。
2、例如公开号cn109147052b的专利公开了一种基于unity3d引擎的头发模拟制作方法,包括创建发型,进行网格和骨骼的创建,骨骼的创建是通过设置头发中的骨骼控制节点确定骨骼控制位置,并采用拉格朗日差值计算头发运动的差值;初始化网格顶点、纹理坐标贴图、颜色、骨骼、由网格顶点构建的三角形信息,通过三角形组合成面片,在面片上赋以纹理坐标贴图信息,创建网格渲染;通过控制配置参数实现对发型的处理,通过蒙皮网格渲染器,把单簇的头发合并成一个完整的头发,并根据配置参数的刷新更新发型;存储发型的配置参数信息实现对发型的保存,发明还提供一种基于unity3d引擎的头发模拟制作系统,实现对人体头发的自定义创建与修改,灵活且可移植性高。
3、虽然上述方案具有如上的优势,然而目前的骨骼系统模型动画生成方式中,通常依赖于手动绘画关键帧动画、以较为简单的插值算法和逆运动学ik解算方法生成骨骼系统模型动画,易导致肩关节运动过渡不自然,包括:举手动作:从自然下垂位置到完全举起时,肩关节的旋转和移动不流畅,过渡显得生硬;挥动动作:如挥手或甩臂动作中,肩关节与上臂的协调不佳,导致运动轨迹不连贯;其他复杂运动组合:如抬臂、转体、伸展等动作的连续组合中,肩关节的过渡显得僵硬,缺乏自然的协调性;因此亟需一种基于unity3d引擎生成骨骼系统模型动画的方法来解决此类问题。
技术实现思路
1、针对现有技术的不足,本发明提供了一种基于unity3d引擎生成骨骼系统模型动画的方法,解决现有技术中存在传统骨骼系统模型动画生成方式中,通常依赖于手动绘画关键帧动画、较为简单的插值算法和逆运动学ik解算方法生成骨骼系统模型动画,易导致肩关节运动过渡不自然的问题。
2、为实现以上目的,本发明通过以下技术方案予以实现:
3、本发明提供了一种基于unity3d引擎生成骨骼系统模型动画的方法,包括:
4、步骤1.数据准备与预处理,清理、过滤并增强现有的动作捕捉数据,使用gan生成额外数据,丰富训练数据集;
5、步骤2.模型训练与集成,使用lstm对增强后的数据进行插值训练,生成插值模型,并将其集成到unity3d中;步骤2中采用长短期记忆网络lstm对预处理后的运动数据进行插值训练,生成模型;
6、步骤3.动画混合与ik设置,在unity3d中设置animatorcontroller,利用插值模型进行动态权重调整和多层次动画控制;结合物理引擎进行实时物理仿真和应力分析,优化ik解算;
7、步骤4.实时调整,采用unity3d中的调整工具和基于手势的控制系统进行动画预览与编辑。
8、本发明进一步地设置为,步骤1中进行动作捕捉数据优化,使用高级信号处理技术(低通滤波器去噪、时间扭曲与插值补帧、训练生成对抗网络(gan)),对现有动作捕捉数据进行清理和过滤,去除噪声和异常数据;
9、采用时间扭曲、插值补帧生成多样化的肩关节运动数据;
10、训练生成对抗网络gan生成高质量的肩关节运动数据丰富数据集;
11、本发明进一步地设置为,数据准备与预处理步骤包括:
12、设数据为时间序列形式且每一帧包含肩关节的位置信息(x,y,z)和旋转信息(α,β,γ);
13、使用低通滤波器去除高频噪声:y(t)=αx(t)+(1-α)y(t-1),其中,y(t)为滤波后的数据,x(t)为原始数据,α为滤波系数(0<α<1);
14、使用zscore统计法检测和去除异常数据:其中,z为zscore,x为数据点,μ为数据均值,σ为标准差,当|z|>3时将数据点视为异常数据;
15、然后对时间序列数据进行扭曲操作,生成不同速度的运动数据:x'(t)=x(γt),其中x(t)为原始数据,γ为时间扭曲系数,γ>1视为加速,γ<1视为减速;
16、使用插值方法在时间序列数据中添加额外帧,其中xi为插值后的数据点,x0和x1表示相邻的两个原始数据点,n为插值点的数量,i为插值点的索引;
17、利用生成对抗网络gan生成高质量的肩关节运动数据;
18、本发明进一步地设置为,gan模型构建步骤:
19、生成器模型:g(z)=σ(wgz+bg),其中,g(z)表示生成器输出,z为随机噪声向量,wg和bg为生成器的权重和偏置,σ为sigmoid激活函数;
20、判别器模型:d(x)=σ(wdx+bd),其中,d(x)为判别器输出,x为输入数据,wd和bd为判别器的权重和偏置,σ为sigmoid激活函数;
21、采用交替优化法训练生成器和判别器,生成器损失函数:
22、判别器损失函数:
23、交替优化步骤:
24、更新判别器参数(wd,bd):
25、更新生成器参数(wg,bg):其中,η为学习率,g(z)为生成器生成的样本,d(g(z))表示判别器对生成样本的输出概率,ε表示期望值,z表示随机噪声分布pz(z)中采样的噪声向量,x表示从真实数据分布pdata(x)中采集的真实样本,表示判别器ld对其参数(wd,bd)的梯度,表示生成器损失函数lg对其参数(wg,bg)的梯度;通过步骤1对动作捕捉数据进行优化增强;
26、本发明进一步地设置为,步骤3利用训练好的深度学习模型动态调整unity3d中的animationcurve参数,使得肩关节运动的插值曲线更加平滑自然;
27、动画混合与层次化控制方式为:
28、在unity3d的animatorcontroller中,使用插值生成模型调整动画混合器的权重,进行动态权重调整,根据肩关节的当前状态自动优化动画过渡;
29、同时在不同层级上分别控制肩关节、上臂和手臂的运动,进行多层次动作控制,从而使得各部分的运动更加协调自然;
30、本发明进一步地设置为,动画混合与ik设置阶段,利用训练好的深度学习模型lstm插值模型,动态调整unity3d中的animationcurve参数,并在animatorcontroller中进行动画混合和多层次控制:
31、1)动态调整animationcurve参数:
32、选用tensorflowsharp和onnx runtime插件将lstm模型加载到unity3d中;
33、使用lstm模型对肩关节的运动数据进行实时预测,生成平滑插值曲线;
34、2)创建、更新unity3d中的animationcurve对象,使其参数根据lstm模型的输出进行动态调整;
35、假设当前动画帧的肩关节位置和旋转为(xt,yt,zt,αt,βt,γt);
36、lstm模型预测:其中表示lstm模型预测的下一帧肩关节的位置和旋转;
37、3)根据预测结果更新animationcurve的关键帧;
38、本发明进一步地设置为,动画混合与ik设置阶段还包括动画混合与多层次控制,具体的:
39、在unity3d中创建animatorcontroller,并添加多层次的动画状态机;
40、使用插值生成模型对animatorcontroller中的动画混合器blend tree的权重进行动态调整;
41、通过动画混合与ik设置,在unity3d中利用训练好的深度学习模型,解决肩关节运动过渡不自然的问题;
42、本发明进一步地设置为,动画混合与ik设置步骤中将动力学模拟与物理引擎结合,具体的:
43、结合unity3d的物理引擎,建立肩关节的实时物理仿真模型,实时物理仿真模型利用前一步骤2中的数据和插值算法结果,使得肩关节运动符合物理规律;
44、在实时物理仿真中进行动态应力和应变分析,根据肩关节在不同运动状态下的受力情况,动态调整运动参数,从而生成更加逼真的动画过渡;
45、本发明进一步地设置为,步骤3中进行使用unity3d内置的ik系统,结合深度学习插值模型和物理仿真结果;
46、此处采用自适应ik解算算法,根据肩关节的当前状态动态调整ik解算参数,进一步优化运动过渡的流畅性和自然度;
47、本发明进一步地设置为,实时调整步骤中,在unity3d中进行实时的动画预览与编辑,用户在运行时动态调整肩关节的运动轨迹,实时预览和优化动画效果;
48、此处利用之前步骤生成的深度学习模型和物理仿真结果。
49、与现有技术相比,本发明具有以下有益效果:
50、本发明,通过高级信号处理技术和生成对抗网络gan,有效清理和过滤数据中的噪声和异常数据,并生成多样化的运动数据,丰富训练数据集,使得动画更为真实和平滑;同时采用长短期记忆网络lstm进行插值训练,生成插值模型;lstm能够更好地捕捉时间序列中的复杂模式和细微变化,生成更加自然的运动过渡,并具备更强的动态适应性;
51、本发明,针对静态动画混合和权重调整不灵活问题进行优化,利用训练好的lstm模型动态调整unity3d中的animationcurve参数,使肩关节运动的插值曲线更加平滑自然,通过动态权重调整和多层次动画控制,使各部分的运动更加协调自然;结合物理引擎进行实时物理仿真和应力分析,使骨骼运动符合物理规律,生成更逼真的动画过渡;
52、解决了现有技术中存在传统骨骼系统模型动画生成方式中,通常依赖于手动绘画关键帧动画、较为简单的插值算法和逆运动学ik解算方法生成骨骼系统模型动画,易导致肩关节运动过渡不自然的问题。
1.一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,包括:
2.根据权利要求1所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,步骤1中进行动作捕捉数据优化,使用高级信号处理技术(低通滤波器去噪、时间扭曲与插值补帧、训练生成对抗网络(gan)),对现有动作捕捉数据进行清理和过滤,去除噪声和异常数据;
3.根据权利要求2所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,数据准备与预处理步骤包括:
4.根据权利要求3所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,gan模型构建步骤:
5.根据权利要求4所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,步骤3利用训练好的深度学习模型动态调整unity3d中的animationcurve参数;
6.根据权利要求5所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,动画混合与ik设置阶段,利用训练好的深度学习模型lstm插值模型,动态调整unity3d中的animationcurve参数,并在animatorcontroller中进行动画混合和多层次控制:
7.根据权利要求6所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,动画混合与ik设置阶段还包括动画混合与多层次控制,具体的:
8.根据权利要求7所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,动画混合与ik设置步骤中将动力学模拟与物理引擎结合,具体的:
9.根据权利要求8所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,步骤3中进行使用unity3d内置的ik系统,结合深度学习插值模型和物理仿真结果;
10.根据权利要求9所述的一种基于unity3d引擎生成骨骼系统模型动画的方法,其特征在于,实时调整步骤中,在unity3d中进行实时的动画预览与编辑,用户在运行时动态调整肩关节的运动轨迹,实时预览和优化动画效果;
