Oculus Rift DK2 + C# + OpenTK ⑧

前回はレンダリング周りの初期化について説明しました.今回はその続きでレンダリングループについて書きます.この投稿でOculus Rift + C# + OpenTKの記事は最後です.

レンダリングループの準備

描画先をフォーム上に配置した GLControl にしたいので,Shown イベントに下記のコードを追加します. 続きを読む

Oculus Rift DK2 + C# + OpenTK ⑦

今回からOculus Rift DK2でのレンダリングについて書いていきます.

基本的には,

  • シーンを描画するレンダーターゲット(テクスチャ)
  • ディストーションレンダリング用のシェーダ
  • Oculus SDKの提供するディストーションメッシュ

をアプリケーションの起動時に初期化して,

  • HMDのポーズとポジションからモデルビュー変換行列を生成
  • 左目用及び右目用の映像をレンダーターゲットに描画(オフスクリーンレンダリング)
  • シェーダを切り替えてレンダーターゲットをディストーションメッシュにテクスチャとして貼る

をレンダリングループで実行する,という流れで描画します. 続きを読む

Oculus Rift DK2 + C# + OpenTK ⑥

前回はデバイスの初期化について書きましたので,今回はヘッドトラッキングの初期化とレンダリングの準備を行います.

ヘッドトラッキングの初期化

Oculus Riftには内蔵の9軸センサを用いたポーズトラッキングが実装されています.また,DK2からは赤外線カメラを使ったポジショントラッキングにも対応しました.この機能を有効化するには,Shown イベントで ConfigureTracking() 関数を呼びます.

private void MainWindow_Shown(object sender, EventArgs e)
{
   /////////省略////////

   //トラッキングの初期化
   OvrHmd.ConfigureTracking(hmd, TrackingCaps.Orientation | TrackingCaps.MagYawCorrection | TrackingCaps.Position, 0);
   OvrHmd.RecenterPose(hmd);

   /////////省略////////
} 

続きを読む

Oculus Rift DK2 + C# + OpenTK ⑤

ラッパークラスを使ってC# + OpenTKでOculus Rift DK2に映像を表示する方法を説明します.

Visual Studioのプロジェクトを準備する

Visual Stduioを起動し,「ファイル -> 新規作成 -> 新しいプロジェクト」から「Visual C# -> Windows デスクトップ -> Windows フォームアプリケーション」とたどってソリューションを作成します.

001 続きを読む

Oculus Rift DK2 + C# + OpenTK ④

前回の続きです.列挙型と関数のラップについて書いていきます.

コードはGitHubで公開しています.

列挙型

OVR_CAPI.h の中には,ovrHmdType や ovrHmdCaps などデバイスの動作モードを指定するための列挙型が定義されています.C#からSDKの関数を呼び出すには,これらの列挙型もラップしておく必要があります.ラッピングはとても簡単で,OVR_CAPI.h に書かれている列挙型をそのままラッパークラス(C++/CLI)の形式に書き直すだけです. 続きを読む