Communitygithub.com

Blender-3D-Kurzfilm

Erstelle einen realistischen 3D-Erklärfilm (30-60 s, vertikal 1080x1920) in echtem Blender: eine realistische menschliche Figur vor einem flachen Hintergrund, mit einer Kamerafahrt, die in den Körper eintaucht. Fragt zuerst nach der Stimme (ElevenLabs, Klon der eigenen Stimme, eigene Aufnahme oder nur Untertitel), dem Aussehen, der Hauptfigur (eigene rigged Datei, eine in Blender erstellte, ein kostenloser Download oder keine), der Rendering-Engine und der Länge. Misst Referenzvideos Frame für Frame, schreibt ein überprüftes Original-Skript und baut die Szene.

Was ist Blender-3D-Kurzfilm?

Dieses Skill ermöglicht es einem KI-Agenten, vollständig in Blender (Version 5.x) realistische 3D-Erklärfilme im vertikalen Format (1080x1920, 30 fps) zu erstellen – ohne den Einsatz von KI-Bild- oder Videomodellen. Jeder Frame wird echt in Blender gerendert. Das Skill führt den Agenten Schritt für Schritt durch den gesamten Workflow: von der Themenfindung über das Schreiben eines faktengeprüften Skripts und die Vermessung von Referenzvideos bis hin zum Aufbau der Szene, der Sprachsynthese (über ElevenLabs oder eigene Aufnahmen) und dem finalen Export als MP4. Unterstützt werden mehrere Rendering-Engines (EEVEE für Geschwindigkeit, Cycles für Realismus), wobei der Benutzer zwischen verschiedenen Qualitätsstufen wählen kann. Besondere Merkmale sind die Integration von Echtzeit-Kameraanimationen, die Verwaltung von Charakteren (eigene Riggs, MPFB-Erstellung oder Downloads) und ein spezielles Bewertungssystem, das die Render-Ergebnisse auf Realismus prüft, bevor sie dem Benutzer gezeigt werden. Plattformen: primär für Claude Code (oder ähnliche Terminalschnittstellen) durch die Nutzung von Shell- und Blender-Skripten. Das Skill enthält umfangreiche Python- und Blender-Skripte für alle Arbeitsschritte.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/EssouliAnas/blender-3d-short/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Realistischer 3D-Kurzfilm (Blender + Python)

Jeder Frame ist ein echter Blender-Render einer Szene, die Claude in Python erstellt. Kein KI-Bild- oder Videomodell. Endausgabe: 1080x1920, 30 fps, H.264, begrenzt auf 30 Mbps. Pfade: <skill> = dieser Ordner. Episoden leben in <project>/blender-shorts/<slug>/, heruntergeladene Assets in <project>/blender-shorts/assets/, Kanaleinstellungen in <project>/blender-shorts/brand.json. Skripte ausführen mit python <skill>/scripts/<name>.py.

Zuerst lesen: references/style.md (die Regeln), references/traps.md (bevor irgendeine Lösung erfunden wird).

Einrichtung (einmal pro PC)

  • Blender 5.x (wird automatisch unter „Programme“ gefunden; sonst BLENDER=<pfad-zu-blender.exe> setzen).
  • python -m pip install numpy opencv-python-headless pillow; ffmpeg im PATH.
  • Pipeline testen: Kopiere examples/test-cell/ nach blender-shorts/test-cell/, dann build, still, frames, finish. Auf einem RTX 3080 Laptop rendert EEVEE schnell seine 90 Frames mit 1080x1920 in etwa 2 Minuten.

Schritt 0: Auftaktfragen (immer vor der Arbeit)

Stelle die Fragen mit dem AskUserQuestion-Tool in zwei Runden mit bis zu vier Fragen, dann eine dritte Runde, die von der Antwort zur Stimme abhängt. Wenn blender-shorts/brand.json existiert, frage zuerst eine Frage: „Dieselben Einstellungen wie beim letzten Mal?“ (zeige sie in einer Zeile) mit „Ja“ / „Etwas ändern“. Bei „Ja“ springe zu den themenspezifischen Teilen von Runde 3. Empfohlene Option zuerst. Speichere jede Antwort in brand.json (kanalweit) und im Episoden-episode.json.

