unity プレファブ内のfbxモデルの初期ポーズが変わってしまった時の対処法

unityの初期ポーズが変わってしまい、モーションに支障が出てきてしまった時の対処方法です。

原因

おそらくここらへんが原因。ゲームプレイ中にプレファブをオーバーライドしてしまったみたいだね。

と思ったけど、バージョン2022ではそもそもプレイ中にオーバライドできない。Humanoidを利用し、アニメーションなどでポーズが変わってる状態でキャラクタープレファブをオーバーライドしてしまった場合に、各トランスフォームが上書きされてしまうのが原因らしい。うわー。盲点でした。シーン上での上書きは基本やらない方が良いですね。


左が初期、右が現在。完全にポーズが変わってしまっている。どぼぢでごうなるどぉっ。色味が微妙に異なってるのは仕様。

ようはオーバーライドされているのが問題なので、これを元に戻していけば良い。


プレファブの編集画面に入る。


プレファブ内のfbxファイルを選択する。


オーバーライドの項目を見て見る。初期位置からいくつかのボーントランスフォームが変更されているのが確認できる。


初期位置からどれだけズレているのか確認できる。「Revert」をクリックすればボーンを初期位置に戻すことが出来る。これを、変更されている全てのトランスフォームで行う。


一気に選択して「Revert Selected」でも戻せる。

ここで注意するのは、トランスフォーム以外のオブジェクトでこれを行うとそのオブジェクトがぶっ飛ぶ。この操作はプレファブに保存されているfbxに対する変更を元に戻す動作なので。腕とか足とかにマテリアルやスクリプトをプレファブ側で設定している場合、その設定がふっとぶ。なのでトランスフォームだけを選択するようにする。

また、一個だけ選択している状態だと、「Revert Selected」が「Revert All」になり、全ての変更情報が吹っ飛ぶのでこれまた注意すること。

初期ポーズに戻せた!

いいなと思ったら応援しよう!