布料仿真方法、装置、设备及计算机可读存储介质与流程

文档序号:30935098发布日期:2022-07-30 01:02阅读:95来源:国知局
布料仿真方法、装置、设备及计算机可读存储介质与流程

1.本技术涉及布料仿真技术领域,尤其是涉及一种布料仿真方法、装置、设备及计算机可读存储介质。


背景技术:

2.布料仿真技术是输入特定材质、特定几何形状、以及特定场景约束,利用可变性材质物理仿真技术计算布料的物理动画过程。布料仿真技术中,布料往往被表达为三角形网格,用数千、数十万乃至更多的三角形面片来近似布料曲面。三角形网格的数量越多越能精细的表达布料的材质细节,如褶皱、平滑等特性。但是三角形网格的数量越多需要的计算量越大,导致布料仿真的数据处理效率降低。


技术实现要素:

3.本技术实施例提供一种布料仿真方法、装置、设备及计算机可读存储介质,解决了现有的布料仿真技术中数据处理效率较低的问题。
4.为了解决上述问题,本技术是这样实现的:
5.第一方面,本技术的实施例提供了一种布料仿真方法,包括:
6.从目标布料图像对应的n层网格金字塔中的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中的第一层网格的顶点位置,对所述相邻两层网格中的第二层网格进行插值计算,获得所述第二层网格的顶点插值位置;
7.对所述第二层网格的顶点插值位置进行轻量级优化,获得所述第二层网格的顶点位置,所述第一层网格的网格密度小于所述第二层网格的网格密度;
8.将所述网格金字塔中的第1层网格的顶点位置作为所述目标布料图像的仿真结果;
9.其中,n大于或者等于2。
10.可选地,所述方法还包括:
11.对所述网格金字塔中的第n层网格进行布料仿真解算,获得所述第n层网格的顶点位置;
12.其中,所述第n层网格的网格密度最小,从所述第n层网格到所述第1层网格,网格密度逐渐增大。
13.可选地,对所述网格金字塔中的第n层网格进行布料仿真解算,获得所述第n层网格的顶点位置,包括:
14.利用所述第n层网格的弹性材质方程进行局部线性化求解,获得相邻两个时刻的顶点位置偏差;
15.根据所述顶点位置偏差和所述第n层网格在上一时刻的顶点位置,计算所述第n层网格在当前时刻的网格顶点位置。
16.可选地,所述对所述第二层网格的顶点插值位置进行轻量级优化,获得所述第二
层网格的顶点位置,包括:
17.对所述第二层网格的顶点插值位置进行初始化,获得所述第二层网格的每个顶点的第一位置;
18.对所述第一位置进行拉伸限制优化和弯曲限制优化,获得所述第二层网格的每个顶点的第二位置;
19.对所述第二位置进行插值限制优化,获得所述第二层网格的每个顶点的第三位置;
20.若所述第三位置与所述第一位置满足预设条件,则确定所述第三位置为所述第二层网格的顶点位置。
21.可选地,所述预设条件包括:所述第一位置与所述第三位置的差值的范数小于第一数值。
22.可选地,所述方法还包括:
23.构建所述目标布料图像的网格金字塔并记录网格顶点的拓扑相关集合;
24.根据所述拓扑相关集合,建立所述网格金字塔中相邻两层网格之间的插值关系。
25.可选地,所述构建所述目标布料图像的网格金字塔,包括:
26.根据所述网格金字塔中第n层网格的顶点以及顶点之间的连接关系,通过预定算法进行迭代优化,获得第n+1层网格的顶点位置以及顶点之间的连接关系,并根据所述拓扑相关集合,优化所述第n+1层网格的测地距离投影误差;
27.在所述n+1等于n时,获得所述目标布料的包括n层网格的网格金字塔;
28.其中,所述第n+1层网格的网格密度小于所述第n层网格的网格密度,n=1、2、
……
n。
29.可选地,所述根据所述网格金字塔中第n层网格的顶点以及顶点之间的连接关系,通过预定算法进行迭代优化,获得第n+1层网格的顶点位置以及顶点之间的连接关系,包括:
30.将所述第n层网格的顶点以及顶点之间的连接关系,作为所述第n+1层网格的初始顶点以及初始连接关系,获得初始的第n+1层网格;
31.对所述初始的第n+1层网格中的所有边进行短边合并处理,获得第一次更新的第n+1层网格;
32.对所述第一次更新的第n+1层网格进行正三角形优化,获得第二次更新的第n+1层网格;
33.对所述第二次更新的第n+1层网格进行拉普拉斯平滑处理,获得所述第n+1层网格的顶点位置以及顶点之间的连接关系。
34.可选地,所述根据所述拓扑相关集合,优化所述第n+1层网格的测地距离投影误差,包括:
35.根据所述第n+1层网格的顶点对应的第一目标拓扑相关集合,计算所述第n+1层网格的顶点到第n层网格的最小测地距离;其中,所述第一目标拓扑相关集合包括与所述第n+1层网格的顶点关联的至少一个第一目标顶点,所述第一目标顶点为第n层网格上的顶点;
36.将所述第n+1层网格的顶点,投影到所述第n层网格上所述最小测地距离对应的投影点。
37.可选地,所述根据所述第n+1层网格的顶点对应的第一目标拓扑相关集合,计算所述第n+1层网格的顶点到第n层网格的最小测地距离,包括:
38.根据所述第一目标拓扑相关集合,确定所述第n层网格中包含所述目标顶点的至少一个三角形面片;
39.将所述第n+1层网格的顶点到所述三角形面片的最小距离,确定为所述第n+1层网格的顶点到第n层网格的最小测地距离。
40.可选地,所述根据所述拓扑相关集合,建立所述网格金字塔中相邻两层网格之间的插值关系,包括:
41.根据所述拓扑相关集合,从所述网格金字塔的第n+1层网格中,确定第n层网络的顶点相关的三角形面片集合,n=1、2、
……
n;
42.从所述三角形面片集合中确定与所述第n层网络的顶点距离最小的目标三角形面片;
43.利用所述目标三角形面片的三个顶点插值表达所述第n层网络的顶点。
44.可选地,根据所述拓扑相关集合,从所述网格金字塔的第n+1层网格中,确定第n层网络的顶点相关的三角形面片集合,包括:
45.若所述第n层网络的顶点,属于所述第n+1层网格中的第二目标顶点对应的第二目标拓扑相关集合,则包含所述第二目标顶点的三角形面片属于所述三角形面片集合。
46.第二方面,本技术的实施例提供了一种布料仿真装置,包括:
47.第一处理模块,用于从目标布料图像对应的n层网格金字塔中的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中的第一层网格的顶点位置,对所述相邻两层网格中的第二层网格进行插值计算,获得所述第二层网格的顶点插值位置;
48.第二处理模块,用于对所述第二层网格的顶点插值位置进行轻量级优化,获得所述第二层网格的顶点位置,所述第一层网格的网格密度小于所述第二层网格的网格密度;
49.第三处理模块,用于将所述网格金字塔中的第1层网格的顶点位置作为所述目标布料图像的仿真结果;
50.其中,n大于或者等于2。
51.第三方面,本技术的实施例提供了一种布料仿真设备,包括:收发机、处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的布料仿真方法的步骤。
52.第四方面,本技术的实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的布料仿真方法的步骤。
53.本技术的实施例,从网格金字塔的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中较稀疏的一层网格的顶点,向所述相邻两层网格中较密集的一层网格插值,获得较密集的一层网格的顶点的插值表达,并进行轻量级优化,获得较密集的一层网格的顶点位置,利用该方法逐层计算,直至获得网格金字塔的第1层的仿真结果,可以有效提升布料仿真速度。此外,该实施例中,网格金字塔的相邻两层之间具有保证拓扑连续性的插值关系,在进行插值计算时,基于该插值关系进行插值表达,能够保证插值
的拓扑连续性。
附图说明
54.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
55.图1表示本技术实施例的布料仿真方法的流程示意图;
56.图2表示本技术实施例的网格示意图;
57.图3表示本技术实施例应用于服饰仿真的示意图;
58.图4表示本技术实施例的布料仿真装置的结构示意图;
59.图5表示本技术实施例的布料仿真设备的结构示意图。
具体实施方式
60.为使本技术要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本技术的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本技术的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
61.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
62.在本技术的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。另外,本文中术语“系统”和“网络”在本文中常可互换使用。
63.如图1所示,本技术的实施例提供了一种布料仿真方法,具体包括以下步骤:
64.步骤101:从目标布料图像对应的n层网格金字塔中的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中的第一层网格的顶点位置,对所述相邻两层网格中的第二层网格进行插值计算,获得所述第二层网格的顶点插值位置。
65.步骤102:对所述第二层网格的顶点插值位置进行轻量级优化,获得所述第二层网格的顶点位置,所述第一层网格的网格密度小于所述第二层网格的网格密度;
66.步骤103:将所述网格金字塔中的第1层网格的顶点位置作为所述目标布料图像的仿真结果;
67.其中,n大于或者等于2。
68.该实施例中,布料仿真技术是根据输入的布料材质、几何形状、应用场景等参数仿真获得该输入布料的图像,并计算获得该布料图像的物理动画过程。在仿真技术中,布料被表达为三角形网格,通过多个三角形面片来表示布料的曲面。
69.在对目标布料进行仿真时,根据输入的布料面片数构建目标布料对应的三角形网
格金字塔,该网格金字塔是经过优化处理后的高质量的网格金字塔,例如:该网格金字塔中的每层网格的每个三角形尽可能接近正三角形,并且每个三角形的面积尽可能一致。所述网格金字塔中,从下到上的每层网格的网格密度依次减小,即最底层网格的密度最大,最顶层网格的密度最小。
70.所述目标布料图像对应的网格金字塔包括n层,n大于或者等于2,在进行布料的仿真解算时,从该网格金字塔中的第n-1层网格开始,逐层利用插值的方式计算顶点位置,直至获得第1层网格的顶点位置,输出仿真结果。具体地,所述网格金字塔中相邻的两层网格之间具有保证拓扑连续性的插值关系,在利用插值的方式计算顶点位置时,利用相邻两层网格中,网格密度较小的一层网格的顶点,向网格密度较大的一层网格进行插值,获得网格密度较大的一层网格的顶点的插值表达,对于插值表达进行计算并进行轻量级优化,可以获得该网格密度较大的一层网格的顶点位置,利用该方式逐层计算,直至获得所述网格金字塔的最密集一层的顶点位置,获得目标布料图像的仿真结果。
71.需要说明的是,在进行布料的仿真解算时,从网格金字塔中的第n-1层网格开始,逐层利用插值的方式计算顶点位置时,所述第n-1层网格的顶点位置是由第n层网格的顶点位置插值表达获得的,所述第n层网格是所述网格金字塔的最稀疏的一层,该第n层网格的顶点位置是通过布料仿真解算获得的。
72.例如:所述n为4,即所述网格金字塔共4层,从下到上的顺序依次为:第1层网格、第2层网格、第3层网格、第4层网格,所述第4层网格为最稀疏的一层网格,所述第1层网格为最密集的一层网格,所述第4层网格的顶点位置可以通过布料仿真解算获得。从第3层网格开始,利用第4层网格的顶点位置插值获得所述第3层网格的顶点位置,利用第3层网格的顶点位置插值获得第2层网格的顶点位置,利用第2层网格的顶点位置插值获得第1层网格的顶点位置,获得布料仿真结果。
73.本技术实施例中,从网格金字塔的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中较稀疏的一层网格的顶点,向所述相邻两层网格中较密集的一层网格插值,获得较密集的一层网格的顶点的插值表达,并进行轻量级优化,获得较密集的一层网格的顶点位置,利用该方法逐层计算,直至获得网格金字塔的第1层的仿真结果,可以有效提升布料仿真速度。此外,该实施例中,网格金字塔的相邻两层之间具有保证拓扑连续性的插值关系,在进行插值计算时,基于该插值关系进行插值表达,能够保证插值的拓扑连续性。
74.可选地,所述方法还包括:对所述网格金字塔中的第n层网格进行布料仿真解算,获得所述第n层网格的顶点位置;其中,所述第n层网格的网格密度最小,从所述第n层网格到所述第1层网格,网格密度逐渐增大。
75.该实施例中,在所述网格金字塔中,对于网格密度最稀疏的第n层网格,采用布料仿真解算的方式获得网格顶点的位置。在计算第n-1层网格的顶点时,使用所述第n层网格的顶点位置向第n-1层网格插值,获得所述第n-1层网格的顶点的插值位置,通过轻量级优化获得第n-1层网格的顶点位置,并利用该插值的方式逐层计算,直至获得第1层网格的顶点位置。
76.可选地,对所述网格金字塔中的第n层网格进行布料仿真解算,获得所述第n层网格的顶点位置,包括:
77.利用所述第n层网格的弹性材质方程进行局部线性化求解,获得相邻两个时刻的顶点位置偏差;根据所述顶点位置偏差和所述第n层网格在上一时刻的顶点位置,计算所述第n层网格在当前时刻的网格顶点位置。
78.该实施例中,所述第n层网格的弹性材质方程如下:
[0079][0080]
其中,表示在布料仿真的当前时刻t,所述第n层网格上所有网格的顶点位置;在布料仿真的上一时刻t-1,所述第n层网格上所有网格的顶点位置;h表示时间步长;表示在布料仿真的上一时刻t-1,所述第n层网格的网格顶点速度;m表示仿真中的标准的质量矩阵;w(pn)是布料仿真的常用量,表达第n层网格顶点间的内力。
[0081]
对上述弹性材质方程可以使用局部线性化的方式来求解,构造局部线性化微分方程:
[0082][0083]
上述局部线性化微分方程可以使用共轭梯度法高效求解得到相邻两个时刻的顶点位置偏差δp,然后最终得到第n层进行精确的布料仿真解算的结果:
[0084][0085]
在该实施例中,对所述网格金字塔中的网格最稀疏的一层(即所述第n层网格)进行精确的布料仿真解算,获得第n层网格的顶点位置,利用该第n层网格的顶点位置,向上一层(即所述第n-1层)网格进行插值,可以获得第n-1层网格的顶点插值位置。具体地,该实施例中可以利用所述网格金字塔中保证拓扑连续性的差值关系,对所述对第n-1层每个顶点分别进行计算顶点插值位置。本步骤可以有效根据较稀疏层第n层网格的顶点位置,插值得到较密集层第n-1层网格的顶点插值位置。本步骤的顶点插值位置可以有效继承底n层网格结果的仿真物理特性如布料拉伸性质、弯曲性质、硬度性质等。
[0086]
在获得所述n+1层网格的顶点插值位置后,通过迭代多次基于位置的动态仿真(position-based dynamics,pbd),对所述第n-1层网格的顶点插值位置进行轻量级优化,来优化第n-1层的仿真细节,获得所述第n-1层网格的顶点位置。可选地,所述对所述第二层网格的顶点插值位置进行轻量级优化,获得所述第二层网格的顶点位置,包括:
[0087]
步骤1:对所述第二层网格的顶点插值位置进行初始化,获得所述第二层网格的每个顶点的第一位置。
[0088]
该实施例中,所述初始化可以是初始化所述第二层网格的顶点插值位置为所述顶点位置,假设所述第二层网格表示为则为第二层网格的顶点插值位置,λ

