Oculus Rift

提供: ArchWiki
2015年12月21日 (月) 02:03時点におけるKusakata (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

Oculus Rift は Oculus VR によって開発されているバーチャルリアリティヘッドマウントディスプレイです。

基本設定

ハードウェア

Oculus Rift のデバイスは HDMI によってセカンダリディスプレイとしてグラフィックカードに接続します。センサーとして使うには USB でも接続します。oculus-udevAUR パッケージが適当な udev ルールを設定します。

完全に利用するには inputvideo グループにユーザーを追加する必要があります。plugdev グループは必要なくなりました (モードは 0666 に設定されます)。

SDK

パッケージ

公式の Oculus Rift SDK はAUR のパッケージ oculus-rift-sdkAUR からインストールすることができます。CMake ビルドの対応などの修正が加えられたバージョンは oculus-rift-sdk-jherico-gitAUR でインストールすることが可能です。

パッケージは X セッションが起動した時に oculusd デーモンが実行されるように設定します。パッケージをインストールして X を再起動すれば自動的にバックグラウンドで実行されます。

公式のソースから

SDK は Oculus VR Developer Center で無料の登録をすれば入手できます。

SDK をコンパイルしてから WorldDemo を実行して確認してください:

$ tar zxvf ovr_sdk_linux_4.0.3.tar.gz
$ cd OculusSDK
$ make
$ ./Samples/OculusWorldDemo/Release/OculusWorldDemo_x86_64_Release

ビデオモード

Rift を適切に機能させるには、特定のビデオモードを使う必要があります。特に、リフレッシュレートが低い通常のモニタと同じビデオモードを使っている場合、ゲームのリフレッシュレートも低くなってしまいます。

Rift をプライマリモニタにしないと、同期が正しく動作しません。

ノート: Having the display rotated adds an extra frame of latency, which makes it operate at the equivalent of Extended Mode on Windows. With the display unrotated, this extra frame of latency is removed and you get a much improved experience (equivalent of Direct Mode on Windows). Unfortunately only certain applications work correctly with this. You should test each to see if each application works correctly unrotated first.

xrandrift

AUR にある riftutilities-gitAUR[リンク切れ: アーカイブ: aur-mirror] というパッケージには xrandrift という名のスクリプトが含まれています。このスクリプトは xrandr を使って Rift を使うのに適したビデオモードを (引数に合わせて) 判断します。さらに、現在のビデオモードを記録して、プログラムが終了した後にスイッチバックします。

(対応しているアプリケーションで) 遅延をできるだけ減らすには、以下のようにプログラムを実行してください:

$ xrandrift OculusWorldDemo
ノート: You may experience tearing due to the selected video mode being too big to fit on the same framebuffer as your device. If you see an odd vertical tearing in the Rift, try running with -o instead.

Team Fortress 2 などの Source のゲームの場合 (プロパティの起動オプションで設定します):

$ xrandrift -e -p %command% -freq 75

60Hz で動作するゲームの場合:

$ xrandrift -s -p OculusWorldDemo

手動で xrandr を使う

Say our primary monitor is DVI-I-2, and DVI-I-3 is the Rift, and that 1152x864 is the highest mode that supports 75Hz. To use this:

 xrandr --output DVI-I-3 --primary --rotate left --mode 1080x1920 --rate 75 --auto --output DVI-I-2 --mode 1152x864 --rate 75 --auto --same-as DVI-I-3 --scale-from 1920x1080

Although the Rift SDK reccomends not rotating the secondary display, not doing so seems to cause issues with a number of programs. This command will set the primary monitor to have a scaled version of the entire display. If you prefer panning, change --scale-from to --panning.

 xrandr --output DVI-I-3 --primary --rotate left --mode 1080x1920 --rate 60 --auto --output DVI-I-2 --mode 1920x1080 --rate 60 --auto --same-as DVI-I-3 --scale-from 1920x1080

The above video modes can have some havoc on your display if you simply use xrandr --auto, as it'll still try to scale something. Use this to return to one monitor:

 xrandr --output DVI-I-2 --primary --auto --rotate normal --panning 1920x1080 --scale 1x1 --output DVI-I-3 --off

動作するアプリケーション

Rift と Linux が問題なく動作するアプリは今のところひと握りです。その中には AUR に存在するものもあります。

Dolphin VR (Gamecube エミュレータ)

dolphin-emu-vr-gitAUR はゲームキューブのエミュレータです。パッチを適用することで完全なヘッドトラッキングのステレオスコープレンダリングを行うことができ、さらに VR でゲームを上手く動作させるためのカスタマイズも多数施されています (例えば、カリング処理を無効化して世界全体を見渡せるようにしています)。

ノート: This application works correctly with Portrait (Direct) Mode, and should be run with the Rift un-rotated.

Oculus-wine-wrapper

oculus-wine-wrapper-gitAUR は Wine を動かす時に SDK の Linux 版と Windows 版の違いをうめるためのユーティリティです。Wine アプリケーションが使用できる共有メモリコンテキストを作成して、アプリからネイティブの Oculus SDK にアクセスできるようにします。wineprefix に SDK をインストールする必要はありません。

Unity ゲーム (wine)

Unity を使用しているゲームの性能を最大限発揮するには、-force-opengl で強制的に OpenGL モードにするのが最適です。しかしながら、wine にパッチをあてないとこのモードを使うことはできません [1]wine-unity3d-gitAUR パッケージを使うことでゲームをネイティブの OpenGL で動作させることが可能になります。残念ながら頻繁にビデオモードなどの設定が変わってしまうので、画面設定が必要になります。さらに、ネイティブの OpenGL なので、nvidia の __GL_THREADED_OPTIMIZATIONS は適用されません。コマンドは以下のようになります:

env __GL_THREADED_OPTIMIZATIONS=1 oculus-wine-wrapper UnityGame.exe -screen-height 1080 -screen-width 1920 -popupwindow -force-opengl

Minecrift (Minecraft VR)

Linux サポートはメインラインに入りましたが、Linux サポートを完全に機能させるアップデートはまだリリースされていません。最新の JRift (ネイティブの java rift ランタイム) ビルドで既存のバージョンの Minecraft を動作させる方法は こちら に書かれています。

さらに、JRE7 よりも JRE8 の方がパフォーマンスが上がるという報告が多数上げられています。

ノート: This application works correctly with Portrait (Direct) Mode, and should be run with the Rift un-rotated. Unfortunately, as of 5/12/15 the ingame GUI will display as an elongated 9:16 rectangle, as opposed to staying at the screen ratio. This is usable but not ideal.

JanusVR

JanusVR は 3D のウェブサイトを探検できるアプリケーションです。AUR のパッケージが存在します: janus-vr-browser-binAUR[リンク切れ: アーカイブ: aur-mirror]

JanusVR のコードがアップデートされても AUR パッケージは自動的にアップデートされません。その場合はパッケージを再ビルドしてください。

ノート: This application works correctly with Portrait (Direct) Mode (as of 42.3), and should be run with the Rift un-rotated.

トラブルシューティング

DK2 カメラによってカーネルログが埋まってしまう

カーネルログに以下のようなメッセージが大量に表示される場合:

xhci_hcd 0000:04:00.0: WARN Successful completion on short TX: needs XHCI_TRUST_TX_LENGTH quirk?

USB 3.0/Hybrid 2.0/3.0 端子で Oculus DK2 Camera に何らかの問題が起こっています。USB 2.0 端子に接続してみてください。

サスペンド/復帰後にカメラの挙動がおかしい

サスペンド・復帰してから Rift を使用すると、カメラが位置トラッキングデータをよこさなくなって、VR プログラムが位置トラッキングできなくなることがあります。`ovrd` プロセスを終了しようとすると、ロックアップして親プロセス (ウィンドウマネージャ) が終了するまでゾンビプロセスになります。復帰後に、DK2 カメラを一度抜いてから再度接続することで問題は解決します。

古いアプリケーションで読み込みが遅延する

何らかの理由で、ovrd の 0.4.4 以下を使用するようにコンパイルされたアプリケーションで ovrd の 0.5.0 以上を使用すると読み込みが遅延します。古いアプリケーションを使用すると、まるで泳いでいるかのような表示になってしまいます。古いバージョンの SDK をインストールすることで解決します。