-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unreal Engine 5 程序化内容生成框架(PCG) #178
Comments
PCG 用法简介重要概念和术语
必需设置
程序化节点图表程序化节点图表是程序化内容生成框架的核心部分。 类似材质编辑器,关卡中PCG组件的空间数据会传入图表,然后用于生成点。然后,点会经过一系列节点的筛选和修改,并输出实时更新的结果。生成的点可用于生成各种资产。 创建PCG图表资产要创建PCG图表资产,请执行下面的步骤: 右键点击 内容侧滑菜单(Content Drawer) 或 内容浏览器(Content Browser) ,找到 创建高级资产(Create Advanced Asset)> PCG ,并选择 PCG图表(PCG Graph) 。 选择新资产的名称,然后按 Enter 键。 编辑PCG图表在PCG图表编辑器中,你可以配置并编辑PCG图表资产。该编辑器的操作方式与蓝图或材质编辑器相似。它还包含一些只有PCG才有的工具和面板。
你可以像使用蓝图那样将节点添加到图表中,方法是从节点控制板将其拖入视口中,或通过右键菜单添加。 当PCG图表连接到PCG组件并且已用于生成内容时,对该图表所做的更改会在编辑器视口中实时更新。 PCG节点PCG图表由一系列PCG节点构成,每个节点执行对最终结果有贡献的操作。 PCG节点控制板 这些节点划分为以下类别:
你可以像使用蓝图那样添加 注释(Comments) 和 重新路由节点(Reroute Nodes) ,使图表更易于辨识。 PCG组件PCG组件 程序化节点图表可以通过PCG组件对你的关卡取样。此组件可保存程序化节点图表的实例,并在编辑器中以及在运行时管理程序化内容的生成。 PCG组件添加为Actor的组件,或用作PCG体积的一部分,这是一种基本体积,适合用于快速设置程序化内容。 要将PCG图表连接到PCG组件,请执行下面的步骤: 1 在编辑器视口或 大纲视图(Outliner) 中,选择你想连接的 PCG体积(PCG Volume) 或 蓝图类(Blueprint Class) 。 2 在 细节(Details) 面板中,点击 PCG组件(PCG Component) 。 3 点击 图表(Graph) 下拉菜单,并选择你想使用的PCG节点图表。 4 点击 生成(Generate) 按钮查看你的结果。 在PCG中调试调试是PCG工作流程中的基本部分。 每个节点都有各种调试选项,可用于直观地显示PCG图表每个步骤中的点数据: 调试渲染 在节点的 细节(Details) 面板中选中 调试(Debug) 的复选框或按 D 键,可切换每个节点的调试渲染。 在节点的 细节(Details) 面板中选中 启用(Enabled) 的复选框或按 E 键,可打开和关闭每个节点。 你还可以检查节点,以此在 属性(Attributes) 列表中显示节点生成的所有点。 从调试下拉菜单选择你的PCG组件。然后,右键点击你想在视口中检查的节点,并选择 检查(Inspect) 。你也可以按 A 键。 创建简单森林体积程序化生成工具的常见用例是开放世界环境中的群系生成。 要创建基本森林群系生成器,请执行下面的步骤。 此示例使用的材质和静态网格体来自使用商城下载的Megascans树木资产包:欧洲鹅耳枥集合 创建关卡在虚幻引擎中创建新项目。 使用 基本(Basic) 关卡模板创建新关卡。保存关卡。 删除 地板(Floor) 静态网格体并使用地形模式向关卡添加新地形。 使用塑造工具,向你的地形添加一些变化。 创建PCG体积1 返回 选择(Selection) 模式并启用 放置Actor(Place Actors) 窗口(如果它目前不可见)。 2 使用 搜索类(Search Classes) 框查找 PCG体积(PCG Volume) 并添加一个到你的关卡。 3 将PCG体积缩放为X=8.0, Y=8.0, Z=8.0 创建PCG图表资产1 右键点击 内容侧滑菜单(Content Drawer) 或 内容浏览器(Content Browser) ,找到 创建高级资产(Create Advanced Asset)> PCG ,并选择 PCG图表(PCG Graph) 。 2 将新资产命名为 PCG_ForestGen 并按 Enter 键。 3 双击 PCG_ForestGen 打开PCG图表编辑器。 连接PCG组件1 在编辑器视口或 大纲视图(Outliner) 中,选择 PCG体积(PCG Volume) 。 2 在 细节(Details) 面板中,点击 PCG组件(PCG Component) 。 3 点击 图表(Graph) 下拉菜单并从列表选择 PCG_ForestGen 。 创建点1 在PCG图表编辑器窗口中,将 Surface Sampler 节点添加到图表。 2 点击 Input 节点上的向下箭头将其展开,然后将 地形(Landscape) 输出连接到Surface Sampler上的 表面(Surface) 输入。 3 选择Surface Sampler并按 D 键切换调试渲染。 4 返回编辑器窗口,选择PCG体积,然后点击细节面板中的 生成(Generate) 按钮。 现在你可以在编辑器视口中看到正在生成的点。这些点符合地形的形状。 添加变化1 在PCG图表编辑器中,选择Surface Sampler。 2 在细节面板中调整 每平方米点数(Points Per Square Meter) 、 点范围(Points Extents) 和 松散度(Looseness) 属性,添加更多点。 a 将 每平方米点数(Points Per Square Meter) 调整为 0.15 ,将更多点添加到空间。 b 点范围(Points Extents) 属性将控制每个点的边界大小。将 X 、 Y 和 Z 值更改为 0.5 。 c 松散度属性将确定生成的点贴近网格形状的程度。将 松散度(Looseness) 值保留为 1.0 。 3 接下来,添加 Transform Points 节点。此节点将向你的点添加定义范围内的额外移动、旋转和缩放变化。将Surface Sampler节点的 输出(Output) 引脚连接到Transform Points节点的 输入(Input) 引脚。
5 要添加一些旋转变化,请将 最大旋转(Max Rotation) 的 Z 值更改为 360 。这样所有点都会获得0到360度之间的随机旋转。 6 PCG图表会生成点并将其旋转以符合地形的法线方向。选中 绝对旋转(Absolute Rotation) 的复选框可禁用此额外旋转。 7 要添加一些大小变换,请将 X 、 Y 和 Z 缩放最小值(Scale Min) 设置为 0.5 。将 X 、 Y 和 Z 缩放最大值(Scale Max) 更改为 1.2 。 生成静态网格体1 在PCG图表编辑器中,将 Static Mesh Spawner 节点添加到图表视口。将Transform Points节点的 输出(Output) 引脚连接到Static Mesh Spawner的 输入(Input) 引脚。 2 选择Static Mesh Spawner。 3 在 细节(Details) 面板中,找到 网格体条目(Mesh Entries) 选项并点击 + 按钮以添加要生成的静态网格体。 4 点击 网格体条目(Mesh Entries) 旁边的下拉箭头,打开数组。 5 点击 Index [0] 旁边的下拉箭头。 6 点击 描述符 旁边的下拉箭头。 7 点击 静态网格体(Static Mesh) 的下拉菜单并选择你想生成的树。此示例使用 SM_EuropeanHornbeam_Forest_01 。 你可以将权重属性用于数组中的每个网格体条目,添加更多静态网格体并平衡多样性。虚幻引擎添加了所有静态网格体条目的权重值,并将该数字除以每个单独的权重以确定每个条目生成的概率。 |
PCG开发指南
程序化内容生成框架数据类型参考
程序化内容生成框架(PCG)框架 中的数据分为以下几种类型: 空间数据空间数据包含对二维(2D)或三维(3D)空间的引用,可以表示体积、高度场、样条线和点数据。 体积体积是一种表示三维形状的空间数据,通常用于布尔集合操作,或使用@@体积采样器(Volume Sampler)节点直接从水平面采样。 曲面曲面是一种表示二维数据的空间数据,如映射到 XY 平面上的地形,或在二维平面上生成点并将其投影到三维形状上的曲面采样器(Surface Sampler)节点。 线线条是一种空间数据,表示样条线和地形样条线组件。该数据可读取带切线和点标度的样条曲线关键点。地形样条线垂直投影。即使样条线偏离地形,也始终适用于曲面。PCG图形中使用获取样条线数据(Get Spline Data)和样条线采样器(Spline Sampler)节点引用该数据类型。 点点云(Point Cloud)是一种空间数据,它是三维空间中代表曲面或体积的点的集合,并带有相关边界。边界允许点代表不同维度的形状。 例如,可以对三维球体进行点采样,点的大小决定了点与球形的吻合程度 此外,每个点都有一个密度值,限制在0到1之间。这些点和它们的密度值共同表达了空间中的浮点函数。PCG图形节点通常会在空间中创建和处理采样密度值,然后再进行采样。 点可包含以下信息
综合数据综合数据数据是集合操作的结果,如联合、相交和集合差。 在将结果转换回显式数据并应用结果之前,你可以将集合操作串联为多个操作。 属性集属性集是用户定义的变量,作为元数据存储在PCG图形中。这些变量可以使用各种属性操作节点进行操作,并被节点使用。 一个常见的例子是通过扩展节点上的高级引脚并将属性连接到公开引脚来驱动节点设置。 属性可在PCG节点图界面的属性列表窗口中查看。有关使用PCG框架的更多信息,请参阅程序化内容生成概述。 程序化内容生成框架节点参考
借助程序化节点图表,程序化内容生成(PCG)框架可以在编辑器和运行时状态下生成程序化内容。和材质编辑器类似,空间数据被传入关卡中的PCG组件中的图表,然后生成点。这些点会经过一系列的节点的筛选和调整,这些节点如下所列: 蓝图
颜色
控制流程
调试
密度
筛选器
层级化生成
输入输出
元数据
属性按位运算
属性布尔运算
属性比较运算
属性数学运算
属性旋转体运算
属性变换运算
属性三角运算
属性向量运算
属性旋转体运算
参数
取样器
空间
生成器
子图表
变换
|
UE5 PCG工作流程[官方]
为小屋制作PCG瓦片屋顶
UE5-建模模式-XForm-shift 选择两个屋顶-Merge 将 PCG_Roof_UF 拖进关卡 在内容侧滑菜单中双击打开 PCG_Roof_UF,开始编辑添加PCG节点
对房顶几何图形采样以生成点在 网格体采样器 细节面板中 为 Static Mesh 选择房顶的静态网格体 使用采样信息生成瓦片静态网格从 网格体采样器 Out 拖出搜索添加 static mesh spawner[静态网格体生成器] 在 静态网格体生成器-设置-网格体条目 增加一项【当前只需要一种瓦片,也可添加种瓦片】 瓦片组将在世界原点生成 调整瓦片生成方式选择 网格体采样器 细节面板-设置-sampling method [采样方式]-one point per vertex [每个顶点采样一个点] 调整瓦片方向从 网格体采样器 out 输出 拖出搜索添加 transform points[空间-变换点] 选择节点 变换点-设置-旋转最小 z -88 旋转最大 z -93 [5度的随机偏转] 制作 PCG 栅栏 基于样条线新建 继承自actor的蓝图 添加一个分量 : 为PCG组件新建PCG图表内从侧滑菜单-PCG_DTO-新建PCG图表: PCG_Fence_UF 在 蓝图 BP_Fence_UF-PCG组件-细节面板-实例-图-指定新建的PCG图表 PCG_Fence_UF 编译,保存该蓝图 将蓝图 BP_Fence_UF 拖入关卡 使用样条线生成网格体选择关卡的 PCG_Fence_UF 的细节面板-PCG - 实例-图 获取样条曲线信息右键添加 使用获取的样条数据创建点将 样条线采样器-设置-模式-切换为 生成栅栏网格在 样条线采样器 输出连接 static mesh spawner 调整栅格间距选择 样条线采样器-设置-距离增量 调整使栅栏网格适应样条线间距 选择 样条线采样器 按 a 键,可打开检查【左上角显示黄色圆圈】,可以看到目前有13条数据 为栅栏顶部添加青苔使用栅栏创建点,用以生成青苔静态网格体 在 PCG_Fence_UF 图表中新建
|
UE 5.3 PCG 更新功能
|
PCG 生成森林关卡使用 基本(Basic) 关卡模板创建新关卡。保存关卡。 删除 地板(Floor) 静态网格体并使用地形模式向关卡添加新地形。 使用塑造工具,向你的地形添加一些变化。 蓝图与PCG图表返回 选择(Selection) 模式 新建PCG图表 PCG_Tree_UF 新建蓝图 BP_Tree 添加PCG组件 将 BP_Tree 拖入关卡 BP_Tree选择关卡的 BP_Tree PCG图表打开 PCG_Tree_UF 添加 空间-获取地形节点 之后步骤同 #178 (comment) |
Unreal Engine 5 程序化内容生成框架(PCG)Procedural Content Generation
The text was updated successfully, but these errors were encountered: