miércoles 13 de abril de 2011

Fusionado permanentemente

Este blog, junto con otros blogs que mantengo, se han fusionado en la siguiente dirección:


Todos los artículos y comentarios deberían haberse conservado, si no es así, dejadme un comentario.

lunes 1 de noviembre de 2010

Egg Savior 1.0

Últimamente estuve empleando la animación para algo un poco diferente: un videojuego. Mi proyecto personal paralelo, consistente en desarrollar aplicaciones para el sistema operativo Android, ha tomado ese rumbo, al menos temporalmente, para quitarme una espinita que tenía clavada desde hace mucho tiempo: crear y distribuir un videojuego.
Dado que no dispongo de un terminal Android muy potente, y que esperaba terminarlo antes del 2015, me planteé hacer el juego en 2D. Sin embargo, como necesito gráficos animados y no soy buen dibujante, eché mano de mis conocimientos de animación 3D para renderizar toda la parte gráfica.
Antes de entrar en más detalles, aquí os dejo un trailer del juego:


Una vez que estuvo clara la temática del juego y los elementos que iban a intervenir en los priemeros niveles, empecé a trabajar. La primera tarea fue el modelado y shading del personaje protagonsita, la gallina:
Modelado, Shading y Rigging
El modelado no fue para nada detallado, como se puede ver en la imagen, porque no merece la pena. Se trata de un personaje que va a ocupar unos 50 pixeles en pantalla. Se aplicó el modificador "subdivision surface" para suavizar las formas y nada más.

Respecto al shading, para conseguir unos colores más interesantes, se aplicó SSS en la cresta y los apéndices carnosos de la cabeza (alguien sabe cómo se llaman esos colgajos?). El resto son colores planos para lograr una estética cartoon.

El rigging es muy básico, y es realmente lo único de lo que me arrepiento, porque si bien no fue necesario un rigging más complejo para las animaciones dentro del juego, sí que hubiese venido bien para el material promocional, y las imágenes estáticas de mayor tamaño en que aparece la gallina.
Respecto a la animación, no está muy trabajada por la misma razón, es un personaje que ocupa unos pocos pixeles en pantalla. Sin embargo, el ojo experto sí nota la falta de calidad, y Jordi (mi profesor de animación) ya me tiró de las orejas por ese motivo :) De hecho, la animación es tan básica que en ningún momento ajusté las curvas, está todo hecho con el editor de acciones de blender, donde sólo se pueden desplazar las claves en el tiempo.
En el trailer se puede ver el resultado de animación con la gallina caminando, empollando el huevo e incluso teletransportándose. En el caso en que la gallina sube o baja rampas, se podrían haber hecho animaciones a medida, para conseguir que los pies funcionen mejor, pero cada nueva animación aumenta mucho el tamaño del juego, y dado que se descarga desde un teléfono móvil, decidí reducir al máximo el número de animaciones.

El resto de elementos del juego son completamente estáticos, con lo cual sólo fue necesario realizar modelado y shading.

Respecto al render, hay algo muy importante a tener en cuenta cuando se realizan gráficos para videojuegos, y que pude mejorar gracias a los consejos de Diego F. Goberna: el filtrado de AA. El render que realizar blender por defecto utiliza un filtro de Gauss, que consigue unas curvas perfectas a costa de un desenfoque considerable en los bordes. En un videojuego donde los gráficos tienen decenas de pixeles, este desenfoque provoca una sensación de falta de definición y malgasta espacio de imagen. Por tanto, para videojuegos de este estilo, yo recomiendo utilizar como mínimo el filtro Mitch, aunque yo he usado CatRom, que es el que produce unos bordes más definidos, aunque en ocasiones aparece un poco de aliasing.

Como es un videojuego 2D con gráficos pre-renderizados, la proyección de la cámara debe ser ortogonal, porque la proyección por defecto (con perspectiva) tiene dos efectos nefastos:

  1. Las animaciones cíclicas en que el personaje avance, no encajan, porque cambia la perspectiva al avanzar.
  2. No podremos construir el escenario dinámicamente a partir de piezas individuales, porque tampoco encajarán.
El primer problema se puede aliviar haciendo que todas las animaciones mantengan al personaje estático, y si necesitan avanzar, se comporten como si hubiese una cinta transportadora debajo del personaje, aunque seguramente resbalarán los piés cuando pongamos el juego en marcha. 

La solución de la cámara ortogonal tampoco es perfecta, los objetos pierden profundidad. Esto se puede aliviar en gran medida mediante una iluminación que realce las formas y los volúmenes. Y así se hizo en Egg Savior.

