01.02.2013 Aufrufe

MiCaDo Projektbericht - artecLab - Universität Bremen

MiCaDo Projektbericht - artecLab - Universität Bremen

MiCaDo Projektbericht - artecLab - Universität Bremen

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

54<br />

7.3.2 Eigenschaften der Wegpunkte<br />

Jeder Wegpunkt verfügt über eine eindeutige Identifikationsnummer id ≥ 0, eine Gruppennummer<br />

sowie eine Position im dreidimensionalen Raum. Die Punkte werden in der Regel leicht über dem<br />

Boden der Welt liegend verteilt, auf letzterem kommen die Kreaturen in jedem Fall zu stehen, ganz<br />

gleich wie weit sich der Wegpunkt oberhalb befindet5 . Die y-Koordinate der Wegpunkte wird also<br />

” weich“ interpretiert. Wir werden im Folgenden stets sagen, eine Kreatur steht auf einem Wegpunkt,<br />

auch wenn sie sich streng genommen vielleicht eher unter diesem befindet.<br />

Die Anforderung, dass die Kreaturen stets auf dem Boden der Map laufen sollen, hat Auswirkungen<br />

auf die Art und Weise, wie das Pfadwerkzeug auf Begehbarkeit einer potentiellen Kante zu testen<br />

hat. Der Test, ob die Strecke zwischen zwei Wegpunkten, d.h. die direkte Luftlinie (Line of Sight)<br />

zwischen ihnen, mit der Geometrie kollidiert, gestaltet sich relativ einfach und schnell. Er führt uns<br />

jedoch nicht weiter, da sich die Kreaturen in den wenigsten Fällen strikt entlang dieser bewegen werden.<br />

Wir testen stattdessen ein geometrisches Objekt (bei uns Punkt oder Kugel) auf Kollisionen mit<br />

der Landschaft, indem wir es in Schritten fester Größe entlang der zu prüfenden Kante verschieben<br />

und nach jedem Schritt an die Höhe des Bodens anpassen. Dieses Verfahren ist einfach und führt<br />

zu korrekten Ergebnissen, es hat jedoch den Nachteil, dass in jedem Schritt der BSP-Baum traversiert<br />

werden muss und somit die benötigte Rechenzeit um ein Vielfaches höher ist als bei einem einfachen<br />

Test gegen die Line of Sight.<br />

In unserer Implementierung in C++ sind alle Wegpunkte Objekte einer allgemeinen Wegpunktklasse<br />

namens micado waypoint. Jedes Wegpunktobjekt n speichert seinen eigenen Teil der geladenen<br />

Routingtabelle 6 . Dieser Teil ist nichts anderes als für alle anderen Wegpunkte m die jeweils erste<br />

Kante der Kantenfolge, welche von n nach m führt. Jeder Wegpunkt kann mit Hilfe einer Memberfunktion<br />

7 danach gefragt werden, zu welchem Wegpunkt man sich als nächstes begeben muss, wenn<br />

man von ihm aus zu einem bestimmten anderen möchte, ohne mit der Geometrie der Welt zu kollidieren.<br />

Wegpunkte können zudem zur Laufzeit von den Kreaturen als belegt markiert werden, um<br />

zu verhindern, dass sich zu einem Zeitpunkt zu viele Kreaturen um sie herum aufhalten. Es ist anzumerken,<br />

dass in der verteilten Cave-Umgebung mit einem Master-Rechner und vielen Slaves, die<br />

Wegpunkte nur vom Master geladen werden, da sich lediglich auf ihm die Berechnung der Kreatur-<br />

KI abspielt (siehe geeignetes Kapitel des <strong>Projektbericht</strong>s).<br />

5 Die Gesetze der Schwerkraft sollen schließlich auch in unserem virtuellen Dschungel gelten.<br />

6 Diese wird so auf die Wegpunkte verteilt im Speicher gehalten.<br />

7 getRoute()

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!