A tutorial by AndrewFM
(v1.20)


目次

はじめに

Effekseerはゲーム向けのパーティクルエフェクトを作成するためのオープンソースのフリーのプログラムです。このプログラムで作成されたエフェクトは2Dのスプライトシート、AVIファイル、専用の3Dファイル形式で出力できます。このプログラムにはこれらの3DファイルをUnityで再生するためのUnityパッケージが用意されています。同様にDirectXやOpenGLで使用するためのC++のランタイムもあります。Effekseerのインターフェースと特徴はBISHAMONの影響を強く受けており、Effekseerはこれをシンプルにしたものとも言えます。

このドキュメントはプログラムの概要で、チュートリアルと似た構成をしています。プログラムの特徴の多くをカバーしていますが、完全なマニュアルではありません。マニュアルはこちらで見られます。

このチュートリアルの画像を生成するのに使用したEffekseerのプロジェクトファイルはここからダウンロードできます。

インタフェース

基本的にこのプログラムの機能はスクリーン上部の「ウインドウ」メニューに含まれています。Effekseerのレイアウトは全てカスタマイズでき、ウインドウを加えたり、取り外したり、大きさを変更したり、再配置したり、タブ化したりできます。これは全てドラッグ&ドロップで簡単に行えます。

ビュワー

ビューワーでは作成されたパーティクルエフェクトをプレビューできます。ビューワーは中央ボタンで平行移動でき、マウスの右ボタンで回転でき、スクロールホイールで拡大・縮小ができます。

スタートエンドの入力欄は 再生ボタンを押したときのプレビューの間隔を制御します。(このプログラムに関係するすべてのタイミングと同じように)この数値はフレーム(60フレーム=1秒)で換算されます。例えば、間隔を[120,180]と設定した場合、再生ボタンを押すと2秒目からアニメーションが再生され、1秒後の3秒目で停止します。

ステップボタン(二つの三角形)を1回押すとアニメーションを1フレーム進めます。この数値はビューワーで表示している現在のフレームです。

グリッドの表示、色、その他の設定はオプションで変更できます。背景色/画像、光源等といった他の設定も同様に変更できます。

ノードツリー

これは作成中の全てのパーティクルエミッターを格納しているプロジェクトの構造の概要です。ツリーのノードをクリックすると様々なウインドウにプロパティが表示され、そのプロパティを編集できるようになります。ノードツリーを右クリックすると新しいノードを追加するオプションを含むメニューが表示されます。この新しいノードは現在選択されているノードの子に追加されます。Effekseerの継承の考え方(子のノードが親のノードのプロパティを一部引き継ぐというもの)があります。継承については詳細は後で記載します。また、ノードはコピーや貼り付けができ、とても便利です。

ランダム値入力欄

Effekseer内のたくさんの数値入力欄は左の画像のような見た目になっています。このような入力欄は、その値がランダムな値をとることができることを示しています。入力のための2つのオプションがあり、機能的には二つとも等しくなっています。

  • 最大・最小 最大値と最小値を指定し、2つの値の間の値がランダムに適用されます。
  • 中心・振幅 中央値と広がり幅を指定します。例えば、中央5、広がり幅2であれば、3から7の間の値がランダムに適用されます。

パーティクルエミッタ(ノード)

ノードはEffekseerのコアです。これらは実際にパーティクルエフェクトを構成するパーティクルを出現させます。この章ではパーティクル自身でなく、ノードがパーティクルを出現させる方法の調節の仕方について説明します。(出現したパーティクルの挙動と見た目の編集については後の章で扱います。)

共通

共通ウインドウにはノードがパーティクルを出現させる方法を調節するための標準的なパラメーターが全てあります。上から順に説明します。描画はビューワーにこのノードのパーティクルの表示/非表示を設定します。註:これは単に編集を楽にするためのものであって、表示の設定によらず最終的な出力では表示されます。

名称は、便利にする以外の目的には使用されません。一度、ノードツリーでたくさんのノードを使用し始めると、それらを説明する名称をつけたくなるでしょう。

生成数は、ノードが出現させるパーティクルの最大数を設定します。無限チェックマークはそれを上書きして、ノードは制限なくパーティクルを出現させるようになります。

