これちのPost-it

技術ネタをペラペラ貼っていくぞ!

Hololensとスマートフォン間で通信を行う方法【uOSC】

はじめに

Hololensとスマートフォン(iPhoneAndroid)間でデータをやりとりする方法をまとめました。
具体的には、凹みさんの記事で紹介されていますUnity向けのOSC実装を使っています。
tips.hecomi.com
これがとても使いやすかったので、自分で使い方を忘れないためにも、記事に使い方をまとめておこうと思います。

前提

UnityでHololensアプリを作成し、Hololens実機でのビルドができること。

必要なもの

実装

今回、Hololensとスマートフォン間で通信を行うために、Hololens側とスマートフォン側の2つアプリを作る必要があります。

Hololens側

  1. 新規プロジェクトを作成しuOSC-v0.0.1.unitypackageHoloToolkit-Unity-v1.2017.1.0.unitypackageをインポート
    f:id:korechi:20170908164637p:plain:h200
  2. HoloToolKitタブにあるConfigureのApply*を全て行う
    f:id:korechi:20170909002517p:plain:h100
  3. uOSC Serverオブジェクトを作成し(名前は何でも良い)、uOscServer.csServerTest.csをuOSC Serverオブジェクトに追加
    場所は以下にあります。
    uOSC/Scripts/uOscServer.cs
    uOSC/Examples/Scripts/ServerTest.cs
    f:id:korechi:20170908165603p:plain
  4. File->BuildSettingでPlatformにてUniversalWindowsPlatformを選択
    今回はSDKを10.0.14393.0を選択します。
    f:id:korechi:20170908170907p:plain:h300
  5. Player Settingsから、Publishing SettingsのCapabilitiesのInternetClientとInternetClientServerにチェック
    環境認識も行いたい場合はSpatial Perceptionにチェックを入れます。忘れがちなので要注意です。
    f:id:korechi:20170908171154p:plain:h300
    また、開発マシンのセキュリティソフトやファイアーウォールを無効化しておかないと、データがHololensに届かない場合があります。
  6. Build
  7. 出力されたソリューションファイルをVisual Studio 2017で開き、Hololensを接続し以下の設定でビルド
    f:id:korechi:20170909000158p:plain
  8. おそらく、初回ビルドは失敗するので、project.lockファイルを開き、UAP,Version=v10.0.***の部分を全てUAP,Version=v10.0に書き換えます
  9. もう1度Visual Studioでビルドするとビルドが通ります
    f:id:korechi:20170909002955p:plain
    ログは右下の出力タブに出力されますので、そこを確認しましょう。

スマートフォン

こちらはずっと簡単です。
1. 新規プロジェクトを立ち上げ、uOSC-v0.0.1.unitypackageをインポート
2. uOSC Clientオブジェクトを作成し(名前は何でも良い)、uOscClient.csClientTest.csをuOSC Clientオブジェクトに追加
f:id:korechi:20170909004015p:plain:h200
場所は以下の場所にあります。
uOSC/Scripts/uOscClient.cs
uOSC/Examples/Scripts/ClientTest.cs
IPAddressや送信する内容は固定となっていますので、そこらへんを変えたい場合は上記2ファイルを修正(主にClientTest.cs)を変更しましょう。
3. AndroidもしくはiOS用にビルド

最後に

Hololensでのアプリ開発はまだ不安定な部分もあり、SDKのバージョンによっては動かなかったりします。そのため、今回ご紹介したバージョンでの開発をおすすめします。

追記

UnityのバージョンをUnity 2017.1.1f1にし、MixedRealityToolkit-Unity for Unity 2017.1.1f1を使用したところ、Hololens側の手順8,9が必要なくなりました。
1度目のビルドで無事Hololens上でアプリが起動したのを確認しました。