ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4395844
Jetzt (Chat):
29 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-
3D Spieleprogrammierung mit DirectX - Band II

 

Status: ERHÄLTLICH SEIT JUNI 2002

Titel:              "3D Spieleprogrammierung mit DirectX in C/C++ - Band II"     
Seitenanzahl:
628
Preis:             52,95 € Paperback / 61,50 € Hardcover
Autor:            Stefan Zerbst
Verlag:
          BOD GmbH, Hamburg

ISBN               
Paperback- Version 3-8311-3878-8
                        Hardcover-Version   3-8311-3879-6
Bestellen:      
bei Amazon:   Paperback    Hardcover

      Cover                     


Screenshots  |  Inhaltsverzeichnis


Beschreibung des Buchinhalts

Der zweite Band dieser Reihe über 3D Spieleprogrammierung greift viele der im ersten Band bereits erläuterten Techniken auf und vertieft diese. Dabei werden bisherige Implementierungen durch genauere und tiefergehende Methoden ersetzt. Insbesondere das Erzeugen, Laden, Cullen und Rendern von X File Modellen bildet den Kern des ersten Teils des Buches, ebenso wie eine genaue Kollisionsabfrage zwischen den Modellen bis auf die Ebene der einzelnen Triangle. Insbesondere wird die Kollisionsabfrage durch einen Baum aus Orientierten Bounding Boxen realisiert, welcher detailliert in diesem Band erläutert und implementiert wird. So wird eine Kollisionsabfrage quasi pixelgenau im 3D Raum ermöglicht.
Der zweite Teil des Buches geht dann auf das Rendering von Terrain zur Erzeugung von Outdoor Spielen wie Fahrzeug- / Panzersimulationen à la Microprose M1 Tank Platoon oder Infantriesimulationen à la Novalogic Delta Force - Land Warrior ein. Hierbei werden verschiedene Ansätze zur Erzeugung von Real-Time renderbarem Terrain in der Theorie erläutert (Octrees, Quadtrees, ROAM), und ein Hybrid-Ansatz aus ROAM und GeoMipmapping implementiert. Dabei wird insbesondere Wert auf die Größe des Terrains gelegt, so daß dieses sich auch tatsächlich für die Verwendung in einem Spiel eignet. Um den Fokus wieder auf die organisierte Entwicklung von Computerspielen zu richten wird dann darauf eingegangen, welche Tools man zusätzlich zu seinem Spiel programmieren muss. Danach wird der einfache Leveleditor TH Terrain für Outdoor Spiele mit Terrain, Gebäuden und Fahrzeugobjekten implementiert.
Im Verlauf des gesamten Buches wird differenziert auf verschiedene Spezialeffekte eingegangen, beispielsweise das Multitexturing oder Alphablending (und Color Keys) von Texturen, Texturanimationen, Arbeiten mit dem Stencil Buffer, Partikelsysteme für Wettereffekte, in die Kollisionsabfrage eingebundene Geschosse, Explosionen und so weiter. Ebenso werden viele Hinweise für Optimierungen eines Programms unter Direct3D gegeben.

Die Programme des Buches orientieren sich an durchschnittlich aktueller Hardware und setzen für ein flüssiges Ablaufen der Demos einen Grafikchip der Klasse GeForce2 voraus.


Screenshots der Programme aus dem Buch:

Screenshots:

    
Kapitel 8, 7: Th Terrain Leveleditor und Panzerfaust 3 im Schuß

    
Kapitel 9: Rauchpartikelsystem, Explosion, HUD und Regen (
rechtes Bild) in Aktion

    
Kapitel 6: Terrain mit 6 Kilometer Sichtweite, ca. 50 fps auf GeForce2 MX

    
Kapitel 7: Modell des Sturmgewehr G3                         Kapitel 5: Picking und Kollisionsabfragen

    
Kapitel 7: Radarstation und Detailobjekte (Bäume)

    
Kapitel 7: Ein kleines Dörfchen

Leo 2 und Marder im Hinterhalt    Leopard 2A4 MBT
Kapitel 6: Leopard 2A4 mit Marder A3 im Nebel

Aufklaerungszug am Hang    Leo 2 im Zoom
Kapitel 6: Multitexturing mit Detail Map

 

Zurück zur Buchseite


Der Inhalt von Band II

 

Inhalt

 

Inhalt 8

Einführung 22

Geschichte                                                                                                               23

Was steht in diesem Buch                                                                                      23

Was steht nicht in diesem Buch                                                                            26

Was tun wenn etwas nicht läuft                                                                             27