生存時間はフレーム単位でそれぞれのパーティクルが出現してからの生存時間を設定します。これは各パーティクルごとの独自の値で、パーティクルが出現してからすぐにカウントが始まります。指定した時間が過ぎるとパーティクルは自動的に消滅します。 これは寿命により削除がチェックされてないと無視されます。

生成時間はノードがどの程度早くパーティクルを生成するかを設定します。1の値は1フレームに1つパーティクルを生成することを意味します。10の値は10フレームに1回、パーティクルを生成することを意味します。小数も指定することができ、例えば0.1を指定すると1フレームに10個パーティクルが生成されます。

生成開始時間はパーティクルを生成し始めるまでの待機時間を設定します。これは全てのエミッターが同時に動作し始めるするわけではない連続的なエフェクトに便利です。

影響

既に触れたように、影響はEffekseerの特徴の一つです。例えばノードAがノードBの親ノードである場合、ノードAが生成する全てのパーティクルは、ノードBの生成するパーティクルと紐づきます (つまり、パーティクルを生成するようなパーティクルを作成することができます)。 共通 ウインドウにある設定には、意図的に変更しない限り、影響が適用されます。

位置/回転/拡大の影響はこれらが行うことの中では自明でありますが、ドロップダウンのオプションは不明瞭かもしれません。以下の3種類のオプションがあります。

もし 親削除時削除 がチェックされていた場合, 親のパーティクルが破壊されていたら自動的に子のパーティクルも破棄します。

子が全て消滅時削除 は上記の逆です。もし、親のパーティクルが子のパーティクルをこれ以上生成しない場合、 全ての子が破棄された後のすぐに自動的にパーティクルが破棄されます。

サンプルプロジェクト "00_Basic/Laser03.efkproj" は影響のいいサンプルです。表示されない "Core" パーティクルは "Core"パーティクルを継承する"Track"の位置と回転を誘導し、独特のジグザグの軌跡を表現します。 同時に、"Track"の位置を用いてジグザグの軌跡にそってパーティクルが生じるように"Particle"ノードは"Track"ノードを継承します。

生成位置 (円)

標準設定のウインドウから分離されたウインドウに生成位置ウインドウがあります。標準設定では、空間の単独の独立した点に対して相対的な位置にパーティクルを生成します。しかし、他に2種類の生成方法があります。1つ目はであります。



開始角度終了角度はパーティクルが生じる円の範囲を指定できます。標準値は0~360度で、結果として円周全てにパーティクルが生じます。しかし、円の特定の弧のみにパーティクルが生じるように減らすこともできます。

円に沿って生じさせる複数の選択肢が存在します。時計回り反時計回りは(すなわち時計の針の方向に)円に沿って連続的に順番にパーティクルが生成されます。ランダムはパーティクルを生じさせるために使用可能な頂点の中でランダムに選択しつつパーティクルを生成します。

頂点は円のパーティクルを生成する角度の数を制御します。 例えば、それが8だった場合、円の周囲を回転するための時計/反時計回りの設定に従って8か所からパーティクルが生じます。 同様にランダムだった場合、8個の角度からランダムにパーティクルが生じます。 もし、ランダムモードを使用している場合、ランダムの間隔の分散を増やしたいなら、360のような大きな数に頂点数を大きくします。

生成角度に影響はパーティクルが生成された場所の円の表面に対して垂直に生成されたパーティクルのY軸が向く効果を持つ。以下の図はそれの機能を描画しています。


円に沿って生成されつつ、Y軸方向に延びるパーティクル それらのパーティクルで「生成時に角度設定」を有効にした効果

生成位置 (球)

多くの点で、(3次元であることを除いて)生成位置(円)ととても似ています。 しかし、連続的な生成はこれに存在しません。球の表面に沿ってランダムにパーティクルを生成するのみです。 X軸角度Y軸角度はパーティクルが生成される球の表面を制御します。 標準では0に設定させており、これではパーティクルが生成されません。 球の全ての表面からパーティクルが生成させるようにするために、ばらつきを180に設定すると、360度になり、すなわち軸の周囲全体を覆います。 しかしながら、上のセクションで円の弧に沿ってのみ生成するするように、球の表面の局所的なくさびを使用して生成できます。 下の図を参照してください。
360度全ての球にパーティクルが生成された場合 それぞれの軸にそって60度に小さくした場合の球のくさび

