[vtkusers] about vtkMarchingCubes

Mathieu Malaterre mathieu.malaterre at kitware.com
Tue Apr 27 15:41:14 EDT 2004


Vetria,

	Your code is /almost/ perfect, so the problem comes from your files. 
When using vtkImageReader2 you should use

	SetDataExtent(0,5,0,5,0,5);

Otherwise your extent will be different...obviously, as you want a 5x5x5 
picture. Anyway I included a c++ code that show you how to achieve what 
you are looking for. You can play with this code and write the 
vtkIamgeData using vtkImageWriter and then load that file again using 
vtkImageReader2 + proper SetDataExtent and you'll see it will work.

HTH
Mathieu
Ps: For god sake, please avoid static cast like:

    objExtractor->SetInput((vtkDataSet *) volReader->GetOutput() );

instead do #include "vtkDataSet.h" top of your c++ file.


Vetria Byrd wrote:
> Here's the code (please see note after code):
> 
>  
> 
> vtkRenderer *ren = vtkRenderer::New();
> 
>   vtkRenderWindow *renWin = vtkRenderWindow::New();
> 
>     renWin->AddRenderer(ren);
> 
>   vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
> 
>     iren->SetRenderWindow(renWin);
> 
>  
> 
>   vtkImageReader2 *volReader = vtkImageReader2::New();
> 
>       volReader->SetDataOrigin(0.0,0.0,0.0);
> 
>     volReader->SetDataExtent(0,6,0,5,0,5);
> 
>       volReader->SetDataByteOrderToLittleEndian();
> 
>       volReader->SetFilePrefix("C:/src/VolumeData/slice");
> 
>  
> 
>     volReader->SetDataSpacing(1,1,1);
> 
>     volReader->Update();
> 
>  
> 
>   vtkMarchingCubes *iso = vtkMarchingCubes::New();
> 
>      iso->SetInput(volReader->GetOutput() );
> 
>        iso->SetValue(0,0.5);
> 
>  
> 
>   vtkContourFilter *objExtractor = vtkContourFilter::New();
> 
>     objExtractor->SetInput((vtkDataSet *) volReader->GetOutput() );
> 
>       objExtractor->SetValue(0,0.5);
> 
>        
> 
>   vtkPolyDataNormals *isoNormals = vtkPolyDataNormals::New();
> 
>     isoNormals->SetInput(iso->GetOutput());
> 
>     isoNormals->SetFeatureAngle(60.0);
> 
>  
> 
>   vtkStripper *objStripper = vtkStripper::New();
> 
>     objStripper->SetInput(isoNormals->GetOutput());
> 
>      
> 
>   vtkPolyDataMapper *isoMapper = vtkPolyDataMapper::New();
> 
>       isoMapper->SetInput(objStripper->GetOutput() );
> 
>         //isoMapper->SetInput(isoNormals->GetOutput() );
> 
>       isoMapper->ScalarVisibilityOff();
> 
>  
> 
>   vtkActor *isoActor = vtkActor::New();
> 
>       isoActor->SetMapper(isoMapper);
> 
>  
> 
>   // An outline provides context around the data.
> 
>   vtkOutlineFilter *outlineData = vtkOutlineFilter::New();
> 
>     outlineData->SetInput((vtkDataSet *) volReader->GetOutput());
> 
>   vtkPolyDataMapper *mapOutline = vtkPolyDataMapper::New();
> 
>     mapOutline->SetInput(outlineData->GetOutput());
> 
>   vtkActor *outline = vtkActor::New();
> 
>     outline->SetMapper(mapOutline);
> 
>     outline->GetProperty()->SetColor(0,0,0);
> 
>        
> 
>    // Add the actors to the renderer, set the background and size
> 
>    ren->AddActor(outline);
> 
>    ren->AddActor(isoActor);
> 
>   
> 
>    ren->SetBackground(1,1,1); 
> 
>    renWin->SetSize(450,450);
> 
>   
> 
>    iren->Initialize();
> 
>   
> 
>    // render the image
> 
>    iren->Start();
> 
>  
> 
>  
> 
> Note:  when I change volReader->SetDataExtent(0,6,0,5,0,5); to
> 
> volReader->SetDataExtent(0,5,0,5,0,5);
> 
> I get this:
> 
>  
> 
> -----Original Message-----
> From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
> Sent: Tuesday, April 27, 2004 11:54 AM
> To: byrdv at cis.uab.edu
> Cc: vtkusers at vtk.org
> Subject: Re: [vtkusers] about vtkMarchingCubes
> 
>  
> 
> Vetria,
> 
>  
> 
>       Could you send us the c++ demo file you are using, I suspect you are
> 
> reading your file improperly (data extent is wrong).
> 
>  
> 
> Thanks
> 
> Mathieu
> 
>  
> 
> Vetria Byrd wrote:
> 
>> 
> 
>>
> 
>>  In the data files slices 0,1,3,4 and 5 contain all zero’s.
> 
>>
> 
>>  In slice 2, cell [2][2][2] = 1 all other cell values are zero’s.
> 
>>
> 
>> 
> 
>>
> 
>>  Vetria
> 
>>
> 
>> 
> 
>>
> 
>>  -----Original Message-----
> 
>>  From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
> 
>>  Sent: Tuesday, April 27, 2004 10:50 AM
> 
>>  To: byrdv at cis.uab.edu
> 
>>  Cc: vtkusers at vtk.org
> 
>>  Subject: Re: [vtkusers] about vtkMarchingCubes
> 
>>
> 
>> 
> 
>>
> 
>>  Vetria,
> 
>>
> 
>> 
> 
>>
> 
>>       Can you send us a screenshot of your problem ?
> 
>>
> 
>> 
> 
>>
> 
>>  Thanks
> 
>>
> 
>>  Mathieu
> 
>>
> 
>> 
> 
>>
> 
>>  Vetria Byrd wrote:
> 
>>
> 
>> >  The dataset consists of 5 files/slices, all containing zero's and one's.
> 
>>
> 
>> >  The goal is to take a 5x5x5 volume that contains an object in the center
> 
>>
> 
>> >  cell and extract that object.
> 
>>
> 
>> >
> 
>>
> 
>> >  Data Spacing is set to:  volReader->SetDataSpacing(1,1,1);
> 
>>
> 
>> >
> 
>>
> 
>> >  Thanks,
> 
>>
> 
>> >  Vetria
> 
>>
> 
>> >
> 
>>
> 
>> >  -----Original Message-----
> 
>>
> 
>> >  From: Mathieu Malaterre [mailto:mathieu.malaterre at kitware.com]
> 
>>
> 
>> >  Sent: Monday, April 26, 2004 5:26 PM
> 
>>
> 
>> >  To: Vetria Byrd
> 
>>
> 
>> >  Cc: vtkusers at vtk.org
> 
>>
> 
>> >  Subject: Re: [vtkusers] about vtkMarchingCubes
> 
>>
> 
>> >
> 
>>
> 
>> >  Vetria,
> 
>>
> 
>> >
> 
>>
> 
>> >      What type of image are you reading ? Is it possible that you have a
> 
>>
> 
>> >  negative spacing ? You might to avoid this.
> 
>>
> 
>> >
> 
>>
> 
>> >  HTH
> 
>>
> 
>> >  Mathieu
> 
>>
> 
>> >
> 
>>
> 
>> >
> 
>>
> 
>> >  Vetria Byrd wrote:
> 
>>
> 
>> >
> 
>>
> 
>> > >I am having a similiar problem with vtkMarchingCubes as posted at
> 
>>
> 
>> > >http://public.kitware.com/pipermail/vtkusers/2003-March/017033.html
> 
>>
> 
>> > >but I have not been able to find the reply or answer to the problem.
> 
>>
> 
>> > >
> 
>>
> 
>> > >I am reading several data files and using vtkMarchingCubes to 
> display the
> 
>>
> 
>> > >reconstructed object, but the positioning of the rendered object 
> seems to
> 
>>
> 
>> > >be off.  It shoud be centered within the view but no matter what I 
> do it's
> 
>>
> 
>> > >always off center.
> 
>>
> 
>> > >
> 
>>
> 
>> > >Can anyone give me an idea of what could be causing this?
> 
>>
> 
>> > >
> 
>>
> 
>> > >Thank you,
> 
>>
> 
>> > >Vetria
> 
>>
> 
>> > >
> 
>>
> 
>> > >
> 
>>
> 
>> > >
> 
>>
> 
>> > >_______________________________________________
> 
>>
> 
>> > >This is the private VTK discussion list.
> 
>>
> 
>> > >Please keep messages on-topic. Check the FAQ at:
> 
>>
> 
>> >
> 
>>
> 
>> >  <http://public.kitware.com/cgi-bin/vtkfaq>
> 
>>
> 
>> >
> 
>>
> 
>> > >Follow this link to subscribe/unsubscribe:
> 
>>
> 
>> > >http://www.vtk.org/mailman/listinfo/vtkusers
> 
>>
> 
>> > >
> 
>>
> 
>> >
> 
>>
> 
>> >
> 
>>
> 
>> >
> 
>>
> 
>> >
> 
>>
> 
>> 
> 
>>
> 
>  
> 

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: cube.cxx
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20040427/5732bfdc/attachment.txt>


More information about the vtkusers mailing list