VTK  9.1.0
vtkVolumeProperty.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkVolumeProperty.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 =========================================================================*/
15 
144 #ifndef vtkVolumeProperty_h
145 #define vtkVolumeProperty_h
146 
147 #include "vtkImplicitFunction.h" // For vtkImplicitFunction
148 #include "vtkNew.h" // Needed for vtkNew
149 #include "vtkObject.h"
150 #include "vtkRenderingCoreModule.h" // For export macro
151 #include "vtkSmartPointer.h" // Needed for vtkSmartPointer
152 
153 // STL includes
154 #include <set> // For labelmap labels set
155 #include <unordered_map> // For labelmap transfer function maps
156 
158 class vtkContourValues;
159 class vtkImageData;
161 class vtkTimeStamp;
162 
163 class VTKRENDERINGCORE_EXPORT vtkVolumeProperty : public vtkObject
164 {
165 public:
167  vtkTypeMacro(vtkVolumeProperty, vtkObject);
168  void PrintSelf(ostream& os, vtkIndent indent) override;
170 
175  vtkMTimeType GetMTime() override;
176 
178 
199  vtkSetClampMacro(IndependentComponents, vtkTypeBool, 0, 1);
200  vtkGetMacro(IndependentComponents, vtkTypeBool);
201  vtkBooleanMacro(IndependentComponents, vtkTypeBool);
203 
205 
209  vtkSetClampMacro(InterpolationType, int, VTK_NEAREST_INTERPOLATION, VTK_LINEAR_INTERPOLATION);
210  vtkGetMacro(InterpolationType, int);
211  void SetInterpolationTypeToNearest() { this->SetInterpolationType(VTK_NEAREST_INTERPOLATION); }
212  void SetInterpolationTypeToLinear() { this->SetInterpolationType(VTK_LINEAR_INTERPOLATION); }
213  const char* GetInterpolationTypeAsString(void);
215 
217 
221  virtual void SetComponentWeight(int index, double value);
222  virtual double GetComponentWeight(int index);
224 
230  void SetColor(int index, vtkPiecewiseFunction* function);
231  void SetColor(vtkPiecewiseFunction* function) { this->SetColor(0, function); }
232 
240  void SetColor(vtkColorTransferFunction* function) { this->SetColor(0, function); }
241 
247  int GetColorChannels() { return this->GetColorChannels(0); }
248 
256 
264 
270  void SetScalarOpacity(vtkPiecewiseFunction* function) { this->SetScalarOpacity(0, function); }
271 
279 
281 
287  void SetScalarOpacityUnitDistance(int index, double distance);
288  void SetScalarOpacityUnitDistance(double distance)
289  {
290  this->SetScalarOpacityUnitDistance(0, distance);
291  }
295 
301  void SetGradientOpacity(vtkPiecewiseFunction* function) { this->SetGradientOpacity(0, function); }
302 
304 
311  void SetTransferFunction2D(vtkImageData* function) { this->SetTransferFunction2D(0, function); };
312 
315 
324  {
325  TF_1D = 0,
326  TF_2D
327  };
328 
329  vtkSetClampMacro(TransferFunctionMode, int, 0, 1);
330  vtkGetMacro(TransferFunctionMode, int);
332 
343 
345 
352  virtual void SetDisableGradientOpacity(int index, int value);
353  virtual void SetDisableGradientOpacity(int value) { this->SetDisableGradientOpacity(0, value); }
354  virtual void DisableGradientOpacityOn(int index) { this->SetDisableGradientOpacity(index, 1); }
356  virtual void DisableGradientOpacityOff(int index) { this->SetDisableGradientOpacity(index, 0); }
359  virtual int GetDisableGradientOpacity() { return this->GetDisableGradientOpacity(0); }
363 
370  bool HasGradientOpacity(int index = 0)
371  {
372  switch (this->TransferFunctionMode)
373  {
374  case TF_1D:
375  return (this->GradientOpacity[index] != nullptr);
376  case TF_2D:
377  return true;
378  }
379  return false;
380  }
381 
382  /*
383  * Check whether or not we have label map gradient opacity functions.
384  */
385  bool HasLabelGradientOpacity() { return !this->LabelGradientOpacity.empty(); }
386 
388 
408  void SetShade(int index, int value);
409  void SetShade(int value) { this->SetShade(0, value); }
410  int GetShade(int index);
411  int GetShade() { return this->GetShade(0); }
412  void ShadeOn(int index);
413  void ShadeOn() { this->ShadeOn(0); }
414  void ShadeOff(int index);
415  void ShadeOff() { this->ShadeOff(0); }
417 
419 
422  void SetAmbient(int index, double value);
423  void SetAmbient(double value) { this->SetAmbient(0, value); }
424  double GetAmbient(int index);
425  double GetAmbient() { return this->GetAmbient(0); }
427 
429 
432  void SetDiffuse(int index, double value);
433  void SetDiffuse(double value) { this->SetDiffuse(0, value); }
434  double GetDiffuse(int index);
435  double GetDiffuse() { return this->GetDiffuse(0); }
437 
439 
442  void SetSpecular(int index, double value);
443  void SetSpecular(double value) { this->SetSpecular(0, value); }
444  double GetSpecular(int index);
445  double GetSpecular() { return this->GetSpecular(0); }
447 
449 
452  void SetSpecularPower(int index, double value);
453  void SetSpecularPower(double value) { this->SetSpecularPower(0, value); }
454  double GetSpecularPower(int index);
455  double GetSpecularPower() { return this->GetSpecularPower(0); }
457 
463 
465 
472 
480  void UpdateMTimes();
481 
488 
495 
502 
509 
511 
520  vtkSetMacro(UseClippedVoxelIntensity, int);
521  vtkGetMacro(UseClippedVoxelIntensity, int);
522  vtkBooleanMacro(UseClippedVoxelIntensity, int);
524 
526 
535  vtkSetMacro(ClippedVoxelIntensity, double);
536  vtkGetMacro(ClippedVoxelIntensity, double);
538 
540 
543  void SetLabelColor(int label, vtkColorTransferFunction* function);
546 
548 
551  void SetLabelScalarOpacity(int label, vtkPiecewiseFunction* function);
554 
556 
559  void SetLabelGradientOpacity(int label, vtkPiecewiseFunction* function);
562 
567  vtkGetMacro(LabelColorMTime, vtkTimeStamp);
568 
573  vtkGetMacro(LabelScalarOpacityMTime, vtkTimeStamp);
574 
579  vtkGetMacro(LabelGradientOpacityMTime, vtkTimeStamp);
580 
585  std::size_t GetNumberOfLabels();
586 
591  std::set<int> GetLabelMapLabels();
592 
593 protected:
595  ~vtkVolumeProperty() override;
596 
603 
605 
607  double ComponentWeight[VTK_MAX_VRCOMP];
608 
610 
611  int ColorChannels[VTK_MAX_VRCOMP];
612 
613  vtkPiecewiseFunction* GrayTransferFunction[VTK_MAX_VRCOMP];
614  vtkTimeStamp GrayTransferFunctionMTime[VTK_MAX_VRCOMP];
615 
617  vtkTimeStamp RGBTransferFunctionMTime[VTK_MAX_VRCOMP];
618 
620  vtkTimeStamp ScalarOpacityMTime[VTK_MAX_VRCOMP];
621  double ScalarOpacityUnitDistance[VTK_MAX_VRCOMP];
622 
624  vtkTimeStamp GradientOpacityMTime[VTK_MAX_VRCOMP];
625 
626  vtkPiecewiseFunction* DefaultGradientOpacity[VTK_MAX_VRCOMP];
627  int DisableGradientOpacity[VTK_MAX_VRCOMP];
628 
630  vtkImageData* TransferFunction2D[VTK_MAX_VRCOMP];
631  vtkTimeStamp TransferFunction2DMTime[VTK_MAX_VRCOMP];
632 
636 
637  int Shade[VTK_MAX_VRCOMP];
638  double Ambient[VTK_MAX_VRCOMP];
639  double Diffuse[VTK_MAX_VRCOMP];
640  double Specular[VTK_MAX_VRCOMP];
641  double SpecularPower[VTK_MAX_VRCOMP];
642 
645 
650 
655 
659  std::unordered_map<int, vtkColorTransferFunction*> LabelColor;
660  std::unordered_map<int, vtkPiecewiseFunction*> LabelScalarOpacity;
661  std::unordered_map<int, vtkPiecewiseFunction*> LabelGradientOpacity;
662  std::set<int> LabelMapLabels;
663 
664 private:
665  vtkVolumeProperty(const vtkVolumeProperty&) = delete;
666  void operator=(const vtkVolumeProperty&) = delete;
667 };
668 
673 {
675  {
676  return "Nearest Neighbor";
677  }
679  {
680  return "Linear";
681  }
682  return "Unknown";
683 }
684 
685 #endif
Defines a transfer function for mapping a property to an RGB color value.
helper object to manage setting and generating contour values
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
abstract interface for implicit functions
a simple class to control print indentation
Definition: vtkIndent.h:113
abstract base class for most VTK objects
Definition: vtkObject.h:73
Defines a 1D piecewise function.
record modification and/or execution time
Definition: vtkTimeStamp.h:52
represents the common properties for rendering a volume.
void SetSpecular(int index, double value)
Set/Get the specular lighting coefficient.
void SetDiffuse(double value)
Set/Get the diffuse lighting coefficient.
vtkPiecewiseFunction * GetGrayTransferFunction(int index)
Get the gray transfer function.
void SetAmbient(int index, double value)
Set/Get the ambient lighting coefficient.
std::set< int > GetLabelMapLabels()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get access to the internal set that keeps tra...
vtkMTimeType GetMTime() override
Get the modified time for this object (or the properties registered with this object).
vtkContourValues * GetIsoSurfaceValues()
Get contour values for isosurface blending mode.
double GetAmbient(int index)
Set/Get the ambient lighting coefficient.
virtual double GetComponentWeight(int index)
Set/Get the scalar component weights.
vtkTimeStamp LabelGradientOpacityMTime
vtkTimeStamp GetRGBTransferFunctionMTime()
void SetShade(int index, int value)
Set/Get the shading of a volume.
void ShadeOn()
Set/Get the shading of a volume.
void SetScalarOpacityUnitDistance(double distance)
Set/Get the unit distance on which the scalar opacity transfer function is defined.
void SetLabelScalarOpacity(int label, vtkPiecewiseFunction *function)
Set/Get the opacity transfer function for a label in the label map.
std::size_t GetNumberOfLabels()
Get the number of labels that are provided with transfer functions using either SetLabelColor,...
static vtkVolumeProperty * New()
virtual int GetDisableGradientOpacity(int index)
Enable/Disable the gradient opacity function for the given component.
void SetTransferFunction2D(vtkImageData *function)
Color-opacity transfer function mode.
void SetSpecular(double value)
Set/Get the specular lighting coefficient.
vtkColorTransferFunction * GetLabelColor(int label)
Set/Get the color transfer function for a label in the label map.
void SetColor(vtkPiecewiseFunction *function)
vtkTimeStamp GetGrayTransferFunctionMTime(int index)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get the time that the GrayTransferFunction wa...
vtkPiecewiseFunction * GetStoredGradientOpacity(int index)
Enable/Disable the gradient opacity function for the given component.
vtkTimeStamp LabelColorMTime
double GetSpecular()
Set/Get the specular lighting coefficient.
vtkGetSmartPointerMacro(SliceFunction, vtkImplicitFunction)
Get/Set the function used for slicing.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSmartPointer< vtkImplicitFunction > SliceFunction
Function used for slice.
double GetSpecularPower(int index)
Set/Get the specular power.
vtkImageData * GetTransferFunction2D(int index)
Color-opacity transfer function mode.
void SetTransferFunction2D(int index, vtkImageData *function)
Set/Get a 2D transfer function.
vtkColorTransferFunction * GetRGBTransferFunction(int index)
Get the RGB transfer function for the given component.
vtkTimeStamp GetScalarOpacityMTime()
vtkPiecewiseFunction * GetStoredGradientOpacity()
Enable/Disable the gradient opacity function for the given component.
void SetGradientOpacity(int index, vtkPiecewiseFunction *function)
Set the opacity of a volume to an opacity transfer function based on gradient magnitude for the given...
double GetSpecularPower()
Set/Get the specular power.
virtual void DisableGradientOpacityOn(int index)
Enable/Disable the gradient opacity function for the given component.
void SetSpecularPower(double value)
Set/Get the specular power.
double GetScalarOpacityUnitDistance()
Set/Get the unit distance on which the scalar opacity transfer function is defined.
vtkPiecewiseFunction * GetLabelGradientOpacity(int label)
Set/Get the gradient opacity function for a label in the label map.
virtual void DisableGradientOpacityOff(int index)
Enable/Disable the gradient opacity function for the given component.
void ShadeOn(int index)
Set/Get the shading of a volume.
void ShadeOff(int index)
Set/Get the shading of a volume.
void SetShade(int value)
Set/Get the shading of a volume.
void SetScalarOpacityUnitDistance(int index, double distance)
Set/Get the unit distance on which the scalar opacity transfer function is defined.
std::unordered_map< int, vtkPiecewiseFunction * > LabelScalarOpacity
virtual void SetComponentWeight(int index, double value)
Set/Get the scalar component weights.
double GetDiffuse()
Set/Get the diffuse lighting coefficient.
virtual void SetDisableGradientOpacity(int index, int value)
Enable/Disable the gradient opacity function for the given component.
vtkTypeBool IndependentComponents
void SetAmbient(double value)
Set/Get the ambient lighting coefficient.
vtkTimeStamp GetGrayTransferFunctionMTime()
std::set< int > LabelMapLabels
virtual void DisableGradientOpacityOff()
Enable/Disable the gradient opacity function for the given component.
virtual void SetDisableGradientOpacity(int value)
Enable/Disable the gradient opacity function for the given component.
void SetLabelColor(int label, vtkColorTransferFunction *function)
Set/Get the color transfer function for a label in the label map.
int GetShade()
Set/Get the shading of a volume.
vtkPiecewiseFunction * GetScalarOpacity()
void UpdateMTimes()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE UpdateMTimes performs a Modified() on all Tim...
void SetInterpolationTypeToNearest()
Set the interpolation type for sampling a volume.
int GetColorChannels(int index)
Get the number of color channels in the transfer function for the given component.
vtkImageData * GetTransferFunction2D()
Color-opacity transfer function mode.
const char * GetInterpolationTypeAsString(void)
Return the interpolation type as a descriptive character string.
virtual void DisableGradientOpacityOn()
Enable/Disable the gradient opacity function for the given component.
void DeepCopy(vtkVolumeProperty *p)
TransferMode
Color-opacity transfer function mode.
vtkPiecewiseFunction * GetGradientOpacity(int index)
Get the gradient magnitude opacity transfer function for the given component.
vtkTimeStamp GetRGBTransferFunctionMTime(int index)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get the time that the RGBTransferFunction was...
void SetLabelGradientOpacity(int label, vtkPiecewiseFunction *function)
Set/Get the gradient opacity function for a label in the label map.
bool HasGradientOpacity(int index=0)
Check whether or not we have the gradient opacity.
void SetSpecularPower(int index, double value)
Set/Get the specular power.
vtkTimeStamp GetTransferFunction2DMTime(int index)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get the time when the TransferFunction2D was ...
void SetScalarOpacity(int index, vtkPiecewiseFunction *function)
Set the opacity of a volume to an opacity transfer function based on scalar value for the component i...
int GetShade(int index)
Set/Get the shading of a volume.
void SetColor(int index, vtkColorTransferFunction *function)
Set the color of a volume to an RGB transfer function for the component indicated by index.
vtkNew< vtkContourValues > IsoSurfaceValues
Contour values for isosurface blend mode.
vtkPiecewiseFunction * GetScalarOpacity(int index)
Get the scalar opacity transfer function for the given component.
std::unordered_map< int, vtkColorTransferFunction * > LabelColor
Label map transfer functions.
void ShadeOff()
Set/Get the shading of a volume.
vtkTimeStamp GetTransferFunction2DMTime()
void SetColor(int index, vtkPiecewiseFunction *function)
Set the color of a volume to a gray level transfer function for the component indicated by index.
vtkColorTransferFunction * GetRGBTransferFunction()
void SetInterpolationTypeToLinear()
Set the interpolation type for sampling a volume.
vtkPiecewiseFunction * GetLabelScalarOpacity(int label)
Set/Get the opacity transfer function for a label in the label map.
std::unordered_map< int, vtkPiecewiseFunction * > LabelGradientOpacity
vtkPiecewiseFunction * GetGrayTransferFunction()
double GetAmbient()
Set/Get the ambient lighting coefficient.
void SetGradientOpacity(vtkPiecewiseFunction *function)
vtkSetSmartPointerMacro(SliceFunction, vtkImplicitFunction)
Get/Set the function used for slicing.
void SetScalarOpacity(vtkPiecewiseFunction *function)
double GetDiffuse(int index)
Set/Get the diffuse lighting coefficient.
virtual int GetDisableGradientOpacity()
Enable/Disable the gradient opacity function for the given component.
void SetColor(vtkColorTransferFunction *function)
~vtkVolumeProperty() override
double GetScalarOpacityUnitDistance(int index)
Set/Get the unit distance on which the scalar opacity transfer function is defined.
vtkTimeStamp GetGradientOpacityMTime(int index)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get the time that the gradient opacity transf...
virtual void CreateDefaultGradientOpacity(int index)
vtkTimeStamp GetScalarOpacityMTime(int index)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get the time that the scalar opacity transfer...
vtkTimeStamp GetGradientOpacityMTime()
void SetDiffuse(int index, double value)
Set/Get the diffuse lighting coefficient.
vtkTimeStamp LabelScalarOpacityMTime
vtkPiecewiseFunction * GetGradientOpacity()
double GetSpecular(int index)
Set/Get the specular lighting coefficient.
@ value
Definition: vtkX3D.h:226
@ index
Definition: vtkX3D.h:252
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_MAX_VRCOMP
#define VTK_NEAREST_INTERPOLATION
#define VTK_LINEAR_INTERPOLATION
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287