đ„ Kamera-BĂŒhne â Handoff fĂŒr die Katzen
Von der Snake-BĂŒhne zum Side-Scroller. Prototyp: hoerraum/stage_snake_prototype.html.
Vorgeschichte: HANDOFF_STAGE_BAUSTEINE.md (Bausteine-Sichtung), Snake-Prototyp davor.
Die eine Idee
Zoom, Parallax und (spĂ€ter) Gaming sind KEINE drei Baustellen â es ist ein Treiber: die #camera-Group.
Wer die Kamera versteht, versteht alle drei. Nichts davon ist ein Neuanfang.
Was jetzt drin ist (stage_snake_prototype.html)
#camera-Group umschlieĂt die ganze Szene. Darin drei Tiefen-Layer mitdata-depth
(0.15Himmel ·0.55Boden ·1Figuren-Vordergrund).- Zoom im Wechsel mit den Sprechern. Keyframe-Liste
CAM = [storySekunde, zoom, cx, cy],
cx/cy= der Frame-Punkt, der zentriert wird. Weit beim ErzĂ€hler â rein auf Snakepy beim Reveal
(2Ă) â wieder raus beim DavonschlĂ€ngeln. Interpoliert mit easeInOutQuad, getrieben vonapplyCamera(t). - Parallax aus demselben Schwenk. Jeder Layer bekommt
translateX = pan · (depthâ1) · 0.4
(pan = cxâ500): ferne Layer schleppen hinterher â Tiefe. Keine zweite Mechanik, nur ein Faktor. prefers-reduced-motion: Kamera bleibt weit + statisch (REDUCEinapplyCamera).
Die Formel (fĂŒrs Weiterbauen)
applyScene(t) = tl.seek(t) // Figuren-Timeline (anime.js)
+ baseTransform(t) // S-Wackeln der Schlange
+ applyCamera(t) // Zoom + Parallax
Kamera zentriert Punkt (cx,cy) bei Zoom s:
translate(500 â cx·s, 280 â cy·s) scale(s) auf #camera (1000Ă560-viewBox, Mitte 500/280).
Fallstricke (schon eingetreten, nicht nochmal reinlaufen)
- anime.js ĂŒberschreibt
style.transformkomplett. Figuren brauchen zwei Ebenen: feste Platzierung
(translate/scale) im SVG-Attribut auĂen, anime-Ebene innen (mount()). Sonst springt alles in den Ursprung. scaleauf SVG-<circle>(Augen) wirft sie vom SVG-Ursprung weg. Nur OpazitĂ€t animieren.- Kamera per Attribut, Layer-Parallax per
style.transformâ nicht mischen, sonst clobbert sich's.
NĂ€chste Stufen (erst bauen, wenn eine Episode es braucht â nicht spekulativ)
- In den echten Player falten:
#cameraum#groundSceneinseason_player.template.htmlziehen,
CAM-Keyframes aus den Caption-Zeiten ableiten.applyCamera(t)hÀngt dann anaudio.currentTime
statt an der Prototyp-Uhr â sonst identisch. - Parallax ĂŒbers Scrollen (ganze Geschichte visualisieren):
cxnicht aus Keyframes, sondern aus
Scroll-Fortschritt speisen. GleicheapplyCamera. - Gaming (zwischen Zelda & Mario): Kamera folgt einer Figur statt der Timeline. Treiber Uhr â Eingabe.
Alles andere bleibt.
Lore bleibt
Sternbild-Folgen (offen/5, kein Hexagon) behalten FĂ€den+Punkte. Bunt + Kamera sind pro Episode,
nicht global. đ„· Das Keks-Handbuch-Easter-Egg bleibt versteckt.
Klang â Bits â BĂŒhne â Wald. onezeromore <3