Quand utiliser un arbre de fusion vs une machine d'état pour l'animation

13

Je suis un développeur de jeux expérimenté qui fait mon premier jeu avec des personnages animés en 3D (dans Unity) et j'ai du mal à comprendre quand utiliser les arbres de mélange par rapport aux machines d'état d'animation. Je comprends les deux conceptuellement, mais j'ai vu à la fois des arbres de mélange et des machines d'état d'animation utilisés pour l'animation de personnages dans un tas de tutoriels à la fois d'Unity et d'autres sources. Je ne sais pas quand / pourquoi l'un est meilleur que l'autre en espérant que quelqu'un puisse m'orienter dans la bonne direction.

Mon jeu est un rpg d'action à la 3ème personne a'la WoW ou KOTOR ou Mass Effect (différents systèmes que je connais mais les perspectives et les styles de combat sont assez proches à un haut niveau). J'ai des tonnes et des tonnes d'animations pour les attaques, les blocs, les feintes, les morts, la marche, la course, le saut, le tir, etc., mais je ne sais pas comment les séquencer ensemble naturellement.

J'ai vu des arbres de mélange utilisés pour la locomotion, ce qui est logique pour moi lorsque j'essaie de garder le mouvement des personnages fluide, mais je ne comprends pas comment passer de cet arbre de mélange à un état d'attaque et rien de ce que j'ai vu jusqu'à présent n'est allé au-delà de la locomotion (pas d'attaques etc). Dois-je créer des arbres de mélange à partir de mes états de mouvement pour attaquer / tuer / esquiver les états? Ai-je plus de contrôle en utilisant uniquement des machines à états? Je suis un peu prudent vis-à-vis des machines d'état à cause du ballonnement de transition qui est si commun avec elles et parce que je soupçonne qu'il y a un plus grand potentiel de séquençage d'animation janky sans mélange.

Je prévois d'utiliser le contrôleur de caractères Unity et d'écrire mes propres scripts logiques pour le piloter. Pour l'IA, j'utiliserai les agents de maillage de navigation intégrés. Les animations du contrôleur de personnage sont-elles gérées différemment de celles de l'IA?

Toute idée serait plus que bienvenue!

Merci

weichsem
la source

Réponses:

21

J'ai beaucoup travaillé avec Mecanim dans Unity et je pense avoir une assez bonne compréhension de son fonctionnement.

Comme vous le dites, les arbres mixtes sont presque certainement la voie à suivre pour faire de la locomotion. Les arbres de mélange sont généralement destinés à lorsque vous souhaitez mélanger en continu des animations pour créer la sortie finale. Comme donner au joueur le contrôle de la vitesse d'exécution de l'avatar.

Il est préférable de conserver toutes les actions individuelles en tant qu'état individuel, dans lequel vous pouvez effectuer la transition. Selon l'intensité de votre jeu, vous pouvez même envisager d'utiliser Any State comme point de départ pour aller rapidement sauter, attaquer, etc., sans avoir à attendre la fin d'une autre animation.

La clé de la fusion d'un arbre de mélange avec la course est d'utiliser des transitions . Il n'y a pas de magie pour rendre cela magnifique, seulement une planification minutieuse et des ajustements tout en prévisualisant la transition dans Unity. Une grande partie du travail repose sur l'animateur pour avoir les bases de transitions réussies.

Quelque chose à garder à l'esprit lors des transitions est de trouver le bon équilibre entre elles et de donner au joueur la rétroaction attendue. Vous pouvez constater qu'une transition rapide fonctionne mieux pour la sensation de jeu, tandis qu'une transition plus lente peut sembler meilleure, mais donne envie à vos joueurs de jeter le contrôleur.

Vous trouverez ci-dessous une configuration assez simple, où les flèches indiquent le déroulement des transitions. Les transitions sont basées sur les conditions d'entrée et quittent à la fin de l'animation ou lorsqu'une condition donnée est remplie. Cela signifie également qu'un état peut entrer dans divers autres états selon différentes conditions.

Machine d'état

Ce que vous remarquez probablement, c'est que cela peut rapidement devenir un gros tas de "spaghettis", et un moyen d'éviter une partie de ce gâchis est d'utiliser le Any State qui est également inclus dans l'image ci-dessus.

Le Tout Etat a l'avantage de pouvoir faire la transition vers quelque chose de tout temps. Les transitions peuvent toujours être utilisées pour mélanger l'animation, cependant, vous travaillez un peu plus dans l'obscurité quant à son apparence. Il est possible de prévisualiser de / vers différents états lors de la configuration.

Vous n'avez pas mentionné les couches , qui peuvent être extrêmement utiles pour blesser votre personnage ou pour remplacer le haut du corps pour transporter différentes armes tout en utilisant la même animation pour les jambes pour toutes les armes. Les calques sont également mélangés et peuvent être ajustés progressivement, de sorte qu'un personnage pourrait être plus ou moins blessé, par exemple. Un autre exemple serait de lever les bras d'un personnage en l'air (si le personnage se rend ou quelque chose), tout en gardant toutes les autres animations identiques.

Mais la mise en place d'un contrôleur d'animation solide n'est pas une tâche d'une heure. Cela demande un peu de planification et je ne peux que vous encourager à essayer de mettre en place une machine à états simple avec deux attaques, un saut, un ralenti et un mélange / marche-course. Vous pouvez également trouver les comportements introduits dans Unity 5 extrêmement utiles pour contrôler ou interagir avec les scripts.

Je suis sûr à 99% que l'IA se comportera de la même manière que le contrôleur du joueur, étant donné que ce sont des paramètres modifiés via des scripts qui contrôlent la façon dont l'animation passe d'un état à l'autre.

Sommaire

  • Arbres mixtes pour la locomotion.
  • États pour des actions simples, définies ou des états de boucle simples.
  • Des sous-états pour organiser une série d'états, comme un saut.
  • Transitions pour le mélange / transition entre différents états (un état peut également être un arbre de mélange).
  • Calques pour remplacer ou ajouter à l'animation de base.

Considérez donc les arbres de mélange comme des états étendus, qui agissent également en fonction des valeurs des paramètres.

Un peu longue, mais j'espère que cela éclairera le sujet :)

Morten Andersen
la source
Merci pour votre description impressionnante, cela a beaucoup de sens maintenant
weichsem
Fantastique, heureux de vous aider :)
Morten Andersen