Communitygithub.com

Video2DSprite (nur Grok Build)

Verwandle ein einzelnes 2D-Charakterbild mithilfe der nativen Videotools von Grok Build in dichte Animations-Sprites. Funktioniert über eine Pipeline von Text-zu-Bild, Bild-zu-Video, Frame-Extraktion und Chroma-Keying.

Was ist Video2DSprite (nur Grok Build)?

Dieses Skill ermöglicht es, aus einem Standbild eines 2D-Charakters flüssige Animations-Sprites zu erzeugen, die für Lauf-, Geh- oder andere Bewegungszyklen genutzt werden können. Es nutzt Grok Builds exklusive `imagine_image_to_video`-Funktion, um das Standbild in ein kurzes Video mit gleichmäßiger Bewegung zu verwandeln. Anschließend extrahiert ein Python-Skript die Einzelbilder, entfernt den magentafarbenen Hintergrund (Chroma-Key) und erstellt dichte Sprite-Streifen, Raster sowie GIF-Vorschauen. Das Skill ist ausschließlich für die Grok Build-Umgebung von xAI konzipiert, da nur dort die benötigten Bild-zu-Video-Tools verfügbar sind. Für andere Plattformen wie Codex oder Claude wird stattdessen das Schwester-Skill `generate2dsprite` empfohlen, das sauberere Pixelgrafiken liefert. Die Hauptvorteile liegen in den dichteren Zwischenposen, die weichere Animationen ermöglichen, allerdings auf Kosten von etwas weicheren Pixeln und möglichen Farbverschiebungen. Es eignet sich besonders für Experimente und Vorschauen, während für Produktions-Assets `generate2dsprite` die bevorzugte Wahl bleibt.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/AHMADALIPARR/skill-inventory/tree/HEAD/skills/sovereign/opengrok/video2dsprite

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Video2DSprite (nur Grok Build)?

Konvertieren Sie ein Basis-2D-Charakterbild in dichte Animations-Sprites mit den nativen Videotools von Grok Build.

App-Builder / Grok-Umgebung

ElementWert
Skill-Verzeichnis.grok/skills/video2dsprite/
Skriptepython3 .grok/skills/video2dsprite/scripts/video2dsprite.py …
Video-Toolsimagine_image_to_video – animiert eine Basis-file_path (Vorhandensein prüfen)
Prüfenread_file auf Standbildern/Frames; Pfade für Videos melden
Abhängigkeitenffmpeg + Pillow + numpy (im App-Builder-Image vorinstalliert)
Ausgabe-Verzeichnisassets/sprites/video2dsprite/<name>/ unter /workspace
StandardFür Produktions-Helden generate2dsprite bevorzugen; dies ist der Pfad für dichtere Bewegungen
Basis-Standbild → imagine_image_to_video (Bewegung an Ort und Stelle) → Frames extrahieren → Chroma-Key → Abtasten/Normalisieren → Streifen / Raster / GIF

Plattform-Prüfung (zuerst lesen)

LaufzeitumgebungUnterstützt?
Grok Build (xAI)Ja – benötigt einen Bildgenerator + ein Bild→Video-Tool
Codex / Claude / andere AgentsNein – ihnen fehlen die Grok-Video-Tools. Teilen Sie dem Benutzer mit, dass dieses Skill nur für Grok Build ist, und bieten Sie stattdessen $generate2dsprite an

Prüfen Sie auf die Fähigkeit, nicht auf den genauen Toolnamen. Die Bildgenerierung erscheint als imagine_text_to_image / imagine_image_to_image; Video als imagine_image_to_video oder (veraltet) generate_video. Verwenden Sie das Paar, das in Ihrer Tool-Liste vorhanden ist. Stoppen Sie und erklären Sie nur, wenn Sie überhaupt kein Bild→Video-Tool haben. Erfinden Sie keine Bewegung mit Code-gezeichneten Frames.

Dieses Skill ist ein optionaler Pfad für dichtere Bewegungen. Es ersetzt nicht $generate2dsprite:

Verwenden Sie $generate2dsprite, wenn…Verwenden Sie $video2dsprite, wenn…
Saubere Pixel-Blätter, feste Raster, identitätskritische HeldenDer Benutzer dichtere Zwischenposen / weichere Loops wünscht
Angriffs-/Zauber-Body-Sheets, Prop-Packs, Engine-AtlantenMit video-basierten Lauf-/Geh-/Idle-Bewegungen experimentieren
Produktionsstandard für die meisten Game-SpritesDer Benutzer explizit nach Video → Frames → Sprites fragt

Video macht Pixel weicher, treibt die Identität auseinander und hinterlässt Chroma-Fransen. Führen Sie immer eine Qualitätskontrolle durch; bevorzugen Sie für Produktionshelden $generate2dsprite, es sei denn, der Benutzer wünscht den Video-Look.

Parameter

