+#include "bbcreaMaracasVisuVolumeRendering.h"
+#include "bbcreaMaracasVisuPackage.h"
+namespace bbcreaMaracasVisu
+{
+
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,VolumeRendering)
+BBTK_BLACK_BOX_IMPLEMENTATION(VolumeRendering,bbtk::AtomicBlackBox);
+void VolumeRendering::Process()
+{
+
+// THE MAIN PROCESSING METHOD BODY
+// Here we simply set the input 'In' value to the output 'Out'
+// And print out the output value
+// INPUT/OUTPUT ACCESSORS ARE OF THE FORM :
+// void bbSet{Input|Output}NAME(const TYPE&)
+// const TYPE& bbGet{Input|Output}NAME() const
+// Where :
+// * NAME is the name of the input/output
+// (the one provided in the attribute 'name' of the tag 'input')
+// * TYPE is the C++ type of the input/output
+// (the one provided in the attribute 'type' of the tag 'input')
+
+
+ vtkImageData* _img = bbGetInputIn();
+
+ if(_img!=NULL){
+ double range[2];
+ _img->GetScalarRange(range);
+ double max = range[1];
+ _tfun->AddPoint(max * 0/2 , 0.0);
+ _tfun->AddPoint(max * 1/2 , 1.0);
+ _tfun->AddPoint(max * 2/2 , 1.0);
+ _ctfun->AddRGBPoint( max*0/4 , 0.0, 0.0, 0.0);
+ _ctfun->AddRGBPoint( max*1/4 , 1.0, 0.0, 0.0);
+ _ctfun->AddRGBPoint( max*2/4 , 0.0, 0.0, 1.0);
+ _ctfun->AddRGBPoint( max*3/4 , 0.0, 1.0, 0.0);
+ _ctfun->AddRGBPoint( max*4/4 , 0.0, 0.2, 0.0);
+
+ _volumeMapper->SetInput( _img );
+
+ _volumeMapper->Update();
+ _newvol->Update();
+
+ bbSetOutputOut(_newvol);
+ }
+
+
+
+}
+void VolumeRendering::bbUserSetDefaultValues()
+{
+
+// SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX
+// Here we initialize the input 'In' to 0
+ bbSetInputIn(0);
+ bbSetOutputOut(0);
+
+}
+void VolumeRendering::bbUserInitializeProcessing()
+{
+ _tfun = vtkPiecewiseFunction::New();
+ _ctfun = vtkColorTransferFunction::New();
+
+ _volumePlanes = vtkPlanes::New();
+ _compositeFunction = vtkVolumeRayCastCompositeFunction::New();
+ _volumeMapper = vtkVolumeRayCastMapper::New();
+ _volumeMapper->SetVolumeRayCastFunction(_compositeFunction);
+ _volumeMapper->SetClippingPlanes( _volumePlanes );
+ _volumeMapper->AutoAdjustSampleDistancesOn();
+ _volumeProperty = vtkVolumeProperty::New();
+ _volumeProperty->SetInterpolationTypeToLinear();
+ _volumeProperty->ShadeOn();
+ _volumeProperty->DisableGradientOpacityOn();
+ _volumeProperty->SetColor(_ctfun);
+ _volumeProperty->SetScalarOpacity( _tfun );
+ _newvol = vtkVolume::New();
+ _newvol->SetMapper(_volumeMapper );
+ _newvol->SetProperty(_volumeProperty );
+
+}
+void VolumeRendering::bbUserFinalizeProcessing()
+{
+
+// THE FINALIZATION METHOD BODY :
+// Here does nothing
+// but this is where you should desallocate the internal/output pointers
+// if any
+
+}
+}
+// EO namespace bbcreaMaracasVisu
+
+