Kognitive Controller

Mithilfe von kognitiven Controllern können Sie festlegen, dass sich das Verhalten der Crowd-Mitglieder in einer Simulation den jeweiligen Umständen anpassen soll. So wäre es z. B. denkbar, dass eine anfänglich unplanmäßig umherwandernde Figur sich plötzlich zielstrebig auf ein Ziel zu bewegt, nachdem sie sich dem Ziel auf eine bestimmte Entfernung genähert hat.

Aus technischer Sicht ermöglichen kognitive Controller die Beeinflussung von Crowd-Simulationen mittels in Skripts definierter Bedingungen, was im Endeffekt auf die Implementierung einer Form der künstlichen Intelligenz hinausläuft. Sie können den Editor für den kognitiven Controller verwenden (ein Flussdiagramm-Editor ähnlich dem Dialogfeld Bewegungsflussdiagramm), um zunächst ein Netz aus Verhalten und Verhaltenskombinationen, den sogenannten "Zuständen", einzurichten. Anschließend werden auf MAXScript basierende Übergänge zugewiesen, in denen festgelegt ist, wann die Vertreter von einem Zustand in den anderen wechseln sollen. Selbst mit einer relativ einfachen Einrichtung lassen sich Simulationen erzeugen, in denen Ihre Figuren wie lebendige und bewußte Lebewesen erscheinen, die eigene Entscheidungen treffen, während sie sich durch die Szene bewegen.

Die folgenden Links führen Sie zu einer Reihe von Beispielen für von kognitiven Controllern gesteuerte Übergänge im Thema Dialogfeld "Zustand":

Testen eines Partikelsystem-Parameters

Testen der Position eines Objekts

Testen einer Atmosphären-Eigenschaft

Testen der Entfernung zwischen zwei Objekten

Testen eines Modifikator-Parameters

Testen des Verhaltens eines anderen Vertreters

Prozeduren

