VTK  9.1.0
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 =========================================================================*/
92 #ifndef vtkSmartVolumeMapper_h
93 #define vtkSmartVolumeMapper_h
94 
95 #include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
96 #include "vtkRenderingVolumeOpenGL2Module.h" // For export macro
97 #include "vtkVolumeMapper.h"
98 
101 class vtkImageResample;
104 class vtkRenderWindow;
105 class vtkVolume;
106 class vtkVolumeProperty;
107 class vtkImageMagnitude;
108 
109 class VTKRENDERINGVOLUMEOPENGL2_EXPORT vtkSmartVolumeMapper : public vtkVolumeMapper
110 {
111 public:
114  void PrintSelf(ostream& os, vtkIndent indent) override;
115 
117 
127  vtkSetMacro(FinalColorWindow, float);
129 
131 
134  vtkGetMacro(FinalColorWindow, float);
136 
138 
145  vtkSetMacro(FinalColorLevel, float);
147 
149 
152  vtkGetMacro(FinalColorLevel, float);
154 
155  // The possible values for the default and current render mode ivars
156  enum
157  {
158  DefaultRenderMode = 0,
159  RayCastRenderMode = 1,
160  GPURenderMode = 2,
161  OSPRayRenderMode = 3,
162  UndefinedRenderMode = 4,
163  InvalidRenderMode = 5
164  };
165 
171 
178 
185 
192 
198 
200 
203  vtkGetMacro(RequestedRenderMode, int);
205 
211 
213 
220  vtkSetMacro(MaxMemoryInBytes, vtkIdType);
221  vtkGetMacro(MaxMemoryInBytes, vtkIdType);
223 
225 
231  vtkSetClampMacro(MaxMemoryFraction, float, 0.1f, 1.0f);
232  vtkGetMacro(MaxMemoryFraction, float);
234 
236 
240  vtkSetClampMacro(InterpolationMode, int, VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC);
241  vtkGetMacro(InterpolationMode, int);
246 
252  void CreateCanonicalView(vtkRenderer* ren, vtkVolume* volume, vtkVolume* volume2,
253  vtkImageData* image, int blend_mode, double viewDirection[3], double viewUp[3]);
254 
256 
262  vtkSetClampMacro(InteractiveUpdateRate, double, 1.0e-10, 1.0e10);
264 
266 
271  vtkGetMacro(InteractiveUpdateRate, double);
273 
275 
283  vtkSetClampMacro(InteractiveAdjustSampleDistances, vtkTypeBool, 0, 1);
284  vtkGetMacro(InteractiveAdjustSampleDistances, vtkTypeBool);
285  vtkBooleanMacro(InteractiveAdjustSampleDistances, vtkTypeBool);
287 
289 
298  vtkSetClampMacro(AutoAdjustSampleDistances, vtkTypeBool, 0, 1);
299  vtkGetMacro(AutoAdjustSampleDistances, vtkTypeBool);
300  vtkBooleanMacro(AutoAdjustSampleDistances, vtkTypeBool);
302 
304 
311  vtkSetMacro(SampleDistance, float);
312  vtkGetMacro(SampleDistance, float);
314 
319  void Render(vtkRenderer*, vtkVolume*) override;
320 
328 
330 
338  {
339  DISABLED = -1,
340  MAGNITUDE = 0,
341  COMPONENT = 1,
342  };
343 
344  void SetVectorMode(int mode);
345  vtkGetMacro(VectorMode, int);
346 
347  vtkSetClampMacro(VectorComponent, int, 0, 3);
348  vtkGetMacro(VectorComponent, int);
350 
352 
355  vtkSetStringMacro(Transfer2DYAxisArray);
356  vtkGetStringMacro(Transfer2DYAxisArray);
358 
359 protected:
362 
369 
376 
378 
384 
386 
392 
397 
399 
407 
409 
418 
424 
426 
438 
443  void Initialize(vtkRenderer* ren, vtkVolume* vol);
444 
450 
455  vtkGetObjectMacro(GPUMapper, vtkGPUVolumeRayCastMapper);
456 
458 
465 
472 
477 
483 
490 
499 
501 
512 
514 
521 
528 
529 private:
531 
535  void SetupVectorMode(vtkVolume* vol);
541  void ComputeMagnitudeCellData(vtkDataSet* input, vtkDataArray* arr);
542  void ComputeMagnitudePointData(vtkDataSet* input, vtkDataArray* arr);
544 
546  void operator=(const vtkSmartVolumeMapper&) = delete;
547 
548  vtkOSPRayVolumeInterface* OSPRayMapper;
549 };
550 
551 #endif
vtkSmartVolumeMapper::Transfer2DYAxisArray
char * Transfer2DYAxisArray
Define the array used for the Y axis of transfer 2D.
Definition: vtkSmartVolumeMapper.h:527
vtkVolumeMapper
Abstract class for a volume mapper.
Definition: vtkVolumeMapper.h:45
vtkSmartVolumeMapper::SetRequestedRenderMode
void SetRequestedRenderMode(int mode)
Set the requested render mode.
vtkImageReslice.h
vtkSmartVolumeMapper::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSmartVolumeMapper::VectorComponent
int VectorComponent
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
Definition: vtkSmartVolumeMapper.h:509
vtkSmartVolumeMapper::SetRequestedRenderModeToOSPRay
void SetRequestedRenderModeToOSPRay()
Set the requested render mode to vtkSmartVolumeMapper::OSPRayRenderMode.
vtkSmartVolumeMapper::SetVectorMode
void SetVectorMode(int mode)
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
vtkSmartVolumeMapper::FinalColorLevel
float FinalColorLevel
Window / level ivars.
Definition: vtkSmartVolumeMapper.h:382
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:134
vtkSmartVolumeMapper::~vtkSmartVolumeMapper
~vtkSmartVolumeMapper() override
vtkSmartVolumeMapper::SupportStatusCheckTime
vtkTimeStamp SupportStatusCheckTime
Initialization variables.
Definition: vtkSmartVolumeMapper.h:413
vtkSmartVolumeMapper::SetInterpolationModeToLinear
void SetInterpolationModeToLinear()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
vtkIdType
int vtkIdType
Definition: vtkType.h:332
vtkSmartVolumeMapper::ConnectFilterInput
void ConnectFilterInput(vtkImageResample *f)
Connect input of the vtkSmartVolumeMapper to the input of the internal resample filter by doing a sha...
vtkFixedPointVolumeRayCastMapper
A fixed point mapper for volumes.
Definition: vtkFixedPointVolumeRayCastMapper.h:154
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:52
vtkX3D::image
@ image
Definition: vtkX3D.h:380
vtkSmartVolumeMapper::InteractiveUpdateRate
double InteractiveUpdateRate
If the DesiredUpdateRate of the vtkRenderWindow causing the Render is at or above this value,...
Definition: vtkSmartVolumeMapper.h:489
vtkSmartVolumeMapper::GPUSupported
int GPUSupported
Initialization variables.
Definition: vtkSmartVolumeMapper.h:414
vtkSmartVolumeMapper::vtkSmartVolumeMapper
vtkSmartVolumeMapper()
vtkSmartVolumeMapper::SetInterpolationModeToNearestNeighbor
void SetInterpolationModeToNearestNeighbor()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
vtkSmartVolumeMapper::RayCastSupported
int RayCastSupported
Initialization variables.
Definition: vtkSmartVolumeMapper.h:415
vtkSmartVolumeMapper::Render
void Render(vtkRenderer *, vtkVolume *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Initialize rendering for this volume.
vtkMultiBlockVolumeMapper
Mapper to render volumes defined as vtkMultiBlockDataSet.
Definition: vtkMultiBlockVolumeMapper.h:51
vtkSmartVolumeMapper::CurrentRenderMode
int CurrentRenderMode
The requested render mode is used to compute the current render mode.
Definition: vtkSmartVolumeMapper.h:405
vtkImageMagnitude
Definition: vtkImageMagnitude.h:29
vtkSmartVolumeMapper::New
static vtkSmartVolumeMapper * New()
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:159
vtkSmartVolumeMapper::MaxMemoryFraction
float MaxMemoryFraction
GPU mapper-specific memory ivars.
Definition: vtkSmartVolumeMapper.h:390
vtkSmartVolumeMapper::CreateCanonicalView
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...
vtkSmartVolumeMapper::SetRequestedRenderModeToRayCast
void SetRequestedRenderModeToRayCast()
Set the requested render mode to vtkSmartVolumeMapper::RayCastRenderMode.
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
vtkSmartVolumeMapper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
vtkSmartVolumeMapper::AutoAdjustSampleDistances
vtkTypeBool AutoAdjustSampleDistances
Set whether or not the sample distance should be automatically calculated within the internal volume ...
Definition: vtkSmartVolumeMapper.h:482
vtkSmartVolumeMapper::LastInput
vtkDataSet * LastInput
Keep a cache of the last input to the mapper so that input data changes can be propogated to the resa...
Definition: vtkSmartVolumeMapper.h:518
vtkSmartVolumeMapper::GPULowResMapper
vtkGPUVolumeRayCastMapper * GPULowResMapper
The three potential mappers.
Definition: vtkSmartVolumeMapper.h:455
vtkSmartVolumeMapper::LastFilterInput
vtkDataSet * LastFilterInput
Keep a cache of the last input to the mapper so that input data changes can be propogated to the resa...
Definition: vtkSmartVolumeMapper.h:519
vtkSmartVolumeMapper::VectorMode
int VectorMode
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
Definition: vtkSmartVolumeMapper.h:508
vtkSmartVolumeMapper::InterpolationMode
int InterpolationMode
Used for downsampling.
Definition: vtkSmartVolumeMapper.h:396
vtkImageResample
Resamples an image to be larger or smaller.
Definition: vtkImageResample.h:51
vtkSmartVolumeMapper::VectorModeType
VectorModeType
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
Definition: vtkSmartVolumeMapper.h:338
VTK_RESLICE_CUBIC
#define VTK_RESLICE_CUBIC
Definition: vtkImageReslice.h:100
vtkVolumeMapper.h
vtkSmartVolumeMapper::ComputeRenderMode
void ComputeRenderMode(vtkRenderer *ren, vtkVolume *vol)
The method that computes the render mode from the requested render mode based on the support status f...
vtkSmartVolumeMapper::InputDataMagnitude
vtkImageData * InputDataMagnitude
This filter is used to compute the magnitude of 3-component data.
Definition: vtkSmartVolumeMapper.h:436
vtkSmartVolumeMapper::Initialized
int Initialized
Initialization variables.
Definition: vtkSmartVolumeMapper.h:412
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkSmartVolumeMapper
Adaptive volume mapper.
Definition: vtkSmartVolumeMapper.h:110
vtkSmartVolumeMapper::InteractiveAdjustSampleDistances
vtkTypeBool InteractiveAdjustSampleDistances
If the InteractiveAdjustSampleDistances flag is enabled, vtkSmartVolumeMapper interactively sets and ...
Definition: vtkSmartVolumeMapper.h:498
vtkSmartVolumeMapper::GPUMapper
vtkGPUVolumeRayCastMapper * GPUMapper
The three potential mappers.
Definition: vtkSmartVolumeMapper.h:462
vtkGPUVolumeRayCastMapper
Ray casting performed on the GPU.
Definition: vtkGPUVolumeRayCastMapper.h:49
vtkSmartVolumeMapper::SetInterpolationModeToCubic
void SetInterpolationModeToCubic()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
VTK_RESLICE_NEAREST
#define VTK_RESLICE_NEAREST
Definition: vtkImageReslice.h:98
vtkSmartVolumeMapper::InitializedBlendMode
int InitializedBlendMode
We need to keep track of the blend mode we had when we initialized because we need to reinitialize (a...
Definition: vtkSmartVolumeMapper.h:471
vtkSmartVolumeMapper::RequestedRenderMode
int RequestedRenderMode
The requested render mode is used to compute the current render mode.
Definition: vtkSmartVolumeMapper.h:404
vtkSmartVolumeMapper::SetRequestedRenderModeToDefault
void SetRequestedRenderModeToDefault()
Set the requested render mode to vtkSmartVolumeMapper::DefaultRenderMode.
vtkSmartVolumeMapper::ImageMagnitude
vtkImageMagnitude * ImageMagnitude
This filter is used to compute the magnitude of 3-component data.
Definition: vtkSmartVolumeMapper.h:435
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
vtkSmartVolumeMapper::GetLastUsedRenderMode
int GetLastUsedRenderMode()
This will return the render mode used during the previous call to Render().
vtkSmartVolumeMapper::LowResGPUNecessary
int LowResGPUNecessary
Initialization variables.
Definition: vtkSmartVolumeMapper.h:416
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:182
vtkSmartVolumeMapper::MagnitudeUploadTime
vtkTimeStamp MagnitudeUploadTime
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
Definition: vtkSmartVolumeMapper.h:510
vtkOSPRayVolumeInterface
Removes link dependence on optional ospray module.
Definition: vtkOSPRayVolumeInterface.h:34
vtkSmartVolumeMapper::RayCastMapper
vtkFixedPointVolumeRayCastMapper * RayCastMapper
The three potential mappers.
Definition: vtkSmartVolumeMapper.h:463
vtkSmartVolumeMapper::MaxMemoryInBytes
vtkIdType MaxMemoryInBytes
GPU mapper-specific memory ivars.
Definition: vtkSmartVolumeMapper.h:389
vtkSmartVolumeMapper::SetRequestedRenderModeToGPU
void SetRequestedRenderModeToGPU()
Set the requested render mode to vtkSmartVolumeMapper::GPURenderMode.
vtkX3D::mode
@ mode
Definition: vtkX3D.h:253
vtkRenderWindow
create a window for renderers to draw into
Definition: vtkRenderWindow.h:205
vtkSmartVolumeMapper::Initialize
void Initialize(vtkRenderer *ren, vtkVolume *vol)
The initialize method.
vtkSmartVolumeMapper::ConnectMapperInput
void ConnectMapperInput(vtkVolumeMapper *m)
Connect input of the vtkSmartVolumeMapper to the input of the internal volume mapper by doing a shall...
vtkSmartVolumeMapper::FinalColorWindow
float FinalColorWindow
Window / level ivars.
Definition: vtkSmartVolumeMapper.h:381
vtkSmartVolumeMapper::GPUResampleFilter
vtkImageResample * GPUResampleFilter
This is the resample filter that may be used if we need to create a low resolution version of the vol...
Definition: vtkSmartVolumeMapper.h:423
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkVolumeProperty
represents the common properties for rendering a volume.
Definition: vtkVolumeProperty.h:164
vtkSmartVolumeMapper::SampleDistance
float SampleDistance
The distance between sample points along the ray.
Definition: vtkSmartVolumeMapper.h:476