jueves, 26 de septiembre de 2013

Neandertal

Vuelvo con un nuevo trabajo que combina dos de mis herramientas preferidas: Blender (Cycles) y Gimp. Se trata de la representación idealizada de un Homo Neanderthalensis, morador de la Europa y el Próximo Oriente de hace entre 230.000 y 28.000 años, y que convivió con los primeros hombres modernos europeos.
Físicamente se caracterizaban por tener una gran robustez: extremidades cortas, pelvis ancha y una altura entre 1.60 y 1.70 metros. En cuanto a su cráneo, destacaba por tener el toro supraorbital bastante marcado, una frente baja e inclinada, un mentón poco marcado y una capacidad craneal incluso superior a la de nuestra especie (1.550 cm3 frente a 1.200 cm3).

En cuanto a la imagen: el modelado, la pose, materiales, iluminación y render han sido realizados con Blender, aunque con bastante postproducción final para afinar determinados detalles. Este trabajo ha sido básicamente una prueba para comprobar las posibilidades de dos nuevas características implementadas en el motor de render Cycles:
- Subsurface scatering: Un nuevo shader para mejorar la representación de piel humana. 
- La capacidad para renderizar pelo (todavía en la rama Experimental, aunque completamente funcional).

Con estas dos características, ya podemos considerar que Cycles alcanza la madurez necesaria para poder utilizarse con garantías en la mayoría de proyectos. De hecho, sorprenden los buenos resultados y la relativa velocidad en los renders (y eso que al estar en la rama Experimental todavía no se emplea el renderizado GPU en el renderizado de cabello). La estabilidad es bastante buena, aunque puede verse comprometida en algunos momentos si el número de polígonos o de partículas de pelo es demasiado elevado.

De obligada visita para todo el que quiera experimentar con estas dos características son los siguientes enlaces (ambos en inglés):

De hecho, en mi modelo de neandertal empleo el shader de Matt que, con algunos ajustes y una adecuada iluminación, puede lograr resultados realmente sorprendentes. Por su parte, Andrew explica en su página cómo renderizar el cabello con Cycles y ajustar su correspondiente material con resultados igualmente excelentes.

La técnica base de modelado ha sido poligonal con el posterior esculpido de los detalles utilizando las herramientas propias de Blender para estos menesteres. Por último, he empleado Gimp para realizar los pertinentes retoques en postproducción, sobretodo, en la zona de la cara y ojos. De hecho, había detalles que no me convencían y que partían de un modelado que no acaba de quedar redondo (de hecho, ahora mismo volvería a reorganizar la malla de nuevo).

A continuación tenéis un cartel de 44x26 cm y un fondo de pantalla de 1024x768 píxeles que he preparado con unas vistas frontal y lateral del modelo:

Cartel (44x26 cm)
Fondo de pantalla (1024x768 px)

Saludos y espero que os guste.

jueves, 20 de junio de 2013

Imágenes para las divinidades

Os presento un trabajo realizado para la exposición temporal del Museu de Prehistòria de València: Imágenes para las divinidades. Se trata de un corto animado con estética 2D pero enteramente realizado en Blender.

Imágenes para las Divinidades. Corto animado

Esta exposición tiene como protagonistas a algunos exvotos ibéricos procedentes de Jaén y que se conservan en este Museo. Estas pequeñas piezas de bronce eran depositadas en cuevas santuario a través de rituales donde se ofrecían a las divinidades para realizar peticiones o en agradecimiento por las demandas cumplidas.

Estos exvotos representan a figuras humanas o animales completas, o partes anatómicas aisladas. Además, lo hacen en ocasiones con un nivel de detalle increíble lo que nos permite, en algunos casos, hacernos una idea de cómo podrían ser los propios oferentes.

Cuando nos planteamos realizar una animación para esta exposición barajamos la opción de presentar un audiovisual, digamos más ‘ortodoxo’, con imágenes reales de los propios exvotos, explicaciones, ‘voces en off’... sin embargo, pronto nos sedujo la idea de ir un poco más allá: que los propios exvotos cobrasen vida y fuesen ellos mismos los que se explicasen a través de una pequeña historia.


