2016-08-31 33 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