[vtkusers] rendering a sphere problem
Amy Henderson
amy.henderson at kitware.com
Tue Mar 11 09:15:36 EST 2003
The main reason this won't work is that vtkSphereSource produces
vtkPolyData output, not vtkImageData, so you can't volume render it in
VTK. You should use a vtkPolyDataMapper and a vtkActor to render the
output of vtkSphereSource instead.
- Amy
At 09:16 AM 3/11/2003 +0100, Radim Koláø wrote:
>Hi all,
>please could you help me with this simple problem?
>I want to render the sphere with the vtkVolumeRayCastMapper. So I create
>sphere, mapper, volume properties and finally vtkVolume and I render it
>with vtkRenderWindowInteractor. But the program crash when I call
>iren->Render(). Bellow is the short C++ code. Are there some mistakes?
>I'm using VTK 4.0 and Borland C++ 6
>Thanks a lot.
>Radim
>
>//---------------------------------------------------------------------------
>#include "vtkSphereSource.h"
>#include "vtkVolumeRayCastMapper.h"
>#include "vtkActor.h"
>#include "vtkRenderer.h"
>#include "vtkRenderWindowInteractor.h"
>#include "vtkRenderWindow.h"
>#include "vtkVolumeRayCastMIPFunction.h"
>#include "vtkImageData.h"
>#include "vtkVolumeProperty.h"
>#include "vtkPiecewiseFunction.h"
>
>#include <vcl.h>
>#pragma hdrstop
>//---------------------------------------------------------------------------
>
>#pragma argsused
>int main(int argc, char* argv[])
>{
> vtkSphereSource *sphere; sphere = vtkSphereSource::New();
>
> vtkVolumeRayCastMIPFunction *RayCastMethod =
> vtkVolumeRayCastMIPFunction::New();
> vtkVolumeRayCastMapper *mapper = vtkVolumeRayCastMapper::New();
>
> mapper->SetVolumeRayCastFunction( RayCastMethod );
>
> vtkImageData *vol; vol = vtkImageData::New();
> vol->SetSource( sphere );
> mapper->SetInput( vol );
>
> vtkColorTransferFunction *colorF = vtkColorTransferFunction::New();
> colorF->AddRGBSegment( 0, 0.0, 0.0, 0.0, 255, 0.5, 0.1, 1.0 );
>
> //-------- Mapping from scalar -> opacity ------------
> vtkPiecewiseFunction *opacityF = vtkPiecewiseFunction::New();
> opacityF->AddPoint( 10, 0.1 );
> opacityF->AddPoint( 200, 0.9 );
> opacityF->ClampingOff();
>
>vtkVolumeProperty *volumeP = vtkVolumeProperty::New();
> volumeP->SetColor( colorF );
> volumeP->SetScalarOpacity( opacityF );
>
> vtkVolume *volume = vtkVolume::New();
> volume->SetMapper( mapper );
> volume->SetProperty( volumeP );
>
>
>vtkRenderer *ren1; ren1 = vtkRenderer::New();
> ren1->AddProp( volume );
>
>vtkRenderWindow *renWin; renWin = vtkRenderWindow::New();
> renWin->AddRenderer( ren1 );
>
>vtkRenderWindowInteractor *iren; iren = vtkRenderWindowInteractor::New();
> iren->SetRenderWindow( renWin );
>
> iren->Render(); //here it crash
> iren->Start();
>
> iren->Delete();
> renWin->Delete();
> ren1->Delete();
> RayCastMethod->Delete();
> volume->Delete();
> vol->Delete();
> mapper->Delete();
> sphere->Delete();
>
> return 0;
>}
>//---------------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20030311/f4319237/attachment.htm>
More information about the vtkusers
mailing list