Velocity Skinning

Velocity Skinning is a simple technics to add exagerated deformation triggered by skeletal velocity on top of standard skinning animation.

The technic is:
- Real-time and can be implemented as a single pass vertex shader
- Works "out-of-the-box" on existing skinning data in reusing skinning weights
- Allows non-linear-time editing from instantaneous pose and velocity information

Interactive Online Demo

A pure JavaScript implementation of the Velocity Skinning algorithm running in your browser. The animation of the character is pre-recorded, but the parameters of the squashy and floppy effect can be interactively tuned through the control panel.
> Go to Demo


[pdf], [Hal], [arXiv], [EG]
Velocity Skinning for Real-time Stylized Skeletal Animation.
Eurographics, Computer Graphics Forum vol.40, n.2
Article associated to the Replicability Stamp [github]

Abstract: Secondary animation effects are essential for liveliness. We propose a simple, real-time solution for adding them on top of standard skinning, enabling artist-driven stylization of skeletal motion. Our method takes a standard skeleton animation as input, along with a skin mesh and rig weights. It then derives per-vertex deformations from the different linear and angular velocities along the skeletal hierarchy. We highlight two specific applications of this general framework, namely the cartoonlike "squashy" and "floppy" effects, achieved from specific combinations of velocity terms. As our results show, combining these effects enables to mimic, enhance and stylize physical-looking behaviours within a standard animation pipeline, for arbitrary skinned characters. Interactive on CPU, our method allows for GPU implementation, yielding real-time performances even on large meshes. Animator control is supported through a simple interface toolkit, enabling to refine the desired type and magnitude of deformation at relevant vertices by simply painting weights. The resulting rigged character automatically responds to new skeletal animation, without further input.

This paper received the Honorable Mention of the Gunter Enderle Award of Eurographics 2021.


General presentation of Velocity Skinning
Showcase with an animator
Technical presentation at Eurographics

[ YouTube ]

Open Source Codes



   Compute ã from a
   Compute initial centroid cj for each joint

  Run Time:
    For all vertices at position p:
      For all joint j at position pj: 
        (uj,wj) <- (linear,angular) velocity of j
        d_drag    = drag_linear(uj)         + drag_linear(wj, p, pj)
        d_stretch = stretch_linear(uj, cj)  + stretch_angular(wj, p, pj, cj)
        d = d_drag + d_stretch
        p = p + ã  * d


Damien Rohmer LIX, Ecole Polytechnique/CNRS, Institut Polytechnique de Paris
Marco Tarini University of Milan
Niranjan Kalyanasundaram Clemson University
Faezeh Moshfeghifar University of Copenhagen
Marie-Paule Cani LIX, Ecole Polytechnique/CNRS, Institut Polytechnique de Paris
Victor Zordan Clemson University