@add_object.register(core.FileBasedObject)
def _add_object(obj: core.FileBasedObject):
    bpy.ops.import_scene.obj(filepath=str(obj.render_filename), axis_forward=obj.front, axis_up=obj.up)
    assert (len(bpy.context.selected_objects) == 1)
    blender_obj = bpy.context.selected_objects[0]
    setters = {'position': core.AttributeSetter(blender_obj, 'location'), 'quaternion': core.AttributeSetter(blender_obj, 'rotation_quaternion'), 'scale': core.AttributeSetter(blender_obj, 'scale'), 'material': core.AttributeSetter(blender_obj, 'active_material')}
    return (blender_obj, setters)
@add_object.register(core.FileBasedObject)
def _add_object(obj: core.FileBasedObject):
    bpy.ops.import_scene.obj(filepath=str(obj.render_filename), axis_forward=obj.front, axis_up=obj.up)
    assert (len(bpy.context.selected_objects) == 1)
    blender_obj = bpy.context.selected_objects[0]
    setters = {'position': core.AttributeSetter(blender_obj, 'location'), 'quaternion': core.AttributeSetter(blender_obj, 'rotation_quaternion'), 'scale': core.AttributeSetter(blender_obj, 'scale'), 'material': core.AttributeSetter(blender_obj, 'active_material')}
    return (blender_obj, setters)