Skyrim:Mein erstes Dungeon - Navmesh

Aus Skript-Wiki
Wechseln zu: Navigation, Suche

Überblick

In diesem Kapitel werden wir dazu übergehen, eine Navmesh automatisch und manuell zu kreieren. Sie werden lernen:

  • Was Navmesh ist und warum es wichtig ist
  • Wie Sie eine Navmesh automatisch generieren, indem Sie eine auf Umformung basierende Generierung nutzen
  • Wie Sie Navmeshes per Hand bearbeiten
  • Navmesh Warnungen zu beheben
  • Eine Decke zu generieren

Was ist Navmesh?

Wenn ein Bereich gebaut und eingerichtet wurde müssen wir festlegen, wo die NPCs herumlaufen können. Da kommen Navmeshes ins Spiel. Einfach gesagt ist eine Navmesh eine Ansammlung von Polygonen, die den NPCs sagen, wo Sie gehen können. Es ist einfach, die Menge an Informationen als vorrausgesetzt anzusehen, die wir beim spielen aufnehmen. Unser Hirn verarbeitet alle visuellen Details, zieht daraus Schlüssse und macht Vorraussagen. Unglücklicherweise (oder zum Glück) sind Systeme künstlicher Intelligenz nirgends auch nur näherungsweise soweit entwickelt wie das menschliche Gehirn und müssen auf Informationen vertrauen, die sie von uns bekommen. Navmesh ist ausschlaggebend dafür, was ein NPC über die gegebene Umgebung weiß. Qualitativ hochwertige Navmeshes sind wichtig, um den NPC sich so gut wie möglich verhalten zu lassen. Navmesh ist ein starkes Werkzeug - es kann anfangs frustrierend sein, es zu nutzen. Wir werden Schritt für Schritt lernen, damit zu arbeiten. Wenn Sie einmal die Grundlagen gelernt und ein wenig Praxiserfahrung haben, werden Sie schnell besser werden.

G.E.C.K. Benutzer aufgepasst: Es hat sich nicht viel beim navmeshing von Hand getan, aber es gibt Neuerungen bei der automatischen Generierung, wie der völlig neue Recast Modus, der in diesem Tutorial enthalten ist. Nutzer den Oblivion/und oder Morrowind CS werden merken, dass Navmesh das Pathfinding System ersetzt hat.

Automatische Generierung der Navmesh

Die ganze Arbeit mit den Navmeshes wird in einem seperaten Editormodus gemacht. Um in diesen Modus zu kommen, klicken Sie den Navmesh-Button NavmeshEditing.jpeg in der Werkzeugleiste oder drücken Sie STRG+E. Nun wird die Navmesh-Werkzeugleiste erscheinen. Wir benötigen momentan nichts aus der Toolbar, um die Navmesh automatisch zu generieren; Sie existiert als eine Annehmlichkeit. Wir müssen aber in dem Navmesh Modus sein, um eine automatische Generierung nutzen zu können und die Toolbar lässt uns wissen, dass das der Fall ist. Es gibt vier Typen der Autogenerierung: Objekt-basierend, Havok-basierend, Recast (Umgestaltung)-basierend und Fortgeschritten. Für die Großzahl der Interior werden Sie die Recast Generierung nutzen wollen und nachher von Hand die Navmesh aufräumen. Dieses Tutorial wird nicht in die Tiefe der Objekt und Havok-basierten Generierung gehen. Fortgeschrittene Nutzer werden vielleicht alle Navmeshes per Hand erstellen. Einige sind der Meinung, das gehe schneller, als nach der Autogenerierung auch noch aufzuräumen.

GECK Nutzer aufpassen: Objekt und Recast basierende Generierung sind neue Modi für die Creation Engine.

