User Tag List

Ergebnis 1 bis 17 von 17

Thema: 3D-Skybox

  1. #1
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    26
    Beiträge
    4.198
    Blog-Einträge
    1
    Renommee-Modifikator
    20

    3D-Skybox

    Wer kennt es nicht, wir haben eine Map erstellt, deren begehbares Terrain an eine Skybox grenzt, oder durch Zäune und/oder unrealistische Wände von der Außenwelt abgeschnitten ist. Das könnte etwa so aussehen:



    Da hier ein normaler Übergang "zum Himmel" nicht gerade schön wirken würde, wird man auf die Idee kommen, hinter dem Zaun noch weiterzubauen.

    Dennoch: Bei solchen Szenarien ist es nicht gerade von Vorteil, wenn man einfach außerhalb der Map weiterbaut.
    Der Grund dafür ist simpel, es müssen größere Flächen und mehr Leaves berechnet werden.

    Hierfür hat sich Valve eine ganz besondere Lösung einfallen lassen.

    Die 3D-Skybox


    Die 3D-Skybox ist eine im Maßstab verkleinerte Welt, die uns massig Ressourcen spart.
    Diese wird dann mithilfe eines Multiplikators jedoch im Spiel auf "Normalgröße" gebracht.

    //Anmerkung: Anfänger und Neulinge können die Spoiler ignorieren.

    Spoiler für FAQ und oft falsch gemachtes:


    Skyboxgröße und Transformations Werte.

    Normalerweise werden die Werte 4 oder 16 gewählt.
    Man ermittelt die Werte für das transformieren folgendermaßen:
    1/Wert. Bei 1/16 wäre das 0.0625

    Zweites light_environment

    Ein zweites light_environment ist nicht notwendig. Die Werte des ersten werden übernommen.

    Optimisation der 3D-Skybox
    -Eine 3D-Skybox ist dann optimal für den Mapper, wenn sie kein Leak produziert, sprich die Außenwände Worldbrushes sind.
    -Ansonsten sind kaum Optimierungsarbeiten erforderlich. Natürlich sollte die Skybox nicht zu aufwändig sein und nicht sichtbare Flächen mit Nodraw versehen werden.
    -Um die Compilezeit zu verkürzen kann man getrost alle Brushes innerhalb der 3D-Sky zu func_details machen, da Leaves hier nicht benötig werden.

    Probleme
    -Wenn 3D-Skybox und normale Welt sich überlappen kann es zu unschönen Effekten kommen. Beachtet also, dass eure 3D-Skybox immer erst hinter oder über eurer Map beginnt. Es gilt die Regel, dass die 3D-Skybox immer hinter den Brushes der eigentlichen Map gerendert wird.
    -Schatten von Brushes oder Objekten der 3D-Skybox können auch in der normalen Map auftreten. Dies gilt ebenso bei Nodrawbrushes.



    Wie schon angeschnitten sollte alles in eine 3D-Skybox gepackt werden, was sich außerhalb der eigentlichen Map befindet. Die 3D-Skybox funktioniert nach einem einfachen Prinzip.

    Spoiler für Erklärung des Prinzips:

    Es lässt sich etwa folgendermaßen erklären:
    Bei normalen Skyboxen wird eine Textur auf die Platzhaltertexturen (bei euch tools/toolskybox) als täuschend echter Himmel projeziert.

    Bei einer 3D-Skybox ist es ähnlich, der einzige Unterschied ist, dass eine Art Panorama-Kamera alles, das sie umgibt auf die Platzhalter Textur projeziert.

    Ihr müsst das Prinzip nicht 100% genau verstanden haben, denn ich werde euch in diesem Tutorial Schritt für Schritt erklären, wie ihr das selbst hinbekommt.


    Kommen wir also zur Durchführung.

    Als erstes platziert ihr das Entity "sky_camera" genau in der Mitte der Map. Das bedeutet, dass ihr es an der Koordinate 0:0:0 oder dort, wo die 3 Striche (Rot, Grün, Blau) aufeinandertreffen in die Map setzt.


    Nachdem ihr die Kamera platziert habt, habt ihr die Möglichkeit euch Orientierungspunkte herauszugreifen, um die herum ihr euch später eure "3D-Skybox" baut. Am besten nehm ihr dazu Seitenwände und bereits vorhandene Begrenzungen.

    Alles was ihr hier als sinnvoll erachtet wählt ihr zusammen mit der sky_camera (strg+Mausklick) aus und copy&pastet es irgendwo ins Void.





    Bitte beachtet, dass Models später nicht wirklich weiterhelfen, warum seht ihr später am Beispiel der Zäune, die ich hier aber zu Anschauungszwecken mitkopiert habe.

    Nachdem ihr alles kopiert habt, könnt ihr die sky_camera am Punkt 0:0:0 wieder löschen, die neue lasst ihr allerdings dort wo sie ist.

    Der nächste Schritt ist, dass wir einen Maßstab wählen, in dem wir die 3D-Skybox verkleinern. Dies ist notwendig, da sich 3D-Skyboxen extrem weit ziehen können, wenn sie 1:1 umgesetzt werden. Außerdem sind bei Skyboxen die Details, wegen der großen Entfernung des Betrachters, nicht so wichtig.

    Als Beispiel: Industrieanlagenmodels für die Skybox bei CS:S sind meistens im Maßstab 1:16 gehalten. Die Palmenblätter und Palmen auf Dust2 im Maßstab 1:4.

    Ich wähle hier den Maßstab 1:16.
    Um den Maßstab korrekt umzusetzen, wählt ihr nun die "sky_camera" aus und tragt bei unter Properties bei "Scale" den Wert "16" ein.


    Spoiler für Erklärung der weiteren Eigenschaften der sky_camera:


    -Fog Enable: Yes aktiviert eine Art Nebel, der in konzentrischen Kreisen ohne starke Übergänge stärker wird und letztendlich weit Entfernte Gebiete ausblenden kann.
    -Fog Blend: Bildet einen Übergang zwischen dem Nebel innerhalb der Map (z.B. env_fogcontroller) und dem Nebel der 3D-Sky.
    -Use Angles for Fog Dir: Macht den Nebel abhängig von Pitch/Yaw/Roll.
    -Primary Fog Color: Die Primärfarbe des Nebels (meistens Weiß-Grau)
    -Secondary Fog Color: Die Sekündärfarbe des Nebels.
    -Primary Fog Dir: Stellt den Winkel für die Farbberechnung des Nebels ein (In dieser Richtung wird die "Primary Fog Color", in der entgegengesetzten die "Secondary Fog Color" verwendet).
    -Fog Start (In Units): Die Entfernung, in der der Nebel mit einer sehr geringen Dichte beginnt.
    -Fog End (In Units): Die Entfernung, in der der Nebel seine maximale Dichte erreicht (Zwischen Fog Start und End wird der Nebel stufenlos immer dichter).


    Anschließend wählt ihr euren vorher kopierten Skyboxanhaltspunkt (alle Mauern und die sky_camera) aus und ändert seine Größe auf ein Sechzehntel.
    Dies geht durch das Transformation-Tool (Tools -> Transform; oder Strg+M), das ihr öffnet, "scale" wählt und bei allen Achsenabschnitten euren Multiplikator eintragt. Bei 1:16 wäre das 0.0625 (1/16 = 0.0625). Danach drückt ihr auf OK.


    Jetzt seht ihr auf meinem Screenshot, warum Models nicht wirklich Sinn machen:
    Sie skalieren sich nicht mit.


    Ich lösche sie an dieser Stelle einfach, da sie uns nichtmehr weiterhelfen.

    Jetzt könnt ihr rund um eure Wände/Markierungen im Maßstab 1:16 eure kleine Welt aufbauen. Alles wird später dank des Multiplikators in der "sky_camera" 16-fach vergrößert auf die Skybox projeziert.
    Wenn ihr Models benutzen wollt, sucht im Modelexplorer am besten nach "sky", dort gibt es eine Vielzahl von Models im Maßstab 1:16.
    Beachtet auch, dass ihr die Texturen ebenfalls im Maßstab 1:16 skaliert, da diese sonst sehr gestreckt aussehen.



    Seid ihr fertig könnt ihr die Markierungen, die ihr am Anfang kopiert und skaliert habt, wieder löschen. Allerdings müsst ihr die sky_camera übriglassen.

    Passt auf, dass in eurer 3D-Skybox kein Leak auftritt, denn alles dort kann, wie in der normalen Map auch, leaken.
    Solltet ihr viele Brushes verarbeiten so könnt ihr alle (bis auf die Seitenwände zum Void) zu einem func_detail machen, was die vvis Berechnung immens beschleunigt und in diesem Fall keine FPS-Einbrüche zur Folge hat. Ein zweites light_environment ist nicht notwendig, da die Skybox die Lichtdaten des ersten verwendet.

    Jetzt könnt ihr eure Map kompilieren und nachsehen ob alles funktioniert hat.
    Sollte alles glattgegangen sein, sollte das Ergebnis so aussehen:






    Download Beispielmap.



    // FAQs und häufige Probleme bei funktionierender Skybox findet ihr ganz oben im Spoiler unter der Überschrift!
    Geändert von BaShoR (17.04.2011 um 13:11:56 Uhr)

  2. #2
    Super-Duper-Moderator Avatar von Ricetlin
    Registriert seit
    18.06.2010
    Beiträge
    2.694
    Renommee-Modifikator
    26
    Schickes Tut, hatte allerdings gehofft du würdest noch mehr auf die einzelnen Settings der sky_camera eingehen.

    Mfg
    Raistlin

  3. #3
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    26
    Beiträge
    4.198
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    //Reineditiert!
    Geändert von BaShoR (17.04.2011 um 00:18:50 Uhr)

  4. #4
    Neues Mitglied
    Registriert seit
    16.03.2011
    Beiträge
    12
    Renommee-Modifikator
    0
    schöne sache! war mir als anfänger unbekannt bisher

  5. #5
    Moderator Avatar von Dmx6
    Registriert seit
    18.06.2010
    Ort
    Zwischen Frankfurt und Darmstadt
    Alter
    26
    Beiträge
    948
    Blog-Einträge
    3
    Renommee-Modifikator
    17
    Schönes Tutorial. Ich vermisse nur die erklärung der vorteile der 3D Skybox. Nämlich das die 16 fach kleinere 3d Skabox Map in unserer Map dann 16 mal größer projiziert wird, und wir so ressourcen sparen.
    Das wurde mir im dem Text nie richtig erläutert. Oder ich habs überlesen.

  6. #6
    Neues Mitglied Avatar von Redline
    Registriert seit
    11.10.2010
    Beiträge
    11
    Renommee-Modifikator
    0
    Kurze Frage: Funktioniert das Transform Tool bei Displacements nicht?

  7. #7
    Moderator Avatar von Campeòn
    Registriert seit
    20.06.2010
    Ort
    Bielefeld
    Beiträge
    2.173
    Blog-Einträge
    1
    Renommee-Modifikator
    19
    Doch, es funktioniert. Jedenfalls bei mir.
    Because we do not know when we will die, we get to think of life as an inexhaustible well, and yet everything happens only a certain number of times ... And a very small number really. How many more times will you remember a certain afternoon of your childhood ... an afternoon that is so deeply a part of your being that you can't even conceive of your life without it? Perhaps four or five times more. Perhaps not even that. How many more times will you watch the full moon rise? Perhaps 20. And yet it all seems limitless.

  8. #8
    Neues Mitglied Avatar von Redline
    Registriert seit
    11.10.2010
    Beiträge
    11
    Renommee-Modifikator
    0
    Hm komisch... bei meinen Displacements funktionierts nicht... habs auch mal bei einem einzelnen Discplacement versucht und klappte auch nicht :/

  9. #9
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    26
    Beiträge
    4.198
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    Naja, der Sinn ist auch nicht, hier Displacements zu resizen, sondern wie gesagt die Abgrenzungen der Map im Maßstab 1:16 als Anhaltspunkte zu haben

  10. #10
    Neues Mitglied Avatar von Redline
    Registriert seit
    11.10.2010
    Beiträge
    11
    Renommee-Modifikator
    0
    Tja meine Map Abgrenzungen sind aber Displacements meine map ist eine große Wüste

  11. #11
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    26
    Beiträge
    4.198
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    Bei Displacements ist das uach recht erschwert, das einfachste ist da

    a) Abzweigungen am Rand der Map zu machen (in deinem Fall ein Felsvorsprung, Häuser...) um so die Sicht des Spielers an den Rand der Map zu verwähren
    b) Die Map größer machen, also den nicht begehbaren Raum größer, und dann einfach eine Skybox mit Wüstensetting welches die Dünen dann mit einer Textur faked

    Das wären so die Möglichkeiten die mir da einfallen

  12. #12
    Neues Mitglied Avatar von Redline
    Registriert seit
    11.10.2010
    Beiträge
    11
    Renommee-Modifikator
    0
    Jo danke für die Tipps... stelle aber auch grad fest, dass das Transform Tool auch bei normalen Brushes nicht funktioniert also buggt mein Transform Tool ein bisschen rum..

  13. #13
    Administrator Avatar von BaShoR
    Registriert seit
    18.06.2010
    Ort
    Oberbayern
    Alter
    26
    Beiträge
    4.198
    Blog-Einträge
    1
    Renommee-Modifikator
    20
    Hast dus wie oben beschrieben gemacht (Punkt bei Scale/Alle Werte eingetragen)?


  14. #14
    Neues Mitglied Avatar von Redline
    Registriert seit
    11.10.2010
    Beiträge
    11
    Renommee-Modifikator
    0
    Yep habe ich.

  15. #15
    Mitglied Avatar von MoOnLiGht
    Registriert seit
    18.06.2010
    Ort
    Koblenz (Umgebung)
    Beiträge
    283
    Renommee-Modifikator
    8
    Du hast den scale Wert für Texturen vergessen,
    der ist nämlich anders:

    (1:16)
    Map: 0.0625
    Texturen: 0.015625

    Wurde mir jedenfalls mal gesagt in einem früheren Post.

  16. #16
    Neues Mitglied Avatar von Redline
    Registriert seit
    11.10.2010
    Beiträge
    11
    Renommee-Modifikator
    0
    Ne habe den Fehler schon gefunden gehabt Hatte 0,0625 anstatt 0.0625 eingetragen... also mit nem "," *hust*

  17. #17
    Stammgast Avatar von Nilo
    Registriert seit
    28.06.2010
    Beiträge
    1.190
    Renommee-Modifikator
    15
    @Moon: man muss die Texturwerte ja eig sowieso alle einzeln durch 16 teilen. Daher auch dein Wert (0.015625), das ist nämlich der standardmäßige X-und Y-Scale-Wert, also 0.25, durch 16 geteilt -> 0.25:16=0.015625
    Reden ist Schweigen, Silber ist Gold

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
[email protected]