Efectivamente, un día, Jaime Vives y yo estábamos discutiendo sobre la posibilidad de realizar una animación de estas características por el lógico problema de plazos y, casi mágicamente (como si las propias divinidades intervinieran para expresar su opinión), la idea empezó a cobrar forma de historia con un final más o menos inesperado.

La trama estaba casi definida, ahora era el momento de tratar los aspectos relacionados con la apariencia y el ‘tono’ visual. Parecía claro que, puesto que los propios exvotos iban a cobrar vida, éstos debían reflejar una conexión con el mundo real, aunque sin perder de vista su estética original.


Nos gustaba la idea de que los personajes funcionaran como marionetas: con una animación sencilla, pero lo suficientemente expresiva para poder llevar a buen puerto la historia. Parecía un trabajo ideal para emplear la técnica de animación ‘Cutout’, para la que originalmente se utilizaban recortes de papel o cartulina. De hecho, incluso barajamos la posibilidad de hacerlo manualmente, pero lo ajustado de los plazos y la relativa complejidad de la historia hizo que decidiéramos ir sobre seguro. Así, nos decantamos por utilizar la animación por ordenador, aunque simulando y respetando esas características que tanto nos seducían.


Tras algunas pruebas de concepto desarrolladas con Inkscape y dar con la apariencia que buscábamos, ahora tocaba decidir cómo llevar a cabo la animación. En un trabajo anterior, de apariencia similar, la combinación de software elegida fue Inkscape + Synfig Studio + Blender. Sin embargo, para este trabajo decidí que había que simplificar aún más el proceso y, pese a ser un trabajo aparentemente 2D, decidí echar toda la carne en el asador en favor de Blender.

Así, preparé los modelos bidimensionales en Inkscape (tanto escenarios como personajes) para luego importarlos en Blender. Una vez allí, detallé los materiales y texturas para darles el aspecto definitivo. En este punto, volví mi mirada a las referencias de Maurice Noble y sus fondos desenfadados y muy cercanos a la abstracción, pero que son capaces de reforzar la historia sin desviar la atención de los elementos principales.

A continuación, preparé un sistema de ‘rigging’ para dotar a los personajes de acciones básicas y poder acceder de una forma, más o menos, sencilla a sus distintas vistas. Del mismo modo incluí los fondos como decorados que subían o bajaban de un modo similar a la tramoya de los teatros. La referencia en el estilo de animación de los personajes se inspira bastante en una serie ya mítica como ‘South Park’ aunque el tono humorístico de esta animación está bastante lejos de ella.


Pese a esta apariencia bidimensional, poder disponer de la tercera dimensión en Blender ha sido una verdadera tabla de salvación en la configuración de algunas escenas. De hecho, la mariposa tiene un diseño tridimensional y su movimiento es guiado a través de un ‘Path Constraint’ a lo largo de los tres ejes. Incluso la ‘Máquina del Tiempo’ es un mecanismo en 3D cuyo contador funciona de un modo similar a como lo haría uno real.



Respecto al apartado de iluminación sólo hay dos lámparas por escena: la denostada (aunque muy útil en este caso) ‘Hemi’ para la ambientación global y otra luz tipo ‘Point’ con la opción de ‘Only Shadow’ activada. Esta combinación refuerza esa sensación plana pero a su vez le otorga algo de relieve al crear sombras entre los distintos elementos aunque en algunos casos no coinciden con la que se supone debería ser dirección de la luz en la escena, ya que el punto de origen de la luz es distinto.

Toda la composición final de vídeo y audio ha sido realizada dentro del propio Blender, por lo que no es descabellado pensar en este programa como una verdadera navaja suiza dentro del mundo de la edición audiovisual y que, además, cumple con creces con los objetivos marcados.

Bueno, espero que toda esta parrafada os haya despertado algo más de curiosidad sobre estas maravillosas piezas. Disfrutad con la animación o con la propia exposición si tenéis la ocasión de acercaros al Museu de Prehistòria de València.

Saludos

miércoles, 29 de mayo de 2013

Gamekit: Crea juegos para Android desde Blender

Si en mi anterior entrada abordaba la realización de juegos y aplicaciones para Android con AppInventor, ahora analizaremos otra herramienta que también tiene un gran potencial y que permite desarrollar juegos para Android desde el propio Blender: Gamekit

