「Unity5 + PS Move + PS Eye」 ペアリングから実行までのまとめ
こんにちわ、今抱えてるプロジェクトが3月末までと言われて焦り気味のころんです。
会社の案件でUnityとPS Move、PS Eyeを使ったプロジェクトを進めているのですが、ペアリングから実行するまでかなり手間がかかったので自分のまとめとして記事にしてます。
自分の開発環境はたぶんほとんど最新バージョンで組み合わせているので、このやり方でやればだいたいはうまくいくと思います()
開発環境
以下が今回実行した環境になります。
- OS : Win10 Home 64bit
- RAM : 8GB
- グラボ : GeForceGTX 760
- Unity5.3.3 64bit
PS Moveは2010年と2012年モデルの2つがあるそうですが、今回は2012年モデルのほうを使います。
Amazon.co.jp: PlayStationMove モーションコントローラ: ゲーム
Amazon.co.jp: PlayStationEye: ゲーム
PS Eyeの設定
PS EyeはPS Moveの空間位置推定用の使います。端子がUSBなので一般的なWebカメラとしてすることも可能です。
ですが、使用するためのドライバをCode Laboratorieから有料(2.99$)で購入する必要があります。Vペリカでの支払いもOKでした。
CL - Downloads - Code Laboratories
購入後、指定したメールアドレス宛にDL用のリンクを送られてきますので、落としてインストールします。インストーラー起動後はポンポンっと「Next」を押します。
インストール後、USB端子をパソコンに挿してPS Eyeの設定は完了です。
ちなみに、無料で使えるドライバが一応あるのですが、確実に動きたかったので今回はパスします。使えた方がいれば教えてください
PS Moveの設定
ここからが一番戸惑いました。おそらく、Unity + PS Moveで検索された方は以下のサイトを巡っていると思います。
ウダサンコウボウ: PlayStationMoveをPCかつネットワーク経由で使えるPSMoveServer
UnityでPSMoveを使うときの注意点 - Cross Road
Oculus用操作デバイスの検討(PSMove) - Cross Road
Copenhagen Game Collective – an experimental games collective - Unimove
以上のサイトに乗っているやり方を試しましたが、全部だめでしたね。理由として
- iPiを起動してPS Moveを接続してもそれ以降進まない!
- Motion In JoyでペアリングはできるけどBluetoothアダプタが内部で統一可されてUnityで認識しない!!
- Motion In Joyでペアリングする前にBIOSでドライバ署名を無効にしないといけない!!
- PS Move APIにpsmovepair.exeがない!!(CMakeがあるから自分でやれってことかな)
- なんとかUnityに入れてもエラーエラーエラーエラー
- そもそもPS MoveがBluetooth一覧に表示されない
などなど、いろんな要員が絡んで正直ダメかと思いましたけどできました。
動作するまでの手順は以下のようになります。
- psmovepair.exeとUSBケーブルでつなげたPS Moveを使ってとりあず仮認識
- psmove-pair-win.exeを使ってbluetoothドライバの認識
- magnetometer_calibration.exeでPS Moveのキャリブレーション
- Unityで実行
で、これらのexeファイルをここから落としてきます。
もう~感謝感謝感謝!!!って感じ
Unreal Engineと書いてありますが、必要なexeファイルは関係ないのでまるごと落としてきたほうが良いです。
USBケーブル(Mini Type-B)でPCとPS Moveを接続した状態でpsmovepair.exeを起動します。すると以下のような画面が出ます
説明通りにPS Moveの真ん中にあるPSボタン(PSマークが描かれたボタン)を押すと、SONYと書かれたマークの下にある赤色LEDが点滅します。
しばらくすると消えるので再度PSボタンを押してこれを5,6回繰り返します。
次に、psmove-pair-win.exeを起動します。
ここでBluetoothのペアリングをしますが、以下のように
!!!! Successfully connected device xx:xx:xx:xx:xx:xx !!!!
が出てくるまで、根気よくPSボタンを押してください(10秒押し続けると電源ごと消えるので点滅が消えたころに)
もともとWindows環境でのペアリングはうまくいくときと行かないことが多いので。
ペアリングが完了するとPS MoveのLEDが点灯し続けます。
次にキャリブレーションを行います。
magnetometer_calibration.exeを起動すると以下のように表示されて、PS Moveの先端が光ります。
この状態でPS Moveを様々な方向に向けます。おそらく磁気キャリブレーションを行っているためかと。すると画面上の数値をどんどん増えていくのでどこへ向けても数字が変わらないってところで、PS Moveの中央上にある縦長のボタン(Moveボタン)を押します。
ちなみに自分は287.0が限界でした。
次に、PS Moveを垂直に立てた状態にして、Moveボタンが自分の正面に来るように持っていきます。すると自動的に解析が始まるので、そのままの体勢を維持します。終わると自動的にプログラムを終了します。
解析が始まらない場合は、場所を変えたりしてみてください。
Unityでの実行
ここまでやればほとんど終わりです。PS Move APIをUnity5で動かせるようにしたリポジトリがあるのでそれを落としてきます。
このプロジェクトファイルをそのままUnityで開いて実行します。
「Play」ボタンを押すと
するとPS Moveで動かした姿勢がモデルに反映されます。
カメラが見つかりませんなどのエラーが出た場合はカメラのUSBを1回抜いたり、Unityごと再起動すると直ります。
面倒ですが、パソコンを再起動するたびにこれらのことをしないといけないそうです。
まとめ
以上がUnityとPS Move、PS Eyeを使った環境構築方法です。
これ以外で簡単な方法があれば教えてくださいw
PS Moveを使ってみた感想としては、かなりいい精度トラッキングしてくれます。姿勢検知も問題なく動作しますし、Wii Remoteより断然いいです。
ある程度予想はしていましたけど、ここまでほぼ半日かかりました。
これでやっとプロジェクトを進められます!!