Bueno ya que he dejado definitivamente el dichoso Wow (una pena pero todo tiene un fin y esto no iba a ser menos :P al menos he estado entre las 10 mejores del mundo que de 12 millones de jugadores no esta nada mal :D) ¡¡tengo tiempo para hacer cosas!! y una de ellas (ademas de la computación avanzada con gpus) es la fotografía en IR (ya sabéis eso que puse hace unos meses con fotos muy emos y bazofia similar pero como me gusta sigo haciendo) y tengo noticias para todos, aunque saco pocas fotos (y algunas me las guardo para mi :P) voy a poner unas pocas conforme tenga :D.
martes, febrero 09, 2010
IR !!
Vomitado por
Raistlin Majere
en
10:30 p. m.
1 comentarios
sábado, noviembre 28, 2009
Project 2
Ya se que últimamente esto es un monográfico sobre el proyecto pero es lo que tiene. Lo termine hace bastantes semanas y desde entonces he estado peleandome con el Latex, corrigiendo algún error que tenía apuntado, añadiendo últimas funcionalidades y chominadas varias. Ahora os pongo exclusivamente imágenes e iré actualizando la entrada conforme tenga más o me aburra.
No espereis mucha variedad de escena que las tengo que hacer a mano sin editor y se me va un rato pintando en un papel y anotando posibles posiciones.
Vomitado por
Raistlin Majere
en
6:02 p. m.
2
comentarios
lunes, septiembre 28, 2009
Project
Bueno vamos a continuar con el tostón este, tras un ultimatum (acaba que te piras XD) me estoy poniendo seriamente las pilas en el proyecto.
He paralelizado ya bastante cosas, aunque ahora me estoy calentando la cabeza con otras diversas, que probablemente tenga que implementar todas y hacer test con cada una.
Hay algunas que no voy a tocar, os explico. El programa usa para la lectura de las escenas un lenguaje que he creado, no uso yac ni lex, pq la escena quiero que se cree "integramente" en cada pc, en vez de tener que crear todos los datos en un pc y reenviarlo o tener que mandar la información a cada nodo del cluster. Los ficheros de configuración ocupan relativamente poco (como bien comprenderéis los hago a mano y con cierta imaginación así que no voy a meter millones de luces cada una con sus datos), así que puedo permitir hacer lo siguiente:
Nodo Padre Lee Fichero Desde Disco Duro -> "Virtualiza" Fichero -> "Comprime fichero" -> Manda a cada nodo del cluster -> "Descomprimen fichero" -> Cada nodo Interpreta la información.
Lo de comprimir y descomprimir es una idea que se me lleva pasando por la cabeza y la verdad no es descabellada ver si el fichero ocupa mucho (kb) y mandarlo comprimido, a día de hoy no esta en el diagrama de flujo final.
Lo gracioso que tiene esto es por ejemplo los ficheros de formas, texturas, etc. Gracias al formato de "virtualizacion" que he creado podemos leer los ficheros como si fueran "propios", es decir leerlos que lo hará sin problema y los tratará como ficheros con privilegio de solo lectura si fueran locales. Mediante la clase FicheroMem... Personalmente creo que debo mejorar ciertos aspectos de esto, la idea es muy buena y esta perfectamente implementada(no da errores de memoria, todo se limpia en cada nodo individualmente,etc) pero tiene fallos conceptuales, es decir, solo funciona bien cuando se hace una peticion COMUN GLOBAL a un fichero, podria por ejemplo activar flags de estado indicando si es global o no y tener una hebra en segundo plano funcionando encargada de lectura de ficheros desde el disco duro por parte del nodo maestro que se encargue de disponer los ficheros según tenga peticiones, ese proceso sería un pelín más complejo pero bastante mas versatil pudiendo leer en cualquier momento ficheros desde cualquier nodo. Para ello bastaría crear un comunicador independiente por ejemplo COM_FILES y tener a la hebra encargada de ello escuchando peticiones por ejemplo el pseudocodigo que se me ocurre:
Previo:
Inicialización del comunicador de ficheros por parte de los nodos.
Inicialización de la hebra de gestión de ficheros por parte del nodo maestro.
Hebra de gestión: (Todas las operaciones de comunicación se realizan mediante el comunicador de ficheros)
While NoFinPrograma
LecturaNoBloqueante; // comprobamos si hay peticiones de lectura
if HayPeticionLectura
if PeticionGlobal
LeeFichero y virtualiza
Realiza broadcast
else PeticionIndependiente
LeeFichero y virtualiza
Realiza envio individual
else sleep de la hebra de 0.1 segundos
Como vemos la idea sería simple elegante y sobretodo versátil, añadiría una potencia muy grande al programa incrementado sólo un poco su complejidad. Esta misma idea tengo pensada para uno de los métodos de paralelización del renderizado que ahora comentare.
Bueno sobre el renderizado, estoy estudiando como paralelizar cosas como el kdtree y el photon mapping. El primero depende claramente de la complejidad de la escena, mientras que en dragon me tarda como 2-3 minutos en construirme el kdtree, en bunny me tarda pocos segundos. Su paralelización es bastante compleja, me explico un kdtree es como un bsp pero en vez de 2 dimensiones son 3 y ademas uso heurística de voxel para calcular el corte, el paralelizado de este algoritmo presenta como incoveniente la recursividad del mismo, es un algoritmo recúrsivo y por lo tanto su paralelización puede suponer un gran problema, podría por ejemplo, crear el árbol hasta el nivel de paralelizaje apto para el número de nodos que dispongo y una vez allí enviar las ramas correspondientes a cada nodo con etiquetas para su reconstrucción posterior en cada uno. Para ello un comunicador propio por ejemplo COM_KDTREE que se encargue en esto y desarrollar el arbol hasta un nivel A = Num nodos y enviar cada rama.
El photon mapping presenta como problema la comunicación >.<, lanzamos muchisiisisisisisiismos fotones, imaginad sobre que se puede dar veces de un millon o cosas por el estilo, así que si para cada photo debo hacer una comunicación entre nodos puede ser un caos enorme. ¿Pq no haces paquetes y los envias? pues simple, se requiere saber si el photon anterior ha sido aceptado o no, tiene un método de seguridad para evitar overflow y cosas por el estilo así que comprueba continuamente el número de fotones aceptados etc. >.< quiero paralelizarlo pq en algunas escenas puede llevarme como 10 minutos, otra solución es coger al cluster más potente y encargarle a él la tarea y que el resto esperen y se lo envíe.
El renderizado estoy estudiando variantes que voy a tener que programar todas XD, la más simple es dividir la imagen en el número de nodos que hay encargar el renderizado de manera individual y juntarlo posteriormente, esto se puede hacer por filas y por columnas, también lo haré por porciones(esta opción es bastante más dificil de programar, necesita peticiones tipo los ficheros con comunicador propio). La más "pro" y que voy a mandar a tomar porculo directamente es estudiar la densidad y complejidad del kdtree según nuestra visión y dividir esa zona entre más clusters y las zonas menos densas entre menos pcs. Las primeras las tengo sobre papel y estoy viendo que partes adicionales de las que ya dispongo debo modificar para que no reviente esto xD.
Antes de nada quiero hacer una versión final secuencial pq será la que compilaré para probar la secuencial ya que lo que voy añadiendo ya es para paralelización y está metiéndole mucho código inútil.
Como podéis comprobar, this is serious business.
Vomitado por
Raistlin Majere
en
11:42 a. m.
1 comentarios
domingo, agosto 02, 2009
lunes, junio 01, 2009
Más noticias
Bueno hoy se puede decir que acabo de terminar la primera parte de mi proyecto, a falta de comprobar texturas (me he centrado mucho más en el photon mapping que a comprobar que el módulo de texturas funciona correctamente que me da que no ya que lo diseñe con una idea en la cabeza y al final uso otros espacios de color etc).
Bueno os pego screens de lo que es un photon mapping.


