見出し画像

激安VIVE Flowで構築する軽量VR環境

お久しぶりです。
今回は激安で投げ売りされてたVIVE Flowで理想のVR環境を作る回です。
主に玄人向けなのでVR初心者にはお勧めできません。
最悪買っても何もできないサングラスになります。
先日ネットサーフィンをしてたらこんなものを見つけました。

これって定価55000円もするVRグラスじゃないですか。
なんで15000円…投げ売りじゃんと思って買うか迷ったんですがそもそもこれってスマホ向け。PCVRで利用してる記事はありますが、ライトハウス持ってないしなーとりあえず使えなかったら売ればいいかの気持ちで買いました。
そんなこんなで自宅にあるもので完結させたお話です。
先にも書きますが、因みに画質どうなのって思うかもですがQuest1並みらしいです。初代CV1よりマシでした。画質求める人向きではないです。軽さや装着性を求める人向けですね。

※真似するかどうかは自己責任でお願いします。あくまで私の環境では出来た話なので、環境が違ったら出来ないかもです。ご注意ください。
また、買ってできなかった等でトラブルになっても困るので一切責任は負えませんので予めご了承ください。

ゆらさんの記事大変参考になりました。ありがとうございました。


非ライトハウス環境で使う方法

VIVE Flow内蔵のインサイドアウトの6DOF+leapmotionによるIndexコンエミュレート+Joyconによる入力で利用する方法ですライトハウス環境で使いたい方はゆらさんの記事参照。

買ったもの
・VIVE Flow

私の環境にあったもの

・Androidスマホ(必須)
※非対応のAQUOS sense3でいけましたが、pixelはだめらしい。
届くVIVEFlowは初期ファームウェアだと思ってください。
iPhone対応は大分後のアップデートです。なので必須にしてます。
詳しくはhttps://www.vive.com/jp/vive-flow-phone-list/

・モバイルバッテリー 10000mah
・Joycon LとR 計2個
・BTアダプタ UB500
・LeapMotion(初代)※廃版の化石 中古で1万~1万5千

1.届いた!ワクワク地獄のアップデート

VIVE Flowが到着します。モバイルバッテリーかコンセントにTypeCケーブルで給電します。ここから地獄の始まりです。まずファームウェアが古すぎてiPhoneでセットアップできません。公式のダウンロードモードでのファームウェア更新も私の場合意味がありませんでした。大人しくAndroidスマホでVIVEアプリをダウンロードしてペアリングをしましょう。
ここからが大変です。あとは画面の指示に従っていけばいいのですが
アップデートが一回で終わりません。大体5分-10分くらいかかるアップデートを6回くらいこなして最新の状態になります。

最新の状態になったら設定からハンドトラッキングを有効にしましょう。以降スマホコントローラーは不要です。
USBデバックもオンにしてください。

2.PCでADBの環境を構築

要はスマホをPCに接続した時みたいにデータ(ファイル)のやり取りを出来るようにする作業です。

以下を使って15秒でADB環境を構築します。
詳しくは説明しないので各自インストール方法は調べてください。
難しくはないです。

15 seconds ADB Installer 
https://dl.google.com/android/repository/platform-tools-latest-windows.zip

ADB環境が構築できるとPCにUSB接続するとティロリンがなります。
VIVEFlowの画面を覗くとファイル転送しますか?と聞かれてるので許可します。

3.XRCloudの仕込み

これなにかというと無線でAndroidとかsteamVRのストリーミングできるよ~的なツールです(間違ってたらすみません)
このXR cloud serverをどこからダウンロードしてきていいかわからず、探しました。

ここにありました。
steamとsteamVRはインストールされてる前提です。v3.2をインストールします。
steamVRのアドオンにcloudXRHMD的な奴が追加されます。
要はこれがサーバーになります。サーバーのソフト的な奴は起動しません。
steamVRの起動のみです。


じゃあクライアントのインストールも必要ですね。
v1.3apkをダウンロードしてVIVEFlowのダウンロードフォルダにコピーしてください。これ以外のバージョンでは動作確認してません。




