_representationType[i] = true;
}
_visibleVolume=false;
+ _isRayCasting=true;
+ _isMIP=false;
+ _interpolation=false;
+ _shade=false;
+
+ _volumerendererdata = VolumeRendererData::New();
+ _volumeMapper = vtkVolumeRayCastMapper::New();
+ _newvol = vtkVolume::New();
+ _volumeProperty = vtkVolumeProperty::New();
+ _compositeFunction = vtkVolumeRayCastCompositeFunction::New();
+ _compositeFunctionMIP = vtkVolumeRayCastMIPFunction::New();
+
}
//-------------------------------------------------------------------
vtkClipping3DDataViewer::~vtkClipping3DDataViewer()
// _newvol->VisibilityOn();
-
+
// _volumeMapper = vtkVolumeRayCastMapper::New();
// _volumeMapper->SetInput( this->GetVtkMPRBaseData()->GetImageData() );
// _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
_visibleVolume = visiblevolume;
}
+bool vtkClipping3DDataViewer::GetVisibleVolumeBox()
+{
+ return _visibleVolumeBox;
+}
+//-------------------------------------------------------------------
+void vtkClipping3DDataViewer::SetVisibleVolumeBox(bool visibleBox)
+{
+ _visibleVolumeBox = visibleBox;
+}
//-------------------------------------------------------------------
void vtkClipping3DDataViewer::Configure_Tissue()
_tissuePlanes[i] = vtkPlanes::New();
-
+
int x1,x2,y1,y2,z1,z2;
imagedata->GetExtent(x1,x2,y1,y2,z1,z2);
_tissuePlanes[i]->SetBounds (x1,x2,y1,y2,z1,z2);
-
+
_tissueClipper[i] = vtkClipPolyData::New();
_tissueClipper[i]->SetInput( _tissueStripper[i]->GetOutput() );
_tissueClipper[i]->SetClipFunction( _tissuePlanes[i] );
// _tissueMapper[i]->Update();
}
-
+
// vtkActor tissue
{
// Volume
+
+
+ /** if(_newvol != NULL)
+ {
+ _newvol->Delete();
+ _volumeMapper->Delete();
+ _volumeProperty->Delete();
+ }*/
+
+
+
_tfun = vtkPiecewiseFunction::New();
_ctfun = vtkColorTransferFunction::New();
double range[2];
this->_vtkmprbasedata->GetImageData()->GetScalarRange(range);
double max = range[1];
+
+ printf("EED::vtkClipping3DDataViewer::Configure_Volume max=%f \n",max);
/*
adding the poinst of the transference function
_tfun->AddPoint(max * 2/2 , 1.0);
/*
- Adding the colors to the vectors
+ Adding the colors to the vectors
*/
//RED
redColorsOfColorTransferenceFVector.push_back(0.0);
greenColorsOfColorTransferenceFVector.push_back(0.0);
greenColorsOfColorTransferenceFVector.push_back(1.0);
greenColorsOfColorTransferenceFVector.push_back(0.2);
-
+
//BLUE
blueColorsOfColorTransferenceFVector.push_back(0.0);
blueColorsOfColorTransferenceFVector.push_back(0.0);
blueColorsOfColorTransferenceFVector.push_back(1.0);
blueColorsOfColorTransferenceFVector.push_back(0.0);
blueColorsOfColorTransferenceFVector.push_back(0.0);
- //GREY VALUE
+ //GREY VALUE
greyValueColorsOfColorTransferenceFVector.push_back(max*0/4);
greyValueColorsOfColorTransferenceFVector.push_back(max*1/4);
greyValueColorsOfColorTransferenceFVector.push_back(max*2/4);
// _volumePlanes->SetBounds(x1,x2,y1,y2,z1,z2);
// EED 13/03/2011
-
- _compositeFunction = vtkVolumeRayCastCompositeFunction::New();
- vtkVolumeRayCastMIPFunction* _compositeFunctionMIP = vtkVolumeRayCastMIPFunction::New();
- _volumeMapper = vtkVolumeRayCastMapper::New();
+
+ // _volumeMapper = vtkVolumeRayCastMapper::New();
_volumeMapper->SetInput( this->GetVtkMPRBaseData()->GetImageData() );
-
- _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
-// _volumeMapper->SetVolumeRayCastFunction(_compositeFunctionMIP);
-
+
+
+
+ _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
+
+
+ // _volumeMapper->SetVolumeRayCastFunction(_compositeFunctionMIP);
+
+//
+
_volumeMapper->SetClippingPlanes( _volumePlanes );
_volumeMapper->AutoAdjustSampleDistancesOn();
- _volumeProperty = vtkVolumeProperty::New();
+ _volumeProperty->SetInterpolationTypeToNearest();
+ //_volumeProperty = vtkVolumeProperty::New();
_volumeProperty->SetColor(_ctfun);
_volumeProperty->SetScalarOpacity( _tfun );
// EED 31/03/2008
-
+
_volumeProperty->DisableGradientOpacityOn();
-
- _volumeProperty->SetInterpolationTypeToLinear();
-// _volumeProperty->SetInterpolationTypeToNearest();
-
- _volumeProperty->ShadeOn();
-// _volumeProperty->ShadeOff();
-
-
+
+
+
+// _
+
+
+// _
+
+
// _volumeProperty->SetInterpolationTypeToNearest();
// _volumeProperty->ShadeOff();
// _volumeProperty->SetAmbient(0.3);
// _volumeProperty->SetSpecular(0.8);
// _volumeProperty->DisableGradientOpacityOn();
- _newvol = vtkVolume::New();
+ // _newvol = vtkVolume::New();
_newvol->SetMapper(_volumeMapper );
_newvol->SetProperty(_volumeProperty );
}
+void vtkClipping3DDataViewer::Configure_VolumeBox()
+{
+ cout<<"EED::JPRG::vtkClipping3DDataViewer::Configure_VolumeBox() start"<<endl;
+
+ _volumerendererdata->SetImageData(_vtkmprbasedata->GetImageData());
+
+
+ vector<double> *gv = this->GetGreyValuesTransferenceFVector();
+ vector<double> *op = this->GetIntensityValuesTransferenceFVector();
+
+ printf("EED::vtkClipping3DDataViewer::Configure_VolumeBox _ctfun=%p \n",_ctfun);
+
+
+ _volumerendererdata->SetLookUpTable((vtkLookupTable*)(_ctfun));
+ _volumerendererdata->OpacityChanged(*gv, *op);
+
+ //_wxvtkclipping3Dview->VisibleVolumeActor( false );
+ //_volumerendererdata->ShowVolume(event.IsChecked() );
+ //_volumerendererdata->BoundingBoxChanged(event.IsChecked() );
+
+ cout<<"EED::JPRG::vtkClipping3DDataViewer::Configure_VolumeBox() end"<<endl;
+}
+
+void vtkClipping3DDataViewer::SetRenderer(vtkRenderer* renderer)
+{
+ _volumerendererdata->SetRenderer(renderer);
+
+}
+
+void vtkClipping3DDataViewer::SetInteractor(vtkRenderWindowInteractor* interactor)
+{
+
+ _volumerendererdata->SetInteractor(interactor);
+}
+
+
+void vtkClipping3DDataViewer::BoxActorChanged(bool changed)
+{
+ vector<double> *gv = this->GetGreyValuesTransferenceFVector();
+ vector<double> *op = this->GetIntensityValuesTransferenceFVector();
+
+ _volumerendererdata->ShowVolume(changed);
+ _volumerendererdata->OpacityChanged(*gv, *op);
+ _volumerendererdata->BoundingBoxChanged(changed);
+
+}
+
+void vtkClipping3DDataViewer::UpdateVolumeBox(vector<double> gf, vector<double> vf, vtkColorTransferFunction* ctfun)
+{
+ _volumerendererdata->SetLookUpTable((vtkLookupTable*)(ctfun));
+ _volumerendererdata->OpacityChanged(gf, vf);
+}
+
+
+void vtkClipping3DDataViewer::updateVolume()
+{
+
+ if(_isRayCasting)
+ {
+ _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
+ _volumerendererdata->changeCompositeMIPFunction(0);
+ }
+ else if(_isMIP)
+ {
+ _volumeMapper->SetVolumeRayCastFunction(_compositeFunctionMIP);
+ _volumerendererdata->changeCompositeMIPFunction(1);
+ }
+
+ if(_interpolation)
+ {
+ _volumeProperty->SetInterpolationTypeToLinear();
+ }
+ else
+ {
+ _volumeProperty->SetInterpolationTypeToNearest();
+ }
+
+ if(_shade)
+ {
+ _volumeProperty->ShadeOn();
+ }
+ else
+ {
+ _volumeProperty->ShadeOff();
+ }
+
+}
+
//-------------------------------------------------------------------
void vtkClipping3DDataViewer::Configure()
{
Configure_Tissue();
Configure_Volume();
-
+ Configure_VolumeBox();
// An outline provides context around the data.
//
_outlineData = vtkOutlineFilter::New();
}
//--------------------------------------------------------------------
std::vector<double>* vtkClipping3DDataViewer::GetBlueColorsOfColorTransferenceFVector()
-{
+{
return &blueColorsOfColorTransferenceFVector;
}
//--------------------------------------------------------------------
/*
int i=0,xi,yi,r,g,b,gValue;
vtkImageData *imagedata = this->_vtkmprbasedata->GetImageData();
-
+
HistogramDialog* hDlg=new HistogramDialog(NULL,_T("Histogram Dialog"),imagedata);
- //
+ //
// put in a method
//
int tfSize=this->greyValuesTransferenceFVector.size();
hDlg->addPointToTransferenceFunction(g,in*100);
i++;
}
-
+
}
int ctfSize=this->redColorsOfColorTransferenceFVector.size();
//setting variables if the user wants to do refresh
hDlg->setCTF(_ctfun);
hDlg->setTF(_tfun);
-
+
//
// when the user had changed the transference Function
//
if(hDlg->ShowModal()== wxID_OK )
- {
+ {
// -- vtkPiecewiseFunction --
this->_tfun->RemoveAllPoints();
greyValuesTransferenceFVector.clear();
intensityValuesTransferenceFVector.clear();
-
+
int nTFPoints=hDlg->getSizeTransferenceFunction();
i=0;
while(i<nTFPoints)
greyValuesTransferenceFVector.push_back(xi);
intensityValuesTransferenceFVector.push_back(yi/100.0);
i++;
- }
+ }
// -- vtkColorTransferFunction --
this->_ctfun->RemoveAllPoints ();
//clean colors
greyValueColorsOfColorTransferenceFVector.clear();
int nCTFpoints=hDlg->getSizeBarColor();
- i=0;
+ i=0;
while(i<nCTFpoints)
{
hDlg->getDataBarColorPoint(i,xi,r,g,b);
greyValueColorsOfColorTransferenceFVector.push_back(xi);
i++;
}
-
+
this->_volumeMapper->Update();
this->_newvol->Update();
}
-
+
else
{
-
+
if(hDlg->getRefreshed())
{
int i=0,size;
double in2=intensityValuesTransferenceFVector[i];
this->_tfun->AddPoint( grey1 , in2 );
}
-
+
// -- vtkColorTransferFunction --
_ctfun->RemoveAllPoints ();
-
+
i=0;
- size=greyValueColorsOfColorTransferenceFVector.size();
+ size=greyValueColorsOfColorTransferenceFVector.size();
for(i=0;i<size;i++)
{
double grey2=(greyValueColorsOfColorTransferenceFVector)[i];
this->_volumeMapper->Update();
this->_newvol->Update();
}
-
+
}
hDlg->Destroy();
*/
// -- vtkPiecewiseFunction --
this->_tfun->RemoveAllPoints();
- fscanf(ff,"%s",tmp);
+ fscanf(ff,"%s",tmp);
while ( strcmp(tmp,"--")!=0 )
{
x=atof(tmp);
- fscanf(ff,"%s",tmp);
+ fscanf(ff,"%s",tmp);
val=atof(tmp);
this->_tfun->AddPoint( x*max , val );
- fscanf(ff,"%s",tmp);
+ fscanf(ff,"%s",tmp);
}
this->_ctfun->RemoveAllPoints ();
// -- vtkColorTransferFunction --
while ( !feof(ff))
{
- fscanf(ff,"%s",tmp);
+ fscanf(ff,"%s",tmp);
x=atof(tmp);
- fscanf(ff,"%s",tmp);
+ fscanf(ff,"%s",tmp);
r=atof(tmp);
- fscanf(ff,"%s",tmp);
+ fscanf(ff,"%s",tmp);
g=atof(tmp);
- fscanf(ff,"%s",tmp);
+ fscanf(ff,"%s",tmp);
b=atof(tmp);
- this->_ctfun->AddRGBPoint( x*max , r,g,b );
+ this->_ctfun->AddRGBPoint( x*max , r,g,b );
}
}
void vtkClipping3DDataViewer::setColorTransferFunction(vtkColorTransferFunction* colortable){
-
+
_volumeProperty->SetColor(colortable);
-
+
}
+
+
+void vtkClipping3DDataViewer::SetRayCasting(bool active)
+{
+ _isRayCasting = active;
+
+}
+
+void vtkClipping3DDataViewer::SetMIPActive(bool active)
+{
+ _isMIP = active;
+}
+
+void vtkClipping3DDataViewer::SetInterpolation(bool active)
+{
+ _interpolation = active;
+}
+
+void vtkClipping3DDataViewer::SetShade(bool active)
+{
+ _shade = active;
+}
+