VTK  9.2.6
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 =========================================================================*/
72 #ifndef vtkQuadricLODActor_h
73 #define vtkQuadricLODActor_h
74 
75 #include "vtkActor.h"
76 #include "vtkRenderingLODModule.h" // For export macro
77 
79 class vtkPolyDataMapper;
80 class vtkCamera;
81 class vtkPolyData;
82 
83 class VTKRENDERINGLOD_EXPORT vtkQuadricLODActor : public vtkActor
84 {
85 public:
90 
92 
95  vtkTypeMacro(vtkQuadricLODActor, vtkActor);
96  void PrintSelf(ostream& os, vtkIndent indent) override;
98 
100 
105  vtkSetMacro(DeferLODConstruction, vtkTypeBool);
106  vtkGetMacro(DeferLODConstruction, vtkTypeBool);
107  vtkBooleanMacro(DeferLODConstruction, vtkTypeBool);
109 
111 
118  vtkSetMacro(Static, vtkTypeBool);
119  vtkGetMacro(Static, vtkTypeBool);
120  vtkBooleanMacro(Static, vtkTypeBool);
122 
124  {
125  UNKNOWN = 0,
132  XYZVOLUME
133  };
134 
136 
149  vtkSetClampMacro(DataConfiguration, int, UNKNOWN, XYZVOLUME);
150  vtkGetMacro(DataConfiguration, int);
151  void SetDataConfigurationToUnknown() { this->SetDataConfiguration(UNKNOWN); }
152  void SetDataConfigurationToXLine() { this->SetDataConfiguration(XLINE); }
153  void SetDataConfigurationToYLine() { this->SetDataConfiguration(YLINE); }
154  void SetDataConfigurationToZLine() { this->SetDataConfiguration(ZLINE); }
155  void SetDataConfigurationToXYPlane() { this->SetDataConfiguration(XYPLANE); }
156  void SetDataConfigurationToYZPlane() { this->SetDataConfiguration(YZPLANE); }
157  void SetDataConfigurationToXZPlane() { this->SetDataConfiguration(XZPLANE); }
158  void SetDataConfigurationToXYZVolume() { this->SetDataConfiguration(XYZVOLUME); }
160 
162 
169  vtkSetClampMacro(CollapseDimensionRatio, double, 0.0, 1.0);
170  vtkGetMacro(CollapseDimensionRatio, double);
172 
174 
180  vtkGetObjectMacro(LODFilter, vtkQuadricClustering);
182 
184  {
185  FOLLOWER = 0,
186  ACTOR
187  };
188 
190 
194  vtkSetClampMacro(PropType, int, FOLLOWER, ACTOR);
195  vtkGetMacro(PropType, int);
196  void SetPropTypeToFollower() { this->SetPropType(FOLLOWER); }
197  void SetPropTypeToActor() { this->SetPropType(ACTOR); }
199 
201 
206  vtkGetObjectMacro(Camera, vtkCamera);
208 
214  void Render(vtkRenderer*, vtkMapper*) override;
215 
222 
226  void ShallowCopy(vtkProp* prop) override;
227 
228 protected:
231 
232  // Renders the LOD
235 
236  // Keep track of the requested interactive frame rate
238 
239  // Support various strategies
241 
242  // Specify whether the mapper's should be set in to Static mode.
244 
245  // The dimension of the data
248 
249  // Control whether this is a follower or regular actor
250  int PropType;
252 
253  // Specify to defer construction of the LOD.
255 
256  // Keep track of building
258 
259 private:
260  vtkQuadricLODActor(const vtkQuadricLODActor&) = delete;
261  void operator=(const vtkQuadricLODActor&) = delete;
262 };
263 
264 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:161
a virtual camera for 3D rendering
Definition: vtkCamera.h:161
a simple class to control print indentation
Definition: vtkIndent.h:119
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:177
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:200
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:76
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:182
record modification and/or execution time
Definition: vtkTimeStamp.h:55
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
int vtkTypeBool
Definition: vtkABI.h:69