Domanda

Ho creato un un caricatore OBJ che può importare file obj che sono stati esportati da 3DS Max nella mia semplice spettatore OpenGL / app. Al centro di questo è stato un Vector3.h scritto con l'aiuto di alcuni tutorial.

Ha funzionato alla grande su un paio di modelli che ho usato, ma quello che voglio lavorare con ha qualcosa di diverso che non è stato contabilizzato. Dispone di 4 punti nei suoi vertici invece di 3. Ecco un esempio di una linea con cui sto lavorando:

g Box02
usemtl Wood_Bark
s 4
f 1/1/1 2/2/1 3/3/1 4/4/2
f 4/1/3 3/2/3 5/3/3 

La prima riga 'f' ha 4 vertici Sono interessato. La mia Vertex3.h prende X, Y, Z. In altri modelli che avevo, tutte le linee erano come il secondo 'f' linea, con solo 3 elementi . Io sono sempre un vertice fuori campo, in modo che quando sono andato a controllare dove si stava accadendo, ho visto che era su questa linea, così ho pensato perché non v'è più dati sulla linea che può essere gestito. Ecco l'intera Vertex3.h

http://pastebin.com/dgGSBSFe

E questa è la riga di codice che non riesce. vertici è un Vector3.

tempVertices.push_back ( vertices[--vertex] );

La mia domanda è, qual è il punto 4? Come si spiegherebbe che in qualcosa come il mio file Vector3.h? Sembra che ho bisogno di creare un Vector4.h, e ignorare il 4 ° var se solo il 3 sulla linea c'è. Ma vorrei sapere di più su quello che ho a che fare con, e qualche consiglio su come farlo. È il 4 ° elemento un alfa o qualcosa del genere? Come dovrebbe essere utilizzato, o dovrebbe essere utilizzato a tutti i miei calcoli in Vector3.h?

È stato utile?

Soluzione

Una faccia con quattro punti è chiamato un quad. Di solito, se si desidera renderlo dovreste suddividerlo in due triangoli.

Così, per esempio, si ha questa:

 ___
|   |
|   |
|___|

È necessario attivare in questo modo:

 ___
|\  |
| \ |
|__\|

Supponendo che i vertici vanno in senso antiorario (l'impostazione predefinita in OpenGL), partendo dall'alto a sinistra, si potrebbe fare due triangoli. vertici del primo triangolo sarebbero del quad primo, secondo e terzo vertici. vertici del secondo triangolo sarebbero terza, quarta, e primi vertici del quad.

Altri suggerimenti

Perché non si esporta come solo triangoli? Converti in EMesh in 3ds max, rendere visibili tutti i bordi, l'esportazione. O semplicemente utilizzare l'opzione appropriata di esportazione OBJ.

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