布料仿真方法、装置、终端设备以及存储介质与流程

文档序号:30834789发布日期:2022-07-22 22:44阅读:86来源:国知局
布料仿真方法、装置、终端设备以及存储介质与流程

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.若所述网格距离小于所述预设优化终止阈值,则将所述待优化网格更新 位置作为所述输出网格状态;
42.若所述网格距离不小于所述预设优化终止阈值,则返回执行基于四面体 的碰撞约束,根据所述目标单形对计算目标网格更新位置的步骤以及后续步 骤。
43.可选地,所述若所述网格距离小于所述预设优化终止阈值,则将所述待 优化网格更新位置作为所述输出网格状态的步骤之后还包括:
44.将所述输出网格状态作为下一时间点的输入网格状态,并返回执行获取 各目标单形对的步骤以及后续步骤,直至完成所述布料仿真的过程。
45.此外,为实现上述目的,本发明还提供一种布料仿真装置,所述布料仿 真装置包括:
46.获取模块,用于获取各目标单形对;
47.计算模块,用于基于四面体的碰撞约束,根据各所述目标单形对计算目 标网格更新位置;
48.输出模块,用于根据所述目标网格更新位置得到所述布料仿真中的待优 化网格更新位置,并基于所述待优化网格更新位置确定输出网格状态。
49.此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包 括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的布料仿 真程序,所述布料仿真程序被所述处理器执行时实现如上所述的布料仿真方 法的步骤。
50.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述 计算机可读存储介质上存储有布料仿真程序,所述布料仿真程序被处理器执 行时实现如上所述的布料仿真方法的步骤。
51.本发明实施例提出的一种布料仿真方法、装置、终端设备以及存储介质, 通过获取各目标单形对;基于四面体的碰撞约束,根据各所述目标单形对计 算目标网格更新位置;根据所述目标网格更新位置得到所述布料仿真中的待 优化网格更新位置,并基于所述待优化网格更新位置确定输出网格状态。通 过各目标单行对得到最终无自交的输出网格状态,保证了碰撞处理的安全性; 同时通过基于四面体的碰撞约束,为计算目标网格更新位置提供了更多自由 度,从而加快收敛,确保了布料仿真过程中碰撞处理的高效性。兼顾了布料 仿真过程中碰撞处理的安全性与高效性,从而改善了布料仿真碰撞处理的效 果。
附图说明
52.图1为相关技术中影响域优化方法示意图;
53.图2为相关技术中内点法的示意图;
54.图3为本发明实施例中双向搜索内点法示意图;
55.图4为本发明布料仿真装置所属终端设备的功能模块示意图;
56.图5为本发明布料仿真方法一示例性实施例的流程示意图;
57.图6为图5实施例中步骤s10的具体流程示意图;
58.图7为图6实施例中步骤s102的具体流程示意图;
59.图8为图5实施例中步骤s20的具体流程示意图;
60.图9为本发明实施例中构成四面体的第一示意图;
61.图10为本发明实施例中构成四面体的第二示意图;
62.图11为图5实施例中步骤s30的具体流程示意图;
63.图12为本发明布料仿真方法另一示例性实施例的流程示意图;
64.图13为图11实施例中步骤s302的具体流程示意图;
65.图14为本发明布料仿真方法又一示例性实施例的流程示意图;
66.图15为本发明实施例中布料仿真碰撞处理的样例初始状态示意图;
67.图16为本发明实施例中布料仿真碰撞处理的样例输出状态示意图;
68.图17为本发明实施例中双向模式求解优化策略的流程示意图。
69.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步 说明。
具体实施方式
70.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限 定本发明。
71.本发明实施例的主要解决方案是:通过获取各目标单形对;基于四面体 的碰撞约束,根据各所述目标单形对计算目标网格更新位置;根据所述目标 网格更新位置得到所述布料仿真中的待优化网格更新位置,并基于所述待优 化网格更新位置确定输出网格状态。通过各目标单行对得到最终无自交的输 出网格状态,保证了碰撞处理的安全性;同时通过基于四面体的碰撞约束, 为计算目标网格更新位置提供了更多自由度,从而加快收敛,确保了布料仿 真过程中碰撞处理的高效性。兼顾了布料仿真过程中碰撞处理的安全性与高 效性,从而改善了布料仿真碰撞处理的效果。
72.布料仿真通常表达为一个隐式欧拉积分,在时间维度上离散化,然后在 每个小的时间区间内,分别求解布料的受力系统以及处理布料间的碰撞使得 不发生自交(也就是布料自身之间的穿插)。
73.目前在相关技术中,通常使用连续碰撞处理方法,即基于当前时刻的布 料网格顶点位置,利用隐式欧拉方程可以得到下一时刻的布料顶点/面片位 置,两个位置之间形成顶点/面片位移轨迹;连续碰撞处理首先通过局部求解 一系列三次方程来检测不同顶点/面片的轨迹之间是否存在自交,然后针对自 交进行迭代地回推-检测-回推处理,直到检测不到自交。
74.理想情况下,布料自碰撞处理应该满足安全性与高效性:安全性是指仿 真过程中永远不发生自交现象,高效性是指计算效率较高、不引入过高的计 算复杂度。
75.连续碰撞处理难以保证高效性:每个时间区间内需要求解大量的三次方 程,计算代价很高;更进一步的,由于三次方程计算存在数值不稳定现象, 为了处理这种数值不稳定,连续碰撞检测需要引入额外的计算复杂度来做进 一步处理,这些处理并不能保证所有情况下有效,也就是无法保证安全性。
76.在相关的依赖连续自碰撞处理的布料仿真技术中,通常使用影响域优化 方法或者内点法。
77.参照图1,图1为相关技术中影响域优化方法示意图,如图1所示,影响 域优化方法尝试从出发,反向搜索到最优解;当与最优解较近时,这类方 法是高效的,但是当时间步长增大时,这类方法有可能收敛到可行域的边界 局部极值,进而导致最优解查找阻塞和失败;参照图2,图2为相关技术中内 点法的示意图,如图2所示,内点法的主要特性是优化过程从p
[t]
出发,并且 始终保持在可行k=0,1,2域内部;内点法天然是安全的,但是往往不够高效: 首先,内点法的每次搜索都需要依赖连续碰撞检测,而连续碰撞检测计算量 大并且可能有数值问题;其次,当求解靠近可行域边界时,内点法的收敛性 开始变慢,这有可能导致实际仿真过程中的运动缓慢乃至运动死锁问题。
[0078]
总而言之,现有的方法无法同时满足安全性和高效性。
[0079]
本发明提供一种新的双向搜索内点法,参照图3,图3为本发明实施例中 双向搜索内点法示意图,如图3所示,布料表达为三角形网格,本提案的输 入是当前时间点的网格状态,以及利用布料物理解算方法得到的下一时间点 的目标网格状态(有可能存在自交),输出是下一时间点的无自交网格状态。
[0080]
其中,三角形网格定义为三角形集合:f={fi|i=0,1,...},每个三角形包含 三个顶点,每个顶点的位置是三维空间中的一个坐标:p
ik
=(x
ik
,y
ik
,z
ik
)
t
,其中 k=0,1,2。令三角形网格所有顶点的位置拼接为一个向量,记作p,所有顶点 的总个数记作n。每个三角形的任意两个顶点连接成一条边,每个三角形fi共 有三条边。本发明中,把三角形、边、顶点统称为单形(这在数学中是一种 标准名词,表达最基本的几何形状),每个单形记作si,每个单形的位置信息 可以表达为si(p)。
[0081]
其中,网格状态是指网格的所有顶点位置,当前时间点的网格状态记作 p
[t]
,下一时间点的目标网格状态记作下一时间点的无自交网格状态记作 p
[t+1]
;这里自交是指三角形网格不同三角形之间存在穿插。
[0082]
其中,下一时间点是指,给定固定的时间区间长度h,由当前时间点加上 这个时间区间长度得到的新的时间点。物理仿真系统中,通用的计算流程是 按照固定时间区间长度,依次计算各个时间点的网格状态。
[0083]
其中,布料物理解算方法是指物理仿真系统中常用的隐式欧拉积分方法, 该方法输入当前时间点的网格状态,考虑布料的物理材质属性(如弹性、刚 性等),得到布料下一时间点的网格状态,但是不考虑布料间的自碰撞,参考 如下弹性材质方程:
[0084][0085]
该弹性材质方程在是目前物理仿真系统中常用的方程;其中h是时间步 长;m∈r
3n*3n
是质量矩阵,只在对角项有值,代表每个顶点的质量;表示当前时间点的速度;w(p)代表布料邻近顶点间的内力,描述 布料弹性等物理材质属性,可以根据具体的布料材质来计算。本发明提出的 自碰撞处理方法不局限于特定物理材质或特定布料物理结算方法,可以根据 具体使用场景具体选择。
[0086]
因此,在本发明的实现中,使用了一个简单的仿真流程:每个时间区间 首先基于当前网格状态p
[t]
求解弹性材质得到下一时间点的目标网格状态记作 然后进行本发明的自碰撞处理方法得到下一时间点的无自交网格状态记作 p
[t+1]

