From 76bf53ed59d6ed9fb40d220fb237f8d4903ed1f5 Mon Sep 17 00:00:00 2001 From: Lara Date: Sat, 7 Nov 2026 19:11:58 +0000 Subject: [PATCH] =?UTF-8?q?Folge=209:=20Lulu=20und=20Pino=20f=C3=BChlen=20?= =?UTF-8?q?in=20Szene=203=20mit,=20Lulu=20h=C3=A4lt=20den=20Drachen=20sich?= =?UTF-8?q?tbar=20im=20Maul,=20keine=20Apfel-Pose=20mehr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- remotion/src/folge09/szene3.tsx | 6 ++++-- remotion/src/folge09/teile.tsx | 23 +++++++++++++---------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/remotion/src/folge09/szene3.tsx b/remotion/src/folge09/szene3.tsx index eb6199f..8c18231 100644 --- a/remotion/src/folge09/szene3.tsx +++ b/remotion/src/folge09/szene3.tsx @@ -44,11 +44,13 @@ export const Szene3: React.FC = () => { <> - + {/* Lulu fühlt mit: staunt beim Plumps, schaut traurig mit Noa, bis Pino Hilfe anbietet; erst bei + ihrem eigenen Satz („Hier oben weht ganz viel Wind!“) lacht sie wieder im Wind */} + = z.p1.ende ? undefined : f < z.n1.start ? 'lulu_A4_staunen' : 'lulu_B1_traurig'} /> {/* Noa schaut nach links: die Schnur läuft hinter ihr zum Drachen */} - + diff --git a/remotion/src/folge09/teile.tsx b/remotion/src/folge09/teile.tsx index ea6db8f..75cad58 100644 --- a/remotion/src/folge09/teile.tsx +++ b/remotion/src/folge09/teile.tsx @@ -22,8 +22,6 @@ export const C9_UNTEN = 105; export const c9 = (bilder: number) => (bilder * 30) / 24 / C9_TEMPO; const MAUL_UNTEN = luluMaulC9(C9_UNTEN); export const DRACHEN_IM_GRAS = {x: punkt('lulu', PLATZ.lulu, LULU_Y, MAUL_UNTEN.cx, MAUL_UNTEN.cy).x, y: BODEN - 40}; -// In der Pose lulu_A_apfel hält Lulu den Apfel bei 574/193 (Leinwand) – dort hält sie jetzt den Drachen -export const DRACHEN_IM_MAUL = punkt('lulu', PLATZ.lulu, LULU_Y, 574.5, 193); // In der Pose noa_A_haende-oben sind die Fäustlinge um 674/218 – der Drachen liegt dazwischen export const drachenUeberNoa = (noaX: number) => punkt('noa', noaX, BODEN, 674.5, 80); // über dem Kopf, nicht vor dem Gesicht @@ -82,9 +80,10 @@ export const SchnurUndDrachen: React.FC<{lage: DrachenLage; noaX: number; spiege ); }; -// Lulu holt den Drachen aus dem Gras und hält ihn mit dem Maul hoch (wie den Apfel in Folge 1): -// Hals runter (Clip C9 vorwärts), Drachen ins Maul, Hals hoch (Clip rückwärts), dann die Pose -// lulu_A_apfel – der Drachen liegt genau über dem gemalten Apfel. Die Schnur hält immer Noa. +// Lulu holt den Drachen aus dem Gras und hält ihn mit dem Maul hoch: Hals runter (Clip C9 vorwärts), +// Drachen ins Maul, Hals hoch (Clip rückwärts, bleibt auf dem ersten Clipbild stehen). Der Drachen hängt +// die ganze Zeit an seiner oberen Spitze im Maul. Keine Pose lulu_A_apfel: dort ist der Apfel gemalt. +// Die Schnur hält immer Noa. export const hebenPlan = (start: number) => { const unten = start + c9(C9_UNTEN - C9_START); const hoch = unten + 10; @@ -94,12 +93,14 @@ export const hebenPlan = (start: number) => { export const drachenBeiLulu = (f: number, plan: ReturnType): DrachenLage => { if (f < plan.unten) return {x: DRACHEN_IM_GRAS.x, y: BODEN - 36, drehung: 90, liegt: true}; - if (f >= plan.oben) return {x: DRACHEN_IM_MAUL.x, y: DRACHEN_IM_MAUL.y + 95, drehung: -15}; - const bild = f < plan.hoch ? C9_UNTEN : C9_UNTEN - ((f - plan.hoch) * 1.25 * 24) / 30; + const bild = f < plan.hoch ? C9_UNTEN : Math.max(0, C9_UNTEN - ((f - plan.hoch) * 1.25 * 24) / 30); const m = luluMaulC9(bild); const maul = punkt('lulu', PLATZ.lulu, LULU_Y, m.cx, m.cy); - // am Maul hängt der Drachen an seiner oberen Spitze, also unter dem Maul (nicht vor dem Gesicht) - return {x: maul.x, y: maul.y + 95, drehung: -15 * Math.min(1, Math.max(0, (f - plan.hoch) / 20))}; + // Die obere Spitze (42 px über dem Leistenkreuz) steckt im Maul. Beim Hochheben kippt der Drachen + // nach vorn (Lulu schaut nach links), damit er ihr Gesicht nicht verdeckt. + const w = 35 * Math.min(1, Math.max(0, (f - plan.hoch) / 40)); + const r = (w * Math.PI) / 180; + return {x: maul.x - 40 * Math.sin(r), y: maul.y + 40 * Math.cos(r), drehung: w}; }; // `danach`: was Lulu nach dem Loslassen zeigt ('wind' = Schal-Clip) – nie die Apfel-Pose ohne Drachen! @@ -109,5 +110,7 @@ export const LuluHebt: React.FC<{plan: ReturnType; danach?: st if (f < plan.hoch) return ; if (f < plan.oben) return ; if (danach === 'wind') return ; - return danach ? : ; + if (danach) return ; + // solange sie den Drachen hält: Hals oben, letztes Bild des rückwärts laufenden Clips + return ; };