又是天气晴朗的一天,开开心心来到工位,接收美术给的模型和贴图,打开引擎,新建场景,添加材质,嘴角疯狂上扬,然后——

这个角色,皮肤蜡黄,没有血色,像塑料一样!

看不出来问题在哪的话,可以看看这张图,对比一下会发现好的皮肤的红润感主要体现在明暗交界处,会发红:

1. BSDF
为什么皮肤会发红?我们的Standard PBR Shader为什么不能处理这种情况呢?这是因为,我们使用的默认pbr shader模拟的是“硬表面”这种介质,而光进入不同介质时的行为是不一样的,可以分为以下三类。

你可能听说过中间的BRDF,它描述了光打在物体表面某一点,又从该点重新出射的情况;左边的BSSRDF则是光的出射点不同于入射点;而BTDF则是光从另一面出射了。真实情况下,这三种现象都会发生,它们统称为BSDF。我们人为地将它们划分为这三类,方便列公式,并且在有的时候舍弃掉其中的某些部分,用来加速计算。比如unity中的standard pbr shader只能表达BRDF,这对一般的硬表面是够用的,而到了大理石、牛奶、皮肤、树叶这种材质时,BSSRDF和BTDF的视觉效果变得很明显,我们不能再忽视掉它。
2. 皮肤的BSDF
那么皮肤会涉及哪些BSDF呢?我们来看看学者的研究结果:

学界认为皮肤由表面的油脂层和下面的另外两层构成。皮肤有这样的结构,它的BSSRDF和BTDF是不可忽视的。
我们插播一段话解释一下漫反射和高光反射,不需要可以跳过。在图形学中我们经常将光照结果分为漫反射(diffuse)和高光反射(specular)两类,两者的和是最终的颜色。高光反射就是我们日常所说的高光点,它的本质是说高光反射值和视线(或光线)方向有直接关系,光或者你转了方向,高光点的位置也会发生改变。相对的,漫反射则表示不随视线(或光线)方向变化而明显变化的光照。

继续刚才的话题,这个皮肤模型的高光项和漫反射项可以怎么写呢?

本文深入探讨了皮肤渲染技术,从BSDF理论出发,详细解析了皮肤的高光和漫反射项,介绍了多种次表面散射模拟方法,如texture space blur、screen space blur、预积分方法及LightWarping技术。
最低0.47元/天 解锁文章
6857

被折叠的 条评论
为什么被折叠?



