# Transparenz (Computergrafik)

Transparenz (Durchsichtigkeit) bezeichnet in der Computergrafik Bildelemente, die die Inhalte darunter befindlicher Elemente ganz oder teilweise sichtbar lassen.
Die gegensätzlichen Begriffe Transparenz und Opazität (Undurchsichtigkeit) beschreiben dabei die identische Eigenschaft; hinzu kommen noch die semi-transparent genannten Abstufungen.

## Überblick

Bei der Kombination mehrerer Grafiken in einer Datei konnten ursprünglich nur vollständig deckende Elemente verwendet werden. Lagen zwei Elemente übereinander, wurde das unten liegende Element vollständig überdeckt. Anspruchsvoller ist hingegen die Realisierung von durchscheinenden Elementen. Hierbei ist für jedes Element eine Transparenz oder Opazität (abgeleitet von physikalischen Begriffen opak (lichtundurchlässig) und transparent (lichtdurchlässig, durchscheinend)) anzugeben, also das Maß dafür, wie stark die auf unteren Ebenen liegenden Inhalte überdeckt werden sollen.
Entsprechende native Transparenzen konnten früher nur in wenigen Bild-Dateiformaten gespeichert werden. Für die meisten anderen Formate musste eine Transparenzreduzierung vor der Ausgabe durchgeführt werden, bei der die transparenten Elemente auf Basis der voreingestellten Opazitätswerte auf eine Ebene „verflacht“ werden. Hierbei werden jedoch eventuell vorhandene Vektorelemente gerastert.
Modernere Vektor- (wie SVG, EPS und EMF) und Rastergrafik-Formate (wie PNG oder WebP) erlauben auch die Definition von Bildelementen als vollständig transparent oder speichern neben den Farbinformationen (R–G–B) auch noch einen Alphakanal. Inzwischen kann für beliebig viele übereinanderliegende Elemente beliebig oft das Maß der Durchsichtigkeit spezifiziert werden.
Bei der Darstellung am Bildschirm wie auch für den Druck müssen alle Transparenzinformationen für jeden Bildpunkt (Pixel) aufsummiert werden (wie auch die Farbinformationen).

## Zweidimensionale Realisierungen
### Transparenzmaske

Die einfachste und älteste Methode ist die Abspeicherung als separate Transparenzmaske, zunächst für Rastergrafiken (Bitmaps).
Dabei ist die Maske eine rechteckige Matrix, die für jeden Bildpunkt genau 1 Bit enthält. Die Bildgenerierung folgt dann für jede Bildposition folgender Regel:
* Wenn Transparenz-Bit gesetzt
** dann nimm Information des Hintergrundbildes
* sonst
** verwende das Vordergrundbild.
Die erste wichtige Anwendung trat im Zusammenhang mit Mauszeigern (Cursor) auf. Software und Grafik-Hardware können immer nur rechteckige Bereiche verarbeiten, also das kleinste Rechteck, das die Figur des Cursors (beispielsweise ein Pfeil oder eine Hand mit Zeigefinger) einschließt. Wird der Cursor nun über die Bildschirmoberfläche (Desktop) bewegt, muss möglichst schnell gerechnet werden. Dazu wird das Rechteck mit ungestörtem Hintergrund zwischengespeichert, dann das Cursor-Bild mittels Transparenzmaske mit dem Hintergrund kombiniert und angezeigt. Bewegt sich der Cursor weiter, wird das zwischengespeicherte ungestörte Hintergrundbild wiederhergestellt und die Prozedur für die neue Cursorposition wiederholt. Dieser Vorgang war bald ganz oder teilweise in die Hardware von Grafikkarten eingearbeitet worden, so dass der eigentliche Rechner (CPU) selbst damit nicht mehr belastet wurde.
Seit Windows 3 war die Technik der Transparenzmaske auch für die Microsoft-Icons verfügbar. In der .ICO-Datei wurde sowohl das (undurchsichtige) Bild im DIB/BMP-Format wie auch eine Matrix mit der Transparenzmaske gespeichert, so dass das Bild beliebig mit dem Desktop kombiniert werden konnte. Auch TIFF erlaubt die Definition von Transparenzmasken für die Kombination der Einzelbilder in diesem Containerformat.
Neben der älteren Bitmap-Transparenzmaske ist dieselbe Technik auch auf Flächen in (skalierbaren) Vektorgrafiken anwendbar; hier wird das separate Maskenobjekt mit logisch zusammenhängenden Bildobjekten (Primitiva, Layer, Group) verknüpft. Die resultierenden Effekte ergeben einen Blick durch ein Schlüsselloch oder ein Zuschneiden (clipping) des Vordergrundbildes. Dies gilt auch bei Kombination des ganzen Bildes in Misch- und Containerformaten (Metafiles) wie beispielsweise PDF oder auch in der Textverarbeitung mittels OpenDocument und Microsoft Word.
Die Zuordnung, ob der Wert "0" transparent und "1" opak bedeuten soll oder umgekehrt, ist in den verschiedenen Grafik-Formaten nicht einheitlich und kann bei Konvertierungen gelegentlich dazu führen, dass schwarze Rechtecke erscheinen oder Bildebenen anscheinend verschwunden sind.
Wenn von Software oder gar Hardware gelegentlich behauptet wird, sie könnten beliebige, nicht-rechteckige Bereiche handhaben, dann liegt intern eine Transparenzmaske zugrunde.

### Transparente Bildfarbe

Die erste Einbeziehung direkt in das Bild erfolgte durch eine Zuordnung, nach der eine der Bildfarben als transparent gelten soll.
Damit war eine der 16 VGA-Farben bzw. eine der 256 Farben einer Palette nicht mehr verfügbar.
Die wohl bekannteste Anwendung nach dieser Methode wurde beim Übergang vom GIF87a zu GIF89a im Graphics Interchange Format eingeführt. PNG bildete dies später nach, erweiterte es aber alternativ auch um den Alphakanal.
Diese Technik war in den 1990ern gebräuchlich; sie benötigte keine zusätzlichen Ressourcen an Speicher- und Übertragungskapazität und kam den Möglichkeiten der damals verfügbaren Hardware entgegen. Die Dateien sind sogar kleiner als bei Verwendung der gesonderten Transparenzmaske.

### Semi-Transparenz

Um semi-transparente Bildüberlagerung sowie eine größere Flexibilität und Gestaltungsmöglichkeit zu erhalten, wurden neben den beiden Extremwerten „voll-transparent“ und „voll-opak“ abgestufte Transparenzwerte eingeführt.
Dabei addieren sich die Verhältniswerte für Transparenz und Opazität immer zu 1 – beispielsweise ergeben 30 % Transparenz eine Opazität von 70 %. Der Transparenzwert gibt dann an, welcher Anteil an Information des Hintergrundbildes einfließen soll, die verbleibende Gewichtung kommt dem Vordergrundbild zu.
Hier ist die wichtigste Ausprägung der sogenannte „Alpha-Wert“, mit dem die drei RGB-Farbwerte (rot, grün, blau) um einen vierten Code erweitert wurden. Diese Kombination von vier Bytes wird meist als RGB/A oder auch aRGB bezeichnet, siehe Alphakanal. Der Farbwert kann dann den Bildelementen – sowohl einzelnen Pixeln wie auch (skalierbaren) Objekten der Vektorgrafik – zugewiesen werden.
Das „Alpha-Byte“ erlaubt 256 verschiedene Abstufungen, wobei "0" für „voll-transparent“ und "255" für „voll-opak“ (also deckend) steht; streng genommen ist es ein Opazitätswert.
Vorteilhaft am Alpha-Wert ist der Umstand, dass sich der Farbton des Bildelements nicht ändert, sondern nur seine Helligkeit. Dies ermöglicht sehr viel einfachere und schnellere Berechnungen und vereinfacht die Spezifikation durch den menschlichen Zeichner.
Neben dieser Bindung an einen RGB-Farbwert kann der Alpha-Wert (allein) auch einer ganzen Bildebene oder einem ganzen eingefügten Bild zugeordnet werden. Damit können Bildebenen logisch ein- und abgeschaltet werden:
* Wird eine Bildebene auf „voll-transparent“ geschaltet, ist sie scheinbar verschwunden;
* wird sie auf „voll-opak“ gesetzt, so hängt das Ergebnis von deren Bildelementen ab: Handelt es sich um RGB-Werte, dann ist nur dieses Bildelement im Vordergrund sichtbar; sind es RGB/A, dann hängt die Transparenz von diesen ab.
Auch eine semi-transparente Bildebene ist möglich: Sind die Bildelemente als RGB definiert, so wird gewissermaßen jedes Element einheitlich zu RGB/A erweitert; sind sie bereits RGB/A, dann werden beide Transparenzwerte miteinander multipliziert.
Schließlich kann auch eine Transparenzmaske statt des einfachen sichtbar/unsichtbar ebenfalls Alpha-Werte enthalten.

### Mehr als zwei Bildebenen

Es wird immer die Kombination der beiden vordersten Bildebenen betrachtet. Das jeweilige Hintergrundbild kann selbst als Überlagerungsbild zweier Bildebenen entstanden sein. Durch eine rekursive Verarbeitung – beginnend mit den beiden untersten Bildern – können beliebig viele Bildebenen kombiniert werden.

### Überlagerung von Farbbildern

Das transparente Überlagern von Farbbildern ist tückisch, insbesondere wenn die Bildebenen gegeneinander bewegt werden.
Meist wird die Farbmischung (also das Verhältnis von R, G und B zueinander) vom Vordergrundbild übernommen. Die dahinter liegenden Bildebenen liefern nur Grauwerte, die die Helligkeit der Vordergrundfarbe beeinflussen. Der Transparenzwert gibt dabei an, wie stark dieser Einfluss sein soll. Diese Methode wird gern verwendet, wenn auf einem Desktop ein Objekt (dargestellt durch Icon oder Miniaturbild) mit Drag and Drop verschoben werden soll. Die Konturen des Hintergrundes schimmern durch das bewegte Objekt hindurch und ermöglichen es, das gewünschte Zielgebiet sicher anzuvisieren.
Alternativ dazu kann in dieser Situation das im Vordergrund bewegte Objekt als Grauwert-Bild dargestellt werden und die Farbmischung wird von den hinteren Bildebenen übernommen. Der Transparenzwert fließt in die Berechnung der Helligkeit ein.
Werden jedoch bei gegeneinander bewegten Bildebenen die Werte der Farbkanäle R, G und B getrennt voneinander einfach arithmetisch ausgerechnet, kommt es zu einem psychedelischen Farbrausch und völlig unerwarteten und unvorhersagbaren Farben des Gesamtbildes.
Für statisch übereinander gelegte Bildebenen gibt es unterschiedliche Formeln, um beide Farbwerte zu berücksichtigen und nach Regeln der additiven oder subtraktiven Farbmischung eine resultierende Gesamtfarbe auszurechnen. Das RGB-Modell ist hier ungeeignet und es wird regelmäßig zur HSB-Darstellung gewechselt; die Sättigung S (Saturation) wie auch die Helligkeit B (Brightness) korrelieren dabei mit dem Opazitätswert. Ob dies im Einzelfall zu einem befriedigenden optischen Eindruck führt, muss vom menschlichen Betrachter beurteilt werden. Es entspräche der Sicht auf die Welt durch ein Farbdia hindurch; die Erwartung an diese Abbildung muss definiert werden.

### Einzelnes Bild

Der Transparenzwert hat eigentlich nur Sinn, wenn mehrere Bildebenen übereinandergelegt werden. Liegt nur eine einzige Bildebene vor, wird der Wert in der Regel ignoriert. Alternativ dazu wird er gelegentlich dazu benutzt, um dem Bild eine „Blässe“ zuzuordnen; bei Volltransparenz wäre es dann nicht sichtbar – eine nur selten sinnvolle Interpretation.

## Dreidimensional

Alle vorstehenden Erläuterungen beziehen sich auf 2-D-Bilder, das heißt Bildfolien werden unmittelbar übereinandergelegt.
In der 3D-Computergrafik können Objekte transluzente Materialeigenschaften besitzen. In der Volumengrafik bestehen Objekte aus Voxeln, die jeweils eine bestimmte Opazität besitzen; zur Darstellung (Bildsynthese, Rendering) solcher Objekte gibt es mehrere Möglichkeiten. Bei anderen Modellierungsarten werden die Materialeigenschaften einheitlich für das gesamte Objekt angewandt. Die Volumenstreuung wird hier oft durch eine Phasenfunktion mit Absorptions- und Streuungskoeffizienten modelliert. Das Lambert-Beersche Gesetz ist hier anwendbar: eintreffende Lichtstrahlen werden vom Medium exponentiell abgeschwächt. Die Volumenstreuung lässt sich mittels Monte-Carlo-Raytracing oder Photon Mapping rendern.

## Einzelnachweise und Anmerkungen

* ↑ TIFF: Tag 254