Version: 2023.2
言語: 日本語
XR シーンの設定
XR Origin

XR 入力の選択肢

XR ゲームやアプリケーションにおける入力処理の主な選択肢は、以下の通りです。

  • XR Interaction Toolkit
  • OpenXR インタラクションプロファイル
  • Input System や Input Manager を介した “従来的な” 入力
  • XR.InputDevice と XR.Node API
  • サードパーティ製の入力ライブラリ

上記の複数の方法を同時に使用する場合もあります。例えば、XR Interaction Toolkit を使用してユーザーが環境内のオブジェクトを拾えるようにし、Input System を使用して一時停止機能をコントローラーの特定のボタンに紐付け、XR.Node API でハードウェアの状態を読み取ってコントローラーゲームオブジェクトを動かせるようにする、などです。

ノート: OpenXR プラグインは、様々な XR デバイスやコントローラーをサポートし、XR 入力とトラッキングデータへの追加的なアクセス方法を独自に提供します。XR Interaction Toolkit、Input System、あるいは XR.InputDevice と XR.Node API は、引き続き使用できます。(OpenXR プラグインを使用する場合、旧 Input Manager はサポートされません。) 詳細は Input in Unity OpenXR を参照してください。

XR Interaction Toolkit

XR Interaction Toolkit は、Input System と基本の UnityEngine.XR API を基盤として構築され、XR 入力をサポートします。このツールキットは、XR 入力を処理したり、ユーザーと環境とシーン UI の相互作用 (インタラクション) を定義するための、ほぼそのまま使用できるコンポーネントのセットを提供します。このツールキットのインタラクションシステムを使用しない場合でも、入力コンポーネントを土台として使用すれば、設定の手間を省くことができます。このツールキットは、入力処理の基本的なアプローチとして以下の 2 つを提供します。

  • Action-based (アクションベースの) 入力は、最も自在度が高く、複数のコントローラーや入力スキームをより簡単にサポートできます。XR Interaction Toolkit は、一般的な XR 入力のニーズに対応するアクションを定義します。これらのアクションを使用するには、コントローラーのゲームオブジェクトに XR Controller (Action-Based) コンポーネントを追加します。このコンポーネントは、(デバイスベースのオプションを選択した場合を除いて) XR シーンに追加できる、XR Origin の設定の一部になっています。
  • Device-based (デバイスベースの) 入力は、アクションベースの入力と比べて、設定が簡単ですが、自在度が低くなります。XR Interaction Toolkit でデバイスベースの入力を使用するには、コントローラーゲームオブジェクトに XR Controller (Device-Based) コンポーネントを追加します。このコンポーネントは、GameObject > XR > Device-based > XR Origin メニューコマンドでシーンに追加する XR Origin の設定の一部になっています。

Input System の Action (アクション) に関する詳細は、Action を参照してください。

ヒント: XR Interaction Toolkit の Starter Assets には、アクションベースの入力に伴う反復的な設定作業のほとんどを省略できる、プリセットと入力アクションが提供されています。

XR Interaction Toolkit は、以下の基本的インタラクションを定義します。

  • Select: 環境内の Interactable の選択に使用されます。
  • Activate: 環境内の Interactable のアクティベートに使用されます。
  • UI Press: UI 内のボタンなどの制御を押すために使用されます。
  • Rotate anchor: (X-Ray Interactor で) 遠くにある物体を回転させるために使用されます。
  • Translate anchor: (X-Ray Interactor で) 遠くにある物体を移動させるために使用されます。

XR Interaction Toolkit は、これらのインタラクションを追加的なコンポーネントと共に使用して、ユーザーが環境と相互作用できるようにします。例えば、オブジェクトに GrabInteractable コンポーネントを追加すると、ユーザーは Select をトリガーしてオブジェクトを掴むことができます。デフォルトでは Select は XR コントローラーのグリップボタンに紐付けられていますが、紐付けは自由に変更できます。また、ツールキットで定義されるアクションや紐付けの他に、独自のアクションや紐付けを使用することもできます。

Input System と Input Manager

XR コントローラーのボタンやジョイスティックなどの制御へのアクセスは、他のゲームコントローラーへのアクセスと同様に行えます。トラッキングデータにアクセスするには、コード内で XR.InputTracking API を使用します。また、Input System の TrackedPoseDriver コンポーネントを使用して、トラッキングされるデバイス (HMD やコントローラーなど) でゲームオブジェクトを制御することも可能です。Input System を使用していない場合は、Legacy Input Helpers パッケージから TrackedPoseDriver コンポーネントを入手することもできます。

ノート: OpenXR プラグインを使用する場合は、Input System を使用する必要があります。Input Manager はサポートされていません。

XR のハンドトラッキング入力

XR Hands パッケージは、ハンドトラッキングをサポートする XR デバイスからの、ハンドトラッキングデータへのアクセスを提供します。このデータにアクセスするには、OpenXR バージョン 1.7 などの、ハンドトラッキングのサポート入りで更新された XR プロバイダープラグインを使用する必要があります。

XR Hands パッケージは、以下を提供します。

  • XR デバイスから Unity アプリケーションへのハンドデータの送信を可能にする XRHandTrackingSubsystem
  • Unity のアプリケーションがデータへのアクセスに使用できる ハンドトラッキング API
  • ジェスチャーの照準システムと、OpenXR のハンドトラッキングデータの入力紐付けを提供する、OpenXR の Meta Aim Hand 機能 拡張のサポート

XR Input API

XR Input API は、XR 入力への直接のアクセスを提供します。この API を使用して、接続されている XR デバイスを見つけ、そのトラッキングデータと入力ハードウェアの状態を読み取ることができます。

XR Input API に関する詳細は、Unity の XR 入力 を参照してください。

サードパーティ製の入力 API

デバイスメーカーなどのサードパーティが独自の入力 API やインタラクション API を提供することも多くあり、Unity 提供の API の代わりに (あるいはそれに加えて) 使用することができます。

XR シーンの設定
XR Origin