Domanda

Sto cercando di disegnare un globo in Android, uso OpenGL per questo. Tuttavia, per rendere più facile capire, inizierò creando un semplice cubo 3D. Uso Blender per creare il mio oggetto 3D (cubo) ed esportarlo come file .obj dopo averlo scartato per ottenere coords di texture (VT). Il problema è che ottengo 8 vertici diversi e 9 coord di trama diversi.

V 1.000000 -1.000000 -1.000000
V 1.000000 -1.000000 1.000000
V -1.000000 -1.000000 1.000000
V -1.000000 -1.000000 -1.000000
V 1.000000 1.000000 -1.000000
V 0.999999 1.000000 1.000001
V -1.000000 1.000000 1.000000
V -1.000000 1.000000 -1.000000
VT 0.000000 0.000000
VT 0.000000 -1.000000
VT -1.000000 -1.000000
VT -1.000000 0.000000
VT 0.000000 1.000000
VT 1.000000 1.000000
VT 1.000000 0.000000
VT -1.000000 1.000000
VT 1.000000 -1.000000

Pertanto, ricevo anche una vera configurazione incasinata di indici che rende impossibile riorganizzare la posizione dei coordini di trama per abbinare la posizione nei vertici.

F 5/1 1/2 4/3
F 5/1 4/3 8/4
F 3/1 7/5 8/6
F 3/1 8/6 4/7
F 2/1 6/5 3/4
F 6/7 7/1 3/2
f 1/1 5/5 2/4
F 5/7 6/1 2/2
F 5/5 8/8 6/1
F 8/1 7/2 6/9
f 1/1 2/2 3/3
f 1/1 3/3 4/4

Dal momento che IV'e eided ora posso usare solo un array per gli indici poiché un vertice è costituito sia da vertici che da coordini di trama. Pertanto, avrei bisogno di riorganizzare un po 'uno degli array V/VT. Ma non posso, poiché se muovo VT (nella posizione 1) nella posizione 5 (prima linea di facce), avrei bisogno di spostarlo di nuovo per farlo andare fino in fondo attraverso l'array degli indici.

Quindi, essenziale, mi chiedo se questo sia un problema con il programma "Blender" o se esiste una soluzione a questo che posso applicare.

È stato utile?

Soluzione

Quello che hai lì è del tutto normale, e in effetti mi aspetterei di aver visto più di 9 coordinate di trama se il cubo fosse scartato correttamente. Se fatto in modo comune un cubo non sarebbe stato scartato, credo davvero di avere 12 VT.

Un intero vertice è generalmente composto dalle sue coordinate XYZ, nonché anche delle sue coordinate di consistenza e anche delle sue texture. Un singolo vertice può contenere una sola posizione dell'indice (per quanto riguarda l'array di indice in OpenGL) se tutte queste parti sono uguali. Se guardi come sono definiti i volti, sono costituiti da vertici che comprendono sia AV che VT. Se avevi anche le normali, avrebbero un numero extra per rappresentare ogni normale usata (o VN Line in un'esportazione OBJ). Nei volti, prendi il vertice 5/1, 5/5 e 5/7. La coordinata XYZ è la stessa, ma la coordinata della trama non lo è. Questo perché quando non è stato scartato, lo stesso punto nello spazio 3D appare in 3 posti sull'editor UV/Image. Per questo motivo, ci saranno 3 indici separati nell'array indice sul lato OpenGL.

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