Gauge建模
使用bmesh/数据API构建(无需UI上下文),然后门控评估后的网格,使修饰器和几何节点也被计入。
构建
scripts/kit.py(从它旁边的脚本导入):
| 函数 | 生成内容 |
|---|---|
rounded_box(name, size, bevel, segments, loc, rot, collection) | 在网格中带有真实倒角的盒子,按角度平滑 |
cylinder(name, radius, depth, segments, bevel, ...) | 带有倒角端盖的圆柱体 |
bolt_head(name, radius, height, sides, bevel, ...) | 六角(或圆形)螺栓头 |
cut_holes(target, [(u, v, r), ...]) | 在最小轴向上打圆孔(布尔运算后烘焙) |
bake_modifiers(ob) | 应用整个修改器栈,无需bpy.ops |
assign(ob, material) | 单个材质槽 |
构建函数会替换同名对象,因此脚本可以重复运行。scripts/build_prop.py 从 JSON 部件列表(或演示板条箱)构建整个道具到自己的集合中,并对其进行门控:
run_blender_script path=skills/gauge-modeling/scripts/build_prop.py args={"name": "crate", "spec": "parts.json"}
门控
scripts/mesh_gate.py -> 门控 mesh-health。
| 检查项 | 失败条件 | 典型修复方法 |
|---|---|---|
loose_verts, zero_area_faces, duplicate_verts | 任意 | fix_mesh.py |
non_manifold_edges | 边被3个或更多面共享 | 重建该区域 |
inverted_volume | 闭合网格体积为负 | fix_mesh.py (normals) |
ngons | 超过 max_ngons(可选) | fix_mesh.py 配合 triangulate_ngons,或重新四边化 |
triangles | 超过 max_tris(可选) | 减面,减少倒角分段 |
closed_meshes | require_closed 且存在孔洞 | 填充 |
has_uv, texel_density_cv | require_uv / 给定限制 | 展开UV,均衡岛屿缩放 |
fix_mesh.py 是干运行,直到 apply=true;它从不触及选择范围外共享的网格数据。
规则
- 先确定真实世界尺寸(米),再倒角:倒角是最小尺寸的1-4%。没有倒角的硬边无法捕捉光线。
- 先倒角再平滑;按角度(35度)平滑,而不是使用面标志。
- 布尔运算在切割面上留下N边形:用于静帧没问题,导出到引擎前需三角化。
- 保持部件为单独的命名对象直到最后;仅导出时合并。
- 每次修改后:门控,然后在粘土着色下从多角度观察以评判造型。