Zum Inhalt springen

Grafik-Engine

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. Oktober 2006 um 21:54 Uhr durch Jello (Diskussion | Beiträge) (Meilensteine der 3D-Grafik-Engines: Linkfixes). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Eine Grafik-Engine (wörtlich "Grafikmotor", freier etwa: Grafikkern oder Grafikmodul) ist ein mitunter eigenständiger Teil eines Computerprogramms, welcher für dessen Darstellung von Computergrafik zuständig ist, meist möglichst realitätsgetreuer 3D-Computergrafik, wie Gegenstände, Umwelt und Personen (Stichwort: Virtuelle Realität). Im Zusammenhang mit 3D-Computergrafik bezeichnet man die Grafik-Engine daher dann auch häufig als 3D-Engine.

Sie bietet einem Programmierer eine große Palette von grafischen Funktionen und Effekten (geometrische Objektbeschreibung, Oberflächentexturen, Licht und Schatten, Transparenz, Spiegelungen usw.), so dass er für seine spezielle Anwendung diese nicht stets neuprogrammieren muss. Insbesondere bei 3D-Computerspielen wie Egoshootern entscheidet die Qualität der Effekte ihrer jeweiligen Grafikengine maßgeblich über den kommerziellen Erfolg des Spiels, weswegen ihnen in diesem Bereich große Aufmerksamkeit zukommt.

Die Grafik-Engine ist ein Teil der Game Engine, beide Begriffe werden aber häufig synonym verwendet. Allerdings können auch Applikationen, die keine Computerspiele sind (wie Visualisierung von Bauwerken und Maschinen etc.) eine Grafik-Engine besitzen.

Funktion

Es gibt verschiedene Techniken, dreidimensionale Welten auf dem Computer darzustellen: Am häufigsten wird die 3D-Welt durch Polygone konstruiert, diese Flächen werden dann mit einer Art Tapete, der Textur überzogen. Hinzukommen noch Partikeleffekte die beispielsweise Nebel, Dreck, Feuer oder Wasser darstellen können. In fortgeschrittenen 3D-Engines werden die Texturen noch mit so genannten Bumpmaps überzogen, die eine plastische Struktur verleihen. Eine alternative Technik der visuellen Konstruktion von 3D-Welten ist die Voxel-Technik. Hier werden eine Vielzahl von verschieden langen Stäben nahe beieinander platziert, so dass zum Beispiel der Eindruck einer hügeligen Landschaft entsteht.

Ebenfalls findet eine Entwicklung auf dem Gebiet des Raytracings statt. Bisher ausschließlich für Standbilder verwendet, ist es inzwischen möglich, Raytracing auch in Echtzeit und somit in Grafik-Engines zu verwenden. Hierbei werden virtuelle Strahlen verschickt, die erst Auftreffen berechnet werden; somit lassen sich Effekte, wie z.B. Reflexion oder Brechung ohne großen Leistungsaufwand berechnen (anstelle einer Oberfläche wird einfach ein weiterer Strahl verschickt). Ebenfalls geschieht eine Erhöhung der Polygonanzahl ohne zusätzlich benötigten Rechenaufwand. Allerdings ist der Aufwand für diese Technologie auf den dafür ungeeigneten Prozessoren recht langsam; spezielle Karten hierfür sind in der Entwicklung, bspw. SaarCOR von der Universität des Saarlandes.

Die Achsen im Visuellen:

    Y
    |
    |
    |
    |
    |
    +-------X
   /
  /
 /
Z

Geschichte

Der Begriff wurde erst in den 1990er Jahren gebräuchlich, als Id Software anfing, seine Grafikengines für 3D-Grafik separat von einem Spiel zu entwickeln und sie anderen Spieleherstellern gegen Lizenzgebühr zur Verfügung stellte, damit diese neue Spiele schneller entwickeln konnten. 3D-Grafik benötigt sehr aufwändige Optimierungen und Berechnungen, und die Programmierer bei Id Software waren zu dieser Zeit in diesen Gebieten führend.

Noch immer werden 3D-Grafikengines lizenziert, weil sich der Aufwand für die Entwicklung einer eigenen zeitgemäßen 3D-Grafik für ein neues Spiel oft nicht lohnt. Ein Spiel kann dadurch viel schneller fertiggestellt werden und hat auch in der Regel auch eine viel bessere Grafik, als es bei einer kompletten Eigenproduktion der Fall wäre. Zudem muss bei Eigenproduktionen darauf geachtet werden, dass die selbst entwickelte Engine auch ein bis zwei Jahre später noch den weiter voranschreitenden Grafikstandard erfüllt, da sonst die Vermarktung des Spiels erschwert werden könnte.

Die Grafikengines anderer Spiele bzw. Programmen allgemein sind hingegen so trivial, dass sie im Grunde keine Rolle spielen und man sie höchstens mit einer Game Engine in Verbindung bringt.

