mcpField
S
scenario-maya-lighting-rendering

scenario-maya-lighting-rendering

github.com/scenario-labsクリエイティブ・メディア1.2k175 回インストール1 日前に更新
リポジトリ

scenario-maya-lighting-rendering について

Maya 2027 と Arnold の制作チーム向けのライティング・レンダリングスキルです。物語上の狙いや参照画像をもとに照明を計画し、AOV でノイズを分析して、シーンリニア EXR の納品を準備します。

主な機能

  1. 01製品やキャラクターの照明リグを計画
  2. 02フレームと照明バランスを分析
  3. 03AOV でノイズを特定
  4. 04ライトグループとレンダーパスを設定
  5. 05EXR 出力とレンダー納品を構成

活用シーン

  1. 01製品やキャラクターのショットに照明を設定
  2. 02参照画像と照らして照明や画面構成を確認
  3. 03レンダーバジェット内でノイズを調べサンプリングを調整

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-maya-lighting-rendering

インストール後、Claude Code で/scenario-maya-lighting-renderingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
critique.md
expert-notes.md
gui-paths.md
procedures.md
sources.md
scripts/
mx_light.py

詳細

Maya 2027 のライティングとレンダリング(Arnold)

熟練したライティングとは、ストーリー上の判断を測定可能にすることです。視線をどこに誘導する必要があるかを把握し、1つの支配的なライトであらゆる形を作り、値を奥から手前へ構成し、ライトグループと数値でそれを実証してから、目で最終確認します。レンダリングはエンジニアリングです。サンプラーに手を加える前に AOV からノイズの発生源を見つけ、各パスからビューティーを再構築できるシーンリニア EXR を出力し、トーンマッピングしたビューで評価します。ここで名前が挙がっている関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add scenario-labs/skills --skill <name>)。無人で処理を進める場合は、ツールのスキーマに基づいて作業を続け、不足があることを明記してください。

必須の背景知識: scenario-maya-expert(実行チャンネル、レビューの反復、2027 バージョンの注意点)。

ステータス(2026-09-24): scripts/mx_light.py はまだ Maya で実行されていません。オフラインチェック 138 件は合格しました(python3 + numpy)。Maya レイヤーでの実行は、偽の maya.cmds に対してのみ行いました。Maya をインストールしたら、tests/code/maya-lighting-rendering/run_all.sh を実行し、その後 probe_lighting.json をもとに名前を修正してください。

