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. 03通过 AOV 定位噪点
  4. 04设置灯光组与渲染通道
  5. 05配置 EXR 输出及渲染交付

适用场景

  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)

专家级照明是一项可衡量的叙事决策:明确观众的视线必须落在哪里,用一盏主导光源塑造每个形体,由后向前组织明暗关系,并用灯光组和数值验证,直到视觉判断认可。渲染是工程:先从 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 使用:使用批量渲染进行迭代,并打开渲染结果。

  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]);景深计划可执行。
  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、半精度色彩、浮点 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),使未授权的批量渲染中止而非添加水印;重新计时一张完整画面;检查退出代码和文件;评审;创建新版本。GATE:帧已写入磁盘,报告已撰写,并已列明未验证项。

数值

项目数值对应内容、来源
每像素射线数AA² x samples²: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;镜面反射为 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 到 50BRJ-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 上不使用 -tAOV § 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_recipe JSON;渲染日志(每帧秒数、 每像素射线数);未验证列表。需要修改 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:工具包;其文档字符串列出每个调用及其运行位置。

评论

支持 Markdown