Unreal Engine の VR テンプレート は、すべての仮想現実 (VR) プロジェクトの出発点として設計されています。このテンプレートには、テレポートによる移動や、アイテムを手で掴んで、手に付けるなどの一般的な入力アクションのための、カプセル化されたロジックが含まれています。

このページは、VR テンプレートの使用に関する概要と、独自の VR 体験を VR テンプレートから作成する方法を説明します。
サポートするデバイス
VR テンプレートは次のデバイスと互換性があります。
-
Oculus Mobile
-
Quest 1
-
Quest 2
-
-
Oculus PC
-
Rift S
-
Quest with Oculus Link
-
-
Steam VR
-
Valve Index
-
HTC Vive
-
-
Windows Mixed Reality
VR テンプレートを利用する前に、Unreal Engine での開発に合わせてデバイスを設定する必要があります。ドキュメント「XR Development」を参照してデバイスを正しく設定しているか、ご確認ください。
OpenXR
VR テンプレートは、複数の企業が VR や AR の開発標準として採用している OpenXR フレームワークを使用します。Unreal Engine の OpenXR プラグインを利用すると、複数のプラットフォームやデバイスでテンプレートのロジックが機能し、プラットフォームに固有の確認や呼び出しは必要ありません。
Unreal Engine の OpenXR プラグインは拡張プラグインをサポートしています。拡張プラグインはマーケットプレイスから入手できます。または独自に作成して、エンジンがデフォルトで備えていない機能を OpenXR に追加できます。
Pawn、Game Mode、Player Start
次のオブジェクトは、体験のルールとその設定方法を決定します。
UE オブジェクト | VR テンプレートのオブジェクト名 | 場所 | 説明 |
---|---|---|---|
Pawn (ポーン) | VRPawn | [Content (コンテンツ)] > [VRTemplate] > [Blueprints] | Unreal Engine のポーンはユーザーの外観を物理的に表現し、仮想ワールドで行うユーザーの行動を定義します。VR テンプレートのポーンは、モーション コントローラーの入力イベントを処理するロジックを含みます。 |
Game Mode (ゲーム モード) | VRGameMode | [Content (コンテンツ)] > [VRTemplate] > [Blueprints] | ゲーム モード オブジェクトは、どのポーン オブジェクトを使用するかなど、体験のルールを定義します。ゲーム モードの設定は [Project Settings (プロジェクト設定)] の [Maps & Modes (マップ&モード)] セクションで行います。 |
Player Start (プレイヤー スタート) | Player Start | World Outliner (アウトライナ) | Player Start アクタは、ポーンをスポーンする仮想ワールドの位置を定義します。VR 体験の場合、プレーヤー スタートの原点は仮想ワールドのトラッキング原点です。VR テンプレートは、VR 空間に立っている体験に合わせて設計されているため、プレーヤー スタートは床の高さに配置されています。 |
入力パネル
VRTemplate の入力は Unreal Engine の アクションと軸マッピングの入力システム に基づきます。OpenXR の入力を設定する方法については「OpenXR による入力」を参照してください。

Movement
VR 体験のムーブメントは「ロコモーション」と呼ばれます。VR テンプレートには Teleport と Snap Turn という 2 種類のロコモーションがあります。ブループリント エディタで VRPawn を開くと、両方の実装方法を確認できます。
テレポート
レベルの異なる場所にテレポートするには以下の手順に従います。
-
右のモーション コントローラーに対応するサムスティックやトラックパッドを、移動する方向に動かします。するとテレポート ビジュアライザーが表示され、移動先を示します。
-
サムスティックやトラックパッドを放すとテレポートを実行します。

スナップターン
頭を動かさずに仮想キャラクターを回転させる場合は、左のモーション コントローラーに対応するサムスティックやトラックパッドを、移動する方向に動かします。

移動できるエリアを設定する
レベルで Navigation Mesh (ナビゲーション メッシュ) を使用すると、ユーザーが移動できる範囲を設定できます。これを実装する方法のサンプルとして NavModifier_NoTeleport の NavModifierVolume アセットを参照してください。このアセットの Area Class パラメーターを NavArea_Null に設定しているため、このボリュームにユーザーは移動できません。

テレポート ビジュアライザーは NavModifier_NoTeleport ボリューム内では表示されません。
キーボードで P キーを押すと、移動できる領域のビジュアリゼーションが切り替ります。

