UV-Koordinaten eines Terrains berechnen

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Aharabada
Beiträge: 8
Registriert: 24.03.2016, 19:57

UV-Koordinaten eines Terrains berechnen

Beitrag von Aharabada »

Guten Tag,

Nachdem ich jetzt schon seit einer Ewigkeit vergebens am rum experimentieren bin und noch immer keine Lösung gefunden habe, ersuche ich nun den Rat der Speziellen Spezialisten.
In der Theorie ist mein Problem ganz einfach: Ich möchte die UV-Koordinaten meines Terrains mit Hilfe der Welt-Position der Vertices berechnen.

Der klassische Ansatz, die Koordinaten in den Vertices des Terrains zu speichern ist nicht möglich, da die Position der Geometrie ständig der Position der Kamera angepasst wird, folglich müssten auch die UV-Koordinaten ständig geändert werden - unmöglich. Zusätzlich sind die Dreiecke alle zusammenhängend (pro Position nur ein Vertex) und mir ist kein Weg bekannt mit dem man verhindern kann, dass die UV-Koordinaten falsch nicht wie erwünscht interpoliert werden.
Bisher berechne ich aus der Weltposition des Pixels dessen UV-Koordinate. Wenn ich einfach die Position als UV verwende funktioniert es, die Texture wiederholt sich jeden Meter und es sieht "schön" aus. Da ich allerdings zur Zeit mit einem Textur-Atlas arbeite und daher die Koordinaten noch anpassen muss damit ich nur einen bestimmten Abschnitt des Atlases verwende, bekommt das Terrain einen hässlichen look wie im Bild zu sehen ist (Ich vermute, dass das durch den Frac-Befehl kommt).

Screenshot_1.png


Ich wäre sehr dankbar, wenn jemand bereit wäre seine kostbare Lebenszeit und Energie für das Nachdenken über dieses Problem aufwenden könnte und bereit wäre Vermutungen zur Lösung dessen mit mir zu Teilen.

Mit freundlichen Grüßen,
Simon

Ps: Ich nutze MonoGame und Shadermodel 5.0
Benutzeravatar
xq
Establishment
Beiträge: 1581
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: UV-Koordinaten eines Terrains berechnen

Beitrag von xq »

Theoretisch löst sich ganze mit einem 2D-Textur-Array, aber das gibt es in MonoGame nicht.
Ansonsten musst du wohl manuelles Samplen und Filtern betreiben

Nachtrag:
Du kannst auch deine Texturen für den Altas so machen, dass du die auf dem Atlas "vorkachelst" und so den "Wrapround" emulieren kannst. funktioniert aber nicht mit mipmapping
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Programmiert viel in ⚡️Zig⚡️ und nervt Leute damit.
Aharabada
Beiträge: 8
Registriert: 24.03.2016, 19:57

Re: UV-Koordinaten eines Terrains berechnen

Beitrag von Aharabada »

Die Texture-Arrays funktionieren doch, zumindest erstmal ohne Mip-Maps
Danke! :D
Antworten