Arbeit mit Texturen

Aus EEP Wiki
Wechseln zu: Navigation, Suche

7. Arbeiten mit Texturen


Wie in der Vorbereitung bereits erwähnt sind Texturen eine Zusammenstellung aus bearbeitetem Bild- und Fotomaterial bzw. eigens erstellten fotorealistischen Material. Die Texturen sind ein entscheidender Bestandteil, um unseren späteren Modell ein gutes und realistisches Aussehen zu verleihen. Der Einsatz von Texturen stellt ein Standardverfahren der Computergrafik zur Verbesserung der Qualität von dreidimensionalen Szenerien dar. Die grundlegende Motivation für den Einsatz von Texturen ist es, den Realismus in der Darstellung von komplexen Oberflächenstrukturen zu verbessern, ohne dabei die Komplexität des gegebenen polygonalen Modells zu erhöhen.

Für die Erstellung der Texturen ist der Einsatz von Grafik- bzw. Bildbearbeitungsprogrammen unverzichtbar. Im Kapitel "Empfohlene Zusatzsoftware" sind einige solcher Programme aufgelistet. Die dort erwähnten Programme werden als "open source" angeboten und machen somit eine kostspielige Investition in Kaufsoftware zumindest vorerst überflüssig. Die Arbeit mit Grafikprogrammen ist je nach Programmtyp und -tiefe teilweise sehr komplex. Es ist hier am Besten sich zu Beginn der Texturarbeit verschiedene Programme herunterzuladen und diese einfach auszuprobieren. Oftmals merkt man intuitiv recht schnell, welches Programm zu einem passt und welches eben eher weniger. Unser Kapitel zu "Arbeiten mit Texturen" wird den Teilsektor der Texturarbeit im HomeNos selbst behandeln. Für Hilfestellungen bei der Texturerstellung selbst stehen in den jeweiligen Grafikprogrammen Hilfetexte und teilweise auch Tutorials bereit.


7.1. Unterstütze Bilddateiformate


Der HomeNos unterstützt die Bilddateiformate

.tga (Truevision Advanced Raster Graphics Array),
.dds (direct draw surface) und
.png (portable network graphics)


Alle drei Dateiformate zeichnen sich dadurch aus, dass sie mit sogenannte Alphakanälen arbeiten und diese abspeichern können. Dies ist für die Arbeit an einem Modell sehr wichtig, wie wir uns in einem kurzen Beispiel ansehen. Wir erinnern uns vielleicht an unsere Stadthaustextur im Kapitel "Arbeiten mit .kon.Dateien". Im folgenden sehen wir einen Ausschnitt der Textur. Dort ist die Fensterreihe im ersten Stockwerk und die Eingangstür nun mit einem Alphakanal belegt, der grün dargestellt wird:

6.textur-mit-alpha.jpg

Der Texturausschnitt mit dem Alphakanal sieht auf eine .kon-Datei aufgebracht nun im 3D-Betrachter folgendermaßen aus:

6.textur-mit-alpha-3d-betrachter.jpg

und die gleiche .kon-Datei mit der Textur ohne Alphakanal:

6.textur-ohne-alpha-3d-betrachter.jpg

Denken wir nun daran, daß wir in unserem Stadthaus ggf. eine Inneneinrichtung modellieren möchten, die später im Modell sichtbar sein soll, können wir bereits erahnen wie wichtig die Unterstützung von Dateiformaten mit Alphakanal ist.

7.2. Anlegen von Texturen


Neue Texturen für unser Modell legen wir im .kon-Dateien-Dialog mit der Schaltfläche Img 25.jpg an. Wir erhalten nun folgendes Dialogfenster, in welchem wir die Eigenschaften der neuen Textur festlegen können:

6.textur-neuetextur-anlegen.jpg


Parameter und Kurzbeschreibungen

