Houdini 18.5 デジタルアセット

デジタルアセットのバージョンとネームスペース

On this page

概要

  • アセットに機能を追加したり変更した時、アセットの既存インスタンスすべてを常にアップグレードさせたくありません。例えば、新しいバージョンが異なる動作をすると仮定すると、完了したショットに突然異なるレンダリングをさせたくありません。または、新しいバージョンのインターフェースが異なれば、以前のシーンファイルでのチャンネル参照が壊れることでしょう。

    その解決策は、アセットに バージョン を追加することです。これにより、以前のバージョンのアセットが現在のバージョンのアセットと共存させることができます。

  • デジタルアセットに名前を付ける時、Side Effects、下請け、サードパーティベンダーがいつか同じ名前を使用して干渉を起こしてしまう危険性があります。

    アセットの名前に ネームスペース を含めることで、この問題を回避することができます。

ネームスペースとバージョンは、Houdini 12で導入されました。

バージョン

バージョン文字列では、"main name"を変更する必要がなく(つまり、ノードの名前をcopynew_copynewer_copyなどにする必要がありません)、複数の独立したバージョンのアセットを作成することができます。もしSashaが完全に自分のcopyアセットのインターフェース/実装を変更したい場合は、アセットの名前をcom.sade::copy::2.0にすることができます。古いバージョンのインスタンスはそのまま機能し、その古い実装を使いますが、新しいノードを置き換えれば、最新のバージョンになります。

バージョンは数字とピリオド(.)のみ使うことができます。例えば、myasset::2myasset::2.1myasset::19.1.3はOKですが、myasset::2amyasset::alphaはダメです。

同じ名前のアセット定義が複数利用可能な時は、Houdiniは、自動的にユーザインターフェースで最新のバージョンのみを利用可能にします。

Note

アセットのOperator Type Propertiesウィンドウには、 Version フィールドがあります。このフィールドはHoudiniの以前のバージョンの名残で、注記として機能していました。これはノードタイプ名の::バージョンの部分とは関係ありません。

ネームスペース

ネームスペース識別子 は、ビルトインHoudiniノードや今後使うかもしれないサードパーティのアセットと名前が被ってしまうことを気にせずアセットに名前を付けることができます。(これはノードの 内部名 にだけ適用されることに注意してください。ユーザインターフェースで表示する人が解読可能なラベルに対しては常に任意の文字列を使うことができます。)

例えば、Sasha’s Unbelievably Natural Discount Animation Emporiumはジオメトリをコピーするサーフェスノードを生成するときは、名前をcom.sundae::copyにします。これは、ビルトインのcopyノードと区分けするためで、Joe’s Geometry Hutでも同様に名前をcom.joesgeohut::copyにします。

そうしておけば、他のユーザに配布するアセットを作成するのに役に立ちます。また、同じ会社内で別々のアーティストが後にお互いのアセットを使ったときに名前の干渉が起きずに独自のアセットを作成することができます。

固有のネームスペースを使うのに便利な規則は、ウェブサイトのDNSアドレスを逆にすることです。例えば、Ada’s Houdini appreciation websiteのアドレスがhoudini.bacon.orgなら、彼女のアセットのネームスペースはorg.bacon.houdiniを使うと良いです。さらに規則を加えて、例えば、アセットの作成者の名前を追加してorg.bacon.houdini.adaにしても良いでしょう。

アセット名の一部

アセットの内部名の一般形式は、

[namespace::]node_name[::version]

です。

ネームスペースとバージョンはどちらも任意です。名前にネームスペースとバージョンの両方を使用したり、ネームスペースだけ、またはバージョンだけ、またはどちらとも使用しなくても構いません。

いくつかのスクリプトコマンドでは、ノードカテゴリとノード名の両方が必要になります。(例えばObject/geoSop/copyDop/popsolver)。ネームスペースを使った場合は、[ネームスペース::]ノードカテゴリ/ノード名[::バージョン]の書式を使います。例えば、com.sundae::Sop/copy::2.0となります。

How to

To...Do this

アセットのネームスペースとバージョンを指定する

ノードからデジタルアセットを作成する(ネットワークエディタのノード上でクリック > Create Digital Asset )時は、"Create New Digital Asset"ダイアログボックスの Operator Name フィールドに、アセット名の一部としてネームスペースやバージョンを含ませることができます。

