scenario-maya-lighting-rendering について
Maya 2027 と Arnold の制作チーム向けのライティング・レンダリングスキルです。物語上の狙いや参照画像をもとに照明を計画し、AOV でノイズを分析して、シーンリニア EXR の納品を準備します。
主な機能
- 01製品やキャラクターの照明リグを計画
- 02フレームと照明バランスを分析
- 03AOV でノイズを特定
- 04ライトグループとレンダーパスを設定
- 05EXR 出力とレンダー納品を構成
活用シーン
- 01製品やキャラクターのショットに照明を設定
- 02参照画像と照らして照明や画面構成を確認
- 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.mdexpert-notes.mdgui-paths.mdprocedures.mdsources.mdscripts/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 専用です。バッチレンダーを繰り返し、その結果を開いて確認します。
- 受け入れ。 ショットでは
mx_validate.validate(profile="shot")を実行し、アセットでは scenario-maya-lookdev のhandoff_reportを使います。L.cm_audit_scene()を実行し、参照を添えて概要(L.default_brief、手順 P1)を作成します。キー、リム、暗い帯がそれぞれどこにあるかを読み取ります。GATE:検証失敗なし、カラー監査合格、ストーリー、目標、参照を記載済み。 - 計画とブロック。
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 プランを維持できること。 - 測定に基づいて形状とバランスを整える。
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、単独表示シートを評価します。 - マスターからショットへ(シーケンス)。 カメラ軸ごとにライティングのみのマスターを作成し、各ショットに参照として読み込みます。まず初期設定のままレンダーし、最も広いショットから開始します。調整は契約の範囲内に限り、記録します(手順 P13、BR-B ch8)。GATE:
L.compare_framesでマスターおよび前後のショットと比較します。特徴的な要素(キャラクターのリムなど)がすべてのショットにあること。 - ノイズと予算。
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 以上であること。所要時間が予算内であること。 - パスとコンポジットへの引き継ぎ。
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 であること。 - 最終レンダーと納品。 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 = 1296 | SMP § Camera (AA) |
| グローバルライトサンプル数 | CPU では 4;ドームライトまたは遠方ライトが支配的な場合は 1 または 0 | SMP § Best setting |
| アダプティブ | AA 3~4、最大 AA 20、しきい値 0.015[2027 年のデフォルトを要確認];プレビューではオフ | SMP |
| モーションブラー、被写界深度 | AA は約 12、被写界深度が強い場合は最大 20、セカンダリは 1 | ARV-T [00:20:29] |
| レイの深度 | ディフューズは製品や屋外で 1~2、屋内で 3~4;ガラスまたは相互反射する金属以外ではスペキュラーは 2 | ARV-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~50 | BRJ-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_recipeJSON、レンダーログ(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 にすべての呼び出し方法と実行場所が記載されています。