mcpField
S
scenario-maya-lookdev

scenario-maya-lookdev

github.com/scenario-labs创意与媒体1.2k176 次安装1 天前更新
代码仓库

关于 scenario-maya-lookdev

面向 Maya 2027 与 Arnold 美术和技术美术人员的材质开发技能,涵盖贴图规范、物理材质参数、表面细节及转台评审,并提供场景检查与交付流程。

主要功能

  1. 01检查贴图色彩空间、通道与连接
  2. 02构建并分配材质
  3. 03设置置换与表面细节
  4. 04创建皮肤、玻璃和汽车漆材质
  5. 05生成转台渲染与交付报告

适用场景

  1. 01为产品或角色模型开发材质
  2. 02排查贴图连接和材质参数问题
  3. 03比较法线贴图与置换效果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/scenario-labs/skills --skill scenario-maya-lookdev

安装后在 Claude Code 中输入/scenario-maya-lookdev确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

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

详细介绍

Maya 2027 外观开发(Arnold)

专家级外观开发,是指材质在任何光线下都能经得住检查:输入数据正确(每张贴图都使用正确的色彩空间并连接到正确的插口),基础值符合物理意义(测得的金属颜色、随深度着色的玻璃、按真实尺度设置的散射),然后再有意加入瑕疵,并在带参考球的中性转台上评估,每次渲染只改一项。每次渲染都必须先检查,才能进行下一步。如果这里提到的某个同级技能不在你可用的技能列表中,请让用户安装它(npx skills add scenario-labs/skills --skill <name>);若需无人值守地继续,则依据工具架构进行操作,并标明此处的缺口。

必备背景: scenario-maya-expert(执行通道、审查循环、2027 版陷阱)。

状态(2026-09-24): scripts/mx_shade.py 尚未在 Maya 中运行:122 项离线检查已通过;Maya 层使用伪造的 maya.cmds 运行(仅验证逻辑)。安装 Maya 后,运行 tests/code/maya-lookdev/run_all.sh,再根据 probe_lookdev.json 修正属性表。

方法(专家要诀)

  • 每张贴图都要遵守三部分约定:色彩空间、灰度插口、目标。 Sarkamari 的表格 [ZtEiVa3MPLg 00:27:44];J Hill 提出的两个问题:“它是什么色彩空间?它是黑白图吗?”[mpk6IurOWbs 00:21:43]。基础色、次表面和自发光颜色属于颜色(8/16 位使用 sRGB,EXR 使用线性 Rec.709);其他所有贴图都使用 Raw。关闭 Alpha Is Luminance 时,outAlpha 不会读取任何数据(Raycast [vPHhVrxxThU 00:19:14])。Maya 2027 的规则会将 .tx、.hdr 和 .exr 标记为 Raw,因此基础色 .tx 或 EXR 的读取结果会出错:需要覆盖规则,并启用 Ignore Color Space File Rules(Maya 2027 帮助文档)。
  • 使用 ACEScg 时,HDRI 应为线性 Rec.709,而不是 Raw。 J Hill 和 Raycast 将其设为 Raw,这只在线性 sRGB 渲染空间中才正确;Arnold 的 ACES 页面指出,将线性 HDRI 作为 ACEScg 读取是不正确的。从线性 sRGB 表格中输入的颜色也会转换到渲染空间 [补充:色卡数值使用渲染空间,Maya 2027 帮助文档]。
  • 金属参数是数据,不是个人喜好。 OpenPBR 的基础色是 F0,镜面反射颜色是边缘着色 F82,两者均取自 Arnold 表格;IOR 对金属不起作用(Arnold OpenPBR 文档;官方入门介绍 [tEUiIBApw-U 00:02:51])。通用艺术家通常会将镜面反射颜色留为白色。
  • 尺度就是物理。 次表面半径和透射深度都是世界空间长度。玻璃颜色取决于深度,而不是饱和度:使用浅色调,降低深度以加深颜色(Arvid [cpMBRIWwghg 00:18:13])。真实尺度下,皮肤的散射约为 1 mm(J Hill,比例设为 0.1,单位为 cm [mpk6IurOWbs 00:18:31])。
  • 完美材质看起来像 CG:“只要看看反射就知道了。” 对粗糙度加入范围受控的噪波,添加微妙的微表面凹凸,在涂层法线中加入汽车漆般的起伏,绝不要改动基础色(Arvid [cpMBRIWwghg 00:35:49, 00:43:25]);J Hill 的“细微变化”分层 [mpk6IurOWbs 00:23:24]。抛光金属和玻璃也要加入污渍或指纹粗糙度,文档本身就有这样的示例(OPBR § Specular Roughness;Arvid [cpMBRIWwghg 00:25:11]),但要与参考保持一致的洁净程度。
  • **搭建分层着色器时,先关闭所有反射瓣,再逐个添加,**每次渲染只做一两项改动(Arvid [cpMBRIWwghg 00:36:52];J Hill [mpk6IurOWbs 00:51:43])。
  • 主视觉特写使用置换;道具使用法线贴图。 法线贴图处理的鼻子“在我看来很扁,很假”(J Hill [mpk6IurOWbs 00:28:39])。烘焙浮点 EXR,并将零点设为 0,以便叠加微细节;匹配零值,并为边界留出填充。
  • 先在外观开发灯光架上评估,再使用参考图中的灯光。 摄像机中放置镀铬球、灰球和漫反射色卡;资产旋转展示,然后使用 HDRI(Raycast [vPHhVrxxThU 00:05:11, 00:07:43])。主视觉产品要对照照片评估,并先按照片中的光线布光(Arvid [cpMBRIWwghg 00:02:44, 00:36:21]);Painter 中的转移效果要使用 Painter 的 HDRI 和焦距(Sarkamari [ZtEiVa3MPLg 00:13:10])。

