Communitygithub.com

Blender-Produktvideo

Erstelle einen stummen, textgeführten Produktfilm, bei dem ein fotorealistisches Blender-Set eine visuelle Metapher trägt und ein 2D-Blockgitter am Ende die Überschrift und den Call-to-Action buchstabiert.

Was ist Blender-Produktvideo?

Dieses Skill definiert eine vollständige Pipeline zur Erstellung eines 45-75-sekündigen Produktfilms, der ohne Ton funktioniert. Es nutzt ausschließlich Code (Blender bpy, Python und ffmpeg), ohne GUI. Das Set – bestehend aus Gras, einem Holztor und einem echten Himmel – trägt eine visuelle Metapher, während kurze Texteinblendungen das Gesagte ergänzen. Der Film endet mit einem flachen Gitter farbiger Blöcke, die die Überschrift und den Call-to-Action buchstabieren. Die Pipeline unterstützt CPU-Rendering durch einen Zweipass-Ansatz (Platten und Schichten), Schleifen für sich wiederholende Bewegungen und Fortsetzen nach Abstürzen. Sie ist ideal für Launch-Videos, Produkterklärer oder kurze Markenfilme, wenn keine GPU verfügbar ist.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ameliawampler/blender-product-video/tree/HEAD

In Ihrer bevorzugten KI fragen

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

Dokumentation

Was macht Blender-Produktvideo?

Eine Methode und ein funktionierendes Beispiel für einen 45-75-sekündigen Produktfilm, der auch ohne Ton verständlich ist. Ein fotorealistisches Set (Gras, ein Holztor, ein echter Himmel) trägt eine visuelle Metapher. Kurze Texteinblendungen sagen, was die Bilder nicht zeigen können. Der Film endet, indem er sich in ein flaches Gitter farbiger Blöcke verwandelt, die umklappen und die Überschrift sowie den Call-to-Action buchstabieren.

Alles ist Code: das Set, die Animation, die Compositing. Nichts wird in einer GUI geöffnet.

Was in diesem Ordner ist

PfadBeschreibung
film.jsonFarbpalette, Einblendungstexte mit Zeitangaben, Endzeilen. Bearbeite dies zuerst.
scripts/blender/build.pyDas Set: Hügel mit Haarpartikel-Gras, Tor, matte Blöcke, Himmel, Dunst, Rendereinstellungen.
scripts/blender/mascot.pyBeispielcharakter: eine Voxel-Eule, klein genug, um auf einem Zaunpfahl zu sitzen.
scripts/blender/film.pyEinstellungen, Kameras, Animation pro Bild. Rendert plates und layers.
scripts/post/comp.pyCompositing: Platten + Schichten, 2D-Kamerabewegungen, Text, Grading, das 2D-Blockende, ffmpeg-Codierung.
assets/Zwei Himmelsplatten (golden, bedeckt). Ersetze sie durch eigene.
examples/Bilder aus einem mit dieser Pipeline erstellten Film.

Der Beispielfilm ist „Das Tor“: Identische Blöcke rollen gleichmäßig durch ein offenes Tor, kommen dann in allen Größen an und schwärmen aus. Das Tor schließt sich und danach werden Blöcke durchgelassen, gezählt oder gestoppt. Betrachte es als Referenz für die Struktur und ersetze dann die Metapher durch eine, die zum Produkt passt.

Arbeitsablauf

