53 #include "qglbuilder.h"
55 #include <QMouseEvent>
72 ClustStcView::ClustStcView(
bool showRegions,
bool isStereo, QGLView::StereoType stereoType, QWindow *parent)
75 , m_bIsInitialized(false)
76 , m_bShowRegions(showRegions)
78 , m_stereoType(stereoType)
79 , m_pSceneNodeBrain(Q_NULLPTR)
80 , m_pSceneNode(Q_NULLPTR)
81 , m_pLightModel(Q_NULLPTR)
82 , m_pLightParametersScene(Q_NULLPTR)
85 m_fOffsetZEye = 60.0f;
91 ClustStcView::~ClustStcView()
99 void ClustStcView::dataChanged(
const QModelIndex &topLeft,
const QModelIndex &bottomRight,
const QVector<int> &roles)
101 if(!m_bIsInitialized)
105 if(topLeft.column() > 3 || bottomRight.column() < 3)
108 for(qint32 i = 0; i < m_pSceneNode->palette()->size(); ++i)
113 qint32 iVal = m_pModel->
data(i,3).value<VectorXd>().maxCoeff() * 255;
115 iVal = iVal > 255 ? 255 : iVal < 0 ? 0 : iVal;
118 qRgb = ColorMap::valueToHotNegative1((
double)iVal/255.0);
122 m_pSceneNode->palette()->material(i)->setSpecularColor(QColor(qRgb));
137 connect(m_pModel, &ClustStcModel::dataChanged,
this, &ClustStcView::dataChanged);
153 builder << QGL::Faceted;
154 if(m_pSceneNodeBrain)
155 delete m_pSceneNodeBrain;
156 m_pSceneNodeBrain = builder.currentNode();
162 QSharedPointer<QGLMaterialCollection> palette = builder.sceneNode()->palette();
164 m_qMapLabelIdIndex.clear();
176 for(qint32 k = 0; k < m_pModel->rowCount(); ++k)
179 if(builder.currentNode()->count() > 0)
182 QGeometryData t_GeometryDataTri;
184 Matrix3Xf t_TriCoords = m_pModel->
data(k,6,Qt::DisplayRole).value<Matrix3Xf>();
187 t_GeometryDataTri.appendVertexArray(QArray<QVector3D>::fromRawData( reinterpret_cast<const QVector3D*>(t_TriCoords.data()), t_TriCoords.cols() ));
192 if (t_GeometryDataTri.count() > 0)
198 builder.addTriangles(t_GeometryDataTri);
203 QGLMaterial *t_pMaterialROI =
new QGLMaterial();
206 t_pMaterialROI->setColor(m_pModel->
data(k,5,Qt::DisplayRole).value<QColor>());
208 t_pMaterialROI->setColor(QColor(100,100,100,230));
210 index = palette->addMaterial(t_pMaterialROI);
211 builder.currentNode()->setMaterialIndex(index);
213 m_qMapLabelIdIndex.insert(m_pModel->
data(k,4,Qt::DisplayRole).value<
Label>().label_id, index);
226 m_pSceneNode = builder.finalizedSceneNode();
227 m_pSceneNode->setParent(
this);
233 delete m_pLightModel;
234 m_pLightModel =
new QGLLightModel(
this);
235 m_pLightModel->setAmbientSceneColor(Qt::white);
236 m_pLightModel->setViewerPosition(QGLLightModel::LocalViewer);
238 m_pLightModel =
new QGLLightModel(
this);
240 if(m_pLightParametersScene)
241 delete m_pLightParametersScene;
242 m_pLightParametersScene =
new QGLLightParameters(
this);
243 m_pLightParametersScene->setPosition(QVector3D(0.0f, 0.0f, 3.0f));
244 painter->setMainLight(m_pLightParametersScene);
250 this->setStereoType(m_stereoType);
255 camera()->setCenter(QVector3D(0,0,m_fOffsetZ));
256 camera()->setEyeSeparation(0.4f);
257 camera()->setFieldOfView(30);
258 camera()->setEye(QVector3D(0,0,m_fOffsetZEye));
263 camera()->setCenter(QVector3D(0,0,m_fOffsetZ));
264 camera()->setFieldOfView(30);
265 camera()->setEye(QVector3D(0,0,m_fOffsetZEye));
272 glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
274 m_bIsInitialized =
true;
287 painter->modelViewMatrix().push();
288 painter->projectionMatrix().push();
290 painter->setStandardEffect(QGL::LitMaterial);
292 painter->setLightModel(m_pLightModel);
297 m_pSceneNode->draw(painter);
300 painter->modelViewMatrix().pop();
301 painter->projectionMatrix().pop();
309 camera()->setCenter(QVector3D(0,0,0));
311 float normEyeOld = sqrt(pow(camera()->eye().x(),2) + pow(camera()->eye().y(),2) + pow(camera()->eye().z(),2));
313 QGLView::keyPressEvent(e);
315 float dx = (camera()->eye().x()*m_fOffsetZ)/m_fOffsetZEye;
316 float dy = (camera()->eye().y()*m_fOffsetZ)/m_fOffsetZEye;
317 float dz = (camera()->eye().z()*m_fOffsetZ)/m_fOffsetZEye;
319 float normEye = sqrt(pow(camera()->eye().x(),2) + pow(camera()->eye().y(),2) + pow(camera()->eye().z(),2));
320 float scaleEye = normEyeOld/normEye;
321 camera()->setEye(QVector3D(camera()->eye().x()*scaleEye,camera()->eye().y()*scaleEye,camera()->eye().z()*scaleEye));
323 camera()->setCenter(QVector3D(dx,dy,dz));
331 camera()->setCenter(QVector3D(0,0,0));
333 float normEyeOld = sqrt(pow(camera()->eye().x(),2) + pow(camera()->eye().y(),2) + pow(camera()->eye().z(),2));
335 QGLView::mouseMoveEvent(e);
337 float dx = (camera()->eye().x()*m_fOffsetZ)/m_fOffsetZEye;
338 float dy = (camera()->eye().y()*m_fOffsetZ)/m_fOffsetZEye;
339 float dz = (camera()->eye().z()*m_fOffsetZ)/m_fOffsetZEye;
341 float normEye = sqrt(pow(camera()->eye().x(),2) + pow(camera()->eye().y(),2) + pow(camera()->eye().z(),2));
342 float scaleEye = normEyeOld/normEye;
343 camera()->setEye(QVector3D(camera()->eye().x()*scaleEye,camera()->eye().y()*scaleEye,camera()->eye().z()*scaleEye));
345 camera()->setCenter(QVector3D(dx,dy,dz));
353 if(e->buttons() & Qt::RightButton)
355 float normEye = sqrt(pow(camera()->eye().x(),2) + pow(camera()->eye().y(),2) + pow(camera()->eye().z(),2));
356 camera()->setCenter(QVector3D(0,0,m_fOffsetZ));
357 camera()->setEye(QVector3D(0,0,normEye));
360 QGLView::mousePressEvent(e);
ColorMap class declaration.
void paintGL(QGLPainter *painter)
Table model which prepares source estimate information.
void keyPressEvent(QKeyEvent *e)
void initializeGL(QGLPainter *painter)
QVariant data(int row, int column, int role=Qt::DisplayRole) const
ClustStcModel class declaration.
ClustStcView class declaration.
void mousePressEvent(QMouseEvent *e)
void mouseMoveEvent(QMouseEvent *e)