On this page |
概要 ¶
USDは、Model Kindsの階層を定義します。 “component”モデルは、Houdiniのジオメトリオブジェクトと概ね同様です。 コンポーネントは、ランプやキッチンテーブルといった、参照したりインスタンス化できる単一の“物体”を表わします(“group”や“assembly”といったその他のKindは、より高いレベルのコンポーネントグループを表わします。 component kindは“リーフ(末端)”タイプで、他のModel Kindsを内部に持つことはできません)。
Houdiniを以前からお使いの方は、コンポーネントとは、ジオメトリと独自のマテリアルネットワークを含むオブジェクトレベルのHDAのようなものだと考えてください。 コンポーネントは再利用することができ、さらにオリジナルを変更することなく特定のインスタンスをカスタマイズすることが可能です。
Component Builder ツールは、様々な最適な手法や機能を自動化または実行することができます(USDに慣れていないアーティストやスタジオに大変便利です):
-
ジオメトリをペイロードとしてセットアップすれば、アーティストは簡単にそれをアンロードすることができ、その場合でもビューポート内に境界ボックスを表示することができます。
-
ディスク上のファイルをディレクトリ構造で整理します。
-
バリアント(モデルの代替シェイプやマテリアルのルック)の追加を簡単にします。
-
Primにコンポジションアークをセットアップして、モデルがクラスプリミティブから継承するようにします。こうすると、コンポーネントにショットレベルのカスタマイズを簡単に適用できます。
-
各コンポーネントは、ジオメトリとマテリアルを個別のファイル(レイヤー)に保持します。ファイルを生成し直すことなく置換したり、マテリアルなしでジオメトリのみを参照するといったことが可能で、柔軟性が向上します。
たいていの場合、コンポーネントだけのUSDを生成して書き出すために小さな単一.hip
を用意したり、もしくは、同じファイルから異なるコンポーネントをすべて生成できるように複数のComponent Builderを含んだ大きな単一.hip
を用意することになります。
それから、シーンの個別の.hip
ファイルまたはUSDファイルから、コンポーネント毎に生成されたコンポーネントレイヤーファイルを参照します。
ディスクに結果を書き出す方法やコンポーネントの使い方の詳細は、コンポーネント出力の使用を参照してください。
ノード ¶
このツールは、以下のノードを使ってネットワークスニペットを作成します。
|
モデルのジオメトリを定義するために使用するSOPネットワークを含みます。 このノードをダブルクリックすると、そのSOPネットワークの中に入ることができます。 |
|
|
このモデル固有のマテリアルを定義するために使用するマテリアルネットワークを含みます。 このノードをダブルクリックすると、そのマテリアルネットワークの中に入ることができます。 |
|
|
マテリアルネットワークからのマテリアルをコンポーネントジオメトリの特定のフェース/サーフェスに割り当てます。 上記のモデル固有のノードで定義されたマテリアルを割り当てることができます。 |
|
|
その他のパーツ(ジオメトリ、マテリアル、メタデータ)をまとめて、モデルの最終的なUSD Primを作成します。 |
ネットワークには、デフォルトでは作成されないモデルのバリアントを作成するノードも追加することができます。
|
複数のComponent Geometryノードをコンポーネントのバリアントとして結合できます。 以下のバリアントの作成方法を参照してください。 |
How to ¶
To... | Do this |
---|---|
Component Builderネットワークをセットアップする |
|
マテリアル ¶
To... | Do this |
---|---|
マテリアルをグループ(フェースセット)に割り当てる |
|
共有ライブラリからマテリアルをインポートする |
|
バリアント ¶
To... | Do this |
---|---|
ジオメトリバリアントを作成する |
USDでは、複数のバリアント間でモデルを切り替えることができます。 例えば、1個の木コンポーネント、種が異なる複数の木のモデル(ニレ、トウヒ、カラマツなど)を含めることができます。
ジオメトリバリアントセットのデフォルト名は |
ジオメトリバリアント固有のマテリアルを使用する |
マテリアルがジオメトリバリアント固有の場合、バリアントのCompontent GeometryノードとComponent Geometry Variantsノードの間に接続された(Material LibraryまたはReferenceノードがその2番目の入力に接続された)Component Materialノードを使用して、マテリアルを割り当てることができます。
|
マテリアルバリアントを作成する |
マテリアルバリアントセットのデフォルト名は |
デフォルトのバリアントを設定する |
デフォルトのジオメトリおよびマテリアルバリアント(バリアントを明示的に指定せずにコンポーネントを参照する際に使用されるバリアント)を設定することができます。
|
Extras ¶
Component Outputノードをダブルクリックして、そこに含まれているLOPネットワークの中に入ります。
(Input Stage
という疑似ノードから始まる)追加のLOPノードをこのネットワークに接続すると、/ASSET
下にあるコンポーネントノードによって作成されたPrimをさらに変更することができます。
このネットワークで行なったすべての変更は、ファイル出力でextras.usdc
レイヤーとして分けて作成され、コンポーネントノードによって作成された弱いオピニオンを上書きします。
これは、ライティングや、アニメーションサイクルの継続維持などに便利です。
Tipsとメモ ¶
-
Component MaterialとComponent Outputノードの間に他のLOPを挿入することができます。挿入したLOPをセットアップするだけで、Component GeometryとComponent Materialノードによって作成された(
/ASSET
下の)“temp”アセットPrimを編集することができます。 -
コンポーネントに使用したいジオメトリがディスクまたは既存のSOPネットワーク上にある場合、Component Geometryノードの Source パラメータを Internal SOP network から File または External SOP に切り替えることができます。
-
使用したいジオメトリがLOPネットワークの上流で既にLOPにインポートされている場合は、Component Outputノードの Source パラメータを Upstream Component Geometry から Scene Import (Scene Import LOPによって生成された既存のPrimを処理)または Input Primitives (その下のジオメトリとマテリアルとともに、既存のPrimを使用)に切り替えることができます。
-
現在のところ、Component Builderネットワークは、複数または入れ子化されたジオメトリバリアントセットに対応していません。
Prim出力 ¶
出力されるシーンツリーは次のようになります。
<component>
はルートPrimの名前です(__class__
の下の追加Primに関する情報についてはクラスプリミティブについてを参照してください)。
/<component> (xform) ← Component Kind /geo (scope) ← 表示Purpose: default /mtl (scope) /__class__ (class) /<component> (class) ← /<component>によって継承
Component Geometryノード内で追加の出力を使用して、表示および/またはシミュレーションプロキシジオメトリを定義する場合、geo
Primnの下に追加のブランチが含まれます。
/<component> (xform) ← Component Kind /geo (scope) /proxy (scope) ← 表示Purpose: proxy /render (scope) ← 表示Purpose: render
親プリミティブでPurposeを管理すると、Hydraがアップデートの問題やクラッシュを回避しやすくなります。 また、アーティストはシーンの特定の場所にどのジオメトリが存在しているかを把握することができます。
コンポーネント出力の使用 ¶
通常では、Component Builderネットワークの最終目標は、コンポーネントを自己完結型のUSDファイルに書き出し、そのコンポーネントを必要とする他のUSDファイルによって参照できるようにすることです。 ファイルがファイルを参照する、ファイルの階層構造は、USDの主な構成原則の1つです。
コンポーネントを生成するためにセットアップしたLOPネットワーク内で、 ノード が出力するのは、ルートレベルのPrimにコンポーネントを含んだステージです。 このPrimは、USDファイルに書き出すことができます(参照されるファイルが、ファイルのルートレベルに単一のPrimを持つという要件に適合します)。 Component Outputノード上のコントロールを使ってディスクファイルを書き出すまで、情報は実際にはディスクに書き出されません。
Tip
Component Builderネットワークは、ディスクにファイルを書き出すようにセットアップされますが、同じネットワーク内のどこからでも必要に応じて出力コンポーネントPrimを参照することができます(以下を参照してください)。
ディスクへの書き出し時に、Component Builderは常に関連ファイルのディレクトリを出力します(詳細はディレクトリ構造を参照してください)。
これが最適な手法です。
関連ファイル(レイヤーファイル、モデルのサムネイル画像)はグループ化され、コンポーネントについて説明したファイル(read_me.txt
ファイルなど)を簡単に追加することができます。
必要なのは、ディレクトリ名が固有な名前であることくらいです(含まれるファイルは一般的な名前で構いません)。
To... | Do this |
---|---|
コンポーネントをUSDレイヤーファイルのディレクトリに書き出す |
|
別のシーンのコンポーネントファイルを参照する |
|
同じネットワーク内のコンポーネントを参照する |
コンポーネントを同じネットワーク内の別のシーンツリーで参照することができます。 ディスクに書き出す必要はありません。
|
自動でサムネイル画像を生成する |
Component Outputノードには、コンポーネントのサムネイル画像を作成するためのオプションがあります。 このサムネイル画像は、Houdiniのアセットギャラリーやアセット管理システムで使用することができます。
Mode が Render または Houdini GL に設定されている場合、 Auto-generate on export をオンにすることで、USDファイルを書き出す時に常にサムネイルを再生成することができます。 Tip HoudiniがHoudiniパス上(ユーザー環境設定ディレクトリの |
独自のカメラとライトを使ってサムネイル画像を生成する |
Component Outputノードには2番目の入力があり、アセットのサムネイル用にこの入力を使用してカメラ、ライト、他のオブジェクトをセットアップすることができます。
Tip Save Thumbnail Scene to Disk を有効にすると、アセットディレクトリ内に |
コンポーネントをアセットギャラリーデータベースに追加する |
Component Outputノードには、ディスクに書き出されたファイルを自動的にUSDアセットギャラリー(Layoutノードによって使用されます)に追加できるボタンがあります。 このためには、ファイルが既にディスクに書き出されている必要があります。 出力ファイルのファイルパスを使用するだけで、エントリーをレイアウトデータベースに追加することができます。 ファイルのデフォルトの出力パスでは、現在の
Tip フローティングウィンドウにアセットギャラリーを表示するには、メインメニューで Windows ▸ New Floating Panel を選択します。 次に、フローティングパネルのペインタブを右クリックし、 Solaris ▸ Layout Asset Gallery を選択します。 |
クラスプリミティブについて ¶
Component Builderは、/__class__/prim_name
のPrimから 継承する ようにコンポーネントをセットアップします
(例えば、ルートPrimが/campfire
の場合、そのPrimは/__class__/campfire
から継承します)。
Inherits(継承)は、USDの非常に強力かつ便利な機能です。基本的に、コンポーネントはシーンで参照される度に、Primが そのツリー内 の継承したいパスに存在するかどうかをチェックします。 継承元のPrimが存在する場合、そのアトリビュートがコンポーネントのアトリビュートを上書きします。 これにより、表示されるコンテキストに基づいてPrimをカスタマイズできます。
Houdiniでは、“Inherits(継承)”コンポジションアークを持つPrimを参照する際には、シーングラフツリーでPrimを右クリックして、 Edit Primitive ▸ New Node to Edit Inherit 継承されたパス を選択できます。 すると、LOPネットワークに新しいEdit Propertiesノードが自動的に作成され、継承されるPrimのプロパティを上書きできます (つまり このシーンでのみ 、継承するPrimをカスタマイズできます)。
(将来のバージョンのHoudiniでは、継承をより簡単にセットアップ、可視化、編集できるツールが追加される可能性があります。)
ディレクトリ構造 ¶
Component Builderネットワークのディレクトリ出力(バリアントなし)は、次のようになります:
/campfire campfire.usd ← メインファイル、ペイロードを指す payload.usdc ← シェイプおよびマテリアルレイヤーを参照 geo.usdc ← シェイプデータ mtl.usdc ← マテリアル thumbnail.jpg
ディレクトリには、テクスチャマップなどの他のファイルが含まれる場合もあります。
ネットワークに含まれるComponent Output内にExtraノードを作成すると、ディレクトリには、そのネットワークで加えられた変更を含むextra.usdc
ファイルが作成されます。
Tip
Component Outputノードのパラメータの Caching ▸ Export Options で、“sidecar”レイヤーファイル(payload.usdc
、geo.usdc
、mtl.usdc
、extra.usdc
)の名前を変更できます。
この図は、“メイン”のアセットファイルがどのように他のファイルを参照するかを示したものです:
(ペイロードレイヤーは、サブレイヤーではなくリファレンスを使用して、バリアントを使用する場合でも、各レイヤーのオピニオンが前述のより弱いレイヤーを上書きできるようにします)
バリアントファイル ¶
Component Builderネットワークがバリアントをセットアップする場合、Component Outputノードはvariants
と呼ばれるサブディレクトリを生成します。
サブディレクトリ内には、各バリアントのサムネイルと、現行として設定されたバリアントでコンポーネントを参照するシンプルなレイヤーファイルがあります。
これにより、Solarisアセットギャラリーなどで、バリアントを個別のアセットとして扱いやすくなります。
/campfire campfire.usd payload.usdc geo.usdc /maps wood_diffuse.exr wood_normal.exr mtl.usdc thumbnail.jpg /variants campfire_blazing.usd campfire_blazing_thumbnail.jpg campfire_calm.usd campfire_calm_thumbnail.jpg campfire_smoldering.usd campfire_smoldering_thumbnail.jpg
See also |