vorlesung „computergraphik 2“ d. grüntjens folien ...cg/ss13/cg2/01_3d engines.pdf · u n i v...

Post on 02-Oct-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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ß!

top related