The ultimates, death note

Posted in Uncategorized on July 20th, 2008

Cuanto más tiempo paso en este sector, rodeado de profesionales que no son informáticos puros más me alegro de haber dado el paso. Se acabaron las discusiones bizantinas de bibliotecas, espacios, tabuladores, editores de texto y demás morralla. Me gusta el cambio de ambiente porque, entre otras cosas, mis nuevos compañeros bullen de cultura pop.

No quiero extenderme mucho más ahora, vengo sólo a comentar que estoy fagocitando dos series; casi no pueden ser más opuestas entre sí, y, por supuesto, eso le da toda la gracia a la maniobra:

Ultimates

The Ultimates, también con dos incursiones en vídeo, que pueden engancharse desde youtube ultimates. En el segundo caso la animación es realmente pobre y triste, pero es interesante a la hora de hacerse la foto de la mercadotecnia de marvel en su conjunto.

Siendo justos debo agradecerle la serie a Budo, uno de los concepts de la compañía y un gran tipo si se me permite la expresión.

Death note

Otro par de compañeros de la compañía nos han prestado Death Note. Una gran serie anime. Tiene únicamente dos o tres años de antigüedad. Interesante, parece que los mercados occidentales cada vez se dejan atacar por el anime con más rapidez. Me gustaría poder linkarles como merecido homenaje, sin embargo no tengo noticia de que ellos dos tengan alojamiento más allá del empresarial y no sé si es muy inteligente por mi parte linkarlos de ese modo.

Las dos series son recomendables, sin embargo ambas tienen cierto tufillo. The ultimates tontea con una aproximación contemporánea al problema de crear un grupo de superhéroes en una sociedad salvajemente mediatizada. El problema de esa jugada es que Watchmen abrió muchos de los temas dejando algunos prácticamente clausurados. El capitán américa es un ejemplo de personaje desperdiciado: un supersoldado que pasa hibernado la época de Vietnam-Corea, tiene potencial por los cuatro costados. Lamentablemente Marvel trabaja un target excesivamente orientado al entretenimiento.

Con respecto a Death Note, la ejecución y el guión de la serie están muy bien, tiene una sima, justo en el centro, durante la cual preparan uno de los twist de guión más sorprendentes que he visto, sin embargo, la serie se deshincha. El planteamiento durante muchos capítulos es heredero de la relación Holmes - Moriarty. Pero sin el delicioso encanto que el Reino Unido victoriano le da a los duelos intelectuales entre dos seres que son idénticos entre sí, pero viven en extremos opuestos del rango moral.

Ambas son muy recomendables, si bien he disfrutado más con Death Note que con The Ultimates.

PD: qué calor hace! O_o!!

Test driven development, take 2

Posted in Developing on July 13th, 2008

Hará cosa de un par de años estaba tirado en Madrid y buscando curro desesperadamente. Me presenté a una búsqueda de empleo para DL y empezaron los escarceos por email. Mándame esto, respóndeme unas preguntas, etc. Por motivos que no vienen al caso mudarme no me apetecía y, al final, el asunto no fructificó.

Sin embargo aquella prueba tuvo algo muy interesante: mi primer contacto con las metodologías ágiles de trabajo; en realidad es la primera empresa que conozco que preguntan algo de ese estilo en sus contactos de reclutamiento. Me sorprendió positivamente ya que la experiencia general en otras empresas es que la implantación de metodologías modernas siempre es para el siguiente proyecto.

power of two games logo

Tanto me gustó el asunto que no he dejado de pensar en ello desde hace un par de años y siempre que puedo le doy algunas vueltas. Aquí van las primeras webs donde tuve oportunidad de aprender algo de desarrollo al test y videojuegos:

Games from Within

Power of two games

A partir de esas dos webs aprendí muchísimo. Realmente power of two resulta mucho más simpática, por aquello de que son pequeñitos y eso siempre es tierno. Pero vamos, ambas webs valen sus kb en oro.

Después de aquello llegaría un período de un año con J2ME y algunos escarceos con TDD orientado a teléfonos móviles, el asunto funciona bien, pero no era mi momento para empezar con aquello.

Así que aquí llegamos: python. Algo bastante asombroso de este lenguaje es que ya viene preparado para trabajar TDD, hay dos paquetes precocinados dentro de las APIs base, podéis leer acerca de ello en:

manual de herramientas de desarrollo para python

Y, por supuesto, aquí tenéis algunos análisis comparativos de las opciones que hay, incluyendo ejemplos, test y opiniones varias:

Agile testing: unittest

