mcpField
S
scenario-zbrush-retopology-export

scenario-zbrush-retopology-export

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

关于 scenario-zbrush-retopology-export

scenario-zbrush-retopology-export 是用于将 ZBrush 雕刻整理为干净低面数交换网格的技能,并通过细分级别或贴图保留细节。它涵盖重拓扑、投射、UV、烘焙、导出和文件检查。

主要功能

  1. 01准备并审查重拓扑输入
  2. 02设置对称选项运行 ZRemesher
  3. 03将雕刻细节投射到重建级别
  4. 04创建 UV 并烘焙贴图
  5. 05导出网格并检查比例

适用场景

  1. 01为绑定或交换准备雕刻模型
  2. 02重拓扑后重建细分级别
  3. 03导出带 UV 的网格和贴图

安装

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

$npx skills add https://github.com/scenario-labs/skills --skill scenario-zbrush-retopology-export

安装后在 Claude Code 中输入/scenario-zbrush-retopology-export确认已加载。

包含的文件

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

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

详细介绍

ZBrush 重拓扑与导出(流程雕刻师)

专家级流程意味着:雕刻作品以轻量、干净的交换网格形式从 ZBrush 导出,且位于最低细分级别;细节保留在重建的细分层级或贴图中;尺寸为真实尺寸;每个文件都经过解析验证。大部分工作都是确定性的调色板操作,Agent 擅长处理;逐步点击拓扑工具、点击修改器和少数几个对话框则交由人工或计算机操作 Agent 处理。如果此处提到的同级技能不在可用技能中,请要求用户安装 (npx skills add scenario-labs/skills --skill <name>);若需无人值守地继续,则根据工具架构进行操作,并标明缺失项。

必备背景: scenario-zbrush-expert(桥接、笔触引擎、审查循环、2026 年陷阱)。

工具包:scripts/zb_retopology_export.py(rx),基于负责人的 zb_ops、zb_audit 和 zb_launch:在 ZBrush 内调用 rx.zcall("func", ...),在 Agent 端执行审计。每次投射操作都使用负责人的安全 zb_ops.project_all(带版本化检查点、网络和关卡)。尚未在 ZBrush 中运行(88 项离线测试均已通过;实时测试见 references/procedures.md)。

