【Maya×Arnold】Cryptomatte出力設定ガイド|Object/Material/Assetの3種AOVとSidecar Manifests確認

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

結論から言うと、CryptomatteはArnoldのAOVに3種類足してマルチパートEXRで書き出すだけでOKです。 Sidecar Manifestsデフォルトでオフ なので、通常はそのままで問題ありません。あとから オンにしない ことと、レンダー後に JSONが出ていないか確認する 程度で十分です。

本記事は、Fusion連載 【Resolve Fusion Vol.6】3D側・前提編(Maya×Arnold)です。Vol.6は 2段構成 になっています。

  1. 本記事(いまここ) … Cryptomatte AOVを足して、マルチパートEXRを再レンダリングする
  2. Fusion Vol.6(続編) … スポイトでマスク抽出し、ColorCorrectorでパーツ単位に色調補正する

前回(Vol.5) では、emission_pass を使ってライトセーバーの Glow を仕上げました。Vol.6では、その先の 「どのパーツに手を入れるか」 を、Cryptomatteで自由に選べるようにします。

Vol.3 で学んだ renderSetup による 別EXRへの分離 は、レイヤー単位の話です。今回はその さらに一段細かい 粒度——「緑のシャツだけ色を変えたい」「笛だけ明るくしたい」といった パーツ単位の狙い撃ち を、3Dの再レンダリングなしでFusion上からやるための Cryptomatte(クリプトマット) を、Maya×Arnold側から正しく出力する手順をまとめます。

INDEX

今回使うシーン——マネ風「笛を吹く少年」

Vol.1〜Vol.5では立方体・トーラスなどの幾何オブジェクトでパイプラインを組んできましたが、Vol.6(Cryptomatte)からはデモシーンを切り替えます。

使うのは、エドゥアール・マネの『笛を吹く少年』をモチーフにしたキャラクター+チェッカーの湾曲ステージ(サイクロラマ)です。すでに公開している aiShadowMatte(マネ風ステージ)の記事 と同じ世界観です。

Cryptomatteの説明には、幾何物体よりキャラクターの方が圧倒的に分かりやすいです。

Cryptomatteこのシーンでのイメージ
crypto_object髪・顔・シャツ・ズボン・靴・笛……メッシュ単位でバラバラに色分け
crypto_material同じマテリアル同士がまとまる(肌/髪/シャツ/ズボン/靴/笛など)
crypto_assetうまく出ればキャラ全体が1色。割れても本連載の実践には問題ない(後述)

Vol.6を読む順番

【Maya×Arnold】Cryptomatte出力設定ガイド|Object/Material/Assetの3種AOVとSidecar Manifests確認いま読んでいる記事(3D側)

【Resolve Fusion Vol.6】Cryptomatte実践入門|スポイト感覚で狙ったオブジェクトを一発マスク抽出!続編(Fusion側)

連載の前後

【Resolve Fusion Vol.5】emissionパスからGlowを作る方法|ライトセーバーが映画のように光る(前回)

【Maya】ArnoldでACEScgに対応したAOVレンダリング基本設定(Vol.1の3D側・前提)

【Resolve Fusion Vol.1】ACEScg AOV加算マージの基礎(Vol.1のFusion側・前提)

【Resolve Fusion Vol.3】Over合成入門|renderSetupで分けた別EXRをMergeノードで重ねる基本(レイヤー分離との違いの参考)

Cryptomatteとは?従来の白黒マスクとの決定的な違い

コンポジットで「特定のオブジェクトだけ色を変える」作業——いわゆる パートカラー は、映画でもゲームCMでも日常的に行われます。

しかし従来のマスク出力には、3Dアーティストにとって 限界 がありました。

従来手法何がつらいか忘れるとどうなるか
RGBマスク(R/G/Bで3色塗り分け)1枚で3パーツまで。30パーツなら10枚のEXRファイルが雪だるま式に増え、どのマスクがどのパーツか分からなくなる
オブジェクトID(単色のID番号)モーションブラー・DOFでエッジが混ざると数値がブレる輪郭が ガビガビ(ジャギー) 。髪の毛の隙間は マスク迷子 の温床

Cryptomatte は、この2つをまとめて過去に送る技術です。

  • 1本のマルチパートOpenEXR に、シーン内のオブジェクト/マテリアル情報がまとめて入る
  • 1ピクセルに 複数オブジェクトの重なり率(%) まで記録される
  • ボケたエッジやモーションブラーのグラデーションも、Vol.4で学んだ 半透明アルファ と同じくらい丁寧に保持される

だからFusion側では、スポイトでクリックするだけで「そのパーツだけ」のマスクが取れる——という流れになります。

