個人用にメモ。
割とメジャーなエラーなんですが、ネット上の解決法では僕のエラーは直りませんでした。
以下に僕なりの解決法を見つけたので明記しておきます。
※このエラーはモデルによっては発生しないみたいです。
エラー発生までの流れ
①Blenderでボーン入りのモデル作成後FBXエクスポート。
②UnityにインポートしAnimatorにAnimator Controllerをセットする。
③走らせると、ボーンにScaleやPositionの変更を設定していないのに、数値が勝手に割り振られる。
④意図しない位置へモデルが移動したり、拡大や縮小が行われてしまう。
というエラーに直面しました。
結論から言うと、「何でも良いからボーンと無関係なメッシュを配置すると直る」です。
何故これで解決できるのかは謎。
実際の症状
Blender上でゲームで使用する扉の3DCGをモデリングし、ボーンを入れ込み、扉が開閉するアニメを当てました。
これをFBXエクスポートし、Unityにインポート。
その後、アニメーションが働くようにAnimator Controllerをセットしました。
以上の操作でプロパティが以下のようになりました。
・Scaleが100になる。
・Root position or rotation are controlled by curcesのエラー文が表示される。
この状態でデータを走らせると、Positionが設定した数値とは別の物になってしまい、意図しない位置にモデルが表示されました。
また、Scaleも200(2倍)にしてもデータを走らせると100に戻ってしまい、好みの大きさに設定できないという状態になりました。
解決法
Blender上でボーンを紐づけていないメッシュを作成する上手くいきました。
何でもいいので平面などのメッシュを作成して、エクスポートすると上記のエラーは無くなりました。
Scaleも初期値は1になり、Animator Controllerを設定してもエラーが起きず、PositioもScaleも好きな値を割り当てることが出来るようになりました。
余分に作ったメッシュは非表示にしてしまえば問題ないと思います。
終わりに
僕の他にもこのエラーに直面した人はいたみたいで、AnimatorのApply Root Motionにチェックを入れたり、Scale Facterを予め設定しておくなどの方法がありましたが、どうしてもScaleを好きなタイミングで変更したかったので、この方法を適用して作業しています。
そもそも、エラーの発生原因が判明してないのが何とも気持ち悪いのですが・・・