This is a major release, bringing full support for expression PCA models. `MorphableModel`s can now either contain no expression model, a set of blendshapes, or a PCA expression model.
The `fit_shape_and_pose` supports both as well, and calls either the `_linear` or `_nnls` solver, depending on whether a model contains blendshapes or an expression PCA model.
The main changes that go along with that:
* Updated the `MorphableModel` file format to version to `2` to include an optional expression model. Version `1` models can still be read.
* Added a flag `ExpressionModelType` to `MorphableModel` to easily query the type of the expression model.
**Note:** The behaviour of `MorphableModel::get_mean()` has been changed: It now returns the overall shape **and** expression mean. (see 188)
Other small additions:
* Updated the BFM2017 converter script to convert and save the expression PCA model too.
* Added a fitting function for fixed, given correspondences, that runs the fitting loop without contour fitting. (see [here](https://github.com/patrikhuber/eos/blob/v0.16.0/include/eos/fitting/fitting.hpp#L606))
* The [online doxygen documentation](http://patrikhuber.github.io/eos/doc/) has been updated to v0.16.0.
As always, when updating from the GitHub repository, make sure to run `git submodule update --init --recursive`.
The binary files are provided for convenience only - it is recommended to build the examples from source, and use the library by cloning the GitHub repository.
Windows binaries are compiled with Windows 10 64bit, Visual Studio 2017. A .whl with python bindings for python 3.6 is available on [PyPI](https://pypi.org/project/eos-py/).
Linux binaries are compiled with Linux Mint 18.3, based on Ubuntu 16.04, gcc-7. Make sure to [follow the instructions](https://github.com/patrikhuber/eos#python-bindings) for how to use `gcc-7` with `pip` if using the Python bindings on Linux.