BACK TO ARCHIVE
Houdini USD Interoperability DCC Mechanics & Nuances

Houdini Solaris中如何加载USD文件

08.03.2020 ADUCG RESEARCH

USD/Solaris

USD 是一个用于处理由 Pixar 创建的场景图的库,Pixar 是一种文件格式,供多个人同时使用。与以前的文件格式的主要区别在于 ,可以通过将多个 USD 文件组合到一个“过程”(称为“过程场景图”)中来构造一个场景图。

Solaris 可以在程序上将此 USD 文件与 USD 文件组合并处理 SOP 以构建单个场景图。

另一个功能是此 Solaris(Stage 网络)上的节点位于内存或文件中,并且这些节点中的每个都是 USD 文件,被视为一个层。

节点处理= USD 处理=程序场景图构建

这就是 Solaris 的世界,Solaris 的世界就是 USD 的世界。

这是 SolarisUSD 的粗略概述。

Pixar 官方下载 USD 文件

Pixar 官方提供了些 USD 资产及场景供学习和参考

Pixar 官方 USD 资产下载链接

http://graphics.Pixar.com/usd/downloads.html

打开 Solaris

下载完成后,启动 Houdini18 并将预设布局切换至 Solaris

面板介绍

改变窗口布局后,将会多出两个面板,这是专门供 Solaris 也就是 USD 所使用的。

第一个是“Scene Graph Tree 场景图树”,它显示当前所选节点的 USD 场景图(所谓的阶段)。该 Solaris 表示“ USD 过程场景图”,其中一个节点被视为 USD 文件=图层。

连接节点后,将按程序合成该节点。

当前选中的节点或显示标志处于打开状态的阶段是“到目前为止组成节点的结果”。

另一个是“Scene Graph Details 场景图详细信息”。

该面板使您可以专注于所选 Prim 的属性和其他信息。

Houdini / Solaris 中打开下载的 USD 文件

使用 LoadLayer

首先,使用“LoadLayer”节点打开 USD 文件。

这里为何不是 LoadUSD?因为在 USD 中,USD 文件又被称为图层,在之前我的博客上也有过介绍。LoadLayer 的作用是“将指定的 USD 作为图层加载”。

用合成操作符节点打开

除了 LoadLayer 之外,HoudiniSolaris 还有多种节用于读取 USD 图层。现在我使用各种合成操作符节点来加载它。如果您在此节点中读取,则可以使用成分操作符功能加载 USD 文件。如果以这种方式读取,则正在加载的 usda 文件中的 ClassPrim 将被隐藏并且无法被覆盖。但是,如果使用 LoadLayer 加载该图层,然后将该节点连接到 Reference 节点,则使用参考对子图层进行图层加载,然后在这样的场景中使用 \</sdfPath ...>Reference Primer 将被加载为。

在这种情况下,将不封装该层,并且还将加载指定层中的另一个 Prim,以便可以像继承过程中那样覆盖参考源的 Prim。

用 Sublayer 打开

首先,使用 Sublayer 节点打开它。

使用 Sublayer 打开时与使用 LoadLayer 打开时的参数是基本相同的。

场景图路径与执行 LoadLayer 时相同。

与 loadlayer 的区别在于,USD 文件可以与具有此单个节点的子层组合。USD 与此子层组合的优点是,可以使用“静音层”和“启用”来打开/关闭 USD 的效果。

这样,你可以在切换 USD 的图层效果时轻松检查 Sublayer 节点的效果,以便打开/关闭 2D 软件的图层。

使用此节点进行读取的好处是可以在读取时像 Photoshop 图层一样打开和关闭该节点。

用 Reference 打开

接下来,尝试使用“Reference”节点进行加载。

Reference 节点还具有将 MultiInput 的输入结果转换为 Reference 的功能。

通过将引用类型设置为引用文件,您可以使用此节点来“按引用读取 USD 文件”。

查看 SceneGraphPath,可以看到原始名称为绿色。

与 LoadLayer 的最大不同在于,顶级节点名称不同。

使用 LoadLayer 加载时,将按原样加载 USD 文件中写入的基本结构。但不同之处在于 Reference 以 Destination Primitive 指定的原始名称。