ビューアのサイケデリックな色に騙されるな!

crypto_object
crypto_material

FusionやNukeでCryptomatteをビューアに出すと、画面が 赤・緑・紫のパズル みたいになります。「こんな雑な色分けで、オブジェクトが100個あったら被って混ざるんじゃ?」と不安になりますよね。私も最初はそう思いました(笑)。

安心してください。あのカラフルな表示は、人間が見やすいようにした「仮のプレビュー」です。

裏側では、オブジェクト名やマテリアル名を 32bit浮動小数点のID に変換してピクセルに刻んでいます。名前が重複しない限り、データが被ってマスクが混ざることはありません。パーツが増えても、スポイトで名前ベースに選べます。

ArnoldでCryptomatteを登録する基本手順

Vol.1と同じく、マルチパートOpenEXR への書き出しを前提にします。Cryptomatteは Beautyパスとは別レイヤー として同じEXRに同居させます。

ステップ1:AOVを3種類追加する

  1. Render Settings(レンダー設定) を開く(Render メニュー > Render Settings、またはショートカット)
  2. 左のカテゴリから Arnold を展開し、AOVs タブをクリック
  3. 画面左側の AOV Browser リストをスクロールし、次の3つを探す
    • crypto_object
    • crypto_material
    • crypto_asset
  4. それぞれをダブルクリックするか、右矢印ボタンで Active AOVs(右側のリスト)へ追加する

renderSetup との関係 Cryptomatteは グローバルAOV です。Vol.3の renderSetup レイヤーに登録する必要はありません。Vol.1どおりのマルチパートEXR出力設定のまま、上記3つを足すだけでOKです。

ステップ2:出力形式を確認する

Vol.1の設定を踏襲してください。

  • ファイル形式: OpenEXR(マルチパート)
  • カラースペース: ACEScg(リニア)——ログ空間の ACEScc ではありません
  • データタイプ: 32bit float
  • 書き出し方法: Batch Render(バッチレンダー) でディスクに出力(後述

Cryptomatteレイヤーも同じEXRに入るため、別フォルダにマスク用EXRを増やす必要はありません

ステップ3:Cryptomatte入りのEXRを書き出す

Vol.1〜Vol.5で使った幾何オブジェクトの素材には Cryptomatte が含まれていません。また Vol.6 ではデモシーン自体も マネ風「笛を吹く少年」 に切り替えています(地面・背景など、シーン側の改造も含む)。

したがって「以前のEXRにもう一度AOVだけ足す」という話ではありません。本記事のマネ風シーンに Cryptomatte AOVを足した状態で、Batch Render してください。 連載のVol.6(Fusion編)では、ここで書き出したEXRを使います。

【知っておきたい】Sidecar Manifests とは?——デフォルトはオフで、そのままでOK

Arnoldの Sidecar Manifests は、デフォルトでは オフ(チェックなし) です。つまり、何も触らなければマニフェストはEXRに埋め込まれ、本連載のVol.6でもそのまま使えます。

それでもここで触れるのは、名前が紛らわしい うえ、うっかりオンにすると後工程が面倒になる からです。「JSONが出る=壊れている」わけではなく、オンにしたときだけ 別ファイル管理が始まる——という理解を持っておきましょう。

そもそもマニフェスト(manifest)とは?

Cryptomatteには、ピクセルの数値IDと 人間が読める名前torusShapegold_metal など)を対応づける辞書——マニフェスト が必ず付きます。

この辞書の置き場所が2パターンあります。

方式データの居場所Fusion/Nuke向き
埋め込み(デフォルト推奨)EXRヘッダーのメタデータ内◎ EXR1本で完結
Sidecar(別ファイル)EXRと同じフォルダの .json△ パス管理が必要

Arnoldの Cryptomatteシェーダー にある Sidecar Manifests チェックボックスが、この二択を切り替えます。

Sidecarをオンにすると何が不便か——Fusionに渡すときの話

「JSONが1個付いてくるだけでしょ?」——一見そう思えますが、Sidecarをオンにした場合 は次のような手間が増えます。

1. ファイル数が爆発する

100フレームのアニメーションで、3種類のCryptomatte(object / material / asset)をSidecar出力すると、理論上 最大300個のJSON がフォルダに散らばります。さらにレンダーファーム(ネットワークレンダリング)では、ワーカーごとに出力先が微妙に違うこともあります。

EXRだけ別フォルダにコピーしたり、ZIPにEXRだけまとめたりすると、JSONが1枚でも欠けることがあります。そうなるとFusionでスポイトしたとき、名前が 空欄 になったり 数字の羅列 だけが並びます——Arnoldのドキュメントやフォーラムでも「マニフェストが読めない」とよく報告されている症状です。本連載のVol.6でも、まずEXR単体で動く状態を前提に進めます。

