快手Y-tech
最新技术干货分享
背景
3D材质美妆依靠高光来提升妆容质感,本文提出一种3D材质美妆高光效果优化方法,该方法能对高光进行细粒度控制以便设计出符合美学的3D妆容。
01 3D材质美妆介绍
美妆技术本质上是计算机图形学技术,首先检测人脸并计算人脸网格,然后对人脸网格进行渲染得到美妆效果,最后采用图像混合方案将美妆效果叠加到人脸图像上面;3D美妆根据妆容类型大致分为贴纸美妆、定制美妆、材质美妆;其中材质美妆由于其突出的真实感而被广泛应用。图1展示部分3D材质美妆效果,包含唇妆、修容、眼妆效果。这些美妆效果与高光密切相关,高光极大丰富了美妆质感。
图1 3D材质美妆效果;左图、中图带有唇妆、脸妆,右图带有金属质感的眼妆
1、光感性强:3D材质美妆主要依靠高光来提升妆容质感,高光位置、形状、流动性都会影响最终妆容效果;
2、观赏性强:一个雅俗共赏的妆容必定是符合美学的,美学跟真实物理有时不可同时保证,通俗的说就是好看的妆容不一定符合真实物理,但如果妆容观赏性强那么可以忽略真实性。
02 问题描述
我们定义一个场景,场景中放置了两个不同状态下的人脸模型,如图2所示。两个模型是从同一个人脸上抽取不同时间帧数据得到的,简称模型1和模型2;两个模型有着不同的几何外观结构,但具有相同的拓扑结构(三角形数量、连接方式相同)。
图2 不同时间帧获得的人脸模型;左图代表模型1,右图代表模型2,两个模型几何外观结构不同,拓扑结构相同
模型使用相同的材质(金属度、粗糙度等参数相同),同时给场景添加一个正对着模型的方向光,使用标准PBR光照模型渲染,图3人脸白色区域展示了高光效果。
图3 PBR光照模型渲染结果;白色区域表示高光效果,模型1和模型2由于几何结构差异,嘴唇、脸部、额头处的高光位置、形状明显不同
由于PBR光照模型是基于物理的,会根据模型的几何结构计算出真实的高光效果,同时由于两个模型几何外观结构相差较大,因此两个模型的高光位置以及高光形状都会显著不一致。可以试想从模型1变化到模型2时,高光位置和形状时刻都在变化,然而这种不一致的高光效果使得妆容杂乱,不稳定,虽然这是符合物理的,但并不符合美学。
在3D材质美妆中,我们期望高光效果能得到以下两个目标:
1. 同一个姿态下不同人脸能得到一致的高光效果,保证高光效果的稳定性。这里描述的姿态是人脸位置相对镜头而言,例如侧脸跟正脸得到的人脸模型是不一样的,侧脸使得人脸模型旋转一定角度;上述两个模型都是人脸正对着镜头得到的,属于同一个姿态,由于人脸表情不一,进而重建的人脸模型几何结构有差异,我们期望的效果如图4所示,虽然两个模型几何结构不一致,但高光位置和形状几乎是一致的。
图4 期望同一姿态下的不同几何外观结构的模型拥有相同的高光效果(位置、形状一致);红色框代表额头处的高光、绿色框代表眼睛下方的高光、蓝色框代表嘴唇和下巴区域的高光
2. 高光位置、形状可调可控,期望对人脸模型上面的高光状态进行调整。这是本文的核心目标,3D人脸算法重建的人脸模型拟合程度高,可以很好的逼近人脸;此时如果直接使用光照算法进行着色后,模型上的高光位置、形态往往不符合美学,设计师期望能在3D人脸模型上能进一步控制高光位置、形态,如图5所示,期望将左图的高光调整为右图的高光效果,左图高光效果符合物理但不符合美学,右图高光效果符合美学。
图5 期望对人脸模型的高光位置、形状进行调整;图中是两个相同的模型,左图表示未调整前的高光效果,右图表示期望的高光效果。
在达到上述目标之前,美妆技术曾要求3D设计师制作一个高光效果较好的人脸模型,并且要求3D人脸算法组根据该人脸模型提供一套新的人脸模型重建算法,但由于缺乏全套的Blend Shape,以及需要开发和长期维护两套人脸算法,人力成本较高问题,最终放弃该方法。
03 问题分析
在给定期望目标的基础上来具体分析如何达到目标,首先需要从高光产生原理进行分析。
3.1 光照模型
3D材质美妆的重点是控制高光,既然涉及到光,那么就少不了光照模型,常用的有Phong、PBR、IBL,其中PBR光照模型应用最广,Phong模型认为是PBR的一种简单近似光照模型、IBL是PBR的一种特殊情形。
PBR,或者用更通俗一些的称呼是指基于物理的渲染(Physically Based Rendering),基于物理的渲染目的便是为了使用一种更符合物理学规律的方式来模拟光线,因此这种渲染方式与Phong光照算法相比总体上看起来要更真实一些。除了看起来更好些以外,由于它与物理性质非常接近,因此设计师可以直接以物理参数为依据来编写表面材质,而不必依靠粗劣的修改与调整来让光照效果看上去正常。使用基于物理参数的方法来编写材质还有一个更大的好处,就是不论光照条件如何,这些材质看上去都会是正确的,而在非PBR的渲染管线当中有些东西就不会那么真实了。
在PBR光照模型中,双向反射分布函数(BRDF)最为重要,BRDF可解释为给一个入射角度和一个观察角度,它能给出一个决定最终射向观察角度的光的强度的系数;总之最终的光照结果可以通过以下公式进行计算:
其中:
3.2 模型材质对高光的影响
3.2.1 金属度
金属度代表了有多少光是直接被反射出去, 有多少光在进入模型内部后成了漫射;金属度越高,漫射越弱,对应着公式中的漫射项brdf值越低,反射项brdf不受影响,表现出来的效果是金属度越高时,光照效果较暗,只有高光部分得到保留。图6展示不同金属度下的光照结果,从左至右金属度逐渐递增。
图6 不同金属度下的光照结果;从左至右金属度递增,漫射部分强度降低,反射部分(高光)强度保持不变
在3D材质美妆应用中,往往会假设模型材质的金属度较高,这么假设有两方面原因,一是金属反射光的能力较强,会在人脸模型上面产生清晰可见的高光;二是金属材质产生的高光可以很好的与背景分离开来,可理解为背景是纯粹的黑色,只有受到灯光照射的区域才会出现高光,这样在与人脸图像混合时,可以采用设计师熟悉的混合模式进行混合处理,例如滤色、线性减淡混合模式。
滤色混合模式计算公式如下所示:
result = 1 - (1 - base)(1 - blend)
线性减淡混合模式计算公式如下所示:
result = base / (1 - blend)
上述公式中base表示人脸图像,blend表示人脸模型渲染结果,result表示base与blend的最终混合结果。两种混合模式将会去黑留白,将高光效果完美地叠加到人脸图像上面,而不会产生artifact。
图7展示了金属度在3D材质美妆中的应用,左边表示人脸原图,中间表示较高金属度下的光照渲染结果,右边表示将左边与中间两图采用线性减淡混合模式叠加得到的妆容图。
图7 高光效果采用线性减淡混合模式叠加到人脸图像;左边表示人脸图像,中间表示光照渲染结果,右图将渲染结果中的高光叠加到人脸图像得到3D妆容
3.2.2 粗糙度
粗糙度影响高光范围,在同等金属度条件下,粗糙度数值越高,高光范围越大,图8可以直观看出高光范围,从左至右粗糙度逐渐递增。
图8 粗糙度影响高光范围;从左至右粗糙度递增,高光范围变大
从3D材质美妆角度来看,美妆效果一般比较精致,为了体现妆容的光感以及光的流动性,往往会设置较小的粗糙度,也就是说高光范围会比较小。图9展示了不同粗糙度下的高光效果,右图粗糙度大,因此光感显得比较粗糙,高光范围较大。
图9 不同粗糙度下的高光效果与人脸图像混合得到美妆效果;从左至右粗糙度递增,妆容光感显得愈发粗糙
3.2.3 基础色
基础色影响高光颜色,在其它参数相同的情况下,不同的基础色会生成不同的高光颜色,在前面的案例中都是采用白色的基础色。图10展示不同的基础色产生的高光效果,左边模型是红色高光,中间模型是绿色高光、右边模型是蓝色高光。
图10 基础色影响高光颜色;左边材质基础色是红色,中间材质基础色是绿色、右边材质基础色是蓝色
调整不同基础色在移动端的效果如图11所示。
图11 不同基础色下的高光效果与人脸图像混合;左侧表示红色高光、中间表示绿色高光、右侧表示蓝色高光
根据前面的分析可以知道金属度影响不对高光产生影响,粗糙度影响高光范围,基础色影响高光颜色,但本质上并未影响到高光的位置和形状,也就是说模型材质不会对高光的位置、形状产生影响。
3.3 光向量对高光的影响
光向量是一个与人脸模型无关的客观变量,由设计师指定数值后参与人脸模型渲染。在3D材质美妆应用中,使用最多的是方向光以及环境光,环境光一般采用HDR图像进行表示,本质上也可认为是来自四面八方的方向光。
在前面的案例中,都是使用一个垂直相机,指向人脸的方向光,这个方向光在渲染过程中始终保持恒定。人脸上有高光变化的原因是人脸模型几何数据变化导致,例如人脸相对相机进行旋转、平移以及人脸表情变化时都会重建不同的人脸模型。
可以为人脸模型指定不同方向的方向光,如图12所示,左边的方向光指向左侧脸,因此右侧脸不会受光照射;中间的方向光正对着人脸,因此全脸都会被照射,但人脸中间区域照射强度最高;右边的方向光指向右侧脸,因此左侧脸不会受光照射。
图12 不同方向光照射人脸,被照射区域形成高光;左图方向光照射人脸左侧,中图方向光照射人脸中测,右图方向光照射人脸右侧
光向量描述人脸受光直接照射时,被照射区域会形成高光效果,但并没有达到我们期望目标——对高光位置、形态进行调整。正如前面描述那样,光向量是一个固定值,在渲染过程中始终保持恒定,因而光向量没有办法调整高光状态。
同样以之前的两个模型为例,在材质属性、灯光、姿态一致的情况下,分析法向量和视线向量对高光的影响。由于模型采用相同的拓扑结构,意味着两个模型的uv展开图是一样的,这样我们将模型本身的法向量、视线向量、光照结果绘制到uv展开图上,对比后可以直观看出两者的差异。
模型1渲染结果及其uv展开结果如图13所示,左边4张图从上到下依次表示模型1的线框图,法向量图、光照结果图、视向量图,可理解为三维空间下的渲染结果;右边4张图是将左边4张图按uv展开后的结果图,可理解为二维空间下的渲染结果。
图13 模型1渲染结果及其uv展开结果;左边4张图分别是三维空间下的线框图、法向量图、光照渲染结果图、视向量图;右边4张图是左侧图像在二维空间下的uv展开图
同理模型2渲染结果及uv展开结果如图14所示。
从两个模型的uv展开结果来看,法向量以及光照结果有着明显的区别,但他们的视线向量几乎看不到区别。两个模型按uv展开的法向量图对比如图15所示,左侧是模型1的法向量图,右侧是模型2的法向量图。
图15 模型1和模型2按uv展开的法向量图;左侧是模型1,右侧是模型2,两者在脸部、嘴唇区域有着明显区别
考虑到两个模型只有法向量有区别,因此我们将两个模型应用相同的法向量,此时模型1的渲染结果及其uv展开结果如图16所示。
图16 模型1渲染结果及其uv展开结果
模型2的渲染结果及其uv展开结果如图17所示。
图17 模型2渲染结果及其uv展开结果
从图16和图17的渲染结果图中可以看出,两个不同几何外观结构的模型,当法向量相同时,两者的高光结果几乎一致,也就是说法向量才是影响高光的主要因子。通过实验我们可以得出结论:在不同人脸模型上面,固定法向量,可以得到一致的高光效果。这里面也暗含另一层含义,可以通过法向量去更改高光位置和形状。
04 高光效果优化方案
从前面的实验可以知道,在同等材质、同等灯光、同等姿态下,不同几何外观结构的模型使用相同的法向量可以得到一致的高光效果,这就保证了3D材质美妆效果的稳定性。
法向量可以通过模型空间法线贴图进行存储,使用时从法线贴图上面采样得到法向量数据。
现在我们在同一个模型上应用不同的法线贴图,如图18所示,两张法线贴图在同一位置上的法向量完全不同。
图18 两张不同的法线贴图
两张法线贴图对应的光照效果如图19所示,可以看出高光位置和形状有着明显差异。
图19 两张不同的法线贴图作用于同一个模型;左侧模型使用图18的左侧法线贴图,右侧模型使用图18的右侧法线贴图,可以看出高光位置和形状都发生明显变化
图20 同一个模型上,优化前与优化后的高光效果对比;左侧是未使用法线贴图,右侧使用法线贴图,左侧高光效果杂乱,边缘不连续;右侧高光效果造型细腻,结构富有美感
05 总结与展望
高光在3D材质美妆中扮演着重要角色,高光显著提升了妆容质感。本文从3D材质美妆高光效果出发,详细描述了当前高光效果面临稳定性差、位置和形状不可控问题,从而提出两个优化目标:
1. 同一个姿态下不同人脸能得到一致的高光效果,保证高光效果的稳定性;
2. 高光位置、形状可调可控,期望对人脸模型上面的高光状态进行调整。
在上述目标驱动下,我们首先对高光效果产生原理进行细致分析,确定了影响高光效果的具体参数因子,分别是金属度、粗糙度、基础色、光线向量、法向量、视线向量。接着对这六个因子进行逐一排查,确定了金属度、粗糙度、基础色、光线向量、视向量并不会对高光位置和形状产生影响,影响高光效果的只有法向量数据。期间在实验过程中发现不同几何结构的人脸模型使用相同的法向量可以得到一致的美妆效果,同时发现在相同模型上使用不同法向量可以得到不同的高光位置和形状。最终确定了材质美妆高光效果优化方案:在渲染算法中引入一张模型空间法线贴图,即可实现上述两个优化目标。不仅可以得到稳定的高光效果,而且高光位置、形状都是可控的,确保能生成可调可控的高光效果。
未来将继续从物理角度深入美妆效果材质研发,打造真实且富有美感的妆容。
参考文献
[1] https://google.github.io/filament/Filament.html
[2] https://learnopengl-cn.github.io/
[3] https://www.pbr-book.org/
[4]https://blog.selfshadow.com/publications/s2013-shading-course/karis/s2013_pbs_epic_notes_v2.pdf
你可能还想看
等你来
Y-tech
Y-tech团队是快手公司在人工智能领域的探索者和先行者。我们致力于通过计算机视觉、计算机图形学、机器学习、AR/VR/HCI等多领域的交叉探索,一方面帮助每个人更好地进行自我表达和内容创作,另一方面也为用户提供更好的内容体验和交互方式。Y-tech在北京、深圳、杭州、Palo Alto均有研发团队。如果你对我们做的事情感兴趣,欢迎联系并加入我们!
Y-tech长期招聘(全职和实习生):计算机视觉、计算机图形学、多模态技术、机器学习、AI工程架构、美颜技术、特效技术、性能优化、平台开发、工具开发、技术美术、技术产品经理等方向的优秀人才。联系方式:ytechservice@kuaishou.com
Y-tech///