Since | 17.0 |
Layer Breaksは、 レイヤーを理解するのに非常に重要です 。 これによって、ディスク上のレイヤーファイルに書き出す内容を制御することができます。
Layer Break LOPは、以下の2つの処理を行ないます:
-
このノードより下流のLOPノードによって修正される新しいアクティブレイヤーを開始します。
-
既存のすべてのサブレイヤーは、Layer Breakの前に編集済みとしてマークします。
これは、ステージの合成には何も影響を与えません。 シーンビューアでは、Layer Break前に作成されたサブレイヤーの効果がまだ表示されることでしょう。 しかし、Layer Breakは、一部のLOPノードがレイヤーを扱う方法とUSDレンダーノードがUSDとしてレイヤーを書き出す方法を変更します。
基本的には、USDレンダーノードがレイヤーをディスク上のレイヤーファイルに書き出す時、 Layer Break前のすべてが廃棄され 、ディスクには何も書き出されません。
これがなぜ役に立つのか?
あなたがライティング部署で作業していることを想像してください。
背景部署からファイルを受け取ったとします。
このファイルには、背景デザイナーが作成した/Lights/scratch_sun1
という名前の適当なライトが使われた景観が含まれています。
あなたは、この適当なライトを削除するレイヤーを用意して、プロダクション品質のライティングを追加する必要があります。
-
Sublayer LOPを使って、
landscape.usd
を読み込みます。 -
Layer Break LOP を接続します。
これは、 新しいレイヤーをディスクに書き出す時に、このノードより上流には何も含まれていない ことを示します。
-
要らないライト(
/Lights/scratch_sun1
)を選択して、Prune LOPを使って、そのライトを非アクティブにします。Note
Layer Breakは、In-Memoryレイヤーの合成には影響を与えないので、Layer Breakより上流でもこのライトはまだ選択可能です。
-
新しいプロダクション品質のライトを追加します。
-
USDレンダーノードを追加して、そのネットワークを
lighting.usd
という名前のレイヤーファイルとして書き出します。上記で説明したとおり、USDレンダーノードは、Layer Breakより上流のデータを何も書き出しません。 つまり、
landscape.usd
のどのデータもlighting.usd
には含まれません。しかし、
lighting.usd
レイヤーは、/Lights/scratch_sun1
を非アクティブにしたというオーバーライドを含んで います (Prune LOPはLayer Break LOPの後に接続したので、そこで編集したアトリビュートはLayer Break LOPの影響を受けません)。もちろん、
/Lights/scratch_sun1
はlighting.usd
には存在していません。 しかし、後でlandscape.usd
の上にlighting.usd
を レイヤー化 すると、そのPrimパスはマッチして、そのライティングレイヤーは、その不要なライトを非アクティブにします。
そのため、Solarisネットワークでは、データを読み込むことで、 編集用のコンテキスト を用意することができ、ネットワーク内のLayer Break LOPの前に“コンテキストデータ”を置くことで、その“コンテキストデータ”が書き出されないようにすることができます。