MocapForAllを使いこなすには、カメラとカメラにつけるUSBの選定が非常に重要になってきます。
今日は選定方法についての話をします。
Radeon利用者はmocapforallの一部モードが使えません
詳細はこちらに記載しています。
MocapForAllのfpsを上げるコツ
事前に公式HPの記載を確認して下さい。おおよそ10fps位とコメントありますので
自分のやっていることが10倍無謀だということを前提にご覧ください。
FPSを上げるコツその1:カメラ選定
いきなりですが、あなたのWebカメラ、fpsどれくらいですか?
実は、MocapForAllの動画を見ると、開発者の方は「スマホ」を使っています。スマホだと、高性能で60fpsは余裕で出ます。
しかし、実際のVRchatでの運用を考えると、スマホはとてもきついです。
長時間稼働が問題になり、解決できません!
なので、Webカメラが候補になるのですが、Webカメラのfpsは
スペック表だけではとても分かりにくいのです。というのも、そもそも
カメラ選定のポイント
・通信方式が何か(USB2.0,USB3.0、LANなど)
・CCDかCMOSか
・モノクロかカラーか
・広角レンズかどうか
で通信速度がだいぶ変わってくるからです。
Mocapはカラーのカメラでないと動作できないので、モノクロで
情報量を減らして、fpsを増やす方法は使えません。
では、スマホの場合、なぜそこそこ早くなるのかというと
Wifiの規格が一番大きく、次に解像度がそこそこ低く設定できるからです。
これらにこだわれば、webカメラよりもfps早くなります。大体120fps位出ます。
ただ、スマホでVRchat運用は超厳しいです。スマホがとても熱くなること
どうしても毎回キャリブレーションしないといけないこと、画角が狭く狭い部屋での運用が厳しい
のが主な理由です。狭い部屋対策に関しては、魚眼レンズを挟み込むって方法もありますが
今度は精度の問題で、実用上問題はないけど、60fps以上でちょっと怪しい挙動が増えます
あと、そもそも無線LANなので、無線LANが強くないとVRchat側で露骨に影響します。
こういった理由から、スマホ運用は避けるべきです。
一般的に解像度が低いと、大量のfpsの動画が送れ、解像度が高いと低くなります。
なので、解像度を低い設定にできれば、ものすごく早くなるでしょう。
MocapForAllは、「複数台」カメラをつけて運用するので
複数台のカメラが同じ速度で遅延なく同期することが、非常に重要になってきます。
そのため「遅延」なる高度な調整機能も実はあります(どう調整するんだろうね・・これ)
しかし、このソフト。
マーカーを読ませるなどいろんな要素で、カメラ同士を離して使う必要があるため
どうしてもカメラ単体ではケーブルが足りなくなってくるのです。
そこで、ケーブルを買って対策しようと思って買ってしまうと、FPSがすごく下がります。
この現象については、産業用カメラのメーカーのHPにも載っています。
産業用カメラの場合は、配線選びはとても重要なので、はっきり書いてあります。
これがいわゆる「USB2.0」の壁ってやつです。
メーカーの概算で計算すると、理論値ですら、30万画素でも100fpsで不可能になるわけです。
つまり、USB2.0だと解像度をめちゃめちゃ下げないと高いFPSが出ない!というわけになります。
実際使ってみるとわかるのですが、推奨は640*320位(出先なので数値忘れた)だったので、
20万*3=60万となり、4分の1の解像度でないと、100fpsにならない計算になります。
ちなみに3をかけているのはRGB情報だからです。
モノクロで認識すると3倍速くなるので、モノクロ対応だったら、USB2で全然行けるわけです。
結論:USB2.0のカメラで解像度推奨で使うと
60fpsでないので、USB3.0が必要になる。
通常利用は問題ない
通常のフルトラだと、どれ位必要か?
ちなみに、ハードウェアフルトラの人がどれくらいでて、どんな速度で使っているのかという調査を、Uni-motionさんのモーモー調査というものでやっています。
これを見ると長時間運用のために60Hzを使う人に目が行きがちですが、144Hzで運用している方が結構どころか、かなりいることがわかります。
VRchat上で144ヘルツ出すためには、MocapForAllの場合は、AIによる処理速度が144fps以上必要だということです。たぶん。
60~144位出ていれば、VRchat上ではそこそこ使えるということです。
では現状30から60くらいしかないものを、144までfpsを上げるためには、どうすればよいのか?
そう考えると、解像度を下げるだけでなく、切り取りも正確に読み込むなど
ほかの要素も重要になってくるのですが、やっぱりUSBの長さと規格がとても大切なのです。
FPSを上げるコツその2.延長ケーブルとUSB規格の選定
USBの伝送速度は一番ネックです。
「同じ速度で遅延なく写真をとる」ために必要なことは、PCをカメラとカメラの間において、延長ケーブル「なし」か同じ品質、同じ長さのケーブル、同じメーカーのもので運用する必要があります。(もしくは、ほとんど減衰しないで、AC電源などにつなげて給電するような高いケーブルを買う)
僕は、これが重要だとたどり着くのに2か月かかりました。
というのも、USB2.0は理論値よりも少し低いぐらいだろーと思っていたからです。
でも実際は違いました。
とても遅かったのです。
USB2.0の延長ケーブルで運用していた時の記録がこちらです。
実は30-45fpsです。ここはホーム画面の一番軽いワールドのようなものなので
すが、実際20位まで下がっちゃいます。
で、USB3.0の延長ケーブルを使っているときがこちら
見てわかりますか?
足の動きが俊敏になっていませんか?
これがfpsの速さがわかるポイントです。
明らかにUSB3.0延長ケーブルを使っている方がなめらかじゃありません?
この映像は、長時間駆動して50fpsなので
USB2.0延長ケーブルを使うとどれくらい遅くなるのか分かったかと思います。
では、直でさすとどうなるのか?結果がこちらです。
で、もっともよい条件でやったのがこちら
また、指トラッキングをやった時の結果がこちら
1024×???の高い解像度でも60fps出ます。
といったように、fps換算すると、USBの接続方法を直刺しに変更するだけでも
fpsが20→85位変わります。なので、USB2でも実用性に関しては十分なのです
結論:延長ケーブル使うと3分の1位すごーく下がる。
しかし、さらっと書いてありますが、ここまで上げるのに
部屋の掃除、改造、レイアウト変更ということが必要だったため
20→85までよりも、85→100までの方がはるかに時間がかかります。
つまり、MocapForAllは、ユニモーションの半分以下の速度とかなり限定したアクション出ないと
できないということです。
で、105以上となると金銭的に何を投資するかが重要になってきます。
なので、まず、MocapForAllのfpsを上げることで一番大切なのは、USB2.0の規格を十分に理解し、直さしで運用することです。
おまけ:えいとびーとさんから感謝のコメントいただきました
WebcamMotionCaptureって指トラッキングの精度がかなり高いツール使っているQuest2の方から、お礼の返信をいただきました。
ありがとー。
今、さらっとお勧めツールをいっちゃったんですが、もし上半身だけで指を動かしたいという場合は、WebcamMotionCaptureはかなりお勧めです。
それにしても、僕、何かWebcamMotionCaptureの話したかなぁ?って感じですが、OpenCVの話をすれば、基本的に当てはまると思うので、まぁいいか。(笑)
おまけその2:MocapForAllで指トラッキングやるとどうなるか?
ちなみにMocapForAllで指トラッキングやるとこんな感じです
実はMocapForAll、指トラッキングに関してはまだ実験機能。
(この前見たら、結構改善進んでいるみたいだけど、フルトラッキング+指トラッキングはもうちょっと先っぽい)
解像度高めで2台でとっているので、たった1台だけのWebcamMotionCaptureがどれくらいVtuber向けかよくわかるかと思います。
おまけその3:WebcamMotionCaptureで指トラッキングやるとどうなるか?
ちなみに、Webcamはこちら。fpsは60位出ています。
今のところこれがベストチョイスでしょう。
これを見ると、MocapForAllは、まだまだとんでもない弱点というか穴がありまして
今日はそのあたりも書いていきたいと思います。