Eos-py

Latest version: v1.4.0.post0

Safety actively analyzes 621854 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 6

1.4.0

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. 413c9f96302286db346384e8be4a371557003a18, 7e99ab18cd538e8d8ddd4b78affa56a8f00dcfe2, a23ee0bacbd32f2649211a88817c23f3d246c7fc, 096b68e3fb560787871bf7be91b2fd914a353be6, and other commits). This simplified a lot of code. Rewrote `glm::project()`, `perspective()` and `ortho()` using Eigen (see [eos/render/matrix_projection.hpp](https://github.com/patrikhuber/eos/blob/master/include/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 d101ca546118ae8736920915c6ac0dead448161f for more details. Also reworked `PriorCost` and renamed it to `NormCost` (e79da919a14b2449acbf8eff57572238e205ed95), and updated fit-model-ceres.
* Now doing a proper conversion between quaternions (or rotation matrices) and Euler angles that makes sense (1023e4b09a8c88f0f7dae25b7f83785f2d997a15, a23ee0bacbd32f2649211a88817c23f3d246c7fc)
* 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` to `contour_correspondence.hpp` (1029f96f8bd8fa66b55ad1f73962b14aa3fc0f85)
* Modernised CMake scripts a bit. Removed `add_definitions()` for Boost (1de80682ad38f0e5784302e3089b52b6aca5ff39), and used CMake targets whenever available (e.g. `Ceres::ceres`).

The [documentation website](https://patrikhuber.github.io/eos/doc/) is updated to v1.4.0.

Note: It is very likely that the next release will require the C++17 standard, and will no longer compile in C++14 mode.

1.3.0

This is a minor maintenance release, but with one important change, warranting the version push to 1.3.0 to not catch anyone off guard: The Eigen version in `3rdparty/` is updated from 3.3.4 to the latest 3.4.0.

Full release notes:
* Eigen version in `3rdparty/` is updated from 3.3.4 to 3.4.0. The submodule now also uses the official Eigen gitlab.com URL.
* Added a script to load the Liverpool-York Head Model (LYHM) (1153e77dab41161f91c1bdeece72650b0956317a)
* Added a `CITATION.cff` file to make it easier to correctly cite eos
* Updated the `__repr__` methods of some Python bindings a bit (9b8b3509e609be026f56d98073c2cb6699c55978)
* Replaced `ExpressionModelType` `None` with `none` in Python to avoid clashing with Python's keyword `None` (85d09d255da4d57817e0263a06aec0626ed38fed)
* Added a constructor to `eos::core::Mesh`'s Python bindings to make it more convenient to create a `Mesh` object (b2f24a12123b0e2409c139cc5d991e3b2a326454)
* Updated pybind11 to 2.9.1

Note: It is quite likely that support for C++14 will be dropped in one of the future releases, and a C++17 compliant compiler will become the minimum requirement to use eos.

1.2.1

This is a follow-up update pushing the python bindings to PyPI:

Updated pybind11 to their latest master commit, and changed the Visual Studio CMake generator for the Python bindings from VS 2017 to VS 2019 (75ecca4ac84dce5a1a5113704f7f8714060663da).

eos/patrikhuber is now part of GitHub Sponsors. If you are finding eos valuable, there is now the possibility of [becoming a sponsor](https://github.com/sponsors/patrikhuber).

**See the [v1.2.0 release notes](https://github.com/patrikhuber/eos/releases/tag/v1.2.0) for all the changes and improvements in this release!**

The updated release is available on [PyPI](https://pypi.org/project/eos-py/).

1.2.0

This release updates the renderer and texture extraction, with full support for perspective projection (along with orthographic projection), and contains various other smaller improvements and fixes.

New / major improvements:
* Improved `v2::extract_texture(...)` to support texture coordinates with seams (63243b2)
* Moved `v2::extract_texture(...)` to the `eos::render` namespace and made it the new default (08cba28). Calling code needs to be adjusted slightly, but the function's parameters are very similar. This new texture extraction uses the `Rasterizer` of the new renderer, and supports both orthographic and perspective projection.
* Removed the old `extract_texture(...)` function, which only supported affine cameras (8fd1735)
* Improved `SoftwareRenderer::render(...)` to correctly deal with texture maps with seams (c1defba)
* Removed the old `render(...)` function, moved `v2::SoftwareRenderer` to the `render` namespace, and added a convenience function for the new renderer that can be called (almost) like the old renderer (12a4120) - calling code needs slight adjustments. The core of the new renderer is the same, but the architecture has been changed to mirror more closely the hardware (or OpenGL) pipeline, with vertex- and fragment shaders. Results should be exactly the same, and they have the same parameters.
- _Note:_ Whereas previously, meshes without vertex colour would be rendered with the colour `(0.5, 0.5, 0.5)`, in the new renderer, they will have default colour black (bd01644). In any case, it does not make sense to try and render a mesh without vertex colours or texture.
* Added vertex visibility check function that supports both orthographic and perspective projection (0db88d3). Introduced an `enum class` `ProjectionType`, which specifies whether orthographic or perspective projection should be used.

Fixes:
* Changed strides in `Image` python bindings to account for row-major `Image` class (dc0fce8). (The `Image` class was changed to row-major in a commit a while ago, but the python bindings were never updated to accommodate this.)
* Updated `mpark::variant` to their latest master (bd590bf). This should fix a few compile errors with certain compilers when compiling eos in C++14 mode.

Minor improvements/changes:
* Improved `v2::extract_texture(...)` to not crash when the projected model is partially outside the image (442497e)
* Added `clear_buffers()` function to `SoftwareRenderer` and `Rasterizer` to clear the colour- and depth buffers (1e8a875)
* Set the colourbuffer's clear color to fully transparent (fc1465e)
* Added `project(...)` function to `PcaModel` (4694d6f) (see 295 for a potential issue)
* Moved `render/draw_utils.hpp` to `render/opencv/` (914fdd5)
* Added new `draw_wireframe(...)` function that doesn't need OpenCV (7303b39) and added python binding for it (f1f83d0)
* Renamed "isomap" to "texturemap" throughout, and the `<filename>.isomap.png` output of the example apps to `<filename>.texture.png` (174a2c2)
* Various other minor improvements.

Removed:
* Removed `render::detail::interpolate_black_line(...)` (it was only needed for 4, which was fixed, and also it was for the old texture extraction) (35abed8)
* Removed `estimate_affine_camera(...)`. See the commit message, for people that were still using this. (507eb77)
* Removed `render_affine(...)`, this was used in the old texture extraction and is no longer needed (aee7984).

1.1.2

This is a minor update that slightly improves the internals of loading `.scm` models from CVSSP from the University of Surrey, and also adds `load_scm_model(...)` to the Python bindings, so these models can be loaded directly in Python.

Changes/improvements:

* Removed the OpenCV dependency of `eos/morphablemodel/io/cvssp.hpp`, and clarified the documentation slightly [dd4cd62d4724f4368916875d1303f03e98f2f0fb and following]
* Subsequently, the utils (with `utils/scm-to-cereal` being the only one) can now be built without OpenCV [d465a042a860283ba3f11ce15683bf186a607273]
* Added `load_scm_model(...)` to the Python bindings (in the namespace `eos.morphablemodel.load_scm_model(...)`) [b82b85244d5e5ed55a257d0483d21bcfcef4c9c6]

The updated release is also available on [PyPI](https://pypi.org/project/eos-py/).

1.1.1

This release mainly fixes the `write_obj(...)` and `write_textured_obj(...)` functions to now also write out the texture triangle indices (tti), when they're present in a mesh. Previously for meshes who used a different set of texture triangle indices, this could cause weird artefacts on the top of the head because the tti were not written to the obj. [c25319769f3d103293d62c857a1b330631c90e5f]

Other small changes/improvements:
* Moved `write_obj(...)` and `write_textured_obj(...)` into a separate header, `eos/core/write_obj.hpp`, so that including `Mesh.hpp` doesn't result in transitively including `<fstream>` and `<string>` [a040c0ed73b6df426fdfedb7fa7804e28514a879]
* Prefixed all header guards with `EOS_` in the `eos::core` namespace to reduce possible name collisions [4381fd16b994c4533e9af2fe6cc1f63b5adea48a]
* `write_obj(...)` now also inverts the y axis of the uv coords, to be consistent with `write_textured_obj(...)` [7ce291825a916190aedf790b465ec68dcf49373f]
* `setup.py` now checks for CMake 3.10.0 on Windows [3dd69f7727167345f135421a918f2e1ec7c6b5b7]

Page 1 of 6

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.