Para almacenar los fotogramas de animación del personaje, por una cuestión de rendimiento, se utilizó una imagen atlas, como las habituales en el texturizado de personajes en videojuegos 3D. Aquí os dejo un ejemplo, con la animación del personaje teletransportándose:
El resultado es el que habéis podido ver en el trailer. Y si algún poseedor de terminal Android quiere probarlo, basta con buscar "Egg Savior" en el market, o bien si estás viendo esta página desde uno de estos terminales, usar el siguiente enlace:

market://details?id=com.eggsavior

viernes 24 de septiembre de 2010

Nueva peli de Bren: Reliquias

Quizás no todo el mundo lo sepa, pero Bren no sólo hace 3D, también produce imagen real, y en esta ocasión aprovecho para elogiar el trabajo de mis compañeros con una tv-movie (peli para televisión) que se estrenará próximamente en TVG. Os dejo a continuación el trailer, que podéis disfrutar en HD:

domingo 5 de septiembre de 2010

El corto sigue en marcha

Como hace ya más de un año que no publico nada, y realmente el corto no está abandonado, voy a intentar poner esto un poco al día.
El corto sigue en marcha. Manuel (guionista y diseñador de personajes, por lo menos) está terminando los últimos detalles de los diseños y ajustando un poco el guión para darle más ritmo. Quizás por la perspectiva que da leer el guión tanto tiempo después de haberlo escrito, nos parecía fundamental revitalizarlo, o al menos, cambiarlo un poco para que resulte más fresco :-)
En cuanto al 3D, he podido avanzar por fin con el personaje protagonista, pero una vez modelado el diseño, decidimos rediseñar los brazos para hacerlo más interesante, así que voy a esperar a tener los nuevos brazos terminados para compartir alguna imagen.
También está modelada la cabeza de uno de los últimos personajes (en total tenemos 8, sé que es una locura). Os enseñaré alguna imagen de este personaje en breve.
Estos tres últimos meses estuve trabajando muy despacio en el corto, porque estoy arrancando otro proyecto paralelo, de programación, y aunque lo he intentado, es difícil repartir el tiempo libre equitativamente. Pero permaneced atentos, porque próximamente publicaré nuevas imágenes!

miércoles 15 de abril de 2009

Otro personaje para el corto


Pues sí, ya iba siendo hora de retomar el corto. Y aquí podéis ver el modelo de otro de los personajes que aparecen. En esta ocasión se trata de un robot un poco más detallado, así que costó un poco más de trabajo. No he podido hacer un tutorial paso a paso porque tuve que parar y volver a empezar unas cuantas veces (desaciertos de principiante), pero os voy a mostrar cómo están modeladas algunas piezas clave antes de aplicar subdivisión.

La pieza que inicialmente creí más complicada, y que finalmente no lo fue en absoluto, es el tronco del robot. No hay ni una sola línea recta, tiene curvas por todas partes, y un corte en forma de cruz en el centro. Lo cierto es que el corte es lo de menos, como ya os contaba en anteriores artículos, se trata simplemente de definir un crease angle de 1.0 en los lados que tengan que terminar con corte, y activar el modificador edge split. Otro problema es el hueco del cuello, pero finalmente se resolvió de la misma forma, haciendo un hueco en la geometría y definiendo esquinas.



En cuanto a la forma, si partimos de un cubo y vamos extruyendo (E) y cortando (Ctrl+R), deberíamos llegar a esto que se ve en la captura sin demasiado esfuerzo, al menos usando el diseño dibujado como base, claro. Está modelado con el modificador mirror activado, para asegurarme de que todo es perfectamente simétrico, una cualidad especialmente deseable en un robot. Recordad que para modelar en modo simétrico, sólo se crea un lado de la geometría, por ejemplo, si creáis el lado derecho (X positivo), nunca debéis llevar ningún vértice al lado de X negativo, o se os cruzará la geometría consigo misma. Como véis, he pegado los cortes justos y necesarios (Ctrl+R) para conseguir la forma. La subdivisión ya se encarga de suavizarlo todo, así que no hay por qué saturar la geometría base, así además es más sencillo hacer modificaciones.

