OculusRift - Michael Abrashブログ①「なぜ”仮想”はリアルに感じられないのか?」救出版 - Qiita
http://qiita.com/shiftsphere/items/be77f27b823a63369092
の続きです。
Michael Abrashブログ②「ジャダー」 | VRバカ一代
Yoi
米国Valve社Michael Abrash氏によるVR関連ブログ第二弾。
前回のブログでVR用ディスプレイと従来のディスプレイの本質的な違いを説明しました。頭部の動き
にディスプレイが追従することの意味が理解できたと思います。今回はもう一段内容を掘り下げて、
「ジャダー」についての説明です。
Why virtual isn’t real to your brain: judder
〜*〜*〜*〜*〜*〜*〜*〜*〜*〜*〜*〜*〜*〜*〜
前回、HMDがどう目や脳と相関してHMD特有の知覚的な特異現象を引き起こすか見てきた。色順次表示方式ディスプレイにおいて出現するカラーフリンジという現象を取り上げ、それがどんな現象か、なぜそれが起こるのか詳しく見てきた。僕がこの現象を選んだのは、この現象が最も重大な問題だからではない。
この現象が、目ーディスプレイ間の相対的な移動によって引き起こされる最もわかりやすい現象だからである。実際、カラーフリンジの問題は、LCD、OLED、カラーフィルター付きLCOSなどの表示装置を用いれば簡単に取り除く事ができる。(HMDのメーカがこのブログを見ている事を祈る。なぜならまだ多くのHMDでLCOSが使われているんだ。)
しかし、今回議論する「ジャダー:Judder」と呼ばれる現象はそう簡単に解決する事はできない。
「ジャダー」には、実ははっきりした定義がない。元々映画撮影でいろいろな意味で使われていた。ここでは、”ぼけた感”と”だぶり感”が組合わさった、特にVR/AR用HMDで発現する現象と定義し、今日の議題にしたいと思う。
ジャダーについて議論するに際し、ここでも前回と同じルールを適応したいと思う。視覚とは網膜にやってくる光子の場所と時間に関する関数だと言うことだ。HMDの場合、それは多少複雑な話になる。なぜなら眼球のディスプレイに対する相対的な運動とディスプレイによるイメージの時空間的量子化が作用するからだ。
我々は前回2つの例を取り上げた。ジャダーは3つ目の例となる。”時空間的量子化”とは、任意のピクセルが1枚のフレームの表示されている間そのピクセルの領域内を同じ色で発光し続けることを意味するが、もちろんこれは単純化された話だ。しかしこれは今回の目的上十分に説明されているレベルである。
カラーフリンジの話では、ピクセルの色を構成する3つの色コンポネントが異なる時間に発光することが問題あった。眼球がディスプレイに対して運動しているとき、各色コンポネントの光子が網膜の異なる場所に入射してしまうからである。
ジャダーでは各ピクセルの発光エリアが、どんな長さの期間であれ(保持時間:パーシスト・インターバル)、網膜上を同じ色で掃射することが問題となる。
結果としてイメージのぶれと、さらにストロボを何回もたいて撮影した多重露光写真のように物が何重にも重なって見えるようになる。重なって見えるのは、目が、複数のイメージのコピーを同時に知覚するために起こる。
(なぜ重なって見えるのか直感的に理解するのは難しいが、このブログの終わり頃までにははっきりしてくるだろう。)結局、イメージ情報の詳細が失われ、何より目の疲労、あるいはシミュレータ酔いを起こすことになる。ではどうしてこのようなことが起こるか、じっくりと見てみることにしよう。
〜なぜジャダーが起こるのか
今回の投稿では前回紹介したものとほとんど同じメカニズムを見ることになる。唯一の違いは結果としてそれがどう脳内で認識されるかということにすぎない。また前回と同じような理屈の説明をするかもしれないが、その帰着するところは全く異なる。
再び、いくつかの時空間ダイヤグラムを見てみよう。この図におけるx軸は、水平軸における目からの相対的な位置、y軸は時間経過を示す。
繰り返しになるが、最初の図は実世界で静止した物体を見ている時の状態を示している。
ここで強調したいのは、x軸は、目の位置に対する相対的な水平位置であり、実空間における酸い平一ではないという事である。網膜にどう光が到達するかは目の位置に対する相対的位置で決まるため、この事をしっかり理解しておく事は重要なのである。したがって上の図は、目も物体も動いていない状態たけでなく、動いている物体を目が捕捉している状態も示している。
仮想現実でも、そのイメージの色が変わらない限り、仮想イメージと目が相対的に動いていない状態は、この上図とほぼ変わらない絵になる。
”色が変わらない限り”といったのは、実世界では色の変化は時間軸に対してスムーズに変化する一方、仮想現実では色の変化は、不連続に、フレーム毎にしか起こらないからだ。しかし仮想世界の物体が移動し、それを眼球が補足しているとい状態はこの図では示されていない。
この状態こそが今回のメインテーマである。
次に目に対して物体が相対的に移動している状態を考えてみよう。下図は、実世界の物体が一定速度で左から右へ移動している状態を示している。
最もあり得るケースとして、目が何かに注視している間、その物体が左から右に移動しているといった様子だ。
さて、次がいよいよ仮想世界の物体が目に対して相対的に移動している時の絵である。今回の投稿では一貫して、ディスプレイは3つの色コンポネントを同時に放射すると仮定する。
したがって前回の図と異なり、ピクセルの色はフレーム表示間ずっと同じとする。
一つ一つのピクセルは、フレーム毎に一回しか更新されない。つまり1枚のフレームを表示している時間、同一の色情報が保持されるため、イメージはピクセルの位置と保持時間に対して量子化される事になる。
結果として動きは連続ではなく、不連続となる。この例では、もし仮想空間の物体が高い空間的な周波数を持っていれば、イメージが複数重なって見えるかもしれないが、ジャダーを出現させることはない。
ここまでは理解できただろうか?しかし、我々はまだ、目とディスプレイが相対的に移動した場合に踏み込んでいない。そして、このケースこそがジャダーを出現させるのである。
先に述べた通り、目はディスプレイに対して自由に動かす事が可能だ。動いている仮想イメージを追従したり、頭を動かしているあいだ、VORによって静止した物体を追従してそれをクリアに見る事ができる。
(目は「衝動性眼球運動:Saccade」と呼ばれる運動によってディスプレイとの相対位置が変化する場合があるが、その運動が視覚情報を取得しながら起こっているにも関わらず、目はクリアに物体を見ていない。)
特にVORに起因する眼球運動は、目ーディスプレイ間の相対速度が極めて速いためとても重要である。そして結果としてとても長いブラーを引き起こすのだ。
下が相対的に移動している場合の図である。
しつこいようだが、x軸は眼球との相対位置であり、実空間の座標ではない。
もし、ディスプレーが無限大のリフレッシュレートを持つならば、最初に登場した実世界の図のようにプロットは線形になるはずだ。
しかし有限のリフレッシュレートでは、仮想物体によって新しいフレームがはじまった直後、あるべき場所にピクセルを表示させ、次のフレームが開始するまでの間、ディスプレイ上の同じ位置に同じ色で表示され続ける。
しかし、眼球は物体を補足するためディスプレイ上を移動するため、同一フレームを表示している間、ピクセルの発した光子は網膜上を走査することになる。
次のフレームがはじまると、仮想物体はまた新しいフレーム上の新しい、あるべき位置に表示され、その物体を構成するピクセルもまたディスプレイ上の正しい位置に配置される。そしてまた直ちにスライドがはじまるのだ。
ジャダーを定義通りにビデオにして記録するのはとても難しいが、このリンクのビデオ(ttp://media.steampowered.com/apps/abrashblog/blog11fig5.wmv )はスローモーション時に発生する同じようなメカニズムを記録したものだ。
ジェダーは眼球ーディスプレイ間の相対的移動に関わる現象である。ビデオでは、カメラがディスプレイにしっかり固定されており、この装置を壁に向かってパンをしている。壁に描かれたマーカーはイメージトラッキングに使用している。
この現象はここで議論しているHMDのジャダーとは厳密には異なるが、表示されているピクセルの時系的量子化がいかにしてフレーム時間内に正しい位置からスライドしてしまうか奇麗に表現している。
是非コマ送りしてみていただきたい。
マーカーがカメラの物理的な連続した動きに合わせてスクリーン上を移動している一方で、丁度5カメラフレームの間、仮想イメージが同じ場所に表示され続ける様子がはっきり確認できると思う。
もし、カメラの代わりに実際の目を使ってまっすぐ正面を見たとしたら、まさにカメラがやった通り、目は、フレームからフレームへ切り替わる時に仮想イメージが、”ぶれ”ではなく、ジャンプする様子、すなわち仮想イメージの”だぶり”を捉えるだろう。
しかし、ビデオのようにHMDだけが動いている状態ではなく、眼球もマーカーを補足するように動いていたとしたら、まさに上図のようにジャダーが出現するはずである。”だぶり”ではなくイメージがぶれて見えるはずだ。
当然あなたはミリ秒の間に起こるイメージのぶれなどどれほどものかと思うだろう。でも答えはこれだ。
思った以上に酷い。
頭を普通に動かすとそのスピードはおおよそ100度/秒くらいだ。もし60HzのフレームレートのHMDを装着し、120度/秒のスピードで頭を回転させるとしよう。
それはフレームあたり2度の回転と同じである。2度なんてたいした大きさじゃないと思うだろうが、OculusRiftではそれが約14ピクセルに相当する。
もし、HMDのディスプレイ解像度が人間の網膜と同等のものだとすると、2度は数百ピクセルに相当してしまうのだ。したがって、ジャダーのぶれの部分はかなり大きな影響なのである。
残念ながらそれを直接ここで表現することはできないので、似たような状態をイメージ的に表現してみようと思う。
まずは元のレンダリングイメージだ。
それに角度2度のぶれを加えると結果はこうなる。
イメージの品質の差は明らかだ。
一方でこちらのビデオ(ttp://media.steampowered.com/apps/abrashblog/blog11fig8.wmv )はハイスピードカメラで撮った映像が如何にスムーズであるかを示している。(ビデオの画質は非常に悪いが、最初のビデオと違ってシフトやジャンプなど特異な現象が現れていないことは十分に伝わるはずだ。)
最初のビデオでは、シースルー型HMDのディスプレイにカメラの動きに追従して実世界の物体に仮想イメージが重なるようにトラッキングを使用した。
HMD上に描画されたピクセルは実世界の動きに合わせ、フレーム毎に更新される。一方2番目のビデオでは、仮想イメージを実世界上の物体に表示(つまりモニター上に表示)しているため、イメージの構成ピクセルは実空間上に固定されている。
VR/AR用のHMDと他のタイプのディスプレイの違いは、この2つのビデオの違いと似ている。つまり、HMD上に表示される仮想イメージは、実空間上の座標に直接描画されるのではなく、実空間にあわせてHMD上に描画されるわけである。
ぶれの他に、最初のビデオでは、まさに最後に示した時空間モデル図のように次のフレームが表示される毎にイメージがあるべき場所にジャンプするという現象が観測できた。何度も強調するが、網膜のどの場所にいつ光子が入射したかがキーなのである。
もし、次の描画更新までイメージが角度にして5−10分移動したとすると、そのイメージが何重にも重なって見えるだろう。
つまり、複数以上のイメージを同時に見ているような感覚になるのだ。(ここではその様子を「ストロボ」つまり、ストロボを何回もたきながら撮影したような多重露光写真のような状態、と呼ぶことにする。)
高速に頭を動かすと、フレームの描画更新毎にイメージがジャンプするという現象が、ストロボを感じるしきい値を超え、ジャダーにはぶれに加えてストロボ現象が加わる。
なぜ、ジャダーはぶれだけでなく、ストロボまでおこすのか疑問を持つかもしれない。ポイントはどんなレイテンシーやトラッキングの誤差も、物体のエッジを表現する光子は”本来到達すべき位置”からずれて網膜上に入射し、それがストロボ現象を引き起こす原因になりうるということだ。
さらに、網膜の蓄光時間は、フレームレートと必ずしも一致しないということだ。
例えば、フレーム間隔が10ms、網膜の蓄光時間を5msと仮定しよう(単に説明のために使う数字であって実際の数字ではない。)。
すると、目は仮想物体のエッジを1フレームに付き2回結像することになる。そのとき、眼球が高速で回転したとすると、2回の結像したイメージは十分にずれているだろう。
つまり、目は2つのずれたイメージを同時に知覚することになり、ストロボ現象が出現するわけである。
(実際には目のシャッター機能はいくつもの要因に依存していて、不連続のスナップショッを撮ることはない)
注意してほしいのは、これはまだ理論であって実証されたわけではないということだ。いずれにせよ、ストロボ現象は事実であり、ジャダーの一因子である。
ぶれとストロボが同時に起こっている状態は、丁度ガクガクしたモーションブラーのようなものだといっていいかもしれない。少なくともぶれによってイメージのディテールは失われる画質が低下する。
ストロボ現象は多くの場合、ぶれ現象の中に隠れてしまい、大きな空間的な周波数を持たない限り目立った現象ではない。しかし、2つの現象が目の疲れやシミュレーション酔いを引き起こす可能性がある。なぜならこれら2つの現象が目のモーション検知の仕組みに影響しているようだからである。
目の知覚システムは複雑であり、現時点では可能性があるとしか言えない。しかし、何かしら有効な証拠が見つかれば、再び詳しく議論したいと思う。
Rift開発者キットのHMDのような、低速のLCDでは、OLEDやスキャンレーザーなどピクセルを瞬間的に切り替えられるものと違い、ピクセルの切り替えに立ち上がりカーブが存在する。これがぶれを大きくし、ストロボ現象を隠してしまう。
これがストロボ問題を解決することはするが、すべての問題を解く鍵ではない。なぜなら、画質の低下がさらに大きくなるし、高速切り替えの表示装置には何の解決にもなっていないからである。
〜なぜジャダーは映画、テレビ、PCディスプレイでは大きな問題にならないのか?
HMDが他のタイプのディスプレイと全く異なるという話は以前した通りだが、その違いの一つはHMDではジャダーがことの外大きな問題であるということだ。ではなぜ、ジャダーは映画、テレビ、PCディスプレイでは大きな問題にならないのか?
実はジャダーTVでも映画でも大きな問題であることには変わりない。ただ、問題を避けるための努力をしているだけだ。
例えば、映画のシーンには速いパンをほとんど見ることはない。また、それがあったとしても動きの方向に対してブラーしているだけである。TVでも映画を同じルールに基づいて撮影される。
TVのスポーツシーンではジャダーがでてしまう可能性はある。しかし、それは高いフレームレートの中で効果的なシーンを表現する時だ。コンピュータ画面でもジャダーを観察することができる。
モニターを持ち、前後左右に激しく動かしながら、モニターの端を注意深くトラッキングするとそれを観察することができる。(もちろんそれは、OS、グラフィックカードやOSのモニター設定によって状態は変わるだろう。)
もっと簡単にジャダー現象を見たいのなら電話の住所録を見るといい。住所録を上下にスクロールしながら、スクロールさせている指先を目で追いかけると、表示文字がぶれ、ガクガク見えはじめるだろう。
あるいは、住所録上に指を固定し、電話自体を上下に振ると同じ現象が起こるはずだ。住所録は完全にぶれ、文字を読むことはできない。
ジャダーはビデオゲームをしている最中、高速で移動する物体を目で追いかけている時にも観察することができる。面白いことに、CRT時代に比べてLCDモニターを使うようになってからビデオゲームでのジャダー現象は酷くなっている気がする。低速なLCDのスイッチングもあまり効果を発揮していないようだ。
ジャダーがディスプレイを使うどんなアプリケーションに対しても潜在的に問題であるにも関わらず、HMDではことの外問題となるのは、
1)まずHDMの視野角が非常に広く描画されている物体を目が補足している時間が長くなること、
2)次に普通の状態で目が移動している物体を目で補足するよりはるかに速いスピードで頭を回転させ、VORによって高速に目で物体を補足しているからである。これらはHMDでジャダーを誘発させやすくする要因である。
3)3つ目に、モニター上のイメージは実世界にある実物上の表面に表示されるが、HMDでは実空間
上に直接描画される(ように見える)からだ。
つまり、視覚システムは実物をみているのと同じ感覚でHMD上の仮想イメージを捉えるため、実物との違いを容易に認識してしまうのである。
〜次回:ジャダーを軽減させるトレードオフ
ジャダーは致命的な問題ではない。しかし画像クオリティーの低下は避けられない。これまで頭を動かしてもジャダーを発生させず、イメージもクリアなままのプロトタイプのHMDを探してきた。
VR/ARでは高いピクセル密度が要求されるが、ピクセルサイズに対して相対的にぶれ度が高くなるためジャダーは酷くなる傾向になる。
ではどうしたらジャダー現象を抑えることができるのだろうか?
2点ある。高いリフレッシュレートと低い保持時間である。しかしこれは少々複雑な仕組みであり、理解するには時間がかかるので続きは次回ということにしよう。
この段階では、目と脳をだまして仮想イメージをリアルであると思わせることはとても難しいと理解しておいてもらいたい。
次回は、この知覚のメカニズムが不思議の国のもっと深いところまで続いていることを紹介したいと思う。
OculusRift - Michael Abrashブログ③「ジャダー問題の解決」救出版 - Qiita
http://qiita.com/shiftsphere/items/81b0af62c51d9aedf1e5
3へ続きます!