рендеринг 3d модели с помощью qml в qquickwidget - PullRequest
0 голосов
/ 03 ноября 2018

Я использую 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, что-то вроде этого:

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-рендеринг модели как часть моей программы (уже есть главное окно), кто-нибудь может мне помочь, как это сделать? Большое спасибо!

...