2. EXRの中に「JSONへの相対パス」が書かれる

Sidecar方式では、EXRのメタデータに ../manifest.1001.json のような 相対パス が記録されます。つまり EXR単体では完結していません。

  • EXRだけ別ドライブにコピー → マスク迷子
  • クラウドストレージにEXRだけアップ → マスク迷子
  • 納品ZIPにEXRフォルダだけ詰める → マスク迷子

EXRだけ手元にコピーしてFusionを開くと、マニフェストが見つからずスポイトが機能しません。

「JSON、どこに出た?」とフォルダを探す羽目になるので、ここはくれぐれも注意しておきましょう。

3. レンダーファームでパスが壊れる

レンダーファームでは、ワーカーPCごとにドライブレターが違います(Z:\render\D:\jobs\)。Sidecarの相対パスは、レンダーしたマシン上では正しくても、コンポのPCでは解決できない ことがあります。

さらに、レンダーファーム環境では複数ワーカーが同じJSON名で上書きし合ったり、出力フォルダの権限がなくJSONだけ書き出しに失敗したりする——といった話も、Arnoldフォーラムなどで報告されています。Beautyは問題なくてもマスクだけ死ぬ、という状態はSidecar方式で起きやすいようです。

4. Fusion / Nuke側の手間が増える

埋め込み方式なら、Cryptomatteノードは そのまま EXRを読めばスポイトが動きます。

Sidecar方式だと、Nukeでは Manifest SourceSidecar に切り替え、JSONファイルを 手動で指定 する必要があります。Fusionでも同様に、パスが切れていると名前が読めません。Vol.6でやりたい「スポイトで選んで補正」が、パス探しから始まることになります。

5. 「JSONがないと名前は認識できないのでは?」は逆

初心者がよく陥る誤解です。埋め込み(Sidecarオフ)でも、名前はEXRの中にちゃんと入っています。 JSONは「外付けの辞書」であって、必須ではないのです。

逆に言えば、SidecarをオンにしたのにJSONを渡し忘れる と、名前が読めなくなる——という報告がArnoldのフォーラムなどにあります。デフォルトのオフ設定のままなら、この心配はありません。

この記事のおすすめ 個人制作や本連載の範囲なら、「EXRだけ渡せばFusionで動く」 状態にしておくのがいちばん安全です。3D側でJSONの管理まで引き受ける必要はありません。

Sidecarが必要な場面(参考)

全部が悪、というわけではありません。Arnoldの deferred stand-in(遅延読み込みのプロシージャル)のように、レンダー完了後にオブジェクト名が確定する 特殊ケースでは、Sidecarの方が安全なことがあります。

ただ、今回のような簡単なシーンや個人制作なら、まずは 埋め込み(Sidecarオフ) で問題ありません。本連載のFusion Vol.6も、この前提で進めます。

【手順】Sidecar Manifests の確認(デフォルトはオフ)

やることはシンプルです。デフォルト(オフ)のままなら触らなくてOK——ただし名前が紛らわしいので、どこを見ればいいかだけ整理します。

用語何か触る?
Cryptomatte FilterBeautyのぼかしに合わせてIDをランキングする 自動フィルタ基本は 触らない(Arnoldが自動設定)
Cryptomatteシェーダー_aov_cryptomatteマニフェストの出し方など 全体設定確認のために開く(通常は設定を変えない)
Sidecar ManifestsマニフェストをJSON別出力する チェックボックスオフ(チェックなし)のまま。オンなら外す

AOVタブで crypto_object を選ぶと Filter 欄に crypto_object_filter と表示されますが、これは上の表の Cryptomatte Filter で、Sidecarのスイッチではありません。オフであることを確認したいときは、Cryptomatteシェーダー本体 を開いてください。

手順A:Hypershade から開く(いちばん楽、おすすめ)

  1. Windows > Rendering Editors > Hypershade を開く
  2. 左上の BrowserMaterials タブを選ぶ
  3. 一覧から _aov_cryptomatte をクリックして選択する(名前が途中で切れて _aov_crypto... のように見えても問題ありません)
  4. 右下の Property Editor に、Cryptomatteシェーダーの設定がそのまま表示されます(Attribute Editor と同じ内容です)
  5. Sidecar Manifestsオフ(チェックなし) になっているか確認する。デフォルトではオフ です。オン(チェックあり)になっていたら、チェックを外してください。Cryptomatte DepthStrip Obj Namespaces などが一緒に並んでいれば、この画面で合っています

