Migrating from another library
If you already have a mesh-processing pipeline built on one of the libraries below, these pages map the functions you're calling today onto their ordito equivalent, and call out the handful of places where the mapping isn't 1:1 — a different return convention, a parameter the reference library doesn't expose, or an algorithm that's genuinely different rather than merely renamed.
| Coming from | For | Page |
|---|---|---|
| trimesh | Mesh bookkeeping — edges, adjacency, boundary, validation, primitives, sampling, proximity | trimesh → |
| libigl | Discrete differential geometry — cotangent Laplacians, curvature, parametrization, heat geodesics | libigl → |
| Open3D | Point clouds, registration, surface reconstruction | Open3D → |
| MeshLab / PyMeshLab | Editing filters — remeshing, decimation, smoothing, hole filling | MeshLab → |
| potpourri3d | The heat-method family — vector heat, parallel transport, log maps, signed distance | potpourri3d → |
| PyTorch3D | Batched neighbour/Chamfer primitives, mesh regularization losses | PyTorch3D → |
Three things worth knowing before diving into a specific mapping:
- Every ordito function takes and returns
wp.array, nevernp.ndarray. Converting iswp.array(numpy_array, dtype=..., device=...)in andwarp_array.numpy()out; see Concepts for why the boundary is drawn there. -
Faces are a flat
(3 * n_faces,)wp.int32buffer, not(n_faces, 3). Every mapping table below assumes this. Convert once, where your data enters and leaves ordito:- There is no scene graph, viewer, or mesh "session" object. ordito is a library of functions (plus one optional, statelessimport numpy as np import trimesh import warp as wp import ordito as od mesh_tm = trimesh.creation.icosphere() vertices = wp.array(mesh_tm.vertices, dtype=wp.vec3) # float64 rows become float32 vec3 faces = wp.array(mesh_tm.faces.reshape(-1), dtype=wp.int32) # (n_faces, 3) -> flat mesh = od.Trimesh(vertices, faces) faces_rows = mesh.faces.numpy().reshape(-1, 3) # and back to (n_faces, 3) print(np.array_equal(faces_rows, mesh_tm.faces), mesh.area, mesh_tm.area)Trimeshconvenience wrapper), not a mutable-document editor like a MeshLabMeshSetor an Open3DTriangleMeshwith in-place filters. A function that would mutate its input in one of those libraries instead returns a new array in ordito.
These pages name the closest ordito equivalent for each function; they are not exhaustive. The full picture is the API Reference. Most rows are backed by a test that compares the two functions' outputs directly; where a row says the two differ (a convention, a sign, a different algorithm), that difference is measured and documented in the ordito function's docstring.