VTK  9.1.0
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=========================================================================*/
37#ifndef vtkGlyph3DMapper_h
38#define vtkGlyph3DMapper_h
39
40#include "vtkGlyph3D.h" // for the constants (VTK_SCALE_BY_SCALAR, ...).
41#include "vtkMapper.h"
42#include "vtkRenderingCoreModule.h" // For export macro
43#include "vtkWeakPointer.h" // needed for vtkWeakPointer.
44
47
48class VTKRENDERINGCORE_EXPORT vtkGlyph3DMapper : public vtkMapper
49{
50public:
53 void PrintSelf(ostream& os, vtkIndent indent) override;
54
56 {
57 SCALE = 0,
58 SOURCE_INDEX = 1,
59 MASK = 2,
60 ORIENTATION = 3,
61 SELECTIONID = 4
62 };
63
69 void SetSourceConnection(int idx, vtkAlgorithmOutput* algOutput);
71 {
72 this->SetSourceConnection(0, algOutput);
73 }
74
81
85 void SetSourceData(int idx, vtkPolyData* pd);
86
96
104
108 vtkPolyData* GetSource(int idx = 0);
109
114
116
121 vtkSetMacro(Scaling, bool);
122 vtkBooleanMacro(Scaling, bool);
123 vtkGetMacro(Scaling, bool);
125
127
133 vtkSetMacro(ScaleMode, int);
134 vtkGetMacro(ScaleMode, int);
136
138
142 vtkSetMacro(ScaleFactor, double);
143 vtkGetMacro(ScaleFactor, double);
145
147 {
148 NO_DATA_SCALING = 0,
149 SCALE_BY_MAGNITUDE = 1,
150 SCALE_BY_COMPONENTS = 2
151 };
152
153 void SetScaleModeToScaleByMagnitude() { this->SetScaleMode(SCALE_BY_MAGNITUDE); }
154 void SetScaleModeToScaleByVectorComponents() { this->SetScaleMode(SCALE_BY_COMPONENTS); }
155 void SetScaleModeToNoDataScaling() { this->SetScaleMode(NO_DATA_SCALING); }
156 const char* GetScaleModeAsString();
157
159
162 vtkSetVector2Macro(Range, double);
163 vtkGetVectorMacro(Range, double, 2);
165
167
172 vtkSetMacro(Orient, bool);
173 vtkGetMacro(Orient, bool);
174 vtkBooleanMacro(Orient, bool);
176
178
183 vtkSetClampMacro(OrientationMode, int, DIRECTION, QUATERNION);
184 vtkGetMacro(OrientationMode, int);
185 void SetOrientationModeToDirection() { this->SetOrientationMode(vtkGlyph3DMapper::DIRECTION); }
186 void SetOrientationModeToRotation() { this->SetOrientationMode(vtkGlyph3DMapper::ROTATION); }
190
192 {
193 DIRECTION = 0,
194 ROTATION = 1,
195 QUATERNION = 2
196 };
197
199
202 vtkSetMacro(Clamping, bool);
203 vtkGetMacro(Clamping, bool);
204 vtkBooleanMacro(Clamping, bool);
206
208
214 vtkSetMacro(SourceIndexing, bool);
215 vtkGetMacro(SourceIndexing, bool);
216 vtkBooleanMacro(SourceIndexing, bool);
218
220
225 vtkSetMacro(UseSourceTableTree, bool);
226 vtkGetMacro(UseSourceTableTree, bool);
227 vtkBooleanMacro(UseSourceTableTree, bool);
228
230
234 vtkSetMacro(UseSelectionIds, bool);
235 vtkBooleanMacro(UseSelectionIds, bool);
236 vtkGetMacro(UseSelectionIds, bool);
238
242 double* GetBounds() override;
243
247 void GetBounds(double bounds[6]) override;
248
252 void Render(vtkRenderer* ren, vtkActor* act) override;
253
255
263 vtkSetMacro(Masking, bool);
264 vtkGetMacro(Masking, bool);
265 vtkBooleanMacro(Masking, bool);
267
274 void SetMaskArray(const char* maskarrayname);
275
288 void SetMaskArray(int fieldAttributeType);
289
305 void SetOrientationArray(const char* orientationarrayname);
306
328 void SetOrientationArray(int fieldAttributeType);
329
335 void SetScaleArray(const char* scalarsarrayname);
336
342 void SetScaleArray(int fieldAttributeType);
343
350 void SetSourceIndexArray(const char* arrayname);
351
358 void SetSourceIndexArray(int fieldAttributeType);
359
369 void SetSelectionIdArray(const char* selectionIdArrayName);
370
380 void SetSelectionIdArray(int fieldAttributeType);
381
383
388 vtkSetMacro(SelectionColorId, unsigned int);
389 vtkGetMacro(SelectionColorId, unsigned int);
391
393
403 vtkGetObjectMacro(BlockAttributes, vtkCompositeDataDisplayAttributes);
405
407
411 vtkSetMacro(CullingAndLOD, bool);
412 vtkGetMacro(CullingAndLOD, bool);
413
421
427 virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb)) {}
428
440 vtkIdType vtkNotUsed(index), float vtkNotUsed(distance), float vtkNotUsed(targetReduction))
441 {
442 }
443
448 vtkSetMacro(LODColoring, bool);
449 vtkGetMacro(LODColoring, bool);
451
458 bool GetSupportsSelection() override { return true; }
459
460protected:
463
465 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
466
468
471
473
483
485 bool Scaling; // Determine whether scaling of geometry is performed
486 double ScaleFactor; // Scale factor to use to scale geometry
487 int ScaleMode; // Scale by scalar value or vector magnitude
488
489 double Range[2]; // Range to use to perform scalar scaling
490 bool Orient; // boolean controls whether to "orient" data
491 bool Clamping; // whether to clamp scale factor
492 bool SourceIndexing; // Enable/disable indexing into the glyph table
493 bool UseSelectionIds; // Enable/disable custom pick ids
494 bool Masking; // Enable/disable masking.
496
497 bool UseSourceTableTree; // Map DataObjectTree glyph source into table
498
499 unsigned int SelectionColorId;
500
501 bool CullingAndLOD = false; // Disable culling
502 std::vector<std::pair<float, float>> LODs;
503 bool LODColoring = false;
504
505private:
506 vtkGlyph3DMapper(const vtkGlyph3DMapper&) = delete;
507 void operator=(const vtkGlyph3DMapper&) = delete;
508
512 bool GetBoundsInternal(vtkDataSet* ds, double ds_bounds[6]);
513};
514
515#endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:55
Proxy object to connect input/output ports.
Rendering attributes for a multi-block dataset.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:59
provides implementation for most abstract methods in the superclass vtkCompositeDataSet
general representation of visualization data
Definition: vtkDataObject.h:69
abstract class to specify dataset behavior
Definition: vtkDataSet.h:66
vtkGlyph3D on the GPU.
void SetOrientationModeToQuaternion()
Orientation mode indicates if the OrientationArray provides the direction vector for the orientation ...
vtkDataObjectTree * GetSourceTableTree()
Convenience method to get the source table tree, if it exists.
virtual vtkIdType GetMaxNumberOfLOD()
Get the maximum number of LOD.
void SetScaleModeToScaleByVectorComponents()
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.
void SetMaskArray(const char *maskarrayname)
Set the name of the point array to use as a mask for generating the glyphs.
vtkPolyData * GetSource(int idx, vtkInformationVector *sourceInfo)
vtkDataArray * GetScaleArray(vtkDataSet *input)
Convenience methods to get each of the arrays.
void SetSourceConnection(int idx, vtkAlgorithmOutput *algOutput)
Specify a source object at a specified table location.
double * GetBounds() override
Redefined to take into account the bounds of the scaled glyphs.
void SetScaleModeToScaleByMagnitude()
virtual int RequestUpdateExtent(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo)
void SetScaleArray(int fieldAttributeType)
Convenience method to set the array to scale with.
vtkDataArray * GetSelectionIdArray(vtkDataSet *input)
Convenience methods to get each of the arrays.
void SetSourceIndexArray(const char *arrayname)
Convenience method to set the array to use as index within the sources.
vtkCompositeDataDisplayAttributes * BlockAttributes
vtkDataArray * GetOrientationArray(vtkDataSet *input)
Convenience methods to get each of the arrays.
void SetInputData(vtkDataObject *)
Assign a data object as input.
void SetScaleModeToNoDataScaling()
virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb))
Set the number of LOD.
const char * GetScaleModeAsString()
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)
void SetOrientationModeToDirection()
Orientation mode indicates if the OrientationArray provides the direction vector for the orientation ...
vtkPolyData * GetSourceTable(int idx, vtkInformationVector *sourceInfo)
vtkUnsignedCharArray * GetColors(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 ...
virtual void SetBlockAttributes(vtkCompositeDataDisplayAttributes *attr)
When the input data object (not the source) is composite data, it is possible to control visibility a...
vtkDataArray * GetSourceIndexArray(vtkDataSet *input)
Convenience methods to get each of the arrays.
std::vector< std::pair< float, float > > LODs
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.
vtkPolyData * GetSource(int idx=0)
Get a pointer to a source object at a specified table location.
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 ...
vtkDataArray * GetMaskArray(vtkDataSet *input)
Convenience methods to get each of the arrays.
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.
virtual void SetLODDistanceAndTargetReduction(vtkIdType vtkNotUsed(index), float vtkNotUsed(distance), float vtkNotUsed(targetReduction))
Configure LODs.
static vtkGlyph3DMapper * New()
a simple class to control print indentation
Definition: vtkIndent.h:43
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:91
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:95
abstract specification for renderers
Definition: vtkRenderer.h:73
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:332