Reel de portal de teléfono
Resumen
Anuncio de producto de 9 segundos en formato 9:16, grabado en un solo plano fijo con trípode, en tres tiempos:
- Caída del portal (aprox. 4,3 s). Una mano sostiene un teléfono. Otra mano lo desliza, y cada deslizamiento deja caer un producto fuera de la pantalla sobre un estante debajo, cayendo al ritmo. El producto estrella cae al último, tras una pausa total en la música.
- Reordenación en stop motion (aprox. 2,7 s). Un corte brusco elimina las manos y el teléfono. El producto gira a lo largo de toda la línea, una imagen fija por semicorchea, manteniéndose en los cuatro tiempos.
- Logotipo fijo (aprox. 2 s). La marca aparece gradualmente en 6 a 8 fotogramas y se queda fija. Solo música, sin voz.
No hay metraje de cámara. Una sola foto generada se divide en capas (fondo, teléfono y mano que lo sostiene, mano que desliza) y se anima con código. El producto es un modelo 3D real, renderizado por la misma cámara dentro del teléfono y en la habitación, por lo que cruza el vidrio como un solo objeto.
El nivel: debe pasar por una grabación real. Cada fallo que tuvimos fue una rotura de continuidad que alguien vio en un solo fotograma. Mira a tamaño completo, en cada momento de contacto, en el archivo final.
Necesitas
| Necesidad | Para |
|---|---|
OPENAI_API_KEY | gpt-image-2 para la placa y el maestro; gpt-image-1.5 con input_fidelity: high para ediciones que deben conservar la foto |
ELEVENLABS_API_KEY | La banda sonora (music_v2_5) y efectos de sonido |
CLI de HyperFrames (npx hyperframes), three.js r169 | El motor de fotogramas y el renderizado |
ffmpeg; Python 3 con numpy opencv-python-headless pillow openai | Los scripts |
Los scripts leen las claves del entorno o de un archivo .env en la carpeta de trabajo o en cualquier carpeta superior. Nunca las imprimen. Informa de lo que gasta cada ejecución: dólares de OpenAI (los scripts registran una estimación) y créditos de ElevenLabs.
Si alguien puede filmar una mano real deslizando un teléfono sobre un trípode, usa ese metraje para la mano. Es la parte más difícil de falsificar.
Puertas: detente para obtener un visto bueno en cada una
- Brief y hoja de ritmo. La marca, de 4 a 6 productos (el héroe al último, en el color que complemente el fondo), el fondo y un tempo donde un tiempo sea un número entero de fotogramas. A 30 fps, 112,5 BPM da 16 fotogramas, 120 BPM da 15 y 90 BPM da 20. Coloca cada caída en la cuadrícula de la música, en un tiempo o medio tiempo, nunca entre medias. Para el número de caídas, consulta
references/build.md, sección 1. - Aspecto. La placa, el maestro (manos y teléfono), un primer renderizado del producto 3D en la cámara ajustada y la tarjeta final con 3 combinaciones de fuentes, todo en una sola hoja.
- Prueba de movimiento. Un deslizamiento y una caída, renderizados a calidad de entrega y revisados fotograma a fotograma. La mayoría de los fallos aparecen aquí.
- Construcción, luego sonido y luego el final.
Construcción
Sigue references/build.md. Tiene cada paso, con los números que funcionaron. En orden:
- Genera una placa (el fondo vacío), luego un maestro: una edición de la placa que añade ambas manos y un teléfono en blanco. El maestro es el fotograma. Cada placa limpia se hace a partir de él.
- Corta capas del maestro y mide las esquinas de la pantalla, el borde inferior de la pantalla, la punta del dedo y la muñeca.
- Ajusta la cámara 3D a los bordes del estante.
- Construye el motor. Copia
example/studio/(la construcción de referencia: una marca de té, cinco cajas) y vuelve a medir sus constantes para tu placa. Solo contiene código: trae tus propias imágenes, fuentes, arte de etiquetas y archivos three.js. Si el producto no es un cartón (un frasco, una botella, una lata, cualquier cosa de vidrio), lee primero "Otros productos" enbuild.md. - Haz la música primero y mide sus tiempos. Luego fija las caídas a la cuadrícula, añade efectos de sonido y mezcla.
- Renderiza, luego ejecuta las comprobaciones siguientes.
Reglas que rompieron la ilusión
| Lo que se vio | Solución |
|---|---|
| El producto aparece debajo del teléfono unos fotogramas tarde | Es un solo objeto 3D a ambos lados del vidrio. Resuelve cada deslizamiento hacia atrás desde su fotograma de caída: desde el fotograma en que su punto más bajo llega al borde, cae bajo gravedad a la velocidad del desplazamiento |
| El producto cae detrás de la mano | Por debajo del borde inferior de la pantalla, dibújalo delante del bisel y los dedos |
| Se queda colgado bajo el teléfono unos fotogramas | La gravedad actúa en el borde. No dejes que siga el deslizamiento de la página |
| El deslizamiento parece una foto que se desliza | Muévete desde la muñeca y mantén el antebrazo rígido. Resuelve el ángulo de la muñeca para que la punta del dedo se mueva con la página. No hay dos deslizamientos iguales |
| El fotograma parece una imagen fija | El teléfono sostenido se mueve de 1,5 a 2 píxeles y cede bajo cada presión. La pared nunca se mueve |
| Una línea oscura se mueve a través del teléfono | Sin divisores de página en el feed. Mantén cualquier efecto fantasma bajo |
| Un reloj o joya se desliza en la muñeca | Pide una muñeca desnuda en el maestro. Si entra uno, enmascáralo todo y elimínalo con scripts/blend-edit.py |
| Un corte se convierte en una disolución | Decide cada corte, intercambio y imagen fija en todo el fotograma, nunca dentro de las muestras del obturador |
| La etiqueta se imprime como un peine de copias | Usa 48 subfotogramas mientras el producto cae y 10 en caso contrario, con un obturador de 0,38 fotogramas |
| Una edición generada movió cosas fuera de su máscara | Las ediciones enmascaradas no se respetan. Registra la edición, luego tómala solo dentro de la máscara |
| Un golpe suena antes de la caja | Recorta cada toma a 4 ms antes de su ataque más fuerte y alinea en ese ataque |
La lista completa, con causas, está en references/lessons.md.
Comprobación antes de enviar
- Recortes a tamaño completo del archivo final en cada momento de contacto: el primer fotograma de cada deslizamiento, el producto cruzando el borde, cada caída, el corte y el brazo saliendo del fotograma.
python3 scripts/sync-sheet.py final.mp4 --audio sound/stems/sfx.wav: cada golpe se sitúa en su fotograma delineado.bash scripts/check-final.sh final.mp4 1080x1920: -14 LUFS ±1 y un pico verdadero en o por debajo de -1 dBTP.
Scripts
| Script | Hace |
|---|---|
scripts/openai-image.py OUT.png "prompt" [--edit IN.png --mask M.png --fidelity high] | Genera o edita una imagen y registra los tokens y un costo estimado |
scripts/blend-edit.py crop / blend | Prepara una edición enmascarada de una región, luego registra el resultado y lo toma solo dentro de la máscara |
scripts/elevenlabs.py spec.json OUTDIR | Genera la banda sonora y los efectos a partir de una especificación, los almacena en caché y registra los créditos gastados |
scripts/beats.py bed.mp3 | Encuentra el tempo del fondo musical, su cuadrícula de tiempos y su primer tiempo fuerte |
scripts/sync-sheet.py VIDEO --audio sfx.wav o --cues cues.json | Muestra los cinco fotogramas alrededor de cada golpe de sonido, en una hoja |
bash scripts/check-final.sh VIDEO [WxH] | Verifica tamaño, fps, duración, sonoridad y pico verdadero |
Ejecuta cada uno con --help para sus opciones. example/README.md mapea la construcción de referencia.