Simple MPL-2.0-licensed C++ geometry processing library.
GPL-3.0 License
Bot releases are hidden (Show)
unique_rows
and sortrows
templating by @alecjacobson in https://github.com/libigl/libigl/pull/2169
Full Changelog: https://github.com/libigl/libigl/compare/v2.4.0...v2.5.0
Published by alecjacobson over 2 years ago
Libigl v2.4.0 introduced a number of breaking changes regarding its CMake build system. If you follow the upgrade guide below, these breaking changes should be easy to resolve.
The main entry point for CMake is now the CMakeLists.txt
at the root of the libigl repository. If you were using a FindLibigl.cmake
, or were including libigl.cmake
directly, please update your project.
If you are using the libigl-example-project, you may update the content of cmake/libigl.cmake
to the following:
if(TARGET igl::core)
return()
endif()
include(FetchContent)
FetchContent_Declare(
libigl
GIT_REPOSITORY https://github.com/libigl/libigl.git
GIT_TAG <TARGET_SHA1>
)
FetchContent_MakeAvailable(libigl)
The CMake targets for many libigl modules have been renamed in v2.4.0. This provides greater visibility into each module category (between regular, copyleft and restricted modules). Here is the table mapping the old names to the new names:
Old target name (v2.3.0) | New target name (v2.4.0) |
---|---|
igl::embree |
Unchanged |
igl::opengl_glfw |
igl::glfw |
igl::opengl_glfw_imgui |
igl::imgui |
igl::opengl |
Unchanged |
igl::png |
Unchanged |
igl::predicates |
Unchanged |
igl::xml |
Unchanged |
igl_copyleft::core (New) |
|
igl::cgal |
igl_copyleft::cgal |
igl::comiso |
igl_copyleft::comiso |
igl::cork |
Removed |
igl::tetgen |
igl_copyleft::tetgen |
igl::matlab |
igl_restricted::matlab |
igl::mosek |
igl_restricted::mosek |
igl::triangle |
igl_restricted::triangle |
⚠️ The libigl cork wrapper was removed from this release. A standalone repository with a libigl-style wrapper around cork is available here.
Many libigl CMake options have changed in v2.4.0. Here is a mapping from the old name to the new names:
Old option (v2.3.0) | New option (v2.4.0) |
---|---|
LIBIGL_COPYLEFT_CORE (New) | |
LIBIGL_BUILD_TESTS | Unchanged |
LIBIGL_BUILD_TUTORIALS | Unchanged |
LIBIGL_EXPORT_TARGETS | LIBIGL_INSTALL |
LIBIGL_USE_STATIC_LIBRARY | Unchanged |
LIBIGL_WITH_CGAL | LIBIGL_COPYLEFT_CGAL |
LIBIGL_WITH_COMISO | LIBIGL_COPYLEFT_COMISO |
LIBIGL_WITH_CORK | Removed |
LIBIGL_WITH_EMBREE | LIBIGL_EMBREE |
LIBIGL_WITH_MATLAB | LIBIGL_RESTRICTED_MATLAB |
LIBIGL_WITH_MOSEK | LIBIGL_RESTRICTED_MOSEK |
LIBIGL_WITH_OPENGL | LIBIGL_OPENGL |
LIBIGL_WITH_OPENGL_GLFW | LIBIGL_GLFW |
LIBIGL_WITH_OPENGL_GLFW_IMGUI | LIBIGL_IMGUI |
LIBIGL_WITH_PNG | LIBIGL_PNG |
LIBIGL_WITH_PREDICATES | LIBIGL_PREDICATES |
LIBIGL_WITH_PYTHON | Removed |
LIBIGL_WITH_TETGEN | LIBIGL_COPYLEFT_TETGEN |
LIBIGL_WITH_TRIANGLE | LIBIGL_RESTRICTED_TRIANGLE |
LIBIGL_WITH_XML | Unchanged |
⚠️ There is a now a sample file LibiglOption.cmake.sample
at the root of the libigl repository. Simply remove the .sample
extension and edit this file to modify libigl compilation options. If you are using libigl as a subdirectory (e.g. in a parent project), then please set your options in the parent project instead.
We are also updating our ImGui dependency to use the base repository as include folder, rather than forcing headers to be copied into a imgui/
subfolder. This helps be consistent with other projects that might be using ImGui. This requires users changing their include headers as follows:
#include <imgui/imgui.h>
--> #include <imgui.h>
#include <imgui/imgui_internal.h>
--> #include <imgui_internal.h>
#include <imgui_impl_glfw.h>
--> #include <backends/imgui_impl_glfw.h>
#include <imgui_impl_opengl3.h>
--> #include <backends/imgui_impl_opengl3.h>
We've introduced a new "parent" ImGuiPlugin
which handles ImGui IO functions and converted the old ImGuiMenu
, ImGuizmoPlugin
, SelectionPlugin
plugins to inherit from a new ImGuiWidget
class. In this way, a single ImGuiPlugin
can be registered to the viewer's plugins list and one or many widgets are registered to this plugin's widgets list.
For folks just using the menu, this incurs a few extra lines. To add the menu:
#include <igl/opengl/glfw/imgui/ImGuiPlugin.h>
#include <igl/opengl/glfw/imgui/ImGuiMenu.h>
…
igl::opengl::glfw::imgui::ImGuiPlugin plugin;
viewer.plugins.push_back(&plugin);
igl::opengl::glfw::imgui::ImGuiMenu menu;
plugin.widgets.push_back(&menu);
The reward is that now we can use all of these plugins (and any new user created plugins using ImGui subroutines) without conflict.
igl::point_in_poly
(#1810)igl::open_glfw_imgui
) that didn't bring much to the table, in favor of three root classes based on available licenses for each module.LibiglOptions.cmake
sample file at the root of the project repository, which should make it easier to document/update available CMake options.CMakeLists.txt
. This facilitates maintenance, as before either tutorial/CMakeLists.txt
and cmake/libigl.cmake
could serve as potential entry points.igl::core
module (should be the same as before).igl_copy_dll()
function to copy GMP/MPFR dlls on Windows (should work to copy the CoMiSo dll as well).Published by jdumas over 3 years ago
💡 Note: This is our last stable release before some planned major reorganization (see #1696 for details). The upcoming reorganization is aimed at facilitating maintenance and packaging of various libigl components. The next release will be a new major version of libigl (3.0.0).
igl::blkdiag
to build a block-diagonal matrix (#1617)igl::barycentric_interpolation
(#1597)igl::bezier
) and fitting (igl::fit_cubic_bezier
) (#1476)igl::copyleft::cgal::wire_mesh
now support per-edge thickness. Adds igl::copyleft::cgal::coplanar
test (#1488)igl::connected_components
) (#1487)igl::marching_cubes
outside of the copyleft/
folder (#1666, #1687)_bin
suffix from executable files (#1594)IGL_NUM_THREADS
(#1684)igl::read_triangle_mesh
(#1645)igl::per_vertex_point_to_plane_quadrics
(#1644)igl::remove_duplicate_vertices
(#1603)igl::barycentric_to_global
(#1596)igl::heat_geodesic
(#1497)igl::is_edge_manifold
(#1509)Published by alecjacobson over 4 years ago
The python bindings have been moved to a separate repository. These are now available as an conda package.
igl::path_to_edges
function (#1259)igl::dijkstra
can now use mesh edge length (#1170)igl::sharp_edges
for sharp edges extraction (#1364)igl::unproject_on_line
, igl::unproject_on_plane
and igl::projection_constraint
to compute cursor (un)-projections (#1368)igl::quad_grid
and igl::triangulated_grid
to create meshes from regular grids (#1369)igl::isolines_map
, ViewerData::set_data
and ViewerData::set_colormap
to improve scalar field visualization in the Viewer, and updated tutorials accordingly (#1371)COLOR_MAP_TYPE_TURBO
colormap, based on Turbo. Jet is now an alias for Turbo, and switched to Viridis as default colormap in the viewer (#1372)igl::slice_sorted
and removed deprecated Eigen::DynamicSparsematrix
from igl::slice
(#1370)cmake/libigl-cgal.yml
to provide boost for Windows users (#1239)libigl.cmake
will define a CMake target Eigen3::Eigen
if not provided by the user (#1299)igl_set_folders()
to sort CMake targets into folders in IDEs such as Visual Studio or Xcode (#1383)igl::heat_geodesics
(#1344)Embree_convenience.h
(#1314)igl::cut_mesh
(#1332)test_common.h
(#1365)igl::predicates::exactinit()
thread-safe + marked internal functions in predicates.c
as static
to prevent name collisions (#1377)igl::hsv_to_rgb
to work on negative hues (#1399)igl::all_edges
igl::internal_angles_using_edge_lengths
(only a specific overload is affected)igl::is_border_vertex
(only a specific overload is affected)igl::remove_duplicates
Published by alecjacobson over 5 years ago
igl::cat
functionalities (#1108)boundary_facets
with outputs revealing which element facet comes from (#1067)std::shuffle
instead of std::random_shuffle
in igl/randperm
(#1062)Published by alecjacobson about 6 years ago
This release is a result of the 2018 libigl hackathon at NYU. The major changes are:
ExternalProject_Add
to download necessary/requested dependency source code and tutorial/test datagit clone --recursive ...
is no longer requiredlibigl/external
have been removed or moved to repos (and added via ExternalProject_Add
);The major upshot is that the old git clone --recursive
that resulted in a 1.8GB libigl/
directory is now a git clone
that results in 16.5MB, more than a 100x reduction in size.
Published by alecjacobson about 6 years ago
Published by alecjacobson about 6 years ago
All pull requests were closed or merged.