Runde 1: Worum es geht und wie es spricht

  1. Thema: „Schlage mir 3 vor“ / „Ich habe eines“ (sie geben es unter „Sonstiges“ ein). Vorschläge: Fragen zum Körper oder zur Funktionsweise, die bildhaft sind, auf YouTube auf Originalität des Winkels geprüft.
  2. Stimme:
    • ElevenLabs-Stimme (empfohlen): eine Standardstimme, aus dem Skript mit exakten Wortzeitangaben generiert.
    • Meine Stimme klonen (ElevenLabs): Sie laden 1-3 Minuten saubere Sprache einmal hoch; jede Episode spricht dann in ihrer Stimme. Nur ihre eigene Stimme oder eine, für die sie eine schriftliche Einwilligung haben.
    • Ich nehme es selbst auf: Sie nehmen das Skript auf; Claude bereinigt es, findet die Wortzeitangaben und baut das Bild dazu.
    • Keine Stimme, nur Untertitel: Das Skript wird mit einer gleichmäßigen Geschwindigkeit von 2,8 Wörtern/s getaktet, Untertitel werden eingebrannt und eine captions.srt ermöglicht es ihnen, später in ihrem Editor eine Stimme mit genau diesem Timing aufzunehmen oder hinzuzufügen.
  3. Länge: 30 s (für den ersten empfohlen) / 45 s / 60 s. Bei 2,8 Wörtern/s sind das ~80 / 120 / 165 Wörter.
  4. Referenzvideos: „Nein, nutze die integrierten Stilregeln“ (empfohlen) / „Ja, ich gebe Dateien oder Links“ (werden mit measure.py vermessen, nur für private Studien).

Runde 2: Das Aussehen

  1. Look: Studio-Hintergrund (empfohlen: eine Signaturfarbe hinter allem, der Look des Genres) / Echte Foto-Hintergrundplatten (Stadion, Straße, Himmel hinter dem 3D) / Mix (Hintergrund mit echten Orten für „Wo“-Schläge).
  2. Hintergrundfarbe (überspringen, wenn kein Hintergrund verwendet wird): Pfirsich #F2D7C9 (bisher unser) / Mint #CFE8DF / Tiefes Navy #1F2A44 / Benutzerdefiniert (hex). Niemals die Farbe des Referenzkanals.
  3. Hauptfigur: „Gibt es eine Hauptfigur?“ (references/characters.md)
    • Ich stelle eine rigged Figur zur Verfügung: ihre .blend / .fbx / .glb-Datei (Mixamo, Character Creator, ein Shop).
    • Erstelle eine für mich (empfohlen, falls sie keine haben): in Blender mit MPFB erstellt, keine Konten, unser Logo auf dem Shirt.
    • Lade eine kostenlose rigged Figur herunter: Claude schlägt 2-3 Kandidaten vor (Quelle, Lizenz, Aussehen); auf Seiten, die ein Konto benötigen (Mixamo, Renderpeople, Sketchfab) lädt der Benutzer sie herunter und gibt den Pfad an.
    • Keine Figur: nur Objekte, Körperteile und Orte. Sobald eine Hauptfigur existiert (assets/host/host.blend), wird diese Frage zu „ erneut verwenden?“.
  4. Render-Engine:
    • Auto (empfohlen): EEVEE schnell überall, Cycles schnell nur für Aufnahmen, die beim Richter bei Haut-Nahaufnahmen, Wolken, Glas oder Haaren durchfallen.
    • Nur EEVEE schnell: die schnellste, ~1 s pro Frame.
    • Nur Cycles schnell: etwa 2x langsamer, weicheres und natürlicheres Licht.
    • Hohe Qualität: die high-Voreinstellungen, etwa 2-3x langsamer als schnell.

Runde 3: hängt von der Antwort zur Stimme ab

  • ElevenLabs oder Klon: der Schlüssel. Prüfe auf ELEVENLABS_API_KEY= in einer .env im Projekt oder darüber (niemals ausgeben). Falls vorhanden, sage „Deinen ElevenLabs-Schlüssel gefunden“ und frage nicht. Falls nicht, frage: „Füge deinen Schlüssel hinzu: füge ihn hier ein und ich speichere ihn in .env, oder füge die Zeile ELEVENLABS_API_KEY=... selbst in .env ein (hält ihn aus dem Chat heraus)“. Speichere einen eingefügten Schlüssel nur in <project>/.env, gib ihn niemals aus, lege ihn in keine andere Datei, keinen Commit und kein Log.
  • ElevenLabs: Stimme: Ruhiger Erzähler (Standard-ID in sound.py) / „Wähle aus meiner ElevenLabs-Bibliothek“ (liste mit GET /v1/voices, zeige nur Namen) / Stimm-ID (sie geben sie ein). Stimm-Modell: eleven_multilingual_v2 (empfohlen: stabil, beste Wortzeitangaben) / eleven_v3 (ausdrucksstärker, weniger vorhersagbar).
  • Klon: Frage nach den Beispieldateien (Pfade), dann sound.py <ep> clone <dateien> --name „<ihr name> Stimme“; die Stimm-ID wird gespeichert und von jeder späteren Episode wiederverwendet.
  • Eigene Aufnahme: Sage ihnen, sie sollen warten, bis das Skript genehmigt ist, dann nehmen sie es in einem Durchgang auf, Telefon auf Armlänge, ruhiger Raum, und geben den Dateipfad an. (Die Aufnahme zum genehmigten Skript hält Bild und Stimme synchron.)
  • Hauptfigur, je nach Antwort von Runde 2:
    • Bereitstellen: Frage nach dem Dateipfad (und dem Texturordner, falls getrennt).
    • Erstellen: Frage nach Altersbereich, Statur sowie Haar- und Kleidungsstil (einfache Wörter); dann frage nach der Installation von MPFB.
    • Herunterladen: Zeige die 2-3 Kandidaten als Optionen (Name, Aussehen, Lizenz, benötigtes Konto) und lass sie wählen.
  • Jede Stimmenoption: Untertitel eingebrannt? Ja / Nein (ohne Stimme gibt es immer Untertitel).
  • Jede Option: Musik: Keine, nur Effekte und Raumton (für den ersten empfohlen) / Eigener Track (Dateipfad, sie bestätigen, dass sie die Rechte haben) / YouTube Audio Library Track (sie laden ihn herunter und geben den Pfad).

