Version: 2019.2
WMR 入力とインタラクションの概念
HoloLens WorldAnchor の永続化

開発中の WMR テスト

Unity は、開発プロセス中にアプリケーションをテストできるツールを提供します。これらのツールを使用すると、Unity アプリケーションであるかのようにアプリケーションをデバッグしたり、ワイヤレスでデバイスにコンテンツを送信することができます。これらのツールの中には、HoloLens など特定の Windows Mixed Reality (WMR) デバイスでのみ機能するものもあります。

エディターでの再生 (没入型デバイス)

没入型の Windows Mixed Reality デバイスを使用する場合は、直接 Unity エディターでアプリケーションのテストとイテレーションを行うことができます。Windows Mixed Reality ポータルが開いていてヘッドセットがアクティブであることを確認し、エディターの 再生 ボタンを押します。これで、アプリケーションはエディター内で実行され、同時にヘッドセットにレンダリングされます。

既知の制限

MR (混合現実) デバイスを使ってエディターで再生を行う場合は、いくつかの制限を考慮する必要があります。

  • キーボード、マウス、空間コントローラーは、それらが Windows と Unity によって認識される限り、エディターで使用できます。

  • Windows 以外の MR 入力デバイスは、ゲームウィンドウにフォーカスがある場合にのみ機能します。そうでない場合は、キーボードとマウスの制御が正しく機能しないことがあります。

ホログラフィックエミュレーション (HoloLens のみ)

ホログラフィックエミュレーションを使用すると、変更後の効果を確認するためにその都度ゲームをビルドして実行するのではなく、Microsoft HoloLens プロジェクトを Unity エディターで直接、試作、デバッグ、実行することができます。これにより、Unity で HoloLens のアプリケーションを開発する際にイテレーションの時間を大幅に短縮できます。

ホログラフィックエミュレーションで実行する Unity エディター
ホログラフィックエミュレーションで実行する Unity エディター

ホログラフィックエミュレーションには 3 つのモードがあります。

  • Remote to Device: Windows Holographic デバイスへの接続を使用すると、実際はアプリケーションはホストマシンの Unity エディターで実行されているのに、まるで、そのデバイスに実装されているかのように動作します。詳細は、後述の Emulation Mode: Remote to device を参照してください。

  • Simulate in Editor: アプリケーションは、現実の Windows のホログラフィックデバイスに接続のない、Unity エディター上に直接作られた HoloLens デバイスのシミュレーションで実行されます。 詳細は、後述の Emulation Mode: Simulate in Editor を参照してください。

  • None: Windows Holographic デバイスを使用している場合でも、エディターでアプリケーションを実行できます。

ホログラフィックエミュレーションは、Windows 10 を実行するすべてのマシンでサポートされます (Fall Creators アップデートによる)。Remote to DeviceSimulate in Editor は現在の HoloLens ランタイムを可能な限り模倣することを目的としているため、これを超える新しい API は存在しません。つまり、入力コードに最近追加されたものは、このような状況では動作しません。まるで HoloLens にないのと同じです。例えば、回転、位置精度、角速度、および前、上、右のポーズの基本ベクトルはすべて存在しないため、これらの API は失敗します。

遠隔操作やシミュレーションを可能にするには、Unity エディターを開き、Window > XR > Holographic Emulation の順に移動します。

これにより、 Emulation Mode ドロップダウンメニューを持つ Holographic のコントロールウィンドウを開きます。開発中、このウィンドウを表示したままにします。すると、アプリケーションを起動する場合にその設定にアクセスできます。

デフォルト Holographic エミュレーションコントロールウィンドウ
デフォルト Holographic エミュレーションコントロールウィンドウ

Emulation Mode はデフォルトで None に設定されています。つまり、没入型ヘッドセット接続がある場合、アプリケーションはエディターで実行され、HMD で再生されます。詳細は前述の エディターでの再生 を参照してください。

Emulation ModeRemote to Device に、または Simulate in Editor に変更して、HoloLens 開発のエミュレーションを使用可能にします。これは、接続された没入型デバイスに対して、エディターで再生するサポートをオーバーライドします。

Emulation Mode: Remote to Device

Holographic Remoting を使用すると、実際には、アプリケーションをホストマシン上の Unity エディターで実行している間、 まるで、HoloLens デバイスに実装したかのように動作させることができます。リモートで操作している間でも、接続されたデバイスからの空間センサーデータとヘッドトラッキングはまだ有効であり、正しく動作します。Unity エディターのゲームビューでは、デバイス上で何がレンダリングされているかを見ることができますが、デバイスの装着者が実際に見ているものを見ることはできません (上の “ホログラフィックエミュレーションで実行する Unity エディター” の画像を参照)。

注意: Holographic Remoting は、開発中の変更を素早くイテレーションする方法ですが、パフォーマンスの検証には使用しないでください。アプリケーションがデバイス自体ではなくホストマシン上で実行されているため、結果が不正確になる場合があります。

Unity エディターでこのモードを有効にするには、Emulation ModeRemote to Device に設定します。すると、ホログラフィックウィンドウはこのモードで可能な追加設定を反映します。

デバイスの接続

HoloLens デバイスとリモート接続するには、HoloLensデバイスに Holographic Remoting Player をインストールする必要があります。

Holographic Remoting Player アプリケーションをインストールし、Unity エディターを設定するには、以下を行います。

  1. HoloLens ストアから Holographic Remoting Player をインストールして実行します。使用する Hololens の Windows ストアから入手可能です。起動すると、Remoting Player は待機状態になり、デバイスの IP アドレスを HoloLens 画面に表示します。

    Holographic Remoting Player 画面
    Holographic Remoting Player 画面

    接続の診断を有効にする方法を含め、このプレイヤーの詳細は、Microsoft Windows Dev Center を参照してください。

  2. Unity エディターの Holographic ウィンドウから、Remote Machine フィールドにHoloLens デバイスの IP アドレスを入力します。フィールドの右にあるドロップダウンで、最近使用したアドレスを選択できます。

    Remote to Device エミュレーションモードの設定
    Remote to Device エミュレーションモードの設定
  3. Connect ボタンをクリックします。Connection Status (接続ステータス) は、接続メッセージとともに緑色のライトに変わります。

  4. Unity エディターで Play をクリックして、デバイスをリモートで実行します。

リモート操作を開始すると、エディターでアプリケーションを実行しているのと同じ方法で、一時停止、ゲームオブジェクトの検査、デバッグを行うことができます。HoloLens デバイスとホストマシンは、ビデオ、オーディオ、デバイス入力をネットワーク経由で相互に送信します。

既知の制限

HoloLens で Remote to Device エミュレーションを使用するときに考慮すべき制限がいくつかあります。

  • Remote to Device エミュレーションモードを使用する場合、Unity は音声 (PhraseRecognizer) をサポートしません。このモードでは、エミュレーターは Unity エディターを実行しているホストマシンから音声を傍受します。アプリケーションは、Hololens マイクではなく、リモート制御を行っている PC のマイクを使用します。

  • Remote to Device を実行する間、ホストマシン上のすべてのオーディオは、アプリケーション外部からのオーディオを含め、デバイスにリダイレクトされます。

Emulation Mode: Simulate in Editor

このモードを使用すると、アプリケーションは、現実の Windows のホログラフィックデバイスに接続のない、Unity エディター上に直接設定されたホログラフィックデバイスのシミュレーションで実行されます。これは、HoloLens デバイスを使用できないときに、Windows Holographic の開発をおこなうときに役立ちます。

注意: HoloLens デバイスでアプリケーションをテストして、正常に動作することを確認する必要があります。開発時にエミュレーションだけに依存することは避けてください。

このモードを有効にするには、 Emulation ModeSimulate in Editor に設定し、 Play ボタンを押します。すると、アプリケーションは、Unity エディターに組み込まれたエミュレーターで起動します。

Holographic エミュレーションコントロールウィンドウで Room ドロップダウンメニューを使用して、使用可能な仮想ルームを選択します (XDE HoloLens Emulator で使用されているものと同様)。Gesture Hand ドロップダウンを使って、どちらの仮想の手 (左手か右手か) がジェスチャを実行するかを指定します。

エディターエミュレーションモードでシミュレーションを設定
エディターエミュレーションモードでシミュレーションを設定

Simulate in Editor モードでは、仮想の人間のプレイヤーを制御するためにゲームコントローラー (Xbox 360 や Xbox One コントローラーなど) を使用する必要があります。コントローラーを持っていない場合でもシミュレーションは動作しますが、仮想の人間のプレイヤーを動かすことはできません。

以下の表は、 Simulate in Editor モードのコントローラー入力とその使用法を列挙しています。

コントロール 使用
左スティック 上下に動かすと、仮想の人間のプレイヤーを前方と後方に動かします。左右に動かすと、プレイヤーを左と右に動かします。
右スティック 上下に動かすと、仮想の人間のプレイヤーの頭を上と下に向けます (X 軸回りの回転、つまりロールの回転)。左右に動かすと、プレイヤーを左と右に向かせます (Y 軸回りの回転、つまりヨーの回転)。
D パッド 仮想の人間のプレイヤーを上下に動かすか、または、プレイヤーの頭を左右に傾けます (Z 軸回りの回転、つまりロール)。
左と右のトリガーボタン、または A ボタン 仮想の手でタップジェスチャを実行します。
Y ボタン 仮想の人間のプレイヤーの頭のピッチ (X 回転) とロール (Z 回転) をリセットします。

ゲームコントローラーを使用するには、ゲームビューの Unity エディターにフォーカスを合わせます。現在、別の Unity エディターウィンドウにフォーカスしている場合は、ゲームビューウィンドウをクリックしてゲームビューに再度フォーカスします。

既知の制限

HoloLens で Simulate in Editor エミュレーションを使用するときに考慮すべき制限がいくつかあります。

  • ほとんどのゲームコントローラーは Windows と Unity がそれらを認識している間、Simulate in Editor モードで動作します。ただし、サポートされていないコントローラーは互換性の問題を引き起こす可能性があります。

  • Simulate in Editor モードの間、PhotoCapture を使用することはできますが、接続された HoloLens デバイスがないため、外部に接続されたカメラ (ウェブカメラなど) を使用する必要があります。また、これにより、TryGetProjectionMatrixTryGetCameraToWorldMatrix で行列を取得することができなくなります。なぜなら、通常の外部カメラは現実世界との相対的な位置を計算できないからです。

役に立つ資料とトラブルシューティング

Windows Mixed Reality アプリケーションの開発の問題をトラブルシューティングするときに、以下のような外部リソースを参照してください。


  • 2018–03–27 Page published

  • XR API に関する新しいコンテンツは 2017.3 に追加

WMR 入力とインタラクションの概念
HoloLens WorldAnchor の永続化