パーティクルシステムとともにインスタンスパラメータを使用する
概要
インスタンスパラメータは、「Unreal Engine 3」においてエフェクトパイプラインの一部となっており、非常に強力なものです。パーティクルパラメータを使用すると、多数の値をインスタンス単位で制御することができます。パーティクルパラメータは、さまざまなモジュールを制御するためにゲームコードによっても呼ばれますが、多くの場合、配置されたレベルエフェクト上で使用されます。
パラメータでカラーを制御する
ここで扱う例では、 ScaleColorLife モジュール ( パーティクルパラメータ を使用して設定される) を使用して、火のパーティクルシステムのカラーを制御します。
まず、Cascade (カスケード) でエフェクトを開き、initialColor (初期カラー) モジュールまたは ColorOverLife (ライフ期間のカラー) モジュールがパーティクルシステムにあることを確認します。
次に、 Color > ScaleColor/Life モジュールをパーティクルシステムに追加します。 ScaleColor/Life の場合、パラメータが使用される頻度が高いため、設定はとても簡単です。右クリックして Set up particle parameter (パーティクルパラメータを設定する) を選択します。 注意 : これは、すべてのパーティクルパラメータに該当するとは限りません。
モジュールを選択してそのプロパティを見ると、ベクタおよび定数値がこのモジュールのために定義されているのが分かります。パラメータは自動的に Color と Alfpa という名前が付けられていますが、この名前は改変することが可能であり、あらゆるパーティクルシステム内にある複数のパラメータ名を、一意なエミッタスタック上に配置させることが可能です。
インスタンスパラメータの設定
次のステップでは、シーンに配置される個々のエミッタアクタを扱います。EmitterActor (エミッタアクタ) を選択して、右クリックし、さらに、ドロップダウンメニューから Emitter > AutoPopulate (自動エントリ) を選択します。
alpha/color の設定値およびブレンドモードにより、この時点でパーティクルシステムが消えていることがありますが、正常な動作です。 F4 キーを押して、EmitterActor (エミッタアクタ) のプロパティウインドウを開きます。
ParticleSystemComponent (パーティクルシステムコンポーネント) の中において、新たに生成されたデータ群が [Instance Parameters] (インスタンスパラメータ) の下に置かれています。インスタンスパラメータは、太字になっているはずです。
エフェクト内で指定した 2 つのパラメータの名前が、右側に、リストされているのが分かります。パラメータを開き、設定項目を編集します。丸で囲んでいるように、RGB は Vector (ベクター) で、Alpha (アルファ) は Scalar (スカラー) です。
次の画像は、オリジナルの配置されたエフェクトです。
次は、同じエフェクトですが、ブルームとカラー彩度を増やすために エミッタアクタ上のパーティクルパラメータが操作されています。
カラーパラメータを使用して、1 つのパーティクルエフェクトを作成することが可能であるとともに、異なるレベルをまたがる基本的なカラーのバリエーションのために、複数のエフェクトをパッケージにコピー & ペーストしなくても、必要に応じてカラーを操作することができます。
パーティクルパラメータによって、エフェクトを整理発見することが非常に簡単になり、メモリやレベルのロード時間、ディスクに保存する必要があるファイルの量を減らすことができます。
パラメータを使用して位置を制御する (エミッタアクタの数を減らす)
この例では、パーティクルパラメータを使用してエミッタの InitialLocation (初期位置) を制御する方法について説明します。パーティクルパラメータを使用することによって、エフェクトの柔軟性が増し、シーン内で使用するエフェクトエミッタの数を減らすことができます。
この例では、次の火のエフェクトについて見ていきます。
補足 : このエフェクトは、広い地域にまたがってで使用されるように意図されており、2 つのメインとなる炎のソースが、エミッタの原点および X,Y 軸の前方に位置します。パーティクルパラメータを使用することによって、このエフェクトの外見を修正することができるとともに、メモリに 1 つのパーティクルシステムだけをロードさせることができます。
次は、同じエフェクトですが、パーティクルパラメータを使って修正したものです。
パーティクルパラメータの設定
1 個のエミッタを使用しながら、パーティクルパラメータによってエフェクトの位置を移動させてみます。
右クリックして、Cascade で Initial Position (初期位置) モジュールをエミッタに追加します。
Initial Position (初期位置) モジュールを選択して、[Distribution] (分布) リストから DistributionVectorParticleParameter (分布ベクターパーティクルパラメータ) を選択します。
パラメータ名を InitialPosition
または任意のパラメータ名に変更して、このエミッタにとって一意の名前にします。(共有されたパーティクルパラメータを使用して、複数のエミッタ間で、位置の値を共有したくない場合)。
[Param Modes] (パラメータモード) セクションを開き、ドロップダウンを DPM_Direct に変更します。
ワールド内に配置されたエミッタアクタを選択し、右クリックして _Emitter (エミッタ) > AutoPopulate (自動エントリ) _ を選択することによって、パーティクルパラメータを設定します。
F4 キーを押して、[Particle System Component] (パーティクルシステムコンポーネント) セクションにあるエミッタプロパティを表示します。 [Instance Parameter] (インスタンスパラメータ) セクションが太字になり、[0] のエントリが含まれていることが分かります。 このエントリ内の名前は、IntialPosition (初期位置) のモジュールにおける名前と一致するはずです。
Vector の値を変更することによって、望みの位置に合わせます。
次の画像は、パーティクルパラメータを使用して位置を制御する前のものです。
パーティクルパラメータを使用して位置を制御した後の画像です。
この例は、パーティクルパラメータの簡単な使用例を示すものでしたが、この機能にはさまざまな使用法があり、それらによってプロジェクトに節約がもたらされることになるでしょう。
次の画像では、1 個のエミッタアクタを使用して 3 個の火を配置しています。そのために、Cascade 内で、3 個の一意なエミッタ上に一意な名前をもつパーティクルパラメータを使用しています。
複雑なエフェクトを扱う場合は、パーティクルパラメータに明確な名前を付けることが不可欠です。不適切に命名されたパラメータをもつ古いエフェクトに戻ろうとするならば、混乱が生じます。パラメータの働きを推測するのに無駄な時間を費やすこともあります。複数のパーティクルパラメータを使用すれば、単一のエミッタまたは複数のエミッタ内にある複数のモジュールにまたがって、動作を制御することができます。カラーや位置、スケール、ライフタイムなどを編集してみてください。さまざまな設定値について実験しながら望ましい結果を得ようとするやり方が役立つと分かるでしょう。
ここで取り上げた例では、パーティクルパラメータを使用して、エフェクトの成分である位置をシーン内で動かすことによって、エミッタアクタの数を減らし、ひいては、パフォーマンスとロード時間を向上させています。Matinee およびゲームコードによっても、パーティクルパラメータを制御することが可能です。
Important!
You are viewing documentation for the Unreal Development Kit (UDK).
If you are looking for the Unreal Engine 4 documentation, please visit the Unreal Engine 4 Documentation site.