论文阅读:Deformation Graph

Title:Embedded Deformation for Shape Manipulation
Paper: www.graphics.ethz.ch/~sumnerb/research/embdef/Sumner2007EDF.pdf
Code: https://github.com/hwdong/deformation_graph (非作者提供)

介绍

这篇论文主要讲的是用embedded deformation graph 来表示三维模型表面的变形。主要分为三步:

  • 建立变形图(Deformation Graph)
  • 对一些点进行变形(例如用户拖拽了一些点)
  • 已变形点会对未变形点产生作用,根据这种作用对未变形点进行变形

模型

作者认为模型的变形可以认为是有一组仿射变换表示。因此作者对模型表面进行采样,(一般为均匀采样),将采样的点建立一个图G。

例如模型的表面有10000个点,反复地在点附近删除一定半径内的所有点,直至达到期望的采样密度,最后得到500个点,这些点都由边相连。每个点都有两个属性:时间、仿射变换。也就是说每个时刻,每个点都有自己对应的仿射变换。下面我们对某一个时刻进行分析:

对于图上的某个节点来说, $g_j \in R^3$是它此刻的三维坐标,$N(j)$是与它有边相连的点的集合即相邻点集合,该点对应的仿射变换由$R_j$这个$3\times 3$矩阵和$t_j$这个$3 \times 1$ 这个向量组成。

当$g_j$发生变形了后,比如用户给他拽到了某个位置后,其他的点就会被它连着动起来。其他点受$g_j$的影响得到的新坐标如下:

这个公式表示的是未变形点受到一个变形点的影响。注意,当$p$就是$g_j$时,计算出来的$g_j +t_j$就是$g_j$的新位置。

当然,变形点可能不止一个,当受到多个变形点影响时,可以对他们加权:

权重和点之间的距离有关,越远的点施加的影响就越小:

其中 $d_{max}$表示$v_i$到第$k+1$近的点的距离,这样可以控制只受最近$k$个点影响。
例如,$v_i$的邻点与$v_i$的距离分别为2,3,4,7,11,15,…。当我们取$k=4$时,$d_{max}=9$,
此时我们只计算前四个点对$v_i$的影响,过远的点我们就不考虑了。

优化

论文提出了三个约束:$E_{rot},E_{reg},E_{con}$。

作者认为为了保证细节,仿射变换的$R$,必须尽量是旋转矩阵。要使$R$是旋转矩阵,则必须满足$SO(3)$(旋转群),也就是六个条件:三个列必须两两正交,三个列必须都是单位长度:

上式中的$c_1,c_2,c_3$分别是$R$的三个列向量。所以旋转项的约束$E_{rot}$:

接下来第二项约束的是点的联动。作者想要优化的是点自己的真实坐标,和通过其他点计算得到的坐标应该是一致的:

最后一个约束表示的是计算出来的点的坐标要符合用户的要求,比如用户把一个点$p$拽到了位置$A$,那么你的模型计算出来的$p$的位置必须也是$A$:

上式中,$l=1,2,..p$是用户的约束,$q_l$是用户约束下的位置,$index(l)$是约束$l$对应的顶点的索引,所以$v’_{index(l)}$就是通过我们模型计算得到的坐标,它和用户约束给定的位置应该是一致的。

最后问题就可以写成:

其中三个权重作者取值为$w_{rot}=1,w_{reg}=10,w_{con}=100$。

上述问题使用高斯牛顿法来求解,这个就不介绍了。