＄1-1「Ovrvision Pro（ステレオカメラ）のセットアップをして実際に動かしてみる」【ヘッドマウントディスプレイとUnityでVRとかMRの開発をやってみる．】

#はじめに

VRの開発をしていく中で折角ならARも並行して開発しようと思い，高画質なステレオカメラである[Ovrvision Pro](https://www.amazon.co.jp/dp/B01N7H8YUM/ref=cm_sw_em_r_mt_dp_6TGRDF5BWQPW2PJ1H4WN)を触りながらメモしていきます．2021年6月現在の最新版を手探りで開発しているので間違い等があるかもしれませんが解説というよりメモ書きを読む感じでお願いします．
Ovrvision ProのSDKとの互換性の関係でUnityのバージョンはVIVE Pro Eye解説記事の2020と違って2019.4.27f1を使っています．SteamVR Plugin（OpenVR）のセットアップ手順が少し違うだけで解説記事のスクリプトとかはそのまま使えます．この記事も2020と2019のスクリーンショットが混じっていますが2020だとクロマキー等の一部機能が使えません．



環境一覧
[SteamVR](https://store.steampowered.com/app/250820/SteamVR/?l=japanese) 1.16.10
[Unity](https://unity3d.com/jp/get-unity/download) 2019.4.27f1 or 2020.1.17f1（動作確認済み，非対応なSDKあり）

[SteamVR Plugin](https://assetstore.unity.com/packages/tools/integration/steamvr-plugin-32647) 2.7.3
[Vive SRanipalRuntime Plugin](https://hub.vive.com/en-US/download) 1.3.2.0


追加アクセサリー
[VIVEトラッカー2018](https://www.amazon.co.jp/dp/B0748ZY323/ref=cm_sw_r_tw_dp_QDZSM4A3844PSM33DB3R?_encoding=UTF8&psc=1)
[Ovrvision Pro（ステレオカメラ）](https://www.amazon.co.jp/dp/B01N7H8YUM/ref=cm_sw_em_r_mt_dp_6TGRDF5BWQPW2PJ1H4WN)
[Leap Motion](https://www.amazon.co.jp/Leap-Motion-Controller/dp/B075T4MH77/ref=asc_df_B075T4MH77/?tag=jpgo-22&linkCode=df0&hvadid=342463500927&hvpos=&hvnetw=g&hvrand=13721783060484696807&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009320&hvtargid=pla-945077929421&psc=1)


使用PCスペック
インテル® Core™ i7-7700K
NVIDIA GeForce GTX 1070

- **環境作成編**

 #1 [Unityのセットアップをする](https://qiita.com/RyoyaHase/items/5a173b7acbdf9aa2cfff)　2021年 1月更新

 #2 [プロジェクトを作ってみる](https://qiita.com/RyoyaHase/items/7b2148e9034584db7420)　2021年 1月更新

 #3-α [Unity2019でVR開発のための環境を整える（SteamVR Plugin2.7.Xをインストールする）：推奨](https://qiita.com/RyoyaHase/items/36910ec8a0b3d8122f8c)　2021年 6月更新

 #3-β [Unity2020でVR開発のための環境を整える（SteamVR Plugin2.7.Xをインストールする）](https://qiita.com/RyoyaHase/items/b7b5f8a7110810c1c0f1)　2021年 5月更新

 #3-おまけ [UnityでVR開発のための環境を整える（SteamVR Pluginの最新版をインストールする）：非推奨](https://qiita.com/RyoyaHase/items/f8b4fb5b04d9f02aae49)　2021年 2月更新

 #4 [SteamVRのダウングレードと自動アップデートの停止（上級者向け）](https://qiita.com/RyoyaHase/items/0dab278b080f517032a0)　2021年 5月更新


- **コントローラの入力やトラッカー，HMDの位置座標，回転座標を得る＋α**

 #5 [VIVEコントローラのボタン入力を取得する](https://qiita.com/RyoyaHase/items/89ffc9d134b784b8ae50)　2021年 2月更新

 #6 [トリガーの押し具合やトラックパッドの位置情報の入力を取得する](https://qiita.com/RyoyaHase/items/81fa026f68aee02fa5d4)　2021年 2月更新

 #6-おまけ [VIVEコントローラを使った開発をする時のおすすめ設定（独断と偏見）](https://qiita.com/RyoyaHase/items/d622e1bb0e345cf78f4f)　2021年 5月更新

 #7 [ヘッドマウントディスプレイとコントローラの位置座標と回転を取得する](https://qiita.com/RyoyaHase/items/325e7250c01f47e7e63b)　2021年 2月更新

 #8 [VIVEトラッカー2018を有効化してUnity上で位置座標と回転を取得](https://qiita.com/RyoyaHase/items/015bbb8671833ef8e740)　2021年 5月更新

 #9 [VIVEコントローラの振動機能を開発してみる](https://qiita.com/RyoyaHase/items/0690761fed2e71f6d517)　2021年 4月更新


- **VIVE Pro Eyeのアイトラッキングを使ってみる**

 #10 [VIVE Pro Eyeの視線トラッキングを有効化（セットアップ）する](https://qiita.com/RyoyaHase/items/024f3589547d1af84a92)　2021年 4月更新

 #11 [VIVE Pro Eyeのアイトラッキングを使ってUnity上で瞬きや視線のデータを取得する](https://qiita.com/RyoyaHase/items/5af948666a039d48a68d)　2021年 4月更新

 #11-おまけ [VIVE Pro Eyeのアイトラッキングで計測できるデータについて（適宜更新）](https://qiita.com/RyoyaHase/items/044826488e763f896a0f)　2021年 4月更新


- **VIVE Pro Eyeのカメラを使ってみる**

 #12 [VIVE Pro Eyeのフロントカメラの解像度（性能）とAR機能を有効化について](https://qiita.com/RyoyaHase/items/853938ec7c8745ec811c)　2021年 5月更新


- **小技**

 [プレイエリアの境界線（シャペロン境界）が表示されないように設定を変更する](https://qiita.com/RyoyaHase/items/57296d7753877afc6f34)　2021年 6月更新

 [Unity上でカメラを複数台追加してHMDやコントローラの動きを見る](https://qiita.com/RyoyaHase/items/4b4733503d53c8387db4)　2021年 6月更新


- **Ovrvision Pro（ステレオカメラ）を使ってAR開発してみる**

 ＄1-1 [__Ovrvision Pro（ステレオカメラ）のセットアップをして実際に動かしてみる（この記事）__](https://qiita.com/RyoyaHase/items/262ad2133ee89d00b3cb)　2021年 6月更新

 ＄1-2 [Ovrvision Pro（ステレオカメラ）とHMDを使ってARアプリ開発する](https://qiita.com/RyoyaHase/items/4abcd90f0f2319c89114)　2021年 6月更新

- **Leap Motionを使ってハンドトラッキングしてみる**

 ＄2-1 [Leap Motion（ハンドトラッキング）のセットアップをして実際に動かしてみる](https://qiita.com/RyoyaHase/items/6891c21c8c21dcb08b2f)　2021年 6月更新

 ＄2-2 [Leap Motion（ハンドトラッキング）とHMDを使ったインタラクティブなアプリ開発する](https://qiita.com/RyoyaHase/items/b0f6cd1d7474286f99ed)　2021年 6月更新

- **アプリを作ってみる**

  [VR（仮想空間）上に曲面ディスプレイを作成して大画面で広角WEBカメラ映像を見る](https://qiita.com/RyoyaHase/items/cc57e67799c1b14ef15d)　2021年 5月更新


今回の記事では，

1．Ovrvision Proの動作確認をしてみる．
2．キャリブレーションを行う．
3．Unity上で実際に動かしてみる．
3．ARマーカーを使ったサンプルプログラムを動かしてみる．

という流れ．

#1．Ovrvision Proの動作確認をしてみる．

まずはヘッドマウントディスプレイ（VIVE pro eye）にOvrvision Proを貼り付けます．付属の両面テープは粘着力が強すぎて剥がす時に汚くなりそうなので養生テープで貼り付けました．
![00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/4d7f3786-abe9-cd9d-c5f1-e1a4f6007f61.png)

まずはカメラの動作確認をするためにSDKをダウンロードしてきます．
[公式ページ](http://ovrvision.com/setup/)にアクセスして"DEVELOPERS&SETUP"ページにアクセスします．
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/81734fcf-5eed-e75d-4c56-2941ff999b6e.png)

今回はUnityでの開発ですが，まずは"for Windows"をダウンロードします．
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/9e4c810c-e004-b8b2-6e8c-ce078a281069.png)

とりあえずダウンロードしてきたものを解凍します．
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/74ce65db-e716-4546-84f8-006e5ac2a341.png)

解凍したovrvisionprosdk_windowsフォルダ内にある
"\ovrvisionprosdk_windows\ovrvisionprosdk_windows\bin\x86"フォルダ内のovrvision_app_csharp.exeを起動します．
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/0994424f-508a-ccd1-5790-fbc0dd72e6de.png)

こういう画面が開きます．
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/288f8743-380e-f2a2-b9e1-765f6012eedb.png)

左上に画質選択画面があります．
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/1787fd57-e955-f518-e6cc-9b27465b4d40.png)

画質を選択したら横の"Open Ovrvision Pro"を押すと画面が映り，"Close Ovrvision Pro"で画面が閉じます．
画質のいい映像を送る関係上挿す場所や延長ケーブルによっては動かないこともあるので一応最高画質が動くようなケーブルを使いましょう．自分の環境では2mの延長ケーブルなら問題なく動きましたが5mだとダメでした．
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/9b11ad7f-bb6a-ce26-1728-7ddc7c35040b.png)

#2．キャリブレーションを行う．

動作確認ができたら
"\ovrvisionprosdk_windows\ovrvisionprosdk_windows\tool"フォルダ内のovrvision_calibration.exeを起動します．
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/f04dc001-0986-5080-9e5c-0202d20a8972.png)

キャリブレーション用のアプリが起動するので"Open Ovrvision"を押します．
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/aad53f6a-5ea9-ee4b-7e92-3c311d0e941e.png)

右上のモニターに映像が映っていれば問題なくカメラが動いています．
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/ca5a5897-00c7-a813-e35f-90c91c76b1ce.png)

カメラが問題なく動いていれば"Start Calibration"を押します．
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/171348c9-d8bf-d980-bd62-4430886794f1.png)

定規で黒マスのサイズを測るように言われるのでモニタに定規を当ててサイズを測って入力します（モニタに傷がつきそうで怖い）．
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/225d0cab-cfa1-1fe8-3f5c-7fe6a1070054.png)

サイズを入力したらキャリブレーションのやり方が説明されます．
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/1d37c319-8c20-b535-d187-79960e0789a4.png)

説明通りマス目がすべてカメラに収まるように少しづつ動かしながら"Find Chessboard"を押して合計25枚の写真を撮ります．
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/79d1d5fb-1cc2-b853-ec38-132e42611aee.png)

25枚撮り終わると自動的に調整され"Setup in the ... OK!"と表示が出れば大丈夫です．
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/42744276-3ea9-fb72-529b-eb0eb8130a4c.png)

画面の反射等で結構キャリブレーションは失敗するので次の工程で変に映像が歪んでいたらキャリブレーションし直しましょう．

#3．Unity上で実際に動かしてみる．

ふただび[公式ページのDEVELOPERS&SETUP](http://ovrvision.com/setup/)にアクセスして""for Unity"をダウンロードします．
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/126b24f6-ccad-906c-c5ef-c4f215fbc7eb.png)

ダウンロードしたSDKは解凍して分かりやすいとこに置いておきます．
![17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/107e46b6-5acb-d32e-01b9-8ac304feb907.png)

まずUnity2019.4.27f1でプロジェクトを作成し，Edit→Project Settingsを開きます．
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/6f935e4a-d03a-ce15-d01c-0cbf6ef174a1.png)