方針(熟練者ならではの視点)

  • まずストーリーとターゲットを定め、暗くすることで明るくします。 ボタンを押す前に「何を伝えようとしているのか?」を考えます。ターゲットはデフォルトで顔とは限らず、手やドアの場合もあります(KT [00:16:50] [00:15:49];TZ-C [00:10:51])。被写体を明るくするには、周囲を暗くします。被写体を押し上げると白飛びします(KT [00:30:31])。
  • 1つのライトを他より強くします。 よくある失敗は「同じ強度の光源が多すぎること」です(BR-B ch6 Balance)。キーライトよりリムライトが強いのも失敗です。「小さくて強い」のは放射輝度であり、エネルギーが増えたわけではありません(JHILL [00:13:47])。Arvid はキーライトを最も強く保ち(ARV-L [00:06:51])、Brejon にとってはキーライトが主要な形状を作るライトです(BR [00:23:36])。判断基準:形状を最もよく見せるキーライトを選び、被写体のマスク上で支配的なグループを1つだけ測定します。
  • 顔の軸を基準に測り、キーライトを奥側に置きます。 顔の奥側を照らします(BR-B ch8.5)。レンズ軸を基準に測ると、顔が向きを変えたとき、キーライトは正面から当たります[追加テスト]。カメラ側にはライトを置きません(BR [00:13:46])。フィルライトは正面寄りで、低い位置から当て、彩度を高め、キーライトのおよそ2倍のサイズにします(BR [00:26:54] [00:27:59])。アンビエントライトは使いません。
  • 値は奥から手前へ構成し、すべての被写体の背後にコントラストの変化を作ります。 遠景の黒は持ち上げてフラットにし、前景は最も暗く、最もコントラストを強くします(TZ-C [00:08:38])。影の背後には光を、光の背後には影を置き、暗い部分に暗い部分を重ねないようにします(BR [00:38:56] [00:40:02])。遮光板でライティングにビネットを加えます(BR-B ch6 Vignetting)。
  • まずリファレンスを用意します。磨き上げた製品では、反射が製品そのものです。 同じ被写体と状況を写した実際の写真を用意し、素材を評価する前にライトの配置を再現します(ARV-C [00:02:44] [00:36:21])。Brejon はリファレンスなしで2日を無駄にしました(BR [00:08:13])。各ソフトボックスは、形状を定義する面の反射視線上に配置します(reflection_placement)[追加]。黒いフラッグで暗い帯を作ります。柔らかい光にするには、大きくします(JHILL [00:08:26])。
  • まずノイズのある AOV を特定し、そのサンプラーだけを上げます。 不適切なレイは時間を浪費し、ノイズも残します(SMP § Removing Noise)。ピクセルあたりのレイ数 = AA² x samples² なので、AA を上げる場合は他の値を下げます(ARV-T [00:07:12])。Maya 2027 ではグローバルライトサンプリングを使用します。サンプル数は1つだけで、CPU では4以下にします。ライトごとのサンプル数が影響するのは、ドーム、ディスタント、およびローカルモードのライトだけです(SMP § Limitations)。最もノイズが多いライトは発光ライトです(LGT § Mesh Light vs Emission)。
  • ルックの90%はビューティーで作り、グレードはライトに反映します。 コンポジットで形状を作ることはできません(KT [00:45:39])。細かな調整にはライトグループを使います(SARK [00:11:28])。「私は必ず値を戻します」(BR-B ch8 Final result)。ライトカラーの乗数として反映します(BR [01:03:30])。
  • ACES ビューで評価し、シーンリニアで出力します。 トーンマッピングなしでは露出不足になり、「50個のライトからなる複雑なリグ」が必要になります(BRJ-CM Ch.1)。EXR では出力変換をオフにします(CM)。ACEScg では、リニア HDRI は Raw ではなくリニア Rec.709 です(CM § ACES Workflow)。

まず決めておくこと

入力項目変更内容指定がない場合のデフォルト
成果物:静止画かシーケンスか、サイズ、範囲サンプリング、デノイザー、予算静止画;ブロックサイズは 320 px、プレビューは半分のサイズ
ストーリーと注目対象すべてのゲート製品:ダイヤルまたはロゴ;キャラクター:話している顔
参照画像ライトの配置、値brief["references"] にある、同じ被写体と状況の写真;批評では参照画像がない場合に警告します
マシンデバイス、デノイザーmacOS:CPU のみ。Arnold GPU と OptiX は使用せず、OIDN を使用します
ムード、アートディレクション顔の明部と影の比率、対称性「ドラマチック」、2 ストップ[MOOD_RATIO_STOPS を追加];自然で非対称(BR-B ch6 Planet 51)
継続性の取り決め許可されるショット調整、カメラ軸ごとのマスター 1 つ保守的:露出、変換、表示状態(BR [00:37:17])
カラーパイプラインレンダリング空間、ビュー、納品形式Maya のデフォルト:ACEScg、ACES view、EXR ACEScg half
コンポジットの要件AOV プリセット、ライトグループ(最大 16 個)RGBA、Z、被写体マスクにグループを使用;コンポジター向けに comp プリセットを使用
レンダリング予算設定の段階プレビューで計測し、最終レンダリングの前に外挿します
DOF とモーションブラー3D かコンポか、鮮明さを保つ対象髪、ガラス、重なり合う奥行きには 3D(BR [00:54:45]);ボケには小さく明るい光源が必要です(BR [00:55:51])

ワークフロー

