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

UE中的PCG框架:程序化内容生成指南

创作时间:
作者:
@小白创作中心

UE中的PCG框架:程序化内容生成指南

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

程序化内容生成(Procedural Content Generation,简称PCG)是一种在游戏开发中自动生成游戏内容的技术。通过使用算法和规则,开发者可以创建出多样化的游戏世界、地形、建筑等元素,大大提高了游戏内容的丰富度和可玩性。本文将详细介绍Unreal Engine中的PCG框架,帮助开发者掌握这一强大的工具。

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键;;

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号