# Verschiedene Texturkoordinaten



## Spacerat (19. Mai 2012)

Hallo Community
Ich zerbreche mir gerade den Kopf darüber, ob es sinnvolle Anwendungsfälle dafür gibt, die Texturkoordinaten eines Materials für jeden Kanal (Color-, Bump-, usw.) einzeln zu verwalten, was bedeuten würde, dass ein Polygon weitaus mehr Koordinatensätze als nur zwei (Vorder- und Rückseite) haben könnte, nämlich genau zwei mal Anzahl der Kanäle. Mir persönlich erschliessen sich da zumindest erst mal keine und die mir bekannten 3D-Programme unterstützen so etwas auch nicht.
Bevor jemand fragt, wofür ich das brauche... eigentlich brauche ich nur die Info, ob einem diese "Technik" irgendwann mal über den Weg laufen könnte und ob es sich lohnt, falls überhaupt möglich, so etwas zu unterstützen.
Leider ist Google da relativ Wortkarg, was aber durchaus daran liegen könnte, dass mir keine konkreten Suchbegriffe (ausser halt "unterschiedliche Texturkoordinaten pro Kanal") einfallen wollen.


----------



## Marco13 (19. Mai 2012)

Reicht schon der Fall, dass es schlicht und einfach mehrere _Texturen_ gibt (also mehrere von denen, die du jetzt mit "Color" zusammengefasst hast) ? Oft werden Texturen da für die Gewichtung anderer Texturen verwendet. Ein spontanes Beispiel ist: 
- Eine Grau-Melierte Textur, die wie "Stein" aussieht
- Eine Gras/Moos-Textur
- Eine Textur mit Perlin Noise, die sagt, wie stark der Stein durch das Moos durchscheinen soll
Damit kann man sehr kompakt und quasi prozedural aus kleinen Texturen neue Texturen zusammenbauen, mit denen man riesige Landschaften schön abwechslungsreich texturieren kann, ohne dass sich irgendwelche wiederholenden Muster bilden.


----------



## Spacerat (19. Mai 2012)

Ich glaube den Anwendungsfall meinte ich nicht. Soweit ich weis, realisiert man das über Textur-Stream-Funktionen (z.B. Shader), welche man statt statischen "Bildern" in die Farb-, Bump- Lightkanäle eines Materials legt. Ein einzelnes Polygon hätte so immernoch maximal nur zwei Koordinatensätze. Was ich meinte war eher dir Frage, ob man Farb-, Bump- und andere Kanäle z.B. per OpenGL separat binden kann. In OpenGL 1.0 z.B. bindet man zuerst die Texturkanäle für die Vorderseite eines Polygons, zeichnet dieses z.B. mit "glTexCoord2f()" und "glVertex3f()" und das widerholt man dann irgendwann für die Rückseite.
Hab' irgendwie echt Probleme, das auszudrücken... vllt. mal so...
Wann genau könnte es erforderlich sein einem Polygon Texturkoordinaten pro Kanal zuzuweisen und vor allem wie könnte das aussehen? Die Kanäle einzeln binden und die Polygone mit verschiedenen Texturkoordinaten öfters zeichnen funktioniert doch afaik gar nicht. Aber da bin ich mir halt nicht so sicher.


----------



## Marco13 (19. Mai 2012)

Hm... OK, dann weiß ich wohl nicht genau, was gemeint ist. Bei Color- und Bump Maps sind die Texturkoordinaten gleich (auch wenn sie ggf. trotzdem als zwei getrennte beim Shader ankommen). Sobald man noch eine dritte Textur dazunimmt, welche auch immer, braucht man weitere, um auch im Shader auf den Textursampler zugreifen zu können. Aber vielleicht hat noch jemand eine andere Idee...


----------



## Guest2 (20. Mai 2012)

Moin, 

wollte man früher bei OpenGL mehrere Texturkoordinaten übergeben, dann gab es dazu z.B. [c]glMultiTexCoord2f[/c]. Heute werden aber sowieso alle Vertexattribute mit demselben Kommando übergeben, dabei ist es egal ab das Dutzende Texturkoordinaten oder andere Attribute sind ([c]glVertexAttribPointer[/c]).

Ob man das braucht / will, keine Ahnung. 

Viele Grüße,
Fancy


----------



## Spacerat (20. Mai 2012)

Danke euch zweien...
Eben jene Frage ob man das will oder braucht habe ich mir auch stellen müssen. Hintergrund ist das Festlegen eines Quasi-Standards für 3D-Objekt-Dateien. Dazu habe ich bereits WaveFront-, DirectX- und Egosoft's ASCII-Bod-Dateien regelrecht auseinander genommen (Ich will mich zunächst auf Textformate beschränken). All diese Formate erlauben zwar Multitexturing (Egosoft z.B. Color, Bump, Environment, Light und Transparency) per Material, aber wenn man sich anschliessend die Polygon-Definitionen ansieht, haben diese durchweg nur einen Satz Texturkoordinaten und einen Verweis auf ein Material. Die Texturen der im Material definierten Texturkanäle unterscheiden sich dann immer höchstens in ihrer Farbgebung.
Von euch hat nicht zufällig jemand eine Beispieldatei (möglichst erst mal nur Textformate), wo das nicht so ist?


----------