[0087]
该双向搜索内点法可以同时满足安全性和高效性,主要具有以下优势:
[0088]
(1)不依赖连续碰撞检测的搜索步长:本发明提出一种新的步长策略, 只依赖简单的几何检查和距离计算就可以保证无自交条件,保证安全性;
[0089]
(2)高效的搜索方向:通过构建和求解一个线性互补问题,只需少量计 算即可得到一个高效的搜索方向;
[0090]
(3)自碰撞约束:本发明同时提出一种新的基于四面体的碰撞约束方法, 相比传统碰撞约束,为求解过程提供了更多自由度,从而加快求解收敛。
[0091]
具体地,参照图4,图4为本发明布料仿真装置所属终端设备的功能模块 示意图。
该布料仿真装置可以为独立于终端设备的、能够进行布料仿真的装 置,其可以通过硬件或软件的形式承载于终端设备上。该终端设备可以为手 机、平板电脑等具有数据处理功能的智能移动终端,还可以为具有数据处理 功能的固定终端设备或服务器等。
[0092]
在本实施例中,该布料仿真装置所属终端设备至少包括输出模块110、处 理器120、存储器130以及通信模块140。
[0093]
存储器130中存储有操作系统以及布料仿真程序,布料仿真装置可以将 获取的各目标单形对、基于四面体的碰撞约束,根据各所述目标单形对计算 得到的目标网格更新位置、根据所述目标网格更新位置得到的所述布料仿真 中的待优化网格更新位置,以及基于所述待优化网格更新位置确定的输出网 格状态等信息存储于该存储器130中;输出模块110可为显示屏等。通信模 块140可以包括wifi模块、移动通信模块以及蓝牙模块等,通过通信模块140 与外部设备或服务器进行通信。
[0094]
其中,存储器130中的布料仿真程序被处理器执行时实现以下步骤:
[0095]
获取各目标单形对;
[0096]
基于四面体的碰撞约束,根据各所述目标单形对计算目标网格更新位置;
[0097]
根据所述目标网格更新位置得到所述布料仿真中的待优化网格更新位 置,并基于所述待优化网格更新位置确定输出网格状态。
[0098]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0099]
获取三角形网格中的全部单形;
[0100]
计算各所述单形之间的单形对距离,其中,所述单形对距离包括所述三 角形网格中的顶点与三角形的距离以及边与边的距离;
[0101]
将各所述单形对距离中小于预设阈值的单形对距离对应的单形对作为所 述目标单形对。
[0102]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0103]
计算所述三角形网格中的各顶点与三角形的距离;
[0104]
计算所述三角形网格中的各边与边的距离。
[0105]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0106]
遍历所述三角形网格中的各顶点,对各所述顶点分别遍历所述三角形网 格中的各三角形,得到各所述顶点与三角形的距离;或
[0107]
对所述三角形网格进行空间划分,分别计算各划分区域内的顶点与预设 区域内的三角形之间的距离,得到各所述顶点与三角形的距离。
[0108]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0109]
遍历所述三角形网格中的各边,对各所述边分别遍历各所述边,得到各 所述边与边的距离;或
[0110]
对所述三角形网格进行空间划分,分别计算各划分区域内的边与预设区 域内的边之间的距离,得到各所述边与边的距离。
[0111]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0112]
基于四面体的碰撞约束,根据各所述目标单形对构建碰撞约束方程;
[0113]
对所述碰撞约束方程进行线性化与等式代换处理,计算所述目标网格更 新位置。
[0114]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0115]
根据所述目标网格更新位置计算安全移动距离;
[0116]
根据所述安全移动距离计算所述布料仿真中的待优化网格更新位置,并 基于所述待优化网格更新位置确定输出网格状态。
[0117]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0118]
根据所述目标网格更新位置与待优化网格位置确定移动方向;
[0119]
基于所述移动方向计算安全移动距离。
[0120]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0121]
获取输入网格状态;
[0122]
基于所述输入网格状态求解弹性材质得到目标网格状态;
[0123]
对所述输入网格状态与所述目标网格状态分别进行初始化,得到所述待 优化网格位置与目标网格位置。
[0124]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0125]
根据所述待优化网格位置与所述安全移动距离计算所述待优化网格更新 位置;
[0126]
计算所述待优化网格更新位置与所述目标网格更新位置之间的网格距 离;
[0127]
判断所述网格距离是否小于预设优化终止阈值;
[0128]
若所述网格距离小于所述预设优化终止阈值,则将所述待优化网格更新 位置作为所述输出网格状态;
[0129]
若所述网格距离不小于所述预设优化终止阈值,则返回执行基于四面体 的碰撞约束,根据所述目标单形对计算目标网格更新位置的步骤以及后续步 骤。
[0130]
进一步地,存储器130中的布料仿真程序被处理器执行时还实现以下步 骤:
[0131]
将所述输出网格状态作为下一时间点的输入网格状态,并返回执行获取 各目标单形对的步骤以及后续步骤,直至完成所述布料仿真的过程。
[0132]
本实施例通过上述方案,具体通过获取各目标单形对;基于四面体的碰 撞约束,根据各所述目标单形对计算目标网格更新位置;根据所述目标网格 更新位置得到所述布料仿真中的待优化网格更新位置,并基于所述待优化网 格更新位置确定输出网格状态。通过各目标单行对得到最终无自交的输出网 格状态,保证了碰撞处理的安全性;同时通过基于四面体的碰撞约束,为计 算目标网格更新位置提供了更多自由度,从而加快收敛,确保了布料仿真过 程中碰撞处理的高效性。兼顾了布料仿真过程中碰撞处理的安全性与高效性, 从而改善了布料仿真碰撞处理的效果。
[0133]
基于上述终端设备架构但不限于上述架构,提出本发明方法实施例。
[0134]
本实施例方法的执行主体可以为一种布料仿真装置或终端设备等,本实 施例以布料仿真装置进行举例。
[0135]
参照图5,图5为本发明布料仿真方法一示例性实施例的流程示意图。所 述布料仿真方法包括:
[0136]
步骤s10,获取各目标单形对;
[0137]
具体地,在布料表达的三角形网格中,将三角形网格定义为三角形集合: f={fi|i=0,1,...},每个三角形包含三个顶点,每个顶点的位置是三维空间中的 一个坐标:p
ik
=(x
ik
,y
ik
,z
ik
)
t
,其中k=0,1,2。令三角形网格所有顶点的位置拼接 为一个向量,记作p,所有顶点的总个数记作n。每个三角形的任意两个顶点 连接成一条边,每个三角形fi共有三
条边。本发明实施例中,把三角形、边、 顶点统称为单形,每个单形记作si,每个单形的位置信息可以表达为si(p)。其 中,(si,sj)表示一对单形,根据顶点、边、三角形的定义,可能有多种不同类 型的单形组合成对。布料仿真中,真正影响自碰撞的单形组合包括(顶点, 三角形)和(边,边),所以本发明也只计算这两种情况下的距离。
[0138]
其中,在获取各目标单形对之前,需先获取三角形网格中的全部单形, 即全部顶点、三角形以及边,进而计算各单形对的距离,即计算顶点与三角 形的距离以及边与边的距离,从而筛选出距离小于预设阈值的单形对,在本 发明实施例中,该预设阈值相当于布料的厚度参数,任意两个距离小于布料 厚度的单形都有可能导致穿插,因此筛选出距离小于预设阈值的单形对目的 是收集这些所有可能导致穿插的单形对。
[0139]
步骤s20,基于四面体的碰撞约束,根据各所述目标单形对计算目标网格 更新位置;
[0140]
进一步地,在获取到各目标单形对之后,即可基于四面体的碰撞约束构 建碰撞约束方程,以计算目标网格更新位置,其中,目标网格更新后的位置需要遵循两个条件:(1)与当前位置足够接近;(2)当前集合中所有单 形对不产生穿插;可以表示为如下碰撞约束方程:
[0141][0142]
其中,c(si(p),sj(p))≥0表示一组可行域约束,限制求解结果不产生穿插。 对于每对集合p中的单形,不管是(顶点,三角形)还是(边,边),均包含 4个顶点,因此可以构成一个四面体。假设四面体中4个顶点的当前位置是 (ra,ri,rj,rk),由于这对单形的距离小于布料厚度,四面体如果进一步挤压就有 可能会产生穿插,所以只需要求优化后的位置构成的四面体(pa,pi,pj,pk)不挤 压即可,因此定义
[0143]
c(si(p),sj(p))=|p
i-pa,p
j-pa,p
k-pa|-|r
i-ra,r
j-ra,r
k-ra|
[0144]
其中|
·
|是行列式符号。其中,碰撞约束方程可以在p
(l)
处线性化为:
[0145][0146]
其中,c(p
(l)
)是所有{c(si(p),sj(p))≥0|(si,sj)∈p}的向量化表示,j(p
(l)
)是雅克 比矩阵。上述线性化问题所对应的拉格朗日形式为这个拉格朗日形式对于p和λ都是 凸的,所以可以直接套用非线性优化的kkt条件:
[0147][0148]
通过等式代换,上述kkt条件可以简化为未知量只有λ的线性互补问题 (lcp):这是一个线性正定方程, 可以使用标准的gauss-seidel迭代求解,然后每次迭代后限制λ≥0即可。求 解得到λ后,带入kkt条
件即可得到目标网格位置
[0149][0150]
步骤s30,根据所述目标网格更新位置得到所述布料仿真中的待优化网格 更新位置,并基于所述待优化网格更新位置确定输出网格状态。
[0151]
更进一步地,通过四面体的碰撞约束计算出目标网格更新位置后,即可 根据所述目标网格更新位置更新移动方向并计算安全移动距离,作为其中一 种实施方式,沿着给定移动方向,每个顶点的移动距离不超过最近距离的一 半,因此对于每对有可能相交的单形,由于始终在安全距离内移动,所以移 动后也不会相交。从而确保了碰撞处理的安全性。
[0152]
计算出安全移动距离后,即可根据安全移动距离确定待优化网格更新位 置,进而通过优化终止阈值进行终止条件判定,以确定是将得到的待优化网 格更新位置作为输出网格状态,还是返回执行基于四面体的碰撞约束,根据 各目标单形对计算目标网格更新位置的步骤,确定最终的待优化网格更新位 置,即为输出网格状态,并将最终的待优化网格更新位置作为下一时间点的 待优化网格位置,进一步完成布料仿真的碰撞处理。
[0153]
在本实施例中,通过获取各目标单形对;基于四面体的碰撞约束,根据 各所述目标单形对计算目标网格更新位置;根据所述目标网格更新位置得到 所述布料仿真中的待优化网格更新位置,并基于所述待优化网格更新位置确 定输出网格状态。通过各目标单行对得到最终无自交的输出网格状态,保证 了碰撞处理的安全性;同时通过基于四面体的碰撞约束,为计算目标网格更 新位置提供了更多自由度,从而加快收敛,确保了布料仿真过程中碰撞处理 的高效性。兼顾了布料仿真过程中碰撞处理的安全性与高效性,从而改善了 布料仿真碰撞处理的效果。
[0154]
参照图6,图6为图5实施例中步骤s10的具体流程示意图。本实施例基 于上述图5所示的实施例,在本实施例中,上述步骤s10包括:
[0155]
步骤s101,获取三角形网格中的全部单形;
[0156]
具体地,在布料表达的三角形网格中,将三角形网格定义为三角形集合: f={fi|i=0,1,...},每个三角形包含三个顶点,每个顶点的位置是三维空间中的 一个坐标:p
ik
=(x
ik
,y
ik
,z
ik
)
t
,其中k=0,1,2。令三角形网格所有顶点的位置拼接 为一个向量,记作p,所有顶点的总个数记作n。每个三角形的任意两个顶点 连接成一条边,每个三角形fi共有三条边。本发明实施例中,把三角形、边、 顶点统称为单形,每个单形记作si,每个单形的位置信息可以表达为si(p)。其 中,(si,sj)表示一对单形,根据顶点、边、三角形的定义,可能有多种不同类 型的单形组合成对。布料仿真中,真正影响自碰撞的单形组合包括(顶点, 三角形)和(边,边),所以本发明也只计算这两种情况下的距离。
[0157]
获取三角形网格中的全部单形,是指获取三角形网格中的全部顶点、三 角形以及边,进而计算各单形之间组成的单形对的距离,即计算顶点与三角 形的距离以及边与边的距离。
[0158]
步骤s102,计算各所述单形之间的单形对距离,其中,所述单形对距离 包括所述三角形网格中的顶点与三角形的距离以及边与边的距离;
[0159]
进一步地,获取到三角形网格中的全部单形后,即可计算各单形之间的 单形对距离,其中,(顶点,三角形)距离表示顶点pi与三角形fj=(p
j0
,p
j1
,p
j2
) 内所有的点的最近距
离,(边,边)距离表示边ei=(p
i0
,p
i1
)上所有的点与边 ej=(p
j0
,p
j1
)上所有的点的最近距离,从而可以从计算出的各单形对的距离中筛 选出距离小于预设阈值的单形对。
[0160]
步骤s103,将各所述单形对距离中小于预设阈值的单形对距离对应的单 形对作为所述目标单形对。
[0161]
更进一步地,计算出各单形之间的单形对距离后,即可将各单形对距离 中小于预设阈值的单形对距离对应的单形对作为目标单形对,即收集三角形 网格中每对距离小于阈值d
thre
的单形
[0162]
p={(si,sj)|d(si(p
(l)
),sj(p
(l)
))《d
thre
}
[0163]
其中,d
thre
的物理含义是布料的厚度参数,任意两个距离小于布料厚度的 单形都有可能导致穿插;本步骤的目的就是收集这些所有可能导致穿插的单 形对。本发明实施例中,为了简化,直接使用1毫米作为布料的厚度参数, 在其他实施例中,任意符合物理语义的布料厚度参数均可以使用。
[0164]
本实施例通过上述方案,具体通过获取三角形网格中的全部单形;计算 各所述单形之间的单形对距离,其中,所述单形对距离包括所述三角形网格 中的顶点与三角形的距离以及边与边的距离;将各所述单形对距离中小于预 设阈值的单形对距离对应的单形对作为所述目标单形对。由于任意两个距离 小于布料厚度的单形都有可能导致穿插,因此通过筛选出距离小于预设阈值 的单形对,收集所有可能导致穿插的单形对,从而提高布料仿真碰撞处理的 安全性。
[0165]
参照图7,图7为图6实施例中步骤s102的具体流程示意图。本实施例 基于上述图6所示的实施例,在本实施例中,上述步骤s102包括:
[0166]
步骤s1021,计算所述三角形网格中的各顶点与三角形的距离;
[0167]
具体地,(顶点,三角形)距离表示顶点pi与三角形fj=(p
j0
,p
j1
,p
j2
)内所有 的点的最近距离,计算方法为
[0168][0169]
其中是三角形内的pi最近点, 是对三角形的重心坐标, k
+
=mod(k+1,3),k-=mod(k+2,3)是顶点k外的其他两个顶点,c=pi+[n
·
(p
j0-pi)]n 是pi在三角形所在平面的投影点,是三角形的法向 量。
[0170]
计算所述三角形网格中的各顶点与三角形的距离的步骤包括:
[0171]
遍历所述三角形网格中的各顶点,对各所述顶点分别遍历所述三角形网 格中的各三角形,得到各所述顶点与三角形的距离;或
[0172]
对所述三角形网格进行空间划分,分别计算各划分区域内的顶点与预设 区域内的三角形之间的距离,得到各所述顶点与三角形的距离。
[0173]
具体地,为了计算所有的(顶点,三角形)距离,只需遍历所有顶点, 然后对每个顶点遍历所有三角形,分别计算距离即可;也可以使用网格空间 划分方法,把三角形按照空
间进行划分,然后对于每个顶点只需计算顶点附 近网格的三角形距离即可,进一步减少计算量。
[0174]
步骤s1021,计算所述三角形网格中的各边与边的距离。
[0175]
具体地,(边,边)距离表示边ei=(p
i0
,p
i1
)上所有的点与边ej=(p
j0
,p
j1
)上 所有的点的最近距离,计算方法为
[0176][0177]
其中
[0178][0179][0180][0181]
计算所述三角形网格中的各边与边的距离的步骤包括:
[0182]
遍历所述三角形网格中的各边,对各所述边分别遍历各所述边,得到各 所述边与边的距离;或
[0183]
对所述三角形网格进行空间划分,分别计算各划分区域内的边与预设区 域内的边之间的距离,得到各所述边与边的距离。
[0184]
同样的,为了计算所有的(边,边)距离,只需遍历所有边,然后对每 条边再遍历所有边,分别计算距离即可;也可以使用网格空间划分方法,把 所有边按照空间进行划分,然后对于每条边只需计算附近网格的边边距离即 可,进一步减少计算量。
[0185]
本实施例通过上述方案,具体通过计算所述三角形网格中的各顶点与三 角形的距离;计算所述三角形网格中的各边与边的距离。通过遍历的方式可 以分别计算出各单形对的距离,也可以通过网格空间划分方法,只计算一部 分范围内的单形对的距离,可以进一步减少计算量,确保计算过程的高效性。
[0186]
参照图8,图8为图5实施例中步骤s20的具体流程示意图。本实施例基 于上述图5所示的实施例,在本实施例中,上述步骤s20包括:
[0187]
步骤s201,基于四面体的碰撞约束,根据各所述目标单形对构建碰撞约 束方程;
[0188]
在获取到各目标单形对之后,即可基于四面体的碰撞约束构建碰撞约束 方程,以计算目标网格更新位置,其中,目标网格更新后的位置需要遵循 两个条件:(1)与当前位置足够接近;(2)当前集合中所有单形对不产 生穿插;可以表示为如下碰撞约束方程:
[0189]
[0190]
其中,c(si(p),sj(p))≥0表示一组可行域约束,限制求解结果不产生穿插。 对于每对集合p中的单形,不管是(顶点,三角形)还是(边,边),均包含 4个顶点,因此可以构成一个四面体;参照图9与图10,图9为本发明实施 例中构成四面体的第一示意图,图10为本发明实施例中构成四面体的第二示 意图,如图9与图10所示,假设4个顶点的当前位置是(ra,ri,rj,rk),由于这对 单形的距离小于d
thre
也就是布料厚度,四面体如果进一步挤压就有可能会产生 穿插,所以只需要求优化后的位置构成的四面体(pa,pi,pj,pk)不挤压即可,因 此定义
[0191]
c(si(p),sj(p))=|p
i-pa,p
j-pa,p
k-pa|-|r
i-ra,r
j-ra,r
k-ra|
[0192]
其中|
·
|是行列式符号。
[0193]
步骤s202,对所述碰撞约束方程进行线性化与等式代换处理,计算所述 目标网格更新位置。
[0194]
进一步地,基于四面体的碰撞约束,根据各目标单形对构建碰撞约束方 程后,碰撞约束方程可以在p
(l)
处线性化为:
[0195][0196]
其中,c(p
(l)
)是所有{c(si(p),sj(p))≥0|(si,sj)∈p}的向量化表示,j(p
(l)
)是雅克 比矩阵。上述线性化问题所对应的拉格朗日形式为这个拉格朗日形式对于p和λ都是 凸的,所以可以直接套用非线性优化的kkt条件:
[0197][0198]
通过等式代换,上述kkt条件可以简化为未知量只有λ的线性互补问题 (lcp):这是一个线性正定方程, 可以使用标准的gauss-seidel迭代求解,然后每次迭代后限制λ≥0即可。求 解得到λ后,带入kkt条件即可得到目标网格位置
[0199][0200]
本发明实施例通过上述方案,具体通过基于四面体的碰撞约束,根据各 所述目标单形对构建碰撞约束方程;对所述碰撞约束方程进行线性化与等式 代换处理,计算所述目标网格更新位置。通过基于四面体的碰撞约束方法, 相比传统碰撞约束,为求解过程提供了更多自由度,从而加快求解收敛,确 保了布料仿真碰撞处理的高效性。
[0201]
参照图11,图11为图5实施例中步骤s30的具体流程示意图。本实施例 基于上述图5所示的实施例,在本实施例中,上述步骤s30包括:
[0202]
步骤s301,根据所述目标网格更新位置计算安全移动距离;
[0203]
具体包括根据所述目标网格更新位置与待优化网格位置确定移动方向;
[0204]
基于所述移动方向计算安全移动距离。
[0205]
计算出目标网格更新位置后,即可根据目标网格更新位置与预先确定的 待优化网格位置确定移动方向,进而基于移动方向计算待优化网格的安全移 动距离:
[0206][0207]
其中,d
min
=min{d(si(p),sj(p))≥0|(si,sj)∈p}。这里α的几何含义是,沿着给 定移动方向d
(l)
,每个顶点的移动距离不能超过最近距离d
min
的一半,因此对 于每对有可能相交的单形,由于始终在安全距离内移动,所以移动后也不会 相交。
[0208]
步骤s302,根据所述安全移动距离计算所述布料仿真中的待优化网格更 新位置,并基于所述待优化网格更新位置确定输出网格状态。
[0209]
进一步地,计算出安全移动距离后,即可根据安全移动距离确定待优化 网格更新位置,进而通过优化终止阈值进行终止条件判定,以确定是将得到 的待优化网格更新位置作为输出网格状态,还是返回执行基于四面体的碰撞 约束,根据各目标单形对计算目标网格更新位置的步骤,确定最终的待优化 网格更新位置,即为输出网格状态,并将最终的待优化网格更新位置作为下 一时间点的待优化网格位置,进一步完成布料仿真的碰撞处理。
[0210]
本实施例通过上述方案,具体通过根据所述目标网格更新位置计算安全 移动距离;根据所述安全移动距离计算所述布料仿真中的待优化网格更新位 置,并基于所述待优化网格更新位置确定输出网格状态。通过更新移动方向 并计算安全移动距离,可以确保每对有可能相交的单形始终在安全距离内移 动,因此移动后不会相交,避免发生自交的可能,保证了布料仿真碰撞处理 的安全性。
[0211]
参照图12,图12为本发明布料仿真方法另一示例性实施例的流程示意图。 基于上述图5所示的实施例,本实施例可以在步骤s10之前实施,在其他实 施例中,本实施例也可以在步骤s10与步骤s20之间实施。
[0212]
在本实施例中,在步骤s10之前,所述布料仿真方法还包括:
[0213]
步骤s01,获取输入网格状态;
[0214]
本发明实施例中,将当前时间点的网格状态作为输入网格状态,通过当 前时间点的网格状态可以得到下一时间点的目标网格状态。
[0215]
步骤s02,基于所述输入网格状态求解弹性材质得到目标网格状态;
[0216]
进一步地,获取到输入网格状态后,可以利用布料物理解算方法,即求 解弹性材质,得到的下一时间点的目标网格状态,但此时得到的目标网格状 态有可能存在自交,因此需要通过本发明中其他各实施例中的方案得到最终 的输出网格状态,该输出网格状态是下一时间点的无自交网格状态。
[0217]
步骤s03,对所述输入网格状态与所述目标网格状态分别进行初始化,得 到所述待优化网格位置与目标网格位置。
[0218]
获得输入网格状态与目标网格状态后,对二者分别进行初始化,即可得 到待优化网格位置以及目标网格位置,这里l表示优化 迭代的步数,上标()
(l)
表示向量在当前迭代步的取值。整个迭代过程是一种双 向模式的求解优化策略,p
(l)
与在优化过程中逐步靠近直至收敛;被高 效更新提供优化目标,p
(l)
则保持始终满
足不自交的情况下一步步靠近目标位 置。
[0219]
本实施例通过上述方案,具体通过获取输入网格状态;基于所述输入网 格状态求解弹性材质得到目标网格状态;对所述输入网格状态与所述目标网 格状态分别进行初始化,得到所述待优化网格位置与目标网格位置。通过对 输入网格状态求解弹性材质得到目标网格状态,从而通过初始化得到待优化 网格位置与目标网格位置,以进一步进行双向模式的求解优化过程。
[0220]
参照图13,图13为图11实施例中步骤s302的具体流程示意图。本实施 例基于上述图11所示的实施例,在本实施例中,上述步骤s302包括:
[0221]
步骤s3021,根据所述待优化网格位置与所述安全移动距离计算所述待优 化网格更新位置;
[0222]
根据计算出的安全移动距离与初始化后的待优化网格位置,可以得到待 优化网格更新位置:
[0223]
p
(l+1)

