Top/Devel/OculusRift/DroidGlove

DroidGloveはてなブックマーク

droidglove_xxhdpi.png
mikujalus.jpg

This page is also available in English. Please visit here.

DroidGloveはあなたのAndroidスマホをバーチャルリアリティ用の入力デバイスにして、 Oculus Riftなどの仮想空間内で手をコントロールするためのアプリです。

改造PAXパワーグローブをアプリにしたものです。

拙作のMikujalusBobbingBots、アキヒロさん作のユニティちゃんと追いかけっこなどのVRアプリで利用できます。


アプリ

Google Playからダウンロードしてください。

アプリの使い方

preference.png
main.png

スマホでWiFiが使用できること、スマホからPCにネットワーク接続できる環境になっていることが必要です。


外出中など、アクセスポイントが利用できない場合や、スマホもPCもWiFi接続できるものの両者の通信が制限されている場合はこちらをご覧ください。

下準備

まず、DroidGlove側の準備です。


  1. スマホにDroidGloveをインストールする。
  2. スマホのWiFiをオンにします。
  3. スマホでDroidGloveを起動する。
  4. スマホの設定画面でPCのIPアドレスを入力する。
    (Win+Rで出てきたウィンドウに「cmd」と入力し、Enter後、「ipconfig」と入力し、Enterで表示されます。)
  5. スマホのてっぺんをPCのモニターに向け、Resetボタンを押す。


次に、専用PCアプリがファイアウォールを通過できるように設定する必要があります。次のようにして通信を許可してください。(下記はWindows7での手順です)


firewall01.png
  1. [コントロールパネル] > [Windows ファイアウォール]を開く。
    firewall02.png
  2. [Windows ファイアウォールを介したプログラムまたは機能を許可する]をクリックする。
    firewall03.png
  3. [設定の変更]ボタンをクリックする。
    firewall04.png
  4. [別のプログラムの許可]ボタンをクリックする。
    firewall05.png
  5. [参照]ボタンをクリックする。
    firewall06.png
  6. Mikujalusなどの専用アプリのexeファイルを指定して、[開く]ボタンをクリックする。
    firewall07.png
  7. [追加]ボタンをクリックする。

遊び方

  1. スマホでDroidGloveを起動する。
  2. Mikujalusなどの専用アプリを起動する。
  3. スマホを回転させると、PC側の手が回転する。
    また、スマホの画面を下方向にスワイプすると、手を握る。

WiFi環境に問題がある場合(PCをアクセスポイントにしてスマホをWiFi接続する手順) Permalinkはてなブックマーク

外出中など、WiFiアクセスポイントが利用できない場合や、
スマホもPCもWiFi接続できるものの両者の通信が制限されている場合は、
PCをSoftAP(ソフトウェアアクセスポイント)にしてスマホをWiFi接続してみてください。

なお、PCの無線LANアダプタがVirtual Wi-Fiに対応している必要があります。


手順は次の通り。


softap.png
  1. 下記をダウンロードし、解凍します。
  2. start_softap.batを右クリックし、コンテキストメニューの"管理者として実行"をクリックします。
  3. "ユーザーアカウント制御"ダイアログで"はい"をクリックします。
  4. "このPCをアクセスポイントにする設定を新たにしますか(Y/N)"と聞かれるので、"Y"と入力し、エンターキーを押します。
    ("N"と入力すると、前回の設定内容でアクセスポイントを有効化します。)
  5. 作成するアクセスポイントのSSIDを入力します。
  6. 作成するアクセスポイントのパスフレーズ(パスワード)を入力します。


以上で、アクセスポイントが作成され、アクセスポイントが有効になります。


作成したアクセスポイントが有効になったら、アクセスポイントにスマホで接続します。
その際のSSID、パスフレーズは上の手順で自分で決めたものを入力してください。


これでPC⇔スマホのWiFi接続が完了しましたので、あとは前述の手順に従って、ファイアウォールの設定とDroidGloveの設定を行ってください。

DroidGlove + Bobbing-Walking用Unityサンプルプロジェクト Permalinkはてなブックマーク

DroidGloveを使用するためのスクリプトの他に、
Bobbing-Walking(Oculus Riftを装着してその場でジョギングするように連続的に飛び上がると、前進し、上を見上げながら同様に飛び上がると、後退するスクリプト)も入っています。

