5.Cloth Simulation_冲突文件_zkx_20240828215918
布料模拟 二维的面在三维中展开的状态
A Mass-Spring System
Explicit Integration
Implicit Integration
Bending and Locking Issues
Shape matching
A Mass Spring System
弹簧质点系统
一个理想的弹簧, 胡克定律:试图恢复原状,拉的越长力越大 F = kx 拉越长能量越大

xi 的能量是各个弹簧的能量累加

Structured Spring Networks
结构化表示弹簧网络
假设衣物是结构化的

右边是更优化的,能够减少很多弹簧
不规则的弹簧连接

利用内部边的对角构建抗弯曲的弹簧
通过 Vertex list 和 Triangle list 信息生成弹簧

不能直接拿三角形边的信息,因为会有重复边
构建 Triple list,删除重复数据,用排序的方式删除 同时生成内部边的垂直弹簧

显示积分更新所有质点信息

显示积分的弊端 如果时间步长太大,第二次模拟质点会过远,并超过之前的绝对值

隐式积分 Implicit Integration
在当前时刻 f [1] 是不知道的

holonomic 只和位置有关系的力 把 f 写成 f(x_1),不是线性的力
认为 x[1] 是 F(x) 的最小值
这个隐式积分做法是把数值解转化为解析解,目标是求得 x_1 ,认为在 x_1 处,对于力的函数的求导为 0,也就是弹簧能够平衡的位置,以此来更新速度。
认为下一帧的 x 一定是受力平衡点,以此来求得能够达到目标点的速度。而不是显示积分,通过时间步长,由受力推出速度。
但是由一阶导数式反推出 F(x) 很难,这边是已经知道了
Newton-Raphson Method 牛顿法 数值解逼近目标值,利用一阶的泰勒展开

一阶导为 0 可能是最大值或最小值,此时看二阶导

只能找到局部最小值,local minimal ,没有什么好的方法找到全局最小值。 限定二阶导永远大于 0,可以限定只有一个最小值。
三维的牛顿法
用牛顿迭代法来求 x_1

非线性优化问题,各种解各种物理系统的核心
弹簧系统的 Hessian

弹簧的 Hessian 矩阵是弹簧 F(x) 的二阶导
在拉伸的时候,它是正定的,表示其有唯一解

挤压上不正定,可能有各种状态

用 Jacobi 方法多次迭代

Jacobi 可以用 GPU 加速
最后更新于
这有帮助吗?