This commit is contained in:
2019-10-01 16:09:31 +02:00
parent 19363e3e37
commit c7cd72f4bf
5 changed files with 191 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
#include "cmainwindow.h"
#include "ui_cmainwindow.h"
#include <Qt3DCore/QEntity>
#include <Qt3DCore/QTransform>
#include <Qt3DCore/QAspectEngine>
#include <Qt3DRender/qrenderaspect.h>
#include <Qt3DRender/QCamera>
#include <Qt3DRender/QMaterial>
#include <Qt3DExtras/Qt3DWindow>
#include <Qt3DExtras/QTorusMesh>
#include <Qt3DExtras/QOrbitCameraController>
#include <Qt3DExtras/QPhongMaterial>
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;
}