Unity でサポートされている Mixed Reality OpenXR の機能Mixed Reality OpenXR supported features in Unity

Mixed Reality OpenXR プラグイン パッケージは Unity の OpenXR プラグイン の拡張機能であり、HoloLens 2 および Windows Mixed Reality ヘッドセットの一連の機能をサポートしています。The Mixed Reality OpenXR Plugin package is an extension of Unity's OpenXR Plugin and supports a suite of features for HoloLens 2 and Windows Mixed Reality headsets. 続行する前に、 unity 2020.2 以降、 OpenXR プラグインバージョン 0.1.2 以降がインストールされていること、および unity プロジェクトが OpenXR 用に構成されていることを確認してください。Before continuing, make sure that you've installed Unity 2020.2 or later, OpenXR Plugin version 0.1.2 or later, and your Unity project is configured for OpenXR.

サポートされる操作What's supported

現在、次の機能がサポートされています。The following features are currently supported:

  • HoloLens 2 の UWP アプリケーションと HoloLens 2 アプリケーションモデルの最適化をサポートしています。Supports UWP applications for HoloLens 2, and optimize for HoloLens 2 application model.
  • は、最新のコントローラープロファイルと holographic app remoting を使用した Windows Mixed Reality ヘッドセット用の Win32 VR アプリケーションをサポートしています。Supports Win32 VR applications for Windows Mixed Reality headset with latest controller profiles and holographic app remoting.
  • アンカーと無制限のスペースを使用したワールドスケールの追跡。World scale tracking using Anchors and Unbounded space.
  • ストレージ API を固定 して、HoloLens 2 ローカルストレージにアンカーを保持します。Anchor storage API to persist anchors to HoloLens 2 local storage.
  • 新しい HP リバーブ G2 コントローラーを含む、モーションコントローラーと手作業のやり取りMotion controller and hand interactions, including the new HP Reverb G2 controller.
  • 26個の関節と結合半径の入力を使用した、トレーラーを使用したハンドトラッキング。Articulated hand tracking using 26 joints and joint radius inputs.
  • HoloLens 2 での視線の相互作用。Eye gaze interaction on HoloLens 2.
  • HoloLens 2 で写真/ビデオ (PV) カメラを検索しています。Locating photo/video (PV) camera on HoloLens 2.
  • PV カメラを使用した第3目のレンダリングを使用した Mixed Reality キャプチャ。Mixed Reality Capture using 3rd eye rendering through PV camera.
  • Holographic リモート処理アプリでの HoloLens 2 への "Play" をサポートします。これにより、開発者は、デバイスにビルドしてデプロイすることなく、スクリプトをデバッグできます。Supports "Play" to HoloLens 2 with the Holographic Remoting app, allowing developers to debug scripts without building and deploying to the device.
  • MRTK Unity 2.5.3 以降の Mrtk OpenXR プロバイダーのサポートと互換性があります。Compatible with MRTK Unity 2.5.3 and newer through MRTK OpenXR provider support.
  • Unity Arfoundation 4.0 以降との互換性Compatible with Unity ARFoundation 4.0 or later

Unity エディター再生モードでの Holographic リモート処理Holographic Remoting in Unity Editor play mode

