|
Texturen im Allgemeinen
Texturen sind prinzipiell fast das gleiche wie Zusammenfassungen von Objekten; sie werden intern genauso verwaltet, und auch fast genauso
in der Script-Sprache definiert. Zusammenfassungen nehmen ja nach erfolgter Schnittpunktberechnung die Farbe des Objektes an, auf dem der
Schnittpunkt liegt. Und das wird jetzt geändert: Die Farbe, die die Textur annimmt, wird aus der Position des Schnittpunktes im Raum berechnet.
Es handelt sich hier also um wirkliche 3D-Texturen, und nicht nur um die Projektion einer zweidimensionalen Texturen. Die Textur setzt sich also
quasi auch im Inneren der Objekte fort.
Für jedes Texturobjekt muss jetzt genau ein Textur-Basisalgorithmus ausgewählt werden (in der Implementierung ist dies bei mir ein eigenes
C++-Objekt). Er sorgt für die Zuordnung von Farben zu Koordinaten. Dazu kommen beliebig viele Textur-Modifizierer: Sie skalieren, rotieren und
verschieben die Textur. Dabei werden die Koordinaten zuerst von den Modifizierern zurücktransformiert, und danach passiert erst die
Farbzuordnung mittels Basisalgorithmus.
Bei der Vorstellug der Basisalgorithmen für Marmor und Holz wird man sich leicht wundern, denn die Basisalgorithmen an sich liefern nicht
direkt etwas, was wie Holz oder Marmor aussieht. Damit man eine realistische Textur erhält, braucht man noch einen speziellen Modifizierer:
Die Turbulenz, die ich ganz unten erkläre. Dabei wird die Textur nach einer bestimmten Regel durcheinangergewirbelt.
[nach oben]
|
|
Basistextur: Würfel |
|
Basistextur: Würfel
Dies ist die einfachste Textur. Das Bild erklärt eigentlich schon alles: Es handelt sich einfach um aufgeschichtete Farbwürfel bzw. ein
3D-Schachbrett.
[nach oben]
|
|
Basistextur: Marmor |
|
Basistextur: Marmor
Diese Textur sieht zwar erstmal überhaupt nicht wir Marmor aus. Etwas Turbulenz liefert aber direkt ein verblüffendes Ergebnis, doch
dazu mehr weiter unten.
Bei dieser Basistextur handelt es sich einfach um ein Streifenmuster, wobei die weichen Übergänge mit dem Sinus der x-Koordinate erzeugt werden.
Um die Breite/Schärfe der Streifen zu beeinflussen, kann man den Sinus nuch in eine beliebige Potenz erheben. Ein höherer Exponent sorgt
dabei für schärfere Streifen.
[nach oben]
|
|
Basistextur: Holz |
|
Basistextur: Holz
Die Grundlage für die Holztextur sind konzentrische Kreise um die y-Achse. Genauer gesagt: Die Farbe wird durch den Abstand von der
y-Achse bestimmt. Wenn man von innen nach außen geht, dann folgt die Farbe einer Art Sägezahn-Kurve
[nach oben]
|
|
Basistextur: Landschaften |
|
Basistextur: Landschaften
Der Name deutet schon an, wofür diese Textur gedacht ist; man kann sie natürlich auch für andere Dinge brauchen.
Man definiert dabei selbst beliebig viele Farbverläufe entlang der y-Achse. Damit kann man bei Landschaften z.B. höheren y-Werten die
Farbe weiß zuordnen, um damit schneebedeckte Gipfel zu erhalten etc.
[nach oben]
|
|
Basistextur: XY-Projektion eines Bitmaps |
|
Basistextur: Zylinderprojektion eines Bitmaps |
|
Basistextur: Kugelprojektion eines Bitmaps |
|
Basistextur: Projektion eines Bitmaps
Hier wird eine Textur aus einer Windows-BMP-Datei gelesen und auf die Objekte "projiziert". Dabei gibt es drei verschiedene Projektionen:
Bei der XY-Projektion wird das Bitmap einfach frontal auf die Objekte projiziert. Das heißt, die x- und y- Koordinaten im Raum geben auch
die Koordinaten auf dem Bitmap an.
Die zweite Möglichkeit ist die Zylinderprojektion. Dabei wird die y-Komponente im Bitmap weiterhin mit der y-Komponente im Raum identifiziert;
die x-Komponente im Bitmap ergibt sich allerdings aus dem "Längengrad".
Was noch fehlt, ist schließlich die Kugelprojektion. Dabei wird die y-Komponente im Bitmap aus dem Breitengrad, die x-Komponente aus dem
Längengrad berechnet.
[nach oben]
|
|
Basistextur: Wolken |
|
Besondere Basistextur: Wolken
Das Besondere an dieser Textur ist, dass sie nicht die Farbe des Objektes modifiziert, sondern die Transparenz und Lichtreflexion.
Gedacht ist sie eigentlich ausschließlich, um sie auf Staub anzuwenden. Mit noch etwas Turbulenz sieht das schon ganz brauchbar aus.
Ansonsten hat die Textur große Ähnlichkeit mit der Marmor-Textur.
[nach oben]
|
|
Marmortextur mit Turbulenz |
|
Holztextur mit Turbulenz |
|
Wolkentextur mit Turbulenz |
|
Noise und Turbulenz
Noise und Turbulenz sind zwei ganz besondere Textur-Modifizierer. Sie verwirbeln die Textur nach einem bestimmten Schema, aber doch
zufällig durcheinander. Erst damit werden aus den Basistexturen richtig interessante Texturen.
Noise und Turbulenz sind ein Kapitel für sich. Anstatt hier alles zu erklären, verweise ich nur auf die
Procedural Texture Page.
Um schöne Texturen hinzukriegen, ist manchmal ein bisschen Probiererei gefragt; am Anfang kann man ja von meinen Beispielen links ausgehen.
Ich benutze in den Beispielen nur Turbulenz, die liefert in der Regel schönere Ergebnisse.
[nach oben]
|
|
Copyright (c) 1999-2000 Martin Melcher
|