地形系统
Landscape
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。由此,组件每边的四边形数为:
官方算例:每个分段 64×64 顶点,即 63×63 个四边形,2×2 分段的组件为 126×126 个四边形;32×32 个这样的组件,每边共 个四边形,所以整块地形是 4033×4033 个顶点。(Landscape Technical Guide in Unreal Engine)一般式为 ,其中 是每边的组件数。
用 2×2 分段与用 4 倍数量的单分段组件得到的高度图大小相同,但组件更少,性能更好。 创建界面中的 Section Size 用于 LOD 和剔除,分段越大组件越少,CPU 开销越低。(Landscape Technical Guide in Unreal Engine Creating Landscapes in Unreal Engine)
| 总尺寸(顶点) | 四边形/分段 | 分段/组件 | 组件数 |
|---|---|---|---|
| 8129×8129 | 127 | 2×2 | 1024 (32×32) |
| 4033×4033 | 63 | 2×2 | 1024 (32×32) |
| 2017×2017 | 63 | 2×2 | 256 (16×16) |
| 1009×1009 | 63 | 2×2 | 64 (8×8) |
| 505×505 | 63 | 2×2 | 16 (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 开销越低,但每个组件更大,剔除粒度更粗(后半句是归纳)。
- 每多一个可绘制图层,就多一张权重图和更多纹理采样,图层数应受控(一般经验)。
- 超大世界与 世界分区 的流送配合,本页不展开。
出处
- Landscape Technical Guide in Unreal Engine UE 5.8 文档
- Creating Landscapes in Unreal Engine UE 5.8 文档
- Landscape Materials in Unreal Engine UE 5.8 文档