$OS 是节点名称,因此 Prim 在节点名称 reference1 下读取。

可以尝试右键单击 Reference 节点,然后打开“LOP Actions”>“Inspect Active Layer”。

会打开当前节点的编辑状态。

与 Reference 节点的读取差异

使用 reference1 节点加载和使用 LoadLayer 加载并引用它之后连接节点之间存在很大差异。区别在于是否封装。

在使用参考节点加载时,如果您查看 USDA,则在参考前面添加此类文件路径规范,由指定路径的 USDA 的 DefaultPrimSdfPath 指定 Prim 将通过引用加载。

使用 StageManager 打开

最后来说 StageManager 节点。

在教程视频中,有许多使用此 StageManager 的示例,但是上述三个与此 StageManager 有什么区别?

由于与“Stage”管理器有很大的不同,因此该节点可以自己构建一个 Stage。

在这种情况下,该 Stage 是多个 USD 文件组成的结果。

打开后,StageManager 屏幕看起来就像上面图像一样的窗口。

单击其中的文件夹图标。

仅使用此 StageManager 节点,就为 ScenerGraphPath 构建了包含引用的完整 Stage(USD 组成的场景图)。

编写并打开 ASCII 文件

很少有人这样做,但是使用 inlineusd,你可以手动编写 USD 文件。

通过这样用 ASCII 编写 USD Source,甚至你可以直接构建出一个完整的 Stage。

实际应用中如何打开 USD

如上所讲,在 Solaris 中有多种方法去加载 USD 文件,那么在实际使用时如何选择呢?

如果要放置许多对象,请使用 StageMnaager

如果要在 Stage 上布置数百个资产。在这种情况下,将它们一一读取或分组在一起是非常麻烦的。在这种情况下,使用 StageManager 可以轻松地通过引用来加载和加载多个资产,并可以通过拖放轻松地执行诸如分组和更改层次结构之类的操作。换句话说,通过此单个节点完成了阶段构建

因此,建议将此节点用于场景布局中。

当然,将它们组合到一个 StageMnager 中可能会造成混淆!!!在这种情况下,您可以连接多个 StageMnaager。

如果要封装图层,则为使用 Reference

如果要“封装”并加载要通过参考或指定 Prim 加载的层的 DefaultPrim 以外的其他东西,请使用 Reference 节点进行加载。当“Reference”节点读取数据时,指定的“Prim”将被隐藏并且不能被覆盖。因此,当你想要读取这些角色的时候,使用 Reference 节点进行加载似乎比较好。

其它情况下可使用 LoadLayer

除此之外,建议使用 LoadLayer +合成操作符节点或其他节点(Graft 等)。

对于 LoadLayer 读取的模式,利用 Solaris 的节点库构建一些结构(构建一个场景,同时合并要为其指定着色器的灯光节点,等等)。

可以使用 SubLayer 或 Reference 直接读取文件,但是在那种情况下很难更改输入顺序或暂时将其关闭,因此很难使用,因为该节点的可列表性不是很好。

如果始终使用 LoadLayer 进行加载和编写,则切换起来会更容易,并且会澄清“我正在读取文件”,因此个人最好使用 LoadLayer 一次性加载 USD 文件。

一起去使用它们

当然,StageMnaager 和 LoadLayer +组合操作符节点可以一起使用。

在使用 StageMnager 一次构建场景时,对节点进行细微的变化并最终将它们组合在一起,等等。

通过选择不同的打开 USD 的方式,尽可能的简化复杂的场景来构建节点。

结语

介绍完了如何在 Solaris / LOP 中打开 USD 文件。我们会发现仅打开一个 USD 文件,有这么多种不同的方法。除此之外,你还可以使用 LOP 等打开+ SOP 场景,因此我认为 Solaris 是用于处理 USD 的非常灵活的工具,并且可以根据想法启用各种 USD 创作。

后面将会讲解“合成操作符”节点。

本文采用 Creative Commons BY-NC-ND 4.0 协议进行授权。

BY-NC-ND: 署名-非商业性使用-禁止演绎

End of Article