パーティクル(挙動)

位置/回転/拡大率

生成されたパーティクルの挙動を編集するのに重要なウインドウは位置、回転、拡大率の3つのウインドウです。これらの内容は名称からわかります。 位置ウインドウはパーティクルが時間経過で空間をどう動くかを制御します。 回転ウインドウはパーティクルの回転速度と方向を制御します。 拡大率ウインドウは生存時間内のパーティクルの大きさを制御します。

これらそれぞれのウインドウは時間経過でこれらの値が変更される異なる手法を選択できるようにします。 初期値では、固定モードに設定されており、これは、生成されたパーティクルは特性のために1つの固定値を持ち、 パーティクルは存在する全ての時間の間、その値にとどまることを意味します。

PVA

PVAはPosition、Velocity、Accelerationの略です。 これはほとんどの場合に使用するモードです。 位置は生成時の初期値を設定し、速度は時間に対する初期値の変化率を設定し、加速度は時間に対する速度の変化率を設定します。

位置/回転/スケールの固定の標準設定では、初期値をランダム化することはできません。 したがって、速度と加速度を無視しても、PVAは固定のランダムな変形として使用できます。

イージング

パーティクルの開始と終了の値がわかっている場合、イージングは理想的なモードです。 パーティクルの生存時間全体にわたって徐々に開始値から終了値に移行します。

イーズインイーズアウトのドロップダウンボックスは、時間の経過とともに2つの値の間でパーティクルが遷移するスタイルを変更します。 左の図は、イージング速度のさまざまな組み合わせを示しています。 これらの例は、それぞれ{Ease In-Ease Out}の組の以下の組み合わせを参照しています。

低速3-低速3低速3-等速低速3-高速3
等速-低速3等速-等速等速-高速3
高速3-低速3高速3-等速/td>高速3-高速3

F-Curve

イージングとPVAでは性能が足りず、時間の経過と共にパーティクルが値をどのように遷移するかをより細かく制御する必要がある場合、F-Curveを使用します。下のスクリーンショットは、2つのF-Curveグラフを示しています。上のグラフは、グラフが最初にどのように表示されるかを示し、下のグラフは、値が初期化されたグラフの例を示しています。

グラフのY軸は値を表し、グラフのX軸は時間を表します。 0はパーティクルが発生する時刻であり、グラフの右側の濃いグレーのエリアはパーティクルが消滅する時刻です。 ビューアと同様に、グラフはマウスの中央ボタンでパンすることができ、スクロールホイールでズームすることができます。 また、マウスホイールをスクロールしながらCtrlまたはShiftキーを押しながらズームの軸を選択することもできます。


グラフにポイントを実際に追加するには、キーボードのX / Y / Zキー(X / Y / Zフィールドの値の設定に直感的に対応しています)を使用します。 ポイントをクリックするとポイントが選択され、ドラッグするとポイントの位置を変更できます。 ポイントからまっすぐ上下にドラッグすると、ベジェ曲線のピボットが作成されます(ポイントがベジェモードに設定されている場合はデフォルトです)。

種類は、選択したポイントとの間で接続するラインのスタイルを設定します。 線形オプションは線を直線にし、ベジェオプションでは線を曲線にします。

最大オフセット最小オフセットを使用すると、F-Curveの値にランダム化を適用できます。 これらの偏差は、選択されたライン全体に適用されます(つまり、ライン上のすべてのポイントが同じランダム量だけ外れます)。選択されたポイントには適用されません。 ポイントごとにランダム化することはできません。

開始終了は、現在選択されているポイントではなく、選択したライン全体を参照します。 それらは、最初に定義されたポイントの前に、最後に定義されたポイントの後に広がる値を定義するためにとられる動作を決定します。 デフォルトでは、最初/最後の点に一致する一定の値にとどまります。 ただし、他のオプションを使用すると、最初から値をループすることができます。 値が繰り返しの性質を持つ場合、これは特に有用です。 パターンの最初の動作を定義してから、残りの部分をループで埋める必要があります。 以下の図は、簡単に正弦波パターンを作るために適用されたものです。

