4.Rigid Contacts_冲突文件_zkx_20240828215918
最后更新于
最后更新于
基于物理
基于 shape matching
Particle Collision Detection and Response
Penalty methods
Impulse methods
Rigid Collision Detection and Response by Impulse
Shape Matching
计算一个点在某个区域的内侧外侧,以及到区域边缘的距离
常用的 3D SDF Example
复杂的 SDF
扇形,布尔操作,三个距离函数相交,与操作
内侧只需要知道 max
外侧不需要知道值
或操作
Quadratic Penalty Method 二次碰撞方法
穿透产生了才产生碰撞和反向力,可能会导致 Artifact 穿模
预先加上一层外部偏移
可能会产生
k 太小,还是穿模
k 太大,overshooting
使用 Log-Barrier Penalty Method 来定义 k 的大小
可以保证粒子永远不会穿透表面
假定点是立刻更新的,利用方向和距离得到点的更新
速度也要更新
u 弹性系数,a 摩擦系数 a 的计算遵循库仑定律,另外希望 a 足够小
算 a 是算动摩擦和静摩擦,取较大值 静摩擦看作无穷大的摩擦力能让物体停下来
可以比较精确的控制反弹的位置
对每个点检测
只需要修改整个刚体的速度和角速度
碰撞点对刚体的速度和角速度做出贡献,然后再反推回每个点当前的速度
叉乘可以写作矩阵形式,要先把左边的向量写成叉乘矩阵
点 i 的速度对于冲量的变化
速度更新算法
细节
多点碰撞,用多点的平均值
重力导致物体反复震荡 (oscillation),用衰减 u 的方式来 hack 避免抖动问题
不更新位置,因为是一个非线性问题
假设每个点没有互相的约束,也就没有力矩角速度这些。 模拟完再重新组合成原本的约束,
c 是质心,argmin 是取得函数中的最小值 希望所有的 xi 与 yi 足够接近
优化问题本质上是一阶导 = 0,假设质心是 0 点,那么所有点的向量的求和为 0
刚体是没有本地形变,本地缩放的,所以可以省掉一些矩阵运算
容易和多种模拟相结合
难以实现多种约束
对模拟精度要求不高