41 #include "brainview.h"
49 #include <QMouseEvent>
69 init(QString(), QString(), -1, QString(), QString(), QString());
75 BrainView::BrainView(
const QString &subject_id, qint32 hemi,
const QString &surf,
const QString &subjects_dir)
79 init(QString(), subject_id, hemi, surf, QString(), subjects_dir);
85 BrainView::BrainView(
const QString &subject_id, qint32 hemi,
const QString &surf,
const QString &atlas,
const QString &subjects_dir)
89 init(QString(), subject_id, hemi, surf, atlas, subjects_dir);
99 init(p_sFile, QString(), -1, QString(), QString(), QString());
114 std::cout<<
"BrainView::addSourceEstimate()"<<std::endl;
116 m_pStcDataModel->addData(p_sourceEstimate);
122 void BrainView::initStcDataModel(
const QString &subject_id, qint32 hemi,
const QString &surf,
const QString &subjects_dir,
const QString &atlas,
const MNEForwardSolution &forwardSolution)
125 m_pStcDataModel->init(subject_id, hemi, surf, subjects_dir, atlas, forwardSolution);
128 m_pBrainSurfaceEntity->setModel(m_pStcDataModel);
134 void BrainView::init(
const QString& p_sFile,
const QString &subject_id, qint32 hemi,
const QString &surf,
const QString &atlas,
const QString &subjects_dir)
139 m_Engine.registerAspect(
new Qt3D::QRenderAspect());
140 Qt3D::QInputAspect *m_pAspectInput =
new Qt3D::QInputAspect;
141 m_Engine.registerAspect(m_pAspectInput);
142 m_Engine.initialize();
144 m_data.insert(QStringLiteral(
"surface"), QVariant::fromValue(static_cast<QSurface *>(
this)));
145 m_data.insert(QStringLiteral(
"eventSource"), QVariant::fromValue(
this));
146 m_Engine.setData(m_data);
149 m_pRootEntity =
new Qt3D::QEntity();
150 m_pRootEntity->setObjectName(QStringLiteral(
"m_pRootEntity"));
153 m_pBrainSurfaceEntity = QSharedPointer<BrainSurface>(
new BrainSurface(subject_id, hemi, surf, subjects_dir, m_pRootEntity));
154 m_pBrainSurfaceEntity->setObjectName(QStringLiteral(
"m_pBrainSurfaceEntity"));
157 Qt3D::QPointLight *light1 =
new Qt3D::QPointLight();
158 light1->setColor(Qt::white);
159 light1->setIntensity(0.1f);
160 m_pRootEntity->addComponent(light1);
166 Qt3D::QCamera *cameraEntity =
new Qt3D::QCamera(m_pRootEntity);
167 cameraEntity->setObjectName(QStringLiteral(
"cameraEntity"));
169 cameraEntity->lens()->setPerspectiveProjection(60.0f, 16.0f/9.0f, 0.1f, 1000.0f);
170 cameraEntity->setPosition(QVector3D(-0, 0, -1.0f));
171 cameraEntity->setViewCenter(QVector3D(0, 0, 0));
172 cameraEntity->setUpVector(QVector3D(0, 1, 0));
173 m_pAspectInput->setCamera(cameraEntity);
176 Qt3D::QFrameGraph *frameGraph =
new Qt3D::QFrameGraph();
177 Qt3D::QForwardRenderer *forwardRenderer =
new Qt3D::QForwardRenderer();
178 forwardRenderer->setClearColor(QColor::fromRgbF(1.0, 1.0, 1.0, 1.0));
179 forwardRenderer->setCamera(cameraEntity);
180 frameGraph->setActiveFrameGraph(forwardRenderer);
183 m_pRootEntity->addComponent(frameGraph);
186 m_Engine.setRootEntity(m_pRootEntity);
192 void BrainView::createCoordSystem(QEntity *rootEntity)
195 Qt3D::QCylinderMesh *XAxis =
new Qt3D::QCylinderMesh();
196 XAxis->setRadius(0.1f);
198 XAxis->setRings(100);
199 XAxis->setSlices(20);
201 m_XAxisEntity = QSharedPointer<Qt3D::QEntity>(
new Qt3D::QEntity(rootEntity));
202 m_XAxisEntity->addComponent(XAxis);
204 QPhongMaterial *phongMaterialX =
new QPhongMaterial();
205 phongMaterialX->setDiffuse(QColor(255, 0, 0));
206 phongMaterialX->setAmbient(Qt::gray);
207 phongMaterialX->setSpecular(Qt::white);
208 phongMaterialX->setShininess(50.0f);
209 m_XAxisEntity->addComponent(phongMaterialX);
212 Qt3D::QCylinderMesh *YAxis =
new Qt3D::QCylinderMesh();
213 YAxis->setRadius(0.1f);
215 YAxis->setRings(100);
216 YAxis->setSlices(20);
218 Qt3D::QRotateTransform *rotationY =
new Qt3D::QRotateTransform();
219 Qt3D::QTransform *transformY =
new Qt3D::QTransform();
221 rotationY->setAngleDeg(90.0f);
222 rotationY->setAxis(QVector3D(1, 0, 0));
223 transformY->addTransform(rotationY);
225 m_YAxisEntity = QSharedPointer<Qt3D::QEntity>(
new Qt3D::QEntity(rootEntity));
226 m_YAxisEntity->addComponent(YAxis);
227 m_YAxisEntity->addComponent(transformY);
229 QPhongMaterial *phongMaterialY =
new QPhongMaterial();
230 phongMaterialY->setDiffuse(QColor(0, 0, 255));
231 phongMaterialY->setAmbient(Qt::gray);
232 phongMaterialY->setSpecular(Qt::white);
233 phongMaterialY->setShininess(50.0f);
234 m_YAxisEntity->addComponent(phongMaterialY);
237 Qt3D::QCylinderMesh *ZAxis =
new Qt3D::QCylinderMesh();
238 ZAxis->setRadius(0.1f);
240 ZAxis->setRings(100);
241 ZAxis->setSlices(20);
243 Qt3D::QRotateTransform *rotationZ =
new Qt3D::QRotateTransform();
244 Qt3D::QTransform *transformZ =
new Qt3D::QTransform();
246 rotationZ->setAngleDeg(90.0f);
247 rotationZ->setAxis(QVector3D(0, 0, 1));
248 transformZ->addTransform(rotationZ);
250 m_ZAxisEntity = QSharedPointer<Qt3D::QEntity>(
new Qt3D::QEntity(rootEntity));
251 m_ZAxisEntity->addComponent(ZAxis);
252 m_ZAxisEntity->addComponent(transformZ);
254 QPhongMaterial *phongMaterialZ =
new QPhongMaterial();
255 phongMaterialZ->setDiffuse(QColor(0, 255, 0));
256 phongMaterialZ->setAmbient(Qt::gray);
257 phongMaterialZ->setSpecular(Qt::white);
258 phongMaterialZ->setShininess(50.0f);
259 m_ZAxisEntity->addComponent(phongMaterialZ);
264 std::cout<<
"mouse click"<<std::endl;
265 if(e->buttons() & Qt::RightButton)
267 std::cout<<
"mouse click"<<std::endl;
Table model which prepares source estimate information.
void mousePressEvent(QMouseEvent *e)
void addSourceEstimate(MNESourceEstimate &p_sourceEstimate)
void init(const QString &p_sFile, const QString &subject_id, qint32 hemi, const QString &surf, const QString &atlas, const QString &subjects_dir)
Holds the data of one hemisphere in form of a mesh.