Gamekit es un motor básico de videojuegos que integra dentro de Blender a Ogre para la construcción de gráficos (también existe una versión para Irrlicht), Bullet para las físicas y Open AL para el sonido. Esta integración con Blender le permite aprovechar muchos de sus elementos como Materiales, Iluminación o incluso los propios ‘logic bricks’ a la hora de desarrollar el juego.

Además, también permite la integración en otras plataformas como Linux, Windows, OSX o el propio Android mediante Eclipse. Tiene una gran versatilidad en el apartado de programación, ya que la lógica del juego puede realizarse, no sólo con los propios ‘logic bricks’ de Blender, sino también, a través de C++ y Lua.

Instalación:
Para probar GameKit no es necesario instalar nada. Sólo has de descargar el archivo que se corresponda a tu sistema operativo y descomprimirlo. Dentro de la carpeta descomprimida podrás observar una serie de archivos:
- ‘momo_ogre.blend’ es el propio juego hecho con Blender (escena y personajes).
- ‘Ogrekit’ es el ejecutable ya compilado.
- ‘OgreKit.log’ y ‘OgreKitStartup.cfg’ son los archivos de configuración del juego.

Una captura con el archivo de demostración momo_ogre.blend en funcionamiento

Para hacerlo funcionar sólo has de lanzar el ejecutable. De hecho, incluso podrías empezar a hacer pruebas con tus propios archivos sustituyendo el archivo ‘momo_ogre.blend’, aunque conservando ese nombre. Eso sí, primero es conveniente ver cómo funciona este motor a nivel de ‘logic bricks’ y materiales, porque no vale todo y existen ciertas reglas a la hora de desarrollar el juego para que GameKit pueda hacerlo funcionar correctamente.

Integración de GameKit en Blender:
Efectivamente, para que podamos comprobar al momento nuestros avances en el desarrollo, lo realmente cómodo es trabajar con este motor desde dentro del propio Blender. Para ello, lo incorporaremos como un 'Addon' dentro del propio programa.
Dentro del archivo comprimido que has descargado anteriormente deberías tener una carpeta llamada ‘BlenderAddon’. Debes copiar esos archivos en la carpeta donde tengas instalados los AddOn de Blender (archivos y carpetas en sus respectivos directorios) o si lo prefieres instalarlo desde el propio Blender:
- File > User Preferences > Addons > Install from File (localizando esos archivos)
Una vez instalado has de habilitar el plugin en esa misma ventana. Además, debes tener la carpeta de archivos temporales apuntando a una ruta correcta:
- File > User Preferences > File > Temp:'ruta de tu carpeta temporal'
Ahora GameKit debería aparecer en la lista desplegable de los motores de Render, así que cambiamos de ‘Blender Render’ a ‘GameKit’.
En la ventana lateral de ‘Render’ deberíamos ver las opciones de Gamekit. Es muy importante indicar la dirección del ejecutable en ‘Runtime’, porque de lo contrario nos dará un error.

Si todo ha ido bien, ya podemos lanzar Gamekit a través del botón ‘Start Game’, el cual abrirá una nueva ventana con nuestra escena empleando ese motor de juegos en lugar del motor de Blender.

Captura con una vista de Gamekit integrado en Blender

Integración con Eclipse:
Bueno, ya has estado un rato trasteando con él y ves que tiene buena pinta. Aunque de momento no hay rastro de Android por ningún lado... vamos con ello:
En primer lugar necesitas volver a la página de descargas del proyecto para conseguir el archivo ‘GameKit-Android-EclipseProject-v7a-r1119.zip’. Una vez descomprimido verás dos carpetas: una con el plugin para Blender y otra llamada ‘gkAndroid’ que es la que contiene los archivos del proyecto. Recuerda dónde guardas la carpeta ‘Gamekit-Android’ porque luego has de apuntar hacia ella para configurar tu proyecto.
Ahora utilizaremos Eclipse como entorno de desarrollo, así que si todavía no lo tienes instalado, es el momento de hacerlo y comprobar que tenga correctamente instaladas las herramientas para Android (ADT Plugin).
Además, como comentaba en mi anterior entrada, si tienes tu propio Tableta puedes conectarla mediante ‘ADB’ (una vez hayas instalado el SDK de Android) para poder ver al momento los resultados de tus modificaciones. También es posible trabajar a través de un emulador de Android o dispositivo virtual, aunque seguramente puede surgir más de un error con algunas librerías y finalmente no cargar tu juego (además de otras carencias como por ejemplo el acelerómetro).