Agile testing: doctest

Agile testing: py.test

Llevo unos días dándole vueltas al auténtico problema con respecto al desarrollo: la integración con Maya. Todas las plataformas de test asumen que el entorno de ejecución del test es limpio. Una consola un ejecutable, un proceso automatizado mediante ant, make, scons, o lo que sea. Sin embargo, ¿qué hacer cuando el entorno de desarrollo está embebido en otro software [1]?

De momento he estado trabajando en pruebas en cascada: testSuites que llaman consecutivamente a otros tests, etc. La idea es permitir a los desarrolladores trabajar separados siempre que quieran y, a la vez, automatizar en medida de lo posible el paso de estos scripts.

He hecho un par de casos idiotas: tddSample no sé si alguien bajará estos ficheros, sobra decir que son propiedad de la comunidad, totalmente libres.

En este momento mi intención es tratar de automatizar el pase de Tests a través de maya y que los resultados sean más sencillos de filtrar, el test runner por defecto está bien, aunque es algo molesto cuando los tests se multiplican.

Y de momento es todo. Estas semanas han sido algo liadas, hemos estado en Mundos digitales y hemos visto a viejos camaradas gallegos. Es bonito reencontrarse, tomar pulpo y beber licor café.


1. Me viene a la mente Epic y el tipo de pruebas de test de que disponen para testar su Unreal script.

Mi primer trailer y mi primera película

Posted in 3D-devel, Mercado on June 8th, 2008

Dos semanas de locos y tres fines de semana de infarto. El resultado: el primer tráiler que (creo) tiene Enne. Muchos de mis compis están requemaos y eso me da bastante rabia, parece que muchas de las cagadas que nos hemos metido como empresa eran como mínimo evitables.

¿Os puedo enseñar algo? Pues de momento no. No sé nada de la comercialización ni de la política de muestras del trailer. Claro que mi problema es otro: no entiendo el material y no estoy hablando de dirección de empresa ni de explotación de producto, es mucho más sencillo; no entiendo la película, no veo el mensaje. Evidentemente esto es algo de lo que tampoco puedo hablar, como a veces dice mi santa madre: “hijo pa’ lo que quieres eres de lo más limitaíco

Todo este liazo del tráiler palidece ante el poder over de Blender y su editor de vídeo embebido. ¡Chúpate esa Shake![1] Hace unas semanas estaba intentando probar la influencia del motion blur, frente a secuencias de frames perfectamente nítidos (este tipo de gilipolleces me entreteniene los fines de semana, creo que tengo que salir más de casa ^_^) Luego me pilló por banda el subidón de curre y la publicación de la versión 2.46 de Blender casi medio muerto.

Pero hete aquí que he estado haciendo algo totalmente inusual: leerme los manuales de usuario. Y opalá! Aquí me ha aparecido tooodo lo que necesito para convertirme en un pequeño Charli Calvinsky del cine:

Blender manual 2.46

Video creating example in Blender

Video sequence Editing

Así que armado con mi nuevo kung-fú y un objetivo técnico razonablemente claro me ha dado la ventolera de postear algo en el “youtuvé”

Los palicos del youtube

1. No nos engañemos: Shake es über, pero había que decirlo.

Gelato multiple UVs in mesh

Posted in 3D-devel on May 18th, 2008

Sigo trabajando con gelato y Blender. Esta vez estaba interesado en disponer de varios canales de textura en un mismo objeto. A causa del soporte limitado[1] que nVidia da a Blender, no tenía muy claro si no estaba funcionando por una limitación del render[2] ó bien era un problema de mis datos.

Al final lo he logrado haciendo a mano el proceso, es razonablemente sencillo:
1. En el .pyg del mesh he añadido manualmente dos canales más de tipo linear float, llamémoslos myU y myV.

2. He expandido el shader painted plastic con:
float myU = 0,
float myV = 0

3. Funciona! Las UVs se interpolan correctamente entre los vértices y se pueden acceder de modo similar a los canales estándar s y t.

De momento no tengo imágenes de ningún objeto con texturas múltiples aplicadas, tan pronto lo tenga lo postearé a mi flickr.


1. Pasan como de comer popó de Blender, ellos se lo pierden
2. Hasta donde yo he probado Gelato es muy bueno.

Mass Effect

Posted in Videogames on May 3rd, 2008

Jugar en la 360 me cansa mucho mucho. El televisor está a demasiada distancia y la resolución que tiene me devuelve a los tiempos del Doom, cuando había que bajar el tamaño del render para que aquello funcionase en los niveles más saturadas de oponentes, léase: hordas y hordas de marines espaciales zombificados.

