Overview
从Houdini12开始,你就可以让你的资产名称在名称空间中用一个字符串表示.
Namespace
名称空间中的允许你给你的资产命名,而不需要担心出现使用和Houdini内部节点相同的名称,或者在将来某一天使用的名称.
例如,Sasha’s的动画中心可能会制作一个拷贝几何体的节点,而且名称可能是com.sundae::copy. 这让它Houdini内部的Copy节点有所区分. 当然, Joe的几何体节点名称也可能是com.joesgeohut::copy .
这对你想创建和其它用户不同名称的节点是非常有用的. 这也对后期使用这些节点时,不必担心它们的名称归类非常有帮助.
通常惯用的确保你名称是独一无二的方法是将你网站DNS地址反转. 例如Houdini的画廊网站是houdini.bacon.org,这样就可以用org.bacon.houdini 作为资产的名称.你也可以用其它的方式,例如在名称中添加创建人等.
Version
版本字符串允许你创建多个版本的资产,并且不需要改变节点的主要名称. 例如
Sasha 想完成它的Copy节点资产的创建,就可以使用 com.sade::copy::2.0来命名.旧版本的资产文件仍然使用旧的方法来定义. 当用户放置一个新的节点时,就会得到最新版本.
The parts of an asset name
名称空间中节点的总体命名方式是: [namespace::]node_name[::version].
Note
一些脚本命令需要节点的分类情况,例如Object/geo, Sop/copy, Dop/popsolver. 想要用脚本命令来命名名称,可以使用这种格式:[namespace::]node_category/node_name[::version].
How to
To… | Do this |
指定一个资产的名称空号或版本 | 其实右击选择Create Digital Asset 来创建. |
创建一个新版本的资产文件 | 1. 选择 Windows > Operator Type Manager 来打开这个窗口. 2. 右击资产文件选择Copy. 3.在Copy Operator Type对话框中增加节点的版本号. |
Referencing node types in scripts
当你在脚本中提到一个节点时,你可以使用精确的名称来调用你的节点文件(如com.sundae::vines::2.0),也可以使用模糊的名称来调用节点(如vines).如果你想要使用最新版本的资产,或者希望用户在其它名称空间中调用资产文件,而不修改你的脚本文件,这时你可以使用模糊的名称.
在使用模糊节点时,Houdini使用一下方式来选择节点.
- 如果你不指定一个版本号,Houdini会默认选择最高的版本. 没有版本号的节点通常会被认为是低版本的.
- Houdini选择的节点必须是被列入当前表单中的.
- Houdini会优先选择没有名称空间命名的节点.
- Houdini更喜欢在在HOUDINI_OPNAMESPACE_HIERARCHY 变量定义的目录下查找名称. 你可以用该变量来设置分离的名称, 这样可以区分模糊的名称.
For example, if your HOUDINI_OPNAMESPACE_HIERARCHY contains…
com.sundae org.bacon.houdini
Then if Houdini knows about assets named vines, org.bacon.houdini::vines, and com.sundae::vines, and you use the command…
opadd vines
…Houdini will use com.sundae::vines because it is earliest in the HOUDINI_OPNAMESPACE_HIERARCHY list.
你可以添加一些名称让节点获取优先权(即便它是低版本). 例如,在列表中添加com.sundae::vines::1.0,Houdini就会使用模糊的名称Vines(即使此时有com.sundae::vines::2.0 这个名称).
在HOUDINI_OPNAMESPACE_HIERARCHY 这个列表中,你可以使用*和?来命名.
Tip
没有名称空间而又不想含糊的命名它,可以用::node_name. 例如::Copy. 如果没有版本号,而又不想含糊的命名它,可以用node_name::. 例如Copy::.
Subnet scoping——将子网络容器列入表单
你可以使用[Node_category/node_name::]node_spec这样的名称格式来将包含子网络容器的节点命名.例如:你有一个资产名称为:com.example::mysop,你可以命名它为Dop/sopsolver::com.example::mysop,让它只在SOP或DOP中是有效的.
通过限制这些文本,对减少按Tab键展开的菜单复杂度非常有用.
Filtering preferences——过滤参数
选择Edit > Preferences > Shelves and Tab Menu 命令,并且使用Tab menu operator namespace filtering 这个参数来控制哪些资产节点会出现在Tab菜单中.
Version field——版本域
一个资产的属性类型窗口中包含它的版本域.这个域是上一版本留下的,它的功能更多的像是解释. 它和::version 这个是无关的.
otversion脚本命令以及Py的hou.NodeType.version和hou.NodeType.setVersion这些命令,允许你获取设置这个版本域. opparm -V和hou.Node.syncNodeVersionIfNeeded脚本也可以产生节点的Sync Node Version事件手柄.