youtube/remotion/README.md
Pascal Scholz 6a29198c32 Remotion: Körperteil-Masken (Rig) für Pino, Noa und Lulu, VerformTest darauf umgestellt
- werkzeuge/rig.py erzeugt pro Figur Teil- und Einfluss-Masken, Gelenkpunkte und Hierarchie (src/rigs.ts)
- Gitter-Verformung mit Masken-Gewichten und 3-px-Gitter
- Pinos Sprung gedämpft, Kopfbereich deutlich größer

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 20:12:50 +00:00

3.1 KiB
Raw Blame History

Remotion – Szenen aus Figuren-Grafiken

Animiert die freigestellten Figuren (Pino, Noa, Lulu) per Code, ohne Higgsfield-Clips. Erster Test: LaterneTest (14 s, Abendspaziergang mit Noas Laterne, ohne Ton).

Aufbau

Pfad Inhalt
public/figuren/ freigestellte PNGs der Figuren
src/figuren.ts Bildmaße, Augenpositionen (fürs Blinzeln), Noas Hand
src/teile/Figur.tsx Figur an den Füßen verankert: verschieben, drehen, stauchen, blinzeln
src/teile/Laterne.tsx Laternenstab mit pendelnder Papierlaterne
src/teile/Abendhuegel.tsx Hintergrund in Aquarell-Optik (SVG), Vordergrund, Papierstruktur
src/szenen/LaterneTest.tsx die Testszene mit Zeitplan

Benutzen

npm install
npx remotion studio              # Vorschau im Browser
npx remotion render src/index.ts LaterneTest /shared/youtube/tests/laterne-test.mp4

Fertige Videos gehören nach /shared/youtube/, nicht ins Git.

Im VPS-Container fehlen Chrome einige Systembibliotheken. Sie liegen ohne Root-Rechte unter ~/.local/chrome-libs (Debian-Pakete, nur entpackt) und werden so eingebunden:

export LD_LIBRARY_PATH=$HOME/.local/chrome-libs/root/usr/lib/x86_64-linux-gnu

Figuren freistellen

Mit rembg (Modell isnet-general-use), danach Maske härten, nur die größte Fläche behalten, Rand um 2 px einziehen (sonst heller Saum vor dunklem Hintergrund). Am besten funktionieren Einzelbilder vor hellem Papier.

Körperteil-Masken (Rig)

werkzeuge/rig.py zerlegt jede Figur in Körperteile und erzeugt:

Pfad Inhalt
public/figuren/<figur>/teile/<teil>.png harte Maske, genau an der Kontur
public/figuren/<figur>/einfluss/<teil>.png weiche Maske für die Verformung: Teil + alles, was daran hängt, weicher Übergang am Gelenk, reicht über die Kontur hinaus
public/figuren/<figur>/uebersicht.png alle Teile farbig, zum Prüfen
src/rigs.ts Gelenkpunkte und Hierarchie (automatisch erzeugt)

Teile: Lulu – kopf, hals, ohr_links/rechts, horn_links/rechts, rumpf, bein_vorne_links/rechts, bein_hinten_links/rechts, schwanz, schal_schlinge, schal_ende, schal_boden. Pino – koerper, kopf, ohr_links/rechts, bauch, arm_links/rechts, fuss_links/rechts, muetze, bommel. Noa – kopf, zopf_links/rechts, rumpf, arm_links/rechts, hand_links/rechts, bein_links/rechts, stiefel_links/rechts.

Zuordnung: Accessoires über ihre Farbe, alles andere über Kernflächen pro Teil, die bis zur Kontur wachsen – nur innerhalb der Figur, also nie über Lücken (Schwanz ↔ Bein). Neue Figur oder neues Bild: Skelett und Flächen in rig.py eintragen, dann

python3 werkzeuge/rig.py   # braucht numpy, scipy, pillow

und uebersicht.png prüfen. In einer Szene: gelenk('lulu', 'hals', grad) (siehe src/szenen/VerformTest.tsx).

Bekannte Grenzen

  • Die Figuren haben nur die Pose ihres Bildes. Neue Posen brauchen ein neues Bild (z. B. aus Gemini).
  • Die SVG-Filter im Hintergrund werden pro Frame neu berechnet und machen das Rendern langsam. Für lange Folgen die Hintergrund-Ebenen einmal als PNG vorberechnen.