Single illustration → editable, drivable Live2D character

BunrakuTurning a Single Illustration into an Editable Live2D Character

Seeking 27 Fall PhDJunhao Chen★1 Seeking 27 Fall JobJingjia Mao★1 Dayong Li2 Chenghai Li2 Saining Zhang3 Zhihao Li4 Hao Zhao1 Yufei Wang†4 Ruqi Huang†1

1Tsinghua University, China 2Independent, Beijing, China 3Nanyang Technological University, Singapore 4SparcAI Inc., USA

Equal contribution  ·  Corresponding authors

characters interactive rigs one frozen checkpoint no teacher forcing every frame is raw model output

How to read this page. Every frame is raw model output — no per-example tuning, no hand editing, no cherry-picked frames. The frames were rendered ahead of time by the same WebGL viewer used for every figure in the paper, each one driven to an absolute parameter value, so dragging a slider steps through what the Live2D runtime actually interpolates between the predicted keyposes rather than a tween invented for this page.

01Drive a generated rig

These four are looping right now, each on its strongest axis. Click one to open it below, or switch between the two input groups — A-pose standing figures and dynamic illustrations — and drag any of them. Play all walks every rig and every axis in turn, 72 animations, without you clicking anything; moving the pointer across the character takes over and scrubs it by hand. Each rig was produced from one flat illustration: Stage 1 splits it into an ordered RGBA layer stack with the hidden regions completed, Stage 2 builds a triangle mesh per layer from its alpha channel and predicts a 2D displacement for every vertex of every layer in a single forward pass.

0
minrestmax
arrow keys also step the slider · moving the pointer across the character scrubs the axis

02The easy case: A-pose inputs

A standing, front-facing figure with the arms down and clear of the body is the pose almost every hand-authored Live2D rig is drawn in, so it is the pose our training distribution is centred on. Every rig below is of that kind, animating at full amplitude with nothing scaled down. They loop on their own and rotate through the three axes; move the pointer across any tile to drive that axis by hand, and click to open it in the explorer above.

03Move your mouse — it looks at you

Move the pointer anywhere over the panel. The head turns and nods toward it and both eyes track it — four parameters driven at once. Each frame you see is one real render of the rig at that four-parameter pose, not a warp of a single image: the Live2D runtime resolves a simultaneous drive by summing the stored per-parameter displacement fields, so a four-parameter pose costs no extra prediction. We first drove six, adding a tilt coupling and a body lean at full range, and summing that many predicted fields pulled the layers apart — the note below section 02 is the same amplitude limit seen from the other side.

the rig looking toward the pointer
move your pointer onto the character — it follows you
leaving the panel eases back to rest

04What Stage 1 produces

The rig is an ordered stack of RGBA layers, and each layer is complete: the part of it that a layer above hides still has to be painted, because the moment the character moves that region becomes visible. The stack below is fanned apart in depth and turning on its own — drag across it to pull it further apart, and pick any of the cases to switch character. Below that, drag to add one layer at a time, back to front, with the layer being added shown alone.

every sheet is one predicted layer, complete — including the region that was hidden behind another layer in the flat illustration
composited, back to front
layer stack composited up to the selected layer
this layer alone, completed
the selected layer on its own

05Why not just use a human parser?

The same illustration decomposed two ways, then animated by the same frozen Stage 2 checkpoint, driven over the same axis to the same amplitudes and cropped with one shared box. Only the layer source differs, so every visible difference is decomposition error propagating through an unchanged animation model — and it is in motion that the difference shows: an under-segmented stack looks passable at rest and comes apart once it moves.

The reason the comparison is lopsided is structural rather than a matter of tuning. See-through builds its stack on human semantic segmentation, so it can only separate the parts its parser has categories for — head, torso, arms, legs, and a small closed set of garments. An illustration is routinely not that:

Our Stage 1 does not classify body parts. It predicts an ordered stack of completed RGBA sheets directly, so what a sheet contains never has to correspond to a human part at all — a bag, a hair mass and a skirt panel are simply three sheets. That is why the failures on the right are not bugs to be fixed in See-through, and why they do not appear on the left.

The third-party decomposer is used as published, with no tuning by us, and was not designed for rigging. This is evidence that decomposition quality dominates the end-to-end result, not a claim about that method's own task.

06Re-texture without re-animating

A layer's mesh is derived from its alpha channel, so repainting only the RGB of some layers cannot invalidate the mesh — and therefore cannot invalidate the animation. The edited rig below replays the original predicted displacement frames.

before
rig before the edit
after — garment layers recoloured
rig after the edit
mesh vertices — byte-identical
triangle lists — byte-identical
every predicted keypose — byte-identical

This particular pair is an alpha-preserving recolour rather than a prompt-driven edit, so it demonstrates the mechanism rather than the generative editing itself: the point is that the posed columns are the original prediction replayed on new texture, with nothing re-run. The prompt-driven edits across ten layer categories are in the paper.

07Every character we can show

All rigs that pass our content filter, each at rest. Hover any tile and it animates; click to enlarge and step through poses. One frozen checkpoint, one triangulation procedure and one parameter sweep produced every tile.

Move the pointer across a tile to pose that character — left is rest, right is the largest pose it holds together. Click to enlarge.

08Cite

@misc{chen2026bunrakuturningsingleillustration,
      title={Bunraku: Turning a Single Illustration into an Editable Live2D Character}, 
      author={Junhao Chen and Jingjia Mao and Dayong Li and Chenghai Li and Saining Zhang and Zhihao Li and Hao Zhao and Yufei Wang and Ruqi Huang},
      year={2026},
      eprint={2607.27348},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2607.27348}, 
}

09Get in touch

For academic collaboration, access to the dataset, or commercial licensing.

Academic collaboration

Joint work, reproductions, comparisons against your own method.

Dataset access

The rigged Live2D corpus and the held-out benchmark used in the paper.

Commercial licensing

Using the pipeline in a product, or a bespoke integration.