パーティクルシステム
マニュアル     リファレンス     スクリプト   
Unityマニュアル > ユーザガイド > シーンの構築 > パーティクルシステム

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはこちら
This document is unofficially translated by users.Please see the original document here.

翻訳に関する修正など、ご連絡はこちらまで。
Please send e-mail to here, when you have any question about the translation.

パーティクルシステム(Particle Systems)

パーティクルは 3D空間に描かれた2Dの画像です。煙や炎、水飛沫や葉っぱの効果に用いられます。 パーティクルシステムは3つのコンポーネントからなります。パーティクルエミッタ(Particle Emitter)パーティクルアニメータ(Particle Animator)パーティクルレンダラ(Particle Renderer)です。 パーティクルエミッタとレンダラを一緒に使う事で、静止したパーティクルを表現できます。パーティクルアニメータはパーティクルを様々な方向に動かし、色を変化させます。スクリプトからパーティクルシステムの、各パーティクルにアクセスする事が出来ます。それにより、ユニークな動きをする独自のパーティクルを作る事も可能です。

ここの、パーティクルスクリプトリファレンスを参照してください。

以下は、パーティクルコンポーネントリファレンスページの内容と同じです。

パーティクルコンポーネント(Particle Components)

パーティクルシステム(Particle Systems)

Unityのパーティクルシステムは、煙の雲、湯気、火や大気の効果を作るのに用いられます。パーティクルシステムは1つか2つのテクスチャのを使い、何度も描画する事で、無秩序な効果を生み出します。


基本Assetに含まれるパーティクルシステム

Unityの基本的なパーティクルシステムは、パーティクルエミッタ(Particle Emitter)パーティクルアニメータ(Particle Animator)パーティクルレンダラ(Particle Renderer)を持った、オブジェクトです。. The パーティクルエミッタはパーティクルを生成し、パーティクルアニメータが動かし、パーティクルレンダラニより、スクリーンに描画されます。

パーティクルをワールドに作用させたい場合、パーティクルコライダ(Particle Collider) コンポーネントゲームオブジェクトに追加します。

円形パーティクルエミッタ(Ellipsoid Particle Emitter)

円形パーティクルエミッタは球体の中に、パーティクルを生成します。球体のスケール(scale)と引き延ばし(stretch)の下にある円形(Ellipsoid)属性を使います。


円形パーティクルエミッタインスペクタ

属性

Emit有効であれば、エミッタはパーティクルを生成します。
Min Sizeパーティクルが生成された時の最小サイズです。
Max Size パーティクルが生成された際の最大サイズです。
Min Energy パーティクルの最小寿命で、秒で設定されます。
Max Energyパーティクルの最大寿命で、秒で設定されます。
Min Emission 毎秒生成されるパーティクルの最小数です。
Max Emission 毎秒生成されるパーティクルの最大数です。
World Velocity ワールド空間におけるパーティクルの初速で、X,Y,Z軸にそった値です。
Local Velocity パーティクルの初速で、オブジェクトの向きに対してX,Y,Z軸にそった値です。
Rnd Velocity X,Y,Z軸にそってランダムに付加される速度です。
Emitter Velocity Scale パーティクルが受け継ぐエミッタの速度です。
Tangent Velocity X,Y,Z軸にそって、エミッタの表面を横切る速度です。
Simulate In World Space 有効な場合、パーティクルは、エミッタが移動しても移動します。無効な場合、エミッタが移動すると、パーティクルも追従します。
One Shot 有効な場合、Min(Max) Emissionで定義されたパーティクルの数が、一度に生成されます。無効な場合、パーティクルは徐々に生成されます。
Ellipsoid パーティクルが内部で生成される、球体のサイズを、X,Y,Zにそって指定します。
MinEmitterRange 中心部分の空洞を定義します。パーティクルが球体の表層部分に現れるようになります。

詳細

円形パーティクルエミッタ(EPEs)は基本的なエミッタで、パーティクルシステム(Particle System)Components->Particles->Particle Systemからシーンに追加する事を選択した時に含まれています。 パーティクルが生成される範囲を定義し、パーティクルの初期速度を与える事が出来ます。ここからは、パーティクルアニメータ(Particle Animator)を用いて、パーティクルが時間とともにどのように変化する事で、興味深い効果を生み出すのかを設定します。