0.5。可选地,保存所述第二层网格优化前的位置为:
[0089]
步骤2:对所述第一位置进行拉伸限制优化和弯曲限制优化,获得所述第二层网格
的每个顶点的第二位置。
[0090]
该实施例中,通过拉伸限制优化对所述第二层网格的每个顶点的位置进行更新。所述拉伸限制优化的更新公式为:
[0091][0092]
其中,表示网格的顶点i在当前时刻t的位置,中的上标0表示网格仿真开始时的初始位置;j表示的一环邻域顶点,j遍历网格顶点的一环邻域顶点;li是一环邻域顶点的总数;该步骤目的是期望网格的局部边长不会偏离输入边长,从而保持布料的拉伸性质同时增加仿真细节。
[0093]
该实施例中,通过弯曲限制优化对所述第二层网格的每个顶点的位置进行更新。所述弯曲限制优化的更新公式为:
[0094][0095]
所述弯曲限制优化的更新公式与所述拉伸限制优化的更新公式一致,区别为:在所述弯曲限制优化的更新公式中,j遍历网格顶点在弯曲图上的一环邻域顶点;l
i*
是相应的一环邻域顶点的总数。其中,所述弯曲图按如下定义:若两个三角形abc、abd是原网格的两个相邻三角形(共享边ab),则把cd添加为弯曲图中的一条边。弯曲图的边长可以有效表达原网格的弯曲性质同时增加仿真细节。
[0096]
步骤3:对所述第二位置进行插值限制优化,获得所述第二层网格的每个顶点的第三位置。
[0097]
该实施例中,还可以对所述第二层网格的顶点位置进行插值限制优化更新所述第二层网格的顶点位置。所述插值限制优化的更新公式为:
[0098][0099]
其中,r=4毫米,该实施例使插值限制优化后的网格位置不能偏离网格插值位置太远。
[0100]
步骤4:若所述第三位置与所述第一位置满足预设条件,则确定所述第三位置为所述第二层网格的顶点位置。可选地,所述预设条件包括:所述第一位置与所述第三位置的差值的范数小于第一数值。
[0101]
该实施例中,经过上述拉伸限制优化、弯曲限制优化以及插值限制优化后获得的所述第二层网格的顶点位置与优化前记录的第二层网格优化前的位置p
*
满足如下条
件:则结束,输出第二层网格的顶点位置若不满足上述预设条件,则设置λ

