あいまいなケース
2 つのレンダー レイヤ間で共有されているレンダー パスにレンダー ターゲット ノードを接続すると、合成グラフがあいまいになります。レンダー ターゲットがレンダー パスをどちらのレイヤから取得するかという問題が発生します。
既定の動作
- レンダー ビュー(Render View): レンダー ターゲットはアクティブ レイヤのレンダー パス結果を取得します。
- バッチ レンダリング: レンダー ターゲットはアクティブ レイヤに関係なく、マスター レイヤのレンダー パス結果を取得します。
- マスター レイヤ以外の 2 つ以上のレンダー レイヤ間でレンダー パスを共有し、レンダー ターゲットの renderLayer 入力をどのレイヤにも接続していない場合、レンダー ターゲットは黒くレンダーされます。以下に、このような例を示します。
このようなあいまいなケースを回避するには、以下の方法があります。
- レンダー レイヤでレンダー パスを共有しない。
- レンダー レイヤの message 出力をレンダー ターゲットの renderLayer 入力に接続する。
- レンダリング イメージ ソース ノードをレンダー ターゲットに接続して、接続したレイヤから強制的にレンダー パスを取得する。
合成グラフをカスタマイズして、レンダー ターゲットで特定のレイヤから強制的にレンダー パスを取得する。
方法 1
- 中マウス ボタンでレンダー レイヤ ノードをレンダー ターゲット ノードにドラッグします。接続エディタ(Connection Editor)が表示されます。layer1.message をrenderTarget1.renderLayer に接続します。
ヒント: message アトリビュートと renderLayer アトリビュートが接続エディタ(Connection Editor)に表示されない場合は、左側の表示 > 非表示にされたアトリビュートの表示(Left Display > Show Hidden)と右側の表示 > 非表示にされたアトリビュートの表示(Right Display > Show Hidden)を選択して表示します。
方法 2
- 以下の MEL スクリプトを使用して renderedImageSource ノードを作成します。
shadingNode -asRendering renderedImageSource;
- 中マウス ボタンでレンダー レイヤ ノードを renderedImageSource ノードにドラッグします。接続エディタ(Connection Editor)が表示されます。layer1.message を renderedImageSource1.renderLayer に接続します。
- 中マウス ボタンでレンダー パス ノードを renderedImageSource ノードにドラッグします。接続エディタ(Connection Editor)が表示されます。<pass>.message を renderedImageSource1.imageSource に接続します。
- [Ctrl]キーを押しながら中マウス ボタンで renderedImageSource ノードと renderTarget ノードを接続します。
レンダー レイヤを使用するレンダー設定のオーバーライド
レンダー ターゲットが特定のレンダー レイヤに接続されていない場合、既定では、マスター レイヤのレンダー設定を使用してマスター レイヤでレンダーされます。レンダー レイヤを作成してレンダー ターゲットに接続すると、これらのレンダー設定をオーバーライドすることができます。このように、レンダー ターゲットはレンダー レイヤのコンテキストでレンダーされます。
これをハイパーシェード(Hypershade)で実行するには、レンダー レイヤの message 出力をレンダー ターゲットの renderLayer 入力に接続します。
注: レンダー ターゲットのレンダリング: レンダー ターゲットのレンダリングでの複数のレンダリング可能なカメラのレンダリングは、サポートされていません。これはレンダリング可能なカメラのレイヤ単位のオーバーライドでも同じです。
異なるカメラからの 3D 出力を統合する
カメラのオーバーライドを作成するには、カメラをレンダー ターゲットの camera 入力に接続します。これは、合成グラフ内の上流の全接続でこの 3D カメラが使用されることを意味します。このように、事前合成内で異なるカメラからの 3D 出力を統合することができます。