新しいバージョンのアセットを作成する

  1. Windows ▸ Asset Manager を選択します。

  2. ツリーからアセットを探して、それを右クリックして、 Copy を選択します。

  3. "Copy Operator Type"ダイアログの Operator Name フィールドで、バージョンの数字を上げます。

    例えば、古い名前がmyassetならmyasset::2myasset:2.0ならmyasset::2.1です。

ユーザインターフェースで古いバージョンのアセットを優先する

  1. Windows ▸ Asset Manager を選択します。

  2. ツリーからアセットを探して、それを右クリックして、 Use This Definition を選択します。

ユーザインターフェースで現在のバージョンに加えて古いバージョンすべてを表示する

  1. Edit ▸ Preferences ▸ Shelves and Tab Menu を選択します。

  2. Show All Operators をクリックします。

スクリプトでノードタイプを参照する

スクリプトでノードタイプを参照する時は、"フルパスの"名前 (例えばcom.sundae::vines::2.0)を使って特定のノードとバージョンを正確に参照するか、または"曖昧な"参照(例えばvines)を使ってHoudiniにあなたが必要なノードがどれか推測させます。曖昧な参照は、最新バージョンのアセットを常に使いたい時、または、スクリプトをすべて変更することなく異なるネームスペース内の他のアセットを優先するようにしたい時によく使います。

曖昧な名前が複数のノードを参照できてしまう場合、Houdiniは以下のルールに基づいてノードを選択します。

  • バージョン番号を指定していない場合、Houdiniはバージョン番号が一番高いノードを選択します。ノードの名前の最後に"バージョン"を設定していないノードは、常に一番低いバージョンであるとみなされます。

  • Houdiniはスコープしていないノードよりも現在のスコープに制限したノードの方を選択します。

  • Houdiniはネームスペースのあるノードよりもネームスペースのないノードを選択します。

  • Houdiniは常にHOUDINI_OPNAMESPACE_HIERARCHY環境変数に、リストにした名前またはネームスペースを優先します。この変数にネームスペースとノード名をスペース区切りにしたリストを設定して曖昧な名前の解決方法をコントロールします。リストの1番目にあるネームスペースがそれ以降のネームスペースより優先で使われます。

    例えば、HOUDINI_OPNAMESPACE_HIERARCHYには以下のリストを含めます。

    com.sundae org.bacon.houdini
    

    次に、Houdiniがvinesorg.bacon.houdini::vinescom.sundae::vinesという名前のアセットを知っているとします。そして、次のコマンドを実行します。

    opadd vines
    

    するとHoudiniは、com.sundae::vinesという名前のアセットを使います。なぜなら、そのネームスペースがHOUDINI_OPNAMESPACE_HIERARCHYのリストで上位にあるからです。

    フルパスで名前をリストに追加すれば、それよりも新しいバージョンの名前よりも優先させることができます。例えば、com.sundae::vines::1.0をリストに追加すれば、たとえcom.sundae::vines::2.0が利用できたとしても、曖昧なvines参照は前者のアセットを使います。

    HOUDINI_OPNAMESPACE_HIERARCHYの環境変数のリストの名前には、ワイルドカード(*?)を使うことができます。

Tip

ネームスペースなしのノードを明確に参照するには、::ノード名を使います。例えば、::copy。バージョンなしのノードを明確に参照するには、ノード名::を使います。例えば、copy::

いくつかのスクリプトコマンド/メソッドには、ネームスペースの解決とHOUDINI_OPNAMESPACE_HIERARCHYを明示的に無効にするオプションがあります。例えば、opaddには-eオプションがあり、正確なオペレータ名が必要になります。同様に、hou.Node.createNode()には、exact_type_name引数があります。

サブネットスコープ

[ノードカテゴリ/ノード名::]ノード指定の書式を使うと、指定したアセット名が特定のタイプのサブネットワーク内のみで有効であることを明示することができます。例えば、com.example::mysopというアセットがあるとすれば、その名前をDop/sopsolver::com.example::mysopとすることで、そのアセットは、SOP Solver DOP内でのみ有効であると明示することができます。これはユーザがジオメトリオブジェクト(Object/geo)ネットワーク内にアセットを追加しないように防止することができます。

これは非常に特別なアセットを表示するコンテキストを制限することで、⇥ Tabメニューで表示される情報を軽減するのに役に立ちます。

デジタルアセット

はじめよう

  • デジタルアセットの紹介

    Houdiniでは、デジタルアセットと呼ばれる再利用可能なカスタムノードに作業を変更することができます。

アセットの作成

次のステップ