75ボーン数制限について
1.ES2 Mobile Renderingの原因、75ボーン以上のサポートしません
ES3.1 と Metalはサポートします(確認しました)
inline int32 GetFeatureLevelMaxNumberOfBones(ERHIFeatureLevel::Type FeatureLevel)
{
switch (FeatureLevel)
{
case ERHIFeatureLevel::ES2:
case ERHIFeatureLevel::ES3_1:
return 75;
case ERHIFeatureLevel::SM4:
case ERHIFeatureLevel::SM5:
return 256;
default:
checkf(0, TEXT("Unknown FeatureLevel %d"), (int32)FeatureLevel);
}
return 0;
}
2.ES2にボーン数75以上と 一つ頂点を4つ関連ボーンがあれば、サポートしません
モデル消えます、ワーニング出ます:
```LogSkinnedMeshComp: Warning: SkeletalMesh BasketBallGirl_Bone33, is not supported for current feature level (ES2) and will not be rendered. NumBones 28 (supported 75), HasExtraBoneInfluences: true```
骨の非表示機能に関して、いま使うのは、UE4のLOD BoneRemove機能です
最初試す時に、76Bonesから作成したAnimationを、UE4のRetarget機能で
33Bones 53Bones 66Bones 89Bonesに合わせて、試しました
53Bonesの負荷が、33Bonesより軽く、Retargetの処理に問題があると思い
Retargetを行わないように、モーションを0から用意して、もう一度計測
結果は、Retargetを行うと、Iphone6では、GPU負荷がものすごく高いことがわかりました
Retargetは無しの状態で、骨の非表示機能を計測しました
検証の結果は、32体配置しても、Game処理が0.1ms下がるかどうかで、
GPUに対しては、余計な負荷が発生するケースもありそうなことがわかりました
現状、開発時に多々発生した、ボーン構造の変更等に対応する為、
過去に作ったアニメーションを、Retargetして利用しているものが多々あるので、
ボーン構造をFixして、Retarget機能を使わなくてよいように、Maya側で修正し、
すべてのアニメーションデータを出しなおす必要がある
恐らく、ハイエンドやコンソール向け、もしくは、広大なマップで、
大量に生成されるようなシチュエーションに対して有効な機能と思われる為、
Pegasusの負荷軽減のケースとしては採用しない方向で進める