Publicat per

R4 – Animación

Vídeos de las animaciones, en Blender y en Unity:

Este primer vídeo fui montándolo según iba terminando animaciones:

Vídeo de cómo se ven las animaciones finales en Unity (sin input, simplemente en bucle):

 

Distintas perspectivas:

A continuación adjunto varios vídeos del proceso. La mayoría corresponden a autoguardados de diferentes momentos, ya que durante la producción estuve muy centrada en el trabajo y no siempre grabé manualmente:

Animación idle en proceso, se puede ver que todavía no había ajustado bien las curvas y daba un “salto” del último al primer frame.

 

Animaciones de andar en proceso.

 

Captura del proceso de animación de Death de Player1. Si no colocaba manualmente los huesos en el frame 19, autogeneraba un giro extraño al dar la vuelta del modelo, haciendo que quedase todo el personaje revuelto.

En el caso de las animaciones de ataque y defensa, no dispongo de capturas de proceso porque fueron relativamente rápidas de producir (aprox. 30 minutos por animación) y no se generaron autoguardados en esos intervalos.

Respecto a las animaciones de muerte, al ser las últimas que realicé, los autoguardados se sobrescribieron a medida que iba ajustando detalles, y solo he podido recuperar la captura de pantalla anterior.

 


Software empleado

  • Blender para todo el proceso de animación. Las animaciones se han planteado para ser vistas de lado; de frente puede parecer que los personajes están algo “desbalanceados”, ya que se han exagerado posturas para mejorar la lectura y la estética de las animaciones

Animaciones de Reposo (Idle)

Las animaciones de tipo Idle fueron las más sencillas de realizar, creando en primer lugar un primer frame que sirva de “pose base” también para las demás animaciones.

La principal manera de crear las animaciones de idle fue crear la pose inicial, duplicarla en el último frame (48 frames en total) y entre medias añadir pequeñas oscilaciones, sobre todo en los huesos del torso y la cadera para crear un pequeño movimiento. En Player 2 se ha elegido hacer un movimiento más marcado y a un ritmo ligeramente distinto que en Player 1, que es algo más suave o sutil. Además, a Player2 he añadido la particularidad de tener un pie de puntillas en la mayoría de animaciones.

Por último, se ajustaron las curvas de animación para facilitar el loop.


Animaciones de Ataque

Para las animaciones de ataque, planifiqué que Player1 diera dos puñetazos, al ser de menor tamaño que Player2, y Player2 una patada. Para ello, tuve como referencia fotos y vídeos que tomé de mí misma, y también grabé la pantalla mientras jugaba Tekken 7 con distintos personajes, editando luego el vídeo y ajustándolo a velocidad 0.2x, pudiendo así estudiar detenidamente cómo se planteaban ciertas animaciones dentro del juego, y cómo varían de personaje a personaje. Sin embargo, no he seguido una técnica tradicional de motion capture, ya que en vez de situar el vídeo dentro del propio software y fijarme en la posición de cada frame, simplemente lo he empleado de referencia y como material de estudio.

En Player1 al tener un ataque doble, la animación dura 48 frames. Player2, que es más rápida, tiene una animación de 30 frames.

En ambas animaciones, se añadieron los frames 1 y 48, que son iguales, y posteriormente se añadió un frame central con la pose de ataque  (es decir, la pierna levantada en caso de la patada, y el primer puño sacado en el caso de los puñetazos). A partir de ahí, fui añadiendo keyframes intermedios y más detalles, finalmente editando las curvas para ajustar el ritmo. En estas animaciones lo que me resultó más complicado fue afinar el efecto de impacto, que mejoró bastante con pequeños movimientos y giros en zonas cercanas (ej.: El muslo en el caso de la patada, el pecho en el caso del puñetazo), además de hacer que el keyframe de impacto dure dos frames. Al estar sostenido un frame más, da la sensación de que es un golpe y no solo un movimiento del brazo o la pierna.

 


Animaciones de Defensa (Crouch)

Puesto que ambas tienen ataques altos, he planteado que la postura de defensa sea agacharse para esquivar los ataques. En estas animaciones no he añadido una transición para pasar de Idle a Crouch, sino que añadiré dentro de Unity una transición entre ambas animaciones para suavizar el cambio de una animación a otra. De esta manera, se puede repetir en bucle la animación de defensa si el jugador decide mantenerse más de 48 frames en este estado. Al igual que en la animación Idle, he añadido un pequeño balanceo en ambos personajes, siendo el movimiento de Player 2 más notorio.


Animaciones Desplazamiento  (Step)

