youtube/remotion/src/folge08/szene5.tsx
Lara c6ca31402d Gehen ohne rutschende Füße (baukasten/gang.ts, gemessen an den Geh-Clips), Folge 8 „Noas Laterne“ in Arbeit, Lied 1: Pino hüpft wieder nach oben
- gang.ts: Geschwindigkeit aus der Fußbewegung im Clip, Start/Ende mit geschlossenen Füßen, ganze Schritte;
  GangTest als Prüfstand (Stiefel steht 21 Bilder auf ±1 px). Lulus Geh-Clip ist kein Gehen – nicht verschieben.
- Lied 1: huepfer() ist negativ und wurde abgezogen – Pino sank bei jeder Zahl in den Boden.
- folge08: Texte DE/ES/FR, Szene 2–7, Abendgarten mit Hauswand, Laterne mit Sternen/Igel, Wand-Schatten

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-05 19:50:15 +00:00

47 lines
1.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React from 'react';
import {interpolate, useCurrentFrame} from 'remotion';
import {Blende, kamFahrt} from '../baukasten/helfer';
import {Untertitel} from '../baukasten/untertitel';
import {plane} from './plan';
import {PLATZ, Wandszene} from './wand';
// Szene 5: Ach so! Noa hebt die Laterne hoch, jetzt fällt das Licht auf Lulu. Lulu nickt – der Schatten
// nickt mit. Pinos Stacheln legen sich, alle lachen. Der Erzähler erklärt, wie ein Schatten entsteht.
export const S5 = plane('s5', [
{id: 'bild0', dauer: 1.6},
{id: 'l1', wer: 'LULU'},
{id: 'p1', wer: 'PINO'},
{id: 'lachen', dauer: 1.6},
{id: 'e1', wer: 'ERZ'},
{id: 'bild1', dauer: 1.0},
]);
export const Szene5: React.FC = () => {
const f = useCurrentFrame();
const {z, dauer} = S5;
const hell = interpolate(f, [8, 30], [0.55, 1], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'});
// Lulu nickt zweimal (vor „Huch!“), der Schatten macht es mit
const nick = interpolate(f, [z.bild0.start + 18, z.bild0.ende + 12], [0, 1], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'});
const nicken = Math.sin(nick * Math.PI * 4) * 3 * (nick > 0 && nick < 1 ? 1 : 0);
const kam = kamFahrt(f, [
[0, 1060, 520, 0.98],
[z.l1.start, 1180, 560, 1.15],
[z.p1.start, 1000, 560, 1.05],
[dauer, 1000, 540, 1.0],
]);
return (
<>
<Wandszene
f={f}
kam={kam}
laterne={{inHand: true, licht: 1, schwung: Math.sin(f * 0.07) * 4}}
noa={{pose: [[0, 'noa_B_hocken'], [6, 'noa_A_laterne']]}}
pino={{pose: [[0, 'pino_A4_staunen'], [z.p1.start, 'pino_A3_lachen']], x: PLATZ.noa + 90}}
lulu={{pose: [[0, 'lulu_A4_staunen'], [z.l1.start, 'lulu_A3_lachen']], hell, drehung: nicken}}
/>
<Untertitel zeilen={S5.liste} />
<Blende dauer={dauer} rein={6} raus={6} />
</>
);
};