【Maya x Arnold】MayaのrenderSetup完全ガイド|背景・キャラクター・影を別EXRに分ける方法

当ページのリンクには広告が含まれています。
renderLayerアイキャッチ
  • URLをコピーしました!

前回の記事では、MayaとArnoldでACEScg環境のAOVをマルチパートOpenEXRに出力する設定を解説しました。

この記事では、1本のEXRにdiffuse・specular・transmissionなどのAOVをまとめて出力する方法を扱いました。これは「1つのオブジェクトをパスに分解する」技術です。

今回はもう一段上の話です。シーン内のオブジェクトそのものを「レイヤー」に分けて、別々のEXRファイルとして出力する——それがRender Layerです。

コンポジットで特定の要素だけ色を変えたい・ぼかしたい・後から差し替えたいという場面で必須になる技術です。

そこで今回は、renderSetup(レンダーレイヤー) を使って素材を分けてレンダリングする方法を解説します。

INDEX

Render Layerとは何か

Render Layerとは、同じシーンを「見え方の設定を変えながら」複数回レンダリングするための仕組みです。

カメラもライトも同じシーン。でもレイヤーAでは「オブジェクトだけ」、レイヤーBでは「背景の地面だけ」という具合に、各レイヤーにオーバーライド(設定の上書き)をかけることで、異なる素材を効率よく書き出せます。

たとえば前回の記事で使ったテストシーン(地面+立方体+トーラスなど)をRender Layerで分けると、次のようになります。

同じシーン(.mb)
  ├── layer_objects     → 立方体・トーラスなど前景オブジェクトのみ
  └── layer_background  → 地面・背景のみ

出力されたEXRファイルはコンポジットソフト(FusionやAfter Effects)で重ねて合成します。

背景だけを差し替えたいとき、前景オブジェクトの色だけ調整したいとき、それぞれを独立して扱えます。

なぜRender Layerを使うのか

シーンを1パスでまとめてレンダリングした場合、すべての要素が1枚の画像に焼き込まれます。そうなると、コンポジット段階で特定の要素だけを操作することができません。

やりたいこと1パス合成済みではできるか
背景だけ別の画像に差し替える❌ できない
オブジェクトと背景を別々にグレード(色調補正)する❌ できない
影の色を変える・ぼかす❌ できない
特定のオブジェクトだけ後から差し替える❌ できない

Render Layerで素材を分けておけば、これらがすべて自由になります。

Render Layerの主な活用例

Render Layerはさまざまな場面で使われます。わかりやすい例から順に紹介します。

① オブジェクトと背景の分離(最も基本的な使い方)

前景のオブジェクトと背景を別レイヤーに分けることが、Render Layerの最もシンプルな使い方です。

実写のグリーンバック撮影と同じ発想で、背景だけを丸ごと差し替えることができます。

「やっぱり別の背景にしたい」という変更があっても、オブジェクト側を再レンダリングする必要がありません。

この記事の「実践①」で具体的な手順を解説しています。

② キャラクターを個別に分ける

キャラクターAとキャラクターBを別レイヤーにしておくと、コンポジットで「Aだけ明るく」「Bだけ色調を暗くする」といった調整が独立してできます。

③ キャラクターとエフェクトの分離

炎・煙・魔法エフェクトなどを別レイヤーにしておくと、エフェクトの強さや色合いをコンポで自由に調整できます。

3D側でエフェクトを再レンダリングせずに済むため、イテレーションが高速になります。

④ ライトグループ(Light Select)の分離

特定のライトが照らす成分だけを別レイヤーに書き出し、コンポでライトの色や強さを後から変更できます。過去にこの手法を解説した記事があります(ACEScg対応前の旧バージョンですが、基本的な手順は現在も有効です)。

ACEScg対応の新しい手順は、この連載で将来取り上げる予定です。

⑤ ホールドアウト(Holdout)/影の分離

あるオブジェクトを影は落とすがカメラには映らない状態にして、影だけを抽出する手法です。

aiShadowMatte ワークフローでもこの考え方を応用します。①の基本構成をさらに細かく制御する応用版です。この記事の「実践②」で解説しています。

renderSetupの基本

