Asynchronous Spacewarpとは?よくある誤解とチューニング方法

2016年12月8日

ASWが推測したフレームを挿入する
ASWが推測したフレームを挿入する

Asynchronous Spacewarp(ASW)は「どのような技術でどういった場合にメリットがあるのか?」について説明します。Asynchronous Timewarp(ATW)との違いや、ASW 1.0と2.0の違いについても触れます。

Asynchronous Spacewarpとは

Asynchronous Spacewarp(ASW)とはOculusが開発した、第三世代のフレーム予測技術です。Asynchronous Timewarp(ATW)を進化させ、描画処理が追い付かない場合に、最新の描画結果をより自然に予測します。

そうすることで、VRを動作させるために必要なPCのスペックを大幅に下げることができます。

どういう仕組みか

Asynchronous Timewarp(ATW)は、画面の描画処理が間に合わないときに、最新の位置トラッキング情報を使って画面全体の表示位置をずらすことで、最新の描画結果を予測していました。詳しくは以下の記事を参照してください。

Asynchronous Spacewarp(ASW)ではそれをオブジェクトごとに、またその特性や動き方に合わせて別々に予測します。

例えば、画面全体を多く占める背景は自ら動きませんから、頭の動きに応じてAsynchronous Timewarpと同様のずらし効果を、各キャラクターは自ら動くため今までの描画結果から予測した方向への平行移動を、体力ゲージやスコア表示など常に画面の同じ位置に表示されるものには何もしない、というような処理を別々に行います。

なぜそんなことができるの?

動画のエンコードに似た高度な動き予測技術が使われていると予想します。一方で、完全に絵の状態から次の描画結果を予測しているわけではなく、OculusのSDK経由で様々なヒントが与えられるため、それを利用しているようです。例えば、このオブジェクトは自キャラで、この表示はスコアの文字描画だよ、このオブジェクトは奥の方にあるよ、というようなヒントです。

公開されたタイミングとその意味

Asynchronous Spacewarpは2016年のイベントOculus Connect3で突如発表され、ランタイム1.8から利用することができました。その後1.10で正式版になっています。

このタイミングから見て、Oculus Touchに合わせて開発した技術と考えていいでしょう。というのは、このオブジェクトごとに描画結果を予測する、というところが重要だからです。

VRでは自分の起こしたアクションに対して、画面の描画がすくに反応しないとそれが違和感になり、没入感が損なわれてしまいます。そして、Asynchronous Timewarpでは、ユーザのアクションに対する予測は頭にしか作用しませんでした。

一方、Asynchronous Spacewarpは自分の手や武器といった、モーションコントローラに対しても作用します。敵キャラクターは過去の情報から予測することしかできませんでしたが、自分の手や武器の描画結果の予測には過去の情報に加えて最新のセンサー情報も利用できます。

つまり、これまで頭だけだったのに加えて手の動きもVR空間に自然に反映されるようになり、その点においても没入感を飛躍的に向上させています。

Oculus Touchの投入が遅れたのはこの技術が準備できるのを待っていたからかもしれませんね。

Asynchronous Spacewarp 2.0

2018年ののイベントOculus Connect5でAsynchronous Spacewarp 2.0が発表されました。1.0 ではカメラ(自分自身)の向きにしかASWが働かなかったのに対し、2.0ではカメラの移動(Positional Timewarp(PTW))との組み合わせで働くようになりました。これにより、ルームスケールで縦横無尽に動き回るような場面でも、ASWによる描画結果の予測がより正確になります。

また、パターンの繰り返しなど予測が難しい描画パターンにおいても、3D描画結果の深度情報を利用することで、予測ミス(アーティファクトの発生)が少なくなりました。以下は具体的な例を紹介した映像です。

ASW 2.0の詳細について知りたい方はこちらの記事も参照して下さい。

どうすれば利用できる?

当たり前ですが、Oculus Riftが必要です。(古いモデルのDK2でも動作しますが、75fpsの半分の37fpsで動作するので若干物足りないかもしれません)Reviveを使ってもこればかりは利用できないので注意してください。また最大限の能力を引き出すには、アプリケーションもOculus SDKで作られている必要があります。

その他にも以下の条件を満たす必要があります。

OS

Windows8 以降が必要です。DirectX12+DirectComputeを利用しているため Windows10が最も適しています。

GPU

GPUベンダ チップ世代 最低メモリ 最低モデル
Nvidia Pascal 3GB GTX 1060 以上(1050Tiは検証中)
Nvidia Maxwell 4GB GTX 960 以上
AMD Polaris 4GB RX 470 以上

Oculus Runtime

ASW 1.0 は 1.9 から対応しており、1.10でデフォルトで有効になりました。今は特に気にしなくてもよいです。

ASW 2.0 は 2019年4月ぐらいから利用可能になりました。アプリケーション側での対応が必要です。

よくある誤解

Timewarp技術は未来の描画結果を予測する技術ですが、フレーム補完技術と誤解されがちです。VRでは表示遅延を以下に抑えるかがカギとなっており、過去の情報を補完して表示を滑らかにしてもいいことはあまりありません。

Spacewarpにおいてもそれは同様です。各オブジェクトが過去どのような動き方をしたのか、どのような前後関係なのか、をもとにして未来の位置や遮蔽関係を予測します。

チューニング方法

Asynchronous SpacewarpはVRに必要なPCスペックを下げるための技術、と説明しました。実はOculusのシステムは、Asynchronous Spacewarpの有効・無効を自動的に切り替えています。

つまり、処理が足りずに描画フレームレートが90fpsを維持できない期間が続いたら、システムはアプリケーションの描画フレームレートを45fpsに落とします。このとき同時にAsynchronous Spacewarpを有効にし、表示上のフレームレートは90fpsを保ちます。

そのため、基本的にはチューニングの必要はありません。チューニングの必要があるのはフレームレートが90-60程度を行ったり来たりして安定せず、Asynchronous Spacewarpの有効・無効も頻繁に切り替わってしまう場合です。

このような場合はAsynchronous Spacewarpを有効に固定してしまうと表示が安定します。

Asynchronous Spacewarp設定の切り替え方法

以下のキーの組み合わせによりAsynchronous Spacewarpの設定を切り替えることができます。

  1. 無効

* Ctrl+Num1 : Asynchronous Spacewarpを無効にする
2. 無効(フレームレート45fps制限)
* Ctrl+Num2 : アプリケーションと実際の描画フレームレートを45fpsに固定する(Asynchronous Spacewarpを無効)
3. 有効
* Ctrl+Num3 : アプリケーションの描画フレームレートを最大45fpsまで下げつつ、Asynchronous Spacewarpを有効にして90fpsにする
4. 自動
* Ctrl+Num4 : Asynchronous Spacewarpを有効にするかどうかをシステムに任せる

フレームレートが安定しない場合は、Ctrl+Num3で有効に固定、Ctrl+Num4でデフォルトの自動設定に戻せます。

Asynchronous Spacewarpの効果を確認したい場合は、Ctrl+Num2で素の45fpsと、Ctrl+Num3 のAsynchronous Spacewarp有効状態を比較すると良いでしょう。

Oculusによる詳しい説明

Oculusが開発者に向けて仕組みを例を交えながら紹介しています。詳しく知りたい人はこちらも読んでみてください。

スポンサーリンク