資料館/パーティクル編隊飛行

Last-modified: 2008-01-19 (土) 17:33:37

発端

やっぱり手っ取り早くイカすエフェクトを出すには、パーティクルを使うのがラクチンだ。
しかしパーティクル命令自体は、指定した地点からパーティクルを噴出、という単純な挙動しかしてくれない。結局工夫が必要になってしまうわけだ。
収束するパーティクルは以前にやってのけたが、今回はもう少し複雑な動きを、しかしラクにやってみる事とする。

結果

ss01.jpgss02.jpg
進行方向へ編隊を組み、一個を中心に旋回しながら飛び回る表現をしてみたぞ。
これをプログラムで組もうと思うと結構めんどくさい。移動しながら円運動を行うなんて、オイラの味噌カスのような数学の知識では到底無理である。
なので今回は、RokDeBone2の力を借りてこれをやってのけることとする。

りろん

じゅんじょ

  1. こんな感じのだみーおぶぜくとを作る。
    hako.jpg
  2. オブジェクトに、回転するようなモーションをつける
  3. オブジェクトを自由に画面内で移動させる
  4. ボーンの位置情報を元に、パーティクルの位置をセットしてやる
  5. カラフル納豆ミサイル

E3DNewposeにより、現在のモーションのフレーム位置が返ってくるので、それを元に各々のボーンの位置を取得し、あとは納豆ミサイルを出すだけとなる。
なお、回転するモーションをつけるのではなく、E3DRotateYなどを利用しても同じ結果が得られるが、今回はダミーオブジェクトの向きが進行方向に関係するためモーションを利用した。こうすることで、ダミーオブジェクトの進行方向を扱いやすくなる。
E3DRotateYを使う場合は、新しく追加されたE3DCreateEmptyMotionを使うとよい。
宿命かな、今回は調子に乗って毎フレームパーティクルを生成してやったため、かなり重い。

さんぷる

上記のように螺旋移動を行うサンプルを作ってみた。
一通りコメントは入れてあるが、納豆ミサイルのソースを改変したものなのでそちらも見るとより分かりやすいかもしれない。
処理が重くてションボリな時は、パーティクルの寿命や生成頻度を適当に下げてみるべし。寿命を0.5程度に設定すれば、まあそれなりに見れるだろう。
filehentai.zip

どうが

例によって実物はもう少し滑らか
&flash(http://www.youtube.com/v/p3e_L076qkw,425x350,bgcolor=#000000);

けつろん

ようは、軌跡を描きたい通りにダミーオブジェクト、ボーン、モーションを組み合わせれば、移動位置のテーブルとか作らなくても全部E3Dにマル投げできる。
難点は重いことだが、剣の軌跡サンプルもあることだし、エフェクトの表現の幅がまた広がったと言えよう。