Vomitado por
Raistlin Majere
en
4:11 p. m.
3
comentarios
jueves, marzo 12, 2009
Secuencial 1.0
Hoy a eso de las 11:04 RuneRay ha pintado lo que debía pintar. Las imágenes que colgué hace tiempo tenían bastantes problemas no visibles, la imagen que subí era de las pocas que funcionaba bien y me servía de prueba para materiales y luz, tenía problemas de precisión numérica, distribución espacial, algebraicas, todo era código en c++ con lo que la prueba era horripilantemente tediosa, imaginad que cada cambio en la escena era compilar el proyecto, encontrar un fallo era compilarlo también y una compilación desde 0 puede significar 5 minutos de compilación de ficheros, pocos objetos definidos, parámetros incorrectos, sólo trabajaba en radiancia los resultados en definitiva un horror. Aquí os cuelgo dos imagenes una de radiancias y otra mapeada a blanco, es poco pero es el único fichero que tengo, cosas a hacer en estos próximos días:
- Lector de objetos desde ficheros para poder incorporar cualquier objetos.
- Corrección en la lectura de ficheros. Actualmente si hay un fallo en el fichero no lo canta y sigue leyendo, esto puede hacer que entre en bucles, es fácil detectarlo y corregirlo pero para la primera versión he usado un fichero con formato correcto y ya esta.
- Crear un minieditor para poder crear escenas de la nada sin necesidad de escribir texto en un fichero evitando errores.
(PICAD SOBRE LAS IMÁGENES PARA VERLAS ENTERAS)
Vomitado por
Raistlin Majere
en
11:08 a. m.
0
comentarios
sábado, enero 31, 2009
Sorprendente.
Navegando he encontrado esta noticia que me ha dejado sorprendido, más que nada porque parece sacada de un cuento de estos de cuando eres pequeño y te hace ver que hay cosas que la ciencia tardará mucho en descubrir.
http://www.ecuadorciencia.org/noticias.asp?id=6481&fc=20090128
Mira que soy duro como una piedra pero estas cosas parece como el agua congelada en invierno que se filtra por las grietas pequeñas del material, lo rompe todo y por lo menos consigue llamar la atención.
PD: Os odio a todos.
Vomitado por
Raistlin Majere
en
12:37 p. m.
1 comentarios
viernes, septiembre 19, 2008
Dos videos que espero os gusten
A SHORT LOVE STORY IN STOP MOTION from Carlos Lascano on Vimeo.
The Legend of the Scarecrow from Carlos Lascano on Vimeo.
Vomitado por
Raistlin Majere
en
1:23 a. m.
2
comentarios
martes, septiembre 16, 2008
jueves, septiembre 04, 2008
Aprendiendo cosas
Hoy se me ha vuelto a reafirmar una idea que tenía bastante clara:
"No debo fiarme de nadie, ni amigos, familia ni nadie".
Vomitado por
Raistlin Majere
en
8:02 p. m.
2
comentarios
miércoles, septiembre 03, 2008
Delight and Angers
Everyday takes figuring out how to live,
Sometimes it feels like a mistake,
Sometimes its a winners parade,
Delight and Angers,
I guess thats the way its supposed to be...
Please heal me,
I can't sleep
Thought I was unbreakable,
But this is killing me
Call me, everything
Make me feel unbreakable,
Lie and set me free
I feel the fear takes hold
Affraid this hell I create is my own
Come my franticness,
I cant take it anymore,
This used to be my own world,
But now I've LOST CONTROL
Please heal me,
I can't sleep
Thought I was unbreakable,
But this is killing me
Call me, everything
Make me feel unbreakable,
Lie and set me free
Chasing leftovers,
Under the fading sun,
Searching for shelter,
I feel my time has come
Please heal me,
I can't sleep
Thought I was unbreakable,
But this is killing me
Call me, everything
Make me feel unbreakable,
Lie and set me free
Vomitado por
Raistlin Majere
en
3:18 p. m.
0
comentarios
martes, agosto 19, 2008
Dead End
I think we lost today
There's no morning after
No one's around to blame
I'm not afraid to bleed
But I won't do it for you
A star among hypocrites
The melody of our time
So say goodbye to the world
We are the dead that walk the earth
Scream your lungs out
Wait for laughter
You don't have to wait for ever
Here's the next disaster!
What decides when you've lost a war
When the first man falls
Or when they've erased it all
We're to numb to feel
The downfall starts right here
Hold your breath and swim
Swallowed by life's tear
In times of make believe,
No one really seems to care
Maybe I should care less
Cause I will die too
So say goodbye to the world
We are the dead that walk the earth
Scream your lungs out
Wait for laughter
You don't have to wait for ever
Here's the next disaster!
What will it take for us to realize
The more we provoke,
Winter will come TWICE
Save all your prayers
I think we lost today
There's no morning after
No one's around to blame
Scream your lungs out
Wait for laughter
You don't have to wait for ever
Here's the next disaster!
Scream your lungs out
Wait for laughter
You don't have to wait for ever
Here's the next disaster!
Vomitado por
Raistlin Majere
en
5:21 p. m.
0
comentarios
sábado, agosto 16, 2008
Moonshield
collecting the tragedies still
Hollow ambitions in a hollow mind
carried my cross to the hill
And how I lust for the dance and the fire
deep of the nectarine sunset to drink
spill me the wind and its fire
to steal of the colors - I'm the moonshield
Shattered hope became my guide
and grief and pain my friends
a brother pact in blood-ink penned
declared my silent end
Naked and dying under worlds of silent stone
reaching for the moonshield that once upon us shone
Naked and dying under worlds of silent stone
reaching for the moonshield that once upon us shone
And how I lust for the dance and the fire
deep of the nectarine sunset to drink
spill me the wind and its fire
to steal of the colors
I am... I am... I am...
I'm the moonshield...
Vomitado por
Raistlin Majere
en
3:14 p. m.
0
comentarios
martes, agosto 05, 2008
Algo de Helloween
Vomitado por
Raistlin Majere
en
10:15 a. m.
0
comentarios
martes, junio 17, 2008
Las tres cosas que todo hombre debe hacer a lo largo de su vida
Vomitado por
Raistlin Majere
en
12:30 a. m.
2
comentarios
miércoles, mayo 28, 2008
Inpainting
Otra Actualización:
http://www.megaupload.com/?d=84BCDYOD
Enlace con el código que compila bajo linux y windows. En windows necesitáis por lo menos la versiones express de Visual Studio 2008
Actualización:
http://www.megaupload.com/es/?d=KDA0AVA0
Desde ese enlace puedes descargar el programa. Hay dos ejecutables uno que paraleliza y otro que no.
Llevaba una temporada con más pájaros en la cabeza de lo habitual.
Una asignatura de la carrera de esas que cursas por amor al arte, sabes que vas a tener que trabajar más de la cuenta, pero te encanta lo que haces.
La asignatura en cuestión es procesamiento digital de imágenes, sólo puedo contar maravillas sobre la asignatura y sus docentes, y quien me conoce sabe que suelo ser muy crítico con las asignaturas de la carrera.
Elegimos un proyecto de restauración de imágenes para una parte de la asignatura. Dentro de este mundillo a estos métodos se le suele llamar métodos de inpainting.
http://en.wikipedia.org/wiki/Inpainting
He implementado varios algoritmos que voy a comentar:
- Método de Oliveira y Multirresolución ¿En que consiste el método de Oliveira?, su idea es muy simple, consiste en aplicar convoluciones sobre unos pixeles marcados para ser "procesados" por el algoritmo, las convoluciones suelen ser con kernels gaussianos. Cualquiera con un poco de idea podrá comprobar que este método produce las zonas muy muy borrosas, y para nada como en los papers aparecen, requiere un nivel de selección de máscara tan elaborado que antes de terminar una has tenido nietos y no sabes ni como. La multirresolución ayuda un poco y consigue que no se vea tan borroso. Aunque este algoritmo tenga ese inconveniente es rapidísimo.
-Método de Bertalmio la verdad que empecé a implementarlo, se me fue un poco la cabeza con las laplacianas y diferenciales de segundo orden que documenta el pobre hombre en su tesis y al final sólo se ve algo muy borroso XD. Según he conseguido sacar en claro también produce resultados algo borrosos para zonas de restauración grandes.
- Método de Crimisi. El método definitivo XD. Simplemente increíble, los resultado obtenidos son mejores de lo que me esperaba, el inconveniente es lo que tarda. A ver como explico este método..., bueno ya colgaré la documentación con el algoritmo detallado, etc... Para imágenes pequeñas con aproximadamente un 6-7% de la imagen dañada de forma no normal puede tardar cosa de 6 minutos más o menos pero para una imagen grande con el 30% llevo dos horas y le queda la mitad todavía. Ventajas: Los requisitos matemáticos no son tan elevados como para el de Bertalmio y encima da unos resultados muy superiores. Este método como mucho es calcular los vectores gradientes de los píxeles, y aplicar convoluciones para detección de fronteras. ¡¡¡Altamente paralelizable!!!! ya he visto el cuello de botella de la aplicación y estoy estudiando hacer una versión con OpenMP y otra usando CUDA. Voy a ir colgando imágenes que muestren los resultados del método y vosotros mismos juzgáis :)












