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. 03检查 Lumen、MegaLights 与阴影
  4. 04按镜头记录并评审画面
  5. 05准备路径追踪静帧并比较结果

适用场景

  1. 01为室内外场景设定曝光与照明
  2. 02定位 Lumen 或 MegaLights 噪点
  3. 03检查场景代理与最终照明是否一致
  4. 04制作并核验路径追踪静帧

MCP 相关

可通过 Epic 的 MCP server 或 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 的阳光看起来一样。将灰球放在主体处,将 Exposure Compensation 设为 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 [验证节点] 将增强幅度设为 5 到 10,仅对 Lumen 生效(Campbell BKaAzhMHJZ0 [00:14:09]);路径追踪器会忽略该开关,因此灯管及其灯光会被重复计算(路径追踪器文档)。
  • 渲染器看到的是代理;要检查它。 将 Lumen Scene 和 Surface Cache 与同一台相机下的已照明视图对照(黑色 = 仅屏幕追踪,粉色 = 没有卡片,常见于仅由一个网格构成的房间);还要检查 MegaLights 阴影投射体不匹配及 VSM 缓存页面(Faucher [00:07:21] [00:06:42];Lumen、MegaLights、VSM 文档)。
  • MegaLights 的噪点来自被占用的采样,而不是灯光数量。 隐藏的灯光会占用最多 20% 的采样(重投影失败后占 50%),方向光最多占 50%。缩小半径、使用聚光锥和挡光板、避免灯光置于几何体内部、合并集群,并让太阳光使用延迟渲染加 VSM(Narkowicz 和 Costa dmmN8_c8Tb0 [00:10:37] [00:16:40])。默认情况下,光线追踪会忽略 Alpha 遮罩 (MegaLights 文档)。
  • 阴影方法应根据运动情况选择。 游戏运行期间,局部灯光保持光线追踪:每个穿过 VSM 局部灯光的角色都会使其页面失效,而光线追踪按可见像素计费,并且半影不额外耗费成本(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]);然后按顺序调整:直射光、单盏灯的间接光增强、Diffuse Color Boost,最后才调全局曝光(Faucher 0GYyHDuaPcg [00:08:14] [00:13:42])。光泽表面需要直射光:Lumen 的间接光几乎不产生镜面反射(Faucher [00:10:28])。
  • 静帧渲染以路径追踪器为准,采样数是唯一的质量调节项。 在延迟渲染路径中,增加采样数只会改善运动模糊和抗锯齿;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,支持路径追踪(差异见文件)
交付物曝光模式、静帧方案游戏玩法加一张静帧;直接交付(色调映射后的 PNG 加 EXR)
玩家会经过的环境条件EV100 档位CONDITIONS:室内 4、蓝调时刻 6.5 [新增]、低角度阳光 7、月光 1
风格写实与艺术化处理的月光和阳光以写实为基础;仅为提升可读性,采用电影感月光和 15 度太阳高度下限(Faucher;Oakley rX0wZZxpB-U [00:19:16])
关键摄像机;画面中的玻璃和自发光灯具雾散射、取巧处理、玻璃和重复计数审查使用需求简报中的书签;仅在英雄玻璃周围的 PPV 中启用前景图层

工作流

