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

  1. Verify the source file actually contains mesh data (open it in a 3D viewer)
  2. Re-export ensuring mesh objects (not just empties/cameras/lights) are included
  3. 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)