パーティクルエミッタはパーティクルアニメータ(Particle Animators)パーティクルレンダラ(Particle Renderers)と共同で、パーティクルシステムを作り、操作し、表示します。 この3つのコンポーネントは、パーティクルが動作し始める前に、正しくオブジェクトに設定されていなければなりません。パーティクルが生成されるとき、全て異なる速度と最終速度が与えられます。

Spawning Properties

Spawning PropertiesはSize, Energy, Emission, とVelocityで、パーティクルシステムが様々な効果を生み出すための、個性のようなものです。 小さな Sizeであれば、炎を表現したり、空の星を表現します。大きなSizeであれば、ホコリっぽい古い建物のチリの雲を表現します。

EnergyEmissionはパーティクルがシーンにどのぐらい長くのこり、また、どのぐらいの数が一度に生成されるかを制御します。 たとえば、ロケットは高いEmissionで、濃い煙を表現しますし、高いEnergyで、ゆっくりと空気に消える煙を表現します。

Velocityはパーティクルの動きを制御します。Velocityをスクリプトの中で変える事で、興味深い効果を出せます。また、風のように、一定の効果を生み出したい場合は、XとZのVelocityをパーティクルが吹き飛ばされるように設定します。

Simulate in World Space

無効であれば、パーティクル1つ1つは、エミッタの位置(Position)にあわせて、移動します。 有効であれば、パーティクルはエミッタが移動しても、追従しません。たとえば、炎を出す火の玉があった場合、一度立ち上った炎は、火の玉が遠くに移動しても、その場所に残ります。もし無効であれば、炎は火の玉とともにスクリーン内で移動します。

Emitter Velocity Scale

この属性はSimulate in World Spaceが有効な場合のみ適用されます。

この属性が1に設定されていると、パーティクルはエミッタの動作と、完全に同期して移動します。2に設定されていると、パーティクルはエミッタの移動の倍を2倍にします。3であれば、3倍となります。

One Shot

One Shotが設定されたエミッタは、Emission 属性で設定された、全てのパーティクルを一度に発生させ、修了します。以下に、One Shot有効、または、無効の場合の、いくつかのパーティクルシステムの使い方を示します:

有効:

Disabled:

Min Emitter Range

Min Emitter Range 円にたいしてパーティクルが発生する深度を決定します。0に設定すると、パーティクルは円の中心から、外側いっぱいまで、どこからでも発生します。1に設定すると、円の外周のみで発生します。


Min Emitter Rangeが0

Min Emitter Rangeが1

ヒント

メッシュパーティクルエミッタ(Mesh Particle Emitter)

メッシュパーティクルエミッタはパーティクルをメッシュの周りに発生させます。パーティクルはメッシュの表面から発生します。パーティクルに、オブジェクトに合わせ他複雑な作用をさせたい場合に、有効です。


メッシュパーティクルエミッタインペクタ

属性

Emit 有効な場合、エミッタはパーティクルを生成します。
Min Sizeパーティクルが生成された時の最小サイズです。
Max Size パーティクルが生成された際の最大サイズです。
Min Energy パーティクルの最小寿命で、秒で設定されます。
Max Energyパーティクルの最大寿命で、秒で設定されます。
Min Emission 毎秒生成されるパーティクルの最小数です。
Max Emission 毎秒生成されるパーティクルの最大数です。
World Velocity ワールド空間におけるパーティクルの初速で、X,Y,Z軸にそった値です。
Local Velocity パーティクルの初速で、オブジェクトの向きに対してX,Y,Z軸にそった値です。
Rnd Velocity X,Y,Z軸にそってランダムに付加される速度です。
Emitter Velocity Scale パーティクルが受け継ぐエミッタの速度です。
Tangent Velocity X,Y,Z軸にそって、エミッタの表面を横切る速度です。
Simulate In World Space 有効な場合、パーティクルは、エミッタが移動しても移動します。無効な場合、エミッタが移動すると、パーティクルも追従します。
One Shot 有効な場合、Min(Max) Emissionで定義されたパーティクルの数が、一度に生成されます。無効な場合、パーティクルは徐々に生成されます。
Interpolate Triangles 有効な場合、パーティクルはメッシュの表面全てから発生します。無効の場合、パーティクルはメッシュの頂点のみから発生します。
Systematic 有効な場合、パーティクルはメッシュで定義された頂点の順に、発生します。頂点の順序を直接制御することはまれですが、3Dモデリングアプリケーションは通常、プリミティブを使う際、非常に鶏痘だった設定を行います。メッシュが面を持っていない場合に限り、動作します。
Min Normal Velocity パーティクルがメッシュから離れる、最小値。
Max Normal Velocity パーティクルがメッシュから離れる、最大値。

