仮想現実のベスト プラクティス

VR 開発関連の情報

Windows
MacOS
Linux

ユーザーに最高の VR 体験を提供するには、仮想現実 (VR) 向けコンテンツ開発の ワークフローを部分的に調整する必要があります。このガイドでは、VR プロジェクト用コンテンツ開発において 留意しておくべき主な点を分かりやすく説明します。

VR プロジェクト設定

VR 用プロジェクトの新規作成は、ベースがブループリントまたは C++ のいずれの場合も、起動直後のフレームから VR プロジェクトが実行されるようにするために、 Scalable 3D または 2D グラフィクスと No Starter Content を使って [Mobile / Tablet] オプションを使用するのが最善です。

クリックしてフルサイズで表示。

VR .INI 設定

以下は、UE4 が搭載された VR デモの Showdown の.INI 設定です。 これらの .INI 設定を使用する場合は、プロジェクトの 「Config\DefaultEngine.INI」 ファイルの [SystemSettings] に追加しなければなりません。

[SystemSettings]
vr.PixelDensity=1
r.SeparateTranslucency=0
r.HZBOcclusion=0
r.MotionBlurQuality=0
r.PostProcessAAQuality=3
r.BloomQuality=1
r.EyeAdaptationQuality=0
r.AmbientOcclusionLevels=0
r.SSR.Quality=1
r.DepthOfFieldQuality=0
r.SceneColorFormat=2
r.TranslucencyVolumeBlur=0
r.TranslucencyLightingVolumeDim=4
r.MaxAnisotropy=8
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.FastBlurThreshold=0
r.SSR.MaxRoughness=0.1
r.rhicmdbypass=0
sg.EffectsQuality=2
sg.PostProcessQuality=0

VR フレームレートの最適化

ほとんどの VR アプリケーションは VR フレームレートを制御するために独自のプロシージャを実装しています。このため、VR アプリケーションを妨げる可能性がある一般的な UE4 プロジェクト設定のいくつかを無効にすることが望ましいです。

  1. [Menu Bar (メニュー バー)] から [Edit (編集)] > [Project Settings (プロジェクト設定)] を選択します。

  2. [Engine] > [General Settings (一般設定)] > [Framerate (フレームレート)] を選択します。

    • [Smooth Frame Rate (スムーズなフレームレート)] のチェックを外します。

    • [Use Fixed Frame Rate (固定フレームレートを使用)] のチェックを外します。

    • [Custom Timestep][None] に設定します。

    • [Apply (適用)] をクリックします。

Framerate_after.png

VR ワールドのスケーリング

VR プラットフォームで可能な限り最高のユーザー体験を提供するためには、 ワールドを正確にスケーリングすることが最も重要です。正確にスケーリングを行わないと、ユーザーの感覚にさまざまな違和感を生じさせ、 シミュレーション酔いを引き起こす可能性があります。オブジェクトが見やすい位置は、プレイヤーのカメラから 0.75 ~ 3.5 メートル (m) の範囲です。 UE4 では、1 アンリアル単位 (UU) が 1 センチメートル (CM) です。つまり、アンリアル内にあるオブジェクトは、 プレイヤーのカメラ (VR 使用時) から 75 UU ~ 350 UU が最も見やすい距離ということです。

距離

アンリアル単位 (UU) での距離

1 センチ (cm)

1 アンリアル単位

1 メーター

100 アンリアル単位

1 キロメーター

100,000 アンリアル単位

ワールドのスケール調整は、UE4 内の [World Settings (ワールド設定)] にある World to Meters 変数で行います。 この数字を増減させると、周りのワールドとの関係でユーザーは自分が大きくなったり小さくなったように感じます。 仮にコンテンツが 1 アンリアル単位 = 1 CM でビルドされている場合、[World To Meters][10] に設定するとワールドが非常に大きくなります。 逆に [World To Meters][1000] に設定すると、ワールドは非常に小さくなります。

T_VR_World_To_Meters_00.png

VR とシミュレーション酔い

