网站首页 > 技术文章 正文
本教程将引导您使用虚幻引擎5中的程序化内容生成(PCG)框架,在几分钟内快速创建一个森林。基本原理是通过PCG图表定义规则,让引擎自动在指定的表面(如地形)上采样点,并根据这些点的位置、旋转、缩放等属性来程序化地放置静态网格体(如树木、草丛等)。
第一步:启用PCG插件
- 打开您的虚幻引擎5项目。
- 在顶部菜单栏,选择 Edit -> Plugins。
- 在 Plugins 窗口中,搜索框内输入 procedural。
- 找到 Procedural Content Generation Framework (PCG) 插件,勾选其左侧的复选框以启用。
- 点击右下角的 Restart Now 按钮重启编辑器使插件生效。
第二步:创建新关卡
- 编辑器重启后,在顶部菜单栏,选择 File -> New Level...。
- 在弹出的 New Level 窗口中,选择 Open World 模板。
- 点击 Create 按钮。这将创建一个带有默认地形的新关卡。
第三步:创建PCG图表
- 在底部的 Content Browser 中,找到您希望存放PCG资源的位置(例如,Content 文件夹下)。
- 在空白处右键单击,从弹出菜单中选择 PCG -> PCG Graph。
- 将新创建的 PCG Graph 文件命名为 PCG_Forest。
- 双击 PCG_Forest 文件以打开PCG图表编辑器。
第四步:配置PCG图表 - 生成树木
- Input节点:
- 在 PCG_Forest 图表编辑器中,您会看到一个默认的 Input 节点和一个 Output 节点。
- 点击 Input 节点右侧的小箭头展开其引脚。我们将主要使用 Landscape Height 输出。
- Surface Sampler节点(用于树木):
- 从 Input 节点的 Landscape Height 引脚拖出一条线,在弹出的搜索框中输入 Surface Sampler 并选择它。
- 将 Landscape Height 连接到 Surface Sampler 节点的 Surface 输入引脚。
- Density Filter节点(可选,用于控制树木密度):
- 从 Surface Sampler 节点的 Out 引脚拖出一条线,搜索并添加 Density Filter 节点。
- 选中 Density Filter 节点。
- 在右侧的 Details 面板中,找到 Lower Bound 属性,将其值设置为 0.813334。(这会减少一些采样点,使树木不那么密集)。
- Transform Points节点(用于树木):
- 从 Density Filter 节点的 Out 引脚(如果使用了该节点,否则从 Surface Sampler 的 Out 引脚)拖出一条线,搜索并添加 Transform Points 节点。
- 选中 Transform Points 节点。
- 在 Details 面板中,进行以下设置:
- Rotation Min (Z轴): -360.0
- Rotation Max (Z轴): 360.0
- Offset Min (X, Y, Z): -10.0, -10.0, -10.0
- Offset Max (X, Y, Z): 10.0, 10.0, -10.0
- Scale Min (X, Y, Z): 1.0, 1.0, 1.0
- Scale Max (X, Y, Z): 1.2, 1.2, 1.2
- Static Mesh Spawner节点(用于树木):
- 从 Transform Points 节点的 Out 引脚拖出一条线,搜索并添加 Static Mesh Spawner 节点。
- 选中 Static Mesh Spawner 节点。
- 在 Details 面板中,找到 Mesh Entries 部分,点击 + (Add element) 按钮添加网格体条目。
- 展开 Index [0],在 Descriptor 下的 Static Mesh 处,选择一个树木网格体,例如来自 Megascans 的 European Beech。
- 重复点击 + 按钮并选择不同的树木网格体来增加多样性。
- 最后,将 Static Mesh Spawner 节点的 Out 引脚连接到主 Output 节点的 In 引脚。
第五步:在关卡中放置并测试PCG
- 返回主编辑器窗口。
- 从 Content Browser 中将 PCG_Forest 图表拖拽到关卡视口中。这会在关卡中创建一个 PCG Volume Actor。
- 选中场景中的 PCG_Forest Actor。
- 在右侧的 Details 面板中,找到 PCG 组件下的 PCG Component 部分。
- 确保 Generate on Load 是勾选的。
- 调整 Scale 属性以覆盖您希望生成森林的区域,例如设置为 (X=70.0, Y=70.0, Z=70.0)。
- 您应该能看到树木已经根据PCG规则生成了。
- 如果想预览采样点,可以在PCG图表中右键点击 Surface Sampler 或 Transform Points 节点,选择 Debug。再次点击可取消 Debug。
第六步:添加地表覆盖物(草、植物等)
- 返回 PCG_Forest 图表编辑器。
- 我们可以复用之前的节点结构来添加更多细节。选中之前创建的从 Surface Sampler 到 Static Mesh Spawner 的所有节点(树木链),按 Ctrl+C 复制,然后在图表空白处按 Ctrl+V 粘贴。
- 将新的 Surface Sampler 节点的 Surface 输入引脚也连接到主 Input 节点的 Landscape Height 输出。
- 修改新的 Surface Sampler 节点 (用于地表覆盖):
- 选中新的 Surface Sampler 节点。
- 在 Details 面板中,修改 Seed 值,例如改为 1176230130,以确保与树木的采样点不同。
- 为了让地表覆盖物更密集,可以调整 Point Extents (例如 X: 100.0, Y: 100.0, Z: 100.0) 和 Looseness (例如 0.5)。
- 删除新的 Density Filter 节点 (可选):
- 如果希望地表覆盖物非常密集,可以删除这条链上的 Density Filter 节点,并将新的 Surface Sampler 直接连接到新的 Transform Points 节点。
- 修改新的 Transform Points 节点 (用于地表覆盖):
- 根据需要调整其 Offset、Rotation 和 Scale 范围。通常地表植物不需要太大的随机缩放和位移。
- 修改新的 Static Mesh Spawner 节点 (用于地表覆盖):
- 选中新的 Static Mesh Spawner 节点。
- 在 Details 面板中,移除之前复制过来的树木网格体条目。
- 点击 + (Add element) 添加新的 Mesh Entries,选择一些草、蕨类植物、小树枝等网格体,例如:
- 将这个新的 Static Mesh Spawner 节点的 Out 引脚也连接到主 Output 节点的 In 引脚(PCG会自动合并多个输入)。
第七步:调整场景和光照
- 地表材质:
- 在 Outliner 中选中 Landscape Actor。
- 在 Details 面板中,找到 Landscape Material 属性。
- 指定一个合适的地表材质,例如教程中使用的 MI_BF_Landscape_MASTER (如果您有这个资源)。
- 光照调整:
- 在 Outliner 中选中 DirectionalLight。
- 在 Details 面板中,将 Intensity 调整为一个合适的值,例如 20.0 lux。
- 后期处理 (Post Process Volume):
- 从左上角的 Quick Add (快速添加) 按钮,选择 Volumes -> PostProcessVolume。
- 选中新添加的 PostProcessVolume。
- 在 Details 面板中,搜索 Infinite Extent (Unbound) 并勾选它。
- 展开 Exposure 部分:
- 将 Metering Mode 设置为 Manual。
- 勾选 Exposure Compensation 并将其值设置为 1.0。
- 勾选 Min EV100 并设置为 1.0。
- 勾选 Max EV100 并设置为 1.0。
第八步:保存和测试
- 保存您的关卡 (例如,File -> Save Current Level As...,命名为 Forest)。
- 点击编辑器顶部的 Play 按钮,在场景中漫游,观察您创建的森林。
现在您已经使用PCG成功创建了一个基础的森林场景!您可以继续调整PCG图表中的各种参数,添加更多类型的植被,以达到更丰富的效果。
猜你喜欢
- 2025-05-22 聊聊Spring事务失效的12种场景,太坑人了
- 2025-05-22 kubernetes:基于容器技术的分布式架构
- 2025-05-22 6月29日考情回忆 | 哭晕在考场,竟然又遇到了双加试
- 2025-05-22 The Importance of Communication in Life
- 2025-05-22 通过基准配置文件改善应用性能
- 2025-05-22 CBN丨Bubble-tea giant Mixue soared on debut after HK’s biggest IPO of year
- 2025-05-22 爱可可AI论文推介(10月16日)
- 2025-05-22 真相只有自己知道,评Audionet,Aqua和Schiit
- 2025-05-22 爱可可AI论文推介(11月12日)
- 2025-05-22 CBN丨China home prices continue to improve in January
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- think in java (14)
- javascript权威指南 (19)
- nfs (25)
- componentart (17)
- yii框架 (14)
- springbatch (28)
- oracle数据库备份 (25)
- iptables (21)
- 自动化单元测试 (18)
- python编写软件 (14)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- dfn (14)
- http error 503 (21)
- pop3服务器 (18)
- 图表组件 (17)
- android退出应用 (21)