La mappatura UV genera per alcuni punti del modello 3D diversi punti nella proiezione 2D?


8

Supponiamo che il mio modello 3D sia una piramide con una base rettangolare e io numerare quattro angoli della base con 1, 2, 3, 4 e dare 5 al punto superiore. Se proiettassi questa piramide in un oggetto a forma di stella 2D, non tutti i quattro punti esterni della stella sarebbero associati al punto numero 5 nel modello 3D?

Immagine disegnata a mano di una piramide a base quadrata e la sua rete 2D a forma di stella


Sembra che tu pensi che "proiettare questa piramide in un oggetto a forma di stella 2D" sia un'operazione definita. Non lo è, fino a quando non lo fai.
Jessy,

2
Per mappare UV in quel modo, devi pensare a (5) come a quattro vertici diversi che hanno le stesse coordinate XYZ.
Russell Borogove,

Risposte:


10

Nel modo in cui viene generalmente definito, ogni vertice in una mesh corrisponde a una coordinata UV e deve esserci esattamente una di tali coordinate per vertice, poiché è così che un renderer prenderebbe texel. Quindi è impossibile avere più coordinate UV per un singolo vertice a meno che tu non abbia più parametrizzazioni per la tua mesh.

Tuttavia, le mesh spesso vengono suddivise durante la parametrizzazione e gli stessi vertici possono finire in più posizioni, proprio come nel tuo esempio. Molto spesso, quei vertici vengono semplicemente replicati durante il caricamento / rendering, quindi la mappatura da vertice a uv rimane da 1 a 1 o da molti a 1. Quindi un renderer probabilmente interpreterà il tuo esempio come segue (la v5 è divisa in 4):

inserisci qui la descrizione dell'immagine


4

Devo solo aggiungere un po 'alla risposta di ap_.
Ovviamente puoi avere più UV per un vertice, questo si chiama strati UV. È così che i motori hanno visualizzato mappe di luce e mappe di albedo allo stesso tempo, dall'avvento delle mappe di luce. (forse il motore del terremoto nel 1996?)
Puoi avere più strati UV, se vuoi fare il multitexturing come per terreni, mappe luminose, albedo large, dettagli albedo, mappa normale ...

Sfortunatamente, il rasterizzatore non sceglierà mai uno strato UV a seconda della primitiva che sta eseguendo il rendering. Un tale renderer potrebbe essere fatto con un buffer di indice supplementare (primitivo al buffer di mappatura del livello UV) ma nessuna scheda grafica e nessuna API grafica lo supporta. Questa è comunque una violazione non necessaria per KISS.

Quindi, ciò che si farebbe in questo caso è separare l'apice della piramide in 4 vertici distinti durante la fase di progettazione. Comunque il primo motivo di ciò, non essendo la confezione da UV ma la definizione per lo più normale. Se vuoi spigoli vivi, devi rompere l'ombreggiatura, quindi devi avere normali diverse, anche loro, come UV, sono generalmente definite 1-1 nel flusso di vertici.

Suggerimento finale, forse non vuoi davvero usare questo involucro, preferirei suggerire questo:

inserisci qui la descrizione dell'immagine

In questo modo hai una continuità senza soluzione di continuità per il filtro e guarda sui bordi e sull'apice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.