Project Settingsタブが開いたらXR Plugin Managementの項目を開き，"Install XR Plugin Management"を押して設定をインストールします．
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/9c455cc0-6760-5fdb-5e7d-973f43aa4d0f.png)

インストールが完了すると，各VR環境を有効にするか聞かれますが今回はOpenVRでの開発なのでチェックマークは入れなくていいです．
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/4d27b03c-46b2-fd66-9337-33f27b6353e9.png)

Project Settingsタブ内のPlayerの項目を開き，Virtual Reality Supportedの項目にチェックマークを入れます．
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/9ab2e364-9a9a-b6ce-cfad-0dbcead728bd.png)

色々聞かれるのでとりあえずOKしとく．
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/05a4faac-a1db-256b-b641-f345b83ae6ca.png)

確認ダイアログもOK．
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/5082a247-9e15-4c5c-16db-69cc65c0f31e.png)

一回目は色々聞かれるだけでチェックマークが有効にならないのでしっかりとチェックマークが入っていることを確認する．
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/08979603-dc38-1241-03b9-8bf881925a71.png)

このままだとSDKが１つも入っていない状態なので，Virtual Reality SDKsのリスト右下のプラスボタンからSDKの追加を行う．
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b4f83c54-2d2f-4f44-121a-20b4544ec873.png)

