幽灵对象指的是
有一些 object 不存在于所有 scene 和 view_layer 中。
大多数情况下,他们都没有任何用处,并且你无法将他们可视化和操作,因为他们不关联到任何scene和view_layer。
除非在 “Blender 文件” 面板中手动把他们删除,不然永远都会占用的你的Blender文件的空间。
幽灵对象来源
主动来源:
例如 vrm模型导入插件,只要启用该插件就会产生大量的 " | vrm " 名字开头的幽灵对象。
被动来源:
Blender的引用计数有时会出现问题,导致删除物体后,引用计数怎么都没法归0。
例如,Blender 3.2.1 使用追加功能导入某些模型后,再删除掉导入的模型,然后清理功能进行清理,然后去 “Blender 文件” 面板中寻找,能看到导入的一些对象没有成功被删掉。
直接执行以下脚本即可,即可删除全部幽灵对象
脚本:
import bpy
all_scene_obj_set = set()
for scene in bpy.data.scenes:
all_scene_obj_set.update(scene.objects)
for obj_i in range(len(bpy.data.objects))[::-1]:
obj = bpy.data.objects[obj_i]
if obj not in all_scene_obj_set:
print(f'Del {obj.name}')
bpy.data.objects.remove(obj)
print('Success')