Hololensとスマートフォン間で通信を行う方法【uOSC】
はじめに
Hololensとスマートフォン(iPhoneやAndroid)間でデータをやりとりする方法をまとめました。
具体的には、凹みさんの記事で紹介されていますUnity向けのOSC実装を使っています。
tips.hecomi.com
これがとても使いやすかったので、自分で使い方を忘れないためにも、記事に使い方をまとめておこうと思います。
前提
UnityでHololensアプリを作成し、Hololens実機でのビルドができること。
必要なもの
- Unity
- 今回使用したのはUnity2017.1.0f3
- uOSC
- GitHub - hecomi/uOSC: OSC server / client implementation for Unity
- 上記リンクreleaseタブより、uOSC-v0.0.1.unitypackageをダウンロード
- MixedRealityToolkit-Unity for Unity 2017.1.0f3
- Releases · Microsoft/MixedRealityToolkit-Unity · GitHub
- 上記リンクreleaseタブより、HoloToolkit-Unity-v1.2017.1.0.unitypackageをダウンロード
- Visual Studio 2017
- Windows SDK ver. 10.0.14393.795
実装
今回、Hololensとスマートフォン間で通信を行うために、Hololens側とスマートフォン側の2つアプリを作る必要があります。
Hololens側
- 新規プロジェクトを作成しuOSC-v0.0.1.unitypackageとHoloToolkit-Unity-v1.2017.1.0.unitypackageをインポート
- HoloToolKitタブにあるConfigureのApply*を全て行う
- uOSC Serverオブジェクトを作成し(名前は何でも良い)、uOscServer.csとServerTest.csをuOSC Serverオブジェクトに追加
場所は以下にあります。
uOSC/Scripts/uOscServer.cs
uOSC/Examples/Scripts/ServerTest.cs
- File->BuildSettingでPlatformにてUniversalWindowsPlatformを選択
今回はSDKを10.0.14393.0を選択します。
- Player Settingsから、Publishing SettingsのCapabilitiesのInternetClientとInternetClientServerにチェック
環境認識も行いたい場合はSpatial Perceptionにチェックを入れます。忘れがちなので要注意です。
また、開発マシンのセキュリティソフトやファイアーウォールを無効化しておかないと、データがHololensに届かない場合があります。 - Build
- 出力されたソリューションファイルをVisual Studio 2017で開き、Hololensを接続し以下の設定でビルド
- おそらく、初回ビルドは失敗するので、project.lockファイルを開き、UAP,Version=v10.0.***の部分を全てUAP,Version=v10.0に書き換えます
- もう1度Visual Studioでビルドするとビルドが通ります
ログは右下の出力タブに出力されますので、そこを確認しましょう。
スマートフォン側
こちらはずっと簡単です。
1. 新規プロジェクトを立ち上げ、uOSC-v0.0.1.unitypackageをインポート
2. uOSC Clientオブジェクトを作成し(名前は何でも良い)、uOscClient.csとClientTest.csをuOSC Clientオブジェクトに追加
場所は以下の場所にあります。
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上でアプリが起動したのを確認しました。