いつもお世話になっております。
SkeletalMeshの LOD Bone Reduction 機能について質問させて下さい。
EngineContentのTutorialTPPモデルを使用して、以下の手順でこの機能を試用しています。
[手順A]
- スケルトンツリー上でボーンoを選択して右クリック
- LOD Bone Reduction
- Remove Selected…
このとき、FMeshBoneReduction::ReduceBoneCounts内で、
以下のそれぞれの数量が、SkeletalMesh::RefSkeleton のボーン数と比べて減少していることが確認できます。
FSkeletalMeshLODModel::ActiveBoneIndices
FSkeletalMeshLODModel::RequiredBones
(FSkeletalMeshLODModel* NewModelの値を、460行目で確認)
続いて、以下の手順を行います。
[手順B]
- スケルトンツリーから別のボーンp を選択して同様にリダクションを行い
- FMeshBoneReduction::ReduceBoneCounts で ボーン数を確認します
すると、
ActiveBoneIndices は、手順A後の値から更に減少する一方で、
RequiredBones は、大本のボーン数(SkeletalMesh::RefSkeleton)からボーンpの分を引いた値になります。
この機能を使う狙いとして、
UAnimInstance::ParallelEvaluateAnimation などでのCPU処理負荷を減らす、というものがあると思うのですが、
ここでのボーン数は FMeshBoneReduction::RequiredBonesをもとに決まるようなので、
手順A, 手順Bを順に実行して ボーンo, p への処理がスキップされるつもりが、そうなっていない、という状況です
ボーンを選択するときに、複数選択で両方のボーンを選択すれば、目的の成果は得られるのですが、
これは何か理由があってこういう挙動になっているのでしょうか?