今回はVIVEを使っているのでOpenVRを追加する．
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/0a495243-a945-66a3-5538-9f0409a819d4.png)

リストにOpenVRが追加されている状態になっていればOk．
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/45ceb515-f853-8f52-d084-1d14eae0e282.png)

Assets→Import Package→Custom Packageを押します．
![18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/e80be2dd-f4af-682c-981c-df3464e0a6ff.png)

先ほど解凍した"\ovrvision\ovrvisionprosdk_unity\ovrvisionprosdk_unity/unity2019_ovrvision.unitypackage"を開きます．
![19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/a9d8e6b7-8be8-053e-5b4a-a514ad4bf2d6.png)

何を入れるのか聞かれるのでデフォルト設定のまま"Import"を押します．
![20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/cb0dfc5e-d3c3-6403-13d9-c7da681a3de2.png)

サンプルとして，インポートした"Ovrvision Pro/Demos"内のar_demoというサンプルシーンを開きます．
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/77cc8ec6-5e42-7dd8-1638-18d05925b8c5.png)

シーン内にあるOvrvisionProCameraを選択すると，パラメータが色々割り振られています．
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/473b47a1-2214-e12b-9c46-ba38b332304e.png)

今回はとりあえず画質を900*900にしておきます．
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/0c62dc94-f499-fd87-f5f5-ef864ae94283.png)

