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
45namespace DISP3DLIB
46{
47
48class BrainSurface;
49class DipoleObject;
50
51//=============================================================================================================
58{
59 bool hit = false;
60 float distance = 0.0f;
61 QVector3D hitPoint;
62
63 QStandardItem* item = nullptr;
64 QString surfaceKey;
65 int vertexIndex = -1;
66
67 bool isDipole = false;
68 int dipoleIndex = -1;
69
70 // FsAnnotation info (brain surfaces only)
71 QString regionName;
72 int regionId = -1;
73
74 //=========================================================================================================
81 QString displayLabel() const;
82};
83
84//=============================================================================================================
96{
97public:
98 //=========================================================================================================
109 static bool unproject(const QPoint& screenPos,
110 const QRect& paneRect,
111 const QMatrix4x4& pvm,
112 QVector3D& rayOrigin,
113 QVector3D& rayDir);
114
115 //=========================================================================================================
127 static RayHit pick(const QVector3D& rayOrigin,
128 const QVector3D& rayDir,
129 const SubView& subView,
130 const QMap<QString, std::shared_ptr<BrainSurface>>& surfaces,
131 const QMap<const QStandardItem*, std::shared_ptr<BrainSurface>>& itemSurfaceMap,
132 const QMap<const QStandardItem*, std::shared_ptr<DipoleObject>>& itemDipoleMap);
133
134 //=========================================================================================================
146 static QString buildLabel(const RayHit& result,
147 const QMap<const QStandardItem*, std::shared_ptr<BrainSurface>>& itemSurfaceMap,
148 const QMap<QString, std::shared_ptr<BrainSurface>>& surfaces);
149};
150
151} // namespace DISP3DLIB
152
153#endif // RAYPICKER_H
Library export/import macros and namespace marker for the disp3D library.
#define DISP3DSHARED_EXPORT
Per-viewport state (camera preset, zoom, pan, visibility filter) and serialisation helpers.
3-D brain visualisation using the Qt RHI rendering backend.
Viewport subdivision holding its own camera, projection, and scissor rectangle.
Definition viewstate.h:143
Result of a ray–mesh intersection test containing the hit point, triangle index, and distance.
Definition raypicker.h:58
QString surfaceKey
FsSurface map key of the hit surface.
Definition raypicker.h:64
float distance
Distance along ray to hit point.
Definition raypicker.h:60
QString displayLabel() const
int regionId
FsAnnotation label ID.
Definition raypicker.h:72
bool isDipole
True if a dipole was hit.
Definition raypicker.h:67
QStandardItem * item
Tree item that was hit (nullable).
Definition raypicker.h:63
int dipoleIndex
Index within the dipole set.
Definition raypicker.h:68
bool hit
True if something was hit.
Definition raypicker.h:59
QVector3D hitPoint
World-space intersection point.
Definition raypicker.h:61
int vertexIndex
Vertex or element index at hit.
Definition raypicker.h:65
QString regionName
FsAnnotation region label (if available).
Definition raypicker.h:71
Ray casting and intersection testing.
Definition raypicker.h:96
static bool unproject(const QPoint &screenPos, const QRect &paneRect, const QMatrix4x4 &pvm, QVector3D &rayOrigin, QVector3D &rayDir)
Definition raypicker.cpp:33
static RayHit 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:67
static QString buildLabel(const RayHit &result, const QMap< const QStandardItem *, std::shared_ptr< BrainSurface > > &itemSurfaceMap, const QMap< QString, std::shared_ptr< BrainSurface > > &surfaces)
Renderable cortical surface mesh with per-vertex color, curvature data, and GPU buffer management.
Renderable dipole arrow set with instanced GPU rendering for QRhi.