关于 scenario-maya-lighting-rendering
面向 Maya 2027 与 Arnold 制作人员的布光和渲染技能,依据故事目标与参考图规划灯光,并用 AOV 分析噪点、控制采样和准备线性 EXR 交付。
主要功能
- 01规划产品与角色布光方案
- 02分析画面并检查光照平衡
- 03通过 AOV 定位噪点
- 04设置灯光组与渲染通道
- 05配置 EXR 输出及渲染交付
适用场景
- 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)
专家级照明是一项可衡量的叙事决策:明确观众的视线必须落在哪里,用一盏主导光源塑造每个形体,由后向前组织明暗关系,并用灯光组和数值验证,直到视觉判断认可。渲染是工程:先从 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])。
- 一盏灯要强于其他灯。 “太多光源强度相同”是常见问题(BR-B ch6 Balance);比主光更亮的轮廓光也不行:“小而亮”代表辐亮度更高,并不代表能量更多(JHILL [00:13:47])。Arvid 始终让主光最强(ARV-L [00:06:51]);对 Brejon 来说,主光负责塑造主要形体(BR [00:23:36])。判断标准:根据主光塑造出的形状来选择主光,然后在主体遮罩上测量一个主导灯光组。
- 主光置于主体后侧,并以脸部轴线为参照测量。 照亮脸部远侧(BR-B ch8.5);从镜头轴线测量时,转过来的脸需要正面的主光[新增测试]。镜头一侧不要打光(BR [00:13:46]);补光应略偏正面、位置较低、饱和度更高,尺寸约为主光的两倍(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 曾因缺少参考而白白花了两天时间(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 使用 Global Light Sampling:统一设置采样数,CPU 上不超过 4;每盏灯的采样数仅对 dome、distant 和 local-mode 灯光有效(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 是线性 Rec.709,而非 Raw(CM § ACES Workflow)。
首先明确
| 输入 | 影响 | 未明确时的默认值 |
|---|---|---|
| 交付内容:静帧或序列、尺寸、范围 | 采样、降噪器、预算 | 静帧;分块渲染,分辨率为 320 px,预览为半尺寸 |
| 故事和焦点目标 | 每个关卡 | 产品:表盘或徽标;角色:正在说话的脸 |
| 参考资料 | 灯光位置、数值 | brief["references"] 中同一主体和情境的照片;没有参考资料时,评审会提出警告 |
| 机器 | 设备、降噪器 | macOS:仅 CPU,不使用 Arnold GPU 或 OptiX;OIDN |
| 氛围、艺术指导 | 面部亮部/阴影比例、对称性 | “戏剧感”,2 档曝光 [新增 MOOD_RATIO_STOPS];自然、不对称(BR-B 第 6 章《Planet 51》) |
| 连续性约定 | 允许调整的镜头、每个摄影机轴一个主版本 | 保守:曝光、变换、可见性(BR [00:37:17]) |
| 色彩管线 | 渲染空间、视图、交付 | Maya 默认:ACEScg、ACES 视图、EXR ACEScg half |
| 合成需求 | AOV 预设、灯光组(最多 16 个) | RGBA、Z、主体遮罩启用分组;为合成师使用 comp 预设 |
| 渲染预算 | 设置阶梯 | 根据预览测量,并在最终渲染前进行推算 |
| 景深和运动模糊 | 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]);景深计划可执行。 - 通过测量调整形状与平衡。
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、半精度色彩、浮点 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),使未授权的批量渲染中止而非添加水印;重新计时一张完整画面;检查退出代码和文件;评审;创建新版本。GATE:帧已写入磁盘,报告已撰写,并已列明未验证项。
数值
| 项目 | 数值 | 对应内容、来源 |
|---|---|---|
| 每像素射线数 | AA² x samples²: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 用 9 个处理 30 盏灯 | 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 时为 15 | [added],来源:LGT § Exposure, § Normalize;Arvid 的 15 到 20(ARV-L [00:03:58]) |
质量门禁
- 代码:
rig_plan_checks通过;scene_checks无失败(环境光、Samples 0、ACEScg 下的 HDRI Raw、穹顶分辨率、组名拼写错误、主光位于舞台后方);render_settings_report已回答(降噪器、TX、设备);analyze_frame判定通过;check_sums正常;cm_audit通过;噪点循环已因明确说明的原因停止。L.THRESHOLDS为 [已添加]:在获批的帧上校准。 - **视觉:**全尺寸 beauty 图和
squint.png,与参考图并排;annotated.png(显著性峰值、红色裁切、蓝色压暗);单灯检查表;-5 到 +5 档曝光包围序列;与相邻帧一起剪辑的序列。按顺序使用references/critique.md进行评判。
常见错误
| 错误 | 表现 | 修正 |
|---|---|---|
| 从相机位置测量主光 | 转向的脸上出现正面、平淡的主光 | plan_character_rig 从面部轴线测量 |
| 从镜头轴线打补光,或使用环境光 | 面部平淡,没有核心阴影 | 从偏离轴线、略靠前的位置环绕补光;删除环境光(Arnold 不支持) |
| 轮廓光与主光一样亮或更亮 | 两个光源互相竞争 | 轮廓光至少比主光低 0.5 档;rim_equals_key |
| 为降噪而提高 AA 或所有采样器 | 时间激增,噪点依旧 | 使用 noise_pair,然后只提高一个采样器;AA 用于 alpha、模糊、反射漫反射 |
| 提高面光源的每灯采样数 | GLS 下无效 | 使用全局灯光采样;每灯采样仅用于穹顶、远距离或本地模式 |
| 使用发光几何体作为光源 | 采样无法清除的噪点 | 使用面光源或网格光源(LGT) |
| 灯光组名称拼写错误 | 通道为空,没有报错 | 使用一个字典;group_contract、check_sums |
| 为反弹卡或发光平面设置灯光组 | RGBA_cards 为空 | 灯光组属于灯光;卡片归入其灯光所在的组;发光通道为 O(发光 AOV,LPE C.*O) |
| 凭习惯设置光圈(“f/11 能让产品保持清晰”) | 产品有一半是虚的 | 使用 L.dof_plan;让相机更接近与必须清晰的物体垂直的方向 |
| 穹顶设为 1k,而镀铬物体反射 4k HDRI | 反射模糊 | 分辨率设为 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")、已批准的 playblast。来自 scenario-maya-fx 和 scenario-maya-groom:带帧范围的版本化缓存。 - 交付给合成或客户端:EXR
<shot>_<layer>_v###.####.exr(ACEScg 场景线性、 单部分、zip、半精度颜色、浮点 Z/P/N、灯光组、遮罩);显示用 PNG;critique.md/json、annotated.png、单独显示和括号表;comp_recipeJSON;渲染日志(每帧秒数、 每像素射线数);未验证列表。需要修改 GI 或反射的修复,或在多个镜头中重复出现的问题,反馈给 scenario-maya-lookdev(BRJ-CM Ch.9)。
Maya 2027 说明
- MtoA 5.6.x(Arnold 7.5,许可证 ARNOL_2027);使用 Arnold RenderView,因为 Maya IPR 无法与 MtoA 5+ 配合使用。
- 默认使用全局灯光采样;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,因此测试会带水印 [verify value]。 使用Render -r arnold,绝不要使用maya -render。 - OCIO v2:ACEScg、ACES 视图;自 2026.2 起,输入使用
sRGB Encoded Rec.709 (sRGB);没有 ACES2065-1 渲染空间;.tx、.hdr、.exr 的规则默认设为 Raw;查询名称。 - Render Setup 和旧版图层在同一会话中不能同时使用;设置以 JSON 模板形式传递。
参考资料
references/expert-notes.md:按专家整理的深度说明,包含时间戳、 分歧和决策者。上文未涵盖某项决策时加载。references/procedures.md:从 P0 到 P13 的流程块,涵盖从简报到最终版及 镜头。编写灯光代码前加载。references/critique.md:将画面评审映射到代码检查、评分标准和严重程度。每个关卡都要加载。references/gui-paths.md:供计算机操作 Agent 或人工使用的菜单和编辑器路径。references/sources.md:来源、凭据、URL、时间戳。scripts/mx_light.py:工具包;其文档字符串列出每个调用及其运行位置。