Una vez esté todo listo, necesitarás crear un nuevo proyecto en Eclipse para Android. Para ello:
- Inicia Eclipse
- File > Import > General > Existing Projects into Workspace > Next
- Navega hasta la carpeta ‘gkAndroid’ que has descomprimido antes > Ok
- Selecciona GamekitAndroid > Finish
- Ahora verás en la ventana lateral izquierda una lista con los archivos del proyecto.


Cargando un nuevo proyecto en Eclipse

Para ejecutar el archivo de demostración:
- Haz clic con el botón secundario sobre tu proyecto (en la ventana lateral) > Run as > Android Application.
- Ahora deberías ver a Suzanne saltando en una pequeña escena llena de obstáculos y que puede ser controlada mediante el acelerómetro de tu Tableta.

Para ejecutar tus propios archivos:
- Copia tu archivo ‘.blend’ dentro de la carpeta ‘assets’ y renómbralo como gk_android.blend
- Si lo has hecho desde fuera de Eclipse (el navegador de archivos de tu sistema), tendrás que refrescar los archivos de tu proyecto: clic derecho sobre tu proyecto > Refresh
- Ahora cuando lo ejecutes podrás ver tu propia escena funcionando en la Tableta.

Es bastante aconsejable conservar una copia de todos los archivos originales. Así, podrás observar su estructura y cómo están realizados, ya que dan muchas pistas que pueden ser utilizadas como base para tus propios trabajos.

Conclusiones:
Con todas estas premisas y después de trastear un poco, el resultado ha sido un poco agridulce. En efecto, en los últimos meses parece observarse un descenso en la actividad de desarrollo dentro de ese proyecto. Este parón limita bastante las opciones para realizar algún juego más elaborado, puesto que muchas de las características que ya están reportadas podrían dar un salto cualitativo importante al proyecto. Así las cosas, las limitaciones actuales son un escollo importante si quieres realizar algún juego más elaborado.

Videojuego de prueba desarrollado con Gamekit en Blender para Android

Destacaría algunos inconvenientes detectados durante la realización del juego de prueba (y que deberíais tener en cuenta si os lanzáis a la aventura):
- De momento, no soporta eventos multitáctiles. Problema importante cuando intentas configurar botones de control simultáneos.
- El sonido para  Android no está configurado de serie, ya que existen ciertos problemas de licencia en las librerías OpenAL para Android.
- Las sombras están deshabilitadas en la versión para Android.
- No acaba de soportar de manera correcta las imágenes con mapas de Normales dentro de los Materiales.

Como ventajas destacaría naturalmente la integración con Blender y sus ‘logic bricks’, la posibilidad de utilizar un motor de juegos tan potente como Ogre dentro del propio Blender y, sobretodo, su capacidad multiplataforma a la hora de exportar los juegos.


Algunos enlaces de interés sobre Gamekit:
- Página oficial del proyecto: http://code.google.com/p/gamekit
- Para acceder directamente a todas sus descargas: http://code.google.com/p/gamekit/downloads/list
- Documentos de ayuda en formato .chm
- Foro oficial donde puedes resolver muchas de tus dudas: http://gamekit.org/forum/

_______________________________________________________

ADENDA.
En este apartado iré añadiendo material que ayude a resolver algunas de vuestras dudas que me habéis hecho llegar en vuestros comentarios.

Adenda 1. Sobre eventos de teclado en Blender:
Para simular 'Touch Events' mediante los 'Logic Bricks' de Blender puedes utilizar una combinación de dos sensores tipo 'Mouse':
- 'Left Button' simula el clic.
- 'Mouse Over' determina la posición del cursor sobre el objeto.


Adenda 2. Un modo sencillo de abrir tus modelos de Blender en Android
Desde el siguiente enlace podrás descargar un archivo .apk que permite visualizar tus archivos de Blender en Android (con algunas limitaciones, claro):
http://download.blender.org/demo/android/BlenderPlayer_08_02_12_4.apk