ダウンロードにコピーしたらインストールが必要です。
VIVEFlowを装着し、設定のストレージからダウンロードフォルダにアクセス。先ほどコピーしたapkをインストール。そうするとライブラリにXRCloudclientが追加されます。
まだ起動しないでくださいね。次にPCのメモ帳でテキストファイルを作成。名前をCloudXRLaunchOptions.txtにする.
以下を入力し保存。192.168.0.20の部分は自分のPCのアドレスにして下さい。

-s 192.168.0.20 -m 2.0 -f 60 -b

保存したテキストをUSB接続した状態のVIVE Flowの最初のフォルダがいっぱいある所にコピーしてください。


ここまで出来たらVIVE Flowを装着してXRCloudclientを起動します。
多分落ちてアクセス許可が2回聞かれると思うのでどちらも許可してください。これやらないとダメです。
もしできなかったらアンインストールして再インストールしてください。
許可が終わると最初のホーム画面になると思います。
そしたらsteamVRを起動して小さいHMDとかコントローラーが表示される画面が出たらXRCloudclientを起動して下さい。少し経つとsteamVRのホーム画面が出ると思います。
出なかったらIPアドレスを確認したり許可したか確認してみてください。

ここまでできるとsteamVRでHMDが使える状態になってると思います。
あとはコントローラーの追加です。

内蔵マイクやスピーカーは私は使わないので割愛します。
ゆらさんの記事で内蔵マイク、スピーカーを使う方法が紹介されてるのでそちら参考にして下さい。
Server Command-Line OptionsとClient Command-Line Optionsを見てたらオーディオの送信受信のコマンドがありました。試してないけど気になる人は試すと良いかも?


おまけ 追記


CloudXR-Setup-v4.0Wave CloudXR サンプル クライアント v1.7を試してみた。
古いServerのアンインストーラーは以下にあります。

C:\Program Files\NVIDIA Corporation

installerフォルダのXR cloud setup.exeをインストール。クライアント側はVIVEFlowの設定ストレージからclientをアンインストール、Ver1.7をインストール。あとの手順は最初と同じです。

試した結果

最初緑に画面になってダメかと思いましたが後述の
画質は割と申し分ないけど頭を振った時に枠?が若干遅れます。
がマシになりました!あと画質が更に良くなった!

ですが、なんか暫くすると落ちるように…二転三転してすみません💦
Server4.0とVer1.5は問題なさそう。
Server4.0とVer1.6も動きました。んーでも落ちてしまう…
Ver1.6からレンダリング解像度が上がるのでここらを使いたい…実際画質が全然違うんですよね…

Ver1.6でクライアント側のレンダリング解像度が1720x1720 から2448x2448に上がるんですがログや挙動をみる感じ通信の帯域負荷でsteamVRとの接続が不安定になりクライアント側がクラッシュしてる感じがします。
つまり通信量を上げるか逆にsteamVRのレンダリング解像度を落として通信量を減らすか…それともVIVEFlowのスペック限界なんだろうかうーむ…今の所数分で落ちてしまう

まだ長時間試してないので取り敢えず動かしたい人はServer Ver3.2とclient Ver1.3をお使いください。

4.LeapMotionをIndexコントローラーにしよう

LeapMotionは暗いとこでも使えるハンドトラッキングカメラです。Quest2とかに搭載されてるハンドトラッキングのあれと原理は一緒です。
まずPCにBTドングルを指してJoyconを設定のBluetooth設定からペアリングします。左右2台ですね。これはあとでコントローラーの入力として使います。Questコンでいうボタン部分を担います。

LeapMotionのドライバGenimiのインストールは割愛します。アカウントを作成して以下から製品に合ったものをダウンロード


以下の2つをダウンロードします。
driver_leapify
LeapMotionをIndexコントローラーとしてエミュレートするドライバ
driver_joyleap
上記にJoyconの入力を追加する拡張ドライバ



それぞれダウンロードして解凍したらleapifyとjoyleapフォルダを以下にコピーします。steamのインストールがCドライブ以外になっている人は探してください。

C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers

leapmotionをVIVEFlowにくっ付けます。

