ページ

2009年3月24日火曜日

[Silverlight] Silverlight でパーティクル

Creating Particle Effects in Silverlight

パーティクルっていうのは小さな点 (点じゃなくてもいいですが) をたくさん描画することによって煙や炎なんかを表現するっていうやつです。
それを Silverlight 2 でやってみたというのが上記の記事です。(Silverlight 3 じゃありません)

このサンプルでは、パーティクルの一要素はグラデーションブラシで灰色に塗った小さな円です。
これに drift という名前のストーリボードをセットしています。
drift は左から右に速度変化しながら移動するアニメーションです。
これをオート・リバースでリピートにしてあるので、左から右へ、右から左へ、とゆらゆら揺れることになります。
このパーティクルを 50ms 間隔のタイマーを使って次々と生成します。
パーティクルの生成部分はちょっと工夫があって、上まで昇っていって使い終わったパーティクルを再利用するようになっています。(それが ParticleGenerator の部分)
また、生成時の x座標の初期値と drift の開始時間を乱数を使って若干ランダムにしています。
さらに、同じくタイマーイベントのタイミングで生成済みのパーティクルを ScaleTransform でちょっとづづ大きくする、Opacity でちょっとづつ透明にする、y座標を上に移動、といったことを行います。
これくらいの処理で、記事の最初にあるような結構リアルな感じの煙になります。

なるほどなぁ。
ところで、スケール、透明度、y座標の変更をストーリーボードではなくコードでやってるのはなんでだろ?
これらもストーリーボードでやってやればコードでやるのはパーティクルの死亡判定くらいにできると思うんだけど。
(ストーリーボードでできることはストーリーボードでやった方がパフォーマンスが良くなるように思います)


0 件のコメント:

コメントを投稿