mcpField
S
scenario-unreal-lighting-rendering

scenario-unreal-lighting-rendering

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

scenario-unreal-lighting-rendering について

Unreal のシーンアーティスト向けに、露出調整、物理ベースの照明、Lumen、MegaLights、静止画出力を扱うスキルです。表現ビュー、数値チェック、ショットごとのレビューでノイズや画面上の問題を調べます。

主な機能

  1. 01カメラ露出とライティングの調整
  2. 02照明器具、ネオン、窓の補助光の計画
  3. 03Lumen、MegaLights、シャドウの検証
  4. 04カメラごとのフレーム記録とレビュー
  5. 05パストレーシング静止画の準備と比較

活用シーン

  1. 01屋内外シーンの露出と照明の設定
  2. 02Lumen または MegaLights のノイズ調査
  3. 03シーンプロキシと最終照明の照合
  4. 04パストレーシング静止画の作成と検証

MCP 対応

Epic の MCP サーバーまたは ue_remote 経由で Unreal Editor の Python ワークフローを呼び出せます。このスキルはライティング、レンダリング、画像レビューの手順を提供します。

インストール

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

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

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

同梱ファイル

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

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

詳細

Unreal Engine 5.8 のライティングとレンダリング

Unreal における熟練のライティングとは、キャリブレーション済みのカメラ、物理的な光の値、そしてあなたが見ているのと同じシーンを認識するレンダラーです。それ以外はすべて、その上に重ねるアートディレクションとして扱い、そのように明記します。ライティング済みの画像を信頼する前に、各手順を表現ビューと数値で検証します。ノイズは、それを生じさせているシステムで修正します。ここに記載されている関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼します(npx skills add scenario-labs/skills --skill <name>)。無人で作業を続ける場合は、ツールスキーマをもとに進め、スキルが不足していることを明示します。

必須の背景知識: scenario-unreal-expert(チャンネル、レビューループ、5.8 の落とし穴)。

ステータス(2026-09-24): scripts/ue_light.py はまだ Unreal で実行されていません。偽の unreal を使ったオフラインテストでは、200 件の純粋テスト、65 件のエディターレイヤーテスト、20 件の手順テストに合格しています。初回のエディター実行:tests/code/unreal-lighting-rendering/job_00_probe_lighting.py。

