MRが楽しい

MRやVRについて学習したことを書き残す

MRTK v2のドキュメントを少しずつ読み解く ポインター その1

本日は MRTKv2 の調査枠です。
MRTKv2 の Guides ドキュメントを少しずつ読み進めていきます。

MRTKv2のGuidesドキュメント

以下のドキュメントを読み進めていきます。
microsoft.github.io

以下のページでは有志による本ドキュメントの日本語翻訳が行われています。
投稿時点でこちらで未翻訳、または著者が興味のある部分について記事にしていきます。
hololabinc.github.io

本記事では以下のページを読み進めます。
microsoft.github.io
f:id:bluebirdofoz:20200313092002j:plain

ポインター

この記事ではポインター入力を構成して応答する方法をポインターアーキテクチャと比較して説明します

ポインターは、新しいコントローラーが検出されると、実行時に自動的にインスタンス化されます。
複数のポインターをコントローラーに接続できます。
例えば、デフォルトのポインタープロファイルを使用すると、Windows Mixed Realityコントローラーは通常の選択のための線と、テレポーテーションのための放物線の両方のポインターを取得します。

ポインター構成

ポインターは MixedRealityPointerProfile を介してMRTKの入力システムの一部として構成されます。
このタイプのプロファイルはMRTK構成インスペクターの MixedRealityInputSystemProfile に割り当てられます。
ポインタープロファイルは、カーソル、実行時に使用可能なポインターの種類、およびそれらがどのようにアクティブであるかを決定するかを決定します。

Pointing Extent

ポインターが GameObject と対話できる最大距離を定義します。

Pointing Raycast Layer Masks

これは指定されたポインターが相互作用する GameObject と作用の順序を決定するための、LayerMask の優先順位付き配列です。
これはポインターが他のシーンオブジェクトの前に、UI要素と対話することを保証するのに役立つ場合があります。
f:id:bluebirdofoz:20200313092016j:plain

ポインターオプションの構成

デフォルトのMRTKポインタープロファイル構成には次のポインタークラスと関連するプレハブがすぐに使用できます。
実行時にシステムで使用可能なポインターのリストはポインタープロファイルの[Pointer Options]で定義されます。
開発者はこのリストを使用して、既存のポインターを再構成したり、新しいポインターを追加したり、削除したりできます。
f:id:bluebirdofoz:20200313092114j:plain

ポインターエントリは、次のデータセットによって定義されます。

Controller Type

ポインターが有効なコントローラーのセットです。

例えば PokePointer は指でオブジェクトを「突く」役割を果たします。
これはデフォルトでは関節式ハンドコントローラータイプのみをサポートするものとしてマークされています。
ポインターは対称のコントローラータイプが使用可能になったときにのみ、インスタンス化されます。
Controller Type はこのポインタープレハブを作成できるコントローラーを定義します。

Handedness

特定の手(左/右)に対してのみインスタンス化されるポインターを許可します。
Pointer エントリの Handedness プロパティを None に設定すると、システムから実質的に無効になります。

Pointer Prefab

このプレハブアセットは指定されたコントローラータイプと利き手に一致するコントローラーが追跡され始めるとインスタンス化されます。

1つのコントローラーに複数のポインターを関連付けることができます。
例えば、デフォルトの HoloLens 2 プロファイルで多関節ハンドコントローラーは PokePointer、GrabPointer、DefaultControllerPointer(手の光線)に関連付けられています。

注意

MRTKは Assets/MixedRealityToolkit.SDK/Features/UX/Prefabs/Pointers 配下に一連のポインタープレハブを提供します。
Assets/MixedRealityToolkit.SDK/Features/UX/Scripts/Pointers のポインタースクリプトの1つか、IMixedRealityPointerを実装するスクリプトが含まれていれば、新しいカスタムプレハブを構築できます。