ぼっちプログラマのメモ

UE4とかUE5とかについて書いたり書かなかったり。

UE4のHMD関係のコンソールコマンドについて纏めました

はじめに

この記事は、
Unreal Engine 4 (UE4) 其の弐 Advent Calendar 2015の8日目の記事です。
アドベントカレンダーの担当日、もっとバラけさせれば良かった(;´∀`)qiita.com

今回は、↓の@junyashさんが紹介していたスレッドに載っている
HMDに関するコンソールコマンドについて書きます。
(いつもありがとうございます!)
How to build for Oculus Rift | Unreal | Oculus VR Forums


ついでに、公式ドキュメント・Wikiのリンクも載せときます
Unreal Engine | VR 虎の巻
Oculus Rift - Epic Wiki


今回載せている内容は、エディタでVR Previewを実行した状態での挙動です。
実行ファイルでは異なる挙動をする可能性があります。ご注意下さい。

stereo [on|off]

ステレオ描画の有効/無効を切り替えます(そのまま)。
また、HMDのトラッキングも反映されなくなります。

hmd [enable|disable]

HMDデバイスの有効/無効を切り替えます(そのまま)。
無効状態にすると「stereo on」にしてもステレオ描画に切り替わらないので、
優先度はこちらの方が上。デバイスの無効化なので、当然といえば当然ですね…。

hmd qahead [on|off]

Oculus SDKの「Queue Ahead」機能の有効/無効を切り替えます。

「Queue Ahead」機能は、GPU処理と平行してCPUを動作させる機能です。
詳しくは↓の記事で。あと、公式ドキュメントも。
Oculus SDK最新版でCPUの先行並列処理に対応 〜CPUの処理開始が2.8msec早まる - PC Watch
Developer Center — Documentation and SDKs | Oculus

Windows 10は非対応で、AMD GPUでは拡張モードを利用できない。

…(;´∀`) 
(0.7, 0.8のリリース情報に対応した的な文章ないけど、どうなっているんだろう?)

試しにOFFって見た所、頭を回した時にカクつきが生じたので、
少なくとも、「0.8では、Windows10 + nVidiaグラボでQueue Aheadは動いている」ようです。

hmd pd [0.01~1]

中心のピクセル描画密度を変更するコマンドのようです(デフォルト:1)。

f:id:pafuhana1213:20151207221344j:plain
試しに「hmd pd 0.1」を使ってみました。ボケボケです。
(コンソールコマンドの入力ウィンドウもボケて、地味に困りました)

高速化効果があります。

hmd sp [30~300]

皆大好きな「hmd sp」コマンドです。
描画解像度を変更します(デフォルト:135)。

手っ取り早く大幅に高速化できますが、
個人的には最後の手段にした方が良いと思います。
ついつい「hmd sp」コマンドで浮いた処理時間に別の処理を入れて、
実際にデモる時に処理に余裕がなくなって死ぬことがあるので…。

hmd sp reset

hmd spコマンドで変化させた描画解像度をリセットします(そのまま)。
推奨はされてませんが、「hmd pd 1」でも同じ効果があります。

hmd mirror [on|off]

ウィンドウへのミラーリングの有効/無効を切り替えます。
無効にした場合、PCモニタ上でのウィンドウに表示が反映されなくなります。
(コマンド実行時の状態でフリーズしたような見え方)

高速化効果があります。
また、待機列で並んでいる人たちへのネタバレ防止に使えたりします。
(デジゲー博の展示では、最後のオチの部分で使ってました)

hmd mirror mode [0|1|2]

ミラーリングの形式を切り替えます。↓こんな感じ。
f:id:pafuhana1213:20151207224205j:plain

ステレオ表示ではない「2」がデモ展示と相性が良さそうですが、
横に引き伸ばされているので、かなり見栄えが悪くなります。

個人的には、「1」がデモ展示に適しているかと思います。
樽型歪みが入る前なので、綺麗に見えますし。
(非ステレオで引き伸ばされてない奴欲しい…Unityみ(禁則事項です))

hmd vsync [on|off|reset]

vsync設定の有効/無効、リセットを行います。

stereo e=[0~]

IPD(瞳孔間距離, 両目の間隔)を調整します。単位は、メートルです。
なので、日本人成人男性の平均であるIPD:64.1の場合だと「stereo e=0.0641」

ちなみに、「stereo e=0」を使うと視差がなくなります。
つまり、立体視がない表示になります。
目の疲れの軽減、ピントが上手く合わない方に適しているかもしれません。

stereo w2m=[]

World Settingsで設定可能な「World to Meters」を変更します(デフォルト:100)
つまり、現実空間とUE4上での距離の扱い方を調整できます。

高い値に設定した場合、UE4上での表示物が小さく見えます。
また、ポジショントラッキングによる移動量も大きくなったように感じます。
このパラメータを使うことで、ジオラマ的な見え方を演出することができます。

