UnityからBlenderにモーション持っていきたいんだけど
この一言から検証が始まった。
なんとなくできそうなことだけがわかっていたので、安請負をしたところ結構ハマったのでメモとして残しておく。
使用したもの
- LeapMotion
- Unity 2019.3
- LeapMotionUnityDevKit(こんな名前かはしらない)
- uniVRM(0.55以上がよさそう?)
- FinalIK
- EasyMotionRecorder
- BVH Tools
- 適当なVRMのモデル
使用しなかったもの
- uOSC
- EVMC4U
- FBX Exporter
ほぼこの記事を参考に書かせていただいております。
https://note.com/361yohen/n/na74a81db00f4
苦戦したこと
- uniVRMのバージョン0.46を使っていたことで、FinalIKのFull Body Biped IKが半分ぐらいしか見えない状態だった
- FBXにするつもりでFBXExporter使っていたんだけど、コマみたいにしか動かなかった
- BVH Toolsの使い方が全く不明
手順
LeapMotionのセットアップ
なんか、前はあったかわかんないけど、SDKなどを取得するのにアカウント登録が必要なのでする。
https://developer.leapmotion.com/unity#116
これから、coreを使うのでダウンロードしておく。
unitypackageの中に入っている、
これをヒエラルキーに置く。
leapmotionがつながっていると、再生ボタンを押すとなんか動く。
RigRoundHand_L及びRigRoundHand_Lにいかのような空のケームオブジェクトをつけておく
このとき動きが鈍いようだったら、leapmotionが汚れてないかを確認。
UniVRMを読み込みついでにVRMを読み込む
割愛
FinalIK(課金要素)をインポート
LeftArmの三角を押すと、LeftHandEffectorというものが出てくるので、Targetにさっきの殻のオブジェクト(例ではHandL1)を指定
これで位置合わせをすると、leapmotionの手首に追従してくねくねと動くようになる。
指の設定
指が動いてほしい気持ちがあるので、配置したVRMモデルに小細工する。
手首と思われる骨に、Rigged Fingerをアタッチ、指の第1関節を設定。
そのあと、LeapMotionのサンプルの中に入ってる、RigidRoundHand_RのRigedHandの値を更新。
指は一本一本丁寧にやる。
これでたぶんLeapMotionでVRMのモデルが動くはず。
モーションデータの収録
EasyMotionRecorderをヒエラルキーにおいて、Animatorを設定。
VRM指定するだけでいい。
再生ボタン押したあと、Rでデータ保存開始、Xで終了。
よくUnityの再生ボタンを切り忘れるので注意。
Resourcesのなかに保存されたものが溜まっていく。
空白の立方体みたいなアイコンみたいなものをインスペクタで変換する
これで.animデータができる。
animデータをbvhに変換する
アニメーターコントローラー作って、animを設定。
モデルをもう一体立てて、アニメを埋め込む。
BVHTools内の、BVHRecorderというものを空のゲームオブジェクトにアタッチする。
MotionTargetを設定。
保存先のディレクトリ(存在しているもの)と、使っていない名前をつける。(上から2つのDirectoryとFileName)
再生ボタン押したあと、Save Motion to BVH を押す。
再生ボタンをもう一度押して画面を止めると、指定したディレクトリにBVHファイルができている。
めでたしめでたし。
Blenderなどで読み込めるので活用ください。
疲れたー。。。
もっといいほうほうあれば教えて下さい。