youtube/remotion/src/Root.tsx
Lara bc807312a1 Drachen für „Lulu und der Drachen“: roter Papierdrachen mit Schwanz und drei Schleifen
- baukasten/drachen.tsx: <Drachen> als SVG (Raute mit Holzkreuz, leichter
  Stift-Rand), Schwanz mit wandernder Welle, weht mit `schwanz` zur Seite,
  liegt im Gras flach (`liegt`) und knickt an der Graskante um (`boden`);
  Schleifen gelb, grün, blau leuchten einzeln (`leuchten`, zum Zählen)
- drachenHalt(): Knotenpunkt für die Drachenschnur, dreht mit
- Flugbahnen: pendeln, steigen (auch aus dem Gras), trudeln (zwei Runden ins
  Gras), plumps (Windstoß hebt ihn kurz an); LIEGE_HOEHE für den liegenden
  Drachen
- DrachenschnurTest zeigt die ganze Folge (14 s) mit Noa und Schnur

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 11:08:53 +01:00

52 lines
3.1 KiB
TypeScript

import React from 'react';
import {Composition} from 'remotion';
import {HintergrundAbend, PapierStruktur, VordergrundAbend} from './szenen/Hintergruende';
import {LaterneTest} from './szenen/LaterneTest';
import {GANGTEST_DAUER, GangTest} from './szenen/GangTest';
import {VerformTest} from './szenen/VerformTest';
import {DrachenschnurTest} from './szenen/DrachenschnurTest';
import {FolgenKompositionen} from './baukasten/folge';
import {NEST_BILD} from './baukasten/natur';
import {NestStill, ORTE, OrtStill} from './baukasten/orte';
import {F01} from './folge01/Folge01';
import {F02} from './folge02/Folge02';
import {F03} from './folge03/Folge03';
import {F08} from './folge08/Folge08';
import {Banner, BannerRahmen, Profilbild} from './kanal/KanalBilder';
import {VorschauF01} from './kanal/Vorschaubild';
import {ShortKompositionen} from './shorts/Short';
import {SHORTS_F01} from './shorts/folge01';
import {SZENEN as SZENEN_F01} from './folge01/Folge01';
import {LIED01_DAUER, Lied01} from './lieder/lied01/Lied01';
import {LIED03_DAUER, Lied03} from './lieder/lied03/Lied03';
const BILD = {fps: 30, width: 1920, height: 1080} as const;
export const Root: React.FC = () => (
<>
<Composition id="Lied01" component={Lied01} durationInFrames={LIED01_DAUER} {...BILD} />
<Composition id="Lied03-DE" component={Lied03} durationInFrames={LIED03_DAUER} {...BILD} />
<Composition id="GangTest" component={GangTest} durationInFrames={GANGTEST_DAUER} {...BILD} />
<Composition id="LaterneTest" component={LaterneTest} durationInFrames={420} {...BILD} />
<Composition id="VerformTest" component={VerformTest} durationInFrames={240} {...BILD} />
<Composition id="DrachenschnurTest" component={DrachenschnurTest} durationInFrames={420} {...BILD} />
<Composition id="HintergrundAbend" component={HintergrundAbend} durationInFrames={1} {...BILD} />
<Composition id="VordergrundAbend" component={VordergrundAbend} durationInFrames={1} {...BILD} />
<Composition id="PapierStruktur" component={PapierStruktur} durationInFrames={1} {...BILD} />
<FolgenKompositionen folge={F01} />
<FolgenKompositionen folge={F02} />
<FolgenKompositionen folge={F03} />
<FolgenKompositionen folge={F08} />
<ShortKompositionen szenen={SZENEN_F01} shorts={SHORTS_F01} />
<Composition id="Kanal-Profilbild" component={Profilbild} durationInFrames={1} fps={30} width={800} height={800} />
<Composition id="Vorschau-F01" component={VorschauF01} durationInFrames={1} {...BILD} />
<Composition id="Kanal-Banner" component={Banner} durationInFrames={1} fps={30} width={2560} height={1440} />
<Composition id="Kanal-Banner-Rahmen" component={BannerRahmen} durationInFrames={1} fps={30} width={2560} height={1440} />
{(['hinten', 'vorne'] as const).map((seite) => (
<Composition key={seite} id={`F2Nest-${seite}`} component={NestStill} defaultProps={{seite}} durationInFrames={1} fps={30} width={NEST_BILD.b} height={NEST_BILD.h} />
))}
{Object.keys(ORTE).map((name) => (
<Composition key={name} id={`F2Ort-${name.replace(/_/g, '-')}`} component={OrtStill} defaultProps={{name}} durationInFrames={1} {...BILD} />
))}
</>
);