Welches Vorwissen benötigt man                                                                         28

Wie sollte man dieses Buch lesen                                                                        28

Abbildungen, Tabelle und Symbole                                                                      29

Was macht ein Kühlschrank?                                                                                 29

Turnschuhe und so was                                                                                         31

I.                 Surfaces, Texturen und Transparenz                  33

Mehr über Surfaces                                                                                                35

Arbeiten mit einer Surface                                                                                     35

Verschiedene Grafikformate und Bit Shifting                                                          38

Bitzahl des Grafikformates                                                                                                             38

Bitmasken                                                                                                                                        41

Screenshots - Lesen und Speichern einer Surface                                                   45

Laden von Bitmap Dateien in eine 16 oder 32 Bit Surface                                        49

Mehr über Texturen                                                                                                52

Laden von Bitmap Dateien als Texturen                                                                 53

Goldene Texturregeln                                                                                            56

Mehr über Transparenzeffekte für Texturen                                                      58

Unsere bisherigen Taktiken                                                                                    60

Der Color Key Ansatz                                                                                                                    61

Der Material Ansatz                                                                                                                       61

Alphablending - Der bessere Weg                                                                          62

Color Keys durch Alpha Channels erzeugen                                                                             62

Beliebige Transparenzwerte durch Alpha Channels                                                                 64

Renderstates für das Rendern mit Alphablending                                                                    65

Ach ja, was man noch wissen sollte                                                                        67

Alphablending und der Z-Buffer                                                                                                 67

Alphatesting gegen Artefakte                                                                                                      69

Spezialeffekte und anderes                                                                                   70

Mipmapping                                                                                                          70

Textur Blending                                                                                                    72

Textur Stages – Berechnung des Blendings                                                                              75

Multiple Texturkoordinaten                                                                                                          76

Aktivierung der Textur Stages                                                                                                     76

Textur Blending Argumente und Operationen                                                          78

D3DTSS_COLOROP                                                                                                                      79

D3DTSS_COLORARG1 und D3DTSS_COLORARG2                                                              80

Aber nicht vergessen...                                                                                                                 81

Implementierung eines eigenen Textur Blenders                                                      81

Interpretation von Texturkoordinaten                                                                      91

Zusammenfassung                                                                                                   93

Ausblick                                                                                                                     93

II.               X-Files erzeugen                                                           95

Erzeugen eines 3D-Modells                                                                                   97

Modellierung mit AC3D                                                                                         97

Konvertierung des AC3D-Modells in ein X-File                                                       98

X-File Dateiformat                                                                                                                          98

AC3D Dateiformat                                                                                                                        101

Definition Parser                                                                                                                           103

Hilfsfunktionen für Stringoperationen                                                                                      104

Grundgerüst des Konverters                                                                                                      110

Parserfunktion                                                                                                                               113

AC3D Datenzeile                                                                                                                          121

Material- und Texturmanager                                                                                                     122

Ausgabe der konvertierten Datei                                                                                               124

Der komplette ac2x Konverter                                                                             126

Zusammenfassung                                                                                                 129

Ausblick                                                                                                                   130

III.             X-Files en Détail                                                         131

Optimierte Darstellung eines X-Files im Spiel                                                  133

Diskrete Detaillevel                                                                                             133

Kontinuierliche Detaillevel                                                                                    135

Optimiertes Laden eines X-Files                                                                         135

Schwachstellen von CD3DFile und D3DXMesh                                                    137

Laden von X-Files mit LOD und Texturanimation                                                  138

Objektorientierung, die Klasse XXXModell                                                                            139

Hilfsstrukturen für die Laderoutinen                                                                                         143

Namenskonventionen für Transparenz und Animation                                                         145

Templates und Pointer, die X-File Informationspakete                                                          146

Konstruktor und Destruktor von XXXModell                                                                        148

Laden der X-Files                                                                                                                         151

Extrahieren der Mesh-Daten aus der Datei                                                                               155

Fortsetzen des Extrahierens                                                                                                        161

Organisation der Materialien und Texturen                                                                             168

Normalenvektoren erzeugen                                                                                                       174

Resümee                                                                                                            176

Rendern eines XXXModell Objektes                                                                  177

Auswahl der passenden LOD-Stufe                                                                     177

Ein primitiver Renderer                                                                                        178

Gedanken zur Performance                                                                                  181

Die komplette Klasse XXXModell                                                                        182

Zusammenfassung                                                                                                 187

Ausblick                                                                                                                   187

IV.            Scene Management für X-Files                              189