Engines im Bereich Film und Computerspiel

Film

Grafikengines für das Rendern von realistisch anmutenden Bildern und Animationen sind sehr viel komplexer als die für Spiele. So kann das Rendern eines einzigen Bildes mehrere Stunden oder gar Tage in Anspruch nehmen.

Die gängigste Renderersoftware ist:

Mit Hilfe von Programmen wie Maya, Cinema 4d, 3d Studio Max und Z-Brush werden die Modelle (Personen, Effekte, etc.) erstellt, die dann berechnet („gerendert“) werden, damit eine 3D-Grafik entsteht.

Ein Unterschied zu den Grafik-Engines von Spielen ist die physikalische Genauigkeit und viel aufwändigere Berechnungsverfahren wie: Final Gather, globale Beleuchtung, Kaustiken, Raytracing. Vollkommen physikalisch korrekt ist allerdings keine Engine. Das Ziel ist es die Bilder nur so aussehen zu lassen, „als ob“.

Der Einsatz solch komplexer Software reicht von Produktvisualisierungen, Architektur, Effekten bis hin zu vollkommen digitalen Filmen wie Final Fantasy VII: Advent Children, Findet Nemo, oder die Effekte und Personen in Filmen wie Star Wars, Herr der Ringe und Matrix. Ohne die fortlaufende Entwicklung der Rendersoftware wären diese Filme nicht machbar gewesen.

Computerspiel

Die Engines zur Berechnung von Spielen sind weit vielzähliger und entwickeln sich rasant. Die Engines können immer mehr und immer bessere Grafik berechnen, wodurch auch immer höhere Anforderungen an die Hardware gestellt werden. Die Hardware sollte zumindest 24 Bilder in der Sekunde Echtzeit berechnen können. Dazu kommt noch die KI, "Physik-engine" und der Ton. Fast jedes große neue Spiel bringt auch seine eigene Engine mit. Aktuelle Engines sind von Doom3, Jupiter EX, Half-Life 2(Source-Engine) und Unreal 2 und bald Unreal Tournament 2007 mit der Unreal Engine 3.

Die große Schwierigkeit ist wie bereits erwähnt die begrenzte Rechenleistung. Dem PC bleiben 1/24 Sekunde Zeit, für ein Bild im Film viele Stunden. Die Spiele-Engines müssen also bestimmte Mindestanforderungen an die GPU und CPU stellen um überhaupt zu funktionieren. So kann man sehr sicher sagen, dass proportional zur Leistung der Hardware die "Realitätsnähe" der Spiele steigt.

Unterschiede Film und Spiel

Der Unterschied zwischen Spiel und Film zeigt sich bspw. am Film Final Fantasy und dem nur gleichnamigen Spiel. Ein Bild (1 Sekunde ~24 Bilder) wird beim Film bis zu 90 Stunden lang berechnet, für das Spiel müssen hingegen 24 Bilder in einer Sekunde berechnet werden. Grafikengines für Computerspiele haben als ihren Hauptaugenmerk daher auf der Schnelligkeit und müssen im Gegensatz zum Film auf Realitätstreue und Genauigkeit verzichten. Die Grafikengines sind meist auch heute noch hinsichtlich Anforderungen und Einsatzgebieten getrennt.

Der Trend zu weitergehenden Überlappungen zwischen Film und Spiel

Inzwischen gibt es den Trend, auch im Filmbereich immer mehr Echtzeit-Techniken zu benutzen, wie sie bisher nur in Spielen benutzt wurde. Grund hierfür ist nicht zuletzt, dass die Grafikkarten inzwischen so leistungsfähig sind, dass sie Berechnungen in Echtzeit ausführen können, die früher nur offline berechnet werden konnten.

Aus diesem Grund unterstützen heutzutage alle bekannten 3D-Modellierungsprogramme wie Maya, XSI und 3D Studio Max neben dem klassischen offline-Rendering auch Echtzeit-Rendering, bei denen man das Ergebnis sofort sieht. Der Arbeitsablauf von Computergrafikern wird damit deutlich verbessert, da sie das Ergebnis von Änderungen schnell sehen und beurteilen können, anstatt Stunden warten zu müssen. Auch Grafik-Chip-Hersteller wie NVidia investieren gezielt in diesen Bereich, etwa mit der Entwicklung und Marketing der Shader-Sprache Cg, welche in beiden Bereichen eingesetzt wird. Ähnliches gilt für die von Microsoft entwickelte Shader-Sprache HLSL. Rendering-Effekte, die in diesen Sprachen entwickelt werden, können damit - zumindest eingeschränkt, oder mit Nacharbeit - in beiden Bereichen genutzt werden. Zusammenfassend lässt sich sagen, dass sich die Techniken der Grafik-Engines für Computerspiele und Film immer weiter annähern.

