迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?( 二 )


3.美术师进一步通过工具造型,并转为面片输出给程序

迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

头发贴图比较常用的头发贴图有下面几种:
Albedo:漫反射贴图
和Color一起组成最终头发的漫反射颜色。是头发渲染中不可或缺的贴图。


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

Normal Map:法线贴图给模型提供更多的细节,一般是由高模渲染导出,在低模中使用,使低模在面数不足的情况下,依然保留高模的表面细节。一般来说也是不可或缺的。


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

AO(Ambient Occlusion) Map:环境光遮蔽贴图增加发丝间阴影,完善的遮蔽细节,提升头发整体的体积感。非硬核写实游戏可以不关注,大部分游戏在开启自阴影后也能达到不错效果。


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

Shift Map:偏移贴图用来模拟各项异性高光的“锯齿”效果。但目前而言,我看到的更多的实现方式是通过修改切线在法线方向上面偏移来计算实现。而不是读取贴图。


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

Transparency Map:透明贴图可以简单理解为漫反射贴图的灰度化后的加工图。本质是做一个mask。增强发丝感。


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

Ramp Map:渐变图顾名思义,非必须。


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

下面展示几个头发shader例子,篇幅原因不做进一步分析了:

迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

游戏引擎的Shader来渲染(TA)关于Shader的定位,主要是处理头发混叠、高光形状、动态光影下的表现和一些头发渲染过程的性能优化的。提升表现力上限更多的是靠模型和贴图。
研究了一点文章,尝试从理论层深入分析:
Kajiya-Kay Model (1989)
相关文章:https://xn--d6q620cxwmmvd/
Marschner Model (2003)
相关文章:https://www.graphics.stanford.edu/papers/hair/hair-sg03final.pdf
Scheuermann Model (2004)
相关文章:https://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/Scheuermann_HairSketchSlides.pdf
d'Eon Model (2011)
相关文章:https://www.eugenedeon.com/wp-content/uploads/2014/04/egsrhair.pdf
Double Cylinder Model (2018)
相关文章:https://sites.cs.ucsb.edu/~lingqi/publications/thesis_final.pdf
概述:每个模型基本上都是承上启下的,并且复杂程度逐渐递增,目前游戏实时渲染领域基本还处在Scheuermann Model中,影视行业等离线渲染领域已经逐渐使用DoubleCylinder了。
关于前两个模型,因为已经有高赞知乎介绍过了:https://zhuanlan.zhihu.com/p/27313644,这里就简单补充,不重复分析,建议先移步阅读。
展开介绍前,先科普一下以下几个内容:
BSDF和BSSRDF
BSDF(Bidirectional scattering distribution function)是BRDF和BTDF的超集和泛化。所有BxDF功能背后的概念可以描述为一个黑盒,其输入是任意两个角度,一个是入射射线,另一个是反射或透射射线,在表面上的一个给定点。这个黑盒子的输出值定义了给定两个角度的入射光和输出光能量的比率。黑盒子的内容可能是一个数学公式,或多或少地试图模拟和近似实际的表面行为。
可以简单的理解BSDF = BRDF + BTDF;
如下图,在BRDF中,红色虚线的半圆内的光线称之为Diffuse(漫反射),超出红色虚线且与入射光线对称的大箭头是Specular(镜面反射)


迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

次表面散射是光在传播时的一种现象,表现为光在穿过透明物体表面后,与材料之间发生交互作用而导致光被散射开来,光路也在其他的位置穿出物体。光一般会穿透物体的表面,在物体内部在不同的角度被反射若干次,最终穿出物体。

迷人|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图

模拟次表面散射的一个方法就是通过BSSRDF(Bidirectional Surface Scattering Reflectance Distribution Function)对材质建模。下面右图红框处,就是开启次表面散射的效果:


推荐阅读