PCG Framework是什么
PCG Framework是UE5 程序化内容生成框架,目前主要用于程序化撒点功能。(UE5.5版本后支持了DynamicMesh几何生成)
PCG 图资产创建
PCG Volume体积
把PCGGraph资产拖拽到场景就生成
PCG 点云系统
空间点云采样(Spatial)
表面(Surface)采样
体积采样
对具备Volume的Actor进行的采样
纹理采样
Spline采样
地形采样
Actor采样
Actor采样本身指对某个Actor具备的元素的采样(比如地形,Spline, 体积等等)
比如对PCGActor自身进行采样得到(体积)
对含有Spline组件的Actor就是Spline采样
StaticMesh采样
DynamicMesh采样
点云创建
CreatePoints
可以创建任意数量和位置的点云
CreatePointsGrid
创建3D网格分布的点云
同理还有CreatePointsSphere其他
点云和DataTable转换
点云属性
PCG DynamicMesh系统
PCG子图系统
很多时候需要重用一段节点多次,这时候这段代码可以变成子图,类似于编程的函数概念.
PCG循环系统
建立子图Subgrah
将输出Out分为N份后就可以进行N次 Subgrah Loop
PCG引脚数据类型(Input, Output)
参考PCG开发指南 | 虚幻引擎 5.5 文档 | Epic Developer Community
PCG输入和输出都是存在类型的,节点的输入和输出右键停留都会出现对引脚具体类型和子类型等相关信息介绍。
SurfaceSampler节点的Surface引脚输入类型属于ConcreteData,而当前类型为SurfaceData.
目前主要存在三种类型数据
空间数据(SpticalData)
空间数据代表了PCGFramework二维和三维数据
目前存在Volume(三维), Surface(二维), Line, Point, DynamicMesh, Texture多种类型。
Composite Data
暂时没研究.
Attribute Set
节点的变量或者说UE UObject的各种变量都归类为Attribute Set。
SurfaceSampler节点的Loopseness变量母类型和当前类型都是AttributeSet,并且介绍具体变量类型,为float类型.
这种变量输入目前需要从外部Actor/组件/资产等UObject对象获取。
当前我进行测试,外部Actor获取不到变量值,输出的引脚就是无效,不会报错,接入输入的节点用原来的值。如果获取变量有效,并且变量类型不同,UE存在Cast<输入属性类型>(输出值)的系统。
可以在Insepect查看属性值
蓝图扩展新的PCG节点
PCGFramework支持使用蓝图(PCGBlueprintElement, PCGGeometryBluerintElement)来实现新的PCG节点(比如对一个点集合进行特定移动, 计算一个点集合的BoundBox等等)
官方的蓝图扩展PCG节点
扩展PCGBlueprintElement
实现移动点集合节点
运行效果: