中EN
概念页

地形系统

Landscape

更新于 2026-10-13 约 5 分钟UE5Landscape地形高度图LOD地形材质

UE5 的 Landscape 把地形切成大小相同的正方形组件 (Component),组件是渲染、可见性计算和碰撞的基本单位;每个组件可以再分成 1 个或 2×2 个分段 (Section),分段是 LOD 计算的基本单位。分段的顶点数必须是 2 的幂(最大 256×256),这样不同 LOD 可以存进高度纹理的 mipmap。地形材质用 Landscape Layer Blend 节点按权重图混合多个图层。

组件与分段

官方:Landscape 被划分为多个 Landscape Component,它是 UE 渲染、可见性计算和碰撞的基本单位;所有组件大小相同且为正方形,大小在创建时确定。每个组件的高度数据存在一张纹理里,所以纹理尺寸必须是 2 的幂个顶点。相邻组件共享的那一行顶点会在两边各存一份,因此用「四边形 (quad) 数」来思考组件大小更方便。(Landscape Technical Guide in Unreal Engine)

组件可以分成 1 个或 4 个(2×2)分段。分段是 LOD 计算的基本单位;分段顶点数必须是 2 的幂(最大 256×256),使各级 LOD 能存进纹理的 mipmap。由此,组件每边的四边形数为:

Qcomp={2k−11 个分段2 (2k−1)=2k+1−22×2 个分段Q_{\text{comp}}=\begin{cases}2^k-1 & \text{1 个分段}\\ 2\,(2^k-1)=2^{k+1}-2 & \text{2×2 个分段}\end{cases}

官方算例:每个分段 64×64 顶点,即 63×63 个四边形,2×2 分段的组件为 126×126 个四边形;32×32 个这样的组件,每边共 126×32=4032126\times32=4032 个四边形,所以整块地形是 4033×4033 个顶点。(Landscape Technical Guide in Unreal Engine)一般式为 V=Qcomp⋅n+1V = Q_{\text{comp}}\cdot n + 1,其中 nn 是每边的组件数。

用 2×2 分段与用 4 倍数量的单分段组件得到的高度图大小相同,但组件更少,性能更好。 创建界面中的 Section Size 用于 LOD 和剔除,分段越大组件越少,CPU 开销越低。(Landscape Technical Guide in Unreal Engine Creating Landscapes in Unreal Engine)

总尺寸(顶点)四边形/分段分段/组件组件数
8129×81291272×21024 (32×32)
4033×4033632×21024 (32×32)
2017×2017632×2256 (16×16)
1009×1009632×264 (8×8)
505×505632×216 (4×4)

(摘自官方推荐尺寸表,目标是在面积最大的同时组件最少。Landscape Technical Guide in Unreal Engine)

下图是从组件到 LOD 的层级关系:

flowchart TB
  L[Landscape Actor] --> C1["Component 渲染/可见性/碰撞单位"]
  C1 --> S1["Section LOD 单位 2^k 顶点"]
  S1 --> H["高度纹理 mip0"]
  H --> H1[mip1 = LOD1]
  H1 --> H2[mip2 = LOD2]

每个分段的各级 LOD 直接对应高度纹理的各级 mip,这就是分段边长必须是 2 的幂的原因。与 RTR4 中分块 LOD (Chunked LOD) 的对应关系见 地形渲染 和 细节层次。

创建方式

可以用编辑器的地形工具从零创建,可以导入外部高度图,也可以写自定义导入器。创建选项中的 Enable Edit Layers 启用非破坏性的地形图层与样条(Creating Landscapes in Unreal Engine),水体系统 挖掘地形就依赖这个选项。

地形材质

Landscape Layer Sample、Landscape Layer Blend 等节点让材质读取某个目标图层的权重图 (weightmap);图层要能绘制,必须创建并关联一个 Landscape Layer Info 资产。Layer Blend 有三种混合方式(Landscape Materials in Unreal Engine):

混合类型行为
LB Weight Blend按绘制权重混合
LB Height Blend同 Weight Blend,但根据高度图给过渡区增加细节
LB Alpha Blend以 Alpha 叠加在前两类图层之上,例如雪覆盖岩石和草,擦掉雪后下面的图层原样露出

通用材质知识见 材质系统。

取舍

  • 尺寸要按推荐表选:不合规的尺寸会浪费组件或顶点。组件越少 CPU 开销越低,但每个组件更大,剔除粒度更粗(后半句是归纳)。
  • 每多一个可绘制图层,就多一张权重图和更多纹理采样,图层数应受控(一般经验)。
  • 超大世界与 世界分区 的流送配合,本页不展开。
  1. Landscape Technical Guide in Unreal Engine UE 5.8 文档
  2. Creating Landscapes in Unreal Engine UE 5.8 文档
  3. Landscape Materials in Unreal Engine UE 5.8 文档

相关页面

图形学地形渲染Terrain Rendering地形渲染(游戏、Google Earth、开源大世界引擎 Cesium 等)要在巨大高度场上按距离分配细节,同时控制内存、绘制调用和 LOD 之间的裂缝与跳变。主流 GPU 友好方案有:类似纹理 clipmap 的几何 clipmap、按瓦片复用顶点缓冲只换索引缓冲的分块方案、基于四叉树和屏幕空间误差的 chunked LOD、预存所有过渡索引缓冲的受限四叉树,以及 GPU 细分和压缩等补充手段。任何方案都可叠加分形噪声以在拉近时提供细节,许多系统也在加载时程序化生成地形。图形学细节层次Level of Detail细节层次 (LOD) 在物体对图像贡献变小时改用更简单的表示。LOD 系统由三部分组成:生成(简化或手工制作多个版本)、选择(按距离、投影面积等收益函数挑选)、切换(尽量减少跳变 popping)。LOD 主要减少顶点处理,也通过减少 quad 过度着色降低像素开销;进一步还可在预算约束下全局选择 LOD,实现时间关键(恒定帧率)渲染。游戏开发 · UE5水体系统Water SystemUE5 的 Water 插件用样条 (Spline) 定义海洋、湖泊、河流和自定义水体,它们会自动通过 Landscape 笔刷在地形上挖出河床和湖底。所有水体共用由 Water Zone 生成的同一套瓦片网格,因此相互衔接无缝。网格 LOD 每帧遍历四叉树生成,相邻 LOD 之间平滑变形过渡,远处用一块远景网格填补到地平线。游戏开发 · UE5世界分区World Partition世界分区 (World Partition) 是 UE5 的自动数据管理与基于距离的关卡流送 (Level Streaming) 系统:整个世界存为一个持久关卡,按可配置的运行时网格划分为单元格 (Cell),由流送源 (Streaming Source,默认是玩家控制器) 按距离加载/卸载。它配合一 Actor 一文件 (One File Per Actor, OFPA) 支持多人协作编辑,用数据层 (Data Layers) 按玩法状态切换内容,用分层细节层次 (Hierarchical Level of Detail, HLOD) 在远处以代理网格显示未加载的单元格。游戏开发 · UE5材质系统Material SystemUE 材质 (Material) 是用节点图描述「表面如何与光交互」的着色器生成器。它有三个正交维度:着色模型 (Shading Model) 决定光照模型(Default Lit、次表面、清漆、毛发等),混合模式 (Blend Mode) 决定与背景的合成公式(Opaque/Masked/Translucent…),参数 + 材质实例 (Material Instance) 让美术在不重编译着色器的前提下做变体。PBR 输入(Base Color/Roughness/Metallic/Specular)直接对应 RTR4 的金属度-粗糙度工作流;最大的工程坑是静态参数导致的着色器排列爆炸。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原