Scene Management                                                                                               191

Der bisherige Ansatz                                                                                           192

Der bessere Weg, Bounding Volume Bäume                                                         193

Bounding Spheres                                                                                                                        198

Achsen Ausgerichtete Bounding Boxen (AABB)                                                                  198

Orientierte Bounding Boxen (OBB)                                                                                           199

Weitere Bounding Volumes                                                                                                        200

Implementierung eines AA-OBB-Baumes                                                          200

Erstellung des Baumes                                                                                         203

So wird's gemacht                                                                                                                         203

Eine Klasse für sich, der AA-OBB Baum                                                                                  205

Von der Wurzel an                                                                                                                        207

Erzeugung eines Baumknotens                                                                                                  208

Teilung eines Baumknotens                                                                                                       211

Erstellung einer Bounding Box                                                                                                   213

Indices Sammeln                                                                                                                           215

Notwendige Anpassungen des XXXModell                                                           216

Aufrufen des Baumkonstruktors                                                                                               216

Direct3D Vertexbuffer                                                                                                                  218

Direct3D Indexbuffer                                                                                                                    220

Erstellen der Renderbuffer                                                                                                          222

Rendern des Modells                                                                                           224

Mehr über den View Frustrum                                                                                                    224

Culling von Orientierten und Achsen Ausgerichteten Bounding Boxen                            227

Culling des Baumes am Frustrum                                                                                               232

Auswahl einer geeigneten LOD-Stufe                                                                                      233

Rendern des Baumes mit Texturanimation                                                                               237

Präzises Timing                                                                                                     240

Framebremse versus Vergangene Zeit                                                                  240

Virtuelle Tageszeit                                                                                               241

Zeitstempel - Renderframes eindeutig identifizieren                                               243

Zusammenfassung                                                                                                 244

Ausblick                                                                                                                   245

V.              Kollisionsabfragen und Picking                          246

Ohne Matrizenrechnung läuft nichts                                                                  248

Transponieren einer 4x4 Matrix                                                                            248

Invertieren einer 4x4 Matrix                                                                                 249

Kollisionsabfragen                                                                                                252

Sinn und Zweck einer Kollision                                                                             252

Bisheriger Ansatz und der bessere Weg                                                                253

Kollisionen von geometrischen Objekten                                                               255

Kollision eines Punktes mit einem Dreieck                                                                               255

Kollision eines Strahls mit einem Dreieck                                                                                 258

Kollision eines Liniensegmentes mit einer Orientierten Box                                                  260

Kollision eines Strahls mit einer Orientierten Box                                                                   262

Kollision einer Sphäre mit einer Orientierten Box                                                                    266

Kollision eines Dreiecks mit einer Orientierten Box                                                                267

Kollision zweier Orientierter Boxen                                                                                            270

Kollision einer Achsen Ausgerichteten Box mit einer Orientierten Box                              273

Keine Kollision zweier Dreiecke                                                                                                 274

Hilfsfunktionen für die XXXModell Klasse                                                            274

Rückgabe der OBB des Modells                                                                                                275

Triangledaten aus dem Modell extrahieren                                                                              275

Transformation eines Strahls zu einer Matrix                                                                           277

Transformation einer Box zu einer Matrix                                                                                 278

Kollisionen mit der XXXModell Klasse                                                                 280

Kollision eines 3D-Modells mit einer Sphäre                                                                           280

Kollision eines 3D-Modells mit einem Liniensegment                                                            283

Kollision eines 3D-Modells mit einer Orientierten Box                                                           285

Kollision zweier 3D-Modelle                                                                                                       287

Was es noch zu beachten gilt                                                                               289

Pick mich, wenn du kannst                                                                                   291

Komm, pick, pick                                                                                                 292

Picken von Triangles eines XXXModell Objektes                                                  293

Was es noch zu beachten gilt                                                                               295

Zusammenfassung                                                                                                 297

Ausblick                                                                                                                   298

VI.            Terraforming                                                              299

Danksagung                                                                                                            301

Einleitende Worte                                                                                                  301

Erzeugung von Landschaften                                                                             302

Das Problem                                                                                                       302

Grundlagen der Heightmap                                                                                   303

Mögliche Lösungsansätze                                                                                    305

Brute Force Terrain                                                                                                                      306

Culling Techniken                                                                                                                        308

Quadtree Terrain                                                                                                                           309

Octree Terrain                                                                                                                               316

ROAM Terrain                                                                                                                              318

GeoMipmapping und unser Hybrid                                                                                           319

