Language:
Page Info
Tags:
Engine Version:

Collision モジュール

Collision モジュール

これらのモジュールは、パーティクルによるアクタコリジョンの処理方法を管理します。

コリジョン

エミッタにパーティクルのコリジョンを処理させるパラメータです。以下のメンバーが含まれます。

プロパティ

説明

Collision

Damping Factor

衝突後にパーティクルを「遅延」させる度合いを表すベクター分布です。パーティクルのスポーン時に EmitterTime に基づいて値を取得し、パーティクルに格納します。

Damping Factor Rotation

衝突後にパーティクルの回転を「遅延」させる度合い表すベクター分布です。パーティクルのスポーン時に EmitterTime に基づいて値を取得し、パーティクルに格納します。

Max Collisions

パーティクルで許容される最大衝突数を表す浮動小数点分布です。パーティクルのスポーン時に EmitterTime に基づいて値を取得します。

Collision Completion Option

パーティクルが MaxCollision 数に達した時の動作を表す enum 値です。以下の値のどれかになります:

オプション

説明

EPCC_Kill

MaxCollisions 数に到達すると、パーティクルを Kill (消去) します。(これはデフォルトの挙動です)。

EPCC_Freeze

パーティクルを定位置にフリーズさせます。

EPCC_HaltCollisions

衝突チェックを停止しますが、続けて更新します。これにより、パーティクルはオブジェクトを「通り抜け」ることになります。

EPCC_FreezeTranslation

パーティクルの平行移動を停止しますが、その他はすべて更新し続けます。

EPCC_FreezeRotation

パーティクルの回転を停止しますが、その他はすべて更新し続けます。

EPCC_FreezeMovement

パーティクルの平行移動/回転を停止しますが、その他はすべて更新し続けます。.

Apply Physics

衝突が発生したパーティクルとオブジェクト間に物理の適用を示すBoolean 値です。

現在は一方向です。パーティクルからオブジェクト パーティクルに物理は適用されていません。パーティクルが衝突するオブジェクトに適用する力積を生成するのみです。

Particle Mass

CollisionCompletionOption が true の場合、パーティクルの質量を表す浮動小数点分布です。パーティクルのスポーン時に EmitterTime に基づいて値を取得します。

Dir Scalar

相互貫通または大きなギャップの回避に「役立つ」、パーティクルの範囲のスケーリングに使用する float 値です。

Pawns Do Not Decrement Count

true の場合、Pawns と衝突した時も反応を示しますが、MaxCollision 数の計算からは除外されます。これを使用すると、ポーンからパーティクルを跳ね返しても空中でフリーズすることはありません。

Only Vertical Normals Decrement Count

true の場合、垂直衝突の法線がない衝突にも反応しますが、MaxCollision 数の計算からは除外されます。これを使用すると壁からパーティクルを跳ね返し、床に静止させることが出来ます。

Vertical Fudge Factor

垂直方向を決定する float 値です。正確な垂直線は Hit.Normal.Z == 1.0f になります。これにより、[1.0-VerticalFudgeFactor..1.0] の範囲にある Z コンポーネントを垂直コリジョンとして数えることが出来ます。

Delay Amount

衝突のパーティクルをチェックする前に遅延させる時間です。値は EmitterTime を使用して取得します。パーティクル フラグの IgnoreCollisions は、更新中はパーティクルの RelativeTime が Delay Amount を超過するように設定されます。

Performance

Drop Detail

true の場合、WorldInfo の Drop Detail プロパティも true であればモジュールは無視されます。

Collide Only if Visible

true の場合、コリジョンはパーティクル システムがレンダリングされている場合にのみ起こります。

Max Collision Distance

パーティクルのコリジョンが起こる最長距離です。

Collision モジュールは、2 つのベクター (UsedDampingFactor とUsedDampingFactorRotation) と整数 (UsedMaxCollisions) をパーティクルのペイロードデータへ加算します。これらの値は、パーティクルごとにコリジョン情報を追跡する際に使用します。

以下の疑似コードは、コリジョン パーティクルの更新プロセスを説明するものです。

Determine the location of the particle.This is required due to the fact
that the actual location isn't calculated until after the Update call.
Determine the appropriate extent to use during the line check.
if (SingleLineCheck indicates collision)
{
    if (UsedMaxCollisions-- > 0)  // Still collisions available
    {
        Adjust the velocity and rotation based on the collision
        if (Applying physics)
        {
            Add an appropriate impulse to the hit object.
            (The Mass is grabbed from the distribution relative to the
                particle time.)
        }
    }
    else
    {
        Out of collisions for this particle
        Perform the appropriate action to take based on the CollisionCompletionOption
    }
}

iOS モバイル デバイスのパーティクル コリジョン

iOS モバイル デバイス用の VFX のパーティクル コリジョン モジュールを使用する際には、Min Desired Frame Rate を 30 FPS 以下になるように調節しておかないと、パーティクル コリジョンがワールドのオブジェクトを衝突できない可能性が高くなります。 アンリアル エンジン (UE4) のフレーム レートが 30 FPS より低くなると、UE はパーティクル コリジョンを無効にしてフレーム レートを 30 FPS 以上に保とうとするためです。 デフォルトでは OS プロジェクトは 30 FPS にロックされています。つまり、パーティクル コリジョンは最初は無効になるように設計されているのです。 UE4 iOS プロジェクトでこの事象が起こらないようにするには、[Project Settings (プロジェクト設定)] > [General Settings (一般設定)] > [Framerate (フレームレート)] を開きます。

[Framerate] セクションを開いたら、[Min Desired Frame Rate] を 25 FPS といった 30 FPS 以下に設定します。 次に、パーティクル エフェクト コリジョン モジュールの [Performacne (パフォーマンス)] セクションの [Drop Detail (詳細を省く)] オプションのチェックを外します。

Drop_Detail_CM_Box.png

Min Desired Frame Rate を変更し、[Drop Detail (省略を省く)] のチェックを外したら、 プロジェクトを iOS モバイル デバイスに再クックまたは再デプロイするとパーティクル コリジョンが機能しているか確認します。

Tags