p
(l)
+αd
(l)
[0224]
步骤s3022,计算所述待优化网格更新位置与所述目标网格更新位置之间 的网格距离;
[0225]
计算出待优化网格更新位置后,可以进一步计算目标网格更新位置与 待优化网格更新位置p
(l+1)
之间的距离,进而根据计算出的距离判断是否输出最 终的待优化网格更新位置作为下一时间点的网格位置。
[0226]
步骤s3023,判断所述网格距离是否小于预设优化终止阈值;
[0227]
判断目标网格更新位置与待优化网格更新位置p
(l+1)
之间的距离是否 小于预设优化终止阈值ε,在本发明实施例中,将ε=10-4
作为优化终止阈值。
[0228]
步骤s3024,若所述网格距离小于所述预设优化终止阈值,则将所述待优 化网格更新位置作为所述输出网格状态;
[0229]
如果目标网格更新位置与待优化网格更新位置p
(l+1)
之间的距离小于 预设优化终止阈值ε,则输出最终的待优化网格更新位置作为下一时间点的网 格位置:
[0230]
p
[t+1]

p
(l+1)
[0231]
其中,p
[t+1]
就是输出网格状态。
[0232]
步骤s3025,若所述网格距离不小于所述预设优化终止阈值,则返回执行 基于四面体的碰撞约束,根据所述目标单形对计算目标网格更新位置的步骤 以及后续步骤。
[0233]
如果目标网格更新位置与待优化网格更新位置p
(l+1)
之间的距离不小 于预设优化终止阈值ε,则返回执行基于四面体的碰撞约束,根据所述目标单 形对计算目标网格更新位置的步骤以及后续步骤,以进一步确定最终的输出 网格状态。
[0234]
本实施例通过上述方案,具体通过根据所述待优化网格位置与所述安全 移动距离计算所述待优化网格更新位置;计算所述待优化网格更新位置与所 述目标网格更新位置之间的网格距离;判断所述网格距离是否小于预设优化 终止阈值;若所述网格距离小于所述预设优化终止阈值,则将所述待优化网 格更新位置作为所述输出网格状态;若所述网格距离不小于所述预设优化终 止阈值,则返回执行基于四面体的碰撞约束,根据所述目标
单形对计算目标 网格更新位置的步骤以及后续步骤。通过终止条件判定,使p
(l)
与在优化过 程中逐步靠近直至收敛;被高效更新提供优化目标,p
(l)
则保持始终满足不 自交的情况下一步步靠近目标位置。
[0235]
参照图14,图14为本发明布料仿真方法又一示例性实施例的流程示意图。 基于上述图5所示的实施例,本实施例可以在步骤s30之后实施,在本实施 例中,在步骤s30之后,所述布料仿真方法还包括:
[0236]
步骤s40,将所述输出网格状态作为下一时间点的输入网格状态,并返回 执行获取各目标单形对的步骤以及后续步骤,直至完成所述布料仿真的过程。
[0237]
通过对当前时间点的输入网格状态进行一系列处理得到下一时间点的无 自交网格状态后,即可将输出网格状态作为下一时间点的输入网格状态,循 环执行布料碰撞处理过程,直到全部时间点的布料仿真碰撞处理完成。
[0238]
参照图15与图16,图15为本发明实施例中布料仿真碰撞处理的样例初 始状态示意图,图16为本发明实施例中布料仿真碰撞处理的样例输出状态示 意图,如图15所示,在仿真初始状态,把一块布料两端分别套在圆饼上,然 后两个圆饼分别相反方向旋转扭拧;如图16所示,在仿真的某个时间点输出, 可以看到这种复杂情况下布料仍然无自交。
[0239]
本实施例通过上述方案,具体通过将所述输出网格状态作为下一时间点 的输入网格状态,并返回执行获取各目标单形对的步骤以及后续步骤,直至 完成所述布料仿真的过程。通过对布料仿真碰撞处理的每一帧都采用本发明 提出的双向模式求解优化策略,可以完成布料仿真碰撞处理的全过程,通过 在布料仿真系统中的应用即可实现良好的效果,确保输出状态无自交。
[0240]
此外,本发明实施例还提出一种布料仿真装置,所述布料仿真装置包括:
[0241]
获取模块,用于获取各目标单形对;
[0242]
计算模块,用于基于四面体的碰撞约束,根据各所述目标单形对计算目 标网格更新位置;
[0243]
输出模块,用于根据所述目标网格更新位置得到所述布料仿真中的待优 化网格更新位置,并基于所述待优化网格更新位置确定输出网格状态。
[0244]
参照图17,图17为本发明实施例中双向模式求解优化策略的流程示意图, 如图17所示,本方案的具体步骤包括:
[0245]
步骤1、初始化待优化网格位置以及目标网格位置;
[0246]
初始化待优化网格位置以及目标网格位置这里l表 示优化迭代的步数,上标()
(l)
表示向量在当前迭代步的取值。整个迭代过程是 一种双向模式的求解优化策略,如图3所示,p
(l)
与在优化过程中逐步靠近 直至收敛;被高效更新提供优化目标,p
(l)
则保持始终满足不自交的情况下 一步步靠近目标位置。
[0247]
步骤2、计算三角形网格中任意一对单形(顶点-三角形和边-边)之间的 距离,获取距离小于阈值的单形对;
[0248]
收集三角形网格中每对距离小于阈值d
thre
的单形
[0249]
p={(si,sj)|d(si(p
(l)
),sj(p
(l)
))《d
thre
}
[0250]
其中,d
thre
的物理含义是布料的厚度参数,任意两个距离小于布料厚度的 单形都有可能导致穿插;本步骤的目的就是收集这些所有可能导致穿插的单 形对。本发明中,为了简化,直接使用1毫米作为布料的厚度参数,其他任 意符合物理语义的布料厚度参数均可以使用。
[0251]
其中,(si,sj)表示一对单形,根据顶点、边、三角形的定义,可能有多种 不同类型的单形组合成对。布料仿真中,真正影响自碰撞的单形组合包括(顶 点,三角形)和(边,边),所以本发明也只计算这两种情况下的距离。
[0252]
其中,(顶点,三角形)距离表示顶点pi与三角形fj=(p
j0
,p
j1
,p
j2
)内所有 的点的最近距离,计算方法为
[0253][0254]
其中是三角形内的pi最近点, 是对三角形的重心坐标, k
+
=mod(k+1,3),k-=mod(k+2,3)是顶点k外的其他两个顶点,c=pi+[n
·
(p
j0-pi)]n 是pi在三角形所在平面的投影点,是三角形的法向 量;
[0255]
具体地,为了计算所有的(顶点,三角形)距离,只需遍历所有顶点, 然后对每个顶点遍历所有三角形,分别计算距离即可;也可以使用网格空间 划分方法,把三角形按照空间进行划分,然后对于每个顶点只需计算顶点附 近网格的三角形距离即可,进一步减少计算量。
[0256]
其中,(边,边)距离表示边ei=(p
i0
,p
i1
)上所有的点与边ej=(p
j0
,p
j1
)上所 有的点的最近距离,计算方法为
[0257][0258]
其中
[0259][0260][0261][0262]
同样的,为了计算所有的(边,边)距离,只需遍历所有边,然后对每 条边再遍历所有边,分别计算距离即可;也可以使用网格空间划分方法,把 所有边按照空间进行划分,然后对于每条边只需计算附近网格的边边距离即 可,进一步减少计算量。
[0263]
步骤3、根据基于四面体的碰撞约束,计算目标网格更新后的位置;
[0264]
首先,计算目标网格位置然后,更新待优化网格的高效移动方向 [0265]
其中,目标网格更新后的位置需要遵循两个条件:(1)与当前位置 足够接近;(2)当前集合中所有单形对不产生穿插;可以表示为如下碰 撞约束方程:
[0266][0267]
其中,c(si(p),sj(p))≥0表示一组可行域约束,限制求解结果不产生穿插。 对于每对集合p中的单形,不管是(顶点,三角形)还是(边,边),均包含 4个顶点,因此可以构成一个四面体;假设4个顶点的当前位置是(ra,ri,rj,rk), 由于这对单形的距离小于d
thre
也就是布料厚度,四面体如果进一步挤压就有可 能会产生穿插,所以只需要求优化后的位置构成的四面体(pa,pi,pj,pk)不挤压 即可,因此定义
[0268]
c(si(p),sj(p))=|p
i-pa,p
j-pa,p
k-pa|-|r
i-ra,r
j-ra,r
k-ra|
[0269]
其中|
·
|是行列式符号。
[0270]
其中,碰撞约束方程可以在p
(l)
处线性化为:
[0271][0272]
其中,c(p
(l)
)是所有{c(si(p),sj(p))≥0|(si,sj)∈p}的向量化表示,j(p
(l)
)是雅克 比矩阵。上述线性化问题所对应的拉格朗日形式为这个拉格朗日形式对于p和λ都是 凸的,所以可以直接套用非线性优化的kkt条件:
[0273][0274]
通过等式代换,上述kkt条件可以简化为未知量只有λ的线性互补问题 (lcp):这是一个线性正定方程, 可以使用标准的gauss-seidel迭代求解,然后每次迭代后限制λ≥0即可。求 解得到λ后,带入kkt条件即可得到目标网格位置
[0275][0276]
步骤4、根据目标网格更新后的位置以及初始位置,更新移动方向,基于 移动方向,计算安全移动距离;
[0277]
计算待优化网格的安全移动距离:
[0278]
[0279]
其中,d
min
=min{d(si(p),sj(p))≥0|(si,sj)∈p}。这里α的几何含义是,沿着给 定移动方向d
(l)
,每个顶点的移动距离不能超过最近距离d
min
的一半,因此对 于每对有可能相交的单形,由于始终在安全距离内移动,所以移动后也不会 相交。
[0280]
步骤5、根据安全移动距离,获取待优化网格位置,作为下一时间点的网 格位置。
[0281]
随后,更新待优化网格位置:
[0282]
p
(l+1)

