ParticleDesignerの使い方について

はじめましての方はこれからよろしくお願いします。
こんな場末のブログではそういった方の方が多いと思いますが。


この記事は、cocos2d Advent Calendar 2011 4日目です。
Cocos2dは夏ごろに触ったきりなのですが、そういえばその際にいまひとつ
分からないことがあったなぁと思ったのでそちらの解説を書こうかと。


前日 : cocos2d Advent Calendar 2011 -3日目 波紋のアニメーションやてみた。オッパイぷるるんもあるんだよ!

対象は、以前にも以下のエントリで紹介したParticleDesigner
エフェクト制作後の組み込み方などもこちらのエントリを参考にしてください。
(ParticleDesignerを使ってみた - 自堕落なぺぇじ)


簡単にエフェクトなどをいじることは出来るのですが、エフェクトなどを
専門に使っている人でもなければ各種パラメータの意味など分かりません。


適当に触っていてもそれなりにいじれるのですが、
やはり「知っている」のと知らないのでは全く違いますので
簡単にそちらの解説をしていきたいと思います。


ParticleDesignerは有料ですが、1,000円もしないものに迷って
無料の出来が悪いアプリを探すよりはさっさと買った方が時間の節約になります。


※本エントリでは、以下の書籍を大きく参考にさせて頂きました。
こちらでは各パラメータをいじった結果、「どうなるか」が
フルカラーの図解付きで紹介もされています。 初心者の方におすすめです。

cocos2d for iPhoneレッスンノート
加藤寛人 佐藤伸吾
ラトルズ
売り上げランキング: 44781


ParticleDesignerの各種パラメータ解説


取りあえず、適当にExplosionなんかを選択して「Emitter Config」を押すか
ダブルクリックでもして設定画面を呼び出しましょう。


Particle Configuration

左端の「Particle Configuration」から行きましょうか。

項目名 意味
Max Particles 生成するパーティクルの総数。多すぎるとパフォーマンスに影響するので注意
Lifespan 各パーティクルが表示されてから消滅するまでの時間間隔
Lifespan Variance Lifespanのぶれ幅。この値分だけ±変化する
Start Size パーティクルが生成される際のサイズ
Start Size Variance StartSizeのぶれ幅
Finish Size プロパティで言うendSize。 パーティクル消滅時のサイズ
Finish Size Variance FinishSizeのぶれ幅
Particle Emit Angle パーティクルの移動角度。
Particle Emit Angle Variance 角度のぶれ幅。両方に360などを指定すると、全方位に散ったり
Rotation Start パーティクル誕生時のテクスチャの回転角度。 「0」を入れてる場合が多い
Rotation Start Variance RotationStartのぶれ幅
Rotation End バーティ来る消滅時のテクスチャの回転角度。こちらだけに値を入れることが多い
Rotation End Variance RotationEndのぶれ幅


Background Color

ここはいつもの三原色を指定することで、
背景に対してエフェクトがマッチしているかを確認するだけですので省略。
パラメータは0〜1となっているため、
0〜255で表現している場合は255で割った数を指定しましょう。


Emitter Type

GravityまたはRadialを指定できる。
指定したタイプで、直下にあるパラメータ指定エリアが変化する。


Gravityでは指定したポイントに重力が存在する形でエフェクトが行われて、
Radialではある点から放射状に広がるような形かな?
ちょっと調べてもいまいち情報が出てこないので、文献が欲しい。


duration
durationは、「パーティクルシステムとしての寿命」。
消滅させたくない場合はkCCParticleDurationInfinity(-1)を指定する。


Gravity Configuration

Emitter Typeで「Gravity」を選択した場合の設定項目

項目名 意味
Speed パーティクルがエミッターから放出されたときの初期速度
Speed Variance 速度のぶれ幅
Gravity x 重力の存在する場所。CGPointのX値にあたる
Gravity y 重力の存在する場所。CGPointのY値にあたる
Radial Acceleration パーティクルの半径方向加速度
Radial Accl. Variance 加速度のぶれ幅
Tangential Acceleration パーティクルの接線加速度。放出された後の曲がり具合を指定する
Tangential Accel. Variance 接線加速度のぶれ幅


Radial Configuration

Emitter Typeで「Radial」を選択した場合の設定項目

項目名 意味
Max Radius (多分)startRadiusにあたると思う。どこにも資料が無い。左記なら、誕生時のエミッターからの距離
Max Radius Variance Max Radiusのぶれ幅
Min Radius (多分)endRadiusにあたると思うけど、Varianceが無い
Deg. Per Second rotatePerSecondにあたると思う。1秒あたりのパーティクル回転角度
Deg. Per Second Variance 上記のぶれ幅


Emitter Location

ちなみにEmitterって、エフェクトの開始位置とか
中心オブジェクトみたいなもので理解しておけばよいかと。

項目名 意味
Source Pos Y エミッターの位置。CGPointのY値を指定
Variance 上記のぶれ幅
Source Pos X エミッターの位置。CGPointのX値を指定
Variance 上記のぶれ幅


Particle Texture

特にグレースケールでないといけないわけじゃないですが、
グレースケールにしていると色を反映させやすいですね。
通常のOpenGL用Textureのように2の倍数サイズの正方形であれば特に大きさの指定は。
ただし、大きすぎるとメモリを食うことになるので注意が必要。


Particle Color

色に関する指定。細かい項目については解説なんて必要ないと思うので
大枠の部分だけ解説しておきます。
RedとかAlphaが何か、なんて不要ですよね。Alphaはちなみに透明度です。

項目名 意味
Start startColorに相当する。パーティクル誕生時の色
Start Variance 色のぶれ幅。これによって虹色などを作り出す
Finish endColorに相当する。パーティクル消滅時の色
Finish Variance 色のぶれ幅


Blend Function

背景画像とパーティクルの合成方法に関する設定。
アルファ、加法混色、減法混色などがあります。
良く分からなければ、デフォルトのままGL_SRC_ALPHAを使っておけばよいかと。

項目名 意味
Source 元画像の色。デフォルトはGL_SRC_ALPHA
Destination 描画先画像(画面バッファ)の色。デフォルトはGL_ONE

計算式や意味については、以下のサイトなどを参考にしてください。
もしくは自分でglBlendFunc関数について調べるとか。
私はこの辺専門じゃないんで全然分かりません。
ブレンディング::計算式の設定


次のカレンダー

5日目、@Seasonsさんの記事はこちらになります。
cocos2dで非同期画像読み込みを超絶簡単に実装するCCResourceAsyncLoaderの紹介