着色器和纹理细节

什么是着色器?

着色器主要描述对象表面的属性并控制光线如何影响它。 有具有不同属性的着色器。 例如,它们控制纹理、颜色、光泽度、(表面的)粗糙度和其他视觉效果,使 3D 对象的外观更加逼真。 根据着色器的类型,它可用于创建阴影、定义表面纹理等。

标准着色器

对于大多数对象,标准着色器是正确的选择。 使用它,您可以设置对象的颜色(或用它覆盖纹理)并在对象上放置颜色纹理。 您可以应用法线贴图(描述表面结构)和光泽贴图。

纹理的不同插槽(颜色、法线、光泽)不一定必须填充。 因此,例如,如果对象中没有包含光泽贴图,您只需将此槽留空并设置滑块以适合即可。

透明着色器

例如,如果您想调整汽车的窗户,透明着色器是正确的选择。
正确建模3D对象尤其重要,否则透明效果会显示不正确。
像这里一样选择光泽度和透明度的值,然后根据您的意愿进行修改:

请注意光泽/反射/镜像和阴影投射的“测试版”限制。 此版本中的透明对象还不能投射阴影,不能显示反射,并且光泽/反射受到限制。

镂空着色器

cutout shader常被用来“切出”更精细的结构,比如带遮罩的树叶。
该着色器类似于标准着色器,但有一个额外的透明度贴图。

这背后的想法是,精细结构和细节不必包含在实际的 3D 模型中,而仅通过蒙版创建。 因此,仅通过蒙版添加细节以获得对象的最终外观。 这样一来,3D模型的设计可以更简单,省去很多多边形,这对性能来说非常重要。

例如,一棵有数千片叶子的树会有很多多边形,但如果您将叶子建模为条带并首先通过遮罩使它们可见,您可以保存多边形甚至可以显示更精细的细节。

没有面具的叶子:

带面具的叶子:


面具是简单的黑白纹理。 白色区域将是可见的,而黑色区域将是“不可见的”。

对于上面示例中的叶子,蒙版纹理如下所示:

蒙版的设置是在视觉上进行的,即进行调整以使所需的效果看起来不错。

在我们的示例中,它看起来像这样:

头发着色器

Hair Shader 与 Cutout Shader 非常相似,但控制遮罩的透明度略有不同,并且针对头发进行了优化。
头发通常也被建模为股线,只有蒙版才能使细毛可见。

纹理类型一览

如上所述,有不同类型的纹理,例如颜色贴图、法线贴图、光泽贴图和镂空贴图。


纹理可以非常明显以至于它们延伸到整个模型,或者它们可以平铺并且只包含外观的很小一部分。 平铺纹理时,您会在显卡中节省大量内存,因为纹理通常很小。 地毯就是一个很好的例子:在这里,纹理中只有一部分图案然后平铺它是有意义的。 缩放表示平铺的频率。

基本上,纹理的分辨率应尽可能小,以便图形卡中的内存需求保持较小。对于实时应用程序,如 set.a.light 3D,这尤其重要,因为大纹理和许多多边形会立即影响性能。

因此,我们在 elixxier 优化了纹理的大小和每个对象的多边形数量。

在左侧,您可以看到一个可平铺颜色纹理的示例,在右侧,纹理被放置在地图上。 左边的示例可以用作非常小的纹理,例如只有 256×256 像素的分辨率和强平铺,另一方面,右边的示例需要分辨率约为 4K (4096×4096) 的纹理。

可以导入分辨率高达 8K 的纹理。

色图

颜色映射包含对象的颜色设计。

此贴图最容易识别,被命名为 *Diffuse*、*Color* 或 *BaseColor*。 您可以在上面看到彩色地图的示例。

法线贴图

法线贴图描述了物体的较小不均匀性并影响光线,因此提供了非常精细的阴影表示。 非常精细的不规则性不必包含在 3D 对象中,而是在法线贴图的帮助下创建的。

从视觉上看,法线贴图看起来偏蓝,因此很容易识别。

为了能够正确判断法线贴图并调整其强度,您必须将视口切换到“渲染”。 只有使用“真实”光线,法线贴图才会可见。 因此,从不同方向观察物体是有意义的。

光泽贴图

光泽贴图描述了对象或多或少有光泽的地方。

从视觉上看,光泽贴图看起来从灰色到黑色和白色。 在名称中,它通常带有 *Smoothness*、*Roughness* 和 *Gloss* 等名称,并且也由它来识别。 但是,它有时看起来类似于透明贴图。

应该注意的是,有几种类型的光泽贴图在相反的方向上工作,即亮区是有光泽的,在另一种形式中,暗区是有光泽的。
因此,在 set.a.light 3D 中,您可以切换贴图类型并在“平滑度”和“粗糙度”之间进行选择。因此,将设置调整为现有地图。如果你不知道什么是对的,那就试试吧。

为了能够正确判断光泽度,您必须将视口切换到“渲染”。 只有在“正确”的光线下才能看到光泽。

透明贴图

透明度贴图(或蒙版)切掉部分 3D 模型以允许非常精细的几何图形,而不必将其包含在多边形结构中。

从视觉上看,透明度贴图看起来像带有硬边(没有渐变)的黑白纹理。 这类地图在名称中通常带有加法*Mask*,或*Mask*,也是被它识别的。