id()
Unter diesem Parameter wird die eindeutige Textur-ID angegeben. Nur Ganzzahlen sind möglich. Null vor einer Zahl (wie bei Namen) ist kein gültiger Wert. Dieser Parameter muss unbedingt angegeben werden. Bei der Anlage der  :::Textur über unser Dialogfeld wird die ID der Textur automatisch vergeben. Möchten wir - aus welchen Gründen auch immer - bestimmte ID-Werte vergeben, können wir auf das "händische" Anlegen einer Textur zurückgreifen, was wir :::im Kapitel "Die Vorbereitung" bereits besprochen haben.
name()
Name der Datei mit dem Texturbild ohne Endung (*.tga, *.dds, *png). Der Name kann alphanumerisch sein, darf aber keine Leerzeichen und Umlaute enthalten. Für die Übersicht sinnvoll ist ein Name, der der Texturen-ID entspricht. ::Dieser Parameter muss unbedingt angegeben werden. Der Name ergibt sich bei der automatischen Anlage der Textur über das Dialogfeld aus dem Dateinamen unserer Bilddatei, die wir über die Schaltfläche "Texture Bitmap" ::hinzufügen.
automipmap()
Gibt an, dass Mipmaplevel mit verringerter Auflösung automatisch erstellt worden sind. Es muss kein Wert übergeben werden, um das Mipmapping tatsächlich einzuschalten.
opacity()
Gibt an, dass und in welchem Grade eine Textur eine Fläche durchsichtig erscheinen lassen soll. Gültige Werte sind 0.0 (unsichtbar) bis 1.0 (opak). Dieser Parameter wird nur dann benutzt, wenn die Textur tatsächlich eine ::Opazität, also Transparenzgrad erhalten soll, wie z.B. bei Glasscheiben usw.
billboarding()
Mit diesem Parameter wird die Fläche der Polygone durchbrochen. Wird nur dann benutzt, wenn die Textur Durchbrüche aufweist (Fensteraussparungen, Geländerzwischenräume usw.)
repeat_s()
Wenn dieser Parameter vorhanden ist, werden die Texturen in X-Richtung wiederholt, sobald sie den Bereich 0.0 - 1.0 überschreiten. Zum Parameter wird kein Wert übergeben.
repeat_t()
Wenn dieser Parameter vorhanden ist, werden die Texturen in Y-Richtung wiederholt, sobald sie den Bereich 0.0f- 1.0 überschreiten. Zum Parameter wird kein Wert übergeben.
magfilter()
Gibt den Magnification-Filter an. Gültige Werte sind: 0 und 1. Dieser Parameter muss unbedingt angegeben werden!
minfilter()
Gibt den Minification-Filter an. Gültige Werte sind: 0, 1, 2, 3, 4, 5. Dieser Parameter muss unbedingt angegeben werden!
blaue Parameter = automatisch generiert [id()] bzw. von Dateiname der verwendeten Bilddatei [name()]
rote Parameter = im Texturdialog editierbar
schwarze Parameter = im automatisierten Verfahren nicht vorgesehen


Erklärungen zu den Texturparametern:


Mipmapping (automipmap)

Mipmapping bezeichnet eine Technik, bei der Texturen in größeren Entfernungen mit verringerter Auflösung dargestellt werden. Dies kann Flimmereffekte beseitigen und gibt bessere Kontrolle über die Darstellung von Objekten in größerer Entfernung. Mit dem Parameter automipmap() werden die Mipmap-Level automatisch berechnet, indem die Farbwerte jeweils vierer Texel zu einem verrechnet werden (Einfache Mittelung). Mit dem Schlüsselwort "MipMapLevel" hat man die Möglichkeit von Hand erzeugte Mipmaplevel anzugeben, allerdings wird dies nicht mehr praktiziert, da diese über das DDS-Tool automatisch erzeugt und mitgespeichert werden.


Opazität (opacity)

Diese Einstellung ist weit weniger universell verwendbar, als man vielleicht zunächst meinen könnte. Eine Textur mit einer Opazität = 1 wird zwar in Anteilen die Szenerie hinter ihr sichtbar sein lassen, jedoch betrifft das nur die Polygone, die zum Zeichenzeitpunkt der halb durchsichtigen Fläche bereits gezeichnet wurden. Da Modelle in der Regel nicht von hinten nach vorne gezeichnet werden wird das Bild nicht immer korrekt erscheinen. Diese Einstellung war ursprünglich nur für Rauchwolken gedacht.


Billboarding:

