Eigene Cubemaps erstellen: Unterschied zwischen den Versionen

Aus EEP Wiki
Wechseln zu: Navigation, Suche
K (Cubemap mit Gimp erstellen: Hinweis auf DxTex.exe)
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
 
Im [[Konzepte: Reflexion|Konzept-Artikel zu Reflexionen]] werden einige Hintergrundinformationen dazu geliefert.
 
Im [[Konzepte: Reflexion|Konzept-Artikel zu Reflexionen]] werden einige Hintergrundinformationen dazu geliefert.
  
Die Cube-Map kann man sich als die Textur eines großen Würfels vorstellen, der die ganze (3D-) Welt umspannt, und der von innen "tapeziert" ist.
+
Die Cube-Map kann man sich als die Textur eines großen Würfels vorstellen, der die ganze (3D-) Welt umspannt und der von innen "tapeziert" ist.
  
 
Für den Home-Nostruktor muss die Cubemap als DDS-Datei im Ordner <code>Resourcen\Parallels\Cubmaps</code> vorliegen.
 
Für den Home-Nostruktor muss die Cubemap als DDS-Datei im Ordner <code>Resourcen\Parallels\Cubmaps</code> vorliegen.
Zeile 20: Zeile 20:
 
Man findet aber auch im Internet gute Quellen für solche Cubemaps, z.B. unter http://www.humus.name/index.php?page=Textures.
 
Man findet aber auch im Internet gute Quellen für solche Cubemaps, z.B. unter http://www.humus.name/index.php?page=Textures.
  
Für den Rest dieses Artikels gehen wir davon aus, dass 6 gleich große, quadratische Bilder vorliegen.
+
Für den Rest dieses Artikels wird angenommen, dass 6 gleich große, quadratische Bilder vorliegen.
  
 
== Cubemap mit Gimp erstellen ==
 
== Cubemap mit Gimp erstellen ==
 
Generell kann man Cubemaps mit verschiedenen Programmen erstellen.
 
Generell kann man Cubemaps mit verschiedenen Programmen erstellen.
Mir ist jedoch nur der Weg über Gimp bekannt.
+
Bekannt ist vor allem die Erstellung mit Gimp. Mit dem Home-Nostruktor wird ein DirectX Texture Tool mitgeliefert, zu finden im Ordner Home-Nostruktor13/DxTex.exe, mit welchem ebenfalls Cubemaps erstellt werden können. Voraussetzung ist aber immer, dass man die entsprechenden Texturvorlagen bereits hat.
  
 
Daneben soll es zumindest für Adobe Photoshop ein geeignetes Plugin geben.
 
Daneben soll es zumindest für Adobe Photoshop ein geeignetes Plugin geben.
  
 
=== Benötigte Software ===
 
=== Benötigte Software ===
 +
