面白い方へ転がっていくブログ

TouchDesignerとかUnityとか色々使って面白そうな方向へ転がっていきます。

お手軽簡単ノーコーディングでシェアリング機能を実現する

今回はシェアリング機能を持つアプリを作る時に、ベースとなるシンプルなやつを手軽にパパッと用意したい!という自分自身の要望によりこの記事を書いています。

ちなみにMixedRealityToolkitの中にあるSharingTestも十分シンプルなのですが、IPアドレスの設定がマニュアルで出来るようになっていたりと個人的に余計なものがくっついているので、こいつよりもシンプルを目指します。

仕様

  1. 起動後、自動的にSharingService.exeへ接続しにいく
  2. お互いの頭の位置と回転を共有する

用意するもの

  1. MixedRealityToolkit-Unity ver1.2017.2.0
  2. Unity 5.6.2f1

手順

  1. HoloToolkitとHoloToolkit-Examplesをインポートする
  2. Sharing関連のコンポーネントを配置する
  3. SharingServiceに接続するための設定を行う

なんとたったこれだけの手順で、上記仕様を満たすシェアリング機能を使ったアプリのベースが出来てしまいます。 なおこの手順の中でスクリプトをコーディングする事は一切ありません。

1. HoloToolkitとHoloToolkit-Examplesをインポートする

f:id:gesyutapo:20171226204658p:plain

https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.2017.2.0へアクセスします。

  • HoloToolkit-Unity-Examples-v1.2017.2.0.unitypackage
  • HoloToolkit-Unity-v1.2017.2.0.unitypackage

の2つをダウンロードしてきて、Unityのプロジェクトへインポートします。

2. Sharing関連のコンポーネントを配置する

まずHierarchyパネルから[Create]-[CreateEmpty]を選択して、適当に空のGameObjectを作成します。 これ以降の手順でアタッチするコンポーネントは全て、この新たに作成したGameObjectへアタッチしていきます。

HoloToolkitから必要なコンポーネントをアタッチします

f:id:gesyutapo:20171226204920p:plain

Assets/HoloToolkit/Sharing/Scripts/からそれぞれ以下の3つのスクリプトをアタッチします。

  • SharingStage
  • Utilities/SharingWorldAnchorManager
  • Utilities/AutoJoinSessionAndRoom

HoloToolkit-Examplesから必要なコンポーネントをアタッチします

f:id:gesyutapo:20171226205734p:plain

Assets/HoloToolkit-Examples/Sharing/SharingService/Scripts/からそれぞれ以下の2つのスクリプトをアタッチします。

  • CustomMessages
  • RemoteHeadManager

3. SharingServiceに接続するための設定を行う

ここまでの手順で、シェアリング機能を実現するためのコードは全て揃いました。 ここでは、シェアリング機能を実現するための設定を行います。

SharingService.exeを動かすPCのIPアドレスを設定する

f:id:gesyutapo:20171226210610p:plain

SharingStageコンポーネントの設定項目「Server Address」に、サーバーとなるPCのIPアドレスを設定してください。

インターネットアクセスを許可する

f:id:gesyutapo:20171226211203p:plain

Unityのメニューバーから、[Edit]-[Project Settings]-[Player]を選択して、Inspectorパネルで「Publishing Settings」を選択します。 その中のCapabilitiesから以下の2つの項目のチェックをいれます。

  • InternetClient
  • InternetClientServer

SharingServiceを動かす

最後にシェリング機能を実現するためのSharingServiceをサーバーとなるPCで実行します。

f:id:gesyutapo:20171226211653p:plain

Unityのメニューバーから、[Mixed Reality Toolkit]-[Sharing Service]-[Launch Sharing Service]を選択します。 すると以下のようなコマンドプロンプトウィンドウが起動します。

f:id:gesyutapo:20171226212032p:plain

上記までの手順を行ってからHoloLensへデプロイすれば、シェアリング機能は実現できます。もちろんこれだけではアプリケーションとしては不十分なので、これをベースにシェアリング機能の実装をしていくと、理解がなかなか難しいシェアリング機能も理解しやすいのではないでしょうか。

実行画面

youtu.be

これはUnity上で実行したものと、Hololensで実行したものとでシェアリングしている様子をキャプチャしたものです。Unityで実行されたものとシェアリング出来るので、HoloLensが1台あれば一応の動作確認が出来ます。