前回(「蟻を歩かせる」)作成した蟻(下図)を、ぞろぞろと行進させてみようと思います。
上動画の通り、蟻の姿と歩き方のモデリングは終了しています。今回のテーマは、蟻が行列しながら行進している様子をモデリングすることです。
蟻は何か食べ物を見つけると、それを巣に持ち帰る時に匂いを残すそうです。その匂いには、「こっちに食べ物があるよ」と言う情報が含まれているため、仲間の蟻達がそれに気が付くと、その匂いを追って食べ物に到達します。食べ物を持ち帰る時、2匹目以降の蟻も同じ匂いを残しながら巣に戻るので、その道筋の匂いはどんどん濃くなっていきます。
更に、匂いは空気の流れによって拡散されて漂うので、何10匹も同じ道を行ったり来たりしている内に少しづつ補正され、巣と食べ物を結ぶ最短ルートに近づいて行きます。
「蟻を歩かせる」でも少し触れましたが、とても単純なルールで生きている虫なのに、ちゃんと最適化を図りながら行動しているのですから、驚きですよね?
ここから、蟻が行列して更新する様子の座標データを生成して行きます。
適切な曲線の上をぞろぞろと歩かせたいと思います。何10匹もの蟻の歩く座標を手動で作るのはしんどいので、スクリプトを使って自動計算させましょう。
まず、白いキャンバスに適切な曲線を描きます(下図)。
赤い線が、蟻の通る道です。適切なグラフィックエディタなどを使って作図してください。
ここに、乱数を使って蟻を適当に散らして配置します(下図)。
青●が蟻の位置、緑色の線が進む方向です。
そうしたら、以下のルールで1匹1匹の蟻を歩かせます。
このルールだと、蟻の歩く道筋(赤い曲線)は、自由に決めることができます。
例えば、山手線みたいにループさせると、蟻はグルグルとその周りを回り続けます。簡単な文字であれば、文字に沿って歩かせることもできるかもしれません。ただし、上の様な簡単なルールですので、あまり複雑な図形になると、線と線のつなぎ目等で、行ったり来たりトラップされてしまったりしますので、適切に図形を調整して見てください。
下図は蟻の通り道の作図例です。
蟻を使ってレンダリングする前に、簡単な図形を使って行進させてみた試行動画を以下に示します。
上の動画で、蟻の数は32匹です。
スクリプト(marching_ants_pos.xitr)では、青●の座標と、進む方向(緑線)のデータをテキストファイル(座標ファイル、marching_ants_pos.txt)に出力しています。後ほどレイトレーシングデータからこの座標ファイルを読み込んで、蟻のモデルを配置します。
完成したデータをリンクしておきます。
1) | Xi-TRACEデータ | marching_ants.xitr |
2) | マッピングデータ | walking_ant_soil.jpg |
3) | 座標計算用スクリプト | marching_ants_pos.xitr |
4) | 座標計算用図形 | marching_ants_pos.xpic |
1)でレイトレーシングを実行します。レイトレーシングの実行には、蟻の座標を計算した座標ファイルが必要となります。2)は1)から読み込んで使用するマッピングデータです。1)と同じディレクトリに置いてください。
3)4)で蟻の座標を計算して座標ファイルを作成しますので、レイトレーシングする前に3)を実行してください。
完成した動画を以下にリンクしておきます。
上の動画で、蟻の数は32匹です。
蟻は小さいので、あまり引き過ぎると、ただの黒い点がうごめいているだけに見えてしまいます。ある程度蟻の形が判る様にアップにしてみたところ、この位の数がちょうど良いと思いました。
最初はもっと、100匹近く歩かせてみたかったのですが、視界の範囲内に100匹も登場すると、もう、ゴチャゴチャし過ぎて逆にダメかと……。