scenario-maya-expert の mx_run.py --plugins mtoa(import mx_light as L)を使ってヘッドレスで実行します。フレーム分析は通常の python3 で実行します。Arnold RenderView は GUI 専用です。バッチレンダーを繰り返し、その結果を開いて確認します。

  1. 受け入れ。 ショットでは mx_validate.validate(profile="shot") を実行し、アセットでは scenario-maya-lookdev の handoff_report を使います。L.cm_audit_scene() を実行し、参照を添えて概要(L.default_brief、手順 P1)を作成します。キー、リム、暗い帯がそれぞれどこにあるかを読み取ります。GATE:検証失敗なし、カラー監査合格、ストーリー、目標、参照を記載済み。
  2. 計画とブロック。 L.plan_product_rig(name, bb_min, bb_max, cam_pos) または L.plan_character_rig(char, head_c, head_size, cam_pos, face_forward) を実行し、 L.rig_plan_checks(plan)、L.apply_rig(plan) を実行します。Brejon の順序は、実用灯、キー、ラップ、リム、トップです。最初のレンダーから雰囲気を作ります(BR [00:19:46] [00:33:29])。グレーでレンダーし(with L.grey_shading(0.18)、プリセット block)、L.light_group_sheet(exr, png) を開きます。シャープにする必要がある対象の L.view_depth_range を使い、L.dof_plan(near, far, focal) から絞りを決めます。GATE:キーはアップステージ、ラップはレンズ軸から外し、グループは 16 個以下。各ライトの単独表示で役割を果たしていること(BR [00:25:14])。DOF プランを維持できること。
  3. 測定に基づいて形状とバランスを整える。 r = L.render_shot(out, cam, masks={"subject": [root]})、 rep = L.analyze_frame(png=r["png"], exr=r["exr"], brief=brief)、 L.write_report(rep, out) を実行します。指摘事項に上から順に対応します(参照、視線の流れ、値、分離、バランス、顔、色)。GATE:失敗なし。すべての警告を修正するか、理由を添えて維持します。references/critique.md を使って annotated.png、squint.png、単独表示シートを評価します。
  4. マスターからショットへ(シーケンス)。 カメラ軸ごとにライティングのみのマスターを作成し、各ショットに参照として読み込みます。まず初期設定のままレンダーし、最も広いショットから開始します。調整は契約の範囲内に限り、記録します(手順 P13、BR-B ch8)。GATE:L.compare_frames でマスターおよび前後のショットと比較します。特徴的な要素(キャラクターのリムなど)がすべてのショットにあること。
  5. ノイズと予算。 pair = L.render_seed_pair(out, cam)(デノイザーをオフ)、 L.noise_pair(pair["a"], pair["b"])、L.next_step(...)、または L.noise_loop(render_pair, settings) を実行します。ファイアフライはサンプル数ではなく L.FIREFLY_PLAYBOOK で対処します。チェーンの最初に OIDN を置き(L.set_denoiser(first=True))、シーケンスには noice を使います。OIDN はボックスフィルターを強制し、フレーム全体をデノイズします(AOV § OIDN)。詳細クロップはフレーム全体から切り出し、detail_loss の参照はボックスフィルターでレンダーします。サンプル数を削減する前に L.extrapolate_time、L.sequence_budget、L.TIME_SINKS を確認します。GATE:選択したデノイザーで、概要の目標以下のビューティーノイズであること。ヒーローのディテールで L.detail_loss が約 0.8 以上であること。所要時間が予算内であること。
  6. パスとコンポジットへの引き継ぎ。 L.set_light_groups(one_dict)、L.setup_aovs("comp")、 L.add_mask_aov、L.setup_exr_driver() を実行します。L.check_sums、L.group_contract、L.comp_recipe を確認します。コンポジットのメモは L.grade_to_light を通じて返します。GATE:グループとデフォルト設定を使ってビューティーを再構築したとき、誤差が 1% 以内であること。要求したパスが空でないこと。EXR が単一パートで、zip 圧縮、ハーフカラー、float の Z/P/N であること。
  7. 最終レンダーと納品。 Render Setup レイヤーをテンプレートとして使い(L.make_layer、 L.export_render_setup)、-rst を指定して L.render_cmd(...) を実行するか、各フレームで L.render_shot を実行します。.tx は事前にベイクし、自動 TX をオフ、既存ファイルの使用をオンにします(ARV-T [00:14:44])。L.licence_check_cmd() を実行し、次に L.render_env(final=True) を設定して、ライセンスのないバッチがウォーターマークを付けずに中止するようにします。フレーム全体を 1 枚再タイムし、終了コードとファイルを確認して、批評し、新しいバージョンを作成します。GATE:フレームがディスク上にあり、レポートが作成済みで、未検証項目の一覧が明記されていること。

数値