立场(专家经验增量)

  • 每次运行 ZRemesher 前,都要有意设置对称性。 开启对称后,ZRemesher 会重拓扑一半并进行镜像:这相当于悄无声息地执行 Mirror And Weld,会破坏摆好姿势或不对称的网格(Drust、Kjce71jjWJU 00:01:11)。rx.zremesh 将 symmetric 设为必填参数。
  • 让 ZRemesher 处理简单的问题。 将需要动画的面部恢复到中性状态、放松褶皱,然后在新拓扑上重新雕刻表情(Pavlovich n5_cZK-9peg 00:01:39)。耳朵和手要单独重拓扑,并先打磨开放边界(00:44:36)。先封闭意外产生的孔洞:它们会保留下来并增加点数(ZRemesher 文档)。
  • ZRemesher 负责边流;细节通过投射恢复。 目标应设得较低(Gaboury:手臂设为 5k 到 18k,34D6VljTjBs 00:02:18),然后使用 Dist 0.1 执行 Project All,这能修复“90%”的瑕疵(Drust nxMYYsyJt3o 00:02:19)。即使在 Solo 模式下,也只能显示源和目标(Pavlovich 01:07:26)。启用 Adapt 和 Keep Groups、Target 设为 5 时,得到 8.0k 到 9.4k 个点(帧 00:18:50、00:22:09);关闭 Adapt 则会达到设定点数。
  • 投射存在危险区域: 眼睛、嘴巴、腋下、手指间和胯部;这些区域残留的瑕疵会在置换中形成硬边线(FlippedNormals Zp07GW3rND0 00:07:43)。将眼内组遮罩扩展到略超出眼睑处;使用形态目标或带遮罩的重新投射来修复,绝不要平滑(00:05:31、00:06:36)。
  • 使用多边形组引导,先平滑边界:ZRemesher 会将锯齿状边界融入环线(Pavlovich 00:05:27)。边界干净时将 Smooth Groups 设为 0,DynaMesh 组边界粗糙时设为 1(Drust 8D-xqasgUws 00:02:17)。删除并重建失败的眼睑、嘴角和鼻孔(Pavlovich 00:21:36);Retopo 笔刷的“No”选项可让轻量级 ZRemesher 网格变得可编辑(Pablo Munoz Gomez,I4nePXDTrhQ 00:06:36)。
  • 最低级别是交换网格。 UV 在此级别制作(Gaboury cemmalvugFk 00:00:51)。贴图比较当前级别与同一 SubTool 的最高级别,绝不比较两个 SubTool(Drust n0qqpwvn-jA 00:01:14);第 1 级承载形体,最高级别减 1 仅承载微细节(2zDAtaQqwh8 00:02:53)。
  • 影片置换使用固定配方(FlippedNormals -ThBTEc8L_M):开启 Flip V(“绝对必需”),关闭 Adaptive(约 1 小时处理 100 个 UDIM,而非 24 小时),DpSubPix 设为 0,使用 32-bit EXR,关闭 3 Channels,渲染器零值 = Mid(MME 文档:32-bit 时 Mid 为 0;FlippedNormals 保持 0.5;请记录该值)。
  • 导出尺寸 = 内部范围 x Export Scale(Drust n2xPrwI9o1U 00:04:19)。XYZ Size 保持在 1 到 4 之间(Gallagher EXjfH_X2hkM 00:28:23)。Export Scale 和偏移量按 SubTool 单独保存,因此要在每个 SubTool 上使用相同的值[新增]。
  • 生成或扫描的网格是形体参考,而不是需要修复的拓扑。 尽早执行 DynaMesh,先加厚薄壳,因为 DynaMesh 填孔时会“径直横穿过去”(Drust PrFQXjs_6_w 00:02:53)。从清理后的 DynaMesh 重建细分层级,绝不要使用带噪声的原始网格[新增]。

首先明确

输入调整项简报未说明时的默认值
目标网格类型、映射、单位、轴Maya:OBJ 级别 1 四边面,单位为 cm + 32 位 EXR 位移,Mid 0.5
是否变形?面部、关节精确边环(人工 Retopo 流程)、中性面部角色需要;表情需回到 scenario-zbrush-character-creature(中性版本,或关闭其图层)
预算ZRemesher 目标值、Adapt骨骼绑定或电影级身体模型为 15k 至 25k 个四边面 [已添加];动画头部为 10k 至 20k(Retopo 文档);游戏模型按简报要求
是否摆姿势或不对称关闭对称仅在未摆姿势且设计为对称时保持对称
实际尺寸导出缩放人体 180 cm(Gallagher 的示例)
贴图和瓦片MME 预设、UDIM 方案每个 SubTool 使用一个 4096 瓦片;UDIM 布局由 Maya 或 Blender 决定
源类型路径有级别:低于 2M 的级别;无级别:DynaMesh 副本;AI 或扫描:先清理

