VTK  9.2.5
vtkSmartVolumeMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSmartVolumeMapper.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 =========================================================================*/
95 #ifndef vtkSmartVolumeMapper_h
96 #define vtkSmartVolumeMapper_h
97 
98 #include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
99 #include "vtkRenderingVolumeOpenGL2Module.h" // For export macro
100 #include "vtkVolumeMapper.h"
101 
104 class vtkImageResample;
107 class vtkRenderWindow;
108 class vtkVolume;
109 class vtkVolumeProperty;
110 class vtkImageMagnitude;
111 
112 class VTKRENDERINGVOLUMEOPENGL2_EXPORT vtkSmartVolumeMapper : public vtkVolumeMapper
113 {
114 public:
117  void PrintSelf(ostream& os, vtkIndent indent) override;
118 
120 
130  vtkSetMacro(FinalColorWindow, float);
132 
134 
137  vtkGetMacro(FinalColorWindow, float);
139 
141 
148  vtkSetMacro(FinalColorLevel, float);
150 
152 
155  vtkGetMacro(FinalColorLevel, float);
157 
158  // The possible values for the default and current render mode ivars
159  enum
160  {
161  DefaultRenderMode = 0,
162  RayCastRenderMode = 1,
163  GPURenderMode = 2,
164  OSPRayRenderMode = 3,
165  UndefinedRenderMode = 4,
166  InvalidRenderMode = 5
167  };
168 
174 
181 
188 
195 
201 
203 
206  vtkGetMacro(RequestedRenderMode, int);
208 
214 
216 
223  vtkSetMacro(MaxMemoryInBytes, vtkIdType);
224  vtkGetMacro(MaxMemoryInBytes, vtkIdType);
226 
228 
234  vtkSetClampMacro(MaxMemoryFraction, float, 0.1f, 1.0f);
235  vtkGetMacro(MaxMemoryFraction, float);
237 
239 
243  vtkSetClampMacro(InterpolationMode, int, VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC);
244  vtkGetMacro(InterpolationMode, int);
249 
255  void CreateCanonicalView(vtkRenderer* ren, vtkVolume* volume, vtkVolume* volume2,
256  vtkImageData* image, int blend_mode, double viewDirection[3], double viewUp[3]);
257 
259 
265  vtkSetClampMacro(InteractiveUpdateRate, double, 1.0e-10, 1.0e10);
267 
269 
274  vtkGetMacro(InteractiveUpdateRate, double);
276 
278 
286  vtkSetClampMacro(InteractiveAdjustSampleDistances, vtkTypeBool, 0, 1);
287  vtkGetMacro(InteractiveAdjustSampleDistances, vtkTypeBool);
288  vtkBooleanMacro(InteractiveAdjustSampleDistances, vtkTypeBool);
290 
292 
301  vtkSetClampMacro(AutoAdjustSampleDistances, vtkTypeBool, 0, 1);
302  vtkGetMacro(AutoAdjustSampleDistances, vtkTypeBool);
303  vtkBooleanMacro(AutoAdjustSampleDistances, vtkTypeBool);
305 
307 
314  vtkSetMacro(SampleDistance, float);
315  vtkGetMacro(SampleDistance, float);
317 
319 
325  vtkSetClampMacro(GlobalIlluminationReach, float, 0.0f, 1.0f);
326  vtkGetMacro(GlobalIlluminationReach, float);
328 
330 
336  vtkSetClampMacro(VolumetricScatteringBlending, float, 0.0f, 2.0f);
337  vtkGetMacro(VolumetricScatteringBlending, float);
339 
344  void Render(vtkRenderer*, vtkVolume*) override;
345 
353 
355 
363  {
364  DISABLED = -1,
365  MAGNITUDE = 0,
366  COMPONENT = 1,
367  };
368 
369  void SetVectorMode(int mode);
370  vtkGetMacro(VectorMode, int);
371 
372  vtkSetClampMacro(VectorComponent, int, 0, 3);
373  vtkGetMacro(VectorComponent, int);
375 
377 
380  vtkSetStringMacro(Transfer2DYAxisArray);
381  vtkGetStringMacro(Transfer2DYAxisArray);
383 
384 protected:
387 
394 
401 
403 
409 
411 
417 
422 
424 
432 
434 
443 
449 
451 
463 
468  void Initialize(vtkRenderer* ren, vtkVolume* vol);
469 
475 
480  vtkGetObjectMacro(GPUMapper, vtkGPUVolumeRayCastMapper);
481 
483 
490 
497 
502 
506  float GlobalIlluminationReach = 0.0;
507 
511  float VolumetricScatteringBlending = 0.0;
512 
518 
525 
534 
536 
547 
549 
556 
563 
564 private:
566 
570  void SetupVectorMode(vtkVolume* vol);
576  void ComputeMagnitudeCellData(vtkDataSet* input, vtkDataArray* arr);
577  void ComputeMagnitudePointData(vtkDataSet* input, vtkDataArray* arr);
579 
581  void operator=(const vtkSmartVolumeMapper&) = delete;
582 
583  vtkOSPRayVolumeInterface* OSPRayMapper;
584 };
585 
586 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:165
abstract class to specify dataset behavior
Definition: vtkDataSet.h:172
Ray casting performed on the GPU.
topologically and geometrically regular array of data
Definition: vtkImageData.h:163
Resamples an image to be larger or smaller.
a simple class to control print indentation
Definition: vtkIndent.h:119
Mapper to render volumes defined as vtkMultiBlockDataSet.
Removes link dependence on optional ospray module.
create a window for renderers to draw into
abstract specification for renderers
Definition: vtkRenderer.h:182
Adaptive volume mapper.
float MaxMemoryFraction
GPU mapper-specific memory ivars.
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
vtkTypeBool AutoAdjustSampleDistances
Set whether or not the sample distance should be automatically calculated within the internal volume ...
int Initialized
Initialization variables.
int VectorMode
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int RequestedRenderMode
The requested render mode is used to compute the current render mode.
int GetLastUsedRenderMode()
This will return the render mode used during the previous call to Render().
vtkImageResample * GPUResampleFilter
This is the resample filter that may be used if we need to create a low resolution version of the vol...
vtkFixedPointVolumeRayCastMapper * RayCastMapper
The three potential mappers.
vtkImageData * InputDataMagnitude
This filter is used to compute the magnitude of 3-component data.
float SampleDistance
The distance between sample points along the ray.
vtkDataSet * LastInput
Keep a cache of the last input to the mapper so that input data changes can be propagated to the resa...
vtkIdType MaxMemoryInBytes
GPU mapper-specific memory ivars.
void SetVectorMode(int mode)
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
void Initialize(vtkRenderer *ren, vtkVolume *vol)
The initialize method.
int InitializedBlendMode
We need to keep track of the blend mode we had when we initialized because we need to reinitialize (a...
void SetInterpolationModeToLinear()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
void ConnectFilterInput(vtkImageResample *f)
Connect input of the vtkSmartVolumeMapper to the input of the internal resample filter by doing a sha...
void SetRequestedRenderModeToOSPRay()
Set the requested render mode to vtkSmartVolumeMapper::OSPRayRenderMode.
void CreateCanonicalView(vtkRenderer *ren, vtkVolume *volume, vtkVolume *volume2, vtkImageData *image, int blend_mode, double viewDirection[3], double viewUp[3])
This method can be used to render a representative view of the input data into the supplied image giv...
int CurrentRenderMode
The requested render mode is used to compute the current render mode.
~vtkSmartVolumeMapper() override
vtkDataSet * LastFilterInput
Keep a cache of the last input to the mapper so that input data changes can be propagated to the resa...
void SetInterpolationModeToNearestNeighbor()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
void SetRequestedRenderMode(int mode)
Set the requested render mode.
float FinalColorLevel
Window / level ivars.
double InteractiveUpdateRate
If the DesiredUpdateRate of the vtkRenderWindow causing the Render is at or above this value,...
void ConnectMapperInput(vtkVolumeMapper *m)
Connect input of the vtkSmartVolumeMapper to the input of the internal volume mapper by doing a shall...
int VectorComponent
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
vtkTypeBool InteractiveAdjustSampleDistances
If the InteractiveAdjustSampleDistances flag is enabled, vtkSmartVolumeMapper interactively sets and ...
int InterpolationMode
Used for downsampling.
vtkTimeStamp SupportStatusCheckTime
Initialization variables.
void SetRequestedRenderModeToRayCast()
Set the requested render mode to vtkSmartVolumeMapper::RayCastRenderMode.
vtkGPUVolumeRayCastMapper * GPUMapper
The three potential mappers.
void SetRequestedRenderModeToGPU()
Set the requested render mode to vtkSmartVolumeMapper::GPURenderMode.
vtkGPUVolumeRayCastMapper * GPULowResMapper
The three potential mappers.
float FinalColorWindow
Window / level ivars.
vtkTimeStamp MagnitudeUploadTime
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
int GPUSupported
Initialization variables.
static vtkSmartVolumeMapper * New()
void SetRequestedRenderModeToDefault()
Set the requested render mode to vtkSmartVolumeMapper::DefaultRenderMode.
vtkImageMagnitude * ImageMagnitude
This filter is used to compute the magnitude of 3-component data.
int RayCastSupported
Initialization variables.
void ComputeRenderMode(vtkRenderer *ren, vtkVolume *vol)
The method that computes the render mode from the requested render mode based on the support status f...
void Render(vtkRenderer *, vtkVolume *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Initialize rendering for this volume.
char * Transfer2DYAxisArray
Define the array used for the Y axis of transfer 2D.
void SetInterpolationModeToCubic()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
int LowResGPUNecessary
Initialization variables.
VectorModeType
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
record modification and/or execution time
Definition: vtkTimeStamp.h:55
Abstract class for a volume mapper.
represents the common properties for rendering a volume.
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:140
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
@ mode
Definition: vtkX3D.h:253
@ image
Definition: vtkX3D.h:380
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_RESLICE_CUBIC
#define VTK_RESLICE_NEAREST
int vtkIdType
Definition: vtkType.h:332