Quando usar uma árvore de mesclagem versus máquina de estado para animação


13

Sou um desenvolvedor experiente em jogos, mais hobbiest ao fazer meu primeiro jogo com personagens animados em 3D (no Unity) e estou lutando para descobrir quando usar árvores de mistura versus máquinas de estado de animação. Eu entendo os dois conceitualmente, mas vi árvores de mistura e máquinas de estado de animação usadas para animação de personagens em vários tutoriais do Unity e de outras fontes. Não tenho certeza de quando / por que um é melhor que o outro, espero que alguém possa me apontar na direção certa.

Meu jogo é um rpg de ação na terceira pessoa, a'la WoW ou KOTOR ou Mass Effect (diferentes sistemas que eu conheço, mas as perspectivas e os estilos de combate são bem próximos em alto nível). Eu tenho toneladas e toneladas de animações para ataques, bloqueios, fingimentos, mortes, caminhadas, corridas, pulos, tiros, etc., mas não sei como sequenciá-las naturalmente.

Vi árvores de mistura usadas para locomoção, o que faz sentido para mim ao tentar manter o movimento do personagem fluido, mas não entendo como passar dessa árvore de mistura para um estado de ataque e nada que eu tenha visto até agora passou pela locomoção (sem ataques) etc). Preciso fazer misturar árvores dos meus estados de movimento para atacar / morrer / esquivar? Tenho mais controle usando apenas máquinas de estado? Sou um pouco cauteloso com as máquinas de estado por causa do inchaço da transição que é tão comum com elas e porque suspeito que haja maior potencial para o seqüenciamento de animação irregular sem se misturar.

Estou planejando usar o controlador de caracteres Unity e escrever meus próprios scripts lógicos para controlá-lo. Para a IA, usarei os agentes de malha de navegação incorporados. As animações de controle de caracteres são tratadas de maneira diferente das da IA?

Qualquer ideia seria mais que bem-vinda!

obrigado

Respostas:


21

Eu trabalhei bastante com o Mecanim no Unity e sinto que tenho um bom entendimento de como isso funciona.

Como você diz, as árvores mistas são quase definitivamente o caminho a percorrer para fazer a locomoção. As árvores de mesclagem geralmente são para quando você deseja misturar continuamente animações para criar a saída final. Como dar ao jogador o controle de quão rápido o avatar está sendo executado.

Provavelmente, é melhor manter todas as ações individuais como um estado individual, no qual você pode fazer a transição. Dependendo da intensidade do seu jogo, você pode até considerar usar o Any State como ponto de partida para pular rapidamente, atacar etc., sem ter que esperar que outra animação termine.

A chave para mesclar a partir de uma árvore de mesclagem com execução é usar transições . Não há mágica para fazer isso parecer ótimo, apenas um planejamento cuidadoso e ajustes durante a visualização da transição no Unity. Grande parte do trabalho depende do animador para ter a base para transições bem-sucedidas.

Algo que você deve ter em mente ao fazer transições é encontrar o equilíbrio entre elas, e dar ao jogador o feedback esperado. Você pode achar que uma transição rápida funciona melhor para o ambiente do jogo, enquanto uma transição mais lenta pode parecer melhor, mas faz com que seus jogadores desejem jogar fora o controle.

Abaixo está uma configuração bastante simples, onde as setas indicam como as transições ocorrem. As transições se baseiam nas condições de entrada e saem quando a animação termina ou quando uma determinada condição é atendida. Isso também significa que um estado pode entrar em vários outros estados, dependendo de condições diferentes.

Máquina de estado

O que você provavelmente percebe é que isso rapidamente pode se tornar uma grande pilha de "espaguete", e uma maneira de evitar parte dessa bagunça é utilizar o Any Any, que também está incluído na imagem acima.

O Qualquer Estado tem o benefício de poder fazer a transição para qualquer coisa a qualquer momento. As transições ainda podem ser usadas para misturar a animação, no entanto, você está trabalhando um pouco mais no escuro sobre a aparência dela. É possível visualizar de / para vários estados enquanto o configura.

Algo que você não mencionou é Camadas , o que pode ser extremamente útil para ferir seu personagem ou substituir a parte superior do corpo para carregar armas diferentes enquanto usa a mesma animação nas pernas para todas as armas. As camadas também são combinadas e podem ser ajustadas gradualmente, para que um personagem possa ficar mais ou menos ferido, por exemplo. Outro exemplo seria levantar os braços de um personagem no ar (se o personagem se rendesse ou algo assim), mantendo todas as outras animações iguais.

Mas configurar um controlador de animação sólido não é uma tarefa de 1 hora. É preciso algum planejamento e só posso encorajá-lo a tentar configurar uma máquina de estado simples com dois ataques, um salto, um inativo e uma árvore de mistura de caminhar / correr. Você também pode achar os comportamentos introduzidos no Unity 5 extremamente úteis para controlar ou interagir com scripts.

Tenho 99% de certeza de que a IA se comportará da mesma maneira que o controlador do player, uma vez que os parâmetros são alterados por meio de scripts que controlam como a animação passa de estado para estado.

Sumário

  • Árvores de mistura para locomoção.
  • Estados para ações únicas definidas ou estados de loop simples.
  • Sub-estados para organizar uma série de estados, como um salto.
  • Transições para mistura / transição entre diferentes estados (um estado também pode ser uma árvore de mistura).
  • Camadas para substituir ou adicionar à animação base.

Então, pense nas árvores de mesclagem como estados expandidos, que também atuam com base nos valores dos parâmetros.

Um pouco de uma longa caminhada, mas espero que brilhe um pouco sobre o assunto :)


Obrigado pela sua descrição impressionante, isso faz muito sentido agora
weichsem 02/12/2015

Fantástico, feliz em ajudar :)
Morten Andersen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.