やあ
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
を変更すれば直ったけど、別の問題が起きそうだし・・・