30
ahrungen mit Microsoft DirectX W. Krug, April 2002

Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Embed Size (px)

Citation preview

Page 1: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Erfahrungen mit Microsoft DirectX 8

W. Krug, April 2002

Page 2: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

DirectX - Komponenten

Architektur

Komponenten

Interfaces trennen Komponenten

Page 3: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Module

DirectX - Direct 3D

Transformationen

Das Herzstück: Die Rendering Engine

Page 4: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

DirectX - Programmstruktur

Ordnung ist das Halbe Programmiererleben ...

1. Initialisierung2. Hauptschleife

• Eingabegeräte abfragen• Verarbeitung der Eingaben• Sichtbare 3D-Objekte auswählen • Sichtbare3D-Objekte in der 3D-Welt positionieren, drehen• Bewegung des Spielers in der 3D-Welt umsetzen• 3D-Welt in 2D-Bildschirmkoordinaten projizieren• Rendern des Frames• Warteschleife / Framebremse

3. Beenden, aufräumen

Page 5: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Die Welt in DirectX (oder OpenGL)

... ist Dreieckig

Page 6: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Ecken - Formate

Ecken definieren Flächeneigenschaften

Page 7: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Point Light

Directional Light

Licht

SpotLight

Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light

Licht bringt Spannung, tolle Effekte, kosten jedoch enorm Rechenzeit!

Page 8: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Flat shading

Gouraud Shading

Licht und Schatten

Schattierungen bringen Tiefe!

Page 9: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Beispiel 1: LichtPoint Light

Directional Light

Spot Light

Page 10: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Aus Dreiecken entstehen 3D-Objekte

Modelle mit wenigen Ecken und weichen Rundungen gesucht!

Page 11: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Texturen

Mit Texturen mogeln, wann immer möglich!

Page 12: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Texturen kacheln

Gekachelte Texturen simulieren endlose Bilder!

Page 13: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

LightMap, BumpMap

Texturen Kaskadieren

Texture Blending Cascade

Textur

Hardwareunterstützung für Textur-Mogeleien!

Page 14: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Color = <Rot, Grün, Blau, Alpha>Alpha {0x00 .. 0xFF}Alpha = 0x00: Volle FarbeAlpha = 0xFF: Transparent

für Wolken, Rauch, Explosionen ...

Texturen transparent

Jetzt wird professionell gemogelt!

Page 15: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Nebel

D3DFOG_LINEAR

D3DFOG_EXP

D3DFOG_EXP2

Schlechtes Mogeln mit Nebel überdecken!

Page 16: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

typedef struct _D3DMATERIAL8 { D3DCOLORVALUE Diffuse; D3DCOLORVALUE Ambient; D3DCOLORVALUE Specular; D3DCOLORVALUE Emissive; float Power;} D3DMATERIAL8;

Material

Der schönste Glanz, leuchtende Augen!

Page 17: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Beispiel 2: Drahtgittermodell

Texturen

Bewegung

Nebel

Licht

Rechenleistung

Schattierung

288 Ecken, 486 Polygone 240 sichtbar

Page 18: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

4. Projektion auf den Bildschirm2D-Projektion der Kamerakoordinaten

1. Lokale Koordinaten

2. Welt-KoordinatenPositionierung der Objekte

Geometrie

Transformationen innerhalb der Koordinatensysteme über Matrizen

3. Kamera-KoordinatenBewegung des Spielers / der Kamera: Verschiebung und Rotation der Weltkoordinaten

Page 19: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Kamera - Koordinaten

Die Kamera bleibt fest, die Welt verschiebt und dreht sich um die Kamera.

Page 20: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

... um die X-Achse ...

... um Y-Achse ...

... um Z-Achse ...Geometrie

Verschiebung, Rotation ...alle Schmankerln der linearen Algebra!

Einen P

unkt

(x, y

, z) d

rehen

...

Page 21: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Der Blickwinkel macht's!Viewing Frustum

Die schnellsten Polygone sind die, die nicht berechnet werden müssen!

ClippingCulling

Bounding Boxes

Page 22: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

LOD - Levels of Detail:Es ist nie falsch, selbst zu denken ...

Dynamisches Ecken-Management: LOD

Stefan Röttger

Page 23: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Dynamisches Ecken-Management: LOD

Stefan Röttger

Page 24: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Beispiel 3: LOD- Algorithmus

Drahtgittermodell

Texturen

Flug über einen Planeten

viele, viele Ecken

Licht selbst berechnet

Rechenleistung

Nur die Blickrichtung zählt

Page 25: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Nachtrag zum Beispiel 3: LOD- Algorithmus

Light Map Bump Map

Page 26: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

4 Ecken, 2 Polygone, 1 Textur:Statische Bilder, die sich immer in Blickrichtung drehen.

Textur-Mogelei: Billboards

Page 27: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Dynamische Szenen

Straßen-Stücke

Straßen-Graph

Dynamik ist spannend - will jedoch schnell geladen sein!

Page 28: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Beispiel 4: Dynamischer Fahrsimulator

Texturen

Billboards

Light-Maps

Straßenstücken Straßen-Graph

Nebel

Licht

Page 29: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

DirectX 8 SDK : http://msdn.microsoft.com/directx

Stefan Zerbsthttp://www-public.tu-bs.de:8080/~y0005571/

Stefan Röttger (LOD)http://wwwvis.informatik.uni-stuttgart.de/~roettger/

Virtual Terrain Project http://www.vterrain.org/ Virtual Terrain Project

The DirectX eXperience http://www.geocities.com/SiliconValley/Way/3390/index.html

Links

Page 30: Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Fragen ?

Wünsche ?

Vorschläge ?