Skip to content

Releases: adobe/lagrange

Lagrange Release v6.41.0

11 Feb 01:38
Immutable release. Only release title and notes can be modified.
cf7782d

Choose a tag to compare

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_meshes and simple_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_shells support for removing non-intersecting interior shells

TexProc Module

  • ๐ŸŽจ New graphical demo for texture stitching

Subdiv Module

  • ๐ŸŽจ Add compute_sharpness helper function

Volume Module

  • ๐ŸŽจ mesh_to_volume updates:
    • New Unsigned signing mode
    • Update winding number signing
    • Bug fix in quad-to-tri tessellation
  • ๐Ÿ“ Update example demos
    • New voxelize_gui and grid_viewer examples
    • New register_grid.h utility for visualizing VDB grids with Polyscope in examples
    • Rename voxelize_mesh -> voxelize_cli and support additional input/output files
  • ๐ŸŽจ 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

20 Jan 23:03
Immutable release. Only release title and notes can be modified.
ced6e05

Choose a tag to compare

Minor release to fix Python documentation issues.

Lagrange Release v6.40.0

12 Dec 23:34
Immutable release. Only release title and notes can be modified.
5b7deeb

Choose a tag to compare

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_area function
  • ๐ŸŽจ compute_edge_is_manifold can now compute a per-edge attribute indicating manifoldness
  • ๐ŸŽจ Added support for inverting normal/bitangent attributes when flipping facets
    • orient_outward will now flip normal/bitangent attributes
  • ๐Ÿ› Fixed infinite loop issue in earcut triangulation

Python Bindings

  • ๐Ÿ Added python bindings for:
    • compute_edge_is_oriented
    • compute_vertex_is_manifold
    • compute_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 quiet option 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_network
      • register_mesh
      • register_point_cloud
    • Infer structure type from mesh connectivity:
      • register_structure
    • Create or update Polyscope attribute based on Lagrange's:
      • register_attribute

Lagrange Release v6.39.0

14 Nov 18:22
ee6f7f0

Choose a tag to compare

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_attribute to 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::quiet to 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 to scipy.linalg.eigsh())

Texproc Module

  • ๐Ÿ› Fix out-of-bound access in rasterization code
  • ๐Ÿ› Add checks to ensure number of channels consistency
  • ๐Ÿ Update texture_from_multiview.py to accept list of render images + ensure output uses .exr
  • ๐Ÿ› Fix vertical flip in geodesic_dilation code introduced in v6.38.0
  • ๐Ÿ› Fix image transpose issue in Python bindings
  • ๐Ÿ Add geodesic_dilation.py demo

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() and point_to_point_geodesic()

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_mesh example 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

17 Oct 02:45
eb3522d

Choose a tag to compare

Infrastructure

  • ๐Ÿ—๏ธ New CMake option LAGRANGE_PROPAGATE_WARNINGS
  • ๐Ÿ“Œ Update Catch2 to v3.10.0
  • ๐Ÿ“Œ Update WindingNumber to v0.3.15
  • ๐Ÿ— Enable \Z7 flag in MetaBuild for debug build

Core module

  • ๐Ÿ—๏ธ Replace M_PI with lagrange::internal::pi
  • โœจ Add compute_facet_circumcenter
  • โœจ Add compute_facet_vector_area
  • ๐Ÿ Add SurfaceMesh.edges in python binding
  • ๐ŸŽจ Update point_triangle_squared_distance and point_segment_squared_distance to 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 TriangeAABBTree and EdgeAABBTree

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

29 Sep 19:04
1dd323e

Choose a tag to compare

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.toml to have urls.documentation and urls.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> to lagrange::SafeVector<T> which is an alias for
    • std::vector<std::shared_ptr<T>> when compiled for python bindings
    • std::vector<T> otherwise, unchanged from before
  • ๐ŸŽจUpdated Scene::far_plane to 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 solver module! It manages dependencies across platforms and provides aliases for solver wrappers. Currently contains <lagrange/solver/DirectSolver.h>

Texture Signal Processing

  • โœจNew texproc module! It provides texture-space operations such as filtering (smoothing, sharpening), stitching, compositing.

Lagrange Release v6.36.0

19 Aug 17:55
286283e

Choose a tag to compare

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 io and scene
  • ๐ŸŽจ New scene_convert example

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

28 Jun 00:50
01187b1

Choose a tag to compare

Infrastructure

  • ๐Ÿ—๏ธ Add existence check in get_data_path and get_data_folder for loading unit test assets

Core and IO modules

  • ๐ŸŽจ Indexed attribute support for saving in MSH format
  • ๐Ÿ› Throw exception for unsupported format in load_scene and load_simple_scene
  • ๐Ÿ› Bug fix in split_triangle
  • ๐Ÿ› Bug fix in map_attribute
  • ๐ŸŽจ Add centroid-fan support in triangulate_polygonal_facets
  • โœจ New split_facets_by_material function

Filtering module

  • ๐ŸŽจ Support smoothing of multi-channel attribute

Lagrange Release v6.34.0

02 Jun 17:03
b3f4080

Choose a tag to compare

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

12 May 15:21
8dde25b

Choose a tag to compare

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