スタンス(専門家との違い)

  • ライトより先にカメラ。 デフォルトの自動露出はエンジンを「子ども向け」にしてしまいます。10 lux と 100,000 lux の太陽が同じように見えます。被写体の位置にクロームボールを置き、露出補正を 0 にし、条件に合わせて Min/Max EV100 を制限してからライトを設定し、最後にエミッシブを追加します(Gobey nlbJwMoj1Dg [00:02:38] [00:11:40]; Faucher BGoaPyfZlYg [00:01:34])。Game Settings の露出で判断し、ビューポートの EV100 オーバーライドは使いません(Gobey [00:21:56])。
  • 物理値で問題を解決し、チートは後から加えてレポートに記載します。 実際のルーメン値にすると、Lumen のちらつきが約 80%減少しました(Argyriou Q1whHlGJB_o [00:14:41])。アルベドはライティングの一部で、最大 0.8、 最小 0.02 です[追加](パストレーサーのドキュメント、Gobey [00:07:30]、Faucher X5zVhc5ahl0 [00:22:24])。すべての ライトには目に見える器具があり、光源の形状も器具に合わせます(Faucher 0GYyHDuaPcg [00:15:14] [00:15:47])。月明かり、フィル、ブーストを使ってもかまいませんが、cheat_inventory に記載します。パストレーサーには反映されません。
  • エミッシブは見た目を作り、ライトは照明を担います。 小さくて明るいエミッシブはノイズが多く、スクリーンスペースで処理され、5.6 以降はより強くクランプされます(r.Lumen.ScreenProbeGather.MaxRayIntensity 10)。ネオンサインには、その面に合わせた矩形ライトを前面に配置します(Faucher 1e6oOiKh91U [00:12:30]; Gobey Q&A [00:37:33]; MegaLights のドキュメント)。Lumen では、小さなエミッシブメッシュに Emissive Light Source を設定し、必要に応じて Ray Tracing Quality Switch を使って Lumen 専用の 5~10 のブーストを加えます[ノードを確認](Campbell BKaAzhMHJZ0 [00:14:09])。パストレーサーはこのスイッチを無視し、チューブとそのライトを二重にカウントします(パストレーサーのドキュメント)。
  • レンダラーが見ているのはプロキシです。実際に確認しましょう。 Lumen Scene と Surface Cache(黒はスクリーントレースのみ、ピンクはカードなし。メッシュ 1 つだけの部屋でよく発生)、MegaLights のシャドウキャスターの不一致、VSM のキャッシュ済みページを、同じカメラから見たライティング済みのビューとそれぞれ比較します(Faucher [00:07:21] [00:06:42]; Lumen、MegaLights、VSM のドキュメント)。
  • MegaLights のノイズはサンプルの浪費であり、ライトの数が原因ではありません。 非表示のライトはサンプルの最大 20%(再投影に失敗すると 50%)、ディレクショナルライトは最大 50%を消費します。半径を狭め、コーンやバンドアを使い、ジオメトリ内にライトを置かず、クラスターを統合し、太陽には Deferred と VSM を使います(Narkowicz and Costa dmmN8_c8Tb0 [00:10:37] [00:16:40])。デフォルトでは、MegaLights のレイトレーシングはアルファマスクを無視します(MegaLights のドキュメント)。
  • シャドウ方式は、何が動くかに合わせます。 ゲームプレイ中はローカルライトをレイトレーシングのままにします。VSM のローカルライトをキャラクターが横切るたびにページが無効化されますが、レイトレーシングは可視ピクセルごとの処理で済み、ペンumbラは追加コストなしです(Campbell [00:26:25] [00:31:42])。太陽には VSM を使い、レイトレーシングでは表現できないコンテンツにも、理由を明記したうえで VSM を使います。
  • 暗い室内では、まずトーンマッパーを見直します。カラーグレーディングの前に光を当てましょう。 フィルを加える前に、Toe を 0.55 から 0.3 にし、Local Exposure Shadow Contrast を 0.6 にします(Gobey [00:14:58] [00:15:32])。次に、直接光、1 つのライトの間接光ブースト、Diffuse Color Boost、最後にグローバル露出という順で調整します(Faucher 0GYyHDuaPcg [00:08:14] [00:13:42])。光沢面には直接光が必要です。Lumen の間接光ではスペキュラーがほとんど得られません(Faucher [00:10:28])。
  • 静止画では、パストレーサーが基準となり、品質を調整する手段はサンプル数だけです。 Deferred パスでは、サンプル数を増やして得られるのはモーションブラーとアンチエイリアスのみです。Lumen やシャドウのノイズは、ライトまたは PPV で調整します(Faucher X5zVhc5ahl0 [00:07:43]; fVg5ihB8Wdc [00:09:15]; Comly, demystifying-mrq)。

最初に確認すること

入力変更内容指定がない場合のデフォルト
プラットフォーム、フレームレートLumen のスケーラビリティ、MegaLights、HWRTコンソール 60 fps:Lumen High。予算は scenario-unreal-performance に基づきます。Mac の数値は代替値です
この Mac で動作する機能(プローブ)すべてのプランM5 Max、macOS 26.5.1:Lumen HWRT と MegaLights Experimental、Nanite と VSM Beta、パストレーサー対応(差分ファイル)
成果物露出モード、静止画プランゲームプレイに加えて静止画 1 枚。直接納品(トーンマッピング済み PNG と EXR)
プレイヤーが移動する環境EV100 のブラケットCONDITIONS:室内 4、ブルーアワー 6.5[追加]、低い太陽 7、月明かり 1
スタイル月と太陽を物理ベースにするか、アートディレクションするか物理ベースを基本とします。読みやすさのために、映画的な月と 15 度の太陽の下限を設けるのはこの場合のみです(Faucher;Oakley rX0wZZxpB-U [00:19:16])
主要カメラ、ショット内のガラスと発光器具フォグ散乱、演出上の調整、ガラスと二重計上の監査brief のブックマークを使用します。ヒーローガラスの周囲に設置した PPV では前面レイヤーのみを使用します

ワークフロー