renderSetupは、Maya 2016.5以降に標準搭載されたレンダーレイヤー管理ツールです(旧来の「レンダーレイヤー」機能の後継)。1つのシーンの中に複数のレイヤーを定義でき、レイヤーごとに異なるオーバーライドを持たせてレンダリングできます。

メニューバーの WindowsRendering EditorsRender Setup から開きます。

パネルの構成は大きく3階層です。

Render Setup
  └── レイヤー(Layer)       ← 書き出し単位
        └── コレクション(Collection) ← そのレイヤーに含めるオブジェクトの定義
              └── オーバーライド(Override) ← 設定の上書き内容

コレクションにオブジェクトを追加し、そのオブジェクトに対してオーバーライドをかけることで「このレイヤーではこのオブジェクトをこう扱う」という指定ができます。

オブジェクトをコレクションに追加する

  1. Render Setupパネルで対象のレイヤーを選択し、コレクションを選択します。
  2. Outlineまたはビューポートで追加したいオブジェクトを選択します。
  3. Render Setupパネル右側の 「Add」ボタン をクリックします。

または、コレクションの セレクタフィールド(デフォルトは *)に追加したいオブジェクト名またはワイルドカードを直接入力することでも追加できます。

Primary Visibility Overrideを追加する

カメラから見えなくしたいオブジェクトには、Arnold の Primary Visibility をオーバーライドします。

  1. Render Setupパネルで対象のレイヤーをアクティブにします。
  2. 非表示にしたいオブジェクトを選択します。
  3. Attribute EditorShapeタブArnoldVisibility セクションを開きます。
  4. Primary Visibility の項目を 右クリック「Create Absolute Override for Visible Layer」 を選択します。
  5. Render Setupパネルの該当コレクション配下にオーバーライドが追加されます。チェックを外すと、そのレイヤーでのみカメラから見えなくなります。

同じ場所にある関連項目: Cast ShadowsSelf Shadows も同じ Arnold > Visibility セクションにあるので、必要に応じて同様の手順でオーバーライドできます。

ポイント: Primary Visibility を切っても Cast Shadows はデフォルトでオンのまま維持されます。影は追加設定なしで地面に落ちます。

実践①:基本の2レイヤー構成(オブジェクトと背景を分ける)

まずは最もシンプルなケースとして、前回のAOV記事で使ったテストシーン(地面+立方体・トーラス・ダイヤモンド・コイルなどのオブジェクト)を2つのレイヤーに分けます。

全体の方針

各レイヤーにコレクションを2つ作成し、表示したいオブジェクト非表示にしたいオブジェクトを分けて管理します。オーバーライドは非表示側のコレクションにだけかけます。

layer_objects
  ├── obj_fg             ← 立方体・トーラス・ダイヤモンド・コイル + background(Matteあり)(オーバーライドなし)
  └── obj_ground         ← ground(Transformノード)
        └── obj_ground_shapes  ← 自動生成されたShapeノード用(リネーム推奨)
              └── Override: Primary Visibility = OFF

layer_background
  ├── bg_ground          ← ground + background(Matteあり)(オーバーライドなし)
  └── bg_fg              ← 立方体・トーラス・ダイヤモンド・コイル(Transformノード)
        └── bg_fg_shapes       ← 自動生成されたShapeノード用(リネーム推奨)
              └── Override: Primary Visibility = OFF

オブジェクトをひとつひとつ別レイヤーに分ける必要はありません。オブジェクト単位の分離はCryptomatte(この連載の別記事で解説予定)が効率的です。

ステップ1:renderSetupでレイヤーとコレクションを作成する

  1. Render Setupパネルの + ボタンをクリックし、レイヤーを2つ作成します。
    • layer_objects
    • layer_background
  1. 各レイヤーにコレクションを2つずつ作成します。コレクション名は管理しやすい名前をつけておきましょう。
    • layer_objectsobj_fg(前景オブジェクト+background用)、obj_ground(ground用)
    • layer_backgroundbg_ground(ground用)、bg_fg(前景オブジェクト用)
  2. 各コレクションに対応するオブジェクトを追加します。obj_fg には立方体・トーラス・ダイヤモンド・コイルのほか、Mattにチェックの入った background もあわせて追加します。
