Erfahrungen mit Microsoft DirectX 8 W. Krug, April 2002

Preview:

Citation preview

Erfahrungen mit Microsoft DirectX 8

W. Krug, April 2002

DirectX - Komponenten

Architektur

Komponenten

Interfaces trennen Komponenten

Module

DirectX - Direct 3D

Transformationen

Das Herzstück: Die Rendering Engine

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

Die Welt in DirectX (oder OpenGL)

... ist Dreieckig

Ecken - Formate

Ecken definieren Flächeneigenschaften

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!

Flat shading

Gouraud Shading

Licht und Schatten

Schattierungen bringen Tiefe!

Beispiel 1: LichtPoint Light

Directional Light

Spot Light

Aus Dreiecken entstehen 3D-Objekte

Modelle mit wenigen Ecken und weichen Rundungen gesucht!

Texturen

Mit Texturen mogeln, wann immer möglich!

Texturen kacheln

Gekachelte Texturen simulieren endlose Bilder!

LightMap, BumpMap

Texturen Kaskadieren

Texture Blending Cascade

Textur

Hardwareunterstützung für Textur-Mogeleien!

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!

Nebel

D3DFOG_LINEAR

D3DFOG_EXP

D3DFOG_EXP2

Schlechtes Mogeln mit Nebel überdecken!

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

Material

Der schönste Glanz, leuchtende Augen!

Beispiel 2: Drahtgittermodell

Texturen

Bewegung

Nebel

Licht

Rechenleistung

Schattierung

288 Ecken, 486 Polygone 240 sichtbar

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

Kamera - Koordinaten

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

... 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

...

Der Blickwinkel macht's!Viewing Frustum

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

ClippingCulling

Bounding Boxes

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

Dynamisches Ecken-Management: LOD

Stefan Röttger

Dynamisches Ecken-Management: LOD

Stefan Röttger

Beispiel 3: LOD- Algorithmus

Drahtgittermodell

Texturen

Flug über einen Planeten

viele, viele Ecken

Licht selbst berechnet

Rechenleistung

Nur die Blickrichtung zählt

Nachtrag zum Beispiel 3: LOD- Algorithmus

Light Map Bump Map

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

Textur-Mogelei: Billboards

Dynamische Szenen

Straßen-Stücke

Straßen-Graph

Dynamik ist spannend - will jedoch schnell geladen sein!

Beispiel 4: Dynamischer Fahrsimulator

Texturen

Billboards

Light-Maps

Straßenstücken Straßen-Graph

Nebel

Licht

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

Fragen ?

Wünsche ?

Vorschläge ?

Recommended