ゴイサギ日記

東京でエンジニアとして頑張って何とか生きてます。。ゆる~く更新していきます

【Unity】Shuriken Particle Part3 モジュール後編

量が多くて前回でモジュールの説明を終わらせる事ができなかったので続きです。

Sub Emitters

パーティクルが特定の条件を満たした際に別のパーティクルを発生させる事ができます。設定できる条件は以下になります。

条件 説明
Birth 発生時
Collision Collisionオブジェクトに衝突時
Death パーティクルの寿命が尽きた時

下図の花火のような演出は、上昇する火玉のパーティクルを用意し Sub Emitter にチェックを入れ、Deathを選択、火花が広がるパーティクルを設定、火玉と火花を同じ色にするためにInheritにColorを選択しています。
f:id:akt3106:20180305231222g:plain

Texture Sheet Animation

テクスチャによるパラパラアニメーションを設定します。アニメーションの再生モードは Grid または Sprite になります。

Grid

XY各方向のタイル数(分割数)を設定してアニメーションさせるモードです。
f:id:akt3106:20180305232234g:plain

パラメータ
説明
Tiles XY方向のタイル数(テクスチャ内のXY方向に対する分割数)を設定します。
Animation Whole Sheetはテクスチャ内のすべてのタイルを参照して再生します。Single Rowは各列単位でタイルを参照します。一つのテクスチャに複数のアニメーションを設定する場合はSingle Rowを使う事になりそうです。
Random Row 列単位でランダムにタイルを参照します。Single Rowが選択時のみ設定できます。
Row 参照する列を指定します。Single Rowを選択してRandom Rowが無効時のみ設定できます。
Frame over Time 何フレーム目でどのタイルに切り替えるか設定します。縦軸がタイル数、横軸がパーティクルの生存時間を0.0〜1.0の割合になります。
Start Frame 何フレーム目からパーティクルのアニメーションを開始するか指定します。
Cycles パーティクルの生存時間中に何周アニメーションさせるかを設定します。
Flip U 発生中のパーティクルのテクスチャを左右反転します。全パーティクルを反転させたいなら1.0、半分なら0.5と0.0〜1.0の割合で設定します。
Flip V 発生中のパーティクルのテクスチャを上下反転します。全パーティクルを反転させたいなら1.0、半分なら0.5と0.0〜1.0の割合で設定します。
Enabled UV Channels テクスチャアニメーションの影響を受けるUVを設定します。UV0は適用するがUV1には適用しないといった感じです。
Sprite

同一 Atlas内の複数Spriteを連番設定してアニメーションさせるモードです。素材の設定によってはGridモードと比べてオーバードローの負荷が軽減されやすいです(Spriteは透明抜きの設定ができるため)

パラメータ
説明
Mode 再生させたいSpriteを設定します。ただし、使用できるのは同一のAtlasに格納されているSpriteのみになります。

※それ以外のパラメータはGridと同じなので割愛

Lights

パーティクルにリアルタイムライティングの影響を受けるかどうかの設定になります。

パラメータ
説明
Light 影響を受けるLightプレハブを設定します。設定できるライトはTypeがPointとSpotのみになります。
Ratio ライトの影響を受けるパーティクルを設定します。全パーティクルが影響を受けるなら1.0,半分なら0.5と0.0〜1.0の割合で設定します。
Random Distribution チェックを入れるとライトの影響を受けるパーティクルを完全ランダムで割り当てます。チェックを外した場合は新しく作成されたパーティクルがライトの影響を受けるかの設定になります。(例:N番目のパーティクルがライトの影響を受ける)
Use Particle Color チェックを入れるとライトのカラーがパーティクルのカラーになります。チェックを外した場合はライトに設定されているカラーが適用されます。
Size Affects Range チェックを入れるとライトの影響範囲にパーティクルのサイズが乗算されます。
Alpha Affects Intensity チェックを入れるとライト輝度にパーティクルのアルファ値が乗算されます。
Range Multiplier パーティクルが発生してから消滅するまでのライトの影響範囲に係数を乗算します。Curveを使って開始フレームは0.0,終了フレームは1.0にすれば消滅に近づくに連れて発光範囲が広くなるといった表現ができます。
Intensity Multiplier パーティクルが発生してから消滅するまでのライト輝度に係数を乗算します。
Maximum Lights ライトを設定できる最大数です。1にした場合はパーティクルが複数発生していても1つだけしかライトの影響を受けません。

ライトの処理は負荷が非常に高いです。特にForwardレンダリングの場合、ライト数が多いと負荷が上がります。Deferredレンダリングにする事で少し負荷を下げることが出来ます。 DeferredとForwardの切り替えは Rendering Path で設定します。
tsubakit1.hateblo.jp

Trails

パーティクルにトレイル(軌跡)が設定できます。移動する車のバックライトの表現などに使えそうです。この機能を有効にするには後述のRendererパラメータのTrail Material を設定する必要があります。(設定しないと紫色のトレイルが描画されます)