上記サンプルプロジェクトのFPSをGoogle Cardboard対応Androidアプリにしてみたもの Permalinkはてなブックマーク

Google Cardboradに対応したサンプルプロジェクトの配布はまだできないのですが、
ひとまずサンプルプロジェクトをビルドしてできたAndroidアプリを配布してみます。

注意

Bobbing-Walkingについて、1人でやるときは、転倒しないように下記をお願いします。

  • 予め周囲を確認し、家具などの物体から2m以上離れてください。
  • 足元にテープで枠を作りその中から出ないようにしてください。
  • あまり激しく動かないようにしてください。


第三者に体験していただく際は、上記の説明に加え、体験者から目を離さないようにお願いします。

連絡先

何か質問がございましたら、Twitterまでご連絡ください。

英語での質問はOculus VR Forumsのトピックにてお願いいたします。

ソースコード Permalinkはてなブックマーク

ソースコードはGitHubで公開しています。

最新版(1.0.0)のソースコードはコードの整理がつくまで見送ります。

下記で公開されているのは旧版です。

データ形式が異なる(旧版はオイラー角、最新版はQuaternion)ため、ご注意ください。

https://github.com/cubic9com/DroidGlove/

ソースコードのフォルダ階層

フォルダ内容
src/Javaソース
res/画像などのリソース

ソースコードの使い方

DroidGlove にはC. Ramakrishnan, Illposed Softwareによって開発された JavaOSC(Open Sound Controlライブラリ)が必要です。

  1. 次のURLからJavaOSCを入手する。
    https://github.com/hoijui/JavaOSC/tree/e2a1667cb198675958012d91a374f9e9705195be
  2. JavaOSC内の"modules/core/src/main/java/com"フォルダを"src/"フォルダにコピーする。
  3. ADTバンドル版Eclipseなどにインポートする。
  4. アプリ(.apk)をエクスポートする。

ソースコードのライセンス

Copyright (C) 2014, cubic9com All rights reserved.

DroidGloveのソースコードは、修正BSDライセンス(三条項BSDライセンス)とします。

詳細はリポジトリのLICENSEファイルをご覧ください。

技術解説

  1. 改造パワーグローブでやっていたようなことが、スマホでもできるかという実験のために作成しました。
  2. スマホ・PC間の通信にはOSC(Open Sound Control)プロトコル over UDPを使用しています。
    Androidスマホ側はJavaOSC*1というライブラリ、PC側のUnityはUnityOSC*2というライブラリのおかげでだいぶ楽に実装できました。

DroidGloveのOSCプロトコル・パケット仕様(対応ソフトはご自由にお作りください)

  1. 使用ポート番号は、スマホ側、PC側ともに57110。
  2. DroidGloveのスマホ→PCのパケットは以下の仕様です。対応ソフトウェアの実装はご自由にどうぞ。
    1. アドレスは、"/droidglove_to_pc"です。
    2. データは、float x, float y, float z, float w, int gripの順。
    3. 最初の4値については、Quaternionです。
    4. 最後の1値については、手の握り具合を示します。値の範囲は、0 <= grip <= 100。
    5. 今後、十字キーや、ABボタンを追加する予定です。
  3. DroidGloveのPC→スマホのパケットは以下の仕様です。対応ソフトウェアの実装はご自由にどうぞ。
    1. アドレスは、"/droidglove_to_phone"です。
    2. データは、int vibrationTimeのみ。
    3. 値はバイブレーションの継続時間を示しています。単位はミリ秒。
      0とした場合は、スマホ側で設定されている継続時間を使用します。
      ユーザーに調整させたい場合は0としてください。

謝辞

JavaOSCの開発者であるMr.Ramakrishnan(Illposed Software)に感謝いたします。

Sensor fusion demo for Androidの開発者であるAlexander Pachathe Human Interface Technology Laboratory New Zealand)に感謝いたします。

DroidGloveはLittle Witch Pie Deliveryの箒の操作に刺激を受けて作りました。Haramakotoさんに感謝いたします。

Amazon

*1 Copyright (c) 2002-2006, C. Ramakrishnan / Illposed Software
*2 Copyright (c) Jorge Garcia
差分 一覧