VTK  9.3.0
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
19#ifndef vtkGlyph3DMapper_h
20#define vtkGlyph3DMapper_h
21
22#include "vtkGlyph3D.h" // for the constants (VTK_SCALE_BY_SCALAR, ...).
23#include "vtkMapper.h"
24#include "vtkRenderingCoreModule.h" // For export macro
25#include "vtkWeakPointer.h" // needed for vtkWeakPointer.
26
27VTK_ABI_NAMESPACE_BEGIN
30
31class VTKRENDERINGCORE_EXPORT vtkGlyph3DMapper : public vtkMapper
32{
33public:
36 void PrintSelf(ostream& os, vtkIndent indent) override;
37
39 {
40 SCALE = 0,
41 SOURCE_INDEX = 1,
42 MASK = 2,
43 ORIENTATION = 3,
44 SELECTIONID = 4
45 };
46
52 void SetSourceConnection(int idx, vtkAlgorithmOutput* algOutput);
54 {
55 this->SetSourceConnection(0, algOutput);
56 }
57
64
68 void SetSourceData(int idx, vtkPolyData* pd);
69
79
87
91 vtkPolyData* GetSource(int idx = 0);
92
97
99
104 vtkSetMacro(Scaling, bool);
105 vtkBooleanMacro(Scaling, bool);
106 vtkGetMacro(Scaling, bool);
108
110
116 vtkSetMacro(ScaleMode, int);
117 vtkGetMacro(ScaleMode, int);
119
121
125 vtkSetMacro(ScaleFactor, double);
126 vtkGetMacro(ScaleFactor, double);
128
130 {
131 NO_DATA_SCALING = 0,
132 SCALE_BY_MAGNITUDE = 1,
133 SCALE_BY_COMPONENTS = 2
134 };
135
136 void SetScaleModeToScaleByMagnitude() { this->SetScaleMode(SCALE_BY_MAGNITUDE); }
137 void SetScaleModeToScaleByVectorComponents() { this->SetScaleMode(SCALE_BY_COMPONENTS); }
138 void SetScaleModeToNoDataScaling() { this->SetScaleMode(NO_DATA_SCALING); }
139 const char* GetScaleModeAsString();
140
142
145 vtkSetVector2Macro(Range, double);
146 vtkGetVectorMacro(Range, double, 2);
148
150
155 vtkSetMacro(Orient, bool);
156 vtkGetMacro(Orient, bool);
157 vtkBooleanMacro(Orient, bool);
159
161
166 vtkSetClampMacro(OrientationMode, int, DIRECTION, QUATERNION);
167 vtkGetMacro(OrientationMode, int);
168 void SetOrientationModeToDirection() { this->SetOrientationMode(vtkGlyph3DMapper::DIRECTION); }
169 void SetOrientationModeToRotation() { this->SetOrientationMode(vtkGlyph3DMapper::ROTATION); }
173
175 {
176 DIRECTION = 0,
177 ROTATION = 1,
178 QUATERNION = 2
179 };
180
182
185 vtkSetMacro(Clamping, bool);
186 vtkGetMacro(Clamping, bool);
187 vtkBooleanMacro(Clamping, bool);
189
191
197 vtkSetMacro(SourceIndexing, bool);
198 vtkGetMacro(SourceIndexing, bool);
199 vtkBooleanMacro(SourceIndexing, bool);
201
203
208 vtkSetMacro(UseSourceTableTree, bool);
209 vtkGetMacro(UseSourceTableTree, bool);
210 vtkBooleanMacro(UseSourceTableTree, bool);
211
213
217 vtkSetMacro(UseSelectionIds, bool);
218 vtkBooleanMacro(UseSelectionIds, bool);
219 vtkGetMacro(UseSelectionIds, bool);
221
225 double* GetBounds() override;
226
230 void GetBounds(double bounds[6]) override;
231
235 void Render(vtkRenderer* ren, vtkActor* act) override;
236
238
246 vtkSetMacro(Masking, bool);
247 vtkGetMacro(Masking, bool);
248 vtkBooleanMacro(Masking, bool);
250
257 void SetMaskArray(const char* maskarrayname);
258
271 void SetMaskArray(int fieldAttributeType);
272
288 void SetOrientationArray(const char* orientationarrayname);
289
311 void SetOrientationArray(int fieldAttributeType);
312
318 void SetScaleArray(const char* scalarsarrayname);
319
325 void SetScaleArray(int fieldAttributeType);
326
333 void SetSourceIndexArray(const char* arrayname);
334
341 void SetSourceIndexArray(int fieldAttributeType);
342
352 void SetSelectionIdArray(const char* selectionIdArrayName);
353
363 void SetSelectionIdArray(int fieldAttributeType);
364
366
371 vtkSetMacro(SelectionColorId, unsigned int);
372 vtkGetMacro(SelectionColorId, unsigned int);
374
376
386 vtkGetObjectMacro(BlockAttributes, vtkCompositeDataDisplayAttributes);
388
390
394 vtkSetMacro(CullingAndLOD, bool);
395 vtkGetMacro(CullingAndLOD, bool);
396
404
410 virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb)) {}
411
423 vtkIdType vtkNotUsed(index), float vtkNotUsed(distance), float vtkNotUsed(targetReduction))
424 {
425 }
426
431 vtkSetMacro(LODColoring, bool);
432 vtkGetMacro(LODColoring, bool);
434
441 bool GetSupportsSelection() override { return true; }
442
443protected:
446
448 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
449
450 int FillInputPortInformation(int port, vtkInformation* info) override;
451
454
456
466
468 bool Scaling; // Determine whether scaling of geometry is performed
469 double ScaleFactor; // Scale factor to use to scale geometry
470 int ScaleMode; // Scale by scalar value or vector magnitude
471
472 double Range[2]; // Range to use to perform scalar scaling
473 bool Orient; // boolean controls whether to "orient" data
474 bool Clamping; // whether to clamp scale factor
475 bool SourceIndexing; // Enable/disable indexing into the glyph table
476 bool UseSelectionIds; // Enable/disable custom pick ids
477 bool Masking; // Enable/disable masking.
479
480 bool UseSourceTableTree; // Map DataObjectTree glyph source into table
481
482 unsigned int SelectionColorId;
483
484 bool CullingAndLOD = false; // Disable culling
485 std::vector<std::pair<float, float>> LODs;
486 bool LODColoring = false;
487
488private:
489 vtkGlyph3DMapper(const vtkGlyph3DMapper&) = delete;
490 void operator=(const vtkGlyph3DMapper&) = delete;
491
495 bool GetBoundsInternal(vtkDataSet* ds, double ds_bounds[6]);
496};
497
498VTK_ABI_NAMESPACE_END
499#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:41
Proxy object to connect input/output ports.
Rendering attributes for a multi-block dataset.
abstract superclass for arrays of numeric data
provides implementation for most abstract methods in the superclass vtkCompositeDataSet
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:53
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:29
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract class specifies interface to map data to graphics primitives
Definition vtkMapper.h:77
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:80
abstract specification for renderers
Definition vtkRenderer.h:59
dynamic, self-adjusting array of unsigned char
int vtkIdType
Definition vtkType.h:315