Kollisionen für Oblivion.

Ein wichtiger Bestandteil aller Computerspiele sind Kollisionsboxen. Kollisionsboxen

  • gewährleisten dass Ihr Euch normal bewegen könnt und nicht einfach so durch den Boden durchfallt.
  • dass Ihr Gegenstände berühren, aufnehmen und bewegen könnt.
  • dass Objekte aktiviert werden können. Eine Tür, egal ob animiert oder Teleporttür, kann nur benutzt werden wenn sie eine Kollision hat, Plakate oder einfach Aushänge an einer Hauswand benötigen eine Kollision um aktiviert und somit gelesen werden zu können.
  • bestimmen bei Objekten die man aufnehmen oder wegwerfen kann wie das Objekt, in Relation zu seiner Form, Größe und Masse, fällt.

Da es allerdings bis heute kein wirklich gutes und vor allem aktuelles Tutorial über das Erstellen von Kollisionsboxen für Oblivion gibt habe ich einmal dieses Tutorial geschrieben. Dieses Tutorial beruht auf meinen eigenen Erfahrungen was das Erstellen von Kollisionsboxen betrifft und wird ständig, wenn es etwas neues gibt, aktualisiert werden.

Da das Tutorial sehr umfangreich ist habe ich es auf mehrere Seiten aufgeteilt. Um ein besseres navigieren durch das Tutorial zu ermöglichen öffnet sich jede Seite des Tutorials in einem extra Fenster oder Tab. Zusätzlich wurden überall dort, wo es mir notwendig erschien, Links gesetzt.

Benötigte Programme:

Alle Programme sollten natürlich in der aktuellsten Version vorliegen.

Inhaltsverzeichnis:

Die verschiedenen Kollisionsarten.

Natürlich ist Kollision nicht gleich Kollision. Für jeden Einsatzzweck benötigt Ihr auch die entsprechende Kollision.

  • statisch: wird ausschließlich für nicht bewegliche Objekte wie z. B. Mauern, Häuser, nicht aufnehmbare Gegenstände wie z. B. Kerzen oder auch Teleporttüren genutzt. Diese Art der Kollision behält, einmal mit Hilfe des CS in die Welt gesetzt, die Position bei. Diese Kollision behält selbst dann die Position wenn das Objekt, mit dem die Kollisionsbox verbunden ist, durch ein Skript bewegt wird oder bei einer Animation, z. B. bei einer animierten Tür. Da heißt, das sich die Kollisionsbox, nicht automatisch mit dem Objekt mitbewegt.
  • animiert statisch: wird für, eigentlich, statische Objekte benutzt die über ein Script oder über einen, im Objekt integriertem Controller, bewegt werden. Dies sind z. B. animierte Türen oder auch diese Felsen die in den Boden fahren wenn man irgend einen Hebel oder Schalter betätigt. Im Gegensatz zur rein statischen Kollision bewegt sich hier die Kollision mit dem Objekt mit.
  • clutter: Diese Kollision wird für alle Objekte benutzt die man im Spiel bewegen, ins Inventar aufnehmen oder auch auf den Boden fallen lassen kann. Im Gegensatz zu den vorgenannten ist diese Kollision der Schwerkraft (Havok) unterworfen. Dazu später mehr.
  • weapon: wird in Oblivion für alle Arten von Waffen genutzt.
  • projectile: für Pfeile.
  • biped: für Skelette von Kreaturen oder NSC's.

Es gibt noch jede Menge weiterer Kollisionen. Die hier genannten sind aber die, für uns, wichtigsten und wahrscheinlich auch die einzigsten mit denen wir jemals in Berührung kommen.

Primitive Kollisionsboxen:

Als primitive Kollisionsbox bezeichnet man alle Kollisionsboxen die aus einfachen geometrischen Formen bestehen. Hierzu gehören:

  • Würfel: Werden für alle Objekte benutzt die, im erweiterten Sinne, würfelförmig sind - also ganz einfach Objekte mit 6 Seiten. Also z. B. Truhen oder auch Fenster.
  • Zylinder: werden für alle Objekte genutzt die zylinderförmig sind. Also z. B. Schwertgriffe oder Zaunpfosten.
  • Kugeln: für alles was rund ist.
  • ConvexVerticesShapes: ist schon komplexer, gehört aber immer noch zu den primitiven Kollisionen. Besteht aus vielen, miteinander verbundenen, Vertices. Hier mal ein Screenshot:
    Abbildung einer ConvexVerticesShape

    Die Kollision ist das was aussieht wie rosa Fäden. Benutzt wird diese Art der Kollision für alle unregelmäßig geformten Objekte wie z. B. Vasen, Geschirr, Besteck, Kerzen mit Kerzenständer (für einfache Kerzen ohne Ständer eignen sich besser zylinderförmige Kollisionen.) usw.