Epic の MCP サーバーまたは ue_remote を介して Python でエディターを操作します。import ue_light as L。コード全文は references/procedures.md を参照してください。スクリーンショットは潜在的な成果物です。1 回の呼び出しにつき 1 回キャプチャします。

  1. プローブと設定(P0、P1)。 probe()、render_settings_report、バックアップ後の ini_patch を実行します。拡張輝度範囲は新規プロジェクトでのみ設定します。GATE:プローブの JSON を読み取ります。
  2. カメラのキャリブレーション(P2)。 被写体の位置に spawn_calibrator を配置し、バインドされていない PPV_Global を 1 つだけ作成します。 apply_exposure(ppv, exposure_plan("gameplay", ("interior", "blue_hour")))、apply_look(Lumen GI では Local Exposure が必須です。Film を使うのはこの工程のみです)。GATE:ppv_lint で失敗がないこと。HDR ビューで各ターゲットがクランプ範囲内にあること。
  3. 屋外(P3)。 build_exterior_rig(exterior_rig_plan("blue_hour", key_camera_forward=...)) を実行します。 Sky Atmosphere、地平線下 120,000 lux の太陽、リアルタイム Sky Light、黒いインスキャッタリングを伴うボリューメトリックフォグを設定します。Scattering Distribution はキーライトカメラからライトへの角度で設定します(ライトの方向からは 0.9、側面からは 0:Faucher 1LfiYtKDsac [00:16:06])。安定したランプはハローを出すため 1 より大きく散乱させ、ちらつくランプは 0 にします。GATE:scene_lint がクリーンであること。太陽が MegaLights の対象外であること。
  4. 実用灯、ネオン、開口部(P4、P5)。 FIXTURES のルーメン値とケルビン値を設定します。半径は tight_attenuation_radius で求め、部屋のサイズを上限とします。光源半径、長さ、またはサイズを器具に合わせ、棚ごとに 1 つの矩形ライトを配置し、各看板の前に neon_sign_light、窓に opening_rect_light を配置します。emissive_for_stops で発光を設定し、続いて emissive_strategy(Emissive Light Source、ブーストは任意)を使います。GATE:ゲームプレイプロファイルで light_lint に警告がないこと(器具、形状、VSM、クラスタ)。ない場合は理由を文書化します。
  5. レンダラーに見えているか(P7~P9)。 Lumen の各ビューと lit を比較します。ピンク表示で room_shell_lint を実行し、MegaLights のダンプと不一致ビューを確認します。マスクされたキャスターと VSM のキャッシュ済みページも確認します。GATE:ライトを反射させる必要がある場所が黒またはピンクになっていないこと。ダンプに隠れたライトがないこと。VSM の赤色の割合がほぼ 0 であること。ノイズは動きの中で評価します。
  6. ルック(P10)。 まずアンビエントの形を整え、次に焦点の色相を決め、最後に「さらなる広がりへの期待」を作ります。フレーム外へ漏れる光や、明るい側道を使います(Oakley [00:07:34] [00:09:19] [00:08:44])。シャドウリフトの段階を順に調整し、最後にグレーディングします。ホワイトバランスの方向は A/B スクリーンショットで判断します。GATE:frame_report の B3~B8。
  7. レビューループ(P11、P12)。 ブックマークごとに log_mark を記録し、キャプチャしてから frame_report(frame, brief, log_text=log_since(...)) を実行します。変更は 1 つずつ行い、iterations.jsonl に記録します。露出範囲の警告 5.8 はフレームの不合格を意味します。光沢のある領域ではハイライトを維持する必要があります。プレイヤーの経路を歩いて露出の適応を確認します。計測には P12 の計測プリセット(async compute、dynamic resolution off)を使い、結果を scenario-unreal-performance に記録します。GATE:失敗がないこと。
  8. 静止画(P13)。 まずシーンを監査します。albedo_check で Base Color バッファを確認し、emissive_fixture_pairs(A/B r.PathTracing.EnableEmissive 0、Indirect Emissive off)と glass_lint を実行します。次に still_plan("path_traced", "final", glass=True, sky_atmosphere_visible=True, emissive_fixtures=...) を実行し、 mrg_lint がクリーンであることを確認してから、set_cine_camera_exposure(Manual metering、Apply Physical Camera Exposure)を設定し、 queue_mrg_still を実行します。静止画専用の調整には、独自のライティングチャンネルで still_only_light_plan を使用します。 オフラインでは、リニア EXR 上のグレーカードが 1/3 ストップ以内に収まることを確認し、compare_ground_truth と 100 パーセントのクロップを使います。レンダリング結果がビューポートと異なる場合は RENDER_DIFF_TRIAGE に従います。GATE:critique.md の C1~C11。
  9. 引き継ぎ(P14)。 lighting_manifest(path, ctx):ライト、PPV、lint、調整項目、発光ペア、マスクされたキャスター、cvars。

数値

