# Animación interactiva

La animación interactiva es aquella que responde a las acciones que realiza el usuario sobre ella, de tal forma que la secuencia de fotogramas que se visualiza no es fija como en la animación tradicional si no que depende de las decisiones que tome el usuario al interactuar con dicha animación.

## ¿Dónde está presente?
### Páginas web

Las páginas web desde hace mucho tiempo han contado con animación interactiva, desplegándose determinados efectos cuando el usuario interactuaba con ellas.
Antiguamente estas animaciones eran realizadas usando Adobe Flash, un formato propietario de Adobe. Pero debido a la no compatibilidad con smartphones y tablets poco a poco ha ido desapareciando, desaconsejándose actualmente su uso.
En la actualidad, el nuevo estándar de HTML llamado HTML5 unido a JavaScript han reemplazado a Adobe Flash como formato para realizar animaciones interactivas en páginas web.
Un ejemplo claro de animación interactiva en una página web hecha con HTML5 y Javascript es la página web de Cheetos: http://battleofthecheetos.com/

### DVDs

A priori podríamos pensar que en una película en DVD no existe la animación interactiva, sin embargo, el formato DVD permite la visualización de menús que permite al usuario seleccionar una secuencia de imágenes (animación) u otra, cumpliendo por tanto con la definición de animación interactiva que se ha comentado al inicio de esta página.
La inclusión de menús en los DVDs permiten realizar historias interactivas e incluso videojuegos.
En el siguiente vídeo se puede ver un ejemplo de una historia interativa en DVD: https://www.youtube.com/watch?v=ihPdnMpkSWM

### Puestos de información

Los puestos de información (de turismo, museos, etcétera) cuentan con animación interactiva que permiten al usuario obtener aquella información que desea de entre toda la disponible.
En el siguiente vídeo se puede ver de forma interactiva un ejemplo de Puesto de Información acerca de la Catedral de Granada: https://www.youtube.com/watch?v=oL6xO3bYWzE
(Por si hubiera alguna duda, los vídeos de Youtube también cuentan con animación interactiva)

### Videojuegos

La animación interactiva es la base de los videojuegos, sin la animación interactiva no existirían los videojuegos como tales.
En muchos videojuegos aparece un nuevo requisito de animación interactiva que no se presenta en los casos anteriores, es la animación interactiva en tiempo real. Esto es, pueden requerir tiempos de respuesta ante acciones del usuario del orden de unos pocos milisegundos, requisito que no era necesario en los casos anteriores.

## Dispositivos para interactuar
### Ratones
#### Ratón mecánico

Típicamente conocido por “ratón de bola”, el cual en su interior contiene una bola que se mueve con el movimiento que haga el usuario. Luego, también tiene dos rodillos con discos dentados, uno en el eje vertical y otro en el horizontal, los cuales girarán según el movimiento de la bola. Y por último, también dispone de dos sensores o láseres infrarrojos, los cuales gracias a los discos dentados podrán detectar cuando se está moviendo el ratón y en qué dirección.

#### Ratón óptico

Este tipo de ratón dispone de un sensor óptico, el cual se encargará de realizar fotografías constantemente (unas 1500 por segundo) de la superficie sobre la que esté colocado. Luego, comparando las imágenes se obtiene la dirección hacia la cual se está desplazando. Este modelo es bastante más barato y fácil de fabricar que los ratones láseres, pero a cambio, ofrece una resolución bastante menor, que dependerá del modelo empleado, pero que no sobrepasará los 800 DPI (dots per inch).

#### Ratón láser

Funciona de manera muy similar al óptico, pero en lugar de emplear un sensor óptico, se utiliza un láser que será el encargado de detectar el movimiento de forma mucho más precisa. Con este sensor la resolución que se puede alcanzar es mucho mayor, siendo lo normal unos 2000 DPI, pero puedo llegar a mucho más, como por ejemplo el Logitech-G9X, que tiene 8000 DPI.

### Teclados
#### Teclado de membrana

Para detectar las pulsaciones de las teclas se utilizan dos membranas conductoras y una tercera membrana que normalmente tiene una forma esférica en cada tecla. Cuando esta tercera membrana es pulsada se encarga de unir las dos membranas conductoras. Con esto se logra detectar que tecla se ha pulsado. Este tipo de teclado es bastante barato de fabricar, permite hacer modelos muy ligeros y delgados, y tiene una vida útil de unas 5 000 000 millones de pulsaciones.

#### Teclado mecánico

En este caso, en lugar de tres membranas, para detectar las pulsaciones tiene un switch para cada tecla. Ese switch estará compuesto normalmente por una base, un muelle y un vástago. Esto provoca que este tipo de teclado sea bastante más caro que el de membrana, pero también otorga una sensación más cómoda a la hora de escribir. Además, tiene una vida útil diez veces mayor que el de membrana, de 50 000 000 pulsaciones.

### Eye-trackers