パラメータ
説明
Mode トレイルの生成モードを設定します。Particleはパーティクル単位のトレイルを、Ribbonはパーティクル同士を結ぶトレイルを生成します。
f:id:akt3106:20180306001031g:plain
Ratio トレイルが付くパーティクルの割合を設定します。全パーティクルに設定するなら1.0,半分なら0.5と0.0〜1.0の割合で設定します。
Lifetime トレイルの生存時間(秒)を設定します。
Minimum Vertex Distance トレイルの頂点情報を新しく設定する最小距離を設定します。値が小さければより滑らかなトレイルが描画されますが頂点数が増えるため負荷も高くなるので注意が必要です。
World Space チェックを入れると親オブジェクトを動かした際にトレイルが引っ付いてこなくなります。前述の Simulation Space パラメータを Local に設定してたとしてもです。
Die with Particles パーティクル消滅時にトレイルも消滅するかを設定します。
Ribbon Count 描画するリボンの数を設定します。例えば1を設定するとパーティクル単位を結びますが、2を設定すると1番目,3番目,5番目に発生したパーティクルを結ぶリボンと2番目,4番目,6番目に発生したパーティクルを結ぶリボンを生成します。
f:id:akt3106:20180306001054g:plain
Split Sub Emitter Ribbons チェックを入れると Sub Emitters パラメータで設定したパーティクルとリボンのトレイルを共有します。
Texture Mode Stretchedはテクスチャが引き伸ばされて描画されます。Tileはテクスチャが繰り返しで描画されます。繰り返しの間隔はトレイルに設定されているマテリアルのTilingパラメータによって決まります。下図は左から Stretched, Tile, DistributePerSegment, RepeatPerSegment になります。
f:id:akt3106:20180306001118g:plain
Size affects Width チェックを入れるとトレイルの幅にパーティクルのサイズを乗算します。
Size affects Lifetime チェックを入れるとトレイルの生存期間にパーティクルサイズが乗算されます。たとえば Lifetimeを1かつパーティクルサイズ(Start Size)が2の場合、トレイルの生存期間は 1 x 2 = 2秒間になります。
Inherit Particle Color チェックを入れるとトレイルがパーティクルのカラーを使用します。
Color over Lifetime トレイルのカラーとアルファ値を発生から消滅までの間で制御します。
Width over Trail トレイルの幅を設定します。
Color over Trail トレイルの色を設定します。
Generate Lighting Data チェックを入れるとNormalとTangentを含む頂点情報を生成します。シーンライティングやカスタムシェーダーを使用する場合などに有効にします。
Custom Data

パーティクルのシェーダーに独自データを転送することができます。この辺は少し複雑な内容になるので別途記事にまとめます・・・  

追記:まとめました  

【Unity】Shuriken Particle「Custom Vertex Streams」 - ゴイサギ日記

Renderer

パーティクルのマテリアル設定やパーティクルの粒子の形状など描画に関する設定をします。

パラメータ 説明
Render Mode 描画するオブジェクトを設定します。
Normal Direction 法線のバイアスを設定します。0.0は画面の中心で、1.0だとカメラに法線が向きます。法線マップを使わないのであれば無視して大丈夫です。
Material パーティクルのマテリアルを設定します。
Trail Material トレイルのマテリアルを設定します。トレイルを使用しなければ設定は不要です。
Sort Mode パーティクルの描画順を設定します。By Distanceはカメラの距離が遠いものから先に、Oldest in Front は先に発生したパーティクルが手前に、Youngest in Front は後から発生したパーティクルが手前に描画されます。
Sorting Fudge 他エミッターから発生するパーティクルとの描画順を設定します。値が低いほど先に描画される可能性が上がります。
Min Particle Size パーティクルの最小サイズを設定します。ビューポートサイズの割合として表示されます。Rendering Mode を Billboard 時のみ有効です。
Max Particle Size |パーティクルの最大サイズを設定します。ビューポートサイズの割合として表示されます。Rendering Mode を Billboard 時のみ有効です。
Billboard Alignment パーティクルの面が向く方向を設定します。Viewはカメラ面方向に整列、Worldはワールド軸方向に整列、Localはパーティクルが設定されているGameObjectの向きに、Facingはカメラがある位置に向けます。
Pivot パーティクルを回転させる際の基準点を設定します。
Visualize Pivot チェックを入れるとSceneビューにPivotのマーカーを表示します。
Masking チェックを入れるとパーティクルの表示領域を任意のマスク画像で切り取ることができます。
f:id:akt3106:20180306005127g:plain
Custom Vertex Streams 自前シェーダーの頂点ストリームに任意の成分を流し込みたい場合はチェックを入れます。例えば、シェーダーが法線を使わない場合は頂点ストリームからNORMALを外すことが出来ます。詳細はこちらにまとめました。
Cast Shadows ライトによる影の設定をします。Onは影を有効に、Offは影を無効に、Two Sidedはメッシュの裏表どちらからも影を投影、Shadows Only は影を有効にするがセルフシャドウ(自身の影が自身に落ちは無効になります。
Receive Shadows チェックを入れるとパーティクルに影が投影されます。不透明なマテリアルのみ影を受けます。
Sorting Layer 対象パーティクルのSortingLayer名を設定します。
Order in Layer Sorting Layer内での描画順を設定します。同一SortingLayer名のパーティクルが重なった場合はこの値が大きい方が手前に描画されます。
Light Probes ライトプローブの補間モードを設定します。Offは補間なしです。サイズの大きいパーティクルにライトプローブを正確に影響させたい場合は Use Proxy Volume を選択して Proxy Volume Override にLight Probe Proxy Volumes (LPPV) が接続されたオブジェクトを設定します。何のことかさっぱりだと思うのでこちらも別途まとめます。。
Reflection Probes チェックを入れるとパーティクルがリフレクションプローブの影響を受けます。
Anchor Override ライトプローブ、リフレクションプローブを使用する際に補間位置を決めるTransformを設定します。