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.htmlist eine japanische Straße mit Masten, Kegeln, einem Zebrastreifen und rotem Himmel.market.htmlist 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
- 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.
- 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}. - Verwandle zwischen Einstellungen als Dolly-Zooms.
Wbleibt auf die Fokusebenezfausgerichtet, während sich das Sichtfeld ändert. Jeder Parameter folgt einer einzigen monotonen kubischen Kurve durch alle Keyframes, sodass die Geschwindigkeit nie springt. - 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
xundW), - 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.
- wo der Fluchtpunkt und der Horizont liegen (ergibt
- 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, hatscene.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).