]> Creatis software - creaMaracasVisu.git/blobdiff - lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / Kernel / VTKObjects / VolumeRenderer / volumerenderermanagerdata.cxx
index 9b6a5dd2d7663458cbf4fc9d0cb1ddda2c037793..0d940380698ebbb9bd5cb5f27d34238a95cff1b9 100644 (file)
@@ -9,6 +9,7 @@
 #include "boxSurfaceObserver.h"
 #include "vtkProperty.h"
 
+
 using namespace std;
 
 VolumeRendererManagerData::VolumeRendererManagerData(vtkImageData* vol, std::string dataname){
@@ -26,12 +27,12 @@ VolumeRendererManagerData::VolumeRendererManagerData(vtkImageData* vol, vtkRende
 }
 
 VolumeRendererManagerData::VolumeRendererManagerData(vtkImageData* vol, bool usegpu, std::string dataname){
-    Initialize(vol, dataname, usegpu);    
+    Initialize(vol, dataname, usegpu);
 }
 
 void VolumeRendererManagerData::Initialize(vtkImageData* vol, std::string dataname, bool usegpu){
     _vol = vol;
-    _dataname = dataname;    
+    _dataname = dataname;
 
     _tfun = vtkPiecewiseFunction::New();
     _ctfun = vtkColorTransferFunction::New();
@@ -55,6 +56,9 @@ void VolumeRendererManagerData::Initialize(vtkImageData* vol, std::string datana
     _MIPFunction = 0;
     _boxWidgetS1 = 0;
 
+
+
+/* EED9Juin2011
     if(usegpu && _vol->GetDataDimension() > 2){
         _volumeMappergpu = vtkGPUVolumeRayCastMapper::New();
         _volumeMappergpu->SetClippingPlanes( _volumePlanes );
@@ -78,12 +82,41 @@ void VolumeRendererManagerData::Initialize(vtkImageData* vol, std::string datana
         _volumeMapper->SetInput( _vol );
         _volumeMapper->Update();
     }
+*/
+
+       vtkVolumeMapper *volMapperTmp;
+    if(usegpu && _vol->GetDataDimension() > 2){
+               #if (VTK_MAYOR_VERSION>=5 && VTK_MINOR_VERSION>=6)
+                       _volumeMappergpu                                                                = vtkGPUVolumeRayCastMapper::New();
+                       _volumeMappergpu->AutoAdjustSampleDistancesOn();
+                       volMapperTmp                                                                    = _volumeMappergpu;
+               #else
+                       _compositeFunction                                                              = vtkVolumeRayCastCompositeFunction::New();
+                       _MIPFunction                                                                    = vtkVolumeRayCastMIPFunction::New();
+                       _volumeMapper           = vtkVolumeRayCastMapper::New();
+                       _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
+                       _volumeMapper->AutoAdjustSampleDistancesOn();
+                       volMapperTmp                                                                    = _volumeMapper;
+               #endif
+    }else{
+        _compositeFunction                                                             = vtkVolumeRayCastCompositeFunction::New();
+        _MIPFunction                                                                   = vtkVolumeRayCastMIPFunction::New();
+        _volumeMapper                                                                  = vtkVolumeRayCastMapper::New();
+        _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
+               _volumeMapper->AutoAdjustSampleDistancesOn();
+               volMapperTmp                                                                    = _volumeMapper;
+    }
 
+       volMapperTmp->SetClippingPlanes( _volumePlanes );
+       _newvol->SetMapper(volMapperTmp );
+       volMapperTmp->SetInput( _vol );
+       volMapperTmp->Update();
     _newvol->Update();
 }
 
 
-VolumeRendererManagerData::~VolumeRendererManagerData(){
+VolumeRendererManagerData::~VolumeRendererManagerData()
+{
 
         _tfun->Delete();
         _ctfun->Delete();
@@ -105,8 +138,10 @@ VolumeRendererManagerData::~VolumeRendererManagerData(){
 
 }
 
-void VolumeRendererManagerData::EnableBoundingBox(vtkRenderWindowInteractor* interactor){
-    if(_volumeMappergpu){
+void VolumeRendererManagerData::EnableBoundingBox(vtkRenderWindowInteractor* interactor)
+{
+//EED9Juin2011    if(_volumeMappergpu){
+    if(_boxWidgetS1==NULL){
         _boxWidgetS1 = vtkBoxWidget::New();
         _boxWidgetS1->SetInteractor( interactor );
         _boxWidgetS1->SetPlaceFactor(1.01);
@@ -116,19 +151,31 @@ void VolumeRendererManagerData::EnableBoundingBox(vtkRenderWindowInteractor* int
         _boxWidgetS1->PlaceWidget();
 
         vtkBoxWidgetCallback *callback = vtkBoxWidgetCallback::New();
-        callback->SetMapper(_volumeMappergpu);
+
+               if (_volumeMapper!=0){
+                       callback->SetMapper(_volumeMapper);
+               } else {
+                       callback->SetMapper(_volumeMappergpu);
+               }
+
         _boxWidgetS1->AddObserver(vtkCommand::InteractionEvent, callback);
         callback->Delete();
         _boxWidgetS1->EnabledOn();
         _boxWidgetS1->GetSelectedFaceProperty()->SetOpacity(0.0);
+        cout<<"JPRG::VolumeRendererManagerData::EnableBoundingBox::CREATE"<<endl;
+    }else{
+        cout<<"JPRG::VolumeRendererManagerData::EnableBoundingBox"<<endl;
+        _boxWidgetS1->EnabledOn();
     }
+//EED9Juin2011  }
 }
 
 void VolumeRendererManagerData::DisableBoundingBox(){
     if(_boxWidgetS1){
+        cout<<"JPRG::VolumeRendererManagerData::DisableBoundingBox"<<endl;
         _boxWidgetS1->EnabledOff();
-        _boxWidgetS1->Delete();
-        _boxWidgetS1 = 0;
+        //_boxWidgetS1->Delete();
+        //_boxWidgetS1 = 0;
     }
 }
 
@@ -226,7 +273,7 @@ void VolumeRendererManagerData::setDataname(std::string dataname){
         _dataname = dataname;
 }
 
-void VolumeRendererManagerData::changeCompositeMIPFunction(int function) throw (char *){
+void VolumeRendererManagerData::changeCompositeMIPFunction(int function){
         checkInvariant();
         if(_volumeMapper){
             if(function == 0){
@@ -244,8 +291,9 @@ void VolumeRendererManagerData::SetLookupTable(vtkLookupTable* lookuptable){
      for(int i = 0; i < colort->GetSize(); i++){
          double val[6];
          colort->GetNodeValue(i, val);
-         //cout<< val[0]<<" "<< val[1]<<" "<<val[2]<<" "<< val[3]<<endl;
+         cout<< "JPRG::VolumeRendererManagerData::SetLookupTable::"<<val[0]<<" "<< val[1]<<" "<<val[2]<<" "<< val[3]<<endl;
          _ctfun->AddRGBPoint(val[0], val[1], val[2], val[3]);
      }
      _newvol->Update();
+
 }