En los estudios de animacion tradicional de los anos 30, los animadores trabajaban sobre mesas de luz. Colocaban una hoja de papel sobre otra y la luz inferior les permitia ver el dibujo anterior por transparencia. Asi nacian los principios de anticipacion, seguimiento y arcos. Esa tecnica tiene nombre: onion skin, piel de cebolla, por la forma en que las capas se superponen como las peliculas del bulbo.
FAP Mobile Web lleva esa tecnica centenaria al lienzo digital con una implementacion que te permite ver no solo el pasado de tu animacion, sino tambien su futuro.
La mecanica de las capas fantasma
El sistema de onion skin de FAP muestra seis frames fantasma superpuestos sobre tu frame actual: tres anteriores y tres posteriores. Los frames previos aparecen tenidos de rojo #FF4444. Los frames posteriores, de verde #44FF44. La opacidad se degrada con la distancia al frame actual siguiendo una formula lineal:
alpha(i) = 0.35 (1 - (i - 1) 0.25)
Donde i es la posicion relativa al frame actual. El frame inmediatamente anterior (i = 1) tiene alpha = 0.35, un 35 por ciento de opacidad. El segundo (i = 2) baja a alpha = 0.2625, aproximadamente 26 por ciento. El tercero (i = 3) cae a alpha = 0.175. Los tres frames posteriores siguen la misma degradacion pero en el canal verde.
Esta asimetria cromatica no es arbitraria. El rojo y el verde son colores complementarios en el espectro visible. El ojo humano los separa con facilidad incluso en condiciones de baja opacidad. Puedes ver simultaneamente de donde viene tu personaje y hacia donde va, sin confusion visual.
La optimizacion silenciosa: strokeCanvases
Aqui entra una de las decisiones arquitectonicas mas elegantes de FAP Mobile Web: los strokeCanvases. Cada frame tiene dos representaciones en memoria. El frameCanvas contiene el dibujo completo con su fondo blanco. El strokeCanvas contiene exclusivamente los trazos, sin fondo, sobre un lienzo transparente.
Cuando el sistema necesita aplicar onion skin, no puede simplemente superponer los frameCanvases: el fondo blanco de cada uno taparia todo lo demas. En cambio, toma los strokeCanvases de los frames adyacentes, les aplica el tinte y la opacidad correspondientes, y los dibuja encima del frame actual usando globalCompositeOperation = 'source-atop'.
source-atop es una de las operaciones de composicion definidas por el estandar Porter-Duff del W3C. Dibuja el nuevo contenido solo donde el destino ya tiene pixeles opacos, respetando la transparencia del destino. En terminos practicos: el fantasma rojo o verde aparece unicamente donde tu frame actual tiene trazos, creando una superposicion limpia y legible.
De los trazos a la fluidez
La funcion tintAndDraw es el corazon del onion skin. Recibe un strokeCanvas, un color de tinte y un valor de opacidad. Primero dibuja el strokeCanvas sobre un lienzo temporal con el color solido. Luego aplica globalAlpha para la transparencia. Finalmente compone el resultado sobre tu drawCanvas usando source-atop.
Todo esto ocurre en menos de 16 milisegundos, el presupuesto de tiempo para mantener 60 FPS en el navegador. Los calculos de opacidad son operaciones de punto flotante que el motor JavaScript resuelve en nanosegundos. La carga de los strokeCanvases adyacentes se hace bajo demanda con ensureFrameCanvas, que verifica si el buffer ya existe en memoria y, si no, lo reconstruye desde el almacenamiento.
Por que el onion skin cambia tu forma de animar
Sin onion skin, animar cuadro por cuadro es como dibujar a ciegas. Cada frame es una isla. Con onion skin activado, cada frame es un eslabon visible de una cadena temporal. Puedes ver la trayectoria completa de un movimiento mientras lo dibujas. Detectas errores de interpolacion antes de llegar al frame 10. Ajustas timing y spacing con precision milimetrica.
Los grandes animadores de Disney pasaron decadas perfeccionando esta tecnica sobre mesas de luz de madera y vidrio esmerilado. Tu tienes la misma capacidad, con tres frames de pasado y tres de futuro, con codigo abierto y en tu telefono. La unica diferencia es que no necesitas bombillas.

Hashtags: #onionSkin #pielDeCebolla #animaciónTradicional #traditionalAnimation #mesaDeLuz #lightTable #framesFantasma #ghostFrames #pasadoYFuturo #pastAndFuture #tinteRojo #redTint #FF4444 #tinteVerde #greenTint #44FF44 #coloresComplementarios #complementaryColors #degradaciónDeOpacidad #alphaDegradation #strokeCanvases #frameCanvas #drawCanvas #tintAndDraw #PorterDuff #sourceAtop #compositingStandard #W3Cstandard #globalCompositeOperation #60FPS #16milisegundos #16msBudget #ensureFrameCanvas #cargaBajoDemanda #lazyLoading #timing #spacing #precisiónDeAnimación #animationPrecision #anticipación #seguimiento #arcos #animationArcs #12PrincipiosDeAnimación #DisneyAnimation #eslabónTemporal #timeChain #visualizaciónTemporal #temporalVisualization #animaciónCuadroPorCuadro #frameByFrame #códigoAbierto #openSourceAnimation #mesaDeLuzDigital #digitalLightTable #onionSkinMóvil #mobileOnionSkin #sinBombillas #lightlessAnimation
