VR CAD Viewer 1.0
Qt and VTK application for loading and visualising CAD models with VR support
Loading...
Searching...
No Matches
VRRenderThread.h
Go to the documentation of this file.
1
9#ifndef VRRENDERTHREAD_H
10#define VRRENDERTHREAD_H
11
12#include <QThread>
13#include <QList>
14
15#include <vtkSmartPointer.h>
16#include <vtkActor.h>
17
18#include <atomic>
19#include <vtkOpenVRRenderWindowInteractor.h>
20#include <vtkOpenVRRenderWindow.h>
21
22#include <array>
23
24#include <QMutex>
25
26#include <vtkEventData.h>
27
28#include "ModelPart.h"
29
34class VRRenderThread : public QThread
35{
36 Q_OBJECT
37
38public:
42 explicit VRRenderThread(QObject* parent = nullptr);
43
48 void addActorOffline(vtkSmartPointer<vtkActor> actor);
49
55
59 void stopVR();
60
63 void resetView();
64
68 void toggleExplode();
69
73 void setAnimationEnabled(bool enabled);
74
78 bool animationIsEnabled() const;
79
80protected:
83 void run() override;
84
85private:
86 QList<vtkSmartPointer<vtkActor>> actors;
87 QList<vtkSmartPointer<vtkActor>> pendingActors;
88 QMutex pendingActorsMutex;
90 QList<ModelPart*> pendingVRUpdates;
91 QMutex pendingVRUpdatesMutex;
93 std::atomic<bool> stopRequested{ false };
94 std::atomic<bool> resetRequested{ false };
95 std::atomic<bool> animationEnabled{ false };
96 std::atomic<bool> explodeToggleRequested{ false };
98 QList<std::array<double, 3>> originalPositions;
99 QList<std::array<double, 3>> originalScales;
100 QList<std::array<double, 3>> originalOrientations;
102 bool explodeActive = false;
103 double explodeProgress = 0.0;
104 QList<std::array<double, 3>> explodedPositions;
106 vtkSmartPointer<vtkOpenVRRenderWindowInteractor> vrInteractor;
107 vtkSmartPointer<vtkOpenVRRenderWindow> vrRenderWindow;
108};
109
110#endif
Defines the ModelPart class used to represent CAD model parts in the tree view and VTK renderer.
Represents one CAD model part in the application.
Definition ModelPart.h:30
Definition VRRenderThread.h:35
void setAnimationEnabled(bool enabled)
Definition VRRenderThread.cpp:92
void toggleExplode()
Definition VRRenderThread.cpp:76
void queueVRPipelineUpdate(ModelPart *part)
Definition VRRenderThread.cpp:81
void resetView()
Definition VRRenderThread.cpp:101
void stopVR()
Definition VRRenderThread.cpp:111
void addActorOffline(vtkSmartPointer< vtkActor > actor)
Definition VRRenderThread.cpp:56
void run() override
Definition VRRenderThread.cpp:122
bool animationIsEnabled() const
Definition VRRenderThread.cpp:96