Skip to main content

材质

接下来的部分将涵盖材质方面的知识,这对于虚拟形象和世界都是必要的。 

 

虚拟形象和世界的具体情况将在各自的部分中介绍。

材质通过使用着色器和纹理来为网格应用颜色或细节。

如果您的模型的某个部分是无阴影的洋红色,那么材质插槽(通常是因为缺失着色器)出了问题,或者该模型部分没有应用材质。

如要在 Unity 中创建材质,可右键单击项目窗口>创建>材质。默认着色器是 Standard shader,这是一种基于物理的 (或PBR) 着色器。

着色器

着色器是材质的一个组件,决定了材质如何与光相互作用。在 VRChat 中,您最常使用的两种着色器是用于写实外观的 PBR 着色器,以及用于卡通或动漫外观的卡通着色器。

观看下面的视频,它将帮助您更好地理解纹理部分。

省流: 任何着色器的设置,都会使得物体反射,吸收一些光。

纹理/贴图

材质会将 2D 图像组合,并投影到三角形上。

这些组合的图像被称为纹理(也称为贴图)。Unity使用几种不同类型的纹理,组合成一个材质,而您可以将其应用到 3D 模型上。

Texels(纹理像素)

纹理类型::
Albedo map(基础颜色贴图)

去除所有阴影信息的表面颜色。

Normal map(法线贴图)

一种蓝紫色的图像,通过改变光从表面反射的角度(特定Texels处的法线向量),来模拟3D效果。

出自 docs.unity3d.com:

一张石墙纹理图及配套的法线贴图纹理
Occlusion map(也称为 Ambient Occlusion ,AO,即环境遮挡贴图或遮挡贴图)

将间接阴影信息放入材质中,模拟光线难以逃脱的部分。将遮挡贴图与 Albedo 贴图分开,可以根据不同场景中的光线实现更复杂的阴影。

Smoothness map(平滑度贴图)

控制材质中反射的清晰度。

Unity 对这些有特殊处理方式,因为行业标准是粗糙度贴图,而不是平滑度贴图,我建议使用一个功能更丰富的上位 PBR 着色器,例如:

这些着色器比 Unity 的 Standard shader 提供更多的选项,并将提高您的虚拟形象或(尤其是)世界的视觉效果。您可在它们各自的部分中找到更多信息。

不要过度使用平滑度!如果某个材质没有光泽(比如未抛光的木头或砖块),不要让它过于闪亮!它看起来会像湿的或错误的!

Metallic map(金属度贴图)

定义材质的哪些部分是金属的。

Specular Map(高光贴图)

用于高光(Specular)工作流。如果您的材质附带了高光贴图,我建议您仅使用这种工作流程。

Emission map(发光贴图)

当激活时,材质的发光属性将用于定义它发出的光的强度和颜色。发光贴图用于定义材质不同部分的发光属性。

Diffuse map(漫反射贴图)

具有平衡阴影(没有明显方向性的光源)的基础颜色贴图。如果您只是拍摄某个物体表面的图片,这就是您会得到的纹理。如果一个模型只有一个纹理,那么它将被认为是漫反射纹理(您会在许多卡通着色模型中发现这一点)。

这种纹理在PBR工作流程中已经失宠,因为 Albedo 和环境遮挡纹理的组合允许对材质进行更多变的阴影处理,并在使用多个 Albedo 纹理时(例如不同的皮肤)实现更好的贴图压缩。

您可以在 Silent 处阅读有关 PBR 着色器的更深入指南。

UV 映射(UV mapping)

指定 2D 纹理应该如何投影到面上。

出自 Wikipedia:


认识它的最好的思考方式是你的网格是由纸制成的,您必须决定您想要在哪里切割,以便将其铺平。

由于 W、X、Y 和 Z 已被使用,故用 UV 来代表垂直和水平轴 U 和 V。

Unity 纹理设置:

纹理类型

  • 默认- 材质上的所有纹理,除了法线贴图
  • 法线- 法线贴图必须设置为此类型才能正常工作
  • Sprite(精灵)- 如果您想在 3D 空间中显示 2D 图像时,使用的纹理类型(例如用于挂在墙上的图片)
SRGB(颜色纹理)

您应该在灰度纹理上禁用它(例如高度、AO、金属度),否则后者将无法正常工作!!!

Mipmap 过滤

如果纹理从远处看起来太模糊,请尝试将过滤算法从盒(Box)更改为凯撒(Kaiser)。

解释 MipMapping

过滤模式

设置为三线性以获得最佳结果。

Aniso Level(各项异性过滤)

使纹理在从角度观看时不会出现模糊。我建议将其设置为16。

在Unity中,该设置是一个滑块,但其中只有 2 的幂的滑块值起作用。如果它设置为非 2 的幂,它将降至下一个最低的2的幂(例如10将降至8)。

纹理压缩设置

最大尺寸
纹理渲染的最大分辨率。
对于世界纹理,我通常不建议将其设置得高于1K(1024x1024)。

Crunch 压缩

一种有损压缩算法。我建议将其设置在20左右,以在文件大小和质量之间取得最佳折衷。