UE5.7.4山地场景制作全流程:地形雕刻、材质混合与体积雾
2026/9/8 11:01:20 网站建设 项目流程

如果你是一位环境美术或独立开发者,想在 UE5.7.4 里搭一个有“叙事感”的山地场景——不是单纯拷贝一张风景照,而是清晨雾气从林间升起、山脊线在逆光里变成剪影、一条被脚步踩出的土路消失在森林尽头——那么这篇教程会很有用。

“山地日记”这个方向,近几年在虚拟制片、独立游戏和数字孪生演示里都很常见。它和“写实大场景”最大的区别在于:场景不是用来展示地形雕刻技巧,而是用来传递情绪和记录空间。换句话说,地形是骨架,材质是皮肤,光照和大气才是让山“开口说话”的关键。

这篇文章会从 UE5.7.4 的项目配置开始,依次拆解地形创建、山体材质分层、植被散布、体积雾和后期处理,最后给出运行验证和常见问题排查思路。全程以“能照着做出来”为标准,不做过度复杂的实验性尝试。

1. 这篇文章真正要解决的问题

很多新手第一次在 UE 里做自然环境,喜欢直接找一张大地图模板,然后刷草、刷树、调个太阳,结果一运行发现:远处山体像塑料模型,近处植被没有层次,雾和光的关系完全不对,整体画面又灰又平。

这不是美术能力的问题,而是缺少一条完整的“环境工作流”。

“山地日记”场景的难点并不在某一个环节,而是多个环节之间的耦合关系:

  • 地形形状决定了 Sun Angle 和雾的遮挡关系;
  • 地形材质的高度混合决定了山体是否生硬;
  • 植被密度和大小决定了空间层次感;
  • 体积雾和大气散射决定了画面是“透”还是“闷”;
  • 后期处理体积里的曝光和颜色分级,决定场景是否统一。

如果你正在做下面这些项目,这篇文章会比较适用:

  • 独立游戏里的野外关卡或新手村场景;
  • 虚拟制片里的户外舞台背景;
  • 建筑可视化里的山地景观展示;
  • 想做环境美术作品集但不知道如何开始的开发者。

读完这篇文章,你应该能搭建出一个完整的山地区域,并掌握一套可复用的环境创作顺序。

2. UE5.7.4 环境创作的底层变化

UE 5.x 系列最大的变化,是把过去需要大量手工处理的内容变成了近乎“开箱即用”的管线。到了 5.7.4 这个迭代版本,环境创作流程稳定了很多,特别体现在下面几个方面。

2.1 几何体系统:Nanite 与资产复杂度

过去做山体,我们习惯用 Landscape 雕刻大形,用静态网格体去拼岩石细节。现在 Nanite 可以让高模岩石、山体表面细节直接进入场景渲染管线,不需要手动做 LOD。这意味着场景密度可以做得更高,而且不用像过去那样花大量时间在 LOD 设置和 draw call 优化上。

不过在“山地日记”这种偏叙事的环境里,Nanite 并不一定全场景都要开。树木和草这类植被仍然建议使用传统 foliage,因为植被需要随风摆动动画,而 Nanite 目前对这类动态变形的支持仍有限。

2.2 动态全局光照:Lumen

Lumen 让室外场景的间接光照不再依赖繁琐的 Lightmass 烘焙。山体之间的反弹光、树林里的透射光、悬崖背阴面的补光,这些都能在运行时动态计算。

对于“山地日记”这种一日之内光线变化明显的场景,Lumen 的优势非常突出:你可以直接把太阳角度从清晨调到黄昏,整个山体的光照关系会跟随变化,不需要重新烘焙。

2.3 程序化内容生成:PCG

UE 5.2 之后 PCG(Procedural Content Generation)逐渐成熟,到 5.7.4 已经是环境美术的常用工具。

但这里要泼一盆冷水:PCG 不等于一键生成完美场景。它适合做“大范围但随机性要求不高”的散布,比如山坡上的碎石、森林里的低矮灌木。而需要精心控制视觉构图的位置,比如登山小径附近的几棵松树、视野中心的一块孤岩,仍然需要手动摆放。

