How patrikhuber/eos works
eos is a header-only 3D Morphable Face Model library. Its main documented workflow maps image landmarks to model vertices, estimates camera pose, fits shape and optionally expression/edges, then produces a mesh and pose-invariant texture. The graph also preserves model representation/loading, rendering and texture tools, experimental nonlinear and multi-image/video capabilities, and language bindings. Several subsystem paths are supported by the tree and README rather than sampled implementation, so their internal call wiring is intentionally not inferred.
Main entry points: fitting.hpp Iterative fitting · MorphableModel.hpp Morphable model · Mesh.hpp Mesh generation · generate-python-bindings.cpp Python bindings
Components 23
Inputs and models
- Landmark parsing
include/eos/core/read_pts_landmarks.hpp - Landmark mapping
include/eos/core/LandmarkMapper.hpp - Morphable model
include/eos/morphablemodel/MorphableModel.hpp - PCA model
include/eos/morphablemodel/PcaModel.hpp - Model loading
include/eos/morphablemodel/io/cvssp.hpp
Fitting
- Pose estimation
include/eos/fitting/orthographic_camera_estimation_linear.hpp - Shape fitting
include/eos/fitting/linear_shape_fitting.hpp - Iterative fitting
include/eos/fitting/fitting.hpp - Expression fitting
include/eos/fitting/blendshape_fitting.hpp - Edge fitting
include/eos/fitting/closest_edge_fitting.hpp - Nonlinear fitting
include/eos/fitting/ceres_nonlinear.hpp - Multi-image fitting
include/eos/fitting/multi_image_fitting.hpp
Geometry and texture
- Mesh generation
include/eos/core/Mesh.hpp - Software rendering
include/eos/render/render.hpp - Texture extraction
include/eos/render/texture_extraction.hpp - OBJ output
include/eos/core/write_obj.hpp - Keyframe texture merge
include/eos/video/keyframe_merging.hpp
Language interfaces
- Python bindings
python/generate-python-bindings.cpp - Matlab fitting
matlab/+eos/+fitting/private/fitting.cpp
Other components
- Image and landmarks
- Mesh and texture
- Python caller
- Matlab caller
Connections 26
- Image and landmarks → Landmark parsing: provides landmarks
- Landmark parsing → Landmark mapping: parsed points
- Landmark mapping → Pose estimation: mapped vertices
- Image and landmarks → Pose estimation: provides image points
- Model loading → Morphable model: loads model
- Morphable model → PCA model: contains PCA model
- Pose estimation → Iterative fitting: camera estimate
- Iterative fitting → Shape fitting: fits shape
- Iterative fitting → Expression fitting: fits expression
- Iterative fitting → Edge fitting: fits contours
- Iterative fitting → Nonlinear fitting: optional costs
- Multi-image fitting → Iterative fitting: fits images
- Iterative fitting → Mesh generation: fitted shape
- Morphable model → Mesh generation: samples model
- Mesh generation → Software rendering: render input
- Software rendering → Texture extraction: rendered surface
- Mesh generation → OBJ output: writes geometry
- Texture extraction → Mesh and texture: extracts texture
- OBJ output → Mesh and texture: writes mesh
- Keyframe texture merge → Texture extraction: extracts keyframe maps
- Keyframe texture merge → Mesh and texture: merges texture
- Python caller → Python bindings: calls bindings
- Python bindings → Morphable model: exposes model API
- Python bindings → Iterative fitting: exposes fitting API
- Matlab caller → Matlab fitting: calls fitting
- Matlab fitting → Iterative fitting: runs fitting