这篇paper里,作者提出了SMPL模型(一种人体三维模型),这种模型特点:
- 有皮肤(骨骼蒙皮),纹理。
- 基于顶点的模型,方便调整以适应各种人体形状以及姿态。
SMPL模型是从数据里面学习出来的,这个模型比目前业界效果更好,且和工业界的Unity,Maya是打通的。
动画制作关键词
这里科普几个有关动画制作的关键词(不是专业做动画的,有些关键词含义可能会有一些不恰当的地方,欢迎指正),对于一个动画人物模型,比如Unity模型,有:
- 顶点(mesh):动画模型可以看成多个小三角形(四边形)组成,每个小三角形就可以看成一个顶点。顶点越多,动画模型越精细。
- 骨骼点:人体的一些关节点,类似于人体姿态估计的关键点。每个骨骼点都由一个三元组作为参数去控制(可以查看欧拉角,四元数相关概念)
- 骨骼蒙皮(Rig):建立骨骼点和顶点的关联关系。每个骨骼点会关联许多顶点,并且每一个顶点权重不一样。通过这种关联关系,就可以通过控制骨骼点的旋转向量来控制整个人运动。
- 纹理贴图:动画人体模型的表面纹理,即衣服裤子这些。
- BlendShape:控制动画角色运动有两种,一种是上面说的利用Rig,还有一种是利用BlendShape。比如:生成一种笑脸和正常脸,那么通过BlendShape就可以自动生成二者过渡的动画。这种方式相比于利用Rig,可以不定义骨骼点,比较方便。
- 蒙皮:将模型从一个姿态转变为另一个姿态,使用的转换矩阵叫做蒙皮矩阵。
现有3D人体模型的缺点
- 没有骨骼蒙皮:得到人体3D模型之后还需要加rig,太麻烦。而且还需要手工调整表面纹理贴图。
- 和现有商业软件不兼容。
- 不够真实,难以应对各种各样的姿态。
LBS是一种典型的业界普遍使用的骨骼蒙皮方法,下面是一张效果对比图:
可以看出最左边的LBS以及DQBS在胯部存在很大的artifacts,其他算法相对要好些。
作者方法的优点
- 与工业界软件兼容,比如Unity,Maya。
- 将pose blend shapes建模成rotation matrices(旋转矩阵)的线性函数。因为旋转矩阵的元素是有界的,所产生的变形也是有界的,有助于模型更好地推广。
作者使用PCA从CAESAR 数据集学习了一个body shapes的线性模型。方法分为两步:
- 对于每一个扫描和姿态注册一个模板mesh
- 使用PCA,得到的主成分就是身体混合形状(body shape blend shapes)
作者将SMPL和BlendSCAPE对比发现,基于顶点的SMPL模型要优于基于形变的BlendSCAPE模型(从上图Figure2可以看出)。为了捕获软组织动力学,作者还提出了DMPL