Physics-Based Cloth Simulation
January 8, 2022About 2 min
Physics-Based Cloth Simulation
A Mass-Spring System
An Ideal Spring
Explicit Integration of A Mass-Spring System
显示积分有一个问题,如果弹性系数过大,弹簧会来回弹跳。
Implicit Integration
弹力是一个 holonomic,只跟位置相关的方程。
Newton-Raphson Method
解决非线性系统
限制:函数需要连续
一阶导数就是在描述一个函数的切方向
对一个函数的一阶导数做一个泰勒展开:
也就是一阶导数可以是在k
位置的一阶导数加上k
位置的二阶导数乘以Δx
。
方法流程就是:

从
函数的一阶导数等于0时,既可以是最大值也可以最小值。可以使用二阶导数来判断是最大值还是最小值:
- F''(x)> 0 ,最小值
- F''(x)< 0 ,最大值
- 如果二阶导数永远大于0,那么函数没有最大值,存在唯一的一个最小值。
Simulation by Newton`s Method
Implicit Simulation
我们就对每一个顶点模拟,计算它的速度与位置。
Step 1 Initial
- 初始速度为重力速度:
- 然后计算初步预测每个点的位置:
- 同步初步预测位置到每个点:
Step 2 Grandient Calculation
我们使用隐式积分计算速度与位置是:
我们可以用速度计算出位置
然后可以转为以下公式,最后对
对于每一个顶点的梯度就是为:
这里的力包含了弹力和重力,弹力可以使用公式得到:

这里每个顶点的弹力是相互的,相加为零。同时一个顶点可能会被多个弹簧相连,所以我们需要计算当前顶点的所有弹力相加。

我们就对所有弹簧遍历,对每根弹簧上的顶点计算弹力,然后叠加到梯度上去,我们可以得到公式:
Step 3 Finishing
我们这里使用简单的方式来代替计算Hessian
矩阵,更新位置使用梯度的公式:
同时再更新速度:
Bending and Locking Issues
A CO-Rotational Method
The Locking Issue
拉伸和弯曲时独立的问题
弹簧锁死翻折
Position Base Dynamics
问题
收敛 是什么意思?
- 效果,效率
隐式积分与显示积分的区别?