Unterschied zwischen Nodoor-, Outdoor- und Indoor-Spielen                                 320

Modellierung von Ökosystemen                                                                            322

Implementierung des Terrain Rendering                                                           325

Big Picture                                                                                                          325

Modellierte Terrainklasse                                                                                                            330

Modellierte Pageklasse                                                                                                                332

Modellierte Patchklasse                                                                                                              334

Implementierung der Terrain Klasse                                                                     335

Konstruktor der XXXTerrain Klasse                                                                                         336

Verlinkung der Patches                                                                                                                344

Triangulation der Patches                                                                                                           345

Laden und Speichern der XXXTerrain Objekte                                                                       347

Culling und Rendern                                                                                                                    348

Berechnung der Höhe im Gelände                                                                                             355

Verändern der Wasserhöhe                                                                                                        356

Destruktor                                                                                                                                      357

Implementierung der Terrain Page Klasse                                                             358

Konstruktoren                                                                                                                               358

Heightmap laden                                                                                                                           361

Lightmap berechnen                                                                                                                    363

AABB erzeugen                                                                                                                            366

Vertexdaten erzeugen                                                                                                                   367

Wasser erzeugen                                                                                                                          372

Laden und Speichern                                                                                                                   374

Rendern                                                                                                                                          378

Jetzt aber, Berechnung der Höhe                                                                                               380

Destruktor                                                                                                                                      382

Implementierung der Terrain Patch Klasse                                                            383

Erstellung eines Patches                                                                                                             383

Berechnung der Varianz                                                                                                              386

Triangulation und Splitting durch ROAM                                                                               387

Vertices und Indexbuffer erstellen                                                                                             392

Rendern                                                                                                                                          395

Zerstörung eines Patches                                                                                                           398

Unter den Wolken                                                                                                  398

Erzeugung des Himmels                                                                                       399

Skybox, Skyplane, Skydome                                                                                 399

Implementierung des Skydomes                                                                            401

Konstruktion des Skydomes                                                                                                      401

Einbinden des Domes in den Terrain Renderer                                                                       404

Spieler im Terrain, eine Klasse für sich                                                             406

Initialisierung des Spielers                                                                                    408

Update des Spielers                                                                                             410

Verarbeitung des Inputs                                                                                       412

Rotation der Achsen                                                                                                                    412

Bewegungsabläufe                                                                                                                       414

Für Grenadiere: In tiefster Gangart durchs Terrain                                                                  416

Für Panzerfahrer: Ausrichtung der Kamera am Terrain                                                          418

Für Vögel: Überblick aus der Vogelperspektive                                                                      420

Nebel im Terrain                                                                                                    421

Nebel, Realität und Simulation                                                                              422

Implementierung des Nebels                                                                                422

Und so geht's, das Demo zu diesem Kapitel                                                     423

Zusammenfassung                                                                                                 424

Ausblick                                                                                                                   425

VII.          Special Effects – Leben im virtuellen Terrain 426

Was kommt alles ins Terrain?                                                                              428

Orthogonale Projektion                                                                                        429

Zoomen der Ansicht                                                                                               429

Field of View                                                                                                      430

Die Hauptschleife und der Zoom                                                                          431

Fernglas, Zoom des gesamten Bildschirms                                                            435

Zielfernrohr, Zoom eines Teils des Bildschirms                                                      436

Stencil-Buffer Theorie                                                                                                                  437

Stencil-Buffer Renderstates                                                                                                        438

Endlich – rendern mittels einer Stencil-Buffer Maske                                                             440

Partikelsysteme deluxe                                                                                         444

Es war einmal ein kleines Partikelchen...                                                               445

Basisklasse für Partikelsysteme                                                                            446

Beispiel 1: Rauchsäulen                                                                                       449

Starten der Rauchsäule                                                                                                                452

Initialisieren eines Partikels                                                                                                         453

Update des Systems                                                                                                                    453

Rendern des Systems                                                                                                                  456

Beispiel 2: Explosionen                                                                                         458

Erzeugen einer Explosion                                                                                                            460

Initialisieren eines Partikels                                                                                                         461

Update des Systems                                                                                                                    462

Rendern des Systems                                                                                                                  463

Beispiel 3: Leuchtspurgeschosse                                                                           465

Erzeugen eines Geschosses                                                                                                        469

Initialisieren eines Partikels                                                                                                         470

Kollisionsabfrage der Geschosse                                                                                              471

Update des Systems                                                                                                                    473

Rendern des Systems                                                                                                                  475

Beispiel 4: Regen und Schnee – Niederschlag                                                       476

