【译】glTF教程:材质(十)

【译】glTF教程:材质(十)

2019-02-16

材质

介绍

glTF的目的是为3D资产定义一种传输格式。如前几节所示,这包括关于场景结构和出现在场景中的几何对象的信息。但是glTF资产也可以包含关于对象的appearance的信息;也就是说,这些对象应该如何在屏幕上呈现。

材质的属性可能有不同的表示形式,而shading model描述了如何处理这些属性。简单的着色模型,如PhongBlinn-Phong,直接受到OpenGL或WebGL等常见图形api的支持。这些着色模型是建立在一组基本材质属性上的。例如,材料属性包括关于漫反射光的颜色(通常以纹理的形式)、反射光的颜色和亮度参数的信息。许多文件格式都包含这些参数。例如,Wavefront OBJ文件与包含此纹理和颜色信息的MTL文件相结合。渲染器可以读取这些信息并相应地渲染对象。但是为了描述更真实的材质,需要更复杂的遮阳和材质模型。

Physically-Based Rendering (PBR)

为了允许渲染器在不同的光照条件下显示具有真实外观的对象,阴影模型必须考虑对象表面的“物理”属性。这些物理材料属性有不同的表现形式。经常使用的是metal -roughness-model。在这里,关于物体表面的信息被编码为三个主要参数:

  • 基本色,即物体表面的“主”色。
  • 金属的值。这是一个描述材料反射行为与金属反射行为相似程度的参数。
  • 粗糙度*值,表示表面有多粗糙,影响光散射。

金属粗糙度模型是glTF中常用的表示方法。其他的材质表示,如specular-glossiness-model,通过扩展得到支持。 不同金属和粗糙度值的影响如下图所示:


图10a:具有不同金属和粗糙度值的球体。

基色、金属和粗糙度属性可以作为单个值给出,然后应用于整个对象。为了给物体表面的不同部分分配不同的材质属性,这些属性也可以以纹理的形式给出。这使得用真实的外观来模拟各种真实世界的材料成为可能。 根据材质模型,附加效果可以应用到物体表面。这些通常是纹理和比例因子的组合:

  • 发射纹理描述物体表面发出具有特定颜色的光的部分。
  • 遮挡纹理可以用来模拟物体之间的自阴影效果。
  • 法线贴图是一种用于调整表面法线的纹理,它可以在不需要更高网格分辨率的情况下模拟更精细的几何细节。

glTF支持所有这些附加属性,并为省略这些属性的情况定义合理的默认值。

以下部分将展示如何在glTF资产中对这些材料属性进行编码,包括各种材料示例: