Single illustration → editable, drivable Live2D character
1Tsinghua University, China 2Independent, Beijing, China 3Nanyang Technological University, Singapore 4SparcAI Inc., USA
★Equal contribution · †Corresponding authors
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.
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.
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.
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 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.
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.
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.


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.
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.
@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},
}
For academic collaboration, access to the dataset, or commercial licensing.
Joint work, reproductions, comparisons against your own method.
The rigged Live2D corpus and the held-out benchmark used in the paper.
Using the pipeline in a product, or a bespoke integration.