Frage nichts anderes; alles unten hat einen Standardwert. „Spezifische Modell“-Fragen: Es gibt kein KI-Bild- oder Videomodell in dieser Pipeline. Die Entscheidungen, die wie eines wirken, sind die Render-Engine (Runde 2), das ElevenLabs-Stimm-Modell (Runde 3) und das Claude-Modell, das das Skill ausführt: Opus mit hohem Aufwand funktioniert am besten.

Engine-Voreinstellungen (die gewählten Einstellungen des Benutzers, behalte sie bei)

  • EEVEE schnell (Standard, b3d.EEVEE_PRESETS['fast']): 16 Samples, Raytracing und GI mit halber Auflösung, 1 Schattenstrahl. ~0,9-1,2 s pro Frame bei 1080p auf der 3080, 99-99,9 % ähnlich zu high.
  • Cycles schnell (b3d.CYCLES_PRESETS['fast']): 32 Samples, 1 s Zeitlimit, OptiX-Denoiser, 2-3 Bounces, Fast GI Approximation, Persistente Daten. ~1,7 s pro Frame. Falls der Denoiser-Schmierer bei einer Nahaufnahme sichtbar wird, gib dieser Aufnahme ein Limit von 2 s.
  • --quality draft | fast | high zur Renderzeit, kein Neubau. Engine pro Szene: setup_render(engine=...), oder B3D_ENGINE=CYCLES python render.py <ep> build zum Vergleichen ohne Bearbeitung. Gemischte Engines in einem Kurzfilm sind in Ordnung (rendere den Frame-Bereich jeder Aufnahme aus ihrer eigenen .blend-Datei), wenn Hintergrund und Abstimmung übereinstimmen.

