UDN
Search public documentation:

UsingInstanceParametersJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > パーティクルとエフェクト > パーティクルシステム > パーティクルシステムとともにインスタンスパラメータを使用する
UE3 ホーム > FX アーティスト > パーティクルシステムとともにインスタンスパラメータを使用する

パーティクルシステムとともにインスタンスパラメータを使用する


概要


インスタンスパラメータは、「Unreal Engine 3」においてエフェクトパイプラインの一部となっており、非常に強力なものです。パーティクルパラメータを使用すると、多数の値をインスタンス単位で制御することができます。パーティクルパラメータは、さまざまなモジュールを制御するためにゲームコードによっても呼ばれますが、多くの場合、配置されたレベルエフェクト上で使用されます。

パラメータでカラーを制御する


ここで扱う例では、 ScaleColorLife モジュール ( パーティクルパラメータ を使用して設定される) を使用して、火のパーティクルシステムのカラーを制御します。

fireexample.jpg

まず、Cascade (カスケード) でエフェクトを開き、initialColor (初期カラー) モジュールまたは ColorOverLife (ライフ期間のカラー) モジュールがパーティクルシステムにあることを確認します。

次に、 Color > ScaleColor/Life モジュールをパーティクルシステムに追加します。 ScaleColor/Life の場合、パラメータが使用される頻度が高いため、設定はとても簡単です。右クリックして Set up particle parameter (パーティクルパラメータを設定する) を選択します。 注意 : これは、すべてのパーティクルパラメータに該当するとは限りません。

setupparameter.jpg

モジュールを選択してそのプロパティを見ると、ベクタおよび定数値がこのモジュールのために定義されているのが分かります。パラメータは自動的に Color と Alfpa という名前が付けられていますが、この名前は改変することが可能であり、あらゆるパーティクルシステム内にある複数のパラメータ名を、一意なエミッタスタック上に配置させることが可能です。

cascadeparameters.jpg

インスタンスパラメータの設定

次のステップでは、シーンに配置される個々のエミッタアクタを扱います。EmitterActor (エミッタアクタ) を選択して、右クリックし、さらに、ドロップダウンメニューから Emitter > AutoPopulate (自動エントリ) を選択します。

autopopulate.jpg

alpha/color の設定値およびブレンドモードにより、この時点でパーティクルシステムが消えていることがありますが、正常な動作です。 F4 キーを押して、EmitterActor (エミッタアクタ) のプロパティウインドウを開きます。

ParticleSystemComponent (パーティクルシステムコンポーネント) の中において、新たに生成されたデータ群が [Instance Parameters] (インスタンスパラメータ) の下に置かれています。インスタンスパラメータは、太字になっているはずです。

instanceparams.jpg

エフェクト内で指定した 2 つのパラメータの名前が、右側に、リストされているのが分かります。パラメータを開き、設定項目を編集します。丸で囲んでいるように、RGB は Vector (ベクター) で、Alpha (アルファ) は Scalar (スカラー) です。

editedparams.jpg

次の画像は、オリジナルの配置されたエフェクトです。

originaleffect.jpg

次は、同じエフェクトですが、ブルームとカラー彩度を増やすために エミッタアクタ上のパーティクルパラメータが操作されています。

modifiedeffect.jpg

カラーパラメータを使用して、1 つのパーティクルエフェクトを作成することが可能であるとともに、異なるレベルをまたがる基本的なカラーのバリエーションのために、複数のエフェクトをパッケージにコピー & ペーストしなくても、必要に応じてカラーを操作することができます。

パーティクルパラメータによって、エフェクトを整理発見することが非常に簡単になり、メモリやレベルのロード時間、ディスクに保存する必要があるファイルの量を減らすことができます。

パラメータを使用して位置を制御する (エミッタアクタの数を減らす)


この例では、パーティクルパラメータを使用してエミッタの InitialLocation (初期位置) を制御する方法について説明します。パーティクルパラメータを使用することによって、エフェクトの柔軟性が増し、シーン内で使用するエフェクトエミッタの数を減らすことができます。

この例では、次の火のエフェクトについて見ていきます。

locationeffect.jpg

補足 : このエフェクトは、広い地域にまたがってで使用されるように意図されており、2 つのメインとなる炎のソースが、エミッタの原点および X,Y 軸の前方に位置します。パーティクルパラメータを使用することによって、このエフェクトの外見を修正することができるとともに、メモリに 1 つのパーティクルシステムだけをロードさせることができます。

次は、同じエフェクトですが、パーティクルパラメータを使って修正したものです。

locationeffectparam.jpg

パーティクルパラメータの設定

1 個のエミッタを使用しながら、パーティクルパラメータによってエフェクトの位置を移動させてみます。

basiceffect.jpg

右クリックして、Cascade で Initial Position (初期位置) モジュールをエミッタに追加します。

Initial Position (初期位置) モジュールを選択して、[Distribution] (分布) リストから DistributionVectorParticleParameter (分布ベクターパーティクルパラメータ) を選択します。

distributionparam.jpg

パラメータ名を InitialPosition または任意のパラメータ名に変更して、このエミッタにとって一意の名前にします。(共有されたパーティクルパラメータを使用して、複数のエミッタ間で、位置の値を共有したくない場合)。

paramname.jpg

[Param Modes] (パラメータモード) セクションを開き、ドロップダウンを DPM_Direct に変更します。

parammodes.jpg

ワールド内に配置されたエミッタアクタを選択し、右クリックして _Emitter (エミッタ) > AutoPopulate (自動エントリ) _ を選択することによって、パーティクルパラメータを設定します。

F4 キーを押して、[Particle System Component] (パーティクルシステムコンポーネント) セクションにあるエミッタプロパティを表示します。 [Instance Parameter] (インスタンスパラメータ) セクションが太字になり、[0] のエントリが含まれていることが分かります。 このエントリ内の名前は、IntialPosition (初期位置) のモジュールにおける名前と一致するはずです。

instancename.jpg

Vector の値を変更することによって、望みの位置に合わせます。

instancevalues.jpg

次の画像は、パーティクルパラメータを使用して位置を制御する前のものです。

beforelocation.jpg

パーティクルパラメータを使用して位置を制御した後の画像です。

afterlocation.jpg

この例は、パーティクルパラメータの簡単な使用例を示すものでしたが、この機能にはさまざまな使用法があり、それらによってプロジェクトに節約がもたらされることになるでしょう。

次の画像では、1 個のエミッタアクタを使用して 3 個の火を配置しています。そのために、Cascade 内で、3 個の一意なエミッタ上に一意な名前をもつパーティクルパラメータを使用しています。

finallocation.jpg

複雑なエフェクトを扱う場合は、パーティクルパラメータに明確な名前を付けることが不可欠です。不適切に命名されたパラメータをもつ古いエフェクトに戻ろうとするならば、混乱が生じます。パラメータの働きを推測するのに無駄な時間を費やすこともあります。複数のパーティクルパラメータを使用すれば、単一のエミッタまたは複数のエミッタ内にある複数のモジュールにまたがって、動作を制御することができます。カラーや位置、スケール、ライフタイムなどを編集してみてください。さまざまな設定値について実験しながら望ましい結果を得ようとするやり方が役立つと分かるでしょう。

ここで取り上げた例では、パーティクルパラメータを使用して、エフェクトの成分である位置をシーン内で動かすことによって、エミッタアクタの数を減らし、ひいては、パフォーマンスとロード時間を向上させています。Matinee およびゲームコードによっても、パーティクルパラメータを制御することが可能です。