Skip to content

Releases: adobe/lagrange

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

Lagrange Release v6.32.3

29 Apr 19:51
7e0295f

Choose a tag to compare

Trigger python wheel release.

Lagrange Release v6.32.2

25 Apr 02:08
00f8e06

Choose a tag to compare

New release to publish previously broken Python wheels.

Lagrange Release v6.32.1

06 Apr 17:53
ec499ed

Choose a tag to compare

Add missing filtering module in pyproject.toml