Visual Studio プロジェクトで UWP Unity プロジェクトをビルドしてから、パッケージ化して HoloLens 2 デバイスに配置すると、時間がかかることがあります。Building a UWP Unity project in Visual Studio project and then packaging and deploying it to a HoloLens 2 device can take some time. 1つの解決策は、Holographic エディターのリモート処理を有効にすることです。これにより、ネットワーク上の HoloLens 2 デバイスに対して "Play" モードで直接 C# スクリプトをデバッグできます。One solution is to enable the Holographic Editor Remoting, which lets you debug your C# script using “Play” mode directly to a HoloLens 2 device over your network. このシナリオでは、UWP パッケージをビルドしてリモートデバイスに配置するオーバーヘッドを回避します。This scenario avoids the overhead of building and deploying a UWP package to remote device.

  1. まず、HoloLens 2 のストアから Holographic Remoting Player アプリをインストール する必要があります。First, you need to install the Holographic Remoting Player app from Store on your HoloLens 2

  2. HoloLens 2 で Holographic リモート処理プレーヤーアプリを実行すると、接続先のバージョン番号と IP アドレスが表示されます。Run the Holographic Remoting Player app on HoloLens 2 and you'll see the version number and IP address to connect to

    • OpenXR プラグインを使用するには、v2.0 以降が必要です。You'll need v2.4 or later to work with the OpenXR plugin

    HoloLens で実行されている Holographic リモート処理プレーヤーのスクリーンショット

  3. [ 編集-> プロジェクトの設定] を開き、 XR プラグイン管理 に移動して、[ Windows Mixed Reality] 機能セット ボックスをオンにします。Open Edit -> Project Settings, navigate to XR plug-in Management, and check the Windows Mixed Reality feature set box:

    XR プラグイン管理が強調表示されている Unity エディターで開いているプロジェクト設定パネルのスクリーンショット

  4. OpenXR の [機能] セクションを展開し、[すべて表示] を選択します。Expand the Features section under OpenXR and select Show All

  5. [ Holographic エディターリモート処理 ] チェックボックスをオンにして、Holographic リモート処理アプリから取得した IP アドレスを入力します。Check the Holographic Editor Remoting checkbox and input the IP address you get from the Holographic Remoting app:

    機能が強調表示されている Unity エディターでプロジェクト設定パネルが開いているスクリーンショット

これで、[Play] \ (再生 ) ボタンをクリックして、HoloLens の Holographic リモート処理アプリで Unity アプリを再生できるようになりました。Now you can click the “Play” button to play your Unity app into the Holographic Remoting app on your HoloLens. また、 Visual Studio を Unity にアタッチ して、C# スクリプトを再生モードでデバッグすることもできます。You can also attach Visual Studio to Unity to debug C# scripts in the play mode.

注意

バージョン0.1.0 の場合、Holographic リモート処理ランタイムはアンカーをサポートしておらず、ARAnchorManager 機能はリモート処理では機能しません。As of version 0.1.0, the Holographic Remoting runtime doesn’t support Anchors, and ARAnchorManager functionalities will not work through remoting. この機能は今後のリリースで予定されています。This feature is coming in future releases.

アンカーとアンカーの永続化Anchors and Anchor Persistence

Mixed Reality OpenXR プラグインは、Unity の ARFoundation ARAnchorManager の実装を通じて基本的なアンカー機能を提供します。The Mixed Reality OpenXR Plugin supplies basic anchor functionality through an implementation of Unity’s ARFoundation ARAnchorManager. Aranchor の 基本につい ては、ARANCHOR の AR アンカーマネージャーのマニュアルを参照してください。To learn the basics on ARAnchor s in ARFoundation, visit the ARFoundation Manual for AR Anchor Manager. バージョン0.1.0 以降では、このプラグインは、プレーンにアタッチされたアンカーを作成する以外のすべての ARAnchorManager 機能をサポートしています。これは将来のリリースで予定されています。As of version 0.1.0, this plugin supports all ARAnchorManager functionality except creating anchors attached to a plane, which is coming in a future release.

固定の永続性と XRAnchorStoreAnchor Persistence and the XRAnchorStore

XRAnchorStore と呼ばれる追加の API を使用すると、セッション間でアンカーを永続化できます。An additional API called the XRAnchorStore enables anchors to be persisted between sessions. XRAnchorStore は、デバイスに保存されているアンカーの表現です。The XRAnchorStore is a representation of the saved anchors on your device. アンカーは、Unity シーンの Aranchors から永続化したり、ストレージから新しい aranchors に読み込んだり、ストレージから削除したりできます。Anchors can be persisted from ARAnchors in the Unity scene, loaded from storage into new ARAnchors, or deleted from storage.

注意

これらのアンカーは保存され、同じデバイスに読み込まれます。These anchors are to be saved and loaded on the same device. デバイス間のアンカーストレージは、今後のリリースで Azure 空間アンカーを通じてサポートされます。Cross-device anchor storage will be supported through Azure Spatial Anchors in a future release.

