« ビンボーゆすりを科学したコラボ・プロダクト YUREX(TM)製品サイトをリニューアルしました!! | トップページ | ActionScript 25行コンテストの決勝進出者12人のコードがすごすぎる件 »

hidaka

CS4でパーティクルを試す(matrix3Dとかvectorとか)

2008/12/10

tagCS4,Matrix3D,Particle,vector,サンプルコード

なにやらkijimaにパーティクルブームがきているようなので乗っかってみます。


クリックでなにかが散らばります。


モノを動かす時の要素ですが、X・Y・Z軸の移動、回転、拡大率の9項目。
matrixで以下のようになります。

function makeMatrix(Xpos:Number, Ypos:Number, Zpos:Number,Xrotate:Number, Yrotate:Number, Zrotate:Number, Xscale:Number,Yscale:Number,Zscale:Number):Matrix3D {
matrix.prependRotation(Xrotate, Vector3D.X_AXIS);
matrix.prependRotation(Yrotate, Vector3D.Y_AXIS);
matrix.prependRotation(Zrotate, Vector3D.Z_AXIS);
matrix.prependTranslation(Xpos, Ypos, Zpos);
matrix.prependScale(Xscale,Yscale,Zscale);
return matrix;
}


毎フレームごとに動かす処理はこれ↓。

//pos
v[1] = (v[1]+v[2])*v[0];
v[4] = (v[4]+v[5])*v[0];
v[7] = (v[7]+v[8])*v[0];
//rot
v[10] = (v[10]+v[11])*v[0];
v[13] = (v[13]+v[14])*v[0];
v[16] = (v[16]+v[17])*v[0];
//pos,rot,scale
mat3D=makeMatrix(v[1],v[4],v[7],v[10],v[13],v[16],1,1,1);


拡大率は今回使わなかったので1にしてあります。
vはvectorクラスで、値の数は19個。1パラメータにつき初速・加速度・初期値があり、それが座標3つと回転3つで計18個、プラス空気抵抗で19個です。
内訳は
0:抵抗
1:X初速
2:X加速
3:X初期値
4:Y初速
5:Y加速・・・と続いています。

実際は場合によって使用しないパラメータの分を省いたりして軽量化しますが今回は拡大以外フルで。
Z軸の計算をFlashが持ってくれるので舞い散る感じのアニメーションがすごく楽になったと思います。紅葉とか、桜とか。

さて、次。ほぼコードは同じですがクリックで始まります。

少し変えただけで変わりまくるのがパーティクルのいいところ。予想しきれるものじゃなくなってくるのでどんどんやります。

で。もいっこ。クリックで再生。


よくクラブで見る感じのラインアニメーションをいくつも重ねたもの。
あまり差はないと思いますがvecterクラスで。

今回のソース3つはここ

ブックマーク: このエントリーをはてなブックマークに追加 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをECナビ人気ニュースに追加

page top

お問い合わせ

  • お仕事の相談
  • 内容についてのご指摘ご感想

お問い合わせフォームはこちら

Tag