Freigeben über


Sphärische Umgebungszuordnung (Direct3D 9)

Kugelförmige Umgebungskarten oder Kugelkarten sind spezielle Texturen, die ein Bild der Szene um ein Objekt oder die Lichteffekte um das Objekt herum enthalten. Im Gegensatz zu kubischen Umgebungskarten stellen Kugelkarten nicht direkt die Umgebung eines Objekts dar. Das Teekannenbild im Thema Umgebungszuordnung (Direct3D 9) zeigt die Reflektionseffekte, die Sie mit der Kugelzuordnung erzielen können. Eine Kugelkarte ist eine 2D-Darstellung der vollständigen 360-Grad-Ansicht der Szene, die ein Objekt umgibt, wie in der folgenden Abbildung dargestellt.

Abbildung einer Kugelkarte des Inneren eines Gebäudes

Texturkoordinaten für sphärische Umgebungszuordnungen

Die Texturkoordinaten, die Sie für jeden Scheitelpunkt angeben, der eine Umgebungszuordnung erhält, sollte die Textur als Funktion der reflektierenden Verzerrung berücksichtigen, die durch die Krümmung der Oberfläche entsteht. Anwendungen müssen diese Texturkoordinaten für jeden Scheitelpunkt berechnen, um den gewünschten Effekt zu erzielen. Eine einfache und effektive Möglichkeit zum Generieren von Texturkoordinaten verwendet den Scheitelpunkt normal als Eingabe. Obwohl mehrere Methoden vorhanden sind, ist die folgende Gleichung für Anwendungen üblich, die Umgebungszuordnungen mit Kugelzuordnungen durchführen.

Formel der Berechnung von Texturkoordinaten für eine Kugelkarte

In diesen Formeln sind Sie und v die Texturkoordinaten, die berechnet werden, und NX und NY sind die x- und y-Komponenten des Kameraraumvertex normal. Die Formel ist einfach, aber effektiv. Wenn die Normalkomponente eine positive x-Komponente aufweist, zeigt die Normalkomponente nach rechts, und die u-Koordinate wird angepasst, um die Textur entsprechend zu adressieren. Ebenso für die v-Koordinate: positives y gibt an, dass der Normalwert nach oben zeigt. Das Gegenteil gilt für negative Werte in jeder Komponente.

Wenn die normalen Punkte direkt auf die Kamera weisen, sollten die resultierenden Koordinaten keine Verzerrung erhalten. Die Abweichung +0,5 zu beiden Koordinaten platziert den Punkt der Nullverzerrung in die Mitte der Kugelkarte, und der Vertex normal (0, 0, z) adressiert diesen Punkt. Diese Formel berücksichtigt nicht die z-Komponente des Normals, aber Anwendungen, die die Formel verwenden, können Berechnungen optimieren, indem sie Scheitelpunkte mit einer Normalität überspringen, die ein positives z-Element aufweist. Dies funktioniert bei flach schattierten Objekten, da der Scheitelpunkt beim Rendern des Objekts beim Rendern des Objekts gekullt wird, wenn der Normale von der Kamera entfernt ist (positives z). Bei Gouraud-schattierten Objekten kann ein Normal von der Kamera weg zeigen (positives x), und das Dreieck, das den Scheitelpunkt enthält, kann weiterhin sichtbar sein. Wenn Sie sie und v nicht für diesen Scheitelpunkt berechnen, wird möglicherweise weiterhin das Gesicht verwendet, was zu unerwartetem Verhalten führt.

Anwenden von sphärischen Umgebungszuordnungen

Sie wenden eine Umgebungszuordnung auf Objekte auf die gleiche Weise wie für jede andere Textur an, indem Sie die Textur mit der IDirect3DDevice9::SetTexture-Methode auf die entsprechende Texturstufe festlegen. Legen Sie den ersten Parameter auf den Index für die gewünschte Texturstufe fest, und legen Sie den zweiten Parameter auf die Adresse der IDirect3DDevice9-Schnittstelle fest, die beim Erstellen der Textur für die Umgebungszuordnung zurückgegeben wurde. Sie können die Farb- und Alphamischungsvorgänge und Argumente nach Bedarf festlegen, um die gewünschten Texturmischungseffekte zu erzielen.

Umgebungszuordnung