Houdini Solaris中如何加载USD文件

USD/Solaris

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

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

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

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

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

这是Solaris和USD的粗略概述。

从Pixar官方下载USD文件

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

Pixar官方USD资产下载链接

打开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之外,Houdini的Solaris还有多种节用于读取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的DefaultPrim或SdfPath指定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创作。

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

发表评论

电子邮件地址不会被公开。必填项已用 * 标注