Was macht animate?
Wandle Referenzen und eine grobe Idee in ein MP4 um, bei dem jedes Bild von Code gezeichnet wird und der Ton synthetisch ist. Der Benutzer bringt Geschmack; du übernimmst die Regie. Eine grobe Vorgabe reicht aus, also triff die kreativen Entscheidungen selbst und frage nur nach Dingen, die das gesamte Stück verändern würden.
Alles lebt in animations/<slug>/:
refs/ study/ style.md beats.md piece.html score.json out/<slug>.mp4
Füge bei Bedarf Hilfsskripte oder Notizen hinzu. examples/bee-dance/ in diesem Skill-Ordner ist ein kompletter durchgearbeiteter Film.
In den folgenden Befehlen bedeutet $SKILL den Ordner dieses Skills. Führe sie aus dem Projekt des Benutzers mit $SKILL/.venv/bin/python aus, falls vorhanden, sonst mit python3. Wenn ein Paket fehlt, siehe die Einrichtung in README.md. Sie benötigen ffmpeg und Chrome.
Wähle den Auftrag
| Der Benutzer möchte | Auftrag | Wie |
|---|---|---|
| "Dieses Bild animieren" | Das Kunstwerk bewegen | Schneide das Bild in Ebenen und bewege diese. Lese references/move-an-image.md. Überspringe Stufen 3-4 mit piece.html; das Rendering ist ein Python-Skript. |
| "Das malen", "diese Szene nachbilden" | Neu malen | Zeichne die gesamte Szene in piece.html und stimme sie genau mit der Referenz ab. |
| Ein Thema oder eine Geschichte "in diesem Stil" | Neuer Film | Vollständiger Prozess unten. Referenzen legen den Look fest; das Thema ist neu. |
Wenn sie keine Länge oder kein Format nennen, verwende 15 Sekunden bei 1080x1920 für einen Film und 5 Sekunden für ein bewegtes Bild.
Code ist stark bei Formen, Linien, Farbverläufen und Texturen: flache Vektorgrafik, Strichzeichnung, Papierschnitt, Risografie, Aquarell, Anime-Hintergründe, Pflanzentafeln. Er ist schwach bei Fotorealismus und bei agierenden Gesichtern. Wenn eine Referenz fotorealistisch ist, sage dies vor dem Bauen und schlage eine illustrierte Interpretation vor.
Stufe 1: Jede Referenz studieren
Der Benutzer kann dir viele Referenzen geben, also gib jeder eine Aufgabe, anstatt sie zu einem Einheitsbrei zu vermischen.
python3 $SKILL/scripts/study.py animations/<slug>/study <Dateien oder Ordner...>
Dies liefert dir, pro Referenz, ein Kontaktblatt, eine Palette und für Videos die Schnitte und die Pacing-Kurve. Wenn nur ein Teil eines Videos wichtig ist, füge seinen Bereich in Sekunden hinzu, wie in "reel.mp4@0-12", da sonst Sprechkopfaufnahmen die Ergebnisse verzerren. Dann sieh dir die Blätter selbst an und beschneide Bereiche, in denen Textur wichtig ist. Zahlen können dir nicht sagen, warum etwas gut aussieht.
Schreibe style.md:
- Was jede Referenz uns gibt, eine Zeile pro Referenz: Textur von dieser, Typ von jener, Pacing von einer anderen.
- Was wir nicht kopieren werden: Posen, Charaktere, Logos, Signaturen, exakte Kompositionen. Nimm den Stil, nicht das Werk; die Ausnahme ist ein Neu malen- oder Bewegen-Auftrag für ein Bild, das der Benutzer animieren ließ.
- Palette als Hex-Werte, Schriftart (
assets/fonts/enthält zwei zum Start, oder kopiere eine beliebige offene Schriftart), Textur, Bewegungsgefühl. - Ein Element, das das Stück zusammenhält: eine Linse, eine Welle, eine Linie, die nie reißt. Filme ohne eines wirken wie eine Diashow.
Füge für jede neue Referenz eine kurze Karte zu animations/library.md hinzu, damit ihre Lektionen dieses Projekt überdauern. Wiederverwende Karten, wenn der Benutzer auf einen bereits verwendeten Stil zeigt, und erweitere eine nur, wenn du etwas Neues gelernt hast.
Tor: Du kannst in einem Satz sagen, wie dieses Stück aussieht und warum das dem Thema dient.
Stufe 2: Beats
Wenn es Fakten in dem Stück gibt, überprüfe sie zuerst. Eine falsche Behauptung, die wunderschön gezeichnet ist, bleibt falsch, und populäre "Fakten" sind oft vage. Notiere alles, was du für den endgültigen Bericht abgemildert hast.
Schreibe beats.md als eine Tabelle. Bild und Ton werden gemeinsam geplant, denn dieser Sync ist es, der es teuer aussehen lässt:
| Zeit | Bild | Ton |
|---|---|---|
| 0-1,5 s | Ein orangefarbener Tropfen fällt und breitet sich aus | Tropfen, nasses Aufblühen, Pad setzt ein |
| 1,5-3 s | Titelzeile, Details erscheinen | Zupfen pro Wort, winzige Ticks |
Tor: In der ersten halben Sekunde bewegt sich etwas; die Form ist Aufhänger, Aufbau, ein Atemzug, Höhepunkt; keine Strecke über 2 Sekunden ohne eine neue Bildidee; das Ende hält etwa 1,5 Sekunden, damit es gelesen werden kann. Lasse das Bild die neuen Ideen tragen, nicht die Worte: jede Bildunterschrift benötigt etwa 1,5 Sekunden auf dem Bildschirm, also schneide Bildunterschriften, bevor du sie kürzt. Halte Text von den oberen 12 % und unteren 18 % eines vertikalen Bildrahmens fern.
Stufe 3: Das Bild bauen
Kopiere assets/piece-template.html nach piece.html und zeichne darin. Der Vertrag ist window.PIECE plus window.renderFrame(t).
renderFrame(t) darf nur von t abhängen und kann asynchron sein. Standbilder springen direkt zu jeder Zeit, also alles, was zwischen Bildern erinnert wird, oder jeder ungesäte Math.random()-Aufruf bricht sie. Male teure statische Schichten einmal innerhalb von window.ready mit einem gesäten Generator und setze sie dann pro Bild zusammen.
Um einen anderen Film innerhalb eines Stücks zu zeigen, extrahiere seine Bilder in clips/ als nummerierte JPEGs, lade das benötigte mit einem Image in einem asynchronen renderFrame und zeichne es auf die Leinwand.
Lese references/styles.md vor dem Zeichnen; es enthält funktionierende Rezepte (Himmelswolken, Laub, gehende Figuren, Wasser, Aquarell, Papier) und die Quelldateien zum Kopieren. Tiefe entsteht durch Schichten, die sich mit unterschiedlichen Geschwindigkeiten bewegen, Leben durch kleine sekundäre Bewegungen: Schwanken, Driften, Schimmern, Flackern.
Überprüfe Standbilder früh und oft, lange vor einem vollständigen Render:
python3 $SKILL/scripts/render.py animations/<slug>/piece.html --stills 0.5 3 7 12
Betrachte sie in voller Größe, vergleiche sie Seite an Seite mit den Referenzen und behebe, was nicht stimmt. Erwarte mehrere Runden. Das erste Standbild ist normalerweise ein grober Entwurf, und dieser Kreislauf ist der Ort, an dem die Qualität entsteht.
python3 $SKILL/scripts/compare.py animations/<slug>/out/compare.jpg <Standbilder und Referenzbilder...>
Tor: Ein Standbild aus der Mitte sieht aus, als wäre es mit denselben Materialien wie die Referenzen gemacht: gleiches Papier, Farbe, Linie und Farbe. Das Motiv kann neu sein. Clip-Art-Versionen der Referenz bestehen nicht.
Stufe 4: Ton
Schreibe score.json für dieselben Zeiten wie beats.md. Siehe den Header von scripts/synth.py für die verfügbaren Klänge: Zupfer, Glocken, Pads, Tropfen, Ticks, Schwellungen, Wuschs, Einschläge, Kicks und Rauschbetten.
python3 $SKILL/scripts/synth.py animations/<slug>/score.json animations/<slug>/out/score.wav
Bleibe in einer Tonart. Setze die Treffer auf Bildeffekte, nicht auf ein Raster. Lasse vor dem Höhepunkt echte Stille, denn der Kontrast ist es, der ihn wirken lässt. Generiere lange Notenläufe mit ein paar Zeilen Python, anstatt sie auszutippen.
Du kannst es nicht hören, also lese den Pegelbericht, den synth.py ausgibt: suche nach Abfällen, die du nicht geplant hast, und danach, ob der charakteristische Klang unter dem Rest vergraben ist.
Wenn das Stück erzählt wird
Die Erzählung kommt vor dem Bild, denn die Wortzeiten setzen jeden Beat. Nimm sie mit einem beliebigen Sprachwerkzeug auf, das der Benutzer hat, transkribiere sie mit Wortzeiten (faster-whisper funktioniert), und erstelle dann die Beats und Bildunterschriften aus diesen Zeiten. Whisper kann ein Wort früh in der Stille davor beginnen, also überprüfe die Wellenform, bevor du eine Pause einfügst.
Mische die Stimme über die Partitur, und rendere dann mit dem Ergebnis als --audio. Die Partitur duckt sich unter der Stimme, sodass die Musik in den Pausen ansteigt:
python3 $SKILL/scripts/mix.py animations/<slug>/out/voice.wav animations/<slug>/out/score.wav animations/<slug>/out/mix.wav
Stufe 5: Rendern, prüfen, korrigieren
python3 $SKILL/scripts/render.py animations/<slug>/piece.html --audio animations/<slug>/out/score.wav
python3 $SKILL/scripts/qc.py animations/<slug>/out/<slug>.mp4
render.py schreibt out/<slug>.mp4, gemastert auf -14 LUFS. Es gibt den Fortschritt aus und benötigt etwa 1-2 Minuten für 15 Sekunden eines typischen Stücks; führe es im Hintergrund aus, wenn ein Stück schwer ist. Nach einer nur auf den Ton bezogenen Änderung füge --remux hinzu, um die Audiospur in Sekunden ohne Neuzeichnen auszutauschen.
qc.py markiert tote Strecken, Einzelbild-Ruckler und Lautstärke und schreibt ein Kontaktblatt. Es kann nicht beurteilen, ob Bewegung gut aussieht, also lies das Blatt ebenfalls, gehe dann Bild für Bild durch die riskanten Momente in Nahaufnahmen: Übergänge, Texte ein- und ausblenden, wo Schichten sich überlappen, und einen vollständigen Zyklus jeder wiederholten Bewegung. Korrigiere und rendere neu, bis es sauber ist.
Übergabe
Berichte in der einfachen Sprache des Benutzers: was du gemacht hast, wie jede Referenz verwendet wurde, was du geprüft hast und was du nicht prüfen konntest. Du kannst die Partitur nicht hören oder sie in voller Geschwindigkeit ansehen, also sage das. Füge hinzu:
- Eine Tatsache, die man wissen sollte, wenn du eine Behauptung abgemildert hast.
- Einfache Anpassungen: 3 oder 4 spezifische Änderungen, die sie als nächstes verlangen könnten.
- Ob eine Referenz jemand anderem gehört und vor kommerzieller Nutzung durchdacht werden muss.