Releases: elalish/manifold
v3.1.1
v3.1.0
Thanks @howardt for all the reports and API discussions - the improvements made to unblock Blender's adoption will definitely benefit our whole user community. And thank you to all our contributors, both new and old! There are lots of fixes here, especially around handling properties, faces, and decimation, as well as significant performance improvements. Take a close look at the New Features section, as a few of them might be considered minor breaking changes, or at least behavior to be aware of.
New Features
- Added
Simplify()
for decimation by @elalish in #1147, #1246 - unified ManifoldParams and PolygonParams by @pca006132 in #1167
- make boolean deterministic by @pca006132 in #1187
- simple 64-bit OBJ debug dump by @pca006132 in #1190
- Make API for high precision OBJ I/O method by @starseeker in #1219, #1226
- Don't simplify unless requested by @elalish in #1185
- use input faceID by @elalish in #1241, #1232
- default offset to round by @elalish in #1257
Bindings
- Add const keyword to CrossSection::Compose parameter by @tomasf in #1129
- Add Manifold-Swift to Bindings & Packages in README by @tomasf in #1133
- fix default JS parameter binding for simplify by @elalish in #1146
- ARM Wheels by @johnnynunez in #1180
- Changed the delete memory operation to a destructure in the Merge C binding by @strich in #1196
- Fix
triangulate
js bindings by @jirihon in #1216 - Update ts definitions by @Kaladum in #1236
- wasm: use string status by @pca006132 in #1256
Bug Fixes
- Better faces by @elalish in #1040
- Early return when result size too large by @pca006132 in #1166
- Fix face removal (#1191) by @pca006132 in #1192
- Fix empty slice by @pca006132 in #1199
- Fix Revolve clipping by @elalish in #1200
- use more precise acos function by @pca006132 in #1201
- Fix Cross Section Mirror and add Test by @michael-j-faulkner in #1206
- Fix triangulator handling of splinters by @elalish in #1205
- Fix determinism by @Trzeth in #1234
- Fix intersection behavior in CrossSection::BatchBoolean by @tomasf in #1247
- fixed coplanar property collapse by @elalish in #1255
Performance Improvements
- Faster import by @pca006132 in #1139
- edge_op: quit CollapseEdge early if possible by @pca006132 in #1152
- parallelize mesh fixup by @pca006132 in #1148
- kdtree (2D) for collider by @pca006132 in #1160
- avoid sparse indices by @pca006132 in #1186
- parallel CreateHalfedges by @pca006132 in #1188
Build/CI Updates
- python: add ninja build dependency by @pca006132 in #1128
- Fix misc by @pca006132 in #1143
- fix linalg.h by @pca006132 in #1155
- Misc changes by @pca006132 in #1162
- fix a bunch of warnings by @pca006132 in #1194
- set cmake version in macos action by @pca006132 in #1207
- Suppress quickhull.cpp warnings with g++ compiler by @starseeker in #1218
- Remove per-error hacks in favor of a "disable Werror" option by @starseeker in #1223
- added MANIFOLD_ASSERT by @elalish in #1225
- bump CI ubuntu version by @elalish in #1230
- Add include for cstdint by @BenLubar in #1253
Tests
- Ember tests by @howardt in #1184
- In-loop Status calls were a work-around - see if #1205 solved it. by @starseeker in #1212
- Add test target to CMake by @diizzyy in #1244
- Add test for CrossSection::BatchBoolean by @Trzeth in #1249
Documentation
- improved MeshGL docs by @elalish in #1178
- updated status doc by @elalish in #1210
- Add PythonOpenSCAD and AnchorSCAD as 'users'. by @owebeeone in #1231
- Update README.md by @james-bern in #1228
- Update README.md by @elalish in #1237
- Update README.md by @diizzyy in #1245
- Clarify WASM objects to delete by @nmattia in #1254
New Contributors
- @tomasf made their first contribution in #1129
- @howardt made their first contribution in #1184
- @johnnynunez made their first contribution in #1180
- @strich made their first contribution in #1196
- @michael-j-faulkner made their first contribution in #1206
- @owebeeone made their first contribution in #1231
- @Trzeth made their first contribution in #1234
- @Kaladum made their first contribution in #1236
- @diizzyy made their first contribution in #1244
- @BenLubar made their first contribution in #1253
- @nmattia made their first contribution in #1254
v3.0.1
Bindings
- fix bug JS binding for project() by @elalish in #1071
- feat: add C binding for Manifold::NumProp() by @NickUfer in #1078
- fix: change manifold_calculate_normals min_sharp_angle type to double by @NickUfer in #1085
Bug Fixes
- casting issue in debug mode by @JeffreyWardman in #1077
- Fix DedupePropVerts by @elalish in #1092
- fix meshIO alpha type by @elalish in #1101
- Fixed unreferenced vert seg fault by @elalish in #1110
Performance Improvements
- avoid recursion in csg tree by @pca006132 in #1086, #1103, #1127
- finer timing in ManifoldCAD.org by @elalish in #1099
Build/CI Updates
- Fix publishing by @elalish in #1056
- Fix action by @pca006132 in #1059
- parallel.h is private again, so we can make iters.h private as well. by @starseeker in #1061
- fix download-artifact by @elalish in #1062
- update cibuildwheels version by @pca006132 in #1063
- fix codecov by @elalish in #1032, #1068, #1069
- cancel in-progress runs upon new push by @pca006132 in #1065
- Enable emscripten build with parallelization by @pca006132 in #1045, #1079
- make format run in parallel by @pca006132 in #1080
- run tests for nix by @pca006132 in #1094
- refactor(1089): update index types from int to size_t by @NickUfer in #1090, #1106
- Allow Clipper2 to be supplied externally when using Manifold as a submodule by @kintel in #1115
- python: update nanobind version requirement by @pca006132 in #1120
- setup dependabot by @pca006132 in #1121
- wasm: update package-lock by @pca006132 in #1124
- CI updates by @pca006132 in #1123
Tests
- boolean debugging by @pca006132 in #1104
- update fuzztest by @pca006132 in #1112
Documentation
- Update README.md by @elalish in #1060
- Added Valence 3D to Users in README.md by @rezaali in #1074
- add user bitbybit by @elalish in #1098
- add vcpkg to readme by @JeffreyWardman in #1108
New Contributors
- @rezaali made their first contribution in #1074
- @JeffreyWardman made their first contribution in #1077
v3.0.0
This is a huge release! We've packed in all the requested breaking changes to put us on a solid path of API stability going forward. We have removed all of our required dependencies (no more Thrust or GLM!) and dramatically simplified our directory structure and CMake. We have upgraded internally to double precision and added MeshGL64
for those who need to access it. And we have simplified and improved the API in many ways and added a few powerful new features. Please check out our new and improved C++ and TypeScript docs pages!
Breaking Changes
- Use
size_t
instead ofint
across our API, @pca006132 in #833 - Made
CrossSection
(and Clipper2 dependency) optional, @elalish in #850 - Removed Thrust dependency, use optional TBB instead, @elalish, @pca006132 in #852, #856, #857
- Moved
LevelSet()
in as a static member ofManifold
, @elalish in #876, #894 - Upgraded from single to double precision, @pca006132 in #895
- Simplify directory structure, @pca006132, @starseeker in #918, #961
- Remove property tolerance, @elalish in #935
- Remove
Mesh
, @elalish in #950 - Overhaul our CMake, @starseeker in #961, #965, #967, #980, #990, #1005
- Replace GLM with linalg - down another dependency, @elalish in #984
- Separate coplanarity from faceID, @elalish in #991
- Split
Precision
intoEpsilon
andTolerance
, @pca006132, @elalish in #997, #1008, #1007 - Switched property indexing from vector to scalar, @elalish in #1016
- Replace
GetProperties()
withVolume()
andSurfaceArea()
, @elalish in #1022 - SDF boundary cleanup, @elalish in #1037
- Disable exceptions by default, @elalish in #1044
New Features
- SDF interpolation, @elalish in #866
- Add
MeshGL64
, @pca006132 in #927, #1038 - Add
RefineToTolerance()
, @elalish in #938 - Add
SetTolerance()
, @pca006132 in #997
Bindings
- Fix missing 'this' for property access in wasm bindings, @dsafa in #914
- wasm: fix
CrossSection
slice and project bindings, @neilpa in #930 - Expose
Quality::ResetToDefaults()
via C bindings, @NickUfer in #964 - Wasm: update
CrossSection.toPolygons()
return value to match type, @dsafa in #963 - Expose allocation functions via C bindings, @NickUfer in #968
- Fix python binding, @pca006132 in #987
- Fixed memory leak in C bindings, @pca006132 in #1018
- Added some missing C and JS bindings, @elalish in #1023
- Added C bindings for
Triangulate()
, @james-bern in #1034
Bug Fixes
- Triangulation fix, @elalish in #850
- Propagate errors, @pca006132 in #940
- Removed
RotateUp
anduint
, @elalish in #1000 - Fix data races, @pca006132 in #1019
- Fix properties regression, @elalish in #1051
Performance Improvements
- Normal calculation optimization, @pca006132 in #934
- Removed face from halfedge, @pca006132 in #939
- Collider optimization, @pca006132 in #978
- Removed deterministic param, @elalish in #1033
- Free temporary vectors earlier, @pca006132 in #1047
Build/CI Updates
- Avoid Wundef trigger, @starseeker in #861
- Update to emscripten 3.1.61, @elalish in #860
- Fix debug mode msvc build error, @pca006132 in #863
- Fix shadowing warning, @elalish in #867
- Rename
operator""_z
to_uz
, @BenFrantzDale in #869 - Make collider header-only, @pca006132 in #871
- Improve our CMake, @cjmayo in #880, #888, #899, #946, #948, #1002, #1029
- C bindings are required to build Python package, @jonathanhogg in #883
- Remove QuickHull dependency, @Kushal-Shah-03 (through GSoC) in #881, #875, #893, #904, #908
- Add *.pc file for easier use in non-cmake environments, @hzeller in #901
- Enable MeshIO/MANIFOLD_EXPORT in flake, @reinux in #912
- Make cross_section an installable library, @hzeller in #915
- Fix
test-{cmake,pkgconfig}.sh
to create, not append, to test files, @hzeller in #919 - Use mxe to cross compile to windows, @pca006132 in #924
- Fix deployment, @elalish in #937
- Cleanup, @wtholliday in #954, #955, #956, #985
- Use nanobind builtin stubgen, @pca006132 in #949
- Format cmake files, @pca006132 in #975
- Remove CGAL comparisons, @elalish in #1009
- Fix atomic exchange template deduction, @pca006132 in #1035
- Remove OneDPL, @pca006132 in #1042
- Manifold CMake alias, @pca006132 in #1049
- Provide a numeric version number to compare against, @hzeller, @pca006132 in #1054, #1055
Tests
- Fixed test flake, @cjmayo in #848
- Fix hull_test
isMeshConvex()
vertices check, @cjmayo in #898 - Use custom file format for polygon tests, @pca006132 in #913
- Define a test for simple offset booleans, @starseeker in #998
Documentation
- Update README, @cjmayo, @elalish in #892, #920, #1015, #1025
- Implemented typedoc documentation for WASM bindings, @msantic in #907
- Doxygen updates, @elalish in #1014, #1020, #1043
New Contributors
- @BenFrantzDale made their first contribution in #869
- @jonathanhogg made their first contribution in #883
- @Kushal-Shah-03 made their first contribution in #875
- @hzeller made their first contribution in #901
- @reinux made their first contribution in #912
- @dsafa made their first contribution in #914
- @msantic made their first contribution in #907
- @neilpa made their first contribution in #930
- @wtholliday made their first contribution in #954
- @NickUfer made their first contribution in #964
- @james-bern made their first contribution in #1034
Full Changelog: v2.5.1...v3.0.0
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)