mcpField
S
scenario-blender-retopology

scenario-blender-retopology

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

关于 scenario-blender-retopology

面向 Agent 的 Blender 重拓扑技能,指导从雕刻数据规划边流、构建网格并检查细分后的贴合度。它区分可变形角色与静态资产的处理方式,也说明哪些部分仍需人工审核。

主要功能

  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-blender-retopology

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

包含的文件

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

references/
critique.md
expert-notes.md
procedures.md
sources.md
scripts/
bx_retopo.py

详细介绍

Blender 重拓扑

专业级重拓扑是一项精心规划的工作:用尽可能少的环线捕捉形体并让网格能够变形。环线环绕眼睛、嘴部和关节闭合,极点放在不会移动的位置,而最终匹配雕刻模型的是细分后的表面,而不是控制笼。没有鼠标的 Agent 可以通过数据构建所有这些内容,但只有对明确规划的部分,才能达到专业水准。自动重网格适用于静态资产的收尾,对其他资产则只是起点。如果这里提到的某项相关技能不在你可用的技能中,请让用户安装它 (npx skills add scenario-labs/skills --skill <name>);如果需要无人值守地继续,请根据工具 schema 操作,并标明这一缺失。

必备背景: scenario-blender-expert(执行渠道、审查循环、5.2 API 变更)。 工具包:scripts/bx_retopo.py (import sys; sys.path.append("<skills>/scenario-blender-retopology/scripts"); import bx_retopo as R), 所有坐标均使用雕刻模型的局部空间。