あと、World to Metersの変更用ノードが用意されていたりします。
コマンドよりもこっちを使ったほうがいいかも。
f:id:pafuhana1213:20151207225637j:plain

stereo ncp= fcp=

ステレオ描画時のnear clipとfar clip設定を上書きします。
単位は、センチメートルです。
f:id:pafuhana1213:20151207230411p:plain
near clipとfar clip設定により、カメラからの距離に応じた
描画する範囲を変更することができます。

高速化する上で有効な手法ではありますが、遠方にある背景が表示されなくなる等の
問題が発生する可能性があるので、調整は慎重に。

stereo reset

「stereo e」「stereo w2m」「stereo ncp」コマンドで
変更したパラメータをリセットします。

stereo show

現在の「IPD」「fov」「near/far clip」設定をログに出力します。
f:id:pafuhana1213:20151207230840j:plain

HMD上でも確認したいなぁ。Uni(禁則事項です

hmdpos [on|off]

ポジショントラッキングの有効/無効を切り替えます。
ポジショントラッキングを無効にすると酔いやすくなる可能性が高いので、
よっぽどの理由がない限り、有効推奨です。

hmdpos reset

HMDの位置・向きをリセットします。(キャリブレーション)

hmdpos reset []

HMDの位置をリセット、ヨー方向の向きを指定した値でリセットします。

「hmdpos reset」によるリセット処理は、専用のノードが用意されています。
コマンドよりもこっちを使ったほうがいいかも。
f:id:pafuhana1213:20151207231601j:plain

hmdpos show

現在のポジショントラッキングの状態をログに出力します。
f:id:pafuhana1213:20151207232005j:plain

もう少しこう、何というか、手心というか…

hmdmag [on|off]

HMDの磁気センサーの有効/無効を切り替えます。

無効にした直後は特に変化はありませんが、時間が経つに連れ、
誤差によるドリフトが生じてくる…と思います(未検証)。
offにすることは無いと思います。

hmdmag show

現在の磁気センサーの状態をログに出力します。
f:id:pafuhana1213:20151207232813j:plain
( ´∀`)

hmd stats

HMDの各設定の最新状況を表示します。
表示中に同じコマンドを使用すると、表示が消えます。
f:id:pafuhana1213:20151207233353j:plain
やれば出来るじゃないか!
こういうのでいいんだよ!こういうので!

hmd grid

グリッド表示を有効にします。
表示中に同じコマンドを使用すると、表示が消えます。
f:id:pafuhana1213:20151207233928j:plain

グリッド表示にはベクション軽減効果があるので、
とても酔い易い人・場面には使ってもいいかもしれません。

hmddbg showcamera [on|off]

ポジショントラッキング範囲をデバッグ表示します。
範囲内にカメラがある時は緑色、範囲外の時は赤色の線で表示されます。
f:id:pafuhana1213:20151207234634j:plain

…少し線が細いので、線の太さを設定できるとありがたいかも

hmddbg cubes [on|off]

キューブを大量にデバッグ表示します。
f:id:pafuhana1213:20151207234902j:plain
これ、Unityで見たことあるやつだ!

hmd updateongt [on|off]

update-on-gamethread modeの有効/無効を切り替えます。デバッグ用(直訳)。

無効にすると、ヘッド・ポジショントラッキングが反映されなくなります。
HMD上での表示は更新されるので、コントローラなどを使ったカメラ操作は有効です。

hmd updateonrt [on|off]

update-on-renderthread modeの有効/無効を切り替えます。(直訳)
レイテンシ(遅延)を軽減させる為のモードなので、
無効にする必要はないかと思います。

hmdversion

使用しているUE4とOculusSDKのバージョンを表示します。
f:id:pafuhana1213:20151207235956j:plain
エディタ上で使うのではなく、実行ファイル上で使用することを
目的としたコマンドだと思います。

uncapfps

恐らくですが、
ProjectSettingsのSmoothFrameRateによるfps制限を解除するコマンドです。
(今回の検証環境はシンプルなので、効果が分からなかった)

スレッドで紹介されてたけど、動作しなかったコマンド

  • stereo toggle
  • hmd mirror toggle
  • hmdpos enforce
  • hmddbg showcamera toggle
  • hmddbg cubes toggle

最後に

とりあえず、今の所確認できたHMD用コンソールコマンドについて
ざっくりと解説しました。

参考にしたスレッドが2014年のものなので、もしかすると
もっとコマンドが増えているかもしれません…(どこかで一覧確認できないかな…)
新しいコマンドを発見した際は、是非共有して頂けると助かります!


明日は、
@HogeTatuさんによる「UE4でお仕事がしたくて転職した話を書きます」です!
このタイミング、まさか狙って…!mogurapr.hatenablog.com