TrueForm enables real-time geometric operations on million-polygon meshes. On a pair of 1M-polygon meshes, boolean union completes in 28ms and intersection curve extraction in 7ms. Try it live in your browser →
These benchmarks quantify performance against established libraries across spatial indexing, topology analysis, intersection computation, and mesh cutting.
| Property | Value |
|---|---|
| CPU | Apple M4 Max (12P + 4E cores) |
| Memory | 64 GB |
| Compiler | Clang with -O3 -march=native |
| Allocator | mimalloc |
| Test Data | Stanford Dragon, 58K–1M polygons (contains non-manifold flaps) |
| Sampling | 10–1000 evaluations per configuration |
Construction benchmarks use 10 runs; query benchmarks use 1000. All libraries use parallel execution where available. For sub-millisecond queries, mean time is reported; for longer operations, minimum time is reported to reduce noise from OS scheduling. Source code →
Sample comparisons against VTK, CGAL, libigl, Coal, FCL, and nanoflann:
| Operation | Input | Time | Speedup | Baseline | TrueForm |
|---|---|---|---|---|---|
| Boolean Union | 2 × 1M | 28 ms | 84× | CGAL Simple_cartesian<double> | reduction diagrams, double |
| Mesh–Mesh Curves | 2 × 1M | 7 ms | 233× | CGAL Simple_cartesian<double> | reduction diagrams, double |
| Self-Intersection | 1M | 78 ms | 37× | libigl EPECK (GMP/MPFR) | reduction diagrams, double |
| Isocontours | 1M, 16 cuts | 3.8 ms | 38× | VTK vtkContourFilter | reduction diagrams, float |
| Connected Components | 1M | 15 ms | 10× | CGAL | parallel union-find |
| Boundary Paths | 1M | 12 ms | 11× | CGAL | Hierholzer's algorithm |
| k-NN Query | 500K | 1.7 µs | 3× | nanoflann k-d tree | AABB tree |
| Mesh–Mesh Distance | 2 × 1M | 0.2 ms | 2× | Coal (FCL) OBBRSS | OBBRSS tree |
| Principal Curvatures | 1M | 25 ms | 55× | libigl | parallel k-ring quadric fitting |
Explore full benchmark charts and scaling analysis for each module:
brew install boost gmp mpfr libccd tbb assimp libomp
sudo apt-get install libboost-dev libgmp-dev libmpfr-dev libccd-dev libtbb-dev libassimp-dev libomp-dev
vcpkg install boost gmp mpfr libccd tbb assimp llvm-openmp
CGAL, libigl, FCL, Coal, and nanoflann are fetched automatically via CMake FetchContent.
VTK is optional due to its size. Install it separately to include VTK benchmarks; otherwise they are skipped.
brew install vtk
sudo apt-get install libvtk9-dev
vcpkg install vtk
cmake -B build -DTF_BUILD_BENCHMARKS=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --parallel --target benchmarks
./build/run-benchmarks
Results are written to build/results/. Use consolidate_results.py to merge per-library CSVs.