【2023年版】PC用のVRヘッドセットの代わりにスマートフォンを使う方法

　高いヘッドセットやセンサー類を使わずになんとかする方法です。
　2023年8月時点ではおおまかに二通りの方法を確認しています。残念ながら無料だと時間制限がありますが、それぞれの対比と導入方法を記載していきます。
　どうしてもPC向けのVRコンテンツを見てみたいという場合の一助になれたら幸いです。

　大まかに次の二つについて記載していきます。
・**VRidge** というアプリを使う方法
・**iVRy VR** というアプリを使う方法

## 目次

[1.動作環境のイメージ](#動作環境のイメージ)
[2.対比表](#対比表)
[3.共通して必要なもの](#共通して必要なもの)
[4.VRidgeを用いたPCのVRへの入り方](#VRidgeを用いたPCのVRへの入り方)
[5.iVRy VRを用いたPCのVRへの入り方](#iVRy-VRを用いたPCのVRへの入り方)
[6.最後に](#最後に)

## 動作環境のイメージ
　**VRidge**と**iVRy VR**は、どちらを使っても以下のような環境になります。
&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/7899899f-bbad-68d3-915a-ee0f86601e1e.png" width="180px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/26b9f1c2-ecb6-bfd5-3801-106347879263.png" width="80px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/fddce34f-c217-780d-50d7-c01494146243.png" width="100px"><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/247171f3-3927-56a0-b6fc-979d7c95b14a.png" width="130px">

```mermaid
sequenceDiagram;
  participant pc   as PC;
  participant wifi as Wi-Fiルーター<br>（テザリング可能ならUSBも可）;
  participant sp   as スマートフォン;

  pc   ->> wifi : PC側のアプリがスマホを探す;
  wifi ->> sp   : ;
  sp   -->> wifi: スマホ側のアプリでPC側に応答する;
  wifi -->> pc  : ;
  Note over pc: PC側のアプリが<br> 仮想のVRヘッドセット になる

  Note over pc: VRコンテンツを実行;
  pc   ->> wifi: 映像の情報;
  wifi ->> sp  : 映像の情報;
  Note over sp: VRコンテンツの映像を再生;
  sp   -->> wifi: スマホのセンサー<br>（3DoF）の情報;
  wifi -->> pc  : スマホのセンサー<br>（3DoF）の情報;
  Note over pc  : 傾きの情報を元に<br>VR内部の視点が動く;

```

## 対比表
　**VRidge**と**iVRy VR**の対比です。
|項目|VRidge|iVRy VR|
|:-----------|:------------:|:------------:|
|日本語対応|〇|×|
|PC側の連係ソフト|Riftcat<br>（[公式ホームページ](https://riftcat.com/vridge)）|iVRy Driver for SteamVR<br>（[Steamのストア](https://store.steampowered.com/app/992490/iVRy_Driver_for_SteamVR/)）|
|無料版の利用時間|5分|5分|
|無料時間を過ぎた後の挙動|連携が終了する|連携は続くが色がグレーになる|
|有料版の価格<br>（**2023年8月時点**）|19.99 ユーロ|1,000円<br>（PSVR対応版は2,000円）|
|単体で視点以外の<br>操作が可能か|可|不可|
|パブリッシャー|RiftCat Sp z o.o.<br>（ポーランドの会社）|不明（個人開発？）<br>（Steam・AppleStore・GooglePlayの全てで名義が異なっていました。）|
|無線接続|〇|〇|
|USB接続<br>（テザリング）|〇|〇|
|スマートフォン以外の対応デバイス|HTCViveFocus、OculusQuest/Go、GearVR|PSVR、OculusQuest/Go、GearVR、piconeo2/neo3|
|会員登録について|有料版購入時にRiftcatの公式ページでアカウント作成をする必要あり|Steamのアカウントがあれば良い|

　OculusQuest2とpico4については、このアプリに頼らなくてもPCに繋げてPCのVRを遊べるので表から除外しています。

　**iVRy VR**はPSVR（2は不可）でPCのVRが出来る事が魅力だと思います。
　スマートフォンを使った利用に関しては、両方を試した結果、**VRidge**の方がより使いやすくて動作が安定していると感じました。
　また、両方とも制限時間は一回の接続ごとなのでいちど終了してもう一度接続したらまた5分利用できます。
　有料版は無料の範囲でいろいろ試してからで良いと思います。

## 共通して必要なもの

・VRコンテンツが動くスペックのPC
・画面が綺麗なスマートフォン
・スマートフォン用のVRゴーグル
　（スマートフォンをセットして被るだけのもの）
・Wi-Fi（テザリングが可能なスマートフォンならUSB接続でもOK）
・PCのセキュリティ設定に関する知識（ルーター、ファイアウォール、セキュリティソフトの設定でうまくいかない場合があるため）
・Steamのアカウント（多くのPC向けVRはSteamVRで動いているため）

## VRidgeを用いたPCのVRへの入り方
※2023年8月ころの時点の情報です。
　事前にSteamのアカウントを作り終えて、SteamとSteamVRがインストール済みである前提とします。

### 1.公式サイトからRiftcatをダウンロードしてPCにインストール
　「riftcat」などで検索すると見つかります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/79bcdc25-df36-861e-a072-334a0a9f89f5.png" width="400px">

　「RiftCatInstaller.exe」がダウンロードできるので、インストーラに従って素直に入れていきます。
　「Riftcat 2.0」というソフトがインストールされます。

### 2.スマートフォンにvridgeをインストール
　こちらはGooglePlayやAppleストアにあるので検索して入れます。
　私の環境だとスマートフォン内に二つアプリアイコンが出来て、片方には「(diagnostic)」がついていました。
　どうやらこれはエラー発生時の原因究明に使う、診断モードというものの様です。（「diagnostic VRidge android」で検索すると見つかる、公式ヘルプの文章によるとそうらしい）

### 3.PC側でRiftcat 2.0を起動

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/c833148d-e7b5-f33d-3824-ed560f3a853b.png" width="580px">

### 4.スマートフォン側でVRidgeを起動

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/ce59349f-161e-1bb0-dee5-bf170ec5d694.png" width="680px">

### 5.疎通確認
 　**設定に問題がなければ自動で**成功します。
　PCとスマートフォンの接続が成功していたら以下の画面になります。
　細かい設定はここで行えます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/56a3f480-de24-638c-f4f4-569cc7b26f29.png" width="480px">

　スマホ側はメッセージが変わります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/f7e5cd44-9bfa-72be-45a7-eb5860ce1763.png" width="680px">

　変わらなければ、以下の事を試します。

**1.スマートフォン側のIPアドレスを確認**
　調査に使います。
　スマートフォン側で今繋がっているWi-Fiの詳細を見たらIPアドレスの項目があるはず……。

**2.「1.」で確認したIPアドレスをPC側のRiftcat 2.0に入力**
　PCの**Riftcat 2.0**の画面の「接続を探しています」の文字の下に「手動でIPアドレスを入力する」という文字があるので、それをクリックすると入力できます。

**3.スマートフォンとPCが同じLAN上にあることを確認する**
　スマートフォンとPCがネットワーク上で互いに見える状態である必要があります。

**4.セキュリティやネットワークの状況を確認し、必要なら接続できるように設定する**
　ルーターの管理画面に入って確認したり、PCからpingを投げてみたり、ファイアウォールの設定を確認したりします。

### 6.仮想のVRヘッドセットを起動
　この再生ボタンを押します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/7964c11a-f81c-00de-3db6-719cceae99ca.png" width="400px">

　VRヘッドセットとして起動するとこの表示になります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/313e5865-3a19-022e-f5b4-707df97cf9d1.png" width="400px">

### 7.VRコンテンツを起動

　SteamVRを起動して、以下のようにヘッドセットが認識されたらOKです。
　スマートフォンをスマホ用のVRゴーグルにセットして頭にかぶりましょう。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/01ae963c-c2e4-d7d4-a153-10cf9c1e9800.png">

　ここから先はこの仮想ヘッドセットとsteamVRの問題になります。
　状況によってはsteamVR側でセットアップをして高さなどを調整する必要が出ますが、だいたい動きます。

　SteamVR Homeを起動したらこの通り。キーボードのWで前進、Aで左、Dで右に移動可能です。
　スマホの回転に合わせて視界がぐりぐり動きます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/1d52bd15-e4fc-2305-bf7b-608cd97eacff.png" width="400px">

　時間切れになるとこうなります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/79198b81-c11b-0cfc-068a-08888911f27b.png" width="400px">

　コントローラはBluetoothなどでPCに繋げてsteamVR側でデバイスを認識する形です。
　ですが、余っているスマートフォンがもう一台あるならばそれに「vridgeコントローラー」をインストールして起動することでRiftcat 2.0がVR用コントローラとして扱ってくれます。
　タッチパネルになるのでボタンの場所が手触りで解らず操作性は悪いですが、動かすだけなら十分なものになっています。

## iVRy VRを用いたPCのVRへの入り方
※2023年8月ころの時点の情報です。
※こちらはVR内での移動手段がありません。別途VRで使えるBluetoothのコントローラを用意してください。
　事前にSteamのアカウントを作り終えて、SteamとSteamVRがインストール済みである前提とします。

### 1.SteamからiVRy Driver for SteamVRをPCにインストール
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/2eee78dd-b980-8192-626d-6fe8d832d073.png" width="400px">

### 2.スマートフォンにiVRy VRをインストール
　こちらはGooglePlayやAppleストアにあるので検索して入れます。
　「iVRy VR」で検索すると出てきます。真ん中に目玉がある白い三角形が目印です。

### 3.PC側でiVRy Driver for SteamVRを起動
　こんな画面が出てきます。とりあえずそのままにしてください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/96a64df5-6e57-651a-39f7-87ccad0e9418.png" width="480px">

### 4.スマートフォン側でiVRy VRを起動
　画面の真ん中上の歯車マーク（設定）からIPアドレスが確認出来ます。
　他にも細かい設定ができるようです。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/133a2b63-8d26-7c65-dc73-dcae329636bc.png" width="580px">

### 5.疎通確認
　PC側の方の画面の「Next」を押すと、この画面になります。
　ここでスマートフォンのIPアドレスを入力して「Detect」（検出）を押します。
　**接続が成功したら特に成功メッセージも出ずにこの画面に戻ります。**
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/707c7fd7-9838-1fdb-7abb-e80a64812e42.png" width="480px">

　ここで接続が出来なければ以下のメッセージが出るので、その場合はこのメッセージが出なくなるまで次の事を試していきます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/58ef64ee-36f9-cee3-f053-fcde236ca003.png" width="480px">

　試す事
**1.スマートフォンとPCが同じLAN上にあることを確認する**
　スマートフォンとPCがネットワーク上で互いに見える状態である必要があります。
**2.セキュリティやネットワークの状況を確認し、必要なら接続できるように設定する**
　ルーターの管理画面に入って確認したり、PCからpingを投げてみたり、ファイアウォールの設定を確認したりします。

### 6.仮想のVRヘッドセットを起動
　特にすることはありません。steamVRが起動すると自動でいろいろ動きます。

**※PCに繋げているUSBに注意してください。**
<details>
<summary>映像の送信先をUSBにしようとしてエラーになる挙動があります（2023年8月時点）</summary>
<div>
　どうやらsteamVRを起動する時に<b>USBの接続先にAndroidOSをベースにした何かがあると</b>仮想VRヘッドセットが映像の送信先をWi-FiではなくUSBにしようとするようです。<br>
　USBの先にテザリングしたスマートフォンとiVRyアプリが無ければエラーになって仮想VRヘッドセットが起動しなくなります。<br>
　上記のエラーが起きるとプロセスにiVRy配下のadb.exeが残り続け、その後の起動が全て失敗するようになります。こうなったらこのadb.exeのプロセスを手動で削除しなければなりません。<br>
　<b>エラーのウインドウも出ないので、一見では解らないエラーです。</b><br>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/e1e190d8-3b05-6137-88b7-2052ddac3700.png" width="680px"><br>
<br>
　steamVRのコンソールを開いてsteamVRの起動時のログを追っていくとUSBを見に行って落ちる挙動が確認できます。<br>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/b0f51aed-e37f-339c-1f47-f57b5c917035.png" width="320px"><br>
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/a0411919-dd7f-928e-ab43-fd1865575a04.png" width="680px"><br>
　「Found Android Device in USB Debug Mode」<br>
　そっかぁAndroidのデバイスをUSBの先で見つけちゃったかぁ。<br>
　接続に失敗したらWi-Fiの検出先の方も改めて見てくれたら嬉しかったなぁ……。<br>

</div>
</details>

### 7.VRコンテンツを起動

　SteamVRを起動して、以下のようにヘッドセットが認識されたらOKです。
　スマートフォンをスマホ用のVRゴーグルにセットして頭にかぶりましょう。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/3d75bfbe-f01a-99b6-04c1-69f53e79ea5e.png">

　ここから先はこの仮想ヘッドセットとsteamVRの問題になります。
　状況によってはsteamVR側でセットアップをして高さなどを調整する必要が出ますが、だいたい動きます。

　SteamVR Homeを起動したらこの通り。移動はできないため、コントローラが別途必要です。
　スマホの回転に合わせて視界がぐりぐり動きます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/215bdfcc-1df4-a126-2e10-bdb182f21f0c.png" width="400px">

　時間切れになるとこうなります。色が無くなるだけで、とりあえずプレイは継続できます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3536297/5ab67879-9312-f8fa-0e49-010761322c53.png" width="400px">

　コントローラはBluetoothなどでPCに繋げてsteamVR側でデバイスを認識する形です。

## 最後に
　こんにちは。休日にこんな実験や検証をやってるLAMP(Linux+Apache+MySQL+PHP)エンジニアです。
　この記事の内容はPCのVRのコンテンツにどうしてもアクセスしたいけれど、高価なVRヘッドセットがない……という場合の代替手段になると思います。
　あとは……手元に興味で買ったガジェットがあって何かできないかな、という場合でしょうか。

　今回は自分の環境だと、記事中のUSBのエラーの他にLeapMotionのsteamVR向けのドライバーも悪さをしてました……。
　LeapMotionが動く状態になっていないとドライバの読み込みでsteamVRがコケたので普段は無効化することにしています。
　そして、LeapMotionのハンドトラッキングはVR環境のUIとしては思ったより不便です。なのでがっつり楽しむなら5万円出してOculusQuest2かpico4のどちらかを買った方が良いとは思います。
　LeapMotionについても面白い事ができたら書こうと思っていますが、まだ基本的な動きを確認する程度という状態です。UnityとC#の習得に苦戦しています。

　最後に、ここまでお読み頂きありがとうございました。