Esta forma de interacción consiste en calcular a qué punto de la pantalla está mirando el usuario. La forma más común de realizar esto es hacer al principio una fase de calibración, para poder obtener la posición del usuario, y que posteriormente la cámara que lo esté enfocando pueda calcular a qué punto de la pantalla está mirando. Además, muchos dispositivos de este tipo incorporan algoritmos para tratar los errores ocasionados por el movimiento del usuario después de la fase de calibración. Sin embargo, a pesar de esos algoritmos, si te mueves en exceso, se irán generando errores cada vez mayores en las coordenadas calculadas, hasta el punto de que deje de ser usable.

## Animación interactiva en tiempo real

Suele ser un requisito indispensable en videojuegos y simuladores. Para el desarrollo de animaciones interactivas en tiempo real lo más habitual es usar un motor de videojuegos.
A continuación se indican cuatro de los motores de videojuegos más en uso actualmente.

### Unity

Unity es un motor gráfico desarrollado por Unity Technologies, con fecha de lanzamiento el 30 de mayo de 2005. Ofrece un gran abanico de herramientas para desarrollar videojuegos, desde hacer algo simple en 2D, hasta algo muy elaborado en 3D para realidad virtual. Además, cualquier producto implementado con esta herramienta podrá ser multiplataforma:
* Dispositivos móviles: Android, iOS, Windows Phone, Tizen y Fire OS.
* Realidad virtual y aumentada: Oculus Rift, Google Cardboard, Steam VR, PlayStation VR, Gear VR, Microsoft Hololens y DayDream.
* Escritorio: Windows, Windows Store, Mac, Linux/Steam OS y Facebook Gameroom.
* Consolas: PlayStation 4, PlayStation Vita, Xbox One, Wii U, Nintendo 3DS, Nintendo Switch.
* Web: WebGL
* Smart TV: Android TV, Samsung SMART TV y tvOS
En cuanto al editor, viene optimizado con perfiles de memoria avanzados, sistema de trabajo multihilo y reducción del tamaño de la compilación entre otras muchas optimizaciones más. Se pueden emplear dos lenguajes de scripting, C# y JavaScript. Además, cuenta con integración nativa con Visual Studio y soporta un gran abanico de formatos para los recursos que se quieran emplear:
* Imagen: psd, jpg, png, gif, bmp, tga, tiff, iff, pict y dds.
* Audio: mp3, ogg, aiff, wav, mod, it y sm3.
* Vídeo: mov, avi, asf, mpg, mpeg y mp4.
* Texto: txt, htm, html, xml y bytes.
En lo referente al coste, su precio dependerá de la versión que se utilice.Por un lado cuenta con la versión gratuita, “Personal”. Y por otro lado, incluye versiones de pago. Está la “Plus” por 35$ por puesto al mes, la “Pro” por 125$ por puesto al mes y la “Enterprise”, la cual no tiene precio estipulado, tienes que ponerte en contacto con ellos.
En la imagen de la derecha puede verse una escena desarrollada con Unity 5.

### CryEngine

Es un motor de videojuegos propietario, creado por Crytek. Originalmente fue un motor de demostración para la empresa NVIDIA, pero al demostrar un gran potencial se implementó por primera vez en el videojuego Far Cry, desarrollado por la misma empresa Crytek. El 30 de marzo de 2006, la totalidad de los derechos de CryEngine son adquiridos por la distribuidora de videojuegos Ubisoft.
Posteriormente han sacado otras dos versiones, CryEngine 2 y CryEngine 3, a destacar esta última ya que incluye soporte para PlayStation 3 y Xbox 360.
A principios de 2016 se presentó CryEngine V, que ofrecerá compatibilidad con PlayStation 4 y Xbox One.
En la imagen de la derecha puede verse el logo de este motor.

### Unreal Engine

Es un motor de videojuegos gratuito aunque de código cerrado, creado por Epic Games. Está escrito en Unreal Script (Lenguaje propio similar Java o C# modificado), siendo compatible con varias plataformas como PC (Microsoft Windows, GNU/Linux), Apple Macintosh (Mac OS, Mac OS X) y la mayoría de consolas (Dreamcast, Gamecube, Wii, Xbox, Xbox 360, PlayStation 2, PlayStation 3, Xbox One, PlayStation 4), aunque no es compatible con Android e iOS como lo son los motores que hemos visto antes.
La última versión hasta la fecha, Unreal Engine 4, ofrece un realismo no visto anteriormente.
A la derecha puede verse un vídeo de una demo técnica desarrollada con Unreal Engine 4.

## El futuro de la animación interactiva

Hasta ahora la forma de interactuar con la animación ha sido mediante componentes mecánicos como teclas, botones, joysticks, ratón y demás periféricos. Sin embargo, la irrupción de la realidad virtual y la realidad aumentada abre un abanico de nuevas posibilidad para interactuar con la animación.
Con estas tecnologías que están empezando a usarse en la actualidad, la forma de interactuar es mediante gestos cotidianos, lo que permite al usuario manejar estas animaciones de una forma mucho más intuitiva.
Esto, llevado a la máxima expresión, podría permitirnos interactuar con una animación incluso mediante nuestro estado de ánimo, escaneándonos la expresión de nuestra cara o mediante el escaneo de la actividad de nuestro cerebro. Gracias a esto, podríamos obtener la animación deseada en cada instante de tiempo sin tan siquiera movernos.