Vomitado por
Raistlin Majere
en
10:33 p. m.
3
comentarios
sábado, mayo 03, 2008
Piensas en cosas que no tienen sentido mirando atentamente la pared, es blanca pero al perder la vista cada vez se hace más oscura terminando en una oscuridad que no es negra, es vacía, no hay nada, sola.
Caminas por la calle mirando al infinito, prestas atención sólo a las señales para evitar un accidente, sigues pensando en cosas, tu mirada perdida no encuentra rumbo, el camino lo haces sin guía, solo.
Recuerdas cada esfuerzo que has realizado, las cosas que te importan y estás solo mirándote al espejo recién salido de la ducha limpiando el vaho con la mano dejando una marca que indica que estás solo, es la única marca del cristal.
Haces gesto con la cara para despejarte mientras cruzas el semáforo todavía en rojo pero sabes que no van a pasar coches, has pasado tantas veces por ahí a lo largo de los años que sabes cada paso de cebra de memoria, no hace falta esperar a que se ponga verde, el de la intersección está abierto y no pueden pasar mientras, pero te das cuenta de una cosa, lo cruzas solo, eres el único que lo sabe.
Vas al trabajo todos los días, tienes compañeros, hablas con ellos, no consigues hacerte entender, mientras te tomas el café miras de forma desinteresada las paredes de papel del restaurante, pronto pierdes la vista y se hace oscura, vacía, sola.
Llegas a tu casa, esperas que alguien te reciba al llegar, pero pasa una cosa, estás solo.
Te tumbas en la cama con la ropa y tratas de pensar en algo, tienes la mente nublada, agotado del día y sigues andando.
Pasas por el puesto de helados que tan apetecibles te parecen, siempre piensas “algún día me tomaré uno” sabes que ese día no llegará, estas solo no tienes a quién invitar y tener una excusa para tomarlo, a lo mejor pasas por ahí para encontrar a un conocido e invitarlo a probar ese helado con tan buena pinta.
Te secas el pelo y recuerdas cuando tu madre lo hacía de pequeño, ya no está, no quieres recordar cosas tristes, siempre guardas las lágrimas para el momento que no hagan falta, y ahora estás solo.
La toalla huele a rancio debes meterla en la lavadora, el sonido del martillo neumático te hace preguntarte cuándo terminarán las obras de la calle, siempre que lo piensas ha habido obras y siempre las has cruzado solo.
Mueves la cabeza, los ojos dejan su obnubilación, estás en la silla, la puerta se abre…
Vomitado por
Raistlin Majere
en
4:05 a. m.
1 comentarios
lunes, abril 14, 2008
I will wait for you
Muchos de vosotros habréis visto futurama, sabréis que sin duda es la mejor serie de animación con temática cómica jamás creada. En un cápitulo aparece Seymour, un perrito que Fry le da de comer y la criatua se encariña de él. Muestra hasta que punto puede ser un animal fiel a una persona, sólo espero que algunas personas sean como el perro. Este capitulo tiene para discutir horas sobre la conducta humana y de los animales, y seguro que llegaríamos a la conclusión que muchas criaturas de la naturaleza son más humanas que la mayoría de nosotros, para ser una persona no basta con nacer como tal, hay que mostrar lo que nos diferencia del resto.
Video con escenas de Seymour:
Simplemente triste, si no se os encoge el corazón es que tenéis un serio problema:
Si quereis la canción
Esta es la canción del primer video, que también merece estar en la entrada
Vomitado por
Raistlin Majere
en
11:05 p. m.
1 comentarios




