+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+# pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+# This software is governed by the CeCILL-B license under French law and
+# abiding by the rules of distribution of free software. You can use,
+# modify and/ or redistribute the software under the terms of the CeCILL-B
+# license as circulated by CEA, CNRS and INRIA at the following URL
+# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+# or in the file LICENSE.txt.
+#
+# As a counterpart to the access to the source code and rights to copy,
+# modify and redistribute granted by the license, users are provided only
+# with a limited warranty and the software's author, the holder of the
+# economic rights, and the successive licensors have only limited
+# liability.
+#
+# The fact that you are presently reading this means that you have had
+# knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
#include "vtkClipping3DDataViewer.h"
#include "vtkDataSetReader.h"
_visibleTissue[i] = false;
_representationType[i] = true;
}
- _visibleVolume=false;
- _isRayCasting=true;
- _isMIP=false;
- _interpolation=false;
- _shade=false;
+ _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();
+ _volumerendererdata = VolumeRendererData::New();
+ _volumeMapper = vtkVolumeRayCastMapper::New();
+ _newvol = vtkVolume::New();
+ _volumeProperty = vtkVolumeProperty::New();
+ _compositeFunction = vtkVolumeRayCastCompositeFunction::New();
+ _compositeFunctionMIP = vtkVolumeRayCastMIPFunction::New();
}
//-------------------------------------------------------------------
_visibleVolume = visiblevolume;
}
-
-
bool vtkClipping3DDataViewer::GetVisibleVolumeBox()
{
return _visibleVolumeBox;
}
+//-------------------------------------------------------------------
+void vtkClipping3DDataViewer::SetImage()
+{
+ int i;
+ vtkImageData *imagedata=_vtkmprbasedata->GetImageData();
+ for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++)
+ {
+ _mCubes[i]->SetInput( imagedata );
+ } // for
+ _volumeMapper->SetInput( imagedata );
+ _volumerendererdata->SetImageData( imagedata );
+}
//-------------------------------------------------------------------
void vtkClipping3DDataViewer::Configure_Tissue()
{
-
- double range[2];
int i;
- for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++){
+ double range[2];
+ vtkImageData *imagedata=_vtkmprbasedata->GetImageData();
+ imagedata->GetScalarRange( range );
+ for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++)
+ {
// Visualisation - original volume
- vtkImageData *imagedata=_vtkmprbasedata->GetImageData();
- imagedata->GetScalarRange( range );
_mCubes[i] = vtkMarchingCubes::New( );
_mCubes[i]->SetInput( imagedata );
-
_mCubes[i]->SetValue( 0, range[1]*(4+i) / 8 );
// _mCubes[i]->SetValue( 0, 1500 );
-
_tissueStripper[i] = vtkStripper::New();
_tissueStripper[i]->SetInput( _mCubes[i]->GetOutput( ) );
-
-
-
_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] );
_tissueClipper[i]->InsideOutOn( );
-
_tissueMapper[i] = vtkPolyDataMapper::New( );
_tissueMapper[i]->SetInput( _tissueClipper[i]->GetOutput() );
_tissueMapper[i]->ScalarVisibilityOff( );
// _tissueMapper[i]->Update();
-
- }
-
-
+ } // for i
// vtkActor tissue
for (i=0; i< VTKMPRDATA_MAXTISSUE ; i++){
{
// Volume
-
-
/** if(_newvol != NULL)
{
_newvol->Delete();
_volumeProperty->Delete();
}*/
-
-
_tfun = vtkPiecewiseFunction::New();
_ctfun = vtkColorTransferFunction::New();
double range[2];
this->_vtkmprbasedata->GetImageData()->GetScalarRange(range);
double max = range[1];
-
+
/*
adding the poinst of the transference function
*/
// EED 13/03/2011
-
-
// _volumeMapper = vtkVolumeRayCastMapper::New();
_volumeMapper->SetInput( this->GetVtkMPRBaseData()->GetImageData() );
-
-
_volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
-
// _volumeMapper->SetVolumeRayCastFunction(_compositeFunctionMIP);
-
+
//
-
_volumeMapper->SetClippingPlanes( _volumePlanes );
_volumeMapper->AutoAdjustSampleDistancesOn();
_volumeProperty->SetScalarOpacity( _tfun );
// EED 31/03/2008
-
_volumeProperty->DisableGradientOpacityOn();
-
-// _
-
-
-// _
-
-
// _volumeProperty->SetInterpolationTypeToNearest();
// _volumeProperty->ShadeOff();
// _volumeProperty->SetAmbient(0.3);
_newvol->SetMapper(_volumeMapper );
_newvol->SetProperty(_volumeProperty );
- _observerV = boxSurfaceObserver::New();
+ _observerV = boxSurfaceObserver::New();
_observerV->SetPlanes( _volumePlanes );
_observerV->SetActor( _newvol );
_observerV->SetvtkVolumeRayCastMapper( _volumeMapper );
}
+//-----------------------------------------------------------------------------
void vtkClipping3DDataViewer::Configure_VolumeBox()
{
- cout<<"JPRG::vtkClipping3DDataViewer::Configure_VolumeBox()"<<endl;
-
_volumerendererdata->SetImageData(_vtkmprbasedata->GetImageData());
vector<double> *gv = this->GetGreyValuesTransferenceFVector();
vector<double> *op = this->GetIntensityValuesTransferenceFVector();
-
_volumerendererdata->SetLookUpTable((vtkLookupTable*)(_ctfun));
_volumerendererdata->OpacityChanged(*gv, *op);
//_volumerendererdata->BoundingBoxChanged(event.IsChecked() );
}
+//-----------------------------------------------------------------------------
+
void vtkClipping3DDataViewer::SetRenderer(vtkRenderer* renderer)
{
_volumerendererdata->SetRenderer(renderer);
}
+//-----------------------------------------------------------------------------
void vtkClipping3DDataViewer::SetInteractor(vtkRenderWindowInteractor* interactor)
{
}
+//-----------------------------------------------------------------------------
void vtkClipping3DDataViewer::BoxActorChanged(bool changed)
{
vector<double> *gv = this->GetGreyValuesTransferenceFVector();
}
+//-----------------------------------------------------------------------------
void vtkClipping3DDataViewer::UpdateVolumeBox(vector<double> gf, vector<double> vf, vtkColorTransferFunction* ctfun)
{
_volumerendererdata->SetLookUpTable((vtkLookupTable*)(ctfun));
}
+//-----------------------------------------------------------------------------
void vtkClipping3DDataViewer::updateVolume()
{
Configure_VolumeBox();
// An outline provides context around the data.
//
- _outlineData = vtkOutlineFilter::New();
+ _outlineData = vtkOutlineFilter::New();
_outlineData->SetInput((vtkDataSet *) _vtkmprbasedata->GetImageData() );
- _mapOutline = vtkPolyDataMapper::New();
- _mapOutline->SetInput(_outlineData->GetOutput());
- _outline = vtkActor::New();
+ _mapOutline = vtkPolyDataMapper::New();
+
+//EED 4 nov 2015 Estelle
+// _mapOutline->SetInput(_outlineData->GetOutput());
+
+ _outline = vtkActor::New();
_outline->SetMapper(_mapOutline);
_outline->GetProperty()->SetColor(0,0,0);
}