Texel mit der Farbe RGB: 0,0,0 (schwarz) werden nicht gezeichnet. Man sieht dann an diesen Stellen die Szenerie dahinter. Beim Auto-Mipmapping können hier Probleme auftreten, da vollautomatisch nicht immer korrekt bestimmt werden kann, ob ein Texel jetzt unsichtbar ist, oder nicht. Etwa, wenn zwei unsichtbare und zwei sichtbare zu einem verrechnet werden. Dieser Effekt bildet unschöne schwarze Ränder an den Stellen, wo die Grenze zwischen den sichtbaren Flächen und Durchbrüchen ist, kann aber sehr leicht vermieden werden.


Textuhrwiederholungen (repeat_s, repeat_ t)

Mit den Parametern repeat_s(), repeat_t() gibt man an, dass die Textur in X- bzw. Y-Richtung wiederholt werden soll, wenn die Texturkoordinaten den Bereich zwischen 0 und 1 überschreiten. Dies kann im Zusammenhang mit den Texturfiltern zu Problemen führen. Wenn beim Filtern Texelwerte herangezogen werden müssen, die jenseits der Texturgrenzen liegen. Hier können Streifen entstehen, die die Farbe der gegenüberliegenden Texturseite einmischen. Ohne "Repeat" hätten die verwendeten nicht existierenden Texel die Farben der letzten existierenden. Auch beim Einsatz des Billboardings kann es passieren, dass unsichtbare Texel an einem Texturrand wieder sichtbar werden. In solchen Fällen kann man entweder die Filtermethoden auf "NEAREST" stellen, auf die Wiederholung verzichten, oder aber die Textur so anordnen, dass auf beiden Seiten, dieselben Pixel verwendet werden. (Man kopiert hierzu die erste Pixelreihe der linken Seite und fügt diese auf der rechten Seite ein).


Texturfilter (magfilter, minfilter)

Grundsätzlich steht der Renderer vor dem Problem, dass er entscheiden muss, welches Bildelement (Texel) einer, durch die 3D->2D Projektion unter einem Pixel zu liegen kommenden texturierten Fläche, die Farbwerte für das Pixel liefern soll. Es gibt zwei Situationen.

•In der einen sind die texturierten Flächen soweit weg, dass mehrere Texel in ein Pixel fallen: Hier wird der sogenannte Minifikation-Filter aktiv.
•In der anderen überdeckt ein Texel mehrere Pixel: Hier wird die Darstellung durch den Magnifikationfilter beeinflusst.

Werte für den Magnifikationfilter:

0: GL_NEAREST, es wird das Texel die Farbe eines Pixels bestimmen, dessen Zentrum dem Pixelzentrum am nächsten liegt.
> 1: GL_LINEAR, es werden die vier einem Pixel zunächst liegenden Texel zur Farbbestimmung herangezogen


Werte für den Minifikationfilter:

0: GL_NEAREST, das dem Pixelmittelpunkt zunächst liegende Texel bestimmt die Farbe des Pixels.

1: GL_LINEAR, die vier dem Pixelmittelpunkt zunächst liegenden Texel werden zur Farbe des Pixels verrechnet.

2: GL_NEAREST_MIPMAP_NEAREST, wie GL_NEAREST, nur werden abhängig von der Entfernung Mipmaplevel zur Farbbestimmung benutzt.

3: GL_LINEAR_MIPMAP_NEAREST, es wird abhängig von der Entfernung ein Mipmaplevel benutzt, die endgültige Farbe des Pixels jedoch aus den vier zunächstliegenden Texeln in dem Mipmaplevel gemittelt.

4: GL_NEAREST_MIPMAP_LINEAR, es werden die beiden am besten zu der Entfernung passenden Mipmaplevel benutzt. Relevant ist aber immer nur das Texel, was dem Pixelmittelpunkt am nächsten liegt.

5: GL_LINEAR_MIPMAP_LINEAR, es werden die beiden am besten zu der Entfernung passenden Mipmaplevel benutzt. Die Farbwerte die jeder Mipmaplevel beisteuert werden aus den dem Pixelzentrum nächstliegenden Texeln gemittelt.





























Zurück zur Startseite