見出し画像

6本腕のVになりたかった話

  •  Vになってみたい

  • どうせなら人外になってみたい

  • 6本腕のVを作って動かそう!!


6本腕の3Dモデルを作る

  • 人型モデルを作るノウハウはググるといっぱい出てくる

    • Vtuber人気だもんな

  • 当然だが、これらに腕を増やすという発想はない

    • 単純に腕をコピペして増やしたら動きが単調になりそう

    • ウェイトを少し散らばるようにしたいが、実際どういう動きになるか予想がつかない

    • ので、動かしながら確認したい

落とし穴1:3Dモデルを動かせない

  • 3DはBlenderを勉強しながら作成

    • トライバルを立体にしてみたいとも思ってたのでトライバルっぽく

    • スカスカにした方が関節の減り込みとか気にしなくて済むし

  • とりあえずフリーの人型モデルを借りてパーツをくっつけてみよう

  • モーションデータはMixamoから適当に借りてこよう

  • え?リグとモーションのリターゲットが必要?手動でできなくもないけどクソめんどい?アセットは有料?

    • やだ

解決策1:Unity上で動かす

  • 諦めた

    • Unityでやった方が楽らしい

    • ありがとうUnity

  • C#でモデルを追従するスクリプトを作成

    • 追従や参照の微調整もできるようにしたので楽だった

      • 苦戦したところもあるけど

    • 結局リターゲットは手動でする羽目になったけど

モーショントラッキングの準備をする

  • 6本腕の準備ができたので、モデルを動かしていく

  • とりあえずUnity Assetのモーションデータを拝借

  • なんかキモイ面白い動きをしてくれて満足

うまい具合に腕の動きがバラけてくれた
  • とはいえ自由に動かしてもみたい

  • Webカメラを使ってトラッキングしてくれるツールがあるらしい

  • Virtual Motion Capture:Webカメラを使ってトラッキングをしてくれるツールその1。無料で使えるようだが、Mac非対応だったので断念。

  • Webcam Motion Capture:Webカメラを使ってトラッキングをしてくれるツールその2。Macにも対応してくれてありがたい。有料だが月額約200円なのもお手頃で助かる。

  • EVMC4U:Virtual Motion CaptureをUnityと連携してくれるツール。ばもきゃをと言いつつWebcam Motion Captureも動いてくれて助かる。

  • Webcam Motion Capture+EVMC4Uでできそうなので
    この2つの組み合わせで導入

落とし穴2:EVMC4Uの解凍ができない

  • EVMC4UをDLして導入したい

  • 公式のBoothページからZIPファイルをDL、解凍してUnityPackageを取得

  • なぜかUnityPackageが自動で謎のフォルダ群に変換されてしまった

4.0も5.0も両方ダメだった

解決策2:GitHubからDL、またはブラウザツールで解凍する

  • GitHubだとUnityPackageを使わずにDLできる

    • ただしVersionは5.0だけなので安定しない可能性?

  • ZIP解凍ブラウザツールで解凍したら謎変換されなかった

    • 原因は謎

    • おま環かもしれない

落とし穴3:VRM変換ができない

  • モーショントラックをするにはVRMモデルが必要

    • Unity Assetsから持ってきたのはFBXモデルなので変換が必要

  • UniVRMというUnity上でFBXモデルをVRMに変換できるツールがある

  • 最新版のUniVRMを導入して、解説サイトを参考に変換してみる

  • なんかエラーが出て出来ない

  • 別のバージョンを試すとか色々やったけどエラーで進まない

なんかダメらしい

解決策3:UniVRMを導入する必要がなかった

  • そもそもEVMC4UにVRMへの変換機能が含まれていた

    • 部分的にUniVRMの機能を含んでいるらしい

    • EVMC4Uのコード内でUniVRMを参照しているため、別途UniVRMを導入すると参照ができなくなりエラーが出るらしい

  • 余計なことをしていただけだった

とにかくダメらしい

落とし穴4:VRMとFBXで構造が異なる

  • 無事VRM変換ができた

  • ちょっと手間だが、FBXモデルに連携させたパーツをVRMモデルに移す

  • なんか角度がおかしい

  • FBXとVRMで各パーツの原点の取り方が異なるらしい

  • VRMに合わせてパーツの追従を調整するも上手くいかない

くしゃくしゃになっちゃった

解決策4:トラッキング用と撮影用を分ける

  • あれこれやったが上手くいかないのでスッパリ諦めた

  • VRMはモーショントラッキング専用、FBXは撮影専用と割り切る

  • VRMでモーションを録画したら、FBXに適用して撮影する流れ

  • 来年は直接動かせるように6本腕VRMモデルを作る

モーションを録画してモデルを動かす

  • ようやく準備ができたのでモデルを動かしてみる

  • EVMC4Uの解説記事はいくつかあるが、Webcam Motion Captureを入力に使ってるものが少なくてちょっとつまづいた

    • Webcam Motion CaptureとWebcam Motion Receiverを起動

    • Webcam Motion Receiverでサブスク登録したIDでログイン

    • Webcam Motion Captureで任意のカメラと繋ぐ

    • Webcam Motion Receiverのモデルが動くことを確認

両方立ち上げる必要がある
  • Webcam Motion Receiverの外部アプリに送信をチェック

  • Webcam Motion Receiverの送信開始ボタンを押す

  • UnityでEVMC4Uを設定したシーンを実行し、VRMが動くことを確認

「送信開始」ボタンを押して「送信停止」に変われば動くハズ
  • VRMモデルが動いてくれたので、Unity Recorderを使ってモーションを録画してみる

落とし穴4:録画したアニメーションクリップが使えない

  • アニメーションクリップとして撮影したモーションをFBXモデルに適用してみたが動かない

  • Unity Recorderで録画したアニメーションクリップはGeneralで出力されるので、このままでは使えないらしい

    • アニメーションクリップの形式はGeneral(汎用)とHumanoid(人型)で大体分けられてる

    • 今回使いたいのはHumanoidなので変換する必要がある

エラーが出て動かない

解決策4:FBX変換する

  • アニメーションを設定した3DモデルをFBXに変換すれば変更可能になるらしい

  • FBX変換はUnityの標準 AssetsのFBX Exporterでできる

    • Package ManagerのUnity Registryからインストールしとく

  • Hierarchyのオブジェクトを右クリック、Export to FBXで出力できる

これ
  • 出力したFBXモデルのRig > Animation TypeをHumanoidに変更すれば、FBX内のアニメーションクリップもHumanoid用に変換される

アニメーションクリップではなくFBXを編集すること

落とし穴5:トラッキングできる動きに制限がある

  • Webcam Motion Captureの精度は結構いい

  • けどトラッキングが難しいポーズもそれなりにある

    • 腕や脚を交差する

    • 手や腕で顔を隠す

    • 腕を前後に伸ばす

    • ジャンプは検出しない

  • カメラから隠れる部分が多いポーズは検出しづらいらしい

足を組んで座ってた筈なんだが

解決策6:トラッキングしやすいモーションを探す

  • ぶっちゃけ諦めた

    • とりあえず手のトラッキングが綺麗にできたからいいや

  • 今後色々と試してみる

完成品。わかりづらいが、キツネの手をしている

この記事が気に入ったらサポートをしてみませんか?