Lassen Sie uns mit der Recast Methode eine Navmesh für unsere Höhle kreieren:

  1. Klicken Sie in das Render Window um sicherzugehen, dass es das aktive Fenster ist.
  2. Stellen Sie sicher, dass nichts im Render Window ausgewählt ist (Wenn Sie nicht sicher sind, klicken Sie einfach mit der linken Maustaste in das Void oder drücken Sie D.
  3. Starten Sie den Navmesh Modus mit STRG+E.
  4. Wählen Sie die Recast-basierende Navmesh Generierung aus dem Navmesh-Menü in der Hauptmenüleiste: NavMesh>Generation>Recast-Based Generation
  5. Nicht verzweifeln über die vielen verschiedenen Werte in dem sich öffnenden Fenster. Stellen Sie nur sicher, dass die Einstellungen denen in dem Bild links unten entsprechen und drücken Sie OK. (Abhängig von der Leistung Ihres Pcs kann es ein wenig dauern)
  6. Jetzt sollte das ganze circa so aussehen, wie in dem Bild unten.
Manchmal wollen Sie vielleicht eine große Fläche eines Levels mit einer Navmesh versehen aber andere Meshes in dem Level behalten. Dazu halten Sie STRG+ALT gedrückt und wählen mit der linken Maustaste die Bodenobjekte aus, über die Sie eine Navmesh legen möchten. Anschließend, wenn Sie alles wie gewünscht ausgewählt haben, starten Sie wie eben beschrieben die Recast basierte Generierung.

Navmesh per Hand

Jetzt da wir eine Navmesh kreiert haben müssen wir ein wenig Zeit aufwenden, um sie aufzuräumen. Der einfachste und schnellste Weg das zu tun ist von Hand. Bevor wir mit dem Säuberungsprozess beginnen, nehmen Sie sich eine Minute und gucken in Ihrer Navmesh wo die Recast basierte Generierung nicht so gut gearbeitet hat. Wenn Sie Probleme haben die Navmesh zu sehen, können Sie einen der drei Navmesh Modi probieren: Normal, Transparent und nur die Navmesh. Drücken Sie W um in den Ansichten herumzuschalten oder nutzen Sie die Schaltflächen mit den Augen in der Navmesh Menüleiste.

Teile einer Navmesh löschen

Wenn Sie eine automatisch generierte Navmesh aufräumen, ist es oft der beste Weg damit zu beginnen unnötige Segmente zu löschen, die in nicht erreichbaren Bereichen erstellt wurden. Das wird es uns leichter machen zu sehen was mit der übrigbleibenden Navmesh geschieht. Der Höhlenteil und die Stufen scheinen die größte Anfälligkeit aufzuweisen. Auch werden Sie vielleicht eine Reihe von "Navmesh Inseln" sehen. Machen Sie sich um die jetzt keine Gedanken. Wenn wir einmal die Navmesh aufgeräumt haben, ist das Entfernen der Inseln einfach und schnell gemacht.

Für erfahrenen Nutzer, die die Inseln sofort entfernen wollen: STRG + Linke Maustaste auf die Dreiecke, die Sie behalten möchten. Anschließend drücken Sie I. Das wird alle Navmeshes auswählen, die Sie nicht angeklickt haben. Wenn Sie I gedrückt haben, können Sie mit R oder DELETE die Inseln löschen. Das geht schneller, als jede einzelne Insel von Hand zu löschen, aber es ist auch einfacher aus Versehen nützliche Navmeshes zu löschen. Seien Sie also vorsichtig!
Sk-navmeshes in cave selected.JPG
Sk-navmeshes in cave deleted.JPG

Beginnen wir mit dem Höhen Teil, dann werden wir den Rest der Navmesh säubern. Für diesen Moment müssen Sie nur die Bedeutung der drei Schaltflächen ganz links in der Navmesh Menüleiste kennen: Um die Höhlensektion aufzuräumen, klicken und halten Sie links gedrückt auf einen Eckpunkt in dem Höhlenbereich. Denken Sie daran die Sichtbarkeit mit "W" zu verändern, damit Sie sich zurechtfinden. Ärgern Sie sich nicht, dass Sie versuchen eine Navmesh in dem Bereich zu erhalten: Wir werden es später erneuern. Stellen Sie sicher, dass Sie Select Vertices Sk-vertex button.JPG und/oder Select Triangle Sk-triangle button.JPG aktiviert haben. Sie können die Höhle aufräumen, indem Sie die Ecken oder Dreiecke (oder beides) auswählen. In dem oberen Bild rechts sehen Sie die Navmeshes ausgewählt, fertig zum löschen. Darunter ist die Navmesh der Höhle gelöscht.

Ein Navmesh Dreieck erstellen

Nun ist es Zeit, die Navmesh in der Höhle per Hand zu kreieren.

Wenn Sie mehr und mehr die Navmeshes ändern, werden Sie sich über die Hotkeys freuen:

T schaltet die Dreieck Auswahl An/Aus V schaltet die Ecken Auswahl An/Aus

G schaltet die Kanten Auswahl An/Aus

Schalten Sie die Vertecies Selection an und zoomen Sie in den Anfang Ihrer Höhle hinein. Klicken Sie rechts auf den Boden und eine Ecke wird platziert. Setzen Sie auf dem gleichen Weg nun noch zwei weitere Ecken auf dem Fußboden. Sie sollten nun etwas sehen, dass dem bild unten links ähnlich sieht. (Vielleicht sind bei Ihnen auch alle Punkte gelb, wenn Sie danach noch irgendwo hingeklickt haben)

Stellen Sie sicher, dass Sie das Grid Snap nicht aktiviert haben, da Sie es nicht bruahcen und es nur Probleme verursachen wird, es aktiv zu lassen.
Die Navmesh Bearbeitung nutzt ein seperates Set von Tastenkürzeln als das reguläre Verändern im CK. Vielleicht möchten Sie diese Kurzreferenz ausdrucken, damit Sie sich dort schnell informieren können, wenn Sie sich in dem Modus befinden.

Beachten Sie die Farben der erstellten Eckpunkte. Grün heißt, dass ein Eckpunkt gerade ausgewählt ist. Gelbe Ecken sind nicht ausgewählt und nicht verbunden - also kein Teil eines Dreiecks. Ecken die nicht ausgewählt sind - aber Teil eines Dreiecks - werden rot dargestellt. Wenn irgendwo gelbe Ecken, nachdem die Navmesh fertig ist, können diese ruhig gelöscht werden. Um ein Dreieck zu erstellen, wählen Sie die Drei Punkte mit Hilfe von STRG+F aus (oder Sie ziehen mit gedrückter linker Maustaste einen Rahmen um die Punkte). Die ausgewählten Ecken werden grün dargestellt, sobald sie ausgewählt sind. Drücken Sie nun A oder Sk-navmesh create triangle button.JPG um ein Dreieck zwischen diesen drei Punkten aufzuspannen (wie unten rechts). A funktioniert nur, wenn exakt drei Punkte gewählt sind.

Beachten Sie, dass zwei Punkte grün (also ausgewählt) bleiben, wenn das Dreieck erstellt wurde. Das vereinfacht es, weitere Dreiecke zu erstellen, die mit dem ersten Verbunden sein sollen. Alles was Sie nun noch für ein zweites Dreieck tun müssen, ist STRG+Rechtsklick. Ein neuer Punkt wird an der angeklickten Stelle erzeugt und automatisch mit einem Dreieck mit den zwei anderen Punkten verbunden. Wenn die zwei Punkte, die aktiv bleiben nicht die richtigen sind, drücken Sie einfach TAB.

Eine Navmesh für die Höhle

Jetzt da wir unser erstes Dreieck haben, müssen wir den Rest der Höhle mit anderen Dreiecken auffüllen. Am schnellsten geht das mit der eben beschriebenen Methode.

Die Treppen mit einer Navmesh versehen

Bevor wir den Rest der Zelle mit einer Navmesh versehen, schauen wir uns die Stufen an. Eventuell ist Ihre Navmesh hier unterbrochen (wie unten links zu sehen), aber glücklicherweise macht es das CK uns einfach, solche Teile zu verbinden. Für dieses Beispiel arbeiten wir mit einer sauberen Kante oben und unten an der Treppe:

  1. Löschen Sie eventuelle Eckpunkte auf der Treppe selbst.
  2. Verschieben Sie die Punkte oben und unten an der Treppe so, dass Sie eine klare Kante haben.
  3. Wenn eine Kante drei oder mehr Punkte hat, führen Sie einige davon zusammen, sodass nur noch zwei übrig bleiben. - Um Eckpunkte zu fusionieren, wählen Sie die Punkte aus, die Sie zusammenführen wollen und drücken Sie Q oder Sk-navmesh merge vertices button.JPG in der Menüleiste.
  4. Stellen Sie sicher, dass die Kantenauswahl aktiv ist (G)
  5. Doppelklicken Sie auf eine der zwei Kanten. Dadurch werden die zwei Eckpunkte der Kante ausgewählt - sie werden grün dargestellt.
  6. Mit den zwei ausgewählten Punkten halten Sie STRG gedrückt und doppelklicken Sie auf die andere Kante. Die Navmesh dazwischen wird automatisch generiert, das Ergebnis sollte ähnlich dem unten rechts aussehen.

Dem Rest der Zelle eine Navmesh verpassen

Nun, da Sie die Höhle und die Stufen von Hand ausgebessert haben, wissen Sie die Grundlagen und alles Notwendige, um dem Rest des Levels eine Navmesh zu erstellen. Wenn Sie irgendwelche Probleme bekommen, kommen die folgenden Punkte vielleicht richtig:

  • Legen Sie den Fokus auf eine saubere, einfache Navmesh. Das ist schneller zu bearbeiten und läuft besser im Spiel.
  • Erstellen Sie keine Navmesh für Bereiche, die NPC's nie nutzen werden, wie beispielsweise zwischen Möbeln. Pfad Tests können genutzt werden das zu testen.
  • Vergessen Sie nicht: Um automatisch eine Navmesh zwischen naheliegenden, offenen Kanten zu erstellen Doppelklick auf die eine Kante und STRG+Doppelklick auf die andere.
  • Um ein Dreieck zu löschen, schalten Sie mit T in den Dreieckauswahlmodus, wählen das Dreieck und drücken Sie DELETE oder R.
  • Klicken Sie rechts auf eine Kante, um einen neuen Eckpunkt anzulegen.
  • Wenn die Navmesh fertig aussieht, aber irgendwo noch gelbe Kanten sind (also in der Mitte, nicht außen), dann überlappen sich da zwei Eckpunkte. Diese können Sie dann mit Q fusionieren, nachdem Sie beide ausgewählt haben.

Sie brauchen im Übrigen nie die Navmesh um bewegliche (Havok) Objekte herumzuführen.

Wir haben nun eine schöne Navmesh, die - falls Sie am Anfang nicht den fortgeschrittenen Weg gewählt haben - noch kleine Inseln beinhaltet. Diese können nun leicht gelöscht werden:

  1. Wählen Sie ein Dreieck in Ihrer Hauptnavmesh aus und drücken Sie I oder Sk-navmesh inverse flood button.JPG
  2. Das wird inverse flood fill genannt und wählt alle Navmeshes, die nicht in der Auswahl sind. Ausgehend davon, dass Ihr spielbarer Bereich nur aus einer einzigen, zusammenhängenden Navmesh besteht, sind die nun ausgewählten Teile unwichtig.
  3. Drücken Sie R oder DELETE, um die ausgewählten Inseln zu löschen.

Fehler in der Navmesh beheben

Sie müssen immer Ihre Navmesh auf Fehler überprüfen, wenn Sie fertig mit einer Zelle sind. Das ist ein relativ leichtes Unterfangen.

Sie werden beim Speichern benachrichtigt werden, wenn Sie einen Fehler in der Navmesh haben. Egal ob Sie einen Fehler beim Speichern bekommen, oder nicht. Sie sollten immer "Check Navmesh" laufen lassen.
  1. Öffnen Sie den Select Triangle Dialog. Das geht auf drei Wegen:
    1. Nutzen Sie die Schaltfläche Sk-navmesh find triangle button.JPG in der Navmesh Menüleiste
    2. Drücken Sie STRG+F
    3. Über das Hauptmenü: Navmesh>Select Triangle by Index
  2. Wenn der Dialog offen ist, wählen Sie Check Navmesh
  3. Eine Warnung geht auf die besagt, wie viele Dreiecke mit Warnungen gefunden wurden (wenn denn welche gefunden wurden) und fragt, ob Sie die alle löschen wollen.
  4. Jetzt müssen Sie sich mit den Problemdreiecken auseinandersetzen. Es gibt zwei Möglichkeiten:
    1. Wenn Sie Yes wählen, werden alle problematischen Dreiecke gelöscht werden - aber Sie werden schauen müssen, wo diese Dreiecke lokalisiert wurden um den Fehler zu beheben (vielleicht indem Sie ein neues Dreieck erstellen). Sie werden keinen Weg haben, als die Dreiecke mit dem Auge zu finden, was bei komplexen Navmeshes sehr schwierig sein kann, vor allem, wenn es kleine Dreiecke oder überlappende sind.
    2. Wir gehen davon aus, dass Sie alle Fehler von Hand berichtigen, in diesem Fall können Sie No drücken, das wird die Warnung schließen.
    3. Wählen Sie Next Warning in dem Select Triangle Dialog. Dann wird im Render Window automatisch zu dem Problemdreieck gesprungen und dieses hervorgehoben. Die meisten Fehler sind dadurch zu beheben, das alte Dreieck zu löschen und ein neues zu erstellen.
    4. Wenn Sie mehr als eine Warnung haben, wählen Sie Check Navmesh ein weiteres Mal und wiederholen Sie den Prozess bis alle Probleme korrigiert wurden. (Sie müssen zwischen jedem Löschen den Check wiederholen, weil der Index der Navmesh-Dreiecke durch eine Fehlerkorrektur beeinträchtigt wird.)
  5. Wenn Sie fertig sind, speichern Sie Ihr Plugin noch ab.
Wenn Sie nicht jeden Fehler einzeln berichtigen möchten, klicken Sie sich durch die fehlerhaften Dreieckemit dem Next Warning Button. Dann wählen Sie Yes um alle Dreiecke mit Warnungen zu löschen. Das wird Sie wissen lassen, wo Sie die Navmesh auf Fehlendes überprüfen müssen.

Decken Kanten erstellen

Decken Kanten enthalten Daten wie die Höhe eines Felsens, die NPCs während eines Kampfes und dem regulären Pathfinding nutzen.

  1. Um automatisch die Decken ermitteln zu lassen, navigieren Sie zu Navmesh>Find Cover Edges in der Hauptmenüleiste, oder nutzen die Sk-navmesh find cover button.JPG Schaltfläche in der Navmesh Menüleiste.
  2. Das kann jetzt - je nach Hardware und Komplexität der Navmesh - eine kleine Zeit in Anspruch nehmen.
  3. Nach Fertigstellung werden Sie die veränderten Farben der Kanten sehen. Jede Farbe steht für verschiedene Deckenhöhen.
  4. Um das Ganze ein wenig besser zu visualisieren navigieren Sie einfach zu Navmesh>Draw Cover.

Mit der fertigen Navmesh werden NPCs in diesem Bereich umhergehen können. Qualitativ hochwertige Navmeshes zu bauen kann zeitintensiv und ernüchternd sein, aber die Ergebnisse einer schlechten Navmesh sind während des spielens offensichtlich.

Deckeninfos werden nicht nur für einen geordneten Kampf genutzt, sondern bspw. auch bei der Flucht vor Feinden. Es ist also eine gute Idee, diese Informationen zu erstellen, auch wenn es nicht wichtig erscheint.

Links