シミュレーション酔いとは、VR ワールドで HMD デバイスを使用する際に生じる乗り物酔いの一種です。シミュレーション酔いがユーザーの VR 体験に与える打撃はかなり大きく、 せっかくの VR 体験が台無しになってしまいます。VR 体験が辛いものにならないように、 以下のベストプラクティスを 遵守 してください。遵守しないと、 ユーザーに非常に不快な VR 体験をさせてしまう可能性があります。

  • フレームレートを維持しなければなりません。HMD のネイティブ フレームレートを常に確実に上回るようにバッファを少し確保することが望ましいです。 フレームレートが低すぎてもシミュレーション酔いを引き起こします。ゲームはできるだけ最適化してください。 以下の表は、UE4 をサポートしている HMD およびこれらのデバイス上での VR プロジェクトの実行に必要なターゲット フレーム レートです。

    HMD デバイス

    ターゲット フレーム レート

    DK1

    60 FPS

    DK2

    75 FPS

    Rift Retail

    90 FPS

    Vive

    90 FPS

    Gear VR

    60 FPS

    PSVR

    最高 120 FPS まで変動

  • テスト対象者として最も不向きなのは、VR デバイスを使い慣れている開発者です。シミュレーション酔いの発生を防ぐために、できるだけ幅広いタイプから選んだテスト対象者を使ってゲームをチェックするようにしてください。

  • シネマティクス カメラまたはプレイヤーがカメラ移動の調節が不可能なすべてのカメラの使用を避けてください。最悪のユーザー体験を引き起こす危険性があります。

  • 視野角 (FOV) を手動でオーバーライトしないでください。また、エンド ユーザーに編集目的で視野角を公開しないでください。値はヘッドセットとレンズの物理ジオメトリと一致していなければなりません。これはデバイスの SDK と内部コンフィギュレーションにより自動的に設定されます。一致しない場合、頭を回転させるとワールドがワープしたように見えて不快感または吐き気を催します。

  • カメラ効果に "Walking Bob" を使用しないでください (ファーストパーソンゲームでよくあります)。人の動きを真似するためにカメラを上下すると、プレイヤーはシミュレーション酔いを起こし VR 体験が台無しになります。

  • イベントをプレイヤーに伝えようとする時に、カメラを揺らさないでください。手榴弾がプレイヤーの横で爆発した時、VR 以外のゲームでカメラが揺れるのはごく自然なことですが、VR ゲームではすぐにシミュレーション酔いを起こします。

  • VR ゲームでワールドとレベルを作成する時は、通常使用するものよりも薄暗いライトと色を選ぶようにしてください。VR ゲームで強く鮮やかなライティングを使用すると、すぐにシミュレーション酔いを起こす可能性があります。通常よりも落ち着いた色のシェードと薄暗いライトを使うと、この問題を回避することができます。

  • 階段は避けてエレベーターを使うようにしてください。プレイヤーが素早く移動する (特に階段を上り下りする) 場合、方向感覚を失いやすくなります。

  • プレイヤーは最高速度で移動を始めるべきです。徐々に加速して最高速度に到達するようにしてはいけません。また、移動速度の常に一定の加速度でなければいけません。

  • 被写界深度あるいはモーション ブラー ポストプロセスは使用しないでください。ユーザーが見ているものに大きく影響し、ユーザーにシミュレーション酔いを引き起こしてしまいます。

これらは、シミュレーション酔いの根本的な原因を徹底的に調査した結果ではありませんが、VR ゲームのプレイ中にプレイヤーの体調不良を引き起こす原因のヒンとして役立ちます。

VR カメラの設定

VR 体験を立って行う場合と座って行う場合では、UE4 での VR カメラ設定がまったく異なります。 体験を座って行う場合、カメラの基点をキャラクターが立っている状態まで人為的に高くする必要があります。 この場合、カメラの原点が 0 (グラウンド上) になるようにしてください。 そのためには、キャラクターのベースでカメラ コンポーネントをシーン コンポーネントにアタッチするか、 Eye Height (目の位置) をキャラクター上のコリジョン カプセルの (マイナスの) Cylinder Height (シリンダーの高さ) の半分に設定します。

Standing VR Camera

Seated VR Camera

VR キャラクター設定

VR ヘッドセットを使用したキャラクターのセットアップは、標準のキャラクターのセットアップとは若干異なります。キャラクターの高さ、幅、速度、カメラ位置などは、 すべて VR キャラクターに合わせて若干修正する必要があります。

VR ワールドからオブジェクトをビルドする場合、 デジタル オブジェクトのスケールを現実世界のオブジェクトと同じにすることが重要です。スケールが現実世界より大きくても小さくても、 目標としている没入感を台無しにしてしまうことがあります。

キャラクターの高さと幅

キャラクターの高さと幅は、可能な限り現実世界のサイズと同じにします。スケールが現実世界より大きくても小さくても、 目標としている没入感を台無しにしてしまうことがあります。

プロパティ

UE4 でのデフォルト

推奨 VR

Height:

192 cm

176 cm

Width:

84 cm

68 cm

移動速度

VR の移動速度は、目標とする体験のタイプによって異なるため、 推奨することが難しいです。例えば、Elemental VR デモでは、 移動速度を通常の約 1/4 にしています。

プロパティ

UE4 でのデフォルト

推奨 VR

Movement Speed:

60 m/s

24 m/s

カメラ位置

VR カメラは、基本的な目の高さよりも若干低めに配置して、キャラクターの目の高さになるように補正する必要があります。

