Verwendung eines Mischbaums gegen eine Zustandsmaschine für die Animation

13

Ich bin ein erfahrener Spielentwickler, der am liebsten mein erstes Spiel mit 3D-animierten Charakteren (in Unity) macht, und ich kämpfe darum, herauszufinden, wann Mischbäume gegen Animationszustandsautomaten eingesetzt werden sollen. Ich verstehe beide Konzepte, habe aber in einer Reihe von Tutorials sowohl aus Unity als auch aus anderen Quellen sowohl Mischbäume als auch Animationszustandsmaschinen für die Charakteranimation gesehen. Ich bin mir nicht sicher, wann / warum einer besser ist als der andere und hoffe, dass mich jemand in die richtige Richtung weisen kann.

Mein Spiel ist ein 3rd-Person-Action-RPG a'la WoW oder KOTOR oder Mass Effect (verschiedene Systeme, die ich kenne, aber die Perspektiven und Kampfstile sind auf hohem Niveau ziemlich ähnlich). Ich habe Unmengen von Animationen für Angriffe, Blockaden, Täuschungen, Todesfälle, Gehen, Laufen, Springen, Schießen usw., aber ich bin mir nicht sicher, wie ich sie auf natürliche Weise zusammenstellen soll.

Ich habe Mischbäume zur Fortbewegung gesehen, die für mich sinnvoll sind, wenn ich versuche, die Bewegungen der Charaktere flüssig zu halten, aber ich verstehe nicht, wie ich von diesem Mischbaum in einen Angriffszustand übergehen soll, und nichts, was ich bisher gesehen habe, ist über die Fortbewegung hinausgegangen (keine Angriffe) etc). Muss ich Bäume aus meinen Bewegungszuständen in Angriffs- / Todes- / Ausweichzustände mischen lassen? Habe ich mehr Kontrolle über Zustandsautomaten? Ich bin ein bisschen vorsichtig mit Zustandsautomaten, weil sie so häufig aufblähen und weil ich vermute, dass es ein größeres Potenzial für ruckelige Animationssequenzen gibt, ohne sie zu überblenden.

Ich plane, den Unity-Zeichencontroller zu verwenden und meine eigenen Logikskripte zu schreiben, um ihn zu steuern. Für die KI verwende ich die eingebauten Nav-Mesh-Agenten. Werden Character Controller-Animationen anders gehandhabt als die KI-Animationen?

Einsichten wären mehr als willkommen!

Vielen Dank

weichsem
quelle

Antworten:

21

Ich habe viel mit Mecanim in Unity gearbeitet und habe das Gefühl, dass ich ziemlich gut verstehe, wie es funktioniert.

Wie Sie sagen, sind Mischbäume mit ziemlicher Sicherheit der richtige Weg, um sich fortzubewegen. Mischbäume eignen sich im Allgemeinen zum kontinuierlichen Mischen von Animationen, um die endgültige Ausgabe zu erzielen . Geben Sie dem Spieler beispielsweise die Kontrolle darüber, wie schnell der Avatar läuft.

Es ist wahrscheinlich besser, alle Einzelaktionen als individuellen Zustand zu erhalten, in den Sie übergehen können. Abhängig davon, wie intensiv Ihr Spiel sein wird, können Sie den Status "Beliebig" als Ausgangspunkt für schnelle Sprünge, Angriffe usw. verwenden, ohne auf die Fertigstellung einer weiteren Animation warten zu müssen.

Der Schlüssel zum Mischen von einem Mischbaum mit dem Laufen ist die Verwendung von Übergängen . Es ist keine Magie, dies großartig aussehen zu lassen, nur sorgfältige Planung und Optimierung während der Vorschau des Übergangs in Unity. Ein Großteil der Arbeit beruht darauf, dass der Animator die Grundlage für erfolgreiche Übergänge bildet.

Beachten Sie bei Übergängen, dass die Balance zwischen den Übergängen gut aussieht und Sie dem Spieler das erwartete Feedback geben. Sie werden vielleicht feststellen, dass ein schneller Übergang für das Spielgefühl am besten geeignet ist, während ein langsamer Übergang besser aussieht, aber Ihre Spieler dazu bringen möchten, den Controller wegzuwerfen.

Im Folgenden finden Sie eine einfache Konfiguration, in der Pfeile angeben, wie Übergänge verlaufen. Übergänge basieren auf Eingabebedingungen und werden entweder beendet, wenn die Animation beendet ist, oder wenn eine bestimmte Bedingung erfüllt ist. Dies bedeutet auch, dass ein Zustand in Abhängigkeit von verschiedenen Bedingungen in verschiedene andere Zustände wechseln kann.

Zustandsmaschine

Was Sie wahrscheinlich bemerken, ist, dass dies schnell zu einem großen Haufen "Spaghetti" werden kann, und ein Weg, um einiges von diesem Durcheinander zu vermeiden, besteht darin, den Status " Jeder" zu verwenden, der auch im obigen Bild enthalten ist.

Der Jeder Staat hat den Vorteil, in nichts von einem bestimmten Zeitpunkt für den Übergang der Lage zu sein. Übergänge können weiterhin zum Überblenden der Animation verwendet werden. Sie arbeiten jedoch etwas weiter im Dunkeln, um das Erscheinungsbild zu bestimmen. Es ist möglich, während der Einrichtung eine Vorschau von / zu verschiedenen Zuständen anzuzeigen.

Etwas, das Sie nicht erwähnt haben, sind Ebenen , die äußerst nützlich sein können, um Ihren Charakter verwundet zu machen oder den Oberkörper zu überschreiben, um verschiedene Waffen zu tragen, während für alle Waffen die gleiche Animation für die Beine verwendet wird. Ebenen werden ebenfalls gemischt und können schrittweise angepasst werden, sodass beispielsweise ein Charakter mehr oder weniger verwundet werden kann. Ein anderes Beispiel wäre, die Arme eines Charakters in die Luft zu heben (wenn sich der Charakter ergibt oder so), während alle anderen Animationen gleich bleiben.

Das Einrichten eines soliden Animationscontrollers dauert jedoch keine Stunde. Es bedarf einiger Planung, und ich kann Sie nur ermutigen, einen einfachen Zustandsautomaten mit zwei Angriffen, einem Sprung, einem Leerlauf und einem Walk / Run-Mischbaum, einzurichten. Möglicherweise sind die in Unity 5 eingeführten Verhalten auch äußerst nützlich für die Steuerung oder Interaktion mit Skripten.

Ich bin mir zu 99% sicher, dass AI sich genauso verhält wie der Player-Controller, da die Parameter durch Skripte geändert werden, die steuern, wie die Animation von Status zu Status wechselt.

Zusammenfassung

  • Mischbäume für die Fortbewegung.
  • Staaten für einzelne, definierte Aktionen oder einfache Schleifenzustände.
  • Unterzustände zum Organisieren einer Reihe von Zuständen, wie z. B. ein Sprung.
  • Übergänge zum Mischen / Übergehen zwischen verschiedenen Zuständen (ein Zustand kann auch ein Mischbaum sein).
  • Ebenen zum Überschreiben oder Hinzufügen zur Basisanimation.

Stellen Sie sich Mischbäume also als erweiterte Zustände vor, die auch auf Parameterwerten basieren.

Ein bisschen langes Bummeln, aber ich hoffe, es beleuchtet das Thema etwas :)

Morten Andersen
quelle
Vielen Dank für deine tolle Beschreibung, das macht jetzt sehr viel Sinn
weichsem
Fantastisch, ich helfe gerne :)
Morten Andersen