I organize this repo just for fun & my personal research use.
Hope this helps and you can enjoy it. : )
# Since triangle mesh is the most popular representation of 3D face, the main part is mesh processing.
mesh/ # written in python(numpy)
| io.py # read & write obj
| vis.py # plot mesh
| transform.py # transform mesh & estimate matrix
| light.py # add light & estimate light(to do)
| render.py # obj to image using rasterization render
# When can not use vercorization to optimize, loop in python is too slow to use. So write core parts(loop) in c++, then use cython to compile it.
mesh_cython/ # written in c++(cython)
| render.py # the same API as in mesh/render.py, with faster speed.
| light.py # the same API as in mesh/light.py, with faster speed.
| mesh_core* # c++ codes of core parts.
# 3DMM is one of the most popular methods to generate & reconstruct 3d face.
morphabel_model/ # witten in python(numpy)
| morphable_model.py # morphable model class: generate & fit
| fit.py # estimate shape&expression parameters. 3dmm fitting.
| load.py # load 3dmm data
-
3dmm.
run examples/2_3dmm.py
left: random examples generated by 3dmm
right: 3d face generated by fitted 3dmm&pose parameters using 68 key points
- transform.
python examples/3_transform.py
- light.
python examples/4_light.py
- image map
python examples/6_image_map.py
- uv map
python examples/7_uv_map.py
-
Python 3+ (numpy, skimage, scipy)
-
Python packages:
- numpy
- skimage (for reading&writing image)
- scipy (for loading mat)
- Cython (for compiling c++ files)
-
BFM Data
- Clone the repository
git clone https://github.com/YadiraF/face3d
cd face3d
- Compile c++ files(ignore if you use numpy version)
cd face3d/mesh_cython
python setup.py build_ext -i
- Run examples