VTK  9.3.20240328
vtkQuadricLODActor.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
60 #ifndef vtkQuadricLODActor_h
61 #define vtkQuadricLODActor_h
62 
63 #include "vtkActor.h"
64 #include "vtkRenderingLODModule.h" // For export macro
65 
66 VTK_ABI_NAMESPACE_BEGIN
68 class vtkPolyDataMapper;
69 class vtkCamera;
70 class vtkPolyData;
71 
72 class VTKRENDERINGLOD_EXPORT vtkQuadricLODActor : public vtkActor
73 {
74 public:
79 
81 
84  vtkTypeMacro(vtkQuadricLODActor, vtkActor);
85  void PrintSelf(ostream& os, vtkIndent indent) override;
87 
89 
94  vtkSetMacro(DeferLODConstruction, vtkTypeBool);
95  vtkGetMacro(DeferLODConstruction, vtkTypeBool);
96  vtkBooleanMacro(DeferLODConstruction, vtkTypeBool);
98 
100 
107  vtkSetMacro(Static, vtkTypeBool);
108  vtkGetMacro(Static, vtkTypeBool);
109  vtkBooleanMacro(Static, vtkTypeBool);
111 
113  {
114  UNKNOWN = 0,
121  XYZVOLUME
122  };
123 
125 
138  vtkSetClampMacro(DataConfiguration, int, UNKNOWN, XYZVOLUME);
139  vtkGetMacro(DataConfiguration, int);
140  void SetDataConfigurationToUnknown() { this->SetDataConfiguration(UNKNOWN); }
141  void SetDataConfigurationToXLine() { this->SetDataConfiguration(XLINE); }
142  void SetDataConfigurationToYLine() { this->SetDataConfiguration(YLINE); }
143  void SetDataConfigurationToZLine() { this->SetDataConfiguration(ZLINE); }
144  void SetDataConfigurationToXYPlane() { this->SetDataConfiguration(XYPLANE); }
145  void SetDataConfigurationToYZPlane() { this->SetDataConfiguration(YZPLANE); }
146  void SetDataConfigurationToXZPlane() { this->SetDataConfiguration(XZPLANE); }
147  void SetDataConfigurationToXYZVolume() { this->SetDataConfiguration(XYZVOLUME); }
149 
151 
158  vtkSetClampMacro(CollapseDimensionRatio, double, 0.0, 1.0);
159  vtkGetMacro(CollapseDimensionRatio, double);
161 
163 
169  vtkGetObjectMacro(LODFilter, vtkQuadricClustering);
171 
173  {
174  FOLLOWER = 0,
175  ACTOR
176  };
177 
179 
183  vtkSetClampMacro(PropType, int, FOLLOWER, ACTOR);
184  vtkGetMacro(PropType, int);
185  void SetPropTypeToFollower() { this->SetPropType(FOLLOWER); }
186  void SetPropTypeToActor() { this->SetPropType(ACTOR); }
188 
190 
195  vtkGetObjectMacro(Camera, vtkCamera);
197 
203  void Render(vtkRenderer*, vtkMapper*) override;
204 
211 
215  void ShallowCopy(vtkProp* prop) override;
216 
217 protected:
220 
221  // Renders the LOD
224 
225  // Keep track of the requested interactive frame rate
227 
228  // Support various strategies
230 
231  // Specify whether the mapper's should be set in to Static mode.
233 
234  // The dimension of the data
237 
238  // Control whether this is a follower or regular actor
239  int PropType;
241 
242  // Specify to defer construction of the LOD.
244 
245  // Keep track of building
247 
248 private:
249  vtkQuadricLODActor(const vtkQuadricLODActor&) = delete;
250  void operator=(const vtkQuadricLODActor&) = delete;
251 };
252 
253 VTK_ABI_NAMESPACE_END
254 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:150
a virtual camera for 3D rendering
Definition: vtkCamera.h:150
a simple class to control print indentation
Definition: vtkIndent.h:108
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:136
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:180
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:65
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:171
record modification and/or execution time
Definition: vtkTimeStamp.h:44
window superclass for vtkRenderWindow
Definition: vtkWindow.h:47
int vtkTypeBool
Definition: vtkABI.h:64