Skip to content

Releases: adobe/lagrange

Lagrange Release v6.20.0

08 Mar 16:58
f55620c
Compare
Choose a tag to compare

Infrastructure & Bugfixes

  • 🚧 Fix nightly wheel version to include date
  • 🚧 Fix timeout in GitHub actions CI
  • 📖 Add related files in SurfaceMesh header
  • 📖 Fix Doxygen grouping for core utilities functions
  • 🐛 Fixed bug in chain_edges for complex edge networks

Python Bindings

  • 🐍 Add missing binding for compute_uv_distortion
  • 🐍 Add missing binding for AttributeShrinkPolicy
  • 🐍 Add pythonic API for functions that take an option struct
  • ✨ Relax Attribute.data assignment to also take python list
  • ✨ Relax Attribute.insert_elements argument to allow python list
  • 📖 Add missing docstrings for various types
  • 📖 Add docstring for all utility and clean up functions docstrings

Core Module

  • New filter_attributes() function and AttributeFilter object
  • Possible filters:
    • included_attributes (name or id)
    • excluded_attributes (name or id)
    • included_usages (bitfield)
    • included_element_types (bitfield)
  • lagrange::cast() now supports a AttributeFilter input filter
  • New lagrange::scene::cast() helper function

Scene and IO

  • Added support for glTF-style scene extensions
  • By default, extensions use a Json-like representation
  • Optionally, use converters to load user types

Lagrange Release v6.19.0

09 Feb 02:29
ef5bfcf
Compare
Choose a tag to compare

Infrastructure

  • Added CMake option to enable/disable threads with WASM
  • Update StackWalker + sscache build
  • Enable all modules in GitHub actions
  • Fix Asan and Tsan issues in CI
  • Enable core/io module without RTTI
  • Updated Happly to compile without RTTI

Core module

  • Bug fix in chain edges
  • Bug fix in combine_mesh() on meshes with dimension != 3
  • transform_mesh() now supports 2D meshes
  • lagrange::invalid<T>() now returns inf instead of max for floating point types
  • Added eigen_to_surface_mesh() conversion function
  • Added missing Python binding for compute_dijkstra_distance()

Scene module

  • Add scene-to-mesh and mesh-to-scene conversion
  • Add python binding

IO module

  • Support point cloud loading from .ply files
  • Update TinyOBJ to support large polygon facets
  • Update load_mesh() with correct aggregation of meshes with transforms

Subdivision module

  • Add SurfaceMesh support
  • Add support for sharp edges, vertices and holes
  • Add support for limit surface interpolation and limit normal computation
  • Add support for interpolating vertex/indexed attributes such as UV/color etc.
  • Add python binding

Lagrange Release v6.18.0

22 Dec 12:08
b0a868a
Compare
Choose a tag to compare

Continuous Integration

  • Added StackWalker on Windows for crash debugging
  • Fixed AddressSanitizer on Windows

Dependencies and Infrastructure

  • Updated nlohmann_json recipe to avoid an issue when used from Lagrange as a dependency
  • Updated tbb to v2021.11.0
  • Updated Catch2 to 3.4.0
  • Updated OpenVDB to v11.0.0
  • Added ufbx dependency
  • Add flag to enable/disable wasm threads
  • Adds an error message when using Xcode 15.0 with the new linker

Core Module

  • Fixed issue in topology computation with isolated vertices
  • Fixed weld_indexed_attribute
  • Fix bug when chaining complex edge loops

Scene Module

  • Added Scene datastructure

IO Module

  • Added load_mesh_fbx, load_simple_scene_fbx
  • Added: load_scene, load_scene_gltf, load_scene_assimp, load_scene_fbx, load_scene_obj
  • Added save_scene and save_scene_gltf
  • Point cloud support in .ply load

Python Bindings

  • Added support for Python 3.12
  • Updated nanobind to v1.8.0
  • Added simplified bindings to image module
  • Added python bindings to the new Scene datastructure
  • Added python bindings to all the new scene IO functions

Lagrange Release v6.17.0

17 Nov 22:04
587f6ab
Compare
Choose a tag to compare

Infrastructure and Dependencies

  • CMake updates:
    • More robust handling of BUILD_SHARED_LIBS (enabled CMP0077 and CMP0126)
    • Fixed soname and install behavior for MKL and Arpack
    • Min CMake version bumped to 3.25
  • Fix floating-point issues in unit test for Xcode 14+
  • Minor compile fixes for C++20
  • Fix UBSan issues
    • In core module with lagrange::safe_cast()

SurfaceMesh Updates

  • Fix combine_meshes() for hybrid meshes (e.g. quad dominant)
  • 5x speedup in remove_duplicate_facets()
  • Fix corner merging in tangent/bitangent computation to match mikktspace
  • unify_index_buffer() now supports edge attributes
  • New tag AttributeUsage::Position
  • New transform_mesh() function to apply affine transform to a mesh
    • Transformations applied based on usage tag (Position/Normal/Tangent/Bitangent)

