Cubemap: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Was ist Cubemapping)
K (Sprachfehler korrigiert)
 
(5 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig}}
+
Cubemaps sind spezielle Texturen. Anstatt wie üblich nur eine einfache 2D-Fläche zu sein, bestehen Cubemaps aus 6 2D-Texturen welche 6 Ansichten enthalten. Diese 6 Texturen sind, wie der Name bereits vermuten lässt, wie die Seiten eines Würfels angeordnet.
Cubemaps sind spezielle Texturen. Anstatt wie üblich nur eine einfache 2D Fläche zu sein, bestehen Cubemaps aus 6 2D Texturen welche 6 Ansichten enthalten. Diese 6 Texturen sind, wie der Name bereits vermuten läßt, wie die Seiten eines Würfels angeordnet.
 
  
 
==Cubemapping==
 
==Cubemapping==
Normalen Texturmapping werden Texturen auf Oberflächen gemappt. Genau das selbe wird auch bei Cubemapping gemacht. Allerdings ist die Methode um zu bestimmen welcher Teil der Textur auf welches Stück Fläche zu mappen ist ein anderer.
+
[[Bild:Cubemapping.jpg|right|framed|Mappingprinzip beim Cubemapping: R1 und R2 sind die Ergebnistexel für P1 bzw. P2 bei GL_REFLECTION_MAP und N1 bzw. N2 bei GL_NORMAL_MAP.]]
 +
Beim normalen Texturmapping werden Texturen auf Oberflächen gemappt. Genau dasselbe wird auch bei Cubemapping gemacht. Allerdings ist die Methode um zu bestimmen, welcher Teil der Textur auf welches Stück Fläche zu mappen ist, ein anderer.
  
Beim Cubemapping wird um das zu texturierende Objekt ein gedachter Würfel aufgestellt. Die Wände des Würfels bestehen aus den Texturen der Cubemap. Nun wird der Blickvektor auf jeden sichtbaren (und damit zu texturierenden) Punkt des Objekts geschickt. <br>
+
Beim Cubemapping wird um das zu texturierende Objekt ein gedachter Würfel aufgestellt. Die Wände des Würfels bestehen aus den Texturen der Cubemap. Nun wird der Blickvektor auf jeden sichtbaren (und damit zu texturierenden) Punkt des Objekts geschickt.
Wenn als Texturgenerierungsmethode GL_NORMAL_MAP verwendet wird, wird das Stück Textur auf das Objekt gemappt auf welche die [[Normale]] des Punkte zeigt, der vom Blickvektor getroffen wurde.<br>
+
 
Wenn als Texturgenerierungsmethode GL_REFLECTION_MAP verwendet wird, wird das Stück Textur auf das Objekt gemappt auf welche der reflektierte Blickvektor zeigt, der von dem getroffenen Punkt reflektiert wurde.
+
Wenn als Texturgenerierungsmethode GL_NORMAL_MAP verwendet wird, wird das Stück Textur auf das Objekt gemappt, auf welche die [[Normale]] des Punkte zeigt, der vom Blickvektor getroffen wurde.
 +
 
 +
Wenn als Texturgenerierungsmethode GL_REFLECTION_MAP verwendet wird, wird das Stück Textur auf das Objekt gemappt, auf welche der reflektierte Blickvektor zeigt, der von dem getroffenen Punkt reflektiert wurde.
  
 
==Verwendung von Cubemaps==
 
==Verwendung von Cubemaps==
Ein Haupteinsatzgebiet für Cubemaps sind Umgebungsspiegelungen auf Objekten. Zu diesem Zweck enthält die Cubemap die Umgebung des Objekts. (Vom Objekt aus gesehen).  
+
Ein Haupteinsatzgebiet für Cubemaps sind Umgebungsspiegelungen auf Objekten. Zu diesem Zweck enthält die Cubemap die Umgebung des Objekts (Vom Objekt aus gesehen).  
  
Eine andere Verwendungsmöglichkeit ist, die Cubemap zu verwenden um PerPixel Normalen zu berechnen. (siehe Tutorial12 bei DelphiGL.de)
+
Eine andere Verwendungsmöglichkeit ist, die Cubemap zu verwenden um PerPixel Normalen zu berechnen.
  
 
==OpenGL Befehle==
 
==OpenGL Befehle==
 
[[glTexImage2D]] mit den Texturzielen '''GL_TEXTURE_CUBE_MAP_[Richtung]_[Achse]''' wobei [Richtung] gleich '''POSITIVE''' oder '''NEGATIVE''' und [Achse] gleich '''X, Y''' oder '''Z''' sein kann.
 
[[glTexImage2D]] mit den Texturzielen '''GL_TEXTURE_CUBE_MAP_[Richtung]_[Achse]''' wobei [Richtung] gleich '''POSITIVE''' oder '''NEGATIVE''' und [Achse] gleich '''X, Y''' oder '''Z''' sein kann.
  
