Unity VR を使用すると、プロジェクトに外部プラグインを使わずに、Unity から直接 VR デバイスをターゲットにできます。Unity VR は、基本 API と機能のセット、そして、それらの機能と複数デバイスとの互換性を提供します。Unity VR は、これからのデバイスとソフトウェアにさらに進んだ互換性を提供するよう、設計されています。VR API の外見は、計画的に最低限にされていますが、VR が継続的に発展していくにつれ拡張されます。
ネイティブの VR サポートを使用することにより、以下が可能になります。
ゲームのビルドとエディターの VR を使用可能にするには、Player Settings を開き(menu: Edit > Project Settings > Player)、 Other Settings を選択し Virtual Reality Supported のボックスをチェックします。各ビルドターゲットごとにこの設定を行います。スタンドアローンビルドの VR を有効にしても、Android のサポートを有効にしたことにはなりません (逆の場合も同様)。
その下に表示された Virtual Reality SDKs のリストに、それぞれのビルドターゲットの VR デバイスを追加、または、削除します。リストの順番は、ランタイムに Unity が VR デバイスを有効にする順番です。最初に適切に初期化されたデバイスが有効にされます。このリストの順番はビルドされたプレイヤー内でも同じです。
ビルドされたアプリケーションは、Other Settings の Virtual Reality SDKs_ リスト (前出の Unity の VR サポートを有効にする 参照) と同じ順番で、デバイスを初期化し有効にします。ビルド時にリストにないデバイスは、最終的なビルドで使用できません。リストにデバイスがない場合は、非 VR アプリケーション (つまり、通常の Unity アプリケーション) と同等で、実行時にリストに含めずに切り替えることができます。例外は None__ です。
Including None as a device in the list allows you to default to a non-VR application before attempting a VR device’s initialization. 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 VRSettings.LoadDeviceByName.
If initialization of the device you attempt to switch to fails, Unity disables VR with that device still set as the active VR device. When you switch devices (VRSettings.LoadDeviceByName) or enable VR (VR.VRSettings-enabled), the built application attempts to initialize again.
特定のデバイスを開始するためのコマンドライン引数は以下のとおりです。
-vrmode DEVICETYPE
上記の DEVICETYPE は VR デバイスのリスト でサポートされているデバイスのうちの 1つです。
例 MyGame.exe -vrmode oculus
Unity で VR を有効にすると、自動的にいくらか変化が起こります。
シーンのすべてのカメラは、直接ヘッドマウントディスプレイ (HMD) にレンダリングできます。ビューとプロジェクション行列が自動的に調整され、ヘッドトラッキング、位置トラッキング、有効視野 (field of view, FOV) を処理します。
Camera コンポーネントの stereoTargetEye プロパティーを使用して HMD へのレンダリングを無効にすることが可能です。その他に、 Target Texture プロパティーを使って、カメラがレンダーテクスチャにレンダリングするように設定できます。
使用するデバイスがヘッドマウントの場合、ヘッドトラッキングと適切な FOV は自動的にカメラに適用されます。手動で FOV を特定の値に設定することもできますが、Camera の Transform の値は直接設定することはできません。詳しくは、後出の カメラを理解する のセクションを参照してください。
ヘッドトラッキングと位置トラッキングが自動的に適用され、フレームをレンダリングする前に、位置と向きをできるだけ正確にユーザーのものと一致させます。こうすることにより、快適な VR 体験が実現し、ユーザーが吐き気をもよおすことを防ぎます。
カメラを動かしたり回転させたりするには、他のゲームオブジェクトの子としてアタッチします。そのため、カメラがアタッチした親の Transform が変化すると、カメラにも影響します。このことは、スクリプトを使ってカメラを動かしたり回転させる場合でも同じです。
カメラの位置と向きを、ユーザーがニュートラルな姿勢で見ている状態と考えます。
座ったまま (seated) とルームスケール (room-scale) の VR 体験には相違点があります。
自動的にデバイスにレンダリングされた各カメラの Field of view はユーザーが各 VR SDK のソフトウェア設定でインプットした Field of view でオーバーライドされます。スクリプトをとおしてランタイムにこの Field of view の値をオーバーライドして、そのアプリケーションに特化したカスタムの Field of view を設定することもできます。
stereoTargetEye を左目、または両目に設定すると、左目がゲームビューウィンドウにレンダリングされます。stereoTargetEye を右目に設定すると、右目がゲームビューウィンドウにレンダリングされます。
エディターでの実行にはオーバーヘッドがあり、遅延やブレが発生することがあります。Unity IDE は各ウィンドウをレンダリングする必要があるため、ゲームビューの “Maximize on Play” を使ってエディターのレンダリングオーバーヘッドを削減してください。
パフォーマンスを検証する最良の方法は、ターゲットプラットフォームのビルドを作成して直接実行することです。開発ビルド以外で実行するほうが良いパフォーマンスを得られますが、開発ビルドを使うと、より詳しいパフォーマンスプロファイリングを得るために Unity プロファイラーに接続することができます。
ターゲット HMD に近いフレームレートを達成することは、よい VR 体験のためには不可欠です。これは、HMD で使われる画面のリフレッシュレートと一致しなければなりません。フレームレートが HMD のリフレッシュレートを下回ると、とても目立ち、しばしばプレイヤーが吐き気を感じる原因になります。
VR デバイスのリフレッシュレート
VR デバイス | リフレッシュレート |
---|---|
Gear VR | 60Hz |
Oculus CV1 | 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 が必要です。
使用している Unity のバージョンによっては、Unity でサポートしている特定のデバイスのランタイムバージョンが異なる場合があります。ランタイムバージョンは、Unity のメジャーおよびマイナーリリースの各リリースノートを参照してください。
バージョンの更新の中には、以前のランタイムバージョンをサポートしないものもあります。つまり、ネイティブの 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 will fail 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 Other 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.