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=========================================================================*/
82#ifndef vtkSmartVolumeMapper_h
83#define vtkSmartVolumeMapper_h
84
85#include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
86#include "vtkRenderingVolumeOpenGL2Module.h" // For export macro
87#include "vtkVolumeMapper.h"
88
94class vtkRenderWindow;
95class vtkVolume;
98
99class VTKRENDERINGVOLUMEOPENGL2_EXPORT vtkSmartVolumeMapper : public vtkVolumeMapper
100{
101public:
104 void PrintSelf(ostream& os, vtkIndent indent) override;
105
107
117 vtkSetMacro(FinalColorWindow, float);
119
121
124 vtkGetMacro(FinalColorWindow, float);
126
128
135 vtkSetMacro(FinalColorLevel, float);
137
139
142 vtkGetMacro(FinalColorLevel, float);
144
145 // The possible values for the default and current render mode ivars
146 enum
147 {
148 DefaultRenderMode = 0,
149 RayCastRenderMode = 1,
150 GPURenderMode = 2,
151 OSPRayRenderMode = 3,
152 UndefinedRenderMode = 4,
153 InvalidRenderMode = 5
154 };
155
161
168
175
182
188
190
193 vtkGetMacro(RequestedRenderMode, int);
195
201
203
210 vtkSetMacro(MaxMemoryInBytes, vtkIdType);
211 vtkGetMacro(MaxMemoryInBytes, vtkIdType);
213
215
221 vtkSetClampMacro(MaxMemoryFraction, float, 0.1f, 1.0f);
222 vtkGetMacro(MaxMemoryFraction, float);
224
226
230 vtkSetClampMacro(InterpolationMode, int, VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC);
231 vtkGetMacro(InterpolationMode, int);
236
243 vtkImageData* image, int blend_mode, double viewDirection[3], double viewUp[3]);
244
246
252 vtkSetClampMacro(InteractiveUpdateRate, double, 1.0e-10, 1.0e10);
254
256
261 vtkGetMacro(InteractiveUpdateRate, double);
263
265
273 vtkSetClampMacro(InteractiveAdjustSampleDistances, vtkTypeBool, 0, 1);
274 vtkGetMacro(InteractiveAdjustSampleDistances, vtkTypeBool);
275 vtkBooleanMacro(InteractiveAdjustSampleDistances, vtkTypeBool);
277
279
288 vtkSetClampMacro(AutoAdjustSampleDistances, vtkTypeBool, 0, 1);
289 vtkGetMacro(AutoAdjustSampleDistances, vtkTypeBool);
290 vtkBooleanMacro(AutoAdjustSampleDistances, vtkTypeBool);
292
294
301 vtkSetMacro(SampleDistance, float);
302 vtkGetMacro(SampleDistance, float);
304
309 void Render(vtkRenderer*, vtkVolume*) override;
310
318
320
328 {
329 DISABLED = -1,
330 MAGNITUDE = 0,
331 COMPONENT = 1,
332 };
333
335 vtkGetMacro(VectorMode, int);
336
337 vtkSetClampMacro(VectorComponent, int, 0, 3);
338 vtkGetMacro(VectorComponent, int);
340
342
345 vtkSetStringMacro(Transfer2DYAxisArray);
346 vtkGetStringMacro(Transfer2DYAxisArray);
348
349protected:
352
359
366
368
374
376
382
387
389
397
399
408
414
416
428
434
440
445 vtkGetObjectMacro(GPUMapper, vtkGPUVolumeRayCastMapper);
446
448
455
462
467
473
480
489
491
502
504
511
518
519private:
521
525 void SetupVectorMode(vtkVolume* vol);
531 void ComputeMagnitudeCellData(vtkDataSet* input, vtkDataArray* arr);
532 void ComputeMagnitudePointData(vtkDataSet* input, vtkDataArray* arr);
534
536 void operator=(const vtkSmartVolumeMapper&) = delete;
537
538 vtkOSPRayVolumeInterface* OSPRayMapper;
539};
540
541#endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:59
abstract class to specify dataset behavior
Definition: vtkDataSet.h:66
Ray casting performed on the GPU.
topologically and geometrically regular array of data
Definition: vtkImageData.h:57
Resamples an image to be larger or smaller.
a simple class to control print indentation
Definition: vtkIndent.h:43
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:73
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 propogated 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 propogated 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.
static vtkSmartVolumeMapper * New()
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.
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:42
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:54
window superclass for vtkRenderWindow
Definition: vtkWindow.h:45
@ 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