Saubere 16bit Grafiken erstellen
Januar 2004 by Michael Brempel
Email | Homepage


Einleitung
Dieses kleine Tutorial widmet sich der Optimierung von Grafiken für 16bit. Dieses Farbspektrum ist im Spielebereich noch einigermaßen weit verbreitet. Bei der Erstellung von Grafiken für eine 16bit-Engine sind für die Grafiker einige Dinge zu beachten, damit ihre Bilder im Spiel auch genauso aussehen wie sie sie zuvor in ihrer 32bit-Grafikumgebung als 24bit-Bmp erstellt haben.

Saubere 16bit Grafiken erstellen


Grundlagen
Es gibt im Grafikbereich einige verschiedene Farbtiefen, die angeben mit wieviel Bits der Farbwert eines Pixels gespeichert werden soll. Je mehr Bits pro Farbwert zur Verfügung stehen, desto mehr unterschiedliche Farben lassen sich codieren und desto feiner sind auch die Farbnuancen darstellbar.
Es gibt folgende Standards:
- 1bit für Monochrombilder (schwarz oder weiß)
- 8bit als Graustufen-Map(256 Stufen) oder als Palettenbild(256 Farben)
- 16bit den Farbkanälen RGB stehen je 5:6:5 Bits zur Verfügung ergibt 65.536 Farbwerte
- 24bit RGB erhalten je 8Bit zur Farbcodierung ergibt insg. 16Mio Farbwerte(Bmp-Standard)
- 32bit TrueColor (CMYK oder RGBA)
Die Farbtiefe der Windows-Oberflächen lässt sich über die Anzeigeneinstellungen je nach Grafikkarte anpassen. Standardmäßig wird in der Grafik die 24 oder 32bit(TrueColor)-Darstellung verwendet.
Die Standard-Bittiefe im Bmp-Format beträgt 24bit (8:8:8 für R:G:B). Viele Engines verarbeiten jedoch intern aus Performancegründen nur 16bit-Grafiken. Grafiken mit höherer Bittiefe werden dabei runtergesampelt. Das fällt vor allem bei Farbverläufen und soften Oberflächen sowie Himmel, Stoffen etc auf, die dann unschöne Stufeneffekte zeigen, die in der Ursprungsgrafik so jedoch nicht vorhanden sind. Das liegt daran, dass nicht alle Farben des 24bit-Spektrums im 16bit-Farbbereich vorhanden sind, so dass die nächst passende Farbe verwendet wird(siehe Abbildung oben). Diese Stufeneffekte lassen sich vermeiden, indem man das Farbspektrum der 24bit-Grafik zuvor mittels Rasterung(Dithering) an das 16bit-Spektrum anpasst. Standardmäßig ist diese Funktion jedoch erstaunlicherweise in den meisten Grafikprogrammen nicht vorhanden. Es gibt jedoch das Freewaretool 'SlowView', dass eine Farbkonvertierung anbietet sowie das 'Screenshot-Verfahren', dass ich hier beschreiben möchte.

Rasterungsverfahren 'Screenshot-Methode'
Nachdem wir unsere Grafik als 24bit-Bmp abgespeichert haben wechseln wir die Windows-Farbtiefe in den Anzeigeneinstellungen auf 16bit. Als nächstes öffnen wir unser Bild wieder im Größenverhältnis 1:1 (eventuell muss man das Grafikprogramm neu starten oder man verwendet einen externen Viewer) und drücken die Print-Taste. Wir wechseln wieder in den 32bit-Modus und holen den Screenshot aus dem Clipboard. Das Bild weist nun eine Rasterung auf und alle Farben liegen im 16bit-Spektrum. Jetzt können wir das Bild abspeichern und genau so werden wir es dann auch in unserer 16bit-Engine zwieder antreffen.

Dieser Vorgang macht natürlich auch Sinn, wenn man 8bit-Palettenbilder für eine 16bit-Engine erzeugt. Zwar kann man aus einem 24bit-Bmp ein Palettenbild erzeugen, jedoch kommen in der Palette dann auch Farbwerte vor, die im 16bit-Farbbereich nicht vorkommen. Das zuvor bearbeitete Bild können wir in ein 8bit-Palettenbild umwandeln, dass dann ebenfalls ohne Farbverfälschungen in unserer 16bit-Engine dargestellt wird. Eine Konvertierung in ein Palettenbild mittels Dithering sollte in allen gängigen Grafikprogrammen zur Verfügung stehen.



Allgemein:
- 24bit-Farben über Ditheringmethode in 16bit-Farben umwandeln
- zB über Screenshot-Methode

Viel Spass weiterhin...
Michael 'Mechiil' Brempel