Cuándo usar un árbol de mezcla frente a una máquina de estado para la animación

13

Soy un desarrollador de juegos experimentado y aficionado que está haciendo mi primer juego con personajes animados en 3D (en Unity) y estoy luchando por descubrir cuándo usar árboles de mezcla frente a máquinas de estado de animación. Entiendo ambos conceptos, pero he visto árboles de mezcla y máquinas de estados de animación utilizados para la animación de personajes en un montón de tutoriales tanto de Unity como de otras fuentes. No estoy seguro de cuándo / por qué uno es mejor que el otro, espero que alguien pueda señalarme en la dirección correcta.

Mi juego es un RPG de acción en tercera persona a Wola o KOTOR o Mass Effect (sistemas diferentes que conozco, pero las perspectivas y los estilos de combate son un poco cercanos a un alto nivel). Tengo toneladas y toneladas de animaciones para ataques, bloqueos, fingidos, muertes, caminar, correr, saltar, disparar, etc., pero no tengo claro cómo secuenciarlos juntos de forma natural.

He visto árboles de mezcla utilizados para la locomoción, lo que tiene sentido para mí cuando trato de mantener el movimiento fluido del personaje, pero no entiendo cómo pasar de ese árbol de mezcla a un estado de ataque y nada de lo que he visto hasta ahora ha pasado de la locomoción (sin ataques etc) ¿Necesito hacer árboles de mezcla de mis estados de movimiento para atacar / morir / esquivar estados? ¿Tengo más control usando solo máquinas de estado? Soy un poco cauteloso con las máquinas de estado debido a la hinchazón de transición que es tan común con ellas y porque sospecho que hay un mayor potencial para la secuencia de animación sin mezcla.

Estoy planeando usar el controlador de caracteres Unity y escribir mis propios scripts lógicos para manejarlo. Para la IA utilizaré los agentes de malla de navegación incorporados. ¿Las animaciones del controlador de personajes se manejan de manera diferente a las de la IA?

Cualquier idea sería más que bienvenida.

Gracias

Weichsem
fuente

Respuestas:

21

He trabajado bastante con Mecanim en Unity, y creo que entiendo muy bien cómo funciona.

Como usted dice, los árboles de mezcla son casi definitivamente el camino a seguir para hacer la locomoción. Los árboles de mezcla generalmente son para cuando desea mezclar animaciones continuamente para crear la salida final. Como darle al jugador el control de qué tan rápido se está ejecutando el avatar.

Es probable que todas las acciones individuales se mantengan mejor como un estado individual, en el que puede realizar la transición. Dependiendo de cuán intenso será tu juego, incluso puedes considerar usar Any State como punto de partida para ir rápidamente a saltar, atacar, etc., sin tener que esperar a que termine otra animación.

La clave para mezclar desde un árbol de mezcla con ejecución es usar transiciones . No hay magia para hacer que esto se vea genial, solo una planificación cuidadosa y ajustes al previsualizar la transición en Unity. Gran parte del trabajo depende del animador para tener la base para transiciones exitosas.

Algo a tener en cuenta al hacer transiciones es encontrar el equilibrio entre ellas con un aspecto excelente y darle al jugador los comentarios esperados. Es posible que una transición rápida funcione mejor para la sensación del juego, mientras que una transición más lenta puede verse mejor pero hace que sus jugadores quieran tirar el controlador.

A continuación se muestra una configuración algo simple, donde las flechas indican cómo van las transiciones. Las transiciones se basan en condiciones para entrar y salir cuando finaliza la animación o se cumple una condición determinada. Esto también significa que un estado puede entrar en otros estados dependiendo de diferentes condiciones.

Máquina estatal

Lo que probablemente notará es que esto rápidamente puede convertirse en una gran pila de "espaguetis", y una forma de evitar parte de este desastre es utilizar Cualquier Estado, que también se incluye en la imagen de arriba.

los Todo Estado tiene la ventaja de ser capaz de transición en cualquier cosa, desde un momento dado. Las transiciones todavía se pueden usar para mezclar la animación, sin embargo, está trabajando un poco más en la oscuridad en cuanto a cómo se verá. Es posible obtener una vista previa de / a varios estados mientras se configura.

Algo que no mencionaste es Capas , que puede ser extremadamente útil para hacer que su personaje resulte herido o para anular la parte superior del cuerpo para llevar diferentes armas mientras usa la misma animación para las piernas para todas las armas. Las capas también se mezclan y se pueden ajustar gradualmente, por lo que un personaje podría estar más o menos herido, por ejemplo. Otro ejemplo sería levantar los brazos de un personaje en el aire (si el personaje se rindió o algo así), manteniendo todas las demás animaciones iguales.

Pero configurar un controlador de animación sólido no es un trabajo de 1 hora. Requiere algo de planificación y solo puedo alentarlo a que intente configurar una máquina de estado simple con dos ataques, un salto, una inactividad y un árbol de mezcla de caminar / correr. También puede encontrar el comportamientos introducidos en Unity 5 extremadamente útiles para controlar o interactuar con los scripts.

Estoy 99% seguro de que la IA se comportará de la misma manera que el controlador del reproductor, dado que los parámetros que se cambian a través de los scripts controlan cómo va la animación de un estado a otro.

Resumen

  • Mezcla de árboles para la locomoción.
  • Estados para acciones simples definidas o estados de bucle simples.
  • Subestados para organizar una serie de estados, como un salto.
  • Transiciones para la combinación / transición entre diferentes estados (un estado también puede ser un árbol de mezcla).
  • Capas para anular o agregar a la animación base.

Así que piense en los árboles de mezcla como estados expandidos, que también actúan en función de los valores de los parámetros.

Un poco de divagación larga, pero espero que arroje algo de luz sobre el tema :)

Morten Andersen
fuente
Gracias por su increíble descripción, esto tiene mucho sentido ahora
weichsem
Fantástico, feliz de ayudar :)
Morten Andersen