Remotion: Pino neigt sich als Ganzes statt Kopfbewegung, Noa winkt nur mit dem Fäustling

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pascal Scholz 2026-10-28 20:44:17 +00:00
parent 21dc54ef90
commit a0e3b97f81

View file

@ -90,19 +90,12 @@ const pinoWerte = (f: number) => {
gelenk('pino', 'ohr_rechts', -ohr * 0.7), gelenk('pino', 'ohr_rechts', -ohr * 0.7),
gelenk('pino', 'arm_links', freude(f) * 12), gelenk('pino', 'arm_links', freude(f) * 12),
gelenk('pino', 'arm_rechts', -freude(f) * 10), gelenk('pino', 'arm_rechts', -freude(f) * 10),
{
name: 'kopf_blick',
art: 'verschieben',
um: [0, 0],
dx: feder((g) => (g > 150 && g < 176 ? 5 * Math.sin((g - 150) * 0.5) : pinoKopfKurve(g) * -0.4), f, {steifheit: 0.12, daempfung: 0.22}),
dy: feder((g) => pinoKopfKurve(g) * 0.9, f, {steifheit: 0.1, daempfung: 0.2}),
gewicht: {maske: 'pino/einfluss/kopf'},
},
gelenk('pino', 'kopf', feder(pinoKopfKurve, f, {steifheit: 0.1, daempfung: 0.2}) * 0.25),
gelenk('pino', 'fuss_rechts', f > 190 && f < 226 ? -10 * Math.abs(Math.sin((f - 190) * 0.35)) : 0), gelenk('pino', 'fuss_rechts', f > 190 && f < 226 ? -10 * Math.abs(Math.sin((f - 190) * 0.35)) : 0),
{name: 'atmen', art: 'stauchen', um: [420, 600], sx: 1 + atmen * 0.01, sy: 1 + atmen * 0.014, gewicht: kreis(420, 540, 70, 170)}, {name: 'atmen', art: 'stauchen', um: [420, 600], sx: 1 + atmen * 0.01, sy: 1 + atmen * 0.014, gewicht: kreis(420, 540, 70, 170)},
]; ];
return {stauch, hoch, knochen}; // Pino ist eine Kugel: Hochschauen und Kopfschütteln macht der ganze Körper (Drehpunkt am Boden).
const neigen = feder((g) => -pinoKopfKurve(g) * 0.6 + (g > 150 && g < 176 ? 4 * Math.sin((g - 150) * 0.5) : 0), f, {steifheit: 0.1, daempfung: 0.2});
return {stauch, hoch, knochen, neigen};
}; };
// ---------- Noa ---------- // ---------- Noa ----------
@ -112,8 +105,8 @@ const noaNeigen = (f: number) => kurve(f, [[0, 0], [180, 0], [192, 3], [204, -3]
const noaWerte = (f: number) => { const noaWerte = (f: number) => {
const kopf = feder(noaKopfKurve, f, {steifheit: 0.1, daempfung: 0.2}); const kopf = feder(noaKopfKurve, f, {steifheit: 0.1, daempfung: 0.2});
const arm = feder((g) => kurve(g, [[0, 0], [58, 0], [70, -16], [122, -16], [134, 0]]), f, {steifheit: 0.15, daempfung: 0.25}); const arm = feder((g) => kurve(g, [[0, 0], [58, 0], [70, -2], [122, -2], [134, 0]]), f, {steifheit: 0.15, daempfung: 0.25});
const winken = f > 72 && f < 120 ? 16 * Math.sin((f - 72) * 0.5) : 0; const winken = f > 72 && f < 120 ? 22 * Math.sin((f - 72) * 0.5) * Math.sin(((f - 72) / 48) * Math.PI) : 0;
const hoch = noaHuepfer(f) * 22; const hoch = noaHuepfer(f) * 22;
// Zöpfe hängen nach: reagieren auf Kopf, Neigen und Hüpfen // Zöpfe hängen nach: reagieren auf Kopf, Neigen und Hüpfen
const schwung = (g: number) => -noaKopfKurve(g) * 1.2 - noaNeigen(g) * 3 + noaHuepfer(g) * 10; const schwung = (g: number) => -noaKopfKurve(g) * 1.2 - noaNeigen(g) * 3 + noaHuepfer(g) * 10;
@ -124,8 +117,8 @@ const noaWerte = (f: number) => {
gelenk('noa', 'zopf_rechts', zopf), gelenk('noa', 'zopf_rechts', zopf),
gelenk('noa', 'daumen_rechts', winken * 0.8), gelenk('noa', 'daumen_rechts', winken * 0.8),
gelenk('noa', 'hand_rechts', winken), gelenk('noa', 'hand_rechts', winken),
gelenk('noa', 'arm_rechts', arm + winken * 0.15), gelenk('noa', 'arm_rechts', arm),
gelenk('noa', 'arm_links', 3 * Math.sin(f * 0.06) + noaHuepfer(f) * 8), gelenk('noa', 'arm_links', 1 * Math.sin(f * 0.06) + noaHuepfer(f) * 1.5),
gelenk('noa', 'kopf', kopf), gelenk('noa', 'kopf', kopf),
{name: 'atmen', art: 'stauchen', um: [115, 300], sx: 1 + atmen * 0.006, sy: 1 + atmen * 0.01, gewicht: kreis(115, 240, 40, 120)}, {name: 'atmen', art: 'stauchen', um: [115, 300], sx: 1 + atmen * 0.006, sy: 1 + atmen * 0.01, gewicht: kreis(115, 240, 40, 120)},
]; ];
@ -163,6 +156,7 @@ export const VerformTest: React.FC = () => {
y={BODEN + 4 - pino.hoch} y={BODEN + 4 - pino.hoch}
stauchX={2 - pino.stauch} stauchX={2 - pino.stauch}
stauchY={pino.stauch} stauchY={pino.stauch}
drehung={pino.neigen}
knochen={pino.knochen} knochen={pino.knochen}
filter={abend} filter={abend}
/> />