2013年10月16日水曜日

TPでboidsをセットアップしてみる。その5 AvoidObstacles

いよいよ、終わりに近づいてきた。目標として、セットアップは次で終わりにしたい。
今回は、Separation(引き離し)の障害物版だ。前のSeparationでは、boids同士の引き離しのみをやった。
又、パーティクルが障害物を避ける記事は、前に記事に取り上げている。
前の記事と基礎的なフローは一緒と考えてよいかな。今回のと比べたいところだが長くなるのでやめとく。いえるのは、どっちも勉強になるということ。障害物は、引き出し多いほうが対処できるしね。

障害物追加設定した動画↓




なかなか、いい感じにできた。オリジナルのルールで障害物に近づくと、スピード落とすのも上手く機能している。


ではまず、障害物に対し、ある距離近づくとintersectで自身の進む方向にrayを飛ばし、rayが障害物にhitしたときに、メモリに必要データを保存している。
ここでは、メモリの使い方に注目してほしい。memoryのhitをONにしたりOFFにしたりしている。
画像の説明でわかるとよいが、、。。
勉強になるな~この辺はのメモリの使い方に関しては、ナイスガイのデータを参考にした。
前の記事ではObstclesはノードヘルパーで、やったのでこのようなことは必要なかった。障害物をPshapeにしたいときはPPassでこう組めばよいかな^^


次に、AvoidTargetを作成する。
これは、この方向へ避けますよというガイド的なもので、次ダイナミクスでベロシティにaddするために必要なデータをメモリに入れる。詳細はこちらの④と大体同じなので伏せて確認すると良い。

最後に、velocityの設定を行う。
ナイスガイは、上記の条件で方向を置き換えする設定にしていた。これだと、条件満たすと急に方向が変わるのでピクッとした動きになるかと思う。 これを、いつものvelocityにaddでできるだけ滑らかに表現したいと思った。
と、、記事を書きながら思ったんだけど、その方向を変えるベクトルを小さく(上記画像の半径にあたる)して、徐々に毎サンプルすることで急に方向が変わることは免れるのか!
まあ、でもvelocityにaddという方法を取り入れたことで、解かりやすいし色々スピード調整も可能だ。上記のオリジナルルールも取り入れる事ができた。
結局、addでなくて方向を置き換えることにした。動画は結果あまり変わらないので更新しない。
更新前

更新後



記事書きながら途中で気づいた点もあったりして、消化不良な感じになったがこれまで。
たぶん、最後のvelosityの設定は調整するかも。そのときは更新する。

以上。。





0 件のコメント:

コメントを投稿