mcpField
B
blender-asset-qa

blender-asset-qa

github.com/el4cteo创意与媒体569134 次安装2 周前更新
代码仓库

关于 blender-asset-qa

blender-asset-qa 是用于交付前检查 3D 资产的 Blender 技能。它将基于配置文件的网格自动检查与必要的视觉审查结合,并指导用户理解和修复检查结果。

主要功能

  1. 01按配置文件运行网格检查
  2. 02检测几何与拓扑问题
  3. 03以多种视觉模式审查资产
  4. 04说明检查结果及修复方法
  5. 05报告三角面数和已接受警告

适用场景

  1. 01交付前检查游戏资产
  2. 02查找分离部件或网格相交
  3. 03审查拓扑和表面着色
  4. 04验证打印或 Roblox 网格要求

MCP 相关

实时视觉审查要求使用 MCP look 功能,以角度、材质或实体以及线框视图检查目标对象。无界面审查可使用附带的图像渲染脚本。

安装

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

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-asset-qa

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

包含的文件

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

scripts/
_bpyx.py
qa_check.py
review_shots.py

详细介绍

资产 QA(审核关卡)

绝不要假设生成或编辑的网格是正确的。先用数据检查,再目视检查。

流程

  1. 自动检查,一次性传入一个资产的所有对象: scripts/qa_check.py -- --objects Body Head Hat --profile game 配置:game(默认)、render(宽松)、print(必须封闭)、roblox(每个网格 20k 个三角面、必须封闭、无多边形面、最多 4 个影响)。
  2. 修复每一项 errors(见下表),然后重新运行,直到 "pass": true。每条警告都必须修复或明确接受,并向用户说明原因。
  3. 始终进行目视检查:
    • 实时:对目标使用 MCP look,设置 mode="angles",分别以 material/solid 着色和 wireframe 模式检查一次。使用 xray 查看内部。
    • 无头模式:运行 scripts/review_shots.py -- --objects ... --mode random(每个对象一种颜色,便于发现分离的部分),然后运行 --mode wire 检查拓扑。打开生成的 PNG。
  4. 报告:每个对象的三角面数、已修复的问题,以及仍然接受的警告。

各项检查结果的含义 → 修复方法

检查结果原因修复方法
zfighting A<->B两个朝向相同的表面在 --eps(1 mm)范围内发生重叠删除隐藏的重复面,或沿法线偏移 ≥ 2–5 mm,或对它们进行布尔运算/合并
back_to_back面以相反的法线相互接触(方块面对面粘合)删除隐藏面(避免浪费三角面和烘焙瑕疵)
floating岛状部分/对象在 --tol 范围内未与其他部分接触移动使其接触(吸附)、桥接,或连接并合并。如果预期如此(火花、UI),请单独检查
enclosed部分完全位于另一部分内部,且不接触(眼睛、内部机械结构)通常没问题。确认这是预期的
inside_out_islands封闭部分的法线朝内对该部分执行 mesh.normals_make_consistent(inside=False)
inconsistent_normals_edges相邻面绕序方向相反重新计算法线;如果问题仍存在,检查是否有非流形接缝
nonmanifold_edges / wire_edges每条边关联超过 2 个面,或存在多余边溶解/删除多余面;执行 delete_loose
boundary_edges存在开口(不利于打印、Roblox 和烘焙)填补(fill_holes/edge_face_add)或封口
degenerate_faces / zero_length_edges几何体塌陷执行 dissolve_degenerate(threshold=1e-4)
duplicate_verts接缝未焊接执行 remove_doubles(threshold=1e-4)(按距离合并);之后检查 UV 接缝
ngons面的边数超过 4局部三角化/四边化;仅在不会变形的平面硬表面上,才适合使用多边形面
未应用/负缩放对象变换执行 transform_apply(rotation=True, scale=True);负缩放会在导出时翻转法线
uv_maps: 0 / UV 面积为零 / 重叠缺少 UV 展开或展开不良使用 blender-retopology-uv
未加权 / 影响数超过 4蒙皮使用 blender-character-rigging(weights_check.py)
ground_z ≠ 0资产悬空或下沉将原点移到底部并设置 z = 0(道具)

脚本无法完全判断的手动检查项

  • 轮廓和比例:检查目标相机距离下的效果。与参考图和实际尺寸(ob.dimensions)比较。
  • 着色瑕疵:硬边上的平滑(需要锐边/加权法线),以及曲面极点处的收缩。
  • 看起来不合理的相交(例如腿穿过座椅),即使它们“连接”在一起。
  • 浪费三角面的内部/隐藏几何体(使用 xray)。
  • 变形:将骨架摆到极限姿势(肘部 140°、膝盖 150°、肩部抬起),检查体积是否塌陷。
  • 材质分配:每个面都使用预期材质,且没有默认灰色材质槽。

调整参数

  • --eps 是 z-fight 距离。大型环境场景可将其调高至 0.005,微型珠宝则可调低至 0.0002。
  • --tol 是分离部件的接触容差。对于粗大的拼装模型,可调高此值。
  • --no-modifiers 用于检查基础网格。默认检查经过求值的(修改器)结果,也就是实际导出的内容。
  • 超过 --max-tris(300k)后,会跳过 z-fight 和悬空检查。请按部件检查高多边形源模型。

评论

支持 Markdown