miércoles, 15 de febrero de 2012

Juego planetoides

He estado dándole vueltas al concepto de gravitación en Blender que os puse el otro día y he preparado una demo de juego basada en la gravedad entre planetas.

He anulado la gravedad “por defecto” de Blender (siempre hacia abajo, eje menos Z) y he aplicado fuerzas hacia el centro de los diferentes planetas. Así podremos recorrer pequeños planetas como el Principito y saltar entre ellos. Algo parecido al Mario Galaxy, si lo conocéis. 

De momento tengo los planetas fijos, no interactúan entre ellos, pero será interesante ponerlos en órbita y así será más difícil viajar de uno a otro. Aquí un vídeo:








Como podéis comprobar no tengo muy claro qué hacer con la cámara, que es un elemento más importante de lo que parece en los videojuegos. Podría estar fija desde una posición lejana, o fija pero apuntando hacia el personaje (lo que hace ahora), o moverse en un plano aparte del escenario situándose en la normal respecto al personaje... o las típicas vistas en primera o tercera persona... no lo sé. 

Algunas órdenes interesantes del API de Blender que he usado son:
dist = obj.getDistanceTo(planetatemp) para poder detectar el planeta más cercano y así apuntar la base del personaje hacia ahí.

vdirector=planetasuelo.position-obj.position #Obtener el vector director simplemente restando las coordenadas
vdirector.normalize() #Hacer que tenga módulo uno
obj.alignAxisToVect(-vdirector,2,1) #Alinear el personaje al contrario del vector director




Si queréis ejecutarlo hay que abrirlo con Blender 2.6, situar el cursor encima de la vista 3D y presionar P. Se controla con las teclas A,W,D y salta con el espacio. Se puede descargar aquí: Demo Juego Planetoides.

domingo, 12 de febrero de 2012

Una de cómics

Os pongo cuatro tiras cómicas que, sumándolas todas, harán medio chiste. Para empezar una tira más de anuncios. Qué buena.


La siguiente tira se le ocurrió a ppi tras dos o tres cervezas y trata sobre las ganas inacabables de bater en hacer cosas.


La idea de la siguiente salió de la mente oscura y retorcida de bater, curiosamente usando a ppi como protagonista. 



Y la última es tan solo una viñeta con Darth Vater como protagonista. A mí se me ha ocurrido este texto, pero como no hace mucha gracia, si a alguien se le ocurre algo mejor que lo comente y lo cambio.


Ya sabéis, todo esto y mucho más en Sukarra Cómic.

viernes, 10 de febrero de 2012

The Sound of Silence

El post sobre guitarreos en comunidad ha pasado inexplicablemente desapercibido... bueno... pasa bastante... pero es que éste me parece especialmente inexplicable. No os ha parecido una gran oportunidad? No os ha picado la curiosidad? Si os daba corte grabaros pensad que todo queda privado, podéis hacer el mono todo lo que queráis.

Esta canción es solo para practicar, si funciona podríamos crear alguna propia. Por lo menos registraos y podréis ir viendo cómo avanza la cosa. O si no poned un comentario aquí y ahora tipo "No me interesa para nada la idea".


De momento he grabado algún fragmento de bajo y guitarra rítmica y lo he exportado para que lo podáis escuchar sin hacer nada. Queda mucho por hacer, ánimo!.






Nos os dan ganas de machacar un poco la pentatónica?

martes, 7 de febrero de 2012

Programando las leyes de Newton, versión fácil

Cogiendo un poco de aquí y de allí he creado dos esferas en Blender (editor 3D) y les he programado con Python un comportamiento regido por la ley de la gravitación universal de Newton. Igual suena complicado pero si miráis el código es muy básico y prácticamente es una aplicación directa de las fórmulas que vimos en Física en el instituto.

A lo mejor os parece raro que no haya algún While o similar. Lo que pasa es que en Blender van sucediéndose fotogramas (24 por segundo) y en cada fotograma se ejecuta el código, así que ya se va repitiendo.

from bge import logic, events
import math
def Player():
   cont = logic.getCurrentController()
   obj = cont.owner
   #Hasta aquí todo eran órdenes muy específicas de Blender, mejor ni mirarlas
   #Lo importante es que obj se refiere a la esfera pequena
   if not 'init' in obj: #Esto solo quiero que se ejecute una vez
       obj['init'] = 1
       #Aquí defino la velocidad inicial, solo la primera vez que se ejecute el código
       obj['vox']=0.05
       obj['voy']=0.06
   #Aquí defino la masa de ambos cuerpos, y la constante gravitacional
   m1=250000000
   m2=2000
   G=0.0000000000667
   #Obtengo la posición actual y calculo la distancia al origen de coordenadas (hipotenusa)
   x=obj.position[0]
   y=obj.position[1]
   r=math.hypot(x,y)
   #Utilizo la fórmula de la gravedad entre cuerpos
   F=G*m1*m2/(r*r)
   #A partir de la fuerza se obtiene la acelaración
   a=F/m2
   #Descompongo en componente x e y
   ax=-a*x/r
   ay=-a*y/r
   #Calculo la velocidad actual basándome en la velocidad anterior y en la aceleración
   vx=obj['vox']+ax
   vy=obj['voy']+ay
   #Obtengo la posición actual a partir de la anterior y la velocidad
   xf=x+vx
   yf=y+vy
   #Muevo el objeto esfera
   obj.position[0]=xf
   obj.position[1]=yf
   #Por último guardo la velocidad actual para que pase a ser "anterior"
   obj['vox']=vx
   obj['voy']=vy

