SMPL是一个可微分的模型,参数规范所以被广泛应用(SMPL在发布时,就已经可以支持很多工业应用软件)。SMPL之外,还有DMPL(能够模拟soft tissue),SMPL-x(升级版SMPL),等等。此外SMPL支持软组织动力学。
如果入门的话,可以先学习一下blend skinning, 理解 blend shape。一般来说,构建mesh与骨架的关系时(使用骨架去驱动mesh进行形变),使用得最广泛的模型是 Linear Blend Skinning (Linear BS)。但是直观地说,如果直接基于LBS或者DQBS用skeleton去drive mesh进行形变的话,会出现Skin collapse, Candy wrapper artifacts等效果可见下图左一左二肘部。从左到右: Linear BS、Dual-quaternion BS、BlendSCAPE、SMPL-LBS、SMPL-DQBS、最右边这个是使用mesh去配准扫描数据(可以近似理解为较为理想的结果->ground truth)
可以看到SMPL-LBS、SMPL-DQBS、最右边这个是使用mesh去配准扫描数据得到的结果,可以看到效果还不错。也就是说SMPL在蒙皮效果上是不错的。简单来说,SMPL是首先利用pose参数将关节点进行旋转(pose的参数对应控制着每个关节点的旋转情况,但是在他的paper中他先将轴角坐标用Rodrigues公式搞成旋转矩阵),然后基于关节点的旋转结果使用blend skinning将人体网格drive过去。一般你在paper中看到的函数W(·)就是blend-skinning函数,大多数情况下使用LBS。
SMPL中的shape参数是利用PCA原理控制mesh的胖瘦高矮。如果你仔细观察的话,第一个shape参数可以约等于控制的整个模型的size。事实上,以前(包括现在),使用PCA来描述人体网格或者Garment网格依然非常流行。
如果你只是用它,你需要知道的是:你可以通过pose和shape(也有人会加上一个global的transition项来控制整体的位移)来生成一个人体的mesh。你可以用SMPL去fitting一个scans、image或者video,搞成优化问题(fitting)或者使用DNN进行regression。遗憾地是SMPL的pose、shape参数不含人体的prior知识,所以大多数的fitting都是要引入discriminator或者引入prior信息避免发生违背人体结构信息的错乱。没有先验知识下,任意pose参数导致的SMPL的疑惑行为
从今天来看,现在的SMPL其实被拓展集成了很多新的模块:能够处理抓取交互
能够建模呼吸等动作--> 让模型更加realistic.
基于SMPL的Garment模型(最早是衣服和人体不分割--> single layer; 后来衣服单独作为一层建模-->2 layers.)
描述语与SMPL模型的对应关系
更加灵活的手部
更加细致的面部表情
将SMPL的模型bind到卡通人物或者动物上
等等
关于应用就不说了,太多了3D pose estimation/analysis
motion estimation/analysis
3D reconstruction (最近再和隐函数一结合,建模效果惊奇)
2D image/video synthesis (SMPL作为中间体)
animation
使用SMPL合成数据库/改进监督方法
SMPL与Neural Rendering结合
等等
这种参数化人体对应的是参数化的人脸。SMPL是MPI一个很有影响力的工作之一。他们其实也做了人脸的这种模型:FLAME。最早是在SIGGRAPH ASIA 2017,最近他们又拓展了模型,应该是FLAME2020版本了。