Releases: adobe/lagrange
Releases ยท adobe/lagrange
Lagrange Release v6.41.0
Immutable
release. Only release title and notes can be modified.
Dependencies
- ๐ย Update Eigen to 3.4.1
- ๐ Update ufbx to v0.21.2
- ๐ Downgrade Entt to v3.15.0 due to type matching issues
- ๐ Switch pcg-cpp repo source with WinARM support
- ๐ Update OpenVDB to 13.0.0
Infrastructure
- ๐ย Numpy 2.4.0 compatibility fix
- ๐๏ธ New trigger to build python wheel for PRs
- ๐๏ธ Fix doc build failures
- ๐๏ธ Auto extract version from git tags
Scene and IO Modules
- ๐จ Add
scene_to_meshesandsimple_scene_to_meshes - ๐จ Add option to triangulate mesh during saving
- ๐จ Allow saving scenes with invalid URI to OBJ with warnings
- ๐ Fix target axis and units when loading FBX models
- ๐ Load empty images when failed to load FBX textures
- ๐ Proper attribute usage for tangent/bitangent attributes from FBX
Core Module
- ๐จ Faster per-vertex component computation (~23% faster)
BVH Module
- โจ Add
remove_interior_shellssupport for removing non-intersecting interior shells
TexProc Module
- ๐จ New graphical demo for texture stitching
Subdiv Module
- ๐จ Add
compute_sharpnesshelper function
Volume Module
- ๐จ
mesh_to_volumeupdates:- New
Unsignedsigning mode - Update winding number signing
- Bug fix in quad-to-tri tessellation
- New
- ๐ Update example demos
- New
voxelize_guiand grid_viewer examples - New
register_grid.hutility for visualizing VDB grids with Polyscope in examples - Rename
voxelize_mesh->voxelize_cliand support additional input/output files
- New
- ๐จ Add NanoVDB support in demos/Python bindings
- โจ New Grid class wrapping OpenVDB grids (CPU only)
.to_mesh()and.from_mesh()for converting between mesh <-> SDF grid (float or double).save(),.to_buffer()and.load()for serialization (supports NanoVDB and compression)- Grid properties:
.bbox_index,.bbox_world,.num_active_voxels .world_to_index()and.index_to_world()to apply coordinate transforms.sample_trilinear_*()to sample points in parallel.resample(),.densify(),.redistance()and.offset_in_place()utility methods
Lagrange Release v6.40.1
Immutable
release. Only release title and notes can be modified.
Minor release to fix Python documentation issues.
Lagrange Release v6.40.0
Immutable
release. Only release title and notes can be modified.
Dependencies
- ๐ Updated oneTBB to 2022.3.0 and oneMKL to 2025.3.0
- ๐ Updated spdlog from 1.15.1 to 1.16.0
- ๐ Updated fmt from 11.1.4 to 12.0.0
- ๐ Updated EnTT from 3.13.2 to 3.16.0
Core Module
- โจAdded
compute_uv_areafunction - ๐จ
compute_edge_is_manifoldcan now compute a per-edge attribute indicating manifoldness - ๐จ Added support for inverting normal/bitangent attributes when flipping facets
orient_outwardwill now flip normal/bitangent attributes
- ๐ Fixed infinite loop issue in earcut triangulation
Python Bindings
- ๐ Added python bindings for:
compute_edge_is_orientedcompute_vertex_is_manifoldcompute_edge_is_manifold
- ๐ Added python bindings for
SurfaceMesh::foreach_*functions - ๐จ Improved
meshstat.py: added orientation check, non-manifold count, facet stats
Primitive Module
- ๐จ Now open source!
IO Module
- ๐๏ธ Silenced IO warnings in unit tests
- ๐จ Added
quietoption for saving meshes
Texproc Module
- ๐จ Added option to regularize the stiffness matrix in texture filtering and stitching
- ๐จ Added option to clamp output values in texture filtering / stitching / compositing
- ๐จ๐ Exposed options to C++ examples and python bindings
- ๐ Fixed non-deterministic __randomize option in texture stitching
- ๐๏ธ Made unit tests single-threaded to ensure reproducibility, and changed to stricter tolerances
Polyscope Module
- โจ New dedicated module to facilitate interop with Polyscope
- Register explicit structure:
register_edge_networkregister_meshregister_point_cloud
- Infer structure type from mesh connectivity:
register_structure
- Create or update Polyscope attribute based on Lagrange's:
register_attribute
- Register explicit structure:
Lagrange Release v6.39.0
Infrastructure
- ๐๏ธ Compilation fixes for Xcode 26
- ๐๏ธ Fix CMake sanitizer setup for MSVC
- ๐ Update earcut.hpp dependency to
f36ced7 - ๐ Update cpptrace to 1.0.4
- ๐ ๐ Update PoissonRecon dependency to fix a memory allocation bug
Core Module
- ๐จ Add overload to
SurfaceMesh::delete_attributeto accept id as input
IO Module
- ๐ Throw error when saving float/double texture to glTF file
- ๐ Add explicit warning when loading glTF without explicit stitching behavior
- ๐จ Add new
LoadOptions::quietto silence IO related log messages - ๐จ Update STL mesh load to not stitch vertices by default for consistency with other formats
Solver Module
- โจ Add support for Spectra-based sparse eigenvalue solver
[generalized_]selfadjoint_eigen_[largest|smallest]()in C++lagrange.solver.eigsh()in Python (follows a similar API toscipy.linalg.eigsh())
Texproc Module
- ๐ Fix out-of-bound access in rasterization code
- ๐ Add checks to ensure number of channels consistency
- ๐ Update
texture_from_multiview.pyto accept list of render images + ensure output uses .exr - ๐ Fix vertical flip in
geodesic_dilationcode introduced in v6.38.0 - ๐ Fix image transpose issue in Python bindings
- ๐ Add
geodesic_dilation.pydemo
Geodesic Module
- โจ New geodesic module to compute single-source and point-to-point geodesic distance
- Added
GeodesicEngine[...]class for repeated computation - Choice of algorithm between DGPC, MMP and Heat
- Two methods available:
single_source_geodesic()andpoint_to_point_geodesic()
- Added
Polyddg Module
โจ New polyddg module that implements most of the operators from this paper:
De Goes, F., Butts, A., & Desbrun, M. (2020).
Discrete differential operators on polygonal meshes.
ACM Transactions on Graphics (TOG), 39(4), 110-1.
Documentation
- ๐ Docstring updates for scene module
- ๐ Update
voxelize_meshexample code to read/write .vdb files - ๐ Fixed typos and grammar in comments with Copilot
Python Bindings
- ๐ Updated scikit-build core to 0.11.6
- ๐ Updated sphinx and autoapi
- ๐๏ธ Set upper-bound to Python <3.14 due to nanobind uncertainty
- ๐ Fixed generated Sphinx documentation due to refactored stub files
Full Changelog: v6.38.0...v6.39.0
Lagrange Release v6.38.0
Infrastructure
- ๐๏ธ New CMake option
LAGRANGE_PROPAGATE_WARNINGS - ๐ Update Catch2 to v3.10.0
- ๐ Update WindingNumber to v0.3.15
- ๐ Enable
\Z7flag in MetaBuild for debug build
Core module
- ๐๏ธ Replace
M_PIwithlagrange::internal::pi - โจ Add
compute_facet_circumcenter - โจ Add
compute_facet_vector_area - ๐ Add
SurfaceMesh.edgesin python binding - ๐จ Update
point_triangle_squared_distanceandpoint_segment_squared_distanceto be dimension independent
IO module
- ๐ Bug fix in directory creation when saving obj file
Texproc module
- ๐ Add check for flipped UV triangles
- ๐๏ธ Cleanup geodesic dilation code
BVH module
- ๐จ Refactor AABB as a stand-alone class
- ๐จ Add support for
TriangleAABBTree - ๐จ Update
EdgeAABBTree - ๐จ Add python binding for
TriangeAABBTreeandEdgeAABBTree
Documentation and other updates
- ๐ Update Doxygen and CSS version
- ๐ Update website dependency
- ๐ Update code format for the entire repo
- ๐ Improve texproc documentation
- ๐๏ธ Add explicit ref to Doxygen comments
- ๐๏ธ Remove doxygen autolink
- ๐ Update python doc strings
- ๐ Fix python stub generation
Lagrange Release v6.37.0
Infrastructure
- ๐๏ธImproved DLL copies with CMake. This fixes some Jenkins failure cases.
- ๐๏ธImproved code-coverage.cmake. Prevents overwriting job pools configurations for downstream projects, improves cross-platform support, and adds configuration options.
- ๐๏ธRun patchelf on downloaded MKL to prevent linking issues.
- ๐Fixed ODR issues.
- ๐Updated MshIO to v0.1.0
- ๐Updated miniz from 2.2.0 to 3.0.2
Core Module
- ๐จImproved stability in
remove_duplicate_vertices(), it now keeps vertices order if possible
Python Bindings
- ๐๏ธMoved all nanobind includes to a single file
<lagrange/python/binding.h>to avoid potential ODR violations. - ๐Updated
pyproject.tomlto haveurls.documentationandurls.repository - ๐Updated nanobind to v2.9.2. This adds support for in-place updates to dicts, lists, etc., such as
my_dict["key"] += 1
Scene Module
- ๐To fix a mutable element issue in python bindings, changed Scene types from
std::vector<T>tolagrange::SafeVector<T>which is an alias forstd::vector<std::shared_ptr<T>>when compiled for python bindingsstd::vector<T>otherwise, unchanged from before
- ๐จUpdated
Scene::far_planeto be optional - โจAdded camera matrix utilities in
<lagrange/scene/scene_utils.h>Eigen::Affine3f camera_view_transform(const Camera& camera, const Eigen::Affine3f& world_from_local)Eigen::Projective3f camera_projection_transform(const Camera& camera)
Solver Module
- โจNew
solvermodule! It manages dependencies across platforms and provides aliases for solver wrappers. Currently contains<lagrange/solver/DirectSolver.h>
Texture Signal Processing
- โจNew
texprocmodule! It provides texture-space operations such as filtering (smoothing, sharpening), stitching, compositing.
Lagrange Release v6.36.0
Infrastructure
- ๐๏ธ Add export macros for filtering module
- ๐๏ธ Minor CMake cleanups
- ๐ Update cpptrace to 1.0.3 and removed StackWalker
Core Module
- ๐จ New
is_closed()function for SurfaceMesh - ๐จ Support degenerate polygons in
compute_weighted_corner_normal() - ๐จ Support for indices shared across vertices in
weld_indexed_attribute() - ๐ Fix out-of-bound bug in
split_edges()for 2D meshes
IO Module
- ๐จ Added
save_simple_scene_obj()- Supports multiple nodes and instances
- ๐จ Added
save_scene_obj()- Supports uvs, materials, and multiple nodes and instances
- ๐๏ธ Changed io tests to write to a designated output directory (build/tmp)
- ๐ Improved Python documentation in
ioandscene - ๐จ New
scene_convertexample
BVH Module
- โจ New
weld_vertices()function for SurfaceMesh
Volume Module
- ๐จ Added
sample_vertex_normal()to sample normals from VDB grid
Lagrange Release v6.35.0
Infrastructure
- ๐๏ธ Add existence check in
get_data_pathandget_data_folderfor loading unit test assets
Core and IO modules
- ๐จ Indexed attribute support for saving in MSH format
- ๐ Throw exception for unsupported format in
load_sceneandload_simple_scene - ๐ Bug fix in
split_triangle - ๐ Bug fix in
map_attribute - ๐จ Add centroid-fan support in
triangulate_polygonal_facets - โจ New
split_facets_by_materialfunction
Filtering module
- ๐จ Support smoothing of multi-channel attribute
Lagrange Release v6.34.0
Infrastructure
- ๐๏ธFixes for shared library mode
- ๐๏ธCMake fixes (openblas, special-assimp preset)
- ๐๏ธWasm fixes, and enabled wasm unit tests
- ๐๏ธOpen-source script fixes
- ๐Python: Set OSX deployment target to 13
Lagrange Release v6.33.0
Infrastructure
- ๐ Updated pyproject.toml and script dependencies
- ๐ Updated vcpkg baseline to point to 3di registry
- ๐ Fix compatibility with CMake 4
- ๐ Fix MKL setup for open-source Python wheels
- ๐ Compilation fixes for wasm support
Core module
- ๐จ
compute_tangent_bitangent: option to keep existing tangent attribute - ๐ Respect triangulate option in all lagrange::io function
- ๐ Recreate output attribute when search yields a mismatch (e.g. wrong type or num channels)
- ๐ Robustness improvement in
unflip_uv_triangle - ๐ Bug fix in
compute_uv_distortion
Filtering module
- ๐จ Add option to smooth vertex positions directly
- Previously smoothing was done on normals, followed by a vertex fitting step
- โจ Scalar attribute smoothing
- ๐จ Use non-MKL solver for open source python wheel