Summary
Since Blender 5.2, Empty objects can carry geometry produced by a Geometry Nodes modifier. Simple Collider currently can't generate colliders for these objects.
Current behavior
Object-type gating is centralized in VALID_OBJECT_TYPES (properties/constants.py), currently {'MESH', 'CURVE', 'SURFACE', 'FONT', 'META'}. EMPTY is not included, so empties are filtered out everywhere collider generation, validation, and conversion check object type (e.g. collider_shapes/add_bounding_primitive.py, validation/checks.py, collider_conversion/*).
Request
Allow generating bounding/mesh/remesh colliders from an Empty's evaluated Geometry Nodes output, similar to how modifier-evaluated mesh data is already pulled from regular mesh objects (use_modifiers path in add_bounding_primitive.py).
Notes / open questions
- Needs the evaluated geometry pulled via depsgraph (
object.evaluated_get(deg) + bpy.data.meshes.new_from_object(...)) since an Empty has no .data mesh/curve of its own.
- Should confirm behavior when the Geometry Nodes tree outputs non-mesh geometry (curves, points, instances) - likely out of scope initially, mesh output only.
- Touches the same
VALID_OBJECT_TYPES gate used across validation and naming/conversion, so adding EMPTY needs to be checked against each of those call sites, not just the primary generation path.
Summary
Since Blender 5.2, Empty objects can carry geometry produced by a Geometry Nodes modifier. Simple Collider currently can't generate colliders for these objects.
Current behavior
Object-type gating is centralized in
VALID_OBJECT_TYPES(properties/constants.py), currently{'MESH', 'CURVE', 'SURFACE', 'FONT', 'META'}.EMPTYis not included, so empties are filtered out everywhere collider generation, validation, and conversion check object type (e.g.collider_shapes/add_bounding_primitive.py,validation/checks.py,collider_conversion/*).Request
Allow generating bounding/mesh/remesh colliders from an Empty's evaluated Geometry Nodes output, similar to how modifier-evaluated mesh data is already pulled from regular mesh objects (
use_modifierspath inadd_bounding_primitive.py).Notes / open questions
object.evaluated_get(deg)+bpy.data.meshes.new_from_object(...)) since an Empty has no.datamesh/curve of its own.VALID_OBJECT_TYPESgate used across validation and naming/conversion, so adding EMPTY needs to be checked against each of those call sites, not just the primary generation path.