QML, объединение нескольких сеток в один объект
Я пытаюсь создать настраиваемый компонент Qt3D, объединив три ConeMeshes в одну сущность. Пользователь должен иметь возможность взаимодействовать с пользовательской сущностью, поэтому я добавил 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]
}
}
Мой подход для объединения сеток необходимо заключить их как компоненты в отдельную область сущностей, как показано в последней строке. Но этот подход отображает только последнюю запись в массиве компонентов. Выше, это будет конус 2.
Ранее я пытался создать несколько экземпляров сущностей и передать каждому из них идентификатор ObjectPicker,
Entity {
components: [conemesh1, conetransform1, combinedPicker]
}
Entity {
components: [conemesh2, conetransform2, combinedPicker]
}
Но согласно документации ObjectPicker, средство выбора объектов не является общим для нескольких компонентов.
Так что мой вопрос заключается в следующем: каков подход corrent при объединении нескольких сеток в одну единственную сетку в Qml?
1 ответ:
Я решил эту проблему путем "факторинга" элемента 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] }