Was macht Feuerperformance-Video zu Sprites?
Du führst einen Künstler von einem Rohvideo zu Sprite-Sheets, die in einem Spiel abgespielt werden können. Der Künstler kennt seine Performance; du bedienst die Werkzeuge. Binde ihn an den beiden Punkten ein, an denen sein Auge wichtig ist (welche Moves und wo sie beginnen und enden) und erledige alles andere selbst.
Die Werkzeuge befinden sich im tools/-Ordner dieses Kits (zwei Ebenen über dieser Datei). Nenne ihn $KIT. Jedes Werkzeug wird in einem Projektverzeichnis ausgeführt, das du für diesen Künstler erstellst; Quellvideos werden referenziert, niemals kopiert.
Lies references/how-it-works.md einmal durch, bevor du beginnst. Es erklärt die drei Ideen, auf denen die gesamte Pipeline basiert: getrennte Körper- und Feuer-Ebenen, Belichtungsbehandlung und fußverankerte Normalisierung.
0. Einrichtung (einmal pro Rechner)
cd $KIT && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
Verwende eine native Python-Build für den Rechner (auf Apple Silicon installiert ein x86-Python stillschweigend ein altes, CPU-only PyTorch). ffmpeg und ffprobe müssen sich im PATH befinden. Eine GPU (Apple MPS oder CUDA) wird dringend empfohlen: Das Rendern dauert auf einem M2 Max etwa 3 s pro Ausgabebild. Modellgewichte werden bei der ersten Nutzung heruntergeladen.
Im Folgenden bedeutet py $KIT/.venv/bin/python und die Befehle werden aus dem Projektverzeichnis ausgeführt.
1. Nach dem richtigen Filmmaterial fragen
Bitte den Künstler um die Original-Kameradateien, nicht um eine bearbeitete oder für soziale Medien exportierte Version. Suche in dem Ordner, den er dir nennt: Ein 4K-, 10-Bit-, 50-fps-Original liegt oft neben einem 720p-Endschnitt, und alles Weitere wird davon besser. Frage auch, ob es Aufnahmen gibt, auf denen er läuft oder steht, bevor das Feuer angezündet wurde: Feuer-Routinen enthalten selten einen sauberen Gehzyklus, und Spiele brauchen einen.
mkdir -p ~/sprite-projects/NAME && cd ~/sprite-projects/NAME
py $KIT/tools/ingest.py main "/Pfad/zum/original.mov" # Wiederholen mit anderen Namen für andere Clips
Lies, was ingest ausgibt. Es misst den echten Schwarzpegel (Dateibereichs-Tags sind unzuverlässig) und warnt vor 8-Bit-Quellen, niedriger Auflösung und variabler Bildrate. Variable Bildrate muss zuerst behoben werden (erneut codieren auf konstante Bildrate), sonst driften die Bildnummern zwischen Proxy und Quelle.
2. Nutzbares Filmmaterial finden
py $KIT/tools/pose_pass.py main # langsam: etwa 15 Proxy-Bilder pro Sekunde
py $KIT/tools/find_segments.py main --strips # --performer skin hinzufügen, wenn eine bekleidete Menschenmenge im Bild ist
py $KIT/tools/find_bursts.py main # Feueratem, erkannt durch Helligkeit
find_segmentsbehält Läufe, bei denen der gesamte Körper im Bild und aufrecht ist. Erwarte, dass nur ein Bruchteil des Filmmaterials qualifiziert: Handkameras schneiden ständig Füße ab. Das ist normal; teile dem Künstler die Anzahl mit.- Sieh dir selbst ein paar
strips/*.jpgan. Wenn sie die falsche Person verfolgen, wechsle in den--performer-Modus. - Sieh dir
bursts/main.jpgan. Behalte nur echte Feueratem-Aktionen, dannpy $KIT/tools/catalog.py add-bursts main(und lösche alle falschen Einträge auscatalog/selected.json). Feueratem wird auf diese Weise gefunden, weil die posenbasierte Suche überbelichtete Bilder verwirft.
3. Die Moves katalogisieren (Subagenten verwenden)
py $KIT/tools/catalog.py batches 5
Gib jedes Batch einem Subagenten mit der Eingabeaufforderung in references/catalog-prompt.md (füge die Batch-Nummer ein und beschreibe den Künstler in einer Zeile, sodass die Prüfer die falsche Person ablehnen können). Sie lesen die Bildnummern-Filmstreifen und schreiben catalog/outK.json. Dies ist der Schritt, der am meisten von parallelen Agenten profitiert: Es ist reines Anschauen, und jedes Batch ist unabhängig. Dann:
py $KIT/tools/catalog.py select # Shortlist: Qualität >= 4, plus Walks/Turns/Spins/Strikes bei 3
py $KIT/tools/catalog.py list
Teile dem Künstler klar mit, was gefunden wurde und was nicht (zum Beispiel: "13 Idles, 8 Spins, aber nur einen echten Walk aus dem Clip, bevor das Feuer angezündet wurde").
4. Der Künstler trimmt und wählt aus
py $KIT/tools/make_trim.py # einen Kontextclip pro Move + trim.html
open trim.html
Die Bereiche der Prüfer sind bewusst knapp; echte Moves brauchen etwas Luft für das, was davor und danach kommt. In trim.html zieht der Künstler den Start- und Endpunkt jedes Moves über einige Sekunden des umgebenden Filmmaterials, markiert Behalten oder Verwerfen und kopiert die Liste aus dem Feld unten. Bitte ihn, sie dir zu schicken. Die Seite speichert ihren Zustand im Browser, sodass du sie nicht selbst auslesen kannst. Speichere den eingefügten Text in einer Datei und:
py $KIT/tools/catalog.py apply-trim kept.txt
5. Rendern, packen, überprüfen
py $KIT/tools/render_move.py --kept # langlaufend: im Hintergrund ausführen
py $KIT/tools/pack.py --kept
open review.html
Bevor du Bericht erstattest, sieh dir selbst mehrere moves/NAME/preview.jpg-Dateien an. Dinge, die du überprüfen und laut sagen solltest:
- eine andere Person, die in den Ausschnitt geraten ist (setze
"gate": truefür diesen Move incatalog/selected.json, wenn der Move kein Requisit hat, und rendere dann mit--forceneu); - feuerbeleuchtete Wand, die in der Feuer-Ebene erscheint;
- abgeschnittene Füße oder Kopf:
render_movegibt den Anteil jedes Bereichs an, in dem der gesamte Körper im Bild ist. Verlängerte Trimmbereiche laufen oft in Filmmaterial, in dem der Künstler das Bild verlässt.
review.html spielt jeden Move mit Hintergrund- und Ebenenumschaltung ab, einschließlich "body + additive fire glow", was die Zeichenweise im Spiel ist. atlas.json enthält das Bildraster, fps, Fußanker und Quellbereich pro Move.
6. Optional: 8-Bit-Look
Wenn der Künstler eine Retro-Version wünscht, verwende die fire-sprites-retro-Skill.
Ehrlichkeitsregeln für diese Arbeit
- Berichte über Anzahlen und Grenzen, nicht nur über Erfolge: Wie viele Sekunden waren nutzbar, welche Moves haben abgeschnittene Gliedmaßen, welche Feuer-Ebenen enthalten Wände.
- Das Filmmaterial setzt harte Grenzen. Eine Feuerwolke, die den Kamerabildausschnitt verlässt, hat eine gerade Kante; eine überbelichtete Flamme hat keine innere Textur, die wiederherstellbar ist. Sag es, anstatt eine Lösung zu versprechen.
- Veröffentliche niemals das Filmmaterial, den Namen oder die gerenderten Sprites des Künstlers. Die Ausgaben bleiben im Projektverzeichnis, es sei denn, der Künstler wünscht etwas anderes.
Siehe references/troubleshooting.md für in der Praxis aufgetretene Probleme und deren Lösungen.