推荐阅读 https://zhuanlan.zhihu.com/p/30683652
model mesh X 有M个点, P个三角形 N个instance meshes
公式(1), k为第几个三角形, j为每个三角形的第几个点, i是第i个instance模型 Q k i Q^i_k Qki为匹配第i个instance模型 , 第k个三角形的形变
然后模型呢有很多rigid parts, 每个三角形属于某个特定的rigid part, 两个相信的rigid parts 之间会有一个Joint
l [ k ] l[k] l[k]为跟第k个三角形所属的rigid part R l [ k ] i R^i_{l[k]} Rl[k]i, 第k个三角形所属的rigid part的rigid形变.
公式(2), 给定形变,然后以每个三角形的第一点作为原点来计算最终的y
4.2 相邻两个rigid parts产生一个joint, 这个joint的相对形变就为 R l 1 T R l 2 R^T_{l_1}R_{l_2} Rl1TRl2 后面 t , θ t, \theta t,θ是从rotation matrix到twist的转换公式
Q k i = Q a k ( △ r l [ k ] i ) Q^i_k=\mathcal Q_{\mathbf a_k}(\triangle r^i_{l[k]}) Qki=Qak(△rl[k]i) 输入是每个三角形最近两个joints的形变, 输出就是该三角形的形变 Q k Q_k Qk 怎么转换呢? 需要中间变量 a k \mathbf a_k ak, 我们将 [ △ r l [ k ] i 1 ] \begin{bmatrix}\triangle r^i_{l[k]} \\ 1 \end{bmatrix} [△rl[k]i1]通过 7 × 9 7 \times 9 7×9的矩阵转换到 Q Q Q的9个元素 当已知 Q Q Q的时候,我们就可以将 7 × 9 7 \times 9 7×9的矩阵( a k \mathbf a_k ak)通过公式(4)训练出来,
但是 Q Q Q是不知道的, 要怎么去算呢? 可以通过公式(5), 注意 l k 1 = l k 2 l_{k_1}=l_{k_2} lk1=lk2表示相邻的两个rigid parts是属于同一个rigid parts
跟Pose deformation的思想一样, 还是要训练一组中间变量
输入是the mesh-specific coefficients β i \beta^i βi, 输出是 S i S^i Si, 注意每个三角形都一个 S k i S^i_k Ski
过程跟4差不多, 先是通过公式(8), 算出 S k i S^i_k Ski, 这样就得到了 S i S^i Si, 然后建立一个 β i \beta^i βi到 S k i S^i_k Ski的全链接, 链接线上的参数也就是这里的 U , μ U, \mu U,μ
公式(9), 类似于公式(2), 给定一组形变, 然后算出最终模型点的位置
公式(10), 第二部分作了匹配点上的约束, 将匹配硬拉过来, 同时用第一部分来实现前面的形变约束. 具体迭代这里就不细讲了
7,8 也不讲了
