IEEE TVCG 2026

Dynamic Skinning

Kinematics-Driven Cartoon Effects for Articulated Characters

Add bouncy, jiggly, wavy secondary motion to any rigged character, in real time. No simulation and no extra rigging: the deformation comes straight from the skeleton's motion and the skinning weights you already have.

Damien Rohmer, Karim Salem, Niranjan Kalyanasundaram, Victor Zordan
LIX, Ecole Polytechnique · Clemson University

Standard skinning (LBS)LBS + Drag only · Velocity Skinning+ Drag + Dynamic skinning+ Dynamic

Same skeleton animation, same skinning weights. The drag alone lags only while the neck moves; dynamic skinning keeps oscillating after each stop.

Why dynamic skinning

Lively secondary motion, without simulation.

Dynamic skinning is a set of deformers that offset each vertex from the motion of the skeleton and time. Because the offsets are computed directly instead of solving physics equations, the method is extremely fast, predictable and easy to art-direct.

Real-time

A closed-form offset per vertex, on CPU or as a GPU vertex shader. Interactive on meshes with hundreds of thousands of vertices.

Works on existing rigs

Uses the skeleton and the skinning weights you already have. The effect adapts itself to the rig, with no extra setup.

Artist friendly

A few intuitive parameters (frequency, damping, amplitude, drag) and paintable weights. No Young's modulus to tune.

Results

Oscillations, from global to local.

The same oscillation deformer gives a global wobble along the whole shape, a localized jiggle in the extremities, or a resonance with the motion. Pick an example to compare standard skinning (left) with dynamic skinning (right).

Standard skinning Dynamic skinning

Giraffe

The neck swings left and right: the whole shape keeps oscillating after each stop, following the hierarchy of the skeleton.

Global oscillation
Interactive web demo

Play with it, right now.

The complete C++ application, compiled to WebAssembly and running in your browser.

  • Eight characters, each with its own animation
  • Grab a joint and swing it to feel the response
  • Tune frequency, damping, amplitude and drag live
  • CPU or GPU skinning, skeleton and weights display

Needs a WebGL 2 browser. About 45 MB to download the first time. Works best on a desktop.

Screenshot of the web demo: the dragon, its skeleton and the dynamic skinning control panel
How it works

Deformers driven by the skeleton's kinematics.

Each joint's angular velocity is recorded over time and filtered by an oscillation kernel. The filtered motion bends the vertices it influences, blended along the hierarchy with weights derived from the skinning weights.

κ(t) = A exp(−t/τ) sin(2πf t)
The oscillation kernel: a damped sinusoid applied to the history of each joint's motion.
  • fFrequency: how fast the material wobbles.
  • τDamping: how long the oscillation lasts.
  • AAmplitude: how much it bends.
  • DDrag: lag proportional to the velocity, for a softer follow-through.

Plus flexible deformation origins and paintable per-vertex weights, to restrict the effect to the soft parts of a character (wing membranes, tentacles, hat, ears…).

The formula, in plain words

Read κ(t) as the response of the skin to a sudden kick: A sets how far it swings, sin(2πf t) makes it go back and forth f times per second, and exp(−t/τ) makes the swing fade out after about τ seconds.

  1. Measure. For each joint, its angular velocity Ωj is measured every 1/60 s and kept in a short history.
  2. Filter. Every change of speed (a start, a stop, a change of direction) launches a damped wobble shaped by κ, and the wobbles add up. The drag term D Ωj adds a lag proportional to the current speed: alone, it is Velocity Skinning, and it vanishes as soon as the joint stops, while the wobbles keep going.
  3. Bend. Each vertex is rotated around the joint, against the motion, by an angle that grows with its distance to the joint. The weight βij sums the skinning weights of the joint and of all its descendants: turning the shoulder bends the whole arm.

The algorithm

// Precomputation, from the skinning weights α
for each vertex i, joint j:
  βij = sum of αik over k = j and its descendants

// Each frame, after standard skinning (LBS)
for each joint j:
  Ωj = angular velocity of j
  append Ωj to its history Hj      // step Δt = 1/60 s
  Fj = D Ωj                         // drag
     + Σk κ(kΔt) · ΔHj(t − kΔt)   // oscillations

