在物理学中,力与势能密切相关,具体来说,力的作用是试图让系统达到一个势能最小化的状态,对于一个质点,如果势能函数为 Ψ(x),那么质点在 x 处受到的力 f 可以表示为
f=−∇Ψ(x)
也就是说,力总是指向势能减小的最快方向 (梯度下降)
在连续介质力学中,势能 Ψ 是变形势能,它是材料在变形状态下存储的能量,并且它的参数是 F(x),F 是变形梯度,它是位移向量 x 的函数,最终的势能函数是 Ψ(F(x)) 描述了材料在不同形变状态下的弹性能量,此时计算力需要用链式法则
f=−∇Ψ(F(x))=∂x∂Ψ(F(x))=∂F∂Ψ∂x∂F
测量变形 Measuring Deformation
我们首先从测量变形开始,我们有变换之前的坐标 x 和变换之后的坐标 x,变换本身可以表示为一个仿射变换
x=Fx+t
仿射变换携带以下类型的变换
要想衡量物体的形变程度,我们需要从仿射变换中去除大部分信息,具体来说是 旋转,反射,位移
去除位移
要想去除位移,我们求 x 对 x 的偏导数
∂x∂x=∂x∂(Fx+t)=F
F 被称为 变形梯度 deformation gradient,它不再包含位移,但仍然包含旋转,缩放,反射等信息,我们可以用它来进一步想办法衡量形变
去除旋转,构造弹性势能函数
我想办法进一步从 F 中去除旋转等干扰信息,并根据最终矩阵计算变形程度,将矩阵变为 “标量的变形程度” (衡量弹性势能) 的一个简单做法是计算矩阵的 Frobenius范数平方 squared Frobenius norm
∥A∥F∥A∥F2=ij∑∣aij∣2=ij∑∣aij∣2
St. Venant Kirchhoff StVK
若 F 是纯旋转矩阵,那么它应该是正交变换,有 FTF=I,也就是说 F−1=FT,所以可以借助这个性质来构造一个衡量形变的函数
ΨStVK=21∥FTF−I∥F2
这种方法的缺点是造成极其不线性的结果,因为 FTF 本身变为二次,而 ℓF-范数 的平方本身又施加了一个平方,所以得到四次的非线性结果
As-Rigid-As-Possible ARAP
我们可以直接对变形梯度矩阵 F 进行 极分解 polar decomposition 将其分解为旋转矩阵和缩放矩阵
F=RS
如此一来我们可以构造 ARAP 能量
ΨARAP=∥F−R∥F2
Dirichlet
Dirichlet 能量实际上不去除旋转,它只是变形梯度的Frobenius范数平方
ΨDirichlet=∥F∥F2
也就是说,即使变形只是一个刚体旋转,Dirichlet 能量也会产生非零值。这在许多情况下并不是我们期望的,因为理想情况下,我们希望能量只与拉伸或剪切等实际变形相关
Neo-Hookean
Neo-Hookean 能量只是测量标准矩阵
ΨNeo-Hookean=∥F∥F2−3
- 这是因为 ∥I∥F2=3
注意这还不是完整的 Neo-Hookean 模型