Diferencia entre revisiones de «Unity Animaciones»
| Línea 114: | Línea 114: | ||
=Gestionando las animaciones. Animation Controller= | =Gestionando las animaciones. Animation Controller= | ||
| + | |||
| + | |||
| + | <br /> | ||
| + | ==Creando un Animation Controller. Animación inicial== | ||
* En este punto ya disponemos de 4 modelos con 4 animaciones ('''Clips'''). | * En este punto ya disponemos de 4 modelos con 4 animaciones ('''Clips'''). | ||
| Línea 150: | Línea 154: | ||
Image:Unity3d_animacion_25.jpg| Si movemos la ventana Animator a otro lugar en la que podamos tener visible al mismo tiempo la ventana 'Scene' o 'Game' y teniendo seleccionado el GameObject Zombie de la escena, al ejecutar podemos ver como en la ventana 'Animator' nos va indicando en que estado nos encontramos. | Image:Unity3d_animacion_25.jpg| Si movemos la ventana Animator a otro lugar en la que podamos tener visible al mismo tiempo la ventana 'Scene' o 'Game' y teniendo seleccionado el GameObject Zombie de la escena, al ejecutar podemos ver como en la ventana 'Animator' nos va indicando en que estado nos encontramos. | ||
</gallery> | </gallery> | ||
| + | |||
| + | |||
| + | |||
| + | <br /> | ||
| + | ==Reutilizando las animaciones sobre otros modelos== | ||
| + | |||
| + | * Imaginemos que estas mismas animaciones las queremos utilizar con otros 'modelos', en este caso, de tipo 'Humanoide'. | ||
| + | <gallery caption="Reutilizando animaciones" widths="350" heights="300px" perrow="2"> | ||
| + | Image:Unity3d_animacion_26.jpg| En este ejemplo vamos a descargar otra figura 3D de Mixamo pero '''sin animaciones asociadas'''. | ||
| + | Image:Unity3d_animacion_27.jpg| Descargamos el archivo .fbx en T-Pose y lo importamos a Unity. | ||
| + | Image:Unity3d_animacion_28.jpg| Cambiamos el nombre del modelo y en la sección Model del Inspector volvemos a hacer lo mismo que con el modelo del Zombie. | ||
| + | Image:Unity3d_animacion_29.jpg| En la sección 'Rig' indicamos que va a ser un Humanoid. Recordar pulsar '''Apply'''. | ||
| + | Image:Unity3d_animacion_30.jpg| Si cuando vayáis a la sección Animation o Material, la figura no aparece con las texturas, será que aún no arreglaron el bug del programa, por lo que tendréis que extraer las texturas y el material asociado. Os pedirá una carpeta. Dejar la que abre por defecto. Seguramente os saldrá una ventana indicando que una textura debe ser usada como 'Normal Map'. Presionar el botón Fix Now. | ||
| + | Image:Unity3d_animacion_31.jpg| Ahora se puede comprobar que la figura aparece con las texturas correctas. Para ordenar un poco todo, podemos crear una carpeta para guardar las texturas y otra para guardar el material, quedando solo el modelo. | ||
| + | Image:Unity3d_animacion_32.jpg| Arrastramos el modelo a la escena, creando un nuevo GameObject. Como se puede ver la ZombieGirl es muy grande. Vamos a modificar el factor de escala. Recuerda que ya [http://wiki.cifprodolfoucha.es/index.php?title=UNITY_Figuras_3D#Importando_modelos_y_ajustando_escala vimos en esta Wiki como ajustar la escala de los modelos importados]. | ||
| + | Image:Unity3d_animacion_33.jpg| Cambiamos la escala a 0.8 | ||
| + | Image:Unity3d_animacion_34.jpg| Ahora creamos un nuevo AnimatorController. Fijarse que esto no sería necesario si los estados y las condiciones para pasar de un estado a otro fueran los mismos en todos los zombies. En ese caso podríamos asociar el AnimatorController del Zombie a esta ZombieGirl. | ||
| + | Image:Unity3d_animacion_35.jpg| Ahora tenemos que buscar la animación 'por defecto' que vamos a asignar a la ZombieGirl. Esta animación la tenemos dentro del modelo Zombie. Para hacerlo diferente al anterior, escojo la animación del Zombie Attack. Arrastro la animación (el Clip) y le cambio el nombre en el Animator Controller. | ||
| + | Image:Unity3d_animacion_36.jpg| Por último tenemos que asociar el AnimatorController al GameObject creado en la escena. Seleccionamos el GameObject Zombie Girl de la Hierarchy Window y arrastramos el AnimatorController a la propiedad Controller del Component Animator. | ||
| + | Image:Unity3d_animacion_37.jpg| Podemos comprobar si ejecutamos el juego, como la ZombieGirl está atacando por defecto. | ||
| + | </gallery> | ||
| + | |||
| + | |||
Revisión del 20:36 6 ene 2019
Sumario
Introducción
- Más información en: https://docs.unity3d.com/Manual/AnimationClips.html
- En Unity podemos gestionar animaciones que vengan ya incorporadas a los modelos importados o bien podemos realizar nuestras 'propias animaciones'.
- Cada una de las animaciones conforma lo que se denomina Clip en Unity.
- Las animaciones propias son animaciones consistentes en modificar alguno de los parámetros que conformar el transform de cada GameObject.
- Es decir podemos modificar:
- Posición
- Escala
- Rotación
- Estas modificaciones se producirán a lo largo de un período de tiempo y que conformará la animación.
- Por ejemplo:
- Podemos tener un soldado que siempre se esté moviendo de izquierda a derecha sin parar y que se desplace 10 metros.
- O un pájaro que vuele por la pantalla siguiendo una ruta 'predefinida' y que se repita continuamente.
- En cuanto a las animaciones ya incorporadas a los modelos, estas animaciones están asociadas a un nombre (por ejemplo, andar, correr,...)
- Unity permite crear una máquina de estados en las que cada animación tiene lugar en función del estado en que se encuentre el GameObject. Este pasará de un estado a otro en función de los valores que puedan tomar variables definidas por nosotros.
Importando modelos con animaciones
- Muchas de las animaciones que vamos a poder utilizar son aquellas en las que el modelo tiene asociado un esqueleto o bones.
- Como vemos en la imagen, la figura 3D tiene asociado un RIG.
- Básicamente consiste en asociar a un modelo 3D un conjunto de huesos los cuales están asociados a la figura, de tal forma que al mover dichos huesos, movemos las partes de la figura 3D asociada.
- Este tipo de animaciones se denominan Humanoid en Unity y están asociados a un Avatar.
- Los modelos que vienen con este tipo de animaciones tienen una pose en T.
- Suelen ser todos bípedos y con unas características comunes para que:
- Los esqueletos y movimientos asociados puedan ser aplicados a cualquier figura 3D con esta forma (retargeting)
- Permite realizar Inverse Kinematic, es decir, indicar un punto determinado del espacio y hacer que los huesos del esqueleto se muevan correctamente para llegar a ese punto.
- Podemos disponer de modelos 3D que no se adaptan a este tipo y que Unity denomina Generic:
- En la imagen tenemos una figura 3D que no responde al tipo de 'Humanoide'.
- Uno de los sitios que actualmente es gratuito y permite 'asociar' animaciones a modelos 3D es https://www.mixamo.com.
- Una vez registrados accederemos a su página que actualmente tiene este aspecto:
- Modelos en Mixamo
- Indicar que tanto en animaciones como en modelos, podemos filtrar los resultados buscando por palabras claves.
- Si nos vale alguno de los modelos, veremos a continuación como hacer uso de ellos en Unity.
- En el ejemplo siguiente partimos que no nos vale ninguno de los modelos y que utilizamos otro descargado o diseñado por nosotros mismos.
- Recordar que esto solo vale para animaciones de tipo 'humanoide' como ya explicamos anteriormente.
- Actualmente se puede descargar la aplicación Fuse de Adobe que permite diseñar nuestros avatares de forma totalmente personalizable.
- Importando modelos animados a Unity
Vamos a alguna página de descarga de modelos 3D. En el ejemplo es https://www.turbosquid.com. Al elegir el modelo mejor es que tenga un rigged asociado. En caso contrario, Mixamo puede intentar crear uno, pero algunas veces no funciona. Depende del modelo.
Una vez tengamos la animación como nos gusta, descargamos la figura con la animación. Lo que vamos a hacer es descargar varias animaciones, pero como el modelo es siempre el mismo, solo descargaremos la información del esqueleto en uno de los archivo. Esta primera animación la descargamos con el modelo (with Skin).
Con el Zombie Idle seleccionado, podemos ir a la sección Animation de la ventana Inspector. En ella podemos ver que dicho modelo tiene asociado un Clip que es la animación descargada. Podemos ver como es dicha animación en la parte baja de la ventana Inspector. Puede suceder que un modelo tenga guardadas varias animaciones y por tanto aparecería una lista de Clips. También es posible desde Unity 'trocear' un Clip en varias partes.
Ahora seleccionamos otro de los modelos, por ejemplo 'Zombie Atack'. Si recordáis, cuando descargamos el modelo de Mixamo escogimos la opción Without Skin. Es por eso que ahora tenemos que informar a Unity que este modelo va a hacer uso de los datos del modelo 'Zombie Idle'. Recordar pulsar el botón Apply.
Gestionando las animaciones. Animation Controller
Creando un Animation Controller. Animación inicial
- En este punto ya disponemos de 4 modelos con 4 animaciones (Clips).
- Fijarse que solo en una de ellas se previsualiza el modelo.
- Si desplegáis el contenido de cada modelo (presionando la flecha hacia la derecha en cada uno) podéis ver como en todos ellos disponemos de un 'Clip' que viene a ser la animación asociada al mismo.
- Ahora es necesario gestionar dichas animaciones. Debemos de tener algún mecanismo que nos permite controlar cuando la figura 3D está en una animación o en otra.
- Cuando pulsa una tecla quiero que pase de Idle a Walk.
- Cuando presiono el botón de disparo quiero un Attack.
- Todo esto se controla con una máquina de estado a a través de un Animation Controller de Unity.
- Creando un Animation Controller
- Al pulsar dos veces sobre el AnimationController (darle un nombre adecuado), accedemos a la máquina de estados:
- Gestionando un Animation Controller
Como vemos aparece una serie de 'cajas' que indican estados. Por defecto tenemos tres estados: entry que indica el estado inicial cuando la figura 3D aparece en la escena, any state que representa cualquier estado y exit cuando la figura 3D sale de la escena (se destruye). En la figura, estamos arrastrando la animación del Zombie Idle al AnimationController. Al hacerlo se crea un nuevo estado y aparece una flecha que va desde el estado 'Entry' al estado 'mixamo_com' que es la animación del zombie estando idle.
Reutilizando las animaciones sobre otros modelos
- Imaginemos que estas mismas animaciones las queremos utilizar con otros 'modelos', en este caso, de tipo 'Humanoide'.
- Reutilizando animaciones
Si cuando vayáis a la sección Animation o Material, la figura no aparece con las texturas, será que aún no arreglaron el bug del programa, por lo que tendréis que extraer las texturas y el material asociado. Os pedirá una carpeta. Dejar la que abre por defecto. Seguramente os saldrá una ventana indicando que una textura debe ser usada como 'Normal Map'. Presionar el botón Fix Now.
Arrastramos el modelo a la escena, creando un nuevo GameObject. Como se puede ver la ZombieGirl es muy grande. Vamos a modificar el factor de escala. Recuerda que ya vimos en esta Wiki como ajustar la escala de los modelos importados.
Creando animaciones propias
-- Ángel D. Fernández González -- (2018).