工作流

  1. 预检、检查点。 rx.zcall("preflight", 180.0);zb_ops.save_ztl。门槛:已解决标记 (超过 8M 个顶点、XYZ 大小不在 1 到 4 之间、导出比例为 0、名称重复)。
  2. ZRemesher 输入。 remesh_input("auto", max_points=2_000_000) 会复制雕刻模型并隐藏 原模型(投射源);如果孔洞并非有意保留,fill_holes=True 会添加 Close Holes 和 Fix Mesh。 DynaMesh 和 Close Holes 也会封闭眼窝和口腔空腔:openings_closed 设置孔洞门槛(0 表示 封闭,否则表示有意保留的开口)。门槛:副本顶点数低于 8M,源模型完好,面部处于中性状态。
  3. 引导。 通过按钮创建 Polygroup(Auto Groups、Groups By Normals、From Polypaint);人工绘制 的遮罩可通过 Edgeloop Masked Border 转为带支撑环的组(Drust IpTYcGxxsdM 00:05:08); polish_band("groups")。耳朵和手部:拆分为独立 SubTool(Groups Split、Split Hidden), 执行独立的 polish_band("border") 和单独的运行(手部 Adaptive Size 约为 14:Pavlovich 00:59:42),然后执行 merge_down_run(..., weld=True);仅在边界必须精确重焊时才使用 Freeze Border,且应在整个肢体重拓扑之后使用,代价是影响动画(01:03:44)。门槛:Polyframe 视图中 环形线条闭合且平滑;重新合并后没有接缝环线。
  4. ZRemesher。 zremesh(target_k, symmetric, keep_groups=True, smooth_groups=0)(Half、 Same、Double 均关闭),然后对 0、5、21 执行 retry(adaptive_size=...)。Keep Groups、Keep Creases、Smooth Groups 或雕刻操作都会清除 Retry 缓存。扫描会保留最后一个变体: pick_retry、retry(**pick["retry"])、confirm_retry。可选的 Half 通道(关闭 Adapt),或 在已有重拓扑结果上再次重拓扑(Drust R2MzFqWMaWY 00:01:44)。颈背或眉部的中心线不佳: Alt+ZRemesher,修饰键点击无法通过 press 发送:请求使用电脑,并比较 centre_line_components(Pavlovich 00:48:31)。当 snap_back 为 true 时,评估之前执行 project_stack(copy, source, levels=0, checkpoint=ztl)(00:22:05)。门槛: in_band;对 Grp 开启的 QA 导出运行 topo_report + retopo_verdict(purpose="rig", expected_holes=...); 环线应沿着形体走向。孔口失败时:脚本会停止,交由人工执行 Retopo。
  5. 重建细分层级。 project_stack(target, source, checkpoint=ztl):显示两个模型,Dist 为 0.1, 从 1 级开始,然后逐级执行 Divide + Project All,直到达到源模型顶点数的一半;每次通道都创建 一个变形目标,最后再处理颜色,且两个 SubTool 均开启 Colorize(Drust PrFQXjs_6_w 00:16:35)。危险区域或胶片面部:order="top_first", stop_after="nets"(细分后,在顶部执行 StoreMT 并创建图层:FlippedNormals 00:02:13),由人工隔离眼睛内部组, protect_isolated(grow=1),然后执行 project_levels(..., nets_done=True)。门槛: projection_from_stack(1 级不变,包围盒变化 0.5%,体积变化 2%[新增]);每一级都要有同视角 对照图和危险区域特写。损坏区域:zb_ops.morph_repair;目标模型位于源模型内部时:使用遮罩 Inflate,或使用 ProjectionShell,并设置 Inner 和 Dist 1(Gaboury pQbPtH0p5Bg 00:02:30)。 然后执行 drop_morph_target():烘焙会拒绝已存储的变形目标,该目标可能是贴图的基础 (Drust 2zDAtaQqwh8 00:01:44)[待验证]。
  6. 1 级 UV(UV 会传递到其他层级,Gaboury cemmalvugFk 00:03:30)。快速方式: zb_ops.uv_unwrap("native")。显式接缝:unwrap_creases()(Pavlovich cvqoVUX5aBw)。Painter 岛:uvmaster_roundtrip()。眼睛使用独立的简单 UV。门槛:对 Txr 导出运行 uv_verdict;接缝 隐藏,面部未切开。
  7. 贴图。 mme_create_all(dir, name, settings="arnold") 或 bake_normal_map / bake_displacement_map。门槛:对每个文件运行 map_verdict(尺寸、位深、Mid 处为平面,法线 平面值为 128/128/255:Polycount);每次构建都校准一次方向(live_rx_04 fixture)。
  8. 比例、名称、导出。 set_export_scale(180, axis=1)(每个 SubTool); set_export_switches(quads=True, uvs=True, groups=False); export_subtools(dir, level="lowest")。FBX:ZScript 无法抑制其选项窗口,Python 未验证 (Maxon 论坛);AppleScript System Events 会点击这台 Mac 上的 ZBrush 对话框[需在该设备上验证]; 默认使用 OBJ,再由 scenario-maya-expert 或 scenario-blender-expert 转换。门槛: obj_header 从 #Auto scale 读回 Export Scale(由 2026.2.1 写入,lead v03 导出); scale_report 通过(1%,脚部位于 0,模型居中)。
  9. 交接。 handoff_report(json, ...):网格、贴图、单位、轴、Mid 和比例、法线约定、审计结果、 对照图、未验证项清单。