詳細

メッシュパーティクルエミッタ(MPEs)は、発生する場所や向きを、円形パーティクルエミッタより正確に制御したい場合に用います。応用的な効果を出すことができます。

MPEsはパーティクルをメッシュに負荷された頂点から発生させることができます。そのため、メッシュが疎なポリゴンを用いれば、パーティクルの発生場所も疎なります。

パーティクルエミッタはパーティクルアニメータ及びパーティクルレンダラと共に動作し、パーティクルを生成、操作、表示します。 この3つのコンポーネントは、パーティクルが動作し始める前に、正しくオブジェクトに設定されていなければなりません。パーティクルが生成されるとき、全て異なる速度と最終速度が与えられます。

Spawning Properties

Spawning PropertiesはSize, Energy, Emission, とVelocityで、パーティクルシステムが様々な効果を生み出すための、個性のようなものです。 小さな Sizeであれば、炎を表現したり、空の星を表現します。大きなSizeであれば、ホコリっぽい古い建物のチリの雲を表現します。

EnergyEmissionはパーティクルがシーンにどのぐらい長くのこり、また、どのぐらいの数が一度に生成されるかを制御します。 たとえば、ロケットは高いEmissionで、濃い煙を表現しますし、高いEnergyで、ゆっくりと空気に消える煙を表現します。

Velocityはパーティクルの動きを制御します。Velocityをスクリプトの中で変える事で、興味深い効果を出せます。また、風のように、一定の効果を生み出したい場合は、XとZのVelocityをパーティクルが吹き飛ばされるように設定します。

Simulate in World Space

無効であれば、パーティクル1つ1つは、エミッタの位置(Position)にあわせて、移動します。 有効であれば、パーティクルはエミッタが移動しても、追従しません。たとえば、炎を出す火の玉があった場合、一度立ち上った炎は、火の玉が遠くに移動しても、その場所に残ります。もし無効であれば、炎は火の玉とともにスクリーン内で移動します。

Emitter Velocity Scale

この属性はSimulate in World Spaceが有効な場合のみ適用されます。

この属性が1に設定されていると、パーティクルはエミッタの動作と、完全に同期して移動します。2に設定されていると、パーティクルはエミッタの移動の倍を2倍にします。3であれば、3倍となります。

One Shot

One Shotが設定されたエミッタは、Emission 属性で設定された、全てのパーティクルを一度に発生させ、修了します。以下に、One Shot有効、または、無効の場合の、いくつかのパーティクルシステムの使い方を示します:

有効:

Disabled:

Interpolate Triangles

Interpolate Trianglesを有効にすると、 パーティクルはメッシュの頂点の間で発生するようになります。デフォルトでは、無効となっているため、パーティクルは頂点でのみ発生します。


Interpolate Trianglesを設定していない球体(デフォルト)

有効にすると、パーティクルは頂点の間で発生します。結果的に、メッシュの表面全体から発生します。(下図)


Interpolate Trianglesが有効な球体

It bears repeating that even with Interpolate Trianglesを有効にしても、そなポリンゴンであるため、範囲に比べて、依然として疎です。

Systematic

Enabling Systematic は、パーティクルがメッシュの頂点順に沿って発生するようにします。頂点順は3Dモデリングアプリケーションで設定できます。


MPEを付加した球体にSystematic を有効にした場合。

Normal Velocity

Normal Velocity はパーティクルが法線に沿って発生する速度をコントロールします。

例えば、メッシュパーティクルシステムを作り、立方体をエミッタとして用いる場合、Interpolate Trianglesを有効にし、Normal Velocity MinMaxを1に設定します。 パーティクルが立方体の表面で一直線に発生することを確認できるでしょう。