Ein anderer Aspekt ist, dass die Arbeitsweisen, die zur Erstellung von Grafiken für Grafik-Engines benutzt werden, sich für Computerspiele und Filme immer weiter annähern.

  • Früher gab es getrennte Programme zum Entwickeln von Computerspielen, etwa spezielle Level-Editoren. Inzwischen werden Programme wie Maya standardmäßig sowohl für Spiele als auch Filme benutzt. Die Grafik-Engines von Computer-Spielen und für Film arbeiten zunehmend ähnlichen Eingabedaten.
  • Die benutzten Modellierungstechniken ähneln sich immer mehr. Während früher für Computerspiele die Welten oft aus einzelnen Polygonen zusammengesetzt wurden, werden inzwischen wie im Film Techniken wie Subdivision-Surfaces und Skinning eingesetzt. Auch hier liegt die Ursache darin, dass sich die Techniken der zugrundeliegenden Grafik-Engines angenähert haben.
  • Immer mehr Computergrafiker arbeiten in beiden Branchen. Beispielsweise hat id software für Doom 3 gezielt Grafiker aus der Film-Industrie angeheuert. Andersherum haben die Grafiker des Computerspieles Final Fantasy später die Computergrafik des gleichnamigen Kinofilms erstellt.

Meilensteine der 3D-Grafik-Engines

Aus der Vielzahl an Grafik-Engines (die oft keinen eigenen Namen haben und den Names des Spieles tragen, für das sie entwickelt wurden) stechen einige besonders hervor, welche in der nachfolgenden Übersichtstabelle aufgelistet sind.

Chronologische Übersicht der wichtigsten Grafik-Engines
Spielname Engine Firma Jahr
Ultima Underworld Ultima-Underworld-Engine Blue Sky Productions 1992
Doom Doom-Engine id Software 1993
System Shock System-Shock-Engine Looking Glass Studios 1994
Quake Quake-Engine id Software 1995
Duke Nukem 3D Build-Engine 3D Realms 1996
Quake II Quake-Engine id Software 1996
Unreal Unreal Engine Epic Games 1998
Quake III Quake-Engine id Software 1999
Halo Halo Engine Bungie 2001
Morrowind Gamebryo Ubi Soft 2002
Unreal Tournament 2003 Unreal Engine 2 Epic Games 2002
Far Cry CryEngine 1.0 Crytek 2004
Doom 3 Doom-3-Engine id Software 2004
Half-Life 2 Source Engine Valve 2004
Unreal Tournament 2007 Unreal Engine 3 Epic Games 2005
Desperados 2 Trinigy Vision Engine Spellbound/Atari 2006
Crysis CryEngine 2 Crytek 2006

Populäre Grafik-Engines zumindest im Bereich der Ego-Shooter kamen in den letzten Jahren fast ausschließlich von Id Software, Epic Games und Valve. Im Jahre 2004 schaffte außerdem eine deutsche Firma namens Crytek mit ihrer CryEngine 1.0, welche in Far Cry zum Einsatz kommt, den Durchbruch. Als weitere deutsche Firma schaffte es Spinor mit ihrer Shark 3D Engine, dass das darauf basierende Adventure-Spiel Dreamfall der norwegischen Firma Funcom auf der 2004 mehrere Preise gewann.

Kommerzielle & Open-Source Engines

Folgende 3D-Engines sind publik und bisher für den kommerziellen Gebrauch veröffentlicht:

Lizenziert als Open-Source Entwicklung sind folgende Engines:

Schnittstellen für Grafik-Engines

Die verwendete Grafik-Engine hat großen Einfluss auf das Aussehen eines Computerspiels. Sie bestimmt z.B. wie viele Polygone dargestellt werden können oder ob DirectX, OpenGL oder eine andere Grafikschnittstelle benutzt wird.

Wichtig ist auch die verwendete DirectX Version. Erst ab DirectX 8 werden Pixel- und Vertex-Shader unterstützt, die u.a. für realistische Wasseroberflächen, Schatten und Charakteranimation benötigt werden.

Die Grafik-Engine ist meist ein fester Bestandteil der Game-Engine und kann nicht einfach ausgetauscht werden. Manche Spiele für Windows besitzen sowohl eine DirectX- als auch eine OpenGL-Schnittstelle. Unter Linux und Mac OS ist dagegen ausschließlich OpenGL verfügbar. (DirectX ist unter Linux mit dem Emulator Wine, bzw. Cedega verfügbar, jedoch arbeiten nicht alle Windows-Spiele mit Wine. Details: Holarse.de)

Die OpenGL-Standardisierung hinkt zwar meist weit hinterher, aber mittels direkter Schnittstellen zu den Grafiktreibern sind neue Merkmale auch in alten Versionen verfügbar, in der Regel noch vor DirectX.

Siehe auch

Spezifikationen:

Übersicht 3D-Engines: