diff --git a/3dtest.pro b/3dtest.pro new file mode 100644 index 0000000..5f4aee3 --- /dev/null +++ b/3dtest.pro @@ -0,0 +1,40 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2019-10-01T14:45:20 +# +#------------------------------------------------- + +QT += core gui 3dcore 3drender 3dinput 3dlogic 3dextras 3danimation + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = 3dtest +TEMPLATE = app + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which has been marked as deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +CONFIG += c++11 + +SOURCES += \ + main.cpp \ + cmainwindow.cpp + +HEADERS += \ + cmainwindow.h + +FORMS += \ + cmainwindow.ui + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target diff --git a/cmainwindow.cpp b/cmainwindow.cpp new file mode 100644 index 0000000..6c47190 --- /dev/null +++ b/cmainwindow.cpp @@ -0,0 +1,75 @@ +#include "cmainwindow.h" +#include "ui_cmainwindow.h" + + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + + +Qt3DCore::QEntity* createTestScene() +{ + Qt3DCore::QEntity* root = new Qt3DCore::QEntity; + Qt3DCore::QEntity* torus = new Qt3DCore::QEntity(root); + + Qt3DExtras::QTorusMesh* mesh = new Qt3DExtras::QTorusMesh; + mesh->setRadius(5); + mesh->setMinorRadius(1); + mesh->setRings(100); + mesh->setSlices(20); + + Qt3DCore::QTransform* transform = new Qt3DCore::QTransform; +// transform->setScale3D(QVector3D(1.5, 1, 0.5)); + transform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1,0,0), 45.f )); + + Qt3DRender::QMaterial* material = new Qt3DExtras::QPhongMaterial(root); + + torus->addComponent(mesh); + torus->addComponent(transform); + torus->addComponent(material); + + return root; +} + +cMainWindow::cMainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::cMainWindow) +{ + ui->setupUi(this); + + Qt3DExtras::Qt3DWindow* view = new Qt3DExtras::Qt3DWindow(); + Qt3DCore::QEntity* scene = createTestScene(); + + // camera + Qt3DRender::QCamera *camera = view->camera(); + camera->lens()->setPerspectiveProjection(45.0f, 16.0f/9.0f, 0.1f, 1000.0f); + camera->setPosition(QVector3D(0, 0, 40.0f)); + camera->setViewCenter(QVector3D(0, 0, 0)); + + // manipulator + Qt3DExtras::QOrbitCameraController* manipulator = new Qt3DExtras::QOrbitCameraController(scene); + manipulator->setLinearSpeed(50.f); + manipulator->setLookSpeed(180.f); + manipulator->setCamera(camera); + + view->setRootEntity(scene); +// view.show(); + + + QWidget* m_lp3DWidget = QWidget::createWindowContainer(view); + ui->gridLayout->addWidget(m_lp3DWidget, 0, 0, 1, 1); +} + +cMainWindow::~cMainWindow() +{ + delete ui; +} diff --git a/cmainwindow.h b/cmainwindow.h new file mode 100644 index 0000000..142e5e5 --- /dev/null +++ b/cmainwindow.h @@ -0,0 +1,22 @@ +#ifndef CMAINWINDOW_H +#define CMAINWINDOW_H + +#include + +namespace Ui { +class cMainWindow; +} + +class cMainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit cMainWindow(QWidget *parent = nullptr); + ~cMainWindow(); + +private: + Ui::cMainWindow *ui; +}; + +#endif // CMAINWINDOW_H diff --git a/cmainwindow.ui b/cmainwindow.ui new file mode 100644 index 0000000..80585e3 --- /dev/null +++ b/cmainwindow.ui @@ -0,0 +1,42 @@ + + + cMainWindow + + + + 0 + 0 + 400 + 300 + + + + cMainWindow + + + + + + + + 0 + 0 + 400 + 21 + + + + + + TopToolBarArea + + + false + + + + + + + + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..98e160f --- /dev/null +++ b/main.cpp @@ -0,0 +1,12 @@ +#include "cmainwindow.h" +#include + + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + cMainWindow w; + w.show(); + + return a.exec(); +}