Communitygithub.com

Perspective-Illusion

Erstelle ein sich wiederholendes illustriertes 3D-Video, das mit der Wahrnehmung spielt, wie es japanische Illusionskünstler tun (z. B. @garments__). Verwende es für perspektivische/optische Täuschungen, 'Dolly Zoom' oder 'Flach-zu-3D'-Effekte oder um ein Referenzvideo nachzubilden.

Was ist Perspective-Illusion?

Diese Fähigkeit erstellt illustrierte, in einer Schleife abspielende 3D-Videos, die die Perspektive verändern: Eine Szene, die durch ein Teleobjektiv flachgedrückt wirkt, verwandelt sich in eine tiefe Räumlichkeit. Neben- und hintereinander liegende Objekte tauschen scheinbar Positionen, während der Betrachter meint, die Ansicht sei gleich geblieben. Das Tool unterstützt die Erstellung neuer Szenen (Straße, Supermarkt, Bahnhof, Raum) sowie die Nachbildung existierender Illusionsclips. Die Umsetzung basiert auf einer Kombination aus einer langen, perspektivischen Anordnung, einer starren Kamerabewegung (ohne Schwenken/Neigen) und Bewegungstäuschungen, während die Szene flach erscheint. Ein spezieller 'Illustration Pass' wandelt das 3D-Rendering in einen gezeichneten Look mit Tinte, Schraffuren und ebenen Farben um.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dotslashsimran/simcraft/tree/HEAD/skills/perspective-illusion

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation


name: perspective-illusion description: Erstelle ein sich wiederholendes illustriertes 3D-Video, das mit der Wahrnehmung spielt, wie es japanische Illusionskünstler tun (z.B. @garments__): Eine durch ein Teleobjektiv flachgedrückte Szene verwandelt sich in eine tiefe Perspektive; nebeneinander liegende Dinge erweisen sich als auf unterschiedlichen Tiefenebenen, und Objekte tauschen leise die Position, während die Ansicht flach bleibt. Auch zum Nachbauen eines Referenz-Illusionsvideos oder zum Erstellen einer neuen Szene (Straße, Supermarkt, Bahnhof, Zimmer) in diesem Stil. Verwende es, wenn nach einem Perspektiv-/Optischen Täuschungsvideo, einem „Dolly Zoom“- oder „Flach-zu-3D“-Effekt gefragt wird, oder um einen dieser Clips nachzubilden.

Perspektivillusion

Vorlagen in templates/ sind vollständige, funktionierende Szenen – beginne mit einer davon:

  • street.html ist eine japanische Straße mit Masten, Kegeln, einem Zebrastreifen und rotem Himmel.
  • market.html ist ein japanischer Supermarkt mit einem Gang, Regalendstücken, roten Körben und Lichtreihen.

Beide teilen dasselbe Kamera-Rig, dieselbe Timeline und denselben Illustrationsdurchlauf. Nur der Szenenabschnitt unterscheidet sich.

Einrichtung (pro Projektordner)

mkdir -p ~/Movies/edits/<Datum>-<Name>/stills && cd $_
printf '{"type":"module"}' > package.json && npm i [email protected] [email protected]
cp ~/simcraft/skills/perspective-illusion/templates/{street.html,render.mjs} .
node render.mjs street.html x --stills=0.2,1,2,4,6     # Zuerst Einzelbilder prüfen (stills/st_<t>.png)
node render.mjs street.html out.mp4                     # 7 s Loop, 1920x1080, 4-Unterbild-Bewegungsunschärfe (~2,5 min)