オブジェクトを選択して「Add」でコレクションに追加

ステップ2:layer_objectsの設定(地面を非表示にする)

layer_objects では地面(ground)だけをカメラから見えなくします。前景オブジェクトとbackgroundは通常通り表示します。

  1. layer_objectsobj_ground(ground)を選択します。
  2. ground を選択し、Attribute Editor → Shapeタブ → ArnoldVisibilityPrimary Visibility右クリック「Create Absolute Override for Visible Layer」 を選択します。
Primary Visibilityの文字がオレンジ色になっていれば成功。
  1. obj_ground の下に *(ワイルドカード)を使ったShapeノード用の子コレクションが自動生成されます。これは正常な動作です。ArnoldのVisibility属性はShapeノードに属するため、renderSetupがShape用の子コレクションを自動的に作成します。わかりやすくするため obj_ground_shapes にリネームしておくことを推奨します。
  2. obj_ground_shapes のオーバーライドで Primary Visibilityチェックを外します(OFF)。

obj_fg(前景オブジェクト+background)はオーバーライド不要です。そのままレンダリングされます。

このレイヤーではオブジェクトだけが透明な背景の上に浮かんだ状態でレンダリングされます。

ステップ3:layer_backgroundの設定(オブジェクトを非表示にする)

layer_background では前景オブジェクトをカメラから見えなくします。地面は通常表示のままです。

  1. layer_backgroundbg_fg(前景オブジェクト)を選択します。
  2. 前景オブジェクトをすべて選択し、同様に Attribute Editor → Shapeタブ → ArnoldVisibilityPrimary Visibility「Create Absolute Override for Visible Layer」 でオーバーライドを追加します。
  3. bg_fg の下に自動生成された子コレクションを bg_fg_shapes にリネームします。Primary Visibilityチェックを外します(OFF)。

bg_ground(ground)はオーバーライド不要です。

影について: Primary Visibility はカメラ可視性のみを制御します。オフにしても前景オブジェクトからの影は地面に落ちたままになります。追加の設定は不要です。

このレイヤーではオブジェクトの姿は映らず、地面とその上に落ちた影だけがレンダリングされます。

ステップ4:出力設定

Render SettingsFile Output で以下を設定します:

  • File Name Prefix<RenderLayer>/<Scene> と指定するとレイヤー名でフォルダが自動生成されます
  • FormatexrMerge AOVs にチェック

レンダリングを実行すると以下の構成で出力されます:

renders/
  layer_objects/
    scene.0001.exr  ← オブジェクトのみ(透明背景)
  layer_background/
    scene.0001.exr  ← 地面+影のみ

得られる素材のイメージ

素材RGBAlpha
layer_objectsオブジェクトの色情報オブジェクトのシルエット(くっきり)
layer_background地面の色情報+影が落ちた領域地面ポリゴンが存在する範囲のみ不透明(地面が届かないエリアは透明)

layer_objects はアルファチャンネルでオブジェクトの輪郭が切り取られた状態です。

layer_background はgroundの大きさが有限なため、フレームの端などポリゴンが存在しないエリアのアルファは0(透明)になります。その透明部分に任意の背景色を合成する方法は、こちらの記事で解説しています。

実践②:応用例——aiShadowMatteシーンで影を独立させる

基本の2レイヤー構成が理解できたら、次は応用です。aiShadowMatte を使ったシーンでキャラクターと影を別レイヤーに分けることで、Fusionで影の色を変えたり・ぼかしたりできるようになります。

全体の方針

layer_beauty はオーバーライドなしでそのままレンダリングします。

layer_shadow のみコレクションを2つ作成し、キャラクターだけに Primary Visibility のオーバーライドをかけます。

layer_beauty
  └── bty_char         ← キャラクターのみ(オーバーライドなし)
                          ※ floor・wall は含めない → アルファはキャラクターのシルエットのみ

layer_shadow
  ├── shd_stage        ← floor・wall(aiShadowMatte)(オーバーライドなし)
  └── shd_char         ← キャラクター(Transformノード)
        └── shd_char_shapes  ← 自動生成されたShapeノード用(リネーム推奨)
              └── Override: Primary Visibility = OFF

