MiCaDo Projektbericht - artecLab - Universität Bremen
MiCaDo Projektbericht - artecLab - Universität Bremen
MiCaDo Projektbericht - artecLab - Universität Bremen
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()