UE4 Blenderから持ってきたアニメーションの骨の位置がおかしくなる問題
やあ
Blenderで作った特定のアニメーションを、UE4に持って行ったら、ルートの位置に腰が来てしまう問題が起きたんだ。
その原因と解決策がわかったっぽいのでメモとして残しておくよ。
環境
・UE4.26.2
・Blender2.91.2
実際に起こっている問題
左がアニメーションを設定した状態
右がデフォルト
原因1?
Blender上でアーマチュアのスケールを変更していたこと。
(1, 1, 1)じゃないとだめなところを、(0.5, 0.5, 0.5)みたいにしていた。
実際に、スケーリングしたキャラクターとそうでないキャラクターで比較してみたところこうなった。

スケールが原因だー!と思い、
1. Ctrl+Aでスケールを適用
2. アニメーションカーブのY座標もすべて0.5倍
アーマチュアの大きさをY座標に掛けるとアニメーションが壊れない
blender.stackexchange.com
にして、再びUE4にインポートすると・・・
直りませんでした\(^o^)/

原因2?
UE4のスケルトンのTranslation Retargetingに原因がありそうかも~
自分のプロジェクトでは、ほぼすべてのメッシュが、一つのスケルトンを共有しているので、Translation Retargetingをここに載っているように設定していた。

解決策?(これで解決になるプロジェクトもあると思います)
ここを変えれば直るんじゃねと思って、Pelvisの位置にあたる骨をAnimation ScaledからAnimationにすると。

直った!
けど、これって他のアセットで問題が起こりそうだよな~ってことで、この解決策?はいったん保留。
解決策(自分の場合)
問題が起こっているアニメーションをエクスポートするのを、スケーリングしていないアーマチュアからやればいいじゃん!
手順
1. アーマチュアを複製し、複製したほうのアーマチュアのスケールを(1, 1, 1)に戻す※スケールの適用ではないです
2. 複製してスケールを(1, 1, 1)にしたほうのアーマチュアからすべてのアニメーションをエクスポート
3. スケーリングしているほう((0.5, 0.5, 0.5)など
)のアーマチュアで、メッシュのみをエクスポート
4. UE4でそれぞれをインポートして使うだけ!
結果

ちなみに、Translation RetargetingをAnimationにした状態だと

体が浮いてしまう
最後に
こんなことにならないようにアーマチュアを拡大縮小するのはやめよう!
他にも全部作り直すって手もあるよ()
謎
・スケールを適用して、アニメーションカーブのY座標もスケーリングしたのに、UE4では直らないところ。
Translation Retargetingを変更すれば直ったけど、別の問題が起きそうだし・・・