Snapdragon Spaces 開発ガイド (5)
5.4 インタラクションパッケージのガイドライン
5.4.1 MRTK3 セットアップガイド
このサンプル シーンは、MRTK3 を Unity プロジェクトに統合する方法を示します。MRTK の詳細については、MRTK3 ドキュメントを参照してください。
Windows 上で MRTK3 と Snapdragon Spaces を使用して新しい Unity プロジェクトをセットアップする
このガイドでは、Snapdragon Spaces 用の新しい MRTK3 プロジェクトをセットアップして構築する方法の手順を説明します。
注意事項
仮想キーボードと Web ブラウザのコンポーネントは現在サポートされておらず、予期しない動作を引き起こす可能性があるため、これらのコンポーネントの使用は避けてください。
Unityプロジェクトの設定
Unity セットアップ ガイドから始めて、前提条件から空間機能の有効化までを行ってください。
セットアップが完了したら、Unity プロジェクトを開いたままにし、ファイル パスをメモします。
MRTK プロジェクトの構成
- MRTK3 インストールの MRTK 要件:
- Visual Studio 2019 Community Edition 以降
- MRTK3 パッケージにアクセスするには、Mixed Reality 機能ツールが必要です。この機能は現在 Windows でのみ利用可能です。ダウンロードしましたが、まだ実行していません。
- Visual Studio 16.11.14+ に含まれる .Net 0.5+ ランタイムが必要です。
MRTK3パッケージをインポートする
- Mixed Reality 機能ツール (MixedRealityFeatureTool.exe) を開く
- ロードされるまで待ってから、左下隅にある設定アイコンをクリックします。
- 「機能」タブをクリックします。
- [プレビュー バージョンを表示] チェックボックスをオンにします。
- [OK]をクリックして確認します。
- 「開始」をクリックします。
- [プロジェクト パス] を Unity プロジェクトのファイル パスに設定します。
- 「機能の検出」をクリックします。
- MRTK3 項目の [すべて選択] をクリックします。
- 「機能を取得」をクリックします。いくつかの推奨される依存関係が表示される場合があります。その場合は、それらも選択してください。完了したら [インポート] をクリックしてファイルをダウンロードし、Unity プロジェクト マニフェストを更新します。
- 終了したら、フィーチャ ツールを閉じるか、開いたままにして必要に応じて調整を続けるかを選択できます。
Unity に戻ってパッケージのインポートを完了します
- Unity プロジェクトに戻り、Mixed Reality 機能ツールが新しい機能を追加した後、インポートが行われるまで待ちます。
- プロンプトが表示されたら、「バックアップを作成しました。どうぞ! XR インタラクティブ レイヤー マスク」を選択します。
- 再起動を求めるプロンプトが表示されたら、「はい」を選択します
シーン設定
新しいシーンを作成します。このシーンはカメラをセットアップして最初から入力するために使用されます。
Snapdragon Spaces のカメラを変更する
- メインカメラをシーン階層から削除します。
- MRTK XR Rig Prefab を見つけて、次の場所にシーンにドラッグします: Packages/com.microsoft.mrtk.input/Assets/Prefabs/MRTK XR Rig.prefab
Snapdragon Spaces コントローラー入力の構成
上で述べたように、このガイドはコンパニオン コントローラーをデバイス入力として使用する場合にのみ適用されます。コンパニオン コントローラーを設定するには、以下の手順に従ってください。
- MRTK XR リグ (トップレベルのゲーム オブジェクト):
- 入力アクション マネージャー コンポーネントで、アクション アセット ドロップダウンに 2 番目の要素を追加し、次のように設定します: Samples/Snapdragon Spaces/[version ID ]/Core Samples にある入力アクション/共有アセット/入力アクション。これにより、入力アクションが Snapdragon Spaces コアの例で設定されたアクションにマッピングされ、コンパニオン コントローラーへの適切な接続が可能になります。
- 次に、Samples/Snapdragon Spaces/[Version ID]/Core Samples/Shared Assets/Prefabs/Interaction/ にある Device Pointer プレハブを追加します。 -
XR Interactor Line Vision コンポーネントで、Line width を 0.005 に変更します。
最後に、MRTK 構成ファイルをセットアップします。
- [パッケージ] > [MRTK コア定義] > [構成] > [デフォルト プロファイル] にある MRTKProfile のコピーを作成し、プロジェクトの Assets ディレクトリに配置します。
- [編集] > [プロジェクト設定] > [MRTK3] を開きます。
- コピーを「Android」タブの「プロファイル」セクションにドラッグします。
- [MRTK Hands Aggregator Subsystem] のチェックを外します。
- Hand Synthesis サブシステムのチェックを外します。
オプション: MRTK 機能をテストするための対話型コンポーネントを追加します。
選択可能なオブジェクト
- 3D 立方体をシーンに追加します。
- 位置を (0, 0, 1.5) に設定します
- (45, 45, 45) に回転します
- (0.5, 0.5, 0.5) にスケールします - レーザー ポインターからのグラブを可能にするコンポーネント「ObjectManipulator」を追加しました。
MRTKボタンセット
- ButtonGroup_32x32mm_H3 プレハブをシーンに追加して、MRTK プレハブ インタラクション コンポーネントをテストします。
- これにより、TextMeshPro のインストールを求めるメッセージが表示される場合があります。その場合は、「TMP Essentials をインポート」を選択します。
- Hierarchy で ButtonGroup を選択し、Inspector で Transform Position を 0,0,0.5 に設定します。[再生]を押してスクリプトを処理し、ボタンの面を視覚化します。次に、[停止]を押して編集に戻ります。
- ButtonGroup を展開して 3 つの PressableButton_32x32mm_IconAndText オブジェクトを見つけ、一度に 1 つずつ展開します。
- 最初の方法では、トップレベルのボタン オブジェクトを選択し、インスペクターで Pressable Button コンポーネントを見つけ、+OnClicked() をクリックしてシーン内の Cube に設定し、アクションを GameObject.SetActive に設定してチェックボックスをオフにします。
- サブ CompressableButtonVisuals の下で:
- UX.Button.Icon.Char サブオブジェクトを見つけて、SpriteRenderer のスプライトを空の円に変更します。 - 2 番目の場合は、トップレベルのボタン オブジェクトを選択し、インスペクターで Pressable Button コンポーネントを見つけ、+OnClicked() をクリックしてシーン内の Cube に設定し、アクションを GameObject.SetActive に設定してチェックボックスをオンにします。
- 子 CompressableButtonVisuals の下で:
- UX.Button.Icon.Charchild オブジェクトを見つけて、SpriteRenderer のスプライトを実線の円に変更します。
- TextMeshPro サブキーを見つけて、テキスト入力を「表示」に設定します。 - 3 番目のボタンについては、まず新しいスクリプトを作成し、それをキューブに追加する必要があります。スクリプトには、次のような公的にアクセス可能な関数が必要です。
...
public void Quit() {
Application.Quit();
}
...
- 引き続き 3 番目のボタン:
- 最上位のボタン オブジェクトを選択し、インスペクターで [Pressable Button] コンポーネントを見つけ、+OnClicked() をクリックして、シーン内で Cube に設定し、新しいスクリプトのアクションを Quit() に設定します。 。
- サブ CompressableButtonVisuals の下で:
- UX.Button.Icon.Char サブオブジェクトを見つけて、SpriteRenderer のスプライトを Quite ボタンに変更します。
- TextMeshPro サブキーを見つけて、テキスト入力を「表示」に設定します。
試験装置
- アプリケーションをビルドするには、ビルド設定とプレーヤー設定を構成します。
- [ビルド設定] ウィンドウからアプリケーションをビルドし、アプリケーションをローカルに保存します。
- Android デバイスを接続し、プロンプトが表示されたら USB デバッグを承認します。
- apk をデバイスにインストールします。
- アプリアイコンを長押しし、「アプリ情報」をタップし、すべての権限を承認します。
- メガネを接続し、完全にロードされたらアプリを実行します。
MRTKサンプル
利用可能な MRTK3 UI コンポーネントの詳細を確認するには、MRTK3 サンプルをダウンロードし、Snapdragon Spaces 用に構成することをお勧めします。これを行うには、以下の手順に従ってください。
MRTK3 のサンプルを取得する
- リポジトリのクローンを作成するか、mrtk3 フォークをダウンロードします: https://github.com/microsoft/MixedRealityToolkit-Unity/tree/mrtk3
- このリポジトリを短いファイル名の場所に抽出または複製します。このリポジトリには非常に長い名前のフォルダーが多数あるため、ファイル名が長すぎて Unity で問題が発生する可能性があります。
- 多くの依存関係があり、ファイルの場所を変更すると問題が発生するため、このリポジトリ内のファイルは移動しないでください。リポジトリを移動する必要がある場合は、リポジトリ全体を完全に移動します。
プロジェクトを開いて、Snapdragon Spaces を統合します。
- Unity HubのMRTK3サンプル「UnityProjects」フォルダーから「MRTKDevTemplate」を追加します。
- Unity プロジェクトを開きます。
- Unity セットアップ ガイドの手順に従って、Snapdragon Spaces パッケージをインポートします。
- 開くシーンを選択します。推奨されるシナリオは HandInteractionExamples です。
- 上記のようにカメラと入力を変更するシーンを設定します。
- ビルドしてデバイスにデプロイします。
ハンドトラッキング
注:
ハンド トラッキングには、ターゲット デバイスに Snapdragon Spaces Services 0.11.1 以降がインストールされている必要があります。MRTK ハンドトラッキング用に構築されたアプリは、以前のバージョンの Snapdragon Spaces サービスを搭載したデバイスでは期待どおりに動作しない可能性があります。
ハンドトラッキングプラグインの設定
Mixed Reality OpenXR プラグインを使用したハンド トラッキング。プラグインを入手するには、Mixed Reality Capabilities Tool (上記を参照) を使用し、プラットフォーム サポート セクションから Mixed Reality OpenXR プラグインを選択します。
[完了] をクリックしてプロジェクト プロセスを更新し、Unity プロジェクトに戻ります。
統合された構成
Unity には、更新する必要がある領域が 2 つあります。
MRTK設定
1 つ目は MRTK セットアップです。[MRTK Hands Aggregator Subsystem] チェックボックスと [Subsystem of OpenXR Hands API] チェックボックスが両方とも有効になっていることを確認します。
また、デフォルトで 0.25 に設定されている「ピンチして閉じるしきい値」設定を調整してみることをお勧めします。開発者は、このしきい値を 0.45 または 0.5 に調整することである程度の成功を収めています (図を参照)。
OpenXR 設定
更新する 2 番目の領域は OpenXR 設定です。ここで、両方の Hand Tracking チェックボックスを有効にします。1 つは Spaces Hand Tracking にトラッキングを実行させる方法で、もう 1 つは MRTK にインタラクティブ システムでハンド トラッキングを利用させる方法です。
手の視覚化設定
MRTK が提供するハンド メッシュに加えて、Snapdragon Spaces SDK は仮想ハンド オーバーレイを視覚化するための QCHT ハンド メッシュも提供します。
これを行うには、シーン階層の MRTK XR Rig > Camera Offset > MRTK RightHand Controller を選択します。
hand_right_qcht を、MRTK RightHand コントローラー フィールドにあるプレハブ Model Prefab にドラッグしますpackages/QCHT Unity Interactions/Prefabs/MRTK3/
左手でも同じ手順を実行します。
ハンドトラッキングオプション
注
OpenXR コントローラー設定ファイルとの競合により、現在、Snapdragon Spaces コントローラーとハンドの両方からレイキャストを行うことはできません。したがって、選択肢は 2 つあります。
オプション 1: 左手トラッキングを無効にする
左手のトラッキングを無効にするには、MRTK XR リグの左手のコントローラーをオフにしますが、右手のコントローラーはそのままにしておきます。左手を持ったままにしても、コライダーとしては機能する可能性がありますが、レイキャスティング インタラクターとしては機能しない可能性があります。このオプションを使用すると、デバイス ポインターの継続使用が許可されますが、制限が理想的ではない可能性があります。
オプション 2: Snapdragon Spaces コントローラーを無効にする (両手オプション)
Snapdragon Spaces コントローラーを無効にするには、デバイス ポインター プレハブ (存在する場合) をシーンから削除または無効にします。
次に、OpenXR 設定からプロファイルを削除します。
これにより、基本ランタイム機能の横に警告が表示されますが、無視しても問題ありません。これにより両手を追跡できるようになりますが、電話コントローラーは「手の追跡のみ」モードであるため、ポインター追跡やボタン押下メッセージをアプリに送信しません。これは主に、他の「ハンド トラッキング専用」プラットフォームからアプリケーションを直接移植する場合に推奨されます。
MRTK リソース
MRTK の詳細については、MRTK3 ドキュメントを参照するか、Github MRTK プロジェクトのソース コードを参照してください。