This is a major release with many bug fixes, performance improvements, updates to the TypeScript API, and ManifoldCAD. Notable changes:
- Added MinkowskiSum and MinkowskiDifference, but note that the current implementation performs many union operations. It may be slow and memory-intensive for complex meshes.
- MeshIO is removed from our public API. Users should use libraries such as Trimesh for Python and assimp for C++. The MeshIO code is still available as an example for interfacing with assimp.
- ManifoldCAD can now import and operate on glTF models! It can also display 2D CrossSections and non-manifold imports. The documentation is also vastly improved, for both ManifoldCAD scripts, and the underlying TS API for those wanting to build their own tool.
New Features
API Updates
- manifoldc minor API fixes, by @geoffder in #1455.
- Deprecate
Manifold.compose()in WASM bindings, by @tonious in #1487. - Deprecate compose, by @pca006132 in #1489.
- Add C-binding functions to access the normalIdx parameter of GetMeshGL/GetMeshGL64, by @WNP78 in #1494.
- Make MeshIO private, by @pca006132 in #1529.
Algorithm Improvements and Fixes
- Cleanup of Boolean3, by @elalish in #1443.
- Fix determinism, by @pca006132 in #1452.
- New symbolic perturbation, by @elalish in #1445.
- Fix SplitPinchedVerts parallelization, by @pca006132 in #1456.
- Boolean3 performance optimization, by @pca006132 in #1457.
- Fix create halfedges, by @pca006132 in #1472.
- Lazy collider, by @pca006132 in #1473.
- Fix face normals, by @elalish in #1475.
- Share halfedge, by @pca006132 in #1478.
- Minor optimizations, by @pca006132 in #1480.
- Avoid copies and add more tracing, by @pca006132 in #1481.
- Fix excessive memory usage in batch union operations, by @zalo in #1495.
- Fix negative offset circular segment calculation, by @pca006132 in #1511.
- Fix degenerate hulls, by @pca006132 in #1512.
- Make keyholing more robust in triangulator, by @elalish in #1528.
- Fix lazy collider, by @Trzeth in #1540.
- Fix Cylinder(h, 0, r) to support cone with apex at bottom, by @AnshulPatil2005 in #1541.
Build System
- Added
MANIFOLD_STRICTflag, by @pca006132 in #1438. - -ffp-contract=off for clang too, by @pca006132 in #1476.
ManifoldCAD.org / JS / TS / WASM
- Removed gl-matrix and updated examples, by @elalish in #1429.
- Ensure that Manifold timing message includes deferred operations, by @tonious in #1439.
- Export internal type modules for TypeScript portability, by @Loosetooth in #1446.
- Import glTF models into manifoldCAD, by @tonious in #1434, #1461, #1505, #1514.
- Compatibility fixes, by @tonious in #1449, #1451, #1453, #1454.
- TypeScript Documentation Overhaul, by @tonious in #1484, #1488, #1492, #1497.
- Use worker bundled via esbuild, by @tonious in #1486.
- Update NPM dependencies, by @tonious in #1436, #1499.
- Fix Minkowski JS Bindings and TypeScript 5.9 compatibility in gltf-io.ts, by @zalo in #1501.
- Update esbuild.mjs to work with emscripten v5, by @neilpa in #1508.
- Make CrossSections visible, by @tonious in #1507.
- Separate Editor and Examples for clarity, by @tonious in #1536, #1535, #1533.
- Fix js bindings for manifold.simplify() with default parameters, by @dsafa in #1543.
Tests and CI
- Stop using deprecated macos-13 images in CI, by @coryrc in #1442.
- Add test with props, by @stephomi and @elalish in #1465.
- Add perturbation test, by @elalish in #1467.
- Add reproducer for issue 1498, by @pca006132 in #1469.
- Disable flakey
esm.shtest, by @tonious in #1513. - Properly integrate manifold_test into ctest, by @coryrc in #1520.
- Fix tests, by @elalish in #1532.
Miscellaneous
- Add SKAPA to Users in README, by @nmattia in #1431.
- Remove CLA requirement from CONTRIBUTING.md, by @coryrc in #1441.
- Add Otterplans to users in README, by @mathieucivel in #1483.
- Nits: Put the links in the body and header in README, by @coryrc in #1517.
- Add Bracket Engineer to users, by @wesbos in #1519.
- Create a template for launching f3d from c++, by @coryrc in #1523.
New Contributors
- @coryrc made their first contribution in #1441.
- @mathieucivel made their first contribution in #1483.
- @WNP78 made their first contribution in #1494.
- @wesbos made their first contribution in #1519.
- @AnshulPatil2005 made their first contribution in #1541.