地形室外地貌

地形(Landscape) 系统用于世界场景的地形创建 - 山峰、峡谷、崎岖或斜坡地面、以及洞穴开口,并通过一系列工具对它们的形状和外观进行便捷的修改。

可在 创建地形 中查阅关于开口和地形工具使用的内容。

地形工具模式

Landscape Tool Modes

地形工具拥有三个模式,可通过地形工具窗口顶部的图标进行访问。

图标

模式

描述

Landscape_ManageMode.png

Manage 模式

用于创建新地形,并修改地形组件。在 Manage 模式中可利用 Landscape 小工具 复制、粘贴、导入和导出地形的部分。

如需了解关于 Manage 模式的更多内容,请查阅 管理模式

Landscape_SculptMode.png

Sculpt 模式

通过特定工具的选择和使用进行地形形状的修改。

如需了解关于 Sculpt 模式的更多内容,请查阅 造型模式 .

Landscape_PaintMode.png

Paint 模式

基于地形材质中定义的层在地形的部分上绘制纹理,从而实现对外观的修改。

如需了解关于 Paint 模式的更多内容,请查阅 绘制模式 .

创建一个地形即意味着创建了一个地形 Actor。和其他 Actors 一样,可对地形 Actor 的属性进行编辑,包括在关卡编辑器的 Details 面板中编辑其指定的材质。如需了解 Details 面板的更多内容,请查阅 详细信息面板

地形功能

地形系统所配置的主要功能和技术如下所述。

大型地形尺寸

虚幻引擎旧版本无法支持数量级地形,而地形系统可将其实现。得益于其强大的 细节级别LOD)系统和对内存的高效利用,现可处理最大精度为 8192x8192 的高度图。虚幻引擎现支持巨型室外世界场景,无需对引擎或工具进行修改即可快速便捷地创建任意数量的各类游戏。

Landscape_Terrain_Size.png

地形内存使用

地形比静态网格体更适合创建巨大地形。

地形的顶点数据为每个顶点 4 字节。静态网格体以 12 字节矢量储存位置,切线 X 和 Z 矢量每个均装入 4 字节,16 位或 32 位浮点 UV 每个顶点为 24 或 28 字节。

这意味着在相同的顶点密度下,静态网格体占用的内存是地形的 6 或 7 倍。地形还将其数据保存为纹理,可为远处场景流式输出未使用的 LOD 层级,并在靠近远处场景时从背景磁盘中进行加载。地形使用恒定的高度场,因此可更高效地存储碰撞数据。

GPU 内存中静态渲染数据存储为纹理

地形系统在 GPU 内存中将把地形渲染数据存储为纹理,使数据可在顶点着色器中进行查找。数据被装入 32 位纹理,高度以 R 和 G 通道的形式占据 16 位,X 和 Y 偏移在 B 和 A 通道中存储为 8 位数值。

连续几何体 MipMap LOD

使用标准纹理 mipmap 处理地形 LOD。每个 mipmap 均为一个细节级别,可使用 text2Dlod HLSL 说明对 mipmap 到样本进行指定。它可实现巨大数量的 LOD 和平顺的 LOD 过渡,因为两个 mip 层级均可被取样,高度和 X Y 偏移可在顶点着色器中进行插值,形成一个清晰的变形效果。

Landscape_LOD1.png

Landscape_LOD1toLOD2.png

Landscape_LOD2.png

完整 LOD 1

从 LOD 1 变形到 LOD 2

完整 LOD 2

高度图和权重数据流

因数据存储于纹理中,虚幻引擎 4 的标准纹理流系统可根据需求进行 mipmap 的流入和流出。这不仅应用于高度图数据,还应用于纹理图层的权重。仅为每个 LOD 要求所需的 mipmap 可将即时内存使用量降至最低。内存空出后,即可增加创建的地形尺寸。

高分辨率 LOD 独立灯光

因地形的 X 和 Y 斜面已被存储,整个高分辨率(未进行 LOD)法线数据可用于灯光计算。

Landscape_LODs.png

Landscape_FullResNormals.png

地形 LOD

全分辨率法线

设置逐像素灯光固定使用地形的最高分辨率,包括在已设置 LOD 的远处组件上。

Landscape_SimpleVertexLighting.png

Landscape_HRPerPixel.png

简单顶点灯光

高分辨率逐像素灯光

高分辨率法线数据和细节法线地图组合时,地形通过极小的开销即可构成十分精细的灯光。

Landscape_GeometryNormals.png

Landscape_DetailNormals.png

仅限几何体法线

带细节法线

PhysX 碰撞

地形为虚幻和刚体碰撞使用 PhysX 高度场物体。可在每层指定 物理材质 ;碰撞系统将在每个位置使用主导图层,以确定所使用的物理材质。在处理大型地形时可使用降低分辨率的碰撞高度场(如 0.5x 渲染分辨率),以降低内存需求。也可使用关卡流系统流出远处地形的碰撞和渲染组件。