A lightweight 3D Morphable Face Model library in modern C++
A very small release with very minor updates.
This is the last release to support the current model format. eos is switching to Eigen for the PcaModel and MorphableModel classes, which will require users to re-download the models in the new format. The changes are already done in the devel branch and will be included in the next official release.
This release contains a major modernisation of the CMake scripts. Most of it now follows a target-based approach. The release also contains improvements to the Python and Matlab bindings. No changes to the fitting algorithm(s) in this release.
Noteworthy changes:
.clang-format
file - please more or less stick to the style in there for new contributions. Most notably, we switched from tabs to 4 spaces, as it improves readability on GitHubMesh
to core
namespace (this may break current code, but is easily fixed)EOS_
, you may need to update your configuration (e.g. BUILD_EXAMPLES
=> EOS_BUILD_EXAMPLES
).The software renderer also got refactored into classes, with a more dynamic approach for vertex and pixel shaders, and rasterising, following the OpenGL paradigm. The code of the core renderer is exactly the same. The new code is very much experimental, I suggest sticking to the existing rendering functions, which are still there and work as before.
As before, make sure to clone the repository with git clone --recursive
, or, if you're updating, run git submodule update --init --recursive
.
Windows binaries are compiled with Windows 8.1 64bit, Visual Studio 2015. The bindings are created for Python 3.5 and Matlab R2016b. Linux binaries are compiled with Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.
Minor improvements of the project infrastructure: The INSTALL
target copies less 3rd-party files (only the headers now), python bindings are now in a separate directory, and the python bindings are being built on travis and AppVeyor.
Added Matlab bindings for the fitting function fit_shape_and_pose(...)
, which means the fitting can be run from Matlab. It returns a mesh and rendering_parameters (pose). A demo script (demo.m
) is included - see the Matlab bindings section of the README.md for more details.
Set GENERATE_MATLAB_BINDINGS
in CMake to build the mex file and run the INSTALL
target to install everything. CMake-3.7 is required to build the bindings.
So far, only bindings for this one fitting function exists, but it's one of the key functionalities of eos. The model and needed files have to be given as filenames, which means they have to be loaded each time you call the fit_shape_and_pose(...)
function. It works quite fast but is therefore not fast enough for real-time scenarios.
Another small limitation is that it currently only works with ibug landmarks, and only if all 68 of them are present. This limitation might be lifted in the future.
More bindings (e.g. for the MorphableModel
itself) might be added in the future.
This minor release brings a large speed-up of the shape-fitting, along with a couple other small improvements.
This release contains edge fitting as the main addition - this is a major improvement in the fitting quality.
fit-model
appfit-model
example app: It now uses blendshapes, the new contour fitting, and iterates the different fitting stages, resulting in a major improvement in fitting quality[1]: A. Bas, W.A.P. Smith, T. Bolkart and S. Wuhrer, "Fitting a 3D Morphable Model to Edges: A Comparison Between Hard and Soft Correspondences", In Proc. ACCV 2016 Workshops, 2016.
Minor improvements/fixes:
fit-model
app to fit-model-simple
: it shows simple pose and shape fitting, without blendshapes or contour-fittingAs before, make sure to clone the repository with git clone --recursive
, or, if you're updating, run git submodule update --init --recursive
.
Again there's some precompiled binaries and python bindings available. No guarantees that they'll work on many other systems though. The Python bindings are the same as in eos v0.8.0, no new additions yet.
Windows binaries are compiled for Windows 8.1 64bit, Visual Studio 2015. Linux binaries are compiled for Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.
A major release with many new features and some minor fixes and improvements!
fit-model
uses this as new default.-DBUILD_CERES_EXAMPLE
to build an example app.Minor improvements/fixes:
Mesh
type and most of the rendering now uses glm types instead of cv::Vec'sMake sure to clone the repository with git clone --recursive
, or, if you're updating, run git submodule update --init
!
Also there's some precompiled binaries and python bindings available. No guarantees that they'll work on many other systems though. Python bindings are for python-3.5. If you want python-2.7, you need to compile them by yourself.
Windows binaries are compiled for Windows 8.1 64bit, Visual Studio 2015. Linux binaries are compiled for Linux Mint 18, based on Ubuntu 16.04, gcc-5.4.
A few minor updates:
A major release with many new features and some minor fixes and improvements:
Minor improvements/fixes:
Note 1: The contour-landmarks fitting in contour_correspondence.hpp is a bit beta-quality and doesn't contain all necessary safety checks; for example, if given wrong correspondences, it may crash.
Note 2: I initially wanted to tidy up a few more things before officially tagging this, but it has been on GitHub for so long now and people are using it, so that we'll just make this v0.7.0.