Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


A reference implementation of "Sparse Localized Deformation Components", a paper accepted for SIGGRAPH Asia 2013. More information on the paper, including the videos, can be found on the project page.

The main algorithm presented in the paper is in ""

I would be very happy to hear about cool applications built with this code, and any feedback is very appreciated.


To run the code, you will need

  • Python
  • numpy
  • scipy

For visualizing the components and animations, additionally

  • mayavi2

In Ubuntu, these can be easily installed by

    >>> apt-get install python python-numpy python-scipy mayavi2


The sploc algorithm requires the input files pre-processed and aligned, for own data, use the following process:

  • Convert and preprocess the mesh sequence (OFF and PLY import script available):

     >>> python  "~/data/volker/*.off" /tmp/volker.h5
     >>> python /tmp/volker.h5 /tmp/volker_aligned.h5 -r first
  • Look at animation

     >>> python /tmp/volker_aligned.h5

Here is an example of processing the data

  • Find sparse components (takes some time)

     >>> python /tmp/volker_aligned.h5 /tmp/volker_splocs.h5

    Notice that right now, you can only change the algorithm parameters in the file (around line 30)

  • View sparse components

     >>> python /tmp/volker_splocs.h5

Obtaining the datasets used in the paper

Here is how you can obtain the datasets that are used in the paper:

[Zhang et al.2004] Facial performance capture data. You can get this here, as a PLY sequence:

[Valgaerts et al. 2012] High-resolution facial performance capture data. You can request the data here:

[Beeler et al. 2011] High-resolution facial performance capture data. The instructions how to get it are here:

[Hasler et al. 2009] Full body scans in correspondence. Request here:

[Neumann et al. 2013] Captured shoulder and arm muscles. Please ask by mail, see the project page This data is not in OFF/PLY Format and needs a separate pose normalization step that is not part of this source code distribution.


Notice that this reference implementation does not include all the features from the paper, e.g. it currently misses user priors and convergence checks. The implementation is meant for documentation purposes. The aim is to keep the code clean, short, and well documented. The code is still able to run, of course ;-) In this way, I hope that future researchers will be able to quickly come up with new applications of splocs and I encourage everyone to try variations of splocs for their own research or even commercial problems.

The code currently doesn't come with a dataset, but there are scripts to import OFF and PLY mesh sequences easily.


This code is licenced under the MIT License. If you use this code in publications, please cite:

    Thomas Neumann, Kiran Varanasi, Stephan Wenger, Markus Wacker, Marcus Magnor, and Christian Theobalt
    Sparse Localized Deformation Components
    ACM Transactions on Graphics 32 (6), 2013 (Proceedings of SIGGRAPH Asia)

Bibtex entry:

    author = {Neumann, Thomas and Varanasi, Kiran and Wenger, Stephan and Wacker, Markus and Magnor, Marcus and Theobalt, Christian},
    title = {Sparse Localized Deformation Components},
    volume = {32},
    number = {6},
    journal = {{ACM} Transactions on Graphics (Proc. of Siggraph Asia)},
    month = nov,
    year = {2013}

Bitdeli Badge


Sparse Localized Deformation Components







No releases published


No packages published