[vtkusers] 3D TIFF -> STL

Gib Bogle g.bogle at auckland.ac.nz
Wed Jan 4 04:18:28 EST 2012


I am wanting to generate a stereolithographic (STL) file from a 3D binary TIFF 
file (containing only 0 and 255).  I found a suggestion that the steps are as 
follows:

1. In ITK, read TIFF and write VTK file
2. In VTK, read VTK file and create a surface mesh using vtkContourFilter
3. Save the mesh with vtkSTLWriter

I have created test.vtk from test.tif, by simply providing this filename to 
itk::ImageFileWriter.  Apparently since test.vtk contains image data, it should 
be possible to read it with vtkImageReader (or vtkImageReader2).  I've written 
code to read test.vtk, run it through vtkContourFilter and write the result out 
with vtkSTLWriter, but the resulting STL file contains no triangles.  The 
reason, I see, is that GetDataExtent() returns an array of 0s.  Clearly the vtk 
file is not being read correctly.

   vtkSmartPointer<vtkImageReader2> reader = 
vtkSmartPointer<vtkImageReader2>::New();
   reader->SetFileName(inputFilename.c_str());
   reader->Update();
   int ext[6];
   reader->GetDataExtent(ext);
   printf("Data extent: %d %d %d %d %d 
%d\n",ext[0],ext[1],ext[2],ext[3],ext[4],ext[5]);

I see from the FAQ that VTK can read a couple of different 3D VTK file formats, 
VTK Structured Grid and VTK Poly Data.  Clearly my test.vtk is neither of these 
- it's an image file.  I also see mention of "VTK legacy file format", which 
makes me wonder if I'm trying to do something that is no longer supported.

I'm sure there is a simple explanation ...

Thanks
Gib



More information about the vtkusers mailing list