public class Microsoft.MixedReality.ARSubsystems.XRAnchorStore
{
    // A list of all persisted anchors, which can be loaded.
    public IReadOnlyList<string> PersistedAnchorNames { get; }

    // Clear all persisted anchors
    public void Clear();

    // Load a single persisted anchor by name. The ARAnchorManager will create this new anchor and report it in
    // the ARAnchorManager.anchorsChanged event. The TrackableId returned here is the same TrackableId the
    // ARAnchor will have when it is instantiated.
    public TrackableId LoadAnchor(string name);

    // Attempts to persist an existing ARAnchor with the given TrackableId to the local store. Returns true if
    // the storage is successful, false otherwise.
    public bool TryPersistAnchor(string name, TrackableId trackableId);

    // Removes a single persisted anchor from the anchor store. This will not affect any ARAnchors in the Unity
    // scene, only the anchors in storage.
    public void UnpersistAnchor(string name);
}

XRAnchorStore を読み込むには、プラグインを使用して、XRAnchorSubsystem のサブシステムである ARAnchorManager の拡張メソッドを提供します。To load the XRAnchorStore, the plugin provides an extension method on the XRAnchorSubsystem, the subsystem of an ARAnchorManager:

public static Task<XRAnchorStore> LoadAnchorStoreAsync(this XRAnchorSubsystem anchorSubsystem)

この拡張メソッドを使用するには、次のように ARAnchorManager のサブシステムからアクセスします。To use this extension method, access it from an ARAnchorManager's subsystem as follows:

ARAnchorManager arAnchorManager = GetComponent<ARAnchorManager>();
XRAnchorStore anchorStore = await arAnchorManager.subsystem.LoadAnchorStoreAsync();

アンカー > を永続化または非永続化する完全な例については、「 Mixed Reality OpenXR Plugin Sample Scene」の「AnchorsSample.cs script and script」 (アンカーとアンカーの例) をご覧ください。To see a full example of persisting / unpersisting anchors, check out the Anchors -> Anchors Sample GameObject and AnchorsSample.cs script in the Mixed Reality OpenXR Plugin Sample Scene:

[階層] パネルのスクリーンショット (アンカーのサンプルが強調表示された状態で、Unity エディターで開きます)

[インスペクター] サンプルスクリプトが強調表示された状態で、Unity エディターで開いているインスペクターパネルのスクリーンショット

モーションコントローラーとハンド作用Motion controller and hand interactions

Unity での mixed reality の相互作用の基本については、unity の unity の XR 入力に関するページを参照してください。To learn the basics about mixed reality interactions in Unity, visit the Unity Manual for Unity XR Input. この Unity ドキュメントでは、コントローラー固有の入力から、より汎化された Inputfeatureusage へのマッピング、使用可能な XR 入力を識別および分類する方法、これらの入力からデータを読み取る方法などについて説明します。This Unity documentation covers the mappings from controller-specific inputs to more generalizable InputFeatureUsage s, how available XR inputs can be identified and categorized, how to read data from these inputs, and more.

Mixed Reality OpenXR プラグインは、次に示すように、標準 Inputfeatureusage にマップされた追加の入力相互作用プロファイルを提供します。The Mixed Reality OpenXR Plugin provides additional input interaction profiles, mapped to standard InputFeatureUsage s as detailed below:

InputFeatureUsageInputFeatureUsage HP リバーブ G2 コントローラー (OpenXR)HP Reverb G2 Controller (OpenXR) HoloLens (OpenXR)HoloLens Hand (OpenXR)
primary2DAxisprimary2DAxis ジョイJoystick
primary2DAxisClickprimary2DAxisClick ジョイスティック-クリックJoystick - Click
トリガー (trigger)trigger トリガーTrigger
把握grip 把握Grip エアタップまたはつかみAir tap or squeeze
primaryButtonprimaryButton [X/A]-押します[X/A] - Press エアタップAir tap
secondaryButtonsecondaryButton [Y/B]-押します[Y/B] - Press
gripButtongripButton グリップ-押すGrip - Press
triggerButtontriggerButton トリガー-押すTrigger - Press
menuButtonmenuButton メニューMenu

