群れのラボベータ

3つのルールだけで鳥や魚の群れが生まれる様子を実験

このツールはまだ安定化中のベータ版です。結果に違和感があればお知らせください。

シミュレーションエンジン(WebAssembly)を読み込み中…

整列度0.00

各点は視野半径と視野角の内側にいる仲間だけを見て3つのルールに従います(視野角を狭めると背後の仲間は見えません)。分離半径より近ければ離れ(分離)、仲間と同じ向きに飛び(整列)、仲間の中心へ寄っていきます(結合)。誰も指揮していないのに群れが生まれます。キャンバスを押したりドラッグしたりするとエサや捕食者になります。整列度は全員が同じ向きなら1、ばらばらなら0に近づきます。

群れのラボについて

画面の点ひとつひとつは、クレイグ・レイノルズが1987年のSIGGRAPHで発表した「ボイド(boid)」です。各ボイドは視野半径(既定50ピクセル)内の仲間だけを見て3つのことをします。近すぎる仲間から離れる(分離)、仲間の平均の向きにそろえる(整列)、仲間の平均位置に近づく(結合)。群れの形やリーダーはどこにもプログラムされていません。

右下の「整列度」は、全ボイドの進行方向の単位ベクトルを足した長さを個体数で割った値です。全員が同じ向きなら1、ばらばらなら0に近くなります。群れができていく様子を数字で確かめられます。

3つの規則の実際の計算

各規則は「望む方向」をひとつ作ります。整列は仲間の速度の平均、結合は仲間までの相対位置の平均、分離は分離半径(既定20ピクセル)内の仲間から距離の2乗に反比例して離れる方向です。その方向に最高速度で進むのに必要な速度変化を求め、最大操舵力(最高速度の1/30)で切り、スライダーの重みを掛けて足し合わせます。分離には内部でさらに1.5倍が掛かります。

速度は最高速度とその1/3の間に制限されます。既定の180なら毎秒60〜180ピクセルで、ボイドは止まれません。近傍探索は画面を視野半径の大きさのマスに分けて周囲9マスだけを見るので、5,000羽でも実時間で動きます。

観察1: 整列を0にする

既定の群れで整列度が0.9を超えたのを確かめてから、整列スライダーを0にします。ボイドは固まったままですが、塊の中で向きが散らばり整列度が急に下がります。1,500羽が完全にランダムな向きなら、整列度はおよそ1/√1500 ≈ 0.03です。

逆に結合と分離を0にして整列だけ残すと、集まらないまま向きだけがゆっくりそろいます。これはヴィチェックらが1995年に提案した自己駆動粒子モデルに似ています。そのモデルは、近くの向きに合わせることとノイズだけで、無秩序から集団運動への相転移が起きることを示しました。

観察2: 視野半径が群れの大きさを決める

視野半径を10にすると仲間がほとんどいなくなり、小さな群れがいくつもできて別々の方向に流れます。群れの中ではそろっていても全体の整列度は低いままです。150にすると数秒でひとつの大きな群れにまとまります。

期待される仲間の数で見当がつきます。900×560ピクセルの画面に1,500羽が均等にいれば、密度は1,500 ÷ 504,000 ≈ 0.003羽/ピクセル²です。半径50なら円の面積約7,854ピクセル²で仲間は約23羽、半径10では1羽未満です。仲間が0羽なら3つの規則はどれも力を生みません。

観察3: 捕食者と壁

ポインターを「捕食者」にして群れの真ん中を押し続けると、半径160ピクセル内のボイドが逃げて群れが2つに割れます。離すと結合の働きで再び合流します。ムクドリの群れがハヤブサを避ける姿に似ていますが、ここでは「ここから離れる」方向がひとつ操舵に加わるだけです。

端を「壁」にすると、端から50ピクセル以内で内側へ押す力が生まれます。群れが壁に沿って曲がることが多くなり、整列度は反対側につながるモードより大きく上下します。

このシミュレーションが省いているもの

  • 視野角の既定値は360度の円です。レイノルズの元のボイドのように真後ろを見えなくするには、視野角スライダーを下げます。たとえば270度なら、背後90度の扇形にいる仲間は無視されます。
  • 3つの力を重み付きで足しています。原論文は、衝突回避のような急ぎの要求を先に満たす優先順位方式を説明していました。
  • 2次元で、障害物回避、エネルギー、羽ばたきの力学はありません。操舵力の上限と最低速度は見た目のために決めた値です。

例

ランダムな向きのときの整列度

入力
1,500羽、整列0、結合0
結果
約0.03

ランダムな単位ベクトルN個の和の長さは平均して√N程度なので、√1500 ÷ 1500 ≈ 0.026。

視野半径ごとの仲間の数

入力
900×560画面、1,500羽
結果
半径50 → 約23羽、半径10 → 約0.9羽

密度0.00298 × π × 50² ≈ 23、× π × 10² ≈ 0.9。

速度の範囲

入力
最高速度180
結果
毎秒60〜180ピクセル、操舵力上限6

最低速度は最高の1/3、操舵力上限は1/30。

使い方

  1. 群れのタイプ(鳥の群れ・魚群・虫の群れ・てんでばらばら)を選んで出発点を決めます。
  2. 分離・整列・結合・視野半径・分離半径・視野角を一つずつ動かして整列度の変化を見ます。
  3. キャンバスを押すかドラッグしてエサまたは捕食者になります。

よくある質問

ボイドという名前の意味は?

レイノルズがbird-oid(鳥のようなもの)を縮めて付けた名前です。1987年のSIGGRAPH論文「Flocks, Herds, and Schools」で発表されました。

本物の鳥もこの3つの規則に従っているのですか?

このモデルは鳥の脳を再現したものではなく、群れらしい動きを再現する最小限の規則です。ただ、近くの仲間にだけ反応しても大きな群れが生まれるという考え方は、実際の動物の研究でも重要なテーマです。

指揮者がいないのに、なぜ同じ方向にそろうのですか?

整列の規則で隣どうしの向きが少しずつ似ていき、その効果が隣の隣を通じて群れ全体に広がります。端がつながった画面では遮る壁がないので、ひとつの向きに収束しやすくなります。

映画やゲームで使われていますか?

レイノルズの論文の目的はコンピュータアニメーションでした。一羽ずつ経路を描く代わりに規則を与えて群れを計算する方法は、その後の映像やゲームで広く使われています。

関連ガイド

出典

基準日:

プライバシーとデータの扱い