プログラムを動かすとこんな感じで動きます．もし片目しか映らない場合には次の＄2-2の記事を試してみてください．
![24.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/bd8599ce-2199-b6e2-b521-238ee2b3a394.gif)


#4．ARマーカーを使ったサンプルプログラムを動かしてみる．

UnityのSDKの"\ovrvisionprosdk_unity2.0\marker_samples"フォルダにマーカーのサンプル画像があるのでこれを印刷します．
![32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/83104c83-20ec-95fa-3abf-53ecd61775c5.png)

こんな感じで印刷されます．
![image0.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/f3cb21f1-60c8-af46-d32a-a245152e9fbd.jpeg)


さきほど開いた"Ovrvision Pro/Demos"内のar_demoというサンプルシーンにあるOvrvisionProCamera内のパラメーター内に
Use the OvervisionAR：AR機能を有効
AR Maker size(meter)：ARマーカのサイズ（m単位）
というパラメータがあります．デフォルトでUse the OvervisionARにはチェックマークが入っており，AR Maker size(meter)にはサンプルで印刷したマーカーの0.15m(15cm)という値が入っています．
![33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/b5dd2a9e-a19e-9fe0-3f9c-e1dc53e67be6.png)

また，マーカーを表示させるためのオブジェクトであるOvervisionTrackerを選択すると，
Maker ID：何番のマーカーに反応するか
Time To Disappear：マーカーを見つけてから何秒間表示するか
のパラメーターが入っていますので適宜変更してください．
![34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/c310c7dd-93f8-f51b-f225-eec1fd72d81e.png)


さきほど印刷した64番のARマーカをOvervisionでみるとOvervisionTracker内にあるCubeが表示されます．
![35.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758746/81bafad0-0af7-a2f7-47c6-9437c11da52f.gif)


こんな感じで実際にサンプルを動かしてみました．
次回の記事ではもっとインタラクティブなMR空間を作れるようにOvervisionとSteamVR Pluginを組み合わせながら0からアプリを作っていきます．