<br><font size=2 face="sans-serif">From your description, your dataset seems to be 5x6x5 but your coded data extent is 6x6x6...I'm suprised this didn't generate an error.</font>
<br>
<br><font size=2 face="Arial">volReader->SetDataExtent(0,5,0,5,0,5);</font>
<br>
<br>
<br><font size=2 face="sans-serif">also I'm a bit rusty on marching cubes but don't you need a value between 0 and 1 to create the isosurface you are after??</font>
<br>
<br><font size=2 face="Arial">iso->SetValue(0,1);</font>
<br>
<br><font size=2 face="sans-serif">....john</font>
<br>
<br>
<br>
<br>
<br>
<table width=100%>
<tr valign=top>
<td>
<td><font size=1 face="sans-serif"><b>"Vetria Byrd" <byrdv@cis.uab.edu></b></font>
<br><font size=1 face="sans-serif">Sent by: vtkusers-admin@vtk.org</font>
<p><font size=1 face="sans-serif">04/07/2004 04:05 PM</font>
<br><font size=1 face="sans-serif">Please respond to byrdv</font>
<br>
<td><font size=1 face="Arial"> </font>
<br><font size=1 face="sans-serif"> To: <vtkusers@vtk.org></font>
<br><font size=1 face="sans-serif"> cc: (bcc: John Anast-JM/PGI)</font>
<br><font size=1 face="sans-serif"> Subject: [vtkusers] marching cubes output</font></table>
<br>
<br>
<br><font size=2 face="Arial">I have written a program to extract data from 2D slices of data files.</font>
<br><font size=2 face="Arial">Five data files were manually created. Each of the data files look like this:</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial">0 0 0 0 0</font>
<br><font size=2 face="Arial">0 0 0 0 0</font>
<br><font size=2 face="Arial">0 0 1 0 0</font>
<br><font size=2 face="Arial">0 0 1 0 0</font>
<br><font size=2 face="Arial">0 0 0 0 0</font>
<br><font size=2 face="Arial">0 0 0 0 0</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial">Where the 0's indicate the object is outside the cube and 1 indicates the object is inside the cube.</font>
<br><font size=2 face="Arial">When I run the program (which compiles and runs with no problems) I expected to get a solid object representing the center of the 5x5x5 rendered object since only the center values of the data (input) show that the object is inside but what I get is shown in the 1<sup>st</sup> figure. Viewing the wire frame display (2<sup>nd</sup> figure) shows the 5x5x5 grid with an unexpected dip in the top row.</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial">I am missing something, I just don't know what that "something" is.</font>
<br><font size=2 face="Arial">What I want the algorithm to do is render the object based on which values of the data indicate the object is present.</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial">Here's the code:</font>
<br><font size=2 face="Arial">//</font>
<br><font size=2 face="Arial">// This example reads a volume dataset, extracts an isosurface and displays it.</font>
<br><font size=2 face="Arial">//</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial">#include "vtkRenderer.h"</font>
<br><font size=2 face="Arial">#include "vtkRenderWindow.h"</font>
<br><font size=2 face="Arial">#include "vtkRenderWindowInteractor.h"</font>
<br><font size=2 face="Arial">#include "vtkVolumeReader.h"</font>
<br><font size=2 face="Arial">#include "vtkImageReader2.h"</font>
<br><font size=2 face="Arial">#include "vtkMarchingCubes.h"</font>
<br><font size=2 face="Arial">#include "vtkPolyDataMapper.h"</font>
<br><font size=2 face="Arial">#include "vtkActor.h"</font>
<br><font size=2 face="Arial">#include "vtkOutlineFilter.h"</font>
<br><font size=2 face="Arial">#include "vtkCamera.h"</font>
<br><font size=2 face="Arial">#include "vtkProperty.h"</font>
<br><font size=2 face="Arial">#include "vtkPolyDataNormals.h"</font>
<br><font size=2 face="Arial">#include "vtkContourFilter.h"</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial">int main ()</font>
<br><font size=2 face="Arial">{</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> vtkRenderer *ren = vtkRenderer::New();</font>
<br><font size=2 face="Arial"> vtkRenderWindow *renWin = vtkRenderWindow::New();</font>
<br><font size=2 face="Arial"> renWin->AddRenderer(ren);</font>
<br><font size=2 face="Arial"> vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();</font>
<br><font size=2 face="Arial"> iren->SetRenderWindow(renWin);</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> vtkImageReader2 *volReader = vtkImageReader2::New();</font>
<br><font size=2 face="Arial"> volReader->SetDataExtent(0,5,0,5,0,5);</font>
<br><font size=2 face="Arial"> volReader->SetFilePrefix("C:/data/cube/slice");</font>
<br><font size=2 face="Arial"> volReader->SetDataSpacing(1,1,1);</font>
<br><font size=2 face="Arial"> volReader->Update();</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> // An isosurface, or contour value of 1 is known to correspond to the</font>
<br><font size=2 face="Arial"> // object</font>
<br><font size=2 face="Arial"> vtkMarchingCubes *iso =vtkMarchingCubes::New();</font>
<br><font size=2 face="Arial"> iso->SetInput(volReader->GetOutput() );</font>
<br><font size=2 face="Arial"> iso->SetValue(0,1); </font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> vtkPolyDataMapper *isoMapper = vtkPolyDataMapper::New();</font>
<br><font size=2 face="Arial"> isoMapper->SetInput(iso->GetOutput() );</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> vtkActor *isoActor = vtkActor::New();</font>
<br><font size=2 face="Arial"> isoActor->SetMapper(isoMapper);</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> vtkOutlineFilter *outline = vtkOutlineFilter::New();</font>
<br><font size=2 face="Arial"> outline->SetInput( (vtkDataSet *) volReader->GetOutput() );</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> vtkPolyDataMapper *outlineMapper = vtkPolyDataMapper::New();</font>
<br><font size=2 face="Arial"> outlineMapper->SetInput(outline->GetOutput() );</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> vtkActor *outlineActor = vtkActor::New();</font>
<br><font size=2 face="Arial"> outlineActor->SetMapper(outlineMapper);</font>
<br><font size=2 face="Arial"> outlineActor->VisibilityOff();</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> //</font>
<br><font size=2 face="Arial"> // Add the actors to the renderer, set the background and size</font>
<br><font size=2 face="Arial"> //</font>
<br><font size=2 face="Arial"> ren->AddActor(outlineActor);</font>
<br><font size=2 face="Arial"> ren->AddActor(isoActor);</font>
<br><font size=2 face="Arial"> ren->SetBackground(0.2,0.3,0.4);</font>
<br><font size=2 face="Arial"> renWin->SetSize(450,450);</font>
<br><font size=2 face="Arial"> ren->GetActiveCamera()->Elevation(90);</font>
<br><font size=2 face="Arial"> ren->GetActiveCamera()->SetViewUp(0,0,-1);</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> iren->Initialize();</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> // render the image</font>
<br><font size=2 face="Arial"> iren->Start();</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial"> return 0;</font>
<br><font size=2 face="Arial">}</font>
<br><font size=2 face="Arial"> </font>
<br><font size=2 face="Arial">Thanks.</font>
<br><font size=2 face="Arial">_______________</font>
<br><font size=2 face="Arial">Vetria L. Byrd</font>
<br><font size=3 face="Times New Roman"> </font>
<br><font size=3 face="Times New Roman"> </font>
<br>
<br>