Pregunta

Estoy tratando de dibujar un globo en Android, uso OpenGL para esto. Sin embargo, para que sea más fácil de entender, comenzaré haciendo un simple cubo 3D. Utilizo Blender para crear mi objeto 3D (Cube) y exportarlo como un archivo .obj después de que lo haya desenvuelto para obtener Coords de textura (VT). El problema es que obtengo 8 vértices diferentes y 9 coords de textura diferentes.

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

Por lo tanto, también obtengo una configuración real de índices que hace que sea imposible reorganizar la posición de las coordinas de textura para que coincida con la posición en los vértices.

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

Como entendí ahora solo puedo usar una matriz para índices, ya que un vértice consiste en vértices y coords de textura. Por lo tanto, necesitaría reorganizar un poco una de las matrices V/VT. Pero no puedo, ya que si muevo VT (en la posición 1) a la posición 5 (primera línea de caras), necesitaría moverlo nuevamente para que vaya a través de la matriz de índices.

Entonces, básicamente, me pregunto si este es un problema con el programa "licuadora" o si hay una solución a esto que puedo aplicar.

¿Fue útil?

Solución

Lo que tienes allí es completamente normal, y de hecho esperaría haber visto más de 9 coordenadas de textura si el cubo se desenvolvió correctamente. Si se hace de una manera común, un cubo estaría sin envolver, realmente debería tener 12 VT, creo.

Un vértice completo generalmente se compone de sus coordenadas XYZ, así como también son coordenadas normales y de textura. Un solo vértice solo puede mantener una posición de índice (con respetos a la matriz de índice en OpenGL) si todas estas partes son las mismas. Si observa cómo se definen las caras, están formadas por vértices que comprenden AV y VT. Si también tenía normales, tendrían un número adicional para representar cada línea usada normal (o VN VN en una exportación OBJ). En las caras, tome el vértice 5/1, 5/5 y 5/7. La coordenada XYZ es la misma, pero la coordenada de textura no lo es. Esto se debe a que cuando no está envuelto, el mismo punto en el espacio 3D aparece en 3 lugares en el editor UV/Imagen. Debido a esto, habrá 3 índices separados en la matriz de índice en el lado OpenGL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top