引力

Effekseerでは、磁石のように作用するパーティクルエミッタのターゲット位置を定義し、Effekseer内に生成されたパーティクルを描画します。以下に示すサンプルプロジェクト00_Basic/Homing_Laser01.efkprojは 、「ホーミングレーザー」を作成するために、この機能を使用しています。 それらは中央の発砲地点から飛び出し、ターゲット位置に向かいます。 振る舞いウィンドウの一番下で、あなたはエミッタのターゲット位置を定義することができます。

標準では、ターゲット位置は有効ではないため、その位置を変更しても目に見える効果はありません。 引力を有効にするドロップダウンリストから引力を選択することにより、振る舞いウインドウを介してターゲット位置を有効にできます。

引力のパラメータは、どのように迅速に(強制的に)粒子がアトラクターに引き込まれているか、を制御します。 抵抗パラメータは、どの程度、パーティクルが直接引力(点)に引き込まレルことに抵抗するかを制御します。 大きい数値の場合、粒子は引っ張られた時点で引力(点)に直接詰まります。小さい数値の場合、粒子は引力(点)の周りの楕円軌道に入ります(数値が小さいほど軌道の半径が大きくなります)。 抵抗は負の場合もあります。この場合、引力のポイントは実際に粒子を引っ張るのではなく、押し退けます。

パーティクル (見た目)

描画共通設定

描画共通設定ウィンドウでは、パーティクルの見た目に関する重要で一般的に使用される属性を設定できます。何よりもまず、テクスチャの入力欄では、ハードディスク内の任意のイメージを読み込んで、パーティクルの基本的な見た目として使用できます。他のすべては、このテクスチャがシーン内でどのように描画されるかを変えることを中心に行います。

ブレンドを使用すると、他のパーティクルが重なっているときのテクスチャの表示を調整できます。下の画像は、異なるブレンドタイプの例を示しています。 左から右へ:不透明、ブレンド、加算、減算、および乗算となっています。

フィルタは、それが拡大されているときに、粒子の大きさを変更するために使用される方法を設定します。 2つのオプションしかなく...標準設定の、 線形補間は、一緒に隣接する画素の色をブレンドしようとします。 一方、 最近傍は、それが拡大されたときに画像の画素の雰囲気を残します。

フェードインフェードアウトはその名前が示すように正しくフェードを行います。これらのために指定された持続時間は、常にパーティクルの寿命の始めと終わりを基準にしています。例えば、フェードインが10フレームの期間に設定され、フェードアウトが20フレームの期間に設定されているとします。その後、パーティクルが100フレームの間、生存するように設定されていた場合、パーティクルは生成後、1〜10フレームでフェードインし、80〜100フレームでフェードアウトします。

UVは、あなただけのテクスチャ画像の全てではなく、一部を描画できます。 これには、さまざまな用途があり、特に、我々はスクロールアニメーションの設定について説明します:
  • UVスクロールでは、ある固定されたX/Y速度でテクスチャの表面上をスクロールすることができます。 左のイメージは、円錐形の表面上でUVスクロールされた煙テクスチャを示しています。 あなたは、一般的にラップが繰り返しに設定されていることを確認したいと思うので、それがスクロールするようにテクスチャが周囲を包みます。
  • UVアニメーションでは 、テクスチャとしてスプライトシートを使用して、アニメーションとして再生することができます。 スタートは、スプライトシートの最初のフレームの左上の座標でなければなりません。 サイズは 、アニメーションの各フレームのピクセル単位のサイズである必要があります。 Xカウント及びYカウントは再生するアニメーションを構成するスプライトシート内の行/列の数です。 フレーム長は、アニメーションが再生される速度です。

歪みは、テクスチャがその背後に存在する他のパーティクルの外観に影響を与えるために透明な歪みマップとして使用することが可能になります。 テクスチャ内の画素の輝度は、歪みの領域に影響します。 以下のアニメーションでは、この効果を実際に表示しています。 表示されているパーティクルは、歪みが適用されたパーティクルではなく、むしろ前方に配置されている別のテクスチャです。

