bandada de pájaros

Ver más grande en Vimeo



Esto es algo que hice hace poco con mis grandes amigos de Estratósfera Colectivo de Diseño para un evento donde los visitantes tenían que pasar por un corredor antes de llegar al auditorio donde darían la conferencia.

Mientras pasaban, una bandada de pájaros los acompañaban persiguiendo los movimientos del usuario que entraba en la instalación.

Para aprender sobre cómo imitar movimientos de la naturaleza y sobre física en processing recomiendo mucho el libro The Nature of Code de Daniel Shiffman, que es en el que me he estado apoyando para jugar con sistemas de partículas, atractores y elementos de ruido.

En esta entrada no puedo poner el código para descargar por cosas burocráticas, pero si alguien está interesado en cómo se hace esto, pueden descargar este código base y experimentar desde ahí, o mirar el capítulo 4del libro de Shiffman.

Básicamente lo que hay que hacer, o lo que hice yo en mi caso, fue partir de un sistema de partículas muy sencillo con puntos. Una vez eso funcionó, diseñé las aves en Illustrator en varias posiciones de vuelo para poder animarlas. Después, las exporté como svgs y las convertí en una clase en Processing. Reemplacé los puntos que había usado en el sistema por la clase “Ave” que hice con las ilustraciones.

Hice TRES cosas clave para darle credibilidad al vuelo (que no están en el libro, sino que surgieron por puro sentido común:

1.Las aves no pueden volar al revés, así que cuando la posición del ave es mayor al punto donde está el usuario (el atractor) tiene que girarse y mirar hacia él. Reflejar una imagen en Processing se hace jugando con un scale() en negativo, así:

(si la posición del ave es menor al usuario, píntela con el pico hacia la derecha, si su posición es mayor, refléjela y píntela con el pico hacia la izquierda):

if(posAve.x < posUsuario.x){
shape(ave,posAve.x,posAve.y);
} else {
pushMatrix();
scale(-1,1);
shape(ave,-posAve.x,posAve.y);
popMatrix();
}

2.Batir las alas: para eso usé exactamente el mismo código cuadro a cuadro que me inventé cuando hice esta entrada.

3.Las aves no son autómatas con un ritmo constante de batido de alas, y no hay que saber física avanzada de vuelo de aves para resolverlo, o depronto sí y quedaría mejor, pero en mi caso decidí amarrar la animación del batido de las alas al avance del usuario en X: si avanza más rápido pues el pájaro tiene que volar más rápido y en la naturaleza esto implicaría que tendría que mover las alas más rápido, o algo así.

Es una cosa difícil de lograr, de las más difíciles que he hecho, pero si uno lo hace paso a paso se logra, así con todo en programación y en Processing.

Alt text