UnityでMoverio BT200向けアプリを作った話

こんばんは。
本日のエントリーは、Unity2 AdventCalendarで宣言したUnityでMoverio BT-200向けアプリ作った話についてです。

■まず、その前にMoverioというガジェットについて説明したいと思います。

Moverio BT-200は、EPSON製のARグラスです。
OSは、Android 4.0.4 とかなので、アプリも作れます!!
そして今回は、そのアプリをUnityで作ったお話になります。

Moverioのガジェットとしての魅力は、全ゲ連という所で私がお話ししたスライドがあるので、詳しくは以下を見ていただければと思います。

未来ガジェットMoverioを手に入れたぞ

■で、結局どうすれば、Unityで作れるの??
基本的には、通常のAndroidと同じで、Android向けにapkを吐き出せばアプリが作れます。
(というか、既存の他のapkも入れさえすれば動きます…)

ただ、いくつか面倒なことがありますので、ここではその辺について書きたいと思います。

1.USBデバッグ環境を設置するのが面倒…。
「Build&Run」で、直接実行したい場合に、Moverio側のファーム書き換えをしないと、USBデバッグ機能がONになりません。
また、USBデバッグをONにしても、PC側にUSBドライバーを入れないといけません。
この辺は、Moverioの開発者向けサイトに実は詳細のPDFがあったりします。

技術情報→サポートツールで遷移したこのページに色々な情報が載っています。
「開発者用システムソフトウェア適用手順書」に、MoverioでUSBデバッグ機能をONにするためのファーム書き換えの手順が詳細に書いております。基本的にEPSON側で用意されたファイルを実機で取得して実行する形になります。

そして、PC側にUSBドライバーを入れるのも、同サイトにある「MOVERIO ADB USBドライバーインストール説明書」を参考にすれば出来ると思います。

ただし、私がWindows10上で入れようとしたところ、「署名なしドライバ」だったために色々面倒でした。
Windows10で署名なしドライバをインストールする方法/テストモードにする方法を参考に、ドライバをインストールしました。何度もPCを再起動して面倒だった記憶だけは確かです。

2。いくつかの拡張APIがあります(使用しなくても、アプリ動作には問題がないですが…)
Moverioでしか使わないような幾つかの機能を利用するためには、SDKダウンロードページよりSDKを落としてくる必要があります。

Moverioでしか使わないような機能というのは下記になっています。
・ディスプレイ輝度の変更API
・SideBySide立体視モードと通常表示モードの切り替え
・メガネ部分のジャイロ・加速度センサーを取得するのか、コントローラー部分のジャイロ・加速度センサーを使うのか切り替え
という感じです。
詳しい使い方等は、これまた例のサポートツールページ上にあります「開発者向け技術資料」にて、使い方を丁寧に書かれていますので、そちらを参照してください。

※ただ、メガネ部分とコントローラー部分のどちらの加速度センサー等を使うかを切り替えるAPIを試したみたところ、データ切り替わるまでに時間がかかるっぽく(2秒~3秒)、切り替えが終わったかどうかが検知できません…(なので割と使い物にならなかったです…)
どちらの値も同時にとれるようなAPIがすごく望まれます…。

3.メガネ部分にジャイロや加速度センサーが積んでいますが、Oculusとかと違って自前で処理を書かないといけない…。
Input.gyro.attitudeを用いて、回転を処理しないといけません。
しかも、そのまま回転角として使うと在らぬ方向を見てしまいました。

しょうがなく下記のように加工したクオータニオンでカメラを回転させてようやく動いた感じになりました。
—–
private Quaternion getGyroRotation()
{
Quaternion gyro = Input.gyro.attitude;
gyro.x = -gyro.x;
gyro.y = -gyro.y;

Quaternion rotation = Quaternion.Euler(0, 0, 180) * Quaternion.Euler(-90, 0, 0);
return rotation * gyro;
}
——–

また時々、ジャイロ関連がすごく怪しい挙動をしたときはMoverioごと再起動すると上手くいったりと、なんともな気持ちになります…。

■色々独自で作ったけど、色々面倒だと思うので 共有します!
ジャイロ等のカメラ関係の処理を、諸々パックしたものを githubにアップします。

こちらにアップ中です
https://github.com/wotakuro/moverrio_unity
今回はエントリーしたのはコレを言いたいだけでした…。はい。

■まとめ
色々 面倒なところがあるものの、Moverio BT-200はAndroid向けのアプリ作る感じで作れます!
USBデバッグをONにするための手順等は公式に書いてあるのでそちらを参照すれば、結構すんなり行けます。
そして、面倒なところは 用意したソース使ってもらえればと思います!

多分、民生品の中では一番 Hololensに近い(他がいないとも言いますが…)デバイス Moverio BT-200!!
これを機にぜひ開発どうですか?

■おまけ
1年ほど前に、ウェアラブルデバイス勉強会というところで、アプリ作ったときに感じていた事を発表しておりました。こちらも暇つぶし程度にお読みいただければ幸いです。

ウェアラブル勉強会 東京#2

明日は、adarapataさんが何かを書いてくださるそうです。