Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung

Ähnliche Präsentationen


Präsentation zum Thema: "Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung"—  Präsentation transkript:

1 Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung
Manfred Thaller WS 2011/2012 Stereo-3D-Grafik Linda Scholz

2 Räumliches Sehen Beide Augen suggerieren räumliche Tiefe
Gehirn verarbeitet zwei Bilder aus verschiedenen Blickwinkeln Durch Verschiebung beider Bilder wird die Tiefe berechnet

3 Tiefenschärfe Vermittelt Realismus
Schärfe und Unschärfe setzen den Blickpunkt Größe von Objekten lässt Entfernung von Objekten anmuten

4

5 Stereo-3D-Grafik Darstellung von Bildern aus zwei Perspektiven
Überlagerung der beiden Anisichten Größere Verschiebung = Entfernung zum Betrachter

6

7 Stereo-3D-Grafik Soll das menschliche Auge täuschen
Dreidimensionalität von Objekten wird vorgetäuscht

8

9 Stereo-3D-Grafik 2 Bilder müssen gerendert werden
Jedes Auge darf nur das jeweilige Bild sehen VR-Helme 3D-Shutter-Brillen 3D-Kino-Lösung Rot-Blau/Rot-Grün Stereografie

10 VR-Helme Virtual Reality
Anstelle der Gläser zwei Displays, die separat angesteuert werden Vorteil: sehr gute Qualität Nachteil: Grafikkarte muss Helm unterstützen und jeden Frame doppelt rendern Hohe Kosten

11 3D-Shutter-Brillen Augen werden abwechselnd verdunkelt
Monitor zeigt abwechselnd die Sicht von links und rechts Vorteil: günstige Lösung und gute Bildtrennung Nachteil: Grafikkarte muss Brille unterstützen 50% Helligkeit geht verloren Bildwiederholungsfrequenz muss verdoppelt werden

12 3D-Kino-Lösung Zwei Projektoren strahlen den Film einmal aus linker Sicht und einmal aus rechter an die Wand Licht der Projektoren unterscheidet sich durch Polarisation Filter in den 3D-Brillen lassen jeweils nur einen Licht-typ durch Technik lässt sich für Computerspiele kaum verwenden Zwei LCD-Projektoren vor die man je einen Polarisationsfilter stellt

13 Rolt-Blau/Rot-Grün Ein Bild arbeitet mit rotem Licht eines mit blauem oder grünem Bilder werden abwechselnd von links und rechts gezeigt Flackern entsteht Im Bild werden Rot und Blau/Grün kombiniert

14 3D-Kino-Lösung Vorteil Nachteil Kostengünstig
Funktioniert auf fast allen Grafikkarten Einfach zu implementieren Nachteil Eine Farbe geht komplett verloren

15 Stereografie Auf den ersten Blick undeutliches Bild
Durch Verstellung der Augen wird 3D Objekt erkennbar Tiefe der Pixel sind von Bedeutung um ein stereografisches Bild zu berechnen Stereografische Bilder in Echtzeit durch Zugriff auf den Bildpuffer Farbe des Pixels von seiner Tiefe abhängig machen (Pixel-Shader)

16

17 Implementierung Renderstate D3DRS_COLORWRITEENABLE
Farbkanäle beim Rendern kontrollieren, dass nur roter und grüner Farbkanal geschrieben wird D3DCOLORWRITEENABLE_RED D3DCOLORWRITEENABLE_GREEN

18 Implementierung Szene beginnen & Puffer leeren
D3DRS_COLORWRITEENABLE auf D3DCOLORWRITEENABLE_RED setzen Szene von links rendern (Kamera entlang der X-Achse verschieben) Z- und Stencil-Buffer leeren – nicht Bildpuffer D3DRS_COLORWRITEENABLE auf D3DCOLORWRITEENABLE_BLUE setzen Szene von rechts rendern Szene beenden & Bildpuffer sichtbar machen

19 Blickpunkt der Kamera Bei Stereo-3D-Grafik sollte sich der Blickpunkt der Kamera bei dem Objekt befinden, das in der Bildmitte zu sehen ist.

20 Galactica Game.cpp #include "Galactica.h"
// Folgendes #define schaltet den 3D-Brillen- Modus ein: // #define _3D_GLASSES_

21 CGAME::Render #ifdef _3D_GLASSES_
D3D->Clear(0, NULL, D3DCLEAR_TARGET, tbColor(0.0f), 1.0f, 0); for(int i = 0; i < 2; i++) { D3D->Clear(0, NULL, D3DCLEAR_ZBUFFER, tbColor(0.0f), 1.0f, 0); D3D->BeginScene(); if(i == 0) D3D.SetRS(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_BLUE); else D3D.SetRS(D3DRS_COLORWRITEENABLE, D3DCOLORWRITEENABLE_RED); // Kamera setzen SetupCamera();

22 CGAME::SetupCamera #ifdef _3D_GLASSES_ static DWORD dwFrame;
if(dwFrame % 2) m_vCameraPos -= tbVector3Cross(tbVector3Normalize(m_vCameraLookAt - m_vCameraPos), m_vCameraUp) * 0.01f; else m_vCameraPos += tbVector3Cross(tbVector3Normalize(m_vCameraLookAt - m_vCameraPos), m_vCameraUp) * 0.01f; #endif

23 Vielen Dank Schöne Ferien


Herunterladen ppt "Softwaretechnologie II (Teil 1): Simulation und 3D Programmierung"

Ähnliche Präsentationen


Google-Anzeigen