VTK  9.1.0
vtkVolume.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkVolume.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=========================================================================*/
40#ifndef vtkVolume_h
41#define vtkVolume_h
42
43#include "vtkProp3D.h"
44#include "vtkRenderingCoreModule.h" // For export macro
45
46class vtkRenderer;
49class vtkWindow;
52
53class VTKRENDERINGCORE_EXPORT vtkVolume : public vtkProp3D
54{
55public:
56 vtkTypeMacro(vtkVolume, vtkProp3D);
57 void PrintSelf(ostream& os, vtkIndent indent) override;
58
64 static vtkVolume* New();
65
67
71 vtkGetObjectMacro(Mapper, vtkAbstractVolumeMapper);
73
75
78 virtual void SetProperty(vtkVolumeProperty* property);
81
87 void GetVolumes(vtkPropCollection* vc) override;
88
92 void Update();
93
95
99 double* GetBounds() VTK_SIZEHINT(6) override;
100 void GetBounds(double bounds[6]) { this->vtkProp3D::GetBounds(bounds); }
101 double GetMinXBound();
102 double GetMaxXBound();
103 double GetMinYBound();
104 double GetMaxYBound();
105 double GetMinZBound();
106 double GetMaxZBound();
108
113
121
125 void ShallowCopy(vtkProp* prop) override;
126
135 int RenderVolumetricGeometry(vtkViewport* viewport) override;
136
144
151
157 float* GetScalarOpacityArray() { return this->GetScalarOpacityArray(0); }
158
165
170 float* GetGrayArray(int);
171 float* GetGrayArray() { return this->GetGrayArray(0); }
172
177 float* GetRGBArray(int);
178 float* GetRGBArray() { return this->GetRGBArray(0); }
179
186
191 float GetArraySize() { return static_cast<float>(this->ArraySize); }
192
198
203 void UpdateScalarOpacityforSampleSize(vtkRenderer* ren, float sample_distance);
204
212 bool GetSupportsSelection() override { return true; }
213
214protected:
216 ~vtkVolume() override;
217
220
221 // The rgb transfer function array - for unsigned char data this
222 // is 256 elements, for short or unsigned short it is 65536 elements
223 // This is a sample at each scalar value of the rgb transfer
224 // function. A time stamp is kept to know when it needs rebuilding
225 float* RGBArray[VTK_MAX_VRCOMP];
227
228 // The gray transfer function array - for unsigned char data this
229 // is 256 elements, for short or unsigned short it is 65536 elements
230 // This is a sample at each scalar value of the gray transfer
231 // function. A time stamp is kept to know when it needs rebuilding
232 float* GrayArray[VTK_MAX_VRCOMP];
234
235 // The scalar opacity transfer function array - for unsigned char data this
236 // is 256 elements, for short or unsigned short it is 65536 elements
237 // This is a sample at each scalar value of the opacity transfer
238 // function. A time stamp is kept to know when it needs rebuilding
239 float* ScalarOpacityArray[VTK_MAX_VRCOMP];
240 vtkTimeStamp ScalarOpacityArrayMTime[VTK_MAX_VRCOMP];
241
242 // The corrected scalar opacity transfer function array - this is identical
243 // to the opacity transfer function array when the step size is 1.
244 // In other cases, it is corrected to reflect the new material thickness
245 // modelled by a step size different than 1.
246 float* CorrectedScalarOpacityArray[VTK_MAX_VRCOMP];
247 vtkTimeStamp CorrectedScalarOpacityArrayMTime[VTK_MAX_VRCOMP];
248
249 // CorrectedStepSize is the step size currently modelled by
250 // CorrectedArray. It is used to determine when the
251 // CorrectedArray needs to be updated to match SampleDistance
252 // in the volume mapper.
254
255 // Number of elements in the rgb, gray, and opacity transfer function arrays
257
258 // The magnitude of gradient opacity transfer function array
259 float GradientOpacityArray[VTK_MAX_VRCOMP][256];
260 float GradientOpacityConstant[VTK_MAX_VRCOMP];
261 vtkTimeStamp GradientOpacityArrayMTime[VTK_MAX_VRCOMP];
262
263 // Function to compute screen coverage of this volume
265
266private:
267 vtkVolume(const vtkVolume&) = delete;
268 void operator=(const vtkVolume&) = delete;
269};
270
271#endif
Abstract class for a volume mapper.
a simple class to control print indentation
Definition: vtkIndent.h:43
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:53
double * GetBounds() override=0
Return a reference to the Prop3D's composite transform.
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:57
abstract specification for renderers
Definition: vtkRenderer.h:73
record modification and/or execution time
Definition: vtkTimeStamp.h:42
abstract specification for Viewports
Definition: vtkViewport.h:56
an ordered list of volumes
represents the common properties for rendering a volume.
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:54
void UpdateTransferFunctions(vtkRenderer *ren)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
vtkMTimeType GetRedrawMTime() override
Return the mtime of anything that would cause the rendered image to appear differently.
double GetMaxZBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
double ComputeScreenCoverage(vtkViewport *vp)
bool GetSupportsSelection() override
Used by vtkHardwareSelector to determine if the prop supports hardware selection.
Definition: vtkVolume.h:212
double GetMaxXBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
virtual void SetProperty(vtkVolumeProperty *property)
Set/Get the volume property.
float GetGradientOpacityConstant()
Definition: vtkVolume.h:185
~vtkVolume() override
float * GetGrayArray(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
void GetVolumes(vtkPropCollection *vc) override
For some exporters and other other operations we must be able to collect all the actors or volumes.
vtkAbstractVolumeMapper * Mapper
Definition: vtkVolume.h:218
static vtkVolume * New()
Creates a Volume with the following defaults: origin(0,0,0) position=(0,0,0) scale=1 visibility=1 pic...
float CorrectedStepSize
Definition: vtkVolume.h:253
void UpdateScalarOpacityforSampleSize(vtkRenderer *ren, float sample_distance)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
float GetGradientOpacityConstant(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
vtkMTimeType GetMTime() override
Return the MTime also considering the property etc.
void ShallowCopy(vtkProp *prop) override
Shallow copy of this vtkVolume.
void SetMapper(vtkAbstractVolumeMapper *mapper)
Set/Get the volume mapper.
float * GetScalarOpacityArray()
Definition: vtkVolume.h:157
float * GetRGBArray()
Definition: vtkVolume.h:178
float * GetCorrectedScalarOpacityArray()
Definition: vtkVolume.h:150
double GetMinYBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
float * GetGradientOpacityArray()
Definition: vtkVolume.h:164
int ArraySize
Definition: vtkVolume.h:256
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
float * GetGradientOpacityArray(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
double GetMinXBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
float * GetCorrectedScalarOpacityArray(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
int RenderVolumetricGeometry(vtkViewport *viewport) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
float * GetScalarOpacityArray(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
vtkVolumeProperty * Property
Definition: vtkVolume.h:219
virtual vtkVolumeProperty * GetProperty()
Set/Get the volume property.
float * GetGrayArray()
Definition: vtkVolume.h:171
void Update()
Update the volume rendering pipeline by updating the volume mapper.
double GetMinZBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
float * GetRGBArray(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
double * GetBounds() override
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
float GetArraySize()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkVolume.h:191
double GetMaxYBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:45
void GetBounds(T a, double bds[6])
#define VTK_MAX_VRCOMP
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
#define VTK_SIZEHINT(...)