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
154#ifndef vtkVolumeProperty_h
155#define vtkVolumeProperty_h
156
157#include "vtkImplicitFunction.h" // For vtkImplicitFunction
158#include "vtkNew.h" // Needed for vtkNew
159#include "vtkObject.h"
160#include "vtkRenderingCoreModule.h" // For export macro
161#include "vtkSmartPointer.h" // Needed for vtkSmartPointer
162
163// STL includes
164#include <set> // For labelmap labels set
165#include <unordered_map> // For labelmap transfer function maps
166
168class vtkContourValues;
169class vtkImageData;
171class vtkTimeStamp;
172
173class VTKRENDERINGCORE_EXPORT vtkVolumeProperty : public vtkObject
174{
175public:
178 void PrintSelf(ostream& os, vtkIndent indent) override;
180
186
188
209 vtkSetClampMacro(IndependentComponents, vtkTypeBool, 0, 1);
210 vtkGetMacro(IndependentComponents, vtkTypeBool);
211 vtkBooleanMacro(IndependentComponents, vtkTypeBool);
213
215
219 vtkSetClampMacro(InterpolationType, int, VTK_NEAREST_INTERPOLATION, VTK_LINEAR_INTERPOLATION);
220 vtkGetMacro(InterpolationType, int);
221 void SetInterpolationTypeToNearest() { this->SetInterpolationType(VTK_NEAREST_INTERPOLATION); }
222 void SetInterpolationTypeToLinear() { this->SetInterpolationType(VTK_LINEAR_INTERPOLATION); }
223 const char* GetInterpolationTypeAsString(void);
225
227
231 virtual void SetComponentWeight(int index, double value);
232 virtual double GetComponentWeight(int index);
234
240 void SetColor(int index, vtkPiecewiseFunction* function);
241 void SetColor(vtkPiecewiseFunction* function) { this->SetColor(0, function); }
242
249 void SetColor(int index, vtkColorTransferFunction* function);
250 void SetColor(vtkColorTransferFunction* function) { this->SetColor(0, function); }
251
256 int GetColorChannels(int index);
257 int GetColorChannels() { return this->GetColorChannels(0); }
258
266
274
279 void SetScalarOpacity(int index, vtkPiecewiseFunction* function);
280 void SetScalarOpacity(vtkPiecewiseFunction* function) { this->SetScalarOpacity(0, function); }
281
289
291
297 void SetScalarOpacityUnitDistance(int index, double distance);
298 void SetScalarOpacityUnitDistance(double distance)
299 {
300 this->SetScalarOpacityUnitDistance(0, distance);
301 }
305
310 void SetGradientOpacity(int index, vtkPiecewiseFunction* function);
311 void SetGradientOpacity(vtkPiecewiseFunction* function) { this->SetGradientOpacity(0, function); }
312
314
320 void SetTransferFunction2D(int index, vtkImageData* function);
321 void SetTransferFunction2D(vtkImageData* function) { this->SetTransferFunction2D(0, function); };
322
325
334 {
335 TF_1D = 0,
336 TF_2D
337 };
338
339 vtkSetClampMacro(TransferFunctionMode, int, 0, 1);
340 vtkGetMacro(TransferFunctionMode, int);
342
353
355
362 virtual void SetDisableGradientOpacity(int index, int value);
363 virtual void SetDisableGradientOpacity(int value) { this->SetDisableGradientOpacity(0, value); }
364 virtual void DisableGradientOpacityOn(int index) { this->SetDisableGradientOpacity(index, 1); }
366 virtual void DisableGradientOpacityOff(int index) { this->SetDisableGradientOpacity(index, 0); }
368 virtual int GetDisableGradientOpacity(int index);
369 virtual int GetDisableGradientOpacity() { return this->GetDisableGradientOpacity(0); }
373
380 bool HasGradientOpacity(int index = 0)
381 {
382 switch (this->TransferFunctionMode)
383 {
384 case TF_1D:
385 return (this->GradientOpacity[index] != nullptr);
386 case TF_2D:
387 return true;
388 }
389 return false;
390 }
391
392 /*
393 * Check whether or not we have label map gradient opacity functions.
394 */
395 bool HasLabelGradientOpacity() { return !this->LabelGradientOpacity.empty(); }
396
398
418 void SetShade(int index, int value);
419 void SetShade(int value) { this->SetShade(0, value); }
420 int GetShade(int index);
421 int GetShade() { return this->GetShade(0); }
422 void ShadeOn(int index);
423 void ShadeOn() { this->ShadeOn(0); }
424 void ShadeOff(int index);
425 void ShadeOff() { this->ShadeOff(0); }
427
429
432 void SetAmbient(int index, double value);
433 void SetAmbient(double value) { this->SetAmbient(0, value); }
434 double GetAmbient(int index);
435 double GetAmbient() { return this->GetAmbient(0); }
437
439
442 void SetDiffuse(int index, double value);
443 void SetDiffuse(double value) { this->SetDiffuse(0, value); }
444 double GetDiffuse(int index);
445 double GetDiffuse() { return this->GetDiffuse(0); }
447
449
452 void SetSpecular(int index, double value);
453 void SetSpecular(double value) { this->SetSpecular(0, value); }
454 double GetSpecular(int index);
455 double GetSpecular() { return this->GetSpecular(0); }
457
459
462 void SetSpecularPower(int index, double value);
463 void SetSpecularPower(double value) { this->SetSpecularPower(0, value); }
464 double GetSpecularPower(int index);
465 double GetSpecularPower() { return this->GetSpecularPower(0); }
467
473
475
482
491
498
505
512
519
521
530 vtkSetMacro(UseClippedVoxelIntensity, int);
531 vtkGetMacro(UseClippedVoxelIntensity, int);
532 vtkBooleanMacro(UseClippedVoxelIntensity, int);
534
536
545 vtkSetMacro(ClippedVoxelIntensity, double);
546 vtkGetMacro(ClippedVoxelIntensity, double);
548
550
553 void SetLabelColor(int label, vtkColorTransferFunction* function);
556
558
561 void SetLabelScalarOpacity(int label, vtkPiecewiseFunction* function);
564
566
572
577 vtkGetMacro(LabelColorMTime, vtkTimeStamp);
578
583 vtkGetMacro(LabelScalarOpacityMTime, vtkTimeStamp);
584
589 vtkGetMacro(LabelGradientOpacityMTime, vtkTimeStamp);
590
595 std::size_t GetNumberOfLabels();
596
601 std::set<int> GetLabelMapLabels();
602
603protected:
606
613
614 virtual void CreateDefaultGradientOpacity(int index);
615
617 double ComponentWeight[VTK_MAX_VRCOMP];
618
620
621 int ColorChannels[VTK_MAX_VRCOMP];
622
623 vtkPiecewiseFunction* GrayTransferFunction[VTK_MAX_VRCOMP];
624 vtkTimeStamp GrayTransferFunctionMTime[VTK_MAX_VRCOMP];
625
627 vtkTimeStamp RGBTransferFunctionMTime[VTK_MAX_VRCOMP];
628
630 vtkTimeStamp ScalarOpacityMTime[VTK_MAX_VRCOMP];
631 double ScalarOpacityUnitDistance[VTK_MAX_VRCOMP];
632
634 vtkTimeStamp GradientOpacityMTime[VTK_MAX_VRCOMP];
635
636 vtkPiecewiseFunction* DefaultGradientOpacity[VTK_MAX_VRCOMP];
637 int DisableGradientOpacity[VTK_MAX_VRCOMP];
638
640 vtkImageData* TransferFunction2D[VTK_MAX_VRCOMP];
641 vtkTimeStamp TransferFunction2DMTime[VTK_MAX_VRCOMP];
642
646
647 int Shade[VTK_MAX_VRCOMP];
648 double Ambient[VTK_MAX_VRCOMP];
649 double Diffuse[VTK_MAX_VRCOMP];
650 double Specular[VTK_MAX_VRCOMP];
651 double SpecularPower[VTK_MAX_VRCOMP];
652
655
660
665
669 std::unordered_map<int, vtkColorTransferFunction*> LabelColor;
670 std::unordered_map<int, vtkPiecewiseFunction*> LabelScalarOpacity;
671 std::unordered_map<int, vtkPiecewiseFunction*> LabelGradientOpacity;
672 std::set<int> LabelMapLabels;
673
674private:
675 vtkVolumeProperty(const vtkVolumeProperty&) = delete;
676 void operator=(const vtkVolumeProperty&) = delete;
677};
678
683{
685 {
686 return "Nearest Neighbor";
687 }
689 {
690 return "Linear";
691 }
692 return "Unknown";
693}
694
695#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
Allocate and hold a VTK object.
Definition: vtkNew.h:165
abstract base class for most VTK objects
Definition: vtkObject.h:82
Defines a 1D piecewise function.
Hold a reference to a vtkObjectBase instance.
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.
void SetAmbient(int index, double value)
Set/Get the ambient lighting coefficient.
vtkMTimeType GetMTime() override
Get the modified time for this object (or the properties registered with this object).
double GetAmbient(int index)
Set/Get the ambient lighting coefficient.
virtual double GetComponentWeight(int index)
Set/Get the scalar component weights.
vtkPiecewiseFunction * GetLabelGradientOpacity(int label)
Set/Get the gradient opacity function for a label in the label map.
vtkTimeStamp LabelGradientOpacityMTime
vtkImageData * GetTransferFunction2D(int index)
Color-opacity transfer function mode.
vtkPiecewiseFunction * GetStoredGradientOpacity()
Enable/Disable the gradient opacity function for the given component.
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.
vtkImageData * GetTransferFunction2D()
Color-opacity transfer function mode.
std::size_t GetNumberOfLabels()
Get the number of labels that are provided with transfer functions using either SetLabelColor,...
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.
vtkPiecewiseFunction * GetGrayTransferFunction()
void SetColor(vtkPiecewiseFunction *function)
vtkTimeStamp GetGrayTransferFunctionMTime(int index)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get the time that the GrayTransferFunction wa...
vtkTimeStamp LabelColorMTime
double GetSpecular()
Set/Get the specular lighting coefficient.
vtkGetSmartPointerMacro(SliceFunction, vtkImplicitFunction)
Get/Set the function used for slicing.
vtkContourValues * GetIsoSurfaceValues()
Get contour values for isosurface blending mode.
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.
vtkPiecewiseFunction * GetStoredGradientOpacity(int index)
Enable/Disable the gradient opacity function for the given component.
vtkColorTransferFunction * GetRGBTransferFunction()
void SetTransferFunction2D(int index, vtkImageData *function)
Set/Get a 2D transfer function.
vtkTimeStamp GetScalarOpacityMTime()
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.
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.
vtkPiecewiseFunction * GetScalarOpacity()
std::unordered_map< int, vtkPiecewiseFunction * > LabelScalarOpacity
vtkPiecewiseFunction * GetScalarOpacity(int index)
Get the scalar opacity transfer function for the given component.
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.
vtkPiecewiseFunction * GetGradientOpacity()
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.
std::set< int > GetLabelMapLabels()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get access to the internal set that keeps tra...
int GetShade()
Set/Get the shading of a volume.
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.
const char * GetInterpolationTypeAsString(void)
Return the interpolation type as a descriptive character string.
vtkPiecewiseFunction * GetLabelScalarOpacity(int label)
Set/Get the opacity transfer function for a label in the label map.
virtual void DisableGradientOpacityOn()
Enable/Disable the gradient opacity function for the given component.
void DeepCopy(vtkVolumeProperty *p)
TransferMode
Color-opacity transfer function mode.
vtkTimeStamp GetRGBTransferFunctionMTime(int index)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Get the time that the RGBTransferFunction was...
static vtkVolumeProperty * New()
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.
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 * GetLabelColor(int label)
Set/Get the color transfer function for a label in the label map.
vtkPiecewiseFunction * GetGrayTransferFunction(int index)
Get the gray transfer function.
void SetInterpolationTypeToLinear()
Set the interpolation type for sampling a volume.
std::unordered_map< int, vtkPiecewiseFunction * > LabelGradientOpacity
vtkColorTransferFunction * GetRGBTransferFunction(int index)
Get the RGB transfer function for the given component.
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.
vtkPiecewiseFunction * GetGradientOpacity(int index)
Get the gradient magnitude opacity transfer function for the given component.
vtkTimeStamp LabelScalarOpacityMTime
double GetSpecular(int index)
Set/Get the specular lighting coefficient.
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_MAX_VRCOMP
#define VTK_NEAREST_INTERPOLATION
#define VTK_LINEAR_INTERPOLATION
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287