Parsing file obj: come fare materiali / texture?
Domanda
Sono nuovo di OpenGL. Sto giocando intorno con esso usando JOGL. Sto usando questo modello .
Io il rendering con successo alla finestra. Tuttavia, vorrei applicare texture / materiali. Io non sono del tutto sicuro di come fare questo.
Dal file obj:
f 6307/4525/3 6303/4524/3 6327/4523/3 6315/4526/3
usemtl kahki_light_pave_W.png
f 6445/3470/305 6437/4623/305 6593/4624/305 6597/4625/305
f 6594/4626/306 6438/4627/306 6446/4628/306 6598/4629/306
f 6595/4630/307 6439/4631/307 6447/4632/307 6599/4633/307
f 6448/3482/308 6440/4634/308 6596/4635/308 6600/4636/308
Wikipedia mi dice che tutto ciò che dopo l'istruzione usemtl
e prima dell'istruzione usemtl
prossimo si suppone che l'uso khaki_light_pave_W.png
. Tuttavia, non sono sicuro di come fare questo in OpenGL.
Ci sono un sacco di vertici definiti nella parte superiore del file:
v 19.886690 3.093822 -21.149584
v 23.886690 3.093822 -21.149584
vt 0.918121 0.920883
vt 0.918121 0.959193
vt -0.537323 1.541370
vt -0.537323 1.503060
vt 0.462677 0.503060
Ho bisogno di usare i vertici vt
per la trama? Le dichiarazioni f
comprendono indici. Sono queste indicies nella vertici v
, vt
, o entrambi?
Soluzione
tl; dr. Le voci vt
specificano struttura coordinate e l'indice voci f
(! 1-based) in tre matrici distinte (v
, vt
, e vn
)
Dalle href="http://local.wasp.uwa.edu.au/~pbourke/dataformats/obj/" rel="nofollow noreferrer"> spec , sezione "Riferimento dati vertex
Per tutti gli elementi, i numeri di riferimento
sono utilizzati per identificare geometrica
vertici, i vertici di texture, vertice
normali e vertici spazio dei parametri. Ognuno di questi tipi di vertici è
numerata separatamente, iniziando con
1. Ciò significa che il primo vertice geometrico del file è 1, il secondo è
2, e così via. Il primo vertice tessitura
nel file è 1, il secondo è 2, e
presto. La numerazione continua
sequenzialmente durante l'intero
file. Frequentemente, file hanno multipla
elenchi di dati vertice. questa numerazione
sequenza continua anche quando vertice
dati è separato da altri dati. Oltre al conteggio vertici giù
dalla cima del primo elenco nel
file, è possibile contare anche i vertici indietro
l'elenco dalla posizione di un elemento
nel file. Quando si conta il
Lista da un elemento, il riferimento
numeri sono negativi. Un riferimento
numero di -1 indica vertice
immediatamente sopra l'elemento. UN
numero di riferimento -2 indica due
i riferimenti di cui sopra e così via
Altri suggerimenti
ho scritto di un file del caricatore di OBJ con un visualizzatore del modello di esempio per visualizzare il modello utilizzando LWJGL, che è simile a JOGL ma non esattamente la stessa cosa. (Ho usato sia JOGL e LWJGL -. In effetti di recente ho passato da JOGL a LWJGL)
ho cercato di rendere il codice più pulito e semplice possibile. Purtroppo è "vecchio stile" in quanto utilizza la pipeline funzione fissi piuttosto che shaders personalizzati, ma spero che possa essere in qualche modo utile e istruttivo per le basi. Lo si può trovare a;