Me enrollo como una persiana

Qué duda cabe que en la era de la programación visual uno tiene que estar al día con las tecnologías de animación y de 3D.

Y es que las animaciones, en móviles o en escritorios, son una herramienta fundamental para transmitir información al usuario de forma sencilla e intuitiva. Después de todo, si una imagen vale mil palabras, ¿cuántas palabras no valdrá una animación que contenga mil imágenes?

Apple

Todavía no me he estudiado los mecanismos de animación de Android (este tutorial me podría valer), pero sí que he profundizado en el excelente framework de animaciones de Apple: Core Animation.

Siento enrollarme tanto, pero es que ¡me anima!

El framework de animaciones de Apple es estupendo porque mantiene copias del árbol de capas que conforma un dibujo (los rectángulos, los textos, etcétera), y puede enviar estas copias a la GPU para que se vayan pintando mientras uno se dedica a otra cosa. Esto es una gran ventaja porque uno no tiene que preocuparse (demasiado) por el rendimiento o por la sincronización de hilos. Uno le dice al programa: anímate "así y asá" y voilá: el framework se lo hace.

Apple y las matemáticas

Además de estas maravillas para la gestión de la concurrencia resulta que el framework tiene un aparataje matemático relativamente sencillo, que permite pintar objetos 3D en pantallas bidimensionales (técnica que se conoce como 2.5D). La técnica no es lo mejor que hay para hacer 3D (existe también el framework OpenGL ES que consume más recursos), pero es una técnica eficiente y efectiva.

Este aparato matemático es más sencillo de lo que parece. Hay una serie de transformaciones 2D hechas con matrices tridimensionales y otra serie de transformaciones 3D hechas con matrices de cuatro dimensiones. Puede que todo esto suene a ciencia ficción, pero la verdad es que son matemáticas de BUP (o ESO o como se llame eso).

Por cierto: la dimensión extra es realmente necesaria: después de todo uno no podría darle la vuelta a una página de un libro (2D) sin una dimensión extra, ¿no? Pues lo mismo en 2.5D.

Apple y las matemáticas y la web

Todavía no hay un estándar para hacer 2.5D en la web. Existe, sin embargo, este working draft del W3C de 2012 que creo que se soporta en la mayoría de navegadores web actuales.

Es curioso observar cómo de los cinco editores del working draft del W3C resulta que tres son de Apple, uno de Adobe y otro de Mozilla. Y como no podía ser de otra manera estos tres editores de Apple transfieren las matemáticas de su framework a la web. De hecho las matrices que se usan en la web son exactamente las mismas que se usan en el framework de Core Animation de Apple.

Esto tiene unas ventajas estupendas, porque uno se puede estudiar las matrices de Apple (tras hacerse esos cursos de BUP o de ESO) y resulta que ya entiende perfectamente las matrices de la web, o a la inversa.

Y, además, uno puede hacerse transformaciones en la web y luego aplicarlas a la programación iOS o Mac OS/X, ahorrándose tiempo (y en consecuencia dinero).

No me enrollo más: no hay que liarse

Pero tampoco hay que estudiarse tantas matemáticas. Uno puede, por ejemplo, echarle un vistazo a este proyecto de Mark Pospesel para iOS y a su detallada explicación para comprender cómo enrollarse como una persiana, y podría aplicarlo directamente a la web, tal y como he hecho yo con un poco de jQuery.

O uno podría también incorporar esta otra animación de papel arrugado, o esta otra en sus aplicaciones iOS, aunque no lo recomendaría: algunas no están muy bien programadas.

No me enrollo más. Resumiendo: no hay que liarse con las matemáticas si no es estrictamente necesario, aunque sí es conveniente, y hay que animarse: nuestros usuarios seguramente agradecerán nuestras animaciones, siempre que sean transparentes, claro.