主法线和微观法线分别经过NormalStrength和MicroNormalStrength缩放后(注意,法线的z通道数据不变),再通过材质节点BlendAngleCorrectedNormals将它们叠加起来,最后规范化输入到法线引脚。(见下图)
不妨进入材质节点BlendAngleCorrectedNormals分析法线的混合过程:
从材质节点上看,计算过程并不算复杂,将它转成函数:
Vector3 BlendAngleCorrectedNormals(Vector3 BaseNormal, Vector3 AdditionalNormal) { BaseNormal.b += 1.0; AdditionalNormal.rg *= -1.0; float dot = Dot(BaseNormal, AdditionalNormal); Vector3 result = BaseNormal * dot - AdditionalNormal * BaseNormal.b; return result; }另外,Normal Map Blending in Unreal Engine 4一文提出了一种更简单的混合方法:
将两个法线的XY相加、Z相乘即得到混合的结果。
2.4.6 环境光遮蔽(Ambient Occlusion)AO控制非常简单,直接用贴图T_head_sss_ao_mask的R通道输入到AO引脚。其中T_head_sss_ao_mask的R通道如下:
可见,五官内部、下颚、脖子、头发都屏蔽了较多的环境光。
2.5 皮肤贴图制作前面可以看到,皮肤渲染涉及的贴图非常多,多达几十张。
它们的制作来源通常有以下几种:
扫描出的超高清贴图。例如漫反射、高光、SSS、粗糙度、法线等等。
转置贴图。比如粗糙度、副法线、微观法线等。
粗糙度贴图由法线贴图转置而成。
遮罩图。这类图非常多,标识了身体的各个区域,以便精准控制它们的各类属性。来源有:
PS等软件制作。此法最传统,也最容易理解。
插件生成。利用Blend Shape、骨骼等的权重信息,自动生成遮罩图。
Blend Shape记录了顶点的权重,可以将它们对应的UV区域生成遮罩图。
特别说明本系列还有眼球、毛发、其它身体部位的分析,未完待续。
感谢参考文献的作者们。
参考文献Next-Generation-Character-Rendering (ACM Transactions on Graphics, Vol. 29(5), SIGGRAPH Asia 2010)
Separable Subsurface Scattering
Real-Time Realistic Skin Translucency
《GPU Gems 3》:真实感皮肤渲染技术总结
角色渲染技术——皮肤
细致到毛孔 ! 深度揭秘超真实皮肤的实时渲染技术(上篇)
细致到毛孔 ! 深度揭秘超真实皮肤的实时渲染技术(下篇)
《由浅入深学习PBR的原理和实现》
Fast subsurface scattering
BRDF representation and acquisition
A BSSRDF Model for Efficient Rendering of Fur with Global Illumination
Parameter Estimation of BSSRDF for Heterogeneous Translucent Materials
NVIDIA官方展示HairWorks“海飞丝”(1.1 by Tarkan Sarim)
Q132:PBRT-V3,BSSRDF(双向散射表面反射分布函数)(5.6.2章节、11.4章节)
BSSRDF Explorer: A Rendering Framework for the BSSRDF
BSSRDF Importance Sampling
A Practical Model for Subsurface Light Transport
NEXT Story S02.03 - 虚拟人(1)
虚幻引擎在GDC教你做人
数字人类
照片级角色
次表面轮廓明暗处理模型
Gaussian Models
《Technical Artist 的不归路 —— 线性空间光照》
Kim Libreri畅谈虚拟制片、数字化人物和Epic Games的后续发展
Siren亮相FMX 2018:实时穿越《恐怖谷》
Star Wars
Facial Action Coding System
探究《地狱之刃:塞娜的献祭》(Hellblade: Senua's Sacrifice)背后的理念
EPIC win: previs to final in five minutes
恐怖谷理论
Normal Map Blending in Unreal Engine 4