Houdini18.5 Solaris(USD) トレーニング Part1 USDについて
はじめに
YouTubeに連動した説明動画をUPしておりますので、併せてご覧ください。
■この記事を閲覧される対象の方
・Solaris(USD)について体系的に学習したい方
・Houdini Solarisの導入を検討している方
・ライティング、ルック開発、レイアウトに携わるアーティスト
■この記事の目的
本記事は、「Houdini18.5 Solaris(USD) トレーニング」は全5パートに分かれた記事を通して、SideFX社Houdini 18.5に搭載されたSolaris(USD)を体系的に学習することを目的としています。
さらに、HoudiniのSolaris(USD)専用に開発された、新レンダリングエンジン『Karma』を使用する上でのシェーダー開発やレンダリング手法について学びます。
全体のアジェンダは以下のようになっております。
途中、ファイルを用いた演習パートもございますが、該当するパートの記事内にてzipファイルを配布する予定です。そちらも併せてご利用ください。
■記事作成時の情報について
Houdini18.5.462、2021年9月に作成
----------------------------------------------------------------------
1-1.USDについて
■USDとは
Universal Scene Description(USD)は、Pixar社が開発したオープンソースシーンディスクリプションです。3Dアセットとシーンを効率的に構築およびコラボレーションすることができます。USDは、Maya、Katana、Houdiniなどで使用されています。
■USDの利点
●パイプライン
USDは、基本的に拡張可能な共通言語で表される3Dデータの合成エンジンであり、製品間でデータを移動できるようにし、ネイティブバリアントとネイティブ編集の両方をサポートします。
●スケール
速度をスケールのために最適化されたシーングラフを生成し、大規模な生産データセットの高速読み込みと高速再生を可能にします。
●コラボレーション
強力なオーバーライドと堅牢な参照システムを活用して、非破壊的な共同編集を可能にします。
■USDの利点(Houdini内)
●ノードベース
視覚的にもわかりやすくUSDが使用可能です
●LOPを介してUSDを使用することで複数のユーザーが同時に作業可能
同じシーンを複数のユーザーが作業可なため、データ共有、アセットの更新が相互に干渉しません
1-2.USDの仕組み(USD専門用語)
■プリミティブ(Prim)
USDの基本的な「単位」です。USDでは「Primitive」は「prim」と短縮される場合があります。HTMLの「要素」と同様に、プリムには名前、0個以上の名前付きプロパティ及び0個以上のchildren(子)があります。 プリムには、メッシュ、ライト、カメラ、シェーダーなど、いくつかのタイプ(USDではこれらのタイプを「スキーマ」と呼びます)があります。各スキーマは、各プリムタイプがサポートするすべてのプロパティを定義します。プリムは、ステージを定義するオブジェクトのツリー内の「ノード」です。
■プロパティ
プロパティは、プリムにアタッチできる2タイプの名前付きデータの一般名です。
●属性
属性は、プリムを説明する型付きの値(整数、色、変換行列、配列など)です。例えば、float size=1.0キューブプリムの均一サイズを定義します。これは、プロパティの最も一般的な形式です。
●関係
Relationship(関係)は、1つのプリムと別のプリムとの間にリンクを確立します。例えば、メッシュプリムをシェーディングする際に使用するマテリアルを指定、コレクション内のプリミティブを指定します。
■メタデータ
プロパティ自体に名前付きの値をアタッチして、動作方法を変更することができます。メタデータは、特定のDCCに固有の「追加の」データを添付することや、デバッグやユーザーインターフェースの構築に役立つ場合があります。例えば、様々なアトリビュートのドキュメントはメタデータに保存されます。
■ステージ
USDファイルを読み込み、システムがすべてのレイヤー(ディスク上の各.usd / .usda / .usdcファイル)をまとめてプリミティブの最終シーングラフを計算する場合、その結果はステージと呼ばれます。Houdiniでは通常「シーン」と呼ばれます。
.usdファイルを「トップレベル」ファイルとして読み込んだ場合、ステージが作成されます。 Houdiniでは、ネットワークの最上部にあるLOPノードがステージを作成します。
■レイヤー
ディスク上の個々のusd / usda / usdcファイルであり、LOPノードによってメモリ内に作成され、後でディスクに書き込まれます。 レイヤーは、プロップ、キャラクタ、リグの一部、ライティング設定などのシーンの「ピース」を表すことができます。 また、シーンに数百または数千のレイヤーがあることは珍しいことではありません。HoudiniでLoadlayerノードやSublayerノードでUSDファイルを読み込み、レイヤーを構築します。
補足:.usdzファイルは、単一のファイルに複数のレイヤーを含むことができます。
■ネームスペース
シーングラフの中の場所を表す名前空間です。LOPを使用してUSDに編集を加える場合、このnamespaceの記述が重要となります。
■インスタンス
USDには、さまざまな形式の「インスタンス化」(効率的なコピー)があります。USDには、ツリー内の1つのプリミティブが別のプリミティブを参照するという概念があります。 これは、ブランチ内のすべてのプリミティブを実際にコピーするよりも効率的ですが、サブプリミティブをオーバーライドする機能を保持するために、USDは参照の下に各サブプリミティブの参照も作成する必要があります。
■コンポジションアーク (合成のための演算子)
ある階層から別の階層へのリファレンス機能です。レイヤーの一部を組み合わせて、ステージを構築することができます。USDでは以下の合成方法をコンポジションアークと呼びます。subLayers(サブレイヤー)、inherits(継承)variant(バリアント)、references(リファレンス)、payloads(ペイロード)、specializes(特殊化)です。
■サブレイヤー
2つのシーングラフを組み合わせる際に使用します。サブレイヤーは、Sublayer LOP、Merge LOP、およびその他のLOPノードによって実行される合成の種類です。サブレイヤーのリストは、LayerStackと呼ばれます。
■継承
合成時にレイヤーの一部を継承して、新しいレイヤーを生成します。
■バリアント
アセットに対して、マテリアル、ジオメトリ、ポジション、スケール等をアセットに追加し、多数のバリエーションを作成することができます。また、これら複数のバリアントグループを名前付きバリアントセットに格納できます。
各バリアントは、異なるアトリビュート、リレーションシップ、および子を持つことができます。 また、異なるレイヤーの異なるバリアント間でプリミティブを切り替えることも可能です。
バリアントを使用して、異なるオブジェクトをエージングさせ、シーケンス全体を通してダメージを与えます。
■リファレンス
USDファイルを単一のシーングラフに結合します。
リファレンスは、個々の小さなアセットを大きなシーンに"graft(接ぎ木)"させるのに役立ちます。 特に、 リファレンスは、同じファイルを何回も別々の場所に読み込むことができる唯一の方法です (サブレイヤー化はツリー全体に対して動作するので、同じファイルを何回もサブレイヤー化しても何の効果もありません)。
リファレンスに関するもう1つの重要な点は、ファイル内の単一のプリミティブを常に参照する必要があり、そのプリミティブをルート( "/")にすることはできないということです。
他のレイヤーから参照されることを意図したレイヤーを作成する場合、単一のルートプリミティブを提供し、シーングラフ全体をこの1つのルートプリミティブの下に配置することを推奨します。
参照する場合は、常に1つのファイルの1つのプリミティブをリファレンスシーングラフの既存のプリミティブのネームスペースにリファレンスします。
■ペイロード&特殊化
ペイロードは、基本的にリファレンスとほぼ同じです。
リファレンスとの違いは、特別に要求されるまでペイロードを読み込まないようにシーングラフに指示を出すことができます。シーンのどの部分をメモリに読み込むかを容易に制御することが可能です。また、これによってメモリの使用と処理時間を抑えることができます。
特殊化は継承と似ていますが、リファレンス側でオーバライドしないように制御します。この機能は、マテリアルライブラリなどで使用します。
■オピニオン&グラフト
オピニオンはUSD内の優先度について示します。
加した順番によって、後から追加されたものが優先して適用されます。Photoshop同様、下層レイヤーより上層レイヤーの仕様が適用されます。
グラフトはリファレンスに似た動作をしますが、実際にリファレンスは作成しません。リファレンスシーングラフデータをメインとなるシーングラフにコピーします。これは「強化された」リファレンスと考えられます。また、ディスク上のファイルをリファレンスしないという点で、リファレンス機能とは異なります。LOPで作成された他のシーングラフのみを移植することが可能です。
----------------------------------------------------------------------
今回のパートは以上となります。
次回Part2では「Houdiniでのレンダリング Houdini18.5でのビューポート」
について解説します。是非ご覧ください。
この記事が気に入ったらサポートをしてみませんか?