プロパティ

UE4 でのデフォルト

推奨 VR

Base Eye Height:

180 cm

160 cm

VR コンテンツに関する配慮

VR コンテンツを制作する場合には、ユーザーは複数の角度からコンテンツを見ていることを忘れないでください。今まで問題なく行ったことであっても、 VR の場合は以下のように回避すべきことがあります。

  • Scale - VR ワールドのオブジェクトをスケールする場合は、できるだけ実際のサイズを使うのが最善の方法です。オブジェクトのサイズが現実世界と異なると混乱を招き、シミュレーション酔いにつながることがあります。

  • Missing Polygon Faces - 標準的なゲームでは、ポリゴン面をプレイヤーには見えないオブジェクトから削除することができます (推奨します)。 しかし、VR ゲームではプレイヤーは周囲をかなり自由に見渡すことができるため、この方法だとプレイヤーは見えないはずのものが見えてしまう場合があります。

  • Which Type of Lighting to use - VR プロジェクトの作成には、レンダリング負荷が最も低い **Static lighting (静的ライト)** と **ライトマップ** を常に使います。 動的ライティングを使う必要がある場合は、動的ライト数を可能な限り少なくして、お互いに触れ合うことのないようにしてください。 屋外のシーンがある場合は、指向性ライトを固定ではなく動的に設定して、[Cascaded Shadow Maps(CSM)] を有効にしておくと、最もシンプルな設定でシャドウを付けることができます。

  • VR と VFX - SubUV テクスチャ による炎や煙のシミュレーションなどのトリックは、VR ではうまく反映されません。 ほとんどのケースにおいて、爆発や煙のトレイルなどの VFX のシミュレーションには 2D パーティクルではなくスタティック メッシュを使います。
    近距離フィールド エフェクトあるいはカメラに近いエフェクトは VR できれいに出ますが、これはエフェクトがスタティック メッシュ パーティクルで作成されている場合に限ります。

  • VR と Transparency - 一般的に透過処理は、何も変更がないことを確認するために各フレームを再評価する必要があるため、3D グラフィクスでのレンダリング透過処理は非常に負荷が高くなります。 この再評価のために、VR のレンダリング透過処理は負荷があまりに大きすぎて、本来の良さが生かせなくなります。 ただし、**DitherTemporalAA** マテリアル関数を使えばこの問題を回避することができます。 このマテリアル関数は、マテリアルが透過処理を使っているかのように見せることができますし、セルフ ソートなど一般的な透過処理の回避も可能です。

    クリックしてフルサイズで表示。

  • Fake everything you can (できる限り真似をする) - 動的シャドウ、ライティングなど、負荷の大きいレンダリング オプションを再生成する小技を頭に入れておくと、VR で希望するパフォーマンスが得やすくなります。 Showdown では、キャラクターに動的シャドウをキャストすると各フレームの負荷が大きすぎることが判明したので割愛しました。 すると今度は、キャラクターが移動中に宙に浮いているように見えてしまいました。 そこで、偽の BLOB シャドウを導入して修正すると、位置と強度を大幅に調整することができました。 これにより、キャラクターがグラウンドや他のオブジェクトに近づくと、シャドウをキャストしているように簡単に見せることができるようになりました。

    クリックしてフルサイズで表示。

VR に関する既知の問題

HMD 機能が原因で、ビデオ ゲーム開発には必須だったアート技術にあった影響がなくなってしまいました。 以下は、VR では期待どおりに動かない機能、およびそれに対する回避策です。

  • スクリーン スペース反射 (SSR): SSR は VR で機能しますが、生成される反射をワールド内の反射と一致させる上で問題が発生する可能性があります。負荷がかなり小さく、反射アライメントの問題も減るため、SSR ではなく 反射プローブ を使います。

ノーマル マッピングに関する問題

VR のオブジェクトの法線マップを表示すると、以前存在していたインパクトがなくなっていることに気が付くと思います。 法線マップが両眼表示や運動視差を考慮していないためです。 このため、法線マップは VR デバイスではフラットに見えます。 ただしこれは、法線マップを使用する必要がないという意味ではありません。 法線マップにしようとしているデータをジオメトリで作成すべきかどうかを、しっかり評価する必要があるという意味です。 以下は、法線マップの代わりに使用することができる技術です。

  • 視差マッピング : 視差マッピングは、法線マッピングでは考慮しないデプスキューを考慮することで法線マッピングを次のレベルに高めます。視差マッピング シェーダーは、オブジェクトを実際よりも詳細に表示して、深さ情報を詳しく表示できます。これは、どのアングルから見ても、その視点からの正確な深度情報が表示されるように視差マップが常に補正しているからです。視差マップは、敷石道や表面の細部の表現に最適です。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback