CivArchive
    Posed Sprite Sheet Generator - V2 - v2.0
    NSFW

    What it does

    One drawing of a character in, animated sprite sheets out. A front-view picture goes in; out come a walk, a short uppercut and a heavy uppercut as transparent sprite sheets at one scale, and the limbs never swap: the near arm and the near leg stay in front of the far ones on every frame.

    This builds on my Posed Sprite Sheet Generator, which poses a character in a single image. That one stays as it is. This is a separate, much bigger setup: six steps, three models, my PoseCapture custom nodes for the pose part (since v2.1), a few Python scripts (limb labels, sprite sheets), and an exact bundle.

    • The posing step runs on Qwen-Image-Edit-2511 (bf16) with the 4-step Lightning LoRA.

    • The SCAIL animation step: a side-view still of the character plus a pose video made of 3D cylinders goes into SCAIL-Preview, and out comes an animation in which the near arm and the near leg stay in front of the far ones on every frame.

    • The cylinders are drawn with a depth buffer from a 2D skeleton track by my PoseCapture nodes, inside the SCAIL workflow (CPU, no model; PoseCapture, GitHub). Any move you can write as a skeleton can drive any character, and PoseCapture's workflow 1 makes a skeleton track from a video of a person.

    • The sprite sheet step: make_sprite_sheet.py packs the cut-out frames of every move into one transparent sheet at one scale, boots on one ground line, with a JSON of the frame order, so a game can switch between walk and punch without the character jumping or changing size. The cop's three sheets are included.

    • Everything is exact: the workflows are the graphs that made the results, and every result was re-run from the download and compared pixel by pixel with the originals (max pixel difference 0, details in README.md in the zip). In v2.1 the PoseCapture nodes give exactly the v2.0 pose frames and padded stills (pixel-identical, re-run from the v2.1 zip on the CPU); the SCAIL renders were not re-run for v2.1.

    Example character: the cop. His front-view drawing is AI-generated as well (an image model made it from a prompt, it is not hand-drawn), so the whole chain from picture to sprite sheet is AI. Three moves are included: walk, right-hand short uppercut, right-hand heavy uppercut.

    Video walk through (five minutes, every step on screen):

    Why cylinders

    A flat skeleton has no front and no back. When two legs (or arms) overlap in a side view, the model has to guess which one is nearer, and it often guesses wrong: the far leg ends up in front, or the wrong arm throws the punch. A pose made of solid cylinders, rendered with a depth buffer, answers the question in the picture itself: the near limb covers the far limb.

    The six steps

    1. Motion reference to a DWPose skeleton. The walk was measured with DWPose from a reference video (the video itself is not included, only the skeleton). The two uppercuts were designed as skeletons in code, no video.

    2. The grey mannequin performs the move, to check the motion before any character exists.

    3. Reorient the character. Qwen-Image-Edit-2511 turns the front-view Cop.png into a side-view still (a guard stance for the uppercuts, a walking stance for the walk). The workflows have the exact seeds (guard 1006, walk 3002).

    4. Fit and cylinders, inside the SCAIL workflow (PoseCapture nodes): DWPose the character picture, refit the skeleton to the character's proportions, render z-buffered cylinders = the SCAIL pose video, and pad the side still onto the pose figure's box.

    5. SCAIL-Preview renders the cop: one workflow per move, Q8_0 GGUF, lightx2v step-distill LoRA, 8 steps, background cut out with BiRefNet.

    6. The sprite sheet. make_sprite_sheet.py puts every frame of a move into a fixed transparent cell (768 x 896, ground line at 860) at the move's scale and writes the sheet plus a JSON with cell size, fps, ground line and frame order. Same cell for all three moves.

    Proof: the limb-label check. A script draws R = near = orange and L = far = blue labels from the track on the mannequin and on the cop, frame by frame. Look at every frame; the labelled clips are attached.

    What you need

    • ComfyUI 0.37 and the custom nodes listed in MODELS.md (ComfyUI-GGUF, VideoHelperSuite, KJNodes, ComfyUI_BiRefNet_ll, comfyui_controlnet_aux, and PoseCapture: ComfyUI Manager, search "PoseCapture", or comfy node install PoseCapture).

    • Models (exact files, sizes and SHA-256 in MODELS.md): SCAIL-Preview Q8_0 GGUF, lightx2v I2V 480p step/CFG distill LoRA, umt5-xxl fp8, Wan 2.1 VAE bf16 (Kijai's file), CLIP vision H, BiRefNet. For the optional Qwen step: Qwen-Image-Edit-2511 bf16, its Lightning 4-step LoRA, Qwen2.5-VL 7B fp8 text encoder, Qwen-Image VAE.

    • Disk: about 27 GB for the SCAIL part, about 52 GB more for the Qwen part (optional: the two side stills are included).

    • Python 3.10+ with numpy and Pillow for the remaining scripts (limb labels, sprite sheets; no GPU).

    • Hardware I used: RTX 3080 10 GB, 62 GB RAM. SCAIL ran with ComfyUI started with --lowvram --fast-disk (peak about 10 GB), Qwen with --fast-disk. About 10 minutes per clip at 768x768, 8 steps. The Qwen bf16 model needs a lot of system RAM or --fast-disk; about 3-4 minutes per still.

    How to run it (reproduce the cop)

    1. Unzip. Copy everything inside inputs/ComfyUI_input/ into ComfyUI/input/ (flat names, so that ComfyUI/input/pss_cop_on_white.png exists; the current ComfyUI editor only lists files that sit directly in input/).

    2. Put the models in the ComfyUI folders named in MODELS.md (sub-folders scail/, wan/, qwen/ matter, the workflows refer to them by name).

    3. Load workflows/03a_scail_short_uppercut.json (or 03b walk, 03c heavy uppercut) and press Run. Seed and all settings are fixed. The graph renders the cylinder pose frames on the CPU first (under a minute), then SCAIL. Results land in ComfyUI/output/scail_cop/<move>/ (white-background frames, cut-out frames, an mp4), the pose frames, params and fitted track in its pose/ sub-folder.

    4. Compare with the videos on this page.

    Workflows in the zip: 01a/01b (Qwen side still, guard and walk), 03a/03b/03c (pose part + SCAIL: short uppercut, walk, heavy uppercut). Each has a Note node with its step-by-step.

    Your own character: make a front-view picture on plain white (768x1024), run 01a with your picture (say it plainly in the prompt: seen exactly from the side, facing right, empty bare fists, no weapon), copy the closest 03 workflow and change the character picture, the side still, the pad numbers (or the pad node's auto mode) and the costume sentence of the prompt, then run label_limbs.py and look at every frame. Your own move: make its skeleton track from a video with PoseCapture's workflow 1 and load it in the 03 workflow. The details are in the bundle's README.md.

    Usage notes

    • No trigger word and no character LoRA: the character comes from the reference image.

    • The prompts name the cop's costume. For another character, rewrite that sentence and give it its own negative prompt (the cop wears boots, so "barefoot" is in his negative).

    • For the Qwen side-view step say it plainly in the prompt: seen exactly from the side, facing right, empty bare fists, no weapon.

    Honest limits

    • Forearm smear on the fastest frames of the uppercuts (the arm moves several body widths between two frames).

    • Muddy boots where the two boots stack at the leg crossings.

    • The face sometimes shows a slight smile or gritted teeth instead of the closed mouth of the picture.

    • Late hands on the heavy uppercut: on the return to guard an open palm or an oversized fist appeared. Adding both hands always normal-sized small closed fists, never an open hand to the prompt and giant hand, huge fist, oversized hand, enlarged fist, hand bigger than the head to the negative (open hand, open palm, spread fingers were already in it) fixed it for this run ("prompt v2", used in workflow 03c).

    • On the heavy uppercut's back turn (frames 36-43) the far fist is hidden behind the turned torso: not an order error, just hidden.

    • The limb order held on every frame I checked (limb-label videos are attached), but I only checked these three moves.

    • Different GPU, driver or ComfyUI version can change the floating point results slightly: same seed, same motion and look, not the same bytes.

    Credits

    • SCAIL: Zai / Tsinghua authors (https://github.com/teal024/SCAIL-Official, weights https://huggingface.co/zai-org/SCAIL-Preview, arXiv 2512.05905). Q8_0 GGUF repack: vantagewithai. GGUF loader: city96.

    • Wan 2.1 (Wan-AI / Alibaba) with ComfyUI repackaging by Comfy-Org and Kijai; lightx2v step/CFG distillation LoRAs; Qwen-Image-Edit-2511 (Qwen team); BiRefNet (Zheng Peng et al., node by lldacing); DWPose (IDEA Research; conversions yzd-v, hr16; node pack Fannovel16); ComfyUI (comfyanonymous), VideoHelperSuite (Kosinkadink), KJNodes (Kijai).

    • Character: the cop (Cop.png) is an AI-generated drawing, made with an image model from a prompt, not hand-drawn. I made it for this workflow as the example character.

    • PoseCapture (the fit, cylinder and padding nodes): my node pack, https://github.com/Eloque/PoseCapture. Full list in CREDITS.md in the zip.

    Licences

    • SCAIL-Preview: MIT on the Hugging Face card; the code repository (SCAIL-Official) ships Apache-2.0. The Q8_0 GGUF repack: MIT.

    • Wan 2.1 base, umt5, CLIP vision, lightx2v LoRAs, Qwen-Image-Edit-2511 and its Lightning LoRA, Qwen2.5-VL encoder, DWPose models: Apache-2.0. BiRefNet: MIT.

    • Full table with links in LICENSES.md in the zip.

    • My own scripts (scripts/*.py): MIT (the zip carries the LICENSE file). My PoseCapture nodes: GPL-3.0.

    • The cop (Cop.png, the stills, frames, videos and sheets): an AI-generated picture I made for this workflow, free to use in your own projects, credit appreciated but not required.

    Attached files

    • Posed Sprite Sheet Generator V2.1.zip (about 61 MB, one zip, v2.1): the five workflows, the Python scripts (limb labels, sprite sheet, character centring), the inputs with flat names (the cop, the two side stills, the skeleton tracks), the reference pose frames, padded stills and fitted tracks that the pose nodes give for the cop, the example clips, the three sprite sheets with their JSON, README, MODELS (files, sizes, SHA-256), CREDITS, LICENSES.

      Posed Sprite Sheet Generator V2.zip (about 60 MB, one zip, v2.0): the six workflows, the Python scripts (fit, cylinder pose render, still padding, limb labels, sprite sheet), the inputs (the cop, the two side stills, the skeleton tracks, the ready-made cylinder pose frames for all three moves), the example clips, the three sprite sheets with their JSON, README, MODELS (files, sizes, SHA-256), CREDITS, LICENSES.

    • Videos: the three cop moves (walk, short uppercut, heavy uppercut), the limb-label proof clips (cop and mannequin). Images: the cover and the three sprite-sheet previews.

    Description

    First release. The cop with three moves: walk, right-hand short uppercut, right-hand heavy uppercut.

    In the zip: six workflows (two Qwen side-view stills, DWPose of the character, three SCAIL moves), the Python scripts (skeleton fit, cylinder pose render, still padding, limb labels, sprite sheet), the inputs (the cop, the two side stills, the skeleton tracks, the ready-made cylinder pose frames for all three moves), the example clips, the three sprite sheets with their JSON, README, MODELS (files, sizes, SHA-256), CREDITS, LICENSES.

    Attached: the three cop moves, the limb-label proof clips (cop and mannequin), the cover and the three sprite-sheet previews.

    Video walkthrough (five minutes, every step on screen): https://youtu.be/iD2Oxl6XVws

    Everything else (the six steps, what you need, how to run it, honest limits, credits, licences) is in the description.

    Workflows
    Wan Video 14B i2v 480p

    Details

    Downloads
    72
    Platform
    CivitAI
    Platform Status
    Available
    Created
    10/26/2026
    Updated
    11/8/2026
    Deleted
    -

    Files

    Posed Sprite Sheet Generator V2.zip

    Mirrors