2#ifndef model_SurfaceMeshActor_H_
3#define model_SurfaceMeshActor_H_
9#include <QDoubleSpinBox>
11#include <vtkSmartPointer.h>
12#include <vtkPolyData.h>
13#include <vtkPolyDataMapper.h>
14#include <vtkPolyDataNormals.h>
15#include <vtkCleanPolyData.h>
17#include <vtkClipPolyData.h>
20#include <vtkRenderer.h>
21#include <vtkGenericOpenGLRenderWindow.h>
29 vtkGenericOpenGLRenderWindow *
const renderWindow;
30 vtkRenderer *
const renderer;
34 std::vector<Eigen::Vector3d> displacement;
35 bool frameAvailable =
false;
37 bool validDisplacement =
false;
38 bool clippingEnabled =
false;
39 Eigen::Vector3d appliedClipCenter = Eigen::Vector3d::Zero();
40 Eigen::Vector3d appliedClipNormal = Eigen::Vector3d::UnitX();
41 double clipTravel = 0.0;
43 std::map<size_t, QCheckBox *> externalFaceChecks;
44 std::map<size_t, QCheckBox *> internalFaceChecks;
45 std::set<size_t> selectedFaceIDs()
const;
47 void applyDisplacement();
49 void updateLighting();
51 void reportError(
const std::exception &error);
70 const vtkSmartPointer<vtkClipPolyData>
clipper;
72 const vtkSmartPointer<vtkPolyDataNormals>
normals;
73 const vtkSmartPointer<vtkPolyDataMapper>
mapper;
74 const vtkSmartPointer<vtkActor>
actor;
const vtkSmartPointer< vtkLight > reliefLight
const vtkSmartPointer< vtkPolyDataMapper > mapper
std::vector< QCheckBox * > microstructuresCheck
QLineEdit *const clipNormalEdit
QSlider *const clipPositionSlider
void updateConfiguration()
~SurfaceMeshActor() override
SurfaceMeshActor(vtkGenericOpenGLRenderWindow *window, vtkRenderer *renderer, const DefectiveCrystal< 3 > &crystal)
const vtkSmartPointer< vtkPolyData > polyData
QGroupBox *const externalFaces
QCheckBox *const clipSurface
const vtkSmartPointer< vtkPlane > clipPlane
const vtkSmartPointer< vtkPolyDataNormals > normals
QGroupBox *const internalFaces
QLineEdit *const clipCenterEdit
QCheckBox *const showEdges
const vtkSmartPointer< vtkCleanPolyData > shadingMesh
QCheckBox *const showSurface
QLabel *const clipOffsetLabel
QLineEdit *const meshSizeEdit
const vtkSmartPointer< vtkActor > actor
const vtkSmartPointer< vtkClipPolyData > clipper
QDoubleSpinBox *const amplification