複合現実 (Mixed Reality, MR) デバイス
VR デバイス

VR 概要

Unity VR lets you target virtual reality devices directly from Unity, without any external plug-ins in projects. It provides a base API and feature set with compatibility for multiple devices. It provides forward compatibility for future devices and software.

ネイティブの VR サポートを使用することにより、以下が可能になります。

  • 各 VR デバイスの安定バージョン
  • さまざまな VR デバイスと通信するための 1つの API インターフェース
  • 各デバイスごとの、外部プラグイン無しのクリーンなプロジェクトフォルダー
  • アプリケーション内で複数デバイスを扱い、その間を切り替えることが可能な性能
  • Better performance (Lower-level Unity engine optimizations are possible for native devices)

Unity の VR サポートを有効にする

ゲームのビルドとエディターの VR を使用可能にするには、Player Settings を開き(menu: Edit > Project Settings > Player)、 XR Settings を選択し Virtual Reality Supported のボックスをチェックします。各ビルドターゲットごとにこの設定を行います。スタンドアローンビルドの VR を有効にしても、Android のサポートを有効にしたことにはなりません (逆の場合も同様)。

Player Settings に移動
Player Settings に移動

Use the Virtual Reality SDKs list below the checkbox to add and remove VR devices for each build target. The order of the list is the order that Unity tries to enable VR devices at runtime. The first device that initializes properly is the one enabled. This list order is the same in the built player.

XR Settings で Virtual Reality Supported を有効にする
XR Settings で Virtual Reality Supported を有効にする

ビルドされたアプリケーション: 起動するデバイスを選ぶ

ビルドされたアプリケーションは、XR SettingsVirtual Reality SDKs_ リスト (前出の Unity の VR サポートを有効にする 参照) と同じ順番で、デバイスを初期化し有効にします。ビルド時にリストにないデバイスは、最終的なビルドで使用できません。リストにデバイスがない場合は、非 VR アプリケーション (つまり、通常の Unity アプリケーション) と同等で、実行時にリストに含めずに切り替えることができます。例外は None__ です。

If you include None as a device in the list, the application can default to a non-VR application before it attempts to initialize a VR device. If you place None at the top of the list, the application starts with VR disabled. Then, you can then enable and disable VR devices that are present in your list through script using XR.XRSettings.LoadDeviceByName.

切り替えようとするデバイスの初期化が失敗すると、Unity はそのデバイスがまだアクティブな VR デバイスとして設定されている状態で VR を無効にします。デバイスを切り替えたり (XRSettings.LoadDeviceByName)、有効にすると (XR.XRSettings-enabled)、ビルドされたアプリケーションは再び初期化を試みます。

Use the following command line argument to launch a specific device:

-vrmode DEVICETYPE

この DEVICETYPE はサポートされている XR サポートデバイスリスト にある名前の 1 つです。

MyGame.exe -vrmode oculus

VR を有効にすると、何が起きるか

Unity で VR を有効にすると、自動的にいくらか変化が起こります。

自動的にヘッドマウントディスプレイにレンダリング

All Cameras in your Scene can render directly to the head-mounted display (HMD). Unity automatically adjusts View and Projection matrices to account for head tracking, positional tracking and field of view.

Camera コンポーネントの stereoTargetEye プロパティーを使用して HMD へのレンダリングを無効にすることが可能です。その他に、 Target Texture プロパティーを使って、カメラがレンダーテクスチャにレンダリングするように設定できます。

  • Use the stereoTargetEye property to set the Camera to only render a specific eye to the HMD. This is useful for special effects such as a sniper scope or stereoscopic videos. To achieve this, add two Cameras to the Scene: one targeting the left eye, the other targeting the right eye. Set layer masks to configure what Unity sends to each eye.

ヘッドトラッキングされた自動入力

Unity automatically applies head tracking and the appropriate field of view (FOV) to the Camera if the target device is head-mounted. You can manually set the FOV to a specific value, but you cannot set the Camera’s transform values directly. See the section below on Understanding the Camera to learn more.

Automatic head tracking and positional tracking ensures that the position and orientation most closely match the user’s position and orientation before Unity renders the frame. This gives a good VR experience, and prevents the user from experiencing nausea.

Understand the Camera