パーティクルは歪みのない状態で前後に移動します。 それらの同じパーティクルは、歪みが加えられたテクスチャの後を通過します。

スプライト

描画ウィンドウでは、シーンにテクスチャを描画する方法を選択できます。 標準の描画方法はスプライトで、平らな四角にテクスチャを描画します。

設定は 特に回転の観点から、表面の挙動を設定します。 デフォルトでは、表面が常に自動的にカメラに向けて回転することを意味する、ビルボードに設定されています。 これはまた、パーティクルに設定された回転値を完全に無視することを意味します。 これとは反対に、表面の向きを設定するために、パーティクルの回転値を使用する、固定されています。 下の図は、回転値がランダムに割り当てられたパーティクルに適用される3つの異なる設定を示しています。 左から右:ビルボード、固定(Y軸)、固定。

全体色はテクスチャ画像全体に固定された色をブレンドします。 一方、頂点カラーを使用して 、面の各角に対応する4色を指定できます。 これらの色は、スプライトのサーフェス上にグラデーションを作成することによって一緒にブレンドされます。

全体色は、ブレンドカラーのRGBA/HSVAコンポーネントをランダム化する機能を提供します。または、パーティクルが生存している間、ある色から別の色に徐々に変化する機能を提供します。Fカーブを使用して色を設定することもできます。これは、キーボード上のR/G/B/Aキーを使用して経由点を設定することを除いて、位置のFカーブと同じ方法で動作します。 Fカーブは、HSVAモードではなく、RGBAモードのみを提供します。 ただし、以下の画像のように、色相と値はRGBコンポーネントを使用して簡単に複製できます。



頂点座標は、あなたが表面で使用される角の相対座標を編集することができます。 これにより、表面の形状を矩形、三角形、または他の非正方形に変更するといった明白ないくつかのことを行うことができます。 これでさまざまな方法でテクスチャを歪ませたり、伸ばしたり、歪ませたり、切り抜いたりすることができます。 あまり明白でない使用法として、表面の原点(表面が回転して拡大する点)を変更することがあります。 デフォルトでは、原点は表面の幾何学的中心に中心がありますが、サーフェスの形状を実際に変更することなく、頂点座標の値をオフセットすることで移動できます。

リング

リングは強力なオプションで、テクスチャを単純な平面の四角形以外の図形に展開することができます。 この名前にもかかわらず、リングを使用して、円、三角、円錐、円柱、ピラミッド、キューブなどさまざまな幾何学的形状を生成することができます。

頂点数は、あなたがN角形を構成する点の数を設定することができます。 デフォルトでは16で、円形の形をしています(36などのより高い値に設定することでさらに滑らかな円を得ることができます)。 ただし、これを低い値に設定して他の形状を作成することもできます。 左の画像に見られるように、3つの頂点は三角形を作成し、4は四角形/菱形を作成し、5は五角形を作成します。

視野角は 、あなたが描く円(円周)の量を変更することができます。これは円形/球状の生成方法で使用される設定に非常に似ています。左のイメージは、異なる形状のこの値の異なる設定を示しています。 左から右に360度、270度、180度を示します。

外側内側は、リングの外側と内側の半径のサイズ/位置を調整します。 これらの値の創造的な設定を使用すると、様々な種類の形状を作成できます。 例えば、内側の半径を0に設定すると、リングが円に変換されます。 さらに、半径は2つの異なる軸で調整することができ、外側の半径を内側の半径よりも高くすることができます。 これにより、円錐や円柱のような3次元形状を作成することができます。 これを頂点数と組み合わせると、より多くの3D形状を作成できます。 例えば、頂点が3つの円錐はピラミッドを作成し、頂点が4つの円柱は立方体を作成します。

カラーブレンドの点では、リングは最大3色のグラデーションをサポートします。 外側の半径に最も近い領域には1つの色、内側の半径に最も近い領域には1つの色、これらの2つの中間色には1つの色があります。 センター比率パラメータは、中間カラーの位置を調整します。 数値が小さいほど内側の半径に近づきますが、数値が大きいほど外側の半径に近づきます。


不透明度、半径、および中央の比率の設定が異なるリング Y方向の外側半径を拡張することによって作られた3D形状

リボン/軌跡

