Himmel: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
K (Der Kategorie Anleitung zugeordnet)
 
(6 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
Die Himmel-Darstellung ist einigen Eigenheiten unterworfen. Es kommen viele Entscheidungen über Qualität vs. Performance zum tragen, vor allem weil sich die Darstellung des Himmels nicht ausschließlich auf den Himmel bezieht. Betrachten wir zuerst die beiden möglichen Umgebungen wo ein Himmer und/oder Himmelskörper wie Sterne, Mond und Sonne gewünscht werden können:
 
Die Himmel-Darstellung ist einigen Eigenheiten unterworfen. Es kommen viele Entscheidungen über Qualität vs. Performance zum tragen, vor allem weil sich die Darstellung des Himmels nicht ausschließlich auf den Himmel bezieht. Betrachten wir zuerst die beiden möglichen Umgebungen wo ein Himmer und/oder Himmelskörper wie Sterne, Mond und Sonne gewünscht werden können:
 
#Indoor nach oben hin offen. Diese Möglichkeit wird von vielen Ego-Shootern genutzt und ist um einiges einfacher zu handhaben als die 2. Möglichkeit.
 
#Indoor nach oben hin offen. Diese Möglichkeit wird von vielen Ego-Shootern genutzt und ist um einiges einfacher zu handhaben als die 2. Möglichkeit.
#Eine Landschaft ist weder nach unten, noch nach oben hin nicht begrenzt. Beispielsweise könnte man am höchsten Berg stehen und hinab sehen. Dadurch ergeben sich einige Eigenheiten bei der Abgrenzung zwischen Himmel und Landschaft.
+
#Eine Landschaft ist weder nach unten, noch nach oben hin begrenzt. Beispielsweise könnte man am höchsten Berg stehen und hinab sehen. Dadurch ergeben sich einige Eigenheiten bei der Abgrenzung zwischen Himmel und Landschaft.
  
 
Betrachten wir der Einfachheit halber vorerst den 1eren Fall mit reinem Indoor.
 
Betrachten wir der Einfachheit halber vorerst den 1eren Fall mit reinem Indoor.
Zeile 10: Zeile 10:
 
Das Höchste der Gefühle bietet hier Quake 3, welches einen dynamischen Himmel bietet. Bei Quake 3 wird (meines Wissens) keine Skybox verwendet, sondern mehrere Ebenen über dem Betrachter. Das heißt der Himmel ist eine theoretisch unendliche Ebene, welche jedoch durch die sehr hohen Mauern des Indoor-Levels stark abgegrenzt wird. Um den Himmel etwas dynamischer zu gestalten werden hier ähnlich wie bei 2D-Scroll-Engines mehrere Ebenen verwendet, welche unterschiedlich schnell gescrollt werden. In 3D ist dies natürlich eine unterschiedlich schnelle Änderung der Texturcoordinaten der unterschiedlichen Ebenen.
 
Das Höchste der Gefühle bietet hier Quake 3, welches einen dynamischen Himmel bietet. Bei Quake 3 wird (meines Wissens) keine Skybox verwendet, sondern mehrere Ebenen über dem Betrachter. Das heißt der Himmel ist eine theoretisch unendliche Ebene, welche jedoch durch die sehr hohen Mauern des Indoor-Levels stark abgegrenzt wird. Um den Himmel etwas dynamischer zu gestalten werden hier ähnlich wie bei 2D-Scroll-Engines mehrere Ebenen verwendet, welche unterschiedlich schnell gescrollt werden. In 3D ist dies natürlich eine unterschiedlich schnelle Änderung der Texturcoordinaten der unterschiedlichen Ebenen.
  
=Himmer für Outdoor=
+
=Himmel für Outdoor=
 
Bei Outdoor Landschaften erhält man im Normalfall zusätzlich das Problem von [[Popping]] wenn der Himmel nicht an die Landschaft angepasst wird. Hier hat man mehrere Möglichkeiten dies zu bewerkstelligen.
 
Bei Outdoor Landschaften erhält man im Normalfall zusätzlich das Problem von [[Popping]] wenn der Himmel nicht an die Landschaft angepasst wird. Hier hat man mehrere Möglichkeiten dies zu bewerkstelligen.
  
Zeile 16: Zeile 16:
 
Die einfachere Methode um die Landschaft oder das Outdoor-Level am Horizont gleich dem Himmel zu machen ist ein OpenGL-Nebel. Dieser Nebel ist Abhängig von der Entfernung eines Vertex oder auch eines gezeichneten Pixels (hier sind die OpenGL-Spezifikationen sehr offen). Der OpenGL-Nebel besitzt jedoch nur eine Farbe und standardmäßig wird der Alphawert nicht berücksichtigt. Es handelt sich also um eine Interpolation (welcher Art auch immer) vom realen Farbwart zu einem vorgegebenen Farbwert. Somit muss der Hintergrund (also der Himmel) bis in die maximale Höhe eines Landschaftspunktes genau die Farbe des Nebels aufweisen. Die Möglichkeiten sind also sehr beschränkt.
 
Die einfachere Methode um die Landschaft oder das Outdoor-Level am Horizont gleich dem Himmel zu machen ist ein OpenGL-Nebel. Dieser Nebel ist Abhängig von der Entfernung eines Vertex oder auch eines gezeichneten Pixels (hier sind die OpenGL-Spezifikationen sehr offen). Der OpenGL-Nebel besitzt jedoch nur eine Farbe und standardmäßig wird der Alphawert nicht berücksichtigt. Es handelt sich also um eine Interpolation (welcher Art auch immer) vom realen Farbwart zu einem vorgegebenen Farbwert. Somit muss der Hintergrund (also der Himmel) bis in die maximale Höhe eines Landschaftspunktes genau die Farbe des Nebels aufweisen. Die Möglichkeiten sind also sehr beschränkt.
  
==Skybox==
+
===Skybox===
 
Eine Skybox funktioniert nur dann, wenn der untere Teil der Skybox der Nebelfarbe entspricht. Natürlich ist eine Skybox statisch, kann also nur über Umwege animiert werden.
 
Eine Skybox funktioniert nur dann, wenn der untere Teil der Skybox der Nebelfarbe entspricht. Natürlich ist eine Skybox statisch, kann also nur über Umwege animiert werden.
  
==Skysphere==
+
===Skysphere===
 
Eine Skysphere ist nur stark begrenzt für Outdoor-Levels ohne [[Distance based Blending]] einsetzbar, da eine Skysphere nur schwer auf den oberen Himmel-Bereich begrenzbar ist, sodass sie im unteren Bereich eine Konstante Farbe aufweist.
 
Eine Skysphere ist nur stark begrenzt für Outdoor-Levels ohne [[Distance based Blending]] einsetzbar, da eine Skysphere nur schwer auf den oberen Himmel-Bereich begrenzbar ist, sodass sie im unteren Bereich eine Konstante Farbe aufweist.
  
==Wolken als Textur==
+
===Wolken als Textur===
 
Wolken die aus einzelnen Texturen gezeichnet werden sind jedoch sehrwohl möglich. Über die Qualität lässt sich wohl streiten (Microsoft hat hier das ein oder andere brauchbare Konzept für Flugsimulatoren entwickelt). Nichts desto trotz sind Wolken aus Texturen in einer vorgegebenen Minimalhöhe auch nicht optimal für die visuelle Darstellung.
 
Wolken die aus einzelnen Texturen gezeichnet werden sind jedoch sehrwohl möglich. Über die Qualität lässt sich wohl streiten (Microsoft hat hier das ein oder andere brauchbare Konzept für Flugsimulatoren entwickelt). Nichts desto trotz sind Wolken aus Texturen in einer vorgegebenen Minimalhöhe auch nicht optimal für die visuelle Darstellung.
  
=Himmel mit [[Distance based Blending]]=
+
==Himmel mit [[Distance based Blending]]==
 
Hier kann jeder beliebige Hintergrund (auch eine Skybox mit einer Landschaft als Hintergrund) verwendet werden. Denn [[Distance based Blending]] wird im Grunde nur verwendet, um einen gegebenen Hintergrund mit der Szene zu "vermischen", also den Übergang nicht erkennbar zu machen.<br>
 
Hier kann jeder beliebige Hintergrund (auch eine Skybox mit einer Landschaft als Hintergrund) verwendet werden. Denn [[Distance based Blending]] wird im Grunde nur verwendet, um einen gegebenen Hintergrund mit der Szene zu "vermischen", also den Übergang nicht erkennbar zu machen.<br>
 
Natürlich ist bei einer Landschaft als Hintergrund zu beachten, dass der Benutzer/Spieler den Eindruck erhält, dass er in einem eher kleinen Raum gefangen ist. Eine statische Landschaft als Hintergrund bietet sich also nur bei einer stark beschränktem Ausdehnung der Landschaft - bzw. des Outdoor Levels - an.
 
Natürlich ist bei einer Landschaft als Hintergrund zu beachten, dass der Benutzer/Spieler den Eindruck erhält, dass er in einem eher kleinen Raum gefangen ist. Eine statische Landschaft als Hintergrund bietet sich also nur bei einer stark beschränktem Ausdehnung der Landschaft - bzw. des Outdoor Levels - an.
Zeile 35: Zeile 35:
 
Generell wird ein Himmel meist am Anfang der Szene gezeichnet um beispielsweise [[Transparenz|transparente]] Objekte korrekt gegen den Himmer dar zu stellen. Üblicherweise wird auch das schreiben in den Depth-Buffer deaktiviert (siehe [[glDepthMask]]( 0 ) ), um die restliche Szene nicht zu beeinflussen. Der Himmel sollte meistens als Hintergrund dienen, und nur in den seltensten Fällen (bei Flugsimulatoren) als Bestandteil der Szene.
 
Generell wird ein Himmel meist am Anfang der Szene gezeichnet um beispielsweise [[Transparenz|transparente]] Objekte korrekt gegen den Himmer dar zu stellen. Üblicherweise wird auch das schreiben in den Depth-Buffer deaktiviert (siehe [[glDepthMask]]( 0 ) ), um die restliche Szene nicht zu beeinflussen. Der Himmel sollte meistens als Hintergrund dienen, und nur in den seltensten Fällen (bei Flugsimulatoren) als Bestandteil der Szene.
  
==Skybox==
+
==[[Skybox]]==
 
Eine Skybox ist ein Würfel welcher mit 6 vordefinierten Texturen gezeichnet wird. Ein beliebtes [[Tool]] zur generierung einer Skybox ist [http://www.planetside.co.uk/terragen/ Terragen]. Eine Skybox ist üblicherweise eine statische Umgebung. Das bedeutet es gibt keinerlei Bewegung im Hintergrund (nicht einmal die Wolken bewegen sich).
 
Eine Skybox ist ein Würfel welcher mit 6 vordefinierten Texturen gezeichnet wird. Ein beliebtes [[Tool]] zur generierung einer Skybox ist [http://www.planetside.co.uk/terragen/ Terragen]. Eine Skybox ist üblicherweise eine statische Umgebung. Das bedeutet es gibt keinerlei Bewegung im Hintergrund (nicht einmal die Wolken bewegen sich).
  
==Skysphere==
+
==[[Skysphere]]==
 
Hier wird eine Himmelstextur auf einer Kugel aufgetragen. Die Bewegung von Wolken oder Himmelskörpern ist hierbei um einiges einfacher als bei einer Skybox. Jedoch ist hier eine unterschiedliche Bewegung von einzelnen Wolken auch nur übere Umwege möglich.
 
Hier wird eine Himmelstextur auf einer Kugel aufgetragen. Die Bewegung von Wolken oder Himmelskörpern ist hierbei um einiges einfacher als bei einer Skybox. Jedoch ist hier eine unterschiedliche Bewegung von einzelnen Wolken auch nur übere Umwege möglich.
 +
 +
Außerdem sei an dieser Stelle auch noch auf den [[Skydome]] hingewiesen.
  
 
==Wolken als Textur==
 
==Wolken als Textur==
Zeile 46: Zeile 48:
 
==Realistische Himmelsdarstellung==
 
==Realistische Himmelsdarstellung==
 
Es gibt natürlich auch realistisch wirkende (die Behauptung "realistische" wäre hier wohl fehl am Platz) Himmelsdarstellungen. Eine davon ist [http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Cloud cover] dessen Algorithmus jedoch nur mit Pixel Shadern halbwegs effizient umzusetzen ist.
 
Es gibt natürlich auch realistisch wirkende (die Behauptung "realistische" wäre hier wohl fehl am Platz) Himmelsdarstellungen. Eine davon ist [http://freespace.virgin.net/hugo.elias/models/m_clouds.htm Cloud cover] dessen Algorithmus jedoch nur mit Pixel Shadern halbwegs effizient umzusetzen ist.
 +
 +
[[Kategorie:Anleitung]] [[Kategorie:Technik_oder_Algorithmus]]

Aktuelle Version vom 23. September 2005, 09:14 Uhr

Die Himmel-Darstellung ist einigen Eigenheiten unterworfen. Es kommen viele Entscheidungen über Qualität vs. Performance zum tragen, vor allem weil sich die Darstellung des Himmels nicht ausschließlich auf den Himmel bezieht. Betrachten wir zuerst die beiden möglichen Umgebungen wo ein Himmer und/oder Himmelskörper wie Sterne, Mond und Sonne gewünscht werden können:

  1. Indoor nach oben hin offen. Diese Möglichkeit wird von vielen Ego-Shootern genutzt und ist um einiges einfacher zu handhaben als die 2. Möglichkeit.
  2. Eine Landschaft ist weder nach unten, noch nach oben hin begrenzt. Beispielsweise könnte man am höchsten Berg stehen und hinab sehen. Dadurch ergeben sich einige Eigenheiten bei der Abgrenzung zwischen Himmel und Landschaft.

Betrachten wir der Einfachheit halber vorerst den 1eren Fall mit reinem Indoor.

Himmel für großteils Indoor Level

Ein Indoor Level ist örtlich sehr begrenzt. Das heißt im Gegensatz zu einem Outdoor Level fällt es überhaupt nicht unangenehm auf wenn immer der selbe Hintergrund zu sehen ist (selbst in Filmen hat man des öfteren für eine Szene immer genau den selben Hintergrund). Hier kann also ohne Gewissensbisse eine Skybox verwendet werden (wie beispielswiese in Halflife). Zusätzlich hat man den Vorteil, dass es keinen Übergang zwischen Hintergrund und Vordergrund gibt, sondern das dies eine scharfe Grenze ist (sei es durch eine Mauer oder durch eine steile Klippe).

Das Höchste der Gefühle bietet hier Quake 3, welches einen dynamischen Himmel bietet. Bei Quake 3 wird (meines Wissens) keine Skybox verwendet, sondern mehrere Ebenen über dem Betrachter. Das heißt der Himmel ist eine theoretisch unendliche Ebene, welche jedoch durch die sehr hohen Mauern des Indoor-Levels stark abgegrenzt wird. Um den Himmel etwas dynamischer zu gestalten werden hier ähnlich wie bei 2D-Scroll-Engines mehrere Ebenen verwendet, welche unterschiedlich schnell gescrollt werden. In 3D ist dies natürlich eine unterschiedlich schnelle Änderung der Texturcoordinaten der unterschiedlichen Ebenen.

Himmel für Outdoor

Bei Outdoor Landschaften erhält man im Normalfall zusätzlich das Problem von Popping wenn der Himmel nicht an die Landschaft angepasst wird. Hier hat man mehrere Möglichkeiten dies zu bewerkstelligen.

Himmel ohne Distance based Blending

Die einfachere Methode um die Landschaft oder das Outdoor-Level am Horizont gleich dem Himmel zu machen ist ein OpenGL-Nebel. Dieser Nebel ist Abhängig von der Entfernung eines Vertex oder auch eines gezeichneten Pixels (hier sind die OpenGL-Spezifikationen sehr offen). Der OpenGL-Nebel besitzt jedoch nur eine Farbe und standardmäßig wird der Alphawert nicht berücksichtigt. Es handelt sich also um eine Interpolation (welcher Art auch immer) vom realen Farbwart zu einem vorgegebenen Farbwert. Somit muss der Hintergrund (also der Himmel) bis in die maximale Höhe eines Landschaftspunktes genau die Farbe des Nebels aufweisen. Die Möglichkeiten sind also sehr beschränkt.

Skybox

Eine Skybox funktioniert nur dann, wenn der untere Teil der Skybox der Nebelfarbe entspricht. Natürlich ist eine Skybox statisch, kann also nur über Umwege animiert werden.

Skysphere

Eine Skysphere ist nur stark begrenzt für Outdoor-Levels ohne Distance based Blending einsetzbar, da eine Skysphere nur schwer auf den oberen Himmel-Bereich begrenzbar ist, sodass sie im unteren Bereich eine Konstante Farbe aufweist.

Wolken als Textur

Wolken die aus einzelnen Texturen gezeichnet werden sind jedoch sehrwohl möglich. Über die Qualität lässt sich wohl streiten (Microsoft hat hier das ein oder andere brauchbare Konzept für Flugsimulatoren entwickelt). Nichts desto trotz sind Wolken aus Texturen in einer vorgegebenen Minimalhöhe auch nicht optimal für die visuelle Darstellung.

Himmel mit Distance based Blending

Hier kann jeder beliebige Hintergrund (auch eine Skybox mit einer Landschaft als Hintergrund) verwendet werden. Denn Distance based Blending wird im Grunde nur verwendet, um einen gegebenen Hintergrund mit der Szene zu "vermischen", also den Übergang nicht erkennbar zu machen.
Natürlich ist bei einer Landschaft als Hintergrund zu beachten, dass der Benutzer/Spieler den Eindruck erhält, dass er in einem eher kleinen Raum gefangen ist. Eine statische Landschaft als Hintergrund bietet sich also nur bei einer stark beschränktem Ausdehnung der Landschaft - bzw. des Outdoor Levels - an.

DistanceBasedBlending.JPG
Skybox mit Distance based Blending einer Outdoor Szene

Himmelarten

Generell wird ein Himmel meist am Anfang der Szene gezeichnet um beispielsweise transparente Objekte korrekt gegen den Himmer dar zu stellen. Üblicherweise wird auch das schreiben in den Depth-Buffer deaktiviert (siehe glDepthMask( 0 ) ), um die restliche Szene nicht zu beeinflussen. Der Himmel sollte meistens als Hintergrund dienen, und nur in den seltensten Fällen (bei Flugsimulatoren) als Bestandteil der Szene.

Skybox

Eine Skybox ist ein Würfel welcher mit 6 vordefinierten Texturen gezeichnet wird. Ein beliebtes Tool zur generierung einer Skybox ist Terragen. Eine Skybox ist üblicherweise eine statische Umgebung. Das bedeutet es gibt keinerlei Bewegung im Hintergrund (nicht einmal die Wolken bewegen sich).

Skysphere

Hier wird eine Himmelstextur auf einer Kugel aufgetragen. Die Bewegung von Wolken oder Himmelskörpern ist hierbei um einiges einfacher als bei einer Skybox. Jedoch ist hier eine unterschiedliche Bewegung von einzelnen Wolken auch nur übere Umwege möglich.

Außerdem sei an dieser Stelle auch noch auf den Skydome hingewiesen.

Wolken als Textur

Hier wird zuerst der Himmel (durch Blauwerte wenn nicht gerade Nacht ist) dargestellt. Zusätzlich werden "unter" dem Himmel verschiedene Wolken durch texturierte Rechtecke dargestellt. Dies ist eine sehr gute Möglichkeit zur Darstellung eines Himmels, da er sehr viel Animation erlaubt, jedoch wird die Darstellung durch die Anzahl der Wolkentexturen begrenzt. Die Wolkentexturen müssen üblicherweise von Grafikern erstellt werden, wodurch sich die Anzahl auch in Grenzen hält.

Realistische Himmelsdarstellung

Es gibt natürlich auch realistisch wirkende (die Behauptung "realistische" wäre hier wohl fehl am Platz) Himmelsdarstellungen. Eine davon ist Cloud cover dessen Algorithmus jedoch nur mit Pixel Shadern halbwegs effizient umzusetzen ist.