[UE4ぷちコン 映像編3rd]振り返り:Chaos Physics
ここは[UE4ぷちコン 映像編3rd]振り返りの子頁です。
概要
映像Projectならまず挙動安定化設定をしよう
破壊Fieldの使い方あれこれ
結局は地道な積み重ね
参考資料
最近alwei先生によるUE5版での解説とサンプル配布が行われた。興味を持った方はまずそちらで遊ぶことをオススメ。
その他の資料は、[第16回UE4ぷちコン]振り返り:Chaos Physicsを参照されたい。
物理挙動を安定化する設定
4.27Chaos(4.27.2)での設定である点に注意。UE5以降では設定名が違う場合があるかも。
Framerate固定化
映像Projectなら必須かも。EditorでPlayした際の物理挙動をSequencerからの映像出力時に近づける事ができる。再現性も非常に改善する。
Movie Scene CaptureあるいはMovie Render Queueで出力する際に指定するFramerateに揃えればOK。
これやっとかないと8時間かけたレンダリング後に物理挙動が思てたんと違うとかなる。なった。
Substepping有効化
シミュレーションの精度向上とField Systemの安定動作のために必要。
想定しているFramerateのdelta timeの半分を指定しておけばよいだろう(1frameで2step以上計算するように仕向ける)。
別に固定FPSだけで良さそうだが、自分の環境だと、毎frame適用しているTransient Fieldによる外力が無視される事があった。つまり8時間かけたレンダリング後に物理挙動が昨日見たんと違うとかなる。なった。
破壊用Field Actor
公式サンプルだとStrike Fieldとか呼ばれるアレ
ちょっとした改造で使いやすくなるので紹介
親ClassはField System Actor
Sphere
破壊効果破範囲の可視化用
半径50m(Basic ShapesカテゴリのSphere)
Collision PresetはNo Collision
Hidden in Game
Auto Activate変数でSpawn時にいきなり破壊するか選択できるように
SequencerからActivateを呼べば、任意の時間で破壊ができる
Activate関数もほぼサンプル通り
Linear Forceを付与する際、Actor正面向きかActor中心周状かをbool変数で選べるようにしている
瞬間的な速度を付与したい場合に備え、Physics TypeをLinear Velocityにするのも良いかも
Geometry Collection以外の物理オブジェクトもField Systemで動かせる
↑のシーンでは顔がでかくなる瞬間にダンボール群のSimulate PhysicsをTrueにしている
それと同時に、顔の位置に仕込んだ破壊ActorのActivateを呼んで箱を押している
椅子に確実にヒットさせるために、1個だけSequencer制御の箱が混じっている
Repeater Event TrackでActivateを呼び続けながら破壊ActorのScaleを拡大していくとなんか圧倒的破壊空間の小宇宙になる
これをやる時、先述のSubstepping設定をしておかないと、継続的な加速度の適用が途切れるframeが出てくる
Game側のdelta timeを物理側が考慮する時、まるまる1frame待つみたいな挙動になっている??
物理オブジェクトが完全停止するわけではなく、Transient Fieldの適用だけ止まるっぽくて謎
繰り返すが4.27Chaosでの挙動なので、UE5では異なるかもしれない点に注意
External ForceとDamage Threshold
Geometry CollectionのDamage Thresholdと等しいExternal Forceを与えると破壊が発生する
Geometry Collection同士が衝突した際もDamageが生ずる
Damage Thresholdが低すぎると、小さな破片がぶつかるだけで破壊される
Damage Threshold=2.0の壁とExternal Force=1.0の力場で実験すると破壊は起きない
そこからExternal Force=2.0にすると、破壊Fieldの範囲に関係なくGeometry Collection全体が砕ける
最初は破壊Field内だけで発生した破片が、接触していた未破壊の破片に触れ、Damage Thresholdが超低いのでそれも即破壊という連鎖が発生している模様
サンプルを参考に、そこそこ大きな値にしておいた方がよい
例えばこの部分はDamage Thresholdの差を利用している
左側の壁がGeometry Collectionで、グレイマンがぶっ刺さるところ
小さい球が刺さった部分だけ砕くための破壊Actor
ガチガチの設定(Damage ThresholdとExternal Forceが1000000.0)
小さい球と接していない場所に破壊は波及しない
ムカつく看板全体はDamage Threshold=1.0のよわよわ設定
大きい球もExternal Force=1.0
大きい球がグレイマンぶっ刺し用の壁を含んでいるが、破壊せずに済む
ちなみにDamage Threshold=1.0はやめといたほうがいいかも
手前側でビーム撃つ人が地面に刺さる事故が起きるが、飛び散った地面の破片で看板が壊れることがあった
破片の飛ぶ方向を制御して回避したが不確実ではある
地味な仕込み
Disable Field。映像Projectなら負荷を気にしなくていいし不要かと思いきや、これがないと床で回転し続けたりしちゃう。Threshold=100で設定した。
使用したオフィスのアセットは床モデルがめっちゃ薄いというか表面しか無いので、Blocking Volumeで破片やダンボールが埋まらないようにしている。
だが、積み上がったダンボールの下に仕込むの忘れてて実は何個か埋まってる(確認してみよう!)。審査員のみんなには内緒だ!
所感
Chaos道は長く険しい…
挙動安定化する設定したの実は締め切り4日前ぐらい
👺✋💥
一瞬だけforceかける分には問題ないので気が回らなかった
広がる破壊で継続的にforceをかけてみて初めて気づいた
焦った
既に満身創痍だ(締切と体力的な意味で)
設定に気づけたのは物理挙動を自作した経験のおかげかも
結局、地道な仕込みの積み重ねという事もわかってきた
VFX制作の講演など参考に、効率よく仕込んでいけるようになりたい
映像ProjectだとLevel-Setな破片を遠慮なく使えるのは良い!
けど展開が早すぎて別にコレBox判定でもよくね感もある
最後の広がる破壊とか、Niagaraでもできそうじゃね?
床がゆっくり破片になっていく様を見せる時以外は、Disolve系のテクニックでも行けそうではある
逆にいえば、そういうテクが必要な所を計算力でゴリ押せるのがChaosという事でもあるか
まぁリファレンス自体は必要
必要に応じてBoxにしたりLevel-Setにしたり、UE内で完結するのは本当に有難い
みなさんも…やりましょうね!