qml_puthon_user
qml_puthon_userDec. 3, 2019, 1:36 a.m.

Как в QML форму добавить 3D объект.

Всем доброго времени суток!
Я пишу интерфейс для пользователя и в него мне нужно добавить вращающийся 3д объект.
Как я понял, на python ещё нет QtQuick3D, поэтому пользовался Qt3D.
Для примера написал код из видео.
Qt3D QML Tutorial 1. Шаблон проекта / Project template

Написал код:

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.3
import Qt3D.Core 2.0
import Qt3D.Input 2.0
import Qt3D.Render 2.0
import Qt3D.Logic 2.0
import Qt3D.Extras 2.0

ApplicationWindow{
    id:general_win
    visible: true
    width: 1680
    height: 920
    title: qsTr("Test title")

    Rectangle 
    {
        id: mainwindow
        width: 640
        height: 480
        color: "green"

        Entity 
        {
            id: rootEntity

            Camera 
            {
                id: mainCamera
                projectionType: CameraLens.PerspectiveProjection
                fieldOfView: 60.0
                aspectRatio: 16.0 / 9.0
                nearPlane: 0.1
                farPlane: 1000.0
                position: Qt.vector3d(0.0, 0.0, 40.0)
                upVector: Qt.vector3d(0.0, 1.0, 0.0)
                viewCenter: Qt.vector3d(0.0, 0.0, 0.0)
            }

            TorusMesh 
            {
                id: torusMesh
                radius: 15.0
                minorRadius: 6.0
                slices: 16
                rings: 32
            }

            PhongMaterial
            {
                id: torusMaterial
            }

            Transform
            {
                id: torusTransform
                translation: Qt.vector3d(0.0, 0.0, 0.0)
            }

            components: 
            [
                RenderSettings
                {
                    activeFrameGraph: ForwardRenderer
                    {
                        clearColor: Qt.rgba(1, 1, 1, 1)
                        camera: mainCamera
                    }
                },
                InputSettings {}
            ]

            Entity
            {
                id: torusEntity
                components: [torusMesh, torusMaterial, torusTransform]
            }
        }
    }
}

Скрипт python который вызывает форму:

from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot

if __name__ == "__main__":
    import sys

    # создаём экземпляр приложения
    app = QGuiApplication(sys.argv)
    # создаём QML движок
    engine = QQmlApplicationEngine()

    # загружаем файл qml в движок
    engine.load("Interface_vr_eyes.qml")

    engine.quit.connect(app.quit)
    sys.exit(app.exec_())

В конечном итоге, окно приложения отображается, зелёный прямоугольник отображается в нём, а вот 3д объект, который создаётся из видео-урока не появляется на экране. Подскажите, в чём может быть проблема?
P.S. а точно ли нет QtQuick3D для питона? Если есть, подскажите.
P.S.S ещё хотел бы знать, как загрузить свою модель сделанную в КОМПАС-3D/Blender3D. На этот вопрос ответ увидел, да, загружать модель из Blender3d в расширении obj можно.

Увидел в видео, что код вызова qml файла тоже немного переписан... Там создаётся уже как бы сцена для 3д объекта, а мне нужно вставить 3д обект в главную форму получается...
Что-то типа...

import QtQuick 2.12
import ... (т.д.)

//главное окно программы
ApplicationWindow
{
    id:general_win
    visible: true
    width: 1680
    height: 920
    title: qsTr("Test title")

    //label
    //button
    //image
    //и т.д.

    //блок с вращающейся 3д моделью
    Rectangle
    {
        id: mainwindow
        width: 640
        height: 480
        color: "green"

        //описание видимости 3д модели
    }

}

Спасибо!

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

11
Evgenii Legotckoi
  • Dec. 3, 2019, 5:50 a.m.

