<html>
If you are creating 50,000 actors you are asking for trouble. It would be
best to create your own mapper or filter (similar to vtkGlyph3D) which
creates the cylinders and spheres, with a single actor.<br>
Will<br><br>
At 03:50 PM 5/31/2002 +0000, Brian Szender wrote:<br>
<blockquote type=cite class=cite cite>I am rendering a 3d model
containing 50,000 sub-pieces of a vtkCylinder and a vtkSphere.&nbsp; My
program works fine for smaller numbers, but when too-many branches are
loaded, the computer will continue to tick away memory (I end the program
after it reaches 1.5 GB).<br>
&nbsp;<br>
I render the cylinders as such (the spheres are done in a like
manner):<br>
&nbsp;<br>
&nbsp; vtkCylinderSource *cylinder = vtkCylinderSource::New();<br>
&nbsp; cylinder-&gt;SetHeight( norm );<br>
&nbsp; cylinder-&gt;SetRadius( radius );<br>
&nbsp; cylinder-&gt;SetResolution( 50.0 );<br>
&nbsp; cylinder-&gt;SetCapping( 1 );<br>
&nbsp; vpx = vz;<br>
&nbsp; vpy = 0.0;<br>
&nbsp; vpz = -vx;<br>
&nbsp;<br>
&nbsp; vtkTransform *trans1 = vtkTransform::New();<br>
&nbsp; trans1-&gt;RotateWXYZ( angle*(180.0/pai), vpx, vpy, vpz );<br>
&nbsp; vtkTransformPolyDataFilter *transpoly1 =
vtkTransformPolyDataFilter::New();<br>
&nbsp; transpoly1-&gt;SetInput( cylinder-&gt;GetOutput() );<br>
&nbsp; transpoly1-&gt;SetTransform( trans1 );<br>
&nbsp; vtkTransform *trans2 = vtkTransform::New();<br>
&nbsp; trans2-&gt;Translate( (sx+ex)/2.0, (sy+ey)/2.0, (sz+ez)/2.0
);<br>
&nbsp; vtkTransformPolyDataFilter *transpoly2 =
vtkTransformPolyDataFilter::New(); transpoly2-&gt;SetInput(
transpoly1-&gt;GetOutput() );<br>
&nbsp; transpoly2-&gt;SetTransform( trans2 );<br>
&nbsp; vtkPolyDataMapper *cylinderMapper = 
vtkPolyDataMapper::New();<br>
&nbsp; cylinderMapper-&gt;SetInput( transpoly2-&gt;GetOutput() );<br>
&nbsp; vtkActor *cylinderActor = vtkActor::New();<br>
&nbsp; cylinderActor-&gt;SetMapper( cylinderMapper );<br>
...<br>
&nbsp;<br>
&nbsp; actors.push_back( cylinderActor );<br>
&nbsp; renderer = vtkwindow-&gt;getRenderer();<br>
&nbsp; renderer-&gt;SetBackground( 0, 0, 0 );<br>
&nbsp; renderer-&gt;AddActor( cylinderActor );<br>
&nbsp; cylinder-&gt;Delete();<br>
&nbsp; cylinderMapper-&gt;Delete();<br>
&nbsp; trans1-&gt;Delete();<br>
&nbsp; trans2-&gt;Delete();<br>
&nbsp; transpoly1-&gt;Delete();<br>
&nbsp; transpoly2-&gt;Delete();<br>
There is a function:&nbsp;&nbsp; void ReleaseGraphicsResources(vtkWindow
*);<br>
However, the function requires that I render with a vtkWindow (I am using
a FOX-GUI renderering window widget class called FXVTKWindow).<br>
&nbsp;<br>
Is there anything I can do to reduce the amount of memory spent on each
actor or else recover the memory after each actor is created?<br>
&nbsp;<br>
Brian<br><br>
<hr>
MSN Photos is the easiest way to share and print your photos:
<a href="'http://g.msn.com/1hm305401/46'">Click Here</a><br>
_______________________________________________ This is the private VTK
discussion list. Please keep messages on-topic. Check the FAQ at: Follow
this link to subscribe/unsubscribe:
<a href="http://public.kitware.com/mailman/listinfo/vtkusers" eudora="autourl">http://public.kitware.com/mailman/listinfo/vtkusers</a>
</blockquote></html>