Zunächst benötigt man Gimp (= Gnu Image Manipulation Program). Siehe [[Bildbearbeitung#GIMP]].
 +
 +
Außerdem benötigt man noch das DDS-Plugin für Gimp, das man unter https://code.google.com/archive/p/gimp-dds/downloads herunterladen kann.
 +
Allerdings sind hier die 32bit- und die 64bit-Version getrennt.
 +
Zusätzlich muss die Hauptversion von Gimp mit der Hauptversion des Plugins übereinstimmen, beispielsweise Gimp-2.x.x und Gimp-dds-2.y.y.
 +
Bei der Installation ist die dort dokumentierte Vorgehensweise zu beachten.
 +
 
=== Gimp-Projekt anlegen ===
 
=== Gimp-Projekt anlegen ===
 +
 +
Nun startet man Gimp und öffnet eine der 6 Würfelansichten für die Cubemap.
 +
 +
Anschließend öffnet man die übrigen Ansichten als neue Ebenen im bereits geöffneten Bild.
 +
 +
Bevor man ans Exportieren denken kann, muss man noch dafür sorgen, dass Gimp die Ansichten an die richtigen Stellen setzt.
 +
Dazu müssen die Ebenen passend benannt werden. Die Kennzeichnung muss im Namen der Ebene enthalten sein, der Name selbst kann aber länger sein.
 +
Die Reihenfolge der Ebenen ist nicht relevant.
 +
Folgende Varianten stehen zur Auswahl:
 +
 +
{| class="wikitable"
 +
|-
 +
!Kennzeichnung
 +
!Alternative 1
 +
!Alternative 2
 +
!Alternative 3
 +
|-
 +
|right
 +
| +x
 +
|positive x
 +
|pos x
 +
|-
 +
|left
 +
| -x
 +
|negative x
 +
|neg x
 +
|-
 +
|top
 +
| +y
 +
|positive y
 +
|pos y
 +
|-
 +
|bottom
 +
| -y
 +
|negative y
 +
|neg y
 +
|-
 +
|back
 +
| +z
 +
|positive z
 +
|pos z
 +
|-
 +
|front
 +
| -z
 +
|negative z
 +
|neg z
 +
|-
 +
|}
 +
 +
Für die Zuordnung hilft auch diese Darstellung:<br>
 +
[[Datei:Convention_cubemap_eep.jpg]]
 +
 +
Im Ebenen-Fenster von Gimp sehen die Ebenen-Namen beispielsweise so aus (hier benannt nach Alternative 2):<br>
 +
[[Datei:Cubemap-Ebenen.png]]
 +
 
=== Cubemap exportieren ===
 
=== Cubemap exportieren ===
 +
 +
Bevor die Cubemap nun exportiert wird, prüft man noch einmal alle Vorgaben:
 +
* Sind alle Ebenen gleich groß?
 +
* Sind alle Ebenen quadratisch?
 +
* Verwenden alle Ebenen dieselbe Farbtiefe und sind sie einheitlich mit oder ohne Alpha-Kanal?
 +
* Sind die Ebenen passend benannt?
 +
 +
Nun wählt man unter <code>Datei</code> &rarr; <code>Exportieren als ...</code>.
 +
 +
Man navigiert zum Zielordner <code>Resourcen\Parallels\CUBEMAPS</code> und wählt einen Dateinamen mit der Endung <code>.dds</code>.
 +
Gimp erkennt an der Dateiendung, dass eine DDS-Datei erzeugt werden soll, und öffnet folgenden Dialog:<br>
 +
[[Datei:Cubemap Gimp Export.gif]]
 +
 +
Wichtig sind hier folgende Einstellungen:
 +
# Für <code>Save:</code> muss <code>As cube map</code> ausgewählt werden.<br>Falls diese Einstellung nicht verfügbar (ausgegraut) ist, ist mindestens eine der Voraussetzungen nicht erfüllt.
 +
# Für <code>Compression:</code> ist eine Kompression zu verwenden, die EEP versteht, z.B. <code>None</code> oder <code>BC3 / DXT5</code>.
 +
# Bei <code>Mipmaps:</code> muss <code>No mipmaps</code> stehen.
 +
 +
Nach Anklicken der Schaltfläche <code>OK</code> wird die Cubemap im angegebenen Ordner unter dem angegebenen Namen erstellt.
  
 
== Cubemap im Home-Nostruktor verwenden ==
 
== Cubemap im Home-Nostruktor verwenden ==
Zeile 36: Zeile 117:
 
Die Cubemap wird in den [[Projekteigenschaften]] festgelegt.
 
Die Cubemap wird in den [[Projekteigenschaften]] festgelegt.
  
Im Abschnitt "Cubemap:" klickt man auf die Schaltfläche "..." und wählt die eigene Cubemap aus:<br>
+
Im Abschnitt "Cube-Map:" klickt man auf die Schaltfläche "..." und wählt die eigene Cubemap aus:<br>
 
[[Datei:Projekteigenschaften_Cubemap.gif]]
 
[[Datei:Projekteigenschaften_Cubemap.gif]]
  
Zeile 45: Zeile 126:
  
 
Auf einer stark spiegelnden Kugel kann das Ergebnis beispielsweise so aussehen:<br>
 
Auf einer stark spiegelnden Kugel kann das Ergebnis beispielsweise so aussehen:<br>
[[Datei:Cubemap auf Kugel.jpg]]
+
[[Datei:Cubemap auf Kugel.jpg|left]]
 +
Solch eine Kugel ist sicher kein guter Anwendungsfall für eine Cubemap:
 +
Wenn man diese Kugel auf eine Anlage stellt, wird man sofort sehen, dass sie nicht die aktuelle Umgebung widerspiegelt. Außer man baut gerade genau diesen Platz nach.
 +
 
 +
Solange aber die Spiegelung so schwach ist, dass sie eigentlich nicht unmittelbar auffällt, sondern nur bei Bewegung etwas über die spiegelnde Fläche huscht, und wenn dieses Etwas seinem Charakter nach ungefähr zur Umgebung passt, kann eine Cubemap zu einem realistischeren Eindruck beitragen.
 +
<br clear=all>
  
 
== Siehe auch ==
 
== Siehe auch ==
 
* [[Konzepte: Textur]]
 
* [[Konzepte: Textur]]
 
* [[Konzepte: Reflexion]]
 
* [[Konzepte: Reflexion]]
 +
* [[Bildbearbeitung]]
 
* [[Projekteigenschaften]]
 
* [[Projekteigenschaften]]
 
* [[Modelleinstellungen|Einstellungen der Instanzen]]
 
* [[Modelleinstellungen|Einstellungen der Instanzen]]

Aktuelle Version vom 13. Juli 2017, 18:27 Uhr

Was ist eine Cubemap und wozu dient sie?

Eine Cubemap stellt die Umgebung dar, die auf spiegelnden Oberflächen reflektiert wird. Im Konzept-Artikel zu Reflexionen werden einige Hintergrundinformationen dazu geliefert.

Die Cube-Map kann man sich als die Textur eines großen Würfels vorstellen, der die ganze (3D-) Welt umspannt und der von innen "tapeziert" ist.

Für den Home-Nostruktor muss die Cubemap als DDS-Datei im Ordner Resourcen\Parallels\Cubmaps vorliegen. Dabei wird die DDS-Datei auf spezielle Weise erstellt, um die 6 Ansichten in eine Datei zu packen.

Benötigte Bilder

Man benötigt also 6 Ansichten, die nahtlos aneinander passen, und die den 6 Seiten eines Würfels entsprechen. Um einen Würfel zu bilden, müssen diese 6 Ansichten jeweils quadratisch sein. Die Kantenlänge muss ein Vielfaches von 32 Pixeln sein.

Cubemaps neigen dazu, sehr groß zu werden, ohne dass ein Detailreichtum wirklich benötigt wird. Es ist daher sinnvoll, für die Kantenlänge jeder Ansicht 512 Pixel (entspricht der Default-Cubemap) oder 1024 Pixel (bereits recht großzügig) vorzusehen.

Der erste Schritt zum Erstellen einer eigenen Cubemap ist also das Beschaffen von 6 quadratischen Bildern, die nahtlos aneinander passen und zusammen eine vollständige Rundumsicht darstellen. Derartige Bilder kann man sich selbst aus hinreichend vielen Fotos zusammenbauen. Man findet aber auch im Internet gute Quellen für solche Cubemaps, z.B. unter http://www.humus.name/index.php?page=Textures.

Für den Rest dieses Artikels wird angenommen, dass 6 gleich große, quadratische Bilder vorliegen.

Cubemap mit Gimp erstellen

Generell kann man Cubemaps mit verschiedenen Programmen erstellen. Bekannt ist vor allem die Erstellung mit Gimp. Mit dem Home-Nostruktor wird ein DirectX Texture Tool mitgeliefert, zu finden im Ordner Home-Nostruktor13/DxTex.exe, mit welchem ebenfalls Cubemaps erstellt werden können. Voraussetzung ist aber immer, dass man die entsprechenden Texturvorlagen bereits hat.

Daneben soll es zumindest für Adobe Photoshop ein geeignetes Plugin geben.

Benötigte Software

Zunächst benötigt man Gimp (= Gnu Image Manipulation Program). Siehe Bildbearbeitung#GIMP.

Außerdem benötigt man noch das DDS-Plugin für Gimp, das man unter https://code.google.com/archive/p/gimp-dds/downloads herunterladen kann. Allerdings sind hier die 32bit- und die 64bit-Version getrennt. Zusätzlich muss die Hauptversion von Gimp mit der Hauptversion des Plugins übereinstimmen, beispielsweise Gimp-2.x.x und Gimp-dds-2.y.y. Bei der Installation ist die dort dokumentierte Vorgehensweise zu beachten.

Gimp-Projekt anlegen

Nun startet man Gimp und öffnet eine der 6 Würfelansichten für die Cubemap.

Anschließend öffnet man die übrigen Ansichten als neue Ebenen im bereits geöffneten Bild.

Bevor man ans Exportieren denken kann, muss man noch dafür sorgen, dass Gimp die Ansichten an die richtigen Stellen setzt. Dazu müssen die Ebenen passend benannt werden. Die Kennzeichnung muss im Namen der Ebene enthalten sein, der Name selbst kann aber länger sein. Die Reihenfolge der Ebenen ist nicht relevant. Folgende Varianten stehen zur Auswahl:

Kennzeichnung Alternative 1 Alternative 2 Alternative 3
right +x positive x pos x
left -x negative x neg x
top +y positive y pos y
bottom -y negative y neg y
back +z positive z pos z
front -z negative z neg z

Für die Zuordnung hilft auch diese Darstellung:
Convention cubemap eep.jpg

Im Ebenen-Fenster von Gimp sehen die Ebenen-Namen beispielsweise so aus (hier benannt nach Alternative 2):
Cubemap-Ebenen.png

Cubemap exportieren

Bevor die Cubemap nun exportiert wird, prüft man noch einmal alle Vorgaben:

  • Sind alle Ebenen gleich groß?
  • Sind alle Ebenen quadratisch?
  • Verwenden alle Ebenen dieselbe Farbtiefe und sind sie einheitlich mit oder ohne Alpha-Kanal?
  • Sind die Ebenen passend benannt?

Nun wählt man unter DateiExportieren als ....

Man navigiert zum Zielordner Resourcen\Parallels\CUBEMAPS und wählt einen Dateinamen mit der Endung .dds. Gimp erkennt an der Dateiendung, dass eine DDS-Datei erzeugt werden soll, und öffnet folgenden Dialog:
Cubemap Gimp Export.gif

Wichtig sind hier folgende Einstellungen:

  1. Für Save: muss As cube map ausgewählt werden.
    Falls diese Einstellung nicht verfügbar (ausgegraut) ist, ist mindestens eine der Voraussetzungen nicht erfüllt.
  2. Für Compression: ist eine Kompression zu verwenden, die EEP versteht, z.B. None oder BC3 / DXT5.
  3. Bei Mipmaps: muss No mipmaps stehen.

Nach Anklicken der Schaltfläche OK wird die Cubemap im angegebenen Ordner unter dem angegebenen Namen erstellt.

Cubemap im Home-Nostruktor verwenden

Ein Modell im Home-Nostruktor (also ein Projekt) kann immer nur eine Cubemap haben. Die Cubemap wird in den Projekteigenschaften festgelegt.

Im Abschnitt "Cube-Map:" klickt man auf die Schaltfläche "..." und wählt die eigene Cubemap aus:
Projekteigenschaften Cubemap.gif

Damit ist die Cubemap im Projekt registriert.

Wo die Cubemap für Reflexionen verwendet wird, entscheidet man durch die Einstellungen der Instanzen. Im Abschnitt "Einstellungen der KON-Datei" wählt man unter "Reflektion:" einen der verfügbaren Reflexionsgrade.

Auf einer stark spiegelnden Kugel kann das Ergebnis beispielsweise so aussehen:

Cubemap auf Kugel.jpg

Solch eine Kugel ist sicher kein guter Anwendungsfall für eine Cubemap: Wenn man diese Kugel auf eine Anlage stellt, wird man sofort sehen, dass sie nicht die aktuelle Umgebung widerspiegelt. Außer man baut gerade genau diesen Platz nach.

Solange aber die Spiegelung so schwach ist, dass sie eigentlich nicht unmittelbar auffällt, sondern nur bei Bewegung etwas über die spiegelnde Fläche huscht, und wenn dieses Etwas seinem Charakter nach ungefähr zur Umgebung passt, kann eine Cubemap zu einem realistischeren Eindruck beitragen.

Siehe auch