DSC_7051.jpgDSC_7127.jpgDSO_0176-Bearbeitet.jpgDSO_0190-Bearbeitet.jpgDSO_1619-Bearbeitet.jpgDSO_1626-Bearbeitet.jpg
FacebookTwitterDeliciousStumbleuponGoogle BookmarksLinkedin

OpenGL Bildschirmschoner

Beschreibung

Train Station ist ein in Visual C++ geschriebener Bildschirmschoner, der die OpenGL-Schnittstelle verwendet.

Es wird ein S-Bahnhof dargestellt, in den ständig zwei Züge einfahren, halten und wieder ausfahren. Weiterhin kann die aktuelle Systemzeit an den im Bahnhof hängenden Uhren abgelesen werden. Für die verwendeten Texturen ließ ich mich von dem Spiel Half-Life inspirieren. Man beachte die Blutreste an den Säulen...

Download

TrainStationFast.zip (ZIP, 410 KB)

Source Code (ZIP, 706 KB) in der Visual C++ 6.0 Entwicklungsumgebung

Dokumentation (DOC, 41 KB)

Technische Aspekte

Ablauf des Schoners
Die Kameraposition (und damit gleichzeitig die Position des Beobachters) wird über eine Zustandsmaschine ständig verändert. Gleichzeitig wird die Lichtquelle Nr. 1 an diese neue Position gesetzt, sie bewegt sich also mit. Man erhält dadurch den Eindruck, als würde man mit einer Art Taschenlampe durch den Bahnhof gehen. Von Zeit zu Zeit fahren Züge in den Bahnhof ein, halten, und fahren wieder davon. Auch diese Bewegung wird über eine Zustandsmaschine gesteuert, wobei hier zusätzlich ein zufälliger Faktor mit hineinspielt. Er ermöglicht, dass die Züge eine sich ändernde Anzahl von Wagen besitzen und nicht immer zum gleichen
Zeitpunkt erscheinen.

Darstellungsgenauigkeit
Zur Berechnung des Lichteinfalles auf eine Fläche benutzt OpenGL Normalenvektoren. Ist diese nun sehr groß, so dass das Licht nicht auf die Eckpunkte, wohl aber auf die Mitte der Fläche strahlt, wird diese nicht mehr dargestellt. OpenGL bezieht in die Berechnung immer die Eckpunkte ein - sind diese nicht im Lichtbereich, heißt das, die Fläche liegt im Dunkeln und muss nicht gezeichnet werden. Um diesem unerwünschtem Effekt entgegen zu wirken, müssen alle größeren Flächen unterteilt werden.
Das geschieht bei TrainStation in der Definition der Displaylisten, der Grad der Unterteilung wird durch die Konstante HOCHAUFLOESEND, die am Anfang des Programmes festgelegt wird, bestimmt. Ihre Werte sollten sich im Bereich 0.5 bis 20 bewegen. Je größer, desto feiner die Auflösung, aber auch desto langsamer. Man sollte sich vor Augen halten, das bei HOCHAUFLOESEND = 10 allein eine Wand bereits aus 16000 Rechtecken bestehen wird.

Lichtquellen
Es existieren 3 Lichtquellen. Die erste befindet sich immer beim Beobachter und bewegt sich mit diesem mit. Die anderen beiden sind vorn an den zwei Zügen "montiert", welche ja auch immerzu ihre Position verändern. Alle Quellen strahlen weißes Licht aus, dessen Helligkeit mit zunehmender Entfernung quadratisch abnimmt. So entsteht die düstere Stimmung des Bahnhofes.

 

Joomla templates by a4joomla