Erzeugt UV-Mapping für einige Punkte des 3D-Modells mehrere Punkte in der 2D-Projektion?


8

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?

Hand gezeichnetes Bild einer quadratischen Grundpyramide und ihres sternförmigen 2D-Netzes


Es scheint, dass Sie denken, "diese Pyramide in ein sternförmiges 2D-Objekt projizieren" eine definierte Operation ist. Es ist nicht, bis Sie dies tun.
Jessy

2
Um auf diese Weise eine UV-Karte zu erstellen, müssen Sie sich (5) als vier verschiedene Eckpunkte vorstellen, die zufällig dieselben XYZ-Koordinaten haben.
Russell Borogove

Antworten:


10

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):

Geben Sie hier die Bildbeschreibung ein


4

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:

Geben Sie hier die Bildbeschreibung ein

Auf diese Weise haben Sie eine nahtlose Kontinuität beim Filtern und sehen an den Kanten und auf der Spitze.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.