Version: 2023.1
言語: 日本語
Unity の AR 開発
XR アーキテクチャ

Unity での VR 開発

Unity での VR 開発は、ワークフローや設計上の考慮点に関しては Unity での他のリアルタイム 3D 開発と共通していますが、以下のような特長を持っています。

  • より豊富なユーザー入力: “従来の” ボタンやジョイスティックコントローラーに加えて、VR デバイスにより、スペーシャルヘッドコントローラーや (場合によっては) 手や指のトラッキングが使用可能です。
  • 環境とのより “親密な” インタラクション: VR では入力方式が豊富なため、一般的な 3D ゲームやアプリケーションと比べてはるかに親密で “身体的” な環境とのインタラクションが期待されます。ユーザーは物を手に取ったり、環境内のオブジェクトと相互作用できることを期待しています。ヘッドトラッキングを使えば、カメラが壁などの環境の境界により近付くことができ、それらを通り抜けることさえできます。
  • ユーザーの快適性に関する懸念: 多くの人は、カメラの動きと頭の動きが一致しない場合に、VR で乗り物酔いを起こします。乗り物酔いの要因を軽減させる方法としては、高フレームレートを維持することや、快適なモードをユーザーが選択できるように様々なロコモーションのオプションを提供すること、またカメラがユーザーのヘッドトラッキングから独立して動かないようにすることが挙げられます。

VR 開発を始めるには、XR Plug-in Management システムを使用して、サポートしたいデバイスの XR プロバイダーのプラグインをインストールして有効にしてください。詳しくは XR プロジェクトの設定 を参照してください。

VR シーンの基本要素

基本的な VR シーンには通常、トラッキングデータの 3D 原点を定義する XR Origin が含まれます。これはゲームオブジェクトとコンポーネントの集合体であり、ここにはメインシーンカメラとユーザーのコントローラーを表すゲームオブジェクトも含まれています。基本的な VR シーンの設定方法については、XR シーンを設定する を参照してください。

より高度な開発を行う場合は、通常、ユーザーが 3D 環境内で移動したり環境と相互作用するための手段が必要になります。XR Interaction Toolkit は、例えばオブジェクトを選択して掴むなどのインタラクションを作成するためのコンポーネントに加え、カスタマイズ可能なロコモーションシステムも提供します。XR Interaction Toolkit の代わりに Input System を使用することも可能ですが、両方を併用することもできます。

VR パッケージ

Unityでの VR 開発に使用される機能や API のほとんどは、パッケージを通して提供されます。パッケージには以下のようなものがあります。

VR プロバイダープラグイン

Unity で VR アプリを構築するには、XR Plug-in Management システムを使用して、サポートしたいデバイスのプロバイダープラグインを追加して有効にします。手順については XR プロジェクトの設定 を参照してください。

Unity は、以下を含む VR プロバイダープラグインをサポートしています。

  • Oculus - Oculus Rift、Meta Quest 2、Quest Pro 向け
  • OpenXR - Meta ヘッドセット、Vive ヘッドセット、Valve SteamVR、HoloLens、Windows Mixed Reality、その他 OpenXR ランタイムを使用するすべてのデバイス向け
  • PlayStation VR (PlayStation の登録済み開発者が対象) - Sony の PS VR および PS VR2 デバイス向け。詳細は PlayStation Partners を参照してください。
  • Mock HMD - Unity エディターの再生モードビューで VR ヘッドセットをシミュレートするためのもの

ノート: 多くのヘッドセットメーカーは、OpenXR ランタイムを標準で使用する方向で取り組んでいます。しかしこのプロセスは完了していないため、OpenXR と、ヘッドセットメーカー独自のプロバイダープラグインや SDK との間で、機能が一致しない場合があります。

XR Interaction Toolkit

XR Interaction Toolkit は、VR アプリケーションの開発をより簡単で迅速にします。XR Interaction Toolkit は以下を提供します。

XR Core Utilities

XR Core Utilities パッケージには、他の Unity XR プラグインやパッケージで使用されるソフトウェアユーティリティが含まれています。通常、このパッケージは他の XR パッケージの依存関係としてプロジェクトにインストールされます。

Input System

Unity の Input System パッケージは、VR コントローラーボタンとジョイスティックからの入力へのアクセスをサポートするだけでなく、XR トラッキングデータとハプティクスへのアクセスも提供します。XR Interaction ToolkitOpenXR プロバイダープラグイン を使用する場合は Input System パッケージが必要です。

VR テンプレート

Unity の VR Project Template は、Unity でのバーチャルリアリティ開発の出発点として使用できます。このテンプレートは、プロジェクト設定を調整し、適切なパッケージをプリインストールするほか、VR で使用できるプロジェクトを設定するにあたって参考になる、様々な事前設定済みサンプルアセットを含んだサンプルシーンを提供します。新規プロジェクトの作成時に、Unity Hub から VR Template にアクセスしてください。このテンプレートを使用してプロジェクトを作成する方法については、XR プロジェクトの作成 を参照してください。

このテンプレートのアセットについて、またサンプルシーンがどのように設定されているかについての詳細は、VR Project Template に関するガイド を参照してください。

ハンドトラッキング

ハンドトラッキングは、ユーザーが手を使って VR アプリケーションとインタラクトできるようにする機能です。ハンドトラッキングは XR Hands パッケージによってサポートされています。

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

  • 標準的な 手のデータモデル
  • ハンドトラッキングデータにアクセスするための API
  • XR Hand Skeleton Driver コンポーネント - Transform のセットを対応のハンドジョイントにマッピングし、トラッキングデータが受信されるとそれらの Transform を更新します。
  • The XR Hand Mesh Controller - ハンドトラッキングの取得/喪失に応じてメッシュを有効化/無効化します。
  • HandVisualizer サンプル - ハンドトラッキング API の使用方法を示します。
Unity の AR 開発
XR アーキテクチャ