如何在Blender中标记最后导入的*obj

3
问题可能不是很清楚,但我的理解是:通过bpy.import_scene.obj函数加载对象数据后,有没有办法立即获取它的数据?我的意思是,当我使用名称“Mesh”(导入后对象的默认名称)选择一个对象时,所有这些函数都适用于场景中其他命名为“Mesh”的对象。我尝试从场景中的对象列表中获取最后一个对象,但它们按字母顺序排列,所以效果不佳。当我尝试更改对象名称并对其应用下一个函数时,它仅适用于一个对象。所有较早的导入对象实例都会恢复到默认值。如何解决这个问题?是否有一种选项可以从场景中获取最后添加的对象?或者在应用下一个函数之前,也许有一种方法可以“标记”*obj对象?或者直接将*obj数据导入到先前创建的空对象中。请注意,工作在Blender 2.63上。
2个回答

4
运算符不会返回数据,但您可以使用标记来实现这一点...
for obj in bpy.data.objects:
    obj.tag = True

bpy.import_scene.obj(filepath="somefile.obj")

imported_objects = [obj for obj in bpy.data.objects if obj.tag is False]

0
从我导入物品后看到的情况来看,所有对象(包括已经存在于场景中的对象)的默认标记都是True。因此,为了标记对象,您必须将它们分配一个False值,然后导入,如果它们的标记为True,则将它们添加到导入的对象中。而不是相反。因此,我不确定这个答案是否准确。

那么,如果你不确定你的答案是否准确,而已经有一个干净代码的被接受的答案,那你的意义是什么? - Nico Haase
"清晰的代码",例如:
  1. 从未经过测试的代码(第4行有错误。只需将其复制并粘贴到搅拌机控制台中即可查看错误。)
  2. 即使没有错误也从未运行的代码(修复错误会创建一个大小为0的数组)。这是因为,正如我所说,所有对象在场景开始时和新导入的对象都具有真实值。
我猜你只是假设@ideasman42的答案是准确的,因为“四个人的智慧”...我的意思是,如果有四个人点赞了这个答案,那么它一定是准确的,对吗?
- TrollAxeThrower
不,我认为ideaman42的答案是令人满意的,因为原帖作者接受了它并通过它找到了解决方案。 - Nico Haase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接