Ya lo habré dicho más veces, pero no perdáis de vista los dos aspectos de la malla en todo momento, tanto subdivididas como sin subdividir. En el modificador de Blender tenemos opciones para visualizar la malla en ambos modos, así que es muy fácil ir comprobando que se parecen. Cuando ambas mallas son muy muy diferentes, tenemos un problema: pensad que vais a tener que aplicar las texturas sobre un mapa de coordenadas UV definido en base a la malla sin subdividir, así que es muy importante, sobre todo, que las proporciones de tamaño de los polígonos sean similares en ambas mallas, para que podamos generar unas UV de calidad. O también podemos pasar de todo y sufrir un pequeño infierno a la hora de texturizar ;)


En cuanto a la cabeza, resultó finalmente ser más compleja que el tronco. La base es muy parecida, pero tiene algunas curvas extra, y esa especie de "cerebro al aire libre" en la parte superior. En cualquier caso lo más complicado es conseguir el volumen adecuado, y de hecho todavía no me convence el volumen que tiene: parece que le pegaron con una sartén y se le quedó toda la cara achatada, pero si la hincho un poco, tampoco queda bien... Seguramente veréis nuevas versiones por aquí ;) En cualquier caso, aquí tenéis también la geometría base sin subdividir, a la que basta aplicarle el operador para ver el resultado de la primera imagen.

Me preocupa un poco la animación facial, porque este personaje no tiene cejas, y la boca lo máximo que permite es abrir y cerrar, pero afortunadamente tampoco tiene un papel muy importante, y de hecho puede que le favorezca tener cara de palo...

Y por ahora nada más, las otras piezas son más sencillas, extrusiones y poco más. De hecho los cilindros de los brazos y piernas son en realidad cubos con subdivisión, son más manejables a la hora de hacer figuras interesantes en los extremos. Si alguien tiene curiosidad por saber cómo es alguna otra pieza sin la subdivisión, dejad un comentario y os lo muestro.

martes 9 de septiembre de 2008

Teasers de Perez 2

Ya estamos terminando otra peli!

Mis compañeros han hecho un trabajo increible con la segunda parte de Pérez, el ratoncito de tus sueños. En este caso no tuve el honor de trabajar con mis profesores originales, que están en otros proyectos, pero no he dejado de coser a preguntas a mis compañeros animadores para continuar aprendiendo. La iluminación, por encima de todo, es diferente a otros proyectos en los que pude participar, porque se trata de integrar 3D con vídeo real, más adelante haré algun nuevo ejercicio y os contaré todo lo que pude aprender.

Os voy a dejar aquí un par de teasers de la peli para que veáis lo que se cuece para estas navidades:

Teaser español:



Teaser argentino

lunes 11 de febrero de 2008

Chutando

Después de una temporada dedicado al modelado para el corto, me apetecía animar un poco, y como los personajes del corto todavía no tienen esqueleto, he cogido de nuevo la bola con patas para hacer alguna cosa. Quería hacer algo simple, sólo para refrescar un poco las clases de Jordi, y puse a la pelota con patas a chutar... otra pelota :) En principio un ejercicio sencillo, es el salto que ya había hecho y luego golpear la pelota. Sencillo si el rig de la bola con patas estuviese bien hecho :-P

El problema de la bola con patas es que no tiene nada para cambiar fácilmente entre animación IK y FK para las piernas. De hecho no tiene controles para FK en absoluto. Tuve que utilizar los huesos directamente y animar algo así como 5 constraints para desactivar el sistema de IK llegado al punto en que va a chutar.

La razón de tener que hacer esto es la siguiente: cuando hace el salto del principio lo más cómodo es animar por IK, para conseguir que los pies no resbalen. Sin embargo, llega un punto en que levanta la pierna para chutar, en que es mucho más sencillo animar con FK, para dar claves directamente al giro de los huesos. Sino, conseguir una curva bonita y suave es un infierno.

A pesar de hacerlo con el método cutre de cambiar entre IK y FK, porque no tenía ningunas ganas de modificar el rig de la bola con patas, he conseguido esto:



Tengo que tomar nota para los rigs del corto, esto de cambiar entre IK y FK parece bastante importante. Por cierto, ¿alguien sabe cómo añadir algún control a Blender en el que centralizar el cambio de IK a FK para no tener que animar varios constraints? Puedo hacer un script de python, pero seguro que hay una forma más estándar sin programárselo uno mismo.

lunes 4 de febrero de 2008

Goya para Nocturna!

Hoy toca presumir un poco, y es que anoche le dieron el premio Goya como mejor película de animación a "Nocturna, una aventura mágica", una de las películas en las que he tenido el honor de participar. La realidad es que mi aportación a esta película fue bastante pequeña, pero me ha hecho mucha ilusión que se haya llevado el premio Goya, y me alegro mucho por todos mis compañeros que han hecho un gran trabajo y sin duda se lo merecen. Enhorabuena a todos!