p
(l)
+αd
(l)
[0283]
终止条件判定:若目标网格位置与待优化网格位置p
(l+1)
距离小于阈值 ε,则输出最终的待优化网格位置作为下一时间点的网格位置:
[0284][0285]
其中,p
[t+1]
就是输出网格状态。
[0286]
否则返回步骤3。其中,本发明中,ε=10-4
表示优化终止阈值。
[0287]
在本实施例中,通过布料仿真碰撞处理方法,解决了相关技术中无法同 时兼顾安全性与高效性的问题,特别是提出了一种双向模式的求解优化策略 来提升高效性与满足安全性;其次本方法实现简单,并且数值安全,不需要 做额外的复杂数值处理;最后方法兼容现有的布料仿真整体流程,可以直接 插入到现有的布料仿真系统中使用,在提高安全性的同时也提升了高效性, 实现改善布料仿真碰撞处理效果的目的。
[0288]
本实施例实现布料仿真的原理及实施过程,请参照上述各实施例,在此 不再赘述。
[0289]
此外,本发明实施例还提出一种终端设备,所述终端设备包括存储器、 处理器及存储在所述存储器上并可在所述处理器上运行的布料仿真程序,所 述布料仿真程序被所述处理器执行时实现如上所述的布料仿真方法的步骤。
[0290]
由于本布料仿真程序被处理器执行时,采用了前述所有实施例的全部技 术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效 果,在此不再一一赘述。
[0291]
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读 存储介质上存储有布料仿真程序,所述布料仿真程序被处理器执行时实现如 上所述的布料仿真方法的步骤。
[0292]
由于本布料仿真程序被处理器执行时,采用了前述所有实施例的全部技 术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效 果,在此不再一一赘述。
[0293]
相比现有技术,本发明实施例提出的布料仿真方法、装置、终端设备以 及存储介质,通过获取各目标单形对;基于四面体的碰撞约束,根据各所述 目标单形对计算目标网格更新位置;根据所述目标网格更新位置得到所述布 料仿真中的待优化网格更新位置,并基于所述待优化网格更新位置确定输出 网格状态。通过各目标单行对得到最终无自交的输出网格状态,保证了碰撞 处理的安全性;同时通过基于四面体的碰撞约束,为计算目标网格更新位置 提供了更多自由度,从而加快收敛,确保了布料仿真过程中碰撞处理的高效 性。兼顾了布料仿真过程中碰撞处理的安全性与高效性,从而改善了布料仿 真碰撞处理的效果。
[0294]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体 意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或 者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还 包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情 况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、 方法、物品或者系统中还存在另外的相同要素。
[0295]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0296]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述 实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通 过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的 技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体 现出来,该计算机软件产品存储在如上的一个存储介质(如rom/ram、磁碟、 光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务 器,被控终端,或者网络设备等)执行本技术每个实施例的方法。
[0297]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是 利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间 接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1