layer_shadow でキャラクターの Primary Visibility をオフにすると、カメラには映らなくなりますが Cast Shadows はデフォルトでオンのまま維持されます

追加設定なしで影は floor に落ち続けます。

ステップ1:renderSetupでレイヤーを作成する

  1. Render Setupパネルの + ボタンでレイヤーを2つ作成します。
    • layer_beauty
    • layer_shadow
  2. layer_beauty にはコレクションを1つ(bty_char)作成し、キャラクターのみを追加します。floor・wall は追加しないことがポイントです
  3. layer_shadow にはコレクションを2つ作成します。
    • shd_stage:floor・wall(aiShadowMatte ポリゴン全て)
    • shd_char:キャラクターメッシュ(複数ある場合はすべて)

ステップ2:layer_beautyの設定

layer_beauty ではオーバーライドは不要です。

aiShadowMatteのシーン設定をそのままに、Background Colorは黒(0, 0, 0) でレンダリングします。

bty_char にはキャラクターのみを追加します。

floor・wall(aiShadowMatte)を含めてしまうと、影のエリアもアルファチャンネルに焼き込まれ、キャラクターのシルエットと影が混在した状態になってしまいます。

キャラクターだけを含めることで、アルファはキャラクターのシルエットのみになります。

ステップ3:layer_shadowの設定(キャラクターを非表示・影は維持)

layer_shadowshd_char にオーバーライドをかけます。

  1. layer_shadowshd_char(キャラクター)を選択します。
  2. キャラクターのメッシュをすべて選択し、Attribute Editor → Shapeタブ → ArnoldVisibilityPrimary Visibility右クリック「Create Absolute Override for Visible Layer」 を選択します。
  3. shd_char の下に自動生成された子コレクションを shd_char_shapes にリネームします。Primary Visibilityチェックを外します(OFF)。

shd_stage(floor・wall・aiShadowMatte)はオーバーライド不要です。

Cast Shadowsについて: Primary Visibility をオフにしても Cast Shadows はオンのまま維持されます。キャラクターの影は引き続き floor に落ちます。明示的にオーバーライドを追加する必要はありません。

このレイヤーではキャラクターの姿は映らず、floor・wall に落ちた影だけが浮かんだ素材が得られます。

ステップ4:出力設定

Render SettingsFile Output で以下を設定します(実践①と同じ):

  • File Name Prefix<RenderLayer>/<Scene>
  • FormatexrMerge AOVs にチェック

レンダリングを実行すると:

renders/
  layer_beauty/
    scene.0001.exr  ← キャラクターBeauty(aiShadowMatteで影は透明)
  layer_shadow/
    scene.0001.exr  ← 影マット素材(キャラなし)

という構成でEXRが出力されます。

得られる素材のイメージ

素材RGBAlpha
layer_beautyキャラクターの色情報キャラクターのシルエット
layer_shadowほぼ黒(背景色が黒のため)影の透過グラデーション

layer_shadow のアルファチャンネルが影の濃さのマップになっています。

Fusionではこのアルファを使って影に任意の色を乗せたり、Blurをかけたりが自由にできます。

まとめ

以上でrenderSettingによるレンダーレイヤーのレンダリングが完了しました。

renderSetupで分けたEXRをFusionでOver合成する手順は、以下の記事で解説しています。

aiShadowMatte の影に色をつけてぼかす具体的な操作は、連載Vol.4で解説しています。

renderLayerアイキャッチ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

フリーの3DCGアニメーター。
メインツールはMaya(使用歴20年以上)です。お仕事ではSoftimage(XSI)やMotionBuilderの使用経験もあり。思いに手付け(キーフレームアニメーション)が多いですが、キャプチャーもいけます。サブスキルとしてはリグ(Maya限定ですが)も少々いけます。

ゲームが昔から大好きなので「ゲーマー」としての側面からもいろいろ発信出来ればと考えています。
CG歴よりもゲーマー歴のほうがずっと長いもので(笑)。

twitterアカウント
@inopoa1

よろしくお願いします。

コメント

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

INDEX