<html>
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.<br><br>
- Amy<br><br>
At 09:16 AM 3/11/2003 +0100, Radim Koláø wrote:<br>
<blockquote type=cite class=cite cite><font face="arial" size=2>Hi
all,</font><br>
<font face="arial" size=2>please could you help me with this simple
problem?</font><br>
<font face="arial" size=2>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?</font><br>
<font face="arial" size=2>I'm using VTK 4.0 and Borland C++
6</font><br>
<font face="arial" size=2>Thanks a lot.</font><br>
<font face="arial" size=2>Radim</font><br>
<br>
<font face="arial" size=2>//---------------------------------------------------------------------------<br>
#include "vtkSphereSource.h"<br>
#include "vtkVolumeRayCastMapper.h"<br>
#include "vtkActor.h"<br>
#include "vtkRenderer.h"<br>
#include "vtkRenderWindowInteractor.h"<br>
#include "vtkRenderWindow.h"<br>
#include "vtkVolumeRayCastMIPFunction.h"<br>
#include "vtkImageData.h"<br>
#include "vtkVolumeProperty.h"<br>
#include "vtkPiecewiseFunction.h"</font><br>
<br>
<font face="arial" size=2>#include <vcl.h><br>
#pragma hdrstop</font><br>
<font face="arial" size=2>//---------------------------------------------------------------------------</font><br>
<br>
<font face="arial" size=2>#pragma argsused<br>
int main(int argc, char* argv[])<br>
{<br>
vtkSphereSource
*sphere; sphere =
vtkSphereSource::New();</font><br>
<br>
<font face="arial" size=2>
vtkVolumeRayCastMIPFunction *RayCastMethod =
vtkVolumeRayCastMIPFunction::New();<br>
vtkVolumeRayCastMapper *mapper
= vtkVolumeRayCastMapper::New();</font><br>
<br>
<font face="arial" size=2>
mapper->SetVolumeRayCastFunction( RayCastMethod );</font><br>
<br>
<font face="arial" size=2>
vtkImageData *vol; vol =
vtkImageData::New();<br>
vol->SetSource( sphere
);<br>
mapper->SetInput( vol
);</font><br>
<br>
<font face="arial" size=2> vtkColorTransferFunction *colorF =
vtkColorTransferFunction::New();<br>
colorF->AddRGBSegment( 0, 0.0, 0.0, 0.0, 255, 0.5,
0.1, 1.0 );</font><br>
<br>
<font face="arial" size=2> //--------
Mapping from scalar -> opacity ------------<br>
vtkPiecewiseFunction *opacityF = vtkPiecewiseFunction::New();<br>
opacityF->AddPoint( 10, 0.1 );<br>
opacityF->AddPoint( 200, 0.9 );<br>
opacityF->ClampingOff();</font><br>
<br>
<font face="arial" size=2>vtkVolumeProperty *volumeP =
vtkVolumeProperty::New();<br>
volumeP->SetColor( colorF );<br>
volumeP->SetScalarOpacity( opacityF
);</font><br>
<br>
<font face="arial" size=2> vtkVolume *volume =
vtkVolume::New();<br>
volume->SetMapper( mapper );<br>
volume->SetProperty( volumeP );</font><br>
<br>
<font face="arial" size=2><br>
vtkRenderer *ren1; ren1 =
vtkRenderer::New();<br>
ren1->AddProp( volume );<br>
<br>
vtkRenderWindow *renWin; renWin = vtkRenderWindow::New();<br>
renWin->AddRenderer( ren1 );<br>
<br>
vtkRenderWindowInteractor *iren; iren =
vtkRenderWindowInteractor::New();<br>
iren->SetRenderWindow( renWin );<br>
<br>
iren->Render(); //here it crash<br>
iren->Start();<br>
<br>
iren->Delete();<br>
renWin->Delete();<br>
ren1->Delete();<br>
RayCastMethod->Delete();<br>
volume->Delete();<br>
vol->Delete();<br>
mapper->Delete();<br>
sphere->Delete();<br>
<br>
return 0;<br>
}<br>
//---------------------------------------------------------------------------</font></blockquote><br>
</html>