Copyright © 2013 Oculus VR, Inc. All Rights Reserved.
Oculus VR
Oculus Rift Development Kit
Version 1.1
■ Oculus Rift Development Kit
同梱物
- ヘッドセットおよびコントロールボックス
- 3種類のレンズ
- 頭上部ストラップ
- 6フィートHDMIケーブル
- 3フィートUSBケーブル
- 電源ケーブルおよび電源アダプター
- DVI/HDMIアダプター
■ Oculus Rift Development Kit
Oculus Rift Development Kit には Oculus Rift のためのバーチャルリアリティコンテンツを作成し始めるために必要なものが全て含まれてます。
・ヘッドセットおよびコントロールボックス
・電源ケーブルおよび電源アダプター
・DVI/HDMIアダプター
・6フィートHDMIケーブル
・3フィートUSBケーブル
・3種類の視覚レンズ
・頭上部ストラップ
■ 始める前に
ケースの部品を慎重に外して下さい。
もし部品の一部が欠落・損傷している場合は Oculus カスタマーサポートに連絡して下さい。
セットアップに関する詳細およびトラブルシューティングについては次のサイトで確認できます:
Oculus VR, Inc.
support@oculusvr.com
■ ヘッドセットのセットアップ
1. ヘッドセットおよびコントロールボックスをケースから慎重に外して下さい。ヘッドセットの電源ケーブルはコントロールボックスに固定されています。このコードが大きく曲がることは避けてください。
2. ヘッドストラップを調整して快適に頭の周りに合わせて下さい。
3. 頭上部ストラップが含まれてます。もし使用する場合は、ストラップを正面から後ろに向けて巻いて、頭の上で快適な位置となるように調整して下さい。ストラップで好きに長さの調整を行って下さい。
4. 眼鏡を着用をした場合、レンズと画面の距離を調整するためにヘッドセットの左右についているアジャスターをコインで回すことが出来ます。変更後に両側の調整設定が揃っていることを確認して下さい。
注意:ヘッドセットを使用しているときに眼鏡をつけると視界が狭まります。また眼鏡が傷つくおそれもあります。近視の方の場合、同梱されている視覚キャップを使用いただくか、コンタクトレンズを使用することを推奨します。
5. 開発キットには3種類のレンズが含まれています。もっとも高さのあるレンズ(A)は両目2.0または遠視の方向けです。中間の高さのレンズ(B)はやや近視の方向けに設計されています。低い高さのレンズ(C)は強い近視の方向けです。レンズは交換する際、その場にはめて固定する仕組みになっています。もし、Oculus Riftを使用する際に修正用のレンズを着用した場合、高さのあるレンズセットA、を使用して、左右のアジャスターを調整して頭に合わせて下さい。
注意:埃がヘッドセット内に入ることを避けるためレンズ交換の際は下向きにすることを推奨します。
■ Oculus Rift コントロールボックスのセットアップ
1. コントロールボックスの背面には4つの端子があります。それらの端子は:
- HDMI
- DVI
- USB
- 電源
2. ビデオケーブルの片側(DVI または HDMI)を自身のコンピュータに接続して、もう片側をコントロールボックスに接続して下さい。コントロールボックスに接続するビデオ入力は一つのみにするべきです。DVI アダプターはHDMIケーブルと合わせて使用できます。
3. USBケーブルの片側を自身のコンピュータに接続して、もう片側をコントロールボックスに接続して下さい。
4. 電源アダプターをコンセントに差し込んだうえで、コントロールボックスにも接続します。
5. コントロールボックスの上のボタンは、ヘッドセットのディスプレイの明るさおよびコントラストの調整に使用されます。
- 一番左の二つのボタンによりディスプレイのコントラストが調整できます。
- 次に左にある二つのボタンディスプレイの明るさを調整できます。
- 一番右のボタンにより電源を入れたり、切ったりすることができます。
6. 電源ボタンを押して、コントロールボックスおよびヘッドセットの電源を入れます。コントロールボックスの上の青い LED によりデバイスがオン/オフのどちらであるか示します。
Oculus VR, Inc
Oculus Unity 統合ガイド
SDK バージョン 0.2.3
作者:
Peter Giokaris
日付:
July 1, 2013
1 はじめに
Oculus Unity 3D 統合をご覧いただき有難うございます!
このドキュメントにより Oculus Rift を Unity で立ち上げるためのステップを眺望します。次に統合の詳細をみていき、裏側でどういう処理が行われているのか理解が進みます。
Oculus Rift を Unity 環境に統合するプロセスが楽しく簡単になることを切に願います。
1.1 要件
Oculus SDK ドキュメントの要件を確認して Rift とインタフェースをとれる準備が完了していることを確認して下さい。
Unity Pro 4.0.1 以上がマシンにインストールされていないと Unity デモをビルドできません。
同梱されてるデモシーンにより互換ゲームパッドコントローラ(Windows 上の XBox, Mac 上のHID 互換機)があると動き回ることが容易になるのでひとつは利用可能なものを準備すると便利です。一方で、動作はキーボードで代替可能であるため、必須ではありません。
・Oculus SDK ドキュメントを初めに読んで頂き、同梱されてるデモを先に実行していただくことを推奨します。
1.2 モニターのセットアップ
Unity 上で Oculus Rift がメインディスプレイとして設定されているか確かめる必要があり、最低でもメインディスプレイとして設定されているモニターを複製できているか確認します。
Windows 7 および 8 では 設定は画面を右クリックした際の画面解像度ダイアログの中で見つけることが出来ます。
マルチディスプレイの Mac 上で、システム設定を開いて、ハードウェア / ディスプレイへ遷移して下さい。そこから Arrangement タブを選択したうえで Mirror Displays のチェックボックスをチェックします。
ディスプレイを複製するとき、解像度を 1280 x 800 にセットすることを推奨します(Oculus Rift の解像度)。オプションとして、二つめのモニタにより Unity エディタをより高解像度の画面で開くことが出来ます。
2 初めの手順
2.1 パッケージのコンテンツ
zip ファイルを好みのディレクトリに展開します。(例えば C:\OculusUnity) 次のファイルを OculusUnityIntegration で見つけることが出来ます。
・OculusUnityIntegrationGuide.pdf - この文書。
・ReleaseNotes.txt - このファイルには現在と前のリリース情報が含まれています。
・OculusUnityIntegration.unitypackage - このパッケージにより Oculus Rift 統合に必要な最小限の必要ファイルを Unity にインストールします。
・OculusUnityIntegrationTuscanyDemo.unitypackage - このパッケージは Oculus Rift 統合に必要なファイルを Unity にインストールして、デモシーンおよび全てのデモシーンのアセットとともにインストールします。
2.1.1 Oculus Config Utill
OculusConfigUtil と呼ばれるディレクトリがあります。これには コンフィグのユーティリティが含まれ、任意のユーザの様々な属性(例えば IPD および プレイヤーの視点の高さ)をパーソナライズするのに使用できます。
2 ビルド済みの Unity デモを実行する
図1: Unity エディタ内のTuscany デモのスクリーンショット
事前ビルドされたデモ実行するには、見たいプラットフォームでの適切なデモ Zip ファイルをダウンロードします。
PC では、*demoWin.zip ファイルをダウンロードします。
Mac では、*demoMac.zip ファイルをダウンロードします。
OculusUnityDemoScene.exe (Windows) または OculusUnityDemoScene.app (MacOS) を実行します。もしディスプレイ解像度のダイアログが出来ますプロンプト表示された場合は Play ボタンを押下します。デモはフルスクリーンのモードで起動されます。(注意:モニターを複製している場合、2D ディスプレイ上でステレオイメージ参照できます。)
2.3 制御の種類
2.3.1 キーボードの制御
表 1 でのショートカットを使用して環境上を移動していくつかの Oculus Rift 設定を変更します。
キー名称
|
使用方法
|
W または 上矢印
|
プレイヤーを前方に移動
|
A または左矢印
|
プレイヤーを左に移動(Strafe)
|
S または下矢印
|
プレイヤーを後ろに移動
|
D または右矢印
|
プレイヤーを右に移動(Strafe)
|
左 Shift
|
押し続けるとプレイヤーが走る
|
Q および E
|
左右にプレイヤーが回転
|
右 Shift
|
シーン選択をトグル(上下の矢印でシーンの一覧からスクロール)
|
Return
|
シーン選択がオンのとき、現在選択されたシーンをロード
|
Z
|
手動の磁気カリブレーションを有効化
|
X
|
自動の磁気カリブレーションを有効化
|
C
|
マウスカーソルをオン/オフ切替
|
P
|
予測(Prediction)モードをオン/オフ切替
|
B
|
トラッカーの向きをリセット
|
スペース
|
コンフィグ メニューをトグル
|
, および .
|
予測(prediction) の値の減算/加算(ミリ秒単位)
|
[ および ]
|
垂直方向の視界 (FOV) の減算/加算(角度単位)
|
- および =
|
瞳孔間距離 (IPD) の減算/加算(ミリメートル単位)
|
1 および 2
|
歪み定数 1 (K1) の減算/加算
|
3 および 4
|
歪み定数 2 (K2) の減算/加算
|
5 および 6
|
プレイヤーの高さの減算/加算(メートル単位)の減算/加算
|
7 および 8
|
プレイヤーの移動速度係数の減算/加算
|
9 および 0
|
プレイヤーの回転速度係数の減算/加算
|
Tab
|
Tabを押し続けて F3 -F5を押下することで現在のコンフィグのスナップショットを保存
|
F2
|
デフォルトのコンフィグにリセット
|
F3 F4 F5
|
保存されたコンフィグのスナップショットを再呼出
|
F6
|
もし磁気参照の向きがセットされていれば磁気コンパスのオン/オフ切替
|
F11
|
全画面表示およびウィンドウ表示のモード切替
|
Esc
|
アプリケーションの終了
|
表1:デモのキーボードマッピング
2.3.2 マウスの制御
マウスを使用することでプレイヤーが左右に回転します。もしカーソルが有効化されていれば、マウスはカーソルが画面外になるまで、プレイヤーを回転させずに、カーソルをトラックします。
2.3.3 ゲームパッドの制御
・もしプラットフォームの互換コントローラがある場合、プレイヤーコントローラの動作を制御できます。
・左アナログスティックは WASD キーを使用するのと同様にプレイヤーを動作させることが出来ます。
・右アナログスティックはプレイヤーを左右に Q および E キーを使用するかのように回転させます。
・左のトリガーにより、もっと速く移動するか、シーン上を走ることができます。
・スタートボタンにより画面選択をトグルできます。D-パッドの上下を押すことで、利用可能なシーンをスクロールします。A ボタンを押すことで現在選択されたシーンを開始します。
・もしシーン選択がトグルされない場合、D-パッドの下を押すことでトラッカーの向きをリセットします。
3 Oculus Unity 統合を使用する
使用いただける Unity パッケージを 二つ用意しました。OculusUnityIntegration は Oculus Rift を統合するプロジェクトにインポートするのに使用する最小限のパッケージです。しかし、Tuscany デモを歩き回っていただき、統合の動作を実感していただくことを推奨します。
次に再生したばかりのデモをビルドします。このために、OculusUnityIntegrationTuscanyDemo の Unity パッケージを新しい Unity プロジェクトにインポートします。
3.1 インストール
Unity をすでに開いている場合、最初に作業を保存します。
新規の空プロジェクトを作成して、Oculus アセットをインポートする先として使用します。標準または Pro 版の Unity アセットパッケージをインポートする必要はまったくなく、Oculus Unity 統合は完全に自己完結しています。
OculusUnityIntegrationTuscanyDemo.unitypackage ファイルをダブルクリックします。これにより空のプロジェクトにアセットをインポートします。インポートのプロセスが完了するのに数分かかるかもしれません。
3.2 Unity 統合で作業をする
project browser タブ(通常は左下の隅)をクリックして、Tuscany/Scenes へ遷移します。VRDemo Tuscany シーンをクリックして現在のシーンとしてロードします。(もし現在のシーンを保存するようにプロンプト表示される場合、Don't save を選択します。)
エディタの上部にある PLAY ボタンを押下します。シーンは開始され Oculus Rift はカメラのビューを制御します。ゲームウィンドウはメインのエディタアプリケーションでタブつきビューとして開始されます。
図2:Tuscany デモ Game タブ
エディタの Game ビューをドラッグして Oculus Rift ディスプレイ上でドロップします。ゲームウィンドウの右上にある最大化ボタン(閉じるボタンの左)をクリックして全画面にします。これによりゲームの再生が全画面となり、その上で Unity エディタを別のモニタで開いたままにします。さらにタスクバーおよびスタートメニューからプロパティ→タスクバーにある「タスクバーを自動的に隠す」 を有効化することを推奨します。
3.2.1 スタンドアローンビルドのためのコンフィグ
次にスタンドアローン全画面のアプリケーションをビルドします。いくつかの設定の変更をすることでデモの忠実さを最大化します。
File - Build Settings をクリックします。Windows ではTarget Platformを Windows にセットして、Architectureを x86 または x86-64にセットします。Mac ではターゲットプラットフォームを Mac OS X にセットします。
Build Settings ポップアップの中で、Player Settings をクリックします。Resolution and Presentation の下で、次のとおりに値をセットします。
図3:Resolution and Presentation オプション
Build Settings ポップアップの中で、Build and Run を押下して、聞かれた場合はビルドのためのロケーションおよび名前を指定します。
正しい OS を使用していれば、ゲームは全画面モードでスタンドアローン アプリケーションとして実行されるはずです。
3.2.2 Quality Settings の設定
映像の再現性はが最初から用意されているデモほど高くないと、気がつくかもしれません。Project Settings を少し変更してシーンの見栄えを改善します。
Edit - Project Settings - Quality に遷移します。メニューの値を次のとおりにセットします。
図4:Oculus デモの Quality settings
最も顕著な Quality settings の値は Anti-aliasing にセットされてます。ステレオ レンダリングに合わせてアンチエイリアシングの大きさを増加させる必要があり、これで水平解像度を 50% 減少させてます。4X (4倍)以上の値が理想的です。
ソフト パーティクルはオフにしますが、これは Deferred Lighting mode でレンダリングしないためです(Forward-Lighting のみ)。
これで再ビルドをすれば画質は最初から用意されているデモと同じレベルのはずです。
4 Unity 統合の詳細
統合の詳細を見ていきます。初めに統合のディレクトリ構造を見ていきます。次にプレハブをみて、いくつかの重要なC# スクリプトを見ていきます。
4.1 ディレクトリ構造
図5:Oculus Unity 統合のディレクトリ構造
4.1.1 OVR
OVR は Oculus Unity 統合の最上位のフォルダです。OVR の配下にある全ては最小限の統合パッケージを新規のプロジェクトにインポートするときに名前に問題ないようにすべきです。(OculusUni-tyIntegration.unitypackage を使用して)
OVR ディレクトリは次のディレクトリ含みます:
Editor: Unity エディタに機能を足すスクリプトや、 C# コンポーネントスクリプトをエンハンスするスクリプトが含まれます。
Materials: 統合の中でグラフィカル コンポーネントで使用されるマテリアルを含み、例えば磁気コンパスやメインの GUI ディスプレイです。
OVRImageEffects: Oculus Rift ディスプレイ内で画像をワープさせるのに必要なスクリプトおよびレンズ補正シェーダが含まれます。
Prefabs: Oculus Rift を Unity シーンにバインドするためのメインのプレハブを含みます:
OVRCameraControler および OVRPlayerController
Resources: いくつかの OVR スクリプトにより必要とされ、インスタンス化されるプレハブ および別のオブジェクト、例えば磁気コンパスのオブジェクトが含まれます。
Scripts: Oculust Rift と Unity コンポーネントを結ぶ C# ファイルが含まれます。これら多くのスクリプトは Prefabs フォルダで連携します。
Shaders: Oculust Rift と Unity コンポーネントを結ぶ C# ファイルが含まれます。これら多くのスクリプトは Prefabs フォルダで連携します。
Textures: いくつかのスクリプトコンポーネントが必要とする画像アセットが含まれます。
4.1.2 Plugins
Plugins ディレクトリには OculusPlugin.dll が含まれます。これにより Windows 上(32 および 64 ビット版)で Oculus Rift が Unity と通信できます。
このフォルダには他のプラットフォーム(すなわち MacOS 向けの OculusPlugin.bundle) が含まれます。
4.1.3 Tuscany
Tuscany にはデモに必要な全ての Tuscany アセットを含みます。
4.2 Prefabs
現在の Oculus Rift の Unity 統合はシーンに追加される二つのプレハブから成り立ってます:
図6:プレハブ: OVRCameraController および OVRPlayerController
シーン上にプレハブをドラッグ&ドロップするのみで使用できます。
同様に Oculus - Prefabs メニューから、これらプレハブをシーンに追加できます。
4.2.1 OVRCameraController
OVRCameraController の目的はシーン内のひとつの Unity カメラのステレオ カメラの代替物の役割です。シーン上に OVRCameraController をドラッグして(忘れずにシーン上の他のカメラを全てオフにして、使用されているカメラが OVRCameraController だけとなるようにします)、シーンを Oculus Rift で表示できるようになります。
OVRCameraController には 2 つの Unity カメラが含まれていて、それぞれ片方の目に対応しています。旧来のカメラの代替物として、移動オブジェクトアタッチすべきです(例えば歩き回るキャラクター、車、砲台、等)。
二つのスクリプト(コンポーネント)が OVRCameraController プレハブ: OVRCameraController.cs および OVRDevice にアタッチされてます。
図7: プレハブ: OVRCameraController をインスペクタ上で展開
4.2.2 OVRPlayerController
OVRPlayerController はバーチャル環境上でナビゲーションをするための最も基本的な方法です。基本的にシンプルなキャラクターコントローラにアタッチされた OVRCameraController プレハブであり、物理挙動の Capsule、動作ロジック、シンプルなメニューシステム(ステレオ レンダリングされたテキストのフィールドおよびCrosshair(=照準用の十字線) のコンポーネント)から構成されてます。
使用するためには、プレイヤーコントローラを環境上にドラッグして、ゲームパッドおよび/またはキーボードおよびマウスを使用して動きまわることが出来るようになります(環境上にコリジョンを忘れずに配置して下さい)。
4 つのスクリプト(コンポーネント)が OVRPlayerController プレハブにアタッチされてます: OVRPlayerController.cs, OVRGamepadController.cs, OVRMainMenu.cs および OVRCrosshair.cs
注意: OVRMainMenu.cs および OVRCrosshair.cs はヘルパークラスであり、OVRPlayerController が動作するうえで必須ではありません。これらは粗いメニューと画面上の 照準カーソルを画面上に表示するために利用可能です。
図8 : プレハブ: OVRPlayerController をインスペクタ上で展開
4.3 C# スクリプト
次のセクションにより Scripts フォルダの各々のスクリプトに関する一般的な概要を確認できます。
4.3.1 OVRDevice
OVRDevice は Oculus Rift ハードウェアに対する基本的なインタフェースです。全てのエクスポートされた C++ 関数のラッパー関数に加えて、格納された Oculus 変数を使用してカメラのビヘイビアをセットアップするヘルパー関数を含んでいます。
このコンポーネントはOVRCameraControllerプレハブに追加されてます。任意のゲームオブジェクトにアタッチできます。しかし宣言は一回のみとすべきであり、理由として特定のOculus Riftの値をUnityインスペクタで調整できるパブリック変数が含まれるためです。
OVRDevice.cs には次のパブリックメンバーを含みます:
Prediction Time:このフィールドにより、トラッカーがプレイヤーの頭部の位置がある場所を予想する時間をどれぐらい先にするかを調整できます。入力からビデオ遅延(Latency)をカバーするのに有力です。デフォルトの値は50ミリ秒ですが、適切に調整できます。
Accel Gain:任意のスケール変数により、重力ベクトルを使用してプレイヤーの向きを補正する強度をセットします。小さい値であるほど補正がより遅くなり、大きい値であるほど補正が早くなります。期待する動きとなるまで、値を調整します。
4.3.2 OVRComponent
OVRComponent は多くのOVRクラスのベースクラスとなります。この派生クラスに基本的な機能を提供するのに使用されます。
4.3.3 OVRCamera
OVRCamera はUnity カメラクラスにレンダリングするために使用されます。
このコンポーネントは Rift トラッカーを読み取り、カメラ位置および回転を配置するハンドリングをします。これは正しく最終アウトプットをレンダリングする役割であり、さらに最終レンズ補正のパスも行われます。
4.3.4 OVRCameraController
OVRCameraController は低レベルのカメラのハンドリングを容易にするコンポーネントです。これはUnity およびカメラのメインのインタフェースとなります。これはプレハブにアタッチされており、シーンに Oculus Rift を追加することを容易にします。
注意:全てのカメラのコントロールはこのコンポーネントを通して行うべきです。
自身のコントロールのタイプにカメラを統合するとき、このスクリプトを理解することが重要です。
OVRCameraController.cs は次のパブリックメンバを含みます:
Camera Root Position: このフィールドはカメラが配置される場所をアタッチされているオブジェクトに対して相対的にセットアップします。OVRPlayerController ではこの値は1.0f、すなわちデフォルトでコリジョンのカプセルの中心である 2.0 メートルにセットされています。
Neck Position: このフィールドはスクリプトがアタッチされているゲームオブジェクトに対して
相対的にセットアップされています。このフィールドは頭部がアニメーションする場合に修正されます(上下の動作のようなプロシージャルのとき、またはゲームオブジェクトにアタッチされたとき)。
Use Player Eye Height: このフィールドは Oculus Config ツールから実際のプレイヤーの目の高さをセットするために使用します。オンのとき、首のポジション(Neck Position)はカメラのルートポジション(Camera Root Position) および目の中心ポジション(Eye Center Position)に対して相対的に配置され、3 つの合計がプレイヤーの目のポジション(Player Eye Height)と一致します。注意として、オンのときは Set Neck Position を通して首のポジションに書き込みは許可されません。実装の詳細については OVRCameraController.cs スクリプトを確認して下さい。
Eye Center Position: このフィールドは頭部のモデリングにおいて目の中心が配置される場所をセットするのに使用します。左右の目を分離するための瞳孔間距離(IPD)は自動的にセットされますが、この値は Set/GetIPD 関数を通してセットすることも出来ます。
Follow Orientation: これがセットされたとき、カメラはつねに rotation コンポーネントを追跡して、ヘッドトラッキングはこれに対するオフセットとなります。固体のオブジェクト(車またはボディ)にカメラを載せるときに便利です。
Tracker Rotates Y: これがセットされたとき、カメラの実際の Y軸回転にもとづいて、それがアタッチされている親の Transform のY軸 rotation の値をセットします。これを拡張して X および Z 軸の値も対応させることができます。カメラの実際の向きにもとづいて、他のコンポーネントまたは他のゲームオブジェクトへフィードバックを反映させるのに便利です。現時点ではヘッドトラッキングを実現してコントローラの Forward 方向に反映させる際に、OVRPlayerController によって使用されます。このコンポーネントの親 Transformの Follow Orientation をセットしたうえで Tracker Rotates Y を true とすることで方向(orientation)に対してフィードバックを反映します。
PredictionOn: オンのとき、トラッカーの予測(predition)補正がセットされます。予測(prediction)時間の大きさはOVRCameraController 配下にある OVRDevice コンポーネントを通して調整できます。
CallInPreRender: オンのとき、 OVRCamera.cs スクリプトの中でOnPreRender 関数でレンダリングが行われます。トラッカーをレンダリングに近づける(すなわち結果的に実際のラテンシーを低下させる)という効果があります。しかし、この設定による発生する問題の説明については「既知の問題」を参照して下さい。
WireMode:セットするとシーンのレンダリングがワイヤフレームとなります。
LensCorrection:セットすると、レンズ補正のパスが有効となります。
Chromatic:セットすると、色収差(Chromatic Abberation) を修正するシェーダが使用されます。
色収差はレンズにより引き起こされ、画像の色が放射状に広がり、レンダリングされた画像の特定の場所で縞模様の色(Color Fringe)が発生する原因となります。
Background Color:OVRCameraController プレハブにアタッチされた両方のカメラの背景色を設定します。
Near Clip Plane:両方のカメラのニアクリップ平面の値をセットします。
Far Clip Plane:両方のカメラのファークリップ平面の値をセットします。
4.3.5 OVRPlayerController
OVRPlayerController により Oculus Rift を使用した基本的な First Person Controllerを実装します。OVRCameraController がアタッチされた OVRPlayerController プレハブにアタッチされます。
コントローラは、シーンにコリジョンが割り当てられていれば、 Unity シーンと正しく相互作用します。
OVRPlayerController プレハブはForwardDirectionと呼ばれる空のゲームオブジェクトがアタッチされています。このゲームオブジェクトにはどのモーター紺とr-るがその方向をベースとするかのマトリクスを含みます。ゲームオブジェクトはプレイヤーにより見られるボディ形状を格納します。
4.3.6 OVRMainMenu
OVRMainMenu は異なるシーンのロードを制御するために使用されます。さらにユーザが様々なOculus Rift 設定を修正できるメニューをレンダリングして、これらの設定を後で再度呼び出しできるように格納します。
このコンポーネントのユーザはアクセスしたいシーンをいくつかでも足すことが出来ます。
OVRMainMenu は現在、利便性を考えてOVRPlayerController にアタッチされてますが、安全に取り外して一般的なUnity ロジックで使用されている別のゲームオブジェクトに追加できます。。
4.3.7 OVRGamepadController
OVRGamepadController はゲームパッドコントローラに対するインタフェースクラスです。
Windows マシン上で、ゲームパッドはXInput互換である必要があります。
現在ネイティブXInput互換のゲームパッドはMacOSでサポートされていません。ゲームパッドの入力には従前のUnity Input の手法を使用してください。
4.3.8 OVRPresetManager
OVRPresetManager 変数セットの保存および Unity PlayerPrefs クラスを使用して再度コールすることを許容するヘルパークラスです。
OVRPresetManager は現在 OVRMainMenu により使用されています。
4.3.9 OVRCrosshair
OVRCrosshair ステレオスコープを通した照準を追加するコンポーネントです。照準は現在ビューがレンダリングされた後に描画されるため、歪み補正は全くありません。
4.3.10 OVRGUI
OVRGUI は2D または 3D で基本的なテキストのレンダリングを隠蔽するヘルパークラスです。コードの2Dバージョンでは廃止予定であり、3D 要素のレンダリングに移行予定です(現在 OVRMainMenuで使用されます。)
4.4 カリブレーション手順
次のセクションでは、開発者がアプリケーションに含めたいかもしれない基本的なカリブレーション手順の概要を示します。主にUnity統合でセットアップされたカリブレーション手順を表現します。特定のカリブレーションにおける、より詳細な理解については Oculus SDK ドキュメントを参照して下さい。
4.4.1 磁気 Yaw-Drift 補正
Yaw-Drift 補正を始めるためには、 Tuscany シーンを見て下さい。スペースを押下して視覚的なメニューを表示させて下さい。
最初、磁気 Yaw 補正はオフとなっています。カリブレーションを始めるには、手動カリブレーションの場合は Z 、自動カリブレーションの場合は X を押下して下さい。
もしマニュアルモードが選択されている場合、カリブレーションはRiftを向けるべき方向(正面、上、左、右)をガイドしてくれます。始めるには、希望する Forward 方向をみて、もう一回 Z を押してカリブレーションのプロセスを始めます。もし、何らかの理由でカリブレーションが失敗した場合、Z を再び押下して再度プロセスを再起動します。カリブレーションをスキップするにはカリブレーションの最中に Z を押下します。 Auto モードでは Oculus Rift が動的に Rift を動かして回るときに自動的に正しい点を選択します。Oculus Rift は十分なサンプル数が集まったとき、カリブレーションされます。マニュアルのカリブレーションと同様に手順をスキップするにはカリブレーションの最中に X を押下します。カリブレーションが成功であった場合、 F6 を押下することで視覚的なコンパスをトグルできて、センサーがどれくらい遠くまでドリフトしたかを示します。コンパス上の赤いダイヤモンド状の記号が緑色に変化することでドリフト補正が行われていて、その最中はコンパスのラインが回転することが確認できます。
4.5 既知の問題
次のセクションにより Unity および Oculus Rift で既知の問題を共有しますが、これらは Unity または Oculus Rift 統合パッケージの今後のパージョンで解消されます。
いくつかの問題では現時点で、回避策が利用できます。
4.5.1 ディスプレイをターゲットにする
ディスプレイを全画面モードでターゲットにすることは将来の Unity リリースで含まれる予定です。
4.5.2 Skyboxes
Unity Skybox はカメラで行われるパース マトリクス計算には影響されません。このため Skybox が必要である場合、カスタムの Skybox を提供する必要があります。
例えばカスタムの Skybox を実装する例については、Tuscany デモのレベルに含まれる Skybox を参照して下さい。
4.5.3 Tracker クエリの場所
方向のトラッカーをコールするときは OVRCamera で二つの方法があります。
これを OnPreCull 関数の中でコールすることで、カメラの向きがカメラのカリングが行われる前に、多くの Unity サブシステムの完全性を保証します。
しかし、追加の遅延(ラテンシー)が追加されていて、ここで呼出することにより追加のラテンシーが発生します。トラッカーを OnPreRender 関数の中でクエリすることにより遅延(Latency)は減少しますが、特定のシステムの完全性は保証できません。どのロケーションがアプリケーションに合うかユーザ次第です。
4.5.4 MSAA レンダリング ターゲット
Unity では現在レンダリングターゲットでアンチエイリアスをセットすることがサポートされていません。これによりレンズ補正パスが画像を引き伸ばされ、最初は大きなバッファでもレンダリングをします。最終バッファに補正中で全体的なレンダリングの解像度に影響して、レンダリング補正により画像の乱れが発生します。
アンリエイリアス レンダリング バッファは将来の Unity リリースでサポートされます。
5 最後の注意
Unity 使って VR 世界を作成する体験が、私たちが皆様にOculus Rift を提供するのと同様の、楽しみ・刺激を受けるものとなることを期待します。
驚くべき新しい世界を創造して下さい!!
質問はありますか?
開発者サポートフォーム
https://developer.oculusvr.com
に投稿、または support@oculusvr.com にメール送信下さい。