Folge 8: gezeichneter Arm wieder raus (wirkte unecht), Hand-Karte bleibt; Instrumental unter dem Laternenvers als Zwischenlösung bis zum Suno-Lied
Higgsfield-Posen noa_B_hand-hase/-igel und ein dreisprachiges Laternenlied (1 Suno-Download) erzeugt Lara am PC. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
c937844f94
commit
0365df8e63
3 changed files with 14 additions and 38 deletions
|
|
@ -1,5 +1,5 @@
|
|||
import React from 'react';
|
||||
import {interpolate, useCurrentFrame} from 'remotion';
|
||||
import {Audio, Sequence, interpolate, staticFile, useCurrentFrame} from 'remotion';
|
||||
import {ClipFigur, Figur, Kamera} from '../baukasten/figur';
|
||||
import {gang} from '../baukasten/gang';
|
||||
import {Blende, Vignette, atmen, kamFahrt} from '../baukasten/helfer';
|
||||
|
|
@ -93,6 +93,13 @@ export const Szene3: React.FC = () => {
|
|||
<Abenddunkel licht={{x: lat.x, y: lat.y}} staerke={0.55 - 0.15 * licht} radius={380 + 260 * licht} />
|
||||
</Kamera>
|
||||
<Vignette />
|
||||
{/* Zwischenlösung bis zum gesungenen Laternenlied (Suno): Instrumental aus Folge 1 unter dem Vers */}
|
||||
<Sequence from={z.v1.start - 20} durationInFrames={z.w4.ende - z.v1.start + 60}>
|
||||
<Audio
|
||||
src={staticFile('musik/folge01/lied.mp3')}
|
||||
volume={(g) => 0.3 * Math.min(interpolate(g, [0, 20], [0, 1], {extrapolateRight: 'clamp'}), interpolate(g, [z.w4.ende - z.v1.start + 20, z.w4.ende - z.v1.start + 60], [1, 0], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}))}
|
||||
/>
|
||||
</Sequence>
|
||||
<Untertitel zeilen={S3.liste} />
|
||||
<Blende dauer={dauer} rein={14} raus={14} />
|
||||
</>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
import React from 'react';
|
||||
import {interpolate, useCurrentFrame} from 'remotion';
|
||||
import {Hand} from '../baukasten/hand';
|
||||
import {Blende, kamFahrt, punkt} from '../baukasten/helfer';
|
||||
import {SCHRIFT} from '../baukasten/untertitel';
|
||||
import {BODEN} from '../baukasten/orte';
|
||||
import {POSEN_SKALA} from '../baukasten/figur';
|
||||
import {Untertitel} from '../baukasten/untertitel';
|
||||
import {Blende, kamFahrt} from '../baukasten/helfer';
|
||||
import {SCHRIFT, Untertitel} from '../baukasten/untertitel';
|
||||
import {plane} from './plan';
|
||||
import {HandSchatten, NoasHand} from './teile';
|
||||
import {HandSchatten} from './teile';
|
||||
import {PLATZ, Wandszene} from './wand';
|
||||
|
||||
// Szene 7: Schattenspiel. Noa macht mit der Hand vor der Laterne einen Hasen, dann einen Igel.
|
||||
|
|
@ -29,8 +26,9 @@ export const S7 = plane('s7', [
|
|||
|
||||
const LATERNE = {x: 1010, y: PLATZ.laterneBoden.y};
|
||||
const NOA_X = PLATZ.noa + 140;
|
||||
// Noas rechte Schulter in der Hock-Pose (Bildpunkt 780/382 auf ihrer Leinwand), die Hand über der Laterne
|
||||
const SCHULTER = punkt('noa', NOA_X, BODEN, 780, 382, 340 * POSEN_SKALA.noa_B_hocken);
|
||||
// Der gezeichnete Arm wirkte unecht (Rückmeldung 06.11.) – bis die Higgsfield-Posen da sind
|
||||
// (noa_B_hand-hase / noa_B_hand-igel), zeigt nur die Karte oben die Hand; der Schatten kommt von
|
||||
// einer gedachten Hand über der Laterne.
|
||||
const HAND = {x: 955, y: 770};
|
||||
const HAND_S = 0.3;
|
||||
const K = 3; // Hand nah am Licht → großer Schatten
|
||||
|
|
@ -95,12 +93,6 @@ export const Szene7: React.FC = () => {
|
|||
<HandSchatten art="igel" hand={hand} licht={LATERNE} s={HAND_S} k={K} deckkraft={0.42 * igel} wackeln={wackelnIgel} />
|
||||
</>
|
||||
}
|
||||
vorne={
|
||||
<>
|
||||
{hase > 0 && <NoasHand art="hase" schulter={SCHULTER} hand={hand} s={HAND_S} wackeln={wackelnHase} deckkraft={hase} />}
|
||||
{igel > 0 && <NoasHand art="igel" schulter={SCHULTER} hand={hand} s={HAND_S} wackeln={wackelnIgel} deckkraft={igel} />}
|
||||
</>
|
||||
}
|
||||
/>
|
||||
<HandKarte art="hase" von={z.e1.start} bis={z.e1.frei} />
|
||||
<HandKarte art="igel" von={z.e3.start} bis={z.e3.frei} />
|
||||
|
|
|
|||
|
|
@ -219,29 +219,6 @@ export const HandSchatten: React.FC<{art: 'hase' | 'igel'; hand: {x: number; y:
|
|||
);
|
||||
};
|
||||
|
||||
// Noas Arm (Jackenärmel) von der Schulter bis zur Hand, die Hand formt Hase oder Igel
|
||||
export const NoasHand: React.FC<{art: 'hase' | 'igel'; schulter: {x: number; y: number}; hand: {x: number; y: number}; s: number; wackeln?: number; deckkraft?: number}> = ({
|
||||
art,
|
||||
schulter,
|
||||
hand,
|
||||
s,
|
||||
wackeln = 0,
|
||||
deckkraft = 1,
|
||||
}) => {
|
||||
const handgelenk = {x: hand.x - 6 * s * 10, y: hand.y + 150 * s};
|
||||
return (
|
||||
<div style={{position: 'absolute', left: 0, top: 0, opacity: deckkraft}}>
|
||||
<svg viewBox="0 0 1920 1080" style={{position: 'absolute', left: 0, top: 0, width: 1920, height: 1080, overflow: 'visible'}}>
|
||||
<path d={`M ${schulter.x} ${schulter.y} Q ${(schulter.x + handgelenk.x) / 2} ${Math.max(schulter.y, handgelenk.y) + 40} ${handgelenk.x} ${handgelenk.y}`} stroke="#c98d2e" strokeWidth={34} strokeLinecap="round" fill="none" />
|
||||
<path d={`M ${schulter.x} ${schulter.y} Q ${(schulter.x + handgelenk.x) / 2} ${Math.max(schulter.y, handgelenk.y) + 40} ${handgelenk.x} ${handgelenk.y}`} stroke="#dba443" strokeWidth={26} strokeLinecap="round" fill="none" />
|
||||
</svg>
|
||||
<svg width={HANDBOX} height={HANDBOX} viewBox="-200 -200 400 400" style={{position: 'absolute', left: hand.x - 200, top: hand.y - 200, transform: `scale(${s})`, overflow: 'visible'}}>
|
||||
<HandForm art={art} wackeln={wackeln} farbe="#f3cfaa" rand="#b9825a" />
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
// Wo die Laterne in der Pose noa_A_laterne hängt, und wie groß unsere Laterne sein muss, um die orange
|
||||
// Laterne des Bildes ganz abzudecken (gemessen: 131 × 134 Bildpunkte, Mitte bei 73/423 im Bild, Bild bei 339/156)
|
||||
export const laterneInNoasHand = (noaX: number, noaY = BODEN) => ({
|
||||
|
|
|
|||
Loading…
Reference in a new issue