Stand: Release 0.2
Dies ist die Liste der Features die die Parrot Engine in ihrer aktuellen Version unterstützt. Diese Liste wird aktualisiert sobald eine neue Version der Engine veröffentlich wird.
Terrain Rendering
- Erstellen des Terrains aus einer Heightmap heraus mit bis zu 16bit Auflösung der Höhendaten
- Terraindetails werden konfigurierbar mit der Entfernung geringer (LOD)
- Das Terrain wird in Blöcke unterteilt die jeweils direkt mit der Hardware gerendert werden
Szene-Baum
- Eine Szene besteht aus einer Baumstruktur.
- Jeder Knotenpunkt des Baums hat eine BoundingSphere die alle Objekt unter ihm beinhaltet.
- Die BoundingSpheres werden beim Zeichnen für das Frustum Culling verwendet.
- Sowohl Terrains, als auch Partikelsysteme sind Objekte die sich in den Szene-Baum einfügen lassen.
Skybox
- Eine Skybox kann als Hintergrund verwendet werden um den Eindruck von weit entfernten Umgebungen zu bieten.
Mesh-Objekte
- Mesh Objekte können aus Blender heraus exportiert werden – dabei werden Vertex Colors und/oder Texturen und u/v Koordinaten entsprechend berücksichtigt.
- Vorderfinierte Objekte sind vorhanden und können als Dummies/Platzhalter/Markierungen eingefügt werden: Sphere, Box und Disc
- Mesh-Objekte können instanziert werden und teilen sich die VertexBufferObjects um Speicher zu sparen
Partikelsysteme
- Partikelsysteme können einfach mit dem Partikel-Editor erstellt und später in eigenen Programme verwendet werden.
- Die Partikel können in Bezug auf Schwerkraft, Beschleunigung, Rotation, Farbverlauf, Textur und Zufallsbereiche konfiguriert werden
- Partikelsysteme können unterschiedliche Emitter haben – z.B. auch ein beliebiges Mesh-Objekt das dann Partikel von dessen Flächen aus emittiert – so kann z.B. ein Objekt als brennend dargestellt werden.
Resource-Verwaltung
- Resourcen werden alle über eine “AbstractInputStreamSource” Klasse geladen. Diese Klasse liefert zu einem Pfadnamen einen InputStream. Dadurch können beliebige Quellen für Resourcen verwendet werden (ZIP Files, Netzwerk, lokale Dateien).
- Über eine Zwischenschicht wird ein Fallback-Szenario für Resourcen geschaffen: Resourcen können dadurch von Applikationen die Defaults überladen.
Konsole
- Über ein Konsole-Interface können wichtige Variablen zur Laufzeit verändert werden
- Variablen die in die Konsole eingebunden sind verlangsamen den Programmablauf nicht
- Beliebige Kommandos können nachträglich und zur Laufzeit hinzugefügt werden
- Die Eingabevervollständigung unterstützt bei der Eingabe der Variablen und Kommandos
Textausgabe
- 3D-Text kann aus normalen TTF-Fonts erstellt und als Objekt in einer Szene verwendet werden. Die so erstellen Objekte sind bereits mit u/v Koordinaten versehen. Der Detailgrad der Zeichen kann über eine Qualitätsstufe beeinflusst werden.
- Schneller Text kann mittels Bitmap Fonts ausgegeben werden – und dies sowohl in 2D als auch in 3D hinein projiziert.
- Zur Erstellung der Bitmap Fonts wird das Tool “FontCreator” mitgeliefert.
Timer
- Über ein Timer-System können Zeitmessungen vorgenommen werden
- Timer-Werte können mittels Performance-Graphen grafisch über den Zeitverlauf hinweg angezeigt werden.
Endlicher Automat
- Ein endlicher Automat ermöglicht die Unterteilung einer Anwendung in klar abgegrenzte Zustände
- Die Übergänge der Zustände untereinander, sowie die Definiton der Events erfolgt über eine XML Konfiguration
Audio-System
- Das enthaltenene Audio-System spielt WAV und OGG Dateien ab und kann diese mit beliebigen Lautstärken mischen.
RenderStates
- Über den bekannten aktuellen Renderzustand werden die nötigen Aufrufe von OpenGL-Kommandos verringert
- RenderStates werden je nach Notwendigkeit entsprechend sortiert – z.B. Blended states von hinten nach vorn gezeichnet