Domanda

Sto codificando il mio parser .obj in objc per OpenGL ES 2.0 per comprendere meglio come funziona questa cosa di apertura. Caricamento dei vertici e mostrare un modello con colori di vertice su di esso funziona come un fascino. Solo una piccola nota: sto usando un buffer di indice.

Il vero problema è la mappatura delle trame atm. Dato che vedrai un po 'di più in basso, la mia trama non è mappata come dovrebbe essere.

Ecco come penso che il formato .obj funzioni, per favore correggimi se sbaglio: le linee "f" descrivono una faccia in cui il numero prima di una barra definisce l'indice del vertice e il numero dopo la barra definisce una coordinata di trama .

Considera il seguente file .obj (esportato dal cinema 4d):

v -75 75 -50
v 75 75 -50
v -75 -75 -50
v 75 -75 -50

vt 0 0
vt 0 1
vt 1 1
vt 1 0

f 4/3 3/2 1/1
f 2/4 4/3 1/1

E la seguente trama:

512x512 Texture

Ora, quando posiziono i vertici nello spazio 3D OpenGL e provo a mappare le coordinate della trama su ogni singolo vertice, la mappatura va storta. Potrei risolvere questo problema muovendoti alcuni dei valori delle coordinate della trama, ma mi rendo conto che questo non è il modo di farlo. Ho anche provato a modificare alcune delle mie impostazioni di esportatore .OBJ per capovolgere AXISS e/o mappatura UV, ma non di esse provoca una mappatura corretta. C'è qualcosa che mi manca nella mia teoria riguardante il formato di file .obj? Una cosa che potrei già dire: ieri ho letto che il sistema di coordinate del formato .obj definisce Topleft come il punto di ancoraggio di una trama. Quindi l'ho risolto già nell'analisi.

Ecco un piccolo riepilogo con la situazione attuale: Aggiornamento: il sistema di coordinate della trama è il sistema di coordinate della trama .OBJ effettivo e non il sistema di coordinate di OpenGL. Traduco le coordinate nel mio algoritmo di analisi per contrastare questo.

Summary

È stato utile?

Soluzione 2

Risponderò alla mia domanda: il problema sembrava che stavo usando un buffer di indice per accelerare le prestazioni, ma le mie coordinate di trama erano ancora mappate ai vertici originali.

Altri suggerimenti

Per quanto ne so, il sistema di coordinate che stai segnalando non è quello corretto.

In realtà è qualcosa di simile:

Coordinate System

So che questa non è probabilmente la risposta reale alla tua domanda, ma spero che ci faccia luce.

Ho trovato i file. OBJ di analisi. Nel mio caso sembra che i miei file .obj utilizzino l'asse V (2a coordinata di trama) invertita. Ho risolto il problema con questa riga di codice. v = 1.0f - v;

Maurizio ha ragione nella sua rappresentazione delle coordinate di texture di texture OpenGL.

Guardando le tue foto direi che dovresti dare un'occhiata migliore al tuo codice OBJC. Supponendo che il .obj sia esportato correttamente da C4D, sembra che tu abbia gli indici di trama mescolati.

Prova plausibile: commuta il vertice in basso a sinistra con il vertice in basso a destra nell'immagine che hai pubblicato ("Risultato OpenGL") e la tua trama sarebbe uscita a destra.

EDIT: In realtà, l'errore potrebbe essere nel codice di caricamento della trama, ma ciò non spiega il risultato che stai ottenendo. Anche se l'errore fosse nel caricamento della trama, la trama si appariva semplicemente sottosopra (a causa del sistema di coordinate OpenGL a fondo sinistro). Suggerimento: Switch VT0 e VT3 nel tuo codice ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top