VTK  9.1.0
vtkQuadricLODActor.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkQuadricLODActor.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
50 #ifndef vtkQuadricLODActor_h
51 #define vtkQuadricLODActor_h
52 
53 #include "vtkActor.h"
54 #include "vtkRenderingLODModule.h" // For export macro
55 
57 class vtkPolyDataMapper;
58 class vtkCamera;
59 class vtkPolyData;
60 
61 class VTKRENDERINGLOD_EXPORT vtkQuadricLODActor : public vtkActor
62 {
63 public:
68 
70 
73  vtkTypeMacro(vtkQuadricLODActor, vtkActor);
74  void PrintSelf(ostream& os, vtkIndent indent) override;
76 
78 
83  vtkSetMacro(DeferLODConstruction, vtkTypeBool);
84  vtkGetMacro(DeferLODConstruction, vtkTypeBool);
85  vtkBooleanMacro(DeferLODConstruction, vtkTypeBool);
87 
89 
96  vtkSetMacro(Static, vtkTypeBool);
97  vtkGetMacro(Static, vtkTypeBool);
98  vtkBooleanMacro(Static, vtkTypeBool);
100 
102  {
103  UNKNOWN = 0,
110  XYZVOLUME
111  };
112 
114 
127  vtkSetClampMacro(DataConfiguration, int, UNKNOWN, XYZVOLUME);
128  vtkGetMacro(DataConfiguration, int);
129  void SetDataConfigurationToUnknown() { this->SetDataConfiguration(UNKNOWN); }
130  void SetDataConfigurationToXLine() { this->SetDataConfiguration(XLINE); }
131  void SetDataConfigurationToYLine() { this->SetDataConfiguration(YLINE); }
132  void SetDataConfigurationToZLine() { this->SetDataConfiguration(ZLINE); }
133  void SetDataConfigurationToXYPlane() { this->SetDataConfiguration(XYPLANE); }
134  void SetDataConfigurationToYZPlane() { this->SetDataConfiguration(YZPLANE); }
135  void SetDataConfigurationToXZPlane() { this->SetDataConfiguration(XZPLANE); }
136  void SetDataConfigurationToXYZVolume() { this->SetDataConfiguration(XYZVOLUME); }
138 
140 
147  vtkSetClampMacro(CollapseDimensionRatio, double, 0.0, 1.0);
148  vtkGetMacro(CollapseDimensionRatio, double);
150 
152 
158  vtkGetObjectMacro(LODFilter, vtkQuadricClustering);
160 
162  {
163  FOLLOWER = 0,
164  ACTOR
165  };
166 
168 
172  vtkSetClampMacro(PropType, int, FOLLOWER, ACTOR);
173  vtkGetMacro(PropType, int);
174  void SetPropTypeToFollower() { this->SetPropType(FOLLOWER); }
175  void SetPropTypeToActor() { this->SetPropType(ACTOR); }
177 
179 
184  vtkGetObjectMacro(Camera, vtkCamera);
186 
192  void Render(vtkRenderer*, vtkMapper*) override;
193 
200 
204  void ShallowCopy(vtkProp* prop) override;
205 
206 protected:
209 
210  // Renders the LOD
213 
214  // Keep track of the requested interactive frame rate
216 
217  // Support various strategies
219 
220  // Specify whether the mapper's should be set in to Static mode.
222 
223  // The dimension of the data
226 
227  // Control whether this is a follower or regular actor
228  int PropType;
230 
231  // Specify to defer construction of the LOD.
233 
234  // Keep track of building
236 
237 private:
238  vtkQuadricLODActor(const vtkQuadricLODActor&) = delete;
239  void operator=(const vtkQuadricLODActor&) = delete;
240 };
241 
242 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:46
a virtual camera for 3D rendering
Definition: vtkCamera.h:46
a simple class to control print indentation
Definition: vtkIndent.h:34
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:82
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:57
reduce the number of triangles in a mesh
a specific level-of-detail strategy using the quadric clustering decimation algorithm
void ShallowCopy(vtkProp *prop) override
Shallow copy of an LOD actor.
void SetDataConfigurationToXLine()
Force the binning of the quadric clustering according to application knowledge relative to the dimens...
void SetLODFilter(vtkQuadricClustering *lodFilter)
This class will create a vtkQuadricClustering algorithm automatically.
void SetCamera(vtkCamera *)
Set/Get the camera to follow.
void SetDataConfigurationToXYZVolume()
Force the binning of the quadric clustering according to application knowledge relative to the dimens...
void SetDataConfigurationToYLine()
Force the binning of the quadric clustering according to application knowledge relative to the dimens...
void PrintSelf(ostream &os, vtkIndent indent) override
Standard class methods.
void SetDataConfigurationToXZPlane()
Force the binning of the quadric clustering according to application knowledge relative to the dimens...
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
static vtkQuadricLODActor * New()
Creates a vtkQuadricLODActor.
vtkTypeBool DeferLODConstruction
void SetPropTypeToActor()
Indicate that this actor is actually a follower.
void SetDataConfigurationToZLine()
Force the binning of the quadric clustering according to application knowledge relative to the dimens...
~vtkQuadricLODActor() override
void SetPropTypeToFollower()
Indicate that this actor is actually a follower.
void SetDataConfigurationToUnknown()
Force the binning of the quadric clustering according to application knowledge relative to the dimens...
vtkQuadricClustering * LODFilter
vtkPolyDataMapper * LODMapper
void SetDataConfigurationToYZPlane()
Force the binning of the quadric clustering according to application knowledge relative to the dimens...
void Render(vtkRenderer *, vtkMapper *) override
This causes the actor to be rendered.
void SetDataConfigurationToXYPlane()
Force the binning of the quadric clustering according to application knowledge relative to the dimens...
abstract specification for renderers
Definition: vtkRenderer.h:73
record modification and/or execution time
Definition: vtkTimeStamp.h:33
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
int vtkTypeBool
Definition: vtkABI.h:69