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


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(镜面反射)
model|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图
次表面散射是光在传播时的一种现象,表现为光在穿过透明物体表面后,与材料之间发生交互作用而导致光被散射开来,光路也在其他的位置穿出物体。光一般会穿透物体的表面,在物体内部在不同的角度被反射若干次,最终穿出物体。
model|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图
模拟次表面散射的一个方法就是通过BSSRDF(Bidirectional Surface Scattering Reflectance Distribution Function)对材质建模。下面右图红框处,就是开启次表面散射的效果:
model|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图
Anisotropic Lighting(各向异性光照)相关文章:https://www.bluevoid.com/opengl/sig00/advanced00/notes/node159.html
各向异性是指材料的性质会因为方向的不同呈现不同的特性。
一般的光照模型可以简单描述为:
光照模型 = 环境光+漫反射+镜面反射(高光)
在头发光照模型中:
光照模型 = 环境光+漫反射+各项异性高光
镜面反射这里:有别于金属的椭圆高光,头发会形成类似天使环的各项异性高光。如下图:
model|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图
头发在微观层面是圆柱体,在光线照射在发丝上所形成的高光是基于发丝该点法平面所有法线反射而成的光的积分。
model|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图
但在游戏中,会使用一个影响最大的法线来进行近似计算,该法线与光线,发丝切线同在一个平面,且NL夹角是锐角。
model|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图
《原神》的头发却没有做动态的各项异性高光,而是直接将其绘制到头发贴图上。
model|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图
model|头发渲染的前世今生:如何在游戏中拥有一头迷人秀发?
文章插图
Microfacet Model(微表面模型)

经验总结扩展阅读