VTK  9.2.6
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 =========================================================================*/
126 #ifndef vtkVolume_h
127 #define vtkVolume_h
128 
129 #include "vtkProp3D.h"
130 #include "vtkRenderingCoreModule.h" // For export macro
131 
132 class vtkRenderer;
133 class vtkPropCollection;
134 class vtkVolumeCollection;
135 class vtkWindow;
136 class vtkVolumeProperty;
138 
139 class VTKRENDERINGCORE_EXPORT vtkVolume : public vtkProp3D
140 {
141 public:
142  vtkTypeMacro(vtkVolume, vtkProp3D);
143  void PrintSelf(ostream& os, vtkIndent indent) override;
144 
150  static vtkVolume* New();
151 
153 
157  vtkGetObjectMacro(Mapper, vtkAbstractVolumeMapper);
159 
161 
164  virtual void SetProperty(vtkVolumeProperty* property);
167 
173  void GetVolumes(vtkPropCollection* vc) override;
174 
178  void Update();
179 
181 
185  double* GetBounds() VTK_SIZEHINT(6) override;
186  void GetBounds(double bounds[6]) { this->vtkProp3D::GetBounds(bounds); }
187  double GetMinXBound();
188  double GetMaxXBound();
189  double GetMinYBound();
190  double GetMaxYBound();
191  double GetMinZBound();
192  double GetMaxZBound();
194 
198  vtkMTimeType GetMTime() override;
199 
207 
211  void ShallowCopy(vtkProp* prop) override;
212 
221  int RenderVolumetricGeometry(vtkViewport* viewport) override;
222 
230 
237 
243  float* GetScalarOpacityArray() { return this->GetScalarOpacityArray(0); }
244 
250  float* GetGradientOpacityArray() { return this->GetGradientOpacityArray(0); }
251 
256  float* GetGrayArray(int);
257  float* GetGrayArray() { return this->GetGrayArray(0); }
258 
263  float* GetRGBArray(int);
264  float* GetRGBArray() { return this->GetRGBArray(0); }
265 
272 
277  float GetArraySize() { return static_cast<float>(this->ArraySize); }
278 
284 
289  void UpdateScalarOpacityforSampleSize(vtkRenderer* ren, float sample_distance);
290 
298  bool GetSupportsSelection() override { return true; }
299 
300 protected:
302  ~vtkVolume() override;
303 
306 
307  // The rgb transfer function array - for unsigned char data this
308  // is 256 elements, for short or unsigned short it is 65536 elements
309  // This is a sample at each scalar value of the rgb transfer
310  // function. A time stamp is kept to know when it needs rebuilding
311  float* RGBArray[VTK_MAX_VRCOMP];
312  vtkTimeStamp RGBArrayMTime[VTK_MAX_VRCOMP];
313 
314  // The gray transfer function array - for unsigned char data this
315  // is 256 elements, for short or unsigned short it is 65536 elements
316  // This is a sample at each scalar value of the gray transfer
317  // function. A time stamp is kept to know when it needs rebuilding
318  float* GrayArray[VTK_MAX_VRCOMP];
319  vtkTimeStamp GrayArrayMTime[VTK_MAX_VRCOMP];
320 
321  // The scalar opacity transfer function array - for unsigned char data this
322  // is 256 elements, for short or unsigned short it is 65536 elements
323  // This is a sample at each scalar value of the opacity transfer
324  // function. A time stamp is kept to know when it needs rebuilding
325  float* ScalarOpacityArray[VTK_MAX_VRCOMP];
326  vtkTimeStamp ScalarOpacityArrayMTime[VTK_MAX_VRCOMP];
327 
328  // The corrected scalar opacity transfer function array - this is identical
329  // to the opacity transfer function array when the step size is 1.
330  // In other cases, it is corrected to reflect the new material thickness
331  // modelled by a step size different than 1.
332  float* CorrectedScalarOpacityArray[VTK_MAX_VRCOMP];
333  vtkTimeStamp CorrectedScalarOpacityArrayMTime[VTK_MAX_VRCOMP];
334 
335  // CorrectedStepSize is the step size currently modelled by
336  // CorrectedArray. It is used to determine when the
337  // CorrectedArray needs to be updated to match SampleDistance
338  // in the volume mapper.
340 
341  // Number of elements in the rgb, gray, and opacity transfer function arrays
343 
344  // The magnitude of gradient opacity transfer function array
345  float GradientOpacityArray[VTK_MAX_VRCOMP][256];
346  float GradientOpacityConstant[VTK_MAX_VRCOMP];
347  vtkTimeStamp GradientOpacityArrayMTime[VTK_MAX_VRCOMP];
348 
349  // Function to compute screen coverage of this volume
351 
352 private:
353  vtkVolume(const vtkVolume&) = delete;
354  void operator=(const vtkVolume&) = delete;
355 };
356 
357 #endif
Abstract class for a volume mapper.
a simple class to control print indentation
Definition: vtkIndent.h:119
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:99
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:76
abstract specification for renderers
Definition: vtkRenderer.h:182
record modification and/or execution time
Definition: vtkTimeStamp.h:55
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:140
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.
static vtkVolume * New()
Creates a Volume with the following defaults: origin(0,0,0) position=(0,0,0) scale=1 visibility=1 pic...
double ComputeScreenCoverage(vtkViewport *vp)
bool GetSupportsSelection() override
Used by vtkHardwareSelector to determine if the prop supports hardware selection.
Definition: vtkVolume.h:298
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 * GetGrayArray()
Definition: vtkVolume.h:257
float GetGradientOpacityConstant()
Definition: vtkVolume.h:271
~vtkVolume() override
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:304
float CorrectedStepSize
Definition: vtkVolume.h:339
float * GetCorrectedScalarOpacityArray(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
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.
double GetMinYBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
int ArraySize
Definition: vtkVolume.h:342
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
float * GetRGBArray(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
float * GetRGBArray()
Definition: vtkVolume.h:264
double GetMinXBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
float * GetGradientOpacityArray(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...
vtkVolumeProperty * Property
Definition: vtkVolume.h:305
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 * GetGradientOpacityArray()
Definition: vtkVolume.h:250
float * GetScalarOpacityArray(int)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
virtual vtkVolumeProperty * GetProperty()
Set/Get the volume property.
float * GetScalarOpacityArray()
Definition: vtkVolume.h:243
float GetArraySize()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkVolume.h:277
float * GetGrayArray(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.
double GetMaxYBound()
Get the bounds - either all six at once (xmin, xmax, ymin, ymax, zmin, zmax) or one at a time.
float * GetCorrectedScalarOpacityArray()
Definition: vtkVolume.h:236
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:39
void GetBounds(T a, double bds[6])
#define VTK_MAX_VRCOMP
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
#define VTK_SIZEHINT(...)