0.99λ,重新执行所述步骤1。
[0102]
本技术的实施例中的所述第二层网格为相邻两层网格中网格密度较大的一层网格,利用上述插值方法以及轻量级优化的方法逐层获得所述网格金字塔中的各层网格的顶点位置,逐层推进,直至输出所述网格金字塔的第1层网格的仿真结果。例如:所述相邻两层网格为所述网格金字塔的第2层网格和第3层网格,所述第3层网格的网格密度小于所述第2层网格的网格密度,则所述第3层网格为所述第一层网格,所述第2层网格为所述第二层网格;在利用第3层网格的顶点插值获得所述第2层网格的顶点插值位置后,对所述顶点插值位置进行轻量级优化,可以获得所述第2层网格的顶点位置。所述第2层网格和所述网格金字塔的第1层网格也为相邻的两层网格,利用同样的方法,利用所述第2层网格的顶点位置可以获得所述第1层网格的顶点位置,所述第1层网格即为所述网格金字塔最底层的网格,则获得所述第1层网格的顶点位置即为获得最终的仿真结果。
[0103]
作为一个可选实施例,进行所述布料仿真求解时使用的所述目标布料图像对应的网格金字塔可以是预处理的,即可以预先针对不同的布料建立相应的网格金字塔并存储,可以供后续的布料仿真持续使用。
[0104]
可选地,所述方法还包括:
[0105]
步骤a:构建所述目标布料图像的网格金字塔并记录网格顶点的拓扑相关集合。
[0106]
步骤b:根据所述拓扑相关集合,建立所述网格金字塔中相邻两层网格之间的插值关系。
[0107]
可选地,所述构建所述目标布料图像的网格金字塔,包括:根据所述网格金字塔中第n层网格的顶点以及顶点之间的连接关系,通过预定算法进行迭代优化,获得第n+1层网格的顶点位置以及顶点之间的连接关系,并根据所述拓扑相关集合,优化所述第n+1层网格的测地距离投影误差;在所述n+1等于n时,获得所述目标布料的包括n层网格的网格金字塔;其中,所述第n+1层网格的网格密度小于所述第n层网格的网格密度,n=1、2、
……
n。
[0108]
该实施例中,在构建所述网格金字塔时,利用网格密度较大的一层网格朝向网格密度较小的一层逐层构建,例如:所述n为1时,即利用第1层网格的顶点以及顶点之间的连接关系进行多次迭代优化,获得第2层网格;利用所述第2层网格的顶点以及顶点之间的连接关系进行多次迭代优化,获得第3层网格,直至获得最稀疏的一层网格。其中,在每次迭代优化后,顶点数量会逐渐减少,因此形成的网格金字塔从第1层向上网格密度逐渐减小。在获得第n+1层网格的顶点以及顶点的连接关系时,同时记录所述第n+1层网格的每个顶点的拓扑相关集合,该拓扑相关集合中包括:第n层网格中,与所述第n+1层网格的某个顶点相关的至少一个顶点。
[0109]
可选地,针对所述第n+1层网格的顶点位置以及顶点之间的连接关系以及优化所述第n+1层网格的测地距离投影误差的计算过程,可以设置迭代次数为m,即通过预定算法进行迭代优化,获得第n+1层网格的顶点位置以及顶点之间的连接关系,并根据所述拓扑相关集合,优化所述第n+1层网格的测地距离投影误差的过程迭代执行m次。
[0110]
可选地,所述根据所述网格金字塔中第n层网格的顶点以及顶点之间的连接关系,通过预定算法进行迭代优化,获得第n+1层网格的顶点位置以及顶点之间的连接关系,包
括:
[0111]
1)将所述第n层网格的顶点以及顶点之间的连接关系,作为所述第n+1层网格的初始顶点以及初始连接关系,获得初始的第n+1层网格;
[0112]
2)对所述初始的第n+1层网格中的所有边进行短边合并处理,获得第一次更新的第n+1层网格;
[0113]
3)对所述第一次更新的第n+1层网格进行正三角形优化,获得第二次更新的第n+1层网格;
[0114]
4)对所述第二次更新的第n+1层网格进行拉普拉斯平滑处理,获得所述第n+1层网格的顶点位置以及顶点之间的连接关系。
[0115]
在进行网格的迭代优化时,首先初始化所述第n+1层网格为所述第n层网格,即在初始设置阶段,将所述第n+1层网格中的顶点位置以及连接关系设置为与所述第n层网格相同。可选地,同时记录所述第n+1层网格中各个顶点p
n+1,i
的拓扑相关集合g
n+1,i
={p
n,k
},该拓扑相关集合的含义可以表示为:第n+1层网格中顶点p
n+1,i
对应的拓扑相关集合为g
n+1,i
,g
n+1,i
中包含的第n层网格的顶点p
n,k
与所述顶点p
n+1,i
相关。在初始化阶段,对于所述第n+1层网格的每个顶点,g
n+1,i
为仅包含自身的集合(此时第n+1层网格与第n层网格的顶点以及顶点连接关系相同)。
[0116]
对所述初始化的第n+1层网格所有的边按照边长由短到长排序,并对于所有边长小于预定阈值的边进行合并操作,将两个顶点合并为同一个顶点;对相应的拓扑相关集合也同样进行集合的并操作。所述预定阈值的选取方式是使得当前迭代可以减少m分之一的待缩减顶点数。在短边合并处理后,获得所述第n+1层网格第一次更新的顶点以及顶点之间的连接关系。
[0117]
对于短边合并处理后的所述第n+1层网格进行正三角形优化处理。具体地,遍历所述第n+1层网格所有边,对于同一条边ab的两个三角形abc和abd,尝试删除边ab同时增加边cd,若三角形acd、bcd比原来的三角形abc、abd更接近正三角形,则保留此删除增加操作;否则不做改动。
[0118]
对所述第n+1层网格进行正三角形优化后获得第二次更新的顶点以及顶点之间的连接关系。对于正三角形优化后的所述第n+1层网格进行拉普拉斯平滑处理。具体地,遍历所述第n+1层网格的所有顶点,对于每个顶点,使用该顶点一环邻域顶点的位置平均值作为目标位置,将该顶点朝向所述目标位置,移动m分之一的小步长。
[0119]
在对所述第n+1层网格进行初始化、短边合并处理、正三角形优化处理以及拉普拉斯平滑处理后,优化所述第n+1层网格的测地距离投影误差。
[0120]
可选地,所述根据所述拓扑相关集合,优化所述第n+1层网格测地距离投影误差,包括:
[0121]
根据所述第n+1层网格的顶点对应的第一目标拓扑相关集合,计算所述第n+1层网格的顶点到第n层网格的最小测地距离;其中,所述第一目标拓扑相关集合包括与所述第n+1层网格的顶点关联的至少一个第一目标顶点,所述第一目标顶点为第n层网格上的顶点;将所述第n+1层网格的顶点,投影到所述第n层网格上所述最小测地距离对应的投影点。
[0122]
可选地,所述根据所述第n+1层网格的顶点对应的第一目标拓扑相关集合,计算所述第n+1层网格的顶点到第n层网格的最小测地距离,包括:
[0123]
根据所述第一目标拓扑相关集合,确定所述第n层网格中包含所述目标顶点的至少一个三角形面片;将所述第n+1层网格的顶点到所述三角形面片的最小距离,确定为所述第n+1层网格的顶点到第n层网格的最小测地距离。
[0124]
该实施例中,遍历所述第n+1层网格的所有顶点,对于每个顶点i,计算该顶点到所述第n层网格的测地距离,并投影到测地距离最近的点。由于所述第n+1层网格与所述第n层网格是两个互不连通的网格,但是第一目标拓扑相关集合g
n+1,i
记录了两层网格间的拓扑对应关系,所以只需遍历所述第n层网格上所有包含g
n+1,i
中的目标顶点的三角形面片,分别计算点到面的距离,最小距离即可定义为所求的最小测地距离,进而可以得到满足最小测地距离的投影点;最后将顶点i移动到投影点位置。
[0125]
该实施例中,结合短边合并、对向三角形优化、拉普拉斯平滑等相关操作,对网格进行测地距离投影误差优化,使得可以得到最接近原网格的、高质量的稀疏网格,并且可以规避网格不同部位的匹配错误问题。
[0126]
对于上述的构建所述目标布料图像的网格金字塔的实现过程,利用第n层网格确定第n+1层网格的顶点以及顶点的连接关系时,在利用第1层网格确定第2层网格的顶点时,所述第1层网格的顶点数量和顶点的连接关系是给定的,即构建所述网格金字塔时的最初一层网格的参数是给定的,所述第1层网格的输入参数即为进行布料仿真时设置的输入参数(例如面片数、顶点数、顶点连接关系等),因此形成的所述第1层网格为布料仿真初步形成的网格表达形式。在构建所述网格金字塔后,从所述网格金字塔的第n层网格开始,逐层计算每一层网格的顶点位置,直至获得所述第1层网格的顶点位置,获得所述目标布料图像仿真的仿真结果。
[0127]
该实施例能够根据输入的面片数较多的布料三角形网格,进行网格简化并同时优化测地距离投影误差,生成高质量的n层网格金字塔。所述网格金字塔每层网格的面片数少于上一层网格的面片数(即所述第n+1层网格的面片数量小于所述第n层网格的面片数量)。对于每个布料三角形网格,上述获得网格金字塔的预处理阶段只需处理一次,可以存储供后续持续使用。
[0128]
在构建所述网格金字塔的过程中,优化测地距离投影误差可以对每层三角形网格,网格的每个顶点到上一层网格的测地距离足够小。本方案使用测地距离代替常用的欧式距离,可以保证网格简化投影过程只受原网格拓扑相关的顶点影响,而不会受网格其他无关部位影响。所述三角形金字塔的每一层网格可以如图2所示,若使用欧式距离计算投影误差,则点a可能受到点b影响,本技术使用测地距离可以避免网格顶点受到不相关顶点的影响。
[0129]
本技术实施例构建的网格金字塔为高质量的三角形网格金字塔,每层三角形网格可以保证高质量:单层网格的每个三角形尽可能接近正三角形,并且每个三角形面积尽可能一致。高质量的三角形网格能够提升物理仿真结果的质量。本技术的实施例,优化测地距离投影误差的多重网格生成方案,可以生成高质量的三角形网格金字塔,并建立保证拓扑连续性的网格插值方案;网格金字塔的预处理方案对于每个网格只需处理一次就可以满足后续加速需求。
[0130]
可选地,在构建所述网格金字塔时,还可以根据记录的拓扑相关集合,建立所述网格金字塔中相邻两层网格之间的保证拓扑连续性的插值关系。所述根据所述拓扑相关集
合,建立所述网格金字塔中相邻两层网格之间的插值关系,包括:
[0131]
根据所述拓扑相关集合,从所述网格金字塔的第n+1层网格中,确定第n层网络的顶点相关的三角形面片集合,n=1、2、
……
n;从所述三角形面片集合中确定与所述第n层网络的顶点距离最小的目标三角形面片;利用所述目标三角形面片的三个顶点插值表达所述第n层网络的顶点。
[0132]
可选地,根据所述拓扑相关集合,从所述网格金字塔的第n+1层网格中,确定第n层网络的顶点相关的三角形面片集合,包括:若所述第n层网络的顶点,属于所述第n+1层网格中的第二目标顶点对应的第二目标拓扑相关集合,则包含所述第二目标顶点的三角形面片属于所述三角形面片集合。
[0133]
该实施例中,在建立不同层次间的保证拓扑连续性的插值关系时,做法是对于第n层网格的某个顶点p
n,i
(即第n层网格的顶点i),从第n+1层网格找到最相关的三角形面片集合,进而找到距离最近三角形面片,利用该距离最近的三角形面片的三个顶点插值表达p
n,i

