00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00053 #ifndef __vtkVolumeTextureMapper_h
00054 #define __vtkVolumeTextureMapper_h
00055 
00056 #include "vtkVolumeMapper.h"
00057 #include "vtkEncodedGradientShader.h"
00058 #include "vtkEncodedGradientEstimator.h"
00059 
00060 class vtkVolume;
00061 class vtkRenderer;
00062 class vtkRenderWindow;
00063 
00064 class VTK_EXPORT vtkVolumeTextureMapper : public vtkVolumeMapper
00065 {
00066 public:
00067   vtkTypeMacro(vtkVolumeTextureMapper,vtkVolumeMapper);
00068   void PrintSelf( ostream& os, vtkIndent index );
00069 
00071   virtual void Update();
00072 
00074   void SetGradientEstimator( vtkEncodedGradientEstimator *gradest );
00075   vtkGetObjectMacro( GradientEstimator, vtkEncodedGradientEstimator );
00076 
00078   vtkGetObjectMacro( GradientShader, vtkEncodedGradientShader );
00079 
00080 
00081 
00083   virtual int GetMapperType() {return VTK_FRAMEBUFFER_VOLUME_MAPPER;};
00084 
00087   float *GetGradientOpacityArray(){return this->GradientOpacityArray;};
00088   unsigned char *GetRGBAArray(){return this->RGBAArray;};
00089   float *GetRedDiffuseShadingTable(){return this->RedDiffuseShadingTable;};
00090   float *GetGreenDiffuseShadingTable(){return this->GreenDiffuseShadingTable;};
00091   float *GetBlueDiffuseShadingTable(){return this->BlueDiffuseShadingTable;};
00092   float *GetRedSpecularShadingTable(){return this->RedSpecularShadingTable;};
00093   float *GetGreenSpecularShadingTable(){return this->GreenSpecularShadingTable;};
00094   float *GetBlueSpecularShadingTable(){return this->BlueSpecularShadingTable;};
00095   unsigned short *GetEncodedNormals(){return this->EncodedNormals;};
00096   unsigned char *GetGradientMagnitudes(){return this->GradientMagnitudes;};
00097   vtkGetMacro( Shade, int );
00098   vtkGetObjectMacro( RenderWindow, vtkRenderWindow );
00099   vtkGetVectorMacro( DataOrigin, float, 3 );
00100   vtkGetVectorMacro( DataSpacing, float, 3 );
00101 
00104   virtual void Render(vtkRenderer *ren, vtkVolume *vol)=0;
00105 
00108   virtual float GetGradientMagnitudeScale();
00109   virtual float GetGradientMagnitudeBias();
00110   
00111 
00112 
00113 
00114 
00115 protected:
00116   vtkVolumeTextureMapper();
00117   ~vtkVolumeTextureMapper();
00118   vtkVolumeTextureMapper(const vtkVolumeTextureMapper &) {};
00119   void operator=(const vtkVolumeTextureMapper &)  {};
00120 
00121   void InitializeRender( vtkRenderer *ren, vtkVolume *vol );
00122 
00123   
00124   vtkEncodedGradientEstimator  *GradientEstimator;
00125   vtkEncodedGradientShader     *GradientShader;
00126   int                          Shade;
00127 
00128   float          *GradientOpacityArray;
00129   unsigned char  *RGBAArray;
00130   int            ArraySize;
00131 
00132   float          *RedDiffuseShadingTable;
00133   float          *GreenDiffuseShadingTable;
00134   float          *BlueDiffuseShadingTable;
00135   float          *RedSpecularShadingTable;
00136   float          *GreenSpecularShadingTable;
00137   float          *BlueSpecularShadingTable;
00138 
00139   float          DataOrigin[3];
00140   float          DataSpacing[3];
00141 
00142   unsigned short *EncodedNormals;
00143   unsigned char  *GradientMagnitudes;
00144 
00145   float          SampleDistance;
00146   
00147   vtkRenderWindow *RenderWindow;
00148 };
00149 
00150 
00151 #endif
00152 
00153