Houdini 19.0 ノード LOPノード

Store Parameter Values

ステージ内の一時的な(保存されていない)データを格納することができます。

On this page
Since 18.0

概要

下流ノードに渡される一部のデータを保存しておきたいことが時折あります。 例えば、あるノードでメッシュ内のポリゴン間の関係性を解析し、下流ノードが高速検索でアクセスできるようにキャッシュを生成したいことがあります。

USDには一時的な/未保存のデータストレージが用意されていません。 USDでは、データはImmutable(変更不可)であることが求められ(新しい情報をレイヤーに乗せることでしか変更ができない)、USD内のすべてのデータが保存されていることが求められます。

しかし、Houdiniでは一時的なデータを格納する必要性が出てきます(たいていの場合、In-Memoryレイヤーをディスクに書き出す場合です)。 Houdiniは、この一時的なデータを/HoudiniLayerInfo Primに格納します。 USDに書き出す時、Houdiniはこの特定のPrimをスキップ/取り除きます。

このPrimによって、ディスクに保存したくない独自のデータを(アトリビュートとして)格納するための便宜的な場所をステージ内に用意することができます。

Store Parameter Valuesノードは、このノード上のパラメータの内容(通常ではスクリプトで生成)を/HoudiniLayerInfo上のプロパティにコピーするモデルに対して動作し、下流のノードでその格納値を読み込むことで、そのパラメータの値を生成させることができます。 この理由は、ノードの名前がパラメータ値を参照しているからです。

Note

このノードは、任意の一時データを格納できるようにするための回避策です。 将来のバージョンのHoudiniでは、もっとわかりやすくして、一時データをネットワークの下流に渡すのに特化した方法を用意する予定です。

How to

To...Do this

Store Parameter Valuesノードを使って一時データを格納する

このノードは、パラメータの内容を保存することで動作します。 通常では、Pythonスクリプトを使ってパラメータの内容を生成します。

  1. Store Parameter Valuesノードのパラメータエディタで、 Name パラメータに一時データの格納先となる名前を設定します。

    この名前には、既存のプロパティ名と干渉していない有効なUSDプロパティ名を設定してください。 名前の頭に二重アンダースコアを付けることで、名前をもっと固有にすることができます。例えば、__indicesです。

  2. Name の右側にあるポップアップメニューを使って、格納したい値のUSDデータタイプを設定します。

    • おそらくintfloatdoublestringのどれかを選ぶことが多いでしょう。 もっと複雑なデータであれば、stringを選択して、そのデータをJSONとしてエンコードします(以下のTipsを参照)。

    • 配列を格納したいのであれば、USDデータタイプを“Auto”に設定します。

  3. Value パラメータを右クリックして、 Expression ▸ Change Language to Python を選択します。

  4. 再度 Value パラメータを右クリックして、 Expression ▸ Edit Expression を選択します。

    これは、フローティングマルチラインエディタを開きます。 ここでPythonエクスプレッションを作成/編集することで、そのパラメータの値を駆動させることができます。

  5. 格納したい値を返すPythonスクリプトを記述します。

    • スカラー値(int, float, double)と文字列に関しては、値を返すだけです。

    • もっと複雑なデータ(辞書や入れ子化されたデータなど)に関しては、そのデータをJSON文字列としてエンコードします(以下のTipsを参照).

格納データを使って、下流のノードでパラメータの値を設定する

格納値を使用する便利な方法は、その値を使ってパラメータ値を設定することです。

  1. 下流のノードのパラメータエディタで、その格納データを使って駆動させたいパラメータを右クリックして、 Expression ▸ Change Language to Python を選択します。

  2. 再度そのパラメータを右クリックして、 Expression ▸ Edit Expression を選択します。

  3. Pythonスクリプトでloputils.fetchParameterValues(input_node, property_name)関数を使用することで、このノードの 入力 からその格納データの値を取得することができます。 このスクリプトは、パラメータに設定したい値を返してください。

    import loputils
    
    # このノードの参照を取得します。
    this_node = hou.pwd()
    # そのノードの入力に接続されているノードの参照を取得します。
    input_node = this_node.inputs()[0]
    # 指定した名前に格納した値を取得します。
    value = loputils.fetchParameterValues(input_node, "__indices")
    
    # このスクリプトは、パラメータに設定したい値を返してください。
    # そのパラメータのデータタイプ(例えば、int,float,string)に合わせた値で返す必要があります。
    return str(value)
    

