ご返答ありがとうございます。
「InstancedSkinnedMeshComponentのHLODビルド処理」に関して、追加でご質問させていただきます。
現在のプロジェクトはUE5.7を使用しており、Nanite Foliageでは「Procedural Actor Foliage Base」を継承したBlueprintを配置し、InstancedSkinnedMeshComponentを管理しています。
配置方法には以下の2パターンがございます。
- Blueprint Actorとして直接Outlinerに配置する方法
- Foliage Mode経由(アクターフォリッジ)で配置する方法
Blueprint内のコンポーネント構成は下記の通りです。
Procedural Actor Foliage Base
├─ DefaultSceneRoot
├─ InstancedSkinnedMeshComponent (Nanite Foliage用)
├─ InstancedStaticMeshComponent (Nanite Foliage未使用時の通常Static Mesh、Nanite Foliage使用時はBP処理で削除)
└─ StaticMeshComponent (コリジョン用Static Mesh、通常は非表示)
その中で、HLODの対象となるか判定する関数「UInstancedSkinnedMeshComponent::IsHLODRelevant」において、
配置されたすべてのInstancedSkinnedMeshComponentのMobilityが「Movable」になっているため、HLOD対象から除外されていることを確認しました。
詳細ウィンドウ上ではInstancedSkinnedMeshComponentのMobilityを変更できないように見受けられます。
EngineのC++ソースコードを調査したところ、
InstancedSkinnedMeshComponentのMobilityはデフォルトでStaticとなっていますが、親クラスのコンストラクタ呼び出し順により、最終的に必ずMovableに設定されている様子です。
親クラスのコンストラクタ呼び出しは以下の通りです。
UInstancedSkinnedMeshComponent::UInstancedSkinnedMeshComponent(…)
→ USkinnedMeshComponent::USkinnedMeshComponent(…)
→ UMeshComponent::UMeshComponent(…)
→ UPrimitiveComponent::UPrimitiveComponent(…)
→ USceneComponent::USceneComponent(…) // ここでMobilityがMovableに設定されている
つきましては、以下をご教示いただきたく存じます。
① InstancedSkinnedMeshComponentをHLODの対象とするためには、Mobilityをどのように設定すればよいでしょうか。
② Nanite FoliageをHLODへ組み込む際に、その他注意すべきポイントがございましたら、ご教示いただけますと幸いです。
お忙しいところ恐れ入りますが、何卒よろしくお願い申し上げます。
[Attachment Removed]