affaan-m/ECC · error · SystemExit
no mesh geometry found in
Error message
no mesh geometry found in {mesh} What it means
After importing the mesh file in build(), no objects of type MESH exist in the emptied Blender scene, meaning the file parsed but contained no mesh geometry to build the prop from.
Solutions
- Verify the source file actually contains mesh data (open it in a 3D viewer)
- Re-export ensuring mesh objects (not just empties/cameras/lights) are included
- Regenerate the mesh from the provider
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at skills/taste-application/scripts/blender_prop.py:189 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/04021e17731800b5.
Report an issue: GitHub.
Appendix: source
Thrown at skills/taste-application/scripts/blender_prop.py:189
grade_hash = _sha256(grade) if grade.is_file() else None
import bpy
import mathutils
bpy.ops.wm.read_factory_settings(use_empty=True)
suffix = mesh.suffix.lower()
if suffix in (".glb", ".gltf"):
bpy.ops.import_scene.gltf(filepath=str(mesh))
elif suffix == ".obj":
bpy.ops.wm.obj_import(filepath=str(mesh))
elif suffix == ".fbx":
bpy.ops.import_scene.fbx(filepath=str(mesh))
else:
raise SystemExit(f"unsupported mesh format: {suffix}")
objs = [o for o in bpy.context.scene.objects if o.type == "MESH"]
if not objs:
raise SystemExit(f"no mesh geometry found in {mesh}")
mn = mathutils.Vector((float("inf"),) * 3)
mx = mathutils.Vector((-float("inf"),) * 3)
for o in objs:
for c in o.bound_box:
w = o.matrix_world @ mathutils.Vector(c)
mn = mathutils.Vector(min(mn[i], w[i]) for i in range(3))
mx = mathutils.Vector(max(mx[i], w[i]) for i in range(3))
validate_bounds(mn, mx)
center = (mn + mx) / 2.0
radius = max((mx - mn).length / 2.0, 1e-4)
print(f"[prop] {len(objs)} mesh object(s), radius {radius:.4f}")
pivot = bpy.data.objects.new("turntable_pivot", None)
bpy.context.collection.objects.link(pivot)
pivot.location = center
# Preserve imported hierarchy and world transforms, including PBR meshes.
roots = [o for o in bpy.context.scene.objects if o.parent is None and o != pivot]View on GitHub (pinned to 8321021c54)