参考

ヒント

パーティクルアニメータ(Particle Animator)

パーティクルアニメータは パーティクルを時間に沿って動かします。風や、色の変化に使用します。


パーティクルアニメータインスペクタ

属性

Does Animate Color 有効であれば、パーティクルは色を生存期間に応じて変化させます。
Color Animation パーティクルは5つの色に変化します。全てのパーティクルはこれに従いますー寿命の短いパーティクルは変化が早くなります。
World Rotation Axis パーティクルが周りを回転する、オプショナルな、ワールド軸です。魔法の効果や、石灰の泡などに用います。
Local Rotation Axis パーティクルが周りを回転する、オプショナルな、ローカル空間軸です。魔法の効果や、石灰の泡などに用います。
Size Grow パーティクルの生存期間により、サイズを大きくします。ランダム効果によって、パーティクルが散らばってしまうため、サイズを大きくして離れないようにするのは良いことです。立ち上る煙や、風のシミュレートに使えます。
Rnd Force フレームごとにパーティクルに作用するランダムな力です。煙がより自然になります。
Force フレームごとにパーティクルに作用する力です。ワールドに相対です。
Damping フーレムごとに減少するパーティクルの速度です。1であれば、減少しません。値が小さいほど速度が減少します。
Autodestruct 有効な場合、パーティクルアニメータが負荷されたゲームオブジェクトは、全てのパーティクルが消えると、破棄されます。

詳細

パーティクルアニメータはパーティクルシステムをダイナミックにします。パーティクルの色を変化させたり、力や回転を負荷したり、パーティクルを生成し終えたら、オブジェクトを破棄したりします。 パーティクルシステムに関する情報は、メッシュパーティクルエミッタ円形パーティクルエミッタパーティクルレンダラを参照してください。

色のアニメーション(Animating Color)

パーティクルの色を変更したり、フェードイン・アウトさせたい場合、Animate Colorを有効にし、色の順序を指定します。選択した5つの色にしたがって、パーティクルは色を変化させます。 エミッタのEnergy値に応じて、色の変化の速度が決まります。

パーティクルをフェードインさせたい場合、最初と最後の色が、低いアルファ値を持つように、設定すると良いでしょう。


色の変化するパーティクルシステム

回転軸(Rotation Axes)

ローカル、または、ワールドの回転軸を設定すると、発生したパーティクルは軸の周りを回るようになります。(トランスフォーム(Transform)の位置を中心として) ひとつの軸を大きな値にすると、早く回転します。

ローカル軸を設定すると、回転するパーティクルは、トランスフォームの回転が変わると、伴って変化します。

ワールド軸を設定すると、パーティクルはトランスフォームの回転に関わらず、回転します。

Forces & Damping

特定の方向にパーティクルを加速するのに、力(Force)を使います。

Dampingは軸に関わらず、加速したり、減速したりするのに用いられます:

パーティクルに付加されたゲームオブジェクトの破棄

パーティクルシステムと付加されたゲームオブジェクトAutoDestruct属性を有効化することで、破棄することができます。 例えば、オイル缶があったとき、パーティクルシステムのEmitを無効化しAutoDestructを有効化します。衝突すると、パーティクルエミッタを有効化します。爆発が起こり、パーティクルシステムとオイル缶は破棄されシーンから削除されます。

自動破棄は、パーティクルが発生した後でのみ、動作することに気をつけてください。AutoDestructが有効で、オブジェクトが破棄される、正確なルールは:

ヒント

パーティクルコライダ(Particle Collider)

ワールドパーティクルコライダ(World Particle Collider)はパーティクルを他の衝突物と衝突させる場合に用います。


メッシュコライダと衝突するパーティクルシステム

属性

Bounce Factor パーティクルは、他のオブジェクトに衝突すると、加速したり、減速したりします。 この値は、パーティクルアニメータの Damping属性と似ています。
Collision Energy Loss パーティクルが商と地に失う(秒間に)エネルギー量です。 エネルギーが0になると、パーティクルは削除されます。
Min Kill Velocity パーティクルの速度が、衝突によりMin Kill Velocity以下になると、パーティクルは削除されます。
Collides withどのレイヤとパーティクルが衝突するかを設定します。
Send Collision Message 有効な場合、パーティクルは衝突メッセージを送出します。スクリプトで捕捉できます。

