如何使用PanguGraph

总览

Pangu Graph(以下简称Graph)的实现基于UE的蓝图系统,在其基础上添加了与HDA(Houdini Digital Asset)相关的节点和特性。

在Graph中,可以通过各节点的连接,自定义Houdini烘焙步骤,从烘焙数据的导入导出到各个HDA的执行,实现一次完整的烘焙流程。

本文将介绍Graph的常用节点与特性以及如何在各子系统中使用Graph进行烘焙。

新建Graph

在UE内容浏览器中新增Blueprint-PanguGraph类型的资产:

在弹出的窗口中需要选择Graph的父类:

1 基类(Common)

PanguRuntimeGraphInstance:允许在游戏运行时使用(当前版本不推荐使用,计划在后续版本中持续迭代)

PanguGraphInstance:继承于PanguRuntimeGraphInstance,仅可在编辑时使用,默认选择此项

2 所有类(All Classes):包含其他已创建的Graph,可以直接继承

此处选择PanguRuntimeGraphInstance,创建一个基础的Graph。

Graph编辑器

Graph编辑器与UE的蓝图编辑器基本相同,双击内容浏览器中的Graph资产,进入Graph编辑器:

1 节点面板(Graph Palette):Graph独有的节点列表,按照其作用区分了不同的类别,列表里的节点可以直接拖拽至Event Graph的编辑区域生成。

2 Wiki链接参数(Wiki URL):可自定义Wiki网址,在各子系统的烘焙面板中可以快速跳转。

节点介绍

Graph中提供了许多独有的节点,用于构建完整的Houdini烘焙流程,本节将按分类对常用的节点进行介绍。

Cook节点

Event Start Cooking

烘焙流程的起始节点,在Cook面板上点击Start后触发此事件。

Event Cancel Cooking

在Cook面板上点击Cancel后触发此事件,可以自定义取消烘焙后的处理流程。

Pangu End Cooking

烘焙流程的结束节点。

输入参数释义
Success可以设置烘焙结束的状态,默认为成功。
Fail Message可以设置烘焙失败后弹出的提示信息。

HDA节点

Pangu HDA Cook

非PDG类型的HDA的烘焙节点。

输入参数释义
InHoudini Asset需要设置HDA资产。
Houdini Params无需手动设置,在编译Graph时会自动生成。

输出参数释义
On Success可以连接其他执行节点,处理当前节点HDA烘焙成功后的流程。
On Failed可以连接其他执行节点,处理当前节点HDA烘焙失败后的流程。
On Timeout可以连接其他执行节点,处理当前节点HDA烘焙超时后的流程。

Pangu PDG Cook

PDG类型的HDA的烘焙节点。

输入参数释义
InHoudini Asset需要设置HDA资产。
Net Name为PDG节点中运行的TopNet的名称。
Node Name为TopNet中输出节点的名称。
Houdini Params无需手动设置,在编译Graph时会自动生成。
Idle Time Limit表示当前PDG处于空闲状态时的最大时限,为 0 时关闭超时检测,大于 0 开启。
Cook Time Limit表示当前PDG整个运行过程的最大时限,为 0 时关闭超时检测,大于 0 开启。
Cloud Cook可以勾选以启用云端烘焙。

更多操作

右键 Pangu PDA Cook 节点,在菜单中选择 Houdini Option

  1. Create HDA In Houdini By Last Cook:在 Houdini Engine 中生成对应的 HDA 节点,参数来自上一次 Cook 的数据。
  2. Create HDA In Houdini By Default:在 Houdini Engine 中生成对应的 HDA 节点,参数来自 Details 面板中的数据。


输出参数释义
On Success可以连接其他执行节点,处理当前节点HDA烘焙成功后的流程。
On Failed可以连接其他执行节点,处理当前节点HDA烘焙失败后的流程。
On Timeout可以连接其他执行节点,处理当前节点HDA烘焙超时后的流程。

Pangu Batch Cook

PDG类型HDA的分批烘焙节点,可以将目标烘焙地块按参数划分为多个批次,逐步烘焙,并允许单个批次进行任意次数的重试。

