Gauge 建模
使用 bmesh / 資料 API 進行建構(無需 UI 環境即可運作),然後對評估後的網格進行閘門檢查,使修改器和 Geometry Nodes 的效果都被納入考量。
建構
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(法線) |
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-gon:靜態渲染可接受,匯出到遊戲引擎前務必三角化。
- 在最終階段之前,將零件保持為各自命名的獨立物件;僅在匯出時才合併。
- 任何變更後:執行閘門檢查,然後使用黏土材質從
angles中的視角look來評判造型。