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
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:
* Mental Ray
* Pixar RenderMan
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 E³
2004 mehrere Preise gewann.
Kommerzielle & Open-Source Engines
Folgende 3D-Engines sind publik und bisher für den kommerziellen Gebrauch
veröffentlicht:
* 3DGM
* RF
* Quest3D
* Radish
* Virtools
* A6
* Jamagic
* DB / DBPro
* Blitz
* TV3D
* Torque
* Cipher
* PR
* Jupiter
* Quake III
* Unreal II
* Unreal III
* Trinigy Vision
* Mad F/X 1.0
* Shark 3D
* Gamebryo (früher: Netimmerse)
* CryEngine 1/2
* SAGE-EngineSAGE-Engine]]
Lizenziert als Open-Source Entwicklung sind folgende Engines:
* Irrlicht Engine
* Nebula Device
* CrystalSpace 3D Engine
* ZFXce Engine
* Ogre-Engine C++
* Axiom-Engine C# (.NET Portierung der Ogre-Engine)
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.