|
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
Seit Version A5.520 gibt es ein neues Sky System mit Sky-Entities. Das alte mit der Skybox hat aber weiter Bestand. Ich bin nun auch auf das neue System umgestiegen. Obwohl etliche Parameter für die "alte" Skybox im neuen Handbuch nicht mehr aufgeführt sind kann darauf nicht verzichtet werden, weil sie vom neuen System benutzt wird den Himmel abzubilden. Es ist also nicht möglich komplett auf das neue System umzusteigen. |
||||||||||||||||||||||||
|
Damit die Kollisionserkennung und Darstellung des Levels richtig funktioniert muß das gesamte Level von einem hollow Block umschlossen sein. Dieser Block muß eine Textur bekommen die das "sky" Flag erhält. Da ich meinen eigentlichen sichtbaren Himmel mit einer Sky-Entity erstelle, spielt der Inhalt der Textur für den Sky-Block aber keine Rolle. Er wird nie sichtbar sein. Bei mir ist das eine blaue 64x64 Pixel große *.pcx Datei. Die Form des hollow Blockes spielt ebenso überhaupt keine Rolle, auch wenn das viele anders sehen. Es reicht also ein einfacher großer ausgehöhlter Quader der das Level umschliesst um den Traumhimmel zu realisieren. |
||||||||||||||||||||||||
|
Es gibt 2 verschiedene Sky-Entitys. Zum einen in Sky-Sprite, also ein Bild des Himmels oder Himmelskörpers zum anderen ein Sky-Modell, ein Modell des Himmels oder Himmelskörpers. |
||||||||||||||||||||||||
|
Oft habe ich im Forum Beispiele eines Sky-Modells gesehen, einer Kugel bei der die Himmelstextur innen aufgespannt war. Aber mir hat nie eines richtig gefallen. Meiner Meinung nach eignen sich die Sky-Modelle nur für Sternenhimmel oder als Modell für einen Himmelskörper. Den eigentlichen Himmel mit dahinziehenden Wolken würde ich mit Sky-Sprites erstellen. Soll eine Sonne oder Mond mit Aura e.t.c dargestellt werden ist wohl auch ein Sprite-Entity vorzuziehen, während Mond oder Planeten auch ganz gut als Sky-Modelle darstellbar sind. Ist bei dieser Sky-Entity das dome Flag gesetzt wird das Himmelsbild von der Engine auf eine imaginäre Himmelskuppel projiziert. Aus diesem Grunde erübrigen sich Kugel- oder Halbkugelmodelle. Sollten Modellkugeln benutzt werden um einen Levelhimmel zu erstellen, dann muß dieses Modell so groß skaliert werden das es im Radius mindestens so groß ist wie die Gesamtlänge des Levels. Außerdem sollten die Flächen der Kugel alle gleich groß sein. Dafür gibt es die sogenannte Geosphere. 3DStudio MAX stellt eine Reihe solcher Spheren zur Verfügung. Mit MED ist solch eine Kugel nicht machbar. Auf der Downloadseite habe ich ein paar solcher Kugeln mitsamt Mapping als "balls.exe" abgelegt. |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
Um eine Sky-Entity einzusetzen benötigt man ein Script. Dieses wird mit in die Start wdl (Die wdl mit der das Spiel startet) hineingeschrieben. Hier in diesem Beispiel ist zu sehen, das ich zwei Sky-Entities nach der function init_environment() hineingesetzt habe. In der init_environment() Funktion kann natürlich noch mehr stehen, aber hier steht nur sky_curve = 2;. Diese Variable verändert die Steigung aller Himmel die verwendet werden. Je größer die Zahl desto weiter zieht der Himmel in die Ferne. Ich wollte sie mit in die Sky-Entity Funktion einbinden, das gab bei mir aber eine Fehlermeldung. Wahrscheinlich weil es eine globale Variable ist. |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
Es können natürlich noch mehr Sky-Entities erzeugt werden. Außerdem gibt es noch weitere Möglichkeiten den Himmel zu gestalten. Tag- und Nachtmodus u.s.w. Da ich das nicht benötige hier keine Erklärungen dazu. Werden mehrere zum Teil durchscheinende Sky-Entities erstellt sollte die Comercial Version vorhanden sein. Hier besteht die Möglichkeit mit der Variablen d3d_alphadepth = 32 die Alphakanalbilder mit voller Farbtiefe darzustellen. |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
Die Kugelprojektion des Himmels bewirkt eine Verzerrung in der Nähe des Horizontes. Diese kann bis jetzt noch nicht vermieden werden und muß, wenn sie stört, verdeckt werden. Das erreicht man mit einer weiteren Sky-Spriteentity, die aber das scene Flag anstatt dome erhält. Damit kann der verzerrte Himmel verdeckt werden. |
||||||||||||||||||||||||
|
Aber was tun wenn ein weit entfernter Horizont, der dazu noch ziemlich niedrig ist, realisiert werden soll? Ich benötige die Illusion eines weit entfernten Ufers. |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||