Beachtet: Die Kollision sollte immer, so perfekt wie möglich, auf das Objekt passen. Dies ist vor allem bei beweglichen Objekten, die der Schwerkraft (Havok) unterworfen sind wichtig. Es ist nämlich immer die Kollisionsbox die bestimmt wie ein Objekt fällt. So bleibt ein Objekt, das mit einer würfelförmigen Kollisionsbox ausgestattet ist wie z. B. eine Kiste beim herunterfallen auf einer Seite einfach liegen. Ein kugelförmiges Objekt wird, beim herunterfallen, rollen. Aber nur wenn dieses kugelförmige Objekt mit einer kugelförmigen Kollisionsbox ausgestattet wurde. Würde man das kugelförmige Objekt mit einer würfelförmigen Kollisionsbox ausstatten würde es, genau wie eine Kiste, beim herunterfallen, auf der Seite liegen bleiben was ja wohl nicht so gut aussehen würde. Eine ConvexVerticesShape würde dagegen, auf Grund der unregelmäßigen Form, beim herunterfallen abrollen oder sich überschlagen was das ganze sehr realistisch macht.

Wählt also immer das, für Euer Objekt, beste Kollisionsmodell aus.

Habt Ihr Euch für eine Kollisionsbox entschieden ist der Rest ganz einfach und dauert nur wenige Minuten.

  1. Öffnet Blender und ladet Euer Objekt.
  2. Selektioniert jetzt das Objekt mit der rechten Maustaste.
  3. Klickt auf den Schalter mit dem Gitter und wählt anschließend „Script Window“ (Bild 1).
    Abbildung
    Bild 1
    Es öffnet sich das Skript-Fenster.
  4. Klickt jetzt unten auf den Schalter „Scripts“, wählt anschließend „Mesh“ aus und klickt danach auf „Hull“ (Bild 2).
    Abbildung
    Bild 2
    Es öffnet sich jetzt ein kleines Menü mit den Bezeichnungen
    • Box: Erzeugt eine würfelförmige Kollisionsbox um Euer selektioniertes Objekt.
    • Sphere: Erzeugt eine kugelförmige Kollisionsbox um Euer selektioniertes Objekt.
    • Convex: Erzeugt eine ConvexVerticesShape um Euer selektioniertes Objekt.
    Abbildung
    Bild 3
  5. Wählt die passende Kollisionsbox für Euer Objekt aus. Beachtet dass bei der Auswahl von Convex sich ein weiteres kleines Fenster öffnet.
    Abbildung
    Bild 4
    In diesem könnt Ihr einstellen wie komplex die ConvexVerticesShape sein soll. Je kleiner der Wert desto komplexer, aber auch performance-lastiger ist die ConvexVerticesShape. In den meisten Fällen sollte der vorgegebene Wert von 0.100 in Ordnung sein. Also einfach mit „ok“ bestätigen.
  6. Kehrt jetzt zu Eurem Objekt zurück indem Ihr unten links auf den Schalter klickt und aus dem Menü „3D View“ auswählt (Bild 5).
    Abbildung
    Bild 5
  7. Selektioniert jetzt, mit der rechten Maustaste, Eure gerade erstellte Kollisionsbox die sich jetzt um Eurem Objekt befinden sollte. Das Objekt selbst sollte dabei automatisch deselektiert werden. Da die Kollisionsbox sehr eng an Eurem Objekt anliegt kann das durchaus ein bisschen Fummelei sein. Aber es geht.
  8. Drückt jetzt auf „F4“ oder klickt mit der Maus auf den, in Bild 6, dargestelltem Schalter und im neuen Button-Fenster auf „Bounds“.
    Abbildung
    Bild 6
    Neben „Bounds“ sollte jetzt ein Pulldown-Menü erscheinen in dem die Art Eurer Kollisionsbox, also Box, Sphere oder Convex, angegeben ist.
    Abbildung
    Bild 7
    Hier habt Ihr, indem Ihr in diesem Menü den vertikalen Doppelpfeil anklickt, jetzt noch die Möglichkeit nachträglich die Art Eurer Kollisionsbox zu ändern. So könnt Ihr z. B. hier aus einer würfelförmigen Kollisionsbox eine zylinderförmige Kollisionsbox machen.

