Portal personal de Javi Macías
martes, 29 de junio de 2010
Mi progreso académico en URJC
PROGRESO EN INGENIERÍA INFORMÁTICA
PROGRESO EN MÁSTER DE COMPUTACIÓN GRÁFICA
OTRA INFORMACIÓN ACADÉMICA
jueves, 24 de junio de 2010
PFM: MARCHING QUADS
Contexto
Modelar en 3D con herramientas CAD (Autodesk Maya, Autodesk 3D MAX studio, blender, ...) no es una tarea sencilla y requiere de tiempo y esfuerzo. Existen diseñadores de personajes que pueden dibujar sus modelos en 'papel', o sea en las dos dimensiones, pero que desconocen el uso de herramientas CAD que les permitan obtener el modelo del personaje en 3D. Por ello, sería deseable un sistema que permitiera obtener el consecuente modelo 3D desde un modelo 2D dibujado en varias vistas. Además, este modelo, para poder ser usado en sistemas de animación, debería generar un esqueleto.
El sistema de generación de personajes 3D constaría de tres pasos:
- Detectar las siluetas de los bocetos bidimensionales y reconstruir un modelo 3D de forma implícita.
- Pasar el modelo implícito a un modelo de malla poligonal, preferiblemente de quads, ya que este polígono es bueno para las deformaciones de mallas (ocurre mucho en animaciones).
- Añadir un esqueleto al modelo y unirlo a la 'piel'.
En concreto, mi trabajo de investigación se ha enfocado en resolver el segundo paso: a partir de un modelo implícito dado como un conjunto de esferas, obtener el consecuente modelo poligonal de quads.
Marching Quads
El algoritmo que he diseñado está basado en el algoritmo de Marching Triangles, el cual genera triángulos, y que asu vez esta basado en la triangulación de Delaunay.
Además he añadido algunas mejoras para acelerar el algoritmo en base al principio de localidad. Otro añadido ha sido el de ajustar la construcción de los quad a la simetría del modelo, para facilitar la animación del modelo poligonal. Finalmente permití variar el tamaño de los quads a la curvatura del modelo, de modo que el número de polígonos finales se redujese sin afectar a la calidad del modelo.
El algoritmo se compone de un primer paso en el que se localiza un quad inicial sobre la superficie implícita del modelo. Luego, apartir de este quad semilla, se construyen iterativamente el resto de quads probando diversas alternativas y comprobando que el quad es topológicamente bueno con respecto a la malla mediante una restricción especial basada en Delaunay. Para que los quads se ajusten a la superficie, los nuevos vértices que se crean han de ser movidos mediante un procedimiento en el que se intersecta una circunferencia con la superficie implícita para que se mantenga constante la distancia del quad. Finalmente, porque agujeros aparecen en la malla, un último procedimiento para cerrar cracks es aplicado.
Como anexo al trabajo, un visualizador de superficies implícitas y mallas de quads ha sido diseñado. Este visualizador permite ejecutar el algoritmo y guardar la malla resultante en formato OFF. El visualizador ha sido implementado en C++ utilizando las librerías gráficas OpenGL.
RESULTADOS
miércoles, 23 de junio de 2010
MOZART VIRTUAL
Como modelador realicé un ornamento de la plaza veneciana de San Samuelle.
también levanté la plaza de la catedral de salzsburgo.
Como texturizador 'pinté' una casa de la época para la calle vienesa donde nació Mozart.
También apliqué texturas a una iglesia de la plaza de San Samuelle de Venecia.
Y por ultimo le apliqué texturas al modelo del pasillo de entrada al teatro L'Hermitage de San Petersburgo.
El resultado final de estos modelos se pueden ver en los siguientes vídeos:
Salzsburgo
San Petersburgo
Venecia
Prácticas Máster: Fantastic Hero Racing
El videojuego trata de una carrera de coches 1 vs 1 multijugador ambientado en carreras de coches famosos: CSI, picapiedra, DeLorian, 2 tontos muy tontos,... En las carreras importa el combustible, por lo que es necesario en ocasiones entrar en 'boxes'. También existen iconos que te permiten obtener recompensas, así como dinero que se puede usar para comprar otros coches más potentes.
Para el desarrollo del videojuego utilizamos el motor Torque para centrarnos en la lógica del juego mediante scrpits, y de este modo evitar programar físicas, comunicación por red y otras caractristicas de bajo nivel. Además, esta decisión nos permitió dedicar más tiempo al modelado de elementos del juego como coches objetos para los circuitos.
Prácticas Máster: Animaciones
TIN MAN WIZARD
Esta animación de honbre de hojalata fue realizada como aprendizaje de una herramienta de modelado/animación, y en concreto de Autodesk 3D Max Studio. En esta animación probé diversas características que la herramienta me ofrecía: creación de personajes mediante sistemas de huesos + skinning, deformaciones de objetos, animación, piel/pelo, iluminación, texturas, ... El resultado es esta simpática animación que se muestra.
ALIEN FROG
Esta animación fue realizada utilizando Autodesk 3D Max Studio para el aprendizaje de modelado y animación de bípedos. Además, se utilizó la herramienta de footsteps para hacer caminar al alien.
ACOJONING
La siguiente animación fue realizada para una asignatura de animación utilizando Poser. En esta práctica se enfocaba solamente en la animación de personajes, excluyendo el modelado. Para ello se utilizaron diversos principios de la animación: expresividad, anticipación de movimientos, movimientos en arco, inercia, ...
AVICORPION
La siguiente animación fue desarrollada en Autodesk Maya para la asignatura de modelado de personajes. Este proyecto se compuso de modelado del personaje, skinning, musculos en los muslos de avicorpion, dynamics en la barriga, pelaje para la bola, simulación de ropa en la hoja y paints effects animados (rayos, minerales,...). El uso de cinemátika inversa IK permitió facilitar la animación del personaje.
Esta animación se expuso en la sección amateur del festival SIGMAD Animation Festival 2009 de animación desarrollado en la Universidad Rey Juan Carlos y organizado por Madrid ACM SIGGRAPH.
AVICORPION vs MARIO
Utilizando el personaje Avicorpion, y usando en Autodesk Maya, extraoficialmente al máster desarrollé una prueba para utilizar como fondo de escena un vídeo real, resultando en una animación que simula un chroma key.
PFC: Simplificador adaptativo a regiones de interés
CONTEXTO
Existen ocasiones en los que se tienen modelos poligonales muy densos, con una gran cantidad de polígonos, normalmente porque son obtenidos a partir de escáneres. Aunque una resolución poligonal del modelo elevada facilita una mejor calidad visual del modelo, este tipo de modelos son inconcebibles en sistemas gráficos que requieren de un tiempo de procesado en tiempo real como el de videojuegos.
Para poder reducir la cantidad de polígonos de una malla poligonal, existen diversas técnicas orientadas a la eliminación de elementos del modelo. Una de las más extendidas es la técnica de simplificación de mallas basadas en cuádricas desarrollada por Garland. Esta técnica progresivamente elimina las aristas del modelo que menos repercusión tiene en la morfología del modelo, o sea aquellas aristas cuyos polígonos que une se encuentran más planares. Para representar esta característica utiliza las herramientas matemáticas de las cuádricas. Esta técnica basada en cuádricas permite obtener modelos reducidos que guardan una gran similitud morfológica con su correspondiente modelo denso.
Además, para poder elegir rápidamente un nivel de resolución de un modelo, existen modelos multiresolución que son preprocesados mediante la técnica anterior generando un árbol. El sistema de gráficos simplemente tiene que definir un nivel de resolución para que rápidamente se visualice el modelo con una cierta cantidad de polígonos.
Por otra parte, estudios psicológicos postulan que la atención visual suele enfocarse a distintas zonas de una escena dependiendo de diversos factores, como pueden ser el de movimiento, cercanía al observador o color llamativo. Por ejemplo, en un modelo de una cabeza, una persona tiende a centrar su atención en zonas como las de los ojos o la boca. En un modelo que contiene manchas de color, estas manchas suelen ser también focos de atención.
Partiendo de esta motivación, el proyecto se enfocó en la simplificación de mallas poligonales que, en vez de obtener mallas de resolución homogénea, adaptara ésta a regiones de interes del modelo basadas en estudios psicológicos. De este modo, se pretende que las zonas de los ojos y la boca en el modelo de la cabeza tengan una densidad de polígonos mayor a la obtenida en otras zonas del modelo. Igualmente, en el modelo de conejo con manchas, se pretende que estas zonas de color se mantengancon una resolución mayor.
SIMPLIFICACIÓN ADAPTATIVA
Partiendo de un simplificador de mallas basado en la técnica de cuádricas de Garland (TriMeshToMT), y que permite obtener mallas multiresolución, se ha ponderado el peso de las aristas basado en cuádricas con un valor de importancia de la arista que viene definido en el modelo en base a ciertos criterios de atención psicológica.
Primero se definen las regiones de importancia del modelo.
A continuación, el simplificador pondera las aristas en función de la importancia de la arista y su cuadrica, obteniendo modelos simplificados adaptativos.
Con este sistema, dada cualquier serolución del modelo, las zonas de importancia tienen en todo momento más densidad de polígonos que el resto del modelo.
Como añadido al proyecto, también se permitió la desimportancia, o sea zonas del modelo poco importante que podemos penalizar para que tengan menos densidad poligonal que el resto.
Cuando se simplifican mallas con la técnica de cuádricas, y debido a que esta técnica solo atiende a la morfología del modelo, las texturas o colores del modelo suele deformarse. Como añadido al proyecto se investigó el uso del sistema de importancias para mejorar los bordes de color para preservarlos de la deformación. Símplemente se observó si el dar importancia a las fronteras de color permite conservar el borde de color en las simplificaciones. El resultado que se obtuvo fue el de que si se mejora la información de color del modelo.
Por último, para poder seleccionar regiones de importancia en los modelos de forma manual, se desarrolló un visor de mallas para Linux en C++, y utilizando las librerías gráficas OpenGL. Este visor de mallas permite pintar sobre el modelo las zonas de importancia y obtener el fichero de importancias que necesita el simplificador adaptativo.
martes, 22 de junio de 2010
Prácticas Máster: Animación Simulada
Una de las asignaturas del máster trata sobre animación avanzada mediante simulaciones físicas aplicando cálculo numérico.
Mi proyecto para esta asignatura fue el de diseñar un sistema de simulación de ropa. En concreto realicé una simulación de un pañuelo cayendo sobre una esfera utilizando un sistema de simulación de masa-muelle (mass-spring).
El programa se realizó utilizando C++ con las librerías gráficas OpenGL. Puede ser descargado de aquí.
Prácticas Máster: Ray Tracer
El código se encuentra aquí.
Ejemplo de escena obtenida con el trazador de rayos donde pueden apreciarse sombras y reflexiones:
Prácticas Máster: Física
En el Máster de Gráficos que realicé había una asignatura de física donde se vio cinemática, choques, energías, dinámica, ...
Para la asignatura realicé varias simulaciones físicas de forma gráfica en java, utilizando java 2D. Éstas pueden ser descargadas de aquí.
Una de las prácticas es una simulación de un movimiento parabólico. Otra se trata de una simulación del sistema solar. La tercera práctica trata sobre una pelota que se lanza hacia arriba y, mediante simulación de gravedad y aerodinámica y bote con el suelo, la pelota sube hasta que pierde velocidad, baja y rebota con el suelo varias veces. La última práctica es una simulación de un paracaidista que se lanza desde cierta altura y, en una altura determinada, abre el paracaidas. La simulación detecta si el paracaidista se estrella conra el suelo debido a que no abrio el paracaidas a tiempo no pudiendo reducir correctamente la velocidad.
jueves, 17 de junio de 2010
PANGEX