Exkurs in Sachen Point Sprites                                                                                                   478

Initialisieren eines Partikels                                                                                                         481

Update des Systems                                                                                                                    481

Rendern des Systems                                                                                                                  482

Beispiel 5: Einfache Grasbüschel – kurz erklärt...                                                484

Beispiel 6: Rauchspuren – kurz erklärt...                                                             485

Weitere Ideen für Partikel- und Ökosysteme                                                         486

An die Waffen                                                                                                         487

Basisklasse für die Bewaffnung                                                                           488

Initialisierung eines Waffenobjektes                                                                                         490

Schußmodus einer Waffe                                                                                                            490

Betätigen des Abzugs einer Waffe                                                                                            491

Update einer Waffe                                                                                                                      492

Rendern einer Waffe                                                                                                                    493

Ergänzungen für die XXXSpieler Klasse                                                               495

Beispiel 1: Sturmgewehr G3 ZF                                                                            497

Weitere Beispiele: Maschinengewehr und Panzerfaust                                           500

Statusanzeigen rendern                                                                                       501

Objektmanagement                                                                                               502

Strukturen für Objekte und ihre Instanzen                                                             505

Objektmanagement Klasse                                                                                   506

Laden der Modellinstanzen                                                                                   509

Kollisionsabfrage der Objekte                                                                               512

Rendern der Objekte                                                                                           513

Fortgeschrittenes Management                                                                             515

Zusammenfassung                                                                                                 516

Ausblick                                                                                                                   517

VIII.        TH Terrain, ein Leveleditor                                   518

Was ist ein Leveleditor                                                                                         520

Zurück zur WinAPI                                                                                                  521

Mit unserer Engine in ein Fenster rendern                                                             521

Farbtiefe und Auflösung des Desktop                                                                   526

Buttons erstellen                                                                                                  528

Nachrichten verarbeiten                                                                                       530

Steuerelemente abfragen und beeinflussen                                                            531

TH Terrain, der Editor                                                                                           533

Version 0.1: Basislayout der GUI                                                                         537

Windows Dialoge und eine Klasse GUI                                                                                   537

Bearbeitung der Nachrichten der GUI                                                                                       542

Dialog Objekt für das Öffnen oder Speichern von Dateien                                                   544

Version 1.0: Erstellung eines Levels                                                                      547

Auswahllisten verfügbarer 3D-Modelle                                                                                   548

Statische Objekte, Hindernisse im Terrain plazieren                                                               551

Statische Objekte, Hindernisse im Terrain anklicken                                                              555

Statische Objekte, das Bearbeitungsmenü                                                                               560

Statische Objekte, Hindernisse umpositionieren im Editor                                                    561

Statische Objekte, Hindernisse wieder löschen                                                                       565

Statische Objekte, Variablen der Hindernisse über den Editor setzen                                 567

Statische Objekte, Abspeichern mit dem Level                                                                       570

Wetter und andere Attribute des Terrains im Editor                                                              573

Abspeichern zusätzlicher Informationen in den Terrain Dateien                                          575

Dynamische Objekte                                                                                                                    576

Zusammenfassung                                                                                                 580

Ausblick                                                                                                                   580

IX.            Tank Hunter, ein Outdoor Spiel                           582

Übersicht über das Kapitel                                                                                  584

Zurück zur Engine                                                                                                 584

Wahl des Levels und GUI's mit DirectX                                                              586

Kollisionsabfrage des Spielers                                                                           591

Zusammenfassung                                                                                                 594

Ausblick                                                                                                                   594

X.              Das große Finale                                                     596

Überblick über weitere Techniken                                                                     598

Am Tellerrand des Terrains                                                                                 598

Fließender Tag/Nacht Wechsel                                                                            599

Viecher, Farben und Sound of Nature                                                                   601

Erzeugung von Schatten                                                                                       603

Nachtsichtgeräte                                                                                                 605

Aufsammelbare Objekte                                                                                      607

Speichern von Spielständen                                                                                  608

Missionen für das Spiel                                                                                        609

Debuggen mit dem Kopf                                                                                       611

5 goldene Programmierregeln                                                                             613

1. Planen, planen und nochmals planen                                                                  613

2. Optimierung ist die Wurzel allen Übels                                                              614

3. Probieren geht über Studieren                                                                           615

4. Renderreihenfolge und State Changes                                                               615

5. Texturen optimieren                                                                                         618

Das bittere Ende                                                         619

Referenzen                                                                   620

Index                                                                               622

 


Zurück zur Buchseite