Mesh & Scene IO

Our Mesh and Scene IO is backed by VTK and assimp along with our own readers.

All geometry can read/write through MeshIO.

// Read ".vtk" file into tetMesh
auto tetMesh = MeshIO::read<TetrahedralMesh>("C:/ExampleLocation/exampleFile.vtk");
// Write out
MeshIO::write(tetMesh , "C:/MyLocationToWriteTo/exampleFileOut.vtk");

Here’s a full list of supported geometry file types

VisualObjectImporter

The VisualObjectImporter is for importing more complex objects in the scene that cannot be described by a single geometry. This may involve multiple separable meshes, materials, textures, etc. Or even hierarchically defined meshes with multiple parts (it will flatten). In the future, it may be used for full scenes. It supports reading 3ds, obj, fbx, and dae. It can be used as follows:

MeshIO

File Format Extension IO Geometry
VTK .vtk read/write HexahedralMesh, SurfaceMesh, TetrahedralMesh
VTU .vtu read/write HexahedralMesh, TetrahedralMesh
VTP .vtp read/write SurfaceMesh
Stereolithic .stl read/write SurfaceMesh
Polygon .ply read/write SurfaceMesh
Nearly Raw Raster Data .nrrd read/write ImageData (Only uncompressed)
Nifti .nii read/write ImageData
Dicom .dcm read ImageData (Basic/limited support)
Meta Images .mhd + .raw read/write ImageData (Compressed)
Wavefront .obj read SurfaceMesh
Collada .dae read SurfaceMesh
Filmbox .fbx read SurfaceMesh (Basic/limited support)
Autodesk 3ds .3ds read SurfaceMesh (Basic/limited support)
Vega .veg read/write HexahedralMesh, TetrahedralMesh
GMSH .msh read HexahedralMesh, TetrahedralMesh
std::shared_ptr<VisualObject> myObject = ObjectIO::importSceneObject("Object Name", "C:/ExamplePath/ExampleFile.dae", "C:/ExamplePath/");
// This can then be added to the scene
scene->addSceneObject(myObject);

Example of file with multiple parts and materials:

Alternative text