ProjectOvejota - 20/09/2007, 00:26

Saludos, he tenido el blog bastante descuidado pero es porque he tenido bastante tarea.

Entre las cosas divertidas que he hecho últimamente, está el proyecto para Interfaces Gráficas, Multimedia y Realidad Virtual, mejor conocido como CGA2: Sé lo que hicieron el semestre pasado, un programa que carga objetos en formato 3d con extensión .OBJ que he titulado ProjectOvejota :P

Es esencialmente un programa que analiza e interpreta dos archivos de texto, uno .OBJ, los cuales tienen los datos de geometría del modelo, así como la información de cómo incide la luz sobre los polígonos y la alineación de los "materiales", y otro .MTL, el cuál contiene las características de los "materiales": su color (en componentes difusa, especular y ambiental), su textura (especifica una imagen por material) y varios parámetros más que todavía no me es posible implementar y menos aún en el tiempo que me dieron (ray tracing o_O).

En total, me dieron 3 semanas para implementar el analizador del .OBJ y que mostrara el objeto en pantalla pero sin texturizar.

Me dieron otras 2 semanas para el .MTL. La verdad sí me costó algo de trabajo, sobre todo el "unir" los datos del MTL con los del OBJ (después de interpretar ambos archivos había que hacer una especie de proceso de unión para que se desplegara rápido).

En ambos casos, los analizadores me los aventé "a pie". Sé que pude haber usado una herramienta como YACC, pero la cosa es que los analizadores que he visto que genera YACC son estrictos (como deberían ser) y no me parecen humanamente legibles, así que teniendo en cuenta que muchos archivos .OBJ no respetan completamente las especificaciones mejor lo hice yo mismo. Sin strtok incluso.

Entonces, aquí está el código fuente (otra variante más, escrita sobre motorJ :) ):
igmrv2008-1/ProjectOvejota-src.zip

(Requiere OpenGL, SDL, SDL_Mixer, SDL_TTF, SDL_Image, todos en sus versiones "-dev")

Y algunos modelos para probarlo:
igmrv2008-1/rikku0056.zip

igmrv2008-1/yuna2.zip

(hay que descomprimir todo y pasarle la ruta al archivo .obj como un parámetro)

e incluso un paquete para windows con (espero) todos sus dlls:

igmrv2008-1/projectOvejota-windows-bin.rar

Los controles son:
A para avanzar
Z para retroceder
flechas para girar la cámara
Q y W giro de barril
1 para ir más lento
2 para ir más rápido
4 para auto-reescalar (hay un bug en algún lugar, no funciona bien en todos los modelos)
5 para cambiar el color del cielo
6 para activar/desactivar normales

Si lo prueban con otros archivos, por el momento sólo soporta imágenes .BMP _cuadradas_ :P
Eso se lo repararé pronto.

El programa ya fue compilado, ejecutado y probado en GNU/Linux, FreeBSD y Windows, y a diferencia del lanjobot, no causa error en GNU/Linux (PSSSSS!!!).

Finalmente unas fotos:

ANTES de las texturas:



Y aquí, con el soporte para materiales implementado.


< Back to blog

This site doesn't use cookies, does not log IPs and does not track you in any way.