我正在尝试通过将三个ConeMeshes合并到一个实体中来创建可自定义的Qt3D组件。用户必须能够与自定义实体进行交互,因此我在文件中添加了ObjectPicker。通常,我将使用预定义的缩放的.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]
}
}
我将网格放在一起的方法是将它们作为组件封装在单独的Entity范围中,如最后一行所示。但是这种方法仅呈现components数组中的最后一个条目。上面是圆锥2。
以前,我尝试创建多个Entity实例,并将每个ID传递给ObjectPicker,
Entity {
components: [conemesh1, conetransform1, combinedPicker]
}
Entity {
components: [conemesh2, conetransform2, combinedPicker]
}
但是根据ObjectPicker的文档,对象选择器不被多个组件共享。
所以我的问题是这样的:在Qml中将多个网格合并到一个网格中时的正确方法是什么?
答案 0 :(得分:4)
我通过“分解” 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]
}