IO Module

  • Fix loading of property lists in .ply

Lagrange Release v6.16.0

22 Oct 12:29
dca0f5d
Compare
Choose a tag to compare

Infrastructure and dependencies

  • Update boost to 1.82.0 and leverage upstream boost cmake setup
  • Add support for .netrc in CMake setup
  • Rename CMake variable LAGRANGE_ARTIFACTORY_KEYFILE to ARTIFACTORY_KEYFILE
  • Add LAGRANGE_FMT_EIGEN_FIX (off by default) to bypass MSVC C1001 compiler error

Core module

  • Improve value attribute support in unify_index_buffer and SurfaceMesh::create_attribute
  • Add lagrange::cast support for casting SurfaceMesh of different scalar and index types
  • Add SurfaceMesh support to remove_topologically_degenerate_facets (triangle mesh only) and remove_duplicate_facets

Python module

  • Add optional shared parameter to SurfaceMesh.attribute
  • Migrate build backend to scikit-build-core
  • Fix reference count leak
  • Update logger binding

Lagrange Release v6.15.0

27 Sep 17:16
ab40520
Compare
Choose a tag to compare

Core Module

  • Added support for blocker elements in compute_components. Deprecated compute_bordered_components.h
  • Improved performance of is_vertex_manifold.
  • Added new DisjointSetsWithSize class for union-find

Python Bindings

  • Added support for copy of SurfaceMesh: .__copy__, .__deepcopy__, and .clone methods.

Lagrange Release v6.14.0

30 Aug 23:22
f294ce1
Compare
Choose a tag to compare

Core Module

  • SurfaceMesh updates
    • Allow polygonal facets of size 1 or 2
    • create_attribute_from() supports meshes with different types
    • compute_dijkstra_distance() support for SurfaceMesh

IO Module

  • Fix reading glTF with multiple texcoord attributes
  • Fix loading .obj with mixed/missing UV attribute information

Lagrange Release v6.13.0

28 Jun 18:33
2f78a64
Compare
Choose a tag to compare

Core module

  • Fixes to legacy TBB 2020.3
    • Incorrect aligned memory allocation code
    • Fix symbol export for macOS universal builds
  • Surface mesh support (and python binding, benchmark, etc.) added to:
    • permute_facets
    • detect_degenerate_facets
    • remove_null_facets
    • remove_duplicate_facets

Lagrange Release v6.12.0

02 Jun 22:52
d887967
Compare
Choose a tag to compare

Infrastructure

  • Improve CMake target folder setting coverage.
  • Improve C++20 MSVC compatibility.

Core

  • Fixed sub-mesh extraction for 2D meshes.
  • Replace chain_edges and chain_edges_into_simple_loops with chain_directed_edges and chain_undirected_edges.
  • Added SurfaceMesh support for topology computation, including compute_euler, is_vertex_manifold, is_edge_manifold, is_manifold.
  • Added SurfaceMesh support for extract_boundary_loops.

IO Module

  • Added support for saving 2D meshes in .msh format.

Python

  • Minor fix for SurfaceMesh.get_edge_vertices.

Lagrange Release v6.11.0

05 May 00:58
5d71612
Compare
Choose a tag to compare

Infrastructure

  • Migrate from FetchContent to CPM for dependency retrieval
  • Update Catch2 to v3.2.1
  • Remove unused testing data
  • Cleanup attribute folder
  • Minor compilation fix in IO and UI modules
  • Add github actions to build and deploy open-source wheel. The open-source Lagrange python package can be installed via:
    pip install lagrange-open
    

Core module

  • SurfaceMesh support:
    • Implemented shrink_to_fit() method for SurfaceMesh and Attribute classes
    • Add SurfaceMesh support for remove_isolated_vertices()
    • Add SurfaceMesh support for compute_dihedral_angle() and compute_edge_lengths()
    • Add SurfaceMesh support for weld_indexed_attribute()
      • Deprecate condense_indexed_attribute()
      • Deprecate unify_corner_indices()

IO module

  • Add automatic file format detection in load/save from stream
  • Refactor glTF loader to load attributes in their native type
  • Remove normalization when saving color attributes in PLY format
  • Avoid hard coded types when saving PLY mesh

Python module

  • Open-source package lagrange-open now installable via pip
  • Connected the Lagrange logger with the Python logging module. It is now possible to set the Lagrange log level via Python.
  • Added mesh_to_string and string_to_mesh function to save/load a mesh to memory.
  • Improve python binding of SurfaceMesh.create_attribute to accept Numpy dtype and not require initial values.
  • Added automatic stub file generation, providing autocompletion in IDE like Visual Studio Code, and enabling static type analysis via MyPy.