同様の情報は、Dev Community サイトから映像形式で視聴できます。Chaos Destruction Overview のチュートリアルをご覧ください。
Chaos フィールド では、空間の領域を使用して物理シミュレーションのプロパティを制御します。主要なフィールドのタイプには、アンカー フィールド、ひずみフィールド/力場 (フォース フィールド)、スリープ フィールド/無効化フィールドの 3 つがあります。
アンカー フィールド は、シミュレーションの際に既存の ジオメトリ コレクション の一部を制限するコンストラクション ブループリントです。これらを使って、シミュレーションでの処理にかかわらず、ジオメトリ コレクションの特定の領域を固定したままにすることができます。
スリープ/無効化フィールド は、ボーン (破砕された構成要素) の速度が指定したしきい値を下回った場合にジオメトリ コレクションを静止します。スリープ状態のボーンは、シミュレーション時にアクティブなオブジェクトと接触した際に再び起動します。無効化されたボーンを再び起動することはできません。
ひずみフィールド/力場 (フォース フィールド) は、シミュレーション時にジオメトリ コレクションにひずみまたは線形速度を適用します。
Unreal Engine には事前にビルド済みの Chaos フィールドがいくつか備わっており、これらをそのまま使用することも、ブループリント エディタ で開いて変更することもできます。
これらを見つけるには、まず コンテンツ ブラウザ の [Settings (設定)] > [Show Engine Content (エンジンのコンテンツを表示)] をクリックします。
「Engine」 > 「Content」 > 「EditorResources」 > 「FieldNodes」 に行き、利用可能な Chaos フィールドを見つけます。
ジオメトリ コレクションを作成する
このセクションでは、ジオメトリ コレクションを作成して、フラクチャ (破砕) シミュレーション時に Chaos フィールドを使用する方法について説明します。
シーン内で スタティックメッシュ アクタ を選択して [Select Mode (モードを選択)] ドロップダウンをクリックし、[Fracture (フラクチャ)] を選択します。
これにより、メッシュを破砕するためのすべてのツールが含まれる [Fracture Mode (フラクチャ モード)] パネルが開きます。
[Generate (生成)] セクションで [New (新規)] をクリックし、新しい ジオメトリ コレクション を作成します。
このアセット タイプは コンテンツ ブラウザ 内に保存され、破砕メッシュの作成に使用されます。
(1) ジオメトリ コレクションを保存する ディレクトリの場所 を選択します。
(2) ジオメトリ コレクション アセットの名前を入力します。
(3) [Create Geometry Collection (ジオメトリ コレクションを作成)] をクリックします。
コンテンツ ブラウザ で [Save All (すべて保存)] をクリックし、新しいジオメトリ コレクション アセットを保存します。
シーン内で選択したアクタが、レベル内でジオメトリ コレクションに置き換わります。
ジオメトリ コレクションの作成に関する詳細については、「ジオメトリ コレクション ユーザー ガイド」を参照してください。
破砕ツールを使ってジオメトリ コレクションを破砕します。次の例では、Slice および Uniform Voronoi ツールを使って フラクチャ階層 に 4 つのレベルを作成しました。
ジオメトリ コレクションの破砕に関する詳細については、「ジオメトリ コレクションの破砕ユーザー ガイド」を参照してください。
アンカー フィールド
アンカー フィールドでは、シミュレーション時に、自身のボリューム内に含まれるあらゆるジオメトリ コレクション ボーンを スタティック の状態に設定します。
FS_AnchorField_Generic
をレベルにドラッグし、ジオメトリ コレクションの隅にそれを重ねます。
このジオメトリ コレクションを選択して [Details (詳細)] パネルに移動します。[Chaos Physics (Chaos 物理)] セクションまでスクロールして、[Initialization Fields (初期化フィールド)] 配列を展開します。Index [0] ドロップダウンをクリックして、リストから FS_AnchorField_Generic
を選択します。
[Clustering (クラスタリング)] セクションに行き、[Enable Clustering (クラスタリングを有効)] チェックボックスをオフにします。これは、ジオメトリ コレクションの破砕がよく示されるように、デモの目的で行う設定です。
プレイ モード メニューのボタンをクリックし、[Selected Viewport (選択ビューポート)] または [Simulate (シミュレート)] を選択して結果を表示します。
アンカー フィールドは、上記のステップで好きな数だけ追加できます。次の例では、ジオメトリ コレクションの右上隅にもアンカー フィールドが追加されています。
また、同じアンカー フィールドを複数のジオメトリ コレクションで同時に使用することもできます。次の例では、2 つのジオメトリ コレクションに 1 つのアンカー フィールドが使用されています。
アンカー フィールには、ボックス、球体、平面の 3 つの フォールオフ形状 があります。これらの形状は、スタティックに設定されるボーンの数とエフェクトの実装方法に影響を及ぼします。
フォールオフ形状を変更するには、まず対象のアンカー フィールドを選択して [Details (詳細)] パネルに移動します。[Default (デフォルト)] セクションまでスクロールして、[Anchor Falloff Shape (アンカーのフォールオフ形状)] ドロップダウンをクリックします。目的のフォールオフ形状を選択します。
次の例では、アンカー フィールドに 球体 (Sphere) 形状を使用しています。
次の例では、アンカー フィールドに 平面 (Plane) 形状を使用しています。
スリープ フィールドと無効化フィールド
スリープ フィールドと 無効化 フィールドは、剛体の速度が指定した しきい値 を下回った場合にその剛体を静止します。しきい値を高く設定すると、オブジェクトがより積極的に停止します。
これらのフィールドは、シミュレーションのパフォーマンスを向上させ、ジオメトリ コレクションの各構成要素が互いに衝突する際の過度なジッターを回避するために使用されます。また、これらを使うことで、シミュレーションの一部となる剛体の数をより細かく制御することができます。
スリープ状態のボディは、アクティブなオブジェクトと衝突した際に再び起動します。無効化されたボディは、静止ステートになった後にシミュレーションから完全に除去されます。無効化されたボディを再び起動することはできません。
このタイプのフィールドには、Sleep (スリープ) と Disabled (無効化) に加えて Kill (キル) オプションが備わっています。このオプションはしきい値を無視し、ボディのシミュレーションを即座に停止して、そのボディがフィールドのボリュームとオーバーラップしたときにシミュレーションから除去します。
FS_SleepDisable_Generic をレベル内にドラッグして、下の画像のように配置します。
[Details (詳細)] パネルに移動して、[Default (デフォルト)] セクションまでスクロールします。ここで、フィールドがエフェクトを適用する際に使用する [Threshold (しきい値)] の値を指定できます。また、ここでは [Field Behavior (フィールドの動作)] や [Field Falloff Shape (フィールドのフォールオフ形状)]、[Debug (デバッグ)] (デバッグ情報を表示するかどうか) も指定できます。
次の例では [Debug] オプションが有効になっており、2 つのジオメトリ コレクションを使ってスリープ フィールドのエフェクトを示しています。左側は しきい値 が「2」に設定されており、右側は「50」に設定されています。
ご覧のとおり、最初のオブジェクトがボリュームを追加するとスリープになりますが、2 つ目のオブジェクトと衝突すると再び起動します。しきい値を高く設定すると、ボディがより積極的にスリープするように設定されます。
次の例では 無効化 フィールドに切り替えました。左側のフィールドは しきい値 が「2」に設定されており、右側のフィールドは「200」に設定されています。
右側のジオメトリ コレクションが無効化された後に、互いに衝突しないことに注目してください。しきい値を高く設定すると、エフェクトがより顕著に現れます。
最後に、キル フィールドを使って、あらゆる剛体のシミュレーションを即座に停止します。左側はジオメトリ コレクションですが、右側は物理をシミュレートするスタティックメッシュを示しています。
マスター フィールド
はじめに
FS_MasterField
は Unreal Engine に装備されている事前ビルドされた Chaos フィールドです。このフィールドは 「Engine」 > 「Content」 > 「EditorResources」 > 「FieldNodes」 にあります。
このフィールドにはカスタマイズのためのオプションが多数含まれており、主に以下の目的で使用されます。
ボーン間の接続を切断する外部のひずみを適用して剛体を有効にする。
剛体に速度を適用して、それらを現実味のある形で動かしたりスピンしたりする。
次の例では、ジオメトリ コレクションと重なる部分にデフォルトの FS_MasterField
を配置しました。
このデフォルトのコンフィギュレーションでは、フィールドによって外部のひずみが大量に適用され、ジオメトリ コレクションが破砕します。次に、破砕された構成要素にフィールドによって視線速度と角速度が加えられ、構成要素がスピンします。最後にフィールによってノイズが適用され、エフェクトにランダム性が加わります。
結果は次のとおりです。
フィールドの形状は、[Field Falloff Shape (フィールドのフォールオフ形状)] ドロップダウンをクリックしてオプションを選択することで設定できます。
また、フィールドの適用方法についても、[Activation Type (アクティベーション タイプ)] ドロップダウンをクリックしてオプションを選択することで設定できます。
アクティベーション タイプ |
説明 |
---|---|
Delay (遅延) |
フィールドは [Delay Amount (遅延量)] で指定された時間の後に有効になります。 |
OnTick (ティック時) |
フィールドはそれぞれのティック時に有効になります。 |
OnTickWithDelay (遅延後のティック時) |
フィールドは、[Delay Amount (遅延量)] で指定された時間の後に (初回のみ)、それぞれのティック時に有効になります。 |
Trigger (トリガー) |
フィールドはブループリントで直接有効になります。 |
フィールドの 有効期限 は、[Details (詳細)] パネルの [Advanced Field Settings (高度なフィールド設定)] > [Timing and Lifespan (タイミングと有効期限)] セクションで設定できます。エフェクトを短期間にわたって適用する必要のあるフィールドを作成する場合に便利です。
これらの設定などの詳細については、後述のセクションで説明します。
外部のひずみ
外部のひずみ は、破砕されたジオメトリ コレクションでボーン間の接続を切断する要素です。フィールドの外部のひずみに関するオプションを変更するには、[Details] パネルの [Apply External Strain to Break Node Connections (外部のひずみを適用してノード間の接続を切断)] セクションに移動します。
オプション |
説明 |
---|---|
Use External Strain (外部のひずみを使用) |
有効にすると、割り当てられたジオメトリ コレクションにフィールドによって外部のひずみが適用されます。 |
Strain Magnitude (ひずみのマグニチュード) |
適用するひずみ力の強さ。この値は、適用するひずみ力でボーン間の接続を確実に切断できるように、デフォルトで非常に高く設定されています。ひずみ力がジオメトリ コレクションのダメージしきい値よりも低いと、ひずみによる破砕は生じません。 |
Strain Falloff Type (ひずみのフォールオフ タイプ) |
ボリューム内でひずみ力にフォールオフを適用します。選択できるフォールオフ タイプには [Linear (線形)]、[Inverse (逆数)]、[Square (矩形)]、[Logarithmic (対数)] があります。 |
Strain Falloff Min Max (ひずみの最小/最大フォールオフ) |
ボリュームの中心 (最小) からエッジ (最大) までのフォールオフ値を設定します。「0」の値ではフォールオフはなく、「1」の値では完全にフォールオフします。 |
Num Strain Hits (ひずみのヒット回数) |
フィールドが適用される回数を設定します。フィールドはヒットごとに一度有効になるため、あらゆる力が適用される前に、複数のヒットによって複数のクラスタ レベルを切断することができます。 |
ひずみのマグニチュード (Strain Magnitude)
次の例では、フィールドによってジオメトリ コレクションのダメージしきい値 (Damage Threshold) よりも大きなひずみが適用されているため、ボーンが切断されています。
次の例では 2 つの異なるジオメトリ コレクションを使用しています。青色のジオメトリ コレクションのダメージしきい値は「200,000」に、オレンジ色のジオメトリ コレクションは「500,000」に設定されています。このフィールドは、マグニチュードが「400,000」の内部のひずみを適用しています。この結果、青色のジオメトリ コレクションは破砕されますが、オレンジ色のジオメトリ コレクションはそのまま残ります。
ひずみのフォールオフ タイプとその最小/最大値 (Strain Falloff Type & Min Max)
ひずみのフォールオフ を調整するには、[Strain Falloff Type] ドロップダウンをクリックしてオプションを選択します。また、希望どおりの結果を得るために、最小フォールオフ値と最大フォールオフ値を設定することもできます。
次の例では、フィールドにはフォールオフが適用されていません。
次の例では フォールオフが線形 (Linear) で、最大 値が「2」に設定されています。
パフォーマンス上の理由で、フォールオフとともに外部のひずみを使用することはあまり推奨されていません。ただし、内部のひずみと組み合わせて特殊なエフェクトを表現する場合は、外部のひずみのフォールオフが役立ちます。
ひずみのヒット回数 (Num Strain Hits)
このオプションでは、ヒットごとに一度だけ、フィールドの外部のひずみを複数回実行します。ひずみは、破砕される要素に他の力が適用される前に適用されます。
この設定は、シミュレーションの際に他の力を適用する前に、ジオメトリ コレクションの複数の破砕レベルを切断したい場合に役立ちます。
次の例は、[Num Strain Hits] が「1」に設定されたフィールドを適用した場合の結果です。
次の例は、[Num Strain Hits] が「2」に設定されたフィールドを適用した場合の結果です。
内部のひずみ
「減衰」とも呼ばれる内部のひずみは、ジオメトリ コレクションの内部のダメージしきい値を変更する要素です。有効な場合は、減衰フィールドによってボリューム内のボーンのダメージしきい値が、[Decay Amount (減衰量)] で指定した値だけ下げられます。
これは、ジオメトリ コレクションを外部のひずみによって切断されるまで徐々に弱める場合に使用されます。
次の例では、[Activation Type] を [OnTick] に、[Delay Amount] を「1」秒に設定してあります。加えて、[Use Decay (減衰を使用)] チェックボックスをオンに、[Decay Amount (減衰量)] を「100,000」に、[Decay Delay (減衰の遅延)] を「1」秒に設定しました。
ジオメトリ コレクションの [Damage Threshold] は「500,000」です。
これらの設定により、エッジに向かうフォールオフとともに、ボリューム内にあるボーンのダメージしきい値が毎秒 100,000 ユニット分下がります。結果は次のとおりです。
剛体を有効にする
ときには、ひずみを使わずにキネマティック剛体を有効にしたい場合があります。
これを行うには、[Field Settings (フィールド設定)] の [Advanced Field Settings (高度なフィールド設定)] > [Force Dynamic Switching] セクションに行き、[Force Dynamic Switch (動的スイッチを強制実行)] チェックボックスをオンにします。
次の例では、ジオメトリ コレクションが Kinematic (キネマティック) に設定されており、フィールドによってひずみやベロシティ (速度) を適用することなくこのジオメトリ コレクションが有効になっています。
また、[Activate Tagged Static and Skeletal (タグ付けされたスタティックメッシュとスケルタルメッシュを有効化)] チェックボックスをオンにして、スタティックメッシュ と スケルタルメッシュ を有効にすることもできます。
有効にする各メッシュに、[Mobility (可動性)] を [Movable (可動)] に設定して ‘SM_Rigids' アクタ タグ を追加します。加えて、正しくシミュレートされるように、メッシュにコリジョンが設定されていることを確認します。
ベロシティ (速度)
視線速度
視線速度は、空間内の一点からオブジェクトを指定した量だけ遠ざけます。この点はデフォルトでボリュームの中心にありますが、ユーザーはこれを変更できます。
次の例では、視線速度が球体ボリュームの中心に適用されています。
視線速度の原点を変更するには、[Advanced Field Settings] > [Velocity Controls (ベロシティの制御)] セクションにある [Radial Position Offset (放射位置オフセット)] を変更します。次の例では、原点を Y 軸方向に 100 ユニット分オフセットしています。結果として、次の画像のように視線速度が球体ボリュームのエッジ部分から適用されます。
また、[Apply Linear and Angular Velocities (線形速度と角速度を適用)] セクションの [Use Directional Vector (指向性ベクターを使用)] チェックボックスをオンにして、ベロシティを特定の方向に適用することもできます。
次の例では、[Directional Magnitude (指向性マグニチュード)] が「800」に設定された上方向のフィールド ベクターを適用しています。
フィールドを回転するとベロシティの方向が変わります。次の例では、フィールドを回転してベロシティの方向を変えています。
指向性ベクターを手動で入力することもできます。これには、まず [Advanced Field Settings] > [Velocity Controls] セクションにある [Override Directional Vector (指向性ベクターをオーバーライド)] チェックボックスをオンにします。次に [Directional Vector Override (指向性ベクター オーバーライド)] の値をそれぞれ入力します。
角速度
角速度を適用するには、[Apply Linear and Angular Velocities (線形速度と角速度を適用)] セクションの [Use Torque (トルクを使用)] チェックボックスをオンにします。適用するベロシティのマグニチュードを制御するには、[Torque Multiplier (トルク乗数)] の値を設定します。
次の例では、[Torque Multiplier] が「64」に設定されています。
力 (フォース) とベロシティ
FS_MasterField
には、ボリューム内に力またはベロシティを適用するオプションがあります。フィールドではデフォルトでベロシティが適用されます。これによって、オブジェクトの質量やボリュームを考慮することなく、そのベロシティ (速度) が指定された値に明示的に設定されます。
力の適用ではシミュレーション時に各オブジェクトの質量が考慮されるため、より現実的なものとなります。ジオメトリ コレクションの質量を調整するには、コンテンツ ブラウザ から ジオメトリ コレクション アセット を開いて [Collision (コリジョン)] セクションに移動します。[Mass (質量)] に希望の値を入力します。
ジオメトリ コレクションを使用する場合、フィールドでは [Physics (物理)] セクションの [Mass] の値を使用しないことに注意してください。代わりに、ジオメトリ コレクション アセット自体の設定のみが考慮されます。
力をスタティックメッシュまたはスケルタルメッシュに適用する場合は、[Details] パネルを [Physics] セクションまでスクロールして、オブジェクトの質量を設定します。[Simulate Physics (物理シミュレーション)] をオンにして、[Mass] に値を入力します。
次の例では、左側のフィールドではベロシティを適用し、右側のフィールドでは力を適用しています。それぞれのフィールド内には、質量が「500」キログラムと「1000」キログラムの 2 つのオブジェクトがあります。
ベロシティを適用しているフィールドでは、それぞれの質量が異なっていても、両方のオブジェクトが同じようにジャンプしています。一方で、力を適用しているフィールドでは、両方のオブジェクトに同じ量の力が適用されていても、それぞれが異なる動きを見せています。
フォールオフ
FS_MasterField
には、ボリューム内に適用されているベロシティのフォールオフを制御するためのさまざまなオプションがあります。フォールオフのタイプは、[Apply Linear and Angular Velocities] セクションの [Velocity Field Falloff Type (ベロシティ フィールドのフォールオフ タイプ)] ドロップダウンで変更できます。
ベロシティ フィールドのフォールオフ タイプ
フォールオフのタイプ |
説明 |
---|---|
None (なし) |
フィールドにフォールオフ関数は適用されません。 |
Linear (線形) |
フォールオフ関数は X に比例します。X は、ボリュームの中心からそのエッジまでの距離を表します。 |
Inverse (逆数) |
フォールオフ関数は 1 / X に比例します。X は、ボリュームの中心からそのエッジまでの距離を表します。 |
Squared (2 乗) |
フォールオフ関数は X * X に比例します。X は、ボリュームの中心からそのエッジまでの距離を表します。 |
Logarithmic (対数) |
フォールオフ関数は Log(X) に比例します。X は、ボリュームの中心からそのエッジまでの距離を表します。 |
Linear (線形) のフォールオフ タイプを使用する場合、フィールドでは最大ベロシティをフィールドの中心に適用し、フィールドのエッジで最小ベロシティになるように、ベロシティを徐々にフェードします。
次の例では、フィールドの [Minimum Velocity Falloff (最小ベロシティ フォールオフ)] が「0」に、[Maximum Velocity Falloff (最大ベロシティ フォールオフ)] が「1」に設定されています。
フォールオフの最大値と最小値を調整することで、異なるエフェクトを作成することができます。たとえば、次の例ではフィールドの 最小フォールオフ の値が「-1」に、最大フォールオフ の値が「0」に設定されています。負の値を設定すると、オブジェクトが遠ざかるのではなく、中心に向かって引き寄せられます。これによって次のようなエフェクトになります。
また、最小フォールオフと最大フォールオフの値をそれぞれより大きな整数値に設定することで、ボリューム内にリング エフェクトを作成できます。次の例では、最小 フォールオフ の値が「-1」に、最大フォールオフ の値が「1」に設定されています。
ノイズ
FS_MasterField
には、ボリューム内に適用されているベロシティと力にノイズを加える機能が備わっています。ノイズにより、フィールド内でオブジェクトに適用される、本来は予測可能なベロシティにランダム性が加わります。
フィールドにノイズを加えるには、[Details] パネルの [Noise (ノイズ)] セクションにある [Use Noise (ノイズを使用)] チェックボックスをオンにします。フィールド内でベロシティに対して乗算されるノイズの最小値と最大値を設定できます。さらに、ランダム性の作成に使用される Perlin ノイズをスケールする [Noise Scale Multiplier (ノイズ スケール乗数)] を設定することもできます。
次の例では、ボックス フィールドによってティック時にノイズなしのベロシティが適用されています。
次の例では、最小ノイズ の値が「0.8」に、最大ノイズ の値が「1」に設定されたベロシティが、ボックス フィールドによってティック時に適用されています。[Noise Scale Multiplier] は「30」に設定されています。