for each vertex i at position pi:
  di = 0
  for each joint j with βij > 0:
    θ = −γi ‖Fj × (pi − qj)‖
    p' = rotate pi around joint qj,
         axis Fj, angle θ
    di += βij (p' − pi)
  pi = pi + di

ΔHj is the change of angular velocity between two consecutive samples, and γi the (paintable) bend weight of the vertex.

Standard skinning Delayed skinning
Also in the article

A separate deformer: delayed skinning

Independently of the oscillations, the article introduces a time-delay filter, the delayed linear blend skinning (dLBS). The rotation of each joint reaches a vertex with a delay equal to their distance along the skeleton divided by a speed c: the motion travels from the root to the extremities, like a wave.

Here, only the delay is active, without oscillation. dLBS replaces standard skinning, and the oscillations can be added on top of it.

dLBSPropagation speed c
Blender add-on

Dynamic skinning in Blender.

A prototype extension for Blender 5.0+ that adds oscillations and drag to any mesh with an Armature modifier, both while posing bones and during animation playback.

  1. Download dynamic_skinning-0.1.0.zip and install it from Edit › Preferences › Get Extensions › Install from Disk.
  2. Select a rigged mesh and click Enable in Object properties › Dynamic Skinning (or the N sidebar).
  3. Rotate a bone in Pose Mode, or press play: the mesh lags, then oscillates.

Prototype (v0.1.0, MIT license): oscillations and drag, without the delay (dLBS) or flexible origins. Real-time playback, no bake yet.

Publication

The article

Thumbnail of the Dynamic Skinning article: giraffe, clown and train examples

Dynamic Skinning: Kinematics-Driven Cartoon Effects for Articulated Characters

Damien Rohmer, Karim Salem, Niranjan Kalyanasundaram, Victor Zordan.
IEEE Transactions on Visualization and Computer Graphics, vol. 32, no. 3, pp. 2684–2694, 2026.

We present an extension to traditional rig skinning, like Linear Blend Skinning (LBS), to produce secondary motions that exhibit the appearance of physical phenomena without need for simulation. At the core of the technique, we call dynamic skinning, is a set of deformers which offset position of individual vertices as a function of position derivatives and time. Examples of such deformers create effects such as oscillation in response to movement and the appearance of wave propagation, among others. Because the technique computes offsets directly and does not solve physics equations, it is extremely fast to compute. It also boasts a high degree of customizability which supports a desirable artist workflow and fine level of control. Finally, we showcase the technique in a number of scenarios and make comparisons with the state of the art.

@article{rohmer2026dynamic,
  author  = {Rohmer, Damien and Salem, Karim and
             Kalyanasundaram, Niranjan and Zordan, Victor},
  title   = {Dynamic Skinning: Kinematics-Driven Cartoon
             Effects for Articulated Characters},
  journal = {IEEE Transactions on Visualization and
             Computer Graphics},
  volume  = {32},
  number  = {3},
  pages   = {2684--2694},
  year    = {2026},
  doi     = {10.1109/TVCG.2026.3653317}
}
Figure 1 of the article: giraffe with global oscillations, clown with localized oscillations, train with delayed deformation
Figure 1 of the article: global oscillation along the shape (giraffe) and localized oscillations in the extremities (clown) with the oscillation deformer; delayed deformation propagating along the skeleton (train) with the delayed skinning.
Video

Supplementary video

Overview of the method, results on all the characters and comparisons with the state of the art (4 min).

Open source · MIT license

The application, and its code.

The interactive application used for all the results of the article, in C++17 and OpenGL 3.3. It runs on macOS, Linux and Windows, and in the browser.

Complete application

  • The characters of the article, each with its own pre-designed animation
  • Click a joint and drag it: the mesh lags, then oscillates
  • Live tuning of f, τ, A, D, flexible origins and painted bend weights
  • Skinning on the CPU, or on the GPU in a vertex shader (250k-vertex Cthulhu in real time)
  • Delayed skinning (dLBS) as a separate option
  • Same code for the web version, compiled with Emscripten
Build and run
# dependencies: CMake, GLFW (macOS: brew install cmake glfw)
git clone https://github.com/drohmer/dynamic_skinning
cd dynamic_skinning/code
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
build/complete

Linux: sudo apt install cmake pkg-config libglfw3-dev. Windows: Visual Studio with CMake, GLFW is included.

Use it in your own skinning pipeline

The method is a small, self-contained module (about 550 lines of C++ for the oscillations). It takes the skeleton and the skinning weights you already have, and adds an offset after standard skinning: one call at load time, one call per frame.

This is all the dynamic skinning of the minimal application:

Minimal application
// Once, after loading the character:
// weights β_ij, empty velocity history
dynamic_skinning_initialize(ds_state, model, mesh);

// Each frame: pose, then standard skinning
model.set_skeleton_from_animation(anim, t);
model.skinning_lbs(mesh);

// κ(t) = A exp(-t/τ) sin(2πf t), and drag D
ds_parameters.frequency   = 2 * Pi * f;
ds_parameters.attenuation = 1 / tau;
ds_parameters.amplitude   = A;
ds_parameters.drag        = D;

// adds the offsets d_i to the LBS positions
dynamic_skinning_apply(ds_state, ds_parameters,
                       model, mesh, t);
Previous work · Eurographics 2021

Velocity Skinning

The first step of this line of work: squashy and floppy cartoon deformations triggered by the skeletal velocity, as a single-pass vertex shader. Honorable Mention of the Günter Enderle Award.

Line of work

  1. 2021Velocity Skinning for Real-time Stylized Skeletal Animation. Rohmer, Tarini, Kalyanasundaram, Moshfeghifar, Cani, Zordan. Eurographics 2021, Computer Graphics Forum 40(2).
  2. 2022Acceleration Skinning: Kinematics-Driven Cartoon Effects for Articulated Characters. Kalyanasundaram, Rohmer, Zordan. Graphics Interface 2022.
  3. 2025Dynamic Skinning: Kinematics-Driven Cartoon Effects for Articulated Characters. Salem, Rohmer, Kalyanasundaram, Zordan. SIGGRAPH 2025 Posters.
  4. 2026Dynamic Skinning: Kinematics-Driven Cartoon Effects for Articulated Characters. Rohmer, Salem, Kalyanasundaram, Zordan. IEEE TVCG 32(3), 2026 (this page).

Not to be confused with an earlier, different method with a similar name: Larboulette, Cani, Arnaldi, “Dynamic Skinning: Adding Real-time Dynamic Effects to an Existing Character Animation”, Spring Conference on Computer Graphics 2005.

Team

Authors

Damien Rohmer
LIX, Ecole Polytechnique, CNRS, Institut Polytechnique de Paris
Karim Salem
Clemson University*
Niranjan Kalyanasundaram
Clemson University*
Victor Zordan
Clemson University

* At the time of this work.