Grab
VR テンプレートは、オブジェクトを拾って手にアタッチする 2 つの異なる方法を示します。
レベルにあるオブジェクトを掴む方法です。
-
掴めるオブジェクトに近づいて、モーション コントローラーの Grip ボタンを長押しします。
-
これでモーション コントローラーの Grip Location 位置の周囲に Sphere Trace が作成されます。その Sphere 内に Grab Component を持つアクタが存在する場合、 Grip ボタンを押すことで、それが手にアタッチされます。
-
同じモーション コントローラーの Grip ボタンを放すと、そのオブジェクトが手からデタッチされます。
アクタに Grab Component を追加すると、そのアクタを掴めるようになります。Begin Play で、コンポーネントの親に設定したコリジョン プロファイルを、Physics Actor に設定します。これは VRPawn の Sphere Trace に使用するトレース チャンネルです。
GrabComponent ブループリント クラスを開いて、Grab システムが VR テンプレートにどのように実装されているかを確認できます。
GrabType
オブジェクトの Grab Component に掴み方の種類を設定することで、手にオブジェクトをアタッチする方法を定義できます。
GrabType 列挙型 アセットに、次に示す掴み方の種類が定義されています。
- Free:アクタの位置と回転を、モーション コントローラーで掴んだ場所と相対的に維持します。小さなキューブをサンプルとしてご覧ください。
- Snap: モーション コントローラーと相対的な特定の位置と回転をアクタに設定します。銃をサンプルとしてご覧ください。
- Custom: このオプションでは OnGrabbed と OnDropped のイベントを使用して、掴むアクションに独自のロジックを追加できます。ブール変数 bIsHeld など、公開された他の変数を利用することもできます。このブール変数は、オブジェクトを現在ユーザーが掴んでいるかどうかを指定するフラグです。作成可能な他の種類の掴むカスタム アクションの例には、両手掴み、ダイヤル、レバー、掴んだ時にジオメトリとオーバーラップしないアクタなど、その他にも複雑な動作があります。
対象オブジェクトの Grab Component で OnGrabHapticEffect 変数を設定すると、そのオブジェクトを掴んだ時に発生するハプティック エフェクトを定義できます。ハプティック エフェクトには、たとえばモーション コントローラーの振動があります。
Grab Component で使用する重要な機能は、ブループリント インターフェース アセット VRInteraction BPI を使用して、共通のインターフェースに抽象化されます。このブループリント インターフェース アセットを使用することで、VRPawn はロジックを簡素化し、オブジェクトの種類ごとに複数の確認を使用せずに済みます。ブループリント インターフェースの詳細やメリットについては、「ブループリント インターフェース」のページを参照してください。
メニュー
モーション コントローラーのメニュー ボタンを押すと、VR テンプレートのメニューが開きます。このメニューは Unreal Motion Graphics (UMG) で構築されています。このツールの詳しい使用方法については 「UMG UI Designer」 を参照してください。

コンテンツ ブラウザ から [Content (コンテンツ)] > [VRTemplate] > [Blueprints] > [WidgetMenu] を順に選択すると、メニューのロジックを設計して作成する UMG アセットを利用でき、 Menu ブループリントはコントローラーでウィジェットを操作する方法を定義します。
VR Spectator
Spectator Screen Mode を使用すると、ヘッドマウント ディスプレイ (HMD) を使用している間に、他のユーザーと VR 体験を共有できます。VR テンプレートは VR Spectator ブループリントを使用して Spectator Screen Mode のサンプルを実装しています。
VR テンプレートで Spectator Mode を有効化する方法は 2 つあります。
-
セッション中に Tab キーを押下して Spectator Mode を切り替えます。
-
VRSpectator bSpectatorEnabled を true に設定します。
VR Spectator は Oculus Quest などのモバイル VR デバイスと互換性がありません。
マウス、キーボード、ゲームパッドで次の入力を使用して VR Spectator を制御し、HMD を装着したユーザーが見ている仮想ワールドを表示できます。
アクション | 入力 |
---|---|
VRSpectator の切り替え | Tab キー |
前進 | W キー |
後退 | S キー |
左に移動 | A キー |
右に移動 | D キー |
上に移動 | E またはスペース キー |
下に移動 | Q キー |
Pitch (ピッチ) | 前後にマウスを動かす |
Yaw (ヨー) | 左右にマウスを動かす |
視野角 (FOV) の変更 | マウス ホイールを動かす |
FOV のリセット | マウスの中央ボタンをクリックする |
フェード インとフェード アウトを切り替える | F キー |
回転のリセット | R キー |
同じ PC にマルチプレイヤー体験を実装する際は、この VR Spectator を出発点として利用できます。