我使用Blender 2.62。
我想使用blender作为平铺3d世界的编辑器。我有不同瓷砖的模型,我将这些模型的链接副本放在另一层中以构建地图。
现在我想以一些可理解的格式导出这个地图(如[[x,y,z,tileNo],[x,y,z,tileNo],...])。我可以使用下面的代码迭代给定图层中的所有对象,但我找不到获取复制对象源的方法。这可能吗?
def layerNos(o):
return [ln for (ln, l) in enumerate(o.layers) if l]
def exportObjectsFromLayer(choosenLayerNo):
for o in bpy.data.objects:
if choosenLayerNo in layerNos(o):
yield exportTile(o)
def exportTile(o):
return ("[%d,%d,%d]" % (
round(x.location.x),
round(x.location.z),
round(x.location.y),
getTileNumber(x)))
def getTileNumber(x):
return None # this is where I'd like to access
# the source of the duplicated object
# and get its name to lookup its number
# and return it as a tile number
编辑:我找到了相反的方法 - 从复制源我可以通过使用找到所有重复的对象:
bpy.data.objects['Cube.121'].dupli_list_create(bpy.context.scene)
for dupliObj in bpy.data.objects['Cube.121'].dupli_list:
#do sth with duplicated object
bpy.data.objects['Cube.121'].dupli_list_clear()
所以我总是可以使用它并遍历我的所有模型图块,查找放置重复项的位置。我仍然倾向于按照上面描述的方式这样做,所以我暂时搁置这个问题。
答案 0 :(得分:1)
好的,我是正式的傻瓜。
你可以做到
object.data
获取重复对象的来源。
答案 1 :(得分:1)
根据你的回答,我发现了
object.data.users
给出使用该网格的对象数。对我来说,查看是否存在链接的重复对象非常有用。