VR概要

確認済のバージョン: 5.3

-

難易度: 初級

Unity VR ― はじめに

Unity は特定の VR デバイスのためにビルトインサポートを導入しました。この手引きは Oculus 社製の VR デバイス ― 特に、Oculus Rift Development Kit 2 (DK2) と コンシューマ版 Gear VR (Samsung Galaxy S6、S6 Edge、S6 Edge+、Note 5 ハンドセット用のモバイルヘッドセット) ― に焦点を当てています。 以前、Gear VR の最初の Innovator Edition にサポートされていた Note 4 には焦点を当てません。おそらく、VR サンプルはこのデバイス上でも実行できると想定していますが、パフォーマンスは落ちるかもしれません。

HTC Vive など他の VR ヘッドマウントディスプレイ (HMD) も Unity は対応します。このドキュメンテーションは将来的に、その他の VR プラットフォームに関しても追加していきます。

このドキュメントはすべての VR HMD に関連した内容を提供します。詳細に関しては使用するVR HMDのドキュメントをご覧ください。

Unity プロジェクトの VR を有効にする

まず、Oculus runtime 0.8 がインストールされていること、Unity が 5.3 以上であることを確認してください。

VR サポートを有効にするには、Edit > Project Settings> Player の順に選び、Other Settings の Rendering セクションを表示します。

Enable VR Menu

それから、Inspector の “Virtual Reality Supported” チェックボックスを有効にします。

Enable VR Settings

ランタイムには、以下のように、コードで UnityEngine.VR.VRSettings.enabled プロパティーを使って切り替えることができます。

Code snippet

using UnityEngine;
using UnityEngine.VR;

public class ToggleVR : MonoBehaviour
{
    // VRSettings の有効/無効を切り替えるサンプル
    private void Update ()
    {
        // Vキーを押したときに VRSettings.enabled が切り替わります。
        if (Input.GetKeyDown(KeyCode.V))
        {
            VRSettings.enabled = !VRSettings.enabled;
            Debug.Log("VRSettings.enabled が"+VRSettings.enabled +"に切り替わりました。");
        }
    }
}

Unity の VR をプレビューする

Unity エディター内で VR サポートが有効で DK2 が接続されているときに、プレイモードにすると DK2 に Game ビューが表示されます。VR で変更部分を見るために、プロジェクトの実行可能形式にビルドする必要がないので、素早くテストを行ったりすることができます。以前 VR コンテンツを作成したことのある開発者は、横並びだったビューが 1 つの画像に変更されたことにお気づきでしょう。

Enable VR Cube

注意したいのは、1 つの眼に対して 1 つのカメラが必要なわけではないということです。VR では、Render Texture が割り当てられたものを除くすべてのCameraがレンダリングされます。Render Texture の詳細については、マニュアルを参照してください。両方のカメラをレンダリングするコストを減らすために、両眼の影のカリングとレンダリングをいっぺんに行う、などの最適化が自動的に適用されます。

VR に関するその他のドキュメントは Unity マニュアルUnity スクリプトリファレンスをご覧ください。

Unity での VR 開発に推奨のハードウェアとソフトウェア

VR はとても新しいシステムなので、このドキュメントを作成している時点では、ハードウェアとソフトウェアにいくらか制限があります。それを以下に説明します。

ハードウェア

HMD に必要なフレームレートを達成することが、快適な VR 体験には不可欠です。そして、HMD で使用されるパネルのリフレッシュレートもこれに見合うことが必要です。DK2 では 75fps、 Gear VR では 60fps 必要です。フレームレートがこの値より低くなるとユーザーが認識できるほどになり、めまいなどの原因になります。

安定したフレームレートを達成することが大切である一方で、接続した PC の GPU も HMD パネルのリフレッシュレートで要求された解像度を出力できる能力が必要です。これは DK2 の場合、1920 x 1080 75Hz です。商用にリリースされた Oculus Rift (CV1) 用に開発しようとする場合は、解像度 2160 x 1200 90hz なので、DK2 よりも要求が高いということに気を付けてください。

DK2 を使用している場合は、ハードウェアが要求されたリフレッシュレートで要求された解像度を出力できるか確認してください。多くのラップトップでディスクリートと統合チップセット間を切り替えるためのチップセットを使用しています。これらのチップセットは通常は、1920 x 1080 75Hz を出力することができず、最適でない VR 体験とめまいの原因となります。Oculus のドキュメンテーションと、推薦ハードウェアに関する Oculus Ready PCs ガイドを参照してください。

ソフトウェア

OS X: ― 現時点で、Oculus Runtime 0.0.5 を設定した OSX 10.9+ 上で開発を行うことが可能です。しかし、Oculus が OS X 用の開発を止めているため、Unity のネイティブな VR 機能のためには Windows をお勧めします。