どういう機能? Sidecar Manifests オン = マニフェストを .json で別出力。EXRは「辞書の置き場所への道順」だけ持つ。

なぜオフにするの? オフ = マニフェストをEXRヘッダーに埋め込み。コンポに EXR1本渡せば完結 するからです。

  1. 設定は crypto_object / crypto_material / crypto_asset 共通のグローバル設定 です。1回確認すれば、3つのAOVすべてに反映されます
  2. シーンを保存する

手順B:Render Settings の AOVタブからたどる(代替)

AOVの設定画面から辿りたい場合は、次の手順です。

  1. Render Settings > Arnold > AOVs タブを開いたまま、Active AOVs リストで crypto_object1回クリック して選択する
  2. 画面下側crypto_object の行を見る。行のいちばん右にある ▼(下向きの三角形) をクリックするとメニューが出ます。いちばん下Select Filter を選ぶ
  1. Ctrl + AAttribute Editor(アトリビュートエディタ) を開く(または前面に出す)。aiAOV_crypto_object タブが表示されていれば、このAOVノードまでたどり着けています。Filter 欄に crypto_object_filter が見えても——ここは触らなくてOK です(Sidecarのスイッチではありません)
  1. Custom AOV セクションを開く。Shader 欄に _aov_cryptomatte と表示されているはずです。欄の右側にあるマップボタン(四角に矢印が入ったアイコン)をクリックする
  1. タブが cryptomatte(または _aov_cryptomatte)に切り替われば、Cryptomatteシェーダーノードまでたどり着けています。aiAOV_crypto_object タブのままでは Sidecar Manifests は出ません——設定はシェーダーノード側にあります
  2. _aov_cryptomatte タブの上部にある Sidecar Manifests を確認する(手順Aと同じく、デフォルトはオフ)

ついでに確認しておきたい設定(_aov_cryptomatte ノード内)

パラメータ推奨理由
Sidecar Manifestsオフ(デフォルト)本記事の主旨。すでにオンならチェックを外す
Cryptomatte Depth6(デフォルトのまま)1ピクセルあたりの重なり記録数。6で十分
Preview in EXRオフ(デフォルト推奨)プレビュー用レイヤーはデコーダが使わない。容量の無駄