INSTALACIÓN
- Asegúrate que tienes activada la opción de permitir la instalación de aplicaciones de origen desconocido en tu dispositivo Android (Ajustes > Seguridad).
- Copia el archivo .apk que has descargado a tu dispositivo Android e instálalo como una aplicación normal.
- Copia los juegos que quieras ejecutar también en tu dispositivo (Deben tener la extensión .blend).

EJECUTAR JUEGO
- Abre BlenderPlayer (la aplicación que se habrá instalado en tu dispositivo). Selecciona el archivo .blend que contiene tu juego o modelo y haz clic en StartBlenderPlayer.
- También puedes localizar tu archivo .blend con un explorador de archivos > Abrir .blend > Con BlenderPlayer.


jueves, 21 de febrero de 2013

Crea aplicaciones y juegos para Android con AppInventor

Esta entrada la voy a dedicar a App Inventor, una herramienta muy interesante desarrollada por el MIT Center que nos permite desarrollar aplicaciones para teléfonos o tabletas con Android.

Tras adquirir hace poco una 'bq Edison', comencé a barajar la posibilidad de realizar alguna aplicación para este sistema, así que me lancé a la búsqueda de información. Tras googlear un poco encontré esta herramienta que te permite desarrollar aplicaciones a través del navegador, en cualquier sistema operativo y sin necesitar conocimientos de programación, ya que se trata de encajar bloques de funciones preprogramadas como si fueran las piezas de un puzzle (en cierto sentido recuerda al sistema de ‘logic bricks’ de Blender) .
Básicamente se trabaja a través de dos herramientas:
- App Inventor Designer, donde se introducen los elementos que componen tu app.
App Inventor Blocks Editor, donde se componen de un modo visual los bloques de programación. Pero al igual que un puzzle, no todas las piezas pueden encajar las unas con las otras existen limitaciones en función de su naturaleza. Cada uno de los elementos introducidos en el Diseñador tiene sus propios bloques, pero además puedes añadir otras funciones y variables para completar tu aplicación.

Además, puedes visualizar tu trabajo a tiempo real con un emulador Android o conectando tu propio teléfono o tableta al ordenador.

app app
App Inventor Designer App Inventor Blocks Editor

- Instalación:
Lo primero de todo es que necesitas tener una conexión de Internet y una cuenta de Gmail, ya que todo tu trabajo se encontrará alojado en la nube y asociado a dicha cuenta.
Además deberás tener java instalado e instalar el paquete de la aplicación en función de tu sistema operativo.
Una vez reúnas todos los requisitos, deberás acceder con tu navegador web a la siguiente dirección: http://beta.appinventor.mit.edu/

- Primeros pasos:
La primera vez que accedas, verás una página de proyectos vacía. Para empezar a trabajar, sólo has de añadir un nuevo proyecto haciendo clic en ‘New’.
En cuanto le asignes un nombre, aparecerá el ‘Diseñador’, desde donde podrás añadir, seleccionar o eliminar todos los elementos que componen tu proyecto. Aquí puedes editar su tamaño, posición, imagen, aunque también puedes hacerlo dinámicamente a través del ‘Editor de Bloques’.
Cuando abras este editor, a la izquierda verás tres paletas agrupadas en pestañas (Built-In, My Blocks, Advanced) donde se encuentran los juegos de bloques. Sólo has de ir seleccionandolos y arrastrandolos sobre el espacio de trabajo, para ir componiendo todo como en un gran puzzle.
Como podrás observar, en ‘Built-In’ se encuentran los bloques agrupados por tipo (Texto, Listas, Lógica, etc.) y en ‘My Blocks’, los relacionados con todos los elementos que has incorporado desde el ‘Diseñador’ a tu proyecto y que se irán actualizando automáticamente.
Explicarlo es más difícil que ponerlo en práctica, así que ya puedes jugar con ellos para comprobar la simplicidad de la idea.

