StaicMeshEditorSubsystemのMergeStaticMeshActorsでマージしたStaticMeshAcotrのStaticMeshのComplex Collisionが存在していなかったので調査対応してみた内容を記録しておきます。
環境
UE5.3
MergeStaticMeshActorsを使うとComplex Collisionが消える
Dataprepを使って3Dデータを取り込む際に、StaicMeshEditorSubsystemのMergeStaticMeshActorsを使ってアクタをマージしています。
しかし、マージされたアクタのStaticMeshにおいてComplex Collisionが存在しないようになっています。
(Editor上でStaticMeshを確認してShowでComplex Collisionを確認しても何もなく衝突も発生しない)
原因
MergeStaticMeshActorsOptionsのMeshMergingSettingsのLOD Selection TypeでCalculate Content LOD levelを選択していたのが原因みたいです。
Use all LOD levelsにするとComplex Collisionが存在していました。
ただ、Calculate Content LOD levelを選択していないとMeshMergingSettingsのMerge Materialsのオプションがチェックしてあってもマテリアルが統合されません。
MeshMergingSettingsのMerge Physics Dataが関係あるかと思ったんですがSimpleCollisionにしか関係しなさそうです(チェックするとSimpleCollisionが生成される)。
ここら辺詳しい仕様が書かれたドキュメントや情報をみつけられておらずコードも読みこめていないので何でそうなるといったような部分は全然把握できていません。
対応
対処療法ですが、MergeStaticMeshActorsでLOD Selection Typeオプションを変えて表示用のモデル(LOD Selection Type:Calculate Content LOD level、Merge Materials:true)とコリジョン用のモデル(LOD Selection Type:Use all LOD levels)2つを用意してコリジョン用のモデルをHidden in Gameに設定することで非表示にして対応しました。
マージされたStaticMeshをfbxでエクスポートして新たなアセットとしてインポートするとComplexCollisionはあったので手動ならそういう対応もできるみたいです。
もっといい方法があったら知りたいです。