VTK  9.3.20240418
vtkGlyph3DMapper.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
128 #ifndef vtkGlyph3DMapper_h
129 #define vtkGlyph3DMapper_h
130 
131 #include "vtkGlyph3D.h" // for the constants (VTK_SCALE_BY_SCALAR, ...).
132 #include "vtkMapper.h"
133 #include "vtkRenderingCoreModule.h" // For export macro
134 #include "vtkWeakPointer.h" // needed for vtkWeakPointer.
135 
136 VTK_ABI_NAMESPACE_BEGIN
138 class vtkDataObjectTree;
139 
140 class VTKRENDERINGCORE_EXPORT vtkGlyph3DMapper : public vtkMapper
141 {
142 public:
144  vtkTypeMacro(vtkGlyph3DMapper, vtkMapper);
145  void PrintSelf(ostream& os, vtkIndent indent) override;
146 
148  {
149  SCALE = 0,
150  SOURCE_INDEX = 1,
151  MASK = 2,
152  ORIENTATION = 3,
153  SELECTIONID = 4
154  };
155 
161  void SetSourceConnection(int idx, vtkAlgorithmOutput* algOutput);
163  {
164  this->SetSourceConnection(0, algOutput);
165  }
166 
173 
177  void SetSourceData(int idx, vtkPolyData* pd);
178 
188 
196 
200  vtkPolyData* GetSource(int idx = 0);
201 
206 
208 
213  vtkSetMacro(Scaling, bool);
214  vtkBooleanMacro(Scaling, bool);
215  vtkGetMacro(Scaling, bool);
217 
219 
225  vtkSetMacro(ScaleMode, int);
226  vtkGetMacro(ScaleMode, int);
228 
230 
234  vtkSetMacro(ScaleFactor, double);
235  vtkGetMacro(ScaleFactor, double);
237 
239  {
240  NO_DATA_SCALING = 0,
241  SCALE_BY_MAGNITUDE = 1,
242  SCALE_BY_COMPONENTS = 2
243  };
244 
245  void SetScaleModeToScaleByMagnitude() { this->SetScaleMode(SCALE_BY_MAGNITUDE); }
246  void SetScaleModeToScaleByVectorComponents() { this->SetScaleMode(SCALE_BY_COMPONENTS); }
247  void SetScaleModeToNoDataScaling() { this->SetScaleMode(NO_DATA_SCALING); }
248  const char* GetScaleModeAsString();
249 
251 
254  vtkSetVector2Macro(Range, double);
255  vtkGetVectorMacro(Range, double, 2);
257 
259 
264  vtkSetMacro(Orient, bool);
265  vtkGetMacro(Orient, bool);
266  vtkBooleanMacro(Orient, bool);
268 
270 
275  vtkSetClampMacro(OrientationMode, int, DIRECTION, QUATERNION);
276  vtkGetMacro(OrientationMode, int);
277  void SetOrientationModeToDirection() { this->SetOrientationMode(vtkGlyph3DMapper::DIRECTION); }
278  void SetOrientationModeToRotation() { this->SetOrientationMode(vtkGlyph3DMapper::ROTATION); }
279  void SetOrientationModeToQuaternion() { this->SetOrientationMode(vtkGlyph3DMapper::QUATERNION); }
282 
284  {
285  DIRECTION = 0,
286  ROTATION = 1,
287  QUATERNION = 2
288  };
289 
291 
294  vtkSetMacro(Clamping, bool);
295  vtkGetMacro(Clamping, bool);
296  vtkBooleanMacro(Clamping, bool);
298 
300 
306  vtkSetMacro(SourceIndexing, bool);
307  vtkGetMacro(SourceIndexing, bool);
308  vtkBooleanMacro(SourceIndexing, bool);
310 
312 
317  vtkSetMacro(UseSourceTableTree, bool);
318  vtkGetMacro(UseSourceTableTree, bool);
319  vtkBooleanMacro(UseSourceTableTree, bool);
320 
322 
326  vtkSetMacro(UseSelectionIds, bool);
327  vtkBooleanMacro(UseSelectionIds, bool);
328  vtkGetMacro(UseSelectionIds, bool);
330 
334  double* GetBounds() override;
335 
339  void GetBounds(double bounds[6]) override;
340 
344  void Render(vtkRenderer* ren, vtkActor* act) override;
345 
347 
355  vtkSetMacro(Masking, bool);
356  vtkGetMacro(Masking, bool);
357  vtkBooleanMacro(Masking, bool);
359 
366  void SetMaskArray(const char* maskarrayname);
367 
380  void SetMaskArray(int fieldAttributeType);
381 
397  void SetOrientationArray(const char* orientationarrayname);
398 
420  void SetOrientationArray(int fieldAttributeType);
421 
427  void SetScaleArray(const char* scalarsarrayname);
428 
434  void SetScaleArray(int fieldAttributeType);
435 
442  void SetSourceIndexArray(const char* arrayname);
443 
450  void SetSourceIndexArray(int fieldAttributeType);
451 
461  void SetSelectionIdArray(const char* selectionIdArrayName);
462 
472  void SetSelectionIdArray(int fieldAttributeType);
473 
475 
480  vtkSetMacro(SelectionColorId, unsigned int);
481  vtkGetMacro(SelectionColorId, unsigned int);
483 
485 
495  vtkGetObjectMacro(BlockAttributes, vtkCompositeDataDisplayAttributes);
497 
499 
503  vtkSetMacro(CullingAndLOD, bool);
504  vtkGetMacro(CullingAndLOD, bool);
505 
513 
519  virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb)) {}
520 
532  vtkIdType vtkNotUsed(index), float vtkNotUsed(distance), float vtkNotUsed(targetReduction))
533  {
534  }
535 
540  vtkSetMacro(LODColoring, bool);
541  vtkGetMacro(LODColoring, bool);
543 
550  bool GetSupportsSelection() override { return true; }
551 
552 protected:
554  ~vtkGlyph3DMapper() override;
555 
556  virtual int RequestUpdateExtent(
557  vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
558 
560 
563 
565 
575 
577  bool Scaling; // Determine whether scaling of geometry is performed
578  double ScaleFactor; // Scale factor to use to scale geometry
579  int ScaleMode; // Scale by scalar value or vector magnitude
580 
581  double Range[2]; // Range to use to perform scalar scaling
582  bool Orient; // boolean controls whether to "orient" data
583  bool Clamping; // whether to clamp scale factor
584  bool SourceIndexing; // Enable/disable indexing into the glyph table
585  bool UseSelectionIds; // Enable/disable custom pick ids
586  bool Masking; // Enable/disable masking.
588 
589  bool UseSourceTableTree; // Map DataObjectTree glyph source into table
590 
591  unsigned int SelectionColorId;
592 
593  bool CullingAndLOD = false; // Disable culling
594  std::vector<std::pair<float, float>> LODs;
595  bool LODColoring = false;
596 
597 private:
598  vtkGlyph3DMapper(const vtkGlyph3DMapper&) = delete;
599  void operator=(const vtkGlyph3DMapper&) = delete;
600 
604  bool GetBoundsInternal(vtkDataSet* ds, double ds_bounds[6]);
605 };
606 
607 VTK_ABI_NAMESPACE_END
608 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:151
Proxy object to connect input/output ports.
Rendering attributes for a multi-block dataset.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:155
provides implementation for most abstract methods in the superclass vtkCompositeDataSet
general representation of visualization data
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
vtkGlyph3D on the GPU.
void SetOrientationModeToQuaternion()
Orientation mode indicates if the OrientationArray provides the direction vector for the orientation ...
vtkDataArray * GetSourceIndexArray(vtkDataSet *input)
Convenience methods to get each of the arrays.
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)
Convenience methods to get each of the arrays.
void SetScaleModeToNoDataScaling()
virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb))
Set the number of LOD.
vtkDataArray * GetSelectionIdArray(vtkDataSet *input)
Convenience methods to get each of the arrays.
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)
Convenience methods to get each of the arrays.
const char * GetOrientationModeAsString()
Orientation mode indicates if the OrientationArray provides the direction vector for the orientation ...
void SetOrientationModeToDirection()
Orientation mode indicates if the OrientationArray provides the direction vector for the orientation ...
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)
Convenience methods to get each of the arrays.
bool GetSupportsSelection() override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
void SetOrientationModeToRotation()
Orientation mode indicates if the OrientationArray provides the direction vector for the orientation ...
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:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:137
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:181
abstract specification for renderers
Definition: vtkRenderer.h:172
dynamic, self-adjusting array of unsigned char
@ info
Definition: vtkX3D.h:376
@ port
Definition: vtkX3D.h:447
@ index
Definition: vtkX3D.h:246
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:74
int vtkIdType
Definition: vtkType.h:315