2.4 开放世界与 Level Instance

如果“山地日记”想要扩展成多张地图组成的开放世界,5.7.4 里的 World Partition + Level Instance 可以让多人协作更高效。

不过这篇教程先聚焦单张地图的小场景搭建,避免一开始就陷入关卡流送的复杂度。

3. 环境准备与项目基础配置

3.1 创建项目

在 UE 5.7.4 启动器里选择“Game”类空模板:

  • 项目类型:Blank
  • 目标平台:Desktop
  • 质量预设:Scalable(后面手动调整)
  • 是否启用新手内容:否

项目名可以叫MountainDiary。命名建议全小写,避免后续写路径时出现大小写问题。

3.2 启用插件

在 Edit -> Plugins 中搜索并启用以下插件:

插件作用优先级
PCG程序化生成植被和碎石
Water如果场景需要溪流或湖泊
Landscape Modeling ToolsLandscape 建模辅助
Foliage Tool植被笔刷和实例化
Volumetric Clouds体积云
Movie Render Queue最终序列帧输出

启用后重启编辑器。

3.3 基础渲染设置

在 Project Settings -> Rendering 中确认:

  • Dynamic Global Illumination Method:Lumen
  • Reflection Method:Lumen
  • Virtual Texture:开启
  • Support Virtual Texture:开启
  • Auto Exposure:开启 Extend Default Luminance Range

室外场景建议打开体积雾和体积云:

# 在 Output Log 或控制台输入 r.VolumetricFog 1 r.VolumetricCloud 1 r.Lumen.DiffuseIndirect.Allow 1 r.Shadow.Virtual.Enable 1

注意:这些是运行时控制台命令。如果想要项目默认开启,可以写到DefaultEngine.ini[/Script/Engine.RendererSettings]段,不过不同小版本配置写法略有差异,建议先在编辑器里打开相关开关再确认。

3.4 目录结构建议

在 Content 目录下创建:

Content/ ├── Maps/ ├── Landscape/ ├── Materials/ │ ├── Terrain/ │ ├── Foliage/ │ └── FX/ ├── Foliage/ ├── Meshes/ ├── PCG/ └── PostProcess/

这个结构不复杂,但能让后续文件引用不混乱。

4. 用 Landscape 创建山地地形

4.1 创建 Landscape

在 Place Actors 面板里找到 Landscape,拖入场景。或者通过 Mode 面板切换到 Landscape 模式。

关键参数:

  • Scalar:1m 或 100m 取决于项目比例尺
  • Section Size:127x127
  • Sections:1x1
  • Subsections:1x1

如果地图目标尺寸是 1000m x 1000m,直接用 127 分辨率的 Landscape 会显得很粗糙。建议分辨率设置为 507 或 1009,也就是在 127 基础上增加 subdivision。

一次把分辨率调够,比后面用 Recalculate Normals 补救要省事得多。

4.2 整体形状雕刻

用 Landscape 的 Sculpt 工具,把笔刷形状调成 Soft Low,强度降低到 0.2 左右。

“山地日记”场景通常需要三条山脊线,围成一个半封闭的山谷,山谷中间留出步行路径。雕刻流程建议:

  1. 先用大笔刷铺出山脉走向,只考虑大形,不考虑细节;
  2. 在山谷两侧刷出山肩,形成从高到低的梯度;
  3. 用 Flatten 工具在山腰处修出一些台地,方便后面放植被和路径;
  4. 用 Erosion 工具做风化感;
  5. 最后用小笔刷在岩石露头的地方雕刻破碎感。

这一步慢一点比较好。地形大形如果不对,后续材质和植被都不能救回来。

4.3 添加 Landscape Layer

在 Landscape 模式下切到 Paint 页签,添加三层 Layer:

  • GroundLayer(泥土/碎石)
  • RockLayer(山体岩石)
  • GrassLayer(草坡)

每一层都要关联对应的地形材质,材质稍后创建。

