Skip to content

Hierarchy in wiki:


变形体

90-00初

变形体和三角网格的处理的经典论文是:

  1. [Bridson02] Robust Treatment of Collisions, Contact and Friction for Cloth Animation
  2. [Provet97] Collision and self-collision handling in cloth model dedicated to design garments

其中这两篇论文几乎可以说是篇篇论文都在引了。其主要的思想在于

Provet 97

简介

这篇论文之所以重要,是因为其提出了三角网格产生碰撞一个充分必要条件:对于三角网格而言,其产生碰撞,当且仅当,存在

  1. Vertical - Triangle (原文 Point Triangle collision)碰撞
  2. Edge - Edge 碰撞

之一(或兼有)

显然的是,两个碰撞都导致了四点共面的情况。根据空间几何的知识,\(\mathbf x_{1}\cdots\mathbf x_4\) 共面,当且仅当:

\[ (\mathbf x_{12}\quad \mathbf x_{13} \quad \mathbf x_{14}) = 0 \]

其中 \((\quad )\)记号为混合积。因此为检测碰撞,转化为求解一个关于 \(t\) 的三次方程,即:

\[ \exists t \in [0, 1]\quad (\mathbf x_{12}\quad \mathbf x_{13} \quad \mathbf x_{14}) = 0 \]

其中的三次方程采用牛顿法求解。

求解出 \(t\) 是不够的,因为方程可能出现 V 不处于 T 内部,或 E 和 E 不交的情况,但考虑到已经共面,下一步的判断是简单的,几乎不需要计算。因此该算法主要的计算量在于三次方程的求解上。

Broad Phase 剔除

  1. BVH
  2. 计算曲率:根据显然的事实 — 给定一个曲面局部,如果它是凸的,且有充分低的曲率,则其不可能产生自相交。

Impact Zone

为了消除一个碰撞,可能会引入其他的碰撞,这是因为在处理碰撞的时候,我们只针对当前选出来的碰撞对进行更新,在该更新过程中是不考虑其他点的情况的。

因此,若一个 Impact Zone 在充分大的时候,考虑Frozen,并通过群速度、群角速度进行整体更新。

相关内容

  1. Fast CCD
  2. Safe CCD
  3. Tight CCD

Bridson 02

这篇嘛是一个完整的Workflow介绍了,从文章标题也能看出来主要是为了准确和高鲁棒性来实现的。主要还是处理了自碰撞的问题。

碰撞检测

Broad-Phase:AABB,自下而上构造。

Narrow-Phase:还是基于上面的共面,但是判断是否在内部改进为解线性方程组(分解到现有基底上)

处理

摩擦:库伦定律(摩擦角)用于静摩擦和动摩擦。

Rigid Impact Zone:用于失败的补偿机制