vtkGeometryRepresentation.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-License-Identifier: BSD-3-Clause
16 #ifndef vtkGeometryRepresentation_h
17 #define vtkGeometryRepresentation_h
18 
20 #include "vtkParaViewDeprecation.h" // for PV_DEPRECATED
21 #include "vtkProperty.h" // needed for VTK_POINTS etc.
22 #include "vtkRemotingViewsModule.h" // needed for exports
23 #include "vtkVector.h" // for vtkVector.
24 
25 #include <set> // needed for std::set
26 #include <string> // needed for std::string
27 #include <unordered_map> // needed for std::unordered_map
28 #include <vector> // needed for std::vector
29 
31 class vtkMapper;
34 class vtkPVLODActor;
35 class vtkScalarsToColors;
36 class vtkTexture;
37 class vtkTransform;
38 
40 {
41 // This is defined to either vtkQuadricClustering or vtkmLevelOfDetail in the
42 // implementation file:
44 }
45 
47 {
48 
49 public:
50  static vtkGeometryRepresentation* New();
52  void PrintSelf(ostream& os, vtkIndent indent) override;
53 
60  int ProcessViewRequest(vtkInformationRequestKey* request_type, vtkInformation* inInfo,
61  vtkInformation* outInfo) override;
62 
67  void SetVisibility(bool val) override;
68 
70 
74  void SetBlockColorsDistinctValues(int distinctValues);
75  int GetBlockColorsDistinctValues();
77 
81  virtual void SetSuppressLOD(bool suppress) { this->SuppressLOD = suppress; }
82 
84 
89  vtkBooleanMacro(DisableLighting, bool);
90  vtkSetMacro(DisableLighting, bool);
91  vtkGetMacro(DisableLighting, bool);
94 
101  vtkSetMacro(Ambient, double);
102  vtkSetMacro(Diffuse, double);
103  vtkSetMacro(Specular, double);
104  vtkGetMacro(Ambient, double);
105  vtkGetMacro(Diffuse, double);
106  vtkGetMacro(Specular, double);
108 
110  {
111  POINTS = VTK_POINTS,
112  WIREFRAME = VTK_WIREFRAME,
113  SURFACE = VTK_SURFACE,
114  SURFACE_WITH_EDGES = 3
115  };
116 
118 
122  void SetCoordinateShiftScaleMethod(int val);
123  int GetCoordinateShiftScaleMethod();
125 
127 
131  vtkSetClampMacro(Representation, int, POINTS, SURFACE_WITH_EDGES);
132  vtkGetMacro(Representation, int);
134 
139  virtual void SetRepresentation(const char*);
140 
144  vtkDataObject* GetRenderedDataObject(int port) override;
145 
147 
152  vtkSetMacro(RequestGhostCellsIfNeeded, bool);
153  vtkGetMacro(RequestGhostCellsIfNeeded, bool);
154  vtkBooleanMacro(RequestGhostCellsIfNeeded, bool);
156 
161  virtual void SetNormalArray(const char* val);
162 
167  virtual void SetTCoordArray(const char* val);
168 
173  virtual void SetTangentArray(const char* val);
174 
175  //***************************************************************************
176  // Forwarded to vtkPVGeometryFilter
177  virtual void SetUseOutline(int);
178  void SetTriangulate(int);
179  void SetNonlinearSubdivisionLevel(int);
180  void SetMatchBoundariesIgnoringCellOrder(int);
181  virtual void SetGenerateFeatureEdges(bool);
182  void SetComputePointNormals(bool);
183  void SetSplitting(bool);
184  void SetFeatureAngle(double);
185 
186  //***************************************************************************
187  // Forwarded to vtkProperty.
188  virtual void SetAmbientColor(double r, double g, double b);
189  virtual void SetColor(double r, double g, double b);
190  virtual void SetDiffuseColor(double r, double g, double b);
191  virtual void SetLighting(bool lighting);
192  virtual void SetEdgeColor(double r, double g, double b);
193  virtual void SetInteractiveSelectionColor(double r, double g, double b);
194  virtual void SetInterpolation(int val);
195  virtual void SetLineWidth(double val);
196  virtual void SetOpacity(double val);
197  virtual void SetEdgeOpacity(double val);
198  virtual void SetPointSize(double val);
199  virtual void SetSpecularColor(double r, double g, double b);
200  virtual void SetSpecularPower(double val);
201  virtual void SetLuminosity(double val);
202  virtual void SetRenderPointsAsSpheres(bool);
203  virtual void SetRenderLinesAsTubes(bool);
204  virtual void SetRoughness(double val);
205  virtual void SetMetallic(double val);
206  virtual void SetEdgeTint(double r, double g, double b);
207  virtual void SetAnisotropy(double val);
208  virtual void SetAnisotropyRotation(double val);
209  virtual void SetBaseIOR(double val);
210  virtual void SetCoatIOR(double val);
211  virtual void SetCoatStrength(double val);
212  virtual void SetCoatRoughness(double val);
213  virtual void SetCoatNormalScale(double val);
214  virtual void SetCoatColor(double r, double g, double b);
215  virtual void SetBaseColorTexture(vtkTexture* tex);
216  virtual void SetMaterialTexture(vtkTexture* tex);
217  virtual void SetAnisotropyTexture(vtkTexture* tex);
218  virtual void SetNormalTexture(vtkTexture* tex);
219  virtual void SetCoatNormalTexture(vtkTexture* tex);
220  virtual void SetEmissiveTexture(vtkTexture* tex);
221  virtual void SetNormalScale(double val);
222  virtual void SetOcclusionStrength(double val);
223  virtual void SetEmissiveFactor(double rval, double gval, double bval);
224  virtual void SetShowTexturesOnBackface(bool);
225 
226  //***************************************************************************
227  // Forwarded to Actor.
228  virtual void SetOrientation(double, double, double);
229  virtual void SetOrigin(double, double, double);
230  virtual void SetPickable(int val);
231  virtual void SetPosition(double, double, double);
232  virtual void SetScale(double, double, double);
233  virtual void SetTexture(vtkTexture*);
234  virtual void SetUserTransform(const double[16]);
235  PARAVIEW_DEPRECATED_IN_5_13_0("Use SetTextureTransform instead")
236  virtual void SetFlipTextures(bool);
237  virtual void SetCoordinateSystem(int);
238 
239  //***************************************************************************
240  // Forwarded to all textures
241  virtual void SetTextureTransform(vtkTransform*);
242  vtkGetObjectMacro(TextureTransform, vtkTransform);
243  virtual void SetRepeatTextures(bool);
244  vtkGetMacro(RepeatTextures, bool);
245  virtual void SetInterpolateTextures(bool);
246  vtkGetMacro(InterpolateTextures, bool);
247  virtual void SetUseMipmapTextures(bool);
248  vtkGetMacro(UseMipmapTextures, bool);
249 
250  //***************************************************************************
251  // Forwarded to Mapper and LODMapper.
252  virtual void SetInterpolateScalarsBeforeMapping(int val);
253  virtual void SetLookupTable(vtkScalarsToColors* val);
254  virtual void SetColorMissingArraysWithNanColor(bool val);
255  virtual void SetSeamlessU(bool);
256  virtual void SetSeamlessV(bool);
258 
265  virtual void SetMapScalars(int val);
266  virtual void SetStatic(int val);
268 
272  virtual void SetSelection(vtkSelection* selection);
273 
277  vtkPVLODActor* GetActor() { return this->GetRenderedProp(); }
278 
280 
286  vtkSetStringMacro(ActiveAssembly);
287  vtkGetStringMacro(ActiveAssembly);
289 
291 
294  void AddBlockSelector(const char* selector);
295  void RemoveAllBlockSelectors();
297 
299 
302  void SetBlockColor(const char* selector, double r, double g, double b);
303  void RemoveAllBlockColors();
305 
307 
310  void SetBlockOpacity(const char* selector, double opacity);
311  void RemoveAllBlockOpacities();
313 
315 
318  void SetBlockInterpolateScalarsBeforeMapping(const char* selector, bool interpolate);
319  void RemoveAllBlockInterpolateScalarsBeforeMappings();
321 
323 
328  void SetBlockMapScalars(const char* selector, int val);
329  void RemoveAllBlockMapScalars();
331 
333 
336  void SetBlockArrayName(const char* selector, int assoc, const char* arrayName);
337  void RemoveAllBlockArrayNames();
339 
341 
347  void SetBlockLookupTable(vtkScalarsToColors* lut);
348  void RemoveAllBlockLookupTables();
350 
354  const char* GetColorArrayName();
355 
363  static bool GetBounds(
364  vtkDataObject* dataObject, double bounds[6], vtkCompositeDataDisplayAttributes* cdAttributes);
365 
367 
371  virtual void SetEnableScaling(int v);
372  virtual void SetScalingArrayName(const char*);
373  virtual void SetScalingFunction(vtkPiecewiseFunction* pwf);
375 
379  virtual void SetMaterial(const char*);
380 
382 
388  vtkSetMacro(UseDataPartitions, bool);
389  vtkGetMacro(UseDataPartitions, bool);
391 
393 
396  virtual void SetUseShaderReplacements(bool);
397  vtkGetMacro(UseShaderReplacements, bool);
399 
405  virtual void SetShaderReplacements(const char*);
406 
411  void SetArrayIdNames(const char* pointArray, const char* cellArray) override;
412 
414 
426  void SetPlaceHolderDataType(int datatype);
427  vtkGetMacro(PlaceHolderDataType, int);
429 
430 protected:
432  ~vtkGeometryRepresentation() override;
433 
440  virtual void SetupDefaults();
441 
445  int FillInputPortInformation(int port, vtkInformation* info) override;
446 
457  int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
458 
462  int RequestUpdateExtent(vtkInformation* request, vtkInformationVector** inputVector,
463  vtkInformationVector* outputVector) override;
464 
470  bool AddToView(vtkView* view) override;
471 
477  bool RemoveFromView(vtkView* view) override;
478 
482  virtual void UpdateColoringParameters();
483 
487  virtual vtkPVLODActor* GetRenderedProp() { return this->Actor; }
488 
489  // Progress Callback
490  void HandleGeometryRepresentationProgress(vtkObject* caller, unsigned long, void*);
491 
499  void PopulateBlockAttributes(vtkCompositeDataDisplayAttributes* attrs, vtkDataObject* outputData);
500 
505  void ComputeVisibleDataBounds();
506 
510  void UpdateShaderReplacements();
511 
518  virtual bool NeedsOrderedCompositing();
519 
523  virtual void SetPointArrayToProcess(int p, const char* val);
524 
528  void UpdateGeneralTextureTransform();
529 
534 
539 
540  char* ActiveAssembly = nullptr;
545  double Ambient;
546  double Specular;
547  double Diffuse;
551  double VisibleDataBounds[6];
552 
554 
556 
558 
561 
562  bool BlockAttrChanged = false;
564  bool UpdateBlockAttrLOD = false;
565 
566  // This is used to be able to create the correct placeHolder in RequestData for the client
567  int PlaceHolderDataType = VTK_PARTITIONED_DATA_SET_COLLECTION;
568 
569  // These block variables are similar to the ones in vtkCompositeDataDisplayAttributes
570  // Some of them are exposed and some others are not because, as of now, they are not needed.
571 
573 
576  std::vector<std::string> BlockSelectors;
577  std::vector<std::pair<std::string, vtkVector3d>> BlockColors;
578  std::vector<std::pair<std::string, double>> BlockOpacities;
579  std::vector<std::pair<std::string, bool>> BlockInterpolateScalarsBeforeMapping;
580  std::vector<std::pair<std::string, int>> BlockColorModes;
581  std::vector<std::pair<std::string, std::pair<int /*assoc*/, std::string>>> BlockArrayNames;
582  std::vector<vtkScalarsToColors*> BlockLookupTables;
585 
588  std::vector<std::pair<std::string, bool>> BlockScalarVisibilities;
589  std::vector<std::pair<std::string, bool>> BlockUseLookupTableScalarRanges;
590  std::vector<std::pair<vtkDataObject*, vtkIdType>> BlockFieldDataTupleIds;
592 private:
593  bool DisableLighting = false;
595  void operator=(const vtkGeometryRepresentation&) = delete;
596 };
597 
598 #endif
vtkGeometryRepresentation_detail::DecimationFilterType * Decimator
std::vector< std::pair< vtkDataObject *, vtkIdType > > BlockFieldDataTupleIds
Configured internally in vtkGeometryRepresentation.
virtual vtkPVLODActor * GetRenderedProp()
Used in ConvertSelection to locate the prop used for actual rendering.
std::vector< std::pair< std::string, vtkVector3d > > BlockColors
Configurable through vtkGeometryRepresentation API.
#define VTKREMOTINGVIEWS_EXPORT
vtkPVDataRepresentation adds some ParaView specific API to data representations.
#define VTK_SURFACE
info
Geometry filter that does outlines for volumes.
std::vector< std::pair< std::string, double > > BlockOpacities
Configurable through vtkGeometryRepresentation API.
representation for showing any datasets as external shell of polygons.
#define PARAVIEW_DEPRECATED_IN_5_13_0(reason)
vtkPVGeometryFilter * LODOutlineFilter
std::vector< std::pair< std::string, std::pair< int, std::string > > > BlockArrayNames
Configurable through vtkGeometryRepresentation API.
std::vector< std::pair< std::string, int > > BlockColorModes
Configurable through vtkGeometryRepresentation API.
#define VTK_POINTS
std::vector< std::pair< std::string, bool > > BlockInterpolateScalarsBeforeMapping
Configurable through vtkGeometryRepresentation API.
std::vector< vtkScalarsToColors * > BlockLookupTables
Configurable through vtkGeometryRepresentation API.
std::vector< std::pair< std::string, bool > > BlockScalarVisibilities
Configured internally in vtkGeometryRepresentation.
an actor that supports multiple levels of detail
Definition: vtkPVLODActor.h:25
std::vector< std::string > BlockSelectors
Configurable through vtkGeometryRepresentation API.
std::vector< std::pair< std::string, bool > > BlockUseLookupTableScalarRanges
Configured internally in vtkGeometryRepresentation.
port
#define VTK_WIREFRAME
virtual void SetSuppressLOD(bool suppress)
Enable/Disable LOD;.