输入参数释义
In Batch Size表示分批烘焙时的单批大小,设置为0时将不使用分批烘焙。
Batch Fail Retry Times表示单个分批失败后自动重试的次数。
Out Object为分批烘焙的控制器,使用时需要将其提升为变量,与其他分批烘焙节点配合使用。
Loop Body可以连接至其他执行节点,作为每个分批流程的入口。

输出参数释义
On Finished可以连接至其他执行节点,处理分批烘焙全部完成后的流程。

Batch Loop End With Success

分批烘焙中处理单个批次烘焙成功的节点,此节点运行结束后将结束当前批次的运行并标记为成功。

输入参数释义
In Object需要设置为分批烘焙的控制器。

Batch Loop End With Failure

分批烘焙中处理单个批次烘焙失败的节点,此节点运行结束后将结束当前批次的运行并标记为失败。

输入参数释义
In Object需要设置为分批烘焙的控制器。

Res节点

Pangu Export Res

烘焙资源的导出节点,可以自定义需要导出的资源类型。

In Export Types提升为变量,选中变量节点后可以在细节面板查看并调整导出的参数设置:

  • Pangu Export Types:导出资源类型
  • Custom Spline Types:自定义曲线类型

参数的具体细节可参考导入导出


Pangu Import Res

烘焙资源的导入节点,可以自定义需要导入的资源类型。

In Import Types提升为变量,选中变量节点后可以在细节面板查看并调整导入的参数设置:

  • Pangu Import Types:导入资源类型
  • Custom Spline Types:自定义曲线类型

参数的具体细节可参考导入导出

In BGeo Import Types提升为变量,选中变量节点后可以在细节面板查看并调整导入的参数设置:

  • BGeo Import Action:导入方式
  • All Bgeo Type:导入所有的BGeo类型
  • Include Global BGeo:除了导入单地块的BGeo文件之外,还导入全局的BGeo文件
  • Cleanup Unreferenced:勾选以删除场景中未引用的Mesh
  • BGeo Types:BGeo类型,可选项对应各子系统
  • Additional BGeo Types:当需要导入的类型不存在于BGeoTypes时,可以自定义类型导入

参数的具体细节可参考导入导出


World Panel节点

Switch Landscape Work Space

切换地形工作区节点,可以通过该节点切换当前显示的地形工作区。

输入参数释义
In Work Space表示目标地形工作区,可选项有三个,分别为EmptySpace(不进行切换)、UE Space(切换到UE地形工作区)、Agent Space(切换到代理地形工作区)。

Landscape 节点

Pangu Show Landscape Decal

切换笔刷贴花显示为对应笔刷的贴图

输入参数释义
ShowDecalName笔刷工具的名字,例如 LayoutBiome(节点 Tip 也有提示可填的值)
Force Show是否强制显示

烘焙面板

在支持烘焙的子系统中,烘焙面板将位于界面右侧,用于调整Graph参数及控制烘焙流程。

本节以道路子系统为例,介绍烘焙面板的使用。进入道路子系统,如图所示:

1 烘焙分组:每个子系统可以自定义多个烘焙分组,使用不同的Graph,快速切换。具体使用方法参考CookGraph设置

2 Graph设置

  • Auto Save Res:自动保存,烘焙开始的时候会自动保存存在修改的资产文件
  • Auto Pre Check:烘焙前检查,会检查选中的地块是否存在一些不合规的笔刷信息等
  • Cook Silence: 静默模式,烘焙的时候一些消息提醒或者成功失败的提醒不会以弹窗的形式出现,避免阻塞流程
  • Tile Based Cook: 基于地块的烘焙,当勾选了就会以地块的形式进行烘焙,如果未选中地块就会提醒需要先选中地块,同时导入导出对于未加载的地块会先加载地块完成后再卸载;如果取消勾选,允许不选择地块进行烘焙,在地块导入导出会忽略未加载的地块
  • Graph:设置当前分组使用的Graph
  • Documentation:跳转至当前使用的Graph的Wiki链接

Auto save res和cook silence开关的相互关系

Auto Save Res
--Yes,自动保存,不需要弹窗询问是否需要保存
--No,不保存,弹窗询问是否需要保存
Cook Silence
--Yes,不弹窗
--No,正常出现其他弹窗
表现
YESYES自动保存,烘焙开始的时候会自动保存存在修改的资产文件
YESNO自动保存,不需要弹窗询问是否需要保存,正常出现其他弹窗
NONO不保存,弹窗询问是否需要保存,正常出现其他弹窗
NOYES不保存,没有任何弹窗

