お金のない人の足トラッカー講座(低価格バーチャルキャストチャレンジ)

これはニコニコのブロマガが2020年10月に終了することにあたって移行したもので、2020年03月08日に作成した物の転載になります。
https://ch.nicovideo.jp/kou1niko/blomaga/ar1866707
この手の記事だったらQiitaに書いても良いと信じて。

# 前書
一般にバーチャルキャスト、VRChat等で手と足以外を動かそうと思うと、HTCさんのトラッカーを使う必要があります。

<img src="https://www.moguravr.com/wp-content/uploads/2017/02/201702011112078000-1.jpg" width="50%" alt="参考画像"/>

(引用元: https://www.moguravr.com/taipei-vr/)

なので以下の費用が一般には必要になります。

* トラッカー 2個(腰にもつけると3個) ＞30000円～45000円位
* HTC Viveを使ってない場合ベースステーション＞17000円位

なので追加で必要な予算は30000円～62000円になります。

毎度、ここらへんのコンセプトは<span style="color: red;">「お金がなければ手間をかける」</span>となっています。<br>
なので手を動かして少しでもそういう雰囲気に近づくために出来ることを書いてみます。


# 今回の方法

[Driver4VR](https://www.driver4vr.com/) というアプリが昔からあります。
これはVR向けの複数種類のトラッキング情報を入り混ぜて使用する為のアプリで、

* 頭と手の情報はHMDとコントローラを使って他の体の情報はKinectを使う
* 3DoFのHMDを使って頭や手足の情報はPSMoveを使う
* 頭の情報は3つのLEDの位置関係から距離と位置を検知するOpenTrackを使い、手足はゲームコントローラを使う

の様に複数のデバイスの手足頭の位置情報デバイスを入り混じって使用できるようになるものです。
今回使用するのは、2019/11/27に追加された、「QRコードを張った箱をニセトラッカーとして使う」方法です。<br>
(元情報は[こちら](https://www.driver4vr.com/forums/topic/driver4vr-body-tracking-with-camera-markers-alpha-relase-1/)になります。)

## 用意するもの
* PSEye<br>
  ないしはFPS値ができるだけ高いWebカメラ
* トラッカーの代用とする[マーカー画像](https://www.driver4vr.com/files/Driver4VR%20Markers-Alpha1.pdf)を印刷したもの。
* ダンボールなど上記の画像を箱状に配置する手段<br>
後述する画像のようなものを作れるものを用立てて下さい。
* 足に固定する方法<br>
クロックスなどが便利です。
* [Driver4VR](https://www.driver4vr.com/) <br>今回の内容を実現するアプリです。$19.97 (約2500円)ですが、7日間について連続10分間の試用期間を持つことが出来ます。

## 方法の概略

今回の方法について概略について記載します。<br>
2019-11-27に[Driver4VRのα版アップデート](https://www.driver4vr.com/forums/topic/driver4vr-body-tracking-with-camera-markers-alpha-relase-1/)があり、以下の機能が追加されました。

* Aruco Markerと言う高速認識に適したQRコードを箱状に配置して、そのQRコードの向きを判定することで、トラッカーの代わりが出来る。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/ebcc3484-ad65-621e-177a-c40992c84c7d.jpeg" width=25%)</img>
* トラッカーを撮影するカメラが1つ必要でそれがあれば場所を特定することが出来る。<br>
カメラの性能が必要で、出来れば60fpsで撮影可能なものが必要なのですが、恐らく一番安価で入手可能な60fps出すことが出来るWebカメラが中古のPSEyeになります。<br>基本的に中古のPSEyeは現在1500円～3000円位で買うことが出来ます。
* 2個のAruco Markerの箱を足につけて、足トラの代替とする。

んでは実際の方法になります。

### マーカーを作る
1. [マーカー画像](https://www.driver4vr.com/files/Driver4VR%20Markers-Alpha1.pdf)を印刷します。<br>試してみた所、カメラから220cm x 140cm 程の範囲をトラッキングしようと思った際には、マーカーのサイズは13cm四方が必要でした。640x480ではそれより小さくなると判別できないようです。<br>A5サイズで印刷すると丁度13cm四方になります。<br>四方＋天井の合計５枚で１セットになります
2. 足につけるための箱を作ります。<br>足を囲う形で配置する必要があります。つま先、かかと、足の左右についてQRコードを配置する必要があるので自分は写真のような形にしました。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/999abe99-0a6f-fa77-6594-54f9803dec8f.jpeg" width="25%">
3.  箱を靴などに固定します。自分は紐で固定していますが自分で良い方法があるればそれを使ってください。マーカーを貼るより先にやっておいたほうが楽と思われます。後述のマーカーを貼った画像を参考にしてください。
4.  箱にマーカーを貼ります。<br>1のマーカー画像には下にラベルがあります。マーカー画像には種類があり、それを意識して貼り付ける必要があります。<br>
    * Key Marker<br>認識の中心になるマーカーです。Tracker0は0番、Tracker1は6番の数字が割り振られています。<br>足の甲の場所に張ってください。理由は後述します。
    * Secondery Marker<br>前後左右に貼ってください。必要なことは __<span style="color: red;">必ずKey Markerと同時に見えることができる場所に貼る</span>__ 事です。後のキャリブレーションにて5枚のQRコードの位置関係を把握するために必要なようです。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/8a892eb2-6615-f771-7dcc-5a5e26cafaa6.jpeg" width="75%"><br>矢印が書いてある箇所がKey Markerです。<br>これで他の４面は必ずKeyMarkerと隣り合った状態になります。

これを左右２足分作ります。
Tracker0とTracker1の紙がありますので混同しないようにしましょう。
自分は貼り付けるのに両面テープを使いました。最初は糊を使ったのですが水分で紙が波打つ事がありそれを避けられます。

### カメラを設置する

カメラを設置します。<br>PSEyeがおすすめなのでその設置について記載します。他のWebカメラについては各Webカメラの取扱説明書に従っていただくことになると思います。<br>
カメラの設置については部屋の状況によって良い方法がまちまちと思います。なので自分が実際に設置してみて必要と思った要件について書こうと思います。

*  カメラ位置は低いほうが良い<br>当初は上から見下ろす形が良いかと思い高いとろこにつけていましたが、後述の理由により低いところが良いと判明しました。必要な床と自分の足が動く範囲について写る所で低めにしてください。
*  画角は地面と平行のほうが良い<br>前後の動きをした際に床面に対して仮想のトラッカーが動くわけですが、どうやらカメラの水平面を地面として動かしているようです。なのでカメラを下向きに設置すると、手前に行くと空を飛び、奥に行くと地面にめり込みます。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/f9e046c7-0244-2296-17bb-3c3e15227411.png" width="50%">

自分は３脚を一番低い位置で備え付けて、スマホを挟み込むタイプのマウントでPSEyeを固定しました。これで２m四方位の空間を追いかけることができます。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/e9128c8a-6e07-c211-0689-fc410812efed.jpeg" width="25%" >

  PSEyeは内臓のドライバでは使用することができないので、専用のドライバをインストールする必要があります。<br>自分の知る限りではIPI Softさんのドライバーを使うのが一番ラクでした。<br>[こちら](https://github.com/psmoveservice/PSMoveService/wiki/PSEye-Software-Setup-(Windows))の「Option A) IPIsoft PSEYE Driver Installation」に書いてあるものをインストールするのが良いと思います。

### Driver4VRをインストールする

今回の方法の肝であるDriver4VRをインストールします。[こちら](https://www.driver4vr.com/download/)からダウンロードしてください。購入の有無を確認するためにアカウント登録を要求されます。<br>
購入とセットアップについては[こちらが](http://kurotori4423.hatenablog.com/entry/2017/12/25/223120)わかりやすいです。

### マーカーのキャリブレーション

ここまでで行ったら、マーカーを使えるようにする作業になります。<br>
箱に貼ったマーカーの位置関係をDriver4VRに登録する作業になります。

1. Driver4VRを起動してBODY TRACKINGの項を「camera marker」に切り替えます<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/ef9c62d2-7213-b432-ea30-e3234c08125c.png"> 
2. 上のStatusの所にある「Start Driver4VR」ボタンを押して開始します。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/abe20f05-4fc2-a935-6ffc-5f23e49747a2.png">
3. 「Camera Marker settings」を押して対象の画面を表示します。<br>カメラの種類を選んで画面に出るようにします。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/1e94f241-68a1-1a10-3fce-cc9e4c4cc38b.png"> 
4. 最初は「Marker Caribration」の項がすべて「not caribrated」になっていると思います。写真のようにKeyMarkerともう一つのマーカーがセットで映るようにすると、しばらく経って「Caribrated」になります。<br>全て変わったらマーカーのセットが出来上がりです。Tracker 0とTracker 1双方についてやってください。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/46806ac7-52ed-a77b-36a1-b426ef1f423f.png">

ここまで終わったらCamera Marker settings 画面を閉じることができます。

### 仮想トラッカーのキャリブレーション

ここまで来るとQRコードのマーカーとSteam内での仮想トラッカーが連動するようになっています。<br>
ただ仮想トラッカーの位置と、実際の自分の足の位置がずれているので位置を合わせる必要があります。

Top画面の「Calibrate」を押すとドロップダウンで「Manual」のセッティングのボタンが出てくるので選択します。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/e5e38347-10d0-2870-9b6e-046b83adc7d4.png">

そうするとBody Tracking画面が出てきますのでVRヘッドセットをかぶります。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/49630ba5-ee44-da41-b18b-111f3114d12c.png"> 

恐らく、自分の足元か後方にカメラと仮想トラッカーのオブジェクトが見えるはずです。<br>「Calibrate with VR Controller」の操作をして自分のVRで見た位置と自分が目視したカメラの位置をだいたい合わせます。そうすると仮想トラッカーの位置と実際の自分の足腰の場所が大体あってきます。<br><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/10406/c3cf0d41-6f32-e8f0-13ff-3f61e7138645.png"> 

これで仮想トラッカーが使える状態になっています。バーチャルキャストを起動して足の動きを確かめてみましょう。

# 終わり

紙、ダンボール、PSEye、Driver4VRでとりあえず足マーカーを2つ作る話でした。<br>
ちょっとしたことや座った姿勢を取ることが結構出来たります。本物のマーカーには当然及びませんが合計数千円で実現できるのはまぁ選択肢としてあっても良いかも知れません。