X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FKernel%2FVTKObjects%2FVolumeRenderer%2Fvolumerenderermanagerdata.cxx;h=0d940380698ebbb9bd5cb5f27d34238a95cff1b9;hb=be7adae173311be1149dba830acbccae2cb3ddf3;hp=9b6a5dd2d7663458cbf4fc9d0cb1ddda2c037793;hpb=962d2237c57a96d4a644da68b967abbbe1288840;p=creaMaracasVisu.git diff --git a/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx b/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx index 9b6a5dd..0d94038 100644 --- a/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx +++ b/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx @@ -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"<EnabledOn(); } +//EED9Juin2011 } } void VolumeRendererManagerData::DisableBoundingBox(){ if(_boxWidgetS1){ + cout<<"JPRG::VolumeRendererManagerData::DisableBoundingBox"<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]<<" "<AddRGBPoint(val[0], val[1], val[2], val[3]); } _newvol->Update(); + }