空间材料

介绍

SpatialMaterial 是一种默认的3D材质,旨在提供艺术家在材质中寻找的大部分功能,而无需编写明暗器代码。但是,如果需要其他功能,可以将其转换为着色代码。

本教程解释了 SpatialMaterial .

您可以添加 SpatialMaterial 通过在 材料 检查员的财产。

旗帜

空间材料有许多标志决定材料的一般用途。

../../_images/spatial_material1.png

透明

在Godot,除非特别配置,否则材料是不透明的。这背后的主要原因是透明材质是使用不同的技术(从后到前排序并按顺序渲染)渲染的。

这种技术效率较低(会发生许多状态变化),并使材料无法使用,因为需要完全不透明的几何图形的许多中、后处理效果(如SSAO、SSR等)。

因此,除非另有规定,否则假定Godot中的材料不透明。启用透明度的主要设置是:

  • 透明标志(此标志)

  • 混合模式设置为“混合”以外的模式

  • 启用距离或接近渐变

无阴影

在大多数情况下,材料通常会受到照明(阴影)的影响。

但是,在某些情况下,您可能只想显示反照率(颜色),而忽略其余部分。打开此标志将删除所有底纹并显示纯的、不发光的颜色。

../../_images/spatial_material26.png

顶点光源

由于深度预通过,Godot每像素的成本或多或少是一致的。所有照明计算都是通过在每个像素上运行照明明暗器来完成的。

由于这些计算成本高昂,因此在某些角点情况下(例如绘制几个透明层,这在粒子系统中很常见),性能可能会大大降低。在这些情况下,切换到逐顶点照明可能会有所帮助。

此外,在低端或移动设备上,切换到顶点照明可以显著提高渲染性能。

../../_images/spatial_material2.png

请记住,启用顶点照明时,只有方向照明才能产生阴影(出于性能原因)。

无深度测试

为了使近距离物体出现在远距离物体上,需要进行深度测试。禁用它会导致对象出现在其他所有对象之上(或之下)。

禁用此选项对于在世界空间中绘制指示器最有意义,并且与 呈现优先级 材料属性(见本页底部)。

../../_images/spatial_material3.png

使用点大小

此选项仅在渲染的几何体由点构成时有效(通常从3D DCC导入时由三角形构成)。如果是这样,那么可以调整这些点的大小(见下文)。

世界三连体

当使用三面体映射时(请参见下面的“UV1”和“UV2”设置),三面体将在对象局部空间中计算。这个选项使三层空间在世界空间中工作。

固定大小

这将导致对象以相同的大小呈现,而不管距离如何。这主要用于指示器(无深度测试和高渲染优先级)和某些类型的广告牌。

不接收阴影

使对象不接收任何类型的阴影,否则将投射到对象上。

禁用环境光

使对象不接收任何类型的环境照明,否则将照亮它。

确保正常

使用非均匀缩放时修复法线。

顶点颜色

此设置允许选择默认情况下对来自三维建模应用程序的顶点颜色执行的操作。默认情况下,它们被忽略。

../../_images/spatial_material4.png

用作反照率

选择此选项意味着顶点颜色用作反照率颜色。

是sRGB

大多数3D DCC可能会将顶点颜色导出为sRGB,因此打开此选项有助于它们看起来正确。

参数

SpatialMaterial 还有几个可配置的参数来调整渲染的许多方面:

../../_images/spatial_material5.png

漫反射模式

指定在撞击对象时光的漫反射散射所使用的算法。默认值是 Burley . 其他模式也可用:

  • 伯利: 默认模式,最初的迪斯尼原则PBS扩散算法。

  • 兰伯特: 不受粗糙度的影响。

  • 兰伯特包装: 当粗糙度增加时,兰伯特延伸到90度以上。适用于头发和模拟便宜的地下散射。这种实现是节能的。

  • 奥伦·纳亚尔: 该实施旨在考虑微表面处理(通过粗糙度)。适用于粘土类材料和某些类型的布料。

  • Toon: 为照明提供硬切割,平滑受粗糙度影响。建议您从环境的环境光设置中禁用天空贡献,或在空间材质中禁用环境光以获得更好的效果。

../../_images/spatial_material6.png

镜面反射模式

