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.
Wichtig für den Ablauf des Berechungsprozesses sind nun noch Funktionen, mit denen z.B. die<br />
Höhe – also im Fall der Madness Engine die y-Koordinate – eines bestimmten Punktes in der Szene<br />
berechnet werden kann. Dies übernimmt in der Madness die Methode getHeightOfTerrain(), die<br />
unter Zuhilfenahme des BSP-Baums ausgehend von einer gegebenen Position nach unten überprüft,<br />
an welchem Punkt eine Kollision mit der Landschaft bzw. dem Boden stattfindet.<br />
Die konkrete Umsetzung der Daten in Bilder erfolgt, wie schon oben erwähnt, mit der Open-Source-<br />
Multimediabibliothek SDL (Simple DirectMedia Layer) [SDL04]. Diese Funktionsbibliothek stellt Funktionen<br />
zur Verfügung, die beispielsweise OpenGL-Aufrufe 10 kapseln oder das Laden und Abspielen<br />
von Sounddateien unterstützen. SDL gewährleistet außerdem eine gewisse Portabilität der 3D-<br />
Engine, da es außer für die Linux-Plattform beispielsweise auch für Windows verfügbar ist.<br />
3.4 Netzwerkarchitektur<br />
Die ursprüngliche Version der Madness Engine enthielt schon die Möglichtkeit, das Rendern der Welt<br />
auf mehrere Rechner zu verteilen. Diesem verteilten Rendern liegt das Prinzip zu Grunde, dass jeder<br />
Rechner aufgrund der ihm übermittelten Informationen über die aktuelle Position des Sichtpunkts<br />
und den aktuellen Sichtwinkel sein eigenes Bild errechnet. Hierdurch ist es möglich durch eine beim<br />
Start festgelegte, feste Verschiebung des Sichtfelds mit Hilfe mehrere Rechner eine 360 o -Ansicht zu<br />
rendern und diese mit mehreren Beamern auf eine bestimmte Anzahl von Leinwänden zu verteilen.<br />
Grundsätzlich benötigt dazu jeder Rechner zunächst einmal die gleichen Daten, d. h. das gleiche<br />
Weltmodell, die animierten Modelle und auch alle benötigten Sounds. Diese Einrichtung muss vor<br />
dem Start der Engine erfolgen, da zur Lauftzeit nur noch Positionsangaben über das Netzwerk verschickt<br />
werden. Ein Rechner übernimmt nun die Aufgabe des Hauptrechners (Master) und übernimmmt<br />
die Steuerung der übrigen teilnehmenden Rechner. Genauer gesagt bedeutet dies, dass auf<br />
diesem Hauptrechner sämliche Interaktionen mit dem Benutzer, evtl. KI-Berechnungen und ähnliches<br />
abläuft und er dann nur die Position des Sichtpunkts und die Position der Modelle an seine<br />
Hilfsrechner (Slaves) übermittelt. Dies geschieht per UDP-Multicast verschickter Informationspakete,<br />
die von den Slaves empfangen werden. Diese berechnen dann jeder für sich aufbauend auf den Informationen,<br />
die sie erhalten haben, ihr eigenes Bild. Haben sie ein weiteres Bild gerendert, wird dem<br />
Master-Rechner ein Bestätigungspaket gesendet. Der grundsätzliche Aufbau ist in Abbildung 3.2<br />
verdeutlicht.<br />
10 Diese 3D-Engine basiert auf der Grafikbibliothek OpenGL. [OGL04] [SWN99]<br />
15