4.4 用 Landmass 做山体轮廓修正

Landmass 插件允许通过蓝图样条线切割或叠加山体形状。对于“山地日记”这种叙事场景,可以用 Landmass 加一个视觉焦点:

  • 在视野尽头放一条低缓的 Mountain Range Spline;
  • 把它的 Height 参数调低,用来挡住地平线后面的空白区域;
  • 配合距离雾,让远山产生空气透视。

这样整个场景的纵深感会强很多。

5. 山体材质与地形混合

5.1 创建 Terrain Material

在 Material 编辑器中新建材质,命名为M_Terrain_Base

设置:

  • Shading Model:Default Lit
  • Blend Mode:Opaque
  • Material Domain:Surface

打开 5.1 之后推出的 Landscape Material 混色模式,使用 Weight Map 节点。

你的材质中将添加:

  • Texture Sample 节点:Ground、Rock、Grass 三套贴图
  • LandscapeLayerWeight 节点:分别接收这三套贴图
  • LandscapeLayerCoords 节点:控制 UV 重复

连接方式:

  • LandscapeLayerWeight(Ground) -> Layer0
  • LandscapeLayerWeight(Rock) -> Layer1
  • LandscapeLayerWeight(Grass) -> Layer2

5.2 用高度混合解决接缝问题

如果只靠 LayerWeight 混色,靠近岩石和草地交界的地方会出现一条生硬的分界线。

解决办法是“高度混合”,也就是把两张贴图的 Height 高度信息也参与权重计算。

在 Material 中可以使用HeightBlend节点:

// 简化节点逻辑 float GroundHeight = TextureObject2DSample(GroundTex, UV).a; float RockHeight = TextureObject2DSample(RockTex, UV).a; float BlendMask = HeightLerp(GroundHeight, RockHeight, LayerWeight, Softness);

HeightLerp 并不是默认可选的节点,实际工程里一般用MaterialFunctionLibrary里自带的高度混合函数,或者在 Custom 节点里写一小段 HLSL。

给一个最小可行的 Custom 节点示例:

// Custom 节点,输入参数:BaseA, BaseB, HeightBlend float BlendWeight = saturate((HeightA - HeightB) * HeightBlendStrength + 0.5); return lerp(TexA, TexB, BlendWeight);

在节点里的正确做法是分别采样两张贴图,然后把结果交给一个完整的 HeightBlend 材质函数。这部分习惯可以直接参考 UE 官方 Learn 项目里的地形材质。

5.3 材质纹理密度

室外场景 1m 单位下,纹理密度建议:

  • 近处地面:每米 1-2 个 Tile
  • 岩石:每米 2-4 个 Tile
  • 远处山体:每米 0.5-1 个 Tile

如果全部用高密度纹理,远处山体会产生严重摩尔纹。所以地形材质一般会用一个DistanceBlend混合第二套低密度纹理。

在 LandscapeLayerCoords 节点里调整 Scale 即可,近处写 0.1,远处写 0.5。

5.4 使用地形材质实例

MaterialInstanceConstant而不是直接修改材质:

  • 创建三个材质实例:MI_Terrain_Mountain、MI_Terrain_Valley、MI_Terrain_Path;
  • 分别调整三层的颜色与粗糙度;
  • 在 Landscape 材质里可以按比例混合这些实例。

这样做的好处是可以根据光照验证,随时微调山体颜色,而不用打开庞大的 Material 编辑器。

6. 植被散布与氛围道具

6.1 场景植被规划

“山地日记”不是原始森林,更像是一个有人活动痕迹的山地环境。所以植被要考虑“可读性”:

  • 山谷底部是低矮草地和稀疏灌木;
  • 山腰是松树和阔叶树的混合;
  • 山脊线和岩石露头区域不种树,留出透气感;
  • 路径两侧可以放倒下的枯树干,让场景有故事感。

打开 Foliage 模式的 Paint 页签,添加植物类型:

