这次我们就按 UE5.7.1 版本,完整走一遍“山湖”环境的搭建流程。这个场景非常适合做地形布局、水体材质、植被散布、雾效光照和后期调色的综合练习:场景规模可控,视觉反馈强,几乎能把虚幻引擎环境制作最常用的技能都过一遍。本文会直接按实际操作顺序展开,从项目创建、地形雕刻、水体和山体材质,到植被、大气雾效、后期处理,再到性能观察和常见问题排查,每一步都会给出明确的操作重点和判断标准。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | 基于 UE5.7.1 的户外自然环境场景制作教程 |
| 主要功能 | 地形雕刻、水体系统、山体材质、植被散布、大气雾效、后期处理 |
| 关键渲染特性 | Lumen 全局光照、Nanite 几何体、虚拟阴影贴图、体积雾 |
| 推荐硬件 | 建议 16G 内存以上、8G 显存级别 GPU,具体按项目复杂度调整 |
| 场景规模 | 中等地形,适合单场景展示和短片镜头制作 |
| 启动方式 | 通过 UE 项目文件启动编辑器,或命令行启动 |
| 是否支持批量任务 | 支持批量放置植被、批量材质替换,可通过编辑器脚本批处理 |
| 适合场景 | 环境美术练习、概念场景搭建、虚拟制片环境、动画短视频背景 |
| 学习门槛 | 需要了解 UE 基础界面和材质节点基本概念 |
从材料看,这个教程的核心思路是“从零搭建一个可用的山湖环境”,不是直接拖一个现成场景,而是自己控制地形、材质和光照。这样做的好处是后续调整空间大,换了地形布局也能沿用同一套材质和雾效参数。
2. 适用场景与使用边界
山湖环境属于比较经典的半开放自然环境,适合以下场景:
- 动画短片和游戏过场动画的背景环境。
- 产品展示或建筑可视化的外围环境。
- 环境美术的 portfolio 作品制作。
- 学习 UE5 地形、水体、植被、光照的完整流程。
如果你要做的是超大型开放世界,或者需要极低配置也能流畅运行的场景,那这套流程会需要继续优化,不能直接把所有高密度植被和高质量雾效全部拉满。因为山湖环境默认追求画面氛围,对中低端显卡压力主要来自 Lumen 全局光照、体积雾和高分辨率阴影,实际运行中要根据目标帧率做取舍。
这里需要特别提醒素材合规问题。场景中如果使用 Quixel、Fab 商城或其他第三方资产,要确认对应的授权范围。个人学习使用和商业项目发布的资产授权要求不同。地形、材质、植被模型,能自己制作、自己扫描、或者使用明确授权素材,是最稳妥的。不要在未确认授权的情况下将别人制作的模型、贴图直接打包进自己的发布内容。
3. 环境准备与前置条件
3.1 硬件与系统建议
山湖环境的中等复杂度场景,建议满足以下条件再开始,否则编辑器操作会明显卡顿:
- CPU:8 核以上,UE5 的 shader 编译和光照构建吃多核。
- 内存:16G 起步,32G 更稳。加载高精度植被、地形、Lumen 场景时内存占用增长很快。
- GPU:8G 显存以上,6G 显存可以做但建议关闭部分高开销功能,后续会说到具体项。
- 磁盘:建议保留至少 100G 空闲空间。UE5 工程本身、DerivedDataCache、烘焙内容加起来可能会超过 50G。
- 系统:Windows 10/11 均可,NVIDIA 显卡驱动建议更新到当前稳定版本。
这里没有绝对硬性门槛,但配置越低,视口预览帧率会越差,操作耐心需求越高。实际显存占用取决于地形层数、植被实例数量、雾气质量和阴影分辨率,不能一概而论。
3.2 软件与素材准备
- 虚幻引擎 5.7.1(如果使用其他 UE5 小版本,菜单名称可能略有差异,功能位置基本一致)。
- 一个空白的第三人称模板或空白模板,用于开始场景搭建。
- 地形材质纹理:山体岩石、草地、泥土、雪地等贴图,可以使用 Quixel Bridge 的免费扫描资产,或自己准备的 PBR 纹理。
- 植被模型:树、灌木、草、石头。同样优先使用 Quixel 或 Fab 商城中授权清晰的资产。
- 水体材质基础纹理:噪声贴图、法线贴图,UE 自带水体插件也能满足基础需求。
4. 山湖环境搭建完整操作流程
以下按实际操作顺序展开。第一次做建议按这个顺序走,因为光照和雾效参数需要地形和材质出来后才能看到真实效果。
4.1 创建项目与基础设置
打开 Epic Games Launcher,启动 UE 5.7.1。新建项目时选择“空白”或“第三人称”模板。建议启用“起步内容”选项,这样可以获得一些基础材质和模型用于测试。项目默认设置保持标准即可,如果目标是短片渲染而不是游戏开发,可以稍后在项目设置中调整渲染参数。
创建完成后,进入项目设置,确认以下几点:
- 渲染:如果项目默认使用 Lumen,保持开启。Lumen 是 UE5 实时全局光照的核心,对山湖场景氛围影响很大。
- 项目名称和路径不要包含中文和特殊符号,避免部分资源导入时出现编码问题。
# 可选:通过命令行直接打开项目 # 路径按实际安装位置和项目位置调整 D:\UE_5.7.1\Engine\Binaries\Win64\UnrealEditor.exe "E:\Projects\MountainLake\MountainLake.uproject"4.2 地形雕刻与山体布局
在放置面板中添加“地形(Landscape)”到场景。创建地形时,建议使用 8x8 或 16x16 的分区数,整体尺寸根据想要的镜头范围调整。山湖场景一般建议 1km 到 2km 范围,太大容易导致场景太空洞,太小则镜头调度空间不足。
地形雕刻的核心是山体围合感。山湖场景的重点不是一座孤山,而是环湖的山势:
- 使用雕刻工具中的“雕琢”与“平滑”交替操作,先堆出大结构,再做细节。
- 湖边区域保持平缓,制造浅滩,方便后续水体交接。
- 山脚到湖岸之间要有缓坡过渡,避免悬崖直接插入水面这种不真实感。
- 背向镜头的一侧可以堆高,形成视觉屏障,让场景层次更集中。
雕刻时注意性能:地形分辨率越高,雕刻越精细,但视口会越卡。开始阶段用低分辨率把大形推出来,后面再细分局部。
4.3 水体区域创建
在放置面板中搜索“WaterBodyLake”或使用水体插件(Water Plugin)创建湖泊水体。推荐使用 UE 自带的水体插件,因为它已经处理好了水面分层、湿岸渐变和河流连接逻辑。
选择湖泊水体后,你可以看到湖水范围以样条线(Spline)控制。通过拖拽样条线点,让水体贴合之前雕刻的湖岸轮廓。这个阶段不要急着调材质,先把水域范围完全覆盖到湖盆内部,并且让边缘接近湖岸线的缓坡处。
如果水体插件没启用,去插件管理器中开启“Water”插件,然后重启编辑器。UE 自带水体系统的优势是:水体边缘会自动生成浪花泡沫、水下部分和岸边湿润效果,这比手动拿平面加透明材质要自然得多。
4.4 山体材质分层
山体材质是环境视觉质量的关键。山湖场景最常用的做法是地形材质中做多层材质混合,通过“图层权重”或“材质函数”控制岩石、草地、泥土的分布。
以最基础的节点思路为例:
- 地形材质的输出节点连接到 Landscape 的 Layer Blend 节点。
- Layer Blend 节点中设置多层:草地、岩石、泥土、雪。
- 通过高度混合和噪声纹理叠加,让不同材质之间有自然的过渡。
- 山体高处和陡峭面主要显示岩石,缓坡和平地显示草地,湖边湿地区域显示泥土。
实际操作中,最好把材质做成“材质函数”或直接使用 UE5 的“地形图层”系统,这样在地形编辑模式中可以像刷权重一样直接刷出岩石、草地、泥土的分布。注意每多一个材质层,就会增加一次纹理采样开销,所以不要盲目堆很多层。
4.5 植被系统与批量放置
植被是山湖环境最容易提升氛围感的部分。UE5 的植被工具(Foliage Tool)允许你在地形上批量绘制树木、草、石头和灌木。
操作顺序:
- 在内容浏览器中导入植被模型和材质。
- 将模型加入植被工具面板。
- 设置植被的密度、尺寸随机范围、朝向随机等参数。
- 在地形表面按住鼠标左键刷出植被。
山湖场景的植被布局逻辑:
- 湖边低洼区域放芦苇、草地、低矮灌木。
- 山脚区域放树和中等高度的灌木。
- 山顶和背风坡区域减少植被,露出岩石。
- 不要整片地形均匀刷树,要有疏密变化。
批量放植被后最容易遇到的问题就是场景一下变得很卡。此时可以在植被工具面板中降低“实例密度”或打开“Nanite 实例化”支持。UE5 中支持 Nanite 的植被可以显著降低 draw call 压力。另外,可以使用“植被编辑模式”的过滤笔刷,按斜率限制植被分布,例如“小于 30 度坡度才长草”,这样可以减少远处悬崖上不必要的植被实例。
4.6 大气雾效和光源设置
山湖场景的氛围感主要靠雾效和光照,而不是靠模型细节。
在场景中添加以下 Actor:
- 定向光源(Directional Light)作为主光,模拟太阳。
- 指数高度雾(Exponential Height Fog)。
- 体积云(Volumetric Cloud)。
- 天空大气(Sky Atmosphere)。
- 后期处理体积(Post Process Volume)。
关键参数调节思路:
- 定向光源角度决定太阳高度。清晨或傍晚角度成片效果最好,此时山体阴影长、湖面反射强。
- 指数高度雾中的“雾密度”和“雾高度衰减”参数控制在 0.3 到 1.0 之间比较稳妥,密度太大容易糊掉整片山。
- 体积云可以在“细节”面板中调整云层覆盖度、密度和风速。山湖场景建议中低云量,留出阳光直射湖面的区域。
- 开启“体积雾(Volumetric Fog)”后,光线穿透雾气的效果会明显增强,但显存开销和 GPU 压力也随之上升。中低端显卡可以优先关闭体积雾或降低体积雾分辨率。
4.7 后期处理与整体调色
选中场景中的 Post Process Volume,勾选“无限范围(Infinite Extent)”,确保场景任何位置的镜头都能被后期处理影响。
建议优先调整以下项:
- 曝光:使用“自动曝光”时,把最小亮度调低、最大亮度调高一些,避免湖面高光过曝。
- 泛光(Bloom):强度从 0.5 左右起步,山湖场景不需要太强的泛光。
- 颜色分级:轻微调整饱和度、对比度和色温。清晨可以偏冷蓝,傍晚可以偏暖橙。
- 暗角:强度 0.2 左右即可,用来突出画面中心的山湖关系。
后期处理不要一次拉到位。建议先在视口里截一张图,调整后再截一张,多次对比再决定最终参数。
5. 材质参数与渲染核心细节
5.1 水体材质注意点
水体材质决定湖水是否“看起来像水”。使用自带 Water 插件后,可以进入水体材质的实例中调整:
- 水面颜色:深绿偏蓝的湖水颜色更自然,不要用纯蓝。
- 波浪振幅和波长:湖泊水面波浪不要太大,风速参数控制在低值。
- 透明度和水下颜色:决定湖底可见程度。山湖水的透明度建议中等,能隐约看到湖底泥沙。
- 镜面反射和高光强度:湖面在逆光下要能看到一条高光带,但不要太强。
如果你手动创建水面平面材质,则需要自己编写材质节点。最基本的方式是使用“VectorParameter(颜色) + Transparency(透明度) + Normal(法线扰动)”来模拟水面。法线使用两个不同缩放和速度的噪声贴图叠加,可以让水面产生流动感。
5.2 山体材质通道混合
地形材质建议使用“Material Layer”或“Landscape Layer Blend”。假设你有 4 个通道:草地、岩石、泥土、雪,那么每个通道对应一个 Layer Weight 节点的输入。然后在材质图中,将每个层自身的颜色、粗糙度、法线贴图混合起来。
具体可以在材质蓝图里创建一个“F_ terrain”材质函数,然后让地形材质调用。这样后续要增加新图层,只需要在材质函数中添加对应的纹理采样和混合逻辑,不用重做整个材质。
5.3 项目设置与配置文件示例
可以用配置文件调整一些渲染参数。下面是DefaultEngine.ini中部分渲染相关设置示例,具体参数需要按项目实际情况调整:
[/Script/Engine.RendererSettings] r.VolumetricFog=1 r.VolumetricFog.GridPixelSize=8 r.VolumetricFog.GridSizeZ=64 r.Shadow.Virtual.Enable=1 r.Lumen.DiffuseIndirect.Allow=1 r.Lumen.Reflections.Allow=1 r.AntiAliasingMethod=4这组配置相对适合做山湖场景的实时预览。r.VolumetricFog.GridPixelSize调大可以降低体积雾的 GPU 消耗,但雾效边界会变得更粗糙。越大的值性能越好,视觉效果越差。如果你在低配机器上工作,可以删除体积雾相关配置,用普通指数高度雾代替。
6. 性能观察与资源占用分析
山湖环境这类场景的帧率瓶颈一般不在模型面数,而在着色器复杂度和 draw call 数量。UE5 有 Nanite 支持高精度模型,但 Nanite 并不能解决所有问题。植被实例、透明材质、体积雾、动态阴影才是影响帧率的主要因素。
观察性能的方法:
- 在编辑器视口按
Ctrl+Shift+H打开视口性能统计(GPU Visualizer)。 - 打开“统计”面板,查看 draw call 数量、三角形数量、实例数量。
- 用
ProfileGPU命令分析 GPU 各渲染阶段的耗时。
如果你发现场景帧率低于预期,优先检查:
- 植被绘制密度是否过高。
- 体积雾是否开启,分辨率是否过高。
- 阴影距离和阴影分辨率是否过大。
- 植被的动画材质是否大量使用了 World Position Offset。
降低性能压力的通用手段:
- 减少植被绘制密度,密度过高在远距离几乎是不可见的,但性能消耗非常大。
- 降低阴影距离(Shadow Distance)让远处山体使用低精度阴影或不再投射阴影。
- 使用 Nanite 实例化植被,替代传统 HD 实例化模型。
- 把对面数要求不高的物体(石头、树枝)合并为静态网格体。
- 降低体积雾分辨率或直接关闭。
以中等场景规模来说,如果在 8G 显存的显卡上运行时,体积雾开高、所有阴影开极高、植被密度全拉满,显存和渲染压力会非常明显。实际使用时需要多测试几次,找到画面与帧率的平衡点。以下是一组可参考的观察指标:
| 观察项 | 低配置 | 中高配置 |
|---|---|---|
| 体积雾 | 关闭或低分辨率 | 中低分辨率 |
| 阴影方法 | 传统阴影 | 虚拟阴影贴图(VSM) |
| 植被 Nanite | 关闭 | 开启 |
| 抗锯齿 | TSR 低 | TSR 高 |
| 植被绘制密度 | 40% 到 60% | 100% |
| 目标视口帧率 | 30 FPS | 60 FPS |
这个表格不是固定标准,只是让第一次操作时有一个目标方向。
7. 功能测试与效果验证
7.1 视口基础检查
场景搭建完成后,先在视口中设置几个不同角度的书签。你可以使用 Ctrl+1、Ctrl+2、Ctrl+3 保存多个视口视角,然后按 1、2、3 快速切换。这几个视角建议设置为:
- 全景视角:看整体山湖布局。
- 湖面视角:贴近湖面看反射和水体材质。
- 山体视角:靠近山体看材质分层和植被分布。
- 雾效透视视角:从湖对岸看雾的层次。
不同视角切换后,重点检查:
- 水体边缘是否和水岸贴合。
- 山体材质是否有明显的重复纹理感。
- 植被是否有悬浮在空中的实例。
- 远处雾效是否把山体过度遮挡。
- 湖面是否有明显的高光过曝。
7.2 不同天气和时间验证
山湖场景对光照非常敏感。建议将定向光源的旋转角度设置几个关键帧,测试清晨、正午、傍晚三种光照下的效果。方法是在定向光源的 Transform 上添加关键帧,或在 Sequencer 中创建简单的镜头序列。
验证过程中你会明显看到:
- 清晨光照下山体阴影长,湖面反射偏冷,雾效中带明显的光束感。
- 正午光照下阴影短,颜色偏白,场景会比较平淡。
- 傍晚光照下山体呈暖橙色,湖面反射最亮,雾效层次最好。
选定一个主光照时段后,再回到后期体积中微调曝光和颜色分级。
7.3 材质复杂度检查
使用 UE5 的材质编辑器中的“材质复杂度”视图模式,可以快速发现场景中哪些物体着色器复杂度过高。操作方式:视口左上角“Lit”下拉菜单中选择“Shader Complexity”或“材质复杂程度”。
在复杂度视图下,颜色越红,代表该物体的材质开销越大。如果大面积呈现红色,说明当前材质节点太多了。常见处理方式:
- 把多个纹理混合放在材质函数中,减少材质输出节点的计算。
- 移除不必要的细节纹理采样。
- 将高复杂度材质替换为分层材质或运行时虚拟纹理(RVT)支持。
7.4 最终渲染输出
如果目标是输出图片或视频,可以使用 UE 自带的“影片渲染队列(Movie Render Queue)”。导入关卡序列后,设置输出分辨率、帧率和采样数。注意影片渲染队列会以较高质量重新采样,这时的渲染耗时和实时视口完全不同,一帧可能需要几秒甚至几十秒。实际渲染前先用低采样设置跑几帧测试稳定性,再全量输出。
在输出前还要检查:
- 命名空间和输出目录是否正确。
- 抗锯齿设置是否符合预期。
- 是否启用了超出进度范围的插件而导致渲染出错。
- 多机渲染和单机渲染的格式差异。
8. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 地形雕刻后网格出现锯齿或破面 | 地形分辨率不足或 LOD 切换明显 | 检查地形 LOD 设置和材质复杂度视图 | 提高地形分辨率,或调整 LOD 距离范围 |
| 湖水看起来是平面的,没有波浪 | 水体材质中法线扰动过弱或波浪振幅过低 | 检查水体材质节点和参数 | 增加法线贴图强度或加大波浪振幅 |
| 植被有的浮在空中 | 植被刷在地形上但碰撞忽略或地形变化后未更新实例 | 查看植被实例位置与地形贴合度 | 重新刷植被,或在植被编辑器中调整“对齐到地面”参数 |
| 场景很卡,特别是转动镜头时 | 植被密度过高、雾效体积分辨率过高、阴影距离太长 | 查看 GPU Visualizer 和 draw call 统计 | 降低植被密度、关闭体积雾、降低阴影距离 |
| 远处山体看起来灰白一片 | 雾密度太高或雾高度衰减太弱 | 调整指数高度雾的密度参数 | 降低雾密度,增加高度衰减值到 2 到 4 之间 |
| Lumen 间接光照在某些角落出现噪点 | Lumen 反射分辨率不足 | 查看光照质量设置 | 调高 Lumen 反射质量,或降低整体光照距离 |
| 内存占用异常高,甚至导致编辑器崩溃 | 导入的资产数量过大、贴图尺寸过大 | 检查资源尺寸和贴图流送池设置 | 降低贴图尺寸,调高纹理流送池上限 |
| 打包后画面比编辑器中差很多 | 打包未包含所需渲染功能或材质质量分级不同 | 对比打包日志中的渲染设置 | 开启对应渲染插件,检查项目设置的渲染目标 |
| 水岸边缘过渡生硬 | 水体高度和地形高度不完全贴合 | 调整水体高度或雕刻地形 | 轻微降低水体高度,或将湖岸地形向下刷几笔 |
这张表覆盖了山湖环境中比较高概率出现的问题。实际操作中可以先按“画面不对 -> 材质问题;帧率不对 -> 性能问题;场景崩溃 -> 资源规格问题”来分类,再逐项排查,效率会更高。
9. 最佳实践与使用建议
9.1 先小场景验证,再做大结构
第一次做山湖环境,不要上来就雕刻 2km 的大地形。先做 500m 范围的小场景,将地形、水体、植被、光照流程全部跑通后,再扩大地形范围。小场景中出现的材质和雾效问题,在大场景中会被放大,所以先解决小场景的问题反而是最快的路径。
9.2 保留一套可复用的材质函数
把地形材质、水体材质、植被通用材质整理成独立的材质函数和材质实例。后续新建场景可以直接拖入使用。材质参数暴露得越独立,后续调整就越方便。推荐在命名时加上前缀,比如M_F_Terrain_Ground、MF_Foliage。这能帮你在内容浏览器中快速查找和复用,避免重复劳动。
9.3 素材目录规范
建立一个专用的项目结构,将资产分为地形、水体、植被、光照、后期等类别:
Content/ MountainLake/ Maps/ Materials/ Textures/ Meshes/ Foliage/ Effects/ Lighting/模型、贴图、材质、关卡按类别放置,避免把所有资产堆在同一层目录里。山湖场景资产量不算大,但如果不分类,后期找一个小石头模型都会非常痛苦。
9.4 批量任务的工程化处理
如果场景需要替换大量植被模型或修改大量材质参数,不要手动一个个改。可以借助 UE 的编辑器工具脚本,使用 Python 或编辑器工具控件(Editor Utility Widget)做批量操作。以下是一个通用的 Python 脚本示例,用途是批量替换选中资产列表中的材质,按项目实际修改:
import unreal # 批量修改指定资产的材质参数 # 需要按实际资产路径和参数调整 asset_paths = [ "/Game/MountainLake/Materials/MI_Tree_01", "/Game/MountainLake/Materials/MI_Rock_02", ] for asset_path in asset_paths: asset = unreal.EditorAssetLibrary.load_asset(asset_path) if asset: # 修改材质实例的标量参数,参数名需与材质中一致 unreal.MaterialEditingLibrary.set_material_instance_scalar_parameter_value( asset, "Roughness", 0.5 ) unreal.EditorAssetLibrary.save_asset(asset_path) print("材质参数批量修改完成")这只是示例代码,执行前需要确认你的材质实例中有对应名称的标量参数,而且参数类型与实际材质中的一致。如果你不熟悉编辑器脚本,也可以使用“查找替换”功能配合资产操作面板完成批量替换。
9.5 接口与自动化思路
山湖环境的视觉验证如果要做多角度对比,也可以用 UE 的命令行参数自动渲染。通过-ExecCmds传入待执行的命令,例如:
D:\UE_5.7.1\Engine\Binaries\Win64\UnrealEditor-Cmd.exe "E:\Projects\MountainLake\MountainLake.uproject" -run=pythonscript -script="E:\Projects\MountainLake\Scripts\render_test.py"通过命令行脚本的方式,可以在不打开编辑器的情况下批量渲染多个镜头。这样在调整雾效和光照参数时,可以一次生成多个对比图,而不需要手动截图。实际运行前,脚本路径和执行逻辑需要按你自己的项目结构做调整。
10. 总结与下一步
UE5.7.1 创建“山湖”环境这条流程,最值得尝试的地方在于场景规模适中、涉及的技术点全面,能在一遍流程中把地形雕刻、水体系统、植被布局、材质混合、大气雾效和后期调色全部串起来。最先应该验证的是地形和水体区域的匹配,这是整个场景的地基,地基不对,后续所有光照和雾效调整都会失去依据。最容易踩的坑是植被密度和体积雾同时超标,导致场景瞬间从流畅变成幻灯片,建议第一次操作时先保守一点,植被密度和雾效分辨率都给中低档,保证编辑过程顺畅。
后续可以继续扩展的方向包括:山体加入雪线和可交互的时间切换系统;湖面加入简单的水下场景和鱼群粒子;在 Sequencer 中制作一段从远山推进到湖面的相机动画;或者把场景打包到可执行展示版本,给其他人用命令行参数切换不同时段的光照。
如果你接下来打算做场景 Demo 或动画短片,建议在开始前先确定目标分辨率、目标帧率和镜头范围,这套参数会直接决定地形尺寸、植被密度和光照质量的上限。先定目标,再调画面,是山湖场景制作最省事的方式。