首先确定

输入变更未指定时的默认值
目标Arnold 静帧或序列,还是游戏引擎(为导出调整着色,在引擎中评估)Arnold
着色器模型新资产使用 OpenPBR(自 2026 年起为默认选项,支持 MaterialX 和 USD);当场景、Painter 的“Arnold (AiStandard)”导出或流水线使用 aiStandardSurface 时,则使用它OpenPBR
主体或背景每种材质使用单独的着色器、置换和变化效果,还是使用一个带纹理的着色器(Raycast [vPHhVrxxThU 00:11:20])填满画面时使用主体着色方案
纹理来源Painter 预设、法线约定、UDIM、位深、置换零点和缩放、是否要使用 AOOpenGL 法线,不使用 AO
渲染空间mx_shade.cm_info();转换已指定类型的颜色ACEScg、Maya 默认配置
尺度SSS、透射、置换、噪声的缩放以 cm 为单位的实际尺寸
外观参考每种材质的照片;HDRI:中性影棚环境,序列中为背景图使用的经调色 HDRI(Raycast [vPHhVrxxThU 00:01:58]),用于迁移时使用 Painter 的 HDRI程序化影棚 HDR[新增]
摄影机85 mm 人像镜头(J Hill [mpk6IurOWbs 00:05:10]);产品拍摄使用更长焦距[新增]85 mm,24 + 24 帧

工作流

