VR 概要
Unity 5.1 より複数の VR デバイスをサポートしています。
概要
VR は、慣例的に Unity の外部プラグインでサポートされてきました。このやり方には少し欠点があります:
- どの VR デバイスも、それぞれ独自のプラグインが必要。
- プラグインがコンフリクトをおこす事がある。
- 複数のデバイスをサポートし、VR デバイス用プラグインの有効/無効を切り替えるのには、余計な手間がかかる。
- VR の最新の SDK がリリースされるごとに古いゲームが動かなくなる可能性があった。
- VR と非 VR モードの切り替えは、容易な事ではない。
- プラグインでの、カメラを二つに分けるやり方では、ローレベルのエンジン最適化ができない。
Unity VR は、外部プラグインを必要とすること無く、Unity から VR デバイスを直接ターゲットにすることを可能にします。デバイスとソフトウェアの前方互換性を目標に、ベースとなる API と機能のセットを提供しています。現在、API は、意図して最小限のものしか提供していません。VR デベロッパーが必要とする機能についてより理解が進んだら、拡張していく予定です。
VR サポートを有効にする
ビルドしたアプリとエディターで VR を有効にするには、プレイヤー設定 の “Virtual Reality Supported” オプションを有効にしてください。
VR を有効にすると、何が起きるか
Unity で VR を有効にすると、自動的にいくらか変化が起こります:
自動的に立体表示になる
- 立体表示には、絶対にカメラが2つ必要という訳ではありません。レンダーテクスチャを持たないカメラはすべて、自動的にデバイス用に立体でレンダリングします。ビューとプロジェクションのマトリクスは、視界とヘッドトラッキングを考慮して調節されます。
- より低負荷でフレームを2回描画する(それぞれの目で1回)ために最適化が自動的に行われます。
ヘッドトラッキング入力の自動化
- ヘッドトラッキングと適切な視界が、自動的にカメラに適用されます(カメラがヘッドマウント型の場合)。
- よりよい VR 体験には、より遅延の少ないヘッドトラッキングが必須なので、これはデフォルトで行われます。
カメラを理解する
- カメラの Transform は、ヘッドトラッキングされた姿勢で上書きされます。
- もしもカメラを動かしたい場合は、別のゲームオブジェクトの子としてアタッチし、そのゲームオブジェクトのルートを動かしてください。
- 直接カメラを動かすために、スクリプトへ変更を加える必要が出てくるでしょう。
- ユーザーが自然な姿勢で、あなたが見せたい所を見る事ができるように、カメラの位置と回転について考えましょう。
- ニュートラルポジションをリセットする必要がある場合、VR.InputTracking.Recenter() を使用してください。
- 特定の視界を想定したカメラを調節する必要があります。視界は VR デバイスによって上書きされます。
- カメラをどんな方向に向けても大丈夫なように、シーンを考慮する必要があります。
- VR デバイスの種類によっては、カメラもよりうまく動くかもしれません。
- 現在は移動量の取得と移動のロックは Oculus SDK を使わなければいけません。これは将来的に Unity の機能として提供する予定です。
- 多くのカメライメージエフェクトは VR では正しく見えません。例:被写界深度
エディター モード
- ビルドとエディターで VR を有効にするには、プレイヤー設定 の “Virtual Reality Supported” オプションを有効にしてください。
- VR デバイスが Unity エディター モード をサポートしている場合(例えば Oculus DK2 など)、エディターで再生ボタンを押すとデバイス上で直接テストすることができます。
- エディターでの実行には、多少のオーバーヘッドがあり、適切なフレームレートでレンダリングしていない場合、遅延やブレを感じやすくなるかもしれない事に、注意してください。
- エディターのレンダリングオーバーヘッドを減らすために、ゲームビューで “Maximize on Play” を使用することをお勧めします。
- Unity プロファイラーでは、エディター外で実行した場合のパフォーマンスがどの程度になりそうかを、表示します。エディターでの実行を改善するために最適化を試したい場合は、エディターのオーバーヘッドを見るために、エディタープロファイリングを有効にしてください。
スタンドアロン ビルド: VR デバイスを選ぶ
VR モードを開始するかどうかのオプションは、コンピューターごとに保存されます。今のところデフォルト設定は VR モードはオフです。これは将来的に変更されるかもしれません。
コマンドラインから以下の引数を使って Unity や Unity アプリケーションを開始すると、VR デバイスを選択できます:
-vrmode DEVICETYPE
DEVICETYPE は VR devices list でサポートされているデバイス名を指します。例えば、
Game.exe -vrmode oculus
もしくは、ロードするデバイスの設定 を使い、ランタイムから VR デバイスをロードするようにリクエストすることができます。
VR デバイスがロードされたら(loadedDevice が None 以外を返した時)、VR が有効になり、VR.VRSettings.enabled を true にすることで VR デバイスにレンダリングを開始します。
VR デバイス情報
VRDevice.familyは、現在 VRSettings.loadedDeviceの文字列に対応しています。ファミリーは異なる特性を持つ複数のモデルを持つことができます (例:Oculus には DK2、Gear VR、等)。モデルは VRDevice.model のものがアクセス可能です。