
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が自動で謎のフォルダ群に変換されてしまった

解決策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用に変換される

落とし穴5:トラッキングできる動きに制限がある
Webcam Motion Captureの精度は結構いい
けどトラッキングが難しいポーズもそれなりにある
腕や脚を交差する
手や腕で顔を隠す
腕を前後に伸ばす
ジャンプは検出しない
カメラから隠れる部分が多いポーズは検出しづらいらしい

解決策6:トラッキングしやすいモーションを探す
ぶっちゃけ諦めた
とりあえず手のトラッキングが綺麗にできたからいいや
今後色々と試してみる