Pipeline (nach jedem Schritt speichern; zeige dem Benutzer Standbilder, keine Textwände)

  1. Thema und Fakten. Arbeite jede Zahl aus und schreibe sie mit ihrer Quelle in episode.json unter science. Wackelige berühmte Zahlen erhalten den Zusatz „Wissenschaftler schätzen“. Dasselbe Thema wie ein großer Kanal ist in Ordnung, deren Worte sind es nicht.
  2. Referenz vermessen (nur wenn Runde 1 mit Ja geantwortet hat): measure.py <ordner> --out <ep>/reference.json. Ansonsten die Standardwerte in style.md.
  3. Skript in episode.json (examples/episode.template.json): zweite Person, ~2,8 Wörter/s, die gewählte Länge, die Schlagform in style.md. Zeige es und warte auf ein OK. Nach dem OK „mach es einfach“ bis zu den Standbildern.
  4. Stimme und Timing, je nach Antwort von Runde 1:
    • ElevenLabs / Klon: sound.py <ep> voice -> audio/voice.wav, words.json, captions.srt.
    • Eigene Aufnahme: Warte auf ihre Datei, dann sound.py <ep> own <datei> (Wortzeiten: faster-whisper falls installiert, sonst ElevenLabs Speech-to-Text, falls ein Schlüssel vorhanden ist, sonst aus Stille geschätzt; biete pip install faster-whisper an, falls die Schätzung abweicht).
    • Keine Stimme: sound.py <ep> captions -> words.json + captions.srt mit „wps“ (2,8). Dann schreibe shots.md: pro Schlag der Frame-Bereich (aus den Wortzeiten), die Kamerabewegung (Einfahrt / Halten+schleichen / Ausfahrt / Durchflug) und was sich während jedes Haltens bewegt. Maximal ein harter Schnitt pro ~7 Übergängen.
  5. Zuerst der 9-Sekunden-Test. Ein Schlag mit der gesamten Pipeline vor dem gesamten Kurzfilm: scene.py mit b3d-Helfern. Rendern, fertigstellen, measure.py und compare.py reference.json ours.json, falls es eine Referenz gibt. Die Differenz ist die To-Do-Liste. Korrigiere die Kamera, bis Ruckeln und seitliches Abweichen übereinstimmen (eine Achse, erleichterte Keyframes).
  6. Welt und Figur. Figur zuerst, gemäß ihrem Pfad in references/characters.md, immer über b3d.import_character(pfad, höhe=1.75): Es skaliert sie auf echte Größe mit den Füßen auf dem Boden, entfernt fremde Kameras und Lichter, bindet gewichtete Teile an das Rig und gibt einen Bericht aus (Rig-Typ, Teile, die dem Rig nicht folgen, Gesichtsformen x/52, fehlende Texturen). Behebe jeden Punkt des Berichts, dann ein Dreh-Standbild, dann speichere assets/host/host.blend. Welt aus references/assets.md (Downloads auflisten, Quelle + Lizenz + Größe, einmal fragen). Regel: Wenn es eine echte gibt, lade sie herunter, modelliere sie nie.
  7. Standbilder und der Richter. render.py <ep> still <frames...> --pct 50 für jeden Schlag. Erzeuge dann einen separaten Agenten (Agent-Tool) mit den Standbildern und references/realism.md; er bewertet mit einer Punktzahl von 10 und nennt die drei schlechtesten Durchschauer. Korrigieren, neu rendern, neu bewerten. Rendere nur bei 8,5+. Zeige dem Benutzer die Standbilder und die Punktzahl. Bei „Auto“ -Engine wechselt eine Aufnahme, die an einer EEVEE-Abkürzung scheitert, hier zu Cycles schnell.
  8. Rendern. Führe render.py <ep> frames im Terminal-Bereich des Benutzers aus (run_in_terminal), damit sie die Live-Anzeige sehen (Frames erledigt, s pro Frame, ETA); lese <ep>/progress.json, um „Wie weit ist es?“ zu beantworten. Fortsetzbar. Dann render.py <ep> times; falls zu langsam, arbeite dich bei den langsamsten Frames durch references/render-speed.md.
  9. Ton. beds (ein Raumton pro Welt) und sfx (jeweils auf ihrem Wort: „Knochenklopfen“ auf „Knochen“) in episode.json, dann sound.py <ep> sfx (benötigt einen Schlüssel; ohne diesen überspringe Effekte oder verwende Dateien, die der Benutzer in audio/sfx/<name>.mp3 bereitstellt) und sound.py <ep> mix. Mischregel: Musik +3 dB, Effekte bei der Hälfte, Stimme unverändert.
  10. Fertigstellen. finish.py <ep> --audio <ep>/audio/mix.wav [--captions] -> out/<slug>-final.mp4. Betrachte es in Telefongröße. Bei Episoden ohne Stimme: übergebe auch captions.srt und sage, dass die Stimme zu diesen Zeiten eingefügt wird.
  11. Bericht: der endgültige Pfad, die letzte Punktzahl des Richters, Render-Minuten, ElevenLabs-Guthaben (costs.json) und der Quellenangabentext für die Beschreibung (Assets.md-Lizenzen). Gib niemals an, dass der Referenzkanal ein bestimmtes Tool verwendet.

Skripte

SkriptLäuft inTut
b3d.pyBlenderRender-Setup + Voreinstellungen (EEVEE/Cycles, GPU, Look), Hintergrund + HDRI, Schattenfänger (echt bei Cycles, vorgetäuscht bei EEVEE), Lichter, eindimensionale erleichterte Dolly-Kamera, Materialien, import_character (jedes geriggte .blend/.fbx/.glb, skaliert, gebunden, berichtet), parent_to_bone, Shape Keys, Compositor, Stoppuhr
render.pyShellbuild, still, frames (Live-Fortschrittsbalken, progress.json, fortsetzbar), times; --quality
sound.pyShellvoice (ElevenLabs), clone (Klon), own (Benutzeraufnahme), captions (keine Stimme), sfx (Effekte), mix (Mischung); jeder Stimmenmodus schreibt captions.srt
finish.pyShellFrames + Mischung -> 1080x1920 mp4, Echtkamera-Ebene, --captions Einbrennen
measure.py / compare.pyShellFrame-genaue Metriken jedes Videos; Referenz vs. unsere mit einer TO-DO-Liste

scene.py wird aufgerufen als blender -b --factory-startup --python scene.py -- <skill>/scripts <ep>/scene.blend; beginne mit examples/test-cell/scene.py (rufe shadow_catcher nach den Lichtern auf).

Verwandte Skills