詳細

パーティクルコライダを持ったパーティクルシステムの生成:

  1. GameObject->Create Other->Particle Systemから、パーティクルシステムを生成します。 Component->Particles->World Particle Colliderから、パーティクルコライダを追加します。

メッセージング

Send Collision Messageが有効な場合、 パーティクルが章とすると、OnParticleCollision()メッセージが、パーティクルの属するゲームオブジェクトと衝突したゲームオブジェクト両方に送出されます。

ヒント

パーティクルレンダラ(Particle Renderer)

パーティクルレンダラはスクリーンにパーティクルシステムを描画します。


パーティクルレンダラインスペクタ

属性

Materials パーティクルに表示されるマテリアル(Materials)のリストへの参照です。
Camera Velocity Scale Cameraの移動によってパーティクルが引き伸ばされる量を指定します。
Stretch Particles パーティクルがどのようにレンダリングされるかを決定します。
Billboardカメラの方向に向いているように、パーティクルをレンダリングします。
Stretched パーティクルが動いてる方向に向きます。
SortedBillboard パーティクルは深度に応じて並べられます。マテリアルをブレンドする際に使用できます。
VerticalBillboard 全てのパーティクルが、X/Z軸に水平に並びます。
HorizontalBillboard 全てのパーティクルが、X/Y軸に水平に並びます。 All particles are aligned flat along the X/Y axes.
Length Scale Stretch ParticlesStretchedに設定されていれば、この値によって、パーティクルが向いた向きに動くかを決定します。
Velocity Scale Stretch ParticlesStretchedに設定されていれば、この値によって、どの程度のパーティクルが引き伸ばされるかが、パーティクルの速度を基準に設定されます。
UV Animation この中のどれかが設定されていれば、パーティクルのUV座標が生成され、タイル上にアニメーションするテクスチャとして使用できます。下記の、Animated Texturesセクションを参照してください。
X Tile X軸に沿って位置するフレーム数
Y Tile Y軸に沿って位置するフレーム数
Cycles アニメーションシーケンスの繰り返し数

詳細

パーティクルシステムにおいて、パーティクルレンダラはスクリーン表示のために必ず必要です。


ガンシップのエンジンが噴射されている様子が、パーティクルレンダラによってスクリーンに表示されている

マテリアルの選択

パーティクルレンダラを設定するとき、適切なマテリアルを使用することが重要です。多くの場合に、準備されたパーティクルシェーダを用いて、マテリアルを使用するでしょう。Standard Assets->Particles->Sourcesフォルダの中に、いくつかのマテリアルが、準備されています。

新しいマテリアルの作成は簡単です:

  1. Assets->Create Other->Materialをメニューバーから選択します。
  2. マテリアルはシェーダポップアップを持っているので、パーティクルグループから、ひとつのシェーダを選んでください。Particles->Multiplyから、選べます。
  3. テクスチャが適用されました。異なるシェーダは、テクスチャのアルファチャネルを、少しちがう方法で使用しますが、通常、黒の値は透明、白の値を持った部分がスクリーンに表示されます。

パーティクルのディストーション

デフォルトではパーティクルはBillboardでレンダリングされます。シンプルな矩形のスプライトです。これは、煙や爆発、また大部分のパーティクル効果に適しています。

パーティクルは速度に応じて引き伸ばせます。これは、火花や、雷、レーザービームに有効です。Length ScaleVelocity Scaleにより、パーティクルがどの程度引き伸ばされるかが決定されます。

Sorted Billboard は、パーティクルを深度に応じて並べます。Alpha Blendedパーティクルシェーダを使用する場合などに使われます。これは、処理に負担がかかるため、特別にクオリティを異なるものにしたい場合のみに用いるべきです。

Animated textures

パーティクルシステムは、アニメーションするテクスチャタイルの上にレンダリングできます。この効果を用いるには、テクスチャを画像のグリッドにします。パーティクルのライフサイクルに伴って、画像のをめぐります。パーティクルの動きを豊かにたり、小さなホコリが回転したりする様子を表現できます。

ヒント