scenario-maya-lookdev について
Maya 2027 と Arnold を使うアーティストやテクニカルアーティスト向けのルックデブスキルです。テクスチャ設定、物理的なマテリアル、表面ディテール、ターンテーブル確認からシーン検査と引き継ぎまでを扱います。
主な機能
- 01テクスチャの色空間と接続を検査
- 02マテリアルの構築と割り当て
- 03ディスプレイスメントと表面ディテールの設定
- 04肌、ガラス、車の塗装シェーダーを作成
- 05ターンテーブルと引き継ぎレポートを出力
活用シーン
- 01製品やキャラクターモデルのマテリアル開発
- 02テクスチャ接続やマテリアル値の問題調査
- 03法線マップとディスプレイスメントの比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-maya-lookdevインストール後、Claude Code で/scenario-maya-lookdevを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/critique.mdexpert-notes.mdgui-paths.mdprocedures.mdsources.mdscripts/mx_shade.py詳細
Maya 2027 でのルックデブ(Arnold)
エキスパートによるルックデブとは、照明を何に変えても耐えられるマテリアルを作ることです。正しいデータを入力し(すべてのマップを正しい色空間で、正しいプラグに接続し)、物理的に意味のあるベース値を設定し(金属の色は実測値、ガラスの色は深度で調整し、散乱は実寸に合わせる)、そのうえで意図的な不完全さを加え、中立的なターンテーブルで参照用の球体と並べて評価します。レンダーごとに変更は一つだけです。レンダーを確認する前に、作業を先へ進めてはいけません。ここで名前を挙げた関連スキルが利用可能なスキルに見つからない場合は、ユーザーにインストールを依頼してください(npx skills add scenario-labs/skills --skill <name>)。無人で作業を続ける場合は、ツールのスキーマに従って進め、不足している点を明記してください。
必須の背景知識: scenario-maya-expert(実行チャンネル、レビューループ、2027 年版特有の注意点)。
ステータス(2026-09-24): scripts/mx_shade.py はまだ Maya で実行していません。オフラインチェックは 122 件合格しました。Maya レイヤーは偽の maya.cmds に対して実行したもので、ロジックのみを検証しています。Maya をインストールしたら、tests/code/maya-lookdev/run_all.sh を実行し、probe_lookdev.json に基づいて属性テーブルを修正してください。
方針(エキスパートとの差を生むポイント)
- すべてのマップは、色空間、グレースケール用プラグ、接続先の 3 点で決まります。 Sarkamari の表 [ZtEiVa3MPLg 00:27:44]。J Hill の 2 つの質問は、「色空間は何か、白黒の画像か」[mpk6IurOWbs 00:21:43] です。ベース、サブサーフェス、エミッションの色はカラーとして扱います(8/16 ビットは sRGB、EXR はリニア Rec.709)。それ以外はすべて Raw です。Alpha Is Luminance がオフの
outAlphaからはデータが読み取られません(Raycast [vPHhVrxxThU 00:19:14])。Maya 2027 のルールでは.tx、.hdr、.exrは Raw として扱われるため、ベースカラーの.txや EXR は誤った状態で読み込まれます。色空間を上書きし、Ignore Color Space File Rules をオンにしてください(Maya 2027 のヘルプ)。 - ACEScg では、HDRI は Raw ではなくリニア Rec.709 です。 J Hill と Raycast は Raw を設定していますが、これはレンダリング空間がリニア sRGB の場合にのみ正しい設定です。Arnold の ACES ページでは、リニア HDRI を ACEScg として読み込むのは誤りとされています。リニア sRGB の表から入力した色もレンダリング空間に変換されます[追加:スウォッチの値はレンダリング空間の数値です。Maya 2027 のヘルプ]。
- 金属の値は好みではなく、データです。 OpenPBR のベースカラーは F0、スペキュラカラーはエッジの色合い F82 で、どちらも Arnold の表に基づきます。金属では IOR は何も変えません(Arnold OpenPBR ドキュメント、公式イントロ [tEUiIBApw-U 00:02:51])。ジェネラリストはスペキュラカラーを白のままにしがちです。
- スケールは物理です。 サブサーフェスの半径とトランスミッションの深度は、ワールド空間での長さです。ガラスの色は彩度ではなく深度で決まります。色合いは薄くし、深度を小さくして色を濃くします(Arvid [cpMBRIWwghg 00:18:13])。実寸では、肌の散乱距離は約 1 mm です(J Hill、cm 単位でスケール 0.1 [mpk6IurOWbs 00:18:31])。
- 完璧すぎると CG に見えます。「反射を見れば分かります」。 ラフネスに範囲を持たせたノイズ、控えめなマイクロバンプ、コートの法線に加える車の塗装のうねりを使い、ベースには加えません(Arvid [cpMBRIWwghg 00:35:49、00:43:25])。J Hill の「微妙な変化」を重ねるレイヤーも参考にしてください [mpk6IurOWbs 00:23:24]。磨かれた金属とガラスにも、汚れや指紋によるラフネスを加えます。これはドキュメントにも載っている例です(OPBR § Specular Roughness、Arvid [cpMBRIWwghg 00:25:11])。ただし、参照と同じくらいの清潔さを保ちます。
- レイヤーシェーダーを組むときは、まずすべてのローブを無効にしてから、一度に 1 つずつ追加します。 レンダーごとに変更は 1 つか 2 つにします(Arvid [cpMBRIWwghg 00:36:52]、J Hill [mpk6IurOWbs 00:51:43])。
- ヒーローショットのクローズアップにはディスプレイスメントを使い、小道具にはノーマルマップを使います。 ノーマルマップを使った鼻について、J Hill は「平坦で、フェイクに見える」と述べています [mpk6IurOWbs 00:28:39]。ゼロを 0 としてマイクロディテールを加算できるように、浮動小数点 EXR をベイクします。ゼロ値を一致させ、境界にパディングを加えてください。
- ルックデブ用リグで評価した後、参照画像と同じライティングでも確認します。 カメラにはクローム球、グレー球、ディフューズチャートを載せ、アセットを回転させてから HDRI を確認します(Raycast [vPHhVrxxThU 00:05:11、00:07:43])。ヒーロープロダクトは写真を基準に評価し、まず写真と同じライティングにします(Arvid [cpMBRIWwghg 00:02:44、00:36:21])。Painter からの転送では、Painter の HDRI と焦点距離を使用します(Sarkamari [ZtEiVa3MPLg 00:13:10])。
最初に決めること
| 入力 | 変更点 | 指定がない場合のデフォルト |
|---|---|---|
| ターゲット | Arnold の静止画またはシーケンスか、ゲームエンジンか(書き出し用にシェーディングし、エンジン内で評価します) | Arnold |
| シェーダーモデル | 新規アセットには OpenPBR(2026年以降のデフォルト、MaterialX と USD に対応)を使用します。シーン、Painter の「Arnold (AiStandard)」書き出し、またはパイプラインで使用されている場合は aiStandardSurface を使用します | OpenPBR |
| メインまたは背景 | マテリアルごとのシェーダー、ディスプレイスメント、ブレイクアップを使うか、テクスチャ付きシェーダーを1つ使うか(Raycast [vPHhVrxxThU 00:11:20]) | フレームいっぱいに表示される場合はメイン |
| テクスチャソース | Painter のプリセット、法線の規約、UDIM、ビット深度、ディスプレイスメントのゼロ値とスケール、AO を使用する想定かどうか | OpenGL 法線、AO は未使用 |
| レンダリング空間 | mx_shade.cm_info()。型指定された色を変換します | ACEScg、Maya のデフォルト設定 |
| スケール | SSS、透過、ディスプレイスメント、ノイズのスケール | cm 単位の実寸 |
| ルックの参考資料 | マテリアルごとの写真。HDRI:プレート用にはニュートラルなスタジオ、シーケンスでカラーグレーディングされた HDRI(Raycast [vPHhVrxxThU 00:01:58])、転送用には Painter のもの | プロシージャルなスタジオ HDR[追加] |
| カメラ | 85 mm のポートレートレンズ(J Hill [mpk6IurOWbs 00:05:10])。製品にはより長い焦点距離を使用します[追加] | 85 mm、24 + 24 フレーム |
ワークフロー
すべてのステージは、scenario-maya-expert の mx_run.py --plugins mtoa を通じてヘッドレスで実行します。
import mx_shade as sh。Arnold RenderView は GUI 専用です。バッチレンダーを反復し、開いて確認してください。
- 受け入れ。
mx_validate.validate(profile="model")、UV のmx_audit.audit(mesh)(すべての面がマッピングされていること、UDIM タイルがクリーンであること)、バウンディングボックスから実寸を確認します。SSS と透過には、閉じた外向きのメッシュを使います(Arnold のドキュメント)。ゲート:検証に問題がなく、UV が完全で、サイズがリファレンスと一致していること。 - ルックデブシーン。
ld = sh.lookdev_scene(["asset_GRP"], hdri=path, frames=24):ターンテーブル用ロケーター、HDRI の幅に合わせたスカイドーム(上限 4096)、線形 Rec.709 としてタグ付けした HDRI、二次レイからリファレンスストリップを非表示にしたカメラを設定します。ゲート:フレーム 1 で、クロームボールに HDRI が正しい向きで映り、グレーボールがニュートラルで、チャートのニュートラル 5 パッチに近いこと。 - マテリアル計画。 ヒーローアセットではマテリアルごとにシェーダーを 1 つ作成し、
<asset>_<part>_MTL/_SGの名前を付けます。名前テーブルで割り当て、リモデル後もシェーダーを維持します(Arvid [cpMBRIWwghg 00:01:37])。ゲート:すべてのメッシュがデフォルトのシェーディンググループから外れていること。 - テクスチャの接続。
ts = sh.parse_texture_set(folder);sh.build_material(ts, "case", meshes=[...], texture_set="watch_case")。オプション:normal_modeは aiNormalMap(デフォルト)、bump2d、hybrid。Painter のベイクには 2027.1+ でtangent_space="mikk"を使い、ベベルで A/B 比較します[要確認]。ao="multiply"は Painter またはリアルタイムの見た目に合わせる場合にのみ使用します。負荷の高いアセットやバッチ用には .tx を事前にベイクします(TX Manager またはmaketx)。ファイルノードはソース画像と色空間のままにします(Raycast [vPHhVrxxThU 00:13:04])。ゲート:sh.verdict(sh.lint_scene())["pass"]。Painter の HDRI と焦点距離を使ったレンダーが Painter のスクリーンショットと一致すること。 - ベース値を一度に 1 ローブずつ設定。
saved = sh.isolate_lobes(shader, keep=("base",))を実行してレンダーし、スペキュラー、コートなどを追加します。テーブルのマテリアルにはsh.apply_preset(shader, "steel_polished")を使います。ゲート:最終サンプル数で素材ごとのクロップを確認し、写真とハイライトのサイズおよびエッジの色味を比較すること。 - 表面のディテール。 プロップには法線マップ、ヒーローの有機物にはディスプレイスメントを使用します:
sh.add_displacement(sg, "disp.exr", meshes, scale=s, zero=0.0, iterations=2)(最終版では 3~4)。ゲート:ポリゴン予算が出力されていること、黒くクリップしたパッチがないこと、法線とディスプレイスメントのクロップを A/B 比較すること。 - ばらつき。
sh.roughness_breakup(shader, lo, hi)、sh.smudge_roughness(shader)(スキャンまたはセルノイズを上乗せ)、sh.noise_bump(shader, height, scale)、sh.coat_waviness(paint)を使用します。ダイヤル、インデックス、ケース部品などのオブジェクトごとのマスクは、追加のテクスチャを使わずmtoa_constant_ユーザーデータとして設定します:sh.user_mask(shapes, "mask")(Arvid [cpMBRIWwghg 00:23:04])。ゲート:ターンテーブル上でハイライトがパネル全体にわたって崩れながら移動し、揺れないこと。 - 特殊マテリアル。
sh.skin(...)、ガラスのプリセットとsh.set_transmission_depth、sh.car_paint(...)、sh.hair_shader(...)を使います。確認事項はreferences/critique.mdを参照してください。接触または重なり合う透過媒体(ガスケット上のクリスタル、ガラス内の液体など)には、Dielectric Priority を設定します。値が大きい方が優先され、ガラスは 3、内包物は 2、液体は 1 です(OPBR § Dielectric Priority)。ゲート:dielectric_priorityのリントに問題がないこと。 - ターンテーブルでのレビューと引き渡し。
sh.render_frames([1, 7, 13, 19, 25, 31, 37, 43], out)で PNG と一覧シートを出力します。クリティークに基づいて評価します。sh.handoff_report(path)を実行し、新しいバージョンを保存します。ゲート:リントに合格し、一覧シートをレビュー済みで、未検証項目のリストが記載されていること。
数値
| 項目 | 値 | 相対値の基準、出典 |
|---|---|---|
| スチール F0 / F82 | 0.669 0.639 0.598 / 0.789 0.823 0.870 | リニア sRGB、Arnold OpenPBR テーブル(METALS_OPENPBR 内の 12 種の金属) |
| 肌 | サブサーフェス 1、半径スケール (1, 0.35, 0.2)、IOR 1.4、半径 1 mm | J Hill [mpk6IurOWbs 00:17:25];ドキュメントの例の 3.7 mm はより深い |
| 肌の油分 | コートの粗さ約 0.1、反転した粗さからマスクを生成 | J Hill [mpk6IurOWbs 00:32:49] |
| 毛穴の凹凸 | アリゲーターセルノイズ、ディスプレイスメントの振幅 0.003〜0.004 | J Hill [mpk6IurOWbs 00:34:48] |
| サブディビジョン | catclark、作業中は 2、最終段階では 3〜4;各レベルでポリゴン数は 4 倍 | J Hill;Arnold サブディビジョンのドキュメント |
| ディスプレイスメントのゼロ値 | 浮動小数点ベイクでは 0、中間グレーのマップでは 0.5 | J Hill [mpk6IurOWbs 00:26:59] |
| ガラス | IOR 1.5、粗さ 0、わずかに着色、深度はオブジェクトのサイズに近い | Arvid [cpMBRIWwghg 00:17:40];[追加] 深度の初期値 |
| 分散 | 平坦で平行な面を持つ結晶ではオフ(目に見える色縁なし)[追加した光学情報];ファセットのある宝石や鋭いベベルでは、素材のアッベ数に応じた小さい値 | OPBR「宝石のみ」;ダイジェスト P9 |
| ゴム | リニアベース 0.01〜0.04、smoothstep の範囲を使って粗さを 0.2〜0.4 に設定 | Arvid [cpMBRIWwghg 00:06:25, 00:10:47] |
| 革 | アリゲーターセルノイズのバンプ、スケール 400〜500、非常に控えめ、粗さ約 0.2 | Arvid [cpMBRIWwghg 00:04:33] |
| ヘアライン金属 | 粗さ約 0.15、異方性を上げる、スペキュラーサンプル 3、回転マップの mip バイアス -8、スムーズタンジェント + 1 回の反復 | Arvid [cpMBRIWwghg 00:15:43];SS ドキュメント |
| 自動車塗装 | フレークのスケール 0.001〜0.025、フレークの粗さ 0.2、コート 1、3、25、80、200 のコート法線ノイズを混合し、強度は約 0.01 | Arvid [cpMBRIWwghg 00:39:01 to 00:47:46] |
| 薄膜 | Standard Surface は 0〜2000 nm;OpenPBR はマイクロメートル単位、1 を超えると色が薄れる | Arvid [cpMBRIWwghg 00:31:47];[tEUiIBApw-U 00:12:35] |
| 髪 | メラニンはブロンド 0.2、茶色または赤毛 0.5、黒髪 1;粗さ 0.2;IOR 1.55;シフト 0〜10;ディフューズ 0;色合いは白 | Arnold Standard Hair のドキュメント |
| スカイドームの解像度 | HDRI の幅(デフォルト 1000) | Arnold ライトのドキュメント |
品質ゲート
- コード:
sh.verdict(sh.lint_scene())["pass"](エラーゼロ)。リントでは、テクスチャの契約(スペース、プラグ、UDIM、法線ルート、ファイルの欠落、.tx)、物理的な妥当性(ウェイト、F82、ガラスの色味と深度、誘電体の優先度、薄膜、不透明度、異方性、汚れ)、細分化とディスプレイスメント、および衛生状態を検証します。ルール:references/critique.md。 - ビジュアル: ターンテーブルシートとクロップを、
references/critique.mdに基づいて評価します。ブレイクアップが見えて動いていること、金属のエッジの色味、厚みに応じて深まるガラスの色味、耳のバックライト、ワックスのようでない鼻を確認します。サンプル数を増やしても残るファイアフライはデータです(Raycast [vPHhVrxxThU 00:33:43])。
よくある間違い
| 間違い | 見た目 | 修正 |
|---|---|---|
| ラフネスまたは金属マップがsRGB | 光沢のあるプラスチック、またはくすんだ金属 | Raw + Ignore Color Space File Rules |
| outAlphaでグレースケール化し、Alpha Is Luminanceがオフ | マップの効果がない | outColorRを使うか、Alpha Is Luminanceをオンにする |
| ベースカラーの.txまたはEXRにRawルールが適用されたまま | 色あせた色、または彩度が高すぎる色 | sRGB(8/16ビットソース)またはリニアRec.709 |
| ACEScgでHDRIがRaw | 彩度が高すぎるライティングと反射 | リニアRec.709入力スペース |
| 法線を通常のバンプ、またはシェーダーに直接接続 | 凹凸が不自然、または平坦な法線 | aiNormalMap、またはbump2dのTangent Space Normals |
| DirectX法線をOpenGLとして読み込む | 片方の軸で起伏が反転する(へこみが出っ張りに見える) | aiNormalMapでinvertY(bump2dではGを反転) |
| Smooth Mesh PreviewとArnoldの反復を併用 | レンダリング時間が急増する | displaySmoothMesh 0 |
| ディスプレイスメントのゼロ値が誤っている | オブジェクトが膨張または縮小する | 0.5の中間グレーマップ、0のフロートベイク |
| 境界のパディングがない | ディスプレイスメントレンダリングに黒い穴ができる | 最大ディスプレイスメントに基づいてパディングする |
| 透過色の彩度が高すぎる | 黒く、インクのようなガラス | 色味を弱め、深度を下げる |
| 同じ優先度(0)でガラスまたは液体が重なっている | 重なった部分で屈折が正しくない | Dielectric Priorityを設定し、値の高い方を優先する |
| ラフネスが0または面が多角形の状態で異方性を設定 | ブラッシングが見えない、または段差ができる | roughness > 0、滑らかな接線、1反復 |
| ベース法線に車の塗装のようなうねりがある | コートの反射が完全に直線のままになる | コート法線のみに適用する(Arvid [cpMBRIWwghg 00:43:25]) |
| レイヤーシェーダーを作成したが、ディスプレイスメントが古いSGに残っている | ディスプレイスメントが消える | 新しいSGに再接続する(J Hill [mpk6IurOWbs 00:49:07]) |
引き継ぎ
- 受け取り元 scenario-maya-retopology-uv:
validate(profile="model")に合格したバージョン、完了した UV(0-1 またはクリーンな UDIM)、明記されたテクセル密度、チャンネル名と法線の規約およびタンジェント基底を記載したベイク。ゼロ値とスケールを記載したディスプレイスメント EXR。Substance Painter から:テクスチャ、プリセット名、法線フォーマット、UDIM フラグ、Painter に表示された HDRI。scenario-maya-groom から:aiStandardHair でシェーディングするための説明。 - 引き渡し先 scenario-maya-lighting-rendering:名前付きのマテリアルとシェーディンググループを含む
<asset>_lookdev_v###.ma(ソースは決して上書きしません)、handoff_report()JSON(マテリアル、テクスチャ、色空間、.tx の状態、ディスプレイスメント、合格判定)、ターンテーブルシート、サンプリングに関する注記(SSS、透過深度、異方性、デノイザーから保護するフレーク)、未検証項目の一覧。 レンダー設定、AOV、ライトリグ、デノイズはライティング側が担当します。
Maya 2027 の注意点
- OpenPBR はデフォルトのシェーダーです。Standard Surface からの移行(
sh.port_standard_to_openpbr):薄膜 nm をマイクロメートルに変換、エミッションウェイト 1 を 1000 nits に変換、SSS の半径とスケールの役割を入れ替え、シーンをファズに変換、分散には 0 より大きいスケールが必要、金属の色は F82 テーブルから選び直します。「Convert All Standard Surface to OpenPBR Surface」はネットワーク内のシェーダーをスキップします(MTOA-2560):変換後に lint を実行してください。 - 色名:2026.2 以降、デフォルトの入力は
sRGB Encoded Rec.709 (sRGB)です。リニア sRGB には 2 通りの表記があり、「Utility - Raw」は ACES 1.x の命名です。常にsh.space_name(role)を使用してください。レンダリング空間を変更した後は .tx を再生成してください(Brejon)。 normal_map.tangent_space_typeは mikk(MtoA 5.6.1.1、Maya 2027.1)です。interior_setはsss_setnameに置き換わります。5.6.0 での OpenPBR の薄膜エネルギーの変更により、古いアセットでは色相が変わる場合があります。Standard Hair のscattering_mode(5.6.0)。- Maya IPR は MtoA 5 以降では動作しません(Arnold RenderView)。ライセンスがない場合、コマンドラインレンダーにはウォーターマークが入ります。「Use Autobump in SSS」は非推奨です。デフォルトで有効になったネストされた誘電体により、従来のガラスと液体を含むシーンの見え方が変わります。
参考資料
references/expert-notes.md:専門家ごとの詳しいメモとタイムスタンプ、意見の相違、決定者。上記で扱われていないマテリアルや判断がある場合に読み込んでください。references/procedures.md:テスト済みの手順と引き継ぎへの接続方法。シェーディングコードを書く前に読み込んでください。references/critique.md:ターンテーブル、クロップ、lint レポートの評価基準。各ゲートで読み込んでください。references/gui-paths.md:コンピューター操作エージェントまたは人間向けの Hypershade、Attribute Editor、Arnold、Painter のパス。references/sources.md:情報源、認証情報、URL、タイムスタンプ。scripts/mx_shade.py:ツールキット(すべての呼び出しは docstring に記載されています)。