This release contains quite a few major updates, alongside some smaller "maintenance" updates.
- Removed the use of the GLM library completely, and now using Eigen types throughout. (E.g. 413c9f9, 7e99ab1, a23ee0b, 096b68e, and other commits). This simplified a lot of code. Rewrote
glm::project()
,perspective()
andortho()
using Eigen (see eos/render/matrix_projection.hpp). - Rewrote the nonlinear Ceres fitting using Eigen. This means no more messing around with
GLM_FORCE_UNRESTRICTED_GENTYPE
. Eigen and Ceres work much nicer together. Many improvements, and most cost functions were renamed - check the commit message in d101ca5 for more details. Also reworkedPriorCost
and renamed it toNormCost
(e79da91), and updated fit-model-ceres. - Now doing a proper conversion between quaternions (or rotation matrices) and Euler angles that makes sense (1023e4b, a23ee0b)
- Added the necessary Python bindings so that the fitting loop can now be written and customised in Python (#347) (Thank you @omar-h-omar)
- Updated eigen3-nnls, nanoflann, toml11 and pybind11 submodules to their latest version. Especially toml11 had a big update, and the updated pybind11 supports Python 3.11.
- Minor change, but may break downstream code: Moved
fitting::concat
tocontour_correspondence.hpp
(1029f96) - Modernised CMake scripts a bit. Removed
add_definitions()
for Boost (1de8068), and used CMake targets whenever available (e.g.Ceres::ceres
).
The documentation website is updated to v1.4.0.
The updated release is available on PyPI, with wheels for Python 3.9, 3.10 and 3.11 on Windows (x64), and source installation for other platforms.
Note: It is very likely that the next release will require the C++17 standard, and will no longer compile in C++14 mode.