項目値基準、出典
太陽、月天頂で 120,000 lux(0.545 degrees);月は 0.26 luxEpic sky doc
見た目の目標(EV100)晴天 14、曇天 10、低い太陽 7、室内 4、月明かり 1、月明かりなし -2Gobey chart [00:12:02];測定値ではなく目標値
照明器具ろうそく 12 lm 1,900 K;装飾用 300;室内 1,000;屋外 10,000;街灯 2,500~10,000 lmGobey chart;Argyriou [00:13:36]
単位1 cd = 625 unitless = 12.6 lm(点光源)= 3.14 lm(矩形光源)= 1.76 lm(スポット、44 degrees)exposure doc
露出EV100 = log2(N^2 / t x 100 / ISO);B = L / 2^(EV100 + comp);f/2.8、1/50、ISO 800 は EV100 5.6exposure doc
自動露出Low 70~80、High 80~95 percent;Speed Up 3、Speed Down 1exposure doc;Gobey frame [00:21:52]
ローカル露出、フィルムコントラスト 0.6~1(デフォルト 0.8);Toe はデフォルト 0.55、暗い室内では 0.3exposure doc;Gobey
アルベド0.02 [added]~0.8(パストレーシング)、0.9(Lumen)path tracer doc;Faucher 1e6oOiKh91U [00:13:35]
MegaLightsサンプルの 20 percent を非表示ライトに割り当て(再投影に失敗した場合は 50);太陽は最大 50SIGGRAPH [00:10:37] [00:16:40]
パストレース静止画時間方向 1、空間方向 256(ドラフト)~1024 以上(最終);ガラスは 10 バウンス;Max Path Intensity はデフォルトpath tracer doc;Faucher X5zVhc5ahl0 [00:16:47]
ディファード静止画空間方向のみ、奇数(ドラフト 9、最終 15、薄く明るい場合 31);8 を超える場合は AA None、Motion Blur Amount 0、ウォームアップ 250Faucher fVg5ihB8Wdc [00:06:01] [00:10:58];1e6oOiKh91U [00:09:56]

品質ゲート

  • 測定可能: ppv_lint、light_lint、scene_lint、glass_lint、room_shell_lint、 mrg_lint、cvar_lint がすべて合格すること;すべてのブックマークで、キャプチャー以降のログを含む frame_report を実行すること(空白フレームと露出範囲の警告は不合格);Base Color バッファーで albedo_check を実行すること;リニア EXR からグレーカードを確認すること;記載された例外を除き、 compare_ground_truth が 1 段以内であること;VSM キャッシュビューで red_fraction を確認すること; ウォームアップで temporal_flicker を確認すること。[added] と記されたしきい値は、プロジェクトごとに 承認済みの 1 フレームで調整します。
  • 視覚的: 各ブックマークをフルサイズで確認し、表現ビューの横にサムネイルを表示すること;ノイズを 確認するためにカメラを動かすこと;漏れを確認するために内側の角を確認すること;光沢のあるハイライトを 確認すること;静止画を 100 percent で確認すること;references/critique.md の 順序に従うこと。

よくある間違い

間違いこのように見える対処法
デフォルトの自動露出のままライティングするどの値でも「問題なさそう」に見えるが、ちらつくexposure_plan、コンプ 0、その後に物理ライト
エミッシブのみでネオンを照らすGI に斑点ができ、ちらつく看板ごとに矩形ライトを設置する;Emissive Light Source
パストレーシングの静止画で、チューブとそのライトを併用する器具が Lumen より 2 倍明るく光るr.PathTracing.EnableEmissive 0 で A/B テストする;Indirect Emissive をオフにする
小さな窓のためにスカイライトや露出を上げる斑点ができ、室内が平坦なグレーになる開口部のサイズに合わせた opening_rect_light
MegaLights で多数の小さなライト、大きな半径、屋内の太陽を使うノイズや動きの中でのゴーストが発生する範囲を絞り、クラスターを統合し、太陽には VSM を使用する
動くキャラクターに VSM のローカルライトを当てる継続的に無効化され、コストが急増するレイトレースシャドウを使用する;理由がある場合のみ VSM を使う
MegaLights でグリルや植物を使う画面外に出ると影が塊になる穴をモデリングする、または EvaluateMaterialMode 1 を指定する
部屋全体を 1 つのメッシュにするサーフェスキャッシュがピンクになり、スクリーンスペース GI が発生する壁、床、天井を分割する;Max Lumen Mesh Cards
暗い室内を補うためにフィルライトを追加し、最初にカラーグレーディングするGI が平坦になり、ビューに依存するトーとローカル露出を調整してから、調整手順に進む;最後にカラーグレーディングする
Lumen のみで光沢のあるバーの天板を照らす表面が乾いたように見え、生気がない反射できる直接光を当てる
Lumen のノイズに対して MRG サンプル数を増やす;ディファードサンプルを均一または混在させるノイズは変わらず、静止画がぼやけるNOISE_TRIAGE、still_plan、mrg_lint
パストレーシングの静止画で HDRIBackdrop を使う二重にライティングされる削除する;Sky Light cubemap と r.PathTracing.VisibleLights 2 を使う。この設定は Reference Atmosphere では何もしない
ビューポートとレンダーが異なり、cvar が貼り付けられている「レンダーが壊れている」RENDER_DIFF_TRIAGE:まず Global Game Overrides を確認する
静止画専用のリムライトをレベルに残すごまかしのライトがゲームプレイにも影響する専用のライティングチャンネルを使い、間接光を 0 にし、ショットシーケンス内に配置する

