【Unity】LODグループとコライダーを併用する

投稿者: | 2021-06-03

LODグループコンポーネントを使って、詳細さの違うメッシュをまとめたオブジェクトにコライダーとRigidbodyを付けてみました。

HDRPのサンプルシーンの床や天井に設置されたライトでは、LODグループコンポーネントを付けたオブジェクトに、各レベルのメッシュがついたオブジェクトが含まれています。

その中には、コライダー用のオブジェクトもあります。

このオブジェクトにはメッシュレンダラーがなく、メッシュフィルターとメッシュコライダーだけが付いています。

メッシュコライダーのMeshには、LOD3よりもポリゴン数の少ないメッシュがアタッチされています。

LODグループを付けたオブジェクトにメッシュコライダーが追加されている場合もあります。

この場合は、メッシュコライダーのために、コライダー用のメッシュでなく、LOD2のメッシュが使われていました。

このようなオブジェクトのセットを、Blenderの猿のメッシュから作ってみました。

Blenderでメッシュのポリゴン数を減らす

まず、Blenderでシフトキー + Aから、Monkeyのメッシュを追加しました。

これに、プロパティからモディファイアを付けます。

Decimateモディファイアで簡単にポリゴン数の少ないメッシュを作れます。

このメッシュの場合、Symmetryのチェックを入れて、X軸に沿って、左右対称に変更を加えるときれいにポリゴン数を減らせました。

オブジェクトモードでオブジェクトを複製し、Ratioを少し下げてポリゴン数の少ないオブジェクトを作りました。

カメラのアイコンの横のプルダウンからApplyをクリックして適用できます。

もとのオブジェクトをもう一度複製して、Ratioをもっと下げたメッシュも作ります。

詳細さに応じて、LOD0~2と名前を変更します。メッシュを変更していないものを「LOD0」、ポリゴン数のもっとも少ないものを「LOD2」にしました。

さらに、Cubeのメッシュを変形して、コライダー用のメッシュも作りました。

これらをFBX形式でエクスポートしました。

UnityでLODグループを付ける

FBXファイルをUnityでインポートしてシーンに配置すると、これらの4つのオブジェクトが、ルートの空のゲームオブジェクトの子になっているのがわかります。

このルートのオブジェクトに「Add Component」ボタンからLODグループコンポーネントを追加します。

そして、LOD0用のオブジェクトを、LODグループコンポーネントの「LOD0」に、LOD1用をLOD1に、とドラッグアンドロップします。

LOD0~2を設定したら、それらの境界をドラッグして、各メッシュが表示される距離の範囲を変更できます。

コライダーを付ける

LODグループを付けたオブジェクトにメッシュコライダーも付けました。

メッシュコライダーにコライダー用のメッシュをアタッチします。コライダー用に作ったオブジェクトを選択してインスペクタを見ると、メッシュフィルターコンポーネントに、コライダー用のメッシュが設定されています。

Projectウィンドウを表示させているときにこの欄をクリックすると、Projectウィンドウでこのメッシュがハイライトされます。

これを、ルートのメッシュコライダーのMeshにドラッグアンドロップします。

コライダー用のオブジェクトのメッシュレンダラーコンポーネントを削除すると、このメッシュは見えなくなります。オブジェクトを削除しても問題ありません。

これで、距離が最も近いときにポリゴン数の最も多いメッシュ、最も遠いときに最も少ないメッシュが表示されます。

LOD0
LOD1
LOD2

その間、各レベルで同じメッシュコライダーが使われています。

リジッドボディを付ける

LODグループとメッシュコライダーに加えて、ルートにリジッドボディコンポーネントも追加しました。Use Gravityのチェックが入っていて、Is Kinematicのチェックが切れていることを確認します。

リジッドボディをメッシュコライダーと併用するときは、メッシュコライダーのConvexにチェックを入れます。

これで、LODグループとコライダー、リジッドボディを併用できました。

LODが自動で切り替わってもコライダーは変わらず、猿のオブジェクトは地面と衝突したり転がったりしています。

ルートでなく、コライダー用のオブジェクトにメッシュコライダーとリジッドボディを付けた場合、コライダー用のオブジェクトだけが落下しました。

コメントを残す

メールアドレスが公開されることはありません。