Bewegungsberechnung einer Biped Crowd

Wir öffnen die Szene “sharedMoFlow_01.max” und erstellen in der Dummies-Sektion des Create Panels ein “Crowd”- und ein “Delegate”-Objekt sowie ein Grid-Dummy. Die Funktionen des Crowd-Tools sind wider Erwarten im Modify- Panel zu finden.

Im nächsten Schritt werden wir 13 Kopien des Delegate-Objekts erstellen und diese vom Scatter- Tool auf dem Grid verteilen lassen. Mit Hilfe des Scatter-Buttons aktivieren wir den Scatter Objects-Dialog. Da der Delegate01 bereits in der Object to Clone-Auswahl aufgeführt ist, geben wir unter How many die Zahl der zu erstellenden Kopien mit 13 an und erzeugen diese dann mittels der Generate Clones-Funktion. Danach wechseln wir innerhalb desselben Dialogs in den Position-Tab und wählen im markierten Auswahl- Fenster das Grid als Positionsfläche aus, auf der die Delegates verteilt werden sollen. Mit Hilfe der Generate Location-Funktion können wir dann zwischen beliebig vielen Positionierungsvorschlägen der Delegates auf dem Grid-Dummy wählen.

Im ersten Schritt öffnen wir über den Biped Association-Button den Associate Bipeds with Delegates-Dialog und fügen dort mittels Add alle Bipeds und Delegates ein. Dann wählen wir die Associate Delegate with Closest Biped-Option aus und weisen die verschiedenen Elemente einander, unter Beibehaltung der Set Delegates to Use Biped-Checkbox, zu. Im zweiten Schritt aktivieren wir mit Hilfe des Multiple Delegate Editing-Buttons den Edit Multiple Delegates-Dialog und wählen in der Delegates to Edit-Sektion alle Delegates aus. Innerhalb der Biped-Sektion selektieren wir die Random Start Clip-Option, aktivieren sie durch die daneben liegende Set- Checkbox und bestätigen durch Apply Edit.

Als Nächstes werden wir die Delegates zu einem Team zusammenfassen. Hierzu öffnen wir den Behaviour Assignments and Team-Dialog und bilden aus allen Delegates mittels New Team eine Gruppe. Danach wählen wir über New Behaviour als erste Verhaltensregel Seek aus.

In der Assignment Design Group werden jetzt die Delegates als “Team 0” und Seek als Behaviour aufgelistet. Um das Behaviour dem Team zuzuordnen, müssen wir das Team und das Behaviour selektieren und diese dann mittels der New Assignment-Pfeilleiste einander zuordnen. Sobald dies erfolgt ist, erscheint die Zuordnung in dem Behaviour Assignments Group-Fenster. Anschließend wählen wir im Behaviours-Dropdown das nun aktive Seek aus, selektieren im Seek Behaviour- Rollout den erstellten Dummy als Zielobjekt und geben als Methode die Force-Option an. Wenn wir jetzt die Crowd Simulation über die Solve-Funktion im Solve-Rollout des Motion- Panels starten, können wir bereits erste zufällig generierte Gruppenbewegungen sehen. Siehe Szene “crowd_01.max” und “crowd_01.avi”.

Als Nächstes weisen wir dem Team 0 die Verhaltensregel Avoid zu, um die Delegates dazu zu bringen, nicht miteinander zu kollidieren. Ist dies getan, wählen wir Avoid im “Behaviours”- Dropdown des Motion-Panels aus und geben im Avoid Behaviour-Rollout alle Delegates als zu vermeidende Objekte an. Wenn wir nun eine Simulation berechnen, bemerken wir jedoch, dass Avoid nicht die gewünschten Ergebnisse erzielt – die Bipeds kollidieren nach wie vor miteinander. Siehe Szene “crowd_02.max” und “crowd_02.avi”.

Um der Kollisionsproblematik entgegenzuwirken, werden wir den einzelnen Team-Mitgliedern verschiedene Prioritäten zuweisen, nach denen diese berechnet werden sollen. Die so genannten “Priorities” sind die Grundlage, auf der die Backtracking-Option arbeitet. Hierzu wählen wir im Priority-Rollout über die Proximity to an Object-Funktion den Seek-Dummy aus. Anschließend weisen wir den Delegates mit Hilfe der Assign By Picking-Funktion verschiedene Prioritäten durch Anklicken zu. Mit Hilfe der Darstellungsoption Display Priority werden die Delegate-Prioritäten sichtbar. Es empfiehlt sich, die Priorities-Vergabe derart zu gestalten, dass die vorderen Delegates mit hohen Prioritäten ausgestattet werden. Anzumerken ist hierbei, dass eine hohe Priorität durch einen niedrigen Wert ausgedrückt wird. Die 0 ist gleich bedeutend mit der höchsten Wichtigkeitsstufe.

Als Letztes aktivieren wir in der Biped-Sektion des Solve-Rollouts die Optionen Biped/ Delegates Only, Use Priorities und Backtracking. Die Simulation sollte nun nach erneuter Berechnung kollisionsfrei ablaufen – tut sie aber nicht! Siehe Szene “crowd_03.max”.

Mit Hilfe der folgenden Möglichkeiten können Kollisionen vermieden werden:

  1. Delegates: Durch einen größeren Abstand zueinander können Initialüberlappungen des Repel Radius vermieden werden.
  2. Random Start Clips: Mehr mögliche Bewegungsstarts verringern das Risiko einer Initialüberlappung.
  3. Repel Radius: Wenn der Radius zu klein ist, kommt es zu Kollisionen. Wenn der Radius zu groß ist, kann dies dazu führen, dass keine kollisionsfreie Bewegungsrichtung berechnet werden kann.
  4. Behaviours: Es sollte überprüft werden, ob sich die Behaviour-Vorgaben durch die im Motion Graph bereitgestellten Bewegungen und Transitions überhaupt realisieren lassen. Durch Hinzufügen zusätzlicher Bewegungen kann diese Problematik umgangen werden.
  5. Bewegungslänge: Kurze Clips verringern den Rechenaufwand beim Backtracking.

Trotz der aufgezählten Tipps bleibt der Umgang mit Biped Crowds immer ein wenig problematisch.