こんにちは。
先日の朝日新聞の日曜版(紙)だったと思うのですが、「Boid(ボイド)」というアルゴリズムの話を取り上げていてへぇーと思いましたので、報告させていただきます。
1987年(20年前!)にCraig Reynoldsさんという学者でもない、一介のプログラマーが、「計算機にそれほど負荷をかけずに鳥の群れを表現するにはどうしたらいいんだろう?」と考えているうちに編み出したアルゴリズムらしく、ものすごい簡単なルールで群れっぽい動きを表現するというものです。CGの祭典SIGGRAPHで発表したときはさぞかし会場が大興奮だったと想像します。
ルールというのは、基本的にはこの3つでOKという…。
◆ルール1:近くの鳥たちと飛ぶスピードや方向を合わせようとすること
◆ルール2:鳥たちが多くいる方へ向かって飛ぶこと
◆ルール3:近くの鳥や物体に近づきすぎたら、ぶつからないように離れること
~『ほぼ日刊イトイ新聞 - がんばれ森川くんの遺伝子くん』より
サンプルコードもたくさんネットにありますし、
たぶん、CodeZine読んでいる方なら、基本のものは作れるんじゃないか、と。
適当に群れっぽくなるよう調整するのがちょっと難しいらしいですが。
元の論文です。
Craig Reynolds: Flocks, Herds, and Schools: A Distributed Behavioral Model
http://www.cs.toronto.edu/~dt/siggraph97-course/cwr87/
概要はこれがわかりやすい。
ほぼ日刊イトイ新聞 - がんばれ森川くんの遺伝子くん
http://www.1101.com/morikawa/2001-06-25.html
楽しいアプレット。しかし基本が上記ルールだけでこんなのができるっているのは、本当にすごいですね。
百匹目の猿 群れっぽい動き
http://100th.blog96.fc2.com/blog-entry-37.html
Life is beautiful: 習作UI: 縁日の金魚を再現してみた
http://satoshi.blogs.com/life/2007/05/ui.html
ちなみにCraigさんはいまSCEでやっぱり開発しているそうです(PS3とか?)。いつかあってみたい人リストに入れました。
Craig W. Reynolds
http://www.red3d.com/cwr/