Führe diese Schritte in der angegebenen Reihenfolge aus. Hole bei jedem nummerierten Schritt eine Freigabe ein, bevor du Renderzeit für den nächsten Schritt aufwendest.

  1. Briefing. Ein Satz pro Punkt: Für wen es ist, das Problem, die Wende, das Versprechen, der Call-to-Action. Lege die Länge (45-75 s), das Seitenverhältnis und den Abspielort fest. Gehe von stummgeschalteter Wiedergabe aus.
  2. Metapher. Wähle ein physisches Bild für das Problem und eine Veränderung dieses Bildes für das Produkt. Ein Ort, ein Hauptrequisit, eine Art sich bewegendes Objekt. Wenn es erklärt werden muss, wähle neu.
  3. Einstellungsliste. 6-8 Einstellungen. Für jede: Dauer, was sich bewegt, der Einblendungstext (unter 8 Wörter, eine Idee), Kameraposition und Objektiv. Problemakt in kühlem, bedecktem Licht, Produktakt in warmem Licht. Zeige es als Tabelle und hole die Zustimmung ein.
  4. Charakter (optional). Ein kleiner Protagonist gibt dem Auge eine Ruhepause. Biete 3-4 Optionen als flache Skizzen an, bevor du etwas modellierst. Skaliere es am Set: Es sollte auf das Hauptrequisit passen. Baue es aus einfachen Primitiven (die Eule besteht aus 1 cm Würfeln).
  5. Set in Code. Passe build.py an. Halte die Einheiten in Metern mit dem Hauptrequisit im Ursprung. Rendere pro Einstellung einen Standframe mit wenigen Samples und betrachte jeden, bevor du animierst.
  6. Animation. In film.py hat jede Einstellung setup_X (Objekte einmal erstellen) und update_X(t) (alles für Filmschund t platzieren). Reine Funktionen der Zeit, keine Keyframes, sodass jedes Bild einzeln gerendert werden kann und ein abgestürzter Render an der Stelle fortgesetzt wird, an der er gestoppt wurde.
  7. Zwei-Pass-Render. python scripts/blender/film.py plates, dann ... layers. Siehe unten.
  8. Compositing. python scripts/post/comp.py out.mp4 --draft für eine schnelle Überprüfung (jedes 6. Bild), dann ohne --draft. Verwende --only-ending, während du das Ende abstimmst.
  9. Ansehen. Ziehe Standbilder in der Mitte jeder Einblendung und überprüfe: Ist der Text lesbar, ist das, was der Text benennt, im Bild sichtbar, springt etwas zwischen den Einstellungen. Korrigiere und rendere nur die betroffene Einstellung neu (lösche ihre Dateien in layers/).

Der Zwei-Pass-Render

Fotorealistisches Gras ist langsam. Bewegte Objekte sind günstig. Deshalb werden sie getrennt gerendert.

  • Platten. Ein Standbild pro Einstellung des gesamten Sets (Gras, Requisit, Himmel), im Beispiel 1280x720 mit 36 Samples. Eine Einstellung, die das Licht wechselt, erhält zwei Platten, die der Compositor überblendet.
  • Schichten. Nur das, was sich bewegt, auf transparentem Hintergrund, mit niedrigerer Auflösung und weniger Samples. Der Boden ist ein Schattenfänger, sodass Objekte immer noch Schatten werfen. Statische Requisiten sind Platzhalter, sodass Objekte korrekt dahinter verlaufen. Der Himmel bleibt für die Beleuchtung erhalten, ist aber vor der Kamera verborgen.
  • Compositor. Legt die Schicht über die Platte und simuliert dann Kamerabewegung mit einem langsamen 2D-Push oder -Drift pro Einstellung. Eine fixierte 3D-Kamera ist das, was die Platte wiederverwendbar macht.

Drei Dinge halten die Kosten niedrig:

  • Schleifen. Wenn eine Einstellung ein gleichmäßiger Strom ist, mache die Bewegung periodisch (Abstand 0,84 m bei 0,84 m/s wiederholt sich jede Sekunde) und rendere eine Periode. LOOP in film.py und comp.py listet diese Einstellungen auf.
  • Auf Zweien. Schichten werden jedes zweite Bild gerendert (STEP = 2) und gehalten. Es liest sich wie Stop-Motion, was zu kleinen klobigen Objekten passt.
  • Fortsetzen. Jedes Bild wird übersprungen, wenn seine Datei existiert.

Zur Einordnung: Der Beispielfilm (51 s 3D plus ein 12,5 s langes Ende) besteht aus 8 Platten und 456 Schichtbildern. Er wurde nur auf der CPU gerendert.

Das 2D-Ende

comp.py zeichnet es direkt, ohne Blender. Ein 64x36-Raster abgerundeter Quadrate in der Palette fliegt über das letzte 3D-Bild, 6 Spalten breit ein, die Kamera zoomt zurück, bis alle 64 Spalten sichtbar sind, dann klappt eine diagonale Welle jeden Block um (ein vertikales Stauchen auf Null und zurück, mit dem Farbwechsel am Mittelpunkt) zu seiner endgültigen Farbe. Die endgültigen Farben stammen aus einer 3x5-Pixel-Schriftart, sodass die Blöcke zum Text werden.

Grenzen für die Planung des Texts: bis zu vier Zeilen, je 12 Zeichen (11 sieht besser aus), Großbuchstaben, Ziffern und . - / !. Setze sie in film.json unter ending mit einer Zeile im Raster und einem Palettenschlüssel.