項目値基準、出典
ピクセルあたりのレイ数AA² x サンプル数²:AA 3、ディフューズ 2 = 36;AA 6、スペキュラー 6 = 1296SMP § Camera (AA)
グローバルライトサンプル数CPU では 4;ドームライトまたは遠方ライトが支配的な場合は 1 または 0SMP § Best setting
アダプティブAA 3~4、最大 AA 20、しきい値 0.015[2027 年のデフォルトを要確認];プレビューではオフSMP
モーションブラー、被写界深度AA は約 12、被写界深度が強い場合は最大 20、セカンダリは 1ARV-T [00:20:29]
レイの深度ディフューズは製品や屋外で 1~2、屋内で 3~4;ガラスまたは相互反射する金属以外ではスペキュラーは 2ARV-T [00:05:59]; SARK [00:08:27]
スカイドームの解像度ライティングのみなら 1k;クロームまたはガラスに反射させる場合は HDRI の幅(上限 8k)ARV-T [00:07:54]; LGT § Resolution
被写界深度aiApertureSize = 半径(ワールド単位)= 焦点距離/(2N);鮮明な深度は約 c d / 半径、c = フレーム幅/1200[追加];同じ構図なら焦点距離が変わっても深度は同じLGT § Aperture Size; L.dof_plan
クランプ間接光は 10 以上;ピクセルクランプは 30~50BRJ-CM Ch.1 Range
ライト AOV最大 16;Brejon は 30 灯に 9 を使用AOV; BR [01:12:25]
noice強度 0.45(テクスチャは 0.2、GI と SSS は 0.8)、-ef は最大 2、macOS では -t を使用しないAOV § Arnold Denoiser
ACES ビューシーン値 1.0 は約 0.81 に表示される;16 を少し超えると白になるMLC [00:02:13]
ラップキーライトのサイズの 2 倍にして、強度を下げる;レンズ軸から 30 度以上ずらす[しきい値を追加]BR [00:27:59] [00:13:46]
初期露出E = log2(pi d² target)、距離 d にある正規化されたエリアライト;距離 1 m の場合、cm 単位で 15[追加]LGT § Exposure、§ Normalize に基づく;Arvid の値は 15~20(ARV-L [00:03:58])

品質ゲート

  • コード: rig_plan_checks がパスすること。scene_checks に失敗がないこと(ambient、Samples 0、ACEScg 下の HDRI Raw、ドームの解像度、グループ名の誤記、キーライトの上手側配置)。render_settings_report でデノイザー、TX、デバイスについて回答済みであること。analyze_frame の判定がパスすること。check_sums が OK であること。cm_audit がパスすること。ノイズの反復処理が、理由を明示して停止していること。L.THRESHOLDS は[追加済み]です。承認済みのフレームでキャリブレーションしてください。
  • ビジュアル: ビューティーを原寸と squint.png で参照画像の横に並べます。annotated.png(顕著性のピーク、赤の白飛び、青の黒つぶれ)も用意します。単独表示シート、-5 から +5 ストップのブラケット、前後のカットを含むシーケンスも用意します。references/critique.md に従い、順番に評価してください。

よくある間違い

間違い見た目修正
カメラからキーライトを測定する向きの変わった顔に正面から平坦なキーライトが当たるplan_character_rig が顔の軸から測定します
レンズ軸上からフィルを当てる、または環境光を使う顔が平坦になり、コアシャドウがない前方寄りから軸を外して回り込ませます。ambient を削除します(Arnold では非対応です)
リムライトをキーライトと同じか、それ以上にする2 つの光源が競合するリムライトをキーライトより最低 0.5 ストップ弱くします。rim_equals_key
ノイズ対策で AA やすべてのサンプラーを上げる処理時間が急増し、ノイズは残るnoise_pair を実行してから、サンプラーを 1 つだけ調整します。AA はアルファ、ブラー、反射拡散用です
エリアライトのライトごとのサンプル数を上げるGLS では効果がないグローバルのライトサンプル数を調整します。ライトごとの設定はドーム、ディスタント、またはローカルモードに限ります
発光ジオメトリをライトとして使うサンプル数を増やしてもノイズが取れないエリアライトまたはメッシュライト(LGT)を使います
ライトグループ名の誤記空のパスになるが、エラーは出ない1 つの dict を使います。group_contract、check_sums を実行します
バウンスカードや発光平面にライトグループを設定するRGBA_cards が空になるグループはライトに設定します。カードはそのライトのグループに属します。発光は O です(発光 AOV、LPE C.*O)
習慣で絞り値を決める(「製品撮影なら f/11」)製品の半分がぼやけるL.dof_plan を使います。シャープにしたい対象に、より垂直に近いカメラアングルを選びます
クロームに 4k HDRI が映り込むのに、ドームを 1k にする反射がぼやける解像度を HDRI の幅に合わせます
ACEScg 下で HDRI や EXR に Raw ルールを適用したままにする彩度が高すぎ、ライティングも不正確になるリニア Rec.709 の入力色空間を使います
以前のライト値を 2027 年にそのまま流用するレンダーが暗くなり、リグが大きくなるACES ビューを通して露出を再評価します