Der Trick in vier Teilen

  1. Lege die Szene entlang einer langen Achse aus (eine Straße oder ein Gang, der entlang -z verläuft), mit Objekten hintereinander: Masten oder Säulen auf gleicher x-Höhe, ein Gebäude oder eine Rückwand am Ende. Ein 2°-Teleobjektiv aus 400 m Entfernung staucht alles zu einer einzigen Höhe zusammen. Hintereinander aufgereihte Masten stapeln sich zu einem, und lange Seitenwände verschwinden von der Kante aus gesehen.
  2. Neige oder drehe die Kamera nie. Sie blickt immer gerade die Achse entlang, waagerecht, sodass Vertikalen vertikal bleiben. Für „nach unten“ oder „nach oben“ schauen verwende den Linsenshift (H, die Horizontposition im Bild), wie bei einer Tilt-Shift-Linse. Jede Einstellung ist {x, y (Kamerahöhe), zf, W, fov, H, lay, cs}.
  3. Verwandle zwischen Einstellungen als Dolly-Zooms. W bleibt auf die Fokusebene zf ausgerichtet, während sich das Sichtfeld ändert. Jeder Parameter folgt einer einzigen monotonen kubischen Kurve durch alle Keyframes, sodass die Geschwindigkeit nie springt.
  4. Schummle, während die Ansicht flach ist. Objekte (Kegel, Körbe) verschieben sich nur während der flachen Haltephasen in Richtung Kamera oder von ihr weg, wo diese Bewegung unsichtbar ist. So wird eine Reihe zur Diagonale („vorne und hinten tauschen“). Sie können im flachen Bild auch größer gezeichnet werden (cs).

Ein Referenzvideo nachbilden (so machen – nicht nach Augenmaß)

  • Ziehe die Einzelbilder zu jeder Einstellung. Miss dann für jede Einstellung:
    • wo der Fluchtpunkt und der Horizont liegen (ergibt H),
    • wo zwei Dinge bekannter Breite landen (ergibt x und W),
    • die nahe und ferne Kante eines Objekts bekannter Länge, z. B. eines Zebrastreifens (ergibt Kamerahöhe y, Entfernung und Sichtfeld). Die ermittelten Zahlen stehen in den Kommentaren der Vorlage.
  • Fasse die Einzelbilder in einer Palette zusammen (k-means über 4 Bilder) und verwende genau diese Farben.
  • Vergleiche nach jeder Änderung deine Einzelbilder seitenweise mit denen des Referenzvideos zu denselben Zeitstempeln.

Der Illustrationsdurchlauf (warum es gezeichnet aussieht, nicht gerendert)

Die Seite rendert drei Durchläufe: Farbe (zweifarbiges Cel-Shading), Ansichtsraum-Normalen mit Tiefe und einen sonnenlichtbasierten Schattenmaske. Ein abschließender Shader übernimmt dann drei Aufgaben:

  • Tintenstriche überall dort, wo sich die Tiefe (zweite Ableitung, damit flacher Boden in der Kante nicht getuscht wird) oder die Normalen ändern. Die Gewichtung variiert mit Rauschen, und die Abtastung wackelt leicht, sodass die Linien nicht linealgerade sind. Die Tiefenschwelle wächst mit der Entfernung.
  • Schraffuren nur im Schlagschatten: abgekühlter Ton und feine diagonale Striche, die auf fast von der Kante aus gesehenen Oberflächen verblassen.
  • Himmel (oder Decke) wird flach gemalt, wo keine Geometrie ist.

Probleme, die aufgetreten sind – damit du sie nicht wiederholst

  • Ein //-Kommentar, der zu einer einzeiligen Anweisung hinzugefügt wurde, hat scene.add(sun) verschluckt, was die Maske schwarz und alles schraffiert hinterließ. Verwende /* */ oder eine neue Zeile.
  • Überlappende koplanare Böden flackern in der Ferne. Bringe Bodenstücke stattdessen Kante an Kante zusammen.
  • Licht, das Wände in flachem Winkel streift, verursacht fleckige Selbstverschattung. Halte das Hauptlicht etwa 45° von der Vorderseite und verhindere, dass durchgehende Säulen und Deckenleuchten Schatten werfen.
  • Text erscheint nie in generierten Bildern oder auf Schildern. Beschilderung besteht nur aus Formen.
  • Überprüfe vor jedem vollständigen Render die Einzelbilder und führe die Bewegungskontrolle durch (vox-explainer's motion_check.py).

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

Verwandte Skills