steamVRを再起動もしくは起動します。SteamVR設定で画像のようにします。一番下のoffsetはコントローラーの位置をみながら調整してください。



作者さんが丁寧に説明してくれました。

アドオンはLeapfy、CloudXRRemoteHMD、joyleapが有効になっている状態です。

あとはleapmotionのハンドトラッキングでコントローラー位置のトラッキングとハンドジェスチャ又はJoyConで入力してメニュー操作ができるようになります。
steamVRのメニューからVRchatを起動すれば以下の動画みたいにできます。
操作感はQuest2とかに近いです。もし、ハンドジェスチャが誤爆する場合はLeapfyの設定を変えてみてください。そのあたりは自分で探ってみてね
私はハンドジェスチャありでもある程度操作できるのでこのままにします。

最初にも言いましたが画質は初代Quest並みらしいです。
普段使ってるCV1より全然マシでした。画質求める人向きではないです。軽さや装着性を求める人向けですね。
VIVEFlowのホーム画面だとそこそこ画質だけどsteamVRに接続するとガビガビになるあなたへsteamVRの設定で片目あたりの解像度上げてください…!

上げても50パーセントか100パーセントにして下さい。帯域が増えてクライアントのクラッシュに繋がるようです。

またVIVE Flowのインサイドアウトで6DoFトラッキングも出来ます。地べたを這いずり回ったりも出来ます。VRChatでもし体が浮く人はOVR Advanced Settingsで上下移動を出来るようにしましょう。大体これで解決します。多分ですがフルトラも可能だと思います。私は座った状態や寝たりふんぞり返ってVR遊ぶ用の目的なので多分3点のままですが…w

以上のセットアップでVIVE Flow+leapmotion+Joyconを使った私の環境では最軽量かつ理想の環境が整いました。3Dプリンタでleapmotionのマウンタや自作顔トラカメラのマウンタを作りました。アイトラも付けれたら300gくらいでハンドジェスチャ+顔トラ+アイトラまで出来るHMDが作れそうだなって妄想してニヤニヤしてます。

上記データ公開します。3Dプリンタ持ってる人は印刷してみてください。
アイトラ部分は無いので注意。顔トラはM5 Timer camera Fをぽん付する想定。
顔トラの詳細は以下。

VIVE Flowのleapmotionマウンタ等の印刷データを無料配布しました。
印刷したものを欲しい人は購入もできます。


カメラがちょっと違いますが気にせず。
あと印刷データが古い…

最終的にこんな感じにまとめました…!このサイズ感でハンドトラッキングと顔トラッキングまで出来ちゃいます…!なんとケーブル抜きで270g!
あとは専用の外部マイク作ったり電源周りのケーブルもう少しまとめたい…w

1/13 追記・トラブルシューティングなど

1眉間のとこのセンサー塞がないとアプリ落ちますので注意テープなどで塞ぎましょう。

2少し気になる部分があるといえば若干青みがかってる事
これは何か調整する方法あるんだろうか。誰か教えてくれ~
まぁ15000円だしと割り切って使うのが良いかも

3あとleapmotionも無線化できると直良し。ESP32を2台ESPNowを使ってUSBシリアル通信を再現できる方お待ちしてます
上手くGeminiに渡してほしい…もしかしてコンパネ起動しなくても動いてる節あるからLeapiyに投げればいけるのかなうーんわからん。

4トラブルシューティングですがleapmotionのトラッキングが全然出来なくなってしまってあれやこれややってたんですが、単純にsteamVRが起動してclient起動して以下になった時にJoyconが接続済みになっていないとVR上にIndexコンが出てこないようです
なのでその時はペアリングを一回解除して再度ペアリングし直してみてください。コントローラー3つ表示されてますが気にしないでください。仕様です。


5leapmotionがVIVEFlowに近すぎるとオーバーヒートすることが判明。leapmotionってめちゃめちゃ熱くなります。50度くらいまで上がります。マウンタを改良し対応。VIVE Flowが何回も落ちる場合は電源を抜いて30分くらい放置しましょう。排気口も塞がないようにしてください。