Aprovecho para animar a quienes todavía no la hayan visto a que lo hagan, es una película muy bonita y el guión está muy trabajado. En mi humilde opinión, es una de las mejores películas de animación que se han hecho en España.

sábado 2 de febrero de 2008

Año nuevo, mano nueva

Manuel me pasó un diseño nuevo de mano, mucho más estilizada que la anterior. Ni que decir tiene que es infinitamente más compleja de modelar que la anterior. De hecho, si me pusiera a detallar los pasos como en el otro caso me harían falta varios artículos. Sobre todo, porque no he seguido un único plan. Cambié de idea varias veces, y tuve que rehacer muchas partes, porque no es nada fácil conseguir esas curvas que giran sobre diferentes ejes. Seguro que con nurbs hubiese sido más fácil, pero quería hacerla con polígonos igual que el resto del corto.

La última opción que he seguido para modelarla, y con la que finalmente la conseguí modelar, es la de identificar aristas y crear circulos que adapto a estas aristas. No entraré en muchos detalles, pero proyecté todo el rato las curvas contra círculos para lograr que todo tuviese unas dimensiones razonables. A partir de este punto es cuestión de extruir y crear polígonos, y de vez en cuando subdividir algúna arista para tener más puntos y poder crear polígonos proporcionados.

Por supuesto apliqué subdivision surfaces para conseguir un aspecto suave sin utilizar demasiados polígonos al modelar, y EdgeSplit para que las aristas afiladas no se suavicen al poner las normales en modo smooth.

En las yemas de los dedos, para no hacer piezas independientes, utilicé la opción de asignar materiales diferentes a polígonos diferentes. De este modo se puede marcar dónde estaría la goma de las yemas sin necesidad de dividir la pieza en dos.

Y este es el resultado final...

domingo 30 de diciembre de 2007

Modelando la mano

Ya tenemos mano para el personaje más redondo del proyecto. Y lo que en principio parecía una tarea evidente al final resultó un poco más complicada, así que voy a publicar aquí el proceso por si a alguien más le resulta de ayuda todo esto. Si tuviese más experiencia modelando, seguramente podría evitar todo este proceso y hacerlo todo "a ojo", pero como no es el caso, necesito buscar la forma de hacerlo todo exacto para asegurarme de que todas las proporciones se mantienen. Esto no pretende ser un tutorial para aprender Blender, así que no voy a entrar hasta el detalle de poner las teclas que se usan para cada cosa.


Primero lo primero. Este es el boceto que Manuel (el director) ha hecho para la mano. La forma básica de la palma es un triángulo con las esquinas redondeadas. Esto no es ningún problema hasta que te pones a modelarlo. Sin embargo, haciendo un poco de dibujo técnico sobre el papel es relativamente sencillo de resolver. Los dedos son cilindros con esferas que los conectan y les dejan un poco de juego para girar. La parte que conecta la palma y la muñeca es un poco más compleja, se trata de unas aspas con los extremos redondeados que terminan confluyendo en la muñeca.


En primer lugar, creamos un triángulo. Es muy fácil en Blender, simplemente creamos un círculo poligonal de 3 vértices. Hay que rotarlo un poco para orientarlo bien, si rotamos bloqueando a giros de 5 grados nos quedará perfecto. a continuación vamos a poner un círculo en cada vértice del triángulo. He elegido uno de 8 vértices porque pienso aplicar subdivision-surfaces más adelante y no es plan de sobrecargar con geometría desde el principio. Para colocar un círculo en cada vértice, se utiliza una técnica bastante recurrente: alineamos el cursor 3D de blender con el vértice, y luego alineamos el círculo con el cursor 3D.
Ahora orientamos todos los círculos, y conectamos sus bordes para hacer la figura final, borrando los vértices sobrantes.


Si extruimos el resultado, obtendremos esto. He aplicado subdivision surfaces para que salga un resultado suave. Está bien, pero ahora habría que hacer las dos tapas, así que mejor definir los polígonos antes de extruir y así tendremos la mitad de trabajo. Aquí cada cual que defina la topología como más le guste, yo he creado cuadrados en las esquinas y rellené el interior con más cuadrados.


Si después de definir los polígonos extruimos y aplicamos subdivision-surfaces, obtendremos esto. No se parece mucho al objetivo, verdad? Falta indicar a blender que no debe suavizar las esquinas superior e inferior. Seleccionad los lados correspondientes y cambiad el crease angle. Ojo, mejor que lo hagáis en modo de selección de lados. Si elegís vértices, también cambiaréis el crease de los polígonos de las tapas, y la subdivisión hará curvas extrañas. en el canto.


