VTK  9.6.1
vtkVolume.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
24
25#ifndef vtkVolume_h
26#define vtkVolume_h
27
28#include "vtkProp3D.h"
29#include "vtkRenderingCoreModule.h" // For export macro
30#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
31
32VTK_ABI_NAMESPACE_BEGIN
33class vtkRenderer;
36class vtkWindow;
39
40class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkVolume : public vtkProp3D
41{
42public:
43 vtkTypeMacro(vtkVolume, vtkProp3D);
44 void PrintSelf(ostream& os, vtkIndent indent) override;
45
51 static vtkVolume* New();
52
54
58 vtkGetObjectMacro(Mapper, vtkAbstractVolumeMapper);
60
62
65 virtual void SetProperty(vtkVolumeProperty* property);
68
74 void GetVolumes(vtkPropCollection* vc) override;
75
79 void Update();
80
82
86 double* GetBounds() VTK_SIZEHINT(6) override;
87 void GetBounds(double bounds[6]) { this->vtkProp3D::GetBounds(bounds); }
88 double GetMinXBound();
89 double GetMaxXBound();
90 double GetMinYBound();
91 double GetMaxYBound();
92 double GetMinZBound();
93 double GetMaxZBound();
95
100
108
112 void ShallowCopy(vtkProp* prop) override;
113
122 int RenderVolumetricGeometry(vtkViewport* viewport) override;
123
131
138
144 float* GetScalarOpacityArray() { return this->GetScalarOpacityArray(0); }
145
152
157 float* GetGrayArray(int);
158 float* GetGrayArray() { return this->GetGrayArray(0); }
159
164 float* GetRGBArray(int);
165 float* GetRGBArray() { return this->GetRGBArray(0); }
166
173
178 float GetArraySize() { return static_cast<float>(this->ArraySize); }
179
185
190 void UpdateScalarOpacityforSampleSize(vtkRenderer* ren, float sample_distance);
191
199 bool GetSupportsSelection() override { return true; }
200
201protected:
203 ~vtkVolume() override;
204
207
208 // The rgb transfer function array - for unsigned char data this
209 // is 256 elements, for short or unsigned short it is 65536 elements
210 // This is a sample at each scalar value of the rgb transfer
211 // function. A time stamp is kept to know when it needs rebuilding
214
215 // The gray transfer function array - for unsigned char data this
216 // is 256 elements, for short or unsigned short it is 65536 elements
217 // This is a sample at each scalar value of the gray transfer
218 // function. A time stamp is kept to know when it needs rebuilding
221
222 // The scalar opacity transfer function array - for unsigned char data this
223 // is 256 elements, for short or unsigned short it is 65536 elements
224 // This is a sample at each scalar value of the opacity transfer
225 // function. A time stamp is kept to know when it needs rebuilding
228
229 // The corrected scalar opacity transfer function array - this is identical
230 // to the opacity transfer function array when the step size is 1.
231 // In other cases, it is corrected to reflect the new material thickness
232 // modelled by a step size different than 1.
235
236 // CorrectedStepSize is the step size currently modelled by
237 // CorrectedArray. It is used to determine when the
238 // CorrectedArray needs to be updated to match SampleDistance
239 // in the volume mapper.
241
242 // Number of elements in the rgb, gray, and opacity transfer function arrays
244
245 // The magnitude of gradient opacity transfer function array
249
250 // Function to compute screen coverage of this volume
252
253private:
254 vtkVolume(const vtkVolume&) = delete;
255 void operator=(const vtkVolume&) = delete;
256};
257
258VTK_ABI_NAMESPACE_END
259#endif
Abstract class for a volume mapper.
a simple class to control print indentation
Definition vtkIndent.h:29
double * GetBounds() override=0
Return a reference to the Prop3D's composite transform.
an ordered list of Props
abstract specification for renderers
Definition vtkRenderer.h:64
record modification and/or execution time
abstract specification for Viewports
Definition vtkViewport.h:47
an ordered list of volumes
represents the common properties for rendering a volume.
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.
float * GrayArray[VTK_MAX_VRCOMP]
Definition vtkVolume.h:219
double ComputeScreenCoverage(vtkViewport *vp)
bool GetSupportsSelection() override
Used by vtkHardwareSelector to determine if the prop supports hardware selection.
Definition vtkVolume.h:199
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:172
float GradientOpacityArray[VTK_MAX_VRCOMP][256]
Definition vtkVolume.h:246
vtkTimeStamp RGBArrayMTime[VTK_MAX_VRCOMP]
Definition vtkVolume.h:213
~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:205
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:240
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:144
float * GetRGBArray()
Definition vtkVolume.h:165
float * GetCorrectedScalarOpacityArray()
Definition vtkVolume.h:137
double GetMinYBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
float * CorrectedScalarOpacityArray[VTK_MAX_VRCOMP]
Definition vtkVolume.h:233
float * GetGradientOpacityArray()
Definition vtkVolume.h:151
int ArraySize
Definition vtkVolume.h:243
vtkTimeStamp ScalarOpacityArrayMTime[VTK_MAX_VRCOMP]
Definition vtkVolume.h:227
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:206
virtual vtkVolumeProperty * GetProperty()
Set/Get the volume property.
float * GetGrayArray()
Definition vtkVolume.h:158
vtkTimeStamp GradientOpacityArrayMTime[VTK_MAX_VRCOMP]
Definition vtkVolume.h:248
vtkTimeStamp GrayArrayMTime[VTK_MAX_VRCOMP]
Definition vtkVolume.h:220
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...
float GradientOpacityConstant[VTK_MAX_VRCOMP]
Definition vtkVolume.h:247
double * GetBounds() override
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
vtkTimeStamp CorrectedScalarOpacityArrayMTime[VTK_MAX_VRCOMP]
Definition vtkVolume.h:234
float GetArraySize()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition vtkVolume.h:178
double GetMaxYBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
float * ScalarOpacityArray[VTK_MAX_VRCOMP]
Definition vtkVolume.h:226
float * RGBArray[VTK_MAX_VRCOMP]
Definition vtkVolume.h:212
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:29
#define VTK_MAX_VRCOMP
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:323
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO