TextureMapping.png Der Begriff Musterabbildung oder englisch texture mapping bezeichnet ein Verfahren der 3D-Computergrafik. Es dient dazu, die Oberflächen dreidimensionaler Oberflächenmodelle mit zweidimensionalen Bildern – sogenannten „Texturen“ – und Oberflächeneigenschaften auszustatten. Texturen lassen computergenerierte Bilder detailreicher und realistischer erscheinen, ohne dass das zugrundeliegende Modell selbst verfeinert werden muss.
In 3D-Modellen mit vielen Polygonen wird oft eine einzige Textur für das ganze Modell verwendet, sodass jeder Punkt des Modells nur einen Satz Texturkoordinaten (und nicht unterschiedliche Texturkoordinaten für die verschiedenen Polygone, die diesen Punkt verwenden) hat, weil dieses Format für hardwarebeschleunigte 3D-Grafik und auch für den Designer des 3D-Modells besonders günstig ist.
Bei der einfachsten Variante des Texture Mapping werden die Texturkoordinaten entlang der schon vom 3D- in den 2D-Raum transformierten Randlinien des Polygons linear interpoliert. Dann werden sie entlang einer Bildschirmzeile (oder -spalte) von Randlinie zu Randlinie linear interpoliert, bei jedem Pixel wird der Farbwert des zu den interpolierten (u,v)-Koordinaten gehörenden Texels (Bildpunkt in der Textur) übernommen.
Um dieses Problem zu lösen, werden meist anstatt der Texturkoordinaten u und v die Werte von u/z und v/z und weiters auch 1/z linear interpoliert, wobei z die Koordinate im 3D-Raum in Sichtrichtung ist (z bzw. 1/z muss daher zu jedem projiziertem Punkt des Polygons gespeichert werden). Um für einen Pixel die Texturkoordinaten zu berechnen, müssen nun Divisionen ausgeführt werden:
u = (u/z)/(1/z)
v = (v/z)/(1/z)
Weil Divisionen relativ langsame Operationen sind, werden sie meist nicht bei jedem Pixel gemacht; stattdessen werden u und v nur bei wenigen Pixeln, die auf das Polygon gleichmäßig verteilt sind, so berechnet. Bei allen anderen Pixeln werden die Werte von u und v zwischen denen jener Pixel interpoliert. So kann man die störenden Effekte stark reduzieren, ohne dass all zu viel Rechenleistung dafür aufgewendet werden muss.
Das einfachste und schnellste solche Verfahren besteht darin, einfach den nächstliegenden Texel auszuwählen; man nennt dies nearest neighbor („nächster Nachbar“) oder auch point sampling („punktweise Stichprobe“). Beim aufwändigeren bilinearen Filtern wird der gesuchte Farbwert aus den vier umliegenden Texeln in Abhängigkeit ihrer Entfernung interpoliert, man nennt dies einen „Box-Filter“. Noch aufwändigere Filter, etwa der Gauß-Filter, ziehen weitere Texel in die Berechnung mit ein oder gewichten die Entfernung anders. Da ungeeignete Interpolationsverfahren zu unerwünschten Alias-Effekten führen – beispielsweise Moiré-Effekte –, muss ein Kompromiss zwischen Geschwindigkeit und Artefaktbildung gefunden werden.
Stattdessen verwendet man MIP-Maps. Diese enthalten neben der Originaltextur Kopien der Textur mit abnehmender Größe, sogenannte „Detailstufen“ (level of detail, LOD). Man wählt daraus die größte Detailstufe aus, die den gewöhnlichen Zustand „Pixel kleiner als Texel“ wieder herstellt, und arbeitet darauf wie auf der Originaltextur. Zusätzlich zu den bisherigen Interpolationsverfahren bietet sich hier die Möglichkeit, zwischen zwei aufeinanderfolgenden Detailstufen eine weitere lineare Interpolation durchzuführen; in Kombination mit der bilinearen Filterung erhält man so eine trilineare Filterung. Der Einsatz von MIP-Maps in Verbindung mit point sampling reduziert Alias-Effekte bereits stark, in Verbindung mit aufwändigeren Filtern und Interpolation zwischen den Detailstufen können sie auf ein Minimum reduziert werden.
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Texture Mapping".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world