Narración visual
Cómo construir la capa visual de un vídeo extenso para que el espectador siga orientado en el minuto nueve. Se aplica a cualquier vídeo con una persona hablando y un guion: un análisis de noticias, una inmersión profunda en un solo tema, una comparativa, un tutorial, una lista.
El fallo que esto reemplaza es el pensamiento por escenas. Un nuevo gráfico cada pocos segundos obliga al espectador a reiniciar la comprensión cada pocos segundos, y ningún gráfico individual tiene la culpa, por lo que la crítica llega como el vago "confuso" o "demasiadas cosas" en lugar de un defecto específico.
Para una hoja de ejercicios de práctica neutral, lee docs/STORYTELLING-WORKBOOK.md en la
raíz del repositorio. El sistema de diseño reutilizable está en
reference/design-system.md de esta habilidad; la geometría de bucle abierto trabajada está en
reference/patterns/wall-of-slots/. No se requieren vídeos fuente privados.
Esto no es hyperframes-video-beats. Esa habilidad coloca tarjetas superpuestas sobre una
persona hablando. Esta diseña aquello de lo que trata el vídeo.
1 · Los cuatro principios
Un mundo persistente
El vídeo vive en un único espacio y nunca se reinicia. Todo lo que el espectador ya ha visto sigue existiendo donde lo dejó, y el material nuevo se añade a él en lugar de reemplazarlo. Un elemento, una vez dibujado, nunca se redibuja, mueve o vuelve a etiquetar.
Todo lo demás en esta habilidad depende de ello. La cámara no tiene a dónde ir si el espacio sigue cambiando, un foco no significa nada si no hay nada más en pantalla, y un bucle abierto no puede permanecer abierto en un mundo que se reinicia.
El mundo también tiene que merecer la pena quedarse en él, así que decide la gramática espacial antes de construir nada y mantenla durante toda la duración. En la construcción de referencia: de izquierda a derecha es hacia el resultado, arriba es hacia un humano y es lo único cálido en pantalla, abajo es hacia un sistema de registro. Un espectador que aprenda eso en los primeros dos minutos lee el resto del vídeo sin esfuerzo.
Rompe la gramática exactamente una vez, deliberadamente, para dar significado. El único movimiento de derecha a izquierda en diez minutos de la construcción de referencia es un ticket resuelto que retrocede a la cola con las palabras "tasa de reapertura". Aterriza sin una palabra porque la dirección había significado algo durante los tres minutos anteriores.
La cámara es la edición
Cortar a un nuevo gráfico le cuesta al espectador su orientación cada vez. Moverse por un espacio que permanece fijo no les cuesta nada. Un zoom-in entonces se lee como "mira más de cerca la parte de la cosa que ya entiendes", y el zoom-out es donde el trabajo da sus frutos, porque todo lo construido hasta ahora sigue ahí.
Trabaja en tres altitudes y muévete entre las adyacentes:
| Altitud | Muestra | Se utiliza para |
|---|---|---|
| Mundo | todo el espacio | orientar, remates, "aquí es donde estamos" |
| Región | el subgrafo en discusión | la mayor parte del tiempo |
| Detalle | un elemento | un número, un cambio de estado, una decisión |
Saltar de detalle a mundo es desorientador a menos que sea un remate deliberado, en cuyo caso es el mejor movimiento disponible.
Reglas que cuestan una reconstrucción cada una al aprenderlas:
- Nombra los encuadres como ventanas exactas del mundo, no como factores de escala. Los límites de la ventana deben caer entre etiquetas. Especificar un encuadre como "escala 0.6" corta palabras por la mitad en el borde del fotograma.
- Reutiliza la misma ventana para el mismo propósito. Si el plano de orientación es una ventana en particular, usa siempre esa ventana exacta. Los encuadres casi idénticos se leen como deriva.
- Varía la duración con la distancia recorrida, no con un ajuste preestablecido global.
- Las transiciones de cámara y de pantalla completa se secuencian, nunca se superponen. Concurrentes, guillotinan el contenido. Primero la cámara, luego la transición.
- Una capa de cubierta se vuelve opaca antes de que la cámara se mueva debajo de ella. Si se invierte, parte del movimiento queda expuesta y se lee como un corte brusco.
- Ninguna etiqueta a menos de 60px del borde del fotograma. Un elemento puede sobresalir y leerse como "el mundo continúa"; una palabra cortada por la mitad del glifo se lee como un error. Resuélvelo mediante la colocación, no mediante enmascaramiento, ya que un difuminado no puede atrapar una cuchilla que viaja a ~1800 px/s.
- Dos movimientos secuenciales sobre el mismo sujeto se leen como un fallo. Un reencuadre que termina Y LUEGO una transición que comienza es un zoom, una parada en seco y un segundo movimiento: el cliente lo llama "un fallo y una pausa". Combínalos en UN SOLO gesto: una curva de aceleración simétrica compartida (power2.inOut), aterrizando en el mismo fotograma, de modo que el panel se lea como si empujara el metraje a un lado. Relacionado: las curvas de aceleración con carga frontal (power3/4.out) en un movimiento de metraje visible cargan frontalmente ~90% del recorrido y se arrastran hasta detenerse; resérvalas para las entradas de elementos, donde el arrastre se lee como asentamiento. (Costó una revisión marcada por el cliente en la introducción del ejemplo trabajado).
La atención es un foco
Exactamente un elemento al máximo brillo en cualquier momento. Todo lo demás ya dibujado permanece en calma pero legible. No es opcional. Esta es la regla que permite que un mundo se acumule hasta una docena de elementos sin sentirse nunca recargado, y es lo que hace que el zoom-out sea legible en lugar de abrumador.
La jerarquía proviene de la PROPORCIÓN entre activo y en calma, nunca de oscurecerlo todo. El primer prototipo de la construcción de referencia tenía un píxel más brillante de 101/255 y era ilegible a 960x540; la solución fue tinta más brillante, no más atenuación.
| Estado | Luminancia objetivo (Y, 16-235) | Opacidad en la referencia |
|---|---|---|
| Trazo activo + etiqueta | 200-235 | 1.0 |
| Contexto, dibujado y aún relevante | 120-150 | 0.56 |
| Gastado, ya cumplió su función | 85-105 | 0.33 |
| Cualquier etiqueta, cualquier estado | nunca por debajo de 90 |
La implementación es una función, llamada en cada latido de la narración con los ids
que se están mencionando (build_s01.py, lit()):
def lit(t, active, warm=(), dur=0.5, floor=FLOOR):
active = list(active) + [g + "-l" for g in active if g + "-l" in order]
for gid in order:
if gid not in opac: # nunca dibujado: nada que iluminar
continue
tgt = 1.0 if gid in active else (WARM if gid in warm else floor)
if gid not in active:
tgt = min(tgt, MUTED.get(gid, 1.0))
...
Tres detalles en eso son fundamentales:
- Una etiqueta siempre hereda el estado de su elemento (la fusión del sufijo
-l). Un elemento iluminado con una etiqueta ilegible debajo es exactamente el defecto que se está corrigiendo. - Un accesorio que ha terminado se retira a opacidad 0, a través de un límite
MUTED, no a 0.3. Silenciar a 0.3 deja confeti inexplicable en pantalla durante el resto de la sección. Regla del generador: emitemute()antes de cualquierlit()que comience más tarde, o el silencio se sobrescribe cuando su interpolación se completa. - Los eventos de opacidad deben emitirse en orden temporal o el rastreador ve un estado
obsoleto y calcula el objetivo incorrecto. Mantén un guardia
seq()que genere una excepción en emisiones fuera de orden. - Una autoridad de opacidad por elemento por ventana. Dos interpolaciones simultáneamente
activas que conducen la opacidad del mismo elemento a valores diferentes se renderizan suavemente
en una sección independiente pero estroboscópicas a ~10Hz en el máster ensamblado, donde la
interpolación ganadora alterna por fotograma. La construcción de referencia envió este defecto en
cada muelle. Cuando un barrido como
lit()se superpone a un aclarado o silencio explícito, la interpolación que comienza más tarde es el único controlador y el barrido omite esos ids (lit(..., skip=(...))). Verifícalo: escanea los renders ensamblados en busca de picos de luminancia de ida y vuelta de un fotograma en cada ventana de transición (qa/v4/flicker/qa-flicker.mjsen la construcción de referencia).
Los bucles abiertos son espaciales
Nunca digas "volveremos a esto". Deja algo visiblemente incompleto en el mundo y vuelve a ello. Una promesa que el espectador puede ver es una promesa que puede sentir pendiente.
El mecanismo es idéntico sea cual sea la forma:
- Plántalo en el gancho, en el espacio, en la línea que hace la promesa.
- Vuelve a mostrarlo en cada límite. Cualquier traspaso de sección es un límite. La reexposición cuesta unos dos segundos y es el mecanismo de retención; saltárselo es cómo un remate acaba no dando resultado.
- Avanzalo visiblemente. El espectador debe ver la incompletitud reducirse.
- Cierra en la imagen con la que abriste.
Elige la forma del guion:
| Forma del guion | El mundo | Lo que está incompleto |
|---|---|---|
| N elementos paralelos | N ranuras en un eje | ranuras vacías (ver reference/patterns/wall-of-slots/) |
| Un proceso, profundo | todo el proceso, trazado | un enlace roto o faltante |
| Niveles o escalones | una pila que se construye hacia arriba | la parte superior de la pila es un fantasma |
| Comparativa | dos columnas en un eje compartido | una columna vacía, o una tarjeta de puntuación sin rellenar |
| Noticia o anuncio | una línea de tiempo, o un mapa del paisaje | el lado derecho, el futuro, está en blanco |
| Tutorial o construcción guiada | la arquitectura terminada, fantasma | cada nodo aún no construido |
Entregar un elemento a su ranura es un movimiento de cámara en vivo, ~1.4s, nunca un corte a una imagen prefabricada del estado lleno. El espectador observa la cosa que acaba de aprender convertirse en la ficha. Si el vídeo tiene un número o contador, hazlo girar dentro de ese mismo movimiento, como un odómetro, con la misma duración y curva de aceleración para ambos dígitos o se fusionan en una banda a mitad del giro.
El contador necesita un nombre, no solo un número. Un número en una esquina le dice al espectador dónde está en la secuencia pero no qué es el elemento actual ; nueve minutos después, "03" no transmite nada. Empareja el número con una etiqueta de 1-2 palabras que nombre elemento actual (SOPORTE, VOZ IA), en la misma química de placa, moviéndose como una sola fijación rígida con el número, intercambiando dentro del mismo giro del odómetro. La revisión del cliente de la construcción de referencia pidió exactamente esto: los visuales eran buenos y el espectador aún perdía el rastro de qué caso de uso estaba en pantalla.
2 · Disciplina
Si no recibe una palabra, no se dibuja
Cada forma es un elemento etiquetado, un conector entre elementos etiquetados, el sujeto viajero o el fondo ambiental. Nada más.
Esto surgió de una revisión de prueba silenciada que obtuvo una puntuación de comprensión de 7/10 y nombró la causa: el diagrama estaba limpio, las decoraciones no. Una docena de formas sin etiquetar dibujadas con el mismo peso y paleta que las significativas, por lo que un espectador novato no puede distinguir la señal de la textura y dedica atención real a decodificar cosas que nunca pretendieron ser decodificadas. Eso es "demasiadas cosas" reubicado de palabras a formas.
Presupuesto: ~20 palabras en pantalla por sección. Sin oraciones. Las etiquetas son de 1-2 palabras, debajo de su elemento. La sección de referencia 1 tiene 21 palabras en 84 segundos.
Corolario: un visual contra-ejemplo nunca se superpone a la recomendación. Lleva el mundo a casi negro primero, o coloca el contraejemplo donde no esté el diagrama bueno.
Dale al espectador una cosa que seguir
Lleva la historia en un solo sujeto viajero cuyo estado cambia visiblemente: un chip con filas de datos y una barra de puntuación, un documento, una solicitud. Las filas se llenan, una barra se mueve, un borde cambia de color. Un espectador debe poder seguir una sección completa observando ese único objeto, y nunca debe teletransportarse; se mueve a lo largo de conectores dibujados a una velocidad constante.
Un conjunto global de fichas
Detalle completo en reference/design-system.md.
| Ficha | Valores |
|---|---|
| Trazo | 1.5 / 2.5 / 4 / 7, y nada más |
| Tipo | 22 / 30 / 42 / 60 / 84 |
| Radio | 10 / 22 / 40, siempre superelipse(2) |
Cinco colores, cinco significados fijos, cero decoración. Cálido significa que un humano está involucrado y nada más es nunca cálido. Nunca blanco puro para el texto; forma halos en fondo oscuro.
El fallo que esto previene, de la revisión técnica de la primera construcción: "cada decisión se tomó local y correctamente; ninguna decisión se tomó globalmente." 18 pesos de trazo y 9 tamaños de texto, la mayoría de ellos con 0.2 de diferencia, individualmente invisibles y colectivamente fatales. El ojo recibe ruido en lugar de jerarquía. Verifícalo con un linter de fichas que falle en la construcción.
Movimiento
Entradas con cubic-bezier(0.16,1,0.3,1), salidas más rápidas que las entradas, duración
variable según la masa para que un nodo de 290px y una etiqueta de 40px no desaceleren
de manera idéntica, y back.out exactamente una vez por sección, en el latido que lo merece.
Nunca transiciones cruzadas (cross-fade). Las capas a sangre entran y salen mediante recorte (clip) sobre un fondo ya opaco. En cualquier instante, un píxel es o gráfico o metraje.
3 · Contrato de construcción
- Un generador por sección.
scripts/build_<id>.pyescribe solocompositions/<id>.html. Edita el generador, nunca el HTML generado. Las raíces de secciónindex-*.htmlse mantienen a mano, por lo que los cambios de encuadre van allí. - Los módulos compartidos se mantienen compartidos. Cualquier cosa que defina geometría compartida es importada por cada sección. Si las secciones son construidas por agentes paralelos, prohíbeles tocar los módulos compartidos; geometría divergente rompe silenciosamente cada traspaso.
- Espacio de nombres para las definiciones SVG antes del ensamblaje. Cada sección define sus propios
gEdge,shadow,edgeFade. En un DOM ensamblado,url(#id)se resuelve a la primera coincidencia en orden de documento, por lo que una vez que una composición anterior se desmonta, cada gráfico posterior pinta nada. Coste en la construcción de referencia: 35 segundos de pantalla vacía con todas las compuertas en verde. Solo mirar el render ensamblado lo detectó. - Sincroniza todo con los inicios de palabra de una transcripción a nivel de palabra, entrando 0.15-0.25s antes de la palabra ancla. Nunca dividas una sección uniformemente en latidos.
- Audita los espacios vacíos. Cualquier tramo de más de ~1.5s sin que ocurra nada es una pantalla muerta; haz que el generador los imprima.
- Deja aire en el corte. El recorte agresivo de pausas produce espacios casi nulos en los
límites de las oraciones que el cliente escucha como "tartamudeos" y cortes bruscos.
Calibra contra la norma del propio hablante: marca los espacios en los límites de las oraciones que sean
~10 veces más ajustados que su mediana (la del hablante de referencia era de 470 ms; las uniones
marcadas estaban en 20-40 ms), y repara insertando 4-8 fotogramas de aire, las palabras nunca se tocan.
El aire es una rebanada donante del tono de sala real de la pista con fundidos de 10 ms,
nunca
anullsrc: el silencio digital contra un piso de -50 dBFS es una caída audible. El vídeo mantiene el fotograma; entre oraciones, una cabeza parlante está casi quieta y 4-8 fotogramas de pausa es invisible. Los cambios de solo inserción desplazan la transcripción de manera determinista, por lo que no se necesita una retranscripción. Los bordes de una inserción deben respetar la envolvente del habla: juntar el tono donante con la cola de una palabra en 1 ms am
…
[truncado para la traducción]