I have a about 15 datasets varying from 40k to 60million triangles,
that I'm trying to decimate down to 3.5million for use in our
applications (3ds Max, Maya, custom stuff, etc). 
vtkQuadricClustering will decimate it, but it goes waaay too far, down
to under 100k triangles, and I don't seem to have the memory required
for over 2000bins on each axis. <br>
<br>
So I've taken to using vtkDecimatePro &amp; vtkQuadricDecimate, but I'm
having problems.&nbsp; vtkDecimatePro starts off just fine, but
eventually dies with a &quot;Bus Error&quot; at 43.87% (This particular dataset
has 51M triangles).&nbsp; The core dump shows the following:<br>
&nbsp;<br>
<div style="margin-left: 40px; font-family: courier new,monospace;">[8:05:34am]% dbx decimate<br>
dbx version 7.3.4 (86441_Nov11 MR) Nov 11 2002 11:31:55<br>
where<br>
Core from signal SIGBUS: Bus error<br>
(dbx)<br>
Thread 0x10000<br>
&gt;&nbsp; 0 vtkCellLinks::RemoveCellReference(long long,long
long)(this = 0x83f519a8, cellId = 39154371, ptId = -1)
[&quot;/viz/home/rhand/src/ezViz/Utilities/VTK/Filtering/vtkCellLinks.h&quot;:183,
0x4fae524]<br>
(dbx)<br>
</div>
<br>
<br>
My Code:<br>
<div style="margin-left: 40px; font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; printf(&quot;PLY Reader...\n&quot;);<br>
&nbsp;&nbsp;&nbsp; vtkPLYReader *input = vtkPLYReader::New();<br>
&nbsp;&nbsp;&nbsp; input-&gt;SetFileName(argv[1]);<br>
&nbsp;&nbsp;&nbsp; input-&gt;Update();<br>
&nbsp;&nbsp;&nbsp; printf(&quot;Decimation...\n&quot;);<br>
&nbsp;&nbsp;&nbsp; size = input-&gt;GetOutput()-&gt;GetNumberOfCells();<br>
&nbsp;&nbsp;&nbsp; if (size &lt; 4000000) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;Already under 4mil\n&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>
&nbsp;&nbsp;&nbsp; }<br>
<br>
&nbsp;&nbsp;&nbsp; vtkDecimatePro *decimate = vtkDecimatePro::New();<br>
&nbsp;&nbsp;&nbsp; reduction = (float)3500000/(float)size;<br>
&nbsp;&nbsp;&nbsp; reduction = 1.0 - reduction;<br>
&nbsp;&nbsp;&nbsp; printf(&quot;\tReducing by %.3f%%\n&quot;, (reduction * 100.0));<br>
<br>
&nbsp;&nbsp;&nbsp; decimate-&gt;SetInputConnection(input-&gt;GetOutputPort());<br>
&nbsp;&nbsp;&nbsp; decimate-&gt;AddObserver(vtkCommand::ProgressEvent, progress);<br>
&nbsp;&nbsp;&nbsp; decimate-&gt;SetTargetReduction(reduction);<br>
<br>
&nbsp;&nbsp;&nbsp; printf(&quot;PLY Writer...\n&quot;);<br>
&nbsp;&nbsp;&nbsp; vtkPLYWriter *output = vtkPLYWriter::New();<br>
&nbsp;&nbsp;&nbsp; ptr = strrchr(argv[1], '.');<br>
&nbsp;&nbsp;&nbsp; *ptr = '\0';<br>
&nbsp;&nbsp;&nbsp; sprintf(filename, &quot;%s-decimated&quot;, argv[1], subdiv);<br>
&nbsp;&nbsp;&nbsp; printf(&quot;-&gt; %s\n&quot;, filename);<br>
&nbsp;&nbsp;&nbsp; output-&gt;SetFileName(filename);<br>
&nbsp;&nbsp;&nbsp; output-&gt;SetInputConnection(decimate-&gt;GetOutputPort());<br>
&nbsp;&nbsp;&nbsp; output-&gt;Write();<br>
</div>
<br>
Is there some way I can get past this roadblock?&nbsp; <br>
<br>
<br>-- <br>Randall Hand<br><a href="http://www.yeraze.com">http://www.yeraze.com</a>