[[glTexParameteri]] mit Texturziel '''GL_TEXTURE_CUBE_MAP'''
+
[[glTexParameter]]i mit Texturziel '''GL_TEXTURE_CUBE_MAP'''
  
 
Um Texturkoordinaten zu generiere:
 
Um Texturkoordinaten zu generiere:
<pascal>glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
+
<source lang="pascal">glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
 
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
 
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
 
glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
 
glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
 
glEnable(GL_TEXTURE_GEN_S);
 
glEnable(GL_TEXTURE_GEN_S);
 
glEnable(GL_TEXTURE_GEN_T);
 
glEnable(GL_TEXTURE_GEN_T);
glEnable(GL_TEXTURE_GEN_R);</pascal>
+
glEnable(GL_TEXTURE_GEN_R);</source>
Statt GL_REFLECTION_MAP kann auch GL_NORMAL_MAP verwendet werden. GL_NORMAL_MAP verwendet die Normalen für die Berechnung der Schnittpunkte zwischen Blickvector und Würfel, währen GL_REFLECTION_MAP den reflektierten Sichtvector benutzt.
+
Statt GL_REFLECTION_MAP kann auch GL_NORMAL_MAP verwendet werden. GL_NORMAL_MAP verwendet die Normalen für die Berechnung der Schnittpunkte zwischen Blickvector und Würfel, währen GL_REFLECTION_MAP den reflektierten Sichtvektor benutzt.
  
 
==Siehe Auch==
 
==Siehe Auch==
 
[[Spheremap]]
 
[[Spheremap]]
  
[http://www.delphigl.com/script/do_show.php?name=gl_texture_cubemap_arb&action=2 Cubemaptutorial bei DelphiGL.de]
+
[[Tutorial Cubemap]]

Aktuelle Version vom 19. Februar 2014, 14:05 Uhr

Cubemaps sind spezielle Texturen. Anstatt wie üblich nur eine einfache 2D-Fläche zu sein, bestehen Cubemaps aus 6 2D-Texturen welche 6 Ansichten enthalten. Diese 6 Texturen sind, wie der Name bereits vermuten lässt, wie die Seiten eines Würfels angeordnet.

Cubemapping

Mappingprinzip beim Cubemapping: R1 und R2 sind die Ergebnistexel für P1 bzw. P2 bei GL_REFLECTION_MAP und N1 bzw. N2 bei GL_NORMAL_MAP.

Beim normalen Texturmapping werden Texturen auf Oberflächen gemappt. Genau dasselbe wird auch bei Cubemapping gemacht. Allerdings ist die Methode um zu bestimmen, welcher Teil der Textur auf welches Stück Fläche zu mappen ist, ein anderer.

Beim Cubemapping wird um das zu texturierende Objekt ein gedachter Würfel aufgestellt. Die Wände des Würfels bestehen aus den Texturen der Cubemap. Nun wird der Blickvektor auf jeden sichtbaren (und damit zu texturierenden) Punkt des Objekts geschickt.

Wenn als Texturgenerierungsmethode GL_NORMAL_MAP verwendet wird, wird das Stück Textur auf das Objekt gemappt, auf welche die Normale des Punkte zeigt, der vom Blickvektor getroffen wurde.

Wenn als Texturgenerierungsmethode GL_REFLECTION_MAP verwendet wird, wird das Stück Textur auf das Objekt gemappt, auf welche der reflektierte Blickvektor zeigt, der von dem getroffenen Punkt reflektiert wurde.

Verwendung von Cubemaps

Ein Haupteinsatzgebiet für Cubemaps sind Umgebungsspiegelungen auf Objekten. Zu diesem Zweck enthält die Cubemap die Umgebung des Objekts (Vom Objekt aus gesehen).

Eine andere Verwendungsmöglichkeit ist, die Cubemap zu verwenden um PerPixel Normalen zu berechnen.

OpenGL Befehle

glTexImage2D mit den Texturzielen GL_TEXTURE_CUBE_MAP_[Richtung]_[Achse] wobei [Richtung] gleich POSITIVE oder NEGATIVE und [Achse] gleich X, Y oder Z sein kann.

glTexParameteri mit Texturziel GL_TEXTURE_CUBE_MAP

Um Texturkoordinaten zu generiere:

glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
glTexGeni(GL_R,GL_TEXTURE_GEN_MODE,GL_REFLECTION_MAP);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glEnable(GL_TEXTURE_GEN_R);

Statt GL_REFLECTION_MAP kann auch GL_NORMAL_MAP verwendet werden. GL_NORMAL_MAP verwendet die Normalen für die Berechnung der Schnittpunkte zwischen Blickvector und Würfel, währen GL_REFLECTION_MAP den reflektierten Sichtvektor benutzt.

Siehe Auch

Spheremap

Tutorial Cubemap