Angenommen, mein 3D-Modell ist eine Pyramide mit einer rechteckigen Basis, und ich nummeriere vier Ecken der Basis mit 1, 2, 3, 4 und gebe dem oberen Punkt 5. Wenn ich diese Pyramide in ein sternförmiges 2D-Objekt projiziere, werden dann nicht alle vier äußeren Punkte des Sterns mit der Punktnummer 5 im 3D-Modell verknüpft?
uv-mapping
Abdul Al Hazred
quelle
quelle
Antworten:
So wie es normalerweise definiert wird, entspricht jeder Scheitelpunkt in einem Netz einer UV-Koordinate, und es muss genau eine solche Koordinate pro Scheitelpunkt geben, da ein Renderer auf diese Weise Texel abrufen würde. Es ist daher unmöglich, mehrere UV-Koordinaten für einen einzelnen Scheitelpunkt zu haben, es sei denn, Sie haben mehrere Parametrisierungen für Ihr Netz.
Netze werden jedoch während der Parametrisierung häufig aufgeteilt, und dieselben Scheitelpunkte können an mehreren Stellen enden, genau wie in Ihrem Beispiel. Meistens werden diese Scheitelpunkte beim Laden / Rendern einfach repliziert, sodass die Zuordnung von Scheitelpunkt zu UV 1-zu-1 oder viele-zu-1 bleibt. Ein Renderer wird Ihr Beispiel also wahrscheinlich wie folgt interpretieren (v5 ist in 4 unterteilt):
quelle
Ich muss nur ein bisschen zur Antwort von ap_ hinzufügen.
Natürlich können Sie mehrere UV-Strahlen für einen Scheitelpunkt haben. Dies wird als UV-Schichten bezeichnet. Auf diese Weise haben Engines seit dem Aufkommen von Lightmaps gleichzeitig Lightmaps und Albedo-Maps angezeigt. (Quake Engine im Jahr 1996 vielleicht?)
Sie können mehr UV-Schichten haben, wenn Sie Multitexturing wie Terrain, Lightmap, Albedo Large, Albedo Detail, normale Karte ...
Leider wird der Rasterizer niemals eine UV-Schicht auswählen, abhängig vom Grundelement, das er rendert. Ein solcher Renderer könnte mit einem zusätzlichen Indexpuffer (primitiv zum UV-Layer-Mapping-Puffer) ausgeführt werden, aber keine Grafikkarten und keine Grafik-API unterstützen dies. Dies ist ohnehin eine unnötige Verletzung von KISS.
In diesem Fall würde man also die Spitze der Pyramide während der Entwurfszeit in vier verschiedene Eckpunkte aufteilen. Wie auch immer, der erste Grund dafür ist nicht das UV-Auspacken, sondern meistens die normale Definition. Wenn Sie scharfe Kanten wünschen, müssen Sie die Schattierung aufheben, daher müssen Sie unterschiedliche Normalen haben. Auch diese werden wie UV normalerweise im Scheitelpunktstrom 1-1 definiert.
Letzter Vorschlag, vielleicht möchten Sie dieses Auspacken nicht wirklich verwenden, ich würde eher Folgendes vorschlagen:
Auf diese Weise haben Sie eine nahtlose Kontinuität beim Filtern und sehen an den Kanten und auf der Spitze.
quelle