2016-08-31 34 views
0

我正在使用python脚本在Blender中导入和导出wavefront obj文件。问题是如果已经添加了一个名称相同的对象,Blender会将一个索引添加到对象的名称中。例如myObject变成myObject.001如果过去已经添加了一个名为myObject的对象(即使该对象已被删除)。当我将对象导出为.obj时,名称不再与以前相同。防止搅拌器名称索引

如何重置“名称计数器”?

回答

1

搅拌器中的每个项目在它所属的项目列表中必须有一个唯一的名称(每个名称都是一个字典键),并且通过在文件中添加一个基于其他项目的数字后缀来使名称唯一它基于文件而不是场景,因为混合文件可以包含多个场景。在此过程中不会考虑已删除的对象,而其他项目(如材料和网格数据)会保留在列表中,直到文件关闭。

的OBJ进口商首先创建网格数据块,然后使用相同的名称作为网格数据创建一个对象 - 这会导致新的对象总是具有数字后缀比以前的对象大。

如果您使用python脚本导入多个对象,则可以在导入对象后重命名该对象。

bpy.ops.import_scene.obj(filepath='Object1.obj') 
bpy.context.selected_objects[0].name = 'Object' 
bpy.context.selected_objects[0].data.name = 'Object' 

在这种情况下,名称为“Object”的任何现有对象都将被重命名为具有后缀。

+0

.obj文件可以包含多个对象。如何在导入文件后找到他们的“真实”名称? – MyNameIsHans

+1

导入obj文件后,'bpy.context.selected_objects'将是刚导入的对象列表,任何以前的对象都将被取消选择。遍历该列表并通过删除后缀来重命名它们。 – sambler

+0

好的。但是如果模型已经包含后缀呢?例如,因为它是用搅拌器制成的? – MyNameIsHans