VTK  9.4.20250201
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
131#ifndef vtkGlyph3DMapper_h
132#define vtkGlyph3DMapper_h
133
134#include "vtkGlyph3D.h" // for the constants (VTK_SCALE_BY_SCALAR, ...).
135#include "vtkMapper.h"
136#include "vtkRenderingCoreModule.h" // For export macro
137#include "vtkWeakPointer.h" // needed for vtkWeakPointer.
138#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
139
140VTK_ABI_NAMESPACE_BEGIN
143
144class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkGlyph3DMapper : public vtkMapper
145{
146public:
149 void PrintSelf(ostream& os, vtkIndent indent) override;
150
152 {
153 SCALE = 0,
154 SOURCE_INDEX = 1,
155 MASK = 2,
156 ORIENTATION = 3,
157 SELECTIONID = 4
158 };
159
165 void SetSourceConnection(int idx, vtkAlgorithmOutput* algOutput);
167 {
168 this->SetSourceConnection(0, algOutput);
169 }
170
177
181 void SetSourceData(int idx, vtkPolyData* pd);
182
192
200
204 vtkPolyData* GetSource(int idx = 0);
205
210
212
217 vtkSetMacro(Scaling, bool);
218 vtkBooleanMacro(Scaling, bool);
219 vtkGetMacro(Scaling, bool);
221
223
229 vtkSetMacro(ScaleMode, int);
230 vtkGetMacro(ScaleMode, int);
232
234
238 vtkSetMacro(ScaleFactor, double);
239 vtkGetMacro(ScaleFactor, double);
241
243 {
244 NO_DATA_SCALING = 0,
245 SCALE_BY_MAGNITUDE = 1,
246 SCALE_BY_COMPONENTS = 2
247 };
248
249 void SetScaleModeToScaleByMagnitude() { this->SetScaleMode(SCALE_BY_MAGNITUDE); }
250 void SetScaleModeToScaleByVectorComponents() { this->SetScaleMode(SCALE_BY_COMPONENTS); }
251 void SetScaleModeToNoDataScaling() { this->SetScaleMode(NO_DATA_SCALING); }
252 const char* GetScaleModeAsString();
253
255
258 vtkSetVector2Macro(Range, double);
259 vtkGetVectorMacro(Range, double, 2);
261
263
268 vtkSetMacro(Orient, bool);
269 vtkGetMacro(Orient, bool);
270 vtkBooleanMacro(Orient, bool);
272
274
279 vtkSetClampMacro(OrientationMode, int, DIRECTION, QUATERNION);
280 vtkGetMacro(OrientationMode, int);
281 void SetOrientationModeToDirection() { this->SetOrientationMode(vtkGlyph3DMapper::DIRECTION); }
282 void SetOrientationModeToRotation() { this->SetOrientationMode(vtkGlyph3DMapper::ROTATION); }
286
288 {
289 DIRECTION = 0,
290 ROTATION = 1,
291 QUATERNION = 2
292 };
293
295
298 vtkSetMacro(Clamping, bool);
299 vtkGetMacro(Clamping, bool);
300 vtkBooleanMacro(Clamping, bool);
302
304
310 vtkSetMacro(SourceIndexing, bool);
311 vtkGetMacro(SourceIndexing, bool);
312 vtkBooleanMacro(SourceIndexing, bool);
314
316
321 vtkSetMacro(UseSourceTableTree, bool);
322 vtkGetMacro(UseSourceTableTree, bool);
323 vtkBooleanMacro(UseSourceTableTree, bool);
324
326
330 vtkSetMacro(UseSelectionIds, bool);
331 vtkBooleanMacro(UseSelectionIds, bool);
332 vtkGetMacro(UseSelectionIds, bool);
334
338 double* GetBounds() override;
339
343 void GetBounds(double bounds[6]) override;
344
348 void Render(vtkRenderer* ren, vtkActor* act) override;
349
351
359 vtkSetMacro(Masking, bool);
360 vtkGetMacro(Masking, bool);
361 vtkBooleanMacro(Masking, bool);
363
370 void SetMaskArray(const char* maskarrayname);
371
384 void SetMaskArray(int fieldAttributeType);
385
401 void SetOrientationArray(const char* orientationarrayname);
402
424 void SetOrientationArray(int fieldAttributeType);
425
431 void SetScaleArray(const char* scalarsarrayname);
432
438 void SetScaleArray(int fieldAttributeType);
439
446 void SetSourceIndexArray(const char* arrayname);
447
454 void SetSourceIndexArray(int fieldAttributeType);
455
465 void SetSelectionIdArray(const char* selectionIdArrayName);
466
476 void SetSelectionIdArray(int fieldAttributeType);
477
479
484 vtkSetMacro(SelectionColorId, unsigned int);
485 vtkGetMacro(SelectionColorId, unsigned int);
487
489
499 vtkGetObjectMacro(BlockAttributes, vtkCompositeDataDisplayAttributes);
501
503
507 vtkSetMacro(CullingAndLOD, bool);
508 vtkGetMacro(CullingAndLOD, bool);
509
517
523 virtual void SetNumberOfLOD(vtkIdType vtkNotUsed(nb)) {}
524
536 vtkIdType vtkNotUsed(index), float vtkNotUsed(distance), float vtkNotUsed(targetReduction))
537 {
538 }
539
544 vtkSetMacro(LODColoring, bool);
545 vtkGetMacro(LODColoring, bool);
547
554 bool GetSupportsSelection() override { return true; }
555
556protected:
559
561 vtkInformation* request, vtkInformationVector** inInfo, vtkInformationVector* outInfo);
562
563 int FillInputPortInformation(int port, vtkInformation* info) override;
564
567
569
579
581 bool Scaling; // Determine whether scaling of geometry is performed
582 double ScaleFactor; // Scale factor to use to scale geometry
583 int ScaleMode; // Scale by scalar value or vector magnitude
584
585 double Range[2]; // Range to use to perform scalar scaling
586 bool Orient; // boolean controls whether to "orient" data
587 bool Clamping; // whether to clamp scale factor
588 bool SourceIndexing; // Enable/disable indexing into the glyph table
589 bool UseSelectionIds; // Enable/disable custom pick ids
590 bool Masking; // Enable/disable masking.
592
593 bool UseSourceTableTree; // Map DataObjectTree glyph source into table
594
595 unsigned int SelectionColorId;
596
597 bool CullingAndLOD = false; // Disable culling
598 std::vector<std::pair<float, float>> LODs;
599 bool LODColoring = false;
600
601private:
602 vtkGlyph3DMapper(const vtkGlyph3DMapper&) = delete;
603 void operator=(const vtkGlyph3DMapper&) = delete;
604
608 bool GetBoundsInternal(vtkDataSet* ds, double ds_bounds[6]);
609};
610
611VTK_ABI_NAMESPACE_END
612#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
provides implementation for most abstract methods in the superclass vtkCompositeDataSet
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:165
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: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:98
concrete dataset represents vertices, lines, polygons, and triangle strips
abstract specification for renderers
dynamic, self-adjusting array of unsigned char
int vtkIdType
Definition vtkType.h:315
#define VTK_MARSHALAUTO