VTK  9.0.1
vtkAMRVolumeMapper.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkAMRVolumeMapper.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 =========================================================================*/
26 #ifndef vtkAMRVolumeMapper_h
27 #define vtkAMRVolumeMapper_h
28 
29 #include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
30 #include "vtkRenderingVolumeAMRModule.h" // For export macro
31 #include "vtkVolumeMapper.h"
32 
34 class vtkCamera;
35 class vtkImageData;
36 class vtkOverlappingAMR;
38 class vtkUniformGrid;
39 
40 class VTKRENDERINGVOLUMEAMR_EXPORT vtkAMRVolumeMapper : public vtkVolumeMapper
41 {
42 public:
43  static vtkAMRVolumeMapper* New();
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
48 
51  void SetInputData(vtkImageData*) override;
52  void SetInputData(vtkDataSet*) override;
53  virtual void SetInputData(vtkOverlappingAMR*);
54  void SetInputConnection(int port, vtkAlgorithmOutput* input) override;
55  void SetInputConnection(vtkAlgorithmOutput* input) override
56  {
57  this->SetInputConnection(0, input);
58  }
60 
62 
66  double* GetBounds() override;
67  void GetBounds(double bounds[6]) override { this->vtkVolumeMapper::GetBounds(bounds); }
69 
81  void SetScalarMode(int mode) override;
82 
84 
89  void SetBlendMode(int mode) override;
90  int GetBlendMode() override;
92 
94 
100  void SelectScalarArray(int arrayNum) override;
101  void SelectScalarArray(const char* arrayName) override;
103 
105 
108  char* GetArrayName() override;
109  int GetArrayId() override;
110  int GetArrayAccessMode() override;
112 
116  const char* GetScalarModeAsString();
118 
122  void SetCropping(vtkTypeBool) override;
123  vtkTypeBool GetCropping() override;
125 
127 
133  double arg1, double arg2, double arg3, double arg4, double arg5, double arg6) override;
134  void SetCroppingRegionPlanes(const double* planes) override
135  {
136  this->SetCroppingRegionPlanes(planes[0], planes[1], planes[2], planes[3], planes[4], planes[5]);
137  }
138  void GetCroppingRegionPlanes(double* planes) override;
139  double* GetCroppingRegionPlanes() VTK_SIZEHINT(6) override;
141 
142 
153  void SetCroppingRegionFlags(int mode) override;
154  int GetCroppingRegionFlags() override;
156 
157  // The possible values for the default and current render mode ivars
158  enum
159  {
160  DefaultRenderMode = 0,
166  InvalidRenderMode
167  };
168 
170 
174  void SetRequestedRenderMode(int mode);
175  int GetRequestedRenderMode();
177 
184  {
185  this->SetRequestedRenderMode(vtkAMRVolumeMapper::DefaultRenderMode);
186  }
187 
196  {
197  this->SetRequestedRenderMode(vtkAMRVolumeMapper::RayCastAndTextureRenderMode);
198  }
199 
206  {
207  this->SetRequestedRenderMode(vtkAMRVolumeMapper::RayCastRenderMode);
208  }
209 
217  {
218  this->SetRequestedRenderMode(vtkAMRVolumeMapper::TextureRenderMode);
219  }
220 
227  {
228  this->SetRequestedRenderMode(vtkAMRVolumeMapper::GPURenderMode);
229  }
230 
232 
236  void SetInterpolationMode(int mode);
237  int GetInterpolationMode();
239 
240  void SetInterpolationModeToNearestNeighbor() { this->SetInterpolationMode(VTK_RESLICE_NEAREST); }
241 
242  void SetInterpolationModeToLinear() { this->SetInterpolationMode(VTK_RESLICE_LINEAR); }
243 
244  void SetInterpolationModeToCubic() { this->SetInterpolationMode(VTK_RESLICE_CUBIC); }
245 
247 
251  vtkSetVector3Macro(NumberOfSamples, int);
252  vtkGetVector3Macro(NumberOfSamples, int);
254 
260  void Render(vtkRenderer* ren, vtkVolume* vol) override;
261 
268  void ReleaseGraphicsResources(vtkWindow*) override;
269 
270  void ProcessUpdateExtentRequest(vtkRenderer* renderer, vtkInformation* info,
271  vtkInformationVector** inputVector, vtkInformationVector* outputVector);
272  void ProcessInformationRequest(vtkRenderer* renderer, vtkInformation* info,
273  vtkInformationVector** inputVector, vtkInformationVector* outputVector);
274  void UpdateResampler(vtkRenderer* ren, vtkOverlappingAMR* amr);
275  void UpdateResamplerFrustrumMethod(vtkRenderer* ren, vtkOverlappingAMR* amr);
276 
278 
281  vtkSetMacro(RequestedResamplingMode, int);
282  vtkGetMacro(RequestedResamplingMode, int);
283  vtkSetMacro(FreezeFocalPoint, bool);
284  vtkGetMacro(FreezeFocalPoint, bool);
286 
288 
292  vtkSetMacro(ResamplerUpdateTolerance, double);
293  vtkGetMacro(ResamplerUpdateTolerance, double);
295 
297 
302  vtkSetMacro(UseDefaultThreading, bool);
303  vtkGetMacro(UseDefaultThreading, bool);
305 
310  static bool ComputeResamplerBoundsFrustumMethod(
311  vtkCamera* camera, vtkRenderer* renderer, const double data_bounds[6], double out_bounds[6]);
312 
313 protected:
315  ~vtkAMRVolumeMapper() override;
316 
317  // see algorithm for more info
318  int FillInputPortInformation(int port, vtkInformation* info) override;
319  void UpdateGrid();
320 
324  int NumberOfSamples[3];
325 
326  // This indicates that the input has meta data for
327  // doing demand driven operations.
331  // Cached values for camera focal point and
332  // the distance between the camera position and
333  // focal point
334  double LastFocalPointPosition[3];
336  // This is used when determining if
337  // either the camera or focal point has
338  // move enough to cause the resampler to update
342 
343 private:
344  vtkAMRVolumeMapper(const vtkAMRVolumeMapper&) = delete;
345  void operator=(const vtkAMRVolumeMapper&) = delete;
346 };
347 
348 #endif
vtkAbstractVolumeMapper::GetArrayName
virtual char * GetArrayName()
Get the array name or number and component to use for rendering.
Definition: vtkAbstractVolumeMapper.h:103
vtkVolumeMapper::SetCropping
virtual void SetCropping(vtkTypeBool)
Turn On/Off orthogonal cropping.
vtkVolumeMapper
Abstract class for a volume mapper.
Definition: vtkVolumeMapper.h:43
vtkImageReslice.h
vtkVolumeMapper::GetCropping
virtual vtkTypeBool GetCropping()
vtkAMRVolumeMapper::InternalMapper
vtkSmartVolumeMapper * InternalMapper
Definition: vtkAMRVolumeMapper.h:321
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:44
vtkAMRVolumeMapper::ResamplerUpdateTolerance
double ResamplerUpdateTolerance
Definition: vtkAMRVolumeMapper.h:339
vtkAbstractVolumeMapper::GetScalarModeAsString
const char * GetScalarModeAsString()
Return the method for obtaining scalar data.
vtkAMRVolumeMapper::LastPostionFPDistance
double LastPostionFPDistance
Definition: vtkAMRVolumeMapper.h:335
vtkAMRVolumeMapper::RayCastRenderMode
@ RayCastRenderMode
Definition: vtkAMRVolumeMapper.h:162
vtkAMRVolumeMapper::UndefinedRenderMode
@ UndefinedRenderMode
Definition: vtkAMRVolumeMapper.h:165
vtkAMRVolumeMapper::UseDefaultThreading
bool UseDefaultThreading
Definition: vtkAMRVolumeMapper.h:341
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkAMRVolumeMapper::RequestedResamplingMode
int RequestedResamplingMode
Definition: vtkAMRVolumeMapper.h:329
vtkVolumeMapper::GetBlendMode
virtual int GetBlendMode()
vtkAMRVolumeMapper::FreezeFocalPoint
bool FreezeFocalPoint
Definition: vtkAMRVolumeMapper.h:330
vtkUniformGrid
image data with blanking
Definition: vtkUniformGrid.h:34
vtkVolumeMapper::SetCroppingRegionPlanes
virtual void SetCroppingRegionPlanes(double, double, double, double, double, double)
Set/Get the Cropping Region Planes ( xmin, xmax, ymin, ymax, zmin, zmax ) These planes are defined in...
vtkAMRVolumeMapper::SetRequestedRenderModeToDefault
void SetRequestedRenderModeToDefault()
Set the requested render mode to vtkAMRVolumeMapper::DefaultRenderMode.
Definition: vtkAMRVolumeMapper.h:183
vtkAMRVolumeMapper::HasMetaData
bool HasMetaData
Definition: vtkAMRVolumeMapper.h:328
vtkAbstractVolumeMapper::GetArrayId
virtual int GetArrayId()
Definition: vtkAbstractVolumeMapper.h:104
vtkAbstractVolumeMapper::GetArrayAccessMode
virtual int GetArrayAccessMode()
Definition: vtkAbstractVolumeMapper.h:105
vtkAMRVolumeMapper::DefaultRenderMode
@ DefaultRenderMode
Definition: vtkAMRVolumeMapper.h:160
vtkAbstractVolumeMapper::SetScalarMode
virtual void SetScalarMode(int)
Control how the mapper works with scalar point data and cell attribute data.
vtkAMRVolumeMapper::SetInterpolationModeToNearestNeighbor
void SetInterpolationModeToNearestNeighbor()
Definition: vtkAMRVolumeMapper.h:240
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkAMRVolumeMapper::SetInterpolationModeToCubic
void SetInterpolationModeToCubic()
Definition: vtkAMRVolumeMapper.h:244
vtkVolumeMapper::FillInputPortInformation
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
vtkAMRVolumeMapper::SetCroppingRegionPlanes
void SetCroppingRegionPlanes(const double *planes) override
Definition: vtkAMRVolumeMapper.h:134
UpdateGrid
void UpdateGrid(const int iteration)
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkAMRVolumeMapper::GetBounds
void GetBounds(double bounds[6]) override
Get the bounds for this mapper as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).
Definition: vtkAMRVolumeMapper.h:67
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkVolumeMapper::Render
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...
vtkVolumeMapper::SetBlendMode
virtual void SetBlendMode(int)
Set/Get the blend mode.
VTK_RESLICE_CUBIC
#define VTK_RESLICE_CUBIC
Definition: vtkImageReslice.h:61
vtkVolumeMapper.h
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:41
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkSmartVolumeMapper
Adaptive volume mapper.
Definition: vtkSmartVolumeMapper.h:90
vtkAMRVolumeMapper::Grid
vtkUniformGrid * Grid
Definition: vtkAMRVolumeMapper.h:323
vtkCamera
a virtual camera for 3D rendering
Definition: vtkCamera.h:45
vtkAMRVolumeMapper::GridNeedsToBeUpdated
bool GridNeedsToBeUpdated
Definition: vtkAMRVolumeMapper.h:340
vtkAMRVolumeMapper::SetInputConnection
void SetInputConnection(vtkAlgorithmOutput *input) override
Definition: vtkAMRVolumeMapper.h:55
VTK_RESLICE_NEAREST
#define VTK_RESLICE_NEAREST
Definition: vtkImageReslice.h:59
vtkAMRVolumeMapper::SetInterpolationModeToLinear
void SetInterpolationModeToLinear()
Definition: vtkAMRVolumeMapper.h:242
vtkAMRVolumeMapper::TextureRenderMode
@ TextureRenderMode
Definition: vtkAMRVolumeMapper.h:163
vtkOverlappingAMR
hierarchical dataset of vtkUniformGrids
Definition: vtkOverlappingAMR.h:40
vtkAMRVolumeMapper::SetRequestedRenderModeToRayCast
void SetRequestedRenderModeToRayCast()
Set the requested render mode to vtkAMRVolumeMapper::RayCastRenderMode.
Definition: vtkAMRVolumeMapper.h:205
vtkVolumeMapper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
Definition: vtkVolumeMapper.h:203
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
vtkAlgorithm::SetInputConnection
virtual void SetInputConnection(int port, vtkAlgorithmOutput *input)
Set the connection for the given input port index.
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:73
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkAlgorithm::New
static vtkAlgorithm * New()
vtkAMRVolumeMapper::RayCastAndTextureRenderMode
@ RayCastAndTextureRenderMode
Definition: vtkAMRVolumeMapper.h:161
vtkAMRVolumeMapper::GPURenderMode
@ GPURenderMode
Definition: vtkAMRVolumeMapper.h:164
vtkAMRVolumeMapper::SetRequestedRenderModeToTexture
void SetRequestedRenderModeToTexture()
Set the requested render mode to vtkAMRVolumeMapper::TextureRenderMode.
Definition: vtkAMRVolumeMapper.h:216
vtkAlgorithmOutput
Proxy object to connect input/output ports.
Definition: vtkAlgorithmOutput.h:36
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:67
vtkVolumeMapper::GetCroppingRegionPlanes
virtual double * GetCroppingRegionPlanes()
VTK_RESLICE_LINEAR
#define VTK_RESLICE_LINEAR
Definition: vtkImageReslice.h:60
vtkAbstractVolumeMapper::SelectScalarArray
virtual void SelectScalarArray(int arrayNum)
When ScalarMode is set to UsePointFieldData or UseCellFieldData, you can specify which scalar array t...
vtkVolumeMapper::SetInputData
virtual void SetInputData(vtkImageData *)
Set/Get the input data.
vtkAbstractVolumeMapper::GetBounds
double * GetBounds() override
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
vtkAMRVolumeMapper::SetRequestedRenderModeToGPU
void SetRequestedRenderModeToGPU()
Set the requested render mode to vtkAMRVolumeMapper::GPURenderMode.
Definition: vtkAMRVolumeMapper.h:226
vtkAMRVolumeMapper
AMR class for a volume mapper.
Definition: vtkAMRVolumeMapper.h:40
vtkVolumeMapper::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkAMRVolumeMapper::Resampler
vtkAMRResampleFilter * Resampler
Definition: vtkAMRVolumeMapper.h:322
vtkX3D::mode
@ mode
Definition: vtkX3D.h:253
vtkAMRVolumeMapper::SetRequestedRenderModeToRayCastAndTexture
void SetRequestedRenderModeToRayCastAndTexture()
Set the requested render mode to vtkAMRVolumeMapper::RayCastAndTextureRenderMode.
Definition: vtkAMRVolumeMapper.h:195
vtkAMRResampleFilter
Definition: vtkAMRResampleFilter.h:52
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69