So richten Sie einen kognitiven Controller ein und verwenden ihn:

    In diesem Verfahren wird das typische Vorgehen bei Erstellung und Einsatz eines kognitiven Controllers beschrieben. Es wird vorausgesetzt, dass Sie sich mit den Grundlagen der Crowd-Simulation auskennen. Weitere Informationen zur Crowd-Einrichtung finden Sie in den Themen Crowd-Helferobjekt und Rollout "Setup".

  1. Erstellen Sie eine Szene mit einem Crowd-Objekt und einem oder mehreren Vertretern. Siehe Erstellen von Crowd-Helferobjekten.
  2. Erstellen Sie mindestens zwei Verhaltensweisen. Siehe Zuordnen von Verhaltensweisen.
  3. Öffnen Sie den Editor für den kognitiven Controller.
  4. Klicken Sie auf die Schaltfläche "Neu", um einen kognitiven Controller zu erstellen.

    Character Studio gibt dem Controller den Vorgabenamen "Kognitiver Controller". Sie sollten diesen Vorgabenamen in einen beschreibenden Namen ändern, z. B. "Suchen/Umhergehen". Klicken Sie dazu auf den Namen im Textfeld, und geben Sie den neuen Namen ein.

    Wenn Sie einen neuen kognitiven Controller erstellen, wird automatisch der Modus "Zustand erstellen" aktiviert.

  5. Klicken Sie in das Editorfenster, um einen Zustand zu erstellen und zu platzieren. Klicken Sie wiederholt an verschiedene Stellen, um die benötigte Anzahl an Zuständen zu erstellen.
  6. Klicken Sie mit der rechten Maustaste auf einen Zustand, um das Dialogfeld "Zustand" zu öffnen.
  7. Auch hier sollten Sie wieder die Vorgabenamen der Zustände in beschreibende Namen ändern, was Sie im Dialogfeld "Zustand" tun können. Klicken Sie auf den Namen ("Zustand" oder "Zustand Nr.") im Textfeld, und geben Sie den neuen Namen über die Tastatur ein.

    Als Nächstes definieren Sie für jeden Zustand eine oder mehrere Verhaltensweisen.

  8. Klicken Sie auf die Schaltfläche "Hinzufügen".
  9. Wählen Sie im Dialogfeld "Verhalten auswählen" eine oder mehrere Verhaltensweisen.

    Wenn Sie mehrere Verhaltensweisen wählen, können Sie jeweils verschiedene Gewichtungen im Zustand-Editor angeben. Beispielsweise können Sie ein Suchverhalten mit voller Gewichtung mit einem Umhergehen-Verhalten mit halber Gewichtung kombinieren, sodass der Vertreter auf der Suche nach dem Ziel etwas umherwandert.

  10. Schließen Sie das Dialogfeld "Verhalten auswählen" und dann den Zustand-Editor.
  11. Wiederholen Sie die Schritte 6-10 nach Bedarf, um die Verhaltensweisen für die anderen Zustände im Controller zu definieren.

    Als Nächstes definieren Sie mit "Übergang erstellen" die Abfolge der Zustände während der Simulation.

  12. Überlegen Sie sich, in welcher Reihenfolge die Zustände auftreten sollen.
  13. Klicken Sie auf (Übergang erstellen).
  14. Ziehen Sie in der Reihenfolge, in der sie ausgeführt werden sollen, eine Linie von einem Zustand zum nächsten. Klicken Sie auf einen Zustand, um einen Übergang von dem Zustand zu sich selbst zu erstellen.

    Ein Übergangspfeil wird angezeigt, der vom "Quell"-Zustand zum "Ziel"-Zustand weist.

    Jeder Zustand kann Quell- und Zielpunkt für beliebig viele Übergänge sein. Geben Sie verschiedene Übergangsbedingungen für die einzelnen Übergänge an, um das Zustandsdiagramm so komplex wie nötig zu gestalten.

    Als Nächstes definieren Sie im Dialogfeld "Zustandsübergang" eine Bedingung für jeden Übergang.

  15. Klicken Sie mit der rechten Maustaste auf eine Übergangslinie.
  16. Geben Sie im Dialogfeld "Zustandsübergang" den Namen der Übergangsbedingung ein, und klicken Sie dann auf die Schaltfläche "MAXScript bearbeiten".
  17. Laden Sie im MAXScript-Editorfenster ein Skript, in dem die Bedingungen definiert werden, unter denen der Übergang auftreten soll, oder geben Sie ein solches Skript ein.

    Normalerweise ist dies eine Funktion, die eine Bedingung testet und 1 zurückgibt, wenn sie wahr ist, bzw. 0, wenn sie falsch ist.

    Anmerkung: Lesen Sie dieses Thema über den Beispiel-MAXScript-Code für diese Funktion in der Online- Benutzerreferenz .

    Beispiel:

    fn test1 del t = (
    if (del.simpos.x <= 40 and del.duration > 50) then 1 else 0
    )

    Die obige Anweisung besagt, dass der Übergang auftreten soll, wenn die Position des Vertreters auf der X-Achse kleiner oder gleich 40 ist und er sich seit mehr als 50 Frames im aktuellen Zustand befindet. Wenn jedoch eine der Bedingungen oder beide falsch sind, soll der Vertreter im aktuellen Zustand verharren (oder es werden andere Übergangsbedingungen getestet). Im Folgenden werden die Schlüsselwörter aufgelistet:

    • fn - es folgt eine MAXScript-Funktion.
    • test1 - der Name der Funktion; dieser sollte auch im Dialogfeld "Übergang" als Übergangsbedingung angezeigt werden. Diese Funktion wird zuerst ausgeführt, wenn der Übergang getestet wird. Das Skript kann beliebig viele weitere Funktionen enthalten, die von einer Funktion im Skript aus aufgerufen werden.
    • del - bezieht sich auf den Vertreter, auf den das Skript derzeit angewendet wird. Das Übergangsskript wird für jeden Vertreter/jedes Teammitglied, dem der kognitive Controller zugewiesen wurde, einmal pro Frame ausgeführt. Wenn Sie im Skript "del" anstelle des Namens eines bestimmten Vertreters verwenden, werden alle Vertreter getestet, denen der kognitive Controller zugewiesen wurde.
    • t - die aktuelle Zeit (Frame-Nummer) in der Simulation.
    • del.simpos.x - die aktuelle Position des Vertreters auf der X-Achse. Mit der Spezialfunktion "simpos" wird eine Vertreterposition während der Simulationslösung ermittelt. Das ist notwendig, da MAXScript die Vertreterpositionen während einer Simulation nicht über die Standardfunktion "[node].pos" abrufen kann.
    • del.duration - die Anzahl der Frames, die der Vertreter bereits im aktuellen Zustand ist.

      Eine vollständige Liste der vertreterspezifischen Parameter, die im Skript überprüft werden können, können Sie aufrufen, indem Sie ein MAXScript-Aufzeichnungsfenster öffnen (Funktionstaste F11 drücken) und Folgendes eingeben:

      ShowProperties $delegate01

      Da der Vertreter ein Knoten ist, reagiert er auch auf die Standard-MAXScript-Funktionen für Knoten, mit der Ausnahme von "simpos" wie oben beschrieben. Informationen zum Zugriff auf Übergangseigenschaften wie Dauer und Priorität finden Sie in der MAXScript-Hilfe.

      Weitere Beispiele für MAXScript-Bedingungen, die mit kognitiven Controllern verwendet werden können, finden Sie unter Dialogfeld "Zustandsübergang".

  18. Im Dialogfeld "Zustandsübergang" können Sie weitere Parameter wie Priorität und Dauer einstellen.
  19. Weisen Sie im Dialogfeld Verhaltenszuordnungen und Teams den kognitiven Controller Vertretern oder Teams zu.
    Anmerkung: In Crowd können Sie nicht mehrere kognitive Controller mit einem Vertreter verwenden. Sie können sie zwar zuweisen, bei der Lösung gibt Character Studio jedoch eine Meldung aus, dass nur der erste zugewiesene kognitive Controller verwendet wird.