Communitygithub.com

perspective-illusion

Crea un vídeo 3D ilustrado en bucle que juega con la percepción, al estilo de los artistas japoneses de ilusiones (p. ej. @garments__): una escena aplastada por una lente teleobjetivo se transforma en una perspectiva profunda, objetos que parecían estar uno al lado del otro resultan estar a diferentes profundidades, y elementos intercambian silenciosamente su posición mientras la vista es plana. También para recrear un vídeo de ilusión de referencia, o una nueva escena (calle, supermercado, estación, habitación) en ese estilo. Úsalo cuando te pidan un vídeo de ilusión perspectiva/óptica, un efecto "dolly zoom" o "plano a 3D", o para recrear uno de estos clips.

¿Qué es perspective-illusion?

Esta skill te permite crear vídeos 3D en bucle con estilo de ilustración que explotan ilusiones de perspectiva, inspirados en artistas japoneses como @garments__. La técnica combina una disposición de la escena a lo largo de un eje, un teleobjetivo extremo que aplasta la profundidad, y transiciones animadas (dolly zoom) que revelan la verdadera tridimensionalidad. Soporta la recreación de vídeos de referencia midiendo parámetros exactos en fotogramas clave, o la creación de nuevas escenas (calle, supermercado, estación, habitación) usando plantillas completas. La salida incluye un pasaje de ilustración que añade líneas de tinta, sombreado y un cielo plano, logrando un aspecto dibujado a mano en lugar de renderizado 3D realista. Está diseñada para flujos de trabajo con Node.js, Three.js, y Playwright, y proporciona herramientas para verificar fotogramas y evitar problemas comunes como parpadeo de texturas o sombras incorrectas.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación


name: perspective-illusion description: Crea un vídeo 3D ilustrado en bucle que juega con la percepción, al estilo de los artistas japoneses de ilusiones (p. ej. @garments__): una escena aplastada por una lente teleobjetivo se transforma en una perspectiva profunda, objetos que parecían estar uno al lado del otro resultan estar a diferentes profundidades, y elementos intercambian silenciosamente su posición mientras la vista es plana. También para recrear un vídeo de ilusión de referencia, o una nueva escena (calle, supermercado, estación, habitación) en ese estilo. Úsalo cuando te pidan un vídeo de ilusión perspectiva/óptica, un efecto "dolly zoom" o "plano a 3D", o para recrear uno de estos clips.

Ilusión de perspectiva

Las plantillas en templates/ son escenas completas y funcionales, así que empieza desde una:

  • street.html es una calle japonesa con postes, conos, un cruce y un cielo rojo.
  • market.html es un supermercado japonés con un pasillo, expositores de extremo, cestas rojas y filas de luces.

Ambas comparten el mismo montaje de cámara, línea de tiempo y pasaje de ilustración. Solo la sección de la escena es diferente.

Configuración (por carpeta de proyecto)

mkdir -p ~/Movies/edits/<fecha>-<nombre>/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     # verifica fotogramas primero (stills/st_<t>.png)
node render.mjs street.html out.mp4                     # bucle de 7 s, 1920x1080, desenfoque de movimiento de 4 subfotogramas (~2.5 min)

El truco, en cuatro partes

  1. Dispón la escena a lo largo de un eje largo (una calle o un pasillo que se aleja a lo largo de -z), con elementos alineados detrás de otros: postes o columnas en la misma x, un edificio o pared al fondo. Un teleobjetivo de 2° desde 400 m aplasta todo en una sola elevación. Los postes alineados se apilan en uno, y las paredes laterales largas desaparecen de canto.
  2. Nunca inclines ni gires la cámara. Siempre mira directamente a lo largo del eje, nivelada, para que las verticales se mantengan verticales. Para "mirar hacia abajo" o "mirar hacia arriba", usa el desplazamiento del lente (H, la posición del horizonte en el fotograma), como un lente tilt-shift. Cada toma es {x, y (altura de la cámara), zf, W, fov, H, lay, cs}.
  3. Transforma entre tomas como dolly zooms. W se mantiene encuadrado en el plano de enfoque zf mientras el fov cambia. Cada parámetro sigue una única curva cúbica monótona a través de todos los fotogramas clave, por lo que la velocidad nunca salta.
  4. Haz trampas mientras la vista es plana. Los objetos (conos, cestas) se deslizan hacia o desde la cámara solo durante las pausas planas, donde ese movimiento es invisible. Así es como una fila se convierte en una diagonal ("intercambio de frente y fondo"). También se pueden dibujar más grandes en la vista plana (cs).

Cómo recrear un vídeo de referencia (haz esto, no lo calcules a ojo)

  • Extrae sus fotogramas en cada toma. Luego, para cada toma, mide:
    • dónde están el punto de fuga y el horizonte (obteniendo H),
    • dónde aterrizan dos objetos de ancho conocido (obteniendo x y W),
    • el borde cercano y lejano de algo de longitud conocida, como un cruce (obteniendo la altura de la cámara y, la distancia y el fov). Los números resueltos están en los comentarios de la plantilla.
  • Agrupa sus fotogramas en una paleta (k-means sobre 4 fotogramas) y usa esos colores exactos.
  • Compara sus fotogramas lado a lado con los tuyos en las mismas marcas de tiempo después de cada cambio.

El pasaje de ilustración (por qué se ve dibujado, no renderizado)

La página renderiza tres pases: color (sombreado plano de dos tonos), normales en espacio de vista con profundidad, y una máscara de sombra solo del sol. Un sombreador final hace tres trabajos:

  • Líneas de tinta dondequiera que la profundidad (segunda diferencia, para que el suelo plano visto de canto no se entinte) o las normales cambien. El peso varía según el ruido y la búsqueda se tambalea ligeramente, para que las líneas no sean perfectamente rectas. El umbral de profundidad crece con la distancia.
  • Sombreado solo en la sombra proyectada: tono frío y finos trazos diagonales, desvanecidos en superficies vistas casi de canto.
  • Cielo (o techo) pintado plano donde no hay geometría.

Problemas encontrados, para que no los repitas

  • Un comentario // añadido en una sentencia de una línea se tragó scene.add(sun), lo que dejó la máscara negra y todo sombreado. Usa /* */, o una nueva línea.
  • Los pisos coplanares superpuestos parpadean a lo lejos. Haz que las piezas del piso se encuentren borde a borde.
  • Una luz que roza las paredes con un ángulo poco pronunciado da sombras propias manchadas. Mantén la luz clave a unos 45° del frente, y evita que columnas de altura completa y accesorios de techo proyecten sombras.
  • El texto nunca va en imágenes generadas ni en letreros. Los letreros son solo formas.
  • Verifica los fotogramas fijos antes de cada renderizado completo, y ejecuta la verificación de movimiento (motion_check.py de vox-explainer).

Individual skills in this repo

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

Skills relacionados