A high-performance 3D point cloud and mesh processing library for Rust, with Python bindings.
| Crate | What it does |
|---|---|
threecrate-core |
Point, PointCloud, TriangleMesh, Transform3D |
threecrate-algorithms |
Filtering, ICP, NDT, global registration, segmentation, normals, FPFH/SHOT, mesh boolean, smoothing |
threecrate-gpu |
GPU filtering, ICP, normals, nearest-neighbor, TSDF, real-time rendering (wgpu) |
threecrate-io |
PLY, OBJ, PCD, XYZ/CSV, LAS/LAZ*, E57* — streaming and memory-mapped |
threecrate-reconstruction |
Poisson, BPA, alpha shapes, Delaunay, Marching Cubes, MLS, auto-select |
threecrate-simplification |
Quadric error, edge collapse, clustering, progressive mesh |
threecrate-visualization |
Interactive viewer — orbit/pan/zoom, GPU-accelerated |
* opt-in feature flags
Rust
[dependencies]
threecrate = "0.7.1"use threecrate::prelude::*;
let cloud = read_point_cloud("scan.ply")?;
let cloud = voxel_grid_filter(&cloud, 0.05)?;
let normals = estimate_normals(&cloud, 10)?;
let mesh = auto_reconstruct(&normals)?;
write_mesh("output.obj", &mesh)?;Python
pip install threecrateimport threecrate as tc
cloud = tc.read_point_cloud("scan.ply")
cloud = tc.voxel_downsample(cloud, voxel_size=0.05)
normal_cloud = tc.estimate_normals(cloud)
mesh = tc.poisson_reconstruct(normal_cloud)
tc.write_mesh(mesh, "output.ply")| Feature | threecrate | Open3D | PCL |
|---|---|---|---|
| Language | Rust + Python | Python (C++ core) | C++ |
pip install |
✅ | ✅ | ❌ |
| Memory safety | ✅ Rust | ❌ | ❌ |
| GPU compute | ✅ wgpu | ✅ CUDA | Partial |
| Global registration | ✅ FPFH+RANSAC | ✅ | ✅ |
| Surface reconstruction | ✅ 6 algorithms | ✅ | ✅ |
| Streaming I/O | ✅ PLY/OBJ/XYZ | ❌ | ❌ |
| E57 support | ✅ opt-in | ❌ | ❌ |
| WebAssembly | Roadmap | ❌ | ❌ |
Contributions are welcome — algorithms, Python bindings, new formats, docs.
- CONTRIBUTING.md — setup and guidelines
- Open issues — look for
good first issue - GitHub Discussions — questions and ideas
licensed under MIT