Bearbeiten von film.json

  • palette: sieben Hex-Farben. primary, accent, warm, soft, deep, paper (Hintergrund des Endes und der Standardblock), alarm (die „Etwas stimmt nicht“-Farbe).
  • overlays: [start, end, "text", x] in Filmssekunden. x ist optional, eine horizontale Position von 0 bis 1, wenn das Motiv dort sitzt, wo zentrierter Text es verdecken würde. Verwende \n für zwei Zeilen.
  • ending: die Zeilen, die die Blöcke buchstabieren.
  • font: Pfad zu einer .ttf- oder .otf-Datei für Einblendungen. Fällt zurück auf Inter, DejaVu, Helvetica oder Arial.

Einstellungsdauern stehen in SHOTS am Anfang von sowohl film.py als auch comp.py. Halte sie gleich.

Einrichtung

python -m venv venv && . venv/bin/activate
pip install bpy==5.3.0 numpy pillow     # bpy ist das Blender-Rad; benötigt das passende Python
# ffmpeg muss im PATH sein

TEST=1 python scripts/blender/film.py plates    # 480x270, ein Bild pro Einstellung, ein paar Minuten
TEST=1 python scripts/blender/film.py layers
python scripts/post/comp.py draft.mp4 --draft

FILM_OUT=/some/dir schreibt plates/ und layers/ dorthin statt in diesen Ordner. FILM_CONFIG zeigt auf eine andere film.json. GRASS_NEAR und GRASS_MID (Prozent) lichten das Gras aus. Mit Desktop-Blender statt dem Rad: blender -b -P scripts/blender/film.py -- plates.

Fallstricke, die echte Zeit kosten

  • Grasslänge. Das Setzen des normal_factor eines Haarpartikelsystems setzt hair_length zurück. Setze hair_length zuletzt, sonst ist jeder Grashalm meterlang und das Feld sieht bewegungsunschärfeverwaschen aus.
  • Parenting. Parenting verschiebt das Kind, es sei denn, du setzt matrix_parent_inverse. Gelenkte Teile springen vom Requisit.
  • Himmel. Ein Himmelsbild auf einem UV-Zylinder verzerrt sich. Verwende gespiegelte Panels auf einem großen Zylinder oder eine flache Ebene, wenn die Kamera nie schwenkt. Behalte eine physische Sonne für das eigentliche Licht.
  • Text über dem Motiv. Überprüfe jede Einblendung gegen das darunterliegende Bild. Verschiebe den Text mit x, bevor du die Kamera bewegst.
  • Hineinzoomen verdeckt Dinge. Wenn eine Einblendung etwas benennt („Blockiert.“), bestätige, dass der 2D-Beschnitt es noch enthält.
  • Farbauswaschung. Bemalte Flächen unter AgX benötigen dunklere Grundfarben als der Marken-Hex. Bildschirme und alles, was exakt als Farbe lesbar sein muss, sollten Emission sein.
  • Keine GPU. Kalkuliere nach Bild: time ein Schichtbild, multipliziere es, reduziere dann Auflösung, Samples oder Einstellungslänge, bis es passt. Starte keinen Render, den du nicht zeitlich erfasst hast.
  • Container-Neustarts. Lange Renderläufe werden unterbrochen. Die Überspringen-wenn-vorhanden-Prüfung rettet dich.

Was diese Pipeline nicht tut

Sei offen mit der Person darüber, bevor sie es erwartet.

  • Bewegte 3D-Kameras. Einstellungen sind fixiert mit 2D-Bewegungen obendrauf. Echte Parallaxe erfordert das Rendern des Sets in jedem Bild, was eine GPU benötigt.
  • Bewegungsunschärfe und 24-fps-Bewegung auf Schichten. Erhöhe die Samples, setze STEP = 1 und aktiviere render.use_motion_blur, sobald die Hardware es zulässt.
  • Objekte sitzen auf dem Gras, nicht darin, weil das Gras in der Platte ist.
  • Ton. Der Film ist darauf ausgelegt, stumm zu funktionieren. Füge bei Bedarf im Nachhinein Musik und Effekte hinzu.
  • Bildschirme, Benutzeroberflächen oder Logos in der 3D-Welt. Bewusst weggelassen: Produkt-UI in einem fotorealistischen Feld wirkt unecht. Platziere Produktvisualisierungen im 2D-Ende oder einem separaten Schnitt.

Für eine Endqualitäts-Passform

1920x1080 oder höher für beide Pässe, 128+ Samples mit Denoising, GPU-Rendering (OptiX oder Metal), STEP = 1, Bewegungsunschärfe an, und W, H in comp.py entsprechend erhöht. Verteile Bilder nach Bildnummer auf mehrere Maschinen; jedes Bild ist unabhängig.

Verwandte Skills