multimedialabpoule

Craig Reynolds : Boids

Craig Reynolds a réalisé en 1986 “Boids”, un programme simulant le comportement d’une nuée d’oiseaux en vol.

boids1_482.jpg

Craig Reynolds est expert en intelligence artificielle appliquée à l’image numérique. Il a (entre autres) collaboré au film Tron et à Batman returns. Il travaille aujourd’hui chez Sony Computer Entertainment US Research and Development, centre de recherche dédié notamment à la recherche d’applications pour la Playsation 3 et les futures plateformes de Sony Entertainment.

Il y a quelques années de cela, Craig Reynolds réalisa dans le cadre de son travail de développement chez Symbolics Inc. un programme contrôlant le mouvement individuel d’oiseaux (représentés par des triangles) et qu’il appela “boïds” (birds en langage enfantin). Après quelques expériences complexes et peu concluantes, il s’inspira des théories du chaos et programma quelques règles simples inspirées par des spécialistes de l’étude des vols d’oiseaux :

  • maintenir une distance minimale avec les objets présents dans l’environnement, ainsi qu’avec les autres oiseaux.
  • adapter sa vitesse à celle des oiseaux situés dans le voisinage.
  • se déplacer vers le centre perçu de la masse des oiseaux présents dans le voisinage.
  • Pour corser la situation, Craig Reynolds introduisit dans le paysage des colonnes jouant le rôle d’obstacles, avec la règle suivante : si un “boïd” arrive de face, il prend la tangente. Si c’est impossible (chance infime), il la percute, tombe à sa base, puis doit voler plus vite pour rattraper ses congénères.

    boids_colonnes_482.gif

    Une fois ces quelques règles fixées, il observa lors de l’éxécution du programme une situation totalement imprévue. Un comportement quasi “vivant” d’un boïd : le vol harmonieux et imprévisible des “boïds” s’approcha des colonnes. La majorité des triangles se faufila à travers elles en prenant les tangentes, en se divisant en sous-groupes ou en accélérant leur vol. Mais un seul boïd, arrivant dans une trajectoire improbable de collision, hors de toute tangente possible, percuta une colonne. Il tomba à terre, fit le tour de la colonne et rattrapa “à tire d’aile” les autres “boïds” qui poursuivaient leur vol ! Une situation non programmée à émergé des contraintes et du comportement collectif des individus. Le programme a “inventé” une solution à une situation particulière. Le plus étonnant est qu’indépendament de la répartition ou la dispersion des boïds au départ de la simulation, un vol groupé se constitue à chaque expérience, bien que la formation “vol groupé” ne soit programmée dans aucun individu.

    Le travail de Craig Reynolds a inspiré de nombreuses déclinaisons. Ce type de simulation est évidemment adaptable à des groupes de diverses natures : bancs de poissons, essaims d’insectes ou autres troupeaux d’animaux.

    Dans le domaine de l’animation comportementale, il faut citer le travail majeur de Karl Sims, pionnier, chercheur et artiste en particules et vie artificielle. Karl Sims a remporté deux “Golden Nicas” au Festival Ars Electronica de Linz, avec Panspermia en 1991 et avec Liquid Selves / Primordial Dance en 1992.
    Ses films sont téléchargeables sur archive.org :

  • Evolved virtual creatures (1994) :
    http://www.archive.org/details/sims_evolved_virtual_creatures_1994
  • Liquid Selves (1992) :
    http://www.archive.org/details/sims_liquid_selves_1992
  • Primordial Dance (1991) :
    http://www.archive.org/details/sims_primordial_dance_1991
  • Panspermia (1990) :
    http://www.archive.org/details/sims_panspermia_1990
  • Particle Dreams (1988) :
    http://www.archive.org/details/sims_particle_dreams_1988
  • Plus récemment, le travail de Jeffrey Ventrella est également à noter dans le domaine de la vie artificielle. Son site contient de nombreux programmes téléchargeables.

    Liens :

    “Boids” de Craig Reynolds :

  • http://www.red3d.com/cwr/boids/
  • “OpenSteer”, librairie C++ de Craig Reynolds
    dédiée aux comportements directionnels d’individus/objets :

  • http://opensteer.sourceforge.net/
  • http://www.red3d.com/cwr/steer/
  • “A boids experiment” de Matt Mays
    basé sur le pseudocode de Conrad Parker et sur le code de Christopher Kline (source C++ téléchargeable) :

    matt_mays_482.jpg

  • http://switch.sjsu.edu/nextswitch/switch_engine/front/front.php?artc=287
  • “C++ Boids” de Christopher Kline
    (objets C++ téléchargeables) :

    christopher_kline_482.gif

  • http://www.behaviorworks.com/people/ckline/boids
  • “Swarm” de Daniel Shiffman
    est une installation vidéo qui implémente un pattern de vol d’oiseau inspiré de Boids de Craig Reynolds adapté au mouvement constant d’un “pinceau”, un peu à la manière du “dripping” Jackson Pollock, autre inspiration de Daniel Shiffman :

    swarm3_482.jpg

  • http://www.shiffman.net/projects/swarm/
  • “Boids” de Poul Henriksen
    (source Java téléchargeable) :

    poul-henriksen_482.gif

  • http://www.greenfoot.org/scenarios/index.html
  • “Vie Artificielle, où la biologie rencontre l’informatique”,
    illustré avec Java par Jean-Philippe Rennard

    (source Java commentée téléchargeable) :

    rennard_boids_482.gif

  • http://www.rennard.org/iva/boids.html
  • “eFloys” de Ariel Dolan
    (source Java téléchargeable et description des algorithmes) :

    ariel_dolan_482.jpg

  • http://www.aridolan.com/ofiles/eFloys.html
  • “Boids” de Conrad Parker
    (source Java téléchargeable et description des algorithmes) :

    conrad_parker_482.gif

  • http://www.vergenet.net/~conrad/boids/
  • http://www.vergenet.net/~conrad/boids/pseudocode.html

  • Post a comment