{"id":439,"date":"2007-03-25T14:56:09","date_gmt":"2007-03-25T13:56:09","guid":{"rendered":"http:\/\/www.multimedialab.be\/blog\/?p=439"},"modified":"2018-10-21T15:52:20","modified_gmt":"2018-10-21T13:52:20","slug":"craig-reynolds-boids","status":"publish","type":"post","link":"http:\/\/www.multimedialab.be\/blog\/?p=439","title":{"rendered":"Craig Reynolds : Boids (1986)"},"content":{"rendered":"<p>Une simulation du comportement d&rsquo;une nu\u00c3\u00a9e d&rsquo;oiseaux en vol.<\/p>\n<p><img decoding=\"async\" id=\"image430\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/boids_index.jpg\" alt=\"Boids\" \/><\/p>\n<p><!--more--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" id=\"image2451\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2012\/09\/pixel_gris.gif\" alt=\"Grey line\" width=\"482\" height=\"1\" \/><\/p>\n<p>Un incroyable et bien r\u00c3\u00a9el vol d&rsquo;\u00c3\u00a9tourneaux :<\/p>\n<p><iframe loading=\"lazy\" width=\"482\" height=\"271\" src=\"https:\/\/www.youtube.com\/embed\/JXISHasXpJQ\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen><\/iframe><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" id=\"image2451\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2012\/09\/pixel_gris.gif\" alt=\"Grey line\" width=\"482\" height=\"1\" \/><\/p>\n<p><a href=\"http:\/\/www.red3d.com\/cwr\/boids\/\">Craig Reynolds<\/a> est expert en intelligence artificielle appliqu\u00c3\u00a9e \u00c3\u00a0 l&rsquo;image num\u00c3\u00a9rique. Il a (entre autres) collabor\u00c3\u00a9 au film <a href=\"http:\/\/en.wikipedia.org\/wiki\/Tron_%28film%29\">Tron<\/a> et \u00c3\u00a0 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Batman_Returns\">Batman returns<\/a>. Il travaille aujourd&rsquo;hui chez <a href=\"http:\/\/www.research.scea.com\/\">Sony Computer Entertainment US Research and Development<\/a>, centre de recherche d\u00c3\u00a9di\u00c3\u00a9 notamment \u00c3\u00a0 la recherche d&rsquo;applications pour la Playsation 3 et les futures plateformes de Sony Entertainment.<\/p>\n<p>Il y a quelques ann\u00c3\u00a9es de cela, Craig Reynolds r\u00c3\u00a9alisa dans le cadre de son travail de d\u00c3\u00a9veloppement chez Symbolics Inc. un programme contr\u00c3\u00b4lant le mouvement individuel d&rsquo;oiseaux (repr\u00c3\u00a9sent\u00c3\u00a9s par des triangles) et qu&rsquo;il appela <em>bo\u00c3\u00afds<\/em> (birds en langage enfantin). Apr\u00c3\u00a8s quelques exp\u00c3\u00a9riences complexes et peu concluantes, il s&rsquo;inspira des th\u00c3\u00a9ories du chaos et programma quelques r\u00c3\u00a8gles simples inspir\u00c3\u00a9es par des sp\u00c3\u00a9cialistes de l&rsquo;\u00c3\u00a9tude des vols d&rsquo;oiseaux :<\/p>\n<li>maintenir une distance minimale avec les objets pr\u00c3\u00a9sents dans l&rsquo;environnement, ainsi qu&rsquo;avec les autres oiseaux. <\/li>\n<li>adapter sa vitesse \u00c3\u00a0 celle des oiseaux situ\u00c3\u00a9s dans le voisinage. <\/li>\n<li>se d\u00c3\u00a9placer vers le centre per\u00c3\u00a7u de la masse des oiseaux pr\u00c3\u00a9sents dans le voisinage.<\/li>\n<p>Pour corser la situation, Craig Reynolds introduisit dans le paysage des colonnes jouant le r\u00c3\u00b4le d&rsquo;obstacles, avec la r\u00c3\u00a8gle suivante : si un \u00ab\u00a0bo\u00c3\u00afd\u00a0\u00bb arrive de face, il prend la tangente. Si c&rsquo;est impossible (chance infime), il la percute, tombe \u00c3\u00a0 sa base, puis doit voler plus vite pour rattraper ses cong\u00c3\u00a9n\u00c3\u00a8res. <\/p>\n<p><img decoding=\"async\" id=\"image431\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/boids_colonnes_482.gif\" alt=\"boids_colonnes_482.gif\" \/><\/p>\n<p>Une fois ces quelques r\u00c3\u00a8gles fix\u00c3\u00a9es, il observa lors de l&rsquo;ex\u00c3\u00a9cution du programme une situation totalement impr\u00c3\u00a9vue. Un comportement quasi \u00e2\u20ac\u0153vivant\u00e2\u20ac\u0153 d&rsquo;un <em>bo\u00c3\u00afd<\/em> : le vol harmonieux et impr\u00c3\u00a9visible des <em>bo\u00c3\u00afds<\/em> s&rsquo;approcha des colonnes. <\/p>\n<p>La majorit\u00c3\u00a9 des triangles se faufila \u00c3\u00a0 travers elles en prenant les tangentes, en se divisant en sous-groupes ou en acc\u00c3\u00a9l\u00c3\u00a9rant leur vol. Mais un seul <em>bo\u00c3\u00afd<\/em>, arrivant dans une trajectoire improbable de collision, hors de toute tangente possible, percuta une colonne. Il tomba \u00c3\u00a0 terre, fit le tour de la colonne et rattrapa \u00e2\u20ac\u0153\u00c3\u00a0 tire d&rsquo;aile\u00e2\u20ac\u0153 les autres <em>bo\u00c3\u00afds<\/em> qui poursuivaient leur vol ! Une situation non programm\u00c3\u00a9e \u00c3\u00a0 \u00c3\u00a9merg\u00c3\u00a9 des contraintes et du comportement collectif des individus. Le programme a \u00e2\u20ac\u0153invent\u00c3\u00a9\u00e2\u20ac\u0153 une solution \u00c3\u00a0 une situation particuli\u00c3\u00a8re. <\/p>\n<p>Le plus \u00c3\u00a9tonnant est qu&rsquo;ind\u00c3\u00a9pendamment de la r\u00c3\u00a9partition ou la dispersion des <em>bo\u00c3\u00afds<\/em> au d\u00c3\u00a9part de la simulation, un vol group\u00c3\u00a9 se constitue \u00c3\u00a0 chaque exp\u00c3\u00a9rience, bien que la formation \u00ab\u00a0vol group\u00c3\u00a9\u00a0\u00bb ne soit programm\u00c3\u00a9e dans aucun individu.<\/p>\n<p><img decoding=\"async\" id=\"image430\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/boids1_482.jpg\" alt=\"boids1_482.jpg\" \/><\/p>\n<p>Le travail de Craig Reynolds a inspir\u00c3\u00a9 de nombreuses d\u00c3\u00a9clinaisons. Ce type de simulation est \u00c3\u00a9videmment adaptable \u00c3\u00a0 des groupes de diverses natures : bancs de poissons, essaims d&rsquo;insectes ou autres troupeaux d&rsquo;animaux. <\/p>\n<p>Dans le domaine de l&rsquo;animation comportementale, il faut citer le travail majeur de <a href=\"http:\/\/en.wikipedia.org\/wiki\/Karl_Sims\">Karl Sims<\/a>, pionnier, chercheur et artiste en particules et vie artificielle. Karl Sims a remport\u00c3\u00a9 deux \u00ab\u00a0Golden Nicas\u00a0\u00bb au Festival Ars Electronica de Linz, avec <a href=\"http:\/\/www.aec.at\/de\/archives\/prix_archive\/prix_projekt.asp?iProjectID=2420\">Panspermia en 1991<\/a> et avec <a href=\"http:\/\/www.aec.at\/de\/archives\/prix_archive\/prix_projekt.asp?iProjectID=2424\">Liquid Selves \/ Primordial Dance en 1992.<\/a> <\/p>\n<p>Ses films sont t\u00c3\u00a9l\u00c3\u00a9chargeables sur archive.org :<\/p>\n<li>Evolved virtual creatures (1994) :<br \/>\n<a href=\"http:\/\/www.archive.org\/details\/sims_evolved_virtual_creatures_1994\">http:\/\/www.archive.org\/details\/sims_evolved_virtual_creatures_1994<\/a><\/li>\n<li>Liquid Selves (1992) :<br \/>\n<a href=\"http:\/\/www.archive.org\/details\/sims_liquid_selves_1992\">http:\/\/www.archive.org\/details\/sims_liquid_selves_1992<\/a><\/li>\n<li>Primordial Dance (1991) :<br \/>\n<a href=\"http:\/\/www.archive.org\/details\/sims_primordial_dance_1991\">http:\/\/www.archive.org\/details\/sims_primordial_dance_1991<\/a><\/li>\n<li>Panspermia (1990) :<br \/>\n<a href=\"http:\/\/www.archive.org\/details\/sims_panspermia_1990\">http:\/\/www.archive.org\/details\/sims_panspermia_1990<\/a><\/li>\n<li>Particle Dreams (1988) :<br \/>\n<a href=\"http:\/\/www.archive.org\/details\/sims_particle_dreams_1988\">http:\/\/www.archive.org\/details\/sims_particle_dreams_1988<\/a><\/li>\n<p>Plus r\u00c3\u00a9cemment, le travail de <a href=\"http:\/\/en.wikipedia.org\/wiki\/Jeffrey_Ventrella\">Jeffrey Ventrella<\/a> est \u00c3\u00a9galement \u00c3\u00a0 noter dans le domaine de la vie artificielle. Son site contient de nombreux programmes t\u00c3\u00a9l\u00c3\u00a9chargeables.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" id=\"image2451\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2012\/09\/pixel_gris.gif\" alt=\"Grey line\" width=\"482\" height=\"1\" \/><\/p>\n<p><strong>LIENS.<\/strong><\/p>\n<p><strong><em>Bo\u00c3\u00afds<\/em> de Craig Reynolds :<\/strong><\/p>\n<li><a href=\"http:\/\/www.red3d.com\/cwr\/boids\/\">http:\/\/www.red3d.com\/cwr\/boids\/<\/a><\/li>\n<p><strong><em>OpenSteer<\/em>, librairie C++ de Craig Reynolds<\/strong><br \/>\nd\u00c3\u00a9di\u00c3\u00a9e aux comportements directionnels d&rsquo;individus\/objets : <\/p>\n<li><a href=\"http:\/\/opensteer.sourceforge.net\/\">http:\/\/opensteer.sourceforge.net\/<\/a><\/li>\n<li><a href=\"http:\/\/www.red3d.com\/cwr\/steer\/\">http:\/\/www.red3d.com\/cwr\/steer\/<\/a><\/li>\n<p><strong><em>A boids experiment<\/em> de Matt Mays <\/strong><br \/>\nbas\u00c3\u00a9 sur le pseudocode de <a href=\"http:\/\/www.vergenet.net\/~conrad\/boids\/\">Conrad Parker<\/a> et sur le code de <a href=\"http:\/\/www.behaviorworks.com\/people\/ckline\/boids\">Christopher Kline<\/a> (source C++ t\u00c3\u00a9l\u00c3\u00a9chargeable) :<\/p>\n<p><img decoding=\"async\" id=\"image436\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/matt_mays_482.jpg\" alt=\"matt_mays_482.jpg\" \/><\/p>\n<li><a href=\"http:\/\/switch.sjsu.edu\/nextswitch\/switch_engine\/front\/front.php?artc=287\">http:\/\/switch.sjsu.edu\/nextswitch\/switch_engine\/front\/front.php?artc=287<\/a>\n<\/li>\n<p><strong><em>C++ Boids<\/em> de Christopher Kline<\/strong><br \/>\n(objets C++ t\u00c3\u00a9l\u00c3\u00a9chargeables) :<\/p>\n<p><img decoding=\"async\" id=\"image437\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/christopher_kline_482.gif\" alt=\"christopher_kline_482.gif\" \/><\/p>\n<li><a href=\"http:\/\/www.behaviorworks.com\/people\/ckline\/boids\">http:\/\/www.behaviorworks.com\/people\/ckline\/boids<\/a><\/li>\n<p><strong><em>Swarm<\/em> de Daniel Shiffman <\/strong><br \/>\nest une installation vid\u00c3\u00a9o qui impl\u00c3\u00a9mente un pattern de vol d&rsquo;oiseau inspir\u00c3\u00a9 de Boids de Craig Reynolds adapt\u00c3\u00a9 au mouvement constant d&rsquo;un \u00ab\u00a0pinceau\u00a0\u00bb, un peu \u00c3\u00a0 la mani\u00c3\u00a8re du \u00ab\u00a0dripping\u00a0\u00bb Jackson Pollock, autre inspiration de Daniel Shiffman :<\/p>\n<p><img decoding=\"async\" id=\"image438\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/swarm3_482.jpg\" alt=\"swarm3_482.jpg\" \/><\/p>\n<li><a href=\"http:\/\/www.shiffman.net\/projects\/swarm\/\">http:\/\/www.shiffman.net\/projects\/swarm\/<\/a><\/li>\n<p><strong><em>Bo\u00c3\u00afds<\/em> de Poul Henriksen <\/strong><br \/>\n(source Java t\u00c3\u00a9l\u00c3\u00a9chargeable) :<\/p>\n<p><img decoding=\"async\" id=\"image435\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/poul-henriksen_482.gif\" alt=\"poul-henriksen_482.gif\" \/><\/p>\n<li><a href=\"http:\/\/www.greenfoot.org\/scenarios\/index.html\">http:\/\/www.greenfoot.org\/scenarios\/index.html<\/a><\/li>\n<p><strong><em>Vie Artificielle, o\u00c3\u00b9 la biologie rencontre l&rsquo;informatique<\/em>,<br \/>\nillustr\u00c3\u00a9 avec Java par Jean-Philippe Rennard<\/strong><br \/>\n(source Java comment\u00c3\u00a9e t\u00c3\u00a9l\u00c3\u00a9chargeable) : <\/p>\n<p><img decoding=\"async\" id=\"image434\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/rennard_boids_482.gif\" alt=\"rennard_boids_482.gif\" \/><\/p>\n<li><a href=\"http:\/\/www.rennard.org\/iva\/boids.html\">http:\/\/www.rennard.org\/iva\/boids.html<\/a><\/li>\n<p><strong><em>eFloys<\/em> de Ariel Dolan<\/strong><br \/>\n(source Java t\u00c3\u00a9l\u00c3\u00a9chargeable et description des algorithmes) :<\/p>\n<p><img decoding=\"async\" id=\"image433\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/ariel_dolan_482.jpg\" alt=\"ariel_dolan_482.jpg\" \/><\/p>\n<li><a href=\"http:\/\/www.aridolan.com\/ofiles\/eFloys.html\">http:\/\/www.aridolan.com\/ofiles\/eFloys.html<\/a><\/li>\n<p><strong><em>Bo\u00c3\u00afds<\/em> de Conrad Parker<\/strong><br \/>\n(source Java t\u00c3\u00a9l\u00c3\u00a9chargeable et description des algorithmes) :<\/p>\n<p><img decoding=\"async\" id=\"image432\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2007\/03\/conrad_parker_482.gif\" alt=\"conrad_parker_482.gif\" \/><\/p>\n<li><a href=\"http:\/\/www.vergenet.net\/~conrad\/boids\/\">http:\/\/www.vergenet.net\/~conrad\/boids\/<\/a><\/li>\n<li><a href=\"http:\/\/www.vergenet.net\/~conrad\/boids\/pseudocode.html\">http:\/\/www.vergenet.net\/~conrad\/boids\/pseudocode.html<\/a><\/li>\n<p><img loading=\"lazy\" decoding=\"async\" id=\"image2451\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2012\/09\/pixel_gris.gif\" alt=\"Grey line\" width=\"482\" height=\"1\" \/><\/p>\n<p><em>Cours &lsquo;Arts num\u00c3\u00a9riques &#8211; Atelier&rsquo;<br \/>\nErg (\u00c3\u2030cole de Recherche Graphique) 2006-2007, P\u00c3\u00b4le Art.<br \/>\nProfesseur : Marc Wathieu. <\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" id=\"image2451\" src=\"http:\/\/www.multimedialab.be\/blog\/wp-content\/uploads\/2012\/09\/pixel_gris.gif\" alt=\"Grey line\" width=\"482\" height=\"1\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Une simulation du comportement d&rsquo;une nu\u00c3\u00a9e d&rsquo;oiseaux en vol.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,32,30],"tags":[],"class_list":["post-439","post","type-post","status-publish","format-standard","hentry","category-code","category-generatif","category-sciences"],"_links":{"self":[{"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=\/wp\/v2\/posts\/439","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=439"}],"version-history":[{"count":8,"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=\/wp\/v2\/posts\/439\/revisions"}],"predecessor-version":[{"id":3142,"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=\/wp\/v2\/posts\/439\/revisions\/3142"}],"wp:attachment":[{"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=439"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=439"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.multimedialab.be\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=439"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}