0

我使用搅拌机 2.62。

我想使用搅拌机作为平铺 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()

所以我总是可以使用它并遍历我所有的模型图块,查找它们的副本放置的位置。我仍然更喜欢按照我上面描述的方式来做这件事,所以我把这个问题留了一会儿。

4

2 回答 2

1

按照你的回答,我发现

object.data.users

给出使用该网格的对象数量. 对我来说,查看是否存在链接的重复对象很有用。

于 2013-03-28T12:27:27.160 回答
1

好吧,我是正式的愚蠢。

你可以做

object.data

到达复制对象的来源。

于 2012-11-10T23:31:20.240 回答