--- /dev/null
+#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
+
+
--- /dev/null
+#ifndef __bbcreaMaracasVisuVolumeRendering_h_INCLUDED__
+#define __bbcreaMaracasVisuVolumeRendering_h_INCLUDED__
+#include "bbcreaMaracasVisu_EXPORT.h"
+#include "bbtkAtomicBlackBox.h"
+#include "iostream"
+
+#include <vtkVolumeRayCastCompositeFunction.h>
+#include <vtkPlanes.h>
+#include <vtkVolumeRayCastMapper.h>
+#include <vtkVolumeProperty.h>
+#include <vtkVolume.h>
+#include <vtkPiecewiseFunction.h>
+#include <vtkColorTransferFunction.h>
+#include <vtkImageData.h>
+#include <vtkProp3D.h>
+
+
+namespace bbcreaMaracasVisu
+{
+
+class bbcreaMaracasVisu_EXPORT VolumeRendering
+ :
+ public bbtk::AtomicBlackBox
+{
+ BBTK_BLACK_BOX_INTERFACE(VolumeRendering,bbtk::AtomicBlackBox);
+ BBTK_DECLARE_INPUT(In,vtkImageData*);
+ BBTK_DECLARE_OUTPUT(Out,vtkProp3D*);
+ BBTK_PROCESS(Process);
+ void Process();
+
+private:
+ vtkVolumeRayCastCompositeFunction *_compositeFunction;
+ vtkPlanes *_volumePlanes;
+ vtkVolumeRayCastMapper *_volumeMapper;
+ vtkVolumeProperty *_volumeProperty;
+ vtkVolume *_newvol;
+ vtkPiecewiseFunction* _tfun;
+ vtkColorTransferFunction* _ctfun;
+};
+
+BBTK_BEGIN_DESCRIBE_BLACK_BOX(VolumeRendering,bbtk::AtomicBlackBox);
+BBTK_NAME("VolumeRendering");
+BBTK_AUTHOR("car-prie@uniandes.edu.co");
+BBTK_DESCRIPTION("Volume Rendering of a given image");
+BBTK_CATEGORY("__CATEGORY__");
+BBTK_INPUT(VolumeRendering,In,"Image to create the volume rendering",vtkImageData*,"");
+BBTK_OUTPUT(VolumeRendering,Out,"Prop3D resulting from the volume rendering",vtkProp3D*,"");
+BBTK_END_DESCRIBE_BLACK_BOX(VolumeRendering);
+}
+// EO namespace bbcreaMaracasVisu
+
+#endif // __bbcreaMaracasVisuVolumeRendering_h_INCLUDED__
+
int id=-1;
int i, size=(int)(lstActorsSphere.size());
double spc[3];
- mimage->GetSpacing(spc);
- for ( i=0 ; i<size; i++ )
- {
- double rx = spc[0]*(mpoint[0] - lstPointsX [i]);
- double ry = spc[1]*(mpoint[1] - lstPointsY [i]);
- double rz = spc[2]*(mpoint[2] - lstPointsZ [i]);
- if ( rx*rx + ry*ry + rz*rz <= mradio*mradio)
+ if(mimage ==NULL){
+ wxMessageDialog* diag = new wxMessageDialog(this, _T("Image not set"), _T("Image Not Set"), wxICON_ERROR);
+ diag->ShowModal();
+ return -1;
+ }else{
+
+ mimage->GetSpacing(spc);
+
+ for ( i=0 ; i<size; i++ )
{
- id=i;
- } // if
- } // for
+ double rx = spc[0]*(mpoint[0] - lstPointsX [i]);
+ double ry = spc[1]*(mpoint[1] - lstPointsY [i]);
+ double rz = spc[2]*(mpoint[2] - lstPointsZ [i]);
+ if ( rx*rx + ry*ry + rz*rz <= mradio*mradio)
+ {
+ id=i;
+ } // if
+ } // for
- return id;
+ return id;
+ }
}
//------------------------------------------------------------------------