2016-04-19 14 views
1

Ich spiele seit einiger Zeit mit opengl und ich fand Texturierung sehr interessant. Ich habe einen Würfel mit einem ausgewählten Gesicht, ich kann dieses Gesicht zu einem 2D-Bild projizieren und die Farbe in diesem Bild auf das 3D-Modell abbilden. Wie funktioniert das? Welcher Algorithmus ist daran beteiligt? In Software wie Blender können wir live die Vertices in der 2D-Projektion bearbeiten, die automatisch auf das 3D-Modell abgebildet wird. Es gibt auch Optionen auszupacken, Cube-Projekt, Zylinder Projekt usw.Wie funktioniert OpenGL-Texturierung?

enter image description here

Ich bin nicht sicher, ob dies der richtige Ort ist, eine solche Frage zu stellen. Aber ich frage es aus Neugier.

Antwort

3

Texturierung ist im Grunde die Zuordnung von Texeln (das Pixel einer Textur) zu Fragmenten (ein Pixel, das das Bild der gerenderten Geometrie auf dem Bildschirm zusammensetzt). Welches Texel auf ein bestimmtes Fragment abgebildet werden soll, hängt von den Texturkoordinaten des Fragments ab. Im einfachsten Fall werden die Koordinaten der Geometrie pro Vertex-Basis zugeordnet und in Fragmente interpoliert, nachdem die Geometrie auf den Bildschirm projiziert und gerastert wurde. Die Koordinaten sind normalerweise normalisiert, dh sie haben Werte zwischen 0 und 1. Für eine 2D-Textur gibt es 2 Koordinaten - u und v. Eine davon ist mit der horizontalen Achse des Texturbildes, die andere mit der Vertikalen ausgerichtet. Wenn in einem Fragment-Shader eine Textur über einen Textur-Sampler abgetastet wird, um eine Farbe für gegebene Koordinaten zu erhalten, gibt der Sampler einfach einen Wert zurück, der aus einer Anzahl von gefundenen Texeln entsprechend der Koordinate, der Mipmap-Ebene und einer Interpolationsmethode interpoliert wird. Die verwendeten Koordinaten können je nach Art der Texturierung variieren. Die Interpolationsmethode ändert die endgültige Bildqualität. Mipmapping wird verwendet für die Änderung der Ebene der Textur Details in der Regel abhängig von Ansicht Entfernung (Filterung).

Einige Links für weitere Informationen: https://www.cs.utexas.edu/~fussell/courses/cs384g/lectures/lecture12-Texture_mapping.pdf http://cg.informatik.uni-freiburg.de/course_notes/graphics_06_texturing.pdf http://www.cs.cmu.edu/~djames/15-462/Fall03/notes/09-texture.pdf