Como me aburría, he seguido toqueteando las prácticas... y he acabado haciendo esto, una hoja fratal de toda la vida.
Comentar que la imagen está a 16 bpp, con lo que si alguien quiere toquetearla para variar brillo, contraste, color o cualquier cosa, lo va a tener facil ;)
Hala, me voy a dormir.
Ando en clase en una asignatura llamada Geometría Fractal, en la que me están metiendo una caña considerable en temas de matemáticas... pero el asunto aquí es que las prácticas están quedando bastante curiosas. Por ahora os dejo aquí un par de imágenes que he sacado, a ver que os parecen
Esta primera está en formato panorámico, pensada como wallpaper para mi ordenador. La siguiente tiene un tamaño raro, que he puesto sin querer. Si a alguien le interesan a mayor resolución, que comente :)

Edit: Aqui teneis esta última imagen a resolución ultra-bestia.
Como tenía un poco de tiempo libre, estos días he ido actualizando un poco la página, y subiendo nuevas cosas. Si alguien se ha puesto a rebuscar por la página puede que ya haya visto parte de esto. Para los demás, la lista de cambios es básicamente:
También he ido cambiando un poco la forma de los menús y tal, pero bueno que eso son cosas secundarias.
Cuando cambie alguna otra cosa os iré contando.
Hala, a pasarlo bien.
En una asignatura llamada Programación Multimedia teníamos que hacer un editor de audio que pudiera reproducir sonido, seleccionar partes, cortar, pegar, que mostrara la forma de la onda... en fin, que querían un Audacity completo. Además nos obligaban a usar la API de Windows y el Borland C++ Builder 3 (calculad que está hecho para Windows 95...). Para el momento en que nos distribuimos en grupos yo ya tenía un "ligero" odio por el profesor de la asignatura, pero eso no me impidió meter unas cuantas horas en la parte del programa que me "tocó" a mí (más bien rogué hacerla yo): hacer el render de la onda.
En ViBos, ya tengo un editor que permite definir la forma, colores e iluminación de los árboles... pero todavía no se puede guardar esa información a disco. Eso es con lo que me voy a meter ahora.
A la hora de guardar objetos 3D a disco podemos elegir entre cientos de formatos, o incluso crearnos uno propio. Ya que quiero que el sistema sea modular, y que cualquier parte pueda ser modificada por la persona que trabaje en esto después de mí (si es que hay alguna), lo mejor parece ser usar un formato ya existente y bien conocido. Y ya que estamos, un formato que sea un standard entre los desarrolladores de sistemas 3D (si no un standard real, sí al menos uno de facto). La cuestión es: ¿existe algo así para guardar modelos 3D con iluminación, materiales, etc?
Hasta hace poco, lo más parecido a esto era el formato 3ds del antiguo 3DStudio, pero ahora hay algo mucho mejor, un formato XML llamado COLLADA :)
Hace unos pocos años, cuando Sony estaba preparando el desarrollo de la Playstation3, querían un formato standard para usar en los desarrollos. Un formato que pudieran leer todos los programas necesarios para crear los modelos, texturas, materiales y animaciones de un juego. ¿Problema? no existía ninguno. Cada programa (3ds Max, Maya, Lightwave, Modo, Softimage, ZBrush, etc) utilizaba formatos propios, que muchas veces eran muy complicados de importar en el resto de programas que se querían usar en el desarrollo. Así que decidieron crear uno: COLLADA.
Además de crear un formato muy completo, la gente de Sony decidió publicar las specs y además proporcionar una implementación de referencia con licencia libre (licencia MIT además, que permite hacer prácticamente cualquier cosa con el programa). Además de todo esto, cedieron el control de la especificación al grupo Khronos (que se encarga también de gestionar el standard OpenGL, además de varios otros). Esto ha hecho que el soporte de este formato sea hoy casi universal en las herramientas de modelado y animación, y cada día mas motores gráficos lo soportan directamente.
¿Y esto por qué me importa? Al fin y al cabo yo sólamente voy a estar trabajando con árboles generados por POVTree, y esta herramienta sólo sabe exportar los árboles en formato de POVRay. ¿Para qué querría esto?
El asunto es que una vez tenga un sistema que sea capaz de cargar modelos arbitrarios en un formato usado en tantos sitios, ya no estoy limitado a POVTree. Podría cargar árboles generados con cualquier plugin de 3dsMax. O de Maya. O de cualquier otra herramienta. Y también podría cargar modelos arbitrarios para posicionarlos por el bosque (piedras, troncos de árbol caídos, casas, puentes...). De sólo poder representar los árboles de un bosque, pasamos a poder representar todo lo que pueda haber en uno :)
Comentaba antes que hay una implementación de referencia con licencia libre. Esa implementación es COLLADA DOM. El problema que tiene esta librería es que es muy a bajo nivel. Sólo permite trabajar a nivel de DOM, y requiere un conocimiento bastante profundo del funcionamiento del formato de COLLADA para poder usarla.
Por suerte también existe FCollada (también con licencia estilo MIT, por cierto). Ésta es una librería a más alto nivel, y que permite hacer desarrollos rápidos y programar un importador/exportador de COLLADA en muy poco tiempo. Por desgracia esta librería ha sido creada por una empresa, no tiene una comunidad demasiado formada, y no hay ejemplos ni tutoriales sobre cómo usar la librería.
Bueno, al menos el código fuente está comentado con Doxygen.
Algo es algo
Bueno, let's get back to coding!
El primer cuatrimestre del año pasado elegí una asignatura llamada Geometría Computacional. Esta asignatura, que iba sobre algoritmia aplicada a problemas geométricos, resultó ser la que más me gustó de todo el curso... y esto hizo que currara bastante en las prácticas (un juego programado en C++ y OpenGL, para variar xD). Y resultó que al profesor le gustó la práctica. Tanto, que me ofreció un trabajo. Esto pasó en Febrero, y hasta Julio no he empezado a trabajar (viva la burocracia), pero ya estoy en marcha.
El proyecto se ha llamado ViBos, y pretende ser un sistema para visualizar en 3D el crecimiento de un bosque. Básicamente, lo que tengo que hacer es crear una interfaz para mostrar de forma bonita los datos generados por Vorest, que realiza todos los cálculos de crecimiento en base a un modelo matemático, pero no tiene una forma demasiado depurada para mostrar los datos al usuario.
A principios de verano estuve programando la estructura base del código, y hacia finales de Julio empecé a programar un editor de las especies de árboles que pueden aparecer en cada bosque. Usando los árboles generados por POVTree, la idea es generar información de iluminación y texturas, y guardar varios modelos juntos en un sólo paquete para que así pueda haber varias formas distintas para cada especie de árbol.
Por ahora tengo un sistema que carga árboles de POVTree, genera la información de normales de las caras (normales suavizadas), y calcula el factor de Ambient Occlusion para todo el árbol. Además, desde ayer permite seleccionar el color de las distintas partes del árbol sin afectar a la iluminación.
A partir de ahora queda guardar esos árboles en un formato que luego pueda leer la aplicación principal, y ¡ponerse a mostrar árboles!
Aquí os dejo un video de cómo está el asunto ahora mismo. Si os interesa cómo estaba antes, aqui teneis otros dos videos
Bueno, casi 1 año caída la página... los pochocientos cambios que quería hacer sigo sin hacerlos... y encima no tengo intención de hacerlos. Soy demasiado vago.
Pero sí que quería mantener esto abierto para tener un poco localizadas las cosas que voy haciendo, así que vuelvo a subir la página, aunque no creo que le dedique mucho tiempo.
Además, después de que la RIAA me pegara un susto hace unos meses al obligar a la empresa de hosting a cerrarme la cuenta por violación de copyright (no dejeis nunca varios GB de música en un directorio al que Google pueda llegar...) ya no tenía mucho más uso para este host que servidor de mercurial, backups y poco más... asi que quería sacarle un poco de jugo.
En cuanto al blog, pienso mantenerlo estrictamente en el ámbito de desarrollo de software, manualidades y cosas así. No creo que a nadie le interese si hoy he ido a la playa o si ayer me pillé una cogorza de nivel 25. Además que así no me pierdo y empiezo a hablar de cosas que no tienen sentido.
Por ahora quiero añadir algunas cosas a la sección de software. Básicamente varios de los trabajos que he ido haciendo a lo largo del año en clase... y el proyecto en el que estoy trabajando para la UPM y que será mi proyecto de fin de Máster.
Bueno, ya os iré contando.