[0134]
其中,在确定第n层网格的距离最近的三角形面片时,需要构建与第n层网格的顶点相关的三角形面片集合,所述三角形面片集合包含的三角形面片是从第n+1层网格确定的。其中,若所述第n层网络的顶点p
n,i
属于拓扑相关集合g
n+1,k
,即所述g
n+1,k
中包含所述顶点p
n,i
,则所述拓扑相关集合g
n+1,k
对应的第n+1层网格的顶点p
n+1,k
(即所述第二目标顶点)所在的三角形面片属于所述三角形面片集合,可以记为三角形面片集合f
n,i
={f
n+1,i,j
}。
[0135]
遍历所述三角形面片集合f
n,i
,计算集合中的每个三角形面片f
n+1,i,j
与所述顶点p
n,i
的距离,选择距离最小的目标三角形面片利用该目标三角形面片的三个顶点差值表达顶点p
n,i
,具体地,可以将顶点p
n,i
投影到所述目标三角形面片并计算投影点的重心坐标{w
l,i,k
|k=0,1,2},利用所述重心坐标和所述目标三角形面片的三者顶点即可表达所述顶点p
n,i

[0136]
该实施例中,建立不同层次间的保证拓扑连续性的插值关系是指从较稀疏的网格插值到较密集的网格时,需要保证拓扑连续性:对于第n+1层网格上拓扑邻近的网格顶点,在第n层网格上也是由拓扑邻近的顶点插值得到的,所述插值关系可以保证网格的顶点不会受到其他不相关位置的顶点影响,例如:一件长袖衣服做抱胸姿势时,袖口布料不能受到胸前布料影响。
[0137]
例如:利用本技术实施例的布料仿真方法,在一个复杂服饰上具体实施时如图3所示,包含了仿真不同时刻的三帧结果;原网格约10万三角形面片,本发明构建的网格金字塔n=2,新的两层面片数分别约为2.5万、0.6万;在本实例的实现中,预处理网格简化的迭代次数m=10。如图3所示,仿真形成的服饰在不同时刻的形态位置不同,且能够清晰展现服饰细节处(如裙摆褶皱位置)的变化。相对于不使用本发明实施例的仿真方法,耗时可以减少到原来的10%,同时仿真效果不受明显影响。
[0138]
本技术的实施例,在预处理阶段,进行优化测地距离投影误差的网格简化,对于每个顶点记录网格简化过程中与其相关的拓扑对应点集合;建立不同层网格之间保证拓扑连续性的插值关系,获得高质量的网格金字塔。在实际运行阶段,在最稀疏的一层网格进行精确的布料仿真解算,获得该层网格的顶点位置,利用该层网格的顶点向相邻的网格密集的
一层网格插值,获得顶点插值位置;进行轻量级优化获得顶点位置;利用该方法逐层推进,最终输出第1层网格的仿真结果。
[0139]
优化测地距离投影误差的多重网格生成方案,可以生成高质量的三角形网格金字塔,并建立保证拓扑连续性的网格插值方案;网格金字塔的预处理方案对于每个网格只需处理一次就可以满足后续加速需求。
[0140]
本技术实施例中,从网格金字塔的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中较稀疏的一层网格的顶点,向所述相邻两层网格中较密集的一层网格插值,获得较密集的一层网格的顶点的插值表达,并进行轻量级优化,获得较密集的一层网格的顶点位置,利用该方法逐层计算,直至获得网格金字塔的第1层的仿真结果,可以有效提升布料仿真速度。此外,该实施例中,网格金字塔的相邻两层之间具有保证拓扑连续性的插值关系,在进行插值计算时,基于该插值关系进行插值表达,能够保证插值的拓扑连续性。
[0141]
如图4所示,本技术实施例还提供一种布料仿真装置,包括:
[0142]
第一处理模块410,用于从目标布料图像对应的n层网格金字塔中的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中的第一层网格的顶点位置,对所述相邻两层网格中的第二层网格进行插值计算,获得所述第二层网格的顶点插值位置;
[0143]
第二处理模块420,用于对所述第二层网格的顶点插值位置进行轻量级优化,获得所述第二层网格的顶点位置,所述第一层网格的网格密度小于所述第二层网格的网格密度;
[0144]
第三处理模块430,用于将所述网格金字塔中的第1层网格的顶点位置作为所述目标布料图像的仿真结果;
[0145]
其中,n大于或者等于2。
[0146]
可选地,所述装置还包括:
[0147]
第四处理模块,用于对所述网格金字塔中的第n层网格进行布料仿真解算,获得所述第n层网格的顶点位置;
[0148]
其中,所述第n层网格的网格密度最小,从所述第n层网格到所述第1层网格,网格密度逐渐增大。
[0149]
可选地,所述第四处理模块具体用于:
[0150]
利用所述第n层网格的弹性材质方程进行局部线性化求解,获得相邻两个时刻的顶点位置偏差;
[0151]
根据所述顶点位置偏差和所述第n层网格在上一时刻的顶点位置,计算所述第n层网格在当前时刻的网格顶点位置。
[0152]
可选地,所述第二处理模块包括:
[0153]
初始化单元,用于对所述第二层网格的顶点插值位置进行初始化,获得所述第二层网格的每个顶点的第一位置;
[0154]
第一优化单元,用于对所述第一位置进行拉伸限制优化和弯曲限制优化,获得所述第二层网格的每个顶点的第二位置;
[0155]
第二优化单元,用于对所述第二位置进行插值限制优化,获得所述第二层网格的
每个顶点的第三位置;
[0156]
第一确定单元,用于若所述第三位置与所述第一位置满足预设条件,则确定所述第三位置为所述第二层网格的顶点位置。
[0157]
可选地,所述预设条件包括:所述第一位置与所述第三位置的差值的范数小于第一数值。
[0158]
可选地,所述装置还包括:
[0159]
网格金字塔构建模块,用于构建所述目标布料图像的网格金字塔并记录网格顶点的拓扑相关集合;
[0160]
插值关系建立模块,用于根据所述拓扑相关集合,建立所述网格金字塔中相邻两层网格之间的插值关系。
[0161]
可选地,所述网格金字塔构建模块包括:
[0162]
第一处理单元,用于根据所述网格金字塔中第n层网格的顶点以及顶点之间的连接关系,通过预定算法进行迭代优化,获得第n+1层网格的顶点位置以及顶点之间的连接关系,并根据所述拓扑相关集合,优化所述第n+1层网格的测地距离投影误差;
[0163]
第一获取单元,用于在所述n+1等于n时,获得所述目标布料的包括n层网格的网格金字塔;
[0164]
其中,所述第n+1层网格的网格密度小于所述第n层网格的网格密度,n=1、2、
……
n。
[0165]
可选地,所述第一处理单元具体用于:
[0166]
将所述第n层网格的顶点以及顶点之间的连接关系,作为所述第n+1层网格的初始顶点以及初始连接关系,获得初始的第n+1层网格;
[0167]
对所述初始的第n+1层网格中的所有边进行短边合并处理,获得第一次更新的第n+1层网格;
[0168]
对所述第一次更新的第n+1层网格进行正三角形优化,获得第二次更新的第n+1层网格;
[0169]
对所述第二次更新的第n+1层网格进行拉普拉斯平滑处理,获得所述第n+1层网格的顶点位置以及顶点之间的连接关系。
[0170]
可选地,所述第一处理单元具体用于:
[0171]
根据所述第n+1层网格的顶点对应的第一目标拓扑相关集合,计算所述第n+1层网格的顶点到第n层网格的最小测地距离;其中,所述第一目标拓扑相关集合包括与所述第n+1层网格的顶点关联的至少一个第一目标顶点,所述第一目标顶点为第n层网格上的顶点;
[0172]
将所述第n+1层网格的顶点,投影到所述第n层网格上所述最小测地距离对应的投影点。
[0173]
可选地,所述根据所述第n+1层网格的顶点对应的第一目标拓扑相关集合,计算所述第n+1层网格的顶点到第n层网格的最小测地距离,包括:
[0174]
根据所述第一目标拓扑相关集合,确定所述第n层网格中包含所述目标顶点的至少一个三角形面片;
[0175]
将所述第n+1层网格的顶点到所述三角形面片的最小距离,确定为所述第n+1层网格的顶点到第n层网格的最小测地距离。
[0176]
可选地,所述插值关系建立模块包括:
[0177]
第二确定单元,用于根据所述拓扑相关集合,从所述网格金字塔的第n+1层网格中,确定第n层网络的顶点相关的三角形面片集合,n=1、2、
……
n;
[0178]
第三确定单元,用于从所述三角形面片集合中确定与所述第n层网络的顶点距离最小的目标三角形面片;
[0179]
利用所述目标三角形面片的三个顶点插值表达所述第n层网络的顶点。
[0180]
可选地,所述第二确定单元具体用于:若所述第n层网络的顶点,属于所述第n+1层网格中的第二目标顶点对应的第二目标拓扑相关集合,则包含所述第二目标顶点的三角形面片属于所述三角形面片集合。
[0181]
本技术实施例中,从网格金字塔的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中较稀疏的一层网格的顶点,向所述相邻两层网格中较密集的一层网格插值,获得较密集的一层网格的顶点的插值表达,并进行轻量级优化,获得较密集的一层网格的顶点位置,利用该方法逐层计算,直至获得网格金字塔的第1层的仿真结果,可以有效提升布料仿真速度。此外,该实施例中,网格金字塔的相邻两层之间具有保证拓扑连续性的插值关系,在进行插值计算时,基于该插值关系进行插值表达,能够保证插值的拓扑连续性。
[0182]
如图5所示,本技术实施例还提供一种布料仿真设备,包括:收发机501、处理器502、存储器503及存储在存储器503上并可在处理器502上运行的计算机程序,计算机程序被所述处理器执行时实现所述布料仿真方法的步骤。具体的,处理器502用于:
[0183]
从目标布料图像对应的n层网格金字塔中的第n-1层网格开始,根据相邻两层网格之间的插值关系,利用所述相邻两层网格中的第一层网格的顶点位置,对所述相邻两层网格中的第二层网格进行插值计算,获得所述第二层网格的顶点插值位置;
[0184]
对所述第二层网格的顶点插值位置进行轻量级优化,获得所述第二层网格的顶点位置,所述第一层网格的网格密度小于所述第二层网格的网格密度;
[0185]
将所述网格金字塔中的第1层网格的顶点位置作为所述目标布料图像的仿真结果;
[0186]
其中,n大于或者等于2。
[0187]
可选地,所述处理器还用于:
[0188]
对所述网格金字塔中的第n层网格进行布料仿真解算,获得所述第n层网格的顶点位置;
[0189]
其中,所述第n层网格的网格密度最小,从所述第n层网格到所述第1层网格,网格密度逐渐增大。
[0190]
可选地,所述处理器对所述网格金字塔中的第n层网格进行布料仿真解算,获得所述第n层网格的顶点位置,包括:
[0191]
利用所述第n层网格的弹性材质方程进行局部线性化求解,获得相邻两个时刻的顶点位置偏差;
[0192]
根据所述顶点位置偏差和所述第n层网格在上一时刻的顶点位置,计算所述第n层网格在当前时刻的网格顶点位置。
[0193]
可选地,所述处理器对所述第二层网格的顶点插值位置进行轻量级优化,获得所
述第二层网格的顶点位置,包括:
[0194]
对所述第二层网格的顶点插值位置进行初始化,获得所述第二层网格的每个顶点的第一位置;
[0195]
对所述第一位置进行拉伸限制优化和弯曲限制优化,获得所述第二层网格的每个顶点的第二位置;
[0196]
对所述第二位置进行插值限制优化,获得所述第二层网格的每个顶点的第三位置;
[0197]
若所述第三位置与所述第一位置满足预设条件,则确定所述第三位置为所述第二层网格的顶点位置。
[0198]
可选地,所述预设条件包括:所述第一位置与所述第三位置的差值的范数小于第一数值。
[0199]
可选地,所述处理器还用于:
[0200]
构建所述目标布料图像的网格金字塔并记录网格顶点的拓扑相关集合;
[0201]
根据所述拓扑相关集合,建立所述网格金字塔中相邻两层网格之间的插值关系。
[0202]
可选地,所述处理器构建所述目标布料图像的网格金字塔,包括:
[0203]
根据所述网格金字塔中第n层网格的顶点以及顶点之间的连接关系,通过预定算法进行迭代优化,获得第n+1层网格的顶点位置以及顶点之间的连接关系,并根据所述拓扑相关集合,优化所述第n+1层网格的测地距离投影误差;
[0204]
在所述n+1等于n时,获得所述目标布料的包括n层网格的网格金字塔;
[0205]
其中,所述第n+1层网格的网格密度小于所述第n层网格的网格密度,n=1、2、
……
n。
[0206]
可选地,所述处理器根据所述网格金字塔中第n层网格的顶点以及顶点之间的连接关系,通过预定算法进行迭代优化,获得第n+1层网格的顶点位置以及顶点之间的连接关系,包括:
[0207]
将所述第n层网格的顶点以及顶点之间的连接关系,作为所述第n+1层网格的初始顶点以及初始连接关系,获得初始的第n+1层网格;
[0208]
对所述初始的第n+1层网格中的所有边进行短边合并处理,获得第一次更新的第n+1层网格;
[0209]
对所述第一次更新的第n+1层网格进行正三角形优化,获得第二次更新的第n+1层网格;
[0210]
对所述第二次更新的第n+1层网格进行拉普拉斯平滑处理,获得所述第n+1层网格的顶点位置以及顶点之间的连接关系。
[0211]
可选地,所述处理器根据所述拓扑相关集合,优化所述第n+1层网格测地距离投影误差,包括:
[0212]
根据所述第n+1层网格的顶点对应的第一目标拓扑相关集合,计算所述第n+1层网格的顶点到第n层网格的最小测地距离;其中,所述第一目标拓扑相关集合包括与所述第n+1层网格的顶点关联的至少一个第一目标顶点,所述第一目标顶点为第n层网格上的顶点;
[0213]
将所述第n+1层网格的顶点,投影到所述第n层网格上所述最小测地距离对应的投影点。
[0214]
可选地,所述处理器根据所述第n+1层网格的顶点对应的第一目标拓扑相关集合,计算所述第n+1层网格的顶点到第n层网格的最小测地距离,包括:
[0215]
根据所述第一目标拓扑相关集合,确定所述第n层网格中包含所述目标顶点的至少一个三角形面片;
[0216]
将所述第n+1层网格的顶点到所述三角形面片的最小距离,确定为所述第n+1层网格的顶点到第n层网格的最小测地距离。
[0217]
可选地,所述处理器根据所述拓扑相关集合,建立所述网格金字塔中相邻两层网格之间的插值关系,包括:
[0218]
根据所述拓扑相关集合,从所述网格金字塔的第n+1层网格中,确定第n层网络的顶点相关的三角形面片集合,n=1、2、
……
n;
[0219]
从所述三角形面片集合中确定与所述第n层网络的顶点距离最小的目标三角形面片;
[0220]
利用所述目标三角形面片的三个顶点插值表达所述第n层网络的顶点。
[0221]
可选地,所述处理器根据所述拓扑相关集合,从所述网格金字塔的第n+1层网格中,确定第n层网络的顶点相关的三角形面片集合,包括:
[0222]
若所述第n层网络的顶点,属于所述第n+1层网格中的第二目标顶点对应的第二目标拓扑相关集合,则包含所述第二目标顶点的三角形面片属于所述三角形面片集合。
[0223]
其中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器502代表的一个或多个处理器502和存储器503代表的存储器503的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口提供接口。收发机501可以是多个元件,即包括发送机和收发机,提供用于在传输介质上与各种其他装置通信的单元。处理器502负责管理总线架构和通常的处理,存储器503可以存储处理器在执行操作时所使用的数据。
[0224]
本领域技术人员可以理解,实现上述实施例的全部或者部分步骤可以通过硬件来完成,也可以通过计算机程序来指示相关的硬件来完成,所述计算机程序包括执行上述方法的部分或者全部步骤的指令;且该计算机程序可以存储于一可读存储介质中,存储介质可以是任何形式的存储介质。
[0225]
另外,本发明具体实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的布料仿真方法中的步骤。且能达到相同的技术效果,为避免重复,这里不再赘述。
[0226]
在本技术所提供的几个实施例中,应该理解到,所揭露方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0227]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单
元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0228]
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述收发方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0229]
以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1