Analizar archivos .obj: Cómo hacer materiales / texturas?
Pregunta
Soy nuevo en OpenGL. Estoy jugando un rato con él usando JOGL. Estoy usando este modelo .
Estoy renderizado con éxito a la ventana. Sin embargo, me gustaría aplicar texturas / materiales. No estoy del todo seguro de cómo hacer esto.
A partir del archivo .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 me dice que todo después de la declaración usemtl
y antes de la siguiente instrucción usemtl
se supone que el uso khaki_light_pave_W.png
. Sin embargo, no estoy seguro de cómo hacer esto en OpenGL.
Hay un montón de vértices definidos en la parte superior del archivo:
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
¿Es necesario utilizar los vértices vt
para la textura? Las declaraciones f
incluyen índices. Son estos índices del vértices en el v
, vt
, o ambos?
Solución
tl; dr:. Las entradas vt
especifican las coordenadas de textura y el índice de entradas f
(! 1-based) en tres matrices independientes (v
, vt
y vn
)
A partir de los href="http://local.wasp.uwa.edu.au/~pbourke/dataformats/obj/" rel="nofollow noreferrer"> de especificaciones , sección "Hacer referencia a datos de vértice
Para todos los elementos, los números de referencia
se utilizan para identificar geométrico
vértices, los vértices de textura, vértice
normales, y vértices espacio de parámetros. Cada uno de estos tipos de vértices es
numerada por separado, comenzando con
1. Esto significa que el primer vértice geométrico en el archivo es 1, el segundo es
2, y así sucesivamente. El primer vértice de la textura
en el archivo es 1, el segundo es 2, y
pronto. La numeración continúa
secuencialmente a lo largo de la entera
expediente. Con frecuencia, los archivos tienen múltiples
listas de datos de vértice. esta numeración
secuencia continúa incluso cuando vértice
datos está separado por otros datos. Además de conteo de vértices hacia abajo
desde la parte superior de la lista en el primer
archivo, también puede contar hacia atrás vértices
la lista de la posición de un elemento
en el archivo. Si se incluye el
lista de un elemento, la referencia
los números son negativos. Una referencia
número de -1 indica el vértice
inmediatamente por encima del elemento. UNA
número de referencia de -2 indica dos
referencias anteriores y así sucesivamente
Otros consejos
I redactó un archivo OBJ cargador junto con un visor de modelo de ejemplo para mostrar el modelo usando LWJGL, que es similar a JOGL pero no es exactamente lo mismo. (He usado tanto JOGL y LWJGL -., De hecho, recientemente he pasado de JOGL a LWJGL)
Me esforcé para hacer el código tan limpio y sencillo posible. Por desgracia, es "pasado de moda", ya que utiliza el oleoducto fijas de funciones en lugar de shaders personalizados, pero espero que puede ser algo útil e instructivo para los fundamentos. Usted lo puede encontrar en;