PDG(过程相关性图)是Houdini 18中的新增功能,在项目中经常都会用到PDG。所以今天高级技术美术师Matthijs Verkuijlen为大家分享在游戏资产和地形生产中使用PDG的一些见解。
PDG是Houdini 18中的新增功能,已添加了TOP(任务运算符)功能。PDG可以分发和运行许多任务,每个工作项具有不同的设置。WorkItem可以分布在多个核心上,也可以在云中运行。
PDG可用于多种用途,例如使用略有不同的设置渲染具有相同效果的多个版本,以查看最喜欢的版本,生成同一资产的不同版本,应用修改或整理一系列地形的数据瓷砖。
PDG还跟踪依赖关系。更改单个workItem上的设置并重新生成该workItem和所有下游依赖项,而不必重新生成其他内容。
虽然可以使用PDG生成很多不同的地形,但这会占用大量资源。你可以使用PDG生成一些基本地形来获取灵感,但大多数游戏都希望能对地形进行更多控制。所以我们需要处理地形,并且写出特定的元数据。
PDG可以很好地将整个游戏世界拆分为大小均匀的图块,然后进行单独处理。只要分解输入(例如,道路网络),就可以使用类似方式处理这些图块。
下面道路示例,如果地形为10240x10240米,并且道路弯道作为输入。当使用PDG时,尤其是开始在非自己的机器上运行图形时,从中获取正确的信息有时是成功的一半。日志将写到顶级网络中本地调度程序上设置的“临时目录”中。建议将目录更改为你实际查找日志的位置(如果在云上运行,则该位置可以上传这些日志,方便访问)。
找到日志后,确保写入日志的信息有用是很重要的。默认情况下,并非所有警告和错误都会写入日志,尤其是VEX日志,但所有printf语句都会写入。
当图形变大时,需要知道跟踪时间在哪里。添加到正在处理的每个HDA的事情之一是计时器,它由两个Python节点组成,一个在图的开头,一个在图的结尾,以毫秒为单位捕获当前时间。这里要知道节点的开始时间和结束时间,因为我可以计算出执行该工作项所花的时间。
因为日志数量会快速膨胀,并且我不想手动筛选数百个日志以比较数字,所以我构建一些Python工具,这些工具使用一些简单的正则表达式从日志中过滤出重要信息并将其全部添加到一本大日志。拥有每个workItem的所有信息,但现在只是一种更具可读性的格式。
我对遥测数据做类似的事情,在日志中浏览并使用正则表达式找到适合编写遥测方式的行,将遥测数据写入一个json文件,这样就可以很容易地看到这些数字。
我认为PDG是Houdini工具箱中非常有用的工具。我们可以通过使用PDG来解决问题,但对于很多问题,PDG是不必要使用的。
建立PDG图对于生成同一资产的许多不同版本很有用,也可以并行完成的任务,方便我们快速创作。