リボンを使用すると 、線を作成することができます。 これまでにこのチュートリアルで示したいくつかの画像にはリボンを使用しています。 特に、イージングアニメーションの線、および "ホーミングミサイル"の例のオーブの後ろの軌跡に使用されています。

リボンエミッタがパーティクルを生成するたびに、そのパーティクルと以前に生成されたリボンの領域との間に線が引かれます。 生成された領域の位置と速度を変えることによって、異なる形状の線を作成することができます。 リボンの一般的な使い方は、リボンエミッタを他のパーティクルの子として設定し、リボンエミッタのパーティクルを生成時に親の位置を継承させることです。 これにより、親パーティクルが移動する際に、後ろに軌跡が描かれます。

軌跡は、リングの色の特徴が組み込まれていること以外は、多かれ少なかれリボンと同じです。軌跡は、線の外側、内側、および中心点に異なる色と大きさを定義できます。

出力

2Dスプライトへ、もしくはアニメーションへ

2Dスプライトシートへの出力は、録画ウィンドウから行います。X/Y Countは、スプライトシートのレイアウト、特に各行と列のフレーム数を決定します。 その後、スプライトシートに含めるフレームの総数も決まります。 たとえば、{X = 4、Y = 6}は、4列6行に配置された24フレームのスプライトシートを生成します。 スプライトシートとしてエクスポートするだけでなく、形式のドロップダウンボックスからGIFまたはAVIファイルに直接書き出すことができます。

開始フレームは、録画を開始するアニメーションのフレームです。 (小さな警告:これをデフォルト値の1にしておくと、最初のフレームは常に空白になります。パーティクルが発生するには少なくとも1つのフレームが必要です)

フレームスキップは、フレームが記録される間隔を決定します。 たとえば、これが2に設定されている場合、フレーム{1,4,7,10、...}のみが記録に含まれます。 これは出力のサイズを小さくするのに便利ですが、明らかにより断片的なアニメーションにもなります。

「ガイド表示」チェックマークをクリックすると、ビューアーに黒いボックスが表示されます。 2Dスプライトシートを出力すると、そのブラックボックス内に表示されたとおりにアニメーションが出力されます。 したがって、最終出力を見たいのと同じように、ビュー内でズーム/方向の設定を確実に行う必要があります。

デフォルトでは、スプライトは黒い背景を含めてエクスポートされます。 背景を取り除くためには常に加算ブレンドを使用する必要があるため、実際には使用するのが難しくなります。 透明部分のドロップダウンメニューから「オリジナル画像アルファを使用」を選択すると、背景は無視されますが、使用したテクスチャのすべてに独自の透明/アルファチャンネルがあることを確認する必要があります。 さもなければ、Effekseerが自動的にエクスポートされたスプライトを透明にしようとする "Generate alpha"を試すことができます。 (透明度はAVI出力オプションでも機能するので、ビデオ編集ソフトウェアで透明なレイヤーとしてエクスポートされたAVIを簡単に使用できます)

透過性なしで出力されたスプライトシート 「Generate alpha」オプションを使用して出力された同じスプライトシート

3Dエフェクトへ

「ファイル」->「書き出し」を選択すると、Effekseerのみが使用する独自のファイル形式である *.efk 形式に書き出すことができます。 これらのファイルは特別なEffekseerプラグインなどで使用してゲームに組み込むことができます。

Unityの場合、「Effekseer/GameEngine/Unity」フォルダには、プロジェクト内の *.efkファイルを使用するプラグイン(Unity5用)が含まれています。また、このプラグインの動作を示すサンプルプロジェクトも含まれています。 ユニティパッケージをインポートした後、プロジェクトのアセットフォルダに、次のディレクトリ構造を設定します。


エクスポートされた*.efkファイルは、エフェクトが使用するテクスチャを含め、StreamingAssets/Effekseerフォルダに保存されます(これはテクスチャが *.efk ファイルに保存されず、テクスチャへの参照のみであるためです) 同じ名前が付けられ、元の *.efkproj と同じ方法で *.efk ファイルに相対的に配置されます)。 次に、新しい Effekseer Emitter をシーンに追加して、エフェクトを名前で参照できます(efkファイル拡張子を省略)。