VTK
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 =========================================================================*/
29 #ifndef vtkAMRVolumeMapper_h
30 #define vtkAMRVolumeMapper_h
31 
32 #include "vtkRenderingVolumeAMRModule.h" // For export macro
33 #include "vtkVolumeMapper.h"
34 #include "vtkImageReslice.h" // for VTK_RESLICE_NEAREST, VTK_RESLICE_CUBIC
35 
37 class vtkCamera;
38 class vtkImageData;
39 class vtkOverlappingAMR;
41 class vtkUniformGrid;
42 
43 class VTKRENDERINGVOLUMEAMR_EXPORT vtkAMRVolumeMapper : public vtkVolumeMapper
44 {
45 public:
46  static vtkAMRVolumeMapper *New();
48  void PrintSelf( ostream& os, vtkIndent indent ) override;
49 
51 
54  void SetInputData( vtkImageData* ) override;
55  void SetInputData( vtkDataSet* ) override;
56  virtual void SetInputData( vtkOverlappingAMR* );
57  void SetInputConnection (int port, vtkAlgorithmOutput *input) override;
58  void SetInputConnection (vtkAlgorithmOutput *input) override
59  {this->SetInputConnection(0, input);}
61 
63 
67  double *GetBounds() override;
68  void GetBounds(double bounds[6]) override
69  {this->vtkVolumeMapper::GetBounds(bounds); };
71 
83  void SetScalarMode(int mode) override;
84 
86 
91  void SetBlendMode(int mode) override;
92  int GetBlendMode() override;
94 
96 
102  void SelectScalarArray(int arrayNum) override;
103  void SelectScalarArray(const char* arrayName) override;
105 
107 
110  char* GetArrayName() override;
111  int GetArrayId() override;
112  int GetArrayAccessMode() override;
114 
118  const char *GetScalarModeAsString();
120 
124  void SetCropping(vtkTypeBool) override;
125  vtkTypeBool GetCropping() override;
127 
129 
134  void SetCroppingRegionPlanes(double arg1, double arg2, double arg3,
135  double arg4, double arg5, double arg6) override;
136  void SetCroppingRegionPlanes(double *planes) override
138  planes[0],planes[1],planes[2],
139  planes[3],planes[4],planes[5]);}
140  void GetCroppingRegionPlanes(double *planes) override;
141  double *GetCroppingRegionPlanes() VTK_SIZEHINT(6) override;
143 
144 
155  void SetCroppingRegionFlags(int mode) override;
156  int GetCroppingRegionFlags() override;
158 
159 // The possible values for the default and current render mode ivars
160  enum
161  {
162  DefaultRenderMode=0,
168  InvalidRenderMode
169  };
170 
172 
176  void SetRequestedRenderMode(int mode);
177  int GetRequestedRenderMode();
179 
186  {this->SetRequestedRenderMode(vtkAMRVolumeMapper::DefaultRenderMode);}
187 
196  {this->SetRequestedRenderMode(vtkAMRVolumeMapper::RayCastAndTextureRenderMode);}
197 
204  {this->SetRequestedRenderMode(vtkAMRVolumeMapper::RayCastRenderMode);}
205 
213  {this->SetRequestedRenderMode(vtkAMRVolumeMapper::TextureRenderMode);}
214 
221  {this->SetRequestedRenderMode(vtkAMRVolumeMapper::GPURenderMode);}
222 
224 
228  void SetInterpolationMode(int mode);
229  int GetInterpolationMode();
231 
233  {this->SetInterpolationMode(VTK_RESLICE_NEAREST);}
234 
236  {this->SetInterpolationMode(VTK_RESLICE_LINEAR);}
237 
239  {this->SetInterpolationMode(VTK_RESLICE_CUBIC);}
240 
242 
246  vtkSetVector3Macro(NumberOfSamples,int);
247  vtkGetVector3Macro(NumberOfSamples,int);
249 
255  void Render(vtkRenderer *ren, vtkVolume *vol) override;
256 
263  void ReleaseGraphicsResources(vtkWindow *) override;
264 
265  void ProcessUpdateExtentRequest(vtkRenderer *renderer, vtkInformation*info,
266  vtkInformationVector **inputVector,
267  vtkInformationVector *outputVector);
268  void ProcessInformationRequest(vtkRenderer *renderer, vtkInformation*info,
269  vtkInformationVector **inputVector,
270  vtkInformationVector *outputVector);
271  void UpdateResampler(vtkRenderer *ren, vtkOverlappingAMR *amr);
272  void UpdateResamplerFrustrumMethod(vtkRenderer *ren, vtkOverlappingAMR *amr);
273 
275 
278  vtkSetMacro(RequestedResamplingMode, int);
279  vtkGetMacro(RequestedResamplingMode, int);
280  vtkSetMacro(FreezeFocalPoint, bool);
281  vtkGetMacro(FreezeFocalPoint, bool);
283 
285 
289  vtkSetMacro(ResamplerUpdateTolerance, double);
290  vtkGetMacro(ResamplerUpdateTolerance, double);
292 
294 
299  vtkSetMacro(UseDefaultThreading, bool);
300  vtkGetMacro(UseDefaultThreading, bool);
302 
307  static bool ComputeResamplerBoundsFrustumMethod(
308  vtkCamera* camera, vtkRenderer* renderer,
309  const double data_bounds[6], double out_bounds[6]);
310 
311 protected:
313  ~vtkAMRVolumeMapper() override;
314 
315  // see algorithm for more info
316  int FillInputPortInformation(int port, vtkInformation* info) override;
317  void UpdateGrid();
318 
322  int NumberOfSamples[3];
323  double Bounds[6];
324  // This indicates that the input has meta data for
325  // doing demand driven operations.
329  // Cached values for camera focal point and
330  // the distance between the camera position and
331  // focal point
332  double LastFocalPointPosition[3];
334  // This is used when determining if
335  // either the camera or focal point has
336  // move enough to cause the resampler to update
340 
341 private:
342  vtkAMRVolumeMapper(const vtkAMRVolumeMapper&) = delete;
343  void operator=(const vtkAMRVolumeMapper&) = delete;
344 };
345 
346 
347 #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:46
vtkImageReslice.h
vtkVolumeMapper::GetCropping
virtual vtkTypeBool GetCropping()
vtkAMRVolumeMapper::DefaultRenderMode
Definition: vtkAMRVolumeMapper.h:162
vtkAMRVolumeMapper::RayCastAndTextureRenderMode
Definition: vtkAMRVolumeMapper.h:163
vtkAMRVolumeMapper::InternalMapper
vtkSmartVolumeMapper * InternalMapper
Definition: vtkAMRVolumeMapper.h:319
vtkVolume
represents a volume (data & properties) in a rendered scene
Definition: vtkVolume.h:50
vtkAMRVolumeMapper::ResamplerUpdateTolerance
double ResamplerUpdateTolerance
Definition: vtkAMRVolumeMapper.h:337
vtkAbstractVolumeMapper::GetScalarModeAsString
const char * GetScalarModeAsString()
Return the method for obtaining scalar data.
vtkAMRVolumeMapper::LastPostionFPDistance
double LastPostionFPDistance
Definition: vtkAMRVolumeMapper.h:333
vtkAMRVolumeMapper::UseDefaultThreading
bool UseDefaultThreading
Definition: vtkAMRVolumeMapper.h:339
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkAMRVolumeMapper::RequestedResamplingMode
int RequestedResamplingMode
Definition: vtkAMRVolumeMapper.h:327
vtkVolumeMapper::GetBlendMode
virtual int GetBlendMode()
vtkAMRVolumeMapper::FreezeFocalPoint
bool FreezeFocalPoint
Definition: vtkAMRVolumeMapper.h:328
vtkUniformGrid
image data with blanking
Definition: vtkUniformGrid.h:40
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:185
vtkAMRVolumeMapper::UndefinedRenderMode
Definition: vtkAMRVolumeMapper.h:167
vtkAMRVolumeMapper::HasMetaData
bool HasMetaData
Definition: vtkAMRVolumeMapper.h:326
vtkAMRVolumeMapper::TextureRenderMode
Definition: vtkAMRVolumeMapper.h:165
vtkAbstractVolumeMapper::GetArrayId
virtual int GetArrayId()
Definition: vtkAbstractVolumeMapper.h:104
vtkAbstractVolumeMapper::GetArrayAccessMode
virtual int GetArrayAccessMode()
Definition: vtkAbstractVolumeMapper.h:105
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:232
vtkWindow
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkAMRVolumeMapper::SetInterpolationModeToCubic
void SetInterpolationModeToCubic()
Definition: vtkAMRVolumeMapper.h:238
vtkVolumeMapper::FillInputPortInformation
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
vtkAMRVolumeMapper::RayCastRenderMode
Definition: vtkAMRVolumeMapper.h:164
UpdateGrid
void UpdateGrid(const int iteration)
vtkX3D::port
Definition: vtkX3D.h:447
vtkAMRVolumeMapper::GetBounds
void GetBounds(double bounds[6]) override
Get the bounds for this mapper as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).
Definition: vtkAMRVolumeMapper.h:68
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:42
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:68
vtkVolumeMapper.h
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:45
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkSmartVolumeMapper
Adaptive volume mapper.
Definition: vtkSmartVolumeMapper.h:96
vtkAMRVolumeMapper::Grid
vtkUniformGrid * Grid
Definition: vtkAMRVolumeMapper.h:321
vtkCamera
a virtual camera for 3D rendering
Definition: vtkCamera.h:50
vtkAMRVolumeMapper::GridNeedsToBeUpdated
bool GridNeedsToBeUpdated
Definition: vtkAMRVolumeMapper.h:338
vtkAMRVolumeMapper::SetInputConnection
void SetInputConnection(vtkAlgorithmOutput *input) override
Definition: vtkAMRVolumeMapper.h:58
VTK_RESLICE_NEAREST
#define VTK_RESLICE_NEAREST
Definition: vtkImageReslice.h:66
vtkAMRVolumeMapper::SetInterpolationModeToLinear
void SetInterpolationModeToLinear()
Definition: vtkAMRVolumeMapper.h:235
vtkOverlappingAMR
hierarchical dataset of vtkUniformGrids
Definition: vtkOverlappingAMR.h:46
vtkAMRVolumeMapper::SetRequestedRenderModeToRayCast
void SetRequestedRenderModeToRayCast()
Set the requested render mode to vtkAMRVolumeMapper::RayCastRenderMode.
Definition: vtkAMRVolumeMapper.h:203
vtkVolumeMapper::ReleaseGraphicsResources
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
Definition: vtkVolumeMapper.h:201
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
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:86
vtkX3D::info
Definition: vtkX3D.h:376
vtkAlgorithm::New
static vtkAlgorithm * New()
vtkAMRVolumeMapper::SetRequestedRenderModeToTexture
void SetRequestedRenderModeToTexture()
Set the requested render mode to vtkAMRVolumeMapper::TextureRenderMode.
Definition: vtkAMRVolumeMapper.h:212
vtkAlgorithmOutput
Proxy object to connect input/output ports.
Definition: vtkAlgorithmOutput.h:39
vtkRenderer
abstract specification for renderers
Definition: vtkRenderer.h:63
vtkAMRVolumeMapper::GPURenderMode
Definition: vtkAMRVolumeMapper.h:166
vtkVolumeMapper::GetCroppingRegionPlanes
virtual double * GetCroppingRegionPlanes()
VTK_RESLICE_LINEAR
#define VTK_RESLICE_LINEAR
Definition: vtkImageReslice.h:67
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:220
vtkAMRVolumeMapper
AMR class for a volume mapper.
Definition: vtkAMRVolumeMapper.h:43
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:320
vtkX3D::mode
Definition: vtkX3D.h:247
vtkAMRVolumeMapper::SetRequestedRenderModeToRayCastAndTexture
void SetRequestedRenderModeToRayCastAndTexture()
Set the requested render mode to vtkAMRVolumeMapper::RayCastAndTextureRenderMode.
Definition: vtkAMRVolumeMapper.h:195
vtkAMRResampleFilter
Definition: vtkAMRResampleFilter.h:55
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkAMRVolumeMapper::SetCroppingRegionPlanes
void SetCroppingRegionPlanes(double *planes) override
Definition: vtkAMRVolumeMapper.h:136