[vtkusers] Converting the SimpleRayCast.tcl example ( VTK/Examples/VolumeRendering ) to C++

Wagner Sales wsalles2003 at yahoo.com.br
Fri Apr 16 20:25:05 EDT 2004


Hi all,

I have the same problem asked below. I was searched and founded the same 
ask, but unforttunately, without answer.
Can anyone help me? May be that's newbie programmers problem.

thks


Hi All,

Below is my example of  raycasting that I downloaded from the
internet on the the ironProt.vtk datafile. Some of you will recognise this
the code below, but I cannot get it to compile on vtk-4.2.2.

It throws up the error:
Building object file ironpot.o...
/home/cs/pmcguinn/visual/project/ironpot.cxx: In function `int main (int,
char **)':
/home/cs/pmcguinn/visual/project/ironpot.cxx:152: no matching function for
call to
`vtkVolumeRayCastMapper::SetInput (vtkStructuredPoints *)'
/usr/local/include/vtk/vtkVolumeMapper.h:59: candidates are: void
vtkVolumeMapper::SetInput
(vtkImageData *)

I have spent the last two days playing around with the code modifying it,
using vtkVolumeMapper, converting structuredpoints into Imagedata,
but nothing seems to get it to work.
Has anyone got this code to work using vtk 4.2.2?

Thanks.
Paul.


#include "vtkRenderer.h"
         #include "vtkRenderWindow.h"
         #include "vtkRenderWindowInteractor.h"
         #include "vtkStructuredPointsReader.h"
         #include "vtkPiecewiseFunction.h"
         #include "vtkVolumeProperty.h"
         #include "vtkVolumeRayCastCompositeFunction.h"
         #include "vtkVolumeRayCastMapper.h"
         #include "vtkVolume.h"
         #include "vtkColorTransferFunction.h"
         #include "vtkCamera.h"


         int main( int argc, char *argv[] )
         {
           vtkRenderer               *renderer   = vtkRenderer::New();
           vtkRenderWindow           *renWindow  = vtkRenderWindow::New();
           vtkRenderWindowInteractor *interactor =
vtkRenderWindowInteractor::New();
           vtkStructuredPointsReader *reader =
vtkStructuredPointsReader::New();
           vtkPiecewiseFunction *opacity = vtkPiecewiseFunction::New();
           vtkColorTransferFunction *color =
vtkColorTransferFunction::New();
           vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();
           vtkVolumeRayCastCompositeFunction *compositeFunction =
                            vtkVolumeRayCastCompositeFunction::New();
           vtkVolumeRayCastMapper *volumeMapper =
vtkVolumeRayCastMapper::New();
           vtkVolume *volume = vtkVolume::New();

           renWindow->SetSize(400,400);


reader->SetFileName("ironProt.vtk");
           reader->Update();



           opacity->AddSegment(0, 0.0, 255, 0.5);
           color->AddRGBPoint(64, 1.0, 0.0, 0.0);
           color->AddRGBPoint(128, 1.0, 1.0, 0.0);
           color->AddRGBPoint(196, 0.0, 1.0, 1.0);

           volumeProperty->SetColor(color);
           volumeProperty->SetScalarOpacity(opacity);
           volumeProperty->SetInterpolationTypeToLinear();
           volumeProperty->ShadeOn();

           volumeMapper->SetInput(reader->GetOutput());
           volumeMapper->SetVolumeRayCastFunction(compositeFunction);

           volume->SetMapper(volumeMapper);
           volume->SetProperty(volumeProperty);

           renderer->SetBackground(0.2, 0.2, 0.8);
           renderer->AddVolume(volume);
           renderer->GetActiveCamera()->Azimuth(20.0);
           renderer->GetActiveCamera()->Dolly(1.60);
           renderer->ResetCameraClippingRange();

           interactor->SetRenderWindow(renWindow);
           renWindow->AddRenderer(renderer);
           renWindow->Render();
           interactor->Start();

           renderer->Delete();
           renWindow->Delete();
           interactor->Delete();
           reader->Delete();
           opacity->Delete();
           color->Delete();
           volumeProperty->Delete();
           compositeFunction->Delete();
           volumeMapper->Delete();
           volume->Delete();

           return 0;

         }





More information about the vtkusers mailing list