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 #include // #include #include #include #include #include #include #include #include #include #include // #include #include #include 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); } }