目录
PCG(Procedural Content Generation Framework)程序化内容生成框架是一个工具集,用于在UE内创建自己的程序化内容;可构建快速可迭代工具,和任何复杂内容,如建筑或生物群落(biome),甚至整个世界;
PCG为扩展性和交互性而构建,可轻松集成到现有的世界构建管道中,有效地模糊了程序性和传统工作流间的界限;
注,要求开启Procedural Content Generation Framework插件;
重要概念和术语
- 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表示由前一个节点操纵的最后一个动态属性;
Component | Type |
Vectors | |
X, Y, Z, W, x, y, z, w | Double,不可于RCBA混用; |
R, G, B, A, r, g, b, a | Double,不可于XYZW混用; |
Length, Size | Double,返回vector长度; |
Transforms | |
Location, Position | Vector3 |
Scale, Scale3D | Vector3 |
Rotation | Quaternion |
Rotators | |
Pitch, Yaw, Roll | Double |
Forward, Right, Up | Vector3 |
Quaternions | |
Support Vector extractor | Vector |
Support Rotator extractor | Rotator |
C++ Settings Overrides
在C++属性元数据中,某些设置被标记为PCG_Overridable;对于蓝图节点,可见且实例可编辑的变量是可重写的;
一旦被覆盖,引脚将作为高级引脚自动添加到节点中;有两种类型的引脚:
- Global override,接受任意数量的属性,并覆盖与名称完全匹配的每个属性的所有设置;
- Single override,接受任意数量的属性,如名称完全匹配则覆盖指定设置,或如仅有一个属性则任何名字;
属性类型需要匹配,但某些类型可转换;
Graph Parameters
与材质编辑器中的参数类似,PCG图形参数是用户创建的可重写值,可帮助为各种情况创建自定义的图形;要创建新参数,请执行以下操作:
- 打开Graph Settings;
- 点击Parameters旁的 + 按钮;
- 点击新参数旁的向下箭头,重命名和选择类型;
Graph Instances
PCG Graph Instances类似于Material Instances,并使用Graph Parameters来帮助现有图形作为实例或子图表的重新使用;创建PCG Graph Instances操作:
- 在关卡内选择PCG资产;
- 在detail 面板内选择PCG组件;
- 点击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;
-
Create the Level
-
Create the PCG Volume
-
Create the PCG Graph Asset
-
Connect the PCG Component
-
Create the Points
-
Add Variation
-
Spawn the Static Meshes