I/O Helpers

VoxelMap supports saving and loading models in lightweight formats. Install extras if you want I/O utilities:

pip install voxelmap[io]

Saving and Loading JSON

The simplest way to persist a model is with JSON.

import numpy as np
from voxelmap import Model

arr = np.ones((3, 3, 3))
model = Model(arr)
model.set_color(1, "red")

model.save("cube.json")   # saves array + palette
loaded = Model()
loaded.load("cube.json")

loaded.draw_mpl("custom")

➡ This saves both the voxel array and its palette, so your colors are preserved.

Saving and Loading TXT

VoxelMap can also export voxel arrays to a plain text format (.txt). This is useful for interoperability with voxel editors like Goxel.

model.save("cube.txt")   # export
model2 = Model()
model2.load("cube.txt")

OBJ Export (with Meshing)

VoxelMap does not directly save .obj from the core. Instead, use the mesh extras (ImageMesh or MarchingMesh) to create .obj files:

from voxelmap import Model
import numpy as np

arr = np.random.randint(0, 2, (10, 10, 10))
model = Model(arr)

model.MarchingMesh("random.obj")  # requires voxelmap[mesh]
model.MeshView("random.obj")

When to use what?

  • JSON → best for full reproducibility (stores array + palette).

  • TXT → good for interchange with voxel editors.

  • OBJ → polygonal mesh, use when exporting to Blender / 3D tools.