[[qt:qt3d]]
 

https://doc.qt.io/qt-6/qt3d-simple-cpp-example.html

simple-qt3d.pro

TARGET = simple-qt3d.bin

QT += core gui widgets 3dcore 3dextras 3drender 3dinput

SOURCES += simple-qt3d.cc

# dnf install qt5-qt3d-devel

simple-qt3d.cc

#include <Qt3DCore/QEntity>
#include <Qt3DCore/QTransform>
 
// #include <Qt3DRender/qrenderaspect.h>
#include <Qt3DRender/QCamera>
#include <Qt3DRender/QMaterial>
 
#include <Qt3DExtras/QTorusMesh>
#include <Qt3DExtras/QCuboidMesh>
#include <Qt3DExtras/QSphereMesh>
#include <Qt3DExtras/QConeMesh>
#include <Qt3DExtras/QCylinderMesh>
 
#include <Qt3DExtras/QPhongMaterial>
 
#include <Qt3DExtras/QOrbitCameraController>
// #include <Qt3DExtras/QFirstPersonCameraController>
#include <Qt3DExtras/Qt3DWindow>
 
#include <QApplication>
 
Qt3DCore::QEntity *createScene()
{
    Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity;
 
    Qt3DCore::QEntity *torusEntity = new Qt3DCore::QEntity (rootEntity);
 
    Qt3DExtras::QPhongMaterial *material = new Qt3DExtras::QPhongMaterial (rootEntity);
    material->setAmbient (QColor ("blue"));
 
    Qt3DExtras::QTorusMesh *torusMesh = new Qt3DExtras::QTorusMesh;
    torusMesh->setRadius(5);
    torusMesh->setMinorRadius(1);
    torusMesh->setRings(100);
    torusMesh->setSlices(20);
 
    Qt3DCore::QTransform *torusTransform = new Qt3DCore::QTransform;
    torusTransform->setScale3D(QVector3D(1.5, 1, 0.5));
    torusTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1, 0, 0), 45.0f));
 
    torusEntity->addComponent(torusMesh);
    torusEntity->addComponent(torusTransform);
    torusEntity->addComponent(material);
 
    Qt3DCore::QEntity *sphereEntity = new Qt3DCore::QEntity(rootEntity);
    Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh;
    sphereMesh->setRadius(3);
    sphereMesh->setGenerateTangents(true);
 
    sphereEntity->addComponent(sphereMesh);
    sphereEntity->addComponent(material);
 
    return rootEntity;
}
 
int main(int argc, char* argv[])
{
    QGuiApplication app(argc, argv);
    Qt3DExtras::Qt3DWindow view;
 
    Qt3DCore::QEntity *scene = createScene();
 
    // 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));
 
    // For camera controls
    Qt3DExtras::QOrbitCameraController *camController = new Qt3DExtras::QOrbitCameraController(scene);
    camController->setLinearSpeed( 50.0f );
    camController->setLookSpeed( 180.0f );
    camController->setCamera(camera);
 
    view.setRootEntity(scene);
    view.show();
 
    return app.exec();
}
const int N = 3; // pocet rozmeru
const int P = 8; // pocet policek v jedne rade

using namespace Qt3DCore;
using namespace Qt3DExtras;

Qt3DCore::QEntity *createScene()
{
    Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity;

    QPhongMaterial *whiteMaterial = new QPhongMaterial (rootEntity);
    whiteMaterial->setAmbient (QColor ("white"));

    Qt3DExtras::QPhongMaterial *yellowMaterial = new Qt3DExtras::QPhongMaterial (rootEntity);
    yellowMaterial->setAmbient (QColor ("yellow"));

    const float W = 10; // sirka a vyska policka sachovnice
    const float H = 0.1; // vyska policka

    for (int z = 0; z < P; z++)
        for (int x = 0; x < P; x++)
            for (int y = 0; y < P; y++)
            {
                QEntity * boxEntity = new QEntity (rootEntity);
                QCuboidMesh * boxMesh = new QCuboidMesh;
                boxMesh->setXExtent (W);
                boxMesh->setZExtent (W);
                boxMesh->setYExtent (H);
                Qt3DCore::QTransform * boxTransform = new Qt3DCore::QTransform;
                boxTransform->setTranslation (QVector3D (x*W, z*W, y*W));
                boxEntity->addComponent (boxMesh);
                boxEntity->addComponent (boxTransform);
                if ((x+y+z)%2 == 0)
                    boxEntity->addComponent (whiteMaterial);
                else
                    boxEntity->addComponent (yellowMaterial);
            }
}
 
qt/qt3d.txt · Last modified: 2023/04/12 15:51 by 147.32.8.31
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki