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)を からシーンに追加する事を選択した時に含まれています。 パーティクルが生成される範囲を定義し、パーティクルの初期速度を与える事が出来ます。ここからは、パーティクルアニメータ(Particle Animator)を用いて、パーティクルが時間とともにどのように変化する事で、興味深い効果を生み出すのかを設定します。
パーティクルエミッタはパーティクルアニメータ(Particle Animators)とパーティクルレンダラ(Particle Renderers)と共同で、パーティクルシステムを作り、操作し、表示します。 この3つのコンポーネントは、パーティクルが動作し始める前に、正しくオブジェクトに設定されていなければなりません。パーティクルが生成されるとき、全て異なる速度と最終速度が与えられます。
Spawning Properties
Spawning PropertiesはSize, Energy, Emission, とVelocityで、パーティクルシステムが様々な効果を生み出すための、個性のようなものです。 小さな Sizeであれば、炎を表現したり、空の星を表現します。大きなSizeであれば、ホコリっぽい古い建物のチリの雲を表現します。
EnergyとEmissionはパーティクルがシーンにどのぐらい長くのこり、また、どのぐらいの数が一度に生成されるかを制御します。 たとえば、ロケットは高い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
ヒント
- 多くの大きなパーティクルを使うときは気をつけてください。パフォーマンスの低いコンピュータでは、処理速度が低下します。なるべく、最小のパーティクルで、効果が出るようにするべきです。
- Emit属性は、AutoDestructパーティクルアニメータの属性とともに、作用します。 スクリプトで、エミッタを停止すると、AutoDestructは自動的に、パーティクルシステムとゲームオブジェクトを破棄します。
メッシュパーティクルエミッタ(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であれば、ホコリっぽい古い建物のチリの雲を表現します。
EnergyとEmissionはパーティクルがシーンにどのぐらい長くのこり、また、どのぐらいの数が一度に生成されるかを制御します。 たとえば、ロケットは高い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 MinとMaxを1に設定します。 パーティクルが立方体の表面で一直線に発生することを確認できるでしょう。
参考
ヒント
- 多くの大きなパーティクルを使うときは気をつけてください。パフォーマンスの低いコンピュータでは、処理速度が低下します。なるべく、最小のパーティクルで、効果が出るようにするべきです。
- Emit属性は、AutoDestructパーティクルアニメータの属性とともに、作用します。 スクリプトで、エミッタを停止すると、AutoDestructは自動的に、パーティクルシステムとゲームオブジェクトを破棄します。
- MPEは、シーンに配置された多くのランプが光っている様子を再現する事にも使用できます。 ランプの中心に頂点を持つメッシュを作り、MPEをhaloマテリアルとして作成します。悪魔的な空想世界に最適です。
パーティクルアニメータ(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は軸に関わらず、加速したり、減速したりするのに用いられます:
- 1であればDampingは適用されず、加速も減速もしません。
- 0であれば、パーティクルは即座に停止します。
- 2であれば、パーティクルは毎秒速度が2倍になります。
パーティクルに付加されたゲームオブジェクトの破棄
パーティクルシステムと付加されたゲームオブジェクトをAutoDestruct属性を有効化することで、破棄することができます。 例えば、オイル缶があったとき、パーティクルシステムのEmitを無効化しAutoDestructを有効化します。衝突すると、パーティクルエミッタを有効化します。爆発が起こり、パーティクルシステムとオイル缶は破棄されシーンから削除されます。
自動破棄は、パーティクルが発生した後でのみ、動作することに気をつけてください。AutoDestructが有効で、オブジェクトが破棄される、正確なルールは:
- パーティクルがすでに発生しているが、全てが消えていない場合、または、
- エミッタが発生させたが、今は、発生が止められている。
ヒント
- Color Animationを使い、パーティクルがフェードイン・アウトさせてください。そうしないと、美しくない破裂が発生します。
- Rotation Axesを使い、ぐるぐる回る渦巻きを作れます。
パーティクルコライダ(Particle Collider)
ワールドパーティクルコライダ(World Particle Collider)はパーティクルを他の衝突物と衝突させる場合に用います。
メッシュコライダと衝突するパーティクルシステム
属性
Bounce Factor | パーティクルは、他のオブジェクトに衝突すると、加速したり、減速したりします。 この値は、パーティクルアニメータの Damping属性と似ています。 |
Collision Energy Loss | パーティクルが商と地に失う(秒間に)エネルギー量です。 エネルギーが0になると、パーティクルは削除されます。 |
Min Kill Velocity | パーティクルの速度が、衝突によりMin Kill Velocity以下になると、パーティクルは削除されます。 |
Collides with | どのレイヤとパーティクルが衝突するかを設定します。 |
Send Collision Message | 有効な場合、パーティクルは衝突メッセージを送出します。スクリプトで捕捉できます。 |
詳細
パーティクルコライダを持ったパーティクルシステムの生成:
- から、パーティクルシステムを生成します。 から、パーティクルコライダを追加します。
メッセージング
Send Collision Messageが有効な場合、 パーティクルが章とすると、OnParticleCollision()メッセージが、パーティクルの属するゲームオブジェクトと衝突したゲームオブジェクト両方に送出されます。
ヒント
- Send Collision Messageは、銃弾があたったときにダメージを受ける効果に使用できます。
- パーティクル衝突判定は、多くのパーティクルに対して行うと速度が低下します。慎重に使ってください。
- メッセージ送出は大きなオーバヘッドをうみますので、通常のパーティクルシステムでは使うべきではありません。
パーティクルレンダラ(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 ParticlesがStretchedに設定されていれば、この値によって、パーティクルが向いた向きに動くかを決定します。 |
Velocity Scale | Stretch ParticlesがStretchedに設定されていれば、この値によって、どの程度のパーティクルが引き伸ばされるかが、パーティクルの速度を基準に設定されます。 |
UV Animation | この中のどれかが設定されていれば、パーティクルのUV座標が生成され、タイル上にアニメーションするテクスチャとして使用できます。下記の、Animated Texturesセクションを参照してください。 |
X Tile | X軸に沿って位置するフレーム数 |
Y Tile | Y軸に沿って位置するフレーム数 |
Cycles | アニメーションシーケンスの繰り返し数 |
詳細
パーティクルシステムにおいて、パーティクルレンダラはスクリーン表示のために必ず必要です。
ガンシップのエンジンが噴射されている様子が、パーティクルレンダラによってスクリーンに表示されている
マテリアルの選択
パーティクルレンダラを設定するとき、適切なマテリアルを使用することが重要です。多くの場合に、準備されたパーティクルシェーダを用いて、マテリアルを使用するでしょう。
フォルダの中に、いくつかのマテリアルが、準備されています。新しいマテリアルの作成は簡単です:
- をメニューバーから選択します。
- マテリアルはシェーダポップアップを持っているので、パーティクルグループから、ひとつのシェーダを選んでください。 から、選べます。
- テクスチャが適用されました。異なるシェーダは、テクスチャのアルファチャネルを、少しちがう方法で使用しますが、通常、黒の値は透明、白の値を持った部分がスクリーンに表示されます。
パーティクルのディストーション
デフォルトではパーティクルはBillboardでレンダリングされます。シンプルな矩形のスプライトです。これは、煙や爆発、また大部分のパーティクル効果に適しています。
パーティクルは速度に応じて引き伸ばせます。これは、火花や、雷、レーザービームに有効です。Length ScaleとVelocity Scaleにより、パーティクルがどの程度引き伸ばされるかが決定されます。
Sorted Billboard は、パーティクルを深度に応じて並べます。 パーティクルシェーダを使用する場合などに使われます。これは、処理に負担がかかるため、特別にクオリティを異なるものにしたい場合のみに用いるべきです。
Animated textures
パーティクルシステムは、アニメーションするテクスチャタイルの上にレンダリングできます。この効果を用いるには、テクスチャを画像のグリッドにします。パーティクルのライフサイクルに伴って、画像のをめぐります。パーティクルの動きを豊かにたり、小さなホコリが回転したりする様子を表現できます。
ヒント
- パーティクルシェーダはパーティクルレンダラと共に使ってください。