デジゲー博2016で遊んでくださった方ありがとうございました

今年もデジゲー博に出展しました。

遊びに来てくださった方はどうもありがとうございました。

今年も懲りずにMoverioBt-200向けに こんな感じのゲームを作って出展していました。

遊んでくださった方の反応も良かったのでもう少し作りこんで行こうかと思いました。
途中経過のモノはここからダウンロードできます

あとは持ち込んだものの殆どプレイされなかった去年作ったやつも載せておきます。

いい加減、Moverioストアに載せねば…
一応ここに置いておきます

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さんが何かを書いてくださるそうです。

Moverio改造計画

Moverio Bt-200が、メガネのツルの締め付けが弱いせいなのか、すぐずれてしまうのが気になっていました。
なので、簡単工作で 物理的にちょっと改造してみました。

こんな感じです!!
image (1)

image (3)

本当にお手軽に改造してみました。
その場で激しくステップしてみたりしても、あまりズレなくて良い感じです。

使用したのはコチラ。
image
ただのスポーツ用サングラスから レンズを取り除きました。

amazonでコチラの商品になります

1.元からあったノーズパッドを外す
2.レンズを外したスポーツサングラスを結束バンドで括りつける。
3.Moverio付属のメガネのツルにつけるゴムで無理やりサングラスを固定する

この3ステップだけです。
気に入らなかった場合でも最悪元に戻せる簡単工作です。

ただ、問題は付属のケースに入らなくなってしまって、それをどうしようかが今目下の悩みどころですw

デジゲー博で展示したゲームをリリースしました

デジゲー博で出展したゲーム Magical Defenderをリリースいたしました。

メガネ越しに見るとこんな感じで見えるです。
image01

デジゲー博 出展の頃と少し操作方法を変更したり、ちょっと演出を追加しました。
・操作方法でキツネの前後操作をなくしました。代わりに常にオート発射になります。
・Stage開始演出の追加
等々を行っていました。

デバイス自体を持っている方ほとんどいないかと思いますが、遊んでみてもらえればと思います。

デジゲー博に展示するゲームについて

dejige2014-01

絶賛 作成中です。スマートグラス Moverio向けのゲームになります。

奥から迫ってくる敵をキャラクターを操作して倒していく感じのゲームです。
立体視とかにも対応させてみています。

後でプレイムービー撮ってアップロードできればと思います。
タイトルとかとかまだまだ出来てないんです・・・orz

デジゲー博進捗

デジゲー博は、Moverio向け奥スクロールSTGを作ろうと出す予定です。
あんまりよろしくない進捗でしたが、実験段階のものが上手くいったんで、その実験を公開しようかと思います。

画面奥から出現するときに、動画のようなエフェクトで出現すると面白そうかなって思っています。
UnityのShaderで実現しています。
keijiro氏のソナーエフェクトを見て、参考にさせていただいております。
ちょっと落ち着いたら、Githubとかで公開したいと思っています。

ちなみに、モデルはAssetStoreパワーで何とかする方向なのですw

AR Snow ちょっとした工夫

大分月日が経ってしまいましたが、AR Snowでは、モニターが移る空間と現実空間を少しでも和らげようと以下のような工夫をしています。

スクリーンショット (10)

わかりますでしょうか・・・・。
カメラの前に丸く くり抜かれた板を置くことで、若干でもモニターと現実空間の境界を少しでも和らげようとしています。


cameraEffect

このようなテクスチャを UnityのShader[Particles/Multiply]でおいています。

これで何となく、モニタに映ったという感じを少しでも和らげようとしてました。