Houdini 18.0 シェルフツール

シェルフの設定ファイルフォーマット shelf tool

On this page

Note

Houdiniでシェルフを編集する方が簡単ですが、大きなサイトでは、シェルフファイルを同時にバッチで直接、編集/置換する方が便利です。

概要

Houdiniは、HOUDINI_TOOLBAR_PATH環境変数で指定したパス内にある.shelf拡張子のファイルを読み込みます。デフォルトでは、HOUDINI_PATH/toolbarになっているので、例えば、$HOME/houdiniX.x/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>

これはシェルフ設定ファイルのトップレベルのエレメントです。このエレメント内にshelfSettoolshelftoolのエレメントを含めることができます。

<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。helpURLhelpTextの両方が存在し、空っぽでなかった場合、HoudiniはhelpURLを使います。

<toolSubmenu>

(toolの任意のサブエレメント) A list of menu labels, separated by /文字で区切ったメニューラベルのリストで、ツールを⇥ Tabメニューのどのサブメニューに表示させるのか指定します。

例えば、<toolSubmenu>My Tools/Shaping</toolSubmenu>と記述して、ツールを⇥ Tabメニューの My Tools ▸ Shaping サブメニューに表示させる場合は、以下のようにします。

<shelfDocument>
    <tool name="sample_tool" label="Sample Tool" icon="PLASMA_App">
        <script scriptType="python">...</script>
        <toolSubmenu>Fee/Fi/Fo/Fum</toolSubmenu>
        <toolMenuContext name="network">
                <contextNetType>OBJ</contextNetType>
        </toolMenuContext>
    </tool>
</shelfDocument>
  • ツールを⇥ Tabメニューに表示させる場合は、ツールにtoolMenuContextがなければならないことに注意してください。

  • ラベルマッチングは、大文字・小文字の区別があります。

  • 存在しないサブメニューは、作成されます。

<toolMenuContext>

(toolのゼロ個以上のサブエレメント) このツールを⇥ Tabメニューのどのコンテキストに表示するのか指定します。

nameアトリビュート

どのペインタイプの⇥ Tabメニューにツールを表示するのか指定します。有効な値は、viewer(ユーザがビューア内で⇥ Tabを押します)、network(ユーザがネットワークエディタで⇥ Tabを押します)、pop_viewer(パーティクルネットワークを見る時のビューア)、cop_viewer(コンポジットネットワークを見る時のビューア)。

ツールを表示させたいペインタイプ(nameアトリビュートで指定)毎にtoolMenuContextエレメントを別々に指定する必要があることに注意してください。例えば、3Dビューアとネットワークエディタの両方の⇥ Tabメニューにツールを表示させたい場合は、<toolMenuContext name="viewer">エレメントと<toolMenuContext name="network">エレメントが必要です。

<contextNetType>

(toolMenuContextのゼロ個以上のサブエレメント)このタイプのネットワークにのみツールを⇥ Tabメニューで表示します。contextNetTypeエレメントを複数指定すれば、複数のネットワークタイプにツールを表示させることができます。

このエレメントのテキストは、ネットワークタイプです。設定可能な値は、OBJ(シーンレベル)、SOP(ジオメトリネットワーク)、POP(パーティクルネットワーク)、DOP(ダイナミクスネットワーク)、CHOPROP(レンダーネットワーク)、SHOP(マテリアルネットワーク)、COP2(コンポジットネットワーク)、VOPVOPNETです。

例えば、オブジェクト、ジオメトリ、パーティクルのネットワークエディタにのみ⇥ Tabメニューにツールを表示させる場合:

<toolMenuContext name="network">
    <contextNetType>OBJ</contextNetType>
    <contextNetType>SOP</contextNetType>
    <contextNetType>POP</contextNetType>
</toolMenuContext>

<contextOpType>

(toolMenuContextのゼロ個以上のサブエレメント) これをtoolMenuContextのサブエレメントとして指定する場合、このタイプのノードを作成可能なネットワークにのみ⇥ Tabメニューにツールを表示します。

このエレメントのテキストは、Object/geoまたはSop/copyのようにノード固有です。

両方とも指定した場合、contextOpTypecontextNetTypeを上書きします。以下のサンプルでは、ツールはジオメトリ(SOP)ネットワークの⇥ Tabメニューに表示されません。なぜなら、contextNetTypeが一致しても、contextOpTypeが一致していないからです。

<toolMenuContext name="network">
    <contextOpType>Object/my_asset</contextOpType>
    <contextNetType>OBJ</contextNetType>
    <contextNetType>SOP</contextNetType>
    <contextNetType>POP</contextNetType>
</toolMenuContext>

<readOnly>

これを空っぽのエレメントとしてshelfSettoolshelftoolエレメントに追加することで、ユーザがタブセットを編集できないようにすることができます。

<?xml version="1.0" encoding="utf-8" ?>
<shelfDocument>
    <tool name="scribble" label="Scribble">
        <readOnly/>
        <script scriptType="python">
        ...
        </script>
    </tool>
</shelfDocument>

デフォルトのシェルフタブを変更する

パス内の後の方のファイルのシェルフセット、シェルフ、ツールが、 エレメントの名前のアトリビュート で初期の定義を置換します。シェルフ設定ファイルのファイル名は同じにします。

デフォルトのシェルフタブだけを(ユーザ設定ファイルで同じ名前のシェルフタブを指定することで) 置換 することができます。特定のツールをデフォルトのシェルフタブに追加したり、削除することはできません。

