工作需要,研究了一段时间的metahuman驱动原理。有些心得研究写下来,供大家参考下。
1.蒙皮关系
下图展示了metahuman里面的蒙皮效果,从中可以确定metahuman并未使用动态蒙皮的模式,而是使用同一份蒙皮文件进行了映射关系处理
2.骨骼
meta human使用骨骼来模拟FACS系统的肌肉变化
骨骼可以分为三部分,表皮骨骼点,内层骨骼点,中心骨骼点
1.表皮骨骼点
如图,大部分骨骼点的位置可认为依赖于表皮顶点的位置。由此,我们可以通过表皮顶点的位置来推断出这些骨骼的具体位置
2.内层骨骼点
这一层骨骼点主要控制了一些五官部位的驱动方式,比较典型的如眼睛,嘴巴,鼻子。相对好处理的则是耳朵,如下图所示
1.耳朵
针对耳朵这种类型的处理相对简单,如图可观察出,耳朵的内层骨骼点位置也是在模型的表皮附近。由此我们可以直接根据表皮位置来推算出对应骨骼点的位置
2.眼睛
眼睛的内层骨骼点也比较明确,比如根据眼球中心做推算,得出的结果就比较合理
3.典型骨
典型骨的内层骨骼位置推算会相对比较复杂。不同的模型,即使拓扑结构一致,也会不可避免的影响骨骼的位置,当模拟肌肉的骨骼群比较小时,影响就会扩大。
假设不考虑顶点位置的差异,那理想的推算方式应该是根据骨骼群的位置推算内层骨骼点的位置
退而求其次,则可以根据(xMax,xMin)(yMax,yMin)(zMax,zMin)和内层骨骼点的位置进行计算推理
4.中心骨
中心骨是用来影响整个面部,头部,下巴等区域的骨骼点,所以它的位置的变动影响范围会比较大。如下图为中心骨
中心骨的X坐标和y坐标可以确定,同理有图确定z坐标
3.注意点
骨骼位置放置的目标是在骨骼位置调整后,依然能保持调整之前的形变。所以对模型有一些要求,每个部位可以做缩放等处理,但是面部整体轮廓不可做大的调整。否则会造成骨骼驱动错乱。
3.驱动
1.DNA是什么
1) “DNA是我们在特定的一副面孔上观察到的一组测量结果,”Mastilovic(研发rigLogic的公司总裁)解释说。“DNA文件包含相对于通用模型的特定于某个人的偏移。然后这个DNA文件就会成为将几何数据转换为语义数据的钥匙。”
2) “我们做的基本上就是把他对象的表演转换成FACS代码,然后加载到异形身上。”
2.FACS是什么
https://en.wikipedia.org/wiki/Facial_Action_Coding_System
支持3Lateral工作的基础系统是面部动作编码系统(FACS),它对面部肌肉的动作进行了分类。FACS是在1960年代由研究者Paul Ekman 博士开发的,他研究了一些未受现代化影响的文化,发现一切人类用来表达情感的面部表情都是相同的。
3.DNA文件解析结果主要文件
1.描述器层
记录描述信息,如版本号,年龄,轴向,lod基本信息等
2.定义层
记录控制器数组,骨骼信息,BS,动画图,mesh名字等
3.行为层
控制器(例如arkit的52个维度)与 骨骼、BS、动画图相关的映射信息
4.几何层
1)记录原始顶点信息
2)记录偏移后的顶点信息
3)记录修改后顶点权重
4)记录修改后blendShap偏移量
5) 记录常规的顶点uv,法线等
6) 其它常规模型信息
4.RigLogic解算策略
- 基于FACS编码
2)骨骼驱动
3)blendShap权重驱动
4)动画贴图驱动(控制皱纹、皮下血液流动等效果的着色器。)
5) 后期矫正
4.自有模型骨骼适配原则
假设1:模型拓扑结构一致,点位代表的面部位置也一致
此种情况新模型面部表皮的骨骼点的位置与metahuman模型的面部表皮的骨骼点的位置是一一对应的
假设2:模型拓扑结构一致,但点位代表的面部位置有一定差异
此种情况新模型的面部表皮的骨骼点的位置与原metahuman模型的骨骼位置无对应关系,可视为使用原骨骼
假设3:模型面部整体轮廓一致
此种情况中心骨/次级中心骨的计算方法生效,否则会有一些误差