Releases: elalish/manifold
v2.5.1
v2.5.0
New Features
- Added MinGap, #765 (@mleleszi)
- Added CalculateNormals and SmoothOut, #771 (@elalish)
- Added SmoothByNormals, #776 (@elalish)
- Smoothing now works on quads too, #793 (@elalish)
Bindings
- Added context object to C-bindings for SetProperties and Warp, #795 (@harmanpa)
- Fixed JS bindings for split, splitByPlane, and rotate, #811 (@errendir)
- Added Merge to C-bindings, #820 (@harmanpa)
Bug Fixes
- Fixed lost properties in Decompose, #794 (@harmanpa)
- Various smoothing improvements and fixes, #796, #801, #821, #828, #835 (@elalish)
- Pulled in upstream fixes in Clipper, #817 (@pca006132)
- Triangulator fixes & tests, #824, #832, #834 (@kintel, @elalish)
Performance Improvements
- Added convex polygon triangulation fast path, #829 (@elalish)
- Triangulator O(n^2) => O(nlogn) via collider, #830 (@elalish)
Build/CI Updates
- Fixed GLM install, #782 (@pca006132)
- Split up test files, #792, #800, #826 (@dasoya, @elalish)
- Fixed Clipper import for Windows, #815 (@imciner2)
- Update CI to include GCC 14, #816 (@cjmayo)
- Update GLM to 1.0.1, #819 (@cjmayo)
- Include submodules in release package, #825 (@cjmayo)
Documentation
- Pointer to Java bindings in README, #769 (@cartesian-theatrics)
- Updated web examples to TS and convert our Three example to show material mapping, #805, #806, #807 (@elalish)
ManifoldCAD.org
v2.4.5
v2.4.0
New Features
Bindings
- Updated Python bindings, #692, #700, #707 (@briansturgill)
- Fixed nanobind, #699 (@pca006132)
- Added Merge to Python bindings, #739 (@wrongbad)
Bug Fixes
- Fixed crash on objects near float max dimensions, #714 (@elalish)
- Fix GLM for 1.0, #721 (@cjmayo)
- Fixed 2D hull, #730, #732 (@briansturgill)
- 64-bit indexing of collider pairs, #742 (@pca006132)
Performance Improvements
- Faster Cube constructor, #717 (@pca006132)
- Faster triangulation on some compilers, #718, #722 (@pca006132)
Build/CI Updates
- Separate CMake modules, Clipper2 can be system-supplied, #696, #709, #716, #747 (@pca006132)
- Allow local Python package build/install, #704, #725 (@cjmayo)
- Fix gen-docs warnings, #724 (@cjmayo)
- Install headers into manifold subdirectory, #729 (@cjmayo)
- Test windows Python build on CI, #743 (@pca006132)
Documentation
- Fixed Doxygen link, #746 (@pca006132)
- Added Manifold docs about the use of vert properties and mesh relations, #755 (@elalish)
ManifoldCAD.org
v2.3.1
v2.3.0
New Features
- Added
Project
function for 3D -> 2D. #638 (@elalish) - Added
Slice
function for 3D -> 2D. #644 (@elalish)
Bindings
- Add missing parameters to Python bindings. #646, #647 (@wrongbad)
- Updated Python bindings to use numpy universally. #650, #656 (@wrongbad)
Bug Fixes
- Spec-compliant 3MF output for ManifoldCAD.org. #626, #627 (@pca006132)
- Fixed a couple of triangulator errors. #633 (@elalish)
- Improved our precision calculations, fixed collider. #635 (@elalish)
- Switched the order of rotation and scale in
Extrude
to match OpenSCAD. #642 (@pca006132) - Make
Warp
no longer simplify. #677 (@elalish) - Fixed
Revolve
. #682, #684 (@elalish)
Performance Improvements
Build/CI Updates
- Cleanup warnings, improved Tracy support. #640 (@pca006132)
- Added a formatting script. #660 (@pca006132)
- Build Python docs automatically. #665 (@wrongbad)
Examples
- Updated tetrahedron puzzle example. #625 (@elalish)
- Added a Python Colab Example, functionally akin to ManifoldCAD.org. #648 (@elalish)
ManifoldCAD.org
- Added glTF animation support. #624, #637 (@elalish)
- Updated glTF export for official EXT_mesh_manifold extension. #630 (@elalish)
- Enable hash params to point a URL directly to a particular example. #643 (@pca006132)
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)