VTK
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 =========================================================================*/
79 #ifndef vtkSmartVolumeMapper_h
80 #define vtkSmartVolumeMapper_h
81 
82 #include "vtkRenderingVolumeOpenGL2Module.h" // For export macro
83 #include "vtkVolumeMapper.h"
84 #include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
85 
88 class vtkImageResample;
91 class vtkRenderWindow;
92 class vtkVolume;
93 class vtkVolumeProperty;
94 class vtkImageMagnitude;
95 
96 class VTKRENDERINGVOLUMEOPENGL2_EXPORT vtkSmartVolumeMapper : public vtkVolumeMapper
97 {
98 public:
99  static vtkSmartVolumeMapper *New();
101  void PrintSelf( ostream& os, vtkIndent indent ) override;
102 
104 
114  vtkSetMacro( FinalColorWindow, float );
116 
118 
121  vtkGetMacro( FinalColorWindow, float );
123 
125 
132  vtkSetMacro( FinalColorLevel, float );
134 
136 
139  vtkGetMacro( FinalColorLevel, float );
141 
142 // The possible values for the default and current render mode ivars
143  enum
144  {
145  DefaultRenderMode=0,
146  RayCastRenderMode=1,
147  GPURenderMode=2,
148  OSPRayRenderMode=3,
149  UndefinedRenderMode=4,
150  InvalidRenderMode=5
151  };
152 
157  void SetRequestedRenderMode(int mode);
158 
164  void SetRequestedRenderModeToDefault();
165 
171  void SetRequestedRenderModeToRayCast();
172 
178  void SetRequestedRenderModeToGPU();
179 
184  void SetRequestedRenderModeToOSPRay();
185 
187 
190  vtkGetMacro( RequestedRenderMode, int );
192 
197  int GetLastUsedRenderMode();
198 
200 
207  vtkSetMacro( MaxMemoryInBytes, vtkIdType );
208  vtkGetMacro( MaxMemoryInBytes, vtkIdType );
210 
212 
218  vtkSetClampMacro( MaxMemoryFraction, float, 0.1f, 1.0f );
219  vtkGetMacro( MaxMemoryFraction, float );
221 
223 
227  vtkSetClampMacro(InterpolationMode, int,
229  vtkGetMacro(InterpolationMode, int);
230  void SetInterpolationModeToNearestNeighbor();
231  void SetInterpolationModeToLinear();
232  void SetInterpolationModeToCubic();
234 
240  void CreateCanonicalView( vtkRenderer *ren,
241  vtkVolume *volume,
242  vtkVolume *volume2,
244  int blend_mode,
245  double viewDirection[3],
246  double viewUp[3] );
247 
249 
255  vtkSetClampMacro( InteractiveUpdateRate, double, 1.0e-10, 1.0e10 );
257 
259 
264  vtkGetMacro( InteractiveUpdateRate, double );
266 
268 
276  vtkSetClampMacro( InteractiveAdjustSampleDistances, vtkTypeBool, 0, 1);
277  vtkGetMacro( InteractiveAdjustSampleDistances, vtkTypeBool);
278  vtkBooleanMacro( InteractiveAdjustSampleDistances, vtkTypeBool);
280 
282 
291  vtkSetClampMacro( AutoAdjustSampleDistances, vtkTypeBool, 0, 1 );
292  vtkGetMacro( AutoAdjustSampleDistances, vtkTypeBool );
293  vtkBooleanMacro( AutoAdjustSampleDistances, vtkTypeBool );
295 
297 
304  vtkSetMacro( SampleDistance, float );
305  vtkGetMacro( SampleDistance, float );
307 
312  void Render( vtkRenderer *, vtkVolume * ) override;
313 
320  void ReleaseGraphicsResources(vtkWindow *) override;
321 
323 
331  {
332  DISABLED = -1,
333  MAGNITUDE = 0,
334  COMPONENT = 1,
335  };
336 
337  void SetVectorMode(int mode);
338  vtkGetMacro(VectorMode, int);
339 
340  vtkSetClampMacro(VectorComponent, int, 0, 3);
341  vtkGetMacro(VectorComponent, int);
343 
344 protected:
346  ~vtkSmartVolumeMapper() override;
347 
353  void ConnectMapperInput(vtkVolumeMapper *m);
354 
360  void ConnectFilterInput(vtkImageResample *f);
361 
363 
369 
371 
377 
382 
384 
392 
394 
403 
409 
411 
423 
428  void Initialize(vtkRenderer *ren,
429  vtkVolume *vol);
430 
435  void ComputeRenderMode(vtkRenderer *ren,
436  vtkVolume *vol);
437 
442  vtkGetObjectMacro(GPUMapper, vtkGPUVolumeRayCastMapper);
443 
445 
452 
453 
460 
465 
471 
478 
487 
489 
500 
501 private:
503 
507  void SetupVectorMode(vtkVolume* vol);
513  void ComputeMagnitudeCellData(vtkImageData* input, vtkDataArray* arr);
514  void ComputeMagnitudePointData(vtkImageData* input, vtkDataArray* arr);
516 
518  void operator=(const vtkSmartVolumeMapper&) = delete;
519 
520  vtkOSPRayVolumeInterface *OSPRayMapper;
521 };
522 
523 #endif
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:50
#define VTK_RESLICE_NEAREST
Abstract class for a volume mapper.
int VectorComponent
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
#define VTK_RESLICE_CUBIC
Adaptive volume mapper.
int RayCastSupported
Initialization variables.
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkTimeStamp SupportStatusCheckTime
Initialization variables.
Resamples an image to be larger or smaller.
int LowResGPUNecessary
Initialization variables.
vtkFixedPointVolumeRayCastMapper * RayCastMapper
The three potential mappers.
vtkTypeBool InteractiveAdjustSampleDistances
If the InteractiveAdjustSampleDistances flag is enabled, vtkSmartVolumeMapper interactively sets and ...
vtkGPUVolumeRayCastMapper * GPULowResMapper
The three potential mappers.
abstract specification for renderers
Definition: vtkRenderer.h:63
int RequestedRenderMode
The requested render mode is used to compute the current render mode.
int vtkIdType
Definition: vtkType.h:347
vtkImageResample * GPUResampleFilter
This is the resample filter that may be used if we need to create a low resolution version of the vol...
float SampleDistance
The distance between sample points along the ray.
vtkIdType MaxMemoryInBytes
GPU mapper-specific memory ivars.
Mapper to render volumes defined as vtkMultiBlockDataSet.
int VectorMode
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
vtkImageMagnitude * ImageMagnitude
This filter is used to compute the magnitude of 3-component data.
void Render(vtkRenderer *ren, vtkVolume *vol) override=0
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
int vtkTypeBool
Definition: vtkABI.h:69
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
VectorModeType
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
float FinalColorLevel
Window / level ivars.
a simple class to control print indentation
Definition: vtkIndent.h:39
double InteractiveUpdateRate
If the DesiredUpdateRate of the vtkRenderWindow causing the Render is at or above this value...
vtkTypeBool AutoAdjustSampleDistances
Set whether or not the sample distance should be automatically calculated within the internal volume ...
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
Colapses components with magnitude function.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
int CurrentRenderMode
The requested render mode is used to compute the current render mode.
represents the common properties for rendering a volume.
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
create a window for renderers to draw into
Removes link dependence on optional ospray module.
vtkTimeStamp MagnitudeUploadTime
VectorMode is a special rendering mode for 3-component vectors which makes use of GPURayCastMapper's ...
vtkGPUVolumeRayCastMapper * GPUMapper
The three potential mappers.
int InitializedBlendMode
We need to keep track of the blend mode we had when we initialized because we need to reinitialize (a...
int Initialized
Initialization variables.
int GPUSupported
Initialization variables.
static vtkAlgorithm * New()
vtkImageData * InputDataMagnitude
This filter is used to compute the magnitude of 3-component data.
float MaxMemoryFraction
GPU mapper-specific memory ivars.
int InterpolationMode
Used for downsampling.
Ray casting performed on the GPU.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
float FinalColorWindow
Window / level ivars.