所有阶段均通过 scenario-maya-expert 的 mx_run.py --plugins mtoa 以无头模式运行; import mx_shade as sh。Arnold RenderView 仅支持 GUI:使用批量渲染进行迭代,然后打开渲染结果。

  1. 接收检查。 mx_validate.validate(profile="model"),使用 mx_audit.audit(mesh) 检查 UV(每个面都已映射,UDIM 瓦片干净),根据包围盒确定真实尺寸;用于 SSS 和透射的网格应为闭合且朝外(参见 Arnold 文档)。关卡:验证无问题,UV 完整,尺寸符合参考。
  2. 外观开发场景。 ld = sh.lookdev_scene(["asset_GRP"], hdri=path, frames=24):设置转台定位器、宽度与 HDRI 相同的 skydome(上限为 4096)、标记为线性 Rec.709 的 HDRI,以及一台从次级光线中隐藏参考色卡的相机。关卡:第 1 帧中,铬球显示方向正确的 HDRI,灰球呈中性,且接近色卡上的中性第 5 色块。
  3. 材质规划。 为主视觉资产的每种材质设置一个着色器,命名为 <asset>_<part>_MTL / _SG;通过名称表分配,确保重建模型后仍可沿用着色器(Arvid [cpMBRIWwghg 00:01:37])。关卡:每个网格都已脱离默认着色组。
  4. 纹理连接。 ts = sh.parse_texture_set(folder); sh.build_material(ts, "case", meshes=[...], texture_set="watch_case")。选项:normal_mode 可用 aiNormalMap(默认值)、bump2d、hybrid;对于 2027.1+ 的 Painter 烘焙,设置 tangent_space="mikk",并在倒角上进行 A/B 对比 [待验证];仅在需要匹配 Painter 或实时渲染的外观时使用 ao="multiply"。对于大型资产和批量处理,预先烘焙 .tx(使用 TX Manager 或 maketx);文件节点仍连接源图像并保留其色彩空间(Raycast [vPHhVrxxThU 00:13:04])。关卡:sh.verdict(sh.lint_scene())["pass"];在 Painter 的 HDRI 和焦距下渲染,与 Painter 截图匹配。
  5. 基础值,一次处理一个光泽层。 saved = sh.isolate_lobes(shader, keep=("base",)),渲染后再添加高光、涂层及其他部分;表格材质使用 sh.apply_preset(shader, "steel_polished")。关卡:最终采样数下的每种材质裁切图;对照照片检查高光尺寸和边缘色调。
  6. 表面细节。 道具使用法线贴图;主视觉有机物使用置换: sh.add_displacement(sg, "disp.exr", meshes, scale=s, zero=0.0, iterations=2)(最终渲染设为 3 到 4)。关卡:输出多边形预算,无被裁切的黑色块,并对法线与置换的裁切图进行 A/B 对比。
  7. 变化细节。 sh.roughness_breakup(shader, lo, hi)、sh.smudge_roughness(shader)(扫描或单元噪声,叠加使用)、sh.noise_bump(shader, height, scale)、sh.coat_waviness(paint); 每个对象的遮罩(表盘、刻度、表壳部件)作为 mtoa_constant_ 用户数据,不添加额外纹理: sh.user_mask(shapes, "mask")(Arvid [cpMBRIWwghg 00:23:04])。关卡:转台上,高光会在面板间断开并移动,绝不摇晃。
  8. 特殊材质。 使用 sh.skin(...)、玻璃预设及 sh.set_transmission_depth、 sh.car_paint(...)、sh.hair_shader(...);检查项见 references/critique.md。相互接触或重叠的透射介质(垫圈上的水晶、玻璃中的液体)应设置 Dielectric Priority:数值越高优先级越高,玻璃为 3,夹杂物为 2,液体为 1(OPBR § Dielectric Priority)。关卡:lint 中的 dielectric_priority 无问题。
  9. 转台审查与交接。 sh.render_frames([1, 7, 13, 19, 25, 31, 37, 43], out) 会写入 PNG 和图集;根据评审标准进行判断;运行 sh.handoff_report(path),并保存新版本。关卡:lint 通过,图集已审查,已列出未验证项。

数值

