Releases: adobe/lagrange
Releases · adobe/lagrange
Lagrange Release v6.20.0
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 andAttributeFilter
object - Possible filters:
included_attributes
(name or id)excluded_attributes
(name or id)included_usages
(bitfield)included_element_types
(bitfield)
lagrange::cast()
now supports aAttributeFilter
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
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 withdimension != 3
transform_mesh()
now supports 2D mesheslagrange::invalid<T>()
now returnsinf
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
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
andsave_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
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
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
toARTIFACTORY_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
andSurfaceMesh::create_attribute
- Add
lagrange::cast
support for castingSurfaceMesh
of different scalar and index types - Add
SurfaceMesh
support toremove_topologically_degenerate_facets
(triangle mesh only) andremove_duplicate_facets
Python module
- Add optional
shared
parameter toSurfaceMesh.attribute
- Migrate build backend to
scikit-build-core
- Fix reference count leak
- Update logger binding
Lagrange Release v6.15.0
Core Module
- Added support for blocker elements in
compute_components
. Deprecatedcompute_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
Core Module
- SurfaceMesh updates
- Allow polygonal facets of size 1 or 2
create_attribute_from()
supports meshes with different typescompute_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
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
Infrastructure
- Improve CMake target folder setting coverage.
- Improve C++20 MSVC compatibility.
Core
- Fixed sub-mesh extraction for 2D meshes.
- Replace
chain_edges
andchain_edges_into_simple_loops
withchain_directed_edges
andchain_undirected_edges
. - Added
SurfaceMesh
support for topology computation, includingcompute_euler
,is_vertex_manifold
,is_edge_manifold
,is_manifold
. - Added
SurfaceMesh
support forextract_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
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()
andcompute_edge_lengths()
- Add SurfaceMesh support for
weld_indexed_attribute()
- Deprecate
condense_indexed_attribute()
- Deprecate
unify_corner_indices()
- Deprecate
- Implemented
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
andstring_to_mesh
function to save/load a mesh to memory. - Improve python binding of
SurfaceMesh.create_attribute
to accept Numpydtype
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.