Im Grafikviewer kann eine Umgebungsszenerie gestaltet werden, welche in drei Bereiche gegliedert ist:
Skybox - In der Distanz platziertes 360°-Bild (Cubemap)
Boden - Textur welche auf der Bodenebene ausgebreitet wird
Spiegelung - Eine Environment-Textur welche bei spiegelnden Materialien reflektiert
Alle drei Bereiche können beliebig kombiniert werden, und schließen sich gegenseitig nicht aus.
Skybox
Mit einer Skybox lässt sich die leere, weiße Fläche im Hintergrund mit einem 360°-Bild austauschen:
Die Skybox besteht aus einer Cubemap und kann mit Interface-Methoden im Grafikviewer geladen werden.
Cubemap erzeugen
Folgende Webseite enthält eine umfangreiche Auswahl an Skyboxen, welche kommerziell frei verwendet werden dürfen:
Die empfohlenen Download-Einstellungen wären eine Auflösung von 8K sowie das Format 'HDR'. Mit folgender Webseite lässt sich dann das Format von 'HDR' auf Cubemap-PNGs umwandeln:
Empfohlene Einstellungen für die Konvertierung:
Face Resolution: 4096
Format: PNG
Seperate
Das Ergebnis der Konvertierung sind 6 PNGs, welche als Namensendung die Koordinaten für die Ausrichtung beinhalten. Diese dürfen nicht verändert werden. Die Namenskonvention wäre dann z.B. 'skybox_nx.png'.
Für eine Bessere Performance, empfiehlt es sich, die PNGs als JPGs mit Kompression nochmals zu konvertieren.
Skybox laden
Bei einer Skybox wird zwischen Vordergrund-Skybox und Hintergrund-Skybox unterschieden. Je nach Kameraausrichtung kann eine unterschiedliche Skybox gezeigt werden. Blickt man z.B. von außen auf eine Haustür kann eine andere Skybox verwendet werden, als wenn man von innen auf die Haustür blickt.
Um die Skybox im Grafikviewer zu laden, stehen folgende Interface-Methoden zur Verfügung:
ISS.DEFINESKYBOXES("SkyboxFront", "SkyboxBack")
Definiert die Bitmaps für die Skyboxen.
skyboxFront: Pfad zur Vordergrund-Skybox. Im Dateinamen sind Extension (d.h. ".jpg") und Postfixe ("_px", "_py" usw.) wegzulassen. Es können auch mehrere Pfade, getrennt durch "|", angegeben werden.
skyboxBack: Pfad zur Hintergrund-Skybox. Im Dateinamen sind Extension (d.h. ".jpg") und Postfixe ("_px", "_py" usw.) wegzulassen. Es können auch mehrere Pfade, getrennt durch "|", angegeben werden. Wenn ein Leerstring angegeben wird, wird keine Back-Skybox angezeigt. Wenn Vordergrund- und Hintergrund-Skybox gleich sind, muss sie beide Male angegeben werden.
Beispiel:
ISS.DEFINESKYBOXES("OBJ/Skybox1", "OBJ/Skybox2")
ISS.SHOWSKYBOX(SkyBoxType, forceImmediateTransition, graphicsView)
Definiert das Verhalten der Skyboxen für eine bestimmte Ansicht.
skyboxType: 0 = None, 1 = Sky, 2 = Lookthrough
forceImmediateTransition: Wenn "true", erfolgt die Übergang zwischen Front- und Back-Skybox ohne Überblendung.
graphicsView: Die Nummern der Grafiksicht, für die diese Einstellung gilt. Pipe-getrennte Liste möglich. (Leerstring wirkt sich dann auf alle Grafiksichten aus)
Beispiel:
ISS.SHOWSKYBOX(1, FALSE, "3|4")
Wenn man den 'SkyboxType' auf 'Lookthrough' stellt, dann wird die Skybox nur durch Materialien angezeigt, welche dafür speziell eingestellt wurden.
Typische Anwendungen wären Gläser, welche eine gewisse Transparenz besitzen:
Materialien können mit folgender Interface-Methode als 'Lookthrough-Material' eingestellt werden:
ISS.SETLOOKTHROUGHMATERIALS("glas1|glas2")
Boden
Stellt man einen Boden ein, so wird auf der Bodenebene eine Textur ausgebreitet:
Beim Boden wird zwischen Vordergrund-Boden und Hintergrund-Boden unterschieden. Je nach Kameraausrichtung kann ein unterschiedlicher Boden gezeigt werden. Blickt man z.B. von außen auf eine Haustür kann ein anderer Boden verwendet werden, als wenn man von innen auf die Haustür blickt.
ShowGround(frontGround, backGround, graphicsView)
Definiert die Böden für eine bestimmte Ansicht.
frontGround: Pfad zum Vordergrund-Boden. Im Dateinamen ist die Extension (d.h. ".jpg") wegzulassen. Es können auch mehrere Pfade, getrennt durch "|", angegeben werden.
backGround: Pfad zum Hintergrund-Boden. Im Dateinamen ist die Extension (d.h. ".jpg") wegzulassen. Es können auch mehrere Pfade, getrennt durch "|", angegeben werden. Wenn ein Leerstring übergeben wird, wird kein Hintergrund-Boden angezeigt. Wenn Vordergrund- und Hintergrund-Boden gleich sind, muss er beide Male angegeben werden.
graphicsView: Die Nummer der Grafiksicht, für die diese Einstellung gilt. Pipe-getrennte Liste möglich. (Leerstring wirkt sich dann auf alle Grafiksichten aus)
Beispiel:
ISS.SHOWGROUND("OBJ/Bodentextur1", "OBJ/Bodentextur1", "3|4")
Spiegelung
<In Arbeit>