Рендеринг 3d модели с помощью qml в qquickwidget

Я использую Qt 5.5.1 в Ubuntu 18.04, я хочу визуализировать 3d-модель (в формате.obj) с qml в qquickwidget), я использую основание setSource для привязки файла qml к qquickwidget, мой файл qml закодирован следующим образом:

import Qt3D 2.0
import Qt3D.Renderer 2.0
import QtQuick 2.0
Entity {
     id: root
     Camera {
        id: camera
        projectionType: CameraLens.PerspectiveProjection
        fieldOfView: 45
        aspectRatio: _window.width / _window.height
        nearPlane: 0.1
        farPlane: 1000.0
        position: Qt.vector3d(0.0, 10.0, 20.0)
        viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
        upVector: Qt.vector3d(0.0, 1.0, 0.0)
    }

property Material material

Mesh {
    id: trefoilMesh
    source: "../res/obj/model.obj"
}

Transform {
    id: j2Transform
...
}
}

но когда я запускаюсь, у меня появляется какая-то ошибка: QQuickWidget поддерживает только загрузку корневых объектов, производных от QQuickItem. Если в вашем примере используется QML 2 (например, qmlscene), а загруженный файл.qml имеет "import QtQuick 1.0" или "import Qt 4.7", эта ошибка возникнет. Чтобы загрузить файлы с помощью "import QtQuick 1.0" или "import Qt 4.7", используйте класс QDeclarativeView в модуле Qt Quick 1.

затем я обернул свое свойство Item в qml body чем-то вроде этого:

Item {
id: root
 Entity {
    id: sceneRoot

    Camera {
        id: camera
        projectionType: CameraLens.PerspectiveProjection
        fieldOfView: 45
        aspectRatio: _window.width / _window.height
        nearPlane: 0.1
        farPlane: 1000.0
        position: Qt.vector3d(0.0, 10.0, 20.0)
        viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
        upVector: Qt.vector3d(0.0, 1.0, 0.0)
...
}

Затем я получаю еще одно предупреждение: ReferenceError: _window не определено, и я получил пустой вывод. И затем я использую Qt3D::Quick::QQmlAspectEngine и QWindow для рендеринга qml(без переноса свойства Item) в качестве примера qt, я не могу получить правильную модель в окне, поэтому я думаю, что мой файл qml в порядке. Но проблема в том, что я не могу использовать QWindow, мне нужно встроить 3D-рендеринг модели как часть моей программы (уже есть главное окно), кто-нибудь может мне помочь, как это сделать? Большое спасибо!

0 ответов

Другие вопросы по тегам