网格体用途旋转随机缩放范围
SM_Pine远处山体松树0.8 - 1.4
SM_Bush山腰灌木0.6 - 1.1
SM_Grass_Clump山谷草簇0.7 - 1.5
SM_Rock_Small碎石0.5 - 2.0
SM_Dead_Log枯木1.0 - 1.2

密度不要一味追求高。在“山地日记”这类偏写实且有镜头叙事的场景里,稀疏但有层次的植被比密集但混乱的植被效果好得多。

6.2 手动放置关键植物

虽然 Foliage 笔刷效率高,但关键视觉点需要手动摆放:

  • 登山路径转角处的导向树;
  • 山顶地标性的大型松树;
  • 山谷入口处形成“画框”的两棵树。

这些树要单独调整朝向、比例和曲率,让它们看起来有生命感,而不是复制粘贴的。

6.3 使用 PCG 补充大区域植被

在场景中放一个 PCG Volume,覆盖山脚到半山腰。

PCG 图结构可以做得很简单:

PCG Volume -> Point Generator -> Density Noise(根据地形高度和坡度过滤) -> Transform Points(随机缩放旋转) -> Spawn Foliage / Spawn Static Mesh

具体节点配置在 5.7.4 里略有差异,核心思路是:

# PCG 节点链 PCGVolume Get Landscape Layer Weight (Grass) Point Generator Density Noise Transform Points - Scale Min=0.7, Max=1.3 - Rot Min=0, Max=360 Spawn Foliage

用 PCG 做碎石和远山植被,效率很高。但 PCG 生成的植被不稳定,刷新后可能变化,因此对于需要构图精确的点,仍然应该用 Foliage 手动刷。

6.4 植被风动画

如果你的树和草使用SimpleGrassWindPivotPainterWind材质,风吹动会比较自然。

UE 5.7.4 自带的风力控制器可以通过 World Settings 统一调强度。

7. 光照、大气与“日记感”后期处理

7.1 主光源方向光

在场景放置一个 Directional Light,设定清晨角度:

  • Light Source Angle:约 1 度
  • Intensity:8-12 lux
  • Color Temperature:暖色靠近 3000-3500K
  • Atmosphere Sun Light:开启

“山地日记”如果做清晨场景,太阳位置放在山谷一侧,让脊线形成侧逆光。

7.2 体积云

新建 Volumetric Cloud 组件,选择默认预设后调整密度:

  • Cloud Strength:0.6
  • Cloud Map Scale:越大云层越稀疏
  • Weather Map:选一张简单的断裂云贴图

云的阴影投射到山体上,是让大场景不假的关键。

7.3 指数高度雾

Exponential Height Fog 负责空气透视。参数建议:

  • Fog Density:0.02-0.05
  • Fog Inscattering Color:淡蓝紫色
  • Volumetric Fog:开启
  • Volumetric Fog Distance:10000
  • Start Distance:500

距离雾会让山脊线从深色逐渐变淡,形成强烈的纵深。雾的颜色不要用纯白,偏一点大气的天光是关键。

7.4 后期处理体积

在场景中加入 Post Process Volume,并设为 Infinite Extent:

关键参数:

  • Auto Exposure:Min 2,Max 14
  • Color Grading -> Saturation:1.0-1.1
  • Color Grading -> Gamma:0.95
  • Color Grading -> Gain:偏一点青或暖
  • Bloom:0.3-0.5
  • Vignette:0.2-0.4

想要“日记感”,核心是统一色温和轻微胶片感,不要让场景某一区域的对比度突然爆掉。

# 检查曝光状态 r.EyeAdaptation.ExposureCompensation 0 r.EyeAdaptation.PreExposureOverride 0

7.5 用蓝图触发一天时间变化

如果你想让“山地日记”具有动态叙事,新建一个 Actor Blueprint,用 Timeline 控制方向光的旋转和强度,同时联动半球天空颜色和雾色。

这一步不是必须的,但会显著提升场景展示效果。

8. 运行验证与性能优化

8.1 快速运行检查

