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; }
void checkCompositionDecomposition() { // GIVEN Qt3DCore::QTransform t; Qt3DCore::QTransform t2; QMatrix4x4 m = Qt3DCore::QTransform::rotateAround(QVector3D(0.1877f, 0.6868f, 0.3884f), 45.0f, QVector3D(0.0f, 0.0f, 1.0f)); // WHEN t.setMatrix(m); t2.setScale3D(t.scale3D()); t2.setRotation(t.rotation()); t2.setTranslation(t.translation()); // THEN QCOMPARE(t.scale3D(), t2.scale3D()); QCOMPARE(t.rotation(), t2.rotation()); QCOMPARE(t.translation(), t2.translation()); // Note: t.matrix() != t2.matrix() since different matrices // can result in the same scale, rotation, translation }
bool BrainSurfaceTreeItem::addData(const Surface& tSurface, Qt3DCore::QEntity* parent) { //Create renderable 3D entity m_pParentEntity = parent; m_pRenderable3DEntity = new Renderable3DEntity(parent); m_pRenderable3DEntityActivationOverlay = new Renderable3DEntity(parent); QMatrix4x4 m; Qt3DCore::QTransform* transform = new Qt3DCore::QTransform(); m.rotate(180, QVector3D(0.0f, 1.0f, 0.0f)); m.rotate(-90, QVector3D(1.0f, 0.0f, 0.0f)); transform->setMatrix(m); m_pRenderable3DEntity->addComponent(transform); m_pRenderable3DEntityActivationOverlay->addComponent(transform); //Create color from curvature information with default gyri and sulcus colors QByteArray arrayCurvatureColor = createCurvatureVertColor(tSurface.curv()); //Set renderable 3D entity mesh and color data m_pRenderable3DEntity->setMeshData(tSurface.rr(), tSurface.nn(), tSurface.tris(), -tSurface.offset(), arrayCurvatureColor); //Generate activation overlay surface // MatrixX3f overlayAdds = tSurface.rr(); // for(int i = 0; i<tSurface.nn().rows(); i++) { // RowVector3f direction = tSurface.nn().row(i); // direction.normalize(); // overlayAdds.row(i) = direction*0.0001; // } // m_pRenderable3DEntityActivationOverlay->setMeshData(tSurface.rr()+overlayAdds, tSurface.nn(), tSurface.tris(), -tSurface.offset(), matCurvatureColor); //Add data which is held by this BrainSurfaceTreeItem QVariant data; data.setValue(arrayCurvatureColor); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceCurrentColorVert); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceCurvatureColorVert); data.setValue(tSurface.rr()); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceVert); data.setValue(tSurface.tris()); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceTris); data.setValue(tSurface.nn()); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceNorm); data.setValue(tSurface.curv()); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceCurv); data.setValue(tSurface.offset()); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceOffset); data.setValue(m_pRenderable3DEntity); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceRenderable3DEntity); data.setValue(m_pRenderable3DEntityActivationOverlay); this->setData(data, BrainSurfaceTreeItemRoles::SurfaceRenderable3DEntityAcivationOverlay); //Add surface meta information as item children m_pItemSurfColorInfoOrigin = new BrainTreeMetaItem(BrainTreeMetaItemTypes::SurfaceColorInfoOrigin, "Color from curvature"); connect(m_pItemSurfColorInfoOrigin, &BrainTreeMetaItem::colorInfoOriginChanged, this, &BrainSurfaceTreeItem::onColorInfoOriginOrCurvColorChanged); *this<<m_pItemSurfColorInfoOrigin; data.setValue(QString("Color from curvature")); m_pItemSurfColorInfoOrigin->setData(data, BrainTreeMetaItemRoles::SurfaceColorInfoOrigin); m_pItemSurfColSulci = new BrainTreeMetaItem(BrainTreeMetaItemTypes::SurfaceColorSulci, "Sulci color"); connect(m_pItemSurfColSulci, &BrainTreeMetaItem::curvColorsChanged, this, &BrainSurfaceTreeItem::onColorInfoOriginOrCurvColorChanged); *this<<m_pItemSurfColSulci; data.setValue(QColor(50,50,50)); m_pItemSurfColSulci->setData(data, BrainTreeMetaItemRoles::SurfaceColorSulci); m_pItemSurfColSulci->setData(data, Qt::DecorationRole); m_pItemSurfColGyri = new BrainTreeMetaItem(BrainTreeMetaItemTypes::SurfaceColorGyri, "Gyri color"); connect(m_pItemSurfColGyri, &BrainTreeMetaItem::curvColorsChanged, this, &BrainSurfaceTreeItem::onColorInfoOriginOrCurvColorChanged); *this<<m_pItemSurfColGyri; data.setValue(QColor(125,125,125)); m_pItemSurfColGyri->setData(data, BrainTreeMetaItemRoles::SurfaceColorGyri); m_pItemSurfColGyri->setData(data, Qt::DecorationRole); BrainTreeMetaItem *itemSurfFileName = new BrainTreeMetaItem(BrainTreeMetaItemTypes::SurfaceFileName, tSurface.fileName()); itemSurfFileName->setEditable(false); *this<<itemSurfFileName; data.setValue(tSurface.fileName()); itemSurfFileName->setData(data, BrainTreeMetaItemRoles::SurfaceFileName); BrainTreeMetaItem *itemSurfType = new BrainTreeMetaItem(BrainTreeMetaItemTypes::SurfaceType, tSurface.surf()); itemSurfType->setEditable(false); *this<<itemSurfType; data.setValue(tSurface.surf()); itemSurfType->setData(data, BrainTreeMetaItemRoles::SurfaceType); BrainTreeMetaItem *itemSurfPath = new BrainTreeMetaItem(BrainTreeMetaItemTypes::SurfaceFilePath, tSurface.filePath()); itemSurfPath->setEditable(false); *this<<itemSurfPath; data.setValue(tSurface.filePath()); itemSurfPath->setData(data, BrainTreeMetaItemRoles::SurfaceFilePath); return true; }