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 =========================================================================*/
69 #ifndef vtkQuadricLODActor_h
70 #define vtkQuadricLODActor_h
71 
72 #include "vtkActor.h"
73 #include "vtkRenderingLODModule.h" // For export macro
74 
76 class vtkPolyDataMapper;
77 class vtkCamera;
78 class vtkPolyData;
79 
80 class VTKRENDERINGLOD_EXPORT vtkQuadricLODActor : public vtkActor
81 {
82 public:
87 
89 
92  vtkTypeMacro(vtkQuadricLODActor, vtkActor);
93  void PrintSelf(ostream& os, vtkIndent indent) override;
95 
97 
102  vtkSetMacro(DeferLODConstruction, vtkTypeBool);
103  vtkGetMacro(DeferLODConstruction, vtkTypeBool);
104  vtkBooleanMacro(DeferLODConstruction, vtkTypeBool);
106 
108 
115  vtkSetMacro(Static, vtkTypeBool);
116  vtkGetMacro(Static, vtkTypeBool);
117  vtkBooleanMacro(Static, vtkTypeBool);
119 
121  {
122  UNKNOWN = 0,
129  XYZVOLUME
130  };
131 
133 
146  vtkSetClampMacro(DataConfiguration, int, UNKNOWN, XYZVOLUME);
147  vtkGetMacro(DataConfiguration, int);
148  void SetDataConfigurationToUnknown() { this->SetDataConfiguration(UNKNOWN); }
149  void SetDataConfigurationToXLine() { this->SetDataConfiguration(XLINE); }
150  void SetDataConfigurationToYLine() { this->SetDataConfiguration(YLINE); }
151  void SetDataConfigurationToZLine() { this->SetDataConfiguration(ZLINE); }
152  void SetDataConfigurationToXYPlane() { this->SetDataConfiguration(XYPLANE); }
153  void SetDataConfigurationToYZPlane() { this->SetDataConfiguration(YZPLANE); }
154  void SetDataConfigurationToXZPlane() { this->SetDataConfiguration(XZPLANE); }
155  void SetDataConfigurationToXYZVolume() { this->SetDataConfiguration(XYZVOLUME); }
157 
159 
166  vtkSetClampMacro(CollapseDimensionRatio, double, 0.0, 1.0);
167  vtkGetMacro(CollapseDimensionRatio, double);
169 
171 
177  vtkGetObjectMacro(LODFilter, vtkQuadricClustering);
179 
181  {
182  FOLLOWER = 0,
183  ACTOR
184  };
185 
187 
191  vtkSetClampMacro(PropType, int, FOLLOWER, ACTOR);
192  vtkGetMacro(PropType, int);
193  void SetPropTypeToFollower() { this->SetPropType(FOLLOWER); }
194  void SetPropTypeToActor() { this->SetPropType(ACTOR); }
196 
198 
203  vtkGetObjectMacro(Camera, vtkCamera);
205 
211  void Render(vtkRenderer*, vtkMapper*) override;
212 
219 
223  void ShallowCopy(vtkProp* prop) override;
224 
225 protected:
228 
229  // Renders the LOD
232 
233  // Keep track of the requested interactive frame rate
235 
236  // Support various strategies
238 
239  // Specify whether the mapper's should be set in to Static mode.
241 
242  // The dimension of the data
245 
246  // Control whether this is a follower or regular actor
247  int PropType;
249 
250  // Specify to defer construction of the LOD.
252 
253  // Keep track of building
255 
256 private:
257  vtkQuadricLODActor(const vtkQuadricLODActor&) = delete;
258  void operator=(const vtkQuadricLODActor&) = delete;
259 };
260 
261 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:155
a virtual camera for 3D rendering
Definition: vtkCamera.h:155
a simple class to control print indentation
Definition: vtkIndent.h:113
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:171
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:195
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:67
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:173
record modification and/or execution time
Definition: vtkTimeStamp.h:52
window superclass for vtkRenderWindow
Definition: vtkWindow.h:36
int vtkTypeBool
Definition: vtkABI.h:69