问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PCG程序化内容生成框架详解

创作时间:
2025-03-11 14:10:37
作者:
@小白创作中心

PCG程序化内容生成框架详解

引用
CSDN
1.
https://m.blog.csdn.net/NapoleonCoder/article/details/140753866

PCG(Procedural Content Generation Framework)程序化内容生成框架是一个工具集,用于在UE内创建自己的程序化内容。它可以帮助开发者构建快速可迭代工具,以及各种复杂内容,如建筑、生物群落(biome)甚至整个世界。PCG为扩展性和交互性而构建,可以轻松集成到现有的世界构建管道中,有效地模糊了程序性和传统工作流间的界限。

PCG的核心概念

Points

由PCG graph生成的3D空间的位置(通常用于生成mesh),其包含相关的transforms、bounds、color、density、steepness、seed。可以赋予自定义属性。

Point Density

被各种graph node使用的值。在debug视图中表示为每点上的gradient,并表示该点存在于该位置的概率。0为黑色,1为白色。

The Procedural Node Graph

程序化节点图表是PCG的核心部分,类似于材质编辑器的格式。空间数据从关卡中的PCG组件流入图表,并用于生成点。这些点通过一系列的节点被过滤和修改,输出会实时更新。最后的点可用于生成各种资产。

使用PCG Graph Editor,可以配置和编辑PCG图表资源。导航编辑器类似于蓝图或材质编辑器,还包含一些特有的工具和面板。类似蓝图,可以通过从Node Palette拖拽,或使用context menu添加节点。

PCG Nodes

PCG Graph由一系列节点组成,每个节点执行一个对最终结果有贡献的操作。节点分类如下:

  • Blueprint:包含蓝图相关节点。
  • Control Flow:用于控制逻辑流的节点。
  • Debug:帮助调试节点。
  • Density:影响点密度节点。
  • Filter:基于条件或每点过滤数据的节点。
  • Generic:影响数据但不影响空间数据的节点。
  • Hierarchical Generation:用于控制Hierarchical Generation模式的节点。
  • Input Output:用于加载Alembic和其他外部数据的节点。
  • IO:控制与外部数据交互的节点。
  • Metadata:与属性交互的节点(无论是点上还是属性集上)。
  • Param:控制从Actor或Blueprint变量检索参数的节点。
  • Point Ops:影响点及其特性(properties)的节点。
  • Sampler:从空间数据源(如volumes、surfaces、meshes)生成点的节点。
  • Spatial:在数据间创建空间关系的节点,更改其内部空间数据或检索数据。
  • Spawner:创建数据或在给定位置放置Actor的节点。
  • Subgraph:处理子图表的节点。

Attributes and Metadata

Attributes属性类似变量,并存储数据(通过名字和类型定义),有两种类型:

  • Static Attributes:属性是固定且始终存在,以$开始,如$Position。
  • Dynamic Attributes:在运行时创建并作为图表数据的Metadata存储。

Attribute Selector

通过Attribute Selector,一些PCG图表节点可提供static attributes和dynamic attributes间的交互性。提供了可用于选定节点的属性列表。

使用以下命名规则:

  • $开头的名字是静态属性,无$开头的则为动态属性。
  • @Last表示由前一个节点操纵的最后一个动态属性。

C++ Settings Overrides

在C++属性元数据中,某些设置被标记为PCG_Overridable。对于蓝图节点,可见且实例可编辑的变量是可重写的。一旦被覆盖,引脚将作为高级引脚自动添加到节点中。有两种类型的引脚:

  • Global override:接受任意数量的属性,并覆盖与名称完全匹配的每个属性的所有设置。
  • Single override:接受任意数量的属性,如名称完全匹配则覆盖指定设置,或如仅有一个属性则任何名字。

属性类型需要匹配,但某些类型可转换。

Graph Parameters

与材质编辑器中的参数类似,PCG图形参数是用户创建的可重写值,可帮助为各种情况创建自定义的图形。要创建新参数,请执行以下操作:

  1. 打开Graph Settings。
  2. 点击Parameters旁的**+**按钮。
  3. 点击新参数旁的向下箭头,重命名和选择类型。



Graph Instances

PCG Graph Instances类似于Material Instances,并使用Graph Parameters来帮助现有图形作为实例或子图表的重新使用。创建PCG Graph Instances操作:

  1. 在关卡内选择PCG资产。
  2. 在detail 面板内选择PCG组件。
  3. 点击Save Instance按钮以创建新实例。

PCG Component

Procedural Node Graph可通过PCG Component对关卡进行采样。此组件包含Procedural Node Graph的实例,并在编辑器内和在运行时管理程序内容的生成。PCG Component作为组件添加到Actor或作为PCG Volume的一部分,一个基本的volume对快速设置程序化内容有用。

将PCG Graph链接到PCG Component:



Debugging in PCG

调试是PCG工作流程的重要组成部分。每个节点都有各种调试选项,可用于在米格步骤中可视化数据:

  • Debug Rendering
  • Enable / Disable node
  • Inspect

激活或禁用节点:勾选Enable、或按E键。

开启/关闭调试:勾选Debug、或按D键。

查看节点属性列表,按A键。

Create a Simple Forest Volume

程序生成工具的一个常见用例是在开放世界环境中生成biome。以下是创建简单森林体积的步骤:

  1. Create the Level
  2. Create the PCG Volume
  3. Create the PCG Graph Asset
  4. Connect the PCG Component
  5. Create the Points
  6. Add Variation
  7. Spawn the Static Meshes
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号