方法(专业水准的关键差异)

  • 先绘制数据图。 在创建任何顶点之前,Kaspar 会在雕刻模型上绘制六层信息:边流、主要褶皱、次要(仅表情)褶皱、关节活动范围、表情范围、标记点(BCON22 [00:07:55],见 00:07:53 至 00:14:38 的画面)。Agent 用坐标和环线数量记录相同的信息(标记点来自渲染图加上 R.surface_point),然后再开始构建。
  • 环线才是预算,顶点不是。 关节活动区域的最低配置(Kaspar 引用 Brian Tindall):眼睑、嘴唇和眉毛各用 3 个控制点构成曲线,每侧各有 2 条控制环线,眼角另加 2 条环线;上侧数量 = 下侧数量(Dikko、Kaspar、Kenny);每个关节 3 条环线;每道褶皱本身 1 条环线,周围再加 2 条贴合褶皱的环线。其他区域则“按实际需要设置”(Kaspar Live #3 [01:56:33])。
  • 极点:价数为 3 或 5,放在不会移动的位置,绝不能放在褶皱环线上、壳体边缘或面部中线上(Kaspar Live #7 [00:11:41]、Live #3 [00:36:54];Dikko [00:04:49])。Lampel 解释说,细分结果中的密度突变会导致捏痕,但在平坦且静止的区域不会有影响(BCON24 [00:21:18])。[补充] Agent 的极点来自环线数量递减(每个单位减少 4 个)以及横跨自动基础网格呈阶梯状分布的切割边界(约占其顶点的一半);两者都要纳入预算。
  • 环线必须闭合。 眼睛或嘴唇周围出现螺旋就意味着需要重做(Dikko);在静止区域结束的螺旋则可以接受(Dikko 的身体 [00:09:34]、Kaspar 的鼻子)。
  • 评估细分后的表面。 贴合雕刻模型的控制笼在细分后会向内收缩;Shrinkwrap 偏移能修正凸起区域,却会让凹陷处更糟。应调整控制笼,使细分后的表面与雕刻模型匹配(Duha BCON23 [00:08:58]):R.fit_subdiv。Kaspar 的 Multires Apply Base 也能实现同样效果,但会调整过度(下文有测量结果)。
  • 游戏低模 = 轮廓加动画环线(SpeedChar):面部密度约为身体的 3 倍;不会弯曲的区域可使用三角形;手动切割扭曲的四边形,让烘焙器和引擎保持一致;低模表面略微高于高模;每条硬边都是 UV 缝(On Mars 3D)。
  • 自动重网格适用于静态、扫描、背景或仅用于烘焙的资产(Lampel [00:09:05]、Grant Abbitt、Duha、Jamie Dunbar)。对于会变形的角色,它无法替你做出关键判断:对绵羊使用专家级密度的 QuadriFlow 重网格,结果眼睛和嘴部周围都没有环线,薄耳朵也被撕裂。

首先确定

输入项为什么会影响方案未说明时的默认值
用途电影模型笼在细分级别 2 下渲染(Kaspar);游戏发布三角形网格并进行烘焙变形角色:电影风格的全四边面网格笼
预算电影:无顶点预算,尽量减少环线(Kaspar);游戏:三角形预算电影风格化头部:1,650 至 4,100 个面,身体:9,400 至 16,500 个面(Blender Studio 网格);游戏角色少于 10,000 个三角形
变形面部绑定、关节、嘴部移动幅度(表情范围)面部和四肢均会变形
摄像机细节和密度取决于最近的视角(SpeedChar)面部特写
风格风格化:将褶皱融入拓扑;写实:通用基础网格加置换(Kaspar)风格化
对称性R.topology_report(sculpt)["sym_local_pct"],局部空间仅在对称度高于 ~98 % 时使用镜像(这只羊为 21 %,且处于摆姿状态)
独立部件眼睛、牙齿、头发束、衣物(从身体副本分离)独立对象

工作流

  1. 检查(流程 P1):孔洞、流形性、比例、旋转、对称性。门槛:记录好全部四项。

  2. 绘制映射:先读取雕刻师的面集(R.face_set_map、R.face_set_review、P1b:唇线、眼部遮罩、耳朵、蹄);标记带坐标的地标、从 Numbers 表中读取各特征的环线数、折痕列表(检查表情形状键)、各部分的密度。门槛:必须先有映射,再创建任何几何体。

  3. 为各部分选择方法:

    部分方法依据
    眼睛、嘴巴、眉毛(会变形)carve_rings(corners=, count=(lo, hi)):按构造使上部 = 下部,使用测地线环,在计数范围内时保留边界计数;先配对奇数边界(parity_strip)v2:所有干净环线上,眼睛为 24(12/12),嘴巴为 30(15/15);强行采用 Kaspar 的 18/24 会多出 40 个极点
    鼻唇沟、面部轮廓、颈部(映射线)沿面集的 enclosing_contour(P7)使用 carve_band:生成一个干净的环线,将极点推到底面上v2:鼻唇沟增加 18 个极点;面部轮廓为可选项,在绵羊上增加 64 个极点
    四肢、耳朵、尾巴、手指、角使用 limb_profile(测地线轮廓,找到根部和关节)+ socket_tube(count=)(P3b、P8);直线部分:从截面生成 tubev2:全部 7 个部分,包括 1 m 的卷曲尾巴;每个关节有 3 个环线
    头骨、躯干、平滑块体可接受以 QuadriFlow 为起点,否则使用网格片变形较少
    静态道具、扫描模型、仅用于烘焙的模型对整个物体使用 QuadriFlow(R.quadriflow)Lampel、Grant Abbitt
    写实人头对干净的通用基础网格进行收缩包裹,然后调整(Kaspar BCON22 [00:20:16])此处未编写脚本
  4. 构建:分别粗略地创建各个岛(Kaspar:“别把精力放在调整所有点上”)。 通过 R.setup_cage 设置修改器堆栈(镜像裁剪 > 收缩包裹目标法线投射 > 在编辑模式中隐藏细分曲面)。 门槛:每个岛都通过下方的拓扑门槛。

  5. 松弛并冻结手工构建的布局:R.relax、R.freeze。不要用于 QuadriFlow(覆盖率从 0.44 % 恶化到 0.55 %)。

  6. 连接:按计数处理:先用 R.boundary_loops,再对计数相同的环线使用 R.bridge / R.weld_loops; 先缩减较大的一侧(Kaspar:手腕 10 对手部 16,“多了六个”)。门槛:不得创建三角形。

  7. 体积:影视用途使用 R.fit_subdiv(温和的默认设置);游戏用途使用 R.push_outside,然后使用 R.triangulate_twisted,并在导出时添加三角化修改器。

  8. 审核并交接:通过各项门槛,制作两张渲染图表,并做好交接规范(P13)。报告 Agent 未计划的内容。

Agent 能达到的效果(基于羊模型测得;tests/code/blender-retopology/sheep_results.json 和 compare/metrics.json)

策略面数Subdiv-2 平均误差内部眼部/嘴部环闭合环边外观
Kaspar 自己的重拓扑2,5960.24 %47 %5,5 / 229.9 %干净,看起来未经细分
QuadriFlow,匹配面积的预算4,3720.14 %87 %0 / 01.6 %棱面感强,耳朵破损,密度均匀
+ 温和的 fit_subdiv4,3720.045 %53 %0 / 01.6 %整体形态平滑,蹄部凹凸不平
+ 改用 Multires Apply Base4,3720.11 %15 %0 / 01.6 %过冲
混合方案:眼部环 + 耳部管状结构 + 温和拟合4,5440.042 %52 %3,3 / 05.9 %首个技能版本
使用该技能的 E1 运行(全新 Agent:面集、扭曲、4 个眼部环、5 个唇部环、肢体管状结构)5,7780.040 %51 %4,4 / 5(46 至 48 个顶点)19.4 %规划好的面部,眼睑有波纹,腿部连接处有凸块
v2 工具,最终版(test_sheep_v2.py:面集、以范围表示的计数、角点拆分、测地环和管状结构、鼻唇沟环)4,9800.028 %52 %4,4 个干净的 24 顶点环,12/12 / 5 × 30,15/1533.9 %Agent 的最佳结果:极点占 5.7 %(Kaspar 为 5.2 %),干净的环上没有极点,也没有 6 极点;鼻子和上唇区域不规则(需人工处理)

这些数据对 Agent 过于有利:一次激进拟合的得分为 0.043 %,但看起来比 Kaspar 的笼状网格更凹凸不平。 只有人类水平才能完成的部分:带有辅助环的关节计数、根据表情形状放置折痕环、极点走向,以及面部之外的环预算。请在报告中明确说明。

数值

项目数值来源
渲染细分(影片)2 级;视口 1 级Kaspar Live #6 [00:21:53];BCON22 frame 00:26:38
关节弯曲部位有 3 圈环线Kaspar Live #5 [01:37:48]
肢体起始环8 个顶点(腿部先用 8 个,再用 12 个);Dikko 的手臂至少 8 个,通常为 10 到 12 个,腿部为 18 个Kaspar Live #4 [00:06:54];Dikko [00:13:47]
眼睑每道眼睑褶皱有 2 圈环线 + 横向约 4 圈;示例跨度为 10/10Kaspar Live #1 [02:11:22];Dikko [00:04:16]
工作室网格99.9% 以上为四边面;0 到 4 个价数为 6+ 的顶点(需逐个报告并说明理由);极点约占头部 1.8%、身体 5%;边长 CV 为 0.33 到 0.8校准(对 Blender Studio 文件运行 bx_audit)
自动重网格提示(非门槛)未经编辑的均匀重网格,边长 CV 约为 0.17 到 0.27,闭合环线接近 0%校准,sheep
游戏头部 2,000 到 3,000 个三角面;双手约 1,000 个;身体 5,000 到 6,000 个SpeedChar ep23 [00:09:58],ep24 [00:50:34]
应用基础级别身体 2 级,头部 3 级;头发、衣服Kaspar Live #5 [02:15:03]

质量门槛

代码(阈值 [已添加],基于 Kaspar 的羊模型校准:均值 0.24%、内部 47%、覆盖率 p95 为 0.82 %):

retopo_gate = R.topology_report(retopo)
fit_gate = R.fidelity(retopo, sculpt, levels=2)
gate = {"six_poles_to_justify": retopo_gate["valence_6plus"], "no_rim_poles": retopo_gate["rim_poles"] == 0,
        "quads": retopo_gate["non_quads_visible"] == 0 or retopo_gate["quads_pct"] >= 99.0,
        "subd_fit": fit_gate["mean_pct"] <= 0.3 and 40 <= fit_gate["inside_pct"] <= 60,
        "coverage": fit_gate["cov_p95_pct"] <= 1.0, "loops": R.loop_stats(retopo)}
print(gate)

边长 CV 永远不作为通过/不通过标准(工作室网格的数值为 0.33 到 0.8);价数为 6 的顶点需要报告并说明理由,而非一概禁止(工作室网格为 0 到 4 个)。此外:crease_poles == 0,镜像面上 center_poles == 0,R.loops_around(retopo, eye, normal, max_radius) 对每只眼睛和嘴部至少返回 3 个闭合环线,合并前的环线数量必须相同,三角面仅允许出现在隐藏区域或刚性区域,且须符合预算(R.tri_count)。视觉检查(bx_review,使用与雕刻相同的视图):线框模式下检查笼网(环线是否紧密、是否有游离环线、极点是否位于静止区域),再用细分后的材质预览检查(凸起、极点处的夹捏、褶皱是否保持),最后单独检查笼网:即使不细分也必须清晰呈现(Kaspar Finale [01:58:41])。使用 references/critique.md 评分。

常见错误

错误表现修正
绕着 QuadriFlow 闭合的眼睑切割每个眼圈都不规则(47、45),无法修复为全四边面在切割之前,用 R.parity_strip 连接两条奇数边界
沿用密集切割的计数,或将计数强行设得远低于它眼圈为 46 到 48;或极点密度为 9.5 %count=(lo, hi):每减少一个单位会增加 4 个极点;这些范围让羊的密度从 9.5 % 降至 5.7 %
表面相接处使用 3D 最近点查询带状或插槽切割会切到贴在脸颊上的耳朵使用测地线场、curve_verts、定向的 nearest_vertex(带状和管状结构内置)
将环间距设得过紧以创建边缘流线细分后出现凸脊带状结构的 spacing = 边长;仅在折痕处使用紧密间距
交付已吸附的笼子雕刻模型内部的细分表面(87 %)R.fit_subdiv
用收缩包裹偏移来保持体积凹陷更严重进行拟合,偏移量设为 0
在较小的密集网格上直接使用 quadriflow_remesh已取消(CANCELED),“需要流形网格”使用 R.quadriflow(缩放技巧、体素回退)
将 QuadriFlow 对称性保留为默认值 True姿势网格的半边错误除非模型对称,否则使用 symmetry=False
放松自动重拓扑结果尖端和耳朵收缩仅放松手工构建的布局
将 Mark Sharp / Seam 用作标记着色出错(4.1+),展开时产生切口使用 retopo_crease 属性(P5)
对奇数边界环使用网格填充已完成(FINISHED),面数为 0先计数;R.grid_fill 会报错
过早连接各部分每个新环都会遍布整个模型先分离岛屿、计数,最后合并
轻信平均误差凹凸不平的拟合也能通过使用 matcap 检查,温和拟合
应用基础网格后再次收缩包裹体积再次丢失永远不要(Kaspar Live #6 [00:20:08])
游戏用四边面未保持共面法线贴图出现线条使用 R.triangulate_twisted,导出时进行三角化

Blender 5.2 说明

  • Hidden Wire 是 Retopology 覆盖层(overlay.show_retopology,自 4.5 起偏移量为 0.01 m); “Project Individual Elements” 是 snap_elements_individual = {'FACE_PROJECT'}。仅限 GUI。
  • Slide Relax 是 Relax Slide 笔刷资产(笔划需要窗口,bx_gui);无头模式下使用 R.relax。F2、LoopTools、BSurfaces 是扩展;mesh.circularize、space_edge_loops_evenly、 flatten 是内置功能;mesh.select_by_pole_count 已存在(4.4)。
  • BCON22 版本的 Shrinkwrap 显示 Smooth Factor 0.05 / Repeat 1(时间戳 00:22:53);5.2.1 的 Shrinkwrap 没有此类选项。
  • 自 4.1 起,始终会应用 sharp_edge;Auto Smooth 已移除(改用 Smooth by Angle 修改器)。
  • Apply Base = object.multires_base_apply(apply_heuristic=True);QuadriFlow 已失去其快捷方式,并且有上述陷阱。

参考资料

  • references/procedures.md:经过测试的代码,P0 至 P14(检查、面集 P1b、堆栈、管状结构、测地线肢体 P3b、冻结/松弛、注释、QuadriFlow、地图线环和环、插座、体积、检查、游戏、 表情测试、交接、AI 网格收尾)。编写任何代码前都要加载。
  • references/expert-notes.md:专家原则及时间戳、面部和身体环线图、服装、 游戏规则,以及完整的绵羊实验。规划面部、身体、服装或游戏网格时加载。
  • references/critique.md:用于评估自己的重拓扑效果的评分标准。每次审查时加载。
  • references/sources.md:全部 24 个源视频及最佳时间戳。

评论

支持 Markdown