From 962d2237c57a96d4a644da68b967abbbe1288840 Mon Sep 17 00:00:00 2001 From: Juan Prieto Date: Tue, 7 Jun 2011 13:37:26 +0000 Subject: [PATCH] changes to volume rendering base --- CMakeLists.txt | 2 +- appli/QtVTKViewer/CMakeLists.txt | 11 +- appli/QtVTKViewer/qtvtkviewer.cxx | 2 +- lib/GUI/CMakeLists.txt | 3 +- lib/GUI/Qt/Viewers/qtvtkviewerwidget.cxx | 1 + lib/GUI/Qt/Viewers/qtvtkviewerwidget.h | 2 +- lib/GUI/Qt/Viewers/qtvtkviewerwidget.ui | 92 +++++++---- lib/GUI/Qt/VolumeRenderer/CMakeLists.txt | 2 +- .../VolumeRenderer/qtvolumerendererpanel.cxx | 56 ++++--- .../Qt/VolumeRenderer/qtvolumerendererpanel.h | 33 +--- .../VolumeRenderer/qtvolumerendererpanel.ui | 146 +++++++++++------- .../ViewerWidgets/imageplanewidget.cxx | 4 + .../ViewerWidgets/imageplanewidget.h | 3 + .../volumerenderermanagerdata.cxx | 136 +++++++++++++--- .../volumerenderermanagerdata.h | 47 +++++- .../wxWindows/widgets/wxMaracasRendererView.h | 2 +- ...xMaracasSurfaceRenderingManagerDataMhd.cxx | 2 +- 17 files changed, 372 insertions(+), 172 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3259dd4..525618d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,7 +85,7 @@ INCLUDE_DIRECTORIES( ${PROJECT_BINARY_DIR}/lib/GUI/Qt/Viewers ${PROJECT_SOURCE_DIR}/lib/GUI/Wx/VolumeRenderer - + ${PROJECT_SOURCE_DIR}/lib/GUI/Base/VolumeRenderer ${PROJECT_SOURCE_DIR}/lib/Kernel/VTKObjects/ViewerWidgets ${PROJECT_SOURCE_DIR}/lib/Kernel/VTKObjects/VolumeRenderer diff --git a/appli/QtVTKViewer/CMakeLists.txt b/appli/QtVTKViewer/CMakeLists.txt index fb7198a..4ce2af6 100644 --- a/appli/QtVTKViewer/CMakeLists.txt +++ b/appli/QtVTKViewer/CMakeLists.txt @@ -33,16 +33,15 @@ INCLUDE_DIRECTORIES ( # DEPENDENCIES (LIBRARIES TO LINK WITH) SET ( ${EXE_NAME}_LINK_LIBRARIES GUIQtViewers - GUIQtVolumeRenderer - KernelVolumeRenderer - KernelViewerWidgets - ${VTK_LIBRARIES} + GUIQtVolumeRenderer + ITKVTKImport + #${VTK_LIBRARIES} ${QT_LIBRARIES} - QVTK + QVTK # ${WXWIDGETS_LIBRARIES} # ${KWWidgets_LIBRARIES} # ${VTK_LIBRARIES} - ${ITK_LIBRARIES} + # ${ITK_LIBRARIES} # ${GDCM_LIBRARIES} # ${BOOST_LIBRARIES} diff --git a/appli/QtVTKViewer/qtvtkviewer.cxx b/appli/QtVTKViewer/qtvtkviewer.cxx index dcafe09..a4388d0 100644 --- a/appli/QtVTKViewer/qtvtkviewer.cxx +++ b/appli/QtVTKViewer/qtvtkviewer.cxx @@ -53,7 +53,7 @@ int main(int argc, char **argv) if (argc < 2) { - std::cout << "ERROR: data file name argument missing." + std::cout << "ERROR: Image filename missing, Filename RGB Image 2D" << std::endl ; return EXIT_FAILURE; } diff --git a/lib/GUI/CMakeLists.txt b/lib/GUI/CMakeLists.txt index f7295b2..01868ac 100644 --- a/lib/GUI/CMakeLists.txt +++ b/lib/GUI/CMakeLists.txt @@ -1,4 +1,5 @@ # Add a ADD_SUBDIRECTORY command for each of your libraries ADD_SUBDIRECTORY(Qt) ADD_SUBDIRECTORY(Wx) - \ No newline at end of file +ADD_SUBDIRECTORY(Base) + diff --git a/lib/GUI/Qt/Viewers/qtvtkviewerwidget.cxx b/lib/GUI/Qt/Viewers/qtvtkviewerwidget.cxx index cadcacb..3d9be6e 100644 --- a/lib/GUI/Qt/Viewers/qtvtkviewerwidget.cxx +++ b/lib/GUI/Qt/Viewers/qtvtkviewerwidget.cxx @@ -10,6 +10,7 @@ QtVTKViewerWidget::QtVTKViewerWidget(QWidget *parent) : this->m_VolumeRender->SetRenderer(this->getRenderer()); + this->m_VolumeRender->SetInteractor(this->_qtvtkviewer->GetRenderWindow()->GetInteractor()); } QtVTKViewerWidget::~QtVTKViewerWidget() diff --git a/lib/GUI/Qt/Viewers/qtvtkviewerwidget.h b/lib/GUI/Qt/Viewers/qtvtkviewerwidget.h index 619aa23..70be614 100644 --- a/lib/GUI/Qt/Viewers/qtvtkviewerwidget.h +++ b/lib/GUI/Qt/Viewers/qtvtkviewerwidget.h @@ -26,7 +26,7 @@ public: void setImage(vtkImageData* img); - void SetLookupTable(vtkLookupTable *lookuptable); + void SetLookupTable(vtkLookupTable *lookuptable); private slots: void on_checkBoxShowPlanes_clicked(); diff --git a/lib/GUI/Qt/Viewers/qtvtkviewerwidget.ui b/lib/GUI/Qt/Viewers/qtvtkviewerwidget.ui index 1d5cd63..c9ba272 100644 --- a/lib/GUI/Qt/Viewers/qtvtkviewerwidget.ui +++ b/lib/GUI/Qt/Viewers/qtvtkviewerwidget.ui @@ -2,39 +2,45 @@ QtVTKViewerWidget - - - 0 - 0 - 626 - 624 - - Form - - - - - - 14 - 75 - true - - - - Viewer Controls - - - - + + + + 2 + 0 + + + + 1 + + + + + 0 + 0 + 239 + 417 + + + + Image Widget + true + + + 10 + 20 + 111 + 22 + + Show Planes @@ -45,17 +51,43 @@ false - - - - - + + + + + 0 + 0 + 176 + 417 + + + + Volume Rendering + + + + + 0 + 0 + 181 + 121 + + + + + 10 + 0 + + + + + - 1 + 8 0 diff --git a/lib/GUI/Qt/VolumeRenderer/CMakeLists.txt b/lib/GUI/Qt/VolumeRenderer/CMakeLists.txt index b45db09..19f47cd 100644 --- a/lib/GUI/Qt/VolumeRenderer/CMakeLists.txt +++ b/lib/GUI/Qt/VolumeRenderer/CMakeLists.txt @@ -89,7 +89,7 @@ IF ( BUILD_${LIBRARY_NAME} ) # ${BOOST_LIBRARIES} ${QT_LIBRARIES} QVTK - KernelVolumeRenderer + BaseVolumeRenderer # If this library must link against other libraries # USER! : Add here any extra Library you need diff --git a/lib/GUI/Qt/VolumeRenderer/qtvolumerendererpanel.cxx b/lib/GUI/Qt/VolumeRenderer/qtvolumerendererpanel.cxx index e7badc3..0ba1f77 100644 --- a/lib/GUI/Qt/VolumeRenderer/qtvolumerendererpanel.cxx +++ b/lib/GUI/Qt/VolumeRenderer/qtvolumerendererpanel.cxx @@ -1,14 +1,14 @@ #include "qtvolumerendererpanel.h" #include "ui_qtvolumerendererpanel.h" +#include "qmessagebox.h" + +using namespace std; QtVolumeRendererPanel::QtVolumeRendererPanel(QWidget *parent) : QWidget(parent), ui(new Ui::QtVolumeRendererPanel) { - ui->setupUi(this); - m_volrenddata = 0; - m_ImageData = 0; - m_Render = 0; + ui->setupUi(this); } QtVolumeRendererPanel::~QtVolumeRendererPanel() @@ -18,29 +18,43 @@ QtVolumeRendererPanel::~QtVolumeRendererPanel() void QtVolumeRendererPanel::on_checkBoxShowVolume_clicked(bool checked) { - if(checked){ - invariant(); - m_volrenddata = new VolumeRendererManagerData(m_ImageData, m_Render); - }else{ - delete m_volrenddata; - m_volrenddata = 0; + try{ + ShowVolume(checked); + on_opacitySlider_valueChanged(this->ui->opacitySlider->value()); + }catch(char * e){ + cout<ui->lineEditOpacity->setText(QString::number(value)); + + double* range = ImageData->GetScalarRange(); + vector greylevel; + greylevel.push_back(range[0]); + greylevel.push_back(range[1]); + vector vectvalue; + vectvalue.push_back(value/100.0); + vectvalue.push_back(value/100.0); + + OpacityChanged(greylevel, vectvalue); + }catch(char * e){ + cout< -#include "volumerenderermanagerdata.h" +#include "volumerendererdata.h" namespace Ui { class QtVolumeRendererPanel; } -class QtVolumeRendererPanel : public QWidget +class QtVolumeRendererPanel : public QWidget, public VolumeRendererData { Q_OBJECT public: explicit QtVolumeRendererPanel(QWidget *parent = 0); - ~QtVolumeRendererPanel(); - - /* - * set the image data to the volume renderer - */ - void SetImageData(vtkImageData* img){ - m_ImageData = img; - } - - /** - */ - void SetRenderer(vtkRenderer* render){ - m_Render = render; - } - - - void SetLookUpTable(vtkLookupTable *lookuptable){ - m_Lookuptable = lookuptable; - } + ~QtVolumeRendererPanel(); private slots: void on_checkBoxShowVolume_clicked(bool checked); - void on_opacitySlider_valueChanged(int value); + void on_opacitySlider_valueChanged(int value); + + void on_checkBoxBoundingBox_clicked(bool checked); private: Ui::QtVolumeRendererPanel *ui; void invariant(); -protected: - VolumeRendererManagerData* m_volrenddata; - vtkImageData* m_ImageData; - vtkRenderer* m_Render; - vtkLookupTable* m_Lookuptable; }; #endif // QTVOLUMERENDERERPANEL_H diff --git a/lib/GUI/Qt/VolumeRenderer/qtvolumerendererpanel.ui b/lib/GUI/Qt/VolumeRenderer/qtvolumerendererpanel.ui index 8553722..83220b1 100644 --- a/lib/GUI/Qt/VolumeRenderer/qtvolumerendererpanel.ui +++ b/lib/GUI/Qt/VolumeRenderer/qtvolumerendererpanel.ui @@ -6,8 +6,8 @@ 0 0 - 432 - 360 + 147 + 107 @@ -15,63 +15,58 @@ - - - Volume Rendering Controls - - + + + + + Add or remove the volume from the viewer + + + Show + + + + + + + false + + + Bounding box to view the volume, control the bounding box with the handles + + + Box + + + + - - - 1 - - - - - 0 - 0 - 414 - 257 - - - - Add/Remove - - - - - 50 - 40 - 121 - 22 - + + + + + Opacity + + + + - Show Volume + 100 + + + true - - - - - 0 - 0 - 414 - 257 - - - - Opacity - + + - - - 10 - 10 - 141 - 21 - + + false + + + false Changes the opacity of the volume rendered @@ -101,13 +96,50 @@ QSlider::TicksAbove - opacitySlider - label - - + + + + checkBoxShowVolume + checkBoxBoundingBox + opacitySlider + lineEditOpacity + - + + + checkBoxShowVolume + toggled(bool) + checkBoxBoundingBox + setEnabled(bool) + + + 57 + 21 + + + 110 + 25 + + + + + checkBoxShowVolume + toggled(bool) + opacitySlider + setEnabled(bool) + + + 61 + 30 + + + 47 + 86 + + + + diff --git a/lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.cxx b/lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.cxx index 8cd6418..4e81652 100644 --- a/lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.cxx +++ b/lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.cxx @@ -67,6 +67,10 @@ void ImagePlaneWidget::SetLookupTable(vtkLookupTable *lookuptable){ _zwidget->SetLookupTable(lookuptable); } +void ImagePlaneWidget::SetColorTable(vtkColorTransferFunction *colortransfer){ + SetLookupTable((vtkLookupTable*)colortransfer); +} + void ImagePlaneWidget::showPlanes(bool show){ this->invariant(); if(show){ diff --git a/lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.h b/lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.h index 59647ef..1dae6bd 100644 --- a/lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.h +++ b/lib/Kernel/VTKObjects/ViewerWidgets/imageplanewidget.h @@ -6,6 +6,7 @@ #include "vtkRendererCollection.h" #include "vtkImagePlaneWidget.h" #include "vtkImageData.h" +#include "vtkColorTransferFunction.h" class ImagePlaneWidget { @@ -16,6 +17,8 @@ public: virtual void SetLookupTable(vtkLookupTable *lookuptable); + virtual void SetColorTable(vtkColorTransferFunction *lookuptable); + virtual void showPlanes(bool show); void initialize(vtkRenderWindowInteractor* interactor); diff --git a/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx b/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx index e820153..9b6a5dd 100644 --- a/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx +++ b/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.cxx @@ -5,6 +5,12 @@ ** Start of data viewmanagerData *********************************************************************************************/ +#include "vtkStripper.h" +#include "boxSurfaceObserver.h" +#include "vtkProperty.h" + +using namespace std; + VolumeRendererManagerData::VolumeRendererManagerData(vtkImageData* vol, std::string dataname){ Initialize(vol, dataname); @@ -16,23 +22,22 @@ VolumeRendererManagerData::VolumeRendererManagerData(vtkImageData* vol, vtkRende Initialize(vol, dataname); render->AddActor(this->getProp3D()); + } -void VolumeRendererManagerData::Initialize(vtkImageData* vol, std::string dataname){ +VolumeRendererManagerData::VolumeRendererManagerData(vtkImageData* vol, bool usegpu, std::string dataname){ + 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(); _volumePlanes = vtkPlanes::New(); - _compositeFunction = vtkVolumeRayCastCompositeFunction::New(); - _MIPFunction = vtkVolumeRayCastMIPFunction::New(); - _volumeMapper = vtkVolumeRayCastMapper::New(); - _volumeMapper->SetVolumeRayCastFunction(_compositeFunction); - _volumeMapper->SetClippingPlanes( _volumePlanes ); - _volumeMapper->AutoAdjustSampleDistancesOn(); _volumeProperty = vtkVolumeProperty::New(); _volumeProperty->SetInterpolationTypeToLinear(); //_volumeProperty->ShadeOn(); @@ -40,11 +45,40 @@ void VolumeRendererManagerData::Initialize(vtkImageData* vol, std::string datana _volumeProperty->SetColor(_ctfun); _volumeProperty->SetScalarOpacity(_tfun ); + _newvol = vtkVolume::New(); - _newvol->SetMapper(_volumeMapper ); _newvol->SetProperty(_volumeProperty ); - _volumeMapper->SetInput( _vol ); - _volumeMapper->Update(); + + _volumeMapper = 0; + _volumeMappergpu = 0; + _compositeFunction = 0; + _MIPFunction = 0; + _boxWidgetS1 = 0; + + if(usegpu && _vol->GetDataDimension() > 2){ + _volumeMappergpu = vtkGPUVolumeRayCastMapper::New(); + _volumeMappergpu->SetClippingPlanes( _volumePlanes ); + _volumeMappergpu->AutoAdjustSampleDistancesOn(); + + _newvol->SetMapper(_volumeMappergpu ); + + _volumeMappergpu->SetInput( _vol ); + _volumeMappergpu->Update(); + }else{ + _compositeFunction = vtkVolumeRayCastCompositeFunction::New(); + _MIPFunction = vtkVolumeRayCastMIPFunction::New(); + + _volumeMapper = vtkVolumeRayCastMapper::New(); + _volumeMapper->SetVolumeRayCastFunction(_compositeFunction); + _volumeMapper->SetClippingPlanes( _volumePlanes ); + _volumeMapper->AutoAdjustSampleDistancesOn(); + + _newvol->SetMapper(_volumeMapper ); + + _volumeMapper->SetInput( _vol ); + _volumeMapper->Update(); + } + _newvol->Update(); } @@ -54,12 +88,50 @@ VolumeRendererManagerData::~VolumeRendererManagerData(){ _tfun->Delete(); _ctfun->Delete(); _volumePlanes->Delete(); - _compositeFunction->Delete(); - _volumeMapper->Delete(); _volumeProperty->Delete(); _newvol->Delete(); + if(_compositeFunction) + _compositeFunction->Delete(); + if(_MIPFunction) + _MIPFunction->Delete(); + if(_volumeMapper) + _volumeMapper->Delete(); + if(_volumeMappergpu) + _volumeMappergpu->Delete(); + if(_boxWidgetS1){ + DisableBoundingBox(); + } + +} + +void VolumeRendererManagerData::EnableBoundingBox(vtkRenderWindowInteractor* interactor){ + if(_volumeMappergpu){ + _boxWidgetS1 = vtkBoxWidget::New(); + _boxWidgetS1->SetInteractor( interactor ); + _boxWidgetS1->SetPlaceFactor(1.01); + + _boxWidgetS1->SetInput( _vol ); + _boxWidgetS1->InsideOutOn(); + _boxWidgetS1->PlaceWidget(); + + vtkBoxWidgetCallback *callback = vtkBoxWidgetCallback::New(); + callback->SetMapper(_volumeMappergpu); + _boxWidgetS1->AddObserver(vtkCommand::InteractionEvent, callback); + callback->Delete(); + _boxWidgetS1->EnabledOn(); + _boxWidgetS1->GetSelectedFaceProperty()->SetOpacity(0.0); + } +} + +void VolumeRendererManagerData::DisableBoundingBox(){ + if(_boxWidgetS1){ + _boxWidgetS1->EnabledOff(); + _boxWidgetS1->Delete(); + _boxWidgetS1 = 0; + } } + /** ** Set Volume Color **/ @@ -70,7 +142,7 @@ void VolumeRendererManagerData::setVolumeColor(std::vector& greylevelcol { _ctfun->RemoveAllPoints(); - for(int i = 0; i < greylevelcolors.size();i++){ + for(unsigned int i = 0; i < greylevelcolors.size();i++){ _ctfun->AddRGBPoint(greylevelcolors[i], red[i],green[i], blue[i]); //std::cout<<"VolumeRendererManagerData::setVolumeColor "<& greylevelcol void VolumeRendererManagerData::setVolumeOpacity(std::vector greylevel,std::vector value){ _tfun->RemoveAllPoints(); - for(int i = 0; i < greylevel.size();i++){ + for(unsigned int i = 0; i < greylevel.size();i++){ _tfun->AddPoint(greylevel[i], value[i]); - //std::cout<<"VolumeRendererManagerData::setVolumeOpacity "<Update(); } +/** +** Volume Opacity +**/ +void VolumeRendererManagerData::setVolumeOpacity(std::vector greylevel,double value){ + std::vector valuevector; + for(unsigned i = 0; i < greylevel.size(); i++){ + valuevector.push_back(value); + } + setVolumeOpacity(greylevel, valuevector); +} + /** ** Check if the variables are setted correctly **/ @@ -100,7 +183,7 @@ void VolumeRendererManagerData::checkInvariant()throw (char *){ if(!_MIPFunction){ throw "No MIP function initialized"; } - if(!_volumeMapper){ + if(!_volumeMapper && !_volumeMappergpu){ throw "No volume mapper initialized"; } } @@ -145,15 +228,24 @@ void VolumeRendererManagerData::setDataname(std::string dataname){ void VolumeRendererManagerData::changeCompositeMIPFunction(int function) throw (char *){ checkInvariant(); - if(function == 0){ - _volumeMapper->SetVolumeRayCastFunction(_compositeFunction); - }else{ - _volumeMapper->SetVolumeRayCastFunction(_MIPFunction); + if(_volumeMapper){ + if(function == 0){ + _volumeMapper->SetVolumeRayCastFunction(_compositeFunction); + }else{ + _volumeMapper->SetVolumeRayCastFunction(_MIPFunction); + } } } void VolumeRendererManagerData::SetLookupTable(vtkLookupTable* lookuptable){ _ctfun->RemoveAllPoints(); - _ctfun->DeepCopy((vtkColorTransferFunction*)lookuptable); + vtkColorTransferFunction* colort = (vtkColorTransferFunction*)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(); } diff --git a/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.h b/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.h index ad0ba5f..8023728 100644 --- a/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.h +++ b/lib/Kernel/VTKObjects/VolumeRenderer/volumerenderermanagerdata.h @@ -15,13 +15,45 @@ #include #include #include +#include +#include +#include "vtkCommand.h" +// Callback for moving the planes from the box widget to the mapper +class vtkBoxWidgetCallback : public vtkCommand +{ +public: + static vtkBoxWidgetCallback *New() + { return new vtkBoxWidgetCallback; } + virtual void Execute(vtkObject *caller, unsigned long, void*) + { + vtkBoxWidget *widget = reinterpret_cast(caller); + if (this->Mapper) + { + vtkPlanes *planes = vtkPlanes::New(); + widget->GetPlanes(planes); + this->Mapper->SetClippingPlanes(planes); + planes->Delete(); + } + } + void SetMapper(vtkGPUVolumeRayCastMapper* m) + { this->Mapper = m; } + +protected: + vtkBoxWidgetCallback() + { this->Mapper = 0; } + + //vtkVolumeRayCastMapper *Mapper; + vtkGPUVolumeRayCastMapper *Mapper; +}; -class VolumeRendererManagerData { + +class VolumeRendererManagerData : public vtkObject{ public: VolumeRendererManagerData(vtkImageData* vol, std::string dataname=""); VolumeRendererManagerData(vtkImageData* vol, vtkRenderer* render, std::string dataname=""); + VolumeRendererManagerData(vtkImageData* vol, bool usegpu, std::string dataname=""); ~VolumeRendererManagerData(); /** @@ -71,6 +103,10 @@ public: ** Volume Opacity **/ void setVolumeOpacity(std::vector greylevel,std::vector value); + /** + ** Volume Opacity + **/ + void setVolumeOpacity(std::vector greylevel,double value); vtkPiecewiseFunction* GetTransferFunction(){ return _tfun; @@ -84,6 +120,8 @@ public: void SetLookupTable(vtkLookupTable* lookuptable); + void EnableBoundingBox(vtkRenderWindowInteractor* interactor); + void DisableBoundingBox(); protected: /** * Prop 3D (data actor) @@ -105,13 +143,18 @@ private: vtkVolumeRayCastCompositeFunction *_compositeFunction; vtkPlanes *_volumePlanes; vtkVolumeRayCastMapper *_volumeMapper; + vtkGPUVolumeRayCastMapper *_volumeMappergpu; vtkVolumeProperty *_volumeProperty; vtkVolume *_newvol; vtkPiecewiseFunction* _tfun; vtkColorTransferFunction* _ctfun; vtkVolumeRayCastMIPFunction* _MIPFunction; + /** + ** boxwidget to control the volume + **/ + vtkBoxWidget* _boxWidgetS1; - void Initialize(vtkImageData* vol, std::string dataname); + void Initialize(vtkImageData* vol, std::string dataname, bool usegpu = false); }; diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.h index 08e209f..fa7c2fe 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.h @@ -19,7 +19,7 @@ #include "wxMaracasRendererView.h" #include "wxMaracasRenderTabbedPanel.h" -#include "volumerenderermanager.h".h" +#include "volumerenderermanager.h" #include "wxMaracasSurfaceRenderingManager.h" class creaMaracasVisu_EXPORT wxMaracasRendererView : public wxPanel diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx index 58a5db3..eb991c0 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx @@ -38,7 +38,7 @@ wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd boxSurfaceObserver* observer = boxSurfaceObserver::New(); vtkStripper* striper = vtkStripper::New(); - striper->SetInput( _cleanFilter->GetOutput() ); + striper->SetInput( _cleanFilter->GetOutput() ); //striper->SetInput( _cubesFilter->GetOutput() ); striper->Update(); -- 2.45.2