0

我正在为 Blender 编写一个导出器,但遇到了一个小问题 - 当我多次导出同一个模型时,导出的网格总是被分配一个不同的名称(添加了数字前缀)。

这是我用来访问要导出的网格的代码:

for ob in bpy.scene.objects:

    # get derived objects
    free, derived = create_derived_objects(scene, ob)

    if derived is None:
        continue

    for obDerived, mat in derived:
        if ob.type not in {'MESH', 'CURVE', 'SURFACE', 'FONT', 'META'}:
            continue

        try:
            derivedBlenderMesh = obDerived.to_mesh( scene, True, 'PREVIEW' )
        except:
            derivedBlenderMesh = None

        if derivedBlenderMesh:
                        # ... and the export stuff goes here

    # once everything's done, I remove the created instance
    if free:
        free_derived_objects(derivedBlenderMesh)

老实说,我是从 3ds 出口商那里拿到的。

我注意到它创建了一个新的(派生的)对象,然后创建了一个新的网格(转换和一切),所以我猜这些是分配新名称的潜在位置。

我浏览了文档,但除了通过to_mesh方法之外,我没有看到 Object 和 Mesh 实例之间的明确关系,这显然会创建一个新的网格实例。

但是 - 我真的需要得到原来的名字。有人可以告诉我如何访问它吗?

在此先感谢:)

4

1 回答 1

0

好的 - 我绕过 id (有点)。我基本上忽略了网格名称,并在它嵌入的对象之后命名导出的网格。

这当然是在一个假设下起作用的,即每个对象都有一个专用的网格,但是我在导出之前复制了它们,所以情况确实如此。

如果有人有更好的解决方案,请在此处发布。

于 2012-09-05T13:24:18.920 回答