Dynamisches Cube Mapping mit FFP

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
snipert
Beiträge: 2
Registriert: 22.10.2009, 08:48

Dynamisches Cube Mapping mit FFP

Beitrag von snipert »

Moin an alle,

ich wollte gerne mit DirectX9 und der Fixed Function Pipeline (ich bin noch Anfänger!) ein dynamisches Cube Mapping programmieren und diese Cubemap dann als Environmentmap für mein Wasser (eine Ebene) in Kombination mit einer animierten Bumpmap nehmen. Das klappt auch wunderbar und sieht recht gut aus, ABER wenn ich eines meiner "Boote" (Objekte) aufs Wasser lasse, dann erscheint die "Spiegelung" des Objekts nicht korrekt am Objekt selbst, sondern irgendwo am Horizont meines Wassers.

Kann mir einer grundsätzlich sagen, wie die Renderaufrufe geschehen müssen, zu welchem Zeitpunkt mit welchen ViewMatrizen usw.? Muss denn die Camera beim Rendern in die Cubemap wirklich immer am Punkt 0,0,0 sein... was ist, wenn mein Objekt da auch gerade ist?

Ich danke euch schonmal im Voraus für eure Hilfe!

PS: Ich bin von einem SDK Beispiel ausgegangen, wobei das Flugzeug um eine Kugel fliegt.
Benutzeravatar
Zudomon
Establishment
Beiträge: 2273
Registriert: 25.03.2009, 07:20
Kontaktdaten:

Re: Dynamisches Cube Mapping mit FFP

Beitrag von Zudomon »

snipert hat geschrieben:Muss denn die Camera beim Rendern in die Cubemap wirklich immer am Punkt 0,0,0 sein...
Nein

Du brauchst zum korrekten rendern die Position der echten Kamera gespiegelt an der Reflektionsebene.
Weil die Cubemap eine Punktspiegelung darstellt. => Dann ist die Spiegelung deines Bootes auch nicht mehr am Horizont.
Benutzeravatar
TGGC
Establishment
Beiträge: 569
Registriert: 15.05.2009, 18:14
Benutzertext: Ich _bin_ es.
Alter Benutzername: TGGC
Echter Name: Ich _bin_ es.
Wohnort: Mainz
Kontaktdaten:

Re: Dynamisches Cube Mapping mit FFP

Beitrag von TGGC »

Eine Cubemap stellt nur eine Annaehrung bei Reflektionen dar. Der maximale Fehler duerfte proportional zum Verhaeltnis von maximalen Abstand eines Objektes, das spielgelt zum Mittelpunkt der Cubemap zu minimalen Abstand eines gespiegelten Objektes zum Mittelpunkt der Cubemap. Darum hat man in einer Cubemap meist nur entfernte Objekte, das haelt den Fehler klein. Wasserspiegelungen sollten man lieber machen, indem man die Welt ein zweites mal rendert, dabei aber um eine Matrize transformiert, welche eine Spiegelung an der Wasserebene repraesentiert. Dabei wird dann eine Clipping Plane so gesetzt, das nur die Objekte unter der Wasserflaeche dargestellt werden. f'`8k

[ ] Autocogito


Gruß, TGGC (Was Gamestar sagt...)
Antworten