
写地面材质的时候最怕的不是“找不到贴图”而是拿到一组看起来挺真实的贴图拖进引擎后效果却完全不对地面又亮又假、纹理平铺感强烈、法线凹凸方向相反甚至远处的地面一直闪烁。这些问题大多不是贴图本身的问题而是对 PBR 贴图通道、导入设置和材质参数的理解不够系统。这篇文章专门围绕“砖石、碎石、混凝土、水泥地、土地、草地、石头地、树皮”这类地面 PBR 纹理贴图展开讲解 PBR 材质核心通道、4K 纹理的取舍、不同地面类型的使用策略并给出 Unity 中的完整操作流程。无论是准备做游戏场景、建筑可视化还是刚开始接触 PBR 材质的新手都可以按这套思路直接上手。1. PBR材质与4K地面纹理核心概念1.1 什么是PBR材质PBR 全称是 Physically Based Rendering中文常翻译为“基于物理的渲染”。它是一套通过模拟真实世界中光线与材质相互作用的渲染模型。和传统美术手调的 Blinn-Phong 或者 Lambert 材质相比PBR 最大的特点在于“参数具有物理意义”。这意味着同一套贴图放在 Unity、Unreal、Blender 或者 Marmoset Toolbag 里只要遵循同一套工作流得到的渲染结果会非常接近。地面材质是 PBR 使用最频繁、也最容易体现效果的材质类型之一因为地面表面的粗糙度、凹凸起伏、颜色变化非常丰富。在绝大多数现代引擎中常见的是“金属度-粗糙度工作流”Metallic-Roughness Workflow。这套工作流里材质的外观主要由几个贴图配合决定反照率贴图Albedo决定颜色。法线贴图Normal决定表面凹凸细节。粗糙度贴图Roughness决定表面的光滑或粗糙程度。金属度贴图Metallic决定是否表现为金属质感。环境光遮蔽贴图AO决定凹陷处的阴影。需要注意的是PBR 并不等于“把贴图全部拖进去”。如果金属度、粗糙度、AO 接到错误的通道或者颜色空间设置错误材质反而会比传统材质更难看。1.2 地面材质为什么适合用4K纹理4K 在这里通常指的是 4096×4096 像素的纹理贴图。相比 2K2048×20484K 的像素数量是它的四倍能承载更多表面细节。地面材质有一个特点在场景中占据的屏幕面积通常很大。玩家踩在路面上摄像机离地面很近地面纹理在屏幕上可能占到三分之一的面积。如果贴图分辨率不足凑近观察时会出现明显的“糊”和“马赛克”尤其砖缝、碎石边缘这些高对比度区域最明显。所以地面贴图尤其是在近距离交互较多的场景中选用 4K 是合理的。但 4K 不是越高越好。游戏项目要综合考虑目标平台、显存预算和加载速度经常采用“大面积地面用 4K 主纹理配合细节法线贴图”的做法。另外要注意4K 贴图能否发挥效果还取决于 UV 展开方式。同一个材质用在 10 米的地面上还是 100 米的地面上屏幕上的清晰度是完全不同的。需要结合 Tiling平铺参数来调节。1.3 常见地面纹理类型概览标题中列出的地面纹理类型基本覆盖了室外场景搭建的常见需求纹理类型主要特点典型应用场景砖石明显砌缝、重复性强、表面平整老城区路面、庭院、建筑外墙碎石颗粒感强、表面起伏大工地、矿山、野外地基混凝土灰色为主、有施工缝和瑕疵现代道路、工业区、桥梁水泥地比混凝土更细腻常伴有污渍室内地面、地下室、停车场土地颜色偏土黄/红褐有裂纹和颗粒荒漠、耕田、森林地面底层草地细小草叶、基底土壤需要透明通道草坪、平原、公园石头地大块岩石、缝隙明显起伏强烈山地、河滩、台阶树皮纵向纤维、粗糙度较高树干、藤蔓包裹物、自然场景装饰1.4 PBR纹理与普通贴图的区别很多初学者会把“纹理贴图”和“PBR 纹理贴图”混为一谈。普通贴图通常只包含一张 color 贴图靠人工画高光或阴影来模拟立体感。一旦光照角度变化这种假立体感就会被识破。而 PBR 纹理贴图是由多个通道组成的至少包含颜色和法线配合粗糙度、金属度、AO 等通道后能够在不同光照条件下自动产生正确的明暗变化。简单理解普通贴图是“画出来的立体感”PBR 贴图是“算出来的立体感”。地面纹理由于是俯视视角为主法线贴图带来的凹凸感尤其重要。没有法线贴图碎石和土地表面会像纸片一样平坦。2. 环境准备与版本说明2.1 使用软件本文的实操部分以 Unity 为例重点演示如何导入贴图、创建地面材质并调出真实感效果。示例环境如下操作系统Windows 10 / Windows 11Unity 版本Unity 2021 LTS 或 Unity 2022 LTS其他版本界面差异不大渲染管线Unity 内置渲染管线Built-in或 URPUniversal Render Pipeline贴图查看工具可直接使用 Unity 自带的 Inspector 预览也可以使用图片查看器如果使用 Unreal Engine流程类似只需要把贴图拖到对应的 Material 节点上即可PBR 核心概念完全通用。2.2 示例素材组织结构建议在 Unity 工程中建立如下目录结构方便管理和复用Assets/ └── Textures/ ├── Ground/ │ ├── Brick/ │ ├── Concrete/ │ ├── Grass/ │ ├── Stone/ │ └── TreeBark/ └── Materials/每套贴图可以按下面的命名保存T_Brick_Albedo.png T_Brick_Normal.png T_Brick_Roughness.png T_Brick_Metallic.png T_Brick_AO.png其中 T 表示 Texture后面是材质类型和通道名。清晰的命名规范在场景包含几十套贴图时能省下大量找文件的时间。3. PBR地面纹理核心贴图通道拆解这里把每张贴图通道的用途、注意事项和地面材质中的常见设置全部讲清楚。理解了这一节后面创建材质时就不容易接错线。3.1 Albedo 反照率贴图Albedo 贴图决定材质的基础颜色不包含光照信息。地面材质中Albedo 需要避免出现直接画上去的高光和阴影否则在 PBR 光照下会产生“双重阴影”导致地面看起来很脏。实际操作中Albedo 贴图往往已经包含了颜色变化和污渍比如砖块的色差、水泥地面的水渍痕迹、土地的氧化颜色变化这些都是正常的。在 Unity 导入设置中Albedo 贴图属于 sRGB 贴图也就是颜色贴图需要勾选 sRGB 选项。3.2 Normal 法线贴图法线贴图通过改变表面法线方向来模拟凹凸起伏。地面材质非常依赖法线贴图因为它能用较低的面数表现碎石、砖缝、草地的高低变化。法线贴图有两种常见格式DirectX 格式绿色通道偏亮大多数游戏引擎默认使用。OpenGL 格式绿色通道偏暗常见于 Blender 等软件。如果一张 OpenGL 法线贴图被当成 DirectX 使用地面上的凸起会变成凹陷光照方向完全反过来。这时需要在导入设置中勾选 Flip Green Channel翻转绿色通道或者在材质节点中反转绿色通道。在 Unity 中法线贴图必须在导入设置里把 Texture Type 设置为 Normal Map否则引擎不会按法线贴图的方式解码。3.3 Roughness 粗糙度贴图粗糙度贴图控制表面的微观光滑程度。数值越低表面越光滑反射越清晰数值越高表面越粗糙反射越模糊。地面材质的粗糙度整体偏高。砖石、水泥地通常在 0.7 到 0.9 之间。不同区域会有变化比如砖缝比砖面更粗糙湿润的水泥地会比干燥时更光滑。Unity 的 Standard Shader 使用的参数叫 Smoothness光滑度它和 Roughness 是相反数关系。如果素材提供的是 Roughness 贴图需要在 Unity 中勾选 Invert Source 选项或者直接导入 Roughness 贴图后通过代码反转。3.4 Metallic 金属度贴图地面材质绝大多数都是非金属所以金属度贴图通常是一片接近黑色数值接近 0的图。金属度越高高光反射越强地面就越“油光发亮”。砖石、土、草地都不应该出现强烈的金属反光。在实际项目中很多地面材质包并不单独提供 Metallic 贴图而是把金属度信息放在一张几乎是黑色的图中或者直接省略。在 Unity 中如果素材没有金属度贴图可以直接把 Metallic 滑条设为 0。需要注意如果把彩色贴图误接到金属度通道地面会出现脏兮兮的色块反射这属于比较常见的低级错误。3.5 AO 环境光遮蔽贴图AO 贴图记录的是表面缝隙和遮挡处的环境光强度。砖缝、碎石缝隙、石头底部这些位置应该更暗AO 贴图能强化这种接触阴影让地面更有体积感。在 Unity 中AO 贴图通常接到 Standard Shader 的 Occlusion 贴图槽。AO 贴图的颜色空间是线性的不要勾选 sRGB。3.6 Height 高度贴图可选高度贴图记录表面的高度差配合视差映射Parallax Mapping或曲面细分Tessellation可以产生真实的立体位移效果。地面材质中砖块砌缝和石头表面常常使用高度贴图增强立体感。不过高度贴图对性能开销较大移动端或者大场景慎用。常规做法是只依赖法线贴图模拟凹凸高度贴图用于高质量特写镜头。4. 地面材质类型与贴图实用策略同样是地面砖石和草地使用贴图的方式有明显差异下面按照实际场景需求逐个拆解。4.1 砖石与混凝土路面砖石路面最大的特点是砖块之间的砌缝。砌缝在视觉上形成规律的分割线所以 Tiling 值一般不宜过大否则砖块会变得很小失去真实比例感。在 4K 贴图中一块砖在屏幕上大约占到 20×10 像素时最接近真实比例。实际调节时可以在场景里放一个参照物比如人物角色反复调整材质 Tiling 值。混凝土和水泥地的特点是没有明显规律纹理更适合大面积平铺。但大面积平铺容易出现重复感建议配合两种方案解决使用 4K 贴图并设置较大的 Tiling让纹理自身的变化在大范围内分散。叠加一层细节法线贴图Detail Normal Map让近距离观察时产生额外的微观起伏。砖石和混凝土的 AO 效果很重要。砌缝和施工缝如果没有暗部整个地面会显得平。把 AO 贴图通道接上并把强度适当调高能明显提升真实感。4.2 碎石与土地碎石地面表面颗粒感强、高度差明显法线贴图在这里起到决定性作用。如果法线强度不够碎石看起来就像贴在平面上的一张照片。土地比碎石平整一些主要特点是表面有细小的裂纹、颗粒和颜色变化。土地的颜色变化往往比法线细节更重要因为现实中大量的土粒在远处是看不清的但颜色上的不均匀感能让人立刻认识到“这是土地”。干土地粗糙度高反光弱湿土地粗糙度降低表面会有一点高光。如果做雨后场景可以把 Roughness 调低同时把 Albedo 整体压暗模拟水分渗入土壤后的效果。4.3 草地表面草地是地面材质中比较特殊的一类。如果草地包含草叶细节通常需要透明度贴图Alpha来切出草的叶片形状。也就是说草地贴图包除了 PBR 常用通道还包含一张带有 Alpha 通道的贴图或者单独的草叶多边形模型。在 Unity Terrain 中草地通常不是简单地把一张贴图平铺在地上而是通过地形系统的“细节网格”Detail Mesh或者“树木草”Tree Grass功能来绘制。真实草地需要一定数量的草叶几何体单纯用平面贴图从俯瞰角度可以应付但从侧面看会露馅。如果是远距离草地地面可以使用大面积 Albedo 贴图配合草地法线形成“草皮”效果。近距离动态草需要结合顶点动画和材质 Alpha 裁剪。4.4 树皮与自然表面树皮属于自然材质特点是纵向纤维感很强粗糙度极高表面没有金属度。树皮纹理的 Albedo 多为棕褐色系法线贴图需要表现出树皮的纵向沟壑。树皮贴图通常应用在圆柱形树干上因此需要考虑 UV 的接缝问题。在 Unity 中树干模型的 UV 如果有明显接缝可以在材质中开启 Tiling 的偏移补偿或者修改模型本身的 UV 接缝位置保证接缝不易被玩家注意到。树皮贴图还可以用于“仿木纹地面”“藤蔓包裹物”等场景并不局限在树干上。4.5 材质类型使用建议对比类型推荐Tiling关键通道注意点砖石1~3Albedo, Normal, AO砌缝比例要真实混凝土2~5Normal, Roughness大面积需要细节法线碎石3~8Normal, AO法线强度可以调大土地2~5Albedo, Normal颜色变化重于细节草地5~10Alpha, Albedo近距离需要草叶模型树皮1~2Normal, Roughness注意圆柱接缝5. Unity中搭建PBR地面材质实战下面以 Unity 2022 LTS 为例从零开始创建一套地面 PBR 材质。假设你已经拿到了一套包含 Albedo、Normal、Roughness、Metallic、AO 的地面贴图这里以“混凝土路面”为例。5.1 准备工程并导入贴图先在 Unity 中创建新项目或打开现有项目。在 Assets 目录下新建 Textures/Concrete 文件夹然后把贴图文件直接拖入文件夹。导入后选中 Albedo 贴图在 Inspector 中确认以下设置Texture TypeDefault默认sRGB勾选Alpha Source根据贴图情况选择Generate Mip Maps建议勾选Normal 贴图的设置不同Texture TypeNormal MapsRGB不勾选Generate Mip Maps勾选Roughness、Metallic、AO 贴图Texture TypeDefaultsRGB不勾选Generate Mip Maps勾选如果贴图在场景中明显过亮或过暗先检查是否因为漏改了 sRGB 设置颜色空间错误导致的现象最像“贴图坏了”。5.2 创建地面材质在 Project 窗口右键选择 Create - Material命名为 Mat_Concrete。选中材质在 Inspector 中展开 Surface Properties。如果使用的是内置渲染管线Shader 选择 Standard如果使用 URPShader 选择 Universal Render Pipeline/Lit。接下来把贴图拖入对应的贴图槽Base Map / Albedo T_Concrete_Albedo Normal Map T_Concrete_Normal Metallic T_Concrete_Metallic Smoothness T_Concrete_Roughness根据素材通道位置调整 Occlusion T_Concrete_AO这里有一个常见的坑素材提供的 Roughness 贴图接入 Unity 的 Smoothness 槽时需要反转。Unity Standard Shader 中点击 Smoothness 旁的小箭头选择“Roughness”来源并勾选 Invert Source或者通过代码在运行时反转。5.3 创建地面物体在场景中创建一个地面模型。最简单的方式是右键 Hierarchy - 3D Object - Plane然后调整缩放模拟一块 10m×10m 的地面。把创建好的材质 Mat_Concrete 拖到 Plane 上。选中 Plane 后可以看到材质已经生效。此时如果砖缝或纹理密度不对只需要调整材质面板中的 Tiling 参数。在 Base Map 旁边的 Tiling 输入框中把 X 和 Y 同时改为 2地面纹理就会在同一个范围内重复两次。5.4 地面材质参数调节地面材质的参数不是固定的需要根据场景氛围来微调。常用的调节项包括Metallic 滑条地面通常保持 0或使用金属贴图。Smoothness 滑条砖石/水泥 0.2 到 0.4 左右如果素材有 Roughness 贴图则优先使用贴图。Normal Map 强度Unity 中 Standard Shader 没有直接的法线强度滑条可以使用 UnpackNormal 节点在 Shader Graph 中控制。如果场景使用了平行光建议同时调节光源的方向和强度。PBR 材质对光照依赖很强暗环境下材质看起来可能又脏又平。调试地面材质时先保证场景光照正确再调整贴图。5.5 使用Shader Graph调节法线强度可选下面是 URP Shader Graph 中调节法线强度的一种思路如果你项目里可以创建 Shader Graph创建 Unlit Shader Graph或复制 URP/Lit 后修改。添加 Sample Texture 2D 节点读取 Normal 贴图。使用 Normal From Height 或者 Unpack Normal 节点将贴图解码为法线向量。将法线向量除以一个强度系数或者用 Lerp 在“原法线”和“采样法线”之间插值。最终输出到 Normal 端口。这种调整方式比每次回到材质面板反复尝试更直观适合需要精细控制多种地面材质差异的场景。6. 4K贴图性能与工程问题6.1 4K纹理的显存占用4K 贴图带来的问题主要是显存和带宽。一张 4096×4096 的 RGBA32 贴图未压缩时占用约 64MB 显存。一个场景如果出现几十张这样的贴图显存会迅速见底尤其是在移动平台上。为了控制开销实践中通常会压缩贴图格式桌面平台使用 BC7 格式质量较高。移动平台使用 ASTC 格式4x4 或 6x6 等。老平台或轻量项目使用 DXT1/BC1 压缩 Albedo法线和粗糙度使用 BC5/BC7。压缩后会明显降低显存占用。BC7 约 8 位每像素一张 4K 贴图约 16MBASTC 6x6 约 3.6 位每像素约 7MB 左右。所以 4K 贴图不是不能用而是要控制数量并正确设置压缩格式。6.2 Mipmap与纹理闪缩很多新手在导入 4K 贴图后发现摄像机稍远一点时地面开始闪烁、出现摩尔纹这种情况绝大多数是因为没有开启 Mipmap。Mipmap 会根据物体与摄像机的距离自动选择合适分辨率的纹理层级。开启 Generate Mip Maps 后远处的物体会自动使用低分辨率层级闪烁问题基本消失。代价是额外的显存开销大约增加 33%。对于地面这类大面积纹理Mipmap 几乎必须开启省下来的画面稳定性和渲染性能完全值得。6.3 纹理流式加载在大型开放场景中所有地面贴图同时常驻显存是不现实的。Unity 提供了 Texture Streaming纹理流式加载功能可以按需加载纹理的 Mipmap 层级靠近摄像机时加载高清层级远处自动使用低分辨率层级。在 Player Settings 中开启 Texture Streaming 后可以通过代码控制最大 Mipmap 级别例如using UnityEngine; public class TextureStreamingController : MonoBehaviour { void Start() { // 限制纹理流式加载的最大Mipmap级别值越大允许加载的分辨率越高 Texture.streamingTextureForceLoadAll false; Texture.streamingMipmapMaxLevelDrop 2; } }该代码片段的作用是允许系统根据距离调整加载的纹理细节避免一次性加载所有 4K 贴图。移动端项目建议配合 Addressables 或 AssetBundle 按需加载。6.4 纹理接缝与Tiling优化大面积地面使用平铺纹理时接缝和重复感是主要问题。解决办法有几种创建更大的混合贴图。在 Substance Painter 或 World Machine 中生成更大区域的无缝贴图。多层纹理混合。使用 Terrain 的 Alpha 混合或者 Splatmap 混合多张贴图让相邻区域纹理不同。细节法线贴图。在主纹理上叠加一层高频细节法线打破大面积的重复感。如果希望快速解决地面大面积重复可以在场景里加入一些实物遮挡比如碎石模型、落叶粒子、道路标线用几何细节打断纹理重复。7. 常见问题与排查思路7.1 常见问题排查表问题现象常见原因解决思路地面材质整体发灰泛白Albedo 贴图 sRGB 设置错误或法线贴图被当作颜色贴图检查导入设置法线和线性通道不勾选 sRGB砖缝凸起变成凹陷法线贴图绿色通道方向反了导入设置中勾选 Flip Green Channel或使用 OpenGL/DirectX 转换地面像金属一样反光Roughness 贴图接错通道或 Metallic 值过高检查贴图槽位地面 Metallic 设为 0Roughness 反转后接入 Smoothness纹理平铺感太强Tiling 值过小纹理重复周期太明显增大 Tiling叠加细节法线贴图或混合第二张力材质远处地面闪烁没有开启 Mipmap在导入设置中勾选 Generate Mip Maps贴图加载后游戏卡顿4K 贴图过多没有合理压缩使用 BC7/ASTC 压缩开启 Texture Streaming材质明显失真偏绿/偏紫颜色空间设置错误Normal 贴图被当作 Albedo 使用重新指定贴图类型确保 Albedo 使用颜色贴图7.2 如何快速定位贴图问题当材质表现不对时不要盲目调整滑条应该按顺序排查。第一步判断颜色是否正常。关闭场景灯光暴露一张纯色 Albedo 图如果有色偏检查导入设置的 sRGB 和贴图本身。第二步判断法线是否生效。临时把 Normal Map 从材质上移除如果模型表面立刻变平说明法线生效如果效果反而更怪检查法线方向是否反了。第三步判断高光是否合理。把 Metallic 滑条归零Smoothness 设为 0.5观察地面高光是否异常。如果高光仍然强烈可能是 Roughness 贴图通道接错。这些步骤虽然基础但能解决绝大多数地面材质疑难。8. 最佳实践与素材使用建议8.1 文件命名与目录规范一套地面贴图可能包含 5 到 6 张通道贴图如果没有命名规范后期维护会非常痛苦。推荐命名格式T_材质名_通道名.png T_Concrete_Albedo.png T_Concrete_Normal.png T_Concrete_Roughness.png T_Concrete_Metallic.png T_Concrete_AO.png如果有多套分辨率可以再加后缀T_Concrete_Albedo_4K.png T_Concrete_Albedo_2K.png命名规范没有绝对标准但一定要做到“看着文件名就知道它是什么、用在哪个材质、哪个通道”。8.2 地面材质的LOD策略同一套地面材质远距离和近距离可以使用不同精度的贴图。大型场景推荐准备两套贴图4K 贴图用于近景主要给玩家脚下和角色附近的地面。2K 或 1K 贴图用于远景放在远处大范围的地形上。可以通过 Unity 的 LOD Group 或者材质属性块MaterialPropertyBlock实现不同距离切换。这样既能保证近景视觉质量又能控制显存开销。8.3 素材选择与版权合规使用网上下载的贴图素材时一定要确认授权和版权要求。推荐的合法素材来源自己用相机拍摄并处理成无缝贴图。使用 Substance 3D 等工具程序化生成。使用明确标注 CC0 协议的贴图库如 AmbientCG、Poly Haven 等。商业项目需要充分阅读素材的授权协议避免使用来路不明的资源包。尤其注意不要直接使用从影视资源、网盘分享、不明来源中提取的“4K纹理”这些行为可能涉及版权问题而且在技术上也未必符合 PBR 工作流的通道要求容易浪费大量调试时间。8.4 地面材质制作思路如果你有 Substance Designer 或 Substance Painter一套地面贴图可以这样制作在 Substance Designer 中创建高度图控制砖缝、碎石、裂缝的高度差。从高度图生成法线贴图、AO 贴图、粗糙度贴图。使用 Gradient Map 或填充图层生成 Albedo 颜色。输出 4096×4096 的所有通道。程序化贴图的优势在于可以任意调节细节密度、颜色变化和瑕疵程度并且天然无缝。如果只是需要快速测试效果也可以先使用已有的 PBR 贴图包在引擎中验证材质方案后再精修。9. 总结与后续学习建议这套流程走下来你已经掌握了地面 PBR 材质从原理到实战的核心链路理解贴图通道的作用、正确设置导入参数、创建并调节材质、处理 4K 贴图的性能问题、排查常见的材质异常。下一步可以根据项目类型深入学习如果做游戏场景学习 Unity Terrain 的多层纹理混合和 Splatmap 制作地面细节会更丰富。如果做建筑可视化学习烘焙光照和反射探针的配合PBR 地面才能呈现正确的环境反射。如果做移动端项目学习 ASTC 压缩和纹理流式加载的调优保证帧率和内存。地面材质在场景中面积大、视角近、暴露时间长非常值得花时间打磨。拿到贴图包后不要着急全部用上先建立一套适合自己的导入和命名规范再用一个小场景做材质测试确认效果后再大面积铺开。如果这篇文章对你有帮助可以把它收藏下来下次做地面材质的时候作为一份查漏补缺的清单来用。有问题也欢迎在评论区一起交流。