アルゴンUE4/UE5&アプリ開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE4】Chaosフィールドシステムの種類や動作について

はじめに

この記事はUnreal Engine 4 (UE4) その3 Advent Calendar 2020

25日目ラストの記事になります。

qiita.com

私の方からはChaosのフィールドシステムについて書いていきます。

UE4.26のgithubからの接続してエンジンビルドしたものを使用しています。

※新しく追加されたUE4.26Chaosではビルドしなくても同様のことが行えます。

※長々と説明していますが間違いやミスなどがあるかもしれないのでご注意ください。

Fieldシステムとは

FieldシステムとはGeometryCollection(Chaosの破砕表現を行うもの)に対して、

力を加えて破砕したり、剛体の制御のONとOFFなどの設定を行います。

Fieldシステムのプロジェクトは公式でサンプルも紹介されています。

www.unrealengine.com

主に設定するFieldシステムや応用方法などを紹介していきます。

プラグイン設定とGeometryCollectionの準備

Fieldシステムの設定については、

プラグインからFieldSystemをONにします。

プラグインの設定

プラグインの設定

プラグインを設定したら破砕させるための、

GeometryCollectionを作成していきます。

UE4.26のChaosプレビューでの設定方法になります。

破砕させたいモデルを選択して、モードのフラクチャを選択します。

モードからフラクチャを選択

モードからフラクチャを選択

選択すると様々なタブを選択できるようになるので、

Generateで新しいGeometryCollectionを作成します。

GeometoryCollectionの作成

GeometryCollectionの作成

Fractureタブを選択してモデルデータをどう分割するか選択します。

今回は一様化を選択します。

※以前までChaosと表示が実は変更されていて、

 左端上段のビュー設定と呼ばれる個所に変更されています。

一様化でのフラクチャ

一様化でのフラクチャ

実際にShow Bone Colorという左上のチェックを入れると実際に、

どのように分割されているかがわかります。

分割された結果

分割された結果

これで破砕するデータの作成は完了です。

AnchorFieldやClusterStrainについて

まずよく使うAnchorFieldやClusterStrainについて紹介します。

AnchorFieldはGeometryCollectionを固定するために使用します。

ブループリントの作成から、FieldSystemActorを選択して作成します。

FieldSystemActorの選択

FieldSystemActorの選択

作成したらFieldとなる領域やどこに配置しているか

分かりやすいようにキューブも配置します。

※わかりやすくするために半透明のマテリアルを指定してます。

各種コンポーネントと表示

各種コンポ―ネントと表示

それからFieldシステムを使用する際は必要なコンポーネントの、

CullingField・BoxFalloff・UniformIntegerを使用します。

CullingField → Field情報やCullingをFieldのコンポーネント

BoxFalloff → 力場の形状や減衰方法の指定

UniformInteger → Field内での影響状態を指定

それではそれぞれの設定についてそれぞれ説明していきます。

BoxFalloffではboxの形状や減衰方法や強さなどを指定します。

力場も種類があり主にBox・Plane・Sphereの種類があります。

BoxFalloff・PlaneFalloff・SphereFalloff3種類です。

BoxFalloffの設定

BoxFalloffの設定

それから先ほど指定したSetBoxFallOFF内の状態を指定します。

Magnitudeの数値に合わせていきます。

0がSleep状態でそれ以外の場合は動作します。

1:kinematick 2:Static 3:Dynamic 4:UserDefinedになります。

今回はstaticを指定しています。

Fieldの設定

Fieldの設定

あとはCullingFieldコンポーネントに各情報を設定していきます。

CullingにBoxFalloffの設定を接続して、

FieldのところにUniformIntegerを指定します。

※OperationでInsideとOutsideを指定できます。

 内側と外側にそれぞれ指定できます。

カリングの設定

カリングの設定

先ほどのCullingFieldの情報をFieldに追加してあげれば完了です。

※Enable:その設定を適応するかどうか

※Target(青色の方):FieldSystemComponentを指定します。

※Target(緑色のピンの方):どういった動きを行うかを指定します。

     今回はUniformalIntegerで指定したStaticを指定しているため、

     DynamicStateを指定してその状態を使用しています。

FieldにCullingFieldの情報を適応する。

FieldにCullingFieldの情報を適応する。

全体のBPは下のような画像になります。

AnchorFieldの全体像

AnchorFieldの全体像

実際にアンカー用のフィールドを配置するとこのような形になります。

一番左の半透明の黄色いフィールドがアンカー用のフィールドです。

アンカーフィールドで固定されている左端の物体は落下しません。

 固定する場合もあれば一部を破壊したい場合や、

力を加えたい場合もあります。

その場合は先ほどのAddFieldCommandのTargetを

「ExternalClusterStrain」を選択してあげます。

ExternalClusterStrainを使用した場合のブループリント

ExternalClusterStrainを使用した場合のブループリント

実際に動かしてみると上の箇所の一部が崩れ落ちるような形で、

破砕されていくのがわかるかと思います。

AnchorとClusterStrainについては以上になります。

Fourceについて

先ほどExternalClusterStrainについて説明したかと思いますが、

方向や領域の設定をFieldに付与することで放射上に、

GeometryCollectionに対して力を加えることが可能だったりします。

※細かい物理演算を行う場合などには

 制御を付与して実装していく仕組みかと思います。

 まずひずみを与える球状の力場を指定します。

球場の力場の設定

球場の力場の設定

続いて球状に内側から放射上に力を加えるための演算を設定します。

RadialVectorで方向を指定して、
位置をSetRadiaFalloffで球体の情報を指定します。

RadialVectorとRadialFalloffの情報を元にField情報に演算

RadialVectorとRadialFalloffの情報を元にField情報に演算

全体的なBPはこのような形になります。

Forceの全体のBP

Forceの全体のBP

実際に動かしてみると爆発するように吹き飛んでいきます。

※青い球体のところから外側に向けて力が発生していきます。

Forceの説明は以上になります。

Sleep・Disable・killについて

先ほどまではAnchorなど動作を行うFieldでしたが、

SleepingやDisableでシミュレーションを停止できたりもします。

Blueprintとしての変更は「AddphysicsField」のTargetを、

「SleepingThreshold」または「DisableThreshold」に変更するだけです。

SleepingThresholdのBP

SleepingThresholdのBP

SleepingThresholdについてはその領域内で敷地を超えた場合に、

活性化してそのあともシミュレーションが行えます。

DisableThresholdはSleepingと同様のBPでTargetを変更しただけです。

DisableThresholdのBP

DisableThresholdのBP

実際に動かしてみるとSleepingの方では落ちた後にも

シミュレーションを行っていましたがDisableは行わなくなります。

※音が出ますご注意ください!!!

killもsleepingやDisableと同じように設定できます。

killの場合はシミュレーションをしないので、物体が通り抜けていきます。

これでSleepやDisable・Killなどのフィールドの説明は以上になります。

参考にしたサイトなどの紹介

 最後に参考にしたサイトを紹介します。

公式のドキュメントにはジオメトリコレクションについても、

細かく書かれているので参考にさせていただきました。

Chaos Destruction の概要 | Unreal Engine Documentation

あと海外の方でいろいろ動画を出している方もいますのでおすすめです。

※英語が苦手な方はyoutubeの自動翻訳もおすすめです。

Unreal Engine 4 - Chaos Destruction Basics - YouTube