做三维场景时,最容易被一眼看穿的不是模型,而是地面。混凝土路面没有颗粒感,碎石路看起来像灰塑料片,草地像绿毯子,灯光一变,整个场景立刻“塑料感”十足。解决这个问题,通常不是重做模型,而是换一套足够细、通道完整的 4K PBR 纹理贴图。本文以砖石、碎石、混凝土、水泥地、土地、草地、石头地、树皮等多材质 4K 贴图资源为例,完整讲解 PBR 贴图从导入到材质连接的流程,并整理色彩空间、法线方向、贴图接缝等高频问题。
1. 为什么地面材质这么难调,PBR 能解决什么
1.1 从“塑料感”到“物理真实”:PBR 的由来
PBR 全称 Physically Based Rendering,即基于物理的渲染。它不是某个软件里开启的一个按钮,而是一整套描述光线与材质交互的规则。传统渲染中,美术常把暗部、高光、反射直接画进一张漫反射贴图里,这样的材质离开固定灯光环境就很容易失真。PBR 换了一种思路:它把颜色、粗糙度、金属性、凹凸高度等信息拆成多张贴图,再由渲染器按照物理规律合成最终效果。
这套思路对地面材质尤其重要。地面积大、表面细节多、视角变化频繁,如果只用一张贴图“画”出全部明暗关系,灯光一变就会露馅。PBR 贴图让地面在阳光、阴天、夜景灯光下都能保持相对一致的真实感,这也是近几年游戏引擎和影视渲染全面转向 PBR 的根本原因。
1.2 一套 PBR 贴图资源包含什么
常见的一套 PBR 地面纹理贴图,至少包含 6 个通道:
| 通道 | 文件名常见后缀 | 作用 |
|---|---|---|
| 基础颜色 | BaseColor / Albedo / Diffuse | 材质的原始颜色,不含光照信息 |
| 法线贴图 | Normal / NormalMap | 用 RGB 编码表面凹凸方向,增加细节层次 |
| 粗糙度 | Roughness / Glossiness | 控制表面光滑程度,白色粗糙、黑色光滑 |
| 金属度 | Metallic / Metalness | 控制金属属性,普通地面基本为黑色 |
| 环境光遮蔽 | AO / AmbientOcclusion | 记录缝隙、交界处的阴影遮挡信息 |
| 高度贴图 | Height / Displacement | 记录真实的高度差,可用于置换或视差映射 |
对于这套“砖石/碎石/混凝土/水泥地/土地/草地/石头地/树皮”资源包,树皮虽然不算地面,但通常作为树干、木板等硬表面材质一起提供。这类多材质包在环境搭建时效率很高:同一套 PBR 通道规则,可以同时覆盖建筑外立面、围墙和树木表面。
1.3 为什么地面材质更需要 4K 纹理
4K 纹理通常指 4096 × 4096 像素的贴图。相比 1K 和 2K,它在相同 UV 范围内能提供更高的纹理密度。
- 1K:适合小道具、远处的装饰件。
- 2K:适合中等物体,例如箱子、茶几、普通墙体。
- 4K:适合大面积地面、地形、近景建筑,比如本文提到的混凝土、碎石、土地等。
- 8K:主要用于电影级特写,游戏项目中很少直接使用,因为显存开销过大。
选择 4K 而不是 8K,是比较理性的平衡点。地面在场景中占屏幕比例很大,近距离观察时 2K 往往会出现明显模糊,4K 基本能保证常见观察距离下的清晰度。
2. 环境准备:软件与基础设置
2.1 支持 PBR 的常见工具链
PBR 贴图本身是通用资源,可以在多数三维软件和游戏引擎中使用。以本文操作为例,需要的工具包括:
- Blender 3.x / 4.x:用于材质搭建、灯光预览和最终渲染。
- Unity 2021+ 或 UE5:用于游戏引擎中的实际落地。
- C4D + Octane / Redshift:用于影视或视觉方向。
- Substance 3D Sampler / Painter:可用来预览、调整贴图效果。
不同软件对 PBR 的接入方式有一些差异,但核心参数逻辑是一致的。下面会分别演示 Blender、Unity、UE5 的接入方法。
2.2 Blender 中导入贴图前的色彩空间设置
在 Blender 的 Shader Editor 中,每张图片纹理节点都有一个 Color Space 选项。这是新手最容易忽略、也最容易导致材质发灰发暗的地方。
| 贴图通道 | 推荐的 Color Space |
|---|---|
| BaseColor | sRGB |
| Normal | Non-Color |
| Roughness | Non-Color |
| Metallic | Non-Color |
| AO | Non-Color |
| Height | Non-Color |
为什么 BaseColor 是 sRGB,而其他都是 Non-Color?因为 BaseColor 是颜色数据,需要经过 Gamma 校正显示;而 Normal、Roughness 这些通道本质上是数值数据,不是给人看的颜色,如果被当作 sRGB 处理,数值会被错误调整,导致法线方向失真、粗糙度范围偏移。
2.3 Unity 与 UE5 中的导入参数
在 Unity 里,贴图导入时有类似逻辑:
- BaseColor:Texture Type 选择 Default,sRGB 保持勾选。
- Normal Map:Texture Type 选择 Normal Map。
- Roughness / Metallic / AO:Texture Type 选择 Default,sRGB 取消勾选。
在 UE5 中:
- BaseColor:sRGB 保持开启。
- Normal Map:Compression Settings 选 Normalmap。
- Roughness / Metallic / AO:sRGB 关闭,使用线性颜色空间。
一句话总结:凡是“数值类”通道,导入时都走线性空间;凡是“颜色类”通道,都走 sRGB。
3. 核心原理:PBR 贴图通道逐一拆解
3.1 Base Color:基础颜色不等于最终颜色
Base Color 表示材质表面本身的颜色,它应该是一张“干净”的图,不应该携带明暗、高光或阴影信息。现实中混凝土是带灰度的水洗色,砖石有颜色变化,土地偏黄褐,草地在靠近根部的位置偏暗绿,这些都属于 Base Color 的合理细节。
很多人第一次接触 PBR 时,习惯把 Base Color 直接当作成品图,看到渲染结果偏灰就不断调亮,这是误区。基础颜色丢失的信息,应该由法线、粗糙度、AO 和灯光系统补回来。真实地面颜色大多比较沉稳,在制作时应避免过度饱和。
如果发现地面材质整体偏亮、丢失质感,先不要急着调 Base Color。可以检查一下 Roughness 是否被错误设为全黑,或者灯光强度是否明显过高。
3.2 Normal Map:法线贴图上的蓝紫色不是装饰
法线贴图是一张记录了表面方向信息的贴图。它表面看起来是蓝紫色,其实 RGB 三个通道分别记录了切线空间下的 X、Y、Z 方向。
在地面材质中,法线贴图承担了非常关键的工作:混凝土的颗粒、碎石表面的坑洼、树皮纹理的沟壑,都是依靠法线贴图在低面数模型上模拟出来的。没有法线贴图,即使用 4K BaseColor,地面依然会显得平整、失真。
使用法线贴图时需要注意 OpenGL 与 DirectX 的差异。OpenGL 格式的法线贴图绿色通道向上,DirectX 格式的法线贴图绿色通道向下。从资源站下载贴图时,如果发现法线凹凸方向反了,可以在 Blender 的 Normal Map 节点里调整,或在 Unity 中勾选 Flip Green Channel。
3.3 Roughness 与 Metallic:控制地面质感的关键
Roughness 通道是一张灰度图,白色表示表面粗糙,黑色表示表面光滑。不同地面材质的 Roughness 差异很大:
| 材质 | Roughness 大致范围 |
|---|---|
| 粗糙混凝土 | 0.7 ~ 1.0 |
| 磨光水磨石 | 0.2 ~ 0.4 |
| 干土地 | 0.8 ~ 1.0 |
| 草地 | 1.0 |
| 湿润的碎石路 | 0.4 ~ 0.7 |
Metallic 通道对于砖石、混凝土、水泥地、土地、草地等材质来说,基本是 0 或接近 0,所以在多数情况下 Metallic 贴图是一张接近全黑的图。只有当材质中混入金属碎片、铁皮、栏杆等元素时,对应区域才会有局部高亮。
在实际操作中,可以把 Metallic 通道理解为“开关”,而不是“强度”。0 表示非金属,1 表示纯金属,中间值在物理上并不常见。
3.4 AO 与 Height:锦上添花但不能乱用
AO 全称 Ambient Occlusion,即环境光遮蔽。它记录的是物体缝隙、转折处被遮挡的环境光。地面材质中,砖缝、碎石间隙、树皮裂纹处往往需要 AO 来增强立体感。在 Blender 中,AO 通常通过 Mix 节点叠加到 Base Color 上;在 Unity 的 Lit Shader 中,AO 有专门的输入口。
Height 通道则记录高度差值,可用于 Displacement(置换)和视差效果。但它有一个明显问题:真实的几何置换需要大量细分面数,性能消耗很大,不适合大面积地面。如果需要更强的立体感,优先使用法线贴图,必要时配合视差映射,而不是直接上高密度置换。
4. 完整实战:用 4K 贴图在 Blender 中搭建混凝土碎石地面
4.1 场景准备与贴图文件整理
首先把资源包里的贴图整理到工程目录。建议目录结构如下:
Textures/ └── Concrete/ ├── T_Ground_Concrete_BaseColor.png ├── T_Ground_Concrete_Normal.png ├── T_Ground_Concrete_Roughness.png ├── T_Ground_Concrete_Metallic.png ├── T_Ground_Concrete_AO.png └── T_Ground_Concrete_Height.png如果资源包的文件名不规范,可以先用批量重命名脚本整理:
# 进入贴图目录后,先查看实际文件名 ls -1 # 将 concrete_ 前缀的统一重命名为 T_Ground_Concrete_ for f in concrete_*; do mv "$f" "T_Ground_${f#concrete_}" done然后打开 Blender,新建一个项目,删除默认立方体,添加一个平面(Plane),把它的细分改成 100 × 100 左右。这一步不是必须的,但细分后方便查看置换和法线细节。
4.2 在 Blender 中创建 PBR 材质
进入 Shader Editor,新建一个材质并打开 Use Nodes。手动连接的方式如下:
- 添加 Image Texture 节点,加载 BaseColor 贴图。
- 设置该贴图的 Color Space 为 sRGB,连接到 Principled BSDF 的 Base Color。
- 再添加 Image Texture 节点,加载 Normal 贴图,Color Space 设为 Non-Color。
- 添加 Normal Map 节点,将 Normal 贴图连接到 Normal Map 的 Color,再将 Normal Map 的 Normal 连接到 Principled BSDF 的 Normal。
- 添加 Image Texture 节点,加载 Roughness 贴图,Color Space 设为 Non-Color,连接到 Principled BSDF 的 Roughness。
- 添加 Metallic 贴图,同样 Non-Color,连接到 Metallic。
如果你更习惯用脚本批量创建材质,可以参考下面这个最小脚本。该脚本以 Blender 3.x / 4.x 为例,执行前需要把路径替换成你自己的贴图目录:
import bpy mat_name = "Ground_Concrete" tex_dir = "D:/Textures/Concrete" mat = bpy.data.materials.new(mat_name) mat.use_nodes = True nodes = mat.node_tree.nodes links = mat.node_tree.links nodes.clear() bsdf = nodes.new(type="ShaderNodeBsdfPrincipled") out = nodes.new(type="ShaderNodeOutputMaterial") links.new(bsdf.outputs["BSDF"], out.inputs["Surface"]) def add_texture(label, filename, color_space="sRGB"): img = bpy.data.images.load(f"{tex_dir}/{filename}") tex = nodes.new(type="ShaderNodeTexImage") tex.image = img tex.label = label tex.image.colorspace_settings.name = color_space return tex albedo = add_texture("Albedo", "T_Ground_Concrete_BaseColor.png", "sRGB") normal_tex = add_texture("Normal", "T_Ground_Concrete_Normal.png", "Non-Color") roughness = add_texture("Roughness", "T_Ground_Concrete_Roughness.png", "Non-Color") metallic = add_texture("Metallic", "T_Ground_Concrete_Metallic.png", "Non-Color") links.new(albedo.outputs["Color"], bsdf.inputs["Base Color"]) normal_map = nodes.new(type="ShaderNodeNormalMap") links.new(normal_tex.outputs["Color"], normal_map.inputs["Color"]) links.new(normal_map.outputs["Normal"], bsdf.inputs["Normal"]) links.new(roughness.outputs["Color"], bsdf.inputs["Roughness"]) links.new(metallic.outputs["Color"], bsdf.inputs["Metallic"])脚本运行后,材质面板中会生成 Ground_Concrete 材质,节点会自动连接好 Albedo、Normal、Roughness、Metallic 四条通道。
4.3 添加 AO 与高度细节
AO 在 Principled BSDF 中没有直接输入口,需要通过 Mix 节点叠加:
- 添加 Image Texture 节点,加载 AO 贴图,Color Space 设为 Non-Color。
- 添加 Mix Shader 或 Mix Color 节点。
- 把 AO 贴图连接到 Mix 节点的 Fac。
- 把 BaseColor 贴图连接到 Mix 节点的 Color1。
- 设置 Color2 为黑色或比 BaseColor 更深的颜色。
- 将 Mix 节点输出连接到 Principled BSDF 的 Base Color。
这样砖缝、碎石之间的凹陷区域会自然变暗,地面立体感会明显增强。不过要注意 AO 强度不要拉满,常见的做法是在 0.5 ~ 0.8 之间,否则地面会显得脏。
如果需要 Height 置换效果,可以在 Shader Editor 中添加 Displacement 节点,把 Height 贴图连入,然后接到 Material Output 的 Displacement 输入。但 Displacement 需要足够的细分面数,实时预览时开销很大,建议先用法线贴图观察效果。
4.4 灯光与预览检查
材质节点搭好后,切换到 Material Preview 或 Rendered 模式。添加一盏 Sun Light,适当旋转角度,观察混凝土表面颗粒和碎石层次。
这时可以调节 Roughness 通道的数值变化。如果材质看起来太亮,把灯光强度降低;如果看起来像塑料,检查 Roughness 是否被连接到了 Base Color;如果法线方向反了,地面坑洼会向内凹陷,这时需要处理法线贴图的方向问题。
建议在完成基础材质后,分别测试几组参数:
- Roughness 全黑时,地面像湿透的镜面。
- Roughness 全白时,地面完全哑光,层次平淡。
- Normal 强度过高时,小碎石看起来像小山丘。
- AO 过度叠加时,整体发脏发暗。
这样才能理解每张贴图对最终效果的影响边界。
5. 其他场景接入:Unity、UE5、C4D 快速上手
5.1 Unity 中的快速接入
在 Unity 中新建 PBR 材质,步骤很简单:
- 将 BaseColor 拖到 Base Map 输入框。
- 将 Normal 贴图拖到 Normal Map,点击纹理名称旁的齿轮,确保 Texture Type 为 Normal Map。
- 将 Roughness 贴图拖到 Smoothness,注意 Unity 的 Smoothness 与 Roughness 是反比关系,白色表示光滑,黑色表示粗糙。也可以在导入设置里勾选 Invert。
- 将 Metallic 贴图拖到 Metallic。
- 将 AO 贴图拖到 Occlusion。
由于贴图数量多,手动设置很容易漏掉 sRGB 选项,推荐写一个简单的 Editor 脚本放在 Assets/Editor 目录下:
using UnityEditor; using UnityEngine; public class TextureImportHelper : AssetPostprocessor { private void OnPreprocessTexture() { TextureImporter importer = (TextureImporter)assetImporter; string lowerPath = assetPath.ToLower(); if (lowerPath.Contains("_normal")) { importer.textureType = TextureImporterType.NormalMap; importer.sRGBTexture = false; } else if (lowerPath.Contains("_roughness") || lowerPath.Contains("_ao") || lowerPath.Contains("_metallic")) { importer.sRGBTexture = false; } } }这个脚本会在贴图导入时自动识别文件名后缀,把 Normal 设置为法线贴图类型,把 Roughness、AO、Metallic 设置为线性颜色空间。重新导入一次贴图,就不用每个文件手动设置了。
5.2 UE5 材质编辑器接入要点
在 UE5 中,把贴图拖入 Content Browser 后,双击贴图检查压缩设置。Normal 贴图要选择 Normalmap 压缩格式,其他非颜色通道要关闭 sRGB。
材质编辑器中的操作逻辑和 Blender 几乎一致:
- 添加 Texture Sample 节点,分别加载 BaseColor、Normal、Roughness、Metallic、AO。
- BaseColor 直接连到 BaseColor 输入。
- Normal 需要通过 Texture Object 节点连接到 Normal 输入。
- Roughness、Metallic、AO 分别连到对应输入。
UE5 的 Lit 材质默认支持 Metallic、Roughness、AO 输入,这一点比 Blender 更方便。只需要注意 Roughness 和 Unity 的 Smoothness 不同,UE5 使用 Roughness 语义,白色为粗糙,黑色为光滑。
5.3 C4D 及其他渲染器
在 C4D 配合 Octane 或 Redshift 时,PBR 贴图的连接方式类似:
- Octane:Diffuse、Normal、Roughness、Metallic 一一对应。
- Redshift:Color、Normal、Roughness、Metalness 一一对应。
同样要注意色彩空间。Octane 和 Redshift 中,BaseColor 使用 sRGB,Normal、Roughness、Metallic 使用线性或 Raw 模式。具体名称可能因渲染器版本略有差异,但判断方法一致:颜色类贴图走 sRGB,数值类贴图走线性。
6. 常见问题与排查思路
6.1 常见问题现象对照表
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 材质整体发灰、发平 | Normal、Roughness 未接入或被设为 sRGB | 检查节点连接和色彩空间 |
| 地面发亮、像塑料 | Roughness 被错误设为全黑或没接贴图 | 调整 Roughness 通道 |
| 法线凹凸方向反了 | 使用的法线贴图是 DirectX 格式 | 在软件中翻转绿通道 |
| 砖缝处有明显接缝 | 贴图本身不是无缝材质或 UV 拉伸 | 使用 Make Tileable 或调整 UV |
| 近看地面模糊 | 贴图分辨率不足或 Mipmap 太大 | 使用 4K 贴图或调整 Mipmap 偏移 |
| 视口拖拽卡顿 | 多张 4K 贴图同时加载到显存 | 降低预览分辨率、使用压缩格式 |
| 渲染颜色和预览不一致 | 渲染器颜色空间设置不对 | 统一各软件的颜色空间配置 |
6.2 法线方向反了怎么排查
法线方向反了时,表面凹凸效果会呈现出“凹陷”与“凸起”完全相反的感觉。排查步骤:
- 先在 Shader Editor 中把 Normal Map 节点断开,确认材质在不使用法线贴图时的表现。
- 连接回法线贴图,如果发现坑洼、裂缝方向与正常直觉相反,说明法线贴图是 DirectX 格式。
- Blender 的 Normal Map 节点中有一个 UV 输出参数,可以设置 UV 来自“UVMap”或指定 Flip/RGB;大部分情况下可以在节点中把 Green 通道反向。
- Unity 中直接勾选 Normal Map 设置下的 Flip Green Channel。
- UE5 中通常支持并翻转 Green,也可以在材质中通过 Vector Ops 反转 G 值。
如果是自己用软件生成的法线贴图,建议一开始就统一约定使用 OpenGL 格式。很多在线素材库会同时提供 OpenGL 和 DirectX 两个版本,下载时优先选 OpenGL 版本。
6.3 接缝明显怎么消除
地面贴图如果接缝明显,通常有两种原因。
第一种是贴图本身没有做无缝处理。即使 4K 图片,如果边缘不连续,平铺后依然会看到一条明显的接缝。解决办法是使用无缝贴图。Blender 中可以用 Image Editor 的 New Image 功能生成示例图,或者使用外部工具对贴图做 Make Tileable。
第二种是 UV 拉伸导致。给平面附加材质后,如果默认 UV 没有均匀展开,纹理会在某些区域被拉长。解决方案是给平面添加合适的 UV 映射,或者在 Mapping 节点中使用合适的 Scale 值,让 Tile 数量与贴图内容匹配。
6.4 4K 贴图卡顿怎么办
4K 贴图在很多场景下运行很流畅,但如果同时加载了多张 4K 贴图,显存占用可能快速上升。优化方向:
- 在 Blender 视口设置中,将纹理预览分辨率从 Full 调整为 Half。
- 使用 KTX2 / Basis Universal 等压缩纹理格式。
- 游戏引擎中关闭 Generate Mip Maps 以外的超采样。
- 对于远距离使用的地面,挂载 2K 替代贴图;只有近景交互区域使用 4K。
7. 工程化最佳实践:从临时效果到可维护资源
7.1 文件命名与目录结构
PBR 材质项目最怕“贴图文件乱放”。一套 4K 纹理资源,如果包含混凝土、砖石、碎石、土地、草地、石头地、树皮等多个材质,文件数量会非常多。建议采用如下规范:
Textures/ └── Ground/ ├── Concrete/ │ ├── T_Ground_Concrete_BaseColor.png │ ├── T_Ground_Concrete_Normal.png │ ├── T_Ground_Concrete_Roughness.png │ ├── T_Ground_Concrete_Metallic.png │ └── T_Ground_Concrete_AO.png ├── Gravel/ │ └── ... └── Grass/ └── ...命名公式可以整理为:T(纹理)+ 类型 + 材质名 + 通道名 + 版本号。例如 T_Ground_Gravel_Roughness_v01.png。这样后续查找素材、排查问题都很方便。
7.2 贴图格式与压缩
离线渲染或视频输出,优先使用 PNG 或 EXR。PNG 支持无损压缩,适合保留细节;EXR 支持 16 位浮点,适合 HDR 信息。
实时渲染平台需要区别对待:
| 平台 | 推荐格式 |
|---|---|
| PC 游戏 | BC7 / DXT5 |
| 移动平台 | ASTC / ETC2 |
| 影视视效 | PNG / EXR |
要注意,压缩纹理格式可能会改变 Roughness、Metallic 等数值贴图的精度。如果发现材质细节丢失,可以对这些通道保留较高压缩质量或使用无压缩格式。
7.3 材质实例化与复用
同一个 4K 混凝土材质,可能在一个场景中出现几十次。每次都用完整材质节点,会增加渲染负担,也加大维护成本。在 Unity 中应当使用 Material Instance。在 Blender 中也可以复用同一个材质,再通过 Geometry Node 或多个对象继承相同材质。
复用时可以把 Common 参数抽出来,例如:
- BaseColor 整体亮度。
- AO 强度。
- Tiling 次数。
- Roughness 整体偏移。
这样美术调整时可以不改贴图,只调参数,效率会高很多。
7.4 素材版权与授权检查
很多 4K 纹理资源网盘、素材站分享的文件,并不一定允许直接用进项目。使用任何纹理贴图资源前,先检查许可证:
- 是否允许用于商业项目?
- 是否需要署名?
- 是否可以二次分发或修改后出售?
- 是否包含第三方渲染器专项授权?
如果只是个人学习,随意使用影响不大;但如果是公司项目或上架作品,建议优先购买有明确商业授权的素材,或者自己用 Substance 3D Sampler 生成。
8. 后续学习方向与一个实用检查清单
8.1 继续深入的几个方向
这篇教程围绕 PBR 贴图的导入和接入展开,但这只是材质工作的起点。想进一步提升地面材质效果,可以从以下方向继续:
- 学习 Substance 3D Painter,用智能材质在贴图上直接绘制污渍、裂缝、青苔。
- 学习 Substance 3D Sampler,从一张实拍照片生成无缝的 PBR 贴图。
- 使用 AI 超分工具将老旧的 1K/2K 贴图处理成 4K 后再手动修复细节,做资源补充时效率很高。
- 学习 Terrain 地形系统,在 Unity 或 UE5 中把草地、土地、碎石路用权值混合起来,而不是一整张贴图铺到底。
- 研究视差映射和曲面细分,在保留性能的前提下增强地面立体感。
8.2 每次接入 PBR 贴图前都能用的检查清单
我每次接入一套新 PBR 贴图时,都会按下面顺序过一遍,基本能避开大部分坑:
- 确认 BaseColor 没有把颜色贴图设置成 Non-Color。
- 确认 Normal、Roughness、Metallic、AO、Height 都设置为 Non-Color 或线性空间。
- 确认法线贴图是 OpenGL 方向,如果方向不对,先翻转绿通道再继续调色。
- 确认 Roughness 语义:Blender/UE 白色为粗糙,Unity Smoothness 白色为光滑。
- 确认地面 Metallic 不至于出现大面积高亮,普通泥土、草地、混凝土接近 0。
- 确认 AO 是叠加到颜色上,而不是独立发光层。
- 确认 UV Tiling 适当地面尺寸,不要出现明显拉伸或重复过密。
8.3 一点经验
真正上线时,重要的不是每张贴图都有 8K,而是在正确观看距离和光照环境下,让材质保持足够细节。用 4K 纹理做地面,节点数量不多,调整逻辑也不复杂,但每一步的数值关系会影响最终效果。建议拿到一套砖石、碎石、混凝土、水泥地、土地、草地、树皮 PBR 贴图后,先在 Blender 里逐一套用,然后切换到 Unity 或 UE5 做一场光照对比测试,你很快就会找到地面材质调优的感觉。
上面这篇文章里用到的节点连接、色彩空间、命名规范,几乎适用于所有 PBR 材质资源。如果后面有空,我可以再整理一篇如何用 Substance 3D Sampler 把普通照片生成为无缝 4K PBR 纹理的完整流程,欢迎把使用中遇到的问题写到评论区,我尽量逐一回复。