关于 scenario-zbrush-paint-render
面向 ZBrush 角色上色与展示的技能,适用于需要系统化处理顶点色、贴图和渲染的创作者与 Agent。它通过解剖色区、遮罩绘制、分阶段审阅和贴图预算检查来组织上色,并覆盖作品集视图与转台输出。
主要功能
- 01按解剖区域规划颜色分区
- 02通过遮罩与强度控制填色
- 03检查顶点数与贴图尺寸预算
- 04审阅中性色、平涂和材质视图
- 05生成渲染图、图层通道与转台
适用场景
- 01为角色模型绘制肤色与解剖色区
- 02在顶点数约束下导出颜色贴图
- 03制作多视图作品集展示与转台
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ scenario-labs/ skills --skill scenario-zbrush-paint-render安装后在 Claude Code 中输入/scenario-zbrush-paint-render确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/critique.mdexpert-notes.mdgui-paths.mdprocedures.mdsources.mdscripts/zb_paint.py详细介绍
ZBrush 绘制与渲染(纹理与呈现艺术家)
在 ZBrush 中进行专业绘制,就是把观察系统化:根据皮肤下的结构布置色区,增强到足以穿透着色器的程度,在中性、平涂视图中评判,并以网格能够承受的分辨率烘焙。对于没有数位板的 Agent 来说,大部分工作都靠按钮完成:通过生成的遮罩以选定强度填充、将色区图像投射到网格上,以及对渲染进行测量和观察。如果这里提到的同名配套技能不在你可用的技能中,请让用户安装(npx skills add scenario-labs/skills --skill <name>);无人值守时,请根据工具架构继续操作,并标明这一缺口。
必备背景: scenario-zbrush-expert(桥接、笔触引擎、评审循环、2026 年陷阱)。
原则(专业技巧增量)
- 最后绘制,并在最高细分级别操作。 Polypaint 是每个顶点一种颜色:在较低级别绘制会模糊,之后再添加细分级别会破坏效果,而且贴图受点数限制(2K 贴图约需 4M 个点;用 4K 贴图纯属浪费)(FlippedNormals)。
- 在中性和纯色视图中评判。 使用 SkinShade4 或 MatCap White01,并搭配 Flat Color。有色调的 MatCap 会让你矫枉过正,导致导出效果在其他地方看起来不对(FlippedNormals、Pablo)。
- 先结构,再美化。 先制作纯黄色、红色和蓝色的分区图,并按解剖结构布置:骨骼和脂肪用黄色,薄组织用红色,凹陷用蓝色,男性身上低处用更多蓝色。然后以低不透明度覆盖肤色,让分区隐约透出(Pablo)。对于 Agent,这也是一种可以用数字检查的做法。
- 遮罩是“真正的诀窍”(Pablo): 使用生成器、Mask Adjust、反转遮罩,再通过遮罩上色。对于 Agent,做法是通过反转后的遮罩,以较低 RGB Intensity 使用 FillObject 这把大号软笔刷:其效果随 RGB Intensity 缩放(FlippedNormals);Pavlovich 通过反转后的 AO 遮罩填充,工具提示显示“Fill 3D Object Masked”。
- 饱和度是风格化的调节旋钮(Pablo);绘制时要考虑之后会被稀释(FlippedNormals)。 着色器会冲淡 Polypaint。确定最终渲染器后,再决定增强到什么程度,并让真实肤色处于拾色器的中间区域。
- 对比度引导视线。 最强的明度或饱和度对比应放在眼睛上;眼睛和嘴巴最值得花时间(FlippedNormals)。
- 先小而快,再大而慢(Pavlovich)。 以较高的 Error Threshold 进行小范围测试,并排比较渲染结果,再根据各个渲染通道重建最终效果,而不是重新渲染。
- 可见性陷阱(Maxon 文档)。 显示的纹理会遮住 Polypaint。在 Redshift 中,只有 Polypaint 材质会显示绘制结果(Use Material Color 0、白色 Base);SSS Weight 设为 1 会遮住绘制结果,而 MatCap 不显示纹理。
首先确定
| 输入 | 变更 | 简述未说明时的默认值 |
|---|---|---|
| 用途:游戏反照率、电影外观开发参考、静帧、彩色打印、概念绘画覆涂 | 是否允许绘制阴影;贴图尺寸;交付物 | 展示静帧,颜色保留为多边形绘制 |
| 渲染器 | 材质、通道、转台方案 | BPR。Redshift 是独立应用,mx1 product list 显示它尚未安装在这台 Mac 上(2026-09-24);安装前请先询问 |
| 风格 | 饱和度目标、色区简化 | 上游技能的风格:scenario-zbrush-character-creature 为写实风格,scenario-zbrush-stylized 为风格化 |
| 主体:性别、年龄、体型、肤色 | 色区布局和色相 | 询问一次;若仍未说明,则假设为浅肤色、体型平均的成年人,并明确说明这一点 |
| 颜色交付物 | UV、贴图尺寸、Flip V | 顶点颜色;仅在存在 UV 时添加贴图 |
| 图像 | 文档尺寸、视图、转台 | 1920 x 1080(Pavlovich);正面、四分之三视角、侧面和背面;供审核的转台为 36 帧,交付时为 30 fps 下的 180 帧(Movie 默认值)[已添加] |
工作流
工具包:scripts/zb_paint.py,通过 zp.remote("name", ...) 调用 ZBrush 端的函数;完整代码见 references/procedures.md。每完成一个阶段,都保存一个带版本号的 ZTL:没有撤销功能。
- 预检。
paint_state()(细分级别、点数、UV、纹理显示)、recommend_map_size(points)、texture_off(),然后保存 ZTL。关卡:位于最高级别,map_budget(points, side)检查通过,磁盘上有 v001。如有需要,现在就细分,绝不要等到开始绘制后再做。 - 设置和底色。
set_paint_mode("rgb")(关闭 Zadd 和 Zsub),fill(colour, 100):使用暗淡的肤色底色(FlippedNormals、doc 路线),或使用纯黄色作为分区路线(Pablo)。关卡:正视 Flat 模式显示填充色;Colorize 已开启。 - 分区图。 部件(眼睛、围巾、牙齿、衣物):
fill_subtools。多边形组:使用polypaint_from_polygroups()检查,通过zone_fill_by_split()精确填充(Duplicate、Groups Split、分别填充每个部分,再在 Colorize 开启时 Project All 投射回去)。单一网格上的解剖结构:skin_zone_plan→zone_image→polypaint_from_image(使用平面 UV,在创建实际 UV 前);以合成的 Color Spray 笔触作为备用方案。关卡:skin_zone_checks(stage="zones"):额头比中面部更黄,中面部更红,男性的下三分之一更蓝,各自至少相差一个 JND(2.3 Lab);有意呈现小丑效果(Pablo),每个分区都位于对应的解剖部位。 - 覆盖和变化。 在分区上以 20% 到 40% 的强度覆盖肤色(doc RGB 约为 30;Pablo 使用低不透明度覆盖);通过分区图噪点或 Color Spray 笔触增加变化。关卡:
stage="covered":没有小丑效果(饱和度高于 0.75 的皮肤像素最多为 5% [新增]),存在斑点。 - 蒙版处理,使用
mask_pass:以 20% 到 40% 的强度让腔体更暗、更红;使用 PeaksAndValleys(PVRange 14)或 Smoothness,并填充浅暖色;使用ao_plugin蒙版添加紫红色底调(之后进行检查)。Pablo 的 Adjust Colors 是一个对话框 [验证 live_p06];通过同一蒙版进行低强度填充可替代它。无法读取蒙版数据:使用mask_coverage(masked, cleared)验证蒙版。关卡:每次处理都会略微改变区域统计值,叠加后整体呈现皮肤效果,包括头部后方。 - 重点和收尾。 眼睛:将虹膜图像(深色环、下方较浅、上方较深、靠近瞳孔处较浅)投射到眼睛 SubTool 上,然后稍作偏移;处理嘴唇;仅在渲染器不添加 AO 时,才在光线永远无法照到的位置选择性加深;再以 5% 到 10% 的强度轻柔罩染,增加真实感。关卡:最终运行
skin_zone_checks并检查眼部对比度,然后使用references/critique.md中的标准评估 Flat、SkinShade4 和 MatCap White01 图稿(paint_review)。 - 交付颜色。
texture_from_polypaint(path, side, flip_v=True)需要 UV(在克隆体上运行 UV Master,Paste UVs 会保留 polypaint);或使用 OBJ 顶点颜色;或使用 Substance Bridge Send PolyPaint。关卡:贴图预算检查通过,不对称标记位于预期位置,文件已保存到磁盘。 - 渲染。 保存,使用
set_document_size(测试时使用较小尺寸;Resize 会清空画布,该函数会重新绘制),使用render_setup(透视、阴影、AO),再使用bpr_render或paint_views(..., "bpr")生成匹配视图。关卡:render_checks检查通过,且已按 100% 缩放检查渲染图。 - 渲染通道和转台动画。 使用
export_bpr_pass(可能会打开对话框);使用subtool_solo_views加id_pass生成小丑通道(不更改 paint 和多边形组);使用composite(通过蒙版以 Multiply 混合阴影和 AO);分批运行turntable_frames,每批时长较短,再使用assemble_turntable。关卡:每一帧方向正确、构图一致;与精美渲染图切换对比时,合成结果更好。 - 作品集和报告。 灰色形体视图(
colorize_all(False)、zb_review.review,然后恢复),反照率和精美渲染视图、ID 通道、转台动画、一张图稿。报告测量了哪些内容、哪些内容仅通过观察判断,以及哪些步骤未运行。
数值
| 数值 | 相对于 | 来源 |
|---|---|---|
| 每张 2K 地图约有 4M 个点;2K = 4M 像素,在 UV 覆盖率为 70% 时约有 3M 个可用像素 | 地图边长与顶点数 | FlippedNormals 00:30:32;文档 |
| FillObject 的 RGB Intensity 设为 N%,即与当前颜色混合 N% | 当前颜色 | FlippedNormals 00:02:51 |
| RGB 约为 30 的区域、约为 10 的洗色效果;覆盖 Draw Size 150 的范围,区域值为 100 或更低 | 笔刷笔触 | 文档《Painting a Head》 |
| PVRange 14 | Mask PeaksAndValleys | Pablo 01:26:37 |
| Map Border 设为高(frames 4 和 16),开启 FlipV | Multi Map Exporter | FlippedNormals 00:31:22 |
| 最终尺寸 1920 x 1080;测试尺寸 1280 x 720 或 720 x 405;明信片尺寸 3200 x 2133;印刷尺寸为英寸 x 300 ppi | 文档 | Pavlovich;文档 |
| 最终渲染的 Error Threshold 为 0.01,测试为 1(4 秒对比 9 秒);Progressive 设为 64,降噪时设为 25 | Redshift | Pavlovich 040h 00:44:03 |
| 使用 HDRI 时,主灯光为 0.1(绝不设为 0);EXR gamma 为 2.2;macOS Redshift gamma 为 1.8 | Light,Background | Pavlovich 00:23:12;文档 |
| Crease Level 比 SmoothSubdiv 低一级(3 和 4) | 柔和边缘高光 | Pavlovich 00:21:26 |
| Movie Turntable 默认 180 帧 | Movie > Modifiers | Pavlovich FvpG 00:19:56 |
| 逼真的平均 HSV 饱和度 < 0.5 | 皮肤区域,Flat 渲染 | Pablo 01:10:30(拾色器中间位置) |
| 1 JND = 2.3 Lab;小丑色块占比 5%;L* 范围 50;裁切 0.5%;噪声 sigma 2 | 关卡 | [新增],根据实时渲染进行校准 |
质量关卡
- 可测量:
paint_state(顶层,Rgb 开启,Zadd 关闭,纹理关闭);map_budget; 遮罩填充前的mask_coverage必须大于 0;在正面 Flat 渲染中使用head_regions_front()或由地标投影得到的区域进行skin_zone_checks;render_checks(构图、明暗范围、裁切、噪声);使用带顶部标记的转台帧进行upright_score检查;检查磁盘上的文件及其大小。 - 视觉: 查看五个视角的 Flat、SkinShade4 和 MatCap White01 图表以检查颜色,并查看最终效果的 BPR 或 Redshift 美术渲染。将每张图以 100% 缩放检查色块断裂和边缘,并以缩略图检查区域和明暗值。留意米色或小丑色、嘴唇、眼睛焦点、头部后方、淤青、阴影截断和颗粒。评估标准见
references/critique.md。
常见错误
| 错误 | 表现 | 修正方法 |
|---|---|---|
| 在顶层以下绘制,或之后再细分 | 绘制模糊、像素化;出现瑕疵 | 最后在顶层绘制;先细分 |
| 在带色调的 MatCap 上判断 | 在 ZBrush 中颜色正常,在其他地方却不对 | SkinShade4、MatCap White01、Flat Color |
| 绘制时未关闭 Mrgb | 审阅用的 MatCap 不再显示;材质被绘制进去 | 绘制时仅使用 Rgb;M 或 Mrgb 仅用于为渲染材质填充颜色,并在已保存的 ZTL 上操作 [added] |
| 已绘制模型呈现灰色 | 在 MatCap Gray 上显示颜色 | colorize_all(False),然后恢复 |
| 显示了纹理 | 新绘制的颜色不可见 | texture_off() |
| 直接使用腔体遮罩 | 出现生硬的环状痕迹 | 使用带模糊的 Mask Adjust;降低强度 |
| 在数百万个多边形上使用 Mask By AO | 速度慢、不准确 | 使用 Ambient Occlusion 插件 |
| 在已绘制的原始模型上使用 UV Master | Polypaint 被擦除 | 在 Clone 上操作,Copy UVs,Paste UVs |
| 在 4M 个点上使用 4K 贴图 | 浪费贴图,纹素模糊 | recommend_map_size |
| Redshift 使用预设材质或 SSS Weight 1 | 绘制颜色消失 | 使用 Polypaint 材质,将 Use Material Color 设为 0,Base 设为白色 |
| 在低多边形硬质部位上启用 Smooth Surface | 着色出现淤痕 | 关闭;使用 Dynamic Subdivision 创建折痕 |
| 使用正交视角渲染精美图 | 画面平淡、技术感强 | 开启透视 |
| 从脚本运行 Movie > Turntable | 无法停止;询问是否已有影片 | 使用脚本生成帧,再使用 assemble_turntable |
| 每帧都累加角度 | 旋转角度超过 90 度后翻转 | 使用 turntable_rotations 返回的绝对角度三元组 |
交接
- **接收:**来自 scenario-zbrush-sculpting、scenario-zbrush-character-creature 或
scenario-zbrush-stylized 的最终版本化 ZTL,位于其顶层,包含
stats()和最后一张 评审图,以及以名称标记为 SubTool 的眼睛和部件。来自 scenario-zbrush-hard-surface 的带有 折痕的 SubTool 部件。来自 scenario-zbrush-pose-print 的摆好姿势的 ZTL(尽可能在摆姿势 前使用对称绘制 [已添加])。 - **交付给 scenario-zbrush-retopology-export:**绘制完成的 ZTL、
recommend_map_size给出的 贴图尺寸建议,以及导出的颜色贴图(texture_from_polypaint),或在烘焙前请求在克隆体上 创建 UV。Multi Map Exporter 的 Texture from Polypaint 会在该技能的贴图批处理中运行。 - **交付给用户:**精美渲染图、灰度图和反照率图、渲染通道及合成图、转台 MP4 或 GIF、 作品集图和 ZTL 路径,并说明已验证的内容。
- **协作团队:**scenario-blender-texturing-shading 和 scenario-maya-expert,负责使用顶点 颜色或贴图进行外观开发;scenario-zbrush-automation,负责批量渲染。
ZBrush 2026 说明
- Redshift 需要单独的应用程序;自 2025.1 起支持使用 OIDN 的 AOV,自 2025.2 起支持与 Cinema 4D 匹配的材质。BPR 没有变化。
- Substance Bridge(2026.2)会将 polypaint 作为填充图层发送到 Painter;其 Force UV Auto-Unwrap 会移除每个 SubTool 的 UV。
- 动画:MP4(macOS 上为 MOV),尺寸需缩小到 4095 px 以下。Mask by Smoothness 已在 2024 修复;ZRemesher Keep Polypaint 自 2023 起提供;Ambient Occlusion 插件自 2021.6 起提供。
zb_paint.PATHS会为每个路径标记;许多路径标记为 [strings](此版本中存在该标签)或 [verify]。先运行live_p01_paint_paths.py:对不存在的路径调用set()不会发出提示。zb_paint中的任何内容都尚未在 ZBrush 中运行;36 项离线测试通过;实时测试位于tests/code/zbrush-paint-render/live_p01至p06。
参考资料
references/procedures.md:每个阶段的完整桥接代码。编写任何绘制或渲染代码前都要加载。references/critique.md:评估标准、Z1 和 Z2 完成度测试用例,以及两个评估提示词。每个关卡都要加载。references/expert-notes.md:各位专家的深入记录(含时间戳)、不同意见,以及无需数位板也可沿用的内容。遇到本文未涵盖的决策时加载。references/gui-paths.md:供人工或计算机操作 Agent 使用的面板、快捷键和设置。执行 Spotlight、对话框和仅限 GUI 的步骤时加载。references/sources.md:所有来源及其凭据、URL 和时间戳。
评论
支持 Markdown