v2.0.0
Loading...
Searching...
No Matches
raypicker.h
Go to the documentation of this file.
1//=============================================================================================================
24
25#ifndef RAYPICKER_H
26#define RAYPICKER_H
27
28//=============================================================================================================
29// INCLUDES
30//=============================================================================================================
31
32#include "../disp3D_global.h"
33
34#include "core/viewstate.h"
35
36#include <QPoint>
37#include <QRect>
38#include <QMatrix4x4>
39#include <QVector3D>
40#include <QMap>
41#include <QStandardItem>
42
43#include <memory>
44
45class BrainSurface;
46class DipoleObject;
47
48//=============================================================================================================
55{
56 bool hit = false;
57 float distance = 0.0f;
58 QVector3D hitPoint;
59
60 QStandardItem *item = nullptr;
61 QString surfaceKey;
62 int vertexIndex = -1;
63
64 bool isDipole = false;
65 int dipoleIndex = -1;
66
67 // FsAnnotation info (brain surfaces only)
68 QString regionName;
69 int regionId = -1;
70
71 //=========================================================================================================
78 QString displayLabel() const;
79};
80
81//=============================================================================================================
93{
94public:
95 //=========================================================================================================
106 static bool unproject(const QPoint &screenPos,
107 const QRect &paneRect,
108 const QMatrix4x4 &pvm,
109 QVector3D &rayOrigin,
110 QVector3D &rayDir);
111
112 //=========================================================================================================
124 static PickResult pick(const QVector3D &rayOrigin,
125 const QVector3D &rayDir,
126 const SubView &subView,
127 const QMap<QString, std::shared_ptr<BrainSurface>> &surfaces,
128 const QMap<const QStandardItem*, std::shared_ptr<BrainSurface>> &itemSurfaceMap,
129 const QMap<const QStandardItem*, std::shared_ptr<DipoleObject>> &itemDipoleMap);
130
131 //=========================================================================================================
143 static QString buildLabel(const PickResult &result,
144 const QMap<const QStandardItem*, std::shared_ptr<BrainSurface>> &itemSurfaceMap,
145 const QMap<QString, std::shared_ptr<BrainSurface>> &surfaces);
146};
147
148#endif // RAYPICKER_H
Per-viewport state (camera preset, zoom, pan, visibility filter) and serialisation helpers.
Library export/import macros and namespace marker for the disp3D library.
#define DISP3DSHARED_EXPORT
Viewport subdivision holding its own camera, projection, and scissor rectangle.
Definition viewstate.h:139
Result of a ray–mesh intersection test containing the hit point, triangle index, and distance.
Definition raypicker.h:55
int dipoleIndex
Index within the dipole set.
Definition raypicker.h:65
int vertexIndex
Vertex or element index at hit.
Definition raypicker.h:62
bool hit
True if something was hit.
Definition raypicker.h:56
QString surfaceKey
FsSurface map key of the hit surface.
Definition raypicker.h:61
QVector3D hitPoint
World-space intersection point.
Definition raypicker.h:58
QString displayLabel() const
QString regionName
FsAnnotation region label (if available).
Definition raypicker.h:68
QStandardItem * item
Tree item that was hit (nullable).
Definition raypicker.h:60
float distance
Distance along ray to hit point.
Definition raypicker.h:57
bool isDipole
True if a dipole was hit.
Definition raypicker.h:64
int regionId
FsAnnotation label ID.
Definition raypicker.h:69
Ray casting and intersection testing.
Definition raypicker.h:93
static bool unproject(const QPoint &screenPos, const QRect &paneRect, const QMatrix4x4 &pvm, QVector3D &rayOrigin, QVector3D &rayDir)
Definition raypicker.cpp:30
static QString buildLabel(const PickResult &result, const QMap< const QStandardItem *, std::shared_ptr< BrainSurface > > &itemSurfaceMap, const QMap< QString, std::shared_ptr< BrainSurface > > &surfaces)
static PickResult pick(const QVector3D &rayOrigin, const QVector3D &rayDir, const SubView &subView, const QMap< QString, std::shared_ptr< BrainSurface > > &surfaces, const QMap< const QStandardItem *, std::shared_ptr< BrainSurface > > &itemSurfaceMap, const QMap< const QStandardItem *, std::shared_ptr< DipoleObject > > &itemDipoleMap)
Definition raypicker.cpp:63
Renderable cortical surface mesh with per-vertex color, curvature data, and GPU buffer management.
Renderable dipole arrow set with instanced GPU rendering for QRhi.