Aktivierungsvertrag
Lade, wenn der Benutzer einen Cartoon-/Cel-Shading-3D-Erklärclip wünscht (flache Farben, schwarze Konturen, Objekte, die einfliegen, bewegte Kamera, große Untertitel), einen „Stupy Doo“-Stil reproduzieren möchte oder ein Diagramm in Blender aus Text animieren lassen will.
Harte Regeln
- Die Bilder niemals mit einem Bild-/Video-KI-Modell erzeugen. Der Look ist 3D-Geometrie + Freestyle-Konturen, gerendert von Blender.
- Blender-Binär:
~/.local/bin/blender(5.1.x, benutzerspezifische Installation). Immer headless ausführen mit-b -P. - Das Storyboard ist die einzige Quelle der Wahrheit:
storyboard.json(Schema inreferences/storyboard-schema.md). JSON bearbeiten, neu rendern. Niemals die.blend-Datei von Hand bearbeiten. - Vor dem Rendern des gesamten Videos immer einen Blick darauf werfen:
--stillsbei 3–5 Zeitpunkten rendern, ein Kontaktabzugsblatt erstellen, es lesen, Überlappungen / außerhalb der Kamera liegende Objekte korrigieren. - Untertitel und Audio sind Post-Processing (
mix.py,captions.py), niemals Blender-Textobjekte. - Soundeffekte landen auf Aktionszeitpunkten via
action:-Referenzen imaudio-Abschnitt. Niemals Sekunden von Hand eingeben, wenn eine Aktion existiert. - Erzählung auf Spanisch bleibt neutral. UI-/Untertiteltext folgt der Sprache des Benutzers.
- Clips kurz halten: 8–30 s pro Storyboard. Für längere Videos Clips mit ffmpeg concat verketten.
Entscheidungsgatter
| Bedarf | Aktion |
|---|---|
| Erzähltes Video | Zuerst Erzählung, dann Untertitel darauf getimt, dann animieren. Stimme via voice-video (tts.py) in audio.narration. |
| SFX / Musik | audio-Abschnitt: narration, music, sfx mit action:-Referenzen. Platzhalter in assets/sfx/, CC0-Quellen in dessen README. |
| Musik bereitgestellt | beats.py snap storyboard.json --music track.mp3 --write vor den Stillleben. |
| Schnelle Sichtprüfung | --preview --stills t1,t2,t3 (halbe Auflösung, 8 Samples). |
| Finaler Render | Kein --preview; Standard 1080x1920, 30 fps. |
| Objekt nicht in Voreinstellungen | Voreinstellungen: box, plane, cylinder, sphere, panel, panel_row, cable, device, car, charger, transformer, cloud, tree, pole. Sonst Primitive oder model (glb/obj). |
| Bild sieht billig aus | Ein Motiv pro Einstellung, Kamera 8–13 m, Baum/Pole/Wolke-Dressing, Kabel draw dann flow. Siehe references/style-notes.md. |
| Manueller Eingriff gewünscht | --blend hinzufügen, out/scene.blend in der Blender-Benutzeroberfläche öffnen. |
Ausführungsschritte
references/storyboard-schema.mdundreferences/style-notes.mdlesen.- Ein kleines
gen.pyschreiben, das<workdir>/storyboard.jsonerzeugt: Objekte auf einer Grundebene bei z=0, Einstellungen (jeweils ein Motiv), Aktionen, Untertitel,post,audio. - Stillleben:
~/.local/bin/blender -b -P ~/.claude/skills/toon-explainer/assets/build.py -- storyboard.json out --preview --stills 1,3,5. Mit Pillow ein Kontaktabzugsblatt erstellen und lesen. - Bildausschnitt und Timing im JSON korrigieren. Schritt 3 wiederholen, bis jede Einstellung klar lesbar ist.
- Vorschauvideo: Gleicher Befehl mit nur
--preview.out/raw.mp4mit ffprobe überprüfen (Dauer, fps). - Audio (falls
audiovorhanden):python3 ~/.claude/skills/toon-explainer/assets/mix.py storyboard.json out/mix.wav. Die Cue-Tabelle lesen. - Untertitel + Mux:
python3 ~/.claude/skills/toon-explainer/assets/captions.py storyboard.json out/raw.mp4 out/final.mp4 --audio out/mix.wav(oder--audio narration.wavohneaudio). - Final:
--previewentfernen, Schritte 5–7 erneut ausführen.out/final.mp4mitxdg-openöffnen.
Ausgabevertrag
Zurückgeben: Pfad des storyboard.json, Pfad des out/final.mp4, Dauer, Auflösung und eine Zeile pro Einstellung, die beschreibt, was auf dem Bildschirm zu sehen ist. Renderzeit melden. Alles auflisten, was noch nicht implementiert ist (Lippensynchronisation, Multi-Clip-Concat).
Referenzen
references/storyboard-schema.md— JSON-Schema, Voreinstellungen, Aktionen, Kamerakonventionen.references/style-notes.md— Referenz-Look, Blender-5-Fallen, was den billigen Look behoben hat, Sounddesign.references/external/— MIT-Kopien: EL4CTEOblender-stylized-npr, arjun988camera-cinematography.assets/toonlib.py— bpy-Bibliothek (Materialien, Voreinstellungen, Kamera, Animationen).assets/build.py— Storyboard → Blender-Render.assets/mix.py—audio-Abschnitt in eine WAV-Datei (geduckte Musik, SFX-Cues).assets/beats.py— Beat-Erkennung + Snap-Aktionszeiten.assets/sfx/— Platzhalter-SFX, CC0-Quellen.assets/captions.py— ffmpeg-Untertitel + Audio-Mux.assets/storyboard.example.json— Solar-Dachbeispiel, 9 s.