#include "boxSurfaceObserver.h"
#include "vtkProperty.h"
+
using namespace std;
VolumeRendererManagerData::VolumeRendererManagerData(vtkImageData* vol, std::string dataname){
}
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();
_MIPFunction = 0;
_boxWidgetS1 = 0;
+
+
+/* EED9Juin2011
if(usegpu && _vol->GetDataDimension() > 2){
_volumeMappergpu = vtkGPUVolumeRayCastMapper::New();
_volumeMappergpu->SetClippingPlanes( _volumePlanes );
_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();
}
-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);
_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;
}
}
_dataname = dataname;
}
-void VolumeRendererManagerData::changeCompositeMIPFunction(int function) throw (char *){
+void VolumeRendererManagerData::changeCompositeMIPFunction(int function){
checkInvariant();
if(_volumeMapper){
if(function == 0){
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();
+
}