Para el desplazamiento de los personajes he querido plantearlo similar a como lo plantean sagas como Street Fighter o Tekken, en el que el movimiento es un solo paso cada vez que se pulsa el botón de input (una Arrow Key del gamepad, como herencia de cuando se planteaban estos juegos de lucha en máquinas de arcade). No es un movimiento sostenido o constante, sino un solo paso cada vez que se pulsa el botón.

Por esto, mi idea es plantear el propio desplazamiento del personaje en el eje X a través de programar el comportamiento en Unity, permitiendo que la animación de Desplazamiento comience y termine como el primer frame de Idle, permitiendo oscilar fácilmente entre movimiento y reposo. La animación se ha hecho manteniendo el eje central del personaje fijo, y simulando movimiento con el cuerpo, sin llegar a desplazar el propio personaje.

Además, se ha planteado para poder invertir la velocidad del movimiento y que la animación funcione como un paso hacia atrás también.


Animación Derrota (Death)

Las animaciones de derrota, junto a las animaciones de ataque, fueron las más complejas. Especialmente la de Player1, que quise hacer que diera un giro en el aire como consecuencia de recibir una patada final de Player 2. Hacer que diera la vuelta fue especialmente complicado, y es la animación con más keyframes con diferencia. Gran parte del trabajo fue, no solo moviendo los huesos del personaje, sino ajustando las curvas para que el ritmo fuera adecuado.

A continuación se pueden ver dos capturas de pantalla de los keyframes (mostrando solo los de los huesos parent) y el gráfico de curvas (teniendo en cuenta todos los huesos):

Como se puede observar en las curvas, en los frames 18 y 19  es cuando el personaje termina de dar el giro en el aire, y cambian de orientación y posición numerosos huesos del cuerpo. En las curvas se traduce como una zona saturada de pequeños puntos (ajustes en huesos), con mayores curvas en el gráfico.

En esta animación, al igual que en las anteriores, se añadieron en primer lugar el keyframe 1, luego el central (dando la vuelta en Player1, y cayendo en el caso de Player2), y la postura final. Una vez tengo estos tres keyframes clave, voy añadiendo keyframes, moviendo el keyframe central y corrigiendo detalles.

En Player2 hice una animación de derrota en la que el personaje se ve brevemente impulsado en el aire y finalmente cae, tras recibir un puñetazo. En el caso de Player 2 la posición de caída es de lado, mientras que en Player 1 se ve perpendicular a la cámara. Quise hacer esta distinción para generar más diferencia entre ambos personajes, tras haber estudiado y visto que en juegos de lucha también hay numerosas posiciones y animaciones de derrota según el ataque que reciban.

Para estas animaciones, tuve como referencias grabaciones que tomé de Tekken 7, a cámara lenta:


Exportación de FBX y conclusiones

Se pueden observar los modelos animados en sketchfab:

Player1

Player2

Finalmente, comprobé que los modelos con sus animaciones se animasen y exportaran correctamente a Unity, que no me dio problemas. Creé un loop igual que en sketchfab, reproduciendo todas las animaciones una después de otra.

Como conclusión, era la primera vez que animaba en 3D y he notado una curva de aprendizaje importante. El primer día la mayor cantidad de tiempo se fue en comprender cómo configurar correctamente las acciones en Blender para que se guarden las animaciones.

Tuve algún susto de animaciones que de golpe dejan de funcionar o verse, y agradezco haber hecho copias de seguridad según iba trabajando ya que algunos de los errores eran por configurar mal la animación nueva que creaba, sobreescribiendo otra acción o no guardándose correctamente. Para el último día de trabajo ya sentía que había agilizado bastante el proceso, y me lancé a hacer las animaciones de derrota más complejas que las anteriores para poner a prueba lo aprendido.

Para el futuro, me gustaría probar a hacer el proceso de animación recreando el método de Motion Capture, con vídeos propios o de licencia gratuita, para comprobar si hay mucha diferencia entre hacerlo a mano, de manera libre, y con un vídeo en el fondo pudiendo adaptar cada keyframe para que sea exactamente igual que el vídeo.

Siento que he aprendido bastante, pero ha habido momentos en los que no conseguía que el movimiento se viera del todo natural y no conseguía descifrar qué en concreto era lo que fallaba. La mayoría de veces se arreglaba añadiendo movimientos sutiles en huesos como la cabeza o la cadera, pero ha habido otros keyframes que por muchas vueltas que le diese no terminaba de sentirlo natural.

Debat0el R4 – Animación

Deixa un comentari