FOVE届いたので弄ってみた

# FOVEって何？

アイカメラがついてて視線や注視点を検出できるVRHMD。VRHMDとしての性能はOculusCV1と同格。今から買っても$599と結構安い。[ここ](https://www.getfove.com/)で買える。

# ここで注意

[OSVR](http://qiita.com/tarosuke@github/items/c0b350049d3de57bc3ac)と同様、AMDのグラボだとトラブルが多く、該当する場合2017年頭の現状ではお勧めできない。要件にはR9を使えるようなことが書いてあるけどRX480では使えなかった。

それとUSB3.0(以後USB3)のポートが要るかも。

# 届いたら

* USB接続のカメラをそのへんにセットアップ
* 本体のケーブル(USB2、USB3、HDMI)を繋げられるところに繋ぐ

注意点は「USB2とUSB3を間違えない」くらいでViveやOSVRみたいな面倒はない。VRHMDの結線としてはシンプルな方。それとフェイスプレートの予備が付属しているのはちょっと気が効いてる。

ちなみに、ポジトラ用のカメラはOSVR-HDK1のものと同一。

セットアップは[TakaoIto氏の記事](http://qiita.com/TakaoIto/items/d127c588e0fe86d879e9)に詳しいので参照してみて。

# 被ってみる(調整)

FOVEのベルトの長さ調整は三つともうしろ側で折り返して二次元ファスナーで留めるようになっている。

# ソフトウェアの準備

FOVEはまだハックしてないので普通に使う想定。

[開発者ページ](https://www.getfove.com/developers/)から[ランタイムとかドライバとか](http://archive.getfove.com/setup/setup_fove_0_10_0.exe)を落としてインストールする。出来合いのソフトを動かすだけならこれだけでおｋ。早速設定ツールを動かしてポジトラカメラの画像を表示してカメラの向きとか調整してみたり、キャリブレーションツールを起動して視線検出とか調整しておくといい。

# 普通はここまでだけど、まだソフト少ないよね？作るよね？

以後は開発者向けの情報。とは言ってもハックまではしないでUE4で使えるようにするだけ。

# SDK

[開発者ページ](https://www.getfove.com/developers/)から[SDK](http://archive.getfove.com/developer/FOVE_SDK_0.10.0.zip)を落としてインストール。

# UE4

ソースからビルドするのでVS(VC++)が必要。コミュニティ版とかならダウンロードできる。リンクは気が向いたら貼るのでそれまでは自分で探しておくれ。

### ソースの取得

最終的には[FOVE用エンジン](https://github.com/jbfove/UnrealEngine/tree/release/Engine/Plugins/Runtime/FoveVR)を落としてくるんだけど、その前に[GitHub](https://github.com/)のアカウントと[UE4](https://www.unrealengine.com/)の開発者アカウントが必要。そのへんの説明は[FOVEの開発者ページ](https://www.getfove.com/developers/)にある。

普通は[ここ](https://github.com/jbfove/UnrealEngine/)からツリーをzipで落としてくるあたりだろう。緑のボタン/メニューに書いてあるのでそこまでは説明しない。

## ビルド

UE4エンジン全体をビルドしてもいいけど説明通り適当なC++プロジェクトにFOVEプラグイン部分だけをコピーしてもいい。問題はそこではなく説明に書いてない以下の引用のような部分。

~~~
393 : 名無しさん┃】【┃Dolby (ﾌﾘｯﾃﾙ MM5e-B+LO)2017/01/27(金) 21:59:38.56 ID:3R+/DKhjM
一応手順などを書いてみる。。 
1. Unreal Editor 4.14.3 を起動。新規 C++ プロジェクトを作成。 
自分は First Person テンプレートを使った。 
2. Visual Studio がプロジェクトを作成し終わったら、Visual Studio を終了。 
3. <project_root>\Plugins フォルダを作成し、そこに github からチェックアウトしたFoveVR をコピーする。 
4. SDK の bin\FoveClient.dll と lib\FoveClient.lib を FoveVR\Source\ThirdParty\FoveVR\FoveVR_SDK_0_9_3\bin 
とか FoveVR\Source\ThirdParty\FoveVR\FoveVR_SDK_0_9_3\lib に置くのでは*なく*、FoveVR の下に 
Binaries\ThirdParty\FoveVR\FoveVR_SDK_0_9_3\x64 というフォルダを作成し、両方ともそこに置く。 
<project_root>\Plugins\FoveVR\Binaries\ThirdParty\FoveVR\FoveVR_SDK_0_9_3\x64\FoveClient.dll 
<project_root>\Plugins\FoveVR\Binaries\ThirdParty\FoveVR\FoveVR_SDK_0_9_3\x64\FoveClient.lib 
5. <project_root>\俺様プロジェクト.uproject を右クリックして Visual Studio のプロジェクトファイルを 
再生成する 
6. 俺様プロジェクト.sln で VS を起動し、ビルド。実行。 
7. 俺様 Unreal Editor が起動したら、編集 -> Plugins で Project に Virtual Reality / FoveHMD があり、 
Enabled がチェックされていることを確認。 
8. プレイ -> VR プレビュー。 
　 注意 : このとき Compositor が起動していないと（星空が見えていないと）エディタがハングする。
~~~

要はFoveClient.libとFoveClient.dllをFoveの.upulginファイルがある場所に一緒に置く。これをやったらビルド(やらないとビルドに失敗する)。そしてビルドしてできたバイナリだけを素のエンジンのプラグインとして登録しとけば次からは一々ビルドすることもないしBPのみのプロジェクトなのにソースからビルドする必要もない。

# 総じて

* 比較的安価(私ゃbackerなのでもっと安かったが待たされたw)
* NVIDIAグラボで使うのが無難
* ケーブルは比較的シンプルだがもっとどうにかなるはずだ
* キャリブレーションは結構乱暴(ちゃんと見えてないのに進んじゃう)
* たぶんPC側ソフトはOSVRとほぼ同じ
* 2017年1月に出荷が始まったばっかりでソフトが揃ってないけど対応VRHMDを追加するのにそんなにコストはかからないのですぐ対応してくると私ゃ予想してる

## キャリブレーションについて

FOVEのセットアップで視線検出をキャリブレーションするんだけど、VRHMDに限らず現実でも奥行き方向に連続した物体が表示されてないと大雑把な立体感を感じにくく、輻輳角を調整しにくい。

人間は輻輳角だけで立体を認識しているわけではないし、最初から輻輳角で立体視しているわけでもない。輻輳角しか奥行き情報がなければ探査して正解を探さなければならないので時間がかかる。

2017年2月初頭の現状ではFOVEのキャリブレーションツールは何もない空間に丸が配置されるだけでポジショントラッキングも効いていないので非常に使いにくい。この点はまず改善を望むところ。