Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie.

Ähnliche Präsentationen


Präsentation zum Thema: "Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie."—  Präsentation transkript:

1 Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie II Teil 1: Simulation und 3D-Programmierung WS 2010/2011 Dennis Kiewning Fortgeschrittene Techniken (750 – 755): Stereo-3D-Grafik - Raumaufteilung - Light-Mapping

2 Stereo-3D-Grafik 9.4 Prinzip: Trennen der Bilder : Zwei Bilder rendern Zwei Bilder mit Rot und Blau kombinieren: Rot/BlauFilter (Brille) Vorteile: Kostengünstig Funktioniert mit (fast) jeder Grafikkarte Einfach zu implementieren Nachteil: eine Farbe geht komplett verloren: - bei Rot-Blau: Grün - bei Rot-Grün: Blau

3 Implementierung: Render-State D3DRS_COLORWRITEENABLE kontrolliert, welche Farbkanäle beim Rendern geschrieben werden und welche nicht: 1)Szene beginnen und alle Puffer leeren 2)D3DRS_COLORWRITEENABLE D3DCOLORWRITEENABLE_RED 3)Die Szene von links rendern 4)Z- und Stencil-Buffer leeren 5)D3DRS_COLORWRITEENABLE D3DCOLORWRITEENABLE_BLUE 6)Die Szene von rechts rendern 7)Szene beenden und den Bildpuffer sichtbar machen Stereo-3D-Grafik 9.4

4 Beispielprogramm: Galactica unterstützt 3D-Brillen: #define _3D_GLASSES oben in die Datei GAME.CPP schreiben Stereo-3D-Grafik 9.4

5 Raumaufteilung 9.5 Bisher standen Spielfiguren und bewegliche Objekte im Mittelpunkt. Andere Spieltypen werden allerdings häufig durch ein statisches Objekt – den Level – eingenommen. Problem: Solche Objekte besitzen viel mehr Dreiecke als jedes andere Objekt. Lösung: Rekursives Rendern!

6 Rekursives Rendern: Modell aufteilen und nur sichtbare Teile rendern: - BSP (Binary Space Partition) - Generieren eines Octrees Grundprinzip: Man hat den Level rekursiv unterteilt, und man kennt die Bounding-Box oder die Bounding-Sphere jedes einzelnen Teils (Knotens). Das Rendern erfolgt nun ebenfalls rekursiv. Raumaufteilung 9.5

7 void RenderNode(Node* pNode) { // Ist der Knoten sichtbar? if(tbBoxVisible(pNode, g_aViewFrustum)) { // Ja, er ist sichtbar! // Wenn es ein Endknoten ist, rendern wir seine Dreiecke. if(pNode->bIsLeaf) { // Effekt starten //... // Rendern g_pD3D->SetStreamSource(...); g_pD3D->SetIndices(...); g_pD3D->DrawPrimitive(...); } else { // Es ist kein Endknoten! // Nun rufen wir rekursiv die Unterknoten auf. for(int i = 0; i iNumChilds; i++) { // Unterknoten rendern RenderNode(pNode->apChild[i]); } Raumaufteilung 9.5 Rekursives Rendern: (Bounding-Box)

8 PVS und Portale: Auch mit BSP-Trees oder Octrees muss die Grafikkarte immer noch viele überflüssige Dreiecke rendern. Lösung: PVS –Potencially Visible Set: Eine Liste, die alle Knoten eines Baums enthält, die potenziell sichtbar sind: - Funktioniert bei Indoor-Levels - Türen die Räume verbinden = Portale Raumaufteilung 9.5

9 PVS und Portale: Erstellen eines neuen Sichtbereich: ein neues View-Frustum Vor dem Rendern eines Knotens prüfen, ob er sich im neu generierten Sichtbereich befindet. Vorteile: Große Teile des Levels wegcullen Rendern dynamischer Objekte außerhalb des Sichtfelds sparen

10 Light-Mapping Light-Mapping: Grundgedanke: Lichtquellen reduzieren Textur, die lediglich die Beleuchtung eines Dreiecks darstellt Diffuse und Lightmap werden über den Operator D3DTOP_MODULATE verbunden

11 Light-Mapping Light-Maps generieren: 1) Lohnt es sich eine Light-Map anzufertigen? 2) Größe der Light-Map für jedes Dreieck festlegen: Light-Map-Texel durchsuchen und dessen Beleuchtung berechnen Ray-Tracing (Radiosity) 3) Light-Maps in einer großen Textur zusammenfassen: verringert beim Rendern den Aufruf von SetTexture Wichtig: Vertizes der Dreiecke brauchen jeweils zwei Texturkoordinatenpaare: Diffuse + Lightmap

12 Die TriBase-Klasse tbOctree Die TriBase-Klasse tbOctree: Übergabe einer Modelldatei Anschließende Umwandlung in einen BSP-Tree oder einen Octree tbOctree-Klasse zum Rendern des Octrees verwenden


Herunterladen ppt "Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. Manfred Thaller AM 3 Übung: Softwaretechnologie."

Ähnliche Präsentationen


Google-Anzeigen