指定反射斑点的渲染方式。反射斑点表示反射到对象中的光源的形状。

  • SHLICkgGx: 目前PBR 3D引擎最常用的BLOB。

  • Blinn: 在上一代引擎中很常见。现在不值得使用,但为了兼容性而留在这里。

  • Phong: 同上。

  • Toon: 创建一个Toon斑点,根据粗糙度更改大小。

  • 禁用: 有时斑点会挡住路。走开!

../../_images/spatial_material7.png

混合模式

控制材质的混合模式。记住,除 Mix 强制对象通过透明管道。

  • Mix: 默认混合模式,alpha控制对象的可见程度。

  • Add: 对象是额外混合的,对于耀斑或一些类似火焰的效果很好。

  • Sub: 对象被减去。

  • Mul: 对象被相乘。

../../_images/spatial_material8.png

剔除模式

确定渲染背面时不绘制对象的哪一侧:

  • 背部: 对象的背面在不可见时被剔除(默认)。

  • 前面: 当不可见时,对象的前面将被剔除。

  • 禁用: 用于双面对象(不执行剔除)。

深度绘制模式

指定必须进行深度渲染的时间。

  • 仅不透明(默认): 深度仅为不透明对象绘制。

  • 始终: 为不透明和透明对象绘制深度绘制。

  • 从未: 不进行深度绘制(不要将其与上面的“无深度测试”选项混淆)。

  • Depth Pre-Pass: 对于透明对象,首先使用不透明部分进行不透明过程,然后在上面绘制透明度。将此选项与透明的草或树叶一起使用。

../../_images/material_depth_draw.png

线条宽度

绘制线条时,请指定所绘制线条的宽度。此选项在大多数现代硬件上不可用。

点大小

绘制点时,以像素为单位指定点大小。

公告牌模式

为绘图材料启用公告牌模式。这控制对象如何面对相机:

  • 禁用: 公告牌模式已禁用。

  • 启用: 布告牌模式启用后,对象的-Z轴将始终朝向相机。

  • Y-Billboard: 对象的X轴将始终与相机对齐。

  • 颗粒: 最适合粒子系统,因为它允许指定动画选项。

../../_images/spatial_material9.png

以上选项仅对粒子公告牌启用。

广告牌保持比例

在公告牌模式下启用网格缩放。

生长

沿其法线指向的方向增大对象顶点:

../../_images/spatial_material10.png

这通常用于创建便宜的轮廓。添加第二个材质通道,使其变黑且无阴影,反向剔除(剔除正面),并添加一些增长:

../../_images/spatial_material11.png

使用阿尔法剪刀

当透明度不是 01 不需要,可以设置阈值以防止对象呈现半透明像素。

../../_images/spatial_material12.png

这将通过不透明管道呈现对象,该管道速度更快,并允许它使用中间和后处理效果,如SSAO、SSR等。

材料颜色、地图和通道

除了参数,定义材质本身的是颜色、纹理和通道。Godot支持他们的广泛名单。具体描述如下:

反照率

反照率 是材质的基础颜色,所有其他设置都在其上操作。当设置为 无阴影 ,这是唯一可见的颜色。在之前版本的godot中,这个频道被命名为 弥漫的 . 名称的更改主要是因为在PBR(基于物理的渲染)中,此颜色影响的计算比漫射光路要多。

反照率颜色和纹理可以在相乘时一起使用。

阿尔法通道 在反照率中,颜色和纹理也用于对象透明度。如果将颜色或纹理用于 阿尔法通道 ,确保启用透明度或 阿尔法剪刀 让它发挥作用。

金属

Godot使用金属模型比竞争模型,因为它的简单。此参数定义材质的反射效果。反射性越强,漫反射/环境光对材质的影响越小,反射的光越多。这个模型被称为“节能”。

这个 镜面反射 参数是反射率的一般值(与 金属 ,这不是节能的,所以把它放在 0.5 除非你需要,否则不要碰它)。

最小内部反射率为 0.04 因此,不可能像现实生活中那样,使一种物质完全不反射。

../../_images/spatial_material13.png

粗糙度

粗糙度 影响反射发生的方式。值 0 使之成为完美的镜子 1 完全模糊反射(模拟自然微表面)。最常见的材料类型可以通过正确组合 金属粗糙度 .

../../_images/spatial_material14.png

排放

排放 指定材质发出的光的数量(请记住,这不包括环绕几何体的光,除非 GI探针 使用)。该值将添加到生成的最终图像中,并且不受场景中其他照明的影响。