El problema sería que si ponemos las variables demasiado realistas  tendríamos una esfera "Tierra" que tardaría un año en  darle la vuelta al sol, así que he tenido que cocinar un poco las masas y la velocidad inicial para que resulte una animación más rápida, aquí la tenéis:


Se puede configurar para que haga una órbita muy excéntrica, o lo que se quiera:






Si alguien quiere el archivo blender que lo diga.

lunes, 6 de febrero de 2012

Arqueología matemática

Os quería enseñar un poco de arqueología matemática. René Descartes es un viejo conocido de todo el que haya estudiado filosofía en el instituto pero por lo visto también destacó en matemáticas. Las famosas “Coordenadas cartesianas” se llaman así su honor, y por cierto son coherentes con su filosofía. Recordaréis que él quería construir una filosofía basándose en unos cimientos fuertes y tomar un punto de partida sólido a partir del cual ir desarrollando  el resto de conocimientos: El famoso “Cogito ergo sum”.  Asimismo ideó las dos rectas perpendiculares o ejes que se cortan en el origen de coordenadas para a partir de ahí poder representar las ideas de la geometría.

Ésta es una muestra de uno de sus libros en el que explica cómo se puede resolver una ecuación de segundo grado con las herramientas de dibujo básicas. Es interesante apreciar la nomenclatura que, pese a ser diferente, ya es comparable a la actual.


Después de ver este interesante resultado he tenido que comprobarlo por mí mismo. Voy a poner una ecuación de segundo grado en la misma forma del texto:
(Cuyas soluciones son 9 y -1)
Por tanto:
a/2=4
b= 3
Dibujo en el autocad siguiendo los pasos del texto:

Y al comprobar la distancia resultante ¡coincide con lo esperado! Eso sí, faltaría encontrar la otra solución, menos uno, pero vamos, está ahí también. Os dejo ese detalle en el aire por si queréis trastear.

La demostración de por qué este procedimiento funciona también es muy interesante porque sólo es necesario usar el Teorema de Pitágoras. La hipotenusa inicial se puede calcular como:

Aplicado a las variables de nuestro caso:


A esa H hay que sumarle un radio para obtener la distancia solución así:


Y esta fórmula ya es equivalente a la típica de resolución de ecuaciones de segundo grado:


sábado, 4 de febrero de 2012

lA aVENTURA dEL eSPACIO




Hola Sukarrats, hoy os traigo un reportaje de la exposición que pude ver el martes pasado en la Casa de Campo de Madrid. Altamente recomendable. Lástima de la audioguía que no está mal, pero siempre es mejor que haya alguien explicando.

Perdonad la calidad de las fotos, pero la iluminación era escasa y hacía tiempo que no utilizaba esta cámara y olvidé poner el ISO a 400!!! Arggg. Espero que os guste. Si queréis verla estará abierta hasta el 15 de Junio. Para acceder podéis hacerlo desde la parada de metro de Lago. Vale 14€ y a la salida hay una pequeña tienda de recuerdos. Abre de 9:00 a 20:00 y no hay bar en el interior y la zona está un poco alejada, por lo que id con tiempo.

viernes, 3 de febrero de 2012

Música colaborativa... y me refiero a vosotros!

Aquí os traigo una propuesta para ejercitar la creatividad. Se trata de que os registréis en la página Indaba Music y me busquéis o bien que me dejéis que os encuentre. Para explicarlo rápido esto sería un Google Docs cuyos documentos son sesiones de grabación de música. Si compartimos una sesión todos podríamos añadir nuestras grabaciones, arreglos, ajustes, efectos, etc. a una misma composición. Interesante, ¿no?

Para facilitar las cosas he creado una sesión y he introducido una batería con un 12Bar-blues estándar. Hay un compás de introducción 3 vueltas de 12 compases y uno de finalización. Los acordes de los 12 compases serían:

A - D - A - A
D - D - A - A
E - D - A - E


De momento en el DAW (Digital Audio Workstation) online encontraréis una única pista con el ritmo con este aspecto:



Si os animáis podéis añadir el bajo, guitarra rítmica, solo, otra batería mejor, voz(?)... vamos, lo que sea. Podéis grabaros directamente en el DAW o bien externamente con una grabadora o con el ordenador y luego subir el archivo a la web.

Si nadie lo hace subiré yo el bajo en breve para que quede más claro el blues.