生成或扫描的网格(Z6)
  1. 使用 scenario-3d 生成的 GLB:glb_to_obj、triage_ai_mesh(obj, expected_parts),然后执行 orient_for_import:它只会旋转 Z-up 提示,仅对未居中的网格进行居中处理(glTF 使用 Y-up), 并为要导入的文件命名。
  2. import_mesh(Weld;Tri2Quad 从 AI 三角面重建四边形[验证范围]);原始 ZTL; duplicate_keep():副本是形状和颜色来源,按名称跟踪(index_of),因为拆分和合并会重新编号 SubTools。
  3. fix_mesh;split_parts、hide_small_parts(protect_names=[raw])。不同颜色的部件融合在一起时: 使用 color_to_groups、Groups Split[新增];否则使用 scenario-3d 分割或人工 SliceCurve 切割。
  4. 对每个部件执行 close_holes。DynaMesh 后出现瑞士奶酪状孔洞,说明网格太薄:先加厚。
  5. 在 Tool 内对同一物体的部件执行 merge_down_run(Drust 00:09:27)。 dynamesh_keep(res, keep="groups"):启用 polypaint 时,DynaMesh 保留的是绘制颜色,而非 polygroups(DynaMesh 文档;一般规则:scenario-zbrush-sculpting)。Blur 设为 0,关闭 Project。残留 孔洞:对导出文件使用 hole_plugs(obj),再执行 plug_hole(center, diameter)、merge_into(body, [plug]), 然后重新执行 DynaMesh(Drust PrFQXjs_6_w 00:07:16)。进行 Polish;如果对称,则使用 Mirror And Weld。局部重建: Sculptris Pro(scenario-zbrush-sculpting)。
  6. GATE:cleanup_verdict(raw, clean)(封闭、流形、壳体、包围盒偏差 2 percent、粗糙度不超过 原始网格的 0.8 倍[新增]);工作表使用 MatCap Gray、开启 Double、关闭 Colorize(仅针对工作表;set_display 会返回旧值)。
  7. 对每个部件使用 ZRemesher(5 到 20 thousand),再贴回原形状,从清理后的 DynaMesh 投射几何体, 然后仅从原始副本投射颜色:project_levels(..., geometry=False, color_last=True) [验证]。交由 scenario-zbrush-sculpting 处理(在 SDiv 1 进行较大改动,在 2 到 3 进行次要改动)。

数值

值相对于来源
ZRemesher 目标值(千);设置为 5 时得到 4,963Target Polygons CountPablo rArw79xEpvE 00:03:16
Adaptive Size 默认值为 50;0 为均匀四边形,5 到 21 为曲线形;手动约为 14密度ZRemesher 文档;Pavlovich n5
Color Density 设为 2 时颜色更浓(粉色),设为 0.25 时颜色更淡(蓝色),白色为中性polypaint 密度Pavlovich n5 01:01:32
XYZ Size 为 1 到 4;导入时会归一化为 2内部尺寸Gallagher;Drust
Export Scale = target / internal extent(180 / 2 = 90)单位Drust;Gallagher 00:28:55

各目标的设置

目标网格位移法线
Maya + ArnoldOBJ level 1,Qud、Txr、Grp 关闭;cm32-bit EXR,Mid 0.5 = Scalar Zero Value,Catmull-Clark 约为 3,Auto Bump切线,OpenGL [已添加]
Unreal、Unity三角化,FBX 通过 Maya 或 Blender;cm、meters [已添加]无引擎切线基准;Unreal 使用 DirectX green [已添加]
Substance PainterSubstance Bridge Low & High,Auto-Bake,Force Auto-Unwrap 关闭无由 Painter 烘焙
BlenderOBJ;meters32-bit EXR,Midlevel = Mid [已添加]OpenGL;游戏烘焙使用 scenario-blender-uv-baking

