[ITK-users] Do any of the mesh file formats store CellData?
    DVigneault 
    davis.vigneault at gmail.com
       
    Thu Aug 13 13:55:04 EDT 2015
    
    
  
All--
Do any of the mesh file formats supported by ITK store CellData information? 
I've done a test where I've (a) created a mesh, (b) associated a value with
each cell, (c) written it to file, (d) read it back in, and (e) attempted to
read the associated value.  I did this for each file format.  When I ask for
the cell's data, .vtk and .gii formats return uninitialized data, whereas
.obj, .byu, .fcv, .fsa, .fsb, and .off segfault.
I looked through itk::MeshFileWriter to see whether there were an option
(such as WriteCellDataOn()), and there is a method WriteCellData() [1], but
it is protected.  Looking at the header files of some of the individual
writer objects (itkVTKPolyDataMeshIO, itkOBJMeshIO, etc), it looks like the
WriteCellData(void *buffer) method is abstract.
[1]
http://www.itk.org/Doxygen/html/classitk_1_1MeshFileWriter.html#a1819df60ed20493f64a84c1728ddf26b
I've pasted below the test program, in case the problem is due to a mistake
I've made there.
Best, and thanks!
--Davis
#include "itkMesh.h"
#include "itkMeshFileReader.h"
#include "itkMeshFileWriter.h"
#include "itkRegularSphereMeshSource.h"
const unsigned int Dimension = 3;
typedef float      TCoordinate;
typedef itk::Mesh< TCoordinate, Dimension >   TMesh;
typedef itk::RegularSphereMeshSource< TMesh > TSphere;
typedef itk::MeshFileReader< TMesh >          TMeshReader;
typedef itk::MeshFileWriter< TMesh >          TMeshWriter;
int main( int argc, char* argv[] )
{
  auto sphere = TSphere::New();
  sphere->Update();
  auto mesh = sphere->GetOutput();
  double value = 10;
  for (unsigned int i = 0; i < mesh->GetNumberOfCells(); ++i)
    mesh->SetCellData( i, value);
  std::cout << mesh->GetCellData()->ElementAt(0) << std::endl; // 10
  auto meshWriter = TMeshWriter::New();
  meshWriter->SetFileName( argv[1] );
  meshWriter->SetInput( mesh );
  meshWriter->Update();
  auto reader = TMeshReader::New();
  reader->SetFileName( argv[1] );
  reader->ReadPointData();
  reader->Update();
  float value2;
  auto mesh2 = reader->GetOutput();
  mesh2->SetCellData(0, value2);
  mesh2->GetCellData()->ElementAt(0);
  std::cout << value2 << std::endl; // Segfault or uninitialized
  return EXIT_SUCCESS;
}
--
View this message in context: http://itk-insight-users.2283740.n2.nabble.com/Do-any-of-the-mesh-file-formats-store-CellData-tp7587666.html
Sent from the ITK Insight Users mailing list archive at Nabble.com.
    
    
More information about the Insight-users
mailing list