今回は、Separation(引き離し)の障害物版だ。前のSeparationでは、boids同士の引き離しのみをやった。
又、パーティクルが障害物を避ける記事は、前に記事に取り上げている。
前の記事と基礎的なフローは一緒と考えてよいかな。今回のと比べたいところだが長くなるのでやめとく。いえるのは、どっちも勉強になるということ。障害物は、引き出し多いほうが対処できるしね。
障害物追加設定した動画↓
なかなか、いい感じにできた。
ではまず、障害物に対し、ある距離近づくとintersectで自身の進む方向にrayを飛ばし、rayが障害物にhitしたときに、メモリに必要データを保存している。
ここでは、メモリの使い方に注目してほしい。memoryのhitをONにしたりOFFにしたりしている。
画像の説明でわかるとよいが、、。。
勉強になるな~この辺はのメモリの使い方に関しては、ナイスガイのデータを参考にした。
前の記事ではObstclesはノードヘルパーで、やったのでこのようなことは必要なかった。障害物をPshapeにしたいときはPPassでこう組めばよいかな^^
次に、AvoidTargetを作成する。
これは、この方向へ避けますよというガイド的なもので、次ダイナミクスでベロシティにaddするために必要なデータをメモリに入れる。詳細はこちらの④と大体同じなので伏せて確認すると良い。
最後に、velocityの設定を行う。
ナイスガイは、上記の条件で方向を置き換えする設定にしていた。これだと、条件満たすと急に方向が変わるのでピクッとした動きになるかと思う。 これを、いつものvelocityにaddでできるだけ滑らかに表現したいと思った。
と、、記事を書きながら思ったんだけど、その方向を変えるベクトルを小さく(上記画像の半径にあたる)して、徐々に毎サンプルすることで急に方向が変わることは免れるのか!
結局、addでなくて方向を置き換えることにした。動画は結果あまり変わらないので更新しない。
更新前 |
更新後 |
以上。。
0 件のコメント:
コメントを投稿