On this page |
Note
Houdiniでシェルフを編集する方が簡単ですが、大きなサイトでは、シェルフファイルを同時にバッチで直接、編集/置換する方が便利です。
概要 ¶
Houdiniは、HOUDINI_TOOLBAR_PATH
環境変数で指定したパス内にある.shelf
拡張子のファイルを読み込みます。デフォルトでは、HOUDINI_PATH/toolbar
になっているので、例えば、$HOME/houdiniX.Y/toolbar
の中にあるファイルを$HFS/houdini/toolbar
にある“出荷時の”ファイルに上書きすることができます。
シェルフ設定ファイルは、XMLフォーマットです。各タグに関する情報は以下を参照してください。また、そこには$HFS/houdini/toolbar/shelf.xsd
というXSDスキーマファイルがあり、これを使って独自のXMLシェルフ定義ファイルを有効化することができます。
<?xml version="1.0" encoding="UTF-8"?> <shelfDocument> <shelfSet name="some_shelf_set" label="Some Shelf Set"> <memberToolshelf name="some_shelf"/> </shelfSet> <toolshelf name="some_shelf" label="Some Shelf"> <memberTool name="some_tool"/> </toolshelf> <tool name="sample_tool" label="Sample Tool" icon="PLASMA_App"> <helpText><![CDATA[the main help]]></helpText> <helpURL>help URL</helpURL> <toolMenuContext name="viewer"> <contextNetType>OBJ</contextNetType> <contextNetType>SOP</contextNetType> <contextNetType>POP</contextNetType> <contextNetType>DOP</contextNetType> </toolMenuContext> <toolMenuContext name="pop_viewer"> <contextNetType>POP</contextNetType> </toolMenuContext> <toolMenuContext name="cop_viewer"> <contextNetType>COP2</contextNetType> </toolMenuContext> <toolMenuContext name="network"> <contextOpType>table/operator</contextOpType> <contextNetType>OBJ</contextNetType> <contextNetType>SOP</contextNetType> <contextNetType>POP</contextNetType> <contextNetType>CHOP</contextNetType> <contextNetType>ROP</contextNetType> <contextNetType>SHOP</contextNetType> <contextNetType>COP2</contextNetType> <contextNetType>VOP</contextNetType> <contextNetType>VOPNET</contextNetType> <contextNetType>DOP</contextNetType> </toolMenuContext> <toolSubmenu>first Submenu</toolSubmenu> <toolSubmenu>second submenu</toolSubmenu> <script scriptType="python"><![CDATA[script for the tool]]></script> </tool> </shelfDocument>
タグ ¶
<shelfDocument>
これはシェルフ設定ファイルのトップレベルのエレメントです。このエレメント内にshelfSet
、toolshelf
、tool
のエレメントを含めることができます。
<shelfSet>
ユーザがグループとして読み込むことができるシェルフセットを定義します。このエレメント内にはmemberToolshelf
を含めます。
name
アトリビュート
シェルフセットの内部名。パス内の後の方のファイルが同じ名前のシェルフセットを持っていれば、このファイルを置換します。
label
アトリビュート
ユーザインターフェースで表示するシェルフセットの人が解読可能なラベル名。
任意で<readOnly/>
サブエレメントを追加すれば、ユーザがHoudiniでタブセットを編集できないようにすることができます。
<memberToolshelf>
(shelfSet
のゼロ個以上のサブエレメント)シェルフセットの一部としてシェルフタブを指定します。
name
アトリビュート
toolshelf
で定義したシェルフタブの名前。名前を付けたタブは、このファイル、または他のパス上のシェルフ設定ファイルで定義することができます。
<toolshelf>
シェルフタブ上にツールを定義します。このエレメント内にはmemberTool
エレメントを含めます。
name
アトリビュート
シェルフタブの内部名。パス内の後の方のファイルが同じ名前のタブを持っていれば、このファイルを置換します。
label
アトリビュート
ユーザインターフェースで表示するタブの人が解読可能なラベル名。
任意で<readOnly/>
サブエレメントを追加すれば、ユーザがHoudiniでシェルフタブを編集できないようにすることができます。
<memberTool>
(toolshelf
のゼロ個以上のサブエレメント)シェルフタブの一部としてツールを指定します。
name
アトリビュート
tool
エレメントで定義したツールの名前。名前を付けたツールは、このファイル、または他のパス上のシェルフ設定ファイルで定義することができます。
<tool>
シェルフツールを定義します。
name
アトリビュート
ツールの内部名。パス内の後の方のファイルが同じ名前のツールを持っていれば、このファイルを置換します。
label
アトリビュート
ユーザインターフェースで表示するツールの人が解読可能なラベル名。
icon
アトリビュート
(任意)画像ファイルへのパス(またはSOP_copy
などの内部のHoudiniアイコン参照)。
このエレメントには、ユーザがツールをクリックした時に実行するスクリプトを指定するscript
サブエレメントがなければ なりません 。
任意で<readOnly/>
サブエレメントを追加すれば、ユーザがHoudiniでツールを編集できないようにすることができます。
tool
エレメントのtoolMenuContext
エレメント内にcontextNetType
またはcontextOpType
エレメントを指定していない場合、ツールが⇥ Tabメニューに表示されません。
<script>
(tool
で必須のサブエレメント) ツールをクリックした時に実行するPythonスクリプトまたはHScript。
通常では、CDATA
タグをスクリプトにラップすることで、スクリプト内の<
、>
、&
の文字が原因でXMLエラーが起きることを防止します。
scriptType
アトリビュート
python
またはhscript
。
<shelfDocument> <tool name="sample_tool" label="Sample Tool" icon="PLASMA_App"> <script scriptType="python"><![CDATA[ hou.ui.displayMessage("Hello world!") ]]></script> </tool> </shelfDocument>
<helpText>
(tool
の任意のサブエレメント) ユーザがツールのヘルプを見る時にブラウザが表示するwikiフォーマットまたはHTMLのヘルプ。これは、helpURL
タグで上書きされます。
通常では、CDATA
タグをヘルプテキストにラップすることで、ヘルプ内の<
、>
、&
の文字が原因でXMLエラーが起きることを防止します。
<helpURL>
(tool
の任意のサブエレメント) ユーザがツールのヘルプを見る時にブラウザが読み込むURL。helpURL
とhelpText
の両方が存在し、空っぽでなかった場合、HoudiniはhelpURL
を使います。
<contextNetType>
(toolMenuContext
のゼロ個以上のサブエレメント)このタイプのネットワークにのみツールを⇥ Tabメニューで表示します。contextNetType
エレメントを複数指定すれば、複数のネットワークタイプにツールを表示させることができます。
このエレメントのテキストは、ネットワークタイプです。設定可能な値は、OBJ
(シーンレベル)、SOP
(ジオメトリネットワーク)、POP
(パーティクルネットワーク)、DOP
(ダイナミクスネットワーク)、CHOP
、ROP
(レンダーネットワーク)、SHOP
(マテリアルネットワーク)、COP2
(コンポジットネットワーク)、VOP
、VOPNET
です。
例えば、オブジェクト、ジオメトリ、パーティクルのネットワークエディタにのみ⇥ Tabメニューにツールを表示させる場合:
<toolMenuContext name="network"> <contextNetType>OBJ</contextNetType> <contextNetType>SOP</contextNetType> <contextNetType>POP</contextNetType> </toolMenuContext>
<contextOpType>
(toolMenuContext
のゼロ個以上のサブエレメント) これをtoolMenuContext
のサブエレメントとして指定する場合、このタイプのノードを作成可能なネットワークにのみ⇥ Tabメニューにツールを表示します。
このエレメントのテキストは、Object/geo
またはSop/copy
のようにノード固有です。
両方とも指定した場合、contextOpType
はcontextNetType
を上書きします。以下のサンプルでは、ツールはジオメトリ(SOP)ネットワークの⇥ Tabメニューに表示されません。なぜなら、contextNetType
が一致しても、contextOpType
が一致していないからです。
<toolMenuContext name="network"> <contextOpType>Object/my_asset</contextOpType> <contextNetType>OBJ</contextNetType> <contextNetType>SOP</contextNetType> <contextNetType>POP</contextNetType> </toolMenuContext>
<readOnly>
これを空っぽのエレメントとしてshelfSet
、toolshelf
、tool
エレメントに追加することで、ユーザがタブセットを編集できないようにすることができます。
<?xml version="1.0" encoding="utf-8" ?> <shelfDocument> <tool name="scribble" label="Scribble"> <readOnly/> <script scriptType="python"> ... </script> </tool> </shelfDocument>
デフォルトのシェルフタブを変更する ¶
パス内の後の方のファイルのシェルフセット、シェルフ、ツールが、 エレメントの名前のアトリビュート で初期の定義を置換します。シェルフ設定ファイルのファイル名は同じにします。
デフォルトのシェルフタブだけを(ユーザ設定ファイルで同じ名前のシェルフタブを指定することで) 置換 することができます。特定のツールをデフォルトのシェルフタブに追加したり、削除することはできません。
デフォルトのシェルフタブの1つを修正する:
-
タブを定義した
<toolshelf>
エレメントを含むデフォルトのシェルフファイルを$HFS/houdini/toolbar/ShelfDefinitions.shelf
または$HFS/houdini/toolbar/ShelfDefinitions.master_shelf
で探します。テキストエディタでファイルを開きます。 -
シェルフタブを定義した
<toolshelf>
エレメントを選択して、クリップボードにコピーします。 -
新しいファイルで始めるなら、XML Declarationと
<shelfDocument>
エレメントを記述して、コピーした<toolshelf>
エレメントを貼り付けます。 -
<memberTool>
エレメントを削除または追加して、どのツールをシェルフタブに表示するのか設定します。 -
Houdiniの
toolbar
パスのどこかにファイルを保存します。例えば、$HOME/houdiniX.Y/toolbar/mytools.shelf
。
役立つ情報 ¶
-
Houdiniを再起動することなくシェルフファイルを再読み込みするには、hou.shelves.reloadFilesを使用します。単一ファイルを読み込むには、hou.shelves.loadFileを使用します。
See also |