6USBケーブルがガチャです。5V2Aのモバイルバッテリーで給電してるのに電力が足りませんとか腑抜けたこと言って何回も落ちたんであれーって思ったらケーブルの問題だったぽい。一応内蔵で5秒間もつバッテリーが入ってるらしいけど、もしかしてある程度充電されないと負荷時に落ちる…wなんて思ったけど気のせいでしょう…

7画質は割と申し分ないけど頭を振った時に枠?が若干遅れます。私はあまり気になりませんが人によっては気になるかも。
通信速度(ビットレート)の調整が出来れば改善しそうだけど多分コマンドとかでやるのか、テキストに書き込むのか…
もう少し調べてみます

1/14 追記


ハードウェアボイチェンを使うのでVIVEFlow用外部マイクモジュールを作ってみました。WM-61A相当品なので音質良しめっちゃ拾う


V睡もしてみました。元々HMD付けた状態で寝れない人間なのでV睡やってなかったのですが今回初めて寝れました。メガネタイプだから後頭部に何もない&軽いから違和感が少ないのはいいですね。あと何より軽い!!
普段使いがCV1で400-450gくらいなんですがそれより100gも軽いとこんなに違うのか…しかもハンドトラッキング対応…!ちなQuest2は重すぎてタンスの肥やしです。首折れる。

ただ、少し困ったもいくつか。これは当たり前なんですけど、部屋が真っ暗だとVIVEFlowのインサイドアウトトラッキングが偶に外れます。Quest2でも良く起こるあれです。要は部屋が暗いから空間認識が甘くなってるんで以下のようなIRライトでカメラが空間を認識しやすくする必要が出てきます。
VIVEFlow用の作ろうかな…w

もう一つ問題が…コントローラーなんですけどleapmotionはまだいいとしてボタン入力を司ってるJoycon、うーんこれがほぼ毎回ペアリングしないとダメなのかな?steamVRが起動したときにleapmotionが反応しない=Joyconの問題と前に書きましたがこれがもう少し良くなって欲しい。
私の環境だけかもだけど。OculusRiftCV1持ってるからOculustouchだけ流用するやつ試して物理controllerにした方が快適かもしれない。但しHMDとコントローラーの位置合わせめんどそう…
あと私のJoyconのスティック壊れてるのかぐるぐるしちゃってて折角フレンド来てくれたのに対応できなかった…もう少し要検証

あと、もう1個追記しますがXR cloud serverのインストーラー調べた人は気づいたかもですが現在はNvidiaにデベロッパー申請しないとダウンロード出来ないようです。NRSDKにアップされてるのは恐らく古いバージョンの様。
実は私も申請済みでしたが未だに申請中で何もできないのでNRSDKからダウンロードした次第です。1/14時点
https://developer.nvidia.com/cloudxr-sdk


1/15 追記

ケーブルがごちゃごちゃしてるのでもう少しスマートにと追加で色々買いました。
USB 延長ケーブル3m
https://www.amazon.co.jp/dp/B08L5X3PTF?ref=ppx_yo2ov_dt_b_fed_asin_title
USBTypeC
 20cm
https://www.amazon.co.jp/dp/B096XJ4Y8N?ref=ppx_yo2ov_dt_b_fed_asin_title
USB3.0 A-microBタイプ
https://www.amazon.co.jp/dp/B06XFLQXPBref=ppx_yo2ov_dt_b_fed_asin_title
USB給電付きUSB3.0 ハブ
https://www.amazon.co.jp/dp/B0CPSTG4N3ref=ppx_yo2ov_dt_b_fed_asin_title

で、それに合わせてホルダーとかケーブルクリップ作って以下のように
USB電源ハブ、LeapMotion、自作マイクモジュール、自作顔トラモジュールの1個のモジュールにしましたwコレをポン付けするだけです。
以外と重心バランスが取れており重くは感じないです。
ハード面はあとはアイトラつけるコントローラーをもう少し何とかすれば満足です。(レンダリング解像度はもうちょっと時間あったら試します。悔しい)

いいなと思ったら応援しよう!