Так там не используется QML, но могу предположить, что у вас не установлен PyQt5.Qt3DCore и остальные соответствующие библиотеки

    qml_puthon_user
    • Dec. 3, 2019, 6:04 a.m.

    Установлено

    Устанавливал через pip3 install pyqt3d

      qml_puthon_user
      • Dec. 3, 2019, 6:06 a.m.
      • (edited)

      Да, в примере не используется QML, подумал, что от туда хоть как-то можно оттолкнуться.
      Если из видео, в первом сообщении, пример рабочий для python. То проблема стоит в том, что я не могу вызвать qml файл из python.

        qml_puthon_user
        • Dec. 3, 2019, 8:01 a.m.
        • (edited)

        У меня даже нет предложения о "setSource", как в видео...

        setSource наблюдаю пока что только в QSceneLoader()

          qml_puthon_user
          • Dec. 3, 2019, 8:54 a.m.

          Реализация безнадёжна? :)

            Evgenii Legotckoi
            • Dec. 3, 2019, 8:57 a.m.
            • (edited)

            У нас с вами разница во времени скорее всего достаточно большая, поскольку я в Праге проживаю. Так что не кипишуйте. Мне сегодня ещё долго работать. Да и тут узнал, что вечером корпоратив, даты которого я перепутал. Так что наберитесь терпения )))

              qml_puthon_user
              • Dec. 3, 2019, 9:06 a.m.

              Пардон.) Буду ждать и экспериментировать.)

                qml_puthon_user
                • Dec. 3, 2019, 12:18 p.m.

                Полазил я по файлам Qt Design Studio, нашёл там библиотеку QtQuick3D и остальные. Сверил с файлами, которые есть у самого питона в site-packages и увидел, что да, у питона нет папки QtQuick3D. Как я понял, для вызова этой библиотеки нужен файл питона с расширением .pyd, который может называться QtQuick3D.pyd(почему так? решил из того, что есть файл QtQuick.pyd :)).

                Я не смог осилить написать зависимости, чтобы на питоне запустить QtQuick3D. Если хотите, можете попробовать. :) А так, остаётся ждать от разработчика Riverbank.
                Riverbank | Software | PyQt | What is PyQt?

                  Evgenii Legotckoi
                  • Dec. 4, 2019, 3:38 p.m.
                  • The answer was marked as a solution.

                  Я посмотрел то видео, и сравнил с вашим кодом. У вас не запускается 3D потому, что вы не используете Qt3DQuickWindow, а используете обычный QML engine. В этом проблема, чтобы вообще 3D заработало. Но вашем случае это не получится запустить потому, что Qt3DQuickWindow отсутствует в PyQt5. Так что нужно изучать C++ ;-)

                    qml_puthon_user
                    • Dec. 4, 2019, 10:07 p.m.

                    Спасибо за помощь! :) Я попытаю надежды в ожидании QtQuick3D от Riverbank'a. :)

                      Comments

                      Only authorized users can post comments.
                      Please, Log in or Sign up
                      AD

                      C ++ - Test 004. Pointers, Arrays and Loops

                      • Result:50points,
                      • Rating points-4
                      m

                      C ++ - Test 004. Pointers, Arrays and Loops

                      • Result:80points,
                      • Rating points4
                      m

                      C ++ - Test 004. Pointers, Arrays and Loops

                      • Result:20points,
                      • Rating points-10
                      Last comments
                      i
                      innorwallNov. 15, 2024, 5:26 a.m.
                      Qt/C++ - Lesson 031. QCustomPlot – The build of charts with time buy generic priligy We can just chat, and we will not lose too much time anyway
                      i
                      innorwallNov. 15, 2024, 3:03 a.m.
                      Qt/C++ - Lesson 060. Configuring the appearance of the application in runtime I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
                      i
                      innorwallNov. 14, 2024, 8:07 p.m.
                      Circuit switching and packet data transmission networks Angioedema 1 priligy dapoxetine
                      i
                      innorwallNov. 14, 2024, 7:42 p.m.
                      How to Copy Files in Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
                      i
                      innorwallNov. 14, 2024, 5:09 p.m.
                      Qt/C++ - Tutorial 068. Hello World using the CMAKE build system in CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
                      Now discuss on the forum
                      i
                      innorwallNov. 14, 2024, 11:39 a.m.
                      добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
                      i
                      innorwallNov. 11, 2024, 6:55 p.m.
                      Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                      9
                      9AnonimOct. 25, 2024, 4:10 p.m.
                      Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

                      Follow us in social networks