diff --git a/remotion/public/bibliothek/figuren/pino_A1_augen-zu.webp b/remotion/public/bibliothek/figuren/pino_A1_augen-zu.webp index 4476ee6..24bbd97 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A1_augen-zu.webp and b/remotion/public/bibliothek/figuren/pino_A1_augen-zu.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A2_augen-halb.webp b/remotion/public/bibliothek/figuren/pino_A2_augen-halb.webp index 84092a4..4a4b7b0 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A2_augen-halb.webp and b/remotion/public/bibliothek/figuren/pino_A2_augen-halb.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A3_lachen.webp b/remotion/public/bibliothek/figuren/pino_A3_lachen.webp index a4f0480..0e61c7e 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A3_lachen.webp and b/remotion/public/bibliothek/figuren/pino_A3_lachen.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A4_staunen.webp b/remotion/public/bibliothek/figuren/pino_A4_staunen.webp index 74214bd..25cb205 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A4_staunen.webp and b/remotion/public/bibliothek/figuren/pino_A4_staunen.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A5_blick-links.webp b/remotion/public/bibliothek/figuren/pino_A5_blick-links.webp index d053412..0c5b330 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A5_blick-links.webp and b/remotion/public/bibliothek/figuren/pino_A5_blick-links.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A6_blick-rechts.webp b/remotion/public/bibliothek/figuren/pino_A6_blick-rechts.webp index 5103395..cdf88e5 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A6_blick-rechts.webp and b/remotion/public/bibliothek/figuren/pino_A6_blick-rechts.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A7-1_gehen.webp b/remotion/public/bibliothek/figuren/pino_A7-1_gehen.webp index d17334a..e5117e0 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A7-1_gehen.webp and b/remotion/public/bibliothek/figuren/pino_A7-1_gehen.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A7-2_gehen.webp b/remotion/public/bibliothek/figuren/pino_A7-2_gehen.webp index 3ea599a..907c9fd 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A7-2_gehen.webp and b/remotion/public/bibliothek/figuren/pino_A7-2_gehen.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A7-3_gehen.webp b/remotion/public/bibliothek/figuren/pino_A7-3_gehen.webp index e91059a..9ac66d2 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A7-3_gehen.webp and b/remotion/public/bibliothek/figuren/pino_A7-3_gehen.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A7-4_gehen.webp b/remotion/public/bibliothek/figuren/pino_A7-4_gehen.webp index c332a96..2498fe1 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A7-4_gehen.webp and b/remotion/public/bibliothek/figuren/pino_A7-4_gehen.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A8_rueckansicht.webp b/remotion/public/bibliothek/figuren/pino_A8_rueckansicht.webp index c3f4729..623e10e 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A8_rueckansicht.webp and b/remotion/public/bibliothek/figuren/pino_A8_rueckansicht.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A_hinterbeine.webp b/remotion/public/bibliothek/figuren/pino_A_hinterbeine.webp index 9a90fec..9d19f48 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A_hinterbeine.webp and b/remotion/public/bibliothek/figuren/pino_A_hinterbeine.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A_kugel.webp b/remotion/public/bibliothek/figuren/pino_A_kugel.webp index b4872d8..3a46e26 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A_kugel.webp and b/remotion/public/bibliothek/figuren/pino_A_kugel.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A_laufen-1.webp b/remotion/public/bibliothek/figuren/pino_A_laufen-1.webp index 0c0809d..6234cc1 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A_laufen-1.webp and b/remotion/public/bibliothek/figuren/pino_A_laufen-1.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A_laufen-2.webp b/remotion/public/bibliothek/figuren/pino_A_laufen-2.webp index d7fa0e6..37c26a5 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A_laufen-2.webp and b/remotion/public/bibliothek/figuren/pino_A_laufen-2.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A_laufen-3.webp b/remotion/public/bibliothek/figuren/pino_A_laufen-3.webp index 1611829..05d1950 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A_laufen-3.webp and b/remotion/public/bibliothek/figuren/pino_A_laufen-3.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_A_laufen-4.webp b/remotion/public/bibliothek/figuren/pino_A_laufen-4.webp index 3fca7dd..6646d04 100644 Binary files a/remotion/public/bibliothek/figuren/pino_A_laufen-4.webp and b/remotion/public/bibliothek/figuren/pino_A_laufen-4.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_B1_traurig.webp b/remotion/public/bibliothek/figuren/pino_B1_traurig.webp index 193426d..9b87515 100644 Binary files a/remotion/public/bibliothek/figuren/pino_B1_traurig.webp and b/remotion/public/bibliothek/figuren/pino_B1_traurig.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_B2_erschrocken.webp b/remotion/public/bibliothek/figuren/pino_B2_erschrocken.webp index f3ec4aa..224bee2 100644 Binary files a/remotion/public/bibliothek/figuren/pino_B2_erschrocken.webp and b/remotion/public/bibliothek/figuren/pino_B2_erschrocken.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_B3_schlafen.webp b/remotion/public/bibliothek/figuren/pino_B3_schlafen.webp index b5d416f..7c1d8f9 100644 Binary files a/remotion/public/bibliothek/figuren/pino_B3_schlafen.webp and b/remotion/public/bibliothek/figuren/pino_B3_schlafen.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_B_blick-nach-oben.webp b/remotion/public/bibliothek/figuren/pino_B_blick-nach-oben.webp index 70fbd41..89b42ab 100644 Binary files a/remotion/public/bibliothek/figuren/pino_B_blick-nach-oben.webp and b/remotion/public/bibliothek/figuren/pino_B_blick-nach-oben.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_B_schlaeft-eingerollt.webp b/remotion/public/bibliothek/figuren/pino_B_schlaeft-eingerollt.webp index c7a9c01..150a348 100644 Binary files a/remotion/public/bibliothek/figuren/pino_B_schlaeft-eingerollt.webp and b/remotion/public/bibliothek/figuren/pino_B_schlaeft-eingerollt.webp differ diff --git a/remotion/public/bibliothek/figuren/pino_ref_sitzend.webp b/remotion/public/bibliothek/figuren/pino_ref_sitzend.webp index 940328e..111496c 100644 Binary files a/remotion/public/bibliothek/figuren/pino_ref_sitzend.webp and b/remotion/public/bibliothek/figuren/pino_ref_sitzend.webp differ diff --git a/remotion/src/baukasten/helfer.tsx b/remotion/src/baukasten/helfer.tsx index 5d686af..3ca5c66 100644 --- a/remotion/src/baukasten/helfer.tsx +++ b/remotion/src/baukasten/helfer.tsx @@ -28,7 +28,8 @@ export const punkt = (figur: FigurName, x: number, y: number, cx: number, cy: nu }; // Bekannte Punkte in der Leinwand (gemessen an den Standbildern) -export const LULU_MAUL_LINKS = {cx: 690, cy: 140}; // lulu_A5 (Blick links) +export const LULU_MAUL_LINKS = {cx: 692, cy: 170}; // lulu_A5 (Blick links) +export const LULU_MAUL_A1 = {cx: 597, cy: 167}; // lulu_A1 (Augen zu) export const LULU_KOPF = {cx: 714, cy: 95}; export const PINO_KOPF = {cx: 640, cy: 260}; diff --git a/remotion/src/baukasten/natur.tsx b/remotion/src/baukasten/natur.tsx index 464f055..b52573a 100644 --- a/remotion/src/baukasten/natur.tsx +++ b/remotion/src/baukasten/natur.tsx @@ -98,10 +98,9 @@ export const Voegel: React.FC<{start: number; anzahl?: number; skala?: number}> const reihe = Math.ceil(i / 2) * (i % 2 ? 1 : -1); // Spitze vorn, Äste nach hinten const x = 160 + t * 5.5 - Math.abs(reihe) * 75 * skala + r('x') * 20; const y = 600 - t * 1.5 + reihe * 42 * skala + Math.sin(t * 0.05 + r('w') * 6) * 8; - // Flügelschlag mit kurzen Gleitphasen - const takt = t * 0.38 + r('p') * 6; - const gleiten = Math.sin(t * 0.02 + r('q') * 6) > 0.6; - const schlag = gleiten ? 0.15 : Math.sin(takt); + // Flügelschlag ohne Pause, je Vogel etwas anders schnell + const takt = t * (0.34 + r('f') * 0.1) + r('p') * 6; + const schlag = Math.sin(takt); const g = (34 + r('g') * 8) * skala * (1 - Math.abs(reihe) * 0.03); return ; })} diff --git a/remotion/src/baukasten/orte.tsx b/remotion/src/baukasten/orte.tsx index a2eb851..627775d 100644 --- a/remotion/src/baukasten/orte.tsx +++ b/remotion/src/baukasten/orte.tsx @@ -355,6 +355,32 @@ export const KalenderSVG: React.FC<{leer?: boolean}> = ({leer = false}) => { ); }; +// Der Kalender auf dem Papierbogen am Tisch (Zimmer-Ansicht), Fortschritt p wie KalenderMalen. +const PAPIER = [[560, 790], [900, 784], [930, 822], [540, 828]]; +const aufPapier = (u: number, v: number) => { + const [a, b, c, d] = PAPIER; + const ox = a[0] + (b[0] - a[0]) * u, oy = a[1] + (b[1] - a[1]) * u; + const ux = d[0] + (c[0] - d[0]) * u, uy = d[1] + (c[1] - d[1]) * u; + return `${ox + (ux - ox) * v},${oy + (uy - oy) * v}`; +}; +export const KalenderAufTisch: React.FC<{p: number}> = ({p}) => { + const tp = Math.min(1, p / 0.08); + const tuerP = Math.max(0, (p - 0.08) / 0.92) * 24; + const viereck = (u0: number, v0: number, u1: number, v1: number) => [aufPapier(u0, v0), aufPapier(u1, v0), aufPapier(u1, v1), aufPapier(u0, v1)].join(' '); + return ( + + + {new Array(24).fill(0).map((_, i) => { + const anteil = Math.min(1, tuerP - i); + if (anteil <= 0) return null; + const u0 = 0.1 + (i % 6) * 0.135; + const v0 = 0.3 + Math.floor(i / 6) * 0.17; + return ; + })} + + ); +}; + export const KALENDER_TUER1 = {x: 330 + 4 * 215 + 90, y: 250 + 1 * 180 + 75}; // Türchen „1“ (Index 10) // Noa malt den Kalender (Blick von oben auf das Blatt, über `kalender_leer`). diff --git a/remotion/src/folge02/szene2.tsx b/remotion/src/folge02/szene2.tsx index 83784a6..ccca3cd 100644 --- a/remotion/src/folge02/szene2.tsx +++ b/remotion/src/folge02/szene2.tsx @@ -33,12 +33,14 @@ export const Szene2: React.FC = () => { const f = useCurrentFrame(); const {z, dauer} = S2; - // Pino kommt von rechts getippelt und setzt sich + // Pino kommt von rechts (außerhalb des Bildes) getippelt und setzt sich const pinoAn = z.bild1.ende + 6; + const pinoLos = z.bild1.start - 120; const pinoX = kurve(f, [ - [z.bild1.start - 10, 1560], + [pinoLos, 2000], [pinoAn, PINO_X], ]); + const pinoDa = f >= pinoLos; const pinoGeht = f < pinoAn; const schreck = z.bild3.start; const pinoPose: [number, string][] = [ @@ -77,10 +79,6 @@ export const Szene2: React.FC = () => { const noaX = kurve(f, [ [z.bild1.start + 10, -180], [noaAn, NOA_X], - [z.n2.start, NOA_X], - [z.n2.start + 20, NOA_X + 60], - [z.p3.ende, NOA_X + 60], - [z.p3.ende + 30, NOA_X + 20], ]); const noaGeht = f > z.bild1.start + 10 && f < noaAn; const noaPose: [number, string][] = [ @@ -92,9 +90,22 @@ export const Szene2: React.FC = () => { [z.p3.start + 10, 'noa_A3_lachen'], [z.e4.start, 'noa_A6_blick-rechts'], ]; - // Kichern: schnelles kleines Hüpfen - const kichern = f > z.bild2.start + 15 && f < z.bild2.ende ? -Math.abs(Math.sin(f * 0.5)) * 6 : 0; - const noaY = BODEN + kichern + huepfer(f, z.n1.start, 18, 10); + // Kichern: schwillt an und ab, kleine Hüpfer mit Wiegen und Stauchen + const kichA = z.bild2.start + 15; + const kichE = z.bild2.ende; + const kichHuell = f > kichA && f < kichE ? Math.sin(((f - kichA) / (kichE - kichA)) * Math.PI) : 0; + const kichPhase = (f - kichA) * (0.42 + 0.08 * Math.sin((f - kichA) * 0.05)); + const kichern = -Math.abs(Math.sin(kichPhase)) * 7 * kichHuell; + const kichStauch = 1 - 0.035 * Math.abs(Math.cos(kichPhase)) * kichHuell; + const kichDreh = (Math.sin(kichPhase * 0.5) * 2.5 + 2) * kichHuell; + // „Pino? Pino!“: Noa beugt sich zu Pino hinüber + const vorbeugen = kurve(f, [ + [z.n2.start, 0], + [z.n2.start + 14, 1], + [z.p3.start, 1], + [z.p3.start + 16, 0], + ]); + const noaY = BODEN + kichern + huepfer(f, z.n1.start, 18, 10) + huepfer(f, z.n2.start + 30, 8, 10); const kam = kamFahrt(f, [ [0, 960, 540, 1.02], @@ -114,8 +125,8 @@ export const Szene2: React.FC = () => { <> - {noaGeht ? : } - {pinoGeht ? : } + {noaGeht ? : } + {!pinoDa ? null : pinoGeht ? : } diff --git a/remotion/src/folge02/szene3.tsx b/remotion/src/folge02/szene3.tsx index bbf6cca..1ce9f97 100644 --- a/remotion/src/folge02/szene3.tsx +++ b/remotion/src/folge02/szene3.tsx @@ -32,7 +32,7 @@ export const S3 = plane('s3', [ ]); // Das große Blatt, auf das Pino sich setzt -const GROSSES_BLATT_X = PINO_X + 50; +export const GROSSES_BLATT_X = PINO_X + 50; export const Szene3: React.FC = () => { const f = useCurrentFrame(); @@ -116,7 +116,7 @@ export const Szene3: React.FC = () => { // Noa kniet sich zu Pino const knien = z.bild3.start + 10; const noaX = kurve(f, [ - [knien - 36, NOA_X + 20], + [knien - 36, NOA_X], [knien, NOA_X + 140], ]); const noaPose: [number, string][] = [ diff --git a/remotion/src/folge02/szene4.tsx b/remotion/src/folge02/szene4.tsx index f3ffbd9..b3c3850 100644 --- a/remotion/src/folge02/szene4.tsx +++ b/remotion/src/folge02/szene4.tsx @@ -2,10 +2,11 @@ import React from 'react'; import {useCurrentFrame} from 'remotion'; import {kurve} from '../bewegung'; import {Figur, Geher, Kamera, NOA_HOCKE_FRAMES, NoaHocke} from '../baukasten/figur'; -import {Blende, LULU_MAUL_LINKS, Vignette, atmen, hopfStauch, huepfer, kamFahrt, punkt, ruck} from '../baukasten/helfer'; +import {Blende, LULU_MAUL_A1, LULU_MAUL_LINKS, Vignette, atmen, hopfStauch, huepfer, kamFahrt, punkt, ruck} from '../baukasten/helfer'; import {Blaetterregen, Blatt, LAUB, Nest, Ruf} from '../baukasten/natur'; import {BODEN, NEST_X, Ort} from '../baukasten/orte'; import {NOA_X, PINO_X} from './szene2'; +import {GROSSES_BLATT_X} from './szene3'; import {Untertitel} from '../baukasten/untertitel'; import {plane} from './plan'; @@ -90,9 +91,15 @@ export const Szene4: React.FC = () => { [pinoGehtBis, PINO_ZAEHL_X], [zurueck + 10, PINO_ZAEHL_X], [zurueck + 60, NEST_X + 150], - [z.bild4.ende - 20, NEST_X + 110], + [z.bild5.start - 20, NEST_X + 150], [z.bild5.start, NEST_X], ]); + const insNest = huepfer(f, z.bild5.start - 20, 46, 20); // Sprung ins Nest + // Anfang wie Ende von Szene 3: Pino lehnt am großen Blatt und richtet sich auf + const sitzt = kurve(f, [ + [z.n1.start + 10, 1], + [z.n1.start + 34, 0], + ]); const pinoGeht = (f > pinoGehtVon && f < pinoGehtBis) || (f > zurueck + 10 && f < zurueck + 60); const pinoSpiegel = f > pinoGehtVon && f < pinoGehtBis; // nach rechts const imNest = f >= z.bild5.start; @@ -130,20 +137,44 @@ export const Szene4: React.FC = () => { ]); const luluPose: [number, string][] = [ [0, 'lulu_A5_blick-links'], - [z.l1.start + 10, 'lulu_A3_lachen'], [kitzeln + 10, 'lulu_A1_augen-zu'], [niesen + 18, 'lulu_B2_erschrocken'], [z.n3.start + 20, 'lulu_A3_lachen'], ]; const luluY = BODEN - 10 - strecken * 26; - const maul = punkt('lulu', LULU_BAUM_X, luluY, LULU_MAUL_LINKS.cx, LULU_MAUL_LINKS.cy); - const buendel = f > amBaum + 50 && f < niesen; - // Blätter fliegen vom Ast ins Maul - const zupfen = [0, 1, 2, 3].map((i) => { - const s = amBaum + 55 + i * 14; - const t = Math.min(1, Math.max(0, (f - s) / 16)); - return {x: maul.x - 160 + i * 50 + (maul.x - (maul.x - 160 + i * 50)) * t, y: maul.y - 120 + 120 * t, sichtbar: f > s - 20 && t < 1}; + const luluStauch = atmen(f, 3, 0.006) * (1 + 0.02 * strecken); + const luluDreh = zurueckLehnen * 4; + // Punkt im Bild von Lulu, mit Drehung und Stauchung wie die Figur selbst + const luluPunkt = (c: {cx: number; cy: number}) => { + const p = punkt('lulu', 0, 0, c.cx, c.cy); + const dy = p.y * luluStauch; + const a = (luluDreh * Math.PI) / 180; + return {x: LULU_BAUM_X + p.x * Math.cos(a) - dy * Math.sin(a), y: luluY + p.x * Math.sin(a) + dy * Math.cos(a)}; + }; + // Maul wandert mit dem Posenwechsel A5 → A1 mit + const m5 = luluPunkt(LULU_MAUL_LINKS); + const m1 = luluPunkt(LULU_MAUL_A1); + const zuA1 = kurve(f, [ + [kitzeln + 10, 0], + [kitzeln + 15, 1], + ]); + const maul = {x: m5.x + (m1.x - m5.x) * zuA1, y: m5.y + (m1.y - m5.y) * zuA1}; + // Blätter hängen am Ast, Lulu zupft eins nach dem anderen ab; das Bündel im Maul wächst mit + const astMaul = punkt('lulu', LULU_BAUM_X, BODEN - 36, LULU_MAUL_LINKS.cx, LULU_MAUL_LINKS.cy); + const zupfen = [0, 1, 2, 3, 4].map((i) => { + const ast = {x: astMaul.x - 150 + i * 55, y: astMaul.y - 115 - (i % 2) * 35}; + const los = amBaum + 50 + i * 18; + const t = Math.min(1, Math.max(0, (f - los) / 20)); + const e = t * t * (3 - 2 * t); + return { + x: ast.x + (maul.x - ast.x) * e, + y: ast.y + (maul.y - ast.y) * e - Math.sin(t * Math.PI) * 30, + r: t > 0 ? 160 + t * 380 : 160 + Math.sin(f * 0.12 + i * 2) * 12, + deck: Math.min(1, Math.max(0, (f - amBaum - i * 3) / 12)), + angekommen: t >= 1, + }; }); + const imMaul = f < niesen ? zupfen.filter((b) => b.angekommen).length : 0; // Kamera const kam = kamFahrt(f, [ @@ -165,7 +196,7 @@ export const Szene4: React.FC = () => { ]); kam.y += ruck(f, niesen, 9, 22); - const lulu = ; + const lulu = ; const luluBeimNest = f >= zurueck && ; return ( @@ -173,14 +204,10 @@ export const Szene4: React.FC = () => { {f >= amBaum && f < zurueck && lulu} - {buendel && ( -
- {LAUB.slice(0, 5).map((c, i) => ( - - ))} -
- )} - {zupfen.map((b, i) => (b.sichtbar ? : null))} + {f >= amBaum && f < niesen && zupfen.map((b, i) => (!b.angekommen ? : null))} + {LAUB.slice(0, imMaul).map((c, i) => ( + + ))} {/* Reihe aus fünf Blättern vor dem Holzstapel */} {f < zurueck + 40 && @@ -195,6 +222,8 @@ export const Szene4: React.FC = () => { ) : ( )} + {/* das große Blatt aus Szene 3 bleibt liegen */} + {f < zurueck + 40 && zurueck ? 1 - (f - zurueck) / 40 : 1} />} {imNest ? (
@@ -205,8 +234,9 @@ export const Szene4: React.FC = () => { )} diff --git a/remotion/src/folge02/szene6.tsx b/remotion/src/folge02/szene6.tsx index 3892e64..4add9b9 100644 --- a/remotion/src/folge02/szene6.tsx +++ b/remotion/src/folge02/szene6.tsx @@ -4,7 +4,7 @@ import {kurve} from '../bewegung'; import {ClipFigur, Figur, Kamera} from '../baukasten/figur'; import {Blende, Vignette, atmen, huepfer, kamFahrt} from '../baukasten/helfer'; import {Funkeln} from '../baukasten/natur'; -import {KALENDER_TUER1, KalenderMalen, Ort} from '../baukasten/orte'; +import {KALENDER_TUER1, KalenderAufTisch, KalenderMalen, Ort} from '../baukasten/orte'; import {Untertitel} from '../baukasten/untertitel'; import {plane} from './plan'; @@ -18,7 +18,7 @@ const LULU_X6 = 1440; export const S6 = plane('s6', [ {id: 'bild0', dauer: 3.0}, - {id: 'malen', dauer: 4.0}, + {id: 'malen', dauer: 5.5}, {id: 'l1', wer: 'LULU', text: 'Was malst du da, Noa?'}, {id: 'n1', wer: 'NOA', text: 'Einen Kalender! Mit 24 Türchen.'}, {id: 'n2', wer: 'NOA', text: 'Wir öffnen jeden Tag eins. Und hinter jedem Türchen steckt etwas, das Pino wach hält.'}, @@ -34,10 +34,14 @@ export const Szene6: React.FC = () => { const f = useCurrentFrame(); const {z, dauer} = S6; - // Noa malt: Blick von oben aufs Blatt, während „malen“ und während sie antwortet (n1) + // Noa malt: Blick von oben aufs Blatt, während „malen“ und während sie antwortet (n1). + // Langsamer Anfang, dazwischen Zimmer (es geht weiter), bei n1 ist er fast fertig. const malP = kurve(f, [ [z.malen.start, 0], - [z.n1.ende, 1], + [z.malen.start + 50, 0.03], + [z.malen.ende, 0.2], + [z.n1.start, 0.8], + [z.n1.ende, 0.96], ]); const malSicht = (f >= z.malen.start && f < z.l1.start) || (f >= z.n1.start && f < z.n1.ende + 6); const malt = f < z.n1.ende; @@ -60,7 +64,8 @@ export const Szene6: React.FC = () => { const kam = kamFahrt(f, [ [0, 960, 540, 1.0], [z.bild0.ende, 1060, 560, 1.15], - [z.n1.start, 900, 640, 1.45], + [z.l1.start, 1080, 640, 1.5], + [z.n1.ende, 1060, 650, 1.5], [z.p1.start, 980, 650, 1.6], [z.n4.ende, 960, 640, 1.5], [sprung + 10, 1050, 700, 2.0], @@ -144,6 +149,7 @@ export const Szene6: React.FC = () => { schatten={false} /> + {f >= z.malen.start && } {imSprung ? ( ) : (