【UE5】物理マテリアルの設定箇所の違いと適用優先度を調べてみた
こんにちは、情熱開発部プログラム3課の課長補佐の今井です。
暑さが落ち着いたと思ったら激しい雨が降ったりと落ち着かない天気が続いていますね。
早く過ごしやすい季節になることを祈るばかりです。
さて、今回ブログのテーマに選んだのは物理マテリアルです。
UE5を触ったことがある方なら、一度は聞いたり、触れたりしたことがあるのではないでしょうか。
どのようなアセットなのかも併せてみていきましょう!
※使用バージョン
Unreal Engine:5.7.4
物理マテリアル(Physical Material)とは
UE5の物理マテリアルとは、その物体が物理的にどのような性質を持つのかを設定するためのアセットです。
例えば、Friction(摩擦)やRestitution(反発)などパラメータに値を設定することで、物体の滑りやすさや跳ね返り方といった物理的な挙動を変えることができます。
動画のように地面を滑るオブジェクトも物理マテリアルを利用することで簡単にスケートリンクのようなステージ環境を作成することができます。
設定方法
具体的な実装方法について、コンテンツブラウザから「物理」→「物理マテリアル」を選択して物理マテリアルアセットを作成してアセット名を「PM_Ice」に変更します。

作成した「PM_Ice」Friction(摩擦)のパラメータを「0.0」に設定して保存します。

「PM_Ice」をレベルに配置したCubeと地面のFloorの「Phys Material Override」の項目に設定すれば完了です。


たったこれだけで動画のような挙動のものを実装することができます。
接しているCubeとFloorの間に摩擦がほとんどないため、止めることが困難なほど滑ります。
さて、せっかくなので氷のようなマテリアルを作成して、よりスケートリンクのように見えるようにしてみたいですよね?
さっそく氷用のマテリアルを作成してみます。
すると、マテリアル側にも物理マテリアルを設定する箇所が存在しています…

一体ここに設定する物理マテリアルは先ほどメッシュコンポーネント側で設定した物理マテリアルとどう違うのか、この他にも物理マテリアルを設定する箇所があるか、次の項目で見ていきましょう。
物理マテリアルの設定箇所について
エディタから設定できる物理マテリアルの設定箇所について、洗い出すと大きく6箇所から設定できます。
①Materialで設定

②Material Instanceで設定

③Static Meshで設定

④Physics Assetで設定

または↓の箇所でも設定可

⑤Physics Asset各ボディ単位で設定

⑥Mesh Componentで設定

これだけ設定箇所があると、どこに物理マテリアルを設定すればいいか迷ってしまいますね。
また、設定項目に「Simple Collision」というワードが含まれておりさらに混乱されるかもしれません。
Simple Collision、Complex Collisionについて
設定項目名にあった「Simple Collision」については、Collision Complexity (コリジョンの複雑度)のことです。スタティックメッシュエディタの「詳細」→「コリジョン」→「Collision Complexity」から設定変更できます。

公式ドキュメント:Simple コリジョンと Complex コリジョン
簡単にまとめると当たり判定に、Simple Collisionは単純なコリジョン、Complex Collisionは複雑なコリジョンを利用します。
つまり、「Simple Collision Physics Material」に設定した物理マテリアルは、Simple Collisionを使用している場合に適用されます。
そのため、対象のメッシュの「Collision Complexity」が「Use Complex Collision As Simple」に設定されている場合、Simple Collisionは使用されないため、「Simple Collision Physics Material」に設定した物理マテリアルも適用されません。
物理マテリアルの適用優先度について
さて次は物理マテリアルの適用優先度を確認していきましょう。
検証方法
確認準備として以下のような物理マテリアルを2つ用意しました。
・PM_Ice Friction 0.0
・PM_Rubber Friction 2.0
この値は現実的な値ではなく確認に設定した極端な値になります。
そして最初の動画のCubeに設定されているマテリアルの①Materialの箇所にPM_Iceを②Material Instanceの箇所にPM_Rubberを設定してみます。
さて、これでどちらの物理マテリアルが適用されるでしょうか。
想像しながら動画を再生してみてください。
滑らなくなりましたね!これで②Material Instanceの箇所で設定したPM_Rubberが適用されていることがわかりました。今回はMaterialとMaterial Instanceの関係からMaterial Instanceの優先度が高いことが想像できたかもしれません。
結果
このようにして、同時に複数個所で物理マテリアルを設定するとどの物理マテリアルが優先されるのかを調査したところ下の図のようになりました。

数字は「物理マテリアルの設定箇所について」の項目で記載した数字に合わせています。
大まかにコンポーネント→メッシュ→マテリアルの順の設定優先度になっていることがわかります。
図にするとわかりやすいですね。
まとめ
物理マテリアルが効いていないと感じたときは設定した箇所よりもさらに上書きされる設定箇所に物理マテリアルを設定している場合があります。
「この車のモデル、タイヤのマテリアルに物理マテリアルを設定したのに効いていない!」と感じたときは車のモデルのメッシュコンポーネントなどで物理マテリアルを設定しているか確認してみてください。
最後に
物理マテリアルについて、触りにくいアセットかもしれませんが滑る床の実装など簡単な実装から始めてみると楽しく感じると思います!ぜひ物理マテリアルを採用してみてくださいね。
参考文献
・UE4 PhysicalMaterialの設定と取得についてのメモ
・物理マテリアルのユーザーガイド
【免責事項】
本サイトでの情報を利用することによる損害等に対し、
株式会社ロジカルビートは一切の責任を負いません。