Tips

  • 文字列、スカラー値、配列よりも複雑なデータ(例えば、Python辞書)をエンコードしたいのであれば、そのデータをJSONエンコード(暗号化)して文字列に格納し、下流のノードでその文字列をJSONデコード(復元)することで、そのデータにアクセスすることができます。

    データをJSONエンコードする

    from json import dumps
    
    mydict = build_cache_dictionary()
    jsonstring = dumps(mydict)
    return jsonstring
    

    下流のノードで辞書を取得する

    from json import loads
    import loputils
    
    this_node = hou.pwd()
    input_node = node.inputs()[0]
    jsonstring = loputils.fetchParameterValues(input_node, "foo")
    mydict = loads(jsonstring)
    

    Warning

    文字列からデータを抽出する時は、Pythonのeval()関数を 決して使用しないでください 。 データはJSONで暗号化して、JSONで復元してください。

  • VEXスニペットで格納値を使用したい場合:

    • Bindings タブで格納値用のパラメータを作成します。または(このノードに Bindings タブがない場合)格納値を入れるためのSpareパラメータを作成します。

    • その新しいパラメータにPythonスクリプトを記述することで、格納値から値を取得することができます。

    • VEXスニペットでは、そのバインドしたアトリビュートを使用します(このノードに Bindings タブがある場合)。 または、Spareパラメータを作成していれば、ch()関数を使用することで、そのパラメータ値を読み込むことができます。

  • ネイティブのUSD配列では、データタイプを混在させた配列に対応していません。 “Auto”を使ってfloatやintのデータタイプが入ったリストを返しても、それらはfloat配列として格納されます。 本当にリスト内にデータタイプを混在させたいのであれば、そのリストをJSON文字列としてエンコードします。

パラメータ

Parameters

単一ノードで複数のパラメータ値を格納することができます。 格納したい値の数をここに設定するか、または、プラスとマイナスのボタンをクリックして値を追加/削除します。

Enable

値毎に、実際にその値を計算して格納するかどうかを指定します。

Name

値の格納先となるプロパティ名。 この名前には、既存のプロパティ名と干渉していない有効なUSDプロパティ名を設定してください。 名前の頭に二重アンダースコアを付けることで、名前をもっと固有にすることができます。例えば、__indicesです。

Type

格納したい値のUSDデータタイプ。 配列を格納したい場合、Typeを“Auto”に設定し、Pythonリストリテラル(例えば、[1,2,3])のような文字列を返してください。 おそらくintfloatdoublestringのどれかを選ぶことが多いでしょう。 もっと複雑なデータであれば、stringを選択して、そのデータをJSONとしてエンコードします。

Value

格納する値の文字列表現。 通常では、Pythonスクリプトを使ってこのパラメータの値を駆動させたいです(上記の“How to”を参照)。 配列を格納したいのであれば、Typeを“Auto”に設定し、ここには、Pythonリストリテラル(例えば、[1,2,3])のような文字列を設定します。

