■ Oculus Rift DK2 PC-SDK(V.0.8.0.0-beta) と DirectX11 を使ったアプリ開発
Visual Studio 2013 + DirectX11 + Oculus Rift DK2 PC-SDK(V.0.8.0.0-beta)での開発手順の解説です。
SDK のサンプル等を見れば別段説明の必要もないと思いますが、日本語のドキュメントが少ないので、一応自分の理解した部分について書き記しておきます。
一応、DirectX11 で一通りのレンダリング処理を自力でコーディングできる人が対象です。
まず VR 対応アプリを作るにあたって必要な技術は 「ヘッドトラッキング」と「立体視」の2つになります。
逆にこの2つ以外に特別な技術は必要ありません。
・ヘッドトラッキング
頭にかぶったゴーグル(HMD)の「位置」と「角度」を取得することをヘッドトラッキングといいます。
内部的には「加速度センサ」「角加速度センサ」「磁気センサ」「カメラを使った位置情報」等、複数の情報を掛け合わせていますが、SDK では確定した「位置」と「角度」を取得するだけなので、アプリ側が計算の過程を気にする必要はありません。
・立体視
両眼視差の立体視は、右目と左目それぞれから見た映像を、それぞれの液晶(有機EL)パネルにレンダリングすることで実現します。
アプリ側としては、右目用の画像と左目用の画像をレンダリングするので、レンダリングプロセスが2回になります。
立体視ではないアプリでは、通常、スクリーンの中心から一定距離手前に視点を設定しますが、立体視の場合は、左右の目の位置を視点とします。
このとき、視線の方向が正面ではなくなるため、プロジェクションマトリックスの設定が特殊になりますが、透視変換の計算自体を変更する必要はありません。
そして、ここで使用するプロジェクションマトリックスは SDK が作ってくれるので、アプリ側が細かいパラメータ等を気にする必要はありません。
実際にはヘッドトラッキングで取得した頭の「位置」と「角度」をもとに、左右の目の「位置」と「角度」を計算し、それを VR 空間で基準となる「位置」と「角度」(通常のカメラの「位置」と「角度」)に掛け合わせて、VR 空間での左右の「位置」と「角度」を決定します。
開発手順(環境設定)
Visual Studio 2013 のプロジェクトに Oculus Rift DK2 PC-SDK を設定します。
開発環境の設定
開発手順(初期化)
Oculus Rift DK2 を利用するために必要な初期化です。
初期化~定型処理
レンダリングターゲットの作成
ヘッドトラッキングの初期化
プロジェクションの初期化
ミラー映像の初期化
開発手順(ゲームループ)
初期化が完了したらゲームループに入ります。
一定期間毎に HMD のトラッキングをして、その結果に基づいて画像をレンダリングします。
DK2 の場合、通常 1/75 秒間隔ですが、より汎用的に実装する場合は、レンダリングターゲットの作成時に取得したリフレッシュレート(ovrDesc.DisplayRefreshRate)をもとに間隔を設定します。
ヘッドトラッキング
レンダリング
ミラー映像のレンダリング
開発手順(その他)
その他
back