Es cierto que los juegos para consola han avanzado muchísimo, empezamos a encontrar elementos comunes en el diseño como el control de desplazamiento en el stick izquierdo, igual en Zelda, en Gears of War, en Mass Effect, … y el control de apuntado en el stick derecho, los gatillos para las acciones repetibles principales: disparar, apuntar, correr, …

Me he armado de valor y he recuperado mi copia de Mass Effect (ahí va el cover)

mass effect cover front

Este juego está desarrollado por BioWare, empresa emblemática del sector, responsable de títulos enormes como Neverwinter Nights (primera parte, la segunda la desarrolló Obsidian y el trabajo es cuestionable[1]), Baldur’s Gate, …

Mass Effect no se les puede comparar, no es un mal juego, qué coño: es bueno. Simplemente los otros son espectaculares. La historia y los diseños me gustan bastante. Tiene un cierto aire a aquellos libros de “elige tu propia aventura“, muy conversacional, sin embargo es razonable: no todo se ha de solucionar a tiros.

Como siempre, si logro mantenerme firme y cerrar el juego intentaré comentaros algo mientras voy avanzando.


1. En algunos aspectos fundamentales y totalmente incomprensibles:control de cámaras, etc.

Botella, segunda parte

Posted in 3D-devel on May 1st, 2008

Para empezar: aquellos que sigan Blender deben actualizar el software a la versión 2.46 tan pronto como les sea posible, hay un buen montón de nuevas features podéis ver varios vídeos en:

Blender 2.46 features videos

Blender 2.46 features videos

Blender upcoming features

No me canso de repetirlo: cuanto más trabajo con Blender más agradecido me resulta, para hacer el render que tenéis más abajo sólo he tenido problemas con las UVs del modelo de la botella porque no termino de pillar el punto al exportador a gelato (frappe).

gelato blender bottle

Quiero destacar que esta imagen no es un ray-tracing[1], el coste de render en mi equipo actual, un portátil Dell Centrino Duo, 2GB con una 7900GO (detalle importante ya que se supone que gelato también usa la gráfica) es de 4 minutos y medio.

Podéis ver la imagen de la botellita a pantalla completa en las fotos del diablesodelacarretera.


1. Lo que debería resultar obvio ya que el video carece completamente de refracción, aunque estoy panteándome simularla.

Dr. Queue

Posted in Developing on April 27th, 2008

Estas semanas han vuelto a ser de locos. Estamos desarrollando en ciclos realmente cortos y en demasiados frentes a la vez. El único punto que se ha mantenido a lo largo de un par de semanas ha sido el Dr. Queue.

La vida en este sector a veces es ridícula del todo. Hay tecnologías y productos que vuelven disparados como bumerangs cargados a tope de veneno. Ya había empleado el DRQ en el Labsis, hace un puñaíco de años. Una buena experiencia. Cuando me dijeron que tenía que darle una vuelta, no me importó: qué equivocado estaba.

Nuestra red actual no la administramos nosotros. Tiene mucho tráfico y algo me dice que no está excesivamente bien provista [1]. Nada de canutos de fibra en conexión vertical y giga lan en horizontal, no no ;)

El software en sí mismo no está mal, quizá tiene decisiones de diseño mejorables[2] para acelerar un poco el funcionamiento de las transferencias de datos he tenido que crear un modo en bloque [3]. Luego tuve que recompilar para ampliar el número de trabajos, de 100 a 8000. La documentación de los bindings en python es prácticamente inexistente, si quieres usarla dependes completamente de haberte empapado de las bibliotecas en C previamente, … en fin, tiene “sus cosas” pero es totalmente GPL y absolutamente agnóstico en cuanto a sistemas operativos y tipos de render. Si se puede meter en un script drq funcionará O.K. Y eso, amigos, es mucho tomate y funciona de coña.

Eso, por no hablar de los enlaces Dr.Queue Python, hechos en SWIG. Ese es mi dolor de cabeza actual que espero vaya mejorando con la ayuda de la comunidad de desarrolladores del Dr.Queue.

**************

En el campo del render, este fin de semana le he dado un par de vueltas a una herramienta que no concía en blender: el blender sculpt. Blender es un software bastante sorprendente. Desde luego no es el más completo ni el más potente del mercado pero sí es el más ágil y con desarrollos como estos será una opción cada vez más interesante.

gelato subsurface scatter sculpt blender

Os dejo este render de una botella en el comparador del propio gelato “iv”, observaréis que el lado derecho está socarrado por el subsurface scattering.