点击 Play 后不要急着截图,先依次看这几项:

  1. 场景内是否有黑面或材质错误;
  2. 远山是否变灰白(雾过浓);
  3. 植被是否出现大面积闪烁(LOD 问题);
  4. 曝光是否稳定;
  5. 帧率是否稳定在目标值。

8.2 渲染统计

打开控制台输入:

stat unit stat rhi stat landscape stat foliage

重点关注 Draw Primitive Count 和 Static Mesh Draw Count。大部分卡顿来自植被实例数量过高。

8.3 常见优化手段

  • 减少 PCG 生成的实例数量,用密度或距离裁剪的方式控制;
  • 植被 LOD 距离调整到合理范围;
  • 开启 Nanite 的岩石网格体;
  • 阴影距离缩短,远处的山不需要投射实时阴影;
  • 体积云的分辨率可以降低,不影响远景效果。

8.4 截图与录屏

如果只是展示,可以直接用高分辨率截图:

r.ScreenPercentage 200

建议直接使用 Movie Render Queue 输出高质量 PNG 序列,再合成成视频或长图。

9. 常见问题与排查方法

问题现象可能原因排查方式解决方案
地形看起来很平雕刻强度太低或笔刷过小检查 Landscape 模式下 Sculpt 参数用大笔刷重新雕刻主结构
山体材质接缝明显缺少高度混合检查材质中的 HeightBlend 节点用高度混合函数处理交界
植被闪烁LOD 切换距离过近观察运行时 LOD 状态调整 LOD 距离
体积雾导致性能暴跌体积雾分辨率过高查看 r.VolumetricFog.GridPixelSize适当降低分辨率
曝光忽明忽暗自动曝光范围太窄检查 Post Process 参数扩大 Min/Max 曝光范围
远景泛白雾密度过大调整 Exponential Height Fog降低密度或 StartDistance
材质在远山出现摩尔纹纹理密度太高调整 LandscapeLayerCoords使用 DistanceBlend 混合低密度纹理
PCG 生成位置出现穿插密度噪声没有排除坡度检查 Slope Filter 节点限制最小/最大倾斜角
植物不与地面贴合没有启用 Align to Normal在 Foliage 类型属性中调整开启 Align to Surface Normal
草太密导致看不到路径路径区域的植被权重过高用 Landscape Layer 画笔清理将路径区域的植被 LayerWeight 调低

10. 最佳实践与后续学习方向

10.1 环境创作顺序

一个比较成熟的工作流顺序是:

  1. 确定叙事主题和一天中的时间;
  2. 用 Landscape 雕刻大形;
  3. 创建基础地形材质;
  4. 手动摆放关键构图物体;
  5. 用 Foliage/PCG 补充密集植被;
  6. 调整光照、大气和后期处理;
  7. 用序列器固定镜头验证构图;
  8. 性能优化。

这套顺序的核心是先保证构图和叙事,再填充密度,最后优化性能。反过来做往往会陷入反复返工。

10.2 工程管理建议

  • 所有命名统一前缀,方便过滤;
  • 材质实例化,不直接改母材质;
  • 使用 Level Instance 划分区域,多人协作不会冲突;
  • 在提交前清理空的 Actor 和未使用的贴图。

10.3 继续深入的方向

如果你对“山地日记”环境创作感兴趣,下一步可以探索:

  • River 水体:用 Water 插件在山谷里加一条浅溪,提升环境生命力;
  • 天气系统:用 Niagara 实现雨滴和云雾飘动;
  • Blueprint 交互:让角色沿着山路行走时有脚印或草丛被压低的效果;
  • 序列器:制作一条 30 秒的摄像机运镜,展示从清晨到黄昏的环境变化。

UE 的环境创作并不是某个单一工具能做到极致,它更像是一条由地形、材质、植被、光照共同串联起来的工作流。“山地日记”只是其中一种场景方向,但掌握这条工作流之后,你完全可以把它迁移到草原、荒漠或者雪地环境里。

不要一开始追求大而全,先在一个 500x500 的小范围里把整套流程跑通,这个过程中的经验和文档积累,会比盲目堆场景规模更值得。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询