QML,将多个网格组合成单个实体

QML, Combining multiple meshes into single entity

我正在尝试通过将三个 ConeMeshes into a single entity. The user must be able to interact with the custom entity, so I have added an ObjectPicker 合并到文件中来创建可自定义的 Qt3D 组件。通常,我会使用预定义的缩放 .obj 文件,但我的经理希望对象直接由 Qt 绘制。

我要合并的两个网格在单独的 qml 文件中定义,因此我可以在我的 Scene3D 中调用它。

Entity {
    ObjectPicker {
    id: combinedPicker
    }
    ConeMesh {
    id: conemesh1
    ...
    }
    ConeMesh {
    id: conemesh2
    ...
    }
    Transform {
    id: conetransform1
    }
    Transform {
    id: conetransform2
    }
    Entity {
    components: [conemesh1, conetransform1, conemesh2, conetransform2, combinedPicker]
    }
}

我将网格放在一起的方法是将它们作为组件封装在单独的实体范围中,如最后一行所示。但是这种方法只呈现组件数组中的最后一个条目。以上,就是 conemesh2.

之前我尝试创建多个 Entity 实例,并向每个实例传递 ObjectPicker 的 id,

Entity {
components: [conemesh1, conetransform1, combinedPicker]
}
Entity {
components: [conemesh2, conetransform2, combinedPicker]
}

但是根据 ObjectPicker 的文档,对象选择器不应该被多个组件共享。

所以我的问题是这样的:在 Qml 中将多个网格合并为一个单一网格时的正确方法是什么?

我通过 "factoring" ObjectPicker 元素解决了这个问题,有效地使其成为网格实体的兄弟。

 Entity {
    components: 
        [conePicker]
    Entity {
      id: pipeTopEntity
      components: [coneMeshTop, coneTransformTop, floorMaterialTop]
    }
    Entity {
      id: pipeBodyEntity
      components: [coneMeshBody, coneTransformBody, floorMaterialBody]
    }
    Entity {
      id: pipeBotEntity
      components: [ coneMeshBot, coneTransformBot,  floorMaterialBot]
    }
}