рендеринг 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

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]