En 2005, mientras acababa las pocas asignaturas que me quedaban de la ingeniería técnica, el centro universitario de Mérida me propuso colaborar en la programación de un videojuego para ser incluído en la distribución JuegaLinex del sistema operativo Linux desarrollado por la junta de Extremadura.
El videojuego es un clon del mítico PANG donde un personaje ha de disparar a unas bolas para subdividirlas en dos más pequeñas hasta que desaparecen, evitando que estas bolas no golpeen al jugador. Este clon esta ambientado en la via de la plata mediante fases que corresponden a ciudades de esta vía romana: Zafra, Mérida, Cáceres y Astorga, siendo ésta última una fase final con un monstruo que lanza bolas.
El videojuego fue desarrollado en gcc (compilador de C/C++ para Linux) utilizando librerías gráficas SDL. El videojuego puede ser descargado directamente desde aquí.
Sobre mí
Realicé la educación básica en el colégio público Trajano de Mérida, y la educación secundaria en el instituto de bachillerato Santa Eulalia de esta misma ciudad. Durante estos años de infancia y adolescencia desarrollé aptitudes músicales aprendiendo solfeo y piano (5 años en escuela privada y 3 en el conservatorio de música de Mérida), y actualmente auto-aprendo guitarra. También aprendí la base de Inglés al realizar los 3 primeros cursos en la escuela oficial de idiomas.
Mi interés por la informática surgió cuando tenía 10 añitos y me encapriché con un ordenador spectrum, evidentemente como videoconsola de aquella época. Sin embargo me picó la curiosidad por el lenguaje BASIC que traía aquella máquina e hice mis primeros pinitos para desarrollar alguna sencilla aplicación o jueguillo.
Al acabar mis estudios de secundaria, ya tenía claro que mi futuro iba a ser el mundo de los ordenadores. Por ello, en el año 2000 ingresé en el centro universitario de Mérida (adscrito a la universidad de Extremadura) para realizar la ingeniería técnica en informática de sistemas. Durante estos años de aprendizaje adquirí destrezas básicas en:
- Matemáticas: Cálculo numérico, álgebra,...
- Física y electrónica : Campos electromagnéticos, circuitos eléctricos, circuitos digitales,...
- Programación: Pascal, C/C++, Delphi, paradigmas orientación a objetos y concurrencia de procesos.
- Algoritmia
- Bases de datos: SQL Server
- Desarrollo web: HTML y ASP
- Redes: Linux.
- Autómatas y compiladores
- Análisis estructurado
Una vez terminada la carrera técnica en 2005, quise profundizar más en este mundo y me fuí hacia Móstoles (Madrid) a realizar la ingeniería informática en la universidad Rey Juan Carlos. Las aptitudes adquiridas en este período son:
- Matemáticas: Técnicas gráficas de modelado geométrico
- Programación: ADA, C/C++, Visual Basic, paradigmas orientación a objetos y concurrencia de procesos.
- Inteligencia Artificial e Ingeniería del conocimiento
- Bases de datos: Oracle, XML
- Desarrollo web: PHP, javascript, ...
- Redes: Windows.
- compiladores
- Ingeniería Software: UML
Acabada la ingeniería en 2008, tuve la oportunidad de acceder al máster de informática gráfica, juegos y realidad virtual que se impartía en la misma universidad, y donde pude adquirir conocimientos de técnicas para videojuegos, modelado, animación, simulaciones gráficas, realidad virtual,... Este máster lo he estado compaginando con un trabajo de becario con el rol de tutor de un curso de informática a distancia para el ejército español.