Aus der Benutzeranfrage ableiten:

  • subject: Charakter-/Kreaturenbeschreibung oder Pfad zu einem vorhandenen Standbild
  • action: run | walk | idle | attack | benutzerdefinierte Bewegungsphrase
  • view: normalerweise side (Seitenansicht). topdown ist schwieriger – warnen und Kamera fixiert halten
  • duration: 6 (Standard) oder 10 Sekunden
  • frame_counts: welche dichteren Sätze exportiert werden sollen, Standard 8,16,24,48
  • cell_size: Ausgabe-Sprite-Zelle, Standard 128
  • anchor: feet (Standard für seitliche Fortbewegung) | center
  • bg: einfarbiges #FF00FF (für Chroma erforderlich)
  • name: Ausgabe-Slug
  • out_dir: Arbeitsordner (Standard ./sprites/video2dsprite/<name>/ oder projektrelativ)

Agentenregeln

  1. Nur Grok. Bei Nicht-Grok-Laufzeitumgebungen mit einer kurzen Erklärung + $generate2dsprite-Alternative ablehnen.
  2. Standbild → Video, niemals nur Text-zu-Video. Stufe Frame 1 als sauberes Standbild mit imagine_text_to_image (aus einem Prompt oder einer Referenz-file_path) ein. Rufen Sie dann imagine_image_to_video mit der file_path dieses Standbilds auf.
  3. Bewegung an Ort und Stelle. Prompt für Laufen/Gehen an Ort und Stelle, in eine feste Richtung blickend. Keine Kamerafahrt, kein Hintergrund-Scroll, keine Szenenänderung. Das Subjekt bleibt ungefähr zentriert.
  4. Einfarbiger magentafarbener Hintergrund auf dem Basisbild und im Video-Prompt beibehalten (#FF00FF / reines Magenta). Erforderlich für Flood-Fill-Chroma.
  5. Keine Kunst mit PIL/Canvas erfinden. Die Basiskunst stammt von imagine_text_to_image oder einem Benutzer-/lokalen Standbild. Skripte führen nur eine Nachbearbeitung durch.
  6. Keine experimentellen Ausgaben in das Spiel einbauen, es sei denn, der Benutzer bittet um Integration.
  7. Einen einzelnen Bewegungszyklus für das Spiel bevorzugen. Eine dichte Abtastung über einen vollständigen 6s-Multi-Zyklus-Clip ist für Vorschauen in Ordnung; für Engine-Blätter optional einen einzelnen Zyklus (12–16 Frames) nach visueller Qualitätskontrolle erneut abtasten.
  8. Absolute Pfade des Videos, der bereinigten Frames, der Streifen und der Vorschau-GIFs melden, wenn fertig.

Arbeitsablauf

1. Planen

Den kleinstmöglichen sinnvollen Durchlauf wählen:

  • Seitenansicht-Lauf/Geh-Loop → dieses Skill
  • Multi-Action-Helden-Kit → immer noch $generate2dsprite pro Aktion verwenden; Video nur für Fortbewegung verwenden, wenn gewünscht
  • FX / Projektil / Prop-Packs → $generate2dsprite, nicht Video

Erstellen:

<out_dir>/
  base/
  video/
  frames-raw/
  frames-clean/
  sprite/          # Standard-8-Frame-Set + dichter x16/x24/x48
  prompt-used.txt
  pipeline-meta.json
  README.txt

2. Das Basis-Standbild erstellen

Optionen:

  • A. Vorhandenes Sprite: Bild lesen, falls nötig auf einfarbigem #FF00FF zusammensetzen, dann diesen Sandbox-Pfad an imagine_image_to_image / imagine_image_to_video übergeben
  • B. Neuer Charakter: imagine_text_to_image mit einfarbigem magentafarbenem Hintergrund, ganzem Körper, Seitenansicht, zentriert
  • C. Referenz abgleichen: imagine_image_to_image mit der Referenz-file_path, verschieben auf Magenta und Identität bewahren

Basis-Anforderungen:

  • Ganzer Körper sichtbar, großzügiger Magenta-Rand
  • Seitenansicht für Laufen/Gehen (Profil oder 3/4-Seite), Füße im unteren Drittel
  • Gleicher Kunststil wie der Rest des Projekts, wenn eine Referenz vorhanden ist
  • Kein Text, UI, Wasserzeichen oder zweiter Charakter

Die zurückgegebene file_path kopieren und als <out_dir>/base/<name>-base.png speichern; die Basis-file_path für den Video-Aufruf behalten.

Den genauen Bild-Prompt in prompt-used.txt schreiben.

3. Mit imagine_image_to_video animieren

Grok imagine_image_to_video aufrufen:

  • Quellpfad: <Basis-Standbild file_path> (Sandbox-Pfad, der von T2I / I2I zurückgegeben wurde)
  • duration: 6 (Standard) oder 10
  • resolution_name: 480p, es sei denn der Benutzer wünscht 720p
  • prompt: eine kurze Präsens-Einstellung (siehe references/prompt-rules.md)

Zwingende Bewegungseinschränkungen im Prompt:

  • Subjekt läuft/geht an Ort und Stelle (Laufband-Stil)
  • Kamera fixiert – keine Schwenk-, Zoom- oder Orbitbewegungen
  • Hintergrund bleibt einfarbig magenta flach
  • Identität, Kostüm, Farbpalette für die gesamte Einstellung stabil
  • Nur eine einzelne durchgehende Aktion

Die zurückgegebene Video-file_path nach <out_dir>/video/<name>-<duration>s.mp4 kopieren.

Wenn Video-Tools nicht verfügbar sind, anhalten (Plattform-Prüfung).

4. Extraktion + Chroma + Abtastung (lokales Skript)

Den Prozessor ausführen (ffmpeg + Pillow + numpy):

python3 .grok/skills/video2dsprite/scripts/video2dsprite.py process \
  --video <out_dir>/video/<name>-6s.mp4 \
  --out-dir <out_dir> \
  --name <name> \
  --frame-counts 8,16,24,48 \
  --cell-size 128 \
  --body-height 100 \
  --foot-y 118 \
  --fps 0

Hinweise:

  • --fps 0 = jeden dekodierten Frame extrahieren (Quell-FPS verwenden)
  • Magenta-Flood-Fill von den Ecken + Entfärbung
  • Gleichmäßige Abtastung für jede Anzahl in --frame-counts
  • Fuß-normalisierte Zellen, horizontaler Streifen, Raster, Loop-GIF pro Anzahl

Optional: Nur dichtere Sätze aus vorhandenen bereinigten Frames erneut abtasten:

python3 .grok/skills/video2dsprite/scripts/video2dsprite.py sample \
  --clean-dir <out_dir>/frames-clean \
  --out-dir <out_dir> \
  --frame-counts 16,24,48 \
  --cell-size 128

5. Qualitätskontrolle

Visuell prüfen:

  • Vorschau-GIF schleift ohne große Sprünge
  • Magenta verschwunden (keine einfarbigen pinken Blöcke); Fransen akzeptabel oder neu keyen
  • Füße bleiben auf einer stabilen Grundlinie (kein Hüpfen durch schlechten Zuschnitt)
  • Identität einigermaßen stabil (Gesicht/Kleidung morphing nicht in jedem Frame)
  • Aktion erfolgt an Ort und Stelle (rutscht nicht aus dem Bild)
  • Für den Spieleinsatz: eine Anzahl wählen (oft 16 oder 24) oder einen echten Zyklus ausschneiden

Wenn die Identität stark abdriftet oder die Pixel zu weich sind, auf $generate2dsprite für Produktionsblätter zurückgreifen und das Video-Set nur als Bewegungsreferenz behalten.

6. Liefern

Nur Pfade melden (es sei denn, der Benutzer bittet um Einbindung in ein Spiel):

  • Video: video/*.mp4
  • Dichte Sprites: sprite/x16|x24|x48/
  • Streifen / Raster / GIFs: sprite/run-strip-N.png, run-grid-N.png, run-preview-N.gif
  • Meta: pipeline-meta.json

Keinen Spielcode ändern, es sei denn, es wird darum gebeten.

Standardwerte

  • Dauer: 6s
  • Aktion: seitlicher Lauf an Ort und Stelle, nach rechts blickend
  • Exportanzahlen: 8, 16, 24, 48
  • Zelle: 128², Körperhöhe ~100, Füße bei y≈118
  • Hintergrund: #FF00FF
  • Einzel-Asset imagine_image_to_video gegenüber Multi-Ref bevorzugen (falls nötig zuerst Multi-Ref mit imagine_text_to_image zusammensetzen)

Kompromisse (dem Benutzer einmal mitteilen)

Vorteile: dichtere Zwischenposen → fühlt sich oft weicher an als 4–8 diskrete Gen-Posen.
Nachteile: weichere Pixel, Identitätsdrift, Chroma-Fransen, Multi-Zyklus-6s-Clips sind kein einzelner perfekter Loop, schwerere Assets.
Faustregel: 8→16→24 bringt normalerweise mehr Glätte; 48 hat oft abnehmende Renditen; 145 Roh-Frames dienen der Abtastung, nicht alle für die Laufzeit.

Ressourcen

Beziehung zu anderen Skills

  • $generate2dsprite — primäre Blatt-Pipeline (Codex + Grok, wenn Bildgenerierung vorhanden ist)
  • $generate2dmap — Karten; hier nicht verwendet
  • $video2dsprite — Grok Build exklusiver Bewegungsverdichtungspfad
  • $game-asset-core / $game-animation-frames — Loop/Flip-Test/Bewegungsgesetze und engine-bereite Standardwerte; weiterhin die Skripte dieses Skills für die Sandbox-Ausführung verwenden (Magenta-Basis + Chroma), keinen frei wählbaren Hintergrundfarbe

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Verwandte Skills