QML, объединение нескольких сеток в одну сущность - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь создать настраиваемый компонент 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]
    }
}

Мой подход к объединению сеток состоит в том, чтобы заключить их как компоненты в отдельную область видимости сущности, как показано в последней строке.Но этот подход отображает только последнюю запись в массиве компонентов.Выше это было бы conemesh2.

Ранее я пытался создать несколько экземпляров Entity и передать каждому из них идентификатор ObjectPicker,

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

Но согласно документации ObjectPicker , средство выбора объектов не предназначено для совместного использования несколькими компонентами.

Итак мой вопрос заключается в следующем: каков правильный подход при объединении нескольких сеток в одну сетку вQML?

1 Ответ

0 голосов
/ 08 октября 2018

Я решил эту проблему, «выделив» элемент 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]
    }
}
...