项目数值相对于,来源
钢材 F0 / F820.669 0.639 0.598 / 0.789 0.823 0.870线性 sRGB,Arnold OpenPBR 表(METALS_OPENPBR 中的 12 种金属)
皮肤次表面 1,半径缩放 (1, 0.35, 0.2),IOR 1.4,半径 1 mmJ Hill [mpk6IurOWbs 00:17:25];文档示例中的 3.7 mm 更深
皮肤油脂涂层粗糙度约 0.1,遮罩由反转粗糙度生成J Hill [mpk6IurOWbs 00:32:49]
毛孔细微起伏鳄鱼纹单元噪声,置换振幅为 0.003 至 0.004J Hill [mpk6IurOWbs 00:34:48]
细分catclark,制作过程中为 2,最终为 3 至 4;每级多边形数量增加 4 倍J Hill;Arnold 细分文档
置换零值浮点烘焙时为 0,中灰贴图时为 0.5J Hill [mpk6IurOWbs 00:26:59]
玻璃IOR 1.5,粗糙度 0,浅色调,深度接近物体尺寸Arvid [cpMBRIWwghg 00:17:40];[新增] 深度起始值
色散平面、平行面晶体关闭(无可见色边)[新增光学说明];刻面宝石或近距离倒角使用较小值,并根据材料的阿贝数设置OPBR“仅限宝石”;摘要 P9
橡胶线性基色 0.01 至 0.04,通过 smoothstep 范围设置粗糙度 0.2 至 0.4Arvid [cpMBRIWwghg 00:06:25, 00:10:47]
皮革鳄鱼纹单元噪声凹凸,缩放 400 至 500,非常微妙,粗糙度约 0.2Arvid [cpMBRIWwghg 00:04:33]
拉丝金属粗糙度约 0.15,提高各向异性,镜面采样数 3,旋转贴图 mip 偏置 -8,平滑切线 + 1 次迭代Arvid [cpMBRIWwghg 00:15:43];SS 文档
汽车漆碎片缩放 0.001 至 0.025,碎片粗糙度 0.2,涂层 1,涂层法线噪声设为 3、25、80、200,混合值约 0.01Arvid [cpMBRIWwghg 00:39:01 to 00:47:46]
薄膜Standard Surface 为 0 至 2000 nm;OpenPBR 使用微米,超过 1 后颜色逐渐淡出Arvid [cpMBRIWwghg 00:31:47];[tEUiIBApw-U 00:12:35]
头发黑色素含量:金发 0.2,棕发或红发 0.5,黑发 1;粗糙度 0.2;IOR 1.55;偏移 0 至 10;漫反射 0;色调为白色Arnold Standard Hair 文档
天空穹顶分辨率HDRI 宽度(默认 1000)Arnold 灯光文档

质量门槛

  • 代码: sh.verdict(sh.lint_scene())["pass"](零错误)。Lint 会检查纹理约定(空格、插头、UDIM、法线连接、缺失文件、.tx)、物理合理性(权重、F82、玻璃色调和深度、电介质优先级、薄膜、不透明度、各向异性、污迹)、细分和置换,以及整洁度。规则见:references/critique.md。
  • 视觉: 使用 references/critique.md 评审转台图表和局部裁剪:纹理变化清晰可见且会移动、金属边缘色调、玻璃色调随厚度加深、耳朵背光,以及不显蜡质的鼻子;增加采样后仍存在的萤火点是数据问题(Raycast [vPHhVrxxThU 00:33:43])。

常见错误

错误看起来像修复
粗糙度或金属贴图使用 sRGB塑料般发亮或金属暗淡使用 Raw + Ignore Color Space File Rules
通过 outAlpha 转换灰度,且 Alpha Is Luminance 关闭贴图不起作用使用 outColorR,或开启 Alpha Is Luminance
将 Base Color .tx 或 EXR 设为 Raw 规则颜色褪色或过度饱和sRGB(8/16 位源)或线性 Rec.709
在 ACEScg 下将 HDRI 设为 Raw灯光和反射过度饱和使用线性 Rec.709 输入空间
法线连接到普通 bump 或直接连接到着色器法线凹凸不平或扁平使用 aiNormalMap,或 bump2d Tangent Space Normals
将 DirectX 法线当作 OpenGL 法线读取一个轴上的浮雕效果反转(凹陷看起来像凸起)在 aiNormalMap 上启用 invertY(在 bump2d 上翻转 G)
同时使用 Smooth Mesh Preview 和 Arnold 迭代渲染时间激增设置 displaySmoothMesh 0
置换的零值不正确物体膨胀或收缩使用 0.5 中灰贴图,0 浮点烘焙
未设置边界填充置换渲染中出现黑洞根据最大置换量设置填充
透射颜色过于饱和玻璃呈黑色、墨水般使用浅色调,降低深度
玻璃或液体重叠,且优先级相同(0)重叠处折射错误使用 Dielectric Priority,数值较高者优先
粗糙度为 0 时使用各向异性,或表面有平面感拉丝效果不可见或呈阶梯状粗糙度 > 0,切线平滑,使用 1 次迭代
在基础法线上加入汽车漆波纹涂层反射始终笔直仅在涂层法线上添加(Arvid [cpMBRIWwghg 00:43:25])
创建了层着色器,却仍将置换留在旧 SG 上置换消失重新连接到新的 SG(J Hill [mpk6IurOWbs 00:49:07])

