ボイドアルゴリズムの解説

1.ボイドアルゴリズムの概要

多数のオブジェクトを「群れ」として統一的な動きをさせるためのアルゴリズムです.映画やゲーム(スターウォーズはたしか使っていた)の群れを表現する時や,集団の行動をシミュレーションする時などに使われています.
今から20年ほど前に,アメリカのCraig Reynoldsという人が考えたアルゴリズムで,3つのルールに従ってオブジェクトを動かすことによって,群れをシミュレーションします.一見複雑そうに見える「群れ」の動きを3つのルールで自然に表現できます.
名称はbird-oid(鳥もどき)を省略してboid(ボイド)としたらしいです.

2.ボイドアルゴリズムの仕組み

概要で述べたように,ボイドアルゴリズムには3つのルールがあります.それぞれのオブジェクトがその3つのルールに従って動くことで,全体として群れの動きとなります.
その3つのルールとは,下図にあるように,A領域・B領域・C領域の3つに場合分けされ,周りのオブジェクトがどの領域にいるかによって,どのルールが適応されるか決められます.
ボイド

・A領域に他のオブジェクトがいた場合は,そのオブジェクトから離れようとする.
・B領域に他のオブジェクトがいた場合は,そのオブジェクトと同じ向き・速さになろうとする.
・C領域に他のオブジェクトがいた場合は,そのオブジェクトに近づこうとする.
このような3つの基本ルールから成り立っています.

2.1.ボイドアルゴリズムの仕組み-プログラムによる領域範囲の違い-

プログラムによって,A領域にオブジェクトがいる場合にB領域・C領域のルール(同様にB領域にオブジェクトがいる場合にC領域のルール)を同時に適応する場合もあります.その場合は,領域ごとに重みをつけた加重和を計算結果として用いることが多いです.

3.当サイトのプログラム説明

当サイトで公開しているプログラムの解説です.
実行画面

プログラムのモデルは魚で,プログラム名の後ろにある数字が公開した年・月・日を示しています.
実行画面のおたまじゃくしのような物(○に線が生えている物)が魚の場所・向きを表しています.○が頭を,線が尻尾を表しています.
四角の物体は障害物をしてしています.

3.1.当サイトのプログラム説明-仕様-

魚の頭(○の部分)の中心が,それぞれの魚の座標になっているため,魚の尻尾(線の部分)や,頭の外側が壁にめり込むことがあります.

3.2.当サイトのプログラム説明-色によるモード区別-

(2009.01.07)バージョン以降のプログラムでは,魚に色をつけて表示しています.色は赤・緑・青・白の四色あり,赤色はA領域に他の魚が,緑色はB領域に魚が,青色はC領域に魚がいることを示しています.白色はC領域までの範囲内に他の魚が見当たらない状態を示しています.
(2009.01.08)バージョン以降のプログラムでは,さらに障害物を感知しているかを表示するようになりました.障害物を感知している時は線が赤色で,感知していないときは黒色で表示しています.
(2009.01.29)バージョン以降のプログラムでは,捕食者(一匹の魚を延々と追いかけるだけの障害物ですが)の線を赤色に変更し,他の障害物と区別できるようにしました.

メインページ