4. 物理演算
UnityとUnreal Engineの物理演算について比較してみてみましょう。
物理演算の機能追加
物理的な材質を変えてみる
4. Unityの物理演算
4.1 物理演算機能の追加
Scene上にPlaneを追加してTransformをリセットします。さらにCubeを追加します。位置はPlaneから上に離れたところに置きます。
どこかをクリックすると画像は閉じます
CubeにRigidbodyコンポーネントを追加します。
どこかをクリックすると画像は閉じます
Playを実行すると、物理演算が考慮され、Cubeが落下することが確認できます。
どこかをクリックすると画像は閉じます
CubeにはデフォルトでColliderコンポーネントが追加されています。Colliderコンポーネントを無効化する方法は、コンポーネントを無効にするかコンポーネントを削除します。
どこかをクリックすると画像は閉じます
Colliderコンポーネントを有効にして、Colliderコンポーネントを3倍に拡大してみます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Playを実行すると、Colliderコンポーネントを3倍に拡大した状態でPlaneに着地していることが確認できます。
どこかをクリックすると画像は閉じます
親子関係のときの挙動について
親子関係のときの挙動について確認します。CubeのScaleを1に戻しておきます。Cubeの位置をリセットしておき、Planeを削除します。Rigidbodyコンポーネントを削除しておきます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
もう一つCubeを作成します。このCubeにはRigidbodyコンポーネントを追加します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
また、Cubeの子にSphereを追加して、Cubeに重ならない位置に移動させます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
ShaderはデフォルトのUniversal Render Pipeline/LitでBase MapがBlueのMaterialを作成します。
どこかをクリックすると画像は閉じます
位置をリセットしたほうのCubeにMaterialを追加します。
どこかをクリックすると画像は閉じます
Playを実行すると、全ての子オブジェクトを含めて一繋ぎの物体として扱われるのがわかります。
どこかをクリックすると画像は閉じます
子のSphereのSphere Colliderコンポーネントを無効化します。
どこかをクリックすると画像は閉じます
Playすると、物理演算は子オブジェクトのColliderコンポーネントを考慮していることがわかります。
どこかをクリックすると画像は閉じます
親子関係を無視して、子オブジェクトに物理演算を適用させるには、Sphere Colliderコンポーネントを有効化して、子オブジェクトにもRigidbodyコンポーネントを追加します。
どこかをクリックすると画像は閉じます
Playを実行すると、子オブジェクトに物理演算が働きます。
どこかをクリックすると画像は閉じます
4.2 物理的な材質を変えてみる
弾むボールを作ります。弾ませるためのPlaneを用意して、SphereをScene上に配置して、SphereにRigidbodyコンポーネントを追加します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Create > Physics MaterialでPhysics Materialを作成します。名前はBounceにします。Physic Materialは、物体の物理特性を変更するものです。BounceのInspectorでPhysics MaterialのBouncinessを1にします。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Dynamic Friction
動いている状態の摩擦
Static Friction
動いていない状態の摩擦
Bounciness
弾性
Friction Combine
物体間の摩擦処理の仕方 +
Averageは物体A(摩擦0)と物体B(摩擦1) AとBがこすれると摩擦が0.5かかる
Bounce Combine
物体間の弾性処理の仕方
SphereのSphere ColliderコンポーネントのMaterialにBounceのPhysics Materialを追加します。
どこかをクリックすると画像は閉じます
Playを実行すると、Sphereがボールのように弾んでいることが確認できます。Floor側はCollisionが何も設定されていないので減衰することも確認できます。
どこかをクリックすると画像は閉じます
PlaneのMesh ColliderコンポーネントのMaterialにSphereで追加したPhysics Materialと同じものを追加します。
どこかをクリックすると画像は閉じます
Playを実行すると、力が減衰しないBallの物理演算を与えたSphereができます。
どこかをクリックすると画像は閉じます
4. UEの物理演算
4.1 物理演算の機能追加
UEにも物理演算機能があります。
Place ActorsからCubeを選択します。
どこかをクリックすると画像は閉じます
ドラッグしてからレベル上にドロップします。Floorから上に離れたところに置きます。
どこかをクリックすると画像は閉じます
Cubeのワールドアウトライナの詳細パネルからPhysicsを表示して、Simulate Physicsをチェックします。
どこかをクリックすると画像は閉じます
Playを実行すると、物理演算が考慮され、Cubeが落下することが確認できます。
どこかをクリックすると画像は閉じます
Unityで言うところのColliderは、UEではCollisionという名前になります。
Collisionを無効化する方法は、詳細パネルのCollisionのCollision Presetsのリストから、「NoCollision」を選択します。
どこかをクリックすると画像は閉じます
Collision Presetsのリストは「Default」に戻しておきます。
UnityのようにCollisionを拡大してみます。対象のCubeの詳細パネルから、Box Collisionコンポーネントを追加します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
Unityと同じように、3倍拡大します。
どこかをクリックすると画像は閉じます
Playを実行すると、Box Collisionを追加した場合、Unityとは異なりすり抜ける挙動になることが確認できます。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
これは、Box Collisionの詳細パネルのCollisionのCollision Presetsのデフォルトが「OverlapAllDynamic」になっているためです。
どこかをクリックすると画像は閉じます
UnityのようにCollisionがPlaneに着地したような動きにするには、Box Collisionを選択してから、Collision Presetsを「BlockAllDynamic」に変えるとUnityと同じ挙動になります。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
親子関係のときの挙動について
親子関係をつくるには、アクターを作成する必要があります。コンテンツブラウザで右クリック > Blueprint Class をクリックします。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
アクターを選択します。
どこかをクリックすると画像は閉じます
作成したアクターをダブルクリックします。
どこかをクリックすると画像は閉じます
Add ComponentでCubeを検索します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
続けてCubeを選択した状態で、Add ComponentにSphereを追加します。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
CubeとSphereが重なっている状態なので、Sphereを選択してy軸に移動します。
どこかをクリックすると画像は閉じます
Unityで設定した内容と同じように、親のCubeの詳細パネルにある、PhysicsのSimulate Physicsをオフにして、子のSphereの詳細パネルにある、PhysicsのSimulate Physicsはオンにします。
実験のためFloorは削除して、下のCubeの色を変えます。
どこかをクリックすると画像は閉じます
Playを実行すると、Unityと同じように、全ての子オブジェクトを含めて一繋ぎの物体として扱われるのがわかります。
どこかをクリックすると画像は閉じます
どこかをクリックすると画像は閉じます
子のSphereのCollisionをNo Collisionに変更します。
どこかをクリックすると画像は閉じます
Playすると、Unityと同じように、Physicsは子オブジェクトのCollisionを考慮していることがわかります。
どこかをクリックすると画像は閉じます
親子関係を無視して、子オブジェクトに物理演算を適用させるには、子オブジェクトにもPhysicsをオンにします。
どこかをクリックすると画像は閉じます
Playを実行すると、Unityと同じように、子オブジェクトに物理演算が働きます。
どこかをクリックすると画像は閉じます
親オブジェクトのCollisionと子オブジェクトのCollisionの設定が異なると以下のようなメッセージが出力されていますので注意してください。
どこかをクリックすると画像は閉じます
また、UnityのようにPhysicsプロパティやCollisionプロパティを削除することはできません。
4.2 物理的な材質を変えてみる
Unityと同じように弾むボールを作ります。
図のようにSphereをレベル上に配置して、Physicsをオンにします。
UEでもPhysics Materialが作れます。
コンテンツブラウザ上で右クリック > Physics > Physics Materialを選択します。
どこかをクリックすると画像は閉じます
Pick Physical Material Classというウィンドウが表示されます。
どこかをクリックすると画像は閉じます
Physics Materialを選択してSelectを押します。
どこかをクリックすると画像は閉じます
Physics Materialがコンテンツブラウザ上に作成されます。
どこかをクリックすると画像は閉じます
Physics Materialをダブルクリックします。
どこかをクリックすると画像は閉じます
🔗 参考リンク
Unreal Engineデベロッパードキュメント
物理マテリアルのリファレンス
https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/Physics/PhysicalMaterials/Reference/
Friction
サーフェスの摩擦値です
Static Friction
※UEのバージョンによってはこの項目がない場合があります
Override Friction Combine Mode
接触している物理マテリアル間でどのように摩擦が組み合わされるかを変更することができます
Restitution
サーフェスがどの程度「弾む」かを表します
Restitution Combine Mode
物理マテリアルの反発をどのように組み合わせるかを調整します
Sphereをボールのように弾む物理演算を与えます。
以下のようにUnityと同じPhysics Materialを作成します。名前はBallにします。
どこかをクリックすると画像は閉じます
Sphereを選択して、詳細パネルのCollisionにあるPhys Material Overrideに、作成してBallのPhysics Materialを選択します。
どこかをクリックすると画像は閉じます
Playを実行すると、Sphereがボールのように弾んでいることが確認できます。Floor側はCollisionが何も設定されていないので減衰することも確認できます。
どこかをクリックすると画像は閉じます
また、ワールドアウトライナからFloorを選択して、詳細パネルのCollisionにあるPhys Material Overrideに、Sphereと同じBallのPhysics Materialを選択します。
どこかをクリックすると画像は閉じます
Playを実行すると、Unityと同じく、力が減衰しないBallの物理演算を与えたSphereができます。
どこかをクリックすると画像は閉じます
🔗 参考リンク
Qiita
Unreal Engine 4.24 でアクターに初速を与えたり、力を加えたりする
https://qiita.com/mml/items/e614b441438ac9788d81