资源分享
评论获取提取码
Stylized 风格化材质与资产
适合制作清新、动画风格的场景后处理材质。
- 网盘下载: 点击跳转
写实雪山地形 (Snowy Mountains Landscape)
高质量的雪山高度图与地貌资产,快速搭建宏大场景。
Ultra Dynamic Sky (动态天空系统)
环境美术必备的神级插件。
VDB 云
体积云
白嫖地址:
地形系统笔记
基于官方文档
基础设置与创建
在 Modes (模式) 面板中选择 Landscape。注意,在未创建地形前,雕刻(Sculpt)和绘制(Paint)选项是灰色的。
Section Size & Sections Per Component: 这些设置直接关系到 LOD(细节层次)的计算。
- 较小的 Section 在 LOD 切换上更激进(CPU 负担较大)。
- 2x2 的 Section 允许一个组件有 4 个不同的 LOD 层级。
- Overall Resolution: 地形的总顶点数,这个数值通常建议参考官方文档的推荐值,以匹配高度图的分辨率。
导入高度图 (Heightmap)
这是快速生成地形的神器。
- 原理: 高度图是一张黑白贴图,白色代表最高点,黑色代表最低点。
- 操作: 在创建地形时选择“Import from File”。引擎会根据图片分辨率自动调整地形尺寸。Tip: 尽量让图片分辨率与你想要的地形尺寸严格对应,避免拉伸。
雕刻工具箱 (Sculpting Tools)
- Sculpt: 基础雕刻,配合 Alpha 贴图可制作特定纹理。
- Smooth: 柔化高度差,去除噪点。
- Flatten: “削平”工具,制作建筑基座或平台最常用。配合 "Flatten Target" 可锁定特定高度。
- Ramp: 制作山路或斜坡的专用工具。
- Erosion / HydroErosion: 模拟自然风化和雨水侵蚀。建议用在山脊等对比强烈的边缘,增加真实感。
- Noise: 添加随机噪点,适合快速打破地形的平滑感。
材质快捷键
纯新手向..
| 快捷键 (按住键+左键) | 节点名称 (Node) | 功能描述 |
|---|---|---|
| 1 / 2 / 3 / 4 | Constant Vector 1-4 | 快速创建 1-4 维向量(数值/颜色)。 |
| A | Add | 加法运算。 |
| B | BumpOffset | 视差贴图基础,提供伪深度。 |
| C | Comment | 为选中的节点群添加注释框。 |
| D | Divide | 除法运算(A除以B)。 |
| E | Power | 幂运算,控制对比度或高光衰减。 |
| F | MaterialFunctionCall | 调用已有的材质函数。 |
| I | If | 条件判断(大于/小于/等于)。 |
| L | Linear Interpolate (Lerp) | 线性插值,最常用的混合节点。 |
| M | Multiply | 乘法运算,用于混合颜色或增强数值。 |
| N | Normalize | 归一化向量。 |
| O | OneMinus | 反相(1减去数值),黑白颠倒。 |
| P | Panner | 纹理滚动,用于水流、传送带等。 |
| R | ReflectionVector | 反射向量,用于自定义反射计算。 |
| S | ScalarParameter | 标量参数,最常用的数值变量。 |
| T | TextureSample | 纹理采样。 |
| U | TextureCoordinate | UV 坐标控制。 |
| V | VectorParameter | 向量参数(通常用于颜色)。 |
| Shift + C | ComponentMask | 通道遮罩,提取 R/G/B 单通道。 |
| 空格键 | Refresh Preview | 刷新当前节点的预览图。 |
| 双击连线 | Reroute Node | 添加路由节点,整理连线走向。 |
视差遮蔽贴图 (POM - Parallax Occlusion Mapping)
关键参数:
- Heightmap Texture: 必须是黑白高度图,非法线图。
- Height Ratio: 视差高度,默认 0.08。数值过大可能导致分层明显。
- Min/Max Steps: 模拟层级的数量,数值越高效果越好但越费性能。
- Pixel Depth Offset: 偏移像素深度,使物体能与其他几何体正确穿插(看起来像真的凹进去了)。
- 限制: 开启 POM 的物体在计算阴影时可能不准确,建议关闭该物体的
Cast Shadow或仔细调整接触阴影。
场景搭建提效工具
批量编辑神器:Property Matrix
当你需要同时修改 100 个不同物体的 Lightmap 分辨率或 LOD 组时,不需要一个个点。
- 操作: 在 Content Browser 中选中多个资产 -> 右键 -> Asset Actions -> Bulk Edit via Property Matrix。
- 局限: 它不能直接批量替换材质,但对于数值类属性修改效率极高。
对齐与吸附 (Snapping)
- 临时改变轴心: 选中物体后,按住 中键 拖动坐标轴,可临时改变 Pivot 位置(仅编辑器内有效)。
- 顶点吸附: 按住 V 键 拖动物体,可精准吸附到另一个物体的顶点,模块化拼接必备。
植物工具 (Foliage Tool)
- 过滤器 (Filter): 善用 Filter 只对特定层级(如只对 Landscape)进行刷涂。
- Reapply (重应用): 已经刷好的植物觉得太小?切到 Reapply 模式,调整 Scale 参数并涂抹,可以在不重新种植的情况下修改属性。
- Cull Distance: 务必设置剔除距离,这是大场景优化的关键。
VDB
这是一份基于 Unreal Engine 5.4+(及2025年最新标准)的 VDB 详细实战指南。本指南结合了官方文档的标准流程以及社区(CSDN/知乎)总结的“野路子”和避坑经验。
核心概念理解
在开始之前,请务必理解 UE5 处理 VDB 的逻辑:
- VDB 文件 $\rightarrow$ 被导入为 Sparse Volume Texture (SVT, 稀疏体积纹理)。
- SVT $\rightarrow$ 被放入 Material (材质) 中采样。
- Material $\rightarrow$ 被赋值给场景中的 Heterogeneous Volume Actor (异质体积演员) 进行渲染。
准备与导入
准备 VDB 源文件
- 来源: Houdini, EmberGen, Blender, 或资源站(如 The Pixel Lab)。
- 注意: 确保导出的 VDB 包含你需要的 Grid(网格数据),最常见的是
density(密度/烟雾)和temperature(温度/火焰)。
导入设置
将 .vdb 文件(若是序列,只需拖入第一帧)拖入 UE 内容浏览器,会弹出导入面板:
Import Type (导入类型):
- 如果你是单帧静止云/烟雾:选 Static。
- 如果你是爆炸/流体动画:选 Animated。
Attributes (属性映射):
UE 会检测 VDB 里的通道。Attribute A (通常是 Density): 建议格式设为 Format: R8 (8bit Unorm)。
- 理由: 密度图通常不需要高精度,8bit 能节省大量显存。
Attribute B (通常是 Temperature): 建议格式设为 Format: R16 (16bit Float)。
- 理由: 火焰亮度变化极大(HDR),需要浮点数才能呈现“过曝”的发光感,否则火焰会断层。
Coordinate System (坐标系):
- 如果模型来自 Blender/Maya (Y-up),可能需要勾选转换坐标系,或者在场景里旋转 Actor。
材质系统
1. 创建材质
创建一个新材质,命名为 M_VDB_Master。
在 Details 面板修改以下核心参数:
- Material Domain:
Volume(体积) - Blend Mode:
Additive(叠加) —— 注意:虽然叫叠加,但这是体积渲染的标准模式,它允许光线累积。
2. 节点连接逻辑
你需要使用 Sparse Volume Texture Sample 节点(专门为SVT设计的采样器)。
输入端:
- Sparse Volume Texture: 创建一个
Sparse Volume Texture Object Parameter(参数化),并在默认值里填入你导入的 VDB。
- Sparse Volume Texture: 创建一个
输出端连接 (核心公式):
Extinction (消光/不透明度): 对应 VDB 的
density。- 逻辑:
Attributes A(R通道) $\times$Density Multiplier(标量参数) $\times$Color(颜色参数)。 - 连接: 连到材质球的 Extinction 引脚。
- 逻辑:
Emissive (自发光/火焰): 对应 VDB 的
temperature。- 逻辑: 使用
Blackbody(黑体辐射) 节点。 - 连接:
Attributes B(R通道) $\rightarrow$Blackbody节点的 Temp 输入 $\rightarrow$ 连到材质球的 Emissive 引脚。
- 逻辑: 使用
社区技巧 (CSDN/知乎):
官方材质很复杂,推荐直接偷懒:在 Content Browser 设置中勾选 Show Engine Content,搜索 M_SparseVolume。这是官方写好的完美材质,直接右键创建 Material Instance (材质实例),把你的 VDB 贴图放进去即可。场景渲染
1. 放入场景
- 在 Place Actors 面板搜索并拖入 Heterogeneous Volume (异质体积)。
- 在 Details 面板的 Material 插槽中,放入你刚才创建的材质实例。
- 此时你应该能看到烟雾/火焰了。
2. 动画设置
如果是 VDB 序列:
- 选中 Heterogeneous Volume Actor。
- 在 Details 面板找到 Streaming 或 Animation 栏目。
- 勾选 Playing (播放) 和 Looping (循环)。
- Frame Rate: 确保帧率与你导出软件(如Houdini)设置的一致(通常是24或30)。
3. 光照与投影
默认情况下,体积可能看起来很“平”。
- 接收光照: 场景中必须有定向光 (Directional Light) 或点光。
- 投射阴影: 选中 Light Source,搜索 Transmission,确保相关体积阴影选项开启。
常见问题与避坑指南 (Debug & Troubleshooting)
这里汇总了知乎/CSDN上用户遇到最多的“灵异事件”及其解决方案。
Q1: 导入后场景里什么都看不见?
原因1: 比例尺问题。Houdini 的 1米 = UE 的 1厘米 (默认)。
- 解决: 尝试把 Actor 的 Scale 放大 100 倍。
原因2: 密度太低。
- 解决: 在材质实例里,把
Density Multiplier拉大到 10、50 甚至 100。
- 解决: 在材质实例里,把
原因3: Extinction 没连。
- 解决: 检查材质的 Extinction 引脚是否有输入。
Q2: 渲染出来全是方块马赛克 (Blocky Artifacts)?(我遇到了)
- 原因: SVT 的流送精度不足。
解决:
- 打开控制台 (
~键)。 - 输入
r.SparseVolumeTexture.Streaming.PrefetchMipLevelBias -1(负数会强制加载更高清的纹理层级)。 - 或者在 Actor 属性里寻找 Mip Level 设置。
- 打开控制台 (
Q3: 只有烟没有火 (或者只有火没有烟)?
- 检查通道映射: 你的 VDB 导出时是否真的叫
density和temperature?有些软件导出叫fuel或heat。 - Import Settings: 重新打开 VDB 资产面板,检查 Attributes A 和 B 是否正确关联了 VDB 内部的通道名。
Q4: 阴影断层或像百叶窗一样闪烁?
这是 UE5 体积渲染的常见 Bug。
方案A (推荐): 切换到 Path Tracing (路径追踪)。这是渲染 VDB 最完美的方式,但不是实时的。
- 指令:
r.PathTracing.HeterogeneousVolumes 1
- 指令:
方案B (实时): 调整步进质量。
- 在 Heterogeneous Volume Actor 中,找到 Step Size。数值越小,精度越高,开销越大。尝试减小 Step Size。
方案C (阴影指令):
- 输入
r.HeterogeneousVolumes.Shadows 1强制开启阴影。
- 输入
Q5: 摄像机拉远了 VDB 就消失了?(我遇到了)
- 原因: 距离剔除优化。
- 解决: 控制台输入
r.HeterogeneousVolumes.MaxTraceDistance 1000000(输入一个巨大的数字)。
Q6: 显存爆炸 (VRAM Crash)?(我遇到了)
- VDB 是显存杀手。
- 优化: 回到 Houdini/EmberGen,使用
Resample节点降低 Voxel Size (体素大小)。例如从 0.05 降到 0.1,体积数据量会呈指数级下降。

