void checkCloning_data() { QTest::addColumn<Qt3DCore::QTransform *>("transform"); Qt3DCore::QTransform *defaultConstructed = new Qt3DCore::QTransform(); QTest::newRow("defaultConstructed") << defaultConstructed; Qt3DCore::QTransform *matrixPropertySet = new Qt3DCore::QTransform(); matrixPropertySet->setMatrix(Qt3DCore::QTransform::rotateAround(QVector3D(0.1877f, 0.6868f, 0.3884f), 45.0f, QVector3D(0.0f, 0.0f, 1.0f))); QTest::newRow("matrixPropertySet") << matrixPropertySet; Qt3DCore::QTransform *translationSet = new Qt3DCore::QTransform(); translationSet->setTranslation(QVector3D(0.1877f, 0.6868f, 0.3884f)); QTest::newRow("translationSet") << translationSet; Qt3DCore::QTransform *scaleSet = new Qt3DCore::QTransform(); scaleSet->setScale3D(QVector3D(0.1f, 0.6f, 0.3f)); QTest::newRow("scaleSet") << scaleSet; Qt3DCore::QTransform *rotationSet = new Qt3DCore::QTransform(); scaleSet->setRotation(Qt3DCore::QTransform::fromAxisAndAngle(0.0f, 0.0f, 1.0f, 30.0f)); QTest::newRow("rotationSet") << rotationSet; Qt3DCore::QTransform *eulerRotationSet = new Qt3DCore::QTransform(); eulerRotationSet->setRotationX(90.0f); eulerRotationSet->setRotationY(10.0f); eulerRotationSet->setRotationZ(1.0f); QTest::newRow("eulerRotationSet") << eulerRotationSet; }
Transformer::Transformer() : m_bed(new Qt3DCore::QEntity()) { Qt3DRender::QPlaneMesh * cube = new Qt3DRender::QPlaneMesh(); cube->setWidth(20.0f); cube->setHeight(20.0f); cube->setMeshResolution(QSize(20,20)); m_bed->addComponent(cube); Qt3DCore::QTransform *cylinderTransform = new Qt3DCore::QTransform; cylinderTransform->setScale(1.0f); cylinderTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1, 0, 0), 90.0f)); cylinderTransform->setTranslation(QVector3D{0,0,10}); m_material = new Qt3DRender::QPhongMaterial(); m_material->setAmbient(Qt::red); m_material->setDiffuse(Qt::red); m_material->setSpecular(Qt::black); m_material->setEnabled(true); m_bed->addComponent(m_material); }
void View3D::createCoordSystem(Qt3DCore::QEntity* parent) { // Y - red Qt3DRender::QCylinderMesh *YAxis = new Qt3DRender::QCylinderMesh(); YAxis->setRadius(0.1f); YAxis->setLength(3); YAxis->setRings(100); YAxis->setSlices(20); m_YAxisEntity = QSharedPointer<Qt3DCore::QEntity>(new Qt3DCore::QEntity(parent)); m_YAxisEntity->addComponent(YAxis); Qt3DRender::QPhongMaterial *phongMaterialY = new Qt3DRender::QPhongMaterial(); phongMaterialY->setDiffuse(QColor(255, 0, 0)); phongMaterialY->setAmbient(Qt::gray); phongMaterialY->setSpecular(Qt::white); phongMaterialY->setShininess(50.0f); m_YAxisEntity->addComponent(phongMaterialY); // Z - blue Qt3DRender::QCylinderMesh *ZAxis = new Qt3DRender::QCylinderMesh(); ZAxis->setRadius(0.1f); ZAxis->setLength(3); ZAxis->setRings(100); ZAxis->setSlices(20); Qt3DCore::QTransform *transformZ = new Qt3DCore::QTransform(); transformZ->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1,0,0), 90)); m_ZAxisEntity = QSharedPointer<Qt3DCore::QEntity>(new Qt3DCore::QEntity(parent)); m_ZAxisEntity->addComponent(ZAxis); m_ZAxisEntity->addComponent(transformZ); Qt3DRender::QPhongMaterial *phongMaterialZ = new Qt3DRender::QPhongMaterial(); phongMaterialZ->setDiffuse(QColor(0, 0, 255)); phongMaterialZ->setAmbient(Qt::gray); phongMaterialZ->setSpecular(Qt::white); phongMaterialZ->setShininess(50.0f); m_ZAxisEntity->addComponent(phongMaterialZ); // X - green Qt3DRender::QCylinderMesh *XAxis = new Qt3DRender::QCylinderMesh(); XAxis->setRadius(0.1f); XAxis->setLength(3); XAxis->setRings(100); XAxis->setSlices(20); Qt3DCore::QTransform *transformX = new Qt3DCore::QTransform(); transformX->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0,0,1), 90)); m_XAxisEntity = QSharedPointer<Qt3DCore::QEntity>(new Qt3DCore::QEntity(parent)); m_XAxisEntity->addComponent(XAxis); m_XAxisEntity->addComponent(transformX); Qt3DRender::QPhongMaterial *phongMaterialX = new Qt3DRender::QPhongMaterial(); phongMaterialX->setDiffuse(QColor(0, 255, 0)); phongMaterialX->setAmbient(Qt::gray); phongMaterialX->setSpecular(Qt::white); phongMaterialX->setShininess(50.0f); m_XAxisEntity->addComponent(phongMaterialX); }
SceneModifier::SceneModifier(Qt3DCore::QEntity *rootEntity) : m_rootEntity(rootEntity) { // Torus shape data //! [0] m_torus = new Qt3DExtras::QTorusMesh(); m_torus->setRadius(1.0f); m_torus->setMinorRadius(0.4f); m_torus->setRings(100); m_torus->setSlices(20); //! [0] // TorusMesh Transform //! [1] Qt3DCore::QTransform *torusTransform = new Qt3DCore::QTransform(); torusTransform->setScale(2.0f); torusTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(0.0f, 1.0f, 0.0f), 25.0f)); torusTransform->setTranslation(QVector3D(5.0f, 4.0f, 0.0f)); //! [1] //! [2] Qt3DExtras::QPhongMaterial *torusMaterial = new Qt3DExtras::QPhongMaterial(); torusMaterial->setDiffuse(QColor(QRgb(0xbeb32b))); //! [2] // Torus //! [3] m_torusEntity = new Qt3DCore::QEntity(m_rootEntity); m_torusEntity->addComponent(m_torus); m_torusEntity->addComponent(torusMaterial); m_torusEntity->addComponent(torusTransform); //! [3] // Cone shape data Qt3DExtras::QConeMesh *cone = new Qt3DExtras::QConeMesh(); cone->setTopRadius(0.5); cone->setBottomRadius(1); cone->setLength(3); cone->setRings(50); cone->setSlices(20); // ConeMesh Transform Qt3DCore::QTransform *coneTransform = new Qt3DCore::QTransform(); coneTransform->setScale(1.5f); coneTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f)); coneTransform->setTranslation(QVector3D(0.0f, 4.0f, -1.5)); Qt3DExtras::QPhongMaterial *coneMaterial = new Qt3DExtras::QPhongMaterial(); coneMaterial->setDiffuse(QColor(QRgb(0x928327))); // Cone m_coneEntity = new Qt3DCore::QEntity(m_rootEntity); m_coneEntity->addComponent(cone); m_coneEntity->addComponent(coneMaterial); m_coneEntity->addComponent(coneTransform); // Cylinder shape data Qt3DExtras::QCylinderMesh *cylinder = new Qt3DExtras::QCylinderMesh(); cylinder->setRadius(1); cylinder->setLength(3); cylinder->setRings(100); cylinder->setSlices(20); // CylinderMesh Transform Qt3DCore::QTransform *cylinderTransform = new Qt3DCore::QTransform(); cylinderTransform->setScale(1.5f); cylinderTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f)); cylinderTransform->setTranslation(QVector3D(-5.0f, 4.0f, -1.5)); Qt3DExtras::QPhongMaterial *cylinderMaterial = new Qt3DExtras::QPhongMaterial(); cylinderMaterial->setDiffuse(QColor(QRgb(0x928327))); // Cylinder m_cylinderEntity = new Qt3DCore::QEntity(m_rootEntity); m_cylinderEntity->addComponent(cylinder); m_cylinderEntity->addComponent(cylinderMaterial); m_cylinderEntity->addComponent(cylinderTransform); // Cuboid shape data Qt3DExtras::QCuboidMesh *cuboid = new Qt3DExtras::QCuboidMesh(); // CuboidMesh Transform Qt3DCore::QTransform *cuboidTransform = new Qt3DCore::QTransform(); cuboidTransform->setScale(4.0f); cuboidTransform->setTranslation(QVector3D(5.0f, -4.0f, 0.0f)); Qt3DExtras::QPhongMaterial *cuboidMaterial = new Qt3DExtras::QPhongMaterial(); cuboidMaterial->setDiffuse(QColor(QRgb(0x665423))); //Cuboid m_cuboidEntity = new Qt3DCore::QEntity(m_rootEntity); m_cuboidEntity->addComponent(cuboid); m_cuboidEntity->addComponent(cuboidMaterial); m_cuboidEntity->addComponent(cuboidTransform); // Plane shape data Qt3DExtras::QPlaneMesh *planeMesh = new Qt3DExtras::QPlaneMesh(); planeMesh->setWidth(2); planeMesh->setHeight(2); // Plane mesh transform Qt3DCore::QTransform *planeTransform = new Qt3DCore::QTransform(); planeTransform->setScale(1.3f); planeTransform->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f)); planeTransform->setTranslation(QVector3D(0.0f, -4.0f, 0.0f)); Qt3DExtras::QPhongMaterial *planeMaterial = new Qt3DExtras::QPhongMaterial(); planeMaterial->setDiffuse(QColor(QRgb(0xa69929))); // Plane m_planeEntity = new Qt3DCore::QEntity(m_rootEntity); m_planeEntity->addComponent(planeMesh); m_planeEntity->addComponent(planeMaterial); m_planeEntity->addComponent(planeTransform); // Sphere shape data Qt3DExtras::QSphereMesh *sphereMesh = new Qt3DExtras::QSphereMesh(); sphereMesh->setRings(20); sphereMesh->setSlices(20); sphereMesh->setRadius(2); // Sphere mesh transform Qt3DCore::QTransform *sphereTransform = new Qt3DCore::QTransform(); sphereTransform->setScale(1.3f); sphereTransform->setTranslation(QVector3D(-5.0f, -4.0f, 0.0f)); Qt3DExtras::QPhongMaterial *sphereMaterial = new Qt3DExtras::QPhongMaterial(); sphereMaterial->setDiffuse(QColor(QRgb(0xa69929))); // Sphere m_sphereEntity = new Qt3DCore::QEntity(m_rootEntity); m_sphereEntity->addComponent(sphereMesh); m_sphereEntity->addComponent(sphereMaterial); m_sphereEntity->addComponent(sphereTransform); }