--- title: WebVR concepts slug: Web/API/WebVR_API/Concepts translation_of: Web/API/WebVR_API/Concepts ---
{{APIRef("WebVR API")}}
この文書は,バーチャルリアリティ(VR)の背景にある概念と理論について述べています.もしあなたがこの分野の初学者なら,コードを書き始める前に,これらのトピックを理解すると役に立つでしょう.
VRは全く新しいというわけではありません —その概念は2012年の Oculus Rift Kickstartar キャンペーンよりずっと前にさかのぼります.人々は数十年の間その実験を続けてきました.
1939年 View-Master device が作られ,3Dピクチャを見ることができるようになりました.そのデバイスは,ステレオ立体視の小さなカラー写真のペアを持つ厚紙のディスクに記録された画像を表示していました.数年の開発ののち,軍はそのテクノロジーの使用に興味を,持ち,そしてHeadsightプロジェクトが1961年に生まれました — これはビデオスクリーンとヘッドトラッキングシステムを合体させたヘルメットに影響を与えました.
その後の数十年,さまざまな実験がなされましたが,もはや科学ラボや戦場に限定されませんでした.最終的に,映画監督がバーチャルリアリティのビジョンを示すポップカルチャーに引き継がれました.Tron (1982) やThe Matrix (1999) のような映画が制作され,そこではまったく新しいサイバー世界へ転送されたり,サイバー世界と知ることなくとらわれてそれを現実世界として受け入れる世界が描かれました.
最初のVRゲームの試みは大きく高価なものでした — 1991年, Virtuality Group はゴーグルを持つVRレディなアーケードマシンを作成し,パックマンのような人気のタイトルをVRへ移植しました.セガはVRグラスを1993年のCES(Consumer Electronics Show )で発表しました.企業は実験をしていましたが,市場や消費者を納得させられませんでした — 実際に成功したVRプロジェクトの事例を見るには2012年まで待つ必要がありました.
では何が新しいのでしょう? 十分なユーザ体験を提供するには,VRハードウェアは高精度,低レイテンシでデータを届ける必要があります; VRアプリケーションを動かすコンピュータはこれらすべての情報を扱うため,十分強力でなければなりません.そのような精度とパワーがあったとしても,手頃な価格で利用できるようになったのは最近のことです.早期のVRプロトタイプは何万ドルもコストがかかりましたが,HTC VIVEやOculus Rift、Playstation VR のような近年のHMDは数百ドルで利用でき,さらに Gear VR や Google Cardboard のようなモバイルベースのソリューションみたいに,もっと安価なソリューションもあります.
ソフトウェアの面では、Valveは、VIVEや他のソリューションで互換性のある SteamVR を作成し、利用しやすいVR UIのようなソフトウェアへのアクセスを提供しています。
テクノロジー自体はすでにあるので,将来的には,より高価なヘッドセットが時間をかけて安価になっていき,多くの人々がVR体験できるようになります.
VRアプリケーションの入力を扱うことは興味深いトピックです — それは専用のユーザインターフェイスがデザインされなければならないのでまったく新しい体験となります.現時点でも古典的なキーボードとマウスから,Leap MotionやVIVEコントローラのような新しいものまで様々なアプローチがあります.これは特定の状況でどのように動作するかそしてあなたのゲームタイプにはどのような入力が最適なのかを確認する試行錯誤の事柄です.
主に,モバイルタイプとコンピュータ接続タイプの2種類のセットアップがあります.最小のハードウェアセットアップは次のようなものです:
Note: コンピュータ接続システムは位置センサーを含んでいない場合もありますが,通常は含まれています.
その他のVR体験を補うハードウェア:
前述のように,位置センサはHMDに関する情報を検出して常にそれを出力しているので,頭の動きや回転などに追従してシーンを連続的に更新することができます.しかしその情報とは正確には何でしょうか?
出力情報は,4つのカテゴリに分類できます:
視界 (FOV; field of view) は,ユーザの各目で見られる(と期待されている)範囲です.その形状は,おおよそピラミッド型になっていて,(前後の)側面はユーザの頭の内部を頂点として,残りはユーザの目の位置から広がっています(訳注; 原文では eminateと書かれていますが,emanateの誤字と判断しました). それぞれの目は固有のFOVを持っていて,もう一方にわずかに重なっています.
FOVは次の値で定義されています:
Note: The user can potentially see all the way around them, which is a brand new concept for apps and games. Try to give people a reason to look around and see what's behind them — make them reach out and find things that are not visible at the very beginning. Describe what's behind their backs.
これらのプロパティのデフォルト値は,VRハードウェアによって微妙に異なりますが,上下方向は53°,左右方向は47°,zNearとzFarはそれぞれ0.1mから10000mくらいになっています.
Note: ユーザは潜在的に周囲全体を見渡すことができます.それはまったく新しいアプリやゲームのコンセプトです.人々が見回したり背後にある何かを見たりする理由を与えることにトライしてみましょう — 最初は見えていないものを見つける手助けをしてあげてください.背後になにがあるか説明しましょう.
このセクションでは,通常のモバイルやデスクトップを開発するときにはほとんど考慮する必要がないけれど,VRアプリを開発するときに知っておきたい概念について説明します.
立体視は,人間や(おそらく)動物が持つ通常のビジョンで,(両目のそれぞれから見える)僅かに異なる2つの画像を1つの画像として知覚するものです.結果として奥行きを認識でき,見事な3Dの世界を見る手助けをしています.VRアプリでこれを再現するには,ユーザがHMDを使っている時に左右の目のそれぞれに与える,本当にわずかに異なるビューを横に並べた画像をレンダリングする必要があります.
360°シーンの臨場感をつくりだす主要なテクノロジは,HMDに搭載されているジャイロスコープや加速度センサ,磁気センサ(コンパス)によって実現されています.
それによって目が球面上のスクリーンの前にいると信じることができるので,アプリのキャンバス内に現実的な没入感を与えることができます.
HMDのメジャーな障害としてVRでよく使われる用語です.私たちはアプリキャンバス内で見せ続けることで常に目を欺いていますが,通常よりも眼を酷使することになるため,VRアプリを長時間利用し続けると眼精疲労を招きます.
望ましくない影響を最小化するするために,つぎのようなことが必要です:
一般に,ビジュアルエフェクトが少ないほど,ユーザに与える疲れは軽減されます.
開発者が細心の注意を払っていないと,VRアプリはユーザの気分の悪化を実際に引き起こします.これは,目から受け取る刺激と,体が受け取る(と期待するもの)が違う場合に発生します.
ユーザのモーション酔いの発生を避けるために(あるいは最小化するために),次のことが必要です:
全体的に,体に反射的な行動を引き起こすような信号を目が脳に送るべきではありません.
遅延は,物理的な頭の動きと,HMDスクリーンが更新されて表示が目に届くまでの間にかかる時間のことです.これは現実感の体験を提供する上で最も重要な要素のひとつです.人間は非常に小さな遅延を検出することができ,知覚させないためには遅延を20ミリ秒以下を維持する必要があります(例えば60Hzのモニタは16ミリ秒で応答します).
Oculus Rift ヘッドセットの遅延は20ミリ秒以下ですが,モバイル・デバイスベースの環境ではスマートフォンのCPUパワーやその他の性能に大きく依存します.
Wikipedia の定義に基づくと,フレームレートは,連続した別々の画像(フレームと呼ぶ)をイメージングデバイスが生成する周波数のことです.60fpsは,スムースなユーザ体験のために許容できるフレームレートですが,アプリが動作しているマシン性能や見せたいコンテンツの複雑さによっては,急激に低下する可能性があります.30fps未満では,一般にジッタがあると考えられていて,ユーザーをいらだたせます。
最も困難なタスクの1つは,一定の高フレームレートを維持することで,それを実現するために,可能なかぎり効率的に動作するようにコードを最適化しなければなりません.一定のフレームレートを保てなかったり急激にフレームレートが変化するようなことが無いよう,適切なフレームレートにすることが好ましいです; このために,シーンに配置するオブジェクトを必要最小限にしたり,(WebGLの場合では)ドローコールを削減することが必要となります.
Wikipedia の定義に基づくと,IPDは両目の瞳孔の中心間の距離です.IPDは両眼目視装置の設計においてクリティカルで,両目の瞳孔とも目視装置の射出ひとみ(exit pupils)に位置合わせする必要があります.
WebVRにおいては,IPDは {{domxref("VREyeParameters.offset")}} を使って算出でき、これはIPDのちょうど半分の値になっています.
この値はHMDによって返され,60mmから70mmくらいでしょう; Oculus RiftのようないくつかのHMDでは,ユーザ固有のIPDをセット可能です.通常この値は変化しませんが,シーン全体のスケールを変更するためにそれを実施するかもしれません.例えば,IPDが6000mmにセットされていると,小人の世界を見る巨人のように,ユーザはシーンを見るでしょう.
DoF は空間内の剛体の動きを示します.この用語の値を作る決まった方法はありません — 3DoFという記述は,ヘッドトラッキングで回転のみを検出するセンサの文脈で発見でき,6DoFという記述を,位置と回転を同時に制御できる入力について書かれている文脈で見つけることができます.ジャイロセンサ,加速度センサ,コンパスのような3つのセンサを持つハードウェアで,9DoFという記述がされていることがありますが,3 x 3 DoFの結果として得られるものは,実際には6自由度のトラッキングとなります.
DoFは ユーザの頭の動きのトラッキングに直接関係します.
私たちの実際のFOVは非常に広いですが(約180°),シンボルを感じ取れる範囲(中心60°)やテキストを読める範囲(中心10°)は小さな部分だけだと知っておく必要があります.視線追跡センサを備えていない場合,ユーザの目がフォーカスしている場所をスクリーンの中心であると仮定します.
アプリキャンバス上のどこに映像要素を配置するかを決定する際に,この制限を考慮することが重要となります.フォーカスコーンの端っこが遠すぎる場合は,非常に急速な眼精疲労につながります.MozVR.com に,これに関する興味深い記事が(他のものに混ざってですが)あります — Quick VR Mockups with Illustrator を参照してください.
立体音響は,3次元空間内でどのように音が聞こえるかをシミュレーションするための音響操作エフェクトです.
これは Web Audio API と直接関係していて,キャンバス内にあるオブジェクト上にサウンドを配置したり,ユーザの移動方向や見ているシーンの部分に応じてオーティオを再生することが可能です.