デフォルトのシェルフタブの1つを修正する:

  1. タブを定義した<toolshelf>エレメントを含むデフォルトのシェルフファイルを$HFS/houdini/toolbar/ShelfDefinitions.shelfまたは$HFS/houdini/toolbar/ShelfDefinitions.master_shelfで探します。テキストエディタでファイルを開きます。

  2. シェルフタブを定義した<toolshelf>エレメントを選択して、クリップボードにコピーします。

  3. 新しいファイルで始めるなら、XML Declarationと<shelfDocument>エレメントを記述して、コピーした<toolshelf>エレメントを貼り付けます。

  4. <memberTool>エレメントを削除または追加して、どのツールをシェルフタブに表示するのか設定します。

  5. Houdiniのtoolbarパスのどこかにファイルを保存します。例えば、$HOME/houdiniX.x/toolbar/mytools.shelf

役立つ情報

  • Houdiniを再起動することなくシェルフファイルを再読み込みするには、hou.shelves.reloadFilesを使用します。単一ファイルを読み込むには、hou.shelves.loadFile()を使用します。

シェルフツール

シェルフの使い方

シェルフタブ

  • Createタブ

    Createタブのツールは、シーンビューにプリミティブ、カーブ、Nullオブジェクトを作成、配置します。

  • Modifyタブ

    Modifyタブのツールは、 シーンビューのオブジェクトを簡単にカスタマイズします。

  • Modelタブ

    Modelタブのツールは、シーンビューのオブジェクトを編集します。

  • Polygonタブ

    Polygonタブのツールは、 シーンビューのポリゴンを修正します。

  • Deformタブ

    Deformタブのツールは、シーンビューのオブジェクトを変形します。

  • Textureタブ

    Textureタブのツールは、シーンビューのテクスチャオブジェクトを編集します。

  • Riggingタブ

    Riggingタブには、あらかじめ作成したリグを作成するためのツールが含まれています。

  • Musclesタブ

    Musclesタブには、筋肉を作成するためのツールが含まれています。

  • Charactersタブ

    Characterタブのツールは、シーンビューにキャラクタを作成します。

  • Constraintsタブ

    Constraintsタブのツールは、シーンビュー内でオブジェクトをお互いに拘束させることができるConstraint Networkを作成します。

  • Hair Utilsタブ

    Hair Utilsタブのツールは、オブジェクト上にヘアーとファーを簡単にセットアップすることができます。

  • Guide Processタブ

    Guide Processタブのツールは、スキンアトリビュートをペイントすることで、ガイドヘアーの位置と向きを変更することができます。

  • Guide Brushesタブ

    Groomingタブのツールは、ヘアーを追加したり直接制御することができます。

  • Terrain FXタブ

  • Simple FXタブ

    Simple FXタブには、ジオメトリレベルでダイナミクスシミュレーションを作成するためのツール群が含まれています。

  • Cloud FXタブ

    Cloud FXタブには、雲のエフェクトを作成するためのツールが含まれています。

  • Volumeタブ

    Volumeタブには、ボリュームエフェクトを作成するためのツールが含まれています。

  • Lights and Camerasタブ

    Lights and Camerasタブのツールは、シーンビューにライトとカメラを作成、配置します。

  • Collisionsタブ

    Collisionsタブのツールは、シーンビューに衝突オブジェクトを作成することができます。

  • Particlesタブ

    Particlesタブには、ダイナミックパーティクルシミュレーションを作成するためのツールが含まれています。

  • Grainsタブ

    Grainsタブには、砂の粒や他の粒状のものをシミュレーションするためのツールが含まれています。

  • Vellumタブ

    Vellumタブには、色々なタイプのVellumエフェクトを作成するためのツールが含まれています。

  • Rigid Bodiesタブ

    Rigid Bodiesタブのツールは、シーンビューにダイナミックRBDオブジェクトを作成します。

  • Particle Fluidsタブ

    Particle Fluidsタブには、シーンビュー内の液体に基づいてパーティクルを作成するためのツールが含まれています。

  • Viscous Fluidsタブ

    粘度のある流体は、temperature(温度)アトリビュートを使用して粘度を駆動させるFLIPシミュレーションです。

  • Oceansタブ

    Oceansタブには、海洋シミュレーションを作成するためのツールが含まれています。

  • Fluid Containersタブ

    Fluid Containersタブには、Pyro、Smoke、Liquidのコンテナを作成するためのツールが含まれています。

  • Populate Containersタブ

    Populate Containersタブには、Fire、Smoke、Liquidの作成と削除をするためのツールが含まれています。

  • Container Toolsタブ

    Container Toolsタブには、Fire、Smoke、Liquidを操作するためのツールが含まれています。

  • Pyro FXタブ

    Pryo FXタブのツールは、煙と炎の効果をシミュレーションします。

  • Sparse Pyro FXタブ

    Sparse Pyro FXタブ上のツール群は、煙と炎のシミュレーションエフェクトを作成することができます。

  • Solidタブ

    Solidタブのツールを使って、ソリッドオブジェクトの作成と修正をします。

  • Wiresタブ

    Wiresタブのツールは、シーンビューに曲げられるダイナミックオブジェクトを作成します。

  • Crowdsタブ

    Crowdsタブには、群衆の作成や群衆の挙動を定義するツールとサンプルが含まれています。

  • Drive Simulationタブ

    Drive Simulationタブのツールは、シーンビューのダイナミックオブジェクトを操作します。

テクニカル