2012-05-13 12 views
12

Qual è la differenza tra una coordinata della trama U V rispetto alla trama S T Coordinata?Differenza tra coordinate di trama U V e S T

So che U V e S T sono utilizzati in OpenGL.

So anche che S T sono utilizzati anche in Java.

+2

"So che U V e S T sono usati in opengl" Non c'è posto nelle specifiche OpenGL che * mai * si riferisce ai raggi UV. –

+1

@NicolBolas Esiste, ad esempio, l'equazione 8.7 nella specifica OpenGL 4.3. – kusma

risposta

17

Intendono la stessa cosa, è solo una convenzione di denominazione diversa.

U = S = x dimension 
V = T = y dimension 
+0

In realtà, in CG si utilizza una coppia di quei coorfinati per indicare la posizione nello spazio delle texture e l'altra è nello spazio degli oggetti. Le diverse API a volte confondono questo o lo usano in modo diverso. – Arne

+1

@Arne non ne ha mai sentito parlare. Puoi citare una fonte? –

+1

@StefanHanke Hm, ho guardato, ma non riesco a trovarlo. Forse mi sono ricordato male. Ad ogni modo, questa è solo terminologia. Ho trovato molto utile la carta di bump di Blinn per comprendere le operazioni di mappatura delle texture e di spazio delle texture in generale (http://research.microsoft.com/apps/pubs/default.aspx?id=73939). – Arne

1

È una questione di convenzione.

Autodesk 3D Studio, Alias ​​Maya, NewTek Lightwave e probabilmente altri hanno utilizzato le lettere U e V per le coordinate della trama orizzontale e verticale, rispettivamente. DirectX segue la stessa convenzione.

RenderMan di Pixar ha tuttavia riservato le lettere U e V per i parametri nelle loro primitive 3D parametriche. Quindi, per il texturing, hanno usato invece S and T. OpenGL ha anche usato questa convenzione per le coordinate della trama.

Quindi il loro significato potrebbe essere diverso in teoria ma, a meno che non si lavori su alcuni effetti speciali del film di Hollywood, probabilmente entrambi significano coordinate di trama.

20

Computer graphics principles and practice (Foley et al) definisce il 2 come segue:

Mappatura texture può essere realizzato in due fasi. Un approccio semplice inizia mappando i quattro angoli del pixel sulla superficie. Per una patch bicubica, questa mappatura definisce naturalmente un insieme di punti nello spazio di coordinate della superficie (s, t). Quindi, i punti angolari del pixel nello spazio di coordinate della superficie (s, t) nello spazio di coordinate (u, v) della trama sono definiti nello spazio di coordinate della trama definendo un quadrilatero che si avvicina di più forma complessa in che il pixel può effettivamente mappare a causa della curvatura della superficie. Calcoliamo un valore per il pixel sommando tutti i texel che si trovano nel quadrilatero , ponderando ciascuno per la frazione del texel che si trova all'interno del quadrilatero. Se un punto trasformato nello spazio (u, v) cade al di fuori della mappa texture, la mappa texture può essere ugualmente riprodotta come , come i modelli della Sezione 2.1.3 Invece di usare sempre la mappatura dell'identità tra (s, t) e (u, v), possiamo definire una corrispondenza tra i quattro angoli del rettangolo 0-a-1 (s, t) e un quadrilatero in (u, v). Quando la superficie è un poligono, è comune a assegnare le coordinate della mappa di trama direttamente ai suoi vertici.

+1

Molto bello. Quindi c'è una differenza. A seconda della mossa di avvolgimento 2 diverse coppie ST possono dare la stessa coppia UV. ST è coordinate di superficie e UV è coordinate di trama una volta che sono avvolte. –

+2

Questo è corretto. Mi riferisco alle specifiche OpenGL ES 2.0, sezione 3.7 sulle trame. (S, T) sono una coppia normalizzata per il frammento. (U, V) possono essere trattati come la larghezza e l'altezza dell'array di texture in texels. I termini non devono essere usati in modo intercambiabile. – dturvene

4

uv coordinate partono da alto a sinistra(v asse è rivolto verso il basso).
st coordinate iniziano da angolo in basso a sinistra (l'asse T è rivolto verso l'alto).

s = u; 
t = 1-v; 

Ho dimenticato di dire che texture in OpenGL devono essere caricati verticalmente capovolto perché il primo elemento dei dati di riga "corrisponde all'angolo inferiore sinistro dell'immagine texture" (see glTexImage2D). Solo in quel caso, le coordinate di st e uv sembrano essere la stessa cosa.

+4

Non penso che le coordinate uv inizino nell'angolo in alto a sinistra. Iniziano dall'angolo in basso a sinistra, come ogni altro sistema di coordinate anche in OpenGl. Tuttavia, alcuni formati di immagine memorizzano i loro dati iniziando dal basso, il che ti costringe a spingerlo a capovolgere l'immagine oa fingere che il sistema di coordinate inizi nell'angolo in alto a sinistra. – maja

+0

Grazie mille, il '1-v' ha risolto il problema nel mio Maya all'esportazione di three.js. : D – lama12345

Problemi correlati