OpenGL Fisch in Aquarium

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • OpenGL Fisch in Aquarium

    Die Aufgabe des OpenGL Miniprojektes war es eine Szene zu entwickeln, in der Fische realistisch durch ein Aquarium umher schwimmen. Dies sollte durch schrittweise Simulation geschehen: jeder Fisch bewegt sich auf jedem Bild ein "Stückchen" weiter. Wohin und wie weit sich der Fisch bewegt wird durch Regeln bestimmt.

    Jede Regel bestimmt eine Bewegungsrichtung und wie weit sich der Fisch bewegt: die Gesamtbewegungrichtung und die Gesamtweite der Bewegung wird dadurch bestimmt, dass die einzelnen Ergebnisse aus jeder Regel gemittelt werden.

    Jeder Fisch soll dabei zunächst feststellen, ob sich weitere Fische in einem Umkreis befinden: dies ist sein Schwarm.
    Regel 1 (separation) besagt: Bewege dich von den Mitgliedern des Schwarms weg, um Kollisionen zu vermeiden. Ändere auch die Richtung, wenn die Wand des Aquariums in die Nähe kommt.
    Regel 2 (alignment) besagt: Schaue in welche Richtung die Fische des Schwarms im Mittel schwimmen. Drehe dich etwas, um auch in eine ähnliche Richtung zu schwimmen.
    Regel 3 (cohesion) besagt: bestimme das Zentrum des Schwarms (Mittelpunkt der Positionen der einzelnen Fische) und schwimme in diese Richtung.

    Weitere Features sind das Anzeigen der Namen des Fisches, eine FramePerSecond Anzeige im Cockpit, ein leuchtender Fisch und Wasserpflanzen.

    Als Bonusaufgabe wurde eine silbern glänzende Lampe eingefügt, die mittels Environment Mapping die Umgebung reflektiert.
    Des weiteren ist ein Hai eingebaut worden, der die Fische jagt. Die Fische versuchen dem Hai auszuweichen und schaffen dies meist auch.

    Entwickelt wurde das Programm mit Microsoft VisualStudio 2005 unter C++. Als Bibliotheken wurden GLUT und GLBMP verwendet.
    Bilder
    • opengl-aquarium.jpg

      13,93 kB, 755×324, 1.009 mal angesehen
    Dateien
    • Aquarium.zip

      (339,16 kB, 704 mal heruntergeladen, zuletzt: )
    • release.zip

      (67,78 kB, 544 mal heruntergeladen, zuletzt: )
  • Ist ziemlich zittrig, aber ein perfektes Schwarmverhalten hätte mich zu viel Zeit gekostet. Für die Veranstaltung hat es aber gereicht,

    Eine EXE habe ich im ersten Posting ergänzt..

    Bedienung:
    + Helligkeit des ersten Fisches erhöhen
    - Helligkeit des ersten Fisches vermindern
    [Mausklick] Wechseln der Kameraperspektive
    [Cursor-Links] Drehung nach links
    [Cursor-Rechts] Drehung nach rechts
    [Cursor-Oben] Bewegung nach vorne
    [Cursor-unten] Bewegung nach hinten
    [1] Animation stoppt
    [3] Fische steigen zur Wasseroberfläche
    [4] Fische sterben, steigen zur Wasseroberfläche und drehen sich mit dem Bauch nach oben


    Konfiguration:
    aquarium.h
    * CAM_SPEED 0.75
    * CAM_ROTATE 0.015f

    fisch.h
    * NACHBARNAEHE: Bei welcher Distanz wird ein Fremder zum Nachbar
    * NACHBARKOLLISION: Bei welcher Distanz tritt eine Kollision ein
    * REGEL1: Gewichtung der Regel 1
    * REGEL2: Gewichtung der Regel 2
    * REGEL3: Gewichtung der Regel 3
    * OUTSIDER false – zaehlen wir zum Schwarm Zentrum=
    * FISCHSPEED: Geschwindigkeit
  • Läuft bei mir soweit unter Linux, die Fonts werden ebenfalls gerendert.

    Anleitung:
    • includes von aquarium.h auf Aquarium.h und fish.h auf Fish.h ändern (Linux ist case-sensitive)
    • in der stdafx.h #include <tchar.h> entfernen
    • das Ganze mit -lGL -lGLU -lglut Compilieren und linken


    Getestet mit Ubuntu 7.04 und Codeblocks rev4091
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)