[MUSIC] En este último tema de este módulo, vamos a hablar sobre la animación dentro de un motor. Y vamos a coger como ejemplo, pues Unity. Unity nos sirve de ejemplo de como un motor para videojuegos gestiona el tema de la animación. Primero, y antes que nada, hay que tener en cuenta los condicionantes que pueda tener cada uno de los motores. Como you hemos ido comentando acerca de la cantidad de huesos que influyen en cada vértice, por ejemplo. Y también, hay otros tipos de limitaciones que pueden hacer referencia tanto al motor como a la plataforma en la que se va a desarrollar el juego. Por ejemplo, la cantidad de huesos máxima que puede gestionar un motor y que permite que el juego siga corriendo de manera eficiente. Depende, tanto del motor, como también de la plataforma para juegos móviles, pues va a ser muchos o menos huesos, que no para consolas domésticas. Después, hay que definir, que elementos se van a animar en el motor, y que elementos se van a animar fuera. Tradicionalmente, sobre todo cuando se disponen de buenos artistas, buenos animadores. Pues la parte importante, detallada, y la parte más compleja de la animación, se hace fuera y se importa en el motor. Pero, hay otros elementos, que a lo mejor son elementos sencillos. Éste por ejemplo, pues animar cierto tipo de mobiliario que se mueve, como una puerta que se abre, todo eso se puede hacer directamente en el motor. En Unity, podemos crear animaciones para varios tipos de objetos. Y estos se pueden animar de manera parecida a como se anima en los programas de animación, tanto los 2D como los 3D. Y que you vimos en el caso de la animación básica. Esta forma de animar se basa en utilizar frames clave, utilizar keyframes. Y tocando las diferentes curvas que regulan pues la parte que se interpola entre los diferentes keyframes. Muchos de los parámetros que se animan, además pueden ser controlados por script, se pueden programar. Con lo cual, la capacidad para controlar que es lo qué pasa en cada uno, o en cada momento específico, es muy alta. Al exportar los elementos animados desde 3D Max, hay que asegurarse de que se haya exportado la animación, porque muchas veces pensamos que puede haber un error. Lo primero es chequear que se ha exportado la animación. En Unity hay que crear un controlador de animación para poder gestionar las diferentes animaciones. El controlador de animación es una herramienta que nos va a permitir controlar en qué momento, y bajo qué parámetros se dispara las diferentes animaciones. Este controlador crea una máquina de estados, que nos va a permitir decirle qué animaciones van a lanzarse en función de ciertos parámetros. Como por ejemplo correr, andar en función de la velocidad. Cuando el personaje se desplaza en una velocidad específica, se dispara directamente la animación de andar y cuando aumenta a partir de un punto específico la velocidad, salta la animación de correr. Las aceleraciones pueden mezclarse para conseguir un mejor efecto visual. Pues siguiendo con el ejemplo del correr y andar, las dos animaciones pueden diferenciarse un poco. Pues para hacer que el salto entre la una y la otra, no sea demasiado brusco. Las animaciones se mezclan utilizando el concepto de blend trees en Unity. De manera que el salto entre una animación y la otra es mucho más suave. A continuación vamos a ir a Unity a ver de manera un poquito más práctica, algunos de los conceptos que acabamos de comentar. De entrada vamos a empezar viendo cómo se pueden crear pequeñas animaciones dentro del propio programa del Unity. Para ello lo primero que tiene que hacer es ir a window, ventana y abrir la pestaña de animation. Cuando lo hagamos va salir una pestaña que puede ser que esté flotante o anclada, que nosotros podemos anclar donde queramos, por ejemplo aquí debajo. En esta pestaña de animación es donde podemos crear, manipular y retocar algunas de las animaciones de algunos elementos específicos. No todos los elementos se pueden animar, para ello hay que sleccionar un elemento específico y ver si podemos crear una animación para él. En este caso este cubo sí que se puede animar y lo vamos a hacer. Como podemos ver aquí, nos comenta del programa que para empezar a animar este objeto, es necesario tener dos elementos. Uno es un animator y otro es un animation clip, vayamos por partes. El animation clip es la animación en sí, es decir, la información, los parámetros que hacen o que indican que ese objeto está animado y cómo está animado. Por ejemplo su cambio de posición o su cambio de rotación o también de escala. Así pues, la animación, en si, no se guarda dentro del propio objeto sino que se guarda como un archivo externo que nosotros vinculamos al objeto que queremos que esté animado. Por otro lado tiene que crear un animator. Un animator es un componente que se asocia a varios objects, a varios objetos, y que le indica al motor que esté en object tiene que leer o puede leer una animación específica. El animator además nos va a permitir establecer parámetros más complejos. Que a la postre nos van a permitir, combinar varias animaciones para nuestros elementos. De entrada vamos a crear esos dos elementos en el que create nos pide un pass y en este pass va a guardar la animación, le damos ok. Ahora mismo, como vemos, aquí en assets nos ha creado estos dos elementos. El clip de animación que es la animación y lo que es el animator. Ahora vamos a proceder a animar el cubo, para ellos lo seleccionamos, si no lo tenemos seleccionado y vamos aquí a añadir propiedad. Al añadir propiedad le podemos decir al programa qué parte queremos animar de nuestro objeto. Por ejemplo, podemos animar elementos de su transform, es decir, su posición, rotación o su escala. Y, dentro, podemos seleccionar el que queramos, por ejemplo, posición. Hemos seleccionado posición y you vemos aquí como aparece en esta columna de la izquierda. En la imagen o parte de la derecha, lo que vemos es un timeline, de una líneas de tiempo que indica, basicamente, frames y segundos, y que nos permite también poner keyframes. Ahora mismo, hay pues en el cero y en el uno, pero ahora mismo no hay ningún tipo de animación. Nosotros podemos movernos por el timeline y vemos que no cambia nada. Por defecto, aquí está activado el modo de grabación, si lo desactivamos, pues ahora no se guardaría ningún cambio que hagamos aquí. Y también tenemos el modo play, en el que se reproduce la animación. Vale, pues por ejemplo, lo que vamos a hacer es ir más o menos aquí en la mitad, y ponerle un keyframe. Para hacerlo podemos hacerlo de varias maneras. Una es ir directamente, clickear aquí y añadir un keyframe, o mover directamente el objeto. En este caso como estamos trabajando con la posición, cogemos el objeto y lo movemos, por ejemplo, hacia arriba. Automáticamente, nos a puesto un keyframe aquí y, si ahora reproducimos, veremos cómo el objeto está animado. Como veis, sigue bastante la metodología y los tipos de comando que existen también en la animación, que vimos en 3d max. Con lo cual es bastante intuitivo, si you conocemos animar en programas de creación en 3D. Además, también podemos cambiar la pestaña dope sheet, en la que siempre vemos los keyframes en el momento específco, en el frame específico, y trabajar con las curvas. Como you explicábamos en el tema de animación básica, las curvas nos permiten retocar, exactamente, el espacio entre keyframes. Y cómo se accede a cada uno de los keyframes, es decir, si la animación entra más suave o entra menos suave. Podemos seleccionar cada uno de los elementos, incluso podemos especifcar que sea simplemente ésta de aquí, y también podemos cambiar y hacerlo más recto. De esta manera vamos a modificar la animación. Básicamente, así es como se pueden crear pequeñas animaciones que en este caso afectan a la posición. Pero que también se pueden implementar en otros aspectos de los objetos. Por último, vamos a comentar el tema del animator, que en este caso, como veis, es un elemento que se ha añadido a nuestro objeto, en este caso el cubo. Podría salir a modo de elevación de la animación para que no nos confunda. Y como vemos, aquí tenemos un componente que se ha añadido a nuestro objeto y que es necesario para que se puedan reproducir animaciones en nuestro objeto.