レンダリング時の注意

  • Batch Render でディスクに書き出す(Render > Batch Render
  • Arnold RenderView から「Multi-Layer EXRを保存」だけだと、メタデータが欠ける ことがあり、Fusionで名前が読めない事例があります。Vol.6用の素材は バッチレンダー で出してください
  • Cryptomatte AOVのカラースペースは Raw のまま(OCIOの出力変換をかけない)。Apply Output Transform to Renderer がオンだとCryptomatteデータが壊れる報告もあるので、Vol.1のACEScg設定を踏襲しつつ、Crypto系だけは変換が掛からない状態を確認してください

「Object」「Material」「Asset」の使い分け

3種類まとめて出力しておき、Fusion側の Cryptomatte ノードの Layer で切り替える のがおすすめです。容量は1本のマルチパートEXRに収まるので、迷ったら3つ全部オンでOKです。

Layer名単位こんなとき使うマネ風シーンでの見え方
crypto_objectメッシュ(Shape)単位「このパーツだけ」と オブジェクト名 で狙う髪・顔・シャツ・関節・笛……パーツごとに色が分かれる
crypto_materialマテリアル(シェーダー)単位同じ材質を まとめて 色調補正したい同じ肌マテリアルの顔・手が同色。シャツ/ズボン/靴は別色
crypto_assetアセット名(名前空間など)単位複数アセットが並ぶカットで キャラごと/セットごと に大まかに取るうまく出れば1色。割れても本連載の実践には問題ない後述

Vol.6(Fusion編)の実践例 では、たとえば「緑のシャツだけ色を変える」ために crypto_material を選びます。同じシャツマテリアルが他にもあればまとめて変わります。シャツのメッシュ1枚だけ変えたいなら crypto_object です。日常のパートカラー作業の主役は、だいたいこの2つです。

crypto_asset について——一色にならなくても大丈夫

マネ風キャラで Cryptomatte を出すと、だいたい次のようになります。

AOV結果判定
crypto_objectパーツごとに色が分かれる正常(メッシュ単位だから)
crypto_materialマテリアル単位でまとまる(肌/髪/シャツ/ズボンなど)正常
crypto_assetobject と同様にパーツごとに色が分かれることがあるよくある。Vol.6の実践では必須ではない

「Assetなのにキャラが1色にならない」と気になるかもしれませんが、本連載(Vol.6)の目的——シャツや笛などパーツ単位の色変え——には crypto_object / crypto_material で十分 です。crypto_asset が割れても、先に進んで問題ありません。

crypto_asset は何のためのレイヤーか

Cryptomatte の3種のうち、いちばんよく触るのは crypto_objectcrypto_material です。

crypto_asset は、もともと シーンに複数のアセットが並ぶとき(キャラA・キャラB・背景セットなど)に、「このキャラ全体」「このセット全体」といった 大きな塊 を一発で取るためのレイヤーです。Mayaではだいたい リファレンスの名前空間(namespace) をアセット名の手がかりにします。

今回のマネ風シーンも、アニメーション用にキャラクターリグを リファレンスで読み込んでいます。それでも crypto_asset がパーツごとに割れることはあります。名前空間の付け方、Arnoldの書き出し設定(例:Export Full Paths)、リグ内部のネストなど、環境によって自動判定が期待どおりにならないことがあるためです。

親子関係(Outlinerのグループ)をきれいにしても、crypto_asset はまとまりません。 階層ではなく、名前空間や明示したアセット名を見ています。

なお crypto_material も同様で、親子関係ではまとまりません。 見ているのはアサインされているシェーダー名だけです。顔と手が同じ肌マテリアルなら同色になり、シャツ/ズボンが別マテリアルなら別色になる——マネ風シーンの見え方はその結果です。

本記事でのスタンス

  • 3種類とも出力しておく(容量は1本のEXRに収まる)
  • Fusionではまず crypto_material / crypto_object を使う
  • crypto_asset が1色にならなくても 気にしない
  • キャラ全体を1マスクで取りたくなったら、そのときは Fusion 側で object / material を 複数スポイトで足す やり方でも足りることが多い

キャラ全体を crypto_asset で必ず1色にする手順は、カットにキャラが何体も並ぶようなパイプライン向けの話です。入門のVol.6では深追いしません。

出力後のチェックリスト

レンダリングが終わったら、次を確認してください。

  1. EXRが1本(またはシーケンス)で、マルチパートになっている
  2. 同じフォルダに大量の .json が出ていない —— 出ていたら Sidecar Manifests がオンです。設定を見直して再レンダー
  3. Fusionの Loader で Part を切り替え、crypto_object などのレイヤーが選べる
  4. Cryptomatte ノードを通すと パズルカラー になる(正常)
  5. スポイトでオブジェクト名が 文字列として 選べる(数字だけの羅列になっていない)

まとめ——次はFusionで「スポイト魔法」の番です

ポイント内容
デモシーンマネ風「笛を吹く少年」+チェッカーステージ(Vol.6から切替)
追加するAOVcrypto_object / crypto_material / crypto_asset
出力先Vol.1と同じ マルチパートOpenEXR(ACEScg・32bit float)
Sidecar Manifestsオフのまま(デフォルト)。オンにするとJSON別出力になり管理が面倒
設定場所cryptomatte_aov_cryptomatte ノードの Attribute Editor
crypto_asset が割れるときVol.6では問題ない。主役は object / material
renderSetup不要。グローバルAOVとして足すだけ
書き出しBatch Render でディスク出力

ここまでの作業で、3D側の準備は完了です。

Vol.1で組んだAOVパイプラインに、「どのパーツか」という名札 が1本のEXRに乗った状態になりました。あとはFusionに放り込んで、Cryptomatteノードの スポイトをカチカチ するだけ。

続く Fusion Vol.6 では、このEXRを使って——

  • パズルカラーの画面から、緑のシャツだけ を一瞬で白黒マスク化
  • Vol.4・Vol.5で慣れた ColorCorrectorEffect Mask(緑の三角) で、シャツの色を差し替え
  • 再レンダリングゼロ で、クライアントの「やっぱり色変えて」に笑顔で応える

……という、連載いちばん「コンポって楽しい!」と感じる回が待っています。設定さえ正しければ、Fusion側は驚くほどあっさりいきます。3Dでちゃんと名札を付けておいてよかった、と思う瞬間が必ず来ますよ。

crypto_asset がパーツごとに割れていても、Vol.6の実践(シャツや笛の色変え)は crypto_material / crypto_object で十分 進みます。キャラ全体を1色にする手順は、この入門では深追いしません。

【Resolve Fusion Vol.6】Cryptomatte実践入門|スポイト感覚で狙ったオブジェクトを一発マスク抽出! —— Cryptomatte入りEXRの書き出しが終わったら、こちらへどうぞ。

arnold_cryptoアイキャッチ

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

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

この記事を書いた人

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

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

twitterアカウント
@inopoa1

よろしくお願いします。

コメント

コメントする

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

INDEX