trimesh.voxel.base

voxel.py

Convert meshes to a simple voxel data structure and back again.

class trimesh.voxel.base.VoxelGrid(encoding, transform=None, metadata=None)

Bases: Geometry

Store 3D voxels.

__init__(encoding, transform=None, metadata=None)
apply_transform(matrix)
as_boxes(colors=None, **kwargs)

A rough Trimesh representation of the voxels with a box for each filled voxel.

Parameters

colors (None, (3,) or (4,) float or uint8) – (X, Y, Z, 3) or (X, Y, Z, 4) float or uint8 Where matrix.shape == (X, Y, Z)

Returns

mesh – Mesh with one box per filled cell.

Return type

trimesh.Trimesh

property bounds
copy()
crc()

DEPRECATED OCTOBER 2023 : Use hash(geometry)

Get a hash of the current geometry.

Returns

hash – Hash of current graph and geometry.

Return type

int

property element_volume
property encoding

Encoding object providing the occupancy grid.

See trimesh.voxel.encoding for implementations.

export(file_obj=None, file_type=None, **kwargs)

Export the current VoxelGrid.

Parameters
  • file_obj (file-like or str) – File or file-name to export to.

  • file_type (None or str) – Only ‘binvox’ currently supported.

Returns

export – Value of export.

Return type

bytes

property extents
fill(method='holes', **kwargs)

Mutates self by filling in the encoding according to morphology.fill.

Parameters
  • method (hashable) – Implementation key, one of trimesh.voxel.morphology.fill.fillers keys

  • **kwargs (dict) – Additional kwargs passed through to the keyed implementation.

Returns

self – After replacing encoding with a filled version.

Return type

VoxelGrid

property filled_count

int, number of occupied voxels in the grid.

hash()

DEPRECATED OCTOBER 2023 : Use hash(geometry)

Get a hash of the current geometry.

Returns

hash – Hash of current graph and geometry.

Return type

int

hollow()

Mutates self by removing internal voxels leaving only surface elements.

Surviving elements are those in encoding that are adjacent to an empty voxel where adjacency is controlled by structure.

Returns

self – After replacing encoding with a surface version.

Return type

VoxelGrid

indices_to_points(indices)
property is_empty
is_filled(point)

Query points to see if the voxel cells they lie in are filled or not.

Parameters

point ((n, 3) float) – Points in space

Returns

is_filled – Is cell occupied or not for each point

Return type

(n,) bool

property marching_cubes

A marching cubes Trimesh representation of the voxels.

No effort was made to clean or smooth the result in any way; it is merely the result of applying the scikit-image measure.marching_cubes function to self.encoding.dense.

Returns

meshed – Representing the current voxel object as returned by marching cubes algorithm.

Return type

trimesh.Trimesh

property matrix

Return a DENSE matrix of the current voxel encoding.

Returns

dense – Numpy array of dense matrix Shortcut to voxel.encoding.dense

Return type

(a, b, c) bool

property origin

Deprecated. Use self.translation.

property pitch

Uniform scaling factor representing the side length of each voxel.

Returns

pitch – Pitch of the voxels.

Return type

float

Raises

RuntimeError – If self.transformation has rotation or shear components of has non-uniform scaling.

property points

The center of each filled cell as a list of points.

Returns

points – Points in space.

Return type

(self.filled, 3) float

points_to_indices(points)

Convert points to indices in the matrix array.

Parameters

points ((n, 3) float, point in space) –

Returns

indices

Return type

(n, 3) int array of indices into self.encoding

revoxelized(shape)

Create a new VoxelGrid without rotations, reflections or shearing.

Parameters

shape ((3, int)) – The shape of the returned VoxelGrid.

Returns

vox – Of the given shape with possibly non-uniform scale and translation transformation matrix.

Return type

VoxelGrid

property scale

3-element float representing per-axis scale.

Raises a RuntimeError if self.transform has rotation or shear components.

property shape

3-tuple of ints denoting shape of occupancy grid.

show(*args, **kwargs)

Convert the current set of voxels into a trimesh for visualization and show that via its built- in preview method.

property sparse_indices

(n, 3) int array of sparse indices of occupied voxels.

strip()

Mutate self by stripping leading/trailing planes of zeros.

Return type

self after mutation occurs in-place

property transform

4x4 homogeneous transformation matrix.

property translation

Location of voxel at [0, 0, 0].

property volume

What is the volume of the filled cells in the current voxel object.

Returns

volume – Volume of filled cells.

Return type

float