Redshift、矢量位移和完整行:rx.RENDERERS、references/procedures.md。

质量关卡

  • 代码检查:每个导出文件都运行 topo_report、projection_verdict、uv_report、scale_report、 map_verdict、names_report、cleanup_verdict。
  • 视觉检查(zb_review.review 工作表):用 Polyframe 查看正面、侧面和四分之三视角下的边线;投射后在同一视角比较源模型和目标模型,并在每个层级查看危险区域特写;清理时使用 MatCap Gray,并开启 Double。依据 references/critique.md 进行评判。

常见错误

错误表现修复
忘记关闭对称摆姿势的四肢会镜像zremesh(symmetric=False)
重拓扑微笑表情的脸边线跟着笑容走,而不是配合绑定先恢复中性表情,再在新网格上恢复表情
保留了重试扫描结果保留的网格不是选定的网格pick_retry、回退重试、confirm_retry
Dist 过小细节出现孔洞和斑点Dist 0.1;让源模型完全包在其中
平滑投射产生尖峰仍有异常顶点形态目标、遮罩重投射
一侧关闭了 Colorize投射的颜色缺失color_last=True 会同时开启两侧
烘焙时仍保留形态目标映射相对于错误的基底 [待验证]drop_morph_target()
SDK 法线烘焙使用默认设置得到世界空间贴图create_normal_map(..., local_coordinates=True)
Maya 的 OBJ 开启了 Grp网格被拆分成多个部分关闭 Grp(FlippedNormals 00:15:08)
只对一个 SubTool 设置导出缩放眼睛从头部浮起set_export_scale(..., all_subtools=True)
对带图层的角色使用 Unify图层和形态会损坏将缩放后的工具 MultiAppend(Gallagher 00:27:16)
AI 网格 DynaMesh 时开启 Polypaint部分多边形组消失dynamesh_keep(keep="groups")
清理期间使用 MergeVisible新建的 Merged_ Tool 不包含颜色源在 Tool 中使用 merge_down_run

交接

  • 接收自 scenario-zbrush-sculpting、scenario-zbrush-character-creature、 scenario-zbrush-stylized、scenario-zbrush-hard-surface:带命名 SubTools 的版本化 ZTL、 stats() 和最后一张图;自 scenario-3d:GLB 或 OBJ。
  • 交付给 scenario-maya-retopology-uv 和 scenario-maya-rigging:每个 SubTool 的一级 OBJ, 单位为 cm,Y 轴朝上,居中,脚底位于 0,眼睛单独分开;给 scenario-maya-lookdev:贴图加 handoff_report;给 scenario-blender-uv-baking 或 Substance:低模和已简化的高模,名称匹配; 给 scenario-zbrush-paint-render:带 UV 的工具栈;给 scenario-zbrush-pose-print:闭合副本。

ZBrush 2026 说明

  • Retopo 笔刷(2026.1);UV Master 的 Polygroups 已在 2026.2.0 修复;Substance Bridge(2026.2) 标注为“Auto-Bake”“Force Auto-Unwrap” [uistr]:Force Auto-Unwrap 为全局设置,会剥除良好的 UV。
  • SDK:press() 不接受修饰键(Alt 单击会转交电脑操作);create_normal_map() 默认为世界空间。
  • macOS:Control+W 创建 polygroup;Command+W 退出 ZBrush(版本差异 3.13)。
  • 使用 Freeze Border 执行部分 ZRemesh 会删除细分级别(Drust 0TlG4Ex9lQA 00:02:26): 在其周围使用 freeze_levels()。

参考资料

  • references/procedures.md:完整的桥接流程(Z4、Z6、各目标对应的贴图、夹具)、测试 路径、路径证据。运行阶段前加载。
  • references/expert-notes.md:专家判断,附时间戳和 决定条件。选择路线时加载。
  • references/critique.md:评审标准(拓扑环、投射、UV、贴图、比例、清理)。每个关卡都要加载。
  • references/gui-paths.md:供人工或电脑操作 Agent 使用的调色板、快捷键和 Retopo 笔刷手势。
  • references/sources.md:每个来源的凭据、URL 和最佳时间戳。

评论

支持 Markdown