]> Creatis software - creaMaracasVisu.git/blobdiff - lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx
addition of surface rendering, qt support
[creaMaracasVisu.git] / lib / Kernel / VTKObjects / VolumeRenderer / volumerenderermanagerdata.cxx
index 9b6a5dd2d7663458cbf4fc9d0cb1ddda2c037793..ba1706c63b4298bc12540cddf4954d2cbc70ff9a 100644 (file)
@@ -9,6 +9,7 @@
 #include "boxSurfaceObserver.h"
 #include "vtkProperty.h"
 
+
 using namespace std;
 
 VolumeRendererManagerData::VolumeRendererManagerData(vtkImageData* vol, std::string dataname){
@@ -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){
         _boxWidgetS1 = vtkBoxWidget::New();
         _boxWidgetS1->SetInteractor( interactor );
         _boxWidgetS1->SetPlaceFactor(1.01);
@@ -116,19 +151,28 @@ 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);
+    }else{
+        _boxWidgetS1->EnabledOn();
     }
+//EED9Juin2011  }
 }
 
 void VolumeRendererManagerData::DisableBoundingBox(){
     if(_boxWidgetS1){
         _boxWidgetS1->EnabledOff();
-        _boxWidgetS1->Delete();
-        _boxWidgetS1 = 0;
+        //_boxWidgetS1->Delete();
+        //_boxWidgetS1 = 0;
     }
 }