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=========================================================================*/
137#ifndef vtkGlyph3DMapper_h
138#define vtkGlyph3DMapper_h
139
140#include "vtkGlyph3D.h" // for the constants (VTK_SCALE_BY_SCALAR, ...).
141#include "vtkMapper.h"
142#include "vtkRenderingCoreModule.h" // For export macro
143#include "vtkWeakPointer.h" // needed for vtkWeakPointer.
144
147
148class VTKRENDERINGCORE_EXPORT vtkGlyph3DMapper : public vtkMapper
149{
150public:
153 void PrintSelf(ostream& os, vtkIndent indent) override;
154
156 {
157 SCALE = 0,
158 SOURCE_INDEX = 1,
159 MASK = 2,
160 ORIENTATION = 3,
161 SELECTIONID = 4
162 };
163
169 void SetSourceConnection(int idx, vtkAlgorithmOutput* algOutput);
171 {
172 this->SetSourceConnection(0, algOutput);
173 }
174
181
185 void SetSourceData(int idx, vtkPolyData* pd);
186
196
204
208 vtkPolyData* GetSource(int idx = 0);
209
214
216
221 vtkSetMacro(Scaling, bool);
222 vtkBooleanMacro(Scaling, bool);
223 vtkGetMacro(Scaling, bool);
225
227
233 vtkSetMacro(ScaleMode, int);
234 vtkGetMacro(ScaleMode, int);
236
238
242 vtkSetMacro(ScaleFactor, double);
243 vtkGetMacro(ScaleFactor, double);
245
247 {
248 NO_DATA_SCALING = 0,
249 SCALE_BY_MAGNITUDE = 1,
250 SCALE_BY_COMPONENTS = 2
251 };
252
253 void SetScaleModeToScaleByMagnitude() { this->SetScaleMode(SCALE_BY_MAGNITUDE); }
254 void SetScaleModeToScaleByVectorComponents() { this->SetScaleMode(SCALE_BY_COMPONENTS); }
255 void SetScaleModeToNoDataScaling() { this->SetScaleMode(NO_DATA_SCALING); }
256 const char* GetScaleModeAsString();
257
259
262 vtkSetVector2Macro(Range, double);
263 vtkGetVectorMacro(Range, double, 2);
265
267
272 vtkSetMacro(Orient, bool);
273 vtkGetMacro(Orient, bool);
274 vtkBooleanMacro(Orient, bool);
276
278
283 vtkSetClampMacro(OrientationMode, int, DIRECTION, QUATERNION);
284 vtkGetMacro(OrientationMode, int);
285 void SetOrientationModeToDirection() { this->SetOrientationMode(vtkGlyph3DMapper::DIRECTION); }
286 void SetOrientationModeToRotation() { this->SetOrientationMode(vtkGlyph3DMapper::ROTATION); }
290
292 {
293 DIRECTION = 0,
294 ROTATION = 1,
295 QUATERNION = 2
296 };
297
299
302 vtkSetMacro(Clamping, bool);
303 vtkGetMacro(Clamping, bool);
304 vtkBooleanMacro(Clamping, bool);
306
308
314 vtkSetMacro(SourceIndexing, bool);
315 vtkGetMacro(SourceIndexing, bool);
316 vtkBooleanMacro(SourceIndexing, bool);
318
320
325 vtkSetMacro(UseSourceTableTree, bool);
326 vtkGetMacro(UseSourceTableTree, bool);
327 vtkBooleanMacro(UseSourceTableTree, bool);
328
330
334 vtkSetMacro(UseSelectionIds, bool);
335 vtkBooleanMacro(UseSelectionIds, bool);
336 vtkGetMacro(UseSelectionIds, bool);
338
342 double* GetBounds() override;
343
347 void GetBounds(double bounds[6]) override;
348
352 void Render(vtkRenderer* ren, vtkActor* act) override;
353
355
363 vtkSetMacro(Masking, bool);
364 vtkGetMacro(Masking, bool);
365 vtkBooleanMacro(Masking, bool);
367
374 void SetMaskArray(const char* maskarrayname);
375
388 void SetMaskArray(int fieldAttributeType);
389
405 void SetOrientationArray(const char* orientationarrayname);
406
428 void SetOrientationArray(int fieldAttributeType);
429
435 void SetScaleArray(const char* scalarsarrayname);
436
442 void SetScaleArray(int fieldAttributeType);
443
450 void SetSourceIndexArray(const char* arrayname);
451
458 void SetSourceIndexArray(int fieldAttributeType);
459
469 void SetSelectionIdArray(const char* selectionIdArrayName);
470
480 void SetSelectionIdArray(int fieldAttributeType);
481
483
488 vtkSetMacro(SelectionColorId, unsigned int);
489 vtkGetMacro(SelectionColorId, unsigned int);
491
493
503 vtkGetObjectMacro(BlockAttributes, vtkCompositeDataDisplayAttributes);
505
507
511 vtkSetMacro(CullingAndLOD, bool);
512 vtkGetMacro(CullingAndLOD, bool);
513
521
527 virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb)) {}
528
540 vtkIdType vtkNotUsed(index), float vtkNotUsed(distance), float vtkNotUsed(targetReduction))
541 {
542 }
543
548 vtkSetMacro(LODColoring, bool);
549 vtkGetMacro(LODColoring, bool);
551
558 bool GetSupportsSelection() override { return true; }
559
560protected:
563
565 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
566
568
571
573
583
585 bool Scaling; // Determine whether scaling of geometry is performed
586 double ScaleFactor; // Scale factor to use to scale geometry
587 int ScaleMode; // Scale by scalar value or vector magnitude
588
589 double Range[2]; // Range to use to perform scalar scaling
590 bool Orient; // boolean controls whether to "orient" data
591 bool Clamping; // whether to clamp scale factor
592 bool SourceIndexing; // Enable/disable indexing into the glyph table
593 bool UseSelectionIds; // Enable/disable custom pick ids
594 bool Masking; // Enable/disable masking.
596
597 bool UseSourceTableTree; // Map DataObjectTree glyph source into table
598
599 unsigned int SelectionColorId;
600
601 bool CullingAndLOD = false; // Disable culling
602 std::vector<std::pair<float, float>> LODs;
603 bool LODColoring = false;
604
605private:
606 vtkGlyph3DMapper(const vtkGlyph3DMapper&) = delete;
607 void operator=(const vtkGlyph3DMapper&) = delete;
608
612 bool GetBoundsInternal(vtkDataSet* ds, double ds_bounds[6]);
613};
614
615#endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:155
Proxy object to connect input/output ports.
Rendering attributes for a multi-block dataset.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
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 ...
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:113
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:171
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:195
abstract specification for renderers
Definition: vtkRenderer.h:173
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