翻译Houdini官方文档:PDG教程之HDA处理器

官方文档:PDG Tutorial 3 HDA Processor Part 1

关于这个教程

在Houdini中,HDA让你可以将复杂的场景组件、工具、甚至额外的文件打包到一个特殊的节点中,你可以设计自定义的控制方式,也很容易在随后进行安装和分布。

通过PDG,你可以用 HDA Processor 节点 来配置HDA的参数并生成work items(或者说“任务”)并cook它。

这篇教程的流程是:

  • 使用 wedge 的方式来创建一个HDA的多个变种
  • 使用 HDA Processor 来对多个变种运行任务,并使用多个cook方式
  • 过滤出你不想要的版本
  • 降低输出几何体的质量

(对于TOPs和PDG的基础知识,可见之前的博客《翻译Houdini官方文档:PDG/TOPs介绍》

你将会学到什么

  • 指定HDA的参数设置
  • 创建一个HDA的变种
  • 使用三种不同的Cook方式来Cook一个HDA
  • 可视化PDG的输出
  • 设置PDG服务

步骤 0 - 拷贝所需的HDA文件

导航到路径Houdini安装目录/houdini/help/files/pdg_tutorials/intro_to_hdaprocessor
在这里插入图片描述
找到 he_polyreduce.hdaSideFX_spaceship.hda
在你自己的工作目录中新建一个名为PDG_TUTORIAL_FILES的文件夹,将上面两个hda拷进来:
在这里插入图片描述

步骤 1 - 观察HDA

在这个步骤中,你将打开 SideFX_spaceship.hda 并熟悉其中的内容。

(1) 运行Houdini编辑器打开一个新场景。

(2) 导入SideFX_spaceship.hda 并实例化(关于如何导入HDA,可参见 Install and manage digital assets

(3) 看一下飞船HDA的 Controls 页面的参数:
在这里插入图片描述
(4) 尝试调节下其中的参数:
在这里插入图片描述
可以注意到,调节参数会对几何体的形状造成影响。
教程随后将会使用不同的TOP节点来调整飞船HDA的设置,然后输出几何体修改后的版本。

步骤 2 - 设置PDG输出的可视化

中,你将设置一个特殊的 File节点,让你可以在视窗中看到对飞船HDA的调整

(1) 运行Houdini编辑器打开一个新场景。

(2) 保存场景

  • 将文件命名为 hdaprocessorpt1tutorial.hip
  • 保存到 \PDG_TUTORIAL_FILES 文件夹中

这就是你接下来的工程文件

(3)节点网络编辑器 中,导航到obj网络中(如果你还不在的话)

(4) 创建一个Geometry节点,然后进入创建出 geo1 节点

(5) 创建一个File节点

(6) 在File节点的 Geometry File 参数中填:

`@pdg_output`

注意:@pdg_output 必须在“反单引号”之中(按键位置在键盘中数字键“1”的左边,其上档符号是“~ ”)这是因为 Geometry File 参数是“字符串”类型的参数。详细信息见Using attributes in expressions

在这里插入图片描述
@pdg_output 告诉Houdini去显示当前选择work item的几何体。

再随后的教程中,当你在TOP网络中你点击一个work item时,你将可以在视窗中看到其对应的宇宙飞船的变体。

(7) 保存文件

步骤 3 - 定义HDA变种的属性

在这一步中,你将使用Wedge节点来设置一系列SideFX_spaceship.hda的变种。方式是定义PDG的哪些属性(与HDA的 Control 页面的参数相关联)有变种,而变种的数目又是多少。

这些节点所创建的wedge让你可以在随后的【步骤4】中生成和比较宇宙飞船HDA的多个版本。

(1)节点网络编辑器 中,导航到tasks网络中,然后进入 topnet1节点

光滑度Wedge:

(2) 创建Wedge节点,然后命名为smoothness
在这里插入图片描述
(3) 选择smoothness节点,配置其参数:
在这里插入图片描述

  • Wedge Count2
    这将决定生成的wedge(或者说变种)的数目
  • Wedge Attributes1
    这将决定有多少个变化的属性
  • Wedge Attributes 下:
    • Attribute Namesmoothness
      这将让你可以在你的wedge中变化smoothness这个属性
      这个属性在随后会控制宇宙飞船的 Smoothness 参数
    • Attribute TypeInteger
      这将会确保smoothness的值总会是一个整数
    • Wedge TypeRange,而 Start/End 保留默认值01
      这将表示smoothness是一个“二值”(只能是0或者1)

(4)smoothness节点进行Cook
在这里插入图片描述
可以看到出现了两个work item,对应了两个wedge
在这里插入图片描述
smoothness节点生成了两个宇宙飞船HDA的版本,其中一个smoothness参数的值为0(0%光滑),另一个smoothness参数的值为1(100%光滑)

Tip
可以通过点击节点的右下角来打开PDG的“任务图表(Task Graph Table)”,或者右键节点菜单选择
在这里插入图片描述
在这里插入图片描述

机身长度Wedge:

(5) 创建Wedge节点,命名为bodylength,将其连接到smoothness之后:
在这里插入图片描述
(6) 选择bodylength节点,配置其参数:
在这里插入图片描述
其中:

  • Start0.5End2
    这将告诉节点为bodylength属性选择均匀分布在 StartEnd 之间的值。

(7)bodylength节点进行Cook

可以看到bodylength节点创建了20个wedge,10个光滑,10个非光滑,而bodylength的值则均匀从0.5变化到2。
在这里插入图片描述

机翼长度Wedge:

(8) 创建Wedge节点,命名为wingslength,将其连接到bodylength之后:
在这里插入图片描述
(9) 选择wingslength节点,配置其参数:
在这里插入图片描述
(10)wingslength节点进行Cook
将会出现200个work item
在这里插入图片描述
(11) 点击wingslength节点中的work item,可以看到在smoothnessbodylength节点上的work itemwingslength节点上的相关work item之间出现的线。 这些线及其相应高亮的点显示了work item之间的依赖关系。
在这里插入图片描述

Tip
你可以使用“[”键和“]”来逐步浏览节点中的 work item。

(12) 保存你的场景

步骤 4 - 创建HDA几何体变种

在这一步中,你将使用一系列的HDA处理器节点依据Wedge中的设置来创建SideFX_spaceship.hda的变种。这个步骤的目的是创建不同版本的HDA,然后比较它们的视觉表现。

每个HDA处理器节点将使用不同的Cook方法(常规,batch、service)输出飞船HDA几何体的变种。 在本教程外你自己的基于HDA的TOP网络中,使用不同的Cook方式也会为你节省大量时间。

常规方式:

(1) 创建 HDA处理器节点,命名为regular_cook,将其连接到wingslength的后面。
在这里插入图片描述
这个节点中的参数会设定要使用的HDA文件,以及如何引用Wedge节点的属性。

(2) 选择regular_cook节点,然后配置其参数:

Generation 分页中,在 HDA File 中选择$HIP(你的工作目录)下的SideFX__spaceship.hda
在这里插入图片描述
这告诉了节点使用哪个HDA。
当你选择了HDA后将会有下列事情发生:

  • Operator Type 被自动识别:
    在这里插入图片描述
  • HDA的所有参数被对应创建:
    在这里插入图片描述

Work Items 分页中,选择 Cache ModeWrite Files
在这里插入图片描述
这将告诉节点,当缓存文件已存在时则去覆写它。

HDA Parameters 分页中,使用@的符号来引用之前在Wedge节点中创建的属性。
在这里插入图片描述

Note
使用@attribute来引用属性被称作是pull-style的wedge。想要了解更多关于不同种TOP节点的wedge技术,请看 Pull vs. push

Tip
在教程之外你自己的配置中,你可能会需要为你的HDA处理器节点排查些故障,因此我们建议你做如下的事情:

  1. 打开 Generation 分页 中的 Save Debug .hip File
    在这里插入图片描述
  2. 找到你的Local Scheduler 节点,修改Temp Directory 中的 LocationWorking Directory,这样你就可以更容易找到你的调试HIP文件。
    在这里插入图片描述

(3)regular_cook节点进行Cook
在这里插入图片描述
将会有200个work item出现并且开始cook。

regular_cook为每个work item启动一个进程,然后分别cook每个任务。 regular_cook使用HDA处理器节点默认的cook方式,这也是其最慢的方式。 通常对于这种cook方式,开始这个过程所花费的时间,比实际cook该节点所花费的时间更长。

(4) 点击regular_cook节点中代表着work item的圆点
在这里插入图片描述

点网络编辑器 中,请注意在smoothnessbodylengthwingslength节点上的work item之间以及在regular_cook节点上的相关work item之间出现的连线。 这些连线以及其相应高亮的点显示了work item之间的依赖关系。

在视窗中,请注意宇宙飞船的变化,这个预览的效果归功于我们在步骤2中设置的File节点(其Geometry File@pdg_output)。

Tip

  • 你可以使用“[”键和“]”来逐步浏览节点中的 work item。
  • 你可以双击一个单独的 work item 显示其细节面板,然后点击“Output”来在Gplay中预览它。

(5) 点击regular_cook节点中代表着work item的圆点,观察它们的值。

注意smoothness bodylength wingslength 属性的值如何在work item之间变化。 是这些值让飞船HDA形状发生变化。
在这里插入图片描述
(6) 保存场景。
现在你已经创建了 HDA处理器节点,也理解了它如何工作。接下来你将尝试用其他更快的cook方式。

batch方式:

(7) 拷贝regular_cook节点(注意,复制出来的节点会自动连接到wingslength节点的后面),命名为batch_cook
在这里插入图片描述
这个节点将采用 batch 的cook方式。

(8) 选择batch_cook节点,然后将 Batch Mode 改为All Items in One Batch
在这里插入图片描述
这告诉节点在一个 job 中 cook 所有宇宙飞船HDA的几何体变种。 这将节省大量的cook时间,因为启动单个过程的开销比cook该工作中实际任务所花费的时间要大得多。

Tip

  • 当HDA处理器的 work item 是大量的小型任务时,请对它进行批处理,这样可以更快完成。
  • 当HDA处理器的 work item 需要很长时间才能完成时,流程的启动成本变得无关紧要,此时请勿进行批处理。

(9)batch_cook节点进行cook。
在这里插入图片描述
在许多情况下,此cook方法比regular_cook节点使用的cook方法要快。 在本教程中,batch方法肯定是两种cook模式中速度更快的一种。

(10) 保存场景
现在你已经创建了第二个HDA处理器节点,也理解了batch方法是怎么工作的。下一个你将创建的HDA处理器节点会是 最快 的。

service方式:

(11) 拷贝regular_cook节点,命名为service_cook
在这里插入图片描述
(12)节点网络编辑器 中,点击Tasks,然后点击 PDG Services
在这里插入图片描述
此项详见PDG Service Manager

(13)PDG Services 中点击 Add Services 按钮
在这里插入图片描述
(14) 随后在出现的窗口中,做如下配置:
在这里插入图片描述
然后点Add按钮。

(15)PDG Services 窗口中点击 Start 按钮:
在这里插入图片描述
随后你可以在任务管理器中看到你的Houdini进程下多了10个(数目是指定在上面的Pool Size中的) HDA处理器服务实例:
在这里插入图片描述
(16) 配置service_cook节点的参数:

  • 选择 Job Options 分页,打开 Use HDA Processor Service
  • Service Name 中选择刚才创建的服务
    在这里插入图片描述

(17)service_cook节点进行cook。
在这里插入图片描述
service_cook使用10个正在运行的HDA处理器服务实例(进程)来cook其每个工作项。 在本教程中,service的cook方法绝对是最快的cook模式。 但是,在本教程之外的场景中,你的工作可能需要很长的时间进行处理,因此,也可能常规Cook或批处理是更好的模式。

(18)PDG Services 窗口中关闭服务,然后关闭窗口。

(19) 保存场景。

现在,你已经创建了第三种HDA处理器节点,也懂得了如何建立PDG服务。

接下来你可以过滤出你不需要的HDA几何体变种。

步骤 5 - 过滤不需要的HDA几何体变种

在这一步中,你将使用 Filter by Expression 节点 来过滤出未经光滑的版本,只保留光滑的版本。

当你在自己的工作流中想要删除输出的HDA几何体变种时,此步骤很有用。

(1) 创建一个Filter by Expression 节点 ,命名为smooth_only,将其连接到 batch_cook节点之后。
在这里插入图片描述
Filter by Expression节点的参数将会决定哪些HDA几何体变种会保留,而哪些将会被过滤掉。

(2) 选择smooth_only节点,然后调节参数:
Filter Expression 中填 @smoothness != 1
在这里插入图片描述
这个表达式将会告诉节点:移除smoothness这一wedge属性的值不为1的任何HDA几何体变种。

Note
在这个教程中,以下都等价:

  • Remove Matching Items 时的@smoothness != 1
  • Remove Matching Items 时的@smoothness = 0
  • Keep Matching Items 时的@smoothness = 1

(3)smooth_only节点进行Cook
在这里插入图片描述
它过滤掉了100个非光滑的版本,保留了100个光滑的版本。

(4) 选择其中work item的圆点,观察对应关系:
在这里插入图片描述
可以看到其只对应了上游节点中下半部分的work item,因为下半部分节点的smoothness属性都是1

(5) 保存场景

现在,你已经学会如何对HDA几何体变种进行过滤,只保留自己想要的变种了。

接下来你将学习如何添加额外的修改。

步骤 6 - 降低最终HDA输出的质量

在这最后一步中,你将使用另一个HDA处理器节点,它使用另一个HDA文件,将会对宇宙飞船进行一些处理。

使用这个HDA处理器节点,你将会减少几何体面数。
当你在自己的工作流中创建模型的LOD时,这个步骤很有用。

(1) 创建一个 HDA处理器节点,命名为reduce_polygons,然后将其连接到smooth_only之后。
在这里插入图片描述

(2) 选择reduce_polygons节点,对其参数做如下配置:

  • 选择HDA文件为he_polyreduce.hda
  • 选择批处理模式
    在这里插入图片描述
  • 勾选Create File Inputs
    这将会告诉节点使用传入的宇宙飞船几何体作为输入
    在这里插入图片描述
  • 在参数分页,设置 Percent To Keep50,表示保留50%的面数
    在这里插入图片描述

(3)reduce_polygons节点进行cook
在这里插入图片描述
(4) 查看其中的work item,注意减面的效果:
在这里插入图片描述
(5) 保存场景

完成

恭喜!你完成了这个教程

如果你想看最终的TOP网络是什么样子,你可以在Houdini安装目录找到场景文件:
在这里插入图片描述
如果想继续学习PDG流程,你可以看Houdini文档中的其他初学者教程,或者访问我们网站上的Learning Path

问题解决

1. 字符串名字末尾不容易发现的空格

将属性的名字复制到参数中的时候,末尾多了空格,导致之后引用时没找到。
(在属性表中可以看到末尾有下划线)

2. 减面节点cook错误

报错:
在这里插入图片描述
比对了一下官方的范例文件,发现:
Scheduler节点有不一致:
在这里插入图片描述
修改后重新打开场景,发现没有错误了

猜你喜欢

转载自blog.csdn.net/u013412391/article/details/115058288