Unity overrides The Camera Transform with the head-tracked pose. To move or rotate the Camera, attach it as a child GameObject of another GameObject. This makes it so that all Transform changes to the parent of the Camera affect the Camera itself. This also applies to moving or rotating the camera using a script.

Main Camera を任意のゲームオブジェクトの子供にする
Main Camera を任意のゲームオブジェクトの子供にする

カメラの位置と向きを、ユーザーがニュートラルな姿勢で見ている状態と考えます。

座ったまま (seated) とルームスケール (room-scale) の VR 体験には相違点があります。

  • デバイスがルームスケールの体験をサポートする場合は、ユーザーのプレイスペースの中央がカメラの開始位置になります。
  • 座ったまま (seated) の体験にする場合は XR.InputTracking.Recenter() を使って、カメラをニュートラルな位置にリセットします。

デバイスにレンダリングされている各カメラは、カメラの FOV を、各 VR SDK のソフトウェア設定でユーザーが入力したFOV に自動的に置き換えます。この動作は動きによる酔いを引き起こすことが知られているため、ユーザーは実行時に FOV を変更することはできません。

エディター モード

  • VR デバイスが Unity エディターモード をサポートしている場合、エディターで再生ボタンを押すとデバイス上で直接テストすることができます。

The left eye renders to the Game View window if you have stereoTargetEye set to left or both. The right eye renders if you have stereoTargetEye set to right.

  • ゲームビューで左右の目のビューを横並びにするには、2つのカメラを作成します。片方を左目、もう片方を右目に設定し、それらを表示するビューポートを横並びにします。

Note that there is overhead to running in the Editor, because Unity IDE needs to render each window, so you might experience lag or judder. To reduce editor rendering overhead, open the Game View and enable Maximize on Play.

The Unity Profiler is a helpful tool to get an idea of what your performance should be like when it runs outside of the Editor. However, the profiler itself also has overhead. The best way to review game performance is to create a build on your target platform and run it directly. You can see the best performance when you run a non-development build, but development builds allow you to connect the Unity profiler for better performance profiling.

Unity を使った VR 開発で推奨のハードウェアとソフトウェア

ハードウェア

ターゲット HMD に近いフレームレートを達成することは、よい VR 体験のためには不可欠です。これは、HMD で使われるディスプレイのリフレッシュレートと一致しなければなりません。フレームレートが HMD のリフレッシュレートを下回ると特に顕著で、しばしばプレイヤーが吐き気を感じる原因になります。

下の表は一般的な VR ヘッドセットに対するデバイスリフレッシュレートです。

VR デバイス リフレッシュレート
Gear VR 60hz
Oculus Rift 90hz
Vive 90hz

ソフトウェア

  • Windows: Windows 7、8、8.1、10 はすべて互換性あり。

  • Android: Android OS Lollipop 5.1 以降。

  • OS X: OSX 10.9 以降とランタイムに Oculus 0.5.0.1。ただし、Oculus は OS X 対し開発停止 しているため、Unity でネイティブの VR 機能を使うには Windows を使用してください。

  • グラフィックスカードドライバ: ドライバを更新するよう注意してください。すべてのデバイスは最新のドライバに対応しています。そのため、古いドライバはサポートされていない場合があります。

デバイスのランタイムの要件

各 VR デバイスでは、マシンに適切なランタイムがインストールされている必要があります。たとえば、Unity 内で Oculus を開発して実行するには、Oculus ランタイム (Oculus Home とも呼ばれます) がマシンにインストールされている必要があります。Vive には、Steam と SteamVR が必要です。

Depending on what version of Unity you are using, the runtime versions for each specific device that Unity supports may differ. You can find runtime versions in the release notes of each major and minor Unity release.

バージョンの更新の中には、以前のランタイムバージョンをサポートしないものもあります。つまり、ネイティブの Unity VR サポートは以前のランタイムバージョンでは機能しませんが、新しいランタイムバージョンでは引き続き動作します。

Unity native VR support does not read plug-ins from within your project’s folder, so including earlier versions of the plug-in with native support fails if you have VR support enabled. If you wish to use an earlier version with a release of Unity that no longer supports that version, disable Native VR Support (go to XR Settings and uncheck Virtual Reality Supported). You can then access the plug-in like any other 3rd party plugin. See the section above on Enabling Unity VR Support for more details.

複合現実 (Mixed Reality, MR) デバイス
VR デバイス