- Comprobando tus progresos al momento:
Para ver de una manera interactiva el resultado de tus avances tienes dos opciones: abrir un emulador desde el Editor de Bloques o conectar tu propio dispositivo Android.
Para lo primero, sólo necesitas hacer clic en el botón ‘New Emulator’ que abrirá un dispositivo virtual al que conectarás cuando finalice su arranque pulsando en ‘Connect to Device’.
Para lo segundo, puede que necesites algo más de paciencia, aunque tampoco es excesivamente complicado y ganarás en ‘agilidad’. Existen dos modos: uno mediante wifi y otro a través de un cable usb que conecte tu dispositivo con el ordenador. El primero no lo he probado pero parece bastante sencilla de implementar. Para el segundo te tocará pelear algo más, ya que necesitarás instalar los drivers adecuados para tu sistema operativo y conectar tu tableta mediante ‘ADB’, para lo que necesitarás también instalar el SDK de Android.

PROS:
- Facilidad de uso y bastante intuitiva. La curva de aprendizaje es realmente rápida.
- El sistema de ‘puzzle’ es realmente ingenioso. Si has trabajado con ‘logic bricks’ de Blender podrás observar cierto paralelismo en el flujo de trabajo.
- Permite desarrollar tu aplicación con múltiples ‘Screens’.
- La ‘paleta’ de elementos con los que trabajar es realmente completa y permite tener un control bastante preciso sobre muchos de los componentes.
- Posibilidad de integrar Bases de datos Web con TinyWebDB

CONTRAS:
- Esta aplicación utiliza básicamente Java. Esto es algo a considerar, ya que últimamente este entorno ha sido protagonista de bastantes problemas de seguridad.
- El tamaño final de la aplicación desarrollada (.apk) resulta quizás demasiado grande para lo que suele verse en el Market de Android.
- Si eres poco organizado, la estructura de los bloques del puzzle puede tornarse caótica con los consiguientes quebraderos de cabeza a la hora de localizar determinados elementos.
- Además del caos anterior, el creciente número de bloques ralentiza bastante la aplicación y se pierde bastante fluidez tanto en la edición como, posteriormente, dentro del propio juego.
- Por el momento, no permite la duplicación o introducción dinámica de ‘sprites’: Todos los elementos que componen la app deben encontrarse desde el principio en tu espacio de trabajo y luego has de jugar a habilitarlos o deshabilitarlos a través de los bloques de código.
- Los ajustes automáticos (‘Fill parent’ en ‘Width’ o ‘Height’) de los distintos elementos que permiten adaptar su tamaño a los distintos dispositivos no tienen el resultado esperado: al activar estos ajustes en el Diseñador o ajustando el tamaño a través de bloques, los elementos visuales de tu App adquieren un aspecto borroso o poco definido que resta profesionalidad al resultado final. (La única solución que he encontrado de momento es editar el .apk resultante con alguna herramienta como ApptoMarket y  configurar la resolución en ‘any’ y ‘not resizable’.

De todos modos, algunas de las desventajas que enumero son temporales puesto que estas cuestiones, entre otras muchas, se encuentran ahora mismo en la lista de desarrollo.

Como todo movimiento se demuestra andando, aquí tenéis ‘Arkablocks’, un pequeño juego desarrollado con esta herramienta. Se trata de una versión simplificada del clásico ‘Arkanoid’ para el que también he empleado ‘Inkscape’ en la elaboración de los elementos visuales (‘sprites’, botones, fondos, etc.).

a a a

Todo el desarrollo del juego se ha realizado con el apoyo de una tableta 'bq Edison' de 10" y apenas he podido probarlo en un 'Samsung Galaxy Mini 3'. Por ello, si instalas este juego en un teléfono móvil seguramente encontrarás más de un problema con los tamaños de fuente o  la distribución de los contenidos (entre otros muchos 'bugs' derivados del cambio de tamaño).

La ausencia de fluidez en el vídeo (máximo de 3 fps) es debida a las limitaciones de la herramienta de captura que he utilizado (Android Screen Capture). Además, la fluidez con la que corre el juego una vez instalado tampoco es la ideal debido a que App Inventor todavía no está suficientemente optimizado para su uso en tabletas: la edición del .apk para mejorar su aspecto, así como el elevado número de bloques y la cantidad de 'sprites' son factores que restan velocidad al juego.

Con todo, App Inventor es una herramienta más que interesante, a la que habrá que seguir de cerca, puesto que si siguen en la dirección correcta puede ser otro paso más para ‘democratizar’ el software y permitir que gente con pocos conocimientos de programación pueda realizar sus propios programas.


AddThis