../../_images/spatial_material15.png

正态映射

正常映射允许您设置表示更精细形状细节的纹理。这不会修改几何体,只修改光的入射角。在Godot中,只有正常地图的红色和绿色通道用于更广泛的兼容性。

../../_images/spatial_material16.png

轮缘

有些织物有细小的皮毛,会使光线散开。Godot用 Rim 参数。与其他仅使用发射通道的RIM照明装置不同,这个装置实际上考虑了光(没有光意味着没有RIM)。这使得效果更加可信。

../../_images/spatial_material17.png

轮辋尺寸取决于粗糙度,并有一个特殊参数来指定必须如何着色。如果 Tint0 ,灯光的颜色用于边缘。如果 Tint1 ,然后使用材料的反照率。使用中间值通常效果最好。

透明涂层

此功能仅在使用gles3后端时可用。

这个 透明涂层 参数用于向材质添加透明涂层的第二遍。这在汽车油漆和玩具中很常见。在实践中,它是一个较小的镜面斑点添加到现有材料的顶部。

各向异性

此功能仅在使用gles3后端时可用。

这将更改镜面反射斑点的形状,并将其与切线空间对齐。各向异性通常用于头发,或使拉丝铝等材料更逼真。它与流程图结合使用时尤其有效。

../../_images/spatial_material18.png

环境光遮蔽

可以指定烘焙环境光遮挡贴图。此贴图会影响环境光到达对象的每个表面的程度(默认情况下,它不会影响直接光)。虽然可以使用屏幕空间环境光遮挡(SSAO)来生成环境光遮挡,但是没有什么能比得上经过良好烘焙的AO地图的质量。建议尽可能烘焙环境光遮挡。

../../_images/spatial_material19.png

深度

此功能仅在使用gles3后端时可用。

在材质上设置深度贴图将生成光线行进搜索,以模拟沿视图方向的适当空腔位移。这不是真正添加的几何图形,而是深度的假象。它可能不适用于复杂的对象,但它会为纹理产生逼真的深度效果。为了达到最佳效果, 深度 应与法线映射一起使用。

../../_images/spatial_material20.png

子面散射

此功能仅在使用gles3后端时可用。

这种效果模拟穿透物体表面的光,然后散射出来。它有助于创造逼真的皮肤、大理石、彩色液体等。

../../_images/spatial_material21.png

变速箱

这控制着从被照亮的一侧(对光可见)转移到黑暗的一侧(与光相反)的光的数量。这对植物叶子、草、人的耳朵等较薄的物体很有效。

../../_images/spatial_material22.png

折射

此功能仅在使用gles3后端时可用。

启用折射后,它将取代alpha混合,而godot将尝试从正在渲染的对象后面获取信息。这样就可以像现实生活中的折射一样扭曲透明度。

../../_images/spatial_material23.png

细节

Godot允许使用二次反照率和法向贴图生成细节纹理,可以通过多种方式混合。通过将其与二级UV或三层模式相结合,可以获得许多有趣的纹理。

../../_images/spatial_material24.png

uv1和uv2

Godot每种材料支持两个紫外线通道。次紫外线通常用于环境光遮挡或发射(烘焙光)。可以缩放和偏移UV,这在使用重复纹理时很有用。

三面映射

支持对uv1和uv2进行三平面映射。这是获取纹理坐标的另一种方法,有时称为“自动绘制”。纹理在X、Y和Z中采样,并按法线混合。三面映射可以在世界空间或对象空间中执行。

在下面的图像中,您可以看到所有基本体如何与世界三面体共享相同的材质,因此砖纹理在它们之间保持平滑。

../../_images/spatial_material25.png

近距离和距离衰减

Godot允许材料因彼此靠近而褪色,也取决于与观众的距离。近程渐变对于软颗粒或大量与海岸平滑混合的水等效果很有用。距离衰减对于仅在给定距离后出现的光轴或指示器很有用。

请记住,启用这些功能可以实现alpha混合,因此在整个场景中使用它们通常不是一个好主意。

../../_images/spatial_material_proxfade.gif

呈现优先级

对象的渲染顺序可以更改,尽管这对于透明对象(或执行深度绘制但没有颜色绘制的不透明对象,如地板上的裂缝)最为有用。