バーチャル3Dクリエイター神部まゆみです(*^_^*)
この記事はBVHモーションデータをFBXに変換してUnityに持って行ったメモです。
やりたいこと:BVHモーションデータをFBXに変換してUnityに持っていきたい
カーネギーメロン大学がBVHモーションを配布しているので、FBXに変換してUnityに持っていきたい。
↓のサイトがどんなモーションか表示してくれているので便利です。

↓の先輩がすべてのモーションを動画にしてくれています。大変なのによくやったな…Σ(゚Д゚)
2500以上もあるようだから大抵のモーションはありそうだけど。これを切り貼りして良い感じに繋げられたら便利そう。
しかしBVHファイルはデフォルトだとUnityにインポートしても使えないので変換しないといけない。
blenderで簡単に変換できるのでFBXに変換してやってみます。
FBXはモーションファイルを保持できるので使いやすい。
最初からFBXのモーションが欲しければMixamoを使うのも良い
これも色々なモーションがあって使いやすいです。

unityに持っていく方法などは↓こちらで解説してます。
やり方:blenderでBVHファイルをインポートしてFBXでエクスポートする
↓ここね。


下で追記したけど、そのままインポートしたらスローモーションになってしまったので、インポート時に「FPSにスケーリング」にチェックを入れる必要がありました。
カーネギーメロン大学のBVHファイルだけかも?一度インポートしてみてアニメーション速度が遅いようならこれで直るはず。
インポートできたらFBXエクスポートする。アーマチュアだけでいい。




動画だとこんな感じ↓
追記:モーションがスローになってしまう場合、インポートする時に「FPSのスケーリング」にチェックを入れた方が良いっぽい
カーネギーメロン大学のモーションの場合、ここにチェックを入れないとスローモーションになってしまった。


Unityに持って行ってから編集もできるけど面倒なのでチェック入れといた方が良いかな。
しかし↓ThreeDPoseTrackerっていう画像認識系のモーションキャプチャーで自分で撮ったやつはチェックを入れなくても大丈夫だったので、モーションキャプチャー時の設定によるかもしれない。
UnityでインポートしてHumanoidに、FBX内のAnimationデータだけCtrl+Dで複製する
UnityにFBXファイルをインポートしてHumanoidに設定、アニメーションファイルを複製すればOK。
Humanoidにしないとジェネリックのままっぽい?モデルの表示がおかしくなってとんでもないことになった(^_^;)
Ctrl+Dで複製するのは、そのままだと読み込み専用(ReadOnly)になっていて編集できないから。
アニメーションファイルの設定をする
現状だとなんかふわふわしてるので設定を見直します。
とりあえず「ルートモーションを適用」にチェックを入れると浮いた感じはなくなった。


でもモーションのルートが若干浮いてる感じっぽいから修正したほうがいいかな。
あとはこのあたりの設定を見直すと良いみたいだけど、これ分かりにくくて毎回忘れるんだよな…。


ポーズにベイク(Bake into pose)については以前記事を書いたのでこちらを参照。
なかなか良い感じになった
おお!やはりお高いモーションキャプチャーを使っているから動きが違うな…Σ(゚Д゚)
ちなみにこのカーネギーメロン大学のモーションは、41個のマーカーと12台の赤外線カメラで動きを検出してるらしいです。
このデータはどのように取得されますか?
12台の赤外線MX-40カメラで構成されるViconモーションキャプチャシステムがあり、各カメラは4メガピクセルの解像度で120Hzで記録できます。モーションは、約3m×8mの作業容積でキャプチャされます。撮影対象は41個のマーカーとスタイリッシュな黒の服を身に着けています。
良いモーションキャプチャーでも修正は必要っぽい?
まぁそれでも足がちょっと破綻してる箇所があるから修正は不可避なのか…。


↓Cygamesがモーションの制作過程を動画で公開してたけど、スゴイ機材を使っても結局修正は必要っぽいですね…。
検出の精度が高くても、人間とキャラクターの体格差でどうしてもズレが出るらしいです(^_^;)
まぁ良い機材を使っているぶん修正する箇所は少ないのかもしれないけど。
まだAIでパパっとなんとかなる時代ではないのかな…だいぶ進化はしてきているけども。
IKを使って足を接地させるスクリプトなど
↓のスクリプトで足IKを使ったらうまく接地させられたので、気になっている方はどうぞ。
位置修正などがしやすいUnityアセットなど
Umotion ProっていうUnityアセットはレイヤーを手軽に使えるので、Root位置だけ編集するレイヤーを追加したら位置調整がしやすかったです。
Look AnimatorやEyes Animatorと併用すると手軽にキャラを活き活きさせられるのでおすすめ
アニメーションクリップを編集してゲームや動画に使う場合、Look AnimatorやEyes Animatorと併用すると手軽にキャラを活き活き動かせます。
XR Animatorと併用してみたら手軽に↓こんな感じの動きが作れたので、カメラ次第で主観視点のアニメとかも作れそうです。
↑はuLipSyncっていう口パクさせられるアセットも使っています。
次にやりたいこと:他のモーションと違和感なく繋げて長いモーションを作れないだろうか?
UnityのAnimatorで遷移させるのも良いけど、どちらにしてもAモーションの終点と、次のBモーションの始点であまりにポーズが違いすぎると不自然な感じになってしまう。
これ手打ちモーションならつなげやすいんだけど、モーションキャプチャーの配布モーションだと全フレームにキーが打たれてるから、ポーズは同じように見えてもキーの数値が違いすぎてちょっと粗ぶるんだよな…。
だいたい足が粗ぶってしまいます。
まぁちょっといじって良い感じにできないか試してみたい。
これができれば配布モーションを修正して手打ちモーションに繋げたり、良い感じにできそうなんだけどなぁ。
たぶん繋ぎのモーションを作っていけば行けるとは思うんだけども。
アニメーションを切り替えるスクリプトとか
アニメーションやブレンドシェイプを切り替えるスクリプトを書いたので、こういうのも使うと可能性が広がるかも。
二人組のアニメーションの場合はこちら。
リップシンクはアセットで動かせます。
Webカメラでできる手軽なモーションキャプチャーなど
あとは最近はwebカメラや動画でモーションキャプチャーできるので、自分でモーションを作ってみるのも良いかもしれません。
映像系のモーションキャプチャーは精度が低いのでは…と思っていたけど、↓最近はかなり精度が上がっていますΣ(゚Д゚)
Webカメラの性能と環境次第で、モーションキャプチャー機材と区別がつかない感じだったりしますね…。
↓XR Animatorは楽器の演奏など繊細な動きもいけるっぽいです。これでOSC経由でClusterで動かしたり、モーション録画してunityに持って行ったりできる。
技術の進化で色々な選択肢が増えてきていますね。
まぁもうちょっといじってみます(;^_^A