OBJ con WebGL (into the wild!)

Juan Mellado, 3 Septiembre, 2011 - 11:41

Vaya, ni un sólo post en julio y agosto. Resulta curioso, ya que es la época en que más tiempo libre tengo. En fin..., al grano. He estado trasteando un poco más con WebGL, haciendo cosas básicas, como un cargador de ficheros OBJ. Es un formato de texto plano del que siempre había leído que era fácil de implementar. Lo que no había leído es que en la práctica resulta difícil encontrar buenos modelos para probar. Y lo que es peor, ficheros OBJ bien construidos.

Creo que hay por ahí un montón de plugins que no hacen muy bien su trabajo. Y un montón de gente que le da al botón de exportar y luego no se preocupa de lo que ha generado es un fichero que pueda ser de utilidad para alguien. Pero en fin, al mal tiempo buena cara, y a pensar que gracias a esto he podido aprender algunas cosas.

Para la imagen de este post he utilizado este modelo low-poly de 6.227 triángulos. Después de trastear con él un rato me ha acabado extrañando un poco que tuviera tanta calidad para ser gratuito, así que me he puesto a buscar y resulta que pertenece a un juego llamado "Soul of the Ultimate Nation" (más conocido como S.U.N.), un MMORPG coreano.

WebGL - OBJ model

La imagen está generada directamente en Chrome con WebGL.

El modelo de la izquierda sólo tiene aplicado las texturas de difusa. E incluso así luce bastante bien, porque las texturas son muy detalladas y, a mi juicio, están muy bien elaboradas. Tiene una textura para el pelo de 512x512, otra para la cara de 512x512 también, y una última para el cuerpo de 1024x1024.

Al segundo modelo le he aplicado una iluminación muy sencilla, con una componente ambiental y una luz situada arriba a su izquierda. Mejora mucho con respecto al primero al insinuarse los volúmenes, en vez de verse tan plano, y el ojo/cerebro lo agradece.

El tercer modelo tiene especular, calculado, sin texturas. Bastante exagerado quizás, pero es un efecto que siempre me ha gustado bastante. Queda muy bien sobre todo por los brillos que aparecen en el vientre y muslo derecho. Aunque otros brillos un tanto forzados, como el de brazo y pecho, quizás no deberían estar ahí.

El OBJ no tiene referencias a ningún material, por lo que he tenido que inventarme los coeficientes de iluminación. Lo que si tiene son tres texturas con los mapas de normales, que a priori debería ser lo siguiente que implemente. Una pena que no tenga animaciones.

¿No encontró lo que buscaba?

Utilice el buscador para encontrar más páginas en esta web o en toda Internet.
 
Web www.inmensia.com
luispani (no verificado), 24 Octubre, 2011 - 14:32

Hola excelente trabajo!. una consulta donde puedo encontrar un tuto de como cargar obj?
Gracias!

Juan Mellado, 24 Octubre, 2011 - 18:17

Los ficheros OBJ viene en formato de texto, no tienen mucha dificultad, los puedes abrir con un editor de texto cualquiera, como el bloc de notas por ejemplo y echarles un vistazo rápido.

En la propia wikipedia hay una introducción: http://en.wikipedia.org/wiki/Wavefront_.obj_file

En Google basta con que pongas "obj loader" y el nombre de tu lenguaje favorito.