通过 Epic 的 MCP 服务或 ue_remote 使用 Editor Python;import ue_light as L;完整代码见 references/procedures.md。截图是潜在的:每次调用捕获一张。

  1. 探测和设置(P0、P1)。 probe()、render_settings_report,备份后再运行 ini_patch; 仅在新项目中使用扩展亮度范围。门槛:已读取探测 JSON。
  2. 校准摄像机(P2)。 在主体处运行 spawn_calibrator,然后创建一个未绑定的 PPV_Global: apply_exposure(ppv, exposure_plan("gameplay", ("interior", "blue_hour")))、apply_look(使用 Lumen GI 时必须启用 Local Exposure;仅在此处使用 Film)。门槛: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。门槛:scene_lint 无问题;太阳不在 MegaLights 中。
  4. 实用灯、霓虹灯、开口(P4、P5)。 使用 FIXTURES 设置流明和色温,半径由 tight_attenuation_radius 确定且不超过房间范围,光源半径、长度或大小与灯具匹配,每个搁架放置一个矩形灯,每个标牌前放置一个 neon_sign_light,窗户处放置 opening_rect_light;通过 emissive_for_stops 设置发光值,再运行 emissive_strategy(Emissive Light Source,可选增强)。门槛:在 gameplay 配置中,light_lint 无警告(灯具、形状、VSM、集群),或提供书面说明。
  5. 渲染器能看到吗(P7 至 P9)。 检查 Lumen 视图与 lit 视图;在粉色视图中运行 room_shell_lint; 查看 MegaLights 转储和不匹配视图;检查遮罩投射体;检查 VSM 缓存页面。门槛:需要反弹光的区域没有黑色或粉色;转储中没有隐藏光源;VSM 红色占比接近 0;在运动中评估噪声。
  6. 视觉效果(P10)。 先塑造环境光,再确定焦点色调,然后营造“还有更多内容”的暗示:光线延伸出画面、点亮一条侧街(Oakley [00:07:34] [00:09:19] [00:08:44]);按顺序调整阴影提亮阶梯;最后调整色彩分级;通过 A/B 截图确定白平衡方向。门槛:frame_report 达到 B3 至 B8。
  7. 评审循环(P11、P12)。 每个书签执行:log_mark、捕获、frame_report(frame, brief, log_text=log_since(...)),进行一次更改,并记录到 iterations.jsonl。5.8 曝光范围警告会导致帧不合格;高光区域必须保留高光;沿玩家路径行走以检查适应效果。计时使用 P12 的测量预设(异步计算,关闭动态分辨率),并提交至 scenario-unreal-performance。门槛:无失败项。
  8. 静帧(P13)。 先进行场景审计:通过 albedo_check 检查 Base Color 缓冲区; 检查 emissive_fixture_pairs(A/B r.PathTracing.EnableEmissive 0,关闭 Indirect Emissive), 检查 glass_lint。然后运行 still_plan("path_traced", "final", glass=True, sky_atmosphere_visible=True, emissive_fixtures=...), 确认 mrg_lint 无问题,运行 set_cine_camera_exposure(Manual 测光,启用 Apply Physical Camera Exposure), 再运行 queue_mrg_still。仅用于静帧的作弊设置通过 still_only_light_plan 配置在独立的照明通道上。 离线检查:线性 EXR 中的灰卡曝光偏差不超过 1/3 档;运行 compare_ground_truth,检查 100 percent 裁剪图; 如果渲染结果与视口不同,则按 RENDER_DIFF_TRIAGE 排查。门槛:达到 critique.md 中的 C1 至 C11。
  9. 交接(P14)。 lighting_manifest(path, ctx):灯光、PPV、lint、作弊设置、发光配对、遮罩投射体、cvars。

数值

