力和能量 Force and Energy

从势能梯度、变形梯度和常见弹性能量模型理解力与能量的关系。

在物理学中,力与势能密切相关,具体来说,力的作用是试图让系统达到一个势能最小化的状态,对于一个质点,如果势能函数为 Ψ(x)\Psi(\mathbf{x}),那么质点在 x\mathbf{x} 处受到的力 f\mathbf{f} 可以表示为

f=Ψ(x)\mathbf{f} = -\nabla \Psi(\mathbf{x})

也就是说,力总是指向势能减小的最快方向 (梯度下降)
在连续介质力学中,势能 Ψ\Psi 是变形势能,它是材料在变形状态下存储的能量,并且它的参数是 F(x)\mathbf{F(\mathbf{x})}F\mathbf{F} 是变形梯度,它是位移向量 x\mathbf{x} 的函数,最终的势能函数是 Ψ(F(x))\Psi(\mathbf{F(\mathbf{x})}) 描述了材料在不同形变状态下的弹性能量,此时计算力需要用链式法则

f=Ψ(F(x))=xΨ(F(x))=ΨFFx\mathbf{f} = -\nabla\Psi(\mathbf{F(\mathbf{x})}) = \frac{\partial}{\partial \mathbf{x}} \Psi(\mathbf{F(\mathbf{x})}) = \frac{\partial\Psi}{\partial \mathbf{F}}\frac{\partial\mathbf{F}}{\partial \mathbf{x}}

测量变形 Measuring Deformation

我们首先从测量变形开始,我们有变换之前的坐标 x\mathbf{\overline{x}} 和变换之后的坐标 x\mathbf{x},变换本身可以表示为一个仿射变换

x=Fx+t\mathbf{x} = \mathbf{F}\mathbf{\overline{x}} + \mathbf{t}

仿射变换携带以下类型的变换

  • 旋转
  • 缩放
  • 反射
  • 位移

要想衡量物体的形变程度,我们需要从仿射变换中去除大部分信息,具体来说是 旋转,反射,位移

去除位移

要想去除位移,我们求 x\mathbf{x}x\mathbf{\overline{x}} 的偏导数

xx=x(Fx+t)=F\frac{\partial \mathbf{x}}{\partial \mathbf{\overline{x}}} = \frac{\partial}{\partial \mathbf{\overline{x}}} (\mathbf{F}\mathbf{\overline{x}} + \mathbf{t}) = \mathbf{F}

F\mathbf{F} 被称为 变形梯度 deformation gradient,它不再包含位移,但仍然包含旋转,缩放,反射等信息,我们可以用它来进一步想办法衡量形变

去除旋转,构造弹性势能函数

我想办法进一步从 F\mathbf{F} 中去除旋转等干扰信息,并根据最终矩阵计算变形程度,将矩阵变为 “标量的变形程度” (衡量弹性势能) 的一个简单做法是计算矩阵的 Frobenius范数平方 squared Frobenius norm

AF=ijaij2AF2=ijaij2\begin{align*} \| \mathbf{A} \|_F &= \sqrt{\sum_{ij}|a_{ij}|^2} \\ \| \mathbf{A} \|_F^2 &= \sum_{ij}|a_{ij}|^2 \end{align*}

St. Venant Kirchhoff StVK

F\mathbf{F} 是纯旋转矩阵,那么它应该是正交变换,有 FTF=I\mathbf{F}^T\mathbf{F} = \mathbf{I},也就是说 F1=FT\mathbf{F}^{-1}=\mathbf{F}^T,所以可以借助这个性质来构造一个衡量形变的函数

ΨStVK=12FTFIF2\Psi_{\text{StVK}} = \frac{1}{2} \| \mathbf{F}^T\mathbf{F} - \mathbf{I} \|_F^2

这种方法的缺点是造成极其不线性的结果,因为 FTF\mathbf{F}^T\mathbf{F} 本身变为二次,而 F\ell_F-范数 的平方本身又施加了一个平方,所以得到四次的非线性结果

As-Rigid-As-Possible ARAP

我们可以直接对变形梯度矩阵 F\mathbf{F} 进行 极分解 polar decomposition 将其分解为旋转矩阵和缩放矩阵

F=RS\mathbf{F} = \mathbf{R}\mathbf{S}

如此一来我们可以构造 ARAP 能量

ΨARAP=FRF2\Psi_{\text{ARAP}} = \|\mathbf{F} - \mathbf{R} \|_F^2

Dirichlet

Dirichlet 能量实际上不去除旋转,它只是变形梯度的Frobenius范数平方

ΨDirichlet=FF2\Psi_{\text{Dirichlet}} = \|\mathbf{F} \|_F^2

也就是说,即使变形只是一个刚体旋转,Dirichlet 能量也会产生非零值。这在许多情况下并不是我们期望的,因为理想情况下,我们希望能量只与拉伸或剪切等实际变形相关

Neo-Hookean

Neo-Hookean 能量只是测量标准矩阵

ΨNeo-Hookean=FF23\Psi_{\text{Neo-Hookean}} = \|\mathbf{F}\|_F^2 - 3
  • 这是因为 IF2=3\|\mathbf{I}\|_F^2 = 3

注意这还不是完整的 Neo-Hookean 模型