trimesh.voxel.ops module¶
- trimesh.voxel.ops.boolean_sparse(a, b, operation=<ufunc 'logical_and'>)¶
Find common rows between two arrays very quickly using 3D boolean sparse matrices.
- Parameters:
a ((n, d) int, coordinates in space)
b ((m, d) int, coordinates in space)
operation (numpy operation function, ie:) – np.logical_and np.logical_or
- Returns:
coords
- Return type:
(q, d) int, coordinates in space
- trimesh.voxel.ops.fill_base(sparse_indices)¶
Given a sparse surface voxelization, fill in between columns.
- Parameters:
sparse_indices ((n, 3) int, location of filled cells)
- Returns:
filled
- Return type:
(m, 3) int, location of filled cells
- trimesh.voxel.ops.fill_orthographic(dense)¶
- trimesh.voxel.ops.fill_voxelization(sparse_indices)¶
Given a sparse surface voxelization, fill in between columns.
- Parameters:
sparse_indices ((n, 3) int, location of filled cells)
- Returns:
filled
- Return type:
(m, 3) int, location of filled cells
- trimesh.voxel.ops.indices_to_points(indices, pitch=None, origin=None)¶
Convert indices of an (n,m,p) matrix into a set of voxel center points.
- Parameters:
indices ((q, 3) int, index of voxel matrix (n,m,p))
pitch (float, what pitch was the voxel matrix computed with)
origin ((3,) float, what is the origin of the voxel matrix)
- Returns:
points
- Return type:
(q, 3) float, list of points
- trimesh.voxel.ops.matrix_to_marching_cubes(matrix: Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes], pitch: float | floating | int | integer | unsignedinteger | Buffer | _SupportsArray[dtype[Any]] | _NestedSequence[_SupportsArray[dtype[Any]]] | bool | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes] = 1.0, threshold: float | floating | int | integer | unsignedinteger | None = None)¶
Convert an (n, m, p) matrix into a mesh, using marching_cubes.
- Parameters:
matrix ((n, m, p) bool) – Occupancy array
pitch (float or length-3 tuple of floats, optional) – Voxel spacing in each dimension
threshold (float or None, optional) – If specified, converts the input into a boolean matrix by considering values above threshold as True
- Returns:
mesh – Mesh generated by meshing voxels using the marching cubes algorithm in skimage
- Return type:
- trimesh.voxel.ops.matrix_to_points(matrix, pitch=None, origin=None)¶
Convert an (n,m,p) matrix into a set of points for each voxel center.
- Parameters:
matrix ((n,m,p) bool, voxel matrix)
pitch (float, what pitch was the voxel matrix computed with)
origin ((3,) float, what is the origin of the voxel matrix)
- Returns:
points
- Return type:
(q, 3) list of points
- trimesh.voxel.ops.multibox(centers, pitch=1.0, colors=None)¶
Return a Trimesh object with a box at every center.
Doesn’t do anything nice or fancy.
- Parameters:
centers ((n, 3) float) – Center of boxes that are occupied
pitch (float) – The edge length of a voxel
colors ((3,) or (4,) or (n,3) or (n, 4) float) – Color of boxes
- Returns:
rough – Mesh object representing inputs
- Return type:
- trimesh.voxel.ops.points_to_indices(points, pitch=None, origin=None)¶
Convert center points of an (n,m,p) matrix into its indices.
- Parameters:
points ((q, 3) float) – Center points of voxel matrix (n,m,p)
pitch (float) – What pitch was the voxel matrix computed with
origin ((3,) float) – What is the origin of the voxel matrix
- Returns:
indices – List of indices
- Return type:
(q, 3) int
- trimesh.voxel.ops.points_to_marching_cubes(points, pitch=1.0)¶
Mesh points by assuming they fill a voxel box, and then running marching cubes on them
- Parameters:
points ((n, 3) float) – Points in 3D space
- Returns:
mesh – Points meshed using marching cubes
- Return type:
- trimesh.voxel.ops.sparse_to_matrix(sparse)¶
Take a sparse (n,3) list of integer indexes of filled cells, turn it into a dense (m,o,p) matrix.
- Parameters:
sparse ((n, 3) int) – Index of filled cells
- Returns:
dense – Matrix of filled cells
- Return type:
(m, o, p) bool
- trimesh.voxel.ops.strip_array(data)¶