Vale, ya tenemos configurados los crease angle. Sin embargo, si activamos el smooth de normales, aparece esto. Es un problema bastante habitual, y me imagino que todos sabéis cómo se resuelve, pero por si acaso lo cuento...
Se debe a que Blender intenta hacer el pino para suavizar las normales en los vértices que forman esquinas de 90 grados, y claro, pasa eso que vemos ahí, que al final todos los polígonos que convergen en esos vértices tienen colores extraños. Si subís el nivel de subdivisión parece que se va arreglando el problema progresivamente, pero esa no es la solución...


Hay dos formas principales para resolverlo. Una es utilizar el autosmooth con una configuración de grados apropiada. A mi no me gusta porque sólo se ve el resultado al renderizar. Yo prefiero el "modifier" EdgeSplit, que permite ver directamente en pantalla el resultado, como en este caso que véis aquí. Mucho cuidado con el orden de modifiers, en este caso el edgesplit debe estar DEBAJO del subdivision, o la subdivisión hará huecos, porque "piensa" que hay objetos diferentes.


Vale, ya está lista la base, ahora vamos a hacer la parte que conecta la base con la muñeca. El principio es el mismo, creamos un triángulo, tres círculos sobre sus vértices, y ahora viene la chicha. A continuación orientamos los círculos para poder eliminar vértices y que todos tengan un hueco apuntando al centro. Simplemente es echar unas cuentas en papel y al rotar usar el teclado para introducir el ángulo exacto. No hay magia negra aquí. Sin embargo luego viene un problema complicado, y es que tenemos que conseguir que todos estos círculos se crucen en el centro. Aquí he de reconocer que tiré la toalla, en lugar de buscar un método exacto, me dejé llevar por una opción aproximada que queda perfectamente bien. Como véis cerré el lado abierto de los círculos y lo extruí. El truco para extruirlos de forma "perfecta" está en pulsar el botón derecho del ratón después de activar el extrude, y moverlos manualmente con los manipuladores en modo "normal", para poder extruir en la dirección exactamente perpendicular al lado que hemos cerrado. Como véis los he hecho cruzarse en el medio para saber cuales son los puntos de cruce. Ahora viene la parte vergonzosa, he movido los vértices manualmente a estos puntos de cruce, y luego he usado "remove duplicated" para fusionarlos. No es en absoluto un método exacto, si a alguien se le ocurre una forma de haber hecho este paso también de forma exacta (sin usar scripting de python) que ponga un comentario, porfa, me he quedado con esa espinita.


Después de tener la silueta terminada, creé manualmente los polígonos y extruí para generar el volumen. Nuevamente, he creado polígonos cuadrados en los extremos, cuadrados en los tabiques, y un triángulo en el centro. Este es el resultado. Ahora tendríamos que hacer que la parte de arriba converja, y eliminar la curvatura en el interior, pero vamos paso a paso.


Para que la parte superior converja, una forma sencilla habría sido escalarla. Sin embargo, eso cambiaría el radio de los círculos, y en este caso el diseño está claro, el radio se mantiene. Por eso, hay que buscar otra solución. Y nuevamente he visitado la tienda de las chapuzas... Borré todos los vértices sobrantes excepto el triángulo central (para tener una referencia) y moví manualmente (aunque en la dirección normal) los semicírculos para posarlos sobre el triángulo. Un nuevo "remove doubles" y voila, ya está.


Para conseguir este aspecto sólo queda cerrar un par de huecos que nos quedan en el interior, creando los 6 triángulos que faltan. Está casi perfecto, sólo queda un pequeño detalle, y es que los tabiques deben ser rectos, y no con curva como sucede en este caso.


Para eliminar la curvatura de los tabiques, simplemente cambiamos el "crease angle" de los 3 lados interiores, y listo. En esta imagen podéis ver cómo suelo cambiar yo estos ángulos, utilizo el menú de propiedades de transformación y pongo directamente un 1 o un 0. Hacerlo con Ctrl+E y el ratón lleva más tiempo y es fácil confundirse.


Y hasta aquí la parte complicada, ahora sólo falta añadir unas esferas y cilindros para crear los dedos. Para esto se vuelve a utilizar la técnica de alinear con los vértices de un triángulo, no tiene más complejidad. El resultado, de nuevo: