00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 #ifndef __mitkCUDAFullVRScene_h
00011 #define __mitkCUDAFullVRScene_h
00012 
00013 #include "mitkRCPtr.h"
00014 #include "mitkVis2Scene3D.h"
00015 #include "mitkCUDAVolumeRenderingIncludes.h"
00016 #include "modules/mitkCUDAFullVR.h"
00017 #include "mitkICVolume.h"
00018 #include "mitkRGBATransferFunction1D.h"
00019 
00026 class MITK_CUDA_VOLUME_RENDERING_API mitkCUDAFullVRScene : public mitkVis2Scene3D
00027 {
00028 public:
00029     MITK_TYPE(mitkCUDAFullVRScene,mitkVis2Scene3D)
00030     mitkCUDAFullVRScene();
00031 
00035     virtual void RenderGL();
00036 
00041     void SetData(mitkICVolume *data);
00042 
00046     void SetDataModified();
00047 
00054     void SetBackGroundColor(float r,float g, float b);
00055 
00062     void GetBackGroundColor(float &r,float &g, float &b);
00063 
00068     mitkRGBATransferFunction1D* GetTransferFunction();
00069 
00074     void SetTransferFunction(mitkRGBATransferFunction1D* tf);
00075 
00081     void SetStdSampleDistance(float stdSampleDistance);
00082 
00088     float GetStdSampleDistance();
00089 
00094     void SetShade(bool shade);
00095     
00100     bool GetShade();
00101 
00105     void ShadeOn();
00106     
00110     void ShadeOff();
00111 
00118     void SetLightDirection(float x,float y,float z);
00119     
00126     void GetLightDirection(float &x,float &y,float &z);
00127 
00132     void SetLightIntensity(float intensity);
00133     
00140     void SetLightColor(float r,float g,float b);
00141 
00146     void SetAmbient(float value);
00147     
00152     float GetAmbient();
00153 
00158     void SetDiffuse(float value);
00159     
00164     float GetDiffuse();
00165 
00170     void SetSpecular(float value);
00171     
00176     float GetSpecular();
00177 
00182     void SetSpecularPower(float value);
00183     
00188     float GetSpecularPower();
00189 
00194     void RotateLightDirection(bool turnOn);
00195 
00199     virtual void OnMouseDown(int mouseButton, bool ctrlDown, bool shiftDown, int xPos, int yPos);
00203     virtual void OnMouseUp(int mouseButton, bool ctrlDown, bool shiftDown, int xPos, int yPos);
00207     virtual void OnMouseMove(bool ctrlDown, bool shiftDown, int xPos, int yPos);
00208     
00213     void SetIllustrativeShading(int illustrative);
00214 
00219     bool GetIllustrativeShading();
00220 
00225     void SetCroppingBounds(const float CroppingBounds[6]);
00226 
00231     void GetCroppingBounds(float CroppingBounds[6]);
00232 
00237     void SetPreintegration(bool preInt);
00238 
00243     bool GetPreintegration();
00244 
00245     mitkCUDAFullVR& GetKernelModule() { return m_module; }
00246     
00247 
00248 protected:
00249     virtual ~mitkCUDAFullVRScene();
00250     virtual void GetSize3D(float size[3]);
00251 
00252 private:
00253     mitkCUDAFullVRScene(const mitkCUDAFullVRScene&);
00254     void operator = (const mitkCUDAFullVRScene&);
00255 
00256 private:
00257     mitkRCPtr<mitkICVolume> m_Data;
00258     mitkRCPtr<mitkRGBATransferFunction1D> m_TF;
00259 
00260     mitkLocalVersion m_TFVersion;
00261 
00262     mitkCUDAFullVR m_module;
00263     
00264     bool m_glewInit;
00265     bool m_dataModified;
00266 
00267     bool m_RotateLightDirection;
00268     bool m_RotatingLightDirection;
00269 
00270     mitkVis2Vector4 m_OldLightDirection;
00271 
00272     bool m_PreIntegration;
00273 };
00274 
00275 #endif