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