- 3D-Engine
-
Eine Grafik-Engine (wörtlich „Grafik-Maschine“, freier etwa: „Grafiktriebwerk“ oder „Grafikmodul“) ist ein mitunter eigenständiger Teil eines Computerprogramms oder einer Computer-Hardware, 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 als 3D-Engine. Konkret handelt es sich dabei um einen integrierten oder extern gelagerten Programmcode, der parallel zum eigentlichen Spiel (siehe Game-Engine) für die Berechnung der Grafikschnittstelle zuständig ist.
Die Grafik-Engine wird häufig als Teil der Game Engine verstanden, tatsächlich ist sie aber ausschließlich zur Berechnung der Anzeige zuständig, während der Begriff Game Engine die Basis des gesamten Spiels darstellt. (Audio, Gameplay, Menüs, etc.) Neben Spielen können auch andere Applikationen, wie Visualisierung von Bauwerken (CAAD) und Maschinen (CAM) und andere CAD-Anwendungen, oder Geoanwendung wie virtuelle Globen und interaktive Kartenwerke, Navigationsgeräte, GIS-Interfaces und allgemein Visualisierungssoftware eine Grafik-Engine ansteuern.
Sie wird oft mit der Render-Engine verwechselt, welche nur die in der 3D-Welt vorhandenen Daten auf der Anzeige ausgibt.
Inhaltsverzeichnis
Funktion
Die Grafik-Engine bietet einem Programmierer eine große Palette von grafischen Funktionen und Effekten (geometrische Objektbeschreibung, OberflächenTexturen, Licht und Schatten (Shading), Transparenz, Spiegelungen usw.), so dass er für seine spezielle Anwendung diese nicht stets neu programmieren muss.
Insbesondere bei 3D-Computerspielen wie Egoshootern entscheidet die Qualität der Effekte ihrer jeweiligen Grafik-Engine maßgeblich über den kommerziellen Erfolg des Spiels, weswegen ihnen in diesem Bereich große Aufmerksamkeit zukommt.
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 wird, etwa vergleichbar mit der Rastergrafik, Farbwert und Eigenschaft eines jeden Punktes der 3D-Welt in einem dreidimensionalen Datensatz gespeichert.
Die Endstufe des ganzen Visualisierungsprozesses ist die Render-Engine, die aus den Daten das eigentliche, am Bildschirm dargestellte Pixelbild erzeugt.Geschichte
Der Begriff wurde erst in den 1990er Jahren gebräuchlich, als Id Software anfing, seine Grafik-Engines 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 auf diesen Gebieten führend.
Für viele Computerspiele werden 3D-Engines anderer Herstellern lizenziert, weil sich der Aufwand für die Entwicklung einer eigenen zeitgemäßen 3D-Grafik oft nicht lohnt. Ein Spiel kann dadurch viel schneller fertiggestellt werden und hat in der Regel auch eine viel bessere Grafik, als es bei einer kompletten Eigenproduktion der Fall wäre.
Engines im Bereich Film und Computerspiel
Film
Grafik-Engines 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, je nach Rechenleistung, mitunter mehrere Stunden in Anspruch nehmen. Grafisch aufwändige Filmszenen müssen daher häufig von dutzenden Computern gleichzeitig berechnet werden.
Die gängigste Renderersoftware ist:
- Mental Ray
- Pixar RenderMan
Mit Hilfe von Programmen wie Maya, Cinema 4D, 3d Studio Max, Blender und ZBrush 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 sind 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 Grafik-Engines zur Berechnung von Spielen sind weit vielzähliger und entwickeln sich rasant.
Bei Computerspielen übernimmt die Grafikengine in der Regel auch die Physikberechnung. Ton und KI gehören jedoch nicht in das Aufgabenfeld der Grafik-Engine. Die Beziehung der Grafik-Engine zur Game-Engine ist vergleichbar mit der eines Malers, der nach Diktat malt. Die Gameengine übernimmt das "Denken" und sagt der Grafikengine, was sich in der 3D-Welt an welcher Position befindet und von wo aus es betrachtet wird. Die Grafikengine überlegt sich dann, wie das Bild aussehen müsste, schmückt es zum Teil noch mit grafischen Effekten aus und stellt es dann dar.
Fast jedes große Spiel bringt auch seine eigene Engine mit. Aktuelle Engines sind die von Doom3, Jupiter EX, Half-Life 2 (Source-Engine), Unreal 2, Unreal Tournament 3 mit der Unreal Engine 3 sowie Crysis mit der CryEngine 2.
Eine große Schwierigkeit ist die begrenzte Rechenleistung. Bei der Herstellung eines Filmes darf das Erzeugen eines Einzelbildes mehrere Stunden oder länger dauern, während ein Einzelbild in einem Spiel im Bruchteil einer Sekunde berechnet sein muss. Die Spiele-Engines müssen also bestimmte Mindestanforderungen an die GPU und CPU stellen, um überhaupt zu funktionieren.
Unterschiede Film und Spiel
Der Unterschied zwischen Spiel und Film zeigt sich beispielsweise am Film Final Fantasy und dem 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. Grafik-Engines für Computerspiele richten daher ihr Hauptaugenmerk auf die Rechengeschwindigkeit und müssen im Gegensatz zum Film auf Realitätstreue und Genauigkeit verzichten. Die Grafik-Engines 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 ("Vorschau"-Funktion), 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 mit 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 Namen des Spieles tragen, für das sie entwickelt wurden) stechen einige besonders hervor, welche in der nachfolgenden Übersichtstabelle aufgelistet sind.
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
- A7
- Blitz3D SDK
- Ca3D-Engine[1]
- Cipher
- CryEngine 1/2
- DB / DBPro
- Gamebryo (früher: Netimmerse)
- Jamagic
- Jupiter-Ex-Engine
- Mad F/X 1.0
- PR
- Quest3D[2]
- Radish
- RF
- SAGE-Engine
- Shark 3D
- Source Engine
- Torque
- Trinigy Vision
- TV3D
- Unreal II
- Unreal III
- Virtools
Lizenziert als Open-Source Entwicklung sind folgende Engines:
- Axiom-Engine C# (.NET Portierung der Ogre-Engine)[3]
- Blender Game-Engine
- CrystalSpace 3D Engine (Crystal Space ist nicht nur eine Rendering-Engine, sondern auch eine Game-Engine mit Netzwerkunterstützung, Kollisionserkennung, Objektverwaltung etc.)
- Horde3D (leichtgewichtige Render-Engine mit Next-Generation-Features)[4]
- Irrlicht Engine (reine Render-Engine)
- Lightfeather 3D Engine
- Nebula Device
- OGRE (reine Render-Engine)
- Open Scene Graph (reine Render-Engine)
- Quake III
- ZFX Community Engine
- jMonkey Engine (Java-basierte 3D-Game-Engine)
- SFML (2D-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 Charakteranimationen 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 Laufzeitumgebung Wine, bzw. Cedega verfügbar, jedoch arbeiten nicht alle Windows-Spiele mit Wine.)
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
Weblinks
Spezifikationen:
Übersicht 3D-Engines:
Einzelnachweise
Wikimedia Foundation.