ちゃこブログ

お絵かきとUnityとBlenderと日記

【Unity制作日記】【Blender2.8】アーマチュアの回転をUnity上で正常な値にするBlenderのエクスポート方法

タイトル長いです。
最近はVTuberVR文化の浸透でBlenderとUnityに関する知見はものすごく広まってそうですよね。私には相変わらず時代遅れな知識しかなくて焦りすらもないです。( ˘ω˘ )
タイトル通りですが、Blender&Unity関連で困った現象があったのでメモメモです。

Animation Riggingの勉強中

CEDECでUnity2019.3のAnimation Riggingを見てからずっと触っています。以前からProcedual Animationにとても興味がありましたが何から始めていいかわからず何もできてなかった中、この機能を見かけて入門出来そう!と思ったので勉強中です。

学習中、Hipボーンを追従させるRigをNinjaのExampleプロジェクトを参考にセッティングしてました。しかし設定は同じはずなのに完全な追従が行われない…RigのWeightも問題ありませんしなぜだ…
f:id:charcotte:20191001225924g:plain

原因を見てみるとモデルのスケルトンのスケールがメッシュの大きさと比較してめちゃくちゃ小さかったんですよね。Unity上でアーマチュアの大きさを1にしたところ、リグにしっかり追従するようになりました。
f:id:charcotte:20191006144547p:plain
Blenderファイルを確認したら、確かにアーマチュアがめっちゃ小さいサイズになってました。きっと作業中にデカすぎるという理由で小さくしたんだったかな…
いざスケールを修正してFBXを書き出し直してみるとスケールは治ったけど-90度回転はなんでか治らない。Animation Rigのサンプルで公開されているニンジャのモデルでは、メッシュもスケルトンも全部統一されていたので、全部修正しようと思いました。

Unityでアーマチュアの回転を正常値にするためのBlenderエクスポート方法

www.youtube.com
ありがたいことに、実現したいことについてこちらの動画に詳しい操作が解説されていました。
動画の通りのことしか書きませんが、次のような動作を行っていきます。
アーマチュアの回転を正しくするにはまずモデルの設定を変更していきます。

  • アーマチュアをX軸-90度回転してで拡大縮小を適用(ctrl+A)する
  • その状態でもう一度アーマチュアを90度回転させてもとに戻す(適用はしない!)
  • 各メッシュが-90度になってるので、それぞれ回転を適用する

f:id:charcotte:20191001234344g:plain

この作業を終えたらエクスポートの準備は完了です。

f:id:charcotte:20191001235118p:plain

次にエクスポートを行います。
動画では、FBX単位スケールを指定することを推奨していましたが、いつも通り全ローカルを指定しても特に問題なかったです。

上記作業を行ってエクスポートしたFBXを確認してみます。全部いい感じになりました。

f:id:charcotte:20191006145432p:plain

未解決課題

まず過去の私はなぜアーマチュアのスケールが0.03で作業を行っていたのか意味不明なのですが、アーマチュアのスケールを1に戻す作業がありました。スケールを戻すためにアーマチュアの拡大縮小を適用してみました。結果、アニメーションのボーン位置がなにやらおかしな挙動になってしまいました
f:id:charcotte:20191001232215g:plain
スケールの適用は行わず手動でアーマチュアのスケールを1に戻すだけでも問題はなかったので、FBXへの書き出しには影響はなかったですが、どういう手順でアーマチュアのスケールの変更って行うんでしょうかね…気になります。

Animation Rigへの適用

f:id:charcotte:20191001230415g:plain
Rigに対してHipボーンがしっかり追従してくれるようになりました。現状なんだ怪しい動きをしていますが学習途中ということで…( ˘ω˘ ) 今後自作モデルにAnimation Rigを利用していくのであれば、正確なFBXエクスポートは重要になりそうです。こういうところって一番時間取られたくないから早いところ解決できてよかったです( ;∀;)

Animation Rigについては、ほぼ公式のサンプルに倣うことしかしてないので何も有益なことは書けませんが、気が向いたらまとめようかと思います。