引き継ぎ

  • 受け取るもの scenario-unreal-world-building から:レベル、モジュール式の壁、厚さ 10 cm 以上の床と天井、適切なモビリティ、room タグが付いた部屋のボリューム、fixture:<name> タグが付いた器具メッシュ、 emissive タグが付いた発光メッシュ。scenario-unreal-materials から:EmissiveIntensity(および Ray Tracing Quality Switch の背後にある LumenEmissiveScale)を公開するマテリアルマスター、0.02~0.8 のアルベド、Surface ForwardShading のガラス IOR。scenario-unreal-vfx から:パーティクルライト (シャドウをオフ、Allow MegaLights)。
  • 引き渡すもの scenario-unreal-cinematics へ:ライティング済みのレベル、lighting_manifest.json、露出プラン(EV100、ISO、およびその絞り値に対するシャッタースピード)、 still_plan プリセット、MRG 変数、静止画専用のチートプラン。scenario-unreal-performance へ:ライト数、シャドウ方式、測定済みのパス。scenario-unreal-materials と scenario-unreal-world-building へ:アルベド、ガラス、マスク付きキャスター、部屋シェルの修正。

UE 5.8 の注意事項

  • MegaLights は Production Ready(ライティングチャンネル、雲のシャドウ、不一致ビュー)です。指向性ライトはデフォルトで除外されます(r.MegaLights.DirectionalLights 1)。r.MegaLights.Debug、 r.MegaLights.DownsampleMode。
  • Lumen Lite は Medium でベータ版です。SSGI は非推奨です。RTGI は 5.4 以降廃止されています。詳細トレースは非推奨です。 r.Lumen.HeightFog 1 がデフォルトです。
  • r.EyeAdaptation.CachedLightingPreExposure(デフォルトは 4)によりプリ露出が統一され、露出がサポート範囲外になると画面上に 警告が表示されます。
  • SDR のパスは ACES 2.0 です。OCIO 2.5.1。グレーディングスコープは ShowFlag.VisualizeColorGrading。
  • Mac でパストレーサーを使用できます(macOS 26.4 以降)。バックフェースカリングは常に有効です。HDRIBackdrop には互換性がありません。 Reference Atmosphere は Sky Lights を無視します。
  • Movie Render Graph は Production Ready です。デフォルトは Basic config、Light Modifier、レイヤーのウォームアップ、 DWAA/DWAB EXR です。
  • Python:Rotator の位置引数の順序は roll、pitch、yaw です。そのため、ue_light はキーワードを渡します [要確認]。

参考資料

  • references/procedures.md:P0 から P14 までの全コード。各ブロックにテスト ID とステータスがあります。ライティングコードを記述する 前に読み込んでください。
  • references/critique.md:セットアップ、フレーム、レンダー、予算の評価基準とコード上の指摘事項の対応表です。各ゲートで読み込んでください。
  • references/expert-notes.md:専門家ごとの詳細、タイムスタンプ、意見の相違、判断条件。
  • references/gui-paths.md:コンピューター操作エージェントまたは人間向けのメニューとエディター。
  • references/sources.md:すべてのソース、認証情報、URL、最適なタイムスタンプ、改訂履歴。
  • scripts/ue_light.py:ツールキット。docstring にすべての呼び出しと実行場所が記載されています。

コメント