Unity Particle System
Main
Duration
Particle Systemが実行する時間の長さ。
ループなしの場合。
Durationが5なので、5秒経ったらParticle Systemが発生しなくなるのが分かる。
ループありの場合。
ループありであるため、Particle Systemがずっと発生していることが分かる。
Looping
Durationで設定した時間が過ぎたら何回も繰り返す。
詳しくは上のループあり動画を参照。
Prewarm
Prewarmをオンにすると、パーティクルが再生された状態でエフェクトが発生する。
Prewarmなし
Prewarmあり
Start Delay
Particle Systemが発生する時間を遅らせることができる。
Start Lifetime
パーティクルの消える時間を指定できる。
Start Speed
パーティクルの初速を指定できる。
マイナスを指定すると反対になる。
また、0にすると周りに留まっているエフェクトになる。
3D Start Size
xyz軸のに初期サイズを指定できる
Start Size
初期サイズを指定できる
3D Start Rotation
xyz軸の初期角度を指定できる。
Start Rotation
初期角度を指定できる。
Flip Rotation
反対方向に角度を調整できる。
値が上がるにつれて反対角度になるエフェクトが多くなる。
0→そのままの角度
1→完全に反対角度
0.5→そのまま角度と完全に反対角度が半々の割合
0
0.5
1
Start Color
最初の色を設定できる。
Gravity Modifier
重量を設定できる。
Simulation Space
Local
親オブジェクトの動きに合わせてエフェクトも追従する
World
親オブジェクトの動きに合わせてエフェクトも追従せずにそのままとどまるような挙動になる。
Custom
親を設定して、Worldのような挙動になる。
Simulation Speed
Particle System全体の速度を指定できる。
分かりやすくいうと動画サイトの倍スピードのイメージ。
なので1だとそのまま速度、2だと2倍の速度になる。
Simulation Speedが1
Simulation Speedが10
Color over LifeTimeで色を変えて実験してみたが、10の方が早く色が変わっていることが分かる。
なお、0だとストップする。
Delta Time
TimeScaleに依存するか設定できる。
Scaled→依存する
Unscaled→依存しない
Scaling Mode
Hierarchy→親のスケールが変化に合わせてエフェクトの大きさも変わる
Local→親のスケールが変化に合わせてエフェクトの大きさは変わらない
Shape→親のスケールが変化にShapeの範囲が変わるが、エフェクトの大きさは変わらない。
Play on Awake
シーンの開始時にエフェクトを発生させるか、スクリプト上で制御するかを設定できる。
オンだとシーン開始時にエフェクトを発生させる。
オフだとスクリプト上で制御する。
Emitter Velocity Mode
パーティクル システムが、Inherit Velocity モジュールと Emission モジュールで使用される速度を計算する方法を選択します。システムは、Rigidbody コンポーネント (存在する場合) を使用して、または Transform コンポーネントの動きを追跡して速度を計算できます。Rigidbody コンポーネントが存在しない場合は、デフォルトで Transform コンポーネントが使用されます。
と公式ドキュメントで記載されているが、いまいち挙動が分からない。
Max Particles
エフェクト最大数を設定できる。
Max Particlesを超えたエフェクトは発生しない。
Auto Random SeedとRandom Seed
Auto Random Seedがオンに時は、エフェクトが再生するとき毎回ランダムなエフェクトが発生する。
オフの場合Random Seedの値によってエフェクトのランダム性が変わる。
Random Seedが同じだと同じエフェクトが発生する。
Stop Action
エフェクトが消えた際のParticle Systemの挙動を制御できる。
なお、Loopingがオンの場合はこの設定は無効になる。
None→何もしない
Disable→Particle Systemが非表示になる
Destroy→Particle Systemが削除される
Callback→OnParticleSystemStoppedのcallbackで制御できる。
Culling Mode
エフェクトがカメラ外の時に発生させるか制御できる。
Pause→エフェクトを発生させない
Always Simulate→エフェクトを発生させう。
Automatic→ループするシステムは Pause を使用し、他のすべてのシステムは Always Simulate を使用します。
と公式ドキュメントで記載されているが、確認したところそのような挙動にならなかった。
Pause And Catch-up→公式ドキュメント見てもよくわからなかった。
Ring Buffer Mode
Max Particlesに達したときの挙動を制御できる。
Disabled→ Max Particlesの値に達すると、生存期間までエフェクトは発生しない。
Pause Until Replaced→Max Particlesの値に達すると、古いエフェクトを削除され新しくエフェクトが発生する。
Loop Until Replaced→→Max Particlesの値に達すると、新しくエフェクトが発生する。
Emission
Rate over Time
1秒間に何個エフェクトを発生させるか設定できる。
5と設定した場合、1秒間に5個のエフェクトが発生する。
Rate over Distance
移動したユニット距離毎に放出されるパーティクルの数を設定できる。
Bursts
Time
→開始パーティクルの開始時間を指定
Count
→パーティクルの数を指定
Cycles
→繰り返し回数
Interval
→繰り返しの時間間隔
Probability
→パーティクルが発生する確率。
0-1が設定でき、1にいくにつれてパーティクルが発生する確率が上がる。
例えば下記の動画だと、
Timeが0
Countが2
Cyclesが3
Intervalが3
であるので
0秒→2
3秒後→2
6秒後→2
といった具合になる
Shape
ConeでShape以外を検証している。
他のShapeによって差分の項目があるが大体同じ。
Shape
エフェクトが発生する形状を指定できる。
Sphere
Hemisphere
Cone
Donut
Box
Mesh/MeshRenderer/SkinnedMeshRenderer
指定したメッシュの形状からエフェクトを発生
Sprite/Sprite Renderer
指定したSpriteの形状からエフェクトを発生
参照サイト
Circle
Edge
Rectangle
Angle
エフェクトが発生する角度の範囲を指定できる。
Radius
Shapeの範囲を指定できる。
Radius Thickness
Radius内のエフェクトの範囲を指定できる。
値が大きくなるほどエフェクトの範囲が広くなる。
0だと底面の端からエフェクトが発生する。
Arc
指定した角度のみにエフェクトが発生。
Mode
エフェクトの発生の仕方を設定できる。
Random
→ランダムに発生する。
Loop
→時計周りに順番に発生する。
Ping-Pong
→時計周りに順番に発生した後、その後反時計周りに発生する。その後は同じような挙動。
Burst Spread
→パーティクルが不均等に固まってしまうこともありうるRandomよりも、パーティクルを均等に広げることができる。EmissionのBurstで組み合わせると効果的。
Spread
発生するエフェクトの間隔を指定できる。
値が大きいほど間隔は広くなる。
Speed
発生するエフェクトの速さを指定できる。
値が小さいほど早くエフェクトが発生する。
Emit from
エフェクトが発生する位置を指定できる。
Base
→底面からエフェクトが発生する
Volume
→Shape全体からエフェクトが発生する
Length
Emit fromがVolume指定した場合に、利用できる。
Shapeの範囲を指定できる。
Texture
各RGBAごとにテクスチャを指定してエフェクトが発生する範囲を制御できる。
一応実験してみたが、テクスチャに沿ってエフェクトの範囲が制御されているが何故か若干はみ出している。
Clip Channel
各RGBAを指定できる。
上のTextureの動画を参考。
Clip Threshold
Textureで指定されたチャンネルのピクセルが、このしきい値を下回るものはエフェクトが発生しない。
上のTextureの動画を参考。
Color affects Particles
Textureの色を反映する。
Color affects Particles
Textureのアルファを反映する。
Bilinear Filtering
Textureの4 つの隣接するサンプルを混合して、テクスチャのサイズに関係なく、パーティクルの色をより滑らかに変更します。
一応実験してみたが特に変化がなかった。
Position/Rotation/Scale
Shapeの座標回転スケールを制御できる。
Align to Direction
パーティクルを進行方向に向ける
Align to Directionオフ
Align to Directionオン
Randomize Direction
パーティクルの方向をランダムな方向にブレンドします。
0 に設定すると、この設定は無効になります。
1 に設定すると、パーティクルの方向は完全にランダムになります。
Spherize Direction
Randomize Directionと似ているが、Randomize Directionと違って、Shapeの内側にエフェクトが進まない。
Randomize Position
パーティクルの発生場所をランダムに移動
この値が大きいほど発生場所の範囲が広くなる。
0だと適用されない。
Scene Tools
Shapeの座標回転スケールをマニュピュレーターで制御できる。
Type
Mesh/MeshRenderer/SkinnedMeshRenderer/Sprite/Sprite Renderer/で表示される。
パーティクルが放出される場所。Vertex を選択すると、頂点からパーティクルを放出します。Edge を選択すると、エッジからパーティクルを放出します。Triangle を選択すると、三角形からパーティクルを放出します。
Single Material
Mesh/MeshRenderer/SkinnedMeshRendererで表示される。
どのサブメッシュからエフェクトが発生するかマテリアルインデックス番号を指定できる。
Use Mesh Colors
頂点カラーの色でエフェクトの色を調整できる。
Normal Offset
法線からNormal Offsetで指定した値で座標をoffsetした位置からエフェクトを発生させる。
Velocity over Lifetime
エフェクトが生存中の速度を制御できる。
Linear
xyz軸ごとに速度を制御できる。
Space
Linearの基準がローカル空間かワールド空間かを指定できる。
Orbital
旋回するような動きをxyz軸ごとに設定できる。
Offset
旋回する中心を設定できる。
Radial
旋回の大きさを指定。
Speed Modifier
Orbitalの速度を指定できる。
Limit Velocity over Lifetime
エフェクトが生存中の速度の減退を制御できる。
Separate Axes
オンにするとxyz軸ごとに速度の減退を制御できる。
Space
速度減退をローカル空間かワールド空間かを指定できる。
Dampen
速度減退の加減を制御できる。
0だと速度減退なしで、値が上がるにつれて速度減退が大きくなる。
Drag
Separate Axesのようにエフェクトに速度の減退を行うことができるが、大きさ(Multiply by Velocity)や速度(Multiply by Size)に応じて速度の減退を行うことができる。
この値が大きいほど速度減退が大きくなる。
Multiply by Size
エフェクトの大きさに応じて速度を減退できる。
大きさが大きいほど減退の影響を受けやすい。
Multiply by Velocity
エフェクトの速さに応じて速度を減退できる。
速度が速いほど減退の影響を受けやすい。
Inherit Velocity
親オブジェクトの速度対してどの程度速度を継承するか設定できる。
Simulation SpaceがWorldのみ有効になる。
Mode
親オブジェクトの速度継承方法を設定できる。
Current
→常に親オブジェクトの速度を継承
Initial
→パーティクル発生時に、親オブジェクトの速度を継承
Multiplier
継承する速度の強さを指定できる。
Lifetime by Emitter Speed
オブジェクトの速度に対して、エフェクトの生存期間が変わる。
Force over Lifetime
エフェクトに対して風から飛ばされるような外力を加えることができる。
Space
外力をローカル空間かワールド空間かを指定できる。
Randomize
Randomizeオフにするとオンに比べてランダム性が増す。
Random Between Two ConstantsとRandom Between Two Curvesの時活性化される。
Color Over Lifetime
Color
生存期間に沿って色の変化を指定できる。
Color By Speed
Color
パーティクルの速度によって色の変化を指定できる。
Speed Range
Colorで指定した色をスピードによって範囲指定できる。
Size over Lifetime
生存期間に沿ってエフェクトの大きさの変化を指定できる。
Size by Speed
エフェクトの速さによってサイズが変化する。
Rotation over Lifetime
エフェクトの生存期間中に回転し続ける。
Rotation by Speed
エフェクトの速度に応じて回転が変化する。
External Forces
Wind Zone と Particle System Force FieldsをPartclesystemでも適用できる。
Multiplier
Wind Zone と Particle System Force Fieldsの強さを調整できる。
Influence Filter/Influence Mask
Influence Filterで、Layer Maskか直接指定するリストかその両方を指定できる。
Influence Maskは適用されるLayer Maskを指定できる。
Noise
Curl Noiseを利用してい、エフェクト一つ一つにランダム的な動きを加えることができる。
Separate Axes
各xyz軸ごとに設定できる。
値が大きくするとエフェクトの動きの幅が大きくなる。
この値が同じだと同じ動きする。
Frequency
エフェクトの動きの小刻みさを制御できる。
この値が大きいほど動きが小刻みになる。
Scroll Speed
Curl Noiseをスクロールして、より予想できない不規則なエフェクトのの動きを作ります。
Damping
挙動を確認してみたがいまいちどこがよくなったかわからない。
Octaves/Octave Multiplier/Octave Scale
Curl Noiseの枚数を指定するが、この数が大きいほどより質の良いランダムな動きができるがその分負荷がかかる。
一応試してみたが動きが小刻みになっただけのような印象を受けた。
小刻みにするだけならFrequencyでも問題なさそうだが、Octavesが1でFrequencyの値を上げて試したところ小刻みの動きが若干ぎこちないというか滑らかではない印象を受けた。
なので、小刻みにしつつ動き滑らかにしたい場合はOctaves/Octave Multiplier/Octave Scaleを調整するのがいいかも。
Quality
Curl Noiseの品質を設定できる。
品質が高いほどエフェクトのランダム性は増すが負荷が高くなる。
Remap/Remap Curve
Curl Noiseをリマップするかどうか設定できる。
これをいじらなくても他の項目をいじればエフェクトのランダム性を変えられるし、特にいじらなくていいと思われる。
Position Amount
どれだけ位置にランダム性が影響を受けるか指定できる。
この値が大きいほどランダム性が増す。
Rotation Amount
どれだけ回転にランダム性が影響を受けるか指定できる。
この値が大きいほどランダム性が増す。
Size Amount
どれだけ大きさにランダム性が影響を受けるか指定できる。
この値が大きいほどランダム性が増す。
Collision
エフェクトが衝突した時の挙動を制御できる。
Type
衝突判定する種類を選べる。
Planesは衝突用の仮想平面、Worldは実際にシーンにあるオブジェクトを使用。
なおPlanesは衝突判定が無限平面で、Worldよりも負荷がかからない。
Mode
2Dか3Dを指定。
Dampen
エフェクトの摩擦を設定できる。
値が大きくなるほど摩擦力大きくなる。
Bounce
エフェクトの跳ね返りを指定できる。
値が大きくなるほど跳ね返りが大きくなる。
Lifetime Loss
エフェクトが衝突するたびにエフェクトが消える係数を設定できる。
この値が大きいほど衝突した際に消えやすい。
Min Kill Speed
エフェクトが衝突後の速さがこの値以下ならエフェクトが消滅する。
Max Kill Speed
エフェクトが衝突後の速さがこの値以上ならエフェクトが消滅する。
Radius Scale
エフェクトの当たり判定の大きさを指摘できる。
Collision Quality
エフェクトの当たり判定の品質を設定できる。
High、Medium、Lowを指定できる。
品質と負荷は、High>Medium>Lowの順で高い。
Medium、Lowは静的コライダーの場合にキャッシュを作成・利用し負荷の軽減を図っている。
静的コライダーとは、コライダーがアタッチされているがRigidbody がアタッチされていないオブジェクトのことである。
下記動画を見ると、静的コライダーでない場合Medium、Lowは衝突した後にすり抜けていることが分かる。またMediumとLowを比較するとLowは衝突した後いくつか衝突した後すり抜けていることが分かる。
Collides With
指定したレイヤーにのみ衝突する。
Max Collision Shapes
衝突判定のコライダーの形状の数を指定できる。
この値よりも多くのコライダーの形状と衝突する際は、衝突は発生しない。
Enable Dynamic Colliders
動的コライダーを衝突判定にするか設定できる。
オンにすると動的コライダーも衝突判定にする。
Voxel Size
Unity はグリッド構造で衝突をキャッシュします。この設定はグリッドサイズを制御します。グリッドサイズが小さい方がより正確ですが、メモリを多く消費し効率が落ちます。
なおCollision Quality を Medium か Low に設定しているときのみ、表示される。
Collider Force
エフェクトが衝突した際に衝突したオブジェクトに対しての力を指定できる。
Multiply by Collision Angle
パーティクルと衝突物の衝突角度が大きいほど衝突時の押し出す力が弱くなる。
下記動画だと手前がオン、奥がオフで実験してみた。
Multiply by Particle Speed
パーティクルの速さが速いほど衝突時の押し出す力が強くなる。
下記動画だと手前がオン、奥がオフで実験してみた。
Multiply by Particle Size
パーティクルの大きさが大きいほど衝突時の押し出す力が強くなる。
下記動画だと手前がオン、奥がオフで実験してみた。
Send Collision Messages
エフェクトが衝突したときに、OnParticleCollision関数を呼び出す。
Visualize Bounds
エフェクトの当たり判定を視覚化する。
Triggers
コライダーのisTriggerオンになっているときのみ有効。
Collisionと同じくエフェクトが衝突した時の挙動を制御できる。
Inside/Outside/Enter/Exit
Inside
→コライダーの内側にあるエフェクトの挙動を制御できる。
Outside
→コライダーの外側にあるエフェクトの挙動を制御できる。
Enter
→エフェクトがコライダーに入ったときの挙動を確認できる。
Exit
→エフェクトがコライダーに出ていったときの挙動を確認できる。
設定できる項目は以下である。
Ignore→エフェクト無視
Kill→エフェクト削除
Callback→OnParticleTrigger関数が呼び出される
Collider Query Mode
エフェクトが複数のコライダーと衝突した際に、どのコライダーと衝突判定を行うか制御できる。
Disabled→衝突判定を行わない。
One→最初に衝突したコライダーを適用。
All→全てのコライダーと衝突判定。
以下確認するためのスクリプトである。
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
void OnParticleTrigger()
{
ParticleSystem ps = this.GetComponent<ParticleSystem>(); ;
// パーティクル
List<ParticleSystem.Particle> inside = new List<ParticleSystem.Particle>();
List<ParticleSystem.Particle> exit = new List<ParticleSystem.Particle>();
// get
int numInside = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside, out var insideData);
int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
// 繰り返し
for (int i = 0; i < numInside; i++)
{
ParticleSystem.Particle p = inside[i];
if (insideData.GetColliderCount(i) == 1)
{
if (insideData.GetCollider(i, 0) == ps.trigger.GetCollider(0))
p.startColor = new Color32(255, 0, 0, 255);
else
p.startColor = new Color32(0, 0, 255, 255);
}
else if (insideData.GetColliderCount(i) == 2)
{
p.startColor = new Color32(0, 255, 0, 255);
}
inside[i] = p;
}
for (int i = 0; i < numExit; i++)
{
ParticleSystem.Particle p = exit[i];
p.startColor = new Color32(1, 1, 1, 255);
exit[i] = p;
}
// set
ps.SetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside);
ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit);
}
}
Radius Scale
エフェクトの当たり判定の大きさを設定できる。
Visualize Bounds
エフェクトの当たり判定の大きさを視覚化できる。
Sub Emitters
条件をもとに別のパーティクルを生成できる。
条件は、Birth、Collision、Death、Trigger、Manualがある。
なおCollision、Death、Trigger、Manualは、別エフェクトがEmmisionのBurstでないとエフェクトが発生しない。
Birth
→エフェクトが発生した時に、発生。
Collision
→エフェクトが衝突した時に、発生。
なお、サブエミットの「Emission」を「Bursts」にしないとサブエミットは発生しない
Death
→エフェクトが生存期間が終了した時に、発生。
Trigger
→エフェクトが衝突した時(Trigger)に時に、発生。
Manual
→ ParticleSystem.TriggerSubEmitterメソッドが呼ばれた時に、発生。
Inherit
親のエフェクトから継承する要素を設定。
下記を設定できる。
Nothing、Everything、Color、Size、Rotaion、LifeTime、Duration
Emit Probability
サブエフェクトの発生確率を制御できる。
Texture Sheet Animation
Mode
GridかSpritesを指定できる。
Gridは、連番テクスチャをTilesでグリッドを指定することできる。
Spritesは、連番テクスチャをSpriteEditorでテクスチャアトラスを作成し分割されたテクスチャ一枚一枚を指定していくことができる。
連番テクスチャは以下を使用。
Animation
連番Textureからエフェクトを発生する際の順番を指定できる。
Whole Sheet
→連番Textureの一番上の一番左からスムーズにエフェクトが発生していく
Single Row
→行ごとにエフェクトが発生していくのでWhole Sheetに比べてスムーズな発生の仕方をしない。
どの行にするのかは、Row Modeで指定する。
Row Mode
Single Rowの時に表示される項目で、どの行にするか指定できる。
Custom
→Rowで行を指定でき、指定した行だけエフェクトが発生する。
Random
→どの行を指定するかはランダム。
Mesh Index
→パーティクルに割り当てられたメッシュインデックスに基づいて行を選択します。これは、特定のメッシュを使用するパーティクルも同じテクスチャを使用するようにする場合に便利です。
と公式ドキュメントと記載されているがよくわからなかった。
Time Mode
エフェクトが発生の間隔を指定できる。
Lifetime
→エフェクトの生存期間を基準にする。生存期間が長いほど発生間隔が遅くなる。
Speed
→エフェクトの速度を基準に間隔を指定できる。
FPS
→指定したFPSを基準に間隔を指定できる。
Frame over Time
Time ModeがLifetimeのみ表示される。
エフェクトの発生間隔や順番をCurveで調整できる。
Speed Range
Time ModeがSpeedのみ表示される。
エフェクトの発生間隔や順番を調整できる。
FPS
Time ModeがFPSのみ表示される。
この値を大きくすることでエフェクトの間隔を早くすることができる。
参考動画はTime ModeのFPSを参照。
Start Frame
開始するエフェクトを指定できる。
Cycles
エフェクトの生存期間中にエフェクトが繰り返す回数。
Affected UV Channels
UVチャネルを指定できる。
使い道がよくわからない。
Lights
エフェクトにライトを設定できる。
ライトの数が多いと負荷がかかるので注意。
Light
使用したいライトを指定する
Ratio
ライトが適用される割合を指定できる。
0-1まで指定可能で、値が大きくなるにしたがってライトの適用率が上がる。
Random Distribution
有効の場合、ランダムにライトが適用され、Ratioの値が大きいほどライトが適用率が上がる。
無効の場合、Ratioの値で必ずライトが適用される。
Use Particle Color
ライトの色をエフェクトの色と同じにするか設定。
有効だと、ライトの色がエフェクトの色と同じになる。
無効だと、ライトの色はLightコンポーネントのColorと同じになる。
LightコンポーネントのColorが赤の場合で実験。
Use Particle Color有効
Use Particle Color無効
Size Affects Range
LightのRangeの計算方法を指定できる。
有効にすると、パーティクルのSizeとLightコンポーネントのRangeを乗算する。
無効だと、RamgeはLightコンポーネントのRangeのまま。
Alpha Affects Intensity
Lightのアルファの計算方法を指定できる。
有効にすると、パーティクルのアルファとLightコンポーネントのアルファを乗算する。
無効だと、アルファはLightコンポーネントのアルファのまま。
Range Multiplier
ライトのRangeを生存期間に沿って乗算できる。
Intensity Multiplier
ライトのIntensityを生存期間に沿って乗算できる。
Maximum Lights
ライトの最大数を設定できる。
これにより間違って多くのライトが適用されることによるパフォーマンスの低下を防いだりできる。
Trails
Trail表現ができる。
ただRendererモジュールのTrail Materialを設定しないとシェーダーエラーが出るので注意。
Mode
Trail表現の方法を指定できる。
Particles→エフェクト一つ一つに対してTrail表現
Ribbon→エフェクト同士をつなげてTrail表現
Ratio
ModeがParticlesの時に表示される項目。
Trailが発生する確率を指定できる。
0-1までの値で大きくなるほどTrailの発生する確率が上がる。
Lifetime
ModeがParticlesの時に表示される項目。
Trailの生存期間を指定して長さを調整できる。
0-1までの値で大きくなるほどTrailの長さが長くなる。
Minimum Vertex Distance
ModeがParticlesの時に表示される項目。
Trailの滑らかさを調整できる。
値が大きいほどかくかくした感じになる。
World Space
ModeがParticlesの時に表示される項目。
Partclesystemが動いたときにそれにTrailが追従するか設定できる。
有効の場合、Trailが追従する。
無効の場合、Trailが追従しない。
Die With Particles
ModeがParticlesの時に表示される項目。
エフェクトの生存期間が終了した際に、Trailも消えるかの設定。
有効だとTrailも消える。
無効だとTrailは残る。
Ribbon Count
ModeがTrailの時に表示される項目。
全体のリボンの数を設定できる。
例えばエフェクトの数が10、Ribbon Countが1だと
1つのリボンで10個のエフェクトを結ぶ。
もし、Ribbon Countが2だと、5つのエフェクトで1つのリボンを形成する。
Ribbon Countが1
Ribbon Countが5
Split Sub Emitter Ribbons
ModeがTrailの時に表示される項目。
Sub Emittersが親のエフェクトと1 つのリボンを共有します。
有効だと共有、無効だと共有しない。
確認した感じだと、有効だと親のエフェクトも含めてリボンをつなげているように見える。
Split Sub Emitter Ribbons無効
Split Sub Emitter Ribbons有効
Attach Ribbons to Transform
ModeがTrailの時に表示される項目。
公式ドキュメントに乗っていない。
確かに見た目は変わっているが正直よくわからない。
Attach Ribbons to Transform無効
Attach Ribbons to Transform有効
Texture Mode
Trailの表現方法を変更できる。
Stretch
Tile
Distribute per Segment
Repeat per Segment
Static
Texture Scale
Trailのタイリングが可能。
Texture Scaleが1
Texture Scaleが3
Size affects Width
有効にすると、Trailの横幅はエフェクトのサイズによって乗算されます。
Size affects Width無効
Size affects Width有効
Size affects Lifetime
有効にすると、Trailの縦幅はエフェクトの生存期間によって乗算されます。
Inherit Particle Color
有効にすると、Trailの色はエフェクトのの色と同じになる。
無効
有効
Color over Lifetime
エフェクトの生存期間に沿って、Trailの色を調整できる。
Width over Trail
Trailの横幅を設定できる。
Width over Trailが1
Width over Trailが3
Color over Trail
Trailの色を制御します。
Generate Lighting Data
チェックを入れるとNormalとTangentを含む頂点情報を生成する。
シーンライティングやカスタムシェーダーを使用する場合などに有効にする。
Shadow Bias
影を光の方向に沿って移動させる。
これにより、ビルボード トレイル ジオメトリでボリュームを近似することによって発生する影のアーティファクトが除去される。
Custom Data
Custom DataモジュールはRendererモジュールのCustom Vertex Streamsと一緒に使います。
以下のCustom Dataを用意して実験してみる
Custom Vertex Streamsはこのようにする。
赤枠の箇所がCustom Dataで設定した値をシェーダーに渡す。
シェーダーグラフで赤枠の値を受け取るシェーダーを作成する。
赤枠はTEXCOORD1なのでUV1に設定する
作成したシェーダーを、RendererモジュールのMaterialのアタッチした結果が以下。
Custom Dataで設定した値が正しく渡されてるのが分かる。
Renderer
Render Mode
エフェクトの描画方法を設定できる。
Billboard
Render Alignmentで向きを指定できる。
今回はRender AlignmentをViewで指定したのでこのような向きになっている。
Stretched Billboard
カメラに対して常に正面を向くが、エフェクトの進行方向を向く。
Horizontal Billboard
xz面に対して平行。
Vertical Billboard
y軸に対して平行。
Mesh
Meshを指定できる。
None
何も描画しない。
TrailモジュールやLightモジュールを使用したいだけのときなどに使用する。
Camera Scale
Render ModeのStretched Billboardの時に表示される。
カメラを動かすと動きの方向に対してエフェクトを引き延ばす
Velocity Scale
Render ModeのStretched Billboardの時に表示される。
エフェクトの速度に比例してエフェクトを引き延ばす。
Length Scale
Render ModeのStretched Billboardの時に表示される。
エフェクトの進行方向にサイズを調整できる。
Freeform Stretching
Render ModeのStretched Billboardの時に表示される。
よくわからない。
Rotate With Stretch
Render ModeのStretched Billboardの時に表示され、Freeform Stretchingが有効のときに活性化される。
ただ、Freeform Stretchingがよくわからないので一旦パス。
Mesh Distribution
Render ModeのMeshの時に表示される。
指定したMeshで、どのMeshが描画されるか設定できる。
Uniform Random
→均等に描画される。
Non-uniform Random
→メッシュごとに描画される率を指定できる。値が大きいほど描画されやすい。
Normal Direction
Render ModeのBillboard、Stretched Billboard、Horizontal Billboard、Vertical Billboardの時に表示される。
ビルボードの法線を調整できる。
0だとスクリーンの中心(法線の向きが頂点によって変わる)。
1だと常にカメラ投影方向(と同じ方向の法線)。
なので、0は1と比べて球体のようにシェーディングされ、1は0と比べより平面にシェーディングされているように見える。
Normal Directionが0
Normal Directionが1
参照サイト
Material
エフェクトのマテリアルを指定する。
Trail Material
Trailモジュールが有効であるとき表示される。
Trailエフェクトのマテリアルを指定する。
Sort Mode
エフェクトの描画順序を設定できる。
None
特に何も変更しない。
By Distance
カメラの距離に応じてエフェクトの順序を決める。
カメラから近いエフェクトを手前に、遠いエフェクトは奥にする。
Oldest in Front
生存期間が古いエフェクトを手前に描画する。
Youngest in Front
生存期間が若いエフェクトを手前に描画する。
参考動画はOldest in Frontを参照。
By Depth
ニアプレーンの距離に応じてエフェクトの描画順を決める。
ニアプレーンから近ければ手前、遠ければ奥。
ただBy Distanceとほぼ同じ?
Sorting Fudge
Partclesystem同士の描画順を指定できる。
値が小さいほど手前にくる。
Min Particle Size
Render ModeのBillboard、Stretched Billboard、Horizontal Billboard、Vertical Billboardの時に表示される。
ビューポートに占める最小サイズ。
Min Particle Sizeが0
Min Particle Sizeが0.3
Max Particle Size
Render ModeのBillboard、Stretched Billboard、Horizontal Billboard、Vertical Billboardの時に表示される。
ビューポートに占める最大サイズ。
Render Alignment
Render ModeがBillboardの時に表示される項目。
向きを指定できる。
View
常にカメラに対して向く。
World
ワールド座標に対して向く。
Local
Particle Systemオブジェクトの回転軸の向きになる。
Facing
カメラの中心部に対して向く。
なのでViewと違って画面の中央と端で角度の違いがでる。
Viewはカメラの投影面に対して向くため、画面の中央と端で角度の違いがでない。
イメージ的には下記画像。(赤がFacing、青がView)
動画で見ると少し分かりにくいが、Facingだと端にあるエフェクトは、Viewと比べれて向きが変わっていることが分かる。
Velocity
エフェクトの進行方向に対して向く。
Enable Mesh GPU Instancing
Render ModeがMeshの時に表示される項目。
GPUインスタンスを有効にするかを設定。
Flip
エフェクトを反転させたり、ランダムに反転させたりできる。
1だと反転、0.5だとランダムに反転。
Allow Roll
カメラに向いているパーティクルがカメラの Z 軸を中心に回転できるかどうかを制御します。
VR アプリケーションでは、ヘッドマウントディスプレイ (HMD) の回転によって、パーティクルシステムが望ましくない形で回転する場合があるため、この設定を無効にすると特に役立つ可能性があります。
Pivot
回転軸のPivotを調整できる。
Visualize Pivot
エフェクトのPivotを視覚化する。
Masking
SpriteMaskを使用して、エフェクトをマスクできる。
Apply Active Color Space
設定されているColor Spaceと同じ色空間にする設定であるみたいだが、オンオフで実験してみたところ結果は同じだった。
参照サイト
Custom Vertex Streams
Custom Vertex Streamsとは、Particle Systemの項目でParticle Systemで設定しているモジュール内の値をシェーダーに渡せる機能である。
これを利用することで、Particle Systemの回転・速さ・大きさなどの値に応じてシェーダー内の動的に変更できる。
以下で試しているのでこちらを参照。
Cast Shadows
エフェクトに影をつけれる。
On、Off、Two-Sided、Shadows Onlyを指摘できる。
Static Shadow Caster
「Baked、RealTime、Mixedの影の検証【その1】」の静的シャドウキャスターのことを指していると思うが、挙動が違う。
Shadow Bias
シャドウアクネが解消できる。
Motion Vectors
Motion Vectorを使用できる。
エフェクトが前フレームからどれだけ移動した情報を持っているテクスチャのこと。
Sorting Layer ID
Sorting Layerを指定して、各Sorting Layerごとに描画の順番を変更できる。
下にいくほど前に描画される。
Order in Layer
Sorting Layer内での描画順を設定できる。
この値が高いほど前に描画される。
Light Probes
エフェクトにLight Probesを適用できる。
Rendering Layer Mask
エフェクトに特定のLightを適用できる。
Selection OutLlineでパーティクルのアウトラインを消す
有効
無効
プリセット機能でParticle Systemを使いまわすことができる
ただ、Remdererモジュールはコピーされない。
なお、余談であるがモデルやテクスチャでもこのような設定がある。Unity Grenobleでタイリング可能なシームレステクスチャ作成可能
SceneビューとGameビューの色味が違う場合
カメラのポストプロセスを有効にする
NovaShaderのLuminanceを調整する
①Luminanceを有効にする
色が濃くなっている
Luminanceを有効にすると解決する
Discussion