项目数值相对参照,来源
太阳、月亮天顶处(0.545 degrees)为 120,000 lux;月光为 0.26 luxEpic 天空文档
观察目标(EV100)日照 14、多云 10、低角度阳光 7、室内 4、月光 1、无月光 -2Gobey 图表 [00:12:02];这些是目标值,不是测光读数
灯具蜡烛 12 lm、1,900 K;装饰灯 300;室内灯 1,000;室外灯 10,000;街灯 2,500 至 10,000 lmGobey 图表;Argyriou [00:13:36]
单位1 cd = 625 无量纲 = 12.6 lm(点光源)= 3.14 lm(矩形光源)= 1.76 lm(聚光灯,44 degrees)曝光文档
曝光EV100 = log2(N^2 / t x 100 / ISO);B = L / 2^(EV100 + comp);f/2.8、1/50、ISO 800 的 EV100 为 5.6曝光文档
自动曝光低限 70 至 80%,高限 80 至 95%;Speed Up 3,高于 Speed Down 1曝光文档;Gobey 画面 [00:21:52]
局部曝光、胶片对比度 0.6 至 1(默认值 0.8);Toe 默认值 0.55,暗室内场景使用 0.3曝光文档;Gobey
反照率0.02 [added] 至路径追踪的 0.8,Lumen 为 0.9路径追踪器文档;Faucher 1e6oOiKh91U [00:13:35]
MegaLights20 percent 的采样用于隐藏灯光(重投影失败后为 50);太阳最高 50SIGGRAPH [00:10:37] [00:16:40]
路径追踪静帧1 个时间采样;空间采样草稿为 256,最终为 1024 或更高;玻璃 10 次反弹;Max Path Intensity 默认值路径追踪器文档;Faucher X5zVhc5ahl0 [00:16:47]
延迟渲染静帧仅空间采样,奇数值(草稿 9、最终 15、明亮细节 31);AA 高于 8 时设为 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 的偏差不得超过一档曝光;在 VSM 缓存视图上运行 red_fraction; 在预热期间运行 temporal_flicker。标记为 [added] 的阈值需基于每个项目的一帧获批画面进行校准。
  • 视觉: 每个书签都要以全尺寸查看,并作为缩略图与其表现视图并排查看;移动摄像机检查噪点; 检查内角是否漏光;检查镜面高光;以 100 percent 查看静帧;按照 references/critique.md 中的顺序进行。

常见错误

错误表现修正
在默认自动曝光下布光任何数值“看起来都不错”;画面闪烁exposure_plan,先将补偿设为 0,再布置实体灯光
霓虹灯仅靠自发光照亮GI 斑驳、闪烁每个招牌配一盏矩形灯;Emissive Light Source
路径追踪静帧中,灯管和对应灯光同时存在灯具亮度是 Lumen 下的两倍A/B 测试 r.PathTracing.EnableEmissive 0;关闭 Indirect Emissive
为照亮一扇小窗而提高天空光或曝光斑驳、室内呈平坦的灰色使用尺寸与开口相符的 opening_rect_light
在 MegaLights 下使用许多小灯、大半径,以及室内太阳光运动时出现噪点和残影收紧范围、合并光源组,太阳光使用 VSM
在 VSM 下对移动角色使用局部灯光持续失效、开销激增使用光线追踪阴影;只有确有需要时才使用 VSM
在 MegaLights 下使用格栅或植物离开屏幕后阴影变成实心建模出孔洞,或将 EvaluateMaterialMode 设为 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 下此设置不起作用
渲染结果与视口不同,且复制粘贴了 cvars“渲染坏了”RENDER_DIFF_TRIAGE:先检查 Global Game Overrides
仅用于静帧的轮廓光留在关卡中欺骗性灯光影响了游戏过程使用独立的 Lighting Channel,将间接光设为 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 已可用于正式制作(灯光通道、云层阴影、不匹配视图);除非设置 r.MegaLights.DirectionalLights 1,否则会排除方向光;r.MegaLights.Debug、r.MegaLights.DownsampleMode。
  • Lumen Lite 可在 Medium 使用(Beta);SSGI 已弃用;RTGI 自 5.4 起移除;细节追踪已弃用;r.Lumen.HeightFog 1 为默认值。
  • r.EyeAdaptation.CachedLightingPreExposure(默认值为 4)统一预曝光,并会在曝光超出支持范围时显示屏幕警告。
  • ACES 2.0 是 SDR 路径;OCIO 2.5.1;调色示波器为 ShowFlag.VisualizeColorGrading。
  • Mac 上支持路径追踪器(macOS 26.4+);始终启用背面剔除;HDRIBackdrop 不兼容;Reference Atmosphere 会忽略 Sky Lights。
  • Movie Render Graph 已可用于正式制作:默认使用 Basic 配置、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:供计算机操作 Agent 或人工使用的菜单和编辑器路径。
  • references/sources.md:所有来源、凭据、URL、最佳时间戳和修订历史。
  • scripts/ue_light.py:工具包;其文档字符串列出了所有调用及其运行位置。

评论

支持 Markdown