SMPL论文解读和相关基础知识介绍
本文首发于微信公众号:视觉三维重建 ,欢迎大家关注公众号,和你分享计算机视觉算法工程师工作的点点滴滴。
文章目录
1.动画制作专业术语
科普几个有关动画制作的关键词(可能不是很正确),对于一个动画人物模型,比如Unity模型,有:
- 顶点(vertex):动画模型可以看成多个小三角形(四边形)组成,每个小三角形就可以看成一个顶点。顶点越多,动画模型越精细。
- 骨骼点:人体的一些关节点,类似于人体姿态估计的关键点。每个骨骼点都由一个三元组作为参数去控制(可以查看欧拉角,四元数相关概念)
- 骨骼蒙皮(Rig):建立骨骼点和顶点的关联关系。每个骨骼点会关联许多顶点,并且每一个顶点权重不一样。通过这种关联关系,就可以通过控制骨骼点的旋转向量来控制整个人运动。
- 纹理贴图:动画人体模型的表面纹理,即衣服裤子这些。
- BlendShape:控制动画角色运动有两种,一种是上面说的利用Rig,还有一种是利用BlendShape。比如:生成一种笑脸和正常脸,那么通过BlendShape就可以自动生成二者过渡的动画。这种方式相比于利用Rig,可以不定义骨骼点,比较方便。
- 蒙皮:将模型从一个姿态转变为另一个姿态,使用的转换矩阵叫做蒙皮矩阵。(Linear Blend Skinning算法)
- 顶点权重(vertex weights):用于变形网格mesh
- uv map:将3D多边形网格展开到2D平面得到 UV图像
- texture map:将3D多边形网格表面的纹理展开到2D平面,得到纹理图像
- 拓扑(topology):重新拓扑是将高分辨率模型转换为可用于动画的较小模型的过程。两个mesh拓扑结构相同是指两个mesh上面任一个三角面片的三个顶点的ID是一样的(如某一个三角面片三个顶点是2,5,8;另一个mesh上也必有一个2,5,8组成的三角面片)
- linear blend skinning algorithm
每个关节的数据结构包含:关节名字、骨骼中其父节点的索引、关节的绑定姿势之逆变换(蒙皮网格顶点绑定至骨骼时,关节的位置、定向及缩放)
2.SMPL
2.1 简介
smpl是指2015 马普的一篇文章“SMPL: a skinned multi-person linear model”中构建的人体参数化三维模型,人体可以理解为是一个基础模型和在该模型基础上进行形变的总和,在形变基础上进行PCA,得到刻画形状的低维参数——形状参数(shape);同时,使用运动树表示人体的姿势,即运动树每个关节点和父节点的旋转关系,该关系可以表示为三维向量,最终每个关节点的局部旋转向量构成了smpl模型的姿势参数(pose)。
这种方法与传统的LBS的最大的不同在于其提出的人体姿态影像体表形貌的方法,这种方法可以模拟人的肌肉在肢体运动过程中的凸起和凹陷。因此可以避免人体在运动过程中的表面失真,可以精准的刻画人的肌肉拉伸以及收缩运动的形貌。
在SMPL文章中介绍了SMPL的总体模型,这个模型是通过训练得到,就是一些参数, 该模型中β和θ是其中的输入参数,其中β代表人体高矮胖瘦、头身比等比例的10个参数,θ是代表人体整体运动位姿和24个关节相对角度的75(24*3+3;每个关节点3个自由度,再加上3个根节点)个参数,β参数是ShapeBlendPose参数,可以通过10个增量模板控制人体形状变化: 具体而言:每个参数控制人体形态的变化可以通过动图来刻画。
2.2 基本原理
(a )中的是由平均顶点集以及权重所描述的人体模型。
(b )中平均顶点集在体态的影响下发生了位移,同时体态对关节 J J J也产生了影响。
(c )平均顶点集在体态与动作的两重影响下发生的位移,注意此时的图并未有任何的pose。
(d) shape和pose双重影响下的SMPL模型;总共四项,分别为经过体型与姿势影响的顶点集、经过体型影响的关节,以及姿势和权重。
1. 模型生成的函数
M M M : SMPL function
W W W : Skinning function
B p B_p Bp : Pose blendshapes function
B s B_s Bs : Shape blendshapes function
J J J : Joint regressor: Predicts joints from surface
M ( β ⃗ , θ ⃗ ) = W ( T P ( β ⃗ , θ ⃗ ) , J ( β ⃗ ) , θ ⃗ , W ) M(\vec{\beta}, \vec{\theta})=W\left(T_{P}(\vec{\beta}, \vec{\theta}), J(\vec{\beta}), \vec{\theta}, \mathcal{W}\right) M(β,θ)=W(TP(β,θ),J(β),θ,W)
W ( T ‾ , J , θ ⃗ , W ) : R 3 N × 3 K × ∣ θ ⃗ ∣ × ∣ W ∣ ↦ R 3 N W(\overline{\mathbf{T}}, \mathbf{J}, \vec{\theta}, \mathcal{W}): \mathbb{R}^{3 N \times 3 K \times|\vec{\theta}| \times|\mathcal{W}|} \mapsto \mathbb{R}^{3 N} W(T,J,θ,W):R3N×3K×∣θ∣×∣W∣↦R3N(the standard linear blend skinning function) :从模板 smpl模型中取vertics T ‾ \overline{\mathbf{T}} T ,joint locations J J J ,a pose θ ⃗ \vec{\theta} θ and the blend weights W \mathcal{W} W ,输出posed vertices
J ( β ⃗ ) : R ∣ β ⃗ ∣ ↦ R 3 K J(\vec{\beta}): \mathbb{R}^{|\vec{\beta}|} \mapsto\mathbb{R}^{3 K} J(β):R∣β∣↦R3K :a function to predict K joint locations ;
T P ( β ⃗ , θ ⃗ ) = T ‾ + B S ( β ⃗ ) + B P ( θ ⃗ ) T_{P}(\vec{\beta}, \vec{\theta})=\overline{\mathbf{T}}+B_{S}(\vec{\beta})+B_{P}(\vec{\theta}) TP(β,θ)=T+BS(β)+BP(θ)
B S ( β ⃗ ) : R ∣ β ⃗ ∣ ↦ R 3 N B_{S}(\vec{\beta}): \mathbb{R}^{|\vec{\beta}|} \mapsto \mathbb{R}^{3 N} BS(β):R∣β∣↦R3N : a blend shape function; input : shape parameters β ⃗ \vec{\beta} β;output : a blend shape sculpting the subject identity
B P ( θ ⃗ ) : R ∣ θ ∣ ↦ R 3 N B_{P}(\vec{\theta}): \mathbb{R}^{|\theta|} \mapsto \mathbb{R}^{3 N} BP(θ):R∣θ∣↦R3N :a pose-dependent blend shape function ; θ ⃗ \vec{\theta} θ :a vector of pose parameters ,accounts for the effects of posedependent deformations
2. 模型输入的参数
β ⃗ \vec{\beta} β : shape parameters
θ ⃗ \vec{\theta} θ : Pose parameters
ω ⃗ \vec{\omega} ω