Windows: ― Windows7、8、8.1 とすべての Windows 10 は互換性があります。

Android: ― Android OS Lollipop 5.1 以降を使用することを推奨します。

グラフィックカードドライバー: ― 使用するドライバーがアップデートされているかを確認してください。古いドライバーはサポートされないことがあります。ドライバーに問題があるかどうかは、Oculus の Configuration Utility を確認してください。

Oculus ランタイム: ― Unity 5.3 で VR をサポートするには、Oculus Runtime 0.8 以降を使用してください。

VR サンプルプロジェクト

このチュートリアルの一部として、Unity Asset Store では無料のサンプル VR プロジェクトを提供しています。Unity の VR Samples プロジェクトは DK2 と Gear VR 両方で使えます。Unity では Oculus のハードウェアや他の HMD の今後の開発に合わせて、このプロジェクトも更新していく予定です。どうぞ、Unity ブログをお見逃しなく。

ソースアセットを見るには、Asset Store からプロジェクトをダウンロードしてください。

サンプルシーン

主なサンプルシーンは以下の通りです。

  • Intro:ユーザーの基本的な操作のための導入シーン

  • Menu:プレイするミニゲームを選択するメニューシーン

  • Flyer:奥スクロール型フライトゲーム

  • Maze:見下ろし型の迷路ゲーム

  • Target Gallery:シューティングギャラリー

  • Target Arena:全天球型シューティングギャラリー

参考になるようなシーンも多く含まれ、ドキュメントにその特定のコンセプトが説明されています。

  • InteractiveItem:VR のアイテムとインタラクティブにやり取りする基本的な方法

  • RenderScale:RenderScale が画像の品質に与える影響

  • Reticle:VR における基本的なレティクル (照準) の例

  • Rotation:頭の動きに対するオブジェクトの反応

  • Touchpad:Gear VR のタッチパッドからの入力の読み取り方法

以下のコンセプトが含まれます。

  • 見下ろし型のボードゲーム型のゲーム体験

  • 奥スクロールのスターフォックス型ゲーム体験

  • シューティングギャラリーゲーム体験

  • 全天球型シューティングギャラリーゲーム体験

  • VR での Unity UI の使用方法

  • 空間的 UI

  • VR のオブジェクトとインタラクションするための基本的フレームワーク (gaze over と gaze out を含む)

  • レティクル (照準) 移動、スケーリング、シェーダー、法線への反応

  • 頭の回転に基づく動き

  • Gear VR タッチパッドの使い方 (タップ、ダブルタップ、スワイプ、DK2 を使用する場合のキーボードとマウスなど)

  • Gear VR と DK2 の条件付きコンパイル

  • 中央のピボットポイントを中心にカメラを回転させるときにめまいを避ける方法

  • カメラフェード

  • カメラフェード遷移

  • オブジェクトプーリング

このプロジェクトは主に VR の多様なコンセプトを解説し、最初の VR 開発を簡単に始めるためのものである一方、VR 開発者がだれでも再利用できるような役に立つ例も含まれています。

  • カメラフェード

  • カメラフェード遷移

  • VR のオブジェクトとインタラクティブにやり取りするためのフレームワーク

  • インタラクションを確認するための Hold

  • レティクル (照準) 移動とスケーリング

  • プラットフォーム依存のテキスト

  • 特定の方向にむくことを示唆する UI の矢印

  • UI エレメントを移動し、常にカメラに正面を向ける方法

  • インタラクションされたときに UI オブジェクトに色を加える方法

このプロジェクトを実行するためには、Unity 5.3.0 と上記の基準を満たしたハードウェアとソフトウェアが必要です。さらに、 DK2 と Gear VR のガイドラインによると、開発のためには、0.8 以降の Oculus Runtime と併せて、DK2か Gear VRに対応した端末 が必要です。

Oculus Unity Utilities

プロジェクトに必要な機能によっては、Oculus Unity Utilities をダウンロードするとよい場合があります。それには、正しく IPD (瞳孔間距離 - 両眼の間の距離) を変更したり、トラッキングの範囲を可視化できるなど、VR プロジェクトに役立つスクリプト、プレハブなどが含まれています。

この文書はネイティブな Unity VR インテグレーションに焦点を絞っています。プロジェクトに対する実用性や適合性に関しては Oculus のウェブサイトを参照してください。

これで Unity で VR 開発をするためのハードウェアとソフトウェア仕様と、プロジェクトで VR を有効にする方法が少し理解できたと思います。基本の説明に進むには、次の文書をご覧ください。VR 開発入門