vtkPointGaussianMapper.h 3.98 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/*=========================================================================

  Program:   Visualization Toolkit

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
// .NAME vtkPointGaussianMapper - draw PointGaussians using imposters
// .SECTION Description
// An  mapper that uses imposters to draw PointGaussians. Supports
17 18
// transparency and picking as well. It draws all the points and
// does not require or look at any cell arrays
19

20 21
#ifndef vtkPointGaussianMapper_h
#define vtkPointGaussianMapper_h
22 23 24 25

#include "vtkRenderingCoreModule.h" // For export macro
#include "vtkPolyDataMapper.h"

26 27
class vtkPiecewiseFunction;

28 29 30 31 32 33 34
class VTKRENDERINGCORE_EXPORT vtkPointGaussianMapper : public vtkPolyDataMapper
{
public:
  static vtkPointGaussianMapper* New();
  vtkTypeMacro(vtkPointGaussianMapper, vtkPolyDataMapper)
  void PrintSelf(ostream& os, vtkIndent indent);

35 36 37 38 39 40 41 42 43 44 45 46
  // Description:
  // Set/Get the optional scale transfer function. This is only
  // used when a ScaleArray is also specified.
  void SetScaleFunction(vtkPiecewiseFunction *);
  vtkGetObjectMacro(ScaleFunction,vtkPiecewiseFunction);

  // Description:
  // The size of the table used in computing scale, used when
  // converting a vtkPiecewiseFunction to a table
  vtkSetMacro(ScaleTableSize, int);
  vtkGetMacro(ScaleTableSize, int);

47 48 49 50 51
  // Description:
  // Convenience method to set the array to scale with.
  vtkSetStringMacro(ScaleArray);
  vtkGetStringMacro(ScaleArray);

52
  // Description:
53 54 55 56 57 58 59 60
  // Set the default scale factor of the point gaussians.  This
  // defaults to 1.0. All radius computations will be scaled by the factor
  // including the ScaleArray. If a vtkPiecewideFunction is used the
  // scaling happens prior to the function lookup.
  // A scale factor of 0.0 indicates that the splats should be rendered
  // as simple points.
  vtkSetMacro(ScaleFactor,double);
  vtkGetMacro(ScaleFactor,double);
61

62 63 64 65 66 67
  // Description:
  // Treat the points/splats as emissive light sources. The default is true.
  vtkSetMacro(Emissive, int);
  vtkGetMacro(Emissive, int);
  vtkBooleanMacro(Emissive, int);

68 69 70 71 72 73
  // Description:
  // Set/Get the optional opacity transfer function. This is only
  // used when an OpacityArray is also specified.
  void SetScalarOpacityFunction(vtkPiecewiseFunction *);
  vtkGetObjectMacro(ScalarOpacityFunction,vtkPiecewiseFunction);

74 75 76 77 78 79
  // Description:
  // The size of the table used in computing opacities, used when
  // converting a vtkPiecewiseFunction to a table
  vtkSetMacro(OpacityTableSize, int);
  vtkGetMacro(OpacityTableSize, int);

80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
  // Description:
  // Method to set the optional opacity array.  If specified this
  // array will be used to generate the opacity values.
  vtkSetStringMacro(OpacityArray);
  vtkGetStringMacro(OpacityArray);

  // Description:
  // Method to override the fragment shader code for the splat.  You can
  // set this to draw other shapes. For the OPenGL2 backend some of
  // the variables you can use and/or modify include,
  //   opacity - 0.0 to 1.0
  //   diffuseColor - vec3
  //   ambientColor - vec3
  //   offsetVCVSOutput - vec2 offset in view coordinates from the splat center
  vtkSetStringMacro(SplatShaderCode);
  vtkGetStringMacro(SplatShaderCode);

97 98 99 100 101
protected:
  vtkPointGaussianMapper();
  ~vtkPointGaussianMapper();

  char *ScaleArray;
102 103 104
  char *OpacityArray;
  char *SplatShaderCode;

105 106 107
  vtkPiecewiseFunction *ScaleFunction;
  int ScaleTableSize;

108
  vtkPiecewiseFunction *ScalarOpacityFunction;
109
  int OpacityTableSize;
110

111
  double ScaleFactor;
112
  int Emissive;
113 114 115 116 117 118 119

private:
  vtkPointGaussianMapper(const vtkPointGaussianMapper&); // Not implemented.
  void operator=(const vtkPointGaussianMapper&); // Not implemented.
};

#endif