3 Graph参数:在Graph中暴露的参数可以在此处查看和编辑,各子系统使用的Graph参数含义将在对应的文档中介绍,此处略去。

4 烘焙控制

  • Reset Params:重置当前Graph的参数
  • Save Params:保存当前Graph的参数
  • Pre Check:运行当前Graph的烘焙预检查
  • Start:在小地图中选中目标地块后,点击开始烘焙
  • Cancel:取消当前烘焙

暴露Graph参数

如果需要将Graph的部分参数暴露至烘焙面板,使用户可以在面板上直接调整,需要在Graph中设置参数的可见性:

1 设置参数为可见

2 编译Graph

设置完成后,可以在烘焙面板上编辑暴露出来的参数:

烘焙预检查

烘焙预检查用于在开始烘焙前排查可能存在的问题,提供错误或警告信息。

检查项包括全局通用的检查项和当前使用工具的检查项,检查结果分为警告和错误两种等级:当存在错误时,将无法继续进行烘焙;当仅存在警告时,可以继续进行烘焙。

在当前版本中,通用检查项包括:

  • 检测盘古地形是否存在且有效(错误)
  • 检测Houdini版本是否正确(警告)
  • 检测当前使用的Graph是否有效,内部节点是否存在编译错误或HDA参数异常(错误)
  • 检测当前使用的烘焙模式(Merge或Fix模式)是否与上一次烘焙使用的一致(警告)
  • 检测多人协作文件管理系统中是否存在冲突文件(错误)

工具检查项由各工具定义,此处不再一一列出,下文以地貌工具为例进行说明。

在地貌工具中,首先在小地图中选中需要烘焙的地块后,然后点击烘焙面板的Pre Check可以手动执行一次烘焙预检查:

当预检查未通过时,弹出的窗口中会列出错误和警告信息:

  • Result:检查结果的类型,分为WarningError,当存在Error时,无法开始烘焙,直到该错误项被修复
  • Tile:检查结果对应的地块
  • Message:检查结果的描述
  • Operation:选中对应的地块

分批烘焙

当需要对大量地块进行烘焙时,受限于机器性能,可能无法在一次烘焙流程中全部完成,且稳定性相对较低。

Graph提供了分批烘焙的流程支持,使用相关节点即可将标准的烘焙流程调整为分批烘焙。本节将从标准流程开始,说明分批烘焙的使用方法。

首先,创建一个使用标准烘焙流程的Graph,包含基础的导入资源、烘焙地貌和导出资源流程:

通过添加分批烘焙的相关节点,可以将标准流程改造为分批流程: 1 Pangu Batch Cook节点

分批烘焙的起始点。

Loop Body需要连接至单个批次流程的起点。

On Finished需要连接至分批烘焙结束后的后续流程。在此例子中直接连接至Pangu End Cooking节点,以结束整个流程。

In Batch SizeBatch Fail Retry Times参数可以分别设置单个批次的地块数量和每个批次烘焙失败后的自动重试次数。

2 Batch Loop End with Success

单个批次流程的成功节点,此节点执行完成后将标记此批次为烘焙成功,并返回单个批次的起点,继续下一个分批的烘焙。

因此,只需要在单个批次流程的最后添加此节点即可。

此外,需要将Pangu Batch Cook节点的Out Object参数连接至In Object

3 Batch Loop End with Failure

单个批次流程的失败节点,此节点执行完成后将标记此批次为烘焙失败。

如果设置了Batch Fail Retry Times参数,将根据其数值重试此批次的烘焙,直到成功为止;如果未设置,将继续下一个分批的烘焙。单个批次的烘焙失败不会影响后续批次的烘焙。

因此,需要在单个批次流程中所有节点的On Failed连接至此节点。在此例子中,只需要将Pangu PDG Cook的On Failed连接至此节点。

此外,需要将Pangu Batch Cook节点的Out Object参数连接至In Object

分批烘焙全部完成后,在分析面板中可以查看每个批次的烘焙数据。