2012年12月7日金曜日

「TPで障害物を避ける」シリーズpart2

前回の記事をpart1として、その続きになります。
といっても、自分のミスの修正です。
こそっと直したいところですが記憶に残しておきたかったので記事にしました。

前回は、障害物が一つだけでした。
まず、前回の設定のまま、障害物を増やしてみました。

動画①



いっこうにGoalに向かってくれないようです。。行き場を失っています^^
修正が必要です。

動画②

結果、なんとかGoalに向かわせることができました。

では、前回の設定を見つつ修正点をメモしていきたいと思います。


まず、動画①の問題点として、
Objパーティクル(三角錐モデル)が最初の障害物を避けた後、Goalに向かってくれないという点です。


前回の記事の④-3でObjパーティクルが最初の障害物を避けた後、ゴールに向かう条件が設定されています。GoalToCheckというダイナミクスです。簡単に言うと、Objパーティクルがゴールを視認することができたらGoalに向かうという条件設定になっています。
動画①では、追加した障害物のせいでObjパーティクルはGoalを視認できない事がわかるかと思います。まさに行き先を見失っているという感じですねw
なので、この条件設定は使えません。

次の条件に変更しました。







Guide for Avoidダイナミクスで取得したターゲットポイントに近づくと、再びゴールを目指すという条件設定です。

これで、万事解決というわけにはいきませんでした。
てか、全然駄目です。

んっと、現状、次に新たに発射されるObjパーティクルからターゲットポイントが作られると、最初のObjパーティクルはそのターゲットポイントが一番近いと判断したらそちらに向かってしまうということになっています。

図にしてみた↓↓














どういう設定かというと、
前回の記事の④-2にあるNearest point searchダイナミクスの設定になります。
このダイナミクスセットでは、毎回全てのターゲットポイントを取得して(PPassAB)、一番近いターゲットポイントを取得するように設定されています。
これでは、上図の右のような結果になるので、PPassABによるターゲットポイントの取得は無理なようです。


なので、PPassABは消して以下のように設定しました。






















こうすることで、Objパーティクルはターゲットポイント(ExitPos)を取得したときだけの位置又は方向を毎回取得することができます。ここのデータの流れの詳細な説明は省きます。
簡単に説明すると、図の上のダイナミクスセットはターゲットポイントを取得するためのダイナミクスセットで、下がその取得したターゲットポイントに向かう設定です。


大まかですが、これらのような修正をすることで動画②のような事ができるようになりました。
興味があれば、ファイルアップしますので設定を見比べてみてください^^
又、これらはあくまでも、俺流設定なので間違った点はあるかと思われます。
そして、そういった点や別の良い方法などあれば指摘してくれると助かります。
後、基本的な考え方はJoe Scarr氏のDVDを参考にしています。SquirlArt CROWD SETUPSの項目です。てか、修正するにつれ、その設定に近づいているかも^^

part1
part2

次回は、Objパーティクルが避けるためのターゲットポイントの位置を見直していきたいと思います。
こっからが、めっちゃ難しくなるところだと思います。
数学好きにはたまらない内容になるかもです^^



0 件のコメント:

コメントを投稿