Run it in your browser.
Demo 1: load your own character
A JavaScript + WebGL implementation of Velocity Skinning. Load your own FBX character and interact with it immediately.
FBX examples: Manga model, Cesium Man
The article
Velocity Skinning for Real-time Stylized Skeletal Animation
Eurographics 2021, Computer Graphics Forum vol. 40, no. 2, pp. 549–561.
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.
@article{rohmer2021velocity,
author = {Rohmer, Damien and Tarini, Marco and
Kalyanasundaram, Niranjan and Moshfeghifar, Faezeh
and Cani, Marie-Paule and Zordan, Victor},
title = {Velocity Skinning for Real-time Stylized
Skeletal Animation},
journal = {Computer Graphics Forum (Eurographics 2021)},
volume = {40},
number = {2},
pages = {549--561},
year = {2021},
doi = {10.1111/cgf.142654}
}
Follow-up work: Acceleration Skinning (Graphics Interface 2022) and Dynamic Skinning (SIGGRAPH 2025 Posters, IEEE TVCG 2026).
Article associated with the Replicability Stamp (GitHub).
This paper received the Honorable Mention of the Günter Enderle Award of Eurographics 2021.
See it in motion
Code
C++
C++ implementation of the method.
velocity_skinning_cpp
GPU
Single-pass vertex shader implementation for large meshes.
velocity_skinning_gpu
Web
JavaScript + WebGL version used by the online demos.
velocity_skinning_webAlgorithm
Precomputation:
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_angular(wj, p, pj)
d_stretch = stretch_linear(uj, cj) + stretch_angular(wj, p, pj, cj)
d = d_drag + d_stretch
p = p + ã d
Authors
Developer of Demo 1: Ewen Collin.