VTK  9.1.0
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:
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
48 
51  void SetInputData(vtkImageData*) override;
52  void SetInputData(vtkDataSet*) override;
55  void SetInputConnection(int port, vtkAlgorithmOutput* input) override;
56  void SetInputConnection(vtkAlgorithmOutput* input) override
57  {
58  this->SetInputConnection(0, input);
59  }
61 
63 
67  double* GetBounds() override;
68  void GetBounds(double bounds[6]) override { this->vtkVolumeMapper::GetBounds(bounds); }
70 
82  void SetScalarMode(int mode) override;
83 
85 
90  void SetBlendMode(int mode) override;
91  int GetBlendMode() override;
93 
95 
101  void SelectScalarArray(int arrayNum) override;
102  void SelectScalarArray(const char* arrayName) override;
104 
106 
109  char* GetArrayName() override;
110  int GetArrayId() override;
111  int GetArrayAccessMode() override;
113 
117  const char* GetScalarModeAsString();
119 
123  void SetCropping(vtkTypeBool) override;
126 
128 
134  double arg1, double arg2, double arg3, double arg4, double arg5, double arg6) override;
135  void SetCroppingRegionPlanes(const double* planes) override
136  {
137  this->SetCroppingRegionPlanes(planes[0], planes[1], planes[2], planes[3], planes[4], planes[5]);
138  }
139  void GetCroppingRegionPlanes(double* planes) override;
140  double* GetCroppingRegionPlanes() VTK_SIZEHINT(6) override;
143 
154  void SetCroppingRegionFlags(int mode) override;
155  int GetCroppingRegionFlags() override;
157 
158  // The possible values for the default and current render mode ivars
159  enum
160  {
161  DefaultRenderMode = 0,
167  InvalidRenderMode
168  };
169 
171 
178 
185  {
186  this->SetRequestedRenderMode(vtkAMRVolumeMapper::DefaultRenderMode);
187  }
188 
197  {
198  this->SetRequestedRenderMode(vtkAMRVolumeMapper::RayCastAndTextureRenderMode);
199  }
200 
207  {
208  this->SetRequestedRenderMode(vtkAMRVolumeMapper::RayCastRenderMode);
209  }
210 
218  {
219  this->SetRequestedRenderMode(vtkAMRVolumeMapper::TextureRenderMode);
220  }
221 
228  {
229  this->SetRequestedRenderMode(vtkAMRVolumeMapper::GPURenderMode);
230  }
231 
233 
240 
241  void SetInterpolationModeToNearestNeighbor() { this->SetInterpolationMode(VTK_RESLICE_NEAREST); }
242 
243  void SetInterpolationModeToLinear() { this->SetInterpolationMode(VTK_RESLICE_LINEAR); }
244 
245  void SetInterpolationModeToCubic() { this->SetInterpolationMode(VTK_RESLICE_CUBIC); }
246 
248 
252  vtkSetVector3Macro(NumberOfSamples, int);
253  vtkGetVector3Macro(NumberOfSamples, int);
255 
261  void Render(vtkRenderer* ren, vtkVolume* vol) override;
262 
270 
272  vtkInformationVector** inputVector, vtkInformationVector* outputVector);
274  vtkInformationVector** inputVector, vtkInformationVector* outputVector);
277 
279 
282  vtkSetMacro(RequestedResamplingMode, int);
283  vtkGetMacro(RequestedResamplingMode, int);
284  vtkSetMacro(FreezeFocalPoint, bool);
285  vtkGetMacro(FreezeFocalPoint, bool);
287 
289 
293  vtkSetMacro(ResamplerUpdateTolerance, double);
294  vtkGetMacro(ResamplerUpdateTolerance, double);
296 
298 
303  vtkSetMacro(UseDefaultThreading, bool);
304  vtkGetMacro(UseDefaultThreading, bool);
306 
312  vtkCamera* camera, vtkRenderer* renderer, const double data_bounds[6], double out_bounds[6]);
313 
314 protected:
317 
318  // see algorithm for more info
320  void UpdateGrid();
321 
325  int NumberOfSamples[3];
326 
327  // This indicates that the input has meta data for
328  // doing demand driven operations.
332  // Cached values for camera focal point and
333  // the distance between the camera position and
334  // focal point
335  double LastFocalPointPosition[3];
337  // This is used when determining if
338  // either the camera or focal point has
339  // move enough to cause the resampler to update
343 
344 private:
345  vtkAMRVolumeMapper(const vtkAMRVolumeMapper&) = delete;
346  void operator=(const vtkAMRVolumeMapper&) = delete;
347 };
348 
349 #endif
vtkVolumeMapper
Abstract class for a volume mapper.
Definition: vtkVolumeMapper.h:45
vtkAMRVolumeMapper::UpdateResamplerFrustrumMethod
void UpdateResamplerFrustrumMethod(vtkRenderer *ren, vtkOverlappingAMR *amr)
vtkImageReslice.h
vtkAMRVolumeMapper::SetCroppingRegionPlanes
void SetCroppingRegionPlanes(double arg1, double arg2, double arg3, double arg4, double arg5, double arg6) override
Set/Get the Cropping Region Planes ( xmin, xmax, ymin, ymax, zmin, zmax ) These planes are defined in...
vtkAMRVolumeMapper::InternalMapper
vtkSmartVolumeMapper * InternalMapper
Definition: vtkAMRVolumeMapper.h:322
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:134
vtkAMRVolumeMapper::New
static vtkAMRVolumeMapper * New()
vtkAMRVolumeMapper::ResamplerUpdateTolerance
double ResamplerUpdateTolerance
Definition: vtkAMRVolumeMapper.h:340
vtkAMRVolumeMapper::SetInputData
void SetInputData(vtkDataSet *) override
Set the input data.
vtkAMRVolumeMapper::GetBlendMode
int GetBlendMode() override
Set/Get the blend mode.
vtkAMRVolumeMapper::LastPostionFPDistance
double LastPostionFPDistance
Definition: vtkAMRVolumeMapper.h:336
vtkAMRVolumeMapper::SetCropping
void SetCropping(vtkTypeBool) override
Turn On/Off orthogonal cropping.
vtkAMRVolumeMapper::GetCroppingRegionPlanes
double * GetCroppingRegionPlanes() override
Set/Get the Cropping Region Planes ( xmin, xmax, ymin, ymax, zmin, zmax ) These planes are defined in...
vtkAMRVolumeMapper::GetInterpolationMode
int GetInterpolationMode()
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
vtkRectilinearGrid
a dataset that is topologically regular with variable spacing in the three coordinate directions
Definition: vtkRectilinearGrid.h:151
vtkAMRVolumeMapper::UseDefaultThreading
bool UseDefaultThreading
Definition: vtkAMRVolumeMapper.h:342
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:145
vtkAMRVolumeMapper::RequestedResamplingMode
int RequestedResamplingMode
Definition: vtkAMRVolumeMapper.h:330
vtkAMRVolumeMapper::vtkAMRVolumeMapper
vtkAMRVolumeMapper()
vtkAMRVolumeMapper::UpdateResampler
void UpdateResampler(vtkRenderer *ren, vtkOverlappingAMR *amr)
vtkAMRVolumeMapper::FreezeFocalPoint
bool FreezeFocalPoint
Definition: vtkAMRVolumeMapper.h:331
vtkUniformGrid
image data with blanking
Definition: vtkUniformGrid.h:74
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::GetCropping
vtkTypeBool GetCropping() override
Turn On/Off orthogonal cropping.
vtkAMRVolumeMapper::SetRequestedRenderModeToDefault
void SetRequestedRenderModeToDefault()
Set the requested render mode to vtkAMRVolumeMapper::DefaultRenderMode.
Definition: vtkAMRVolumeMapper.h:184
vtkAMRVolumeMapper::HasMetaData
bool HasMetaData
Definition: vtkAMRVolumeMapper.h:329
vtkAMRVolumeMapper::FillInputPortInformation
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkAMRVolumeMapper::GetCroppingRegionPlanes
void GetCroppingRegionPlanes(double *planes) override
Set/Get the Cropping Region Planes ( xmin, xmax, ymin, ymax, zmin, zmax ) These planes are defined in...
vtkAMRVolumeMapper::GetScalarModeAsString
const char * GetScalarModeAsString()
Return the method for obtaining scalar data.
vtkAMRVolumeMapper::ComputeResamplerBoundsFrustumMethod
static bool ComputeResamplerBoundsFrustumMethod(vtkCamera *camera, vtkRenderer *renderer, const double data_bounds[6], double out_bounds[6])
Utility method used by UpdateResamplerFrustrumMethod() to compute the bounds.
vtkAMRVolumeMapper::SelectScalarArray
void SelectScalarArray(int arrayNum) override
When ScalarMode is set to UsePointFieldData or UseCellFieldData, you can specify which scalar array t...
vtkAMRVolumeMapper::RayCastRenderMode
@ RayCastRenderMode
Definition: vtkAMRVolumeMapper.h:163
vtkAMRVolumeMapper::SetScalarMode
void SetScalarMode(int mode) override
Control how the mapper works with scalar point data and cell attribute data.
vtkAMRVolumeMapper::SetInterpolationModeToNearestNeighbor
void SetInterpolationModeToNearestNeighbor()
Definition: vtkAMRVolumeMapper.h:241
vtkAMRVolumeMapper::~vtkAMRVolumeMapper
~vtkAMRVolumeMapper() override
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
vtkAMRVolumeMapper::SetInterpolationModeToCubic
void SetInterpolationModeToCubic()
Definition: vtkAMRVolumeMapper.h:245
vtkAMRVolumeMapper::SetCroppingRegionPlanes
void SetCroppingRegionPlanes(const double *planes) override
Set/Get the Cropping Region Planes ( xmin, xmax, ymin, ymax, zmin, zmax ) These planes are defined in...
Definition: vtkAMRVolumeMapper.h:135
vtkAMRVolumeMapper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
vtkX3D::port
@ port
Definition: vtkX3D.h:453
vtkAMRVolumeMapper::RayCastAndTextureRenderMode
@ RayCastAndTextureRenderMode
Definition: vtkAMRVolumeMapper.h:162
vtkAMRVolumeMapper::GetBounds
void GetBounds(double bounds[6]) override
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
Definition: vtkAMRVolumeMapper.h:68
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:48
VTK_RESLICE_CUBIC
#define VTK_RESLICE_CUBIC
Definition: vtkImageReslice.h:100
vtkVolumeMapper.h
vtkAMRVolumeMapper::GetBounds
double * GetBounds() override
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
vtkAMRVolumeMapper::UndefinedRenderMode
@ UndefinedRenderMode
Definition: vtkAMRVolumeMapper.h:166
vtkAMRVolumeMapper::SelectScalarArray
void SelectScalarArray(const char *arrayName) override
When ScalarMode is set to UsePointFieldData or UseCellFieldData, you can specify which scalar array t...
vtkAMRVolumeMapper::GetArrayId
int GetArrayId() override
Get the array name or number and component to use for rendering.
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
vtkAMRVolumeMapper::Grid
vtkUniformGrid * Grid
Definition: vtkAMRVolumeMapper.h:324
vtkAMRVolumeMapper::SetRequestedRenderMode
void SetRequestedRenderMode(int mode)
Set the requested render mode.
vtkCamera
a virtual camera for 3D rendering
Definition: vtkCamera.h:155
vtkAMRVolumeMapper::GridNeedsToBeUpdated
bool GridNeedsToBeUpdated
Definition: vtkAMRVolumeMapper.h:341
vtkAMRVolumeMapper::SetInputConnection
void SetInputConnection(vtkAlgorithmOutput *input) override
Set the input data.
Definition: vtkAMRVolumeMapper.h:56
VTK_RESLICE_NEAREST
#define VTK_RESLICE_NEAREST
Definition: vtkImageReslice.h:98
vtkAMRVolumeMapper::SetInterpolationModeToLinear
void SetInterpolationModeToLinear()
Definition: vtkAMRVolumeMapper.h:243
vtkOverlappingAMR
hierarchical dataset of vtkUniformGrids
Definition: vtkOverlappingAMR.h:80
vtkAMRVolumeMapper::SetRequestedRenderModeToRayCast
void SetRequestedRenderModeToRayCast()
Set the requested render mode to vtkAMRVolumeMapper::RayCastRenderMode.
Definition: vtkAMRVolumeMapper.h:206
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:166
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:183
vtkAMRVolumeMapper::SetInterpolationMode
void SetInterpolationMode(int mode)
Set interpolation mode for downsampling (lowres GPU) (initial value: cubic).
vtkAMRVolumeMapper::SetInputData
virtual void SetInputData(vtkOverlappingAMR *)
Set the input data.
vtkX3D::info
@ info
Definition: vtkX3D.h:382
vtkAMRVolumeMapper::UpdateGrid
void UpdateGrid()
vtkAMRVolumeMapper::GetArrayAccessMode
int GetArrayAccessMode() override
Get the array name or number and component to use for rendering.
vtkAMRVolumeMapper::SetInputConnection
void SetInputConnection(int port, vtkAlgorithmOutput *input) override
Set the input data.
vtkAMRVolumeMapper::DefaultRenderMode
@ DefaultRenderMode
Definition: vtkAMRVolumeMapper.h:161
vtkAMRVolumeMapper::SetRequestedRenderModeToTexture
void SetRequestedRenderModeToTexture()
Set the requested render mode to vtkAMRVolumeMapper::TextureRenderMode.
Definition: vtkAMRVolumeMapper.h:217
vtkAMRVolumeMapper::Render
void Render(vtkRenderer *ren, vtkVolume *vol) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
vtkAlgorithmOutput
Proxy object to connect input/output ports.
Definition: vtkAlgorithmOutput.h:66
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:182
vtkAMRVolumeMapper::SetInputData
void SetInputData(vtkImageData *) override
Set the input data.
VTK_RESLICE_LINEAR
#define VTK_RESLICE_LINEAR
Definition: vtkImageReslice.h:99
vtkAbstractVolumeMapper::GetBounds
double * GetBounds() override
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
vtkAMRVolumeMapper::TextureRenderMode
@ TextureRenderMode
Definition: vtkAMRVolumeMapper.h:164
vtkAMRVolumeMapper::SetRequestedRenderModeToGPU
void SetRequestedRenderModeToGPU()
Set the requested render mode to vtkAMRVolumeMapper::GPURenderMode.
Definition: vtkAMRVolumeMapper.h:227
vtkAMRVolumeMapper::GetRequestedRenderMode
int GetRequestedRenderMode()
Set the requested render mode.
vtkAMRVolumeMapper::SetBlendMode
void SetBlendMode(int mode) override
Set/Get the blend mode.
vtkAMRVolumeMapper
AMR class for a volume mapper.
Definition: vtkAMRVolumeMapper.h:41
vtkAMRVolumeMapper::ProcessInformationRequest
void ProcessInformationRequest(vtkRenderer *renderer, vtkInformation *info, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
vtkAMRVolumeMapper::SetInputData
void SetInputData(vtkRectilinearGrid *) override
Set the input data.
vtkAMRVolumeMapper::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:323
vtkX3D::mode
@ mode
Definition: vtkX3D.h:253
vtkAMRVolumeMapper::SetRequestedRenderModeToRayCastAndTexture
void SetRequestedRenderModeToRayCastAndTexture()
Set the requested render mode to vtkAMRVolumeMapper::RayCastAndTextureRenderMode.
Definition: vtkAMRVolumeMapper.h:196
vtkAMRVolumeMapper::GetArrayName
char * GetArrayName() override
Get the array name or number and component to use for rendering.
vtkAMRResampleFilter
This filter is a concrete instance of vtkMultiBlockDataSetAlgorithm and provides functionality for ex...
Definition: vtkAMRResampleFilter.h:53
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkAMRVolumeMapper::GPURenderMode
@ GPURenderMode
Definition: vtkAMRVolumeMapper.h:165
vtkAMRVolumeMapper::ProcessUpdateExtentRequest
void ProcessUpdateExtentRequest(vtkRenderer *renderer, vtkInformation *info, vtkInformationVector **inputVector, vtkInformationVector *outputVector)