vorlesung „computergraphik 2“ d. grüntjens folien ...cg/ss13/cg2/01_3d engines.pdf · u n i v...
TRANSCRIPT
U N I V E R S I T Ä TKOBLENZ · LANDAU
(1) 3D Engines
Vorlesung„Computergraphik 2“
D. GrüntjensFolien: Stefan Rilling / D. Grüntjens
U N I V E R S I T Ä TKOBLENZ · LANDAU
Organisatorisches CG2 und CG3 werden im selben Semester
hintereinander gelesen CG 2 vom 18.04.2012 bis 13.06.2013 CG 3 vom 14.06.2012 bis 13.07.2013
Lehrveranstaltungen Vorlesungen: Do 10-12 Uhr in E313, Fr 12-14 Uhr in E114 Übung: Mo 8-10 Uhr in G310
Klausuren CG2 13.06.2013, 10-12 Uhr in E313 CG3 25.07.2013, 10-12 Uhr in E313
U N I V E R S I T Ä TKOBLENZ · LANDAU
Organisatorisches Übungsbetrieb startet am 22.04.2013
Alle Daten, Materialien etc. unter
Veranstaltungsseite CG2 und CG3
U N I V E R S I T Ä TKOBLENZ · LANDAU
OrganisatorischesÜbersicht
18.04.2013 01. 3D Engines 19.04.2013 02. Hierarchien 25.04.2013 03. Raytracing-Beschleunigungen 26.04.2013 04. Beleuchtung 02.05.2013 05. Radiosity 03.05.2013 06. Buffer 09.05.2013 Christi Himmelfahrt10.05.2013 07. GPU 1 11.05.2013 08. GPU 2
U N I V E R S I T Ä TKOBLENZ · LANDAU
OrganisatorischesÜbersicht
17.05.2013 09. GPU 3 23.05.2013 Pfingsten23.05.2013 Pfingsten 30.05.2013 Fronleichnam31.05.2013 10. GPU 4 06.06.2013 11. GPU 5 07.06.2013 Wiederholung 13.06.2012 Klausur
U N I V E R S I T Ä TKOBLENZ · LANDAU
Computergrafik 1 war ja ganz nett... Immerhin können wir jetzt einfache Sachen rendern.
U N I V E R S I T Ä TKOBLENZ · LANDAU
Aber wie kriegt man denn nun so etwas hin?
U N I V E R S I T Ä TKOBLENZ · LANDAU
CG2 - Heute: 3D Engines
Top down: Zuerst das „große Ganze“, dann die Details im Laufe der Vorlesung.
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine (engl. Maschine, Motor, Triebwerk)
Eine 3D Engine ist eine Softwarekomponente zur Darstellung von 3D Graphik (Renderingsystem)
D. h. eine 3D Engine ist eine Sammlung von Klassen und Funktionen
Neuerer Begriff für (szenegraphbasierte) Renderingsysteme
Eine 3D Engine ist keine Applikation
Eine 3D Engine ist keine Spielengine
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D-Engine: Einordnung
Treiber
3D-Engine
Programmierer
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D-Engine: Einordnung Low Level Graphik APIs ungeeignet für die Erstellung
komplexer Welten Einfaches Beispiel: Drehender Würfel mit Textur in OpenGL
• Wie lade ich die Textur?• Wie repräsentiere ich den Würfel?• Wie repräsentiere ich die Rotation?
Abstraktion der Low-Level Graphik-Schnittstelle Objektorientierte Datenrepräsentation
Daten werden mit Semantik versehen
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D-Engine: Abstraktion Bsp. Definition einer Lichtquelle in OpenGL
glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
glLightfv(GL_LIGHT0, GL_POSITION, position);
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D-Engine: Abstraktion Bsp. Definition einer Lichtquelle im Idealfall (Pseudocode)
Objektorientierte Definition Daten haben die erwartete Bedeutung
Entsprechende Low-Level Funktionalität wird gekapselt
LightSource l;l.setAmbientColor(ambient);l.setDiffuseColor(diffuse);l.setPosition(position);l.setMode(SPOT_LIGHT);
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D-Engine: Semantik Bsp. Low Level Graphik Schnittstelle: Keine Zuordnung der
Daten
Applikation•Raum
•Lampe•Stuhl•Tisch
•Festmahl
3D-Engine•3D Objekt
•Geometrie•Materialen•Lichtquellen
•Punkt•Spot•gerichtet
Low Level API•Dreiecke
•Eckpunkte•Material State•Texturobjekte•Lichtquellen•Transformationsmatritzen
Semantik & Abstraktion wird mehr
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D-Engine: Semantik
Mit einer 3D-Engine wird es einfacher, große Systeme zu programmieren.
Aber: Immer, wenn Funktionalität gekapselt wird, wird es schwieriger, Spezialwünsche (z. B. komplett neue
Verfahren) zu implementieren.
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Grundsätzlicher Aufbau
Core System
Resource Management Renderer Szenen
Management
Schauen wir uns diese Teile im Detail an...
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Szenen Management
Erzeugen & Verwalten von 3D Objekten Verwaltung von Positionen und Orientierungen aller
Objekte (Szenengraph) Bestimmt, welche Daten an den Renderer geschickt
werden Culling Operationen Paging & Streaming großer Datenmengen Level of Detail
Core System
Resource Management Renderer
Szenen Management
U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 18 -
Traforechter Arm
glTranslatef (1.0, 0.0, 0.0);glScalef (2.0, 0.4, 1.0);
Oberarm
glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);
glTranslatef (2.0, 0.0, 0.0);glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0);
glTranslatef (0.75, 0.0, 0.0);glScalef (1.5, 0.4, 1.0);
Unterarm
Rechter Arm
Lokale Koordi-natensysteme
U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 19 -
Traforechter Arm
glTranslatef (1.0, 0.0, 0.0);glScalef (2.0, 0.4, 1.0);
Oberarm
glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);
glTranslatef (2.0, 0.0, 0.0);glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0);
glTranslatef (0.75, 0.0, 0.0);glScalef (1.5, 0.4, 1.0);
Unterarm
Rechter Arm
Welt-koordinaten
U N I V E R S I T Ä TKOBLENZ · LANDAU S. Müller - 20 -
Beispiel CodeTraforechter Arm
glTranslatef (1.0, 0.0, 0.0);glScalef (2.0, 0.4, 1.0);2.0, 0.4, 1.0);
Oberarm
glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);
glTranslatef (2.0, 0.0, 0.0);glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0);, 0.0, 1.0);
glTranslatef (0.75, 0.0, 0.0);glScalef (1.5, 0.4, 1.0);1.5, 0.4, 1.0);
Unterarm
Rechter Arm glClear (GL_COLOR_BUFFER_BIT); glColor3f(0,0,0); glLoadIdentity(); gluLookAt( 0,0,10, 0,0,0, 0,1,0);
glRotatef ((GLfloat) shoulder, 0.0, 0.0, 1.0);
glPushMatrix(); glTranslatef (1.0, 0.0, 0.0); glScalef (2.0, 0.4, 1.0); glutWireCube (1.0); glPopMatrix();
glTranslatef (2.0, 0.0, 0.0); glRotatef ((GLfloat) elbow, 0.0, 0.0, 1.0);
glTranslatef (0.75, 0.0, 0.0); glScalef (1.5, 0.4, 1.0); glutWireCube (1.0); glFlush();();
U N I V E R S I T Ä TKOBLENZ · LANDAU
View Frustum Culling
U N I V E R S I T Ä TKOBLENZ · LANDAU
Räumliche Aufteilung
2 3
4
1
5 6
7 8
9
Scene
City
OfficeChurch House
House
FactoryTree Tree
Tree
Tree Tree
Tree
1 Tile 2 Tile 3 Tile 4 Tile 5 Tile 6 Tile 7 Tile 8 Tile 9 Tile
City
Trees Pine Buildings
SCS SCS
OfficeChurch
HouseHouse
Factory
Tree
Wichtig ist, daß die Hierarchie der Szene eine räumliche Aufteilung aufweist
Schlechte räuml. Aufteilung
Gute räuml. Aufteilung (wichtig fürCullingverfahren - z. B. ViewFrustum Culling)
U N I V E R S I T Ä TKOBLENZ · LANDAU
Bounding Volume Hierarchie Für jeden Gruppenknoten
wird auch ein Bounding Volume berechnet und abgespeichert
Häufig verwendete Möglichkeit: Axis-Aligned Bounding Box
Anwendung View-Frustum Culling Strahltests (Selektion etc.)
2 3
4
1
5 6
7 8
9
City
Church House
U N I V E R S I T Ä TKOBLENZ · LANDAU
Beispiel: Octrees Intelligente Szenenaufteilung je nach Dichte von
Objekten
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Szenen Management
Dynamische Objekte Müssen bei Bewegung durch die Welt neu in den Szenegraph
einsortiert werden Bounding Volumes müssen aktualisiert werden
Räumliche Aufteilung des Szenegraphen Quadtrees, Qctrees, BSP, etc. Je nach Art der virtuellen Welt (Gebäude, Landschaften,
Städte)
Core System
Resource Management Renderer
Szenen Management
U N I V E R S I T Ä TKOBLENZ · LANDAU
State Change Minimierung Beispiel: Rendern von 100 Autos 3 Materialien Pro Auto
Metall Gummi Glas
Hintereinander rendern 300 State Changes
Sortieren nach Materialien 3 State Changes
Szenengraphen nach View Frustum Culling umsortieren, um State Changes zu minimieren: Render Tree erstellen
View Frustum Culling und Render Tree: CPU!
U N I V E R S I T Ä TKOBLENZ · LANDAU
Noch mehr Culling Alles, was nicht sichtbar ist, muss nicht gezeichnet
werden View-Frustum-Culling als erster Schritt Innerhalb des View-Frustums können sich Objekte
gegenseitig verdecken Occlusion Culling
U N I V E R S I T Ä TKOBLENZ · LANDAU
Und noch mehr Culling Backface Culling: Bei massiven Objekten müssen nur
die Vorderseiten gerendert werden Backface: Jedes Polygon, dessen Normale von der
Kamera wegzeigt (Prüfung durch Skalarprodukt)
Beispiel: Hintere Seiten von Würfeln
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Core System
Des Pudels Kern Grundlegende Elemente:
Low-Level Funktionen und Datenstrukturen Mathematik System Objektsystem
Core System
Resource Management Renderer Szenen
Management
Low-Level Funktionen und Datenstrukturen Mathematiksystem Objektsystem
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Core System
Low-Level Funktionen und Datenstrukturen Container (vector, Listen, assoziative Arrays etc.)
• Vgl. STL Timer Funktionalität File I/O Speicherverwaltung (C++)
• Wird normal nicht direkt benutzt • Komfort und Sicherheit für den Programmierer
Core System
Resource Management Renderer Szenen
Management
Low-Level Funktionen und Datenstrukturen Mathematiksystem Objektsystem
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Core System
Mathematiksystem für grafische Anwendungen Vektor- und Matrix-Algebra
• Operatoren (+, -, *, /, •,×)• Normalisieren, invertieren etc.
Funktionen (Trigonometrie etc.), Konstanten Rotationen und Orientierungen
• Rotationsmatritzen, Quaternionen
Core System
Resource Management Renderer Szenen
Management
Low-Level Funktionen und Datenstrukturen Mathematiksystem Objektsystem
U N I V E R S I T Ä TKOBLENZ · LANDAU
Quaternionen und Rotationen Quaternionen
4-Tupel reeller Zahlen (w, x, y, z) Mathematische Operatoren +,-,*,/ und Betrag
Beschreibung von Rotationen Quaternionen mit Länge 1 Achsen – Winkel Repräsentation
Aus Sicht des Programmierers: Angabe von Achse und Winkel zur Beschreibung
einer Rotation
Achsen-Winkel Repräsentation
Typisches Codefragment (rotiere 45° um Y-Achse):
Quaternion q = Quaternion(45.0, Vector(0.0, 1.0, 0.0));
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Core System
Objektsystem Runtime type information (RTTI)
• Identifikation des Objekttyps• Identifikation der Basisklasse
Objektidentifikation Referenz-Management und Smart Pointer Streaming von Daten Serialisierung (Speichern & Laden von Objekten inkl.
kompletten Zustand)
Core System
Resource Management Renderer Szenen
Management
Low-Level Funktionen und Datenstrukturen Mathematiksystem Objektsystem
U N I V E R S I T Ä TKOBLENZ · LANDAU
Runtime Type Information Identifikation des Objekttyps zur Laufzeit des
Programms Wichtig bei Typkonvertierungen in
Vererbungshierarchien Beispiel: Sich verändernder Szenegraph (Pseudocode,
an C++ angelehnt)
Node
TransformsetPosition()
Geometry
Node *n0 = new Transform();Node *n1 = new Geometry();
If(n0->type == „Transform“){Transform *t = (Transform *)n0;t->setPosition(23.0, 23.0, 23.0);
}If(n1->type == „Transform“){
Transform *t = (Transform *)n1;t->setPosition(6.0, 6.0, 6.0);
}sichere Typkonvertierung
U N I V E R S I T Ä TKOBLENZ · LANDAU
Runtime Type Information Üblicherweise einfaches Abspeichern der Klasse Z. B. bei Szenengraphen: Wichtig, wenn man nicht
weiß, welche Information ein Node speichert (Transformation, Geometrie)
Bei dynamischen Szenen (d. h. der Szenengraph wird dynamisch zu Laufzeit erstellt) kann man vorher nicht wissen, welche Information in einem Node steht
Alternative zu RTTI: Weitere Klasseninformationen wie Signaturen sind bekanntErmöglicht auch Strukturänderungen des Programms zur Laufzeit (durch das Programm)Häufig bei Sprachen in VMs: Z. B. Java
U N I V E R S I T Ä TKOBLENZ · LANDAU
Referenz-Management und Smart Pointer Gemeinsame Benutzung von Daten
Große Datenmengen werden nur einmal geladen • Geometrie• Texturen
Referenzen an verschiedenen Stellen im Programm
Problem: Löschen von Daten Daten werden an anderer Stelle referenziert Absturz Verantwortung beim Programmierer Menschliches Versagen
Lösung: Automatisierung Objektsystem speichert Anzahl der Referenzen auf ein Objekt
• Neue Refernz Anzahl inkrementieren• Versuch, Objekt zu löschen Anzahl dekrementieren• Keine Referenz auf das Objekt Objekt kann gelöscht
werden
U N I V E R S I T Ä TKOBLENZ · LANDAU
Referenz-Management und Smart Pointer
Smart Pointer: Erweiterung einfacher Zeiger
Referenzzählende Zeiger
• Bei Zuweisung einer Objektreferenz an die (smarte) Zeigervariable wird der Referenzzähler beim Objekt erhöht
• Objekte müssen korrekt initialisiert werden Erzeugung durch Objektsystem
Iteratoren sind Smart PointerZum Durchlaufen von ContainernZeigerarithmetik, dereferenzierenRandbehandlungBsp.: STL
U N I V E R S I T Ä TKOBLENZ · LANDAU
Referenz-Management und Smart Pointer Pseudo-Code Beispiel: Smart Pointer und Objektsystem
SmartPointer p = ObjektSystem.erzeugeObjekt(); //1 ReferenzSmartPointer p1 = p; //2 Referenzen
p->machWas();p = NULL; //1 Referenz
Wird in praktisch allen 3D Engines verwendet Funktioniert wegen RTTI (Identifikation über Objektsystem), da
das Objektsystem so weiß, wie es ein Objekt intern verwalten muss
Realisierung in C++ Templates (Gerüste für generische Klassen, Methoden...) Typedefs (Aliasse für Datentypen) Überladung des “=“-Operators (in C++ können auch Operatoren überladen werden)
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Resource Management
Laden & verwalten digitaler Inhalte 3D Modelle Animationen Texturen Shader
Autorensystem Exporter für Modellierungswerkzeuge
Core System
Resource Management Renderer Szenen
Management
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Renderer
Bringt die virtuelle Welt auf den Bildschirm Setzen entsprechender Render-States der zugrundeliegenden
Graphik API Datenstrukturen für darstellbare Objekte
• Transfer der 3D Modelle zur Graphikkarte Darstellung Effekte & Materialien (z.B. Schatten) Erzeugen & Verwalten von Fenstern, Viewports & Kameras
Core System
Resource Management
Renderer Szenen ManagementFenster &
ViewportDatenstrukturen
Passes & Targets
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Objekte Sammelbegriff für darstellbare Objekte Beinhaltet Daten, die einer bestimmten Position und
Orientierung zugeordnet sind Geometriedaten Material,Texturen, Shader Position & Orientierung in der Welt
Beispiel: Auto mit 4 drehenden Rädern 5 verschiedene 3D Objekte
• 4 Räder• 1 Karosserie
Geometrie der Räder kann gemeinsam verwendet werden 3D Engines bieten in der Regel eigenen Datentyp an
Wird oft als Entity bezeichnet
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Renderer
Datenstrukturen für darstellbare Objekte Vertices, Normalen, Texturkoordinaten
• Dreiecke als Basis-Geometrieprimitiv• Indizierte Vertexlisten als Basis-Datenstruktur zur
Geometrieverwaltung Zuordnung von Materialien & Texturen Zuordnung von Shadern (Programme, die direkt auf der
Grafikkarte laufen)
Core System
Resource Management
Renderer Szenen ManagementFenster &
ViewportDatenstrukturen
Passes & Targets
U N I V E R S I T Ä TKOBLENZ · LANDAU
Speichern von 3D Modellen
Wiederholung von Vertices 1 Vertex = 3 Float Variablen = 12 Byte Speicher wird verschwendet
• Speicher ist doch nicht mehr teuer… Ja, aber: Daten müssen transferiert werden
• Arbeitsspeicher Grafikkartenspeicher
1Einfache Vertexliste:V0 V3 V1 V3 V4 V1 V1 V4 V2 …
1
2311
2 3
U N I V E R S I T Ä TKOBLENZ · LANDAU
Indizierte Vertexlisten
Liste von Eckpunkten Liste von Indizes Dreiecke werden durch Indizes in der Eckpunktliste
definiert
V0 V1 V2 V3 V4 V5 V6 V7 V8
Vertexliste:
Indexliste0 3 1 3 4 1 1 4 2 ...
1 2 3
231
0 1 2 3 4 5 6 7 8Index
U N I V E R S I T Ä TKOBLENZ · LANDAU
Indizierte Vertexlisten
Geringerer Speicherbedarf Normalen und Texturkoordinaten in extra Listen Optimal für Graphikhardware
V0 V1 V2 V3 V4 V5 V6 V7 V8
Vertexliste:
Indexliste0 3 1 3 4 1 1 4 2 ...
231
1 2 3
0 1 2 3 4 5 6 7 8Index
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Renderer
Ablauf Pro Frame: Für jedes Objekt:
• Position und Orientierung setzen (Szenen Management)• Render States für Materialien, Texturen Shader etc. setzen• Objekt zeichen
Core System
Resource Management
Renderer Szenen ManagementFenster &
ViewportDatenstrukturen
Passes & Targets
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Renderer
Wechseln von Render-States kann teuer werden Minimierung durch Sortieren der Objekte
Sortierung • Texturen• Materialien• Transparenzen
Core System
Resource Management
Renderer Szenen ManagementFenster &
ViewportDatenstrukturen
Passes & Targets
U N I V E R S I T Ä TKOBLENZ · LANDAU
State Change Minimierung Beispiel: Rendern von 100 Autos 3 Materialien Pro Auto
Metall Gummi Glas
Hintereinander rendern 300 State Changes
Sortieren nach Materialien 3 State Changes
U N I V E R S I T Ä TKOBLENZ · LANDAU
State Change Minimierung
Schlechte räuml. Aufteilung
Gute räuml. Aufteilung
Umsortierung kurz vor dem Rendern in Rendertree: Möglichst wenige State Changes
Der entstehende Rendertree enthält dann alle Objekte, dietatsächlich gernedert werden und ist auf State Change Minimierung optimiert
U N I V E R S I T Ä TKOBLENZ · LANDAU
Transparenzen Achtung: Bei Transparenzen muss sortiert werden Erst alle nicht-transparenten Objekte rendern Dann transparente Objekte von hinten nach vorne
rendern (Da ein transparentes Objekt auch hinter einem weiteren transparenten Objekt sein kann)
Deshalb sind transparente Objekte rechenintensiv!
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Renderer
Fenster und Viewport Ausgabe des Renderers muss irgendwann in einem Fenster
landen (Renderkontext) Anbindung an Windowing System des Betriebssystems Erzeugen & Verwaltung mehrerer Viewports
• Zuweisung verschiedener virtueller Kameras an Viewport• Bsp.: Rendern von Übersichtskarten
Core System
Resource Management
Renderer Szenen ManagementFenster &
ViewportDatenstrukturen
Passes & Targets
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Renderer
Render Targets Die Ausgabe des Renderers muss nicht zwangsläufig im
Framebuffer landen Render to Texture Grundlage für viele Effekte und Techniken (z.B. Glow Effekte)
Core System
Resource Management
Renderer Szenen ManagementFenster &
ViewportDatenstrukturen
Passes & Targets
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engine: Renderer
Render Passes Viele Effekte lassen sich nicht mit einem Render-Schritt
realisieren• Ausgabe eines Render-Schrittes dient als Eingabe des
nächsten • Ausgabe mehrerer Render Schritte werden miteinander
kombiniert (z.B. Non Photorealistic Rendering)
Core System
Resource Management
Renderer Szenen ManagementFenster &
ViewportDatenstrukturen
Passes & Targets
U N I V E R S I T Ä TKOBLENZ · LANDAU
Beispiele Passes & Targets
Multi-Pass Silhoutte Rendering•Je ein Render-Pass für Front- und Backfaces
Glow Effekt•Rendern in Textur•Weichzeichner auf Textur•Mehrere Passes
U N I V E R S I T Ä TKOBLENZ · LANDAU
3D Engines: Auswahl
Liste mit Sicherheit sehr unvollständig Desktop-Bereich: OGRE & IRRLICHT VR-Bereich: OpenSG & Open Inventor
U N I V E R S I T Ä TKOBLENZ · LANDAU
Beispiel: Ogre 3DObject Oriented Graphics Rendering Engine
Auch schon einige kommerzielle Spiele
U N I V E R S I T Ä TKOBLENZ · LANDAU
Beispiel: Ogre 3DKommerzielle Spiele
Book of Unwritten Tales
Torchlight
Ceville
U N I V E R S I T Ä TKOBLENZ · LANDAU
Ogre 3D Features:
Nutzt OpenGL oder DirectX als Renderer Szenengraphbasiertes System Kommt mit allen vorher genannten Komponenten einer 3D
Engine Sehr viele Effekte wie z. B. Schatten out-of-the-box Optimierung für verschiedene Szenen (Außenbereiche,
Portalverbundene Szenen, Innenbereiche...) In Kombination mit Blender als Modellierungstool ergibt sich
eine kostenfreie und mächtige Kombination
Wird neben OpenSG für viele Projekte in der AG Computergrafik eingesetzt (immer mehr Ogre 3D)
Recht schnell sehr spannende Ergebnisse möglich
U N I V E R S I T Ä TKOBLENZ · LANDAU
Beispiel: Ogre 3D Aufbau von Ogre 3D
U N I V E R S I T Ä TKOBLENZ · LANDAU
Beispiel: Ogre 3D Herunterladbar unter
http://www.ogre3d.org/download/sdk Schneller Einstieg:
Visual Studio • Über Microsoft Dreamspark:
http://www.uni-koblenz-landau.de/koblenz/GHRKO/software/msdnaa/msdnaa-ms-academic-alliance-fb4 Ogre SDK Application Wizard für Visual Studio (keine nervige Einstellerei
des Linkers & der Includes etc.) Gute Dokumentation
jede Menge Tutorials (Achtung: teilweise nicht ganz aktuell) http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Installing+the+Ogre+SDK
U N I V E R S I T Ä TKOBLENZ · LANDAU
Beispiel: Ogre 3D
Guter Einstieg für eigene Spiele & Abschlussarbeiten :-) Tutorials durchprogrammieren Erste eigene Applikationen schreiben (z. B. ein kleines Spiel) Arbeiten „wie die Profis“ (sind wir auch!)
U N I V E R S I T Ä TKOBLENZ · LANDAU
Literatur David H. Eberly: 3D Game Engine Architecture
U N I V E R S I T Ä TKOBLENZ · LANDAU
Die CG2...
Details zu all den angesprochenen Komponenten Erweiterte Algorithmen, Technologien etc. OpenGL 3.3!
Hoffentlich: Jede Menge Spaß!