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
| Element | Wert |
|---|---|
| Skill-Verzeichnis | .grok/skills/video2dsprite/ |
| Skripte | python3 .grok/skills/video2dsprite/scripts/video2dsprite.py … |
| Video-Tools | imagine_image_to_video – animiert eine Basis-file_path (Vorhandensein prüfen) |
| Prüfen | read_file auf Standbildern/Frames; Pfade für Videos melden |
| Abhängigkeiten | ffmpeg + Pillow + numpy (im App-Builder-Image vorinstalliert) |
| Ausgabe-Verzeichnis | assets/sprites/video2dsprite/<name>/ unter /workspace |
| Standard | Fü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)
| Laufzeitumgebung | Unterstützt? |
|---|---|
| Grok Build (xAI) | Ja – benötigt einen Bildgenerator + ein Bild→Video-Tool |
| Codex / Claude / andere Agents | Nein – 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 Helden | Der Benutzer dichtere Zwischenposen / weichere Loops wünscht |
| Angriffs-/Zauber-Body-Sheets, Prop-Packs, Engine-Atlanten | Mit video-basierten Lauf-/Geh-/Idle-Bewegungen experimentieren |
| Produktionsstandard für die meisten Game-Sprites | Der 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 Standbildaction:run|walk|idle|attack| benutzerdefinierte Bewegungsphraseview: normalerweiseside(Seitenansicht).topdownist schwieriger – warnen und Kamera fixiert haltenduration:6(Standard) oder10Sekundenframe_counts: welche dichteren Sätze exportiert werden sollen, Standard8,16,24,48cell_size: Ausgabe-Sprite-Zelle, Standard128anchor:feet(Standard für seitliche Fortbewegung) |centerbg: einfarbiges#FF00FF(für Chroma erforderlich)name: Ausgabe-Slugout_dir: Arbeitsordner (Standard./sprites/video2dsprite/<name>/oder projektrelativ)
Agentenregeln
- Nur Grok. Bei Nicht-Grok-Laufzeitumgebungen mit einer kurzen Erklärung +
$generate2dsprite-Alternative ablehnen. - 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 dannimagine_image_to_videomit derfile_pathdieses Standbilds auf. - 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.
- Einfarbiger magentafarbener Hintergrund auf dem Basisbild und im Video-Prompt beibehalten (
#FF00FF/ reines Magenta). Erforderlich für Flood-Fill-Chroma. - Keine Kunst mit PIL/Canvas erfinden. Die Basiskunst stammt von
imagine_text_to_imageoder einem Benutzer-/lokalen Standbild. Skripte führen nur eine Nachbearbeitung durch. - Keine experimentellen Ausgaben in das Spiel einbauen, es sei denn, der Benutzer bittet um Integration.
- 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.
- 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
$generate2dspritepro 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
#FF00FFzusammensetzen, dann diesen Sandbox-Pfad animagine_image_to_image/imagine_image_to_videoübergeben - B. Neuer Charakter:
imagine_text_to_imagemit einfarbigem magentafarbenem Hintergrund, ganzem Körper, Seitenansicht, zentriert - C. Referenz abgleichen:
imagine_image_to_imagemit 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) oder10resolution_name:480p, es sei denn der Benutzer wünscht720pprompt: 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_videogegenüber Multi-Ref bevorzugen (falls nötig zuerst Multi-Ref mitimagine_text_to_imagezusammensetzen)
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
- references/prompt-rules.md — Basis-Standbild + Video-Prompts
- references/pipeline.md — Ordnerstruktur, ffmpeg, Abtaststrategie
- scripts/video2dsprite.py — extrahieren, chroma, normalisieren, exportieren
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