Skip to content

Commit f6a9746

Browse files
author
Charles PIGNEROL
committed
Version 5.8.0. Class vtkViewCubeActor. This class allows you to orient a 3D view by clicking on its 26 faces. With each click, the camera is positioned so that it is normal to the clicked face.
1 parent f44467d commit f6a9746

File tree

5 files changed

+797
-1
lines changed

5 files changed

+797
-1
lines changed
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
/** @file vtkViewCubeActor.h
2+
* @author C. PIGNEROL, CEA/DAM/DSSI
3+
* @date 04/03/2025
4+
*/
5+
6+
#ifndef VTK_VIEWCUBE_ACTOR_H
7+
#define VTK_VIEWCUBE_ACTOR_H
8+
9+
#include <vtkPropAssembly.h>
10+
#include <vtkActor.h>
11+
#include <vtkPolyData.h>
12+
#include <vtkPolyDataMapper.h>
13+
#include <vtkCellPicker.h>
14+
#include <vtkTransform.h>
15+
#include <vtkRenderer.h>
16+
#include <vtkVectorText.h>
17+
#include <vtkSmartPointer.h>
18+
19+
//
20+
// REM : source d'inspiration possible : classe vtkOrientationMarkerWidget couplée à vtkAnnotatedCubeActor
21+
//
22+
23+
/**
24+
* Classe d'acteur représentant un "ViewCube", objet interactif de repositionnement de la vue en cliquant sur ses faces.
25+
* La vue graphique est repositionnée perpendiculairement à la face sur laquelle on clique.
26+
* Ce viewcube est composé de faces intermédiaires aux 6 faces d'un cube (=> 26 faces)
27+
* @class vtkViewCubeActor
28+
* @brief Classe d'acteur représentant un trièdre.
29+
*/
30+
31+
class vtkViewCubeActor : public vtkPropAssembly
32+
{
33+
public:
34+
35+
vtkTypeMacro(vtkViewCubeActor,vtkPropAssembly);
36+
37+
38+
/** Méthode de classe permettant de créer une instance de la classe vtkViewCubeActor (style VTK).
39+
* @return un pointeur sur une instance de la classe VTK
40+
*/
41+
static vtkViewCubeActor* New ( );
42+
43+
/**
44+
* Associe l'instance à un renderer avec la priorité transmise en argument.
45+
*/
46+
virtual void SetRenderers (vtkRenderer* renderer, vtkRenderer* drivenRenderer);
47+
virtual vtkRenderer* GetRenderer ( )
48+
{ return Renderer; }
49+
50+
/**
51+
* @return Une éventuelle matrice de transformation utilisateur.
52+
*/
53+
virtual vtkTransform* GetTransform ( );
54+
55+
/**
56+
* @param Une éventuelle matrice de transformation utilisateur.
57+
*/
58+
virtual void SetTransform (vtkTransform* transform);
59+
60+
/**
61+
* @param Les libellés pour chacune des faces.
62+
*/
63+
virtual void SetFacesLabels (const char* front, const char* back, const char* left, const char* right, const char* top, const char* bottom);
64+
65+
/**
66+
* Affiche ou non les libellés des faces.
67+
* @see LabelOff
68+
* @see LabelOn
69+
*/
70+
virtual void SetLabel (bool on);
71+
72+
/**
73+
* Affiche les libellés dans le plan de la vue.
74+
* @see Label2DOff
75+
* @see SetLabel2D
76+
*/
77+
virtual void LabelOn ( );
78+
virtual void LabelOff ( );
79+
80+
/**
81+
* Modifie l'opacité des faces conformément à la valeur transmise en argument.
82+
*/
83+
virtual void SetFacesOpacity (double opacity);
84+
85+
/**
86+
* Regarde si une face du cube est pointée aux coordonnées transmises et, le cas échéant, adapte la vue perpendiculairement à cette face.
87+
*/
88+
virtual void PickCallback (int x, int y);
89+
90+
91+
protected:
92+
93+
/** @brief Constructeur d'une instance de la classe vtkViewCubeActor.
94+
*/
95+
vtkViewCubeActor ( );
96+
97+
/** @brief Destructeur d'une instance de la classe vtkViewCubeActor. RAS.
98+
*/
99+
virtual ~vtkViewCubeActor ( );
100+
101+
102+
private :
103+
104+
/**
105+
* Constructeur de copie et opérateur = : interdits.
106+
*/
107+
vtkViewCubeActor (const vtkViewCubeActor&);
108+
vtkViewCubeActor& operator = (const vtkViewCubeActor&);
109+
110+
vtkRenderer *Renderer, *DrivenRenderer;
111+
112+
/** Le "cube". */
113+
vtkSmartPointer<vtkPolyData> CubePolyData;
114+
vtkSmartPointer<vtkActor> CubeActor;
115+
vtkSmartPointer<vtkPolyDataMapper> CubePolyDataMapper;
116+
117+
/** Le picking sur les faces du ViewCube. */
118+
vtkSmartPointer<vtkCellPicker> CellPicker;
119+
120+
/** Les labels. */
121+
vtkSmartPointer<vtkVectorText> XPlusVectorText, XMinusVectorText, YPlusVectorText, YMinusVectorText, ZPlusVectorText, ZMinusVectorText;
122+
vtkSmartPointer<vtkActor> XPlusActor, XMinusActor, YPlusActor, YMinusActor, ZPlusActor, ZMinusActor;
123+
124+
/** L'éventuelle transformation utilisateur. */
125+
vtkTransform *Transform;
126+
}; // class vtkViewCubeActor
127+
128+
129+
#endif // VTK_VIEWCUBE_ACTOR_H
130+

0 commit comments

Comments
 (0)