PBR material model

205 阅读5分钟

学习目标

  • 知道为什么计算机里有的物体渲染出来很真实,有的很假

  • 理解真实物体的渲染在材质方面要考虑的问题

PBR material model 简介

PBR material model 是基于物理的材质模型,这种模型会基于物理规则来定义,比如能量守恒、微表面等。

PBR material model 可以让物体看起来更加接近真实。

下面是three.js 里的一个PBR material 示例。

three.js example

对于不同的渲染引擎开发者而言,PBR material 具体的定义方式是不一样的,但它们都是基于物理定义的。

下图是Arnold 的PBR material model ,它由十个组件构成,按照物体由内到外的顺序层层叠加。

Anorld standard suface

接下来咱们就基于这张图,详细说一下PBR material model。

Diffuse reflection

当光线照射到粗糙物体表面时,光线会被均匀散射,这种现象就是Diffuse reflection。

不同的物体具有不同的Diffuse reflection color。

Diffuse reflection color 代表了RGB 光谱的每个分量对光能的吸收程度,颜色越深的物体,对光能的吸收也强。

因为能量是守恒的,当物体对于光能吸收的越多,那它反射得就越少,其亮度也就越暗。

Diffuse transmission

当光线照射进半透明的物体表面时,光线会被均匀散射,这种现象就是Diffuse transmission。

Diffuse transmission 会受物体的厚度影响,或者说是受光线在物体中的散射时间影响。

当物体较厚时,散射时间久,入射光射入物体后,再带出去的intensity 就越少,因此物体的亮度就越低。

Diffuse transmission 的RGB颜色可以理解为物体内部对光色的吸收程度。

Sub-Surface Scattering (SSS)

有的物体会有半透明的表面,比如玉石、蜡烛、皮肤等。

当光线照射到这种物质上时,有一部分intensity 会被物体表面反射。

还有一部分intensity 会穿透物体表面,并被物体内部吸收和散射,这种光的散射就叫Sub-Surface Scattering 。

Sub-Surface Scattering 可以让物体较薄的地方产生透光。

Specular retro-reflection(sheen)

Specular retro-reflection 是镜面逆反射的意思,它是指当光线照射到物体表面后,按照与入射光平行的方向反射回去的现象。

这里所说的物体表面不是镜面,而是由特定形状构成的表面,这种形状通常是Corner 或者spherical。

Specular retro-reflection 具有高度的方向性和亮度,即使在低光条件下也能提供显著的可见性。所以retro-reflection 材料通常用于交通标志。

猫的眼睛就是一种天生的spherical reflector,这会导致我们在月朗星稀的晚上看见猫的眼睛里发出绿幽幽的光。

在将Specular retro-reflection 用于材质的时候,是把它当成一种微表面来用的,所以无需创建corner和Spherical 模型。

Specular retro-reflection 材质最直观的体现就是光泽度,即sheen,它可以根据视线与物体表面的法线的夹角来计算物体的光泽。

如果Specular retro-reflection 中的逆反射发生了一定的散射,即有了一定的Roughness,那我们就可以看到一种毛茸茸的质感。

Specular transmission

当光线穿过某种介质射出的时候,如果光线的入射方向和出射方向平行,那这种现象就叫Specular transmission。

入射光进入介质后,也可能会发生散射,我们通常会用Extra Roughness 描述其光线在物体内部的散射的程度。

Specular transmission 物体的整体roughness 会受其表面的specular_roughness 和其内部的transmission_extra_roughness 影响:

transmission_roughness = specular_roughness + transmission_extra_roughness.

Specular reflection

Specular reflection 是镜面反射的意思,其光线的入射角和反射角相等。

Specular reflection 可以清晰的反射周围的环境光,而不是像diffuse reflection 一样把入射光散射出去。

Specular reflection 通常用于表面光滑的物体,比如镜子、金属等。

当Specular reflection 不再是绝对的镜面反射,而是有了一定的散射,即roughness,那我们就可以看到磨砂效果。

Specular reflection 的roughness 不一定是高斯分布的,也可能是按照某种规律分布的。

上面的这种现象叫做Anisotropy。

Specular reflection(metal)

当我们渲染纯金属物体时,前面所说的Diffuse transmission、Subsurface scattering、Specular transmission、Specular retro-reflection 都是不用考虑的,我们只需要把diffuse reflection 考虑进去即可。

diffuse reflection 会影响物体对于intensity的吸收和反射,就比如黑色的金属即使绝对Specular reflection,它也会偏暗,因为它反射出的intensity 会比较少。

Emission

Emission 是自发光的意思,它可以让物体发光,变亮,同时照亮周围的物体。

我们可以使用自发光贴图设计一些更酷的效果。

Specular reflection(coating)

Specular reflection(coating) 会在之前说过的所有效果的基础上再镀一层镜面反射的膜。

最直观的来看,这种行为可以让物体更加Specular reflection,反射更多的intensity,从而让物体更加明亮,当然,这依旧是要遵守能量守恒的。

coating 在粗糙的表面度了一层膜

coating 在透明的物体上度了一层膜

coating 在很多3d编辑器里都被翻译成车漆,它很适合镀了膜的汽车材质。

Transparency

Transparency 是凌驾于之前所说的所有效果上的透明度,包括coating。

Transparency 和Transmission 的差别是:Transparency 隐身了就看不见了,Transmission 隐身了还能反光。

Transparency 通常用于图案的裁剪。

Transparency 的透明的强弱通常opacity 表示。

如果我们将Leaf alpha map 作用于transmission,那就会看到这样的一种错误效果:

总结

这一章我对Arnold 的PBR material model 做了一个概念性介绍,相信大家对基于物理的渲染有了一个整体的、可视化的认知。

下一章我会说一下微分立体角和辐射度量学相关的知识,它是搭建PBR material model 的理论基础和算法基础。