虚幻PCG——基础使用

介绍

PCG(程序化生成系统)是一种程序化生成系统,主要是地编美术使用,用于制作量大但重复性高的场景。
PCG系统中核心部分是被称之为PCG图表的编辑器,这个工具是一种类似于蓝图系统的工具。

概览

基础使用案例

在这个案例中,我们需要使用PCG系统制作一个树木生成的PCG图表

达成的效果

1.案例PCG节点逻辑

使用的节点类型

  • 采样器(Sampler):包含从空间数据源(例如体积、表面和网格体)生成点的节点。
  • 空间(Spatial):包含能在数据之间创建空间关系、更改其内部空间数据或检索数据的节点。
  • 筛选器(Filter):包含基于条件或按点筛选数据的节点。
  • 生成器(Spawner):包含在给定点位置创建新数据或放置Actor的节点。

2.节点介绍

表面采样器(Surface Sampler):


简单来说采样器就是生成物生成点的布置方式,
而表面采样器就是说,这个采样器会在物体的表面生成各种物体,这在不规则地形(如山体)的情况下特别好用在常规网格模式中,对表面数据上的点取样。此节点包含以下选项:

  • 点范围(Point Extents) :定义表面上的基本网格单元大小。
  • 松散度(Looseness) :定义允许变化的单元大小。在实践中,单元大小是点范围 * (1 + 松散度)。
  • 每平方米点数(Points Per Square Meter) :计算保留的单元的比率。此属性可在网格很大时避免过度拥挤。

法线转为密度(Normal To Density):

基于点法线和提供的设置( 法线(Normal) 、 偏移(Offset) 、 强度(Strength) 、 密度模式(Density Mode) )计算点数据密度,类似于点积,但更灵活。

密度过滤器(Density Filter)


简单来说就是筛选密度范围的节点基于密度和提供的筛选范围筛选点。

变换点

使用基本随机规则更改点变换(就地更改,或通过 应用于属性(Apply to Attribute) 更改为属性)。 变换的每个组成部分(平移、旋转、缩放)可以设置为绝对而不是相对,以允许更多控制权。
它包含以下选项:

  • 均匀缩放(Uniform Scale) :将点数据缩放到相同的X、Y、Z比率。
  • 重新计算种子(Recompute Seed) :强制点种子根据其新世界位置更新。
  • 示例(Example) :使用带有绝对旋转且旋转Z为0的Transform Points节点,将确保点在Z中向上指。这会确保点在从地形取样后向上。

静态网格体生成器

就是生成对应网格体的节点

相关链接

官网链接:https://docs.unrealengine.com/5.3/zh-CN/pcg-development-guides/参考链接:

### 如何在 Unreal Engine 中使用 PCG 进行程序化内容生成 #### 创建新项目并启用 PCG 插件 为了开始使用 PCG,在创建新的 Unreal Engine 项目时,确保启用了 PCG 插件。这一步骤简化了后续操作中的配置过程[^1]。 #### 添加和配置 PCG Graphs PCG 的核心在于图形节点网络的设计。通过右键点击编辑器内的任意空白区域,选择 `New PCG Graph` 来启动一个新的图文件。此图文件作为所有逻辑运算的基础容器,允许开发者连接不同的节点以定义数据流和转换规则[^2]。 ```cpp // C++ 示例:动态加载 PCG 图形资产 UPCGGraph* LoadPCGGraph(FString Path){ static ConstructorHelpers::FObjectFinder<UPCGGraph> PCGAsset(*Path); return PCGAsset.Object; } ``` #### 使用预设节点加速开发 Unreal 提供了一系列内置的 PCG 节点帮助快速搭建原型,比如地形生成、物体分布等功能可以直接调用而无需从零编码实现。这些预设节点大大减少了初期设置的时间成本,并提供了良好的起点让开发者迭代自己的创意想法[^4]。 #### 编辑态与运行态的区别处理 值得注意的是,在设计阶段应该充分考虑编辑态(Editor Time)和运行态(Runtime)之间的区别。某些复杂的计算可能更适合放在编辑状态下执行一次即可;而对于那些需要实时响应玩家行为的内容,则应放置于运行时环境中进行更新[^5]。 #### 测试与调试技巧 当遇到问题时,可以利用可视化反馈机制来辅助排查错误——例如查看中间结果或最终输出是否符合预期。此外,还可以借助日志记录功能追踪具体数值变化情况以便更精准定位潜在缺陷所在之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值