本公开涉及仿真领域,尤其涉及一种布料仿真方法、装置、电子设备及存储介质。
背景技术:
1、在基于有限元分析的布料仿真中,有限元网格的分辨率对布料仿真的结果影响极大,低分辨率的有限元网格无法准确模拟出细粒度的布料褶皱效果。
2、相关技术中,虽然可以通过高阶有限元方法、非线性压缩变形法或应变约束法(strain limiting)等方式,对低分辨率有限元网格的仿真结果进行一定程度的修正。然而,这些方式不仅会大幅提升计算量,且在修正结果上仍与真实情况之间存在较大的误差。
技术实现思路
1、为克服相关技术中存在的问题,本公开提供了一种布料仿真方法、装置、电子设备及存储介质。
2、根据本公开实施例的第一方面,提供一种布料仿真方法,包括:
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、本公开实施例提供的方案,可以构建布料的有限元网格。其中,有限元网格包括多个节点以及用于连接多个节点的多条静态边。基于有限元网格对布料的运动状态进行仿真,可以得到布料的初始仿真结果。其中,初始仿真结果包括多个节点的运动位置和运动速度。针对多个节点中的每两个节点,若该两个节点之间在初始仿真结果中的距离小于或等于预设距离长度,且该两个节点之间不存在静态边,则在该两个节点之间建立动态边。通过动态边在相互影响且未通过静态边直接连接的两个节点之间建立联系,可以使图神经网络模型捕获到各个节点在布料运动过程中发生的无规律的碰撞。通过将运动位置、运动速度、多个节点在有限元网格中的静态位置以及多个节点的连接关系,输入预先训练的图神经网络模型,可以得到初始仿真结果的结果修正量。其中,多个节点的连接关系包括基于静态边的连接关系和基于动态边的连接关系。基于结果修正量修正初始仿真结果,即可得到布料模型的最终仿真结果。本公开实施例提供的方案,可以利用图神经网络修正有限元仿真结果中的误差,从而能够以较小的计算代价,大幅提升有限元仿真结果的精度。
1.一种布料仿真方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述图神经网络模型包括编码器、特征处理单元以及解码器;
3.根据权利要求2所述的方法,其特征在于,所述编码器包括边编码函数以及节点编码函数;
4.根据权利要求3所述的方法,其特征在于,所述边编码函数用于将所述多条网格边中的每条网格边在所述有限元网格中的长度和方向,以及该网格边在所述初始仿真结果中的长度和方向,编码为该网格边的边特征;
5.根据权利要求2所述的方法,其特征在于,所述特征处理单元包括交替设置的至少一个边特征更新函数和至少一个节点特征更新函数,所述边特征更新函数用于基于节点特征更新边特征,所述节点特征更新函数用于基于边特征更新节点特征;
6.根据权利要求5所述的方法,其特征在于,所述边特征更新函数具体用于:
7.根据权利要求5所述的方法,其特征在于,所述节点特征更新函数具体用于:
8.根据权利要求2所述的方法,其特征在于,所述解码器包括位置解码函数和速度解码函数;
9.根据权利要求2所述的方法,其特征在于,所述编码器、所述特征处理单元以及所述解码器均为预先训练的多层感知机。
10.一种布料仿真装置,其特征在于,包括:
11.一种电子设备,其特征在于,包括:
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9任一项所述的方法。