引き継ぎ

  • 受け取り元:scenario-maya-lookdev から <asset>_lookdev_v###.ma、合格した handoff_report() の JSON、ターンテーブルシート、サンプリングメモ(SSS、透過深度、デノイザーから保護するディテール)を受け取ります。scenario-maya-animation からショットのバージョン、参照されているリグ、問題のない validate(profile="shot")、承認済みのプレイブラストを受け取ります。scenario-maya-fx および scenario-maya-groom からフレーム範囲付きのバージョン管理されたキャッシュを受け取ります。
  • 引き渡し先:コンポジット担当者またはクライアントに、EXR <shot>_<layer>_v###.####.exr(ACEScg シーンリニア、単一パート、zip、カラーはハーフ精度、Z/P/N は浮動小数点、ライトグループ、マスク)、表示用 PNG、critique.md/json、annotated.png、単独表示シートおよびブラケットシート、comp_recipe JSON、レンダーログ(1 フレームあたりの秒数、1 ピクセルあたりのレイ数)、未検証リストを納品します。修正によって GI または反射を変更する必要がある場合や、複数のショットで同じ問題が繰り返される場合は、scenario-maya-lookdev に戻します(BRJ-CM Ch.9)。

Maya 2027 の注意事項

  • MtoA 5.6.x(Arnold 7.5、ライセンス ARNOL_2027)。Maya IPR は MtoA 5+ では動作しないため、Arnold RenderView を使用します。
  • デフォルトでは Global Light Sampling を使用します。5.6.0 ではライトごとのサンプリングモードを使用できます。グループごとの間接 AOV はエミッションを除外するため(Arnold 7.3)、合計には RGBA_default とエミッションが必要です。
  • macOS:settings_lint は GPU デバイスで失敗します。新規シーンでは OIDN を使用します。noice -t は使用しません。
  • バッチレンダーは、デフォルトでライセンスエラー時に中断します(Arnold 7.3、abort_on_license_fail)。mx_run は WN25 の上書き設定 ARNOLD_FORCE_ABORT_ON_LICENSE_FAIL=0 を設定するため、テストにはウォーターマークが付きます[値を確認]。 Render -r arnold を使用し、maya -render は使用しません。
  • OCIO v2:ACEScg、ACES ビュー。2026.2 以降は入力に sRGB Encoded Rec.709 (sRGB) を使用します。ACES2065-1 はレンダリング空間として使用しません。.tx、.hdr、.exr のルールはデフォルトで Raw です。名前を照会してください。
  • Render Setup とレガシーレイヤーは、1 回のセッション内で併用できません。セットアップは JSON テンプレートとして引き継ぎます。

参考資料

  • references/expert-notes.md:エキスパートごとの詳細とタイムスタンプ、意見の相違、決定者を記載しています。上記で判断方法が明示されていない場合に読み込んでください。
  • references/procedures.md:ブロック P0 から P13 まで。ブリーフからマスターおよびショットまでを扱います。ライティングコードを書く前に読み込んでください。
  • references/critique.md:フレーム批評をコードチェック、評価基準、重大度に対応付けています。各ゲートで読み込んでください。
  • references/gui-paths.md:コンピューター操作エージェントまたは人間向けのメニューとエディターです。
  • references/sources.md:情報源、認証情報、URL、タイムスタンプを記載しています。
  • scripts/mx_light.py:ツールキットです。docstring にすべての呼び出し方法と実行場所が記載されています。

コメント