本文主要是介绍FLAME模型运行原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
FLAME模型利用了线性蒙皮技术(linear blend skinning)来使面部网格随着姿态变形。
θ 参数的影响
- FLAME建立了一个面部网格模板mesh T。
- 确定了关键的面部关节点J,如颈部、下巴等关节。
- 每个网格顶点都赋予了一个蒙皮权重W,表示它受每个关节的影响程度。
- 在变形时,对每个关节按照姿态旋转参数θ进行刚体变换,得到变换后的关节位置J'。
- 利用蒙皮权重W,计算每个网格顶点相对于各个关节的插值,得到变形后的网格顶点位置T'。
- 线性蒙皮保证了面部不同部位随着姿态变化的平滑且连续变形。
- FLAME模型还使用了基于Δθ的 blendshapes,进一步减少因刚体变换导致的面部失真。
shapeID参数的影响
FLAME模型中,shape参数β会通过线性组合shape blendshapes的方式影响面部网格的顶点。具体来说:
- FLAME学习了一个shape主成分分析(PCA)模型,获得了一组shape blendshapes。
- 每个blendshape表示面部在某个shape维度上的变化,比如脸型变宽、变长等。
- shape参数β是一个low-dimensional向量,表示一个面部在主要shape维度上的系数。
- 为了获得变形后的网格,会将β与blendshapes线性组合,得到形状偏差并加到网格模板T上。
- 公式如下:
- T_shaped = T + B_S(β; S)
- 其中B_S(β; S)表示blendshapes的线性组合。
- 通过这个操作,shape参数β就可以连续地控制面部网格在不同shape维度的变形,比如控制脸型。
- 与pose参数控制姿态变形不同,shape参数主要控制面部的静态形状。
- FLAME组合利用了shape参数和pose参数,可以同时对面部形状和姿态进行控制。
这篇关于FLAME模型运行原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!