VTK  9.0.3
vtkGlyph3DMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkGlyph3DMapper.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 =========================================================================*/
28 #ifndef vtkGlyph3DMapper_h
29 #define vtkGlyph3DMapper_h
30 
31 #include "vtkGlyph3D.h" // for the constants (VTK_SCALE_BY_SCALAR, ...).
32 #include "vtkMapper.h"
33 #include "vtkRenderingCoreModule.h" // For export macro
34 #include "vtkWeakPointer.h" // needed for vtkWeakPointer.
35 
37 class vtkDataObjectTree;
38 
39 class VTKRENDERINGCORE_EXPORT vtkGlyph3DMapper : public vtkMapper
40 {
41 public:
42  static vtkGlyph3DMapper* New();
43  vtkTypeMacro(vtkGlyph3DMapper, vtkMapper);
44  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
47  {
48  SCALE = 0,
49  SOURCE_INDEX = 1,
50  MASK = 2,
51  ORIENTATION = 3,
52  SELECTIONID = 4
53  };
54 
60  void SetSourceConnection(int idx, vtkAlgorithmOutput* algOutput);
62  {
63  this->SetSourceConnection(0, algOutput);
64  }
65 
72 
76  void SetSourceData(int idx, vtkPolyData* pd);
77 
87 
95 
99  vtkPolyData* GetSource(int idx = 0);
100 
105 
107 
112  vtkSetMacro(Scaling, bool);
113  vtkBooleanMacro(Scaling, bool);
114  vtkGetMacro(Scaling, bool);
116 
118 
124  vtkSetMacro(ScaleMode, int);
125  vtkGetMacro(ScaleMode, int);
127 
129 
133  vtkSetMacro(ScaleFactor, double);
134  vtkGetMacro(ScaleFactor, double);
136 
138  {
139  NO_DATA_SCALING = 0,
140  SCALE_BY_MAGNITUDE = 1,
141  SCALE_BY_COMPONENTS = 2
142  };
143 
144  void SetScaleModeToScaleByMagnitude() { this->SetScaleMode(SCALE_BY_MAGNITUDE); }
145  void SetScaleModeToScaleByVectorComponents() { this->SetScaleMode(SCALE_BY_COMPONENTS); }
146  void SetScaleModeToNoDataScaling() { this->SetScaleMode(NO_DATA_SCALING); }
147  const char* GetScaleModeAsString();
148 
150 
153  vtkSetVector2Macro(Range, double);
154  vtkGetVectorMacro(Range, double, 2);
156 
158 
163  vtkSetMacro(Orient, bool);
164  vtkGetMacro(Orient, bool);
165  vtkBooleanMacro(Orient, bool);
167 
169 
174  vtkSetClampMacro(OrientationMode, int, DIRECTION, QUATERNION);
175  vtkGetMacro(OrientationMode, int);
176  void SetOrientationModeToDirection() { this->SetOrientationMode(vtkGlyph3DMapper::DIRECTION); }
177  void SetOrientationModeToRotation() { this->SetOrientationMode(vtkGlyph3DMapper::ROTATION); }
178  void SetOrientationModeToQuaternion() { this->SetOrientationMode(vtkGlyph3DMapper::QUATERNION); }
181 
183  {
184  DIRECTION = 0,
185  ROTATION = 1,
186  QUATERNION = 2
187  };
188 
190 
193  vtkSetMacro(Clamping, bool);
194  vtkGetMacro(Clamping, bool);
195  vtkBooleanMacro(Clamping, bool);
197 
199 
205  vtkSetMacro(SourceIndexing, bool);
206  vtkGetMacro(SourceIndexing, bool);
207  vtkBooleanMacro(SourceIndexing, bool);
209 
211 
216  vtkSetMacro(UseSourceTableTree, bool);
217  vtkGetMacro(UseSourceTableTree, bool);
218  vtkBooleanMacro(UseSourceTableTree, bool);
219 
221 
225  vtkSetMacro(UseSelectionIds, bool);
226  vtkBooleanMacro(UseSelectionIds, bool);
227  vtkGetMacro(UseSelectionIds, bool);
229 
233  double* GetBounds() override;
234 
238  void GetBounds(double bounds[6]) override;
239 
243  void Render(vtkRenderer* ren, vtkActor* act) override;
244 
246 
254  vtkSetMacro(Masking, bool);
255  vtkGetMacro(Masking, bool);
256  vtkBooleanMacro(Masking, bool);
258 
265  void SetMaskArray(const char* maskarrayname);
266 
279  void SetMaskArray(int fieldAttributeType);
280 
296  void SetOrientationArray(const char* orientationarrayname);
297 
319  void SetOrientationArray(int fieldAttributeType);
320 
326  void SetScaleArray(const char* scalarsarrayname);
327 
333  void SetScaleArray(int fieldAttributeType);
334 
341  void SetSourceIndexArray(const char* arrayname);
342 
349  void SetSourceIndexArray(int fieldAttributeType);
350 
360  void SetSelectionIdArray(const char* selectionIdArrayName);
361 
371  void SetSelectionIdArray(int fieldAttributeType);
372 
374 
379  vtkSetMacro(SelectionColorId, unsigned int);
380  vtkGetMacro(SelectionColorId, unsigned int);
382 
384 
394  vtkGetObjectMacro(BlockAttributes, vtkCompositeDataDisplayAttributes);
396 
398 
402  vtkSetMacro(CullingAndLOD, bool);
403  vtkGetMacro(CullingAndLOD, bool);
404 
412 
418  virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb)) {}
419 
431  vtkIdType vtkNotUsed(index), float vtkNotUsed(distance), float vtkNotUsed(targetReduction))
432  {
433  }
434 
439  vtkSetMacro(LODColoring, bool);
440  vtkGetMacro(LODColoring, bool);
442 
449  bool GetSupportsSelection() override { return true; }
450 
451 protected:
453  ~vtkGlyph3DMapper() override;
454 
455  virtual int RequestUpdateExtent(
456  vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
457 
459 
462 
464 
474 
476  bool Scaling; // Determine whether scaling of geometry is performed
477  double ScaleFactor; // Scale factor to use to scale geometry
478  int ScaleMode; // Scale by scalar value or vector magnitude
479 
480  double Range[2]; // Range to use to perform scalar scaling
481  bool Orient; // boolean controls whether to "orient" data
482  bool Clamping; // whether to clamp scale factor
483  bool SourceIndexing; // Enable/disable indexing into the glyph table
484  bool UseSelectionIds; // Enable/disable custom pick ids
485  bool Masking; // Enable/disable masking.
487 
488  bool UseSourceTableTree; // Map DataObjectTree glyph source into table
489 
490  unsigned int SelectionColorId;
491 
492  bool CullingAndLOD = false; // Disable culling
493  std::vector<std::pair<float, float> > LODs;
494  bool LODColoring = false;
495 
496 private:
497  vtkGlyph3DMapper(const vtkGlyph3DMapper&) = delete;
498  void operator=(const vtkGlyph3DMapper&) = delete;
499 
503  bool GetBoundsInternal(vtkDataSet* ds, double ds_bounds[6]);
504 };
505 
506 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:46
Proxy object to connect input/output ports.
Rendering attributes for a multi-block dataset.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:50
provides implementation for most abstract methods in the superclass vtkCompositeDataSet
general representation of visualization data
Definition: vtkDataObject.h:60
abstract class to specify dataset behavior
Definition: vtkDataSet.h:57
vtkGlyph3D on the GPU.
void SetOrientationModeToQuaternion()
vtkDataArray * GetSourceIndexArray(vtkDataSet *input)
vtkPolyData * GetSource(int idx, vtkInformationVector *sourceInfo)
virtual vtkIdType GetMaxNumberOfLOD()
Get the maximum number of LOD.
void SetScaleModeToScaleByVectorComponents()
vtkPolyData * GetSource(int idx=0)
Get a pointer to a source object at a specified table location.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
~vtkGlyph3DMapper() override
void SetSourceData(vtkPolyData *pd)
Set the source to use for he glyph.
void SetSourceData(int idx, vtkPolyData *pd)
Specify a source object at a specified table location.
vtkDataArray * GetMaskArray(vtkDataSet *input)
Convenience methods to get each of the arrays.
void SetMaskArray(const char *maskarrayname)
Set the name of the point array to use as a mask for generating the glyphs.
void SetSourceConnection(int idx, vtkAlgorithmOutput *algOutput)
Specify a source object at a specified table location.
void SetScaleModeToScaleByMagnitude()
virtual int RequestUpdateExtent(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo)
void SetScaleArray(int fieldAttributeType)
Convenience method to set the array to scale with.
void SetSourceIndexArray(const char *arrayname)
Convenience method to set the array to use as index within the sources.
vtkCompositeDataDisplayAttributes * BlockAttributes
void SetInputData(vtkDataObject *)
Assign a data object as input.
vtkDataArray * GetScaleArray(vtkDataSet *input)
void SetScaleModeToNoDataScaling()
virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb))
Set the number of LOD.
vtkDataArray * GetSelectionIdArray(vtkDataSet *input)
void SetOrientationArray(int fieldAttributeType)
Tells the mapper to use an orientation array if Orient is true.
void SetOrientationArray(const char *orientationarrayname)
Tells the mapper to use an orientation array if Orient is true.
void SetSelectionIdArray(int fieldAttributeType)
Convenience method to set the array used for selection IDs.
unsigned int SelectionColorId
void SetSourceConnection(vtkAlgorithmOutput *algOutput)
vtkDataArray * GetOrientationArray(vtkDataSet *input)
const char * GetOrientationModeAsString()
void SetOrientationModeToDirection()
const char * GetScaleModeAsString()
virtual void SetBlockAttributes(vtkCompositeDataDisplayAttributes *attr)
When the input data object (not the source) is composite data, it is possible to control visibility a...
double * GetBounds() override
Redefined to take into account the bounds of the scaled glyphs.
std::vector< std::pair< float, float > > LODs
static vtkGlyph3DMapper * New()
void Render(vtkRenderer *ren, vtkActor *act) override
All the work is done is derived classes.
void SetMaskArray(int fieldAttributeType)
Set the point attribute to use as a mask for generating the glyphs.
vtkUnsignedCharArray * GetColors(vtkDataSet *input)
bool GetSupportsSelection() override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
void SetOrientationModeToRotation()
vtkPolyData * GetSourceTable(int idx, vtkInformationVector *sourceInfo)
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
void GetBounds(double bounds[6]) override
Same as superclass.
void SetSelectionIdArray(const char *selectionIdArrayName)
Convenience method to set the array used for selection IDs.
void SetSourceTableTree(vtkDataObjectTree *tree)
Specify a data object tree that will be used for the source table.
void SetScaleArray(const char *scalarsarrayname)
Convenience method to set the array to scale with.
void SetSourceIndexArray(int fieldAttributeType)
Convenience method to set the array to use as index within the sources.
vtkDataObjectTree * GetSourceTableTree()
Convenience method to get the source table tree, if it exists.
virtual void SetLODDistanceAndTargetReduction(vtkIdType vtkNotUsed(index), float vtkNotUsed(distance), float vtkNotUsed(targetReduction))
Configure LODs.
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:81
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
abstract specification for renderers
Definition: vtkRenderer.h:68
dynamic, self-adjusting array of unsigned char
@ info
Definition: vtkX3D.h:382
@ port
Definition: vtkX3D.h:453
@ index
Definition: vtkX3D.h:252
auto Range(IterablePtr iterable, Options &&... opts) -> typename detail::IterableTraits< typename detail::StripPointers< IterablePtr >::type >::RangeType
Generate an iterable STL proxy object for a VTK container.
Definition: vtkRange.h:85
int vtkIdType
Definition: vtkType.h:338