Und damit ist unsere Kollisionsbox auch schon fertig und wir können das ganze exportieren.

Objekte mit mehreren Kollisionsboxen

Nachdem ich die grundlegenden Schritte erklärt habe um mit Blender eine Kollisionsbox zu erstellen werde ich jetzt ein Objekt mit mehreren unterschiedlichen Kollisionsboxen versehen. Hierzu habe ich mal ein Schwert ausgesucht das ich vor längerer Zeit mit Blender erstellt habe.
Und zwar dieses hier.

Schwert
Bild 1

Natürlich könnten wir das Schwert auch mit einer einzigen normalen Kollision versehen. Da das Schwert aus mehreren Teilen besteht die separat erstellt wurden müssen wir dazu erst alle Teile zusammenfügen. Dazu selektionieren wir zuerst alle einzelnen Teile des Schwertes und drücken anschließend gleichzeitig „Strg“ und „j“ auf der Tastatur. Das Schwert wird nun zu einem Teil vereinigt und sollte außerdem schon selektioniert sein so dass wir jetzt die oben erklärten Schritte durchführen, eine Box als Kollision auswählen und das Ergebnis sieht dann so aus.

Schwert
Bild2

Wäre das Schwert statisch wäre ein solche Kollision nicht einmal verkehrt. Für ein bewegliches Objekt allerdings, das auch schon mal auf den Boden fällt, nicht gerade optimal da ein natürliches Fallen des Schwertes, auf Grund der nicht gerade passenden Kollision, nicht möglich ist.
Eine bessere Variante wäre da wenn wir anstatt einer Box eine ConvexVerticesShape, wie auf folgender Abbildung, nehmen.

Schwert
Bild 3

Das ist zwar schon besser als die vorherige Box und erfüllt auch vollkommen seinen Zweck aber 1. geht eine solche Kollisionsbox, auf Grund des komplizierteren Aufbaus, ein wenig auf die Performance und 2. kann man dieser Kollision auch, da sie ja nur aus einem Teil besteht, nur ein Material zuweisen. Wir möchten aber drei Materialien - Holz für den Griff, Glas für die Kugel am Griff und den Rest aus Metall.

Die Lösung ist dass wir das Schwert in mehrere primitive, einfache Kollisionsboxen einhüllen.

Dazu bereiten wir zuerst das Schwert vor. Und zwar vereinigen wir die Teile so dass wir zum Schluss genau vier Teile haben.

  1. Klinge (Metall)
  2. Handschutz (Metall)
  3. Griff (Holz)
  4. Kugel mit Fassung (Glas)

Nun selektionieren wir mit der rechten Maustaste nur die Klinge und führen danach alle, oben erklärten, Schritte von 3 - 8 aus. Als Kollisionsmodell nehmen wir hier die Box.

Das gleiche machen wir nun mit dem Handschutz. Auch hier wählen wir die Box aus.

Nun kommen wir zum Griff. Wählt hier als Kollisionsmodell „Convex“ aus. Zwar könnten wir auch eine „Box“ nehmen und anschließend im Pulldown-Menü neben Bounds

Abbildung
Bild 11

in einen Zylinder transformieren. Allerdings kann es dabei das Problem geben dass der Zylinder nicht richtig ausgerichtet wird und somit angepasst werden muss was wiederum zu Problemen beim Export führen kann. Also einfach „Convex“ auswählen und schon gibt's keine Probleme. Die Kollisionsbox sieht dann wie auf Bild 12 aus.

Abbildung
Bild 12

Jetzt nur noch die Kugel am Griff selektioniert, alle Schritte von 3 - 8 durchführen und dieses Mal Sphere auswählen und schon ist die Kollision des Schwertes fertig und kann zusammen mit dem Schwert, exportiert werden.

Auf Bild 13 seht Ihr wie das ganze dann zum Schluss aussieht.

Abbildung
Bild13

Die perfekte Kollision für unser Schwert.

Damit währen wir mit den primitiven Kollisionsboxen fertig und wenden uns auf der nächsten Seite komplexeren Kollisionsboxen, den PackedNiTriStripsShapes, zu

Hier geht's weiter

Externer Link
Valid XHTML 1.0 Transitional CSS ist valide! Alfacounter