| Create and load |
|
| make a primitive (box, sphere, cylinder, torus...) |
creation: box, icosphere, uv_sphere, cylinder, torus, grid |
| revolve, extrude or sweep a profile |
revolve, extrude_polygon, sweep_polygon |
| load a mesh file (OBJ, PLY, STL, ...) |
io.load_mesh_data, io.load_mesh (needs ordito[io]) |
| work with an object that caches derived quantities |
Trimesh |
| Inspect |
|
| face normals, areas, angles, centroids |
triangles.face_normals_and_areas, face_angles, face_centroids |
| vertex normals |
vertices.vertex_normals |
| volume, centre of mass, inertia, Euler characteristic |
measures: volume, moments, euler_characteristic |
| is it watertight / manifold / orientable / self-intersecting? |
validation: is_watertight, is_edge_manifold, is_orientable, is_self_intersecting |
| unique edges and their lengths |
edges.edges_unique, edges_unique_length |
| boundary edges and hole rims |
boundary.boundary_edges, boundary_loops |
| neighbouring faces and connected components |
adjacency.face_adjacency, face_connected_component_labels, combine.split |
| curvature |
curvature: discrete_gaussian_curvature, discrete_mean_curvature, principal_curvature |
| bounding boxes |
bounds.aabb, bounds.oriented_bounding_box |
| triangle quality |
triangles.face_quality |
| Repair |
|
| make a broken mesh a closed solid in one call |
repair.make_solid |
| merge duplicate vertices, drop degenerate or unused elements |
repair.remove_duplicated_vertices, remove_degenerate_faces, remove_unreferenced_vertices |
| fix needle and cap triangles within a deviation bound |
repair.fix_degeneracies, collapse_small_triangles |
| fix the winding, or point normals outward |
repair.make_winding_consistent, make_normals_outward |
| remove small floating pieces |
repair.remove_small_components |
| fill holes |
holes: fill_small, fill_min_weight, fill_smooth |
| remove self-intersections |
repair.fix_self_intersections |
| Edit |
|
| move, rotate, scale, mirror |
transform: transform_mesh, rotation_matrix |
| combine meshes, or split into parts |
combine.concatenate, combine.split |
| keep a subset of faces |
selection.submesh_from_face_mask |
| remesh to uniform edge lengths |
remesh.isotropic_remesh |
| simplify (decimate) |
remesh.quadric_decimate, cluster_decimate |
| subdivide |
remesh.subdivide, subdivide_loop, subdivide_to_size |
| smooth |
smoothing: filter_taubin, filter_laplacian, filter_implicit_fairing |
| offset or thicken a surface |
levelset.offset_mesh, levelset.thicken_mesh |
| cut with a plane |
intersection.slice_mesh_with_plane, split_mesh_with_plane, mesh_with_plane |
| extract an isosurface |
levelset.marching_cubes, intersection.marching_triangles |
| Query |
|
| closest point on a surface, signed distance |
proximity.closest_point_on_mesh, signed_distance_on_mesh, winding_number |
| cast rays |
ray.intersects_first, intersects_location |
| test which points are inside |
ray.contains_points |
| nearest neighbours, radius search |
neighbors.query_nearest, query_ball |
| Chamfer and Hausdorff distances |
metrics: chamfer_mesh_to_mesh, hausdorff_mesh_to_mesh |
| intersection curve of two meshes, colliding faces |
intersection.mesh_with_mesh, collision_masks |
| Point clouds |
|
| sample points on a surface |
sample.sample_surface, sample_surface_poisson_disk |
| estimate normals |
points.estimate_normals |
| down-sample |
voxels.voxel_down_sample, points.farthest_point_sample |
| remove outliers |
points.statistical_outlier_mask, radius_outlier_mask |
| convex hull (example) |
points.convex_hull (exact), convex_superset_mask (prefilter) |
| reconstruct a surface |
reconstruction.screened_poisson, ball_pivoting |
| align two scans |
registration.icp, icp_point_to_plane, procrustes |
| voxelize |
voxels.voxelize_mesh, voxelize_points |
| Differential geometry |
|
| cotangent Laplacian and mass matrix |
laplacian.cotmatrix, laplacian.mass_matrix |
| solve a constrained quadratic (harmonic, biharmonic fields) |
linalg.min_quad_with_fixed |
| geodesic distance |
heat.heat_geodesic (approximate, fast), geodesic_walk.geodesic_path |
| flatten to the plane (UV parametrization) |
parametrization: harmonic, lscm, arap |
| bake or sample textures |
texture |
| Arrays |
|
NumPy-like unique, sort, isin, searchsorted-style helpers |
grouping, array |
reductions (min, max, sum, mean) without a host round trip |
reduce |
per-group sums (bincount with weights, add.reduceat), reproducible under the deterministic setting |
reduce.scatter_sum, reduce.segment_sum |