Über Grafikengines

Eine Grafikengine-Software stellt das Bindeglied zwischen einer darunter liegenden Grafikschnitten wie OpenGL und der Anwendungsschicht - die Ebene, auf welcher der Anwendungsprogrammierer die Anwendung implementiert - dar.

In der Grafikengine-Schicht versteckt sich der Hauptteil an Software-Komplexität: Ein Anwendungsprogrammierer möchte sich primär um die Anforderung der Anwendung kümmern und auf möglichst umfangreiche, komfortable Module zurückgreifen, die ihm helfen, diese zu realisieren. Hingegen bietet die Low Level Schicht wie OpenGL eine Treiberabstraktion auf verhältnismäßig rudimentärer Ebene. Während auf der Low Level Schicht beispielsweise Dreiecke dargestellt und texturiert werden können, möchte der Anwendungsprogrammierer für seine Anwendung vollständige Menüs, Spielfiguren, animierte Grafikelemente etc. darstellen. Diese Mechanismen werden innerhalb der Grafikengine Softwareschicht realisiert und deren Komplexität so gut wie möglich vor dem Anwendungsentwickler verborgen.

Die Grafikengine hat maßgeblichen Einfluss auf das Aussehen sowie das Look'n'Feel der finalen Anwendung.

Eigene Implementierungen

In diesem Kontext habe ich mich seit dem Informatikstudium mit Schwerpunktfach grafische Datenverarbeitung seit 2004 intensiv mit Grafikengines auseinandergesetzt. 2004/2005 habe ich mich primär mit der Animation von menschlichen Figuren unter Berücksichtigung zugrundeliegender Skelettstrukturen und eines Hautmodells beschäftigt. 2005/2006 galt mein Hauptfokus im Rahmen meiner Studienarbeit zum Thema "Prozedurale Terrainsynthese" der Umsetzung vollständiger 3D-Terrains u.a. incl. Höhenprofil mittels Delaunay Triangulation und Bowyer-Watson-Algorithmus, Straßenführung per Splines sowie der Textursynthese von Fotos zu nahtlosen Texturen.

Im Laufe der Zeit entstand aus vielen separaten Algorithmen ein Grundgerüst für eine erste Grafikengine. In diese habe ich 2007/2008 einen Mechanismus integriert, um Motion Capturing Daten zu importieren und auf beliebige Skelettstrukturen von Figuren zu übertragen und abzuspielen. 2008/2009 landete ich im Rahmen einer freiberuflichen Beauftragung bei Audi und entwickelte dort die zugehörige OpenGL-ES basierte A2DG-Grafikengine weiter, die in den Onboard-Infotainmentsystemen eingesetzt wurde.

Ende 2009 begann ich meine eigene vorhandene Grafikengine stärker auf mobilen Fokus auszulegen. Zu dieser Zeit wurde nach dem Erscheinen der dritten Generation das iPhone enorm populär und es zeichnete sich die Entstehung eines massiveren Trends aus. Daraufhin habe ich meine Grafikengine für 14 unterschiedliche iPhone-Spiele angepasst, weiterentwickelt und dafür eingesetzt. Daraus entstand ein umfangreiches Framework, das alle wichtigen Funktionen für die Veröffentlichung von mobilen Spielen umfasst.

Die eigens entwickelte Grafikengine wurde stets plattformunabhängig in C++ implementiert. Lediglich die von den Plattformbetreibern vorgegebenen Schnittstellen wurden in ihren zugehörigen Programmiersprachen und APIs implementiert. So ist die Nutzerinteraktion für iOS in Objective C umgesetzt, für Android-Kompatibilität wurde Java verwendet - die Spielelogik ist von C++ aus mittels JNI nahtlos integriert. Die Kompatibilität zu Desktopsystemen (wie Windows, Mac oder Linux) wurde mittels libSDL stets aufrechterhalten.

Unterstützung im Bereich Grafikengines

Parallel dazu habe ich für Kunden eigene Grafikengines implementiert, bspw. für die Medienagentur Decade One in einem Projekt für Microsoft und ProSieben eine JavaScript-basierte Grafikengine zur Visualisierung eines 3D-Sonnensystems und Partikelsystems.

Sollte auch Ihre Firma Bedarf nach Unterstützung im Bereich Grafikengine-Software haben, stehe ich Ihnen gerne zur Verfügung und freue mich über Ihre Kontaktaufnahme, um Näheres zu erfahren und mich mit Ihnen über die Details auszutauschen. Neben Implementation, Fehlerbereinigung, Optimierung und Profiling stehe ich auch gerne in beratender Funktion mit meiner Erfahrung zur Seite.