LOPノード

  • Add Variant

    Prim上のバリアントセットに1つ以上のバリアントを追加します。このノードは、そのPrimが存在しなければ、そのPrimを作成します。

  • Additional Render Vars

    複数のRender Varsを作成します。

  • Asset Reference

    USDアセットをリファレンス、トランスフォーム、バリアント選択します。

  • Assign Material

    1つ以上のUSD Primsにマテリアルを割り当てます。VEXを使用することで、プログラム的にマテリアルを割り当てたり、プログラム的に割り当て毎にマテリアル設定をオーバーライドしたり、プログラム的にジオメトリサブセットにマテリアルを割り当てることもできます。

  • Attribute VOP

    VOPネットワークを使ってUSDアトリビュート値を作成/編集します。

  • Attribute Wrangle

    VEXスニペットを使ってUSD Primアトリビュートを作成/編集します。

  • Auto Select LOD

    カメラからPrimまでの距離に基づいて自動的にLODバリアントを選択します。

  • Background Plate

    背景が見透けるようにシーン内に穴を残すホールドアウトオブジェクトまたはマットオブジェクトをセットアップします。これらのPrimsはまだ影を受け、背景であるかのように反射に寄与します。

  • Bake Skinning

    UsdSkelで駆動されたアニメーションをトランスフォームとポイントポジションにベイクします。

  • Basis Curves

    基底カーブシェイプPrimを作成または編集します。

  • Begin Context Options Block

    このノードは、LOPノード群のブロックを開始します。このブロック内では特定のコンテキストオプションが特定の値を持ちます。

  • Blend

    小数点ウェイトに基づいてレイヤーのアトリビュートに部分的に編集を適用します。

  • Blend Constraint

    パラメータとして指定されたウェイトのリストに応じてトランスフォームをブレンドします。

  • Cache

    異なる時間におけるネットワークのクック結果をキャッシュ化することで、再生パフォーマンスを上げます。

  • Camera

    シーンにUSDカメラを追加します。

  • Capsule

    カプセル(開口部を半球で閉じたチューブ)形状Primを作成/編集します。

  • Collection

    プリミティブパターンを使ってコレクションを作成/編集します。

  • Component Geometry

    ジオメトリコンテナ。または、Component Builderツールで作成されたネットワーク内でソースを取り込みます。

  • Component Geometry Variants

    Component Builderツールで作成されたネットワーク内でジオメトリバリアントをセットアップします。

  • Component Material

    Component Builderツールで作成されたネットワーク内でマテリアルをジオメトリに割り当てます。

  • Component Output

    Component Builderツールで作成されたネットワーク内で最終Component Primを組み立てます。

  • Cone

    円錐形状Primを作成/編集します。

  • Configure Layer

    レイヤー上のメタデータを編集します。

  • Configure Primitives

    1つ以上のPrim上の色々なメタデータを編集します。

  • Configure Properties

    プロパティ(リレーションシップとアトリビュート)上のメタデータを修正します。

  • Configure Stage

    レイヤーをステージとAsset Resolutionに読み込むための方法を示したメタデータを修正します。

  • Copy Property

    あるプリミティブのプロパティを別のプリミティブにコピーしたり、プリミティブ上のプロパティの名前を変更します。

  • Create LOD

    PolyReduce SOPを使って高解像度モデルから複数のLODを自動的に生成し、それらのLODをUSDバリアントとして保存します。

  • Cube

    キューブ形状Primを作成/編集します。

  • Cylinder

    シリンダー形状Primを作成/編集します。

  • Distant Light

    太陽などの遠くにある光源を表現したUSD Distant Lightを作成または編集します。いくつか便利なKarma固有のアトリビュートを追加します。

  • Dome Light

    USD Dome Light Primを作成/編集します。ドームライトは光を 内側 に放射して、シーンを囲んだ空/環境からの入射光を模倣します。

  • Drop

    重量によるPrimsの落下シミュレーションを実行します。

  • Duplicate

    Prim(とその子孫)のコピーを作成します。

  • Edit

    ビューア内でインタラクティブにPrimsをトランスフォームさせます。物理衝突を使用して、プロップを現実的に配置することができます。

  • Edit Context Options

  • Edit Material

    パラメータやシェーダ接続を変更することで既存のUSDマテリアルを編集することができます。これは、既存マテリアルが編集不可なレイヤーの場合に役立ちます。

  • Edit Material Properties

    マテリアルまたはシェーダの入力アトリビュートの値を直接編集できるようにそれらのアトリビュートを反映させたSpareパラメータインターフェースを構築することができます。

  • Edit Properties

    アトリビュート値とリレーションシップ値を直接編集するためのSpareパラメータインターフェースを構築することができます。

  • Edit Prototype

    ポイントインスタンスまたはUSDインスタンス可能Primが別のプロトタイプをインスタンス化するように切り替えます。

  • Edit Target Layer

    アクティブレイヤー内のPrimsとアトリビュートをオーバーライドするのではなく、下位レイヤーで直接編集を適用することができます。

  • Error

    親アセット上で表示可能なメッセージ、警告、エラーを生成します。

  • Explore Variants

    Primのバリアントを視覚化、設定、抽出します。

  • Extract Instances

    インスタンスを実際に編集可能なPrimに変換(ヒーロー化)します。

  • Fetch

    他のLOP(他のLOPネットワーク内のLOPも可能)の出力を取得します。

  • Follow Path Constraint

    Primがパスカーブに追従するように拘束します。

  • For Each

    For-Eachループブロックの終了ノード。

  • Geometry Sequence

    ジオメトリファイルシーケンスをアニメーションジオメトリとしてLOPsに取り込みます。

  • Geometry Subset VOP

    VEXpressionまたはVOPネットワークの評価に基づいて(SOPのグループと同様に)ジオメトリPrims内にUSDジオメトリサブセットを作成します。

  • Graft Branches

    2番目の入力からPrims/ブランチを受け取り、それらのツリーを1番目の入力のシーングラフツリーのブランチに取り付けます。

  • Graft Stages

    他の入力からシーングラフツリーを受け取り、それらのツリーを1番目の入力のシーングラフツリーのブランチに取り付けます。

  • HDA Dynamic Payload

    ディスク上のOBJ/SOPアセットをクックして、そのアニメーションジオメトリ出力をUSD Payloadとして取り込みます。

  • Hermite Curves

    エルミートカーブシェイプPrimを作成または編集します。

  • Inline USD

    レイヤーを表現したusdaコードを解読し、そのレイヤーをレイヤースタックに追加します。

  • Insertion Point

    ノードが挿入可能なノードグラフ内のポイントを表現します。

  • Instancer

    ポイント上にPrimsをインスタンス化またはコピーします。

  • Instancer

    ボックス内に定数ボリュームを作成します。

  • Instancer

    共通設定を共有した複数のRender Productを作成します。

  • Karma

    HoudiniのKarmaレンダラーを使ってUSDシーンをレンダリングします。

  • Karma Procedural

    Karma向けにレンダリング時にインスタンス化される仕組みをセットアップします。

  • Karma Render Properties

    Karma用レンダープロパティを構成します。

  • Karma Standard Render Vars

    標準Karma Render Vars(AOVs/Image Planes)を作成します。

  • LOPノード

    LOPノードは、キャラクタ、プロップ、ライティング、レンダリングを記述したUSDを生成します。

  • LPE Tag

    ライトのLPE Tagを管理します。

  • Layer Break

    このノードより下流のノードで編集をするための新しいアクティブサブレイヤーを開始し、ディスクに保存する際にこれまでのすべてのレイヤーが破棄されることを示します。

  • Layer Replace

    特定のレイヤー内のすべての用途を2番目の入力の代替レイヤーに置換します。

  • Layout

    インスタンス化されたUSDアセットをシーンに取り込むツールが備わっています。個々にコンポーネントを配置したり、カスタマイズ可能なブラシを使って色々な方法でコンポーネントをペイント/スキャッターしたり、既存のインスタンスを編集することができます。

  • Light

    USD Light Primを作成/編集します。このノードは、Karma固有のいくつかの便利アトリビュートも追加します。

  • Light Linker

    ルールに基づいてUSDライトリンクプロパティを作成します。

  • Light Mixer

    複数のライトに対してUSDプロパティをインタラクティブに編集することができます。

  • Load Layer for Editing

  • Loft Payload Info

    ペイロードをロードするPrimにそのペイロード内部の基本情報を追加します。

  • Look At Constraint

    Primがターゲットの方へ常に向くように拘束します。

  • Mask from Bounds

    選択したPrimsが境界形状内に存在するかどうか/どれだけの割合で存在するかに応じてPrimvarを設定します。

  • Material Library

    シェーダVOPノードからUSDマテリアルPrimsを作成します。

  • Material Linker

    ルールに基づいてマテリアルの割り当てを作成します。

  • Material Variation

    Prim/インスタンス単位でマテリアルパラメータをオーバーライドするためのアトリビュート/Primvarsを作成します。

  • Merge LOP

    入力ステージのレイヤー(s)をレイヤースタックに1本化します。

  • Mesh

    MeshシェイプPrimを作成または編集します。

  • Modify Paths

    アセットパスアトリビュート値を修正します。

  • Modify Point Instances

    個々のポイントインスタンスに対してポイントトランスフォームとポイントプロパティ値を変更します。

  • Null

    このノードは何もしません。ネットワーク内の固定位置としてNullをネットワークに挿入することで、エクスプレッション/スクリプト内で名前によってその位置を参照するのに役立ちます。

  • Output

    サブネットワークの出力を表現します。複数の出力を使ってノードアセットを設計することができます。

  • Parent Constraint

    ツリー内のどこかの他のPrimのトランスフォーム階層をPrimに継承させたようにします。

  • Points

    PointsシェイプPrimを作成または編集します。

  • Points Constraint

    ジオメトリのポイントポジションを使ってPrimsの位置と向きを拘束します。

  • Primitive

    特定のタイプの複数のアトリビュートを一括で作成します。

  • Prune

    Primsやポイントインスタンスを非表示または非アクティブにします。

  • Python Script

    このノード内にUSD APIを使ってPythonコードを記述することで、ステージを直接制御することができます。

  • RBD Destruction

    USDで破壊シミュレーションをする方法の例。これは事前準備したエフェクトとしても役立ちます。

  • Reference

    外部USDファイルの内容を既存シーングラフツリーのブランチで参照したり、既存の参照を削除/置換します。

  • Render Geometry Settings

    シーングラフ内のジオメトリにレンダラー固有のジオメトリ設定を適用します。

  • Render Product

    UsdRenderProduct Primを作成/編集します。このPrimは、そのRender Productの生成方法を指定したアトリビュートと共にレンダラーの出力(レンダリング画像またはレンダラーが生成した他のファイルなどの中間生成物)を表現します。

  • Render Settings

    UsdRenderSettings Primを作成/編集します。このPrimには、シーンをレンダリングするための全般的な設定を格納します。

  • Render Var

    レンダラー/シェーダで計算されるカスタム変数のシェーダ出力やLight Path Expression(LPE)を指定します。

  • Resample Transforms

    USD Prims上の既存のタイムサンプルから補間されたトランスフォームタイムサンプルを生成します。

  • Restructure Scene Graph

    このノードには、Primパス、バリアントセット、コンポジションアークを編集するための様々なオペレーションが用意されています。

  • Retime Instances

    選択したインスタンス上のアニメーションのタイミングをオフセット/スケールさせます。

  • SOP Character Import

    SOPネットワークからキャラクタまたはアニメーションをUSDシーングラフに取り込みます。

  • SOP Create

    このノード内部のSOPネットワーク内でジオメトリを作成することができるので、別にSOPネットワークを用意することなくLOPネットワーク内のその場でジオメトリを作成することができます。

  • SOP Crowd Import

    SOPネットワークから群衆をUSDシーングラフに取り込みます。

  • SOP Import

    SOPネットワークのジオメトリをUSDシーングラフに取り込みます。

  • SOP Modify

    USDジオメトリをSOPジオメトリに変換し、そのジオメトリに対してこのノード内部のSOPサブネットを実行し、その結果をUSDオーバーライドに戻します。

  • Scene Import

    Objectレベルのモデル、マテリアル、ライトをLOPネットワークに取り込みます。

  • Scope

    Scope Primを作成します。Scopeとは最も単純なグループ化の形式であり、トランスフォームを持ちません。Scopeはシーンツリーを整理するのに役立ちます。

  • Set Extents

    選択したPrimsの境界ボックスメタデータを設定します。

  • Set Variant

    Prim上のバリアントセットに格納されているどれかのバリアントを選択(切り替え)します。

  • Simulation Proxy

    物理シミュレーションに適した低解像度ポリゴン衝突ジオメトリを生成し、オリジナルモデルに対してプロキシリレーションシップを作成します。

  • Sphere

    球形状Primを作成/編集します。

  • Split Point Instancers

    ポイントインスタンサーを2個以上のインスタンスに分割します。これは元のインスタンスを分割します。

  • Split Primitive

    ジオメトリサブセットまたはPrimvar値に基づいてUSDジオメトリPrimsを子Primsに分割します。

  • Stage Manager

    一度に多くのファイルを参照して、それらをシーングラフツリー内に配置するための便利インターフェースを備えています。

  • Store Parameter Values

    ステージ内の一時的な(保存されていない)データを格納することができます。

  • Sublayer

    USDファイルまたは他のLOPノードチェーンをサブレイヤーとして取り込んだり、既存のサブレイヤーを削除/置換/並べ替えします。

  • Subnet

    LOPサブネットワークをカプセル化することで、一部のネットワークを整理して隠すことができます。

  • Surface Constraint

    Primがサーフェスに引っ付くように拘束します。

  • Switch

    パラメータ選択またはエクスプレッションに基づいて複数入力のどれかを通過させます。

  • TimeShift

    タイムラインの異なる位置におけるステージをそのまま出力します。

  • Transform

    選択したUSD Primsのトランスフォームを編集します。

  • Transform UV

    USD Prims上のテクスチャ座標を移動、回転、スケールさせます。

  • USD ROP

  • USD Render ROP

  • Unassign Material

    1個以上のUSDプリミティブからマテリアルのバインドを解除します。

  • Value Clip

  • Vary Material Assignment

    いくつかのPrimsに対して異なるマテリアルを割り当ててバリエーションを生成します。

  • Volume

    フィールドPrimsを含んだボリュームPrimでディスク上のボリュームデータを参照します。

  • Xform

    Xform Primを作成/編集します。Xform(とそのサブクラス)はシーンツリー内のトランスフォームを表現します。