Releases: elalish/manifold
v2.2.2
Bug Fixes
- Fixed CMake problems. #591, #595 (@pca006132)
- Fixed Python
split
binding. #593 (@zalo) - Fixed JS GLB validator errors. #596 (@elalish)
- Allow skipping degenerate triangle removal, to handle zero-volume meshes. #603 (@ramcdona)
- Fixed triangulator bug. #608, #609, #610 (@starseeker, @elalish)
- Fixed JS GLB I/O for mixed properties. #612 (@elalish)
- Fixed Python
smooth
binding and addedcalculate_curvature
. #615 (@elalish, @pca006132, @zalo) - Added
level_set
to Python bindings. #616 (@zalo) - Check python format in CI. #618 (@pca006132)
- Fixed performance regression with properties. #621 (@pca006132, @stephomi)
v2.2.1
This is another significant update, bringing 2D support, lossless roundtrip of Manifolds through glTF, Python bindings published on PyPI, and a whole new triangulator that fixes lots of geometric edge cases in the Boolean. And of course many bug fixes and performance improvements - a huge thank you to all the contributors!
New Features
- New 2D subsystem,
CrossSection
, powered by Clipper2. #341, #376 (@geoffder) - Added
Mirror
transform. #354 (@geoffder) - Improved input error handling. #385 (@geoffder)
- Added a
Merge
helper to turn nearly-manifold input meshes into Manifolds. #394, #481 (@elalish) - Added
SetProperties
for computing arbitrary vertex properties. #433 (@elalish) - Replaced
GetCurvature
withCalculateCurvature
(breaking change). #448 (@elalish) - Allow partial revolutions. #455 (@cartesian-theatrics)
- Added convex hull ops. #486, #489 (@geoffder)
Bindings
- Updated C bindings. #353, #382, #434 (@geoffder)
- Fix Vite build. #371 (@jirihon)
- Updated JS bindings. #375, #393, #440 (@elalish, @jirihon, @geoffder)
- Added Python bindings. #378, #445, #459, #488, #492, #558 (@pca006132, @johnnybigert, @axel-angel, @elalish, @zalo)
- Built a glTF manifold extension with JS I/O. #420 (@elalish)
- Thread-safety for SDF C-binding. #427 (@harmanpa)
- Switch to nanobind for python - API now requires numpy. #537 (@pca006132)
Bug Fixes
- Make cache thread-safe. #357 (@pca006132)
- Fix flipped triangles in
Compose
. #404 (@pca006132) - Added global coplanarity check. #408 (@elalish)
- Fixed
Warp
simplification. #416 (@elalish) - Fixed
Compose
index error. #430 (@pca006132) - Fixed decimator seg-fault. #447 (@elalish, @Loosetooth)
- Workaround for Assimp 3MF export. #454 (@geoffder)
- Fixed WASM seg-fault. #474 (@elalish)
- Fixed conflicting numbers of properties. #480 (@elalish)
- Fixed a crash on a particular self-intersected model. #501 (@stephomi)
- Fixed precision calculation. #508 (@elalish)
- Fixed decimator odd number of halfedges. #534 (@pca006132)
- Fixed aliasing in
SparseIndices
. #540 (@pca006132) - Improved determinism. #550 (@pca006132)
- Fixed incorrect properties output from Boolean. #587 (@elalish)
- Fixed NaN halfedge tangents. #588 (@elalish)
- Fixed a variety of geometrically incorrect complex Boolean results. This all comes down to our polygon triangulator, which had grown increasingly complex. I finally decided to pull the plug and start over with a new algorithm. It is now simpler and significantly more robust. The test suite was also expanded considerably. Developing this new algorithm was the main driver pushing this release to be a few months later than intended. #564 (@elalish)
Performance Improvements
- Lazy transformations for CrossSection. #355 (@geoffder)
- Early simplification of op tree. #368 (@ochafik)
- Parallelize some CSG ops. #381 (@pca006132)
- Doubled the speed of some ops by using hash tables. #484 (@stephomi)
- Improve decimator loops. #483 (@pca006132)
- Optimize sorting. #493, #494 (@stephomi)
- Improved parallelization. #503, #522 (@pca006132)
- Removed OMP and CUDA backends to focus on TBB. #525, #531 (@pca006132)
- Replaced graphlite with union-find. #569 (@pca006132)
Build/CI Updates
- Formatting checks for more languages. #441 (@elalish)
- Improved dependency resolution. #523, #559 (@pca006132)
- Allow macOS 10.13 building. #577 (@pca006132)
Examples
- Added a
convertFile
utility. #407 (@elalish) - Built make-manifold page to test
Merge
andEXT_manifold
. #428 (@elalish) - Fixed CGAL perf test. #575 (@sloriot)
ManifoldCAD.org
v2.1.0
This is a significant update, primarily centered on replacing MeshRelation
with MeshGL
, which accomplishes the goal of maintaining material properties across operations much better and with a simpler, more performant API. I'm not considering this a breaking change, as MeshRelation
turned out to be broken enough that I doubt it was getting much use anyway. For the WASM build on npm, this is definitely a breaking change as we've updated its API more significantly and switched to an ES6 module. This brings us up from v1.0 to v2.1 to keep a consistent version from now on.
New Features
- Added
MeshGL
. #269 (@stewartoallen, @elalish) - Handle arbitrary properties in
MeshGL
. #290 (@elalish) - Added transform relations to
MeshGL
. #315 (@elalish) - Added normals update to
GetMeshGL
. #317 (@elalish) - Simplified
Polygons
type. #343 (@elalish)
WASM bindings
- Added missing declarations. #267, #320 (@jirihon, @rafern)
- Update declarations for ES6. #342, #346 (@rafern)
- Refactored bindings. #268 (@rafern)
- Added JS
Mesh
class. #272 (@elalish) - Updated to ES6 Module. #322 (@elalish)
- Accept
Mat4
intransform
. #329 (@pca006132)
Build/CI Updates
- Added Node.js tests. #262 (@elalish)
- Added C bindings. #292, #295, #303, #306, #310, #311, #313 (@geoffder)
- Updated CI to CUDA 12. #319 (@elalish)
- Added maze benchmark to Python run. #333 (@pca006132)
Bug Fixes
- Fixed memory leak. #280 (@pca006132)
- Fixed mirroring scale. #298 (@elalish)
- Made robust to overlaps by default. #299 (@elalish)
- Fixed Python binding bug. #307 (@pca006132)
- Changed enum case to avoid macros. #325 (@elalish)
- Hash table OMP fix. #331 (@pca006132)
Examples
ManifoldCAD.org
- Fixed first run problem. #281 (@elalish)
- Fixed CSS. #296 (@pca006132)
- Switched from three.js GLTFExporter to gltf-transform. #322 (@elalish)
- Added
show()
andonly()
functions for visual debug. #330, #334 (@elalish) - Added gl-matrix to editor for vector functions. #332 (@elalish)
- Made into a fully installable PWA. #336 (@elalish)
- Fixed module interface. #348 (@elalish)
v2.0.0
Thanks to all our collaborators, we've made enormous progress on this library, including some significant updates to the API that make this worthy of a v2.0 release. Following is a non-exhaustive list of changes.
New Feature
API Changes
- Updated API to functional style. #131, #171 (@pca006132)
- Exceptions now optional, #170 (@elalish)
- Reduced dependencies #92, #189, #190, #194 (@elalish)
- Updated MeshRelation API, #184 (@elalish)
Build/CI Updates
- Windows compatibility. #88 (@yetigit)
- Godot compatibility. #93 (@fire)
- Cross-platform CI. #103, #111, #229 (@pca006132)
- Python binding. #113, #214 (@pca006132)
- Reorganized directories, #157 (@elalish)
- Added code coverage, formatting. #132, #140, #142, #195 (@pca006132, @elalish)
- WASM build. #155, #201, #221, #224 (@makc, @pca006132, @elalish)
- Now available on npm as manifold-3d.
Bug Fixes
- Make thread-safe. #125 (@pca006132)
- Fixed degenerate removal. #137, #179 (@elalish)
- Fixed triangulator. #154, #165, #180, #182 (@elalish)
Performance Improvements
- CGAL comparison. #84 (@ochafik)
- Optimizations. #106, #150, #235 (@pca006132)
- Managed memory. #121 (@pca006132)
- Dynamic parallel backend. #126 (@pca006132)
ManifoldCAD.org
v1.0.0
I'm marking this first release as v1.0 because I've been working on it long enough and it passes a rigorous enough batch of tests that I'm convinced it really is a next step in robust computational geometry. Obviously I can't promise it's bug-free, but I believe at this point the fundamental architecture is sound and can be built upon. Likewise, after many false starts I believe I have an API that is durable and can be expanded without major breaking changes.
In short, I feel comfortable recommending you try using it and building on it, and that I won't be wasting your time.