1. No, no tengo acceso físico a los armarios.
2. Me viene a la mente la elección de la memoria compartida como repositorio central de trabajos y condiciones de ejecución.
3. Que nuestro señor foobar me perdone por ello :(

Frappe con pelo

Posted in gelato on April 13th, 2008

Una de las limitaciones del exportador de Blender a Gelato más potentes es que no puede sacar curvas 1D. Lo que quiere decir que no puedes rendearte un pelo, ó un césped, ó partículas en general, directamente desde Frappe hacia Gelato.

suzzane gelato blender hair

Tras examinar un poquito el código de los plugins y scrips hechos en python para blender [1]. He encontrado un modo muy sencillo de exportar a gelato las partículas vector que pueden formar pelo, el snippet es el siguiente:

print ‘Selected objects’
for ob in selectedObjects:
..print ob
..print ob.name
..eff = Blender.Effect.Get(ob.name)[0]
..particles = eff.getParticlesLoc()
..for pt in particles:
….if len(pt) > 2:
……txt_Curve = ‘Curves (\”linear\”, 1, %d, \”vertex point P\”,(’ % len(pt)
……FILE.write(txt_Curve)
……for i in range(len(pt)-1):
……..pt_item = pt[i]
……..txt = ‘(%f, %f, %f),’ % (pt_item[0], pt_item[1], pt_item[2])
……..FILE.write(txt)
……pt_item = pt[len(pt) - 1]
……txt = ‘(%f, %f, %f)’ % (pt_item[0], pt_item[1], pt_item[2])
……FILE.write(txt)
……FILE.write(’), \”float width\”, 0.01)\n’)

Este código te generará un fichero .pyg pequeño y funcional que puedes emplear usando un Input sobre el pyg general de la escena.

Tras atizarle un poquito al pelo ahora quiero mejorar un pelín los ojos, quizás termine envolviendo la escena con un mapa de entorno. Ya os contaré.

1. API blender 2.45.

Siglo 21, Diálogos 3

Posted in Uncategorized on March 29th, 2008

Me gusta la radio.
Me encanta.
Por un rebote del destino, siempre algo injusto, terminé por adquirir un aypop.
Siglo 21 es un buen programa de radio y carece de podcast.
Tengo una máquina viejuna que tiene un ubuntu instalado.

Parece que todo junto esto tiene algo de sentido:

#!/bin/bash
NOW=siglo21.`date +%Y%m%d`
ROUTE=”http://www.rtve.es/rne/audio/RNE3.asx”
DURATION=7250

cd /home/tete/ourPodCasts
nohup /usr/bin/mplayer -msglevel all=0 -playlist $ROUTE -ao pcm:file=/home/tete/ourPodCasts/$NOW.wav -vc dummy -vo null &
MPLAYER_PID=$!
/bin/sleep $DURATION
/bin/kill -9 $MPLAYER_PID
/usr/bin/killall mplayer
/bin/sleep 5
/usr/bin/lame –tt siglo21 –ta siglo21 –tg 18 –ty `date +%Y` –quiet /home/tete/ourPodCasts/$NOW.wav /home/tete/ourPodCasts/$NOW.mp3
/bin/sleep 5
/bin/rm $NOW.wa

Espero que esta pequeña muestra de improvisación le sirva a alguno de ayuda ^_^

Gelato sombreado

Posted in gelato on March 23rd, 2008

Termina la semana santa y con ella termino también mi primer periodo de estudio de Gelato como renderer basado en REYES. Tampoco han sido tantas horas y especialmente ayer estuve tremendamente espeso, incluso un poco resfriado si me apuráis.

Ha sido duro. La documentación es algo ardua y encontrar recursos es difícil. He tenido algo de suerte y me he dado con este paquete de python dedicado a la computación gráfica: cgkit. Una conveniente casualidad dado que el formato de entrada al render, cuando no se dispone de ficheros programados, es, directamente Python.

Hoy he trabajado un poco con sombras, ficheros intermedios, etc. Os dejo dos fotografías muy sencillas y llenas de artefactos por los cuatro costados[1]

Os dejo el código fuente para que este artículo no esté tan vacío, en particular aquí van dos teteras, una con un error muy curioso y fácil de detectar, y la otra algo mejor compuesta.

artifacted teapot

Los respectivos códigos fuentes los he introducido directamente sobre flickr.

nVidia gelato teapot shadowmap example.

nVidia gelato teapot bogus shadowmap


1. Lo que me jode porque me suena que he leído la solución y no logro recordar dónde.