バーチャル3Dクリエイター神部まゆみです(*^_^*)
この記事はUnityでアニメーションプレビューがズレる問題についての記事です。
動作確認した最新バージョンは Unity 6000.0.32 ですが、昔からある現象なのでどのバージョンでも同じだと思います。
症状:アニメーションウィンドウでアニメーションを再生すると位置がズレまくる
↓こんな感じになり、どこにいるのか捜索する羽目に陥る(笑)。
ゲーム実行中はちゃんとその場でアニメーションしてくれるんですけどね…。
アニメーションをプレビュー再生している時に起こります。

これ昔からなっていたのだけど、「きっとそういうものなんだ」と変に納得してスルーしていた(笑)。
しかしUmotion Proでアニメーションウィンドウと同期させる必要があったので、これだとダメなので対応してみた。
ChatGPTパイセンに聞いてみる


unityでアニメーション制作をしています。作ったアニメーションをアニメーションウィンドウでプレビュー再生すると位置がかなりズレてしまいます。実行ボタンを押してアニメーションさせた場合はちゃんとその場で動くのですが。アニメーションウィンドウで再生した場合は、数mくらいズレて、モデルがどこにいるのか探す羽目になります。

はい、それ、よくある現象です。
結論からいうと、
「アニメーションウィンドウのプレビュー再生は、ゲームオブジェクトの親(Transform)や初期位置を無視して、アニメーションファイル(Clip)単体のデータだけで動かす」
ため、見た目がズレます。
仕組みをもう少し詳しく
Unityのアニメーションウィンドウでプレビュー再生するときは、
- ゲームオブジェクトの現在のワールド座標は無視
- そのアニメーションクリップ自体が記録しているローカル座標だけを適用
します。
一方、**実行中(Playモード)**では、
- Animatorが親オブジェクトのTransformや初期配置を考慮して
- 正しくその場で動く
ので、ズレが起きないのです。
この現象が特に起こるケース
- もともと Animatorの親オブジェクトの位置がズレている
- クリップが「ルートモーションを含む(Root Transform Position)」タイプ
- Humanoidリグの場合、特にRoot Transform設定(Bake Into Poseなど)が絡んでる
対策・回避方法
ズレを防ぎたいなら、次の方法があります。
- 最初から原点(0,0,0)で作業する
- アニメーションを作るときだけ、親オブジェクトを原点に置いて編集する。
- Root MotionをBakeする
- もしHumanoidリグなら、インポート設定の「Root Transform Position (Y) / (XZ)」を「Bake Into Pose」に設定する。
- これにより、モデルの移動成分をアニメーションクリップに焼き付けできる。
- シーンビューで探しやすくする
- アニメーションプレビュー中にズレてもいいように、シーンビューのカメラをアニメーション対象にロックしておく。
- (Hierarchyウィンドウで右クリック→「Frame Selected」(ショートカット:
F
キー)で追尾できる)
まとめ
アニメーションウィンドウのプレビューズレは「仕様」です!
気にしなくてOKですが、作業効率を上げたければ「原点で作業」か「Root Motion焼き込み」を検討するといいですよ。
結果:トランスフォーム0,0,0に配置したら良い感じになった
既にポーズにベイクはしてあったため、トランスフォーム0,0,0に配置したらちゃんとその場でアニメーションしました。

これアニメーションを作成、編集するときは、位置0,0,0、回転0,0,0の場所に配置してから作った方が良いかもしれない。
ゲーム画面実行中はちゃんとその場の位置を考慮して動いてくれるけど、アニメーションプレビューした時はズレるリスクありそうだし。
特定のアセット使用中に起こる可能性もあるかも?
あとはAnimation Designerっていうアニメーション編集アセットを使っている時にTポーズに戻らなくなる現象が起こったため、特定のアセットの不具合でズレる可能性もあるかもしれない。
Umotion ProでもPCをスリープ状態にした後にメッシュがバグっていたことがあったからなあ…。
アニメーション編集系のアセットだと不具合も起きやすいかも?
まぁ可能性の一つということで。
おわりに
案外簡単に直って良かった。
まぁ一応そのままでも使えると言えば使えるから、そこまで気にしなくてもいいかもしれないけど。
Umotion Proとかのアニメーションウィンドウと同期するアセットを使ってると、この不具合を直さないとキツイので一応覚えておくと良いかもしれない。
また何かあれば追記します(*^_^*)