交接

  • 接收 scenario-maya-retopology-uv 的交付物:通过 validate(profile="model") 验证的版本、完整的 UV(0-1 或干净的 UDIM)、注明的纹素密度、按通道命名并标明法线约定和切线基的烘焙贴图,以及标注零值和比例的位移 EXR。接收 Substance Painter 的交付物:纹理、预设名称、法线格式、UDIM 标志,以及 Painter 中显示的 HDRI。接收 scenario-maya-groom 提供的、用于使用 aiStandardHair 着色的描述。
  • 交付给 scenario-maya-lighting-rendering:<asset>_lookdev_v###.ma(绝不覆盖源文件),其中包含已命名的材质和着色组;handoff_report() JSON(材质、纹理、色彩空间、.tx 状态、位移、通过验证的结论);转台表;采样说明(SSS、透射深度、各向异性、需避免降噪器抹除的闪光);以及未验证项列表。渲染设置、AOV、灯光组和降噪由灯光环节负责。

Maya 2027 说明

  • OpenPBR 是默认着色器。从 Standard Surface 移植(sh.port_standard_to_openpbr)时:薄膜 nm 转为微米,发射权重 1 转为 1000 尼特,SSS 半径和比例的作用互换,sheen 转为 fuzz,色散需要比例大于 0,金属颜色需根据 F82 表重新挑选。“Convert All Standard Surface to OpenPBR Surface” 会跳过网络中的着色器(MTOA-2560):之后需运行 lint。
  • 色彩名称:自 2026.2 起,默认输入为 sRGB Encoded Rec.709 (sRGB);线性 sRGB 有两种拼写;“Utility - Raw” 是 ACES 1.x 的命名方式:始终使用 sh.space_name(role)。更改渲染空间后重新生成 .tx(Brejon)。
  • normal_map.tangent_space_type 使用 mikk(MtoA 5.6.1.1、Maya 2027.1);interior_set 取代 sss_setname;5.6.0 中 OpenPBR 薄膜能量发生变化,可能导致旧资产的色相偏移;Standard Hair 的 scattering_mode(5.6.0)。
  • Maya IPR 不适用于 MtoA 5+(Arnold RenderView);没有许可证时,命令行渲染会带水印;“Use Autobump in SSS” 已弃用;默认启用的嵌套电介质会改变旧的液体中玻璃场景。

参考资料

  • references/expert-notes.md:按专家整理的深入说明,包含时间戳、不同意见和决策者。遇到上文未涵盖的材质或决策时加载。
  • references/procedures.md:经测试验证的流程,以及与交接的衔接方式。编写着色代码前加载。
  • references/critique.md:转台、裁剪或 lint 报告的评估标准。每个关卡都要加载。
  • references/gui-paths.md:Hypershade、Attribute Editor、Arnold 和 Painter 的路径,供计算机操作 Agent 或人工使用。
  • references/sources.md:来源、凭据、URL、时间戳。
  • scripts/mx_shade.py:工具包(文档字符串列出了每个调用)。

评论

支持 Markdown