21.仮想現実と拡張現実2. 目次
21.1 機器とシステムの概要
21.2 物理的要素
- 21.2.1 レイテンシー
- 21.2.2 光学
- 21.2.3 立体視
2
21.3 API とハードウェア
- 21.3.1 ステレオ レンダリング
- 21.3.2 中心窩レンダリング
21.4レンダリング テクニック
- 21.4.1 ジャダー
- 21.4.2 タイミング
5. 21.1 機器とシステムの概要
5
● センサー/トラッキング:回転と位置を検出
IR camera
IR LEDs
IR laser lines
IR sensors
Marker-based outside-in
e.g. Oculus Rift CV1
Marker-based inside-out
e.g. HTC Vive
Markerless inside-out
e.g. Oculus Quest
wide fov
cameras
6. 21.1 機器とシステムの概要
6
● HUD
● MR
● Vrvana Totem , Occipital Bridge
● Microsoft Hololens
● HPU
● Apple ARKit, Google ARCore
● Intel Project Alloy
● Google Daydream VR,
Qualcomm Snapdragon VR
7. 目次
21.1 機器とシステムの概要
21.2 物理的要素
- 21.2.1 レイテンシー
- 21.2.2 光学
- 21.2.3 立体視
7
21.3 API とハードウェア
- 21.3.1 ステレオ レンダリング
- 21.3.2 中心窩レンダリング
21.4レンダリング テクニック
- 21.4.1 ジャダー
- 21.4.2 タイミング
9. 21.2.1 レイテンシー
9
● 通常のディスプレイモニター
○ インタラクティブ性と接続の感覚を壊して迷惑
● 拡張現実 (AR)と複合現実 (MR)
○ 仮想オブジェクトは現実世界に対して泳いだり浮かぶように見える
● 仮想現実 (VR)
○ 劇的な影響を作り出す。シミュレー ション酔 (Simulation sickness)
○ 汗、目まい、吐き気や、さらに悪い症状
○ この不快感を「切り抜ける」こと は不可能で、悪化するだけ
10. VR のシミュレーション酔い
10
● ユーザーの期待や知覚と、表示イメージが一致しないときに発生する。
○ 内耳の前庭系 (Vestibular system)
● 頭の動きと、正しく一致する表示イメージの時間差が小さいほど、よい体験になる
○ 15msは感知できない
○ 20msを超える時間差は間違いなく知覚でき、有害な影響がある
● Monitor display : マウスの動きから表示まで
○ ゲームは一般に50ms以上 (vsync/垂直同期有効)
○ 垂直同期無効で30ms
● VRシステムでは90FPSの表示レートが一般的で、11.1msのフレーム時間を与える
○ フレームをケーブル接続のディスプレイで走査するのに約11msかかる
○ たとえ1msでレンダー
○ 合計12msのレイテンシー
13. 目次
21.1 機器とシステムの概要
21.2 物理的要素
- 21.2.1 レイテンシー
- 21.2.2 光学
- 21.2.3 立体視
14
21.3 API とハードウェア
- 21.3.1 ステレオ レンダリング
- 21.3.2 中心窩レンダリング
21.4レンダリング テクニック
- 21.4.1 ジャダー
- 21.4.2 タイミング
17. 21.2.2 光学(Optics)
18
ローリングディスプレイ
● 走査線(scan line)ごとに、受信後すぐに表示される。
● レイテンシーを最小化できる。
● 揺らぐイメージ(wobbly)と受け取られる
● コンポジターが、走査線のブロックを越えて予測した頭のポーズを補間
● 高速頭の回転で起きる揺れや、せん断のほとんどに対処する
● シーン中で動くオブジェクトを補正でない
グローバルディスプレイ
● 一度全部を受信してから、イメージが表示される
● 短いバーストにより除外される表示
● 有機発光ダイオード(OLED) ディスプレイ向け、90FPSの表示レート
18. 目次
21.1 機器とシステムの概要
21.2 物理的要素
- 21.2.1 レイテンシー
- 21.2.2 光学
- 21.2.3 立体視
19
21.3 API とハードウェア
- 21.3.1 ステレオ レンダリング
- 21.3.2 中心窩レンダリング
21.4レンダリング テクニック
- 21.4.1 ジャダー
- 21.4.2 タイミング
22. 21.2.3 立体視(Stereopsis)
23
ディスプレイ
● 調節要求は一定
● オブジェクトに焦点を合わせるときに、輻湊要求が変化する
● この不一致が目の緊張を引き起こす
● Oculus:バーチャルオブジェクトを、約0.75から3.5メートルの距離に置く
適応焦点 (Adaptive focus) や可変焦点 (Varifold)ディスプレイ
● ユーザーの目の動きに基づいて、知覚焦点距離を調整できる
● 研究開発中
ステレオ ペア
● 偏向レンズ、シャッ ター グラス、マルチビュー ディスプレイ オプティックスなど
が同じスクリーンから目に別々のイメージを提示する
23. 21.2.3 立体視(Stereopsis)
瞳孔間距離(IPD : Interpupillary distance)
● 目と目の距離
● 52mm から78mm の範囲で、平均が 63.5mm (米国陸軍兵士の研究で)
● ユーザーのIPDを決定して調整し、イメージの品質と快適さを改善できる
● 目の分離距離を増す⇨行きの知覚を強められるが、目の緊張を引き起こす
● システムのAPIは、このIPDを含めた、カメラのモデルを制御する
24
24. 目次
21.1 機器とシステムの概要
21.2 物理的要素
- 21.2.1 レイテンシー
- 21.2.2 光学
- 21.2.3 立体視
25
21.3 API とハードウェア
- 21.3.1 ステレオ レンダリング
- 21.3.2 中心窩レンダリング
21.4レンダリング テクニック
- 21.4.1 ジャダー
- 21.4.2 タイミング
25. 21.3 APIs and Hardware
26
★必ずシステム プロバイダーが提供する VR ソフトウェア開発キット(SDK)
とアプリケーションプログラミング インターフェイス(API)を使ってください★
● 独自の変形シェーダーは、不快感の原因になるかも
● たくさんテストしないと分からない
● 性能を最適化・品質を維持する作業は、システムがやってくれる
このセクションは、様々な ベンダーのSDKとAPIが提供する支援機能を解説する。
26. 21.3 APIs and Hardware
27
レンダーした3Dシーンのイメージをヘッドセットに送る処理
1.フレームが表示される時間 Ti を見積もる=レイテンシー
2.今のポーズをAPIに問い合わせる
3.時間 Ti のとき、SDKがポーズを計算し、目のカメラを設定する
4.予測が完璧なら、レイテンシーの影響が最小。
頭が予測した位置と向きに達した瞬間に、レンダーしたイメージが表示される。
ポーズ =
頭の向き & 位置(あれば)
27. 21.3 APIs and Hardware
28
コンポジター (組み合わせ合成)
最も効率的
な方法
レイヤー1
レイヤー2
レイヤー3
合成 イメージ
補正措置を適用する
最終的な表示イメージ
Oculus方法
レイヤー1
レイヤー2
レイヤー3
変形したレイヤー1
変形したレイヤー2
変形したレイヤー3
補正
補正
補正
合成 最終的な表示イメージ
● 利点は各レイヤーの解像度で変形する ⇨ テキストの品質を改善できる
● 変形処理での再サンプリングとフィルタリングが
テキストの内容だけに焦点を合わせる
28. 21.3 APIs and Hardware
29
ディスプレイ イメージ
● ユーザーが知覚する視野はほぼ円形、赤い四隅は検知されない。
● 隠し領域メッシュを、ステンシル バッファーに、前面にレンダーする
● HTC Vive上でfill rate を約17% 下げる ⇨ シェーディングが必要なピクセルが減る
APIが提供する
29. 21.3 APIs and Hardware
30
HMDのレンズによる歪みを補償する(再マッピング)
● Ray castingは波長による補正を行えるが、非実用的
● レンダーしたイメージを テクスチャーとして扱い、後処理を実行する
● Pixel shaderでテクスチャー上の正確な位置を計算する
○ すべてのピクセルで変形の式を評価する ⇨ 高価
● テクスチャーを Triangle mesh に適用して、変形の式で修正するのが効率的
○ メッシュの変形は、色収差が補正されない
○ 色チャンネル(赤、緑、青)ごとに、イメージを変形する
○ Gridded mesh を表示イメージに適用 ⇨ 細長い三角形が表示されない
31. 21.3 APIs and Hardware
32
HMDのレンズによる歪みを補償した
最終的な表示イメージのメッシュ
片目に48 x48の四辺形
間引かれたメッシュ。
最後の変形パスのコストを約15%減らせる。
32. 21.3.1 ステレオ レンダリング
33
● 2つのビューのレンダリングのコスト ≠ 2倍 x 1つのビューのレンダリング
● シャドウ マップの生成、Simulation、Animationなどの要素は、ビューに依存しない
● Pixel shader 呼び出し&後処理効果は、解像度に依存する
● ビュー依存の頂点処理は倍になる (View-dependent vertex processing)
錐台カリング(Frustum culling)
● メッシュをGPUのパイプラインで送る前に行われる
● レンダリングの前に発生するので、両目の錐台を囲む1つの錐台が使える
● 予測カリングで視野に約5度を加える
33. 21.3.1 ステレオ レンダリング
34
レンダーする手法
● 順に行うこと。1つのビュー ⇨ もう1つのビュー
● オブジェクトごとに2回ずつレンダー
● ビューごとにジオメトリーを複製
● インスタンス化を使う
● コマンドリストを作る
⇨Tile-based renderでViewとRender target
を頻繁に変えると、ひどい性能になる
⇨API draw call の数は倍になる
⇨ジオメトリースループットが3分の1以下になる
⇨各オブジェクトのジオメトリーを1つのdraw callで2回描く
⇨もう片方の目の変換にシフト、コマンドリストをリプレイ
ジオメトリーを2回+ パイプラインに送ることを回避する機能拡張
● OpenGL ES 3.0のマルチビュー
● AMDとNVIDIAのマルチGPU ソリューション
● NVIDIA のブロードキャスト
● 並列に動作する2つのGPUで、約30-35%のレンダリング高速化
34. 21.3.1 ステレオ レンダリング
36
ステレオ ビューの視差
● 近くのモデルでは重要、遠くのオブジェクトでは無視できる
● 10mより近い不透明オブジェクトは、2つのステレオ カメラでレンダー
● 10mより速いものは、単眼カメラでレンダー
① ステレオ ビュー(近いもの)を最初に描く
② 遠いオブジェクトをステレオ ビューに合成
③ 透明なものは最後に各ビューにレンダー
オーバードローを最小化するため
37. 21.3.1 ステレオ レンダリング
39
Eye’s view の周辺のピクセルを減らすテクニック
● マルチ解像度シェーディング(NVIDIA Maxwell architecture 2014年 以来サポート)
● 可変レートシェーディング(AMD)
● 3×3の区分に分割し、周辺の領域を低い解像度でレンダーする
38. 21.3.1 ステレオ レンダリング
40
同時マルチ投影 (simultaneous multi-projection : SMP)
● NVIDIA Pascal architecture 2016年 以降(GTX1080)
● ジオメトリーを最大16の個別の投影× 2目の位置
● 最初の目の位置 + x axis offset = 2番目の目の位置
● 投影はそれぞれ独立に軸の周りで回転できる
HMDの曲面投影に対応
40. 21.3.2 中心窩レンダリング (Foveated Rendering)
42
● 目が向けられた領域を高い解像度と品質でレンダーする
● 問題:サッカード、目の連続した急速な移動(900度/秒 ~ 10°/frame in 90FPS)
● 正確な Eye tracking が必要
41. 目次
21.1 機器とシステムの概要
21.2 物理的要素
- 21.2.1 レイテンシー
- 21.2.2 光学
- 21.2.3 立体視
43
21.3 API とハードウェア
- 21.3.1 ステレオ レンダリング
- 21.3.2 中心窩レンダリング
21.4レンダリング テクニック
- 21.4.1 ジャダー
- 21.4.2 タイミング
42. 21.4 レンダリング テクニック
44
● 固定画面、と見る人と一緒に動く画面の動作するテクニックが違う
● VR/ARビューが非常に重要
● フリッカー(点滅)、ストロボ ライト、高周波の テクスチャー ⇨シミュレーター酔い
43. 21.4 レンダリング テクニック
45
● VRとARで、HUDの深度の矛盾の危険がある
● レイをキャストして、最も近いサーフェスの深度を求め、その深度の上にレンダー
● 目に近い深度でレンダーするように、HUDの内容を左右シフトしなければならない
モニターベースのゲームのHUDは
画面の前に固定する
45. 21.4 レンダリング テクニック
47
● Billboards and imposters lack surface z-depth
○ can be unconvincing when viewed in stereo
○ volumetric techniques or meshes is more appropriate
● Skyboxes
● Tone mapping
● Screen-space ambient occlusion and reflection
● Post-processing effects such as bloom or flares
● Underwater or heat distortion effects
● Screen-space reflection
● Specular highlighting
Researchers have found that modifying this disparity can make
the images easier to fuse and be more convincing.
46. 21.4.1 ジャダー (Judder/振り動かす)
48
● 完璧なトラッキングができても、レイテ ンシーの問題がある。
● HMDの更新レート 45ー120FPS 以内でイメージを生成する
GPU compositor display
画像をレンダー 画像を合わせて、ビュー変形
60 FPS の場合、1フレームは16.7ミリ秒以内にレンダー&変換!
● フレーム落ちは、目が動いているときに、ジャダーの知覚を高める
○ smear:ピクセルが数フレームの間に照明されるとき
○ strob:フレームの間に大きな変化がある
48. 21.4.2 タイミング
● 品質を維持するための最もよいのは、フレーム落ちを避ける
● 表示の時点のユーザーの実際のポーズ、と予測されたポーズが異なる問題
● 遅延向きワープテクニック(Late orientation warping)< 0.5 ms
a. 普通にポーズを取得して、フレームを生成
b. フレー ムができたら、もう一度ポーズを取得
c. 取得したと予測ポーズと違ったら、フレームで回転ワープ(タイムワープ)
a. b.
c.
50
ポーズを取得
フレー ム
ができる
ポーズを
取得
タイムワープ
display refresh
rate を待つ
Editor's Notes https://cdn.mos.cms.futurecdn.net/iGfveNFF3qZzGe3gaXrNcK-480-80.jpg
https://roadtovrlive-5ea0.kxcdn.com/wp-content/uploads/2013/05/inside-oculus-rift.jpg
https://d3nevzfk7ii3be.cloudfront.net/igi/QRaQveDpKKcNvXrN.medium https://www.youtube.com/watch?v=J54dotTt7k0
https://www.youtube.com/watch?v=2jY3B_F3GZk
https://commons.pratt.edu/virtualreality/history-background http://www.chioka.in/what-is-motion-to-photon-latency/ https://www.youtube.com/watch?v=B7qrgrrHry0
http://www.anfoworld.com/Lens.html
https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=1222
https://stanford.edu/class/ee267/lectures/lecture7.pdf
樽(たる)型収差(しゅうさ) https://www.google.com/url?sa=i&url=https%3A%2F%2Fforums.oculusvr.com%2Fcommunity%2Fdiscussion%2F28380%2Fchromatic-aberration&psig=AOvVaw2W9IyzzGT_CkVG4Y9szASR&ust=1635357639917000&source=images&cd=vfe&ved=0CAwQjhxqFwoTCPi06I7U6PMCFQAAAAAdAAAAABAP
https://www.google.com/url?sa=i&url=https%3A%2F%2Fpaper.nweon.com%2F6654&psig=AOvVaw2W9IyzzGT_CkVG4Y9szASR&ust=1635357639917000&source=images&cd=vfe&ved=0CAwQjhxqFwoTCPi06I7U6PMCFQAAAAAdAAAAABAD
https://pt.slideshare.net/j3di79/chapter-14-the-human-eye-lesson-3-the-2-mechanisms-of-the-eye-1-accommodation-and-2-pupil-reflex/4
https://www.alcon.co.jp/eye-health/eye-care-mechanism
https://www.youtube.com/watch?v=iAHJjnwPwsk 中心窩 / ちゅうしんか / fovea
https://www.moguravr.com/terms/index-h/terms-47447/ https://research.nvidia.com/publication/2017-09_Latency-Requirements-for https://www.pinterest.com/pin/323485185705721319/ https://www.youtube.com/watch?v=WvtEXMlQQtI Given the predicted pose for each eye, you generally render the scene to two separate targets. These targets are sent as textures to the SDK’s compositor. The compositor takes care of converting these images into a form best viewed on the headset.