目標とグリップAim and Grip Poses

OpenXR の入力相互作用を通じて、2組のポーズにアクセスできます。You have access to two sets of poses through OpenXR input interactions:

  • 手の形でオブジェクトをレンダリングするためのグリップThe grip poses for rendering objects in the hand
  • 目標は、世界を指します。The aim poses for pointing into the world.

この設計の詳細と、2つの方法の違いについては、「 OpenXR Specification-Input サブパス」を参照してください。More information on this design and the differences between the two poses can be found in the OpenXR Specification - Input Subpaths.

InputFeatureUsages DevicepositionDevicerotationdevicevelocに よって指定されたポーズ、およびすべてが OpenXR グリップ を表します。Poses supplied by the InputFeatureUsages DevicePosition, DeviceRotation, DeviceVelocity, and DeviceAngularVelocity all represent the OpenXR grip pose. グリップの設定に関連する InputFeatureUsages は、Unity の commonusagesで定義されています。InputFeatureUsages related to grip poses are defined in Unity’s CommonUsages.

InputFeatureUsages ポインター によって提供されるポーズ、 ポインターローテーションポインター速度、および PointerAngularVelocity all は、OpenXR aim を表します。Poses supplied by the InputFeatureUsages PointerPosition, PointerRotation, PointerVelocity, and PointerAngularVelocity all represent the OpenXR aim pose. これらの InputFeatureUsages はインクルードされているすべての C# ファイルで定義されていないため、次のように独自の InputFeatureUsages を定義する必要があります。These InputFeatureUsages aren't defined in any included C# files, so you'll need to define your own InputFeatureUsages as follows:

public static readonly InputFeatureUsage<Vector3> PointerPosition = new InputFeatureUsage<Vector3>("PointerPosition");

HapticsHaptics

Unity の XR 入力システムで haptics を使用する方法の詳細については、unity の unity マニュアルの「UNITY XR」を参照してください。For information on using haptics in Unity’s XR Input system, documentation can be found at the Unity Manual for Unity XR Input - Haptics.

近日公開予定What's coming soon

次の問題および不足している機能は、Mixed Reality OpenXR プラグイン バージョン 0.1.0 で知られています。The following issues and missing features are known with Mixed Reality OpenXR plugin version 0.1.0. これらの機能については、今後のリリースで修正と新機能をリリースする予定です。We're working on these and will release fixes and new features in upcoming releases.

  • ARPlaneSubsystem はまだサポートされていません。ARPlaneSubsystem is not supported yet. HoloLens 2 では、 Arplan emanagerARRaycastManager、および ARANCHORMANAGER などの関連 API もサポートされていません ARPlaneManager, ARRaycastManager, and related API like ARAnchorManager.AttachAnchor are also not supported on HoloLens 2.
  • アンカー は Holographic リモート処理ではまだサポートされていませんが、近い将来に登場します。Anchor isn't supported by Holographic Remoting yet, but it's coming in the near future.
  • 手動メッシュ 追跡、 QR コードXRMeshSubsystem はまだサポートされていません。Hand Mesh tracking, QR Codes, and XRMeshSubsystem aren't supported yet.
  • Azure 空間アンカー のサポートは、今後のリリースで予定されています。Azure Spatial Anchors support is coming in a future release.
  • ARM64 は、HoloLens 2 アプリで唯一サポートされているプラットフォームです。ARM64 is the only supported platform for HoloLens 2 apps. ARM プラットフォームは今後のリリースで予定されています。The ARM platform is coming in a future release.

トラブルシューティングTroubleshooting

HoloLens 2 で Unity アプリを中断および再開すると、アプリは正しく再開できなくなります。これにより、HoloLens ビューでは、4つのスピン点が表示されます。When you suspend and resume a Unity app on HoloLens 2, the app can't correctly resume, which leads to 4 spinning dots in the HoloLens view.

  • 回避策として、OpenXR プロジェクト設定で [ 深さの送信モード ] を [なし ] に設定します。Set Depth submission Mode to None in the OpenXR project settings as a workaround