[本開示の実施形態の説明]
最初に、本開示の実施形態の内容を列記して説明する。本開示の一実施形態は、以下のような構成を備える。
(項目1)ヘッドマウントデバイスを備えたシステムにおける情報処理方法であって、
仮想空間を規定する仮想空間データ、及び前記仮想空間における仮想視点を特定するステップと、前記仮想空間データと前記仮想視点に基づいて前記仮想空間における視野画像を生成するステップと、前記ヘッドマウントデバイスの動きに応じて前記視野画像を更新するステップと、前記視野画像の更新において前記ヘッドマウントデバイスの動きと前記視野画像との不整合を生じさせる事象を検出するステップと、前記事象が検出された場合に、前記仮想空間におけるコンテキストに応じた視覚効果を特定するステップと、前記特定された視覚効果に基づいて前記視野画像の視覚的情報量を低減させるステップと、を含む方法。
(項目2)前記事象は、前記視野画像が更新されるフレームレートが所定の閾値を下回る事象である、項目1に記載の方法。
(項目3)前記事象は、前記ヘッドマウントデバイスのトラッキングエラーを示す事象である、項目1に記載の方法。
(項目4)前記トラッキングエラーは、トラッキング信号が取得不能であること、又はトラッキング信号に基づき算出された前記仮想視点が異常であること、のいずれかを含む、項目3に記載の方法。
(項目5)前記視覚効果は、前記事象の種類と前記不整合の程度の少なくとも一方に基づいて決定される、項目1から項目4のいずれか1項に記載の方法。
(項目6)前記視覚効果は、前記不整合の程度が大きいほど前記視野画像の視覚的情報量を大きく低減させるように制御される、項目1から項目5のいずれか1項に記載の方法。
(項目7)前記視覚効果は、前記視野画像の視覚的情報量を断続的に低減させる効果である、項目1から項目6のいずれか1項に記載の方法。
(項目8)前記コンテキストは前記仮想空間においてユーザが照明を含む室内にいることであり、前記視覚効果は前記照明が点滅する、又は前記照明の明るさが減少する効果である、項目1から項目7のいずれか1項に記載の方法。
(項目9)前記コンテキストは前記仮想空間においてユーザが火気が生じ得る場所にいることであり、前記視覚効果は発火又は発煙が生じる効果である、項目1から項目7のいずれか1項に記載の方法。
(項目10)前記コンテキストは前記仮想空間においてユーザの近くに人物が存在することであり、前記視覚効果は前記人物の行為によって前記ユーザの視界が遮られる効果である、項目1から項目7のいずれか1項に記載の方法。
(項目11)前記コンテキストは前記仮想空間においてユーザが眼鏡を装着していることであり、前記視覚効果は前記眼鏡を通して見える視界の明瞭さを低下させる効果である、項目1から項目7のいずれか1項に記載の方法。
(項目12)前記仮想空間における複数のコンテキストと、前記複数のコンテキストのそれぞれに対応する1又は複数の視覚効果とを予め記憶するステップと、前記仮想空間におけるコンテキストを特定するステップと、前記特定されたコンテキストと、前記事象の種類及び前記不整合の程度の少なくとも一方とに基づいて、前記1又は複数の視覚効果から1つの視覚効果を選択するステップと、を含む、項目1から項目11のいずれか1項に記載の方法。
(項目13)プロセッサと、プログラムを格納するメモリであって、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、項目1から項目12のいずれか1項に記載の方法を実行させる、メモリと、を備えるコンピュータ。
(項目14)プロセッサによって実行されると、前記プロセッサに、項目1から項目12のいずれか1項に記載の方法を実行させる、プログラム。
[本開示の実施形態の詳細]
以下、図面を参照しながら本開示の実施形態について具体的に説明する。但し、本開示の実施形態は、必ずしもこのような態様に限定されないことに留意されたい。本開示の実施形態が、特許請求の範囲において規定される範囲に含まれる様々な態様を取り得ることは、当業者にとって明らかであろう。
図1を参照して、ヘッドマウントデバイス(Head−Mounted Device、HMD)システム100の構成について説明する。図1は、HMDシステム100の構成を概略的に示す。一例では、HMDシステム100は、家庭用のシステム又は業務用のシステムとして提供される。HMDは、表示部を備える所謂ヘッドマウントディスプレイであってもよく、表示部を有するスマートフォン等の端末を装着可能なヘッドマウント機器であってもよい。
HMDシステム100は、HMD110と、HMDセンサ120と、コントローラ160と、コンピュータ200とを備える。HMD110は、表示部112と、注視センサ140とを含む。コントローラ160は、モーションセンサ130を含んでもよい。
一例では、コンピュータ200は、インターネット等のネットワーク192に接続可能であってもよく、ネットワーク192に接続されるサーバ150等のコンピュータと通信可能であってもよい。別の態様において、HMD110は、HMDセンサ120の代わりにセンサ114を含んでもよい。
HMD110は、ユーザ190の頭部に装着され、動作中に仮想空間をユーザに提供し得る。より具体的には、HMD110は、右目用の画像及び左目用の画像を表示部112にそれぞれ表示する。ユーザの各目がそれぞれの画像を視認すると、ユーザは、両目の視差に基づき当該画像を3次元の画像として認識し得る。
表示部112は、例えば、非透過型の表示装置として実現される。一例では、表示部112は、ユーザの両目の前方に位置するように、HMD110の本体に配置される。したがって、ユーザは、表示部112に表示される3次元画像を視認すると、仮想空間に没入することができる。ある実施形態において、仮想空間は、例えば、背景、ユーザが操作可能なオブジェクト、ユーザが選択可能なメニューの画像等を含む。ある実施形態において、表示部112は、スマートフォン等の情報表示端末が備える液晶表示部又は有機EL(Electro Luminescence)表示部として実現され得る。
一例では、表示部112は、右目用の画像を表示するためのサブ表示部と、左目用の画像を表示するためのサブ表示部とを含み得る。別の態様において、表示部112は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、表示部112は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
一例では、HMD110は、複数の光源(図示せず)を含む。各光源は、例えば、赤外線を発するLED(Light Emitting Diode)により実現される。HMDセンサ120は、HMD110の動きを検出するためのポジショントラッキング機能を有する。より具体的には、HMDセンサ120は、HMD110が発する複数の赤外線を読み取り、現実空間内におけるHMD110の位置及び傾きを検出してもよい。
ある態様において、HMDセンサ120は、カメラにより実現されてもよい。この場合、HMDセンサ120は、カメラから出力されるHMD110の画像情報を用いて、画像解析処理を実行することにより、HMD110の位置及び傾きを検出することができる。
別の態様において、HMD110は、位置検出器として、HMDセンサ120の代わりに、センサ114を備えてもよい。HMD110は、センサ114を用いて、HMD110自身の位置及び傾きを検出し得る。例えば、センサ114が角速度センサ、地磁気センサ、加速度センサ、ジャイロセンサ等である場合、HMD110は、HMDセンサ120の代わりに、これらの各センサのいずれかを用いて、自身の位置及び傾きを検出し得る。一例として、センサ114が角速度センサである場合、角速度センサは、現実空間におけるHMD110の3軸周りの角速度を経時的に検出する。HMD110は、各角速度に基づいて、HMD110の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD110の傾きを算出する。また、HMD110は、透過型表示装置を備えていても良い。この場合、当該透過型表示装置は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、視野画像は、仮想空間を構成する画像の一部に、現実空間を提示する構成を含んでいてもよい。例えば、HMD110に搭載されたカメラで撮影した画像を視野画像の一部に重畳して表示させてもよいし、当該透過型表示装置の一部の透過率を高く設定することにより、視野画像の一部から現実空間を視認可能にしてもよい。
注視センサ140は、ユーザ190の右目及び左目の視線が向けられる方向(視線)を検出する。当該方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある態様において、注視センサ140は、右目用のセンサ及び左目用のセンサを含むことが好ましい。注視センサ140は、例えば、ユーザ190の右目及び左目に赤外光を照射するとともに、照射光に対する角膜及び虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、ユーザ190の視線を検知することができる。
サーバ150は、コンピュータ200にプログラムを送信し得る。別の態様において、サーバ150は、他のユーザによって使用されるHMDに仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行う場合、各コンピュータ200は、各ユーザの動作に基づく信号を他のコンピュータ200と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。
コントローラ160は、有線又は無線によりコンピュータ200に接続される。コントローラ160は、ユーザ190からコンピュータ200への命令の入力を受け付ける。ある態様において、コントローラ160は、ユーザ190によって把持可能に構成される。別の態様において、コントローラ160は、ユーザ190の身体又は衣類の一部に装着可能に構成される。別の態様において、コントローラ160は、コンピュータ200から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。別の態様において、コントローラ160は、ユーザ190から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
ある態様において、モーションセンサ130は、ユーザの手に取り付けられて、ユーザの手の動きを検出する。例えば、モーションセンサ130は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。モーションセンサ130は、例えば、手袋型のコントローラ160に設けられる。ある実施形態において、現実空間における安全のため、コントローラ160は、手袋型のようにユーザ190の手に装着されることにより容易に飛んで行かないものに装着されるのが望ましい。別の態様において、ユーザ190に装着されないセンサがユーザ190の手の動きを検出してもよい。ユーザ190の身体の様々な部分の位置、向き、動きの方向、動きの距離などを検知する光学式センサが用いられてもよい。例えば、ユーザ190を撮影するカメラの信号が、ユーザ190の動作を表す信号として、コンピュータ200に入力されてもよい。モーションセンサ130とコンピュータ200とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
図2を参照して、本開示の実施形態に係るコンピュータ200について説明する。図2は、本開示の一実施形態によるコンピュータ200の基本的なハードウェア構成の例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ202と、メモリ204と、ストレージ206と、入出力インターフェース208と、通信インターフェース210とを備える。各構成要素は、それぞれ、バス212に接続される。
プロセッサ202は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ204又はストレージ206に格納されているプログラムに含まれる一連の命令を実行する。ある態様において、プロセッサ202は、CPU(Central Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field−Programma
ble Gate Array)等のデバイスとして実現される。
メモリ204は、プログラム及びデータを一時的に保存する。プログラムは、例えば、ストレージ206からロードされる。データは、コンピュータ200に入力されたデータと、プロセッサ202によって生成されたデータとを含む。ある態様において、メモリ204は、RAM(Random Access Memory)等の揮発性メモリとして実現される。
ストレージ206は、プログラム及びデータを永続的に保持する。ストレージ206は、例えば、ROM(Read−Only Memory)、ハードディスク装置、フラッシュメモリ等の不揮発性記憶装置として実現される。ストレージ206に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ200との通信を実現するためのプログラム等を含む。ストレージ206に格納されるデータは、仮想空間を規定するためのデータ及びオブジェクト等を含む。
別の態様において、ストレージ206は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の態様において、コンピュータ200に内蔵されたストレージ206の代わりに、外部の記憶装置に保存されているプログラム及びデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
ある実施形態において、入出力インターフェース208は、HMD110、HMDセンサ120及びモーションセンサ130との間で信号を通信する。ある態様において、入出力インターフェース208は、USB(Universal Serial Bus、USB)、DVI(Digital Visual Interface)、HDMI(登録商標)(High−Definition Multimedia Interface)等の端子を用いて実現される。なお、入出力インターフェース208は上述のものに限られない。
ある実施形態において、入出力インターフェース208は、さらに、コントローラ160と通信し得る。例えば、入出力インターフェース208は、コントローラ160及びモーションセンサ130から出力された信号の入力を受ける。別の態様において、入出力インターフェース208は、プロセッサ202から出力された命令を、コントローラ160に送る。当該命令は、振動、音声出力、発光等をコントローラ160に指示する。コントローラ160は、当該命令を受信すると、その命令に応じて、振動、音声出力、発光等を実行する。
通信インターフェース210は、ネットワーク192に接続され、ネットワーク192に接続されている他のコンピュータ(例えば、サーバ150)と通信する。ある態様において、通信インターフェース210は、例えば、LAN(Local Area Network)等の有線通信インターフェース、あるいは、WiFi(Wireless Fidelity)、Bluetooth(登録商標)、NFC(Near Field Communication)等の無線通信インターフェースとして実現される。なお、通信インターフェース210は上述のものに限られない。
ある態様において、プロセッサ202は、ストレージ206にアクセスし、ストレージ206に格納されている1つ以上のプログラムをメモリ204にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ202は、入出力インターフェース208を介して、仮想空間を提供するための信号をHMD110に送る。HMD110は、その信号に基づいて表示部112に映像を表示する。
図2に示される例では、コンピュータ200は、HMD110の外部に設けられている。しかし、別の態様において、コンピュータ200は、HMD110に内蔵されてもよい。一例として、表示部112を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
また、コンピュータ200は、複数のHMD110に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
ある実施形態において、HMDシステム100では、グローバル座標系が予め設定されている。グローバル座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、ならびに、鉛直方向及び水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。本実施形態では、グローバル座標系は視点座標系の1つである。そこで、グローバル座標系における水平方向、鉛直方向(上下方向)、及び前後方向は、それぞれ、x軸、y軸、z軸として規定される。より具体的には、グローバル座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
ある態様において、HMDセンサ120は、赤外線センサを含む。赤外線センサが、HMD110の各光源から発せられた赤外線をそれぞれ検出すると、HMD110の存在を検出する。HMDセンサ120は、さらに、各点の値(グローバル座標系における各座標値)に基づいて、HMD110を装着したユーザ190の動きに応じた、現実空間内におけるHMD110の位置及び傾きを検出する。より詳しくは、HMDセンサ120は、経時的に検出された各値を用いて、HMD110の位置及び傾きの時間的変化を検出できる。
グローバル座標系は現実空間の座標系と平行である。したがって、HMDセンサ120によって検出されたHMD110の各傾きは、グローバル座標系におけるHMD110の3軸周りの各傾きに相当する。HMDセンサ120は、グローバル座標系におけるHMD110の傾きに基づき、uvw視野座標系をHMD110に設定する。HMD110に設定されるuvw視野座標系は、HMD110を装着したユーザ190が仮想空間において物体を見る際の視点座標系に対応する。
図3を参照して、uvw視野座標系について説明する。図3は、ある実施形態に従うHMD110に設定されるuvw視野座標系を概念的に表す図である。HMDセンサ120は、HMD110の起動時に、グローバル座標系におけるHMD110の位置及び傾きを検出する。プロセッサ202は、検出された値に基づいて、uvw視野座標系をHMD110に設定する。
図3に示されるように、HMD110は、HMD110を装着したユーザの頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD110は、グローバル座標系を規定する水平方向、鉛直方向、及び前後方向(x軸、y軸、z軸)を、グローバル座標系内においてHMD110の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、及びロール方向(w軸)として設定する。
ある態様において、HMD110を装着したユーザ190が直立し、かつ、正面を視認している場合、プロセッサ202は、グローバル座標系に平行なuvw視野座標系をHMD110に設定する。この場合、グローバル座標系における水平方向(x軸)、鉛直方向(y軸)、及び前後方向(z軸)は、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)及びロール方向(w軸)に一致する。
uvw視野座標系がHMD110に設定された後、HMDセンサ120は、HMD110の動きに基づいて、設定されたuvw視野座標系におけるHMD110の傾き(傾きの変化量)を検出できる。この場合、HMDセンサ120は、HMD110の傾きとして、uvw視野座標系におけるHMD110のピッチ角(θu)、ヨー角(θv)及びロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ方向周りのHMD110の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー方向周りのHMD110の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール方向周りのHMD110の傾き角度を表す。
HMDセンサ120は、検出されたHMD110の傾き角度に基づいて、HMD110が動いた後のHMD110におけるuvw視野座標系を、HMD110に設定する。HMD110と、HMD110のuvw視野座標系との関係は、HMD110の位置及び傾きに関わらず、常に一定である。HMD110の位置及び傾きが変わると、当該位置及び傾きの変化に連動して、グローバル座標系におけるHMD110のuvw視野座標系の位置及び傾きが変化する。
ある態様において、HMDセンサ120は、赤外線センサからの出力に基づいて取得される赤外線の光強度及び複数の点間の相対的な位置関係(例えば、各点間の距離等)に基づいて、HMD110の現実空間内における位置を、HMDセンサ120に対する相対位置として特定してもよい。また、プロセッサ202は、特定された相対位置に基づいて、現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の原点を決定してもよい。
図4を参照して、仮想空間についてさらに説明する。図4は、ある実施形態に従う仮想空間400を表現する一態様を概念的に表す図である。仮想空間400は、中心406の360度方向の全体を覆う全天球状の構造を有する。図4では、説明を複雑にしないために、仮想空間400のうちの上半分の天球が例示されている。仮想空間400では各メッシュが規定される。各メッシュの位置は、仮想空間400に規定されるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間400に展開可能なコンテンツ(静止画、動画等)を構成する各部分画像を、仮想空間400において対応する各メッシュにそれぞれ対応付けて、ユーザによって視認可能な仮想空間画像が展開される仮想空間400をユーザに提供する。
ある態様において、仮想空間400では、中心406を原点とするxyz座標系が規定される。xyz座標系は、例えば、グローバル座標系に平行である。xyz座標系は視点座標系の一種であるため、xyz座標系における水平方向、鉛直方向(上下方向)及び前後方向は、それぞれx軸、y軸及びz軸として規定される。したがって、xyz座標系のx軸(水平方向)がグローバル座標系のx軸と平行であり、xyz座標系のy軸(鉛直方向)がグローバル座標系のy軸と平行であり、xyz座標系のz軸(前後方向)がグローバル座標系のz軸と平行である。
HMD110の起動時、すなわちHMD110の初期状態において、仮想カメラ404が、仮想空間400の中心406に配置される。ある態様において、プロセッサ202は、仮想カメラ404が撮影する画像をHMD110の表示部112に表示する。仮想カメラ404は、現実空間におけるHMD110の動きに連動して、仮想空間400を同様に移動する。これにより、現実空間におけるHMD110の位置及び向きの変化が、仮想空間400において同様に再現され得る。
HMD110の場合と同様に、仮想カメラ404には、uvw視野座標系が規定される。仮想空間400における仮想カメラ404のuvw視野座標系は、現実空間(グローバル座標系)におけるHMD110のuvw視野座標系に連動するように規定される。したがって、HMD110の傾きが変化すると、それに応じて、仮想カメラ404の傾きも変化する。また、仮想カメラ404は、HMD110を装着したユーザの現実空間における移動に連動して、仮想空間400において移動することもできる。
コンピュータ200のプロセッサ202は、仮想カメラ404の配置位置と、基準視線408とに基づいて、仮想空間400における視認領域410を規定する。視認領域410は、仮想空間400のうち、HMD110を装着したユーザが視認する領域に対応する。
注視センサ140によって検出されるユーザ190の視線は、ユーザ190が物体を視認する際の視点座標系における方向である。HMD110のuvw視野座標系は、ユーザ190が表示部112を視認する際の視点座標系に等しい。また、仮想カメラ404のuvw視野座標系は、HMD110のuvw視野座標系に連動している。したがって、ある態様に従うHMDシステム100は、注視センサ140によって検出されたユーザ190の視線を、仮想カメラ404のuvw視野座標系におけるユーザの視線とみなすことができる。
図5を参照して、ユーザの視線の決定について説明する。図5は、ある実施形態に従うHMD110を装着するユーザ190の頭部を上から表した図である。
ある態様において、注視センサ140は、ユーザ190の右目及び左目の各視線を検出する。ある態様において、ユーザ190が近くを見ている場合、注視センサ140は、視線R1及びL1を検出する。別の態様において、ユーザ190が遠くを見ている場合、注視センサ140は、視線R2及びL2を検出する。この場合、ロール方向wに対して視線R2及びL2がなす角度は、ロール方向wに対して視線R1及びL1がなす角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
コンピュータ200が、視線の検出結果として、視線R1及びL1の検出値を注視センサ140から受信した場合には、その検出値に基づいて、視線R1及びL1の交点である注視点N1を特定する。一方、コンピュータ200は、視線R2及びL2の検出値を注視センサ140から受信した場合には、視線R2及びL2の交点を注視点として特定する。コンピュータ200は、特定した注視点N1の位置に基づき、ユーザ190の視線N0を特定する。コンピュータ200は、例えば、ユーザ190の右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の延びる方向を、視線N0として検出する。視線N0は、ユーザ190が両目により実際に視線を向けている方向である。また、視線N0は、視認領域410に対してユーザ190が実際に視線を向けている方向に相当する。
別の態様において、HMDシステム100は、HMDシステム100を構成するいずれかの部分に、マイク及びスピーカを備えてもよい。ユーザは、マイクに発話することにより、仮想空間400に対して、音声による指示を与えることができる。
また、別の態様において、HMDシステム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、HMDシステム100は、仮想空間400においてテレビ番組を表示することができる。
さらに別の態様において、HMDシステム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
図6及び図7を参照して、視認領域410について説明する。図6は、仮想空間400において視認領域410をx方向から見たyz断面を表す図である。図7は、仮想空間400において視認領域410をy方向から見たxz断面を表す図である。
図6に示されるように、yz断面における視認領域410は、領域602を含む。領域602は、仮想カメラ404の配置位置と基準視線408と仮想空間400のyz断面とによって定義される。プロセッサ202は、仮想空間おける基準視線408を中心として極角αを含む範囲を、領域602として規定する。
図7に示されるように、xz断面における視認領域410は、領域702を含む。領域702は、仮想カメラ404の配置位置と基準視線408と仮想空間400のxz断面とによって定義される。プロセッサ202は、仮想空間400における基準視線408を中心とした方位角βを含む範囲を、領域702として規定する。極角α及びβは、仮想カメラ404の配置位置と仮想カメラ404の向きとに応じて定まる。
ある態様において、HMDシステム100は、コンピュータ200からの信号に基づいて、視野画像を表示部112に表示させることにより、仮想空間における視界をユーザ190に提供する。視野画像は、仮想空間画像402のうち視認領域410に重畳する部分に相当する。ユーザ190が、頭に装着したHMD110を動かすと、その動きに連動して仮想カメラ404も動く。その結果、仮想空間400における視認領域410の位置が変化する。これにより、表示部112に表示される視野画像は、仮想空間画像402のうち、仮想空間400においてユーザが向いた方向の視認領域410に重畳する画像に更新される。ユーザは、仮想空間400における所望の方向を視認することができる。
このように、仮想カメラ404の向き(傾き)は仮想空間400におけるユーザの視線(基準視線408)に相当し、仮想カメラ404が配置される位置は、仮想空間400におけるユーザの視点に相当する。したがって、仮想カメラ404を移動(配置位置を変える動作、向きを変える動作を含む)させることにより、表示部112に表示される画像が更新され、ユーザ190の視界(視点、視線を含む)が移動される。
ユーザ190は、HMD110を装着している間、現実世界を視認することなく、仮想空間400に展開される仮想空間画像402のみを視認できる。そのため、HMDシステム100は、仮想空間400への高い没入感覚をユーザに与えることができる。
ある態様において、プロセッサ202は、HMD110を装着したユーザ190の現実空間における移動に連動して、仮想空間400において仮想カメラ404を移動し得る。この場合、プロセッサ202は、仮想空間400における仮想カメラ404の位置及び向きに基づいて、HMD110の表示部112に投影される画像領域(すなわち、仮想空間400における視認領域410)を特定する。
ある実施形態に従うと、仮想カメラ404は、2つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含んでもよい。また、ユーザ190が3次元の仮想空間400を認識できるように、適切な視差が、2つの仮想カメラに設定されてもよい。
図8を参照して、コントローラ160の一例について説明する。図8は、ある実施形態に従うコントローラ160の概略構成を表す図である。
ある態様において、コントローラ160は、右コントローラと左コントローラとを含み得る。説明を簡単にするために、図8には右コントローラ800のみが示される。右コントローラ800は、ユーザ190の右手で操作される。左コントローラは、ユーザ190の左手で操作される。ある態様において、右コントローラ800と左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ190は、右コントローラ800を把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の態様において、コントローラ160は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ800について説明する。
右コントローラ800は、グリップ802と、フレーム804と、天面806とを備える。グリップ802は、ユーザ190の右手によって把持されるように構成されている。例えば、グリップ802は、ユーザ190の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
グリップ802は、ボタン808及び810と、モーションセンサ130とを含む。ボタン808は、グリップ802の側面に配置され、右手の中指による操作を受け付ける。ボタン810は、グリップ802の前面に配置され、右手の人差し指による操作を受け付ける。ある態様において、ボタン808、810は、トリガー式のボタンとして構成される。モーションセンサ130は、グリップ802の筐体に内蔵されている。なお、ユーザ190の動作がカメラその他の装置によってユーザ190の周りから検出可能である場合には、グリップ802は、モーションセンサ130を備えなくてもよい。
フレーム804は、その円周方向に沿って配置された複数の赤外線LED812を含む。赤外線LED812は、コントローラ160を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED812から発せられた赤外線は、右コントローラ800と左コントローラ(図示しない)との各位置や姿勢(傾き、向き)を検出するために使用され得る。図8に示される例では、2列に配置された赤外線LED812が示されているが、配列の数は図8に示されるものに限られない。1列あるいは3列以上の配列が使用されてもよい。
天面806は、ボタン814及び816と、アナログスティック818とを備える。ボタン814及び816は、プッシュ式ボタンとして構成される。ボタン814及び816は、ユーザ190の右手の親指による操作を受け付ける。アナログスティック818は、ある態様において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間400に配置されるオブジェクトを移動するための操作を含む。
ある態様において、右コントローラ800及び左コントローラは、赤外線LED812等の部材を駆動するための電池を含む。電池は、1次電池及び2次電池のいずれであってもよく、その形状は、ボタン型、乾電池型等任意であり得る。別の態様において、右コントローラ800と左コントローラは、例えば、コンピュータ200のUSBインターフェースに接続され得る。この場合、右コントローラ800及び左コントローラは、USBインターフェースを介して電力を供給され得る。
図9は、本開示の一実施形態による、HMDシステム100における仮想空間400の表示処理等を実現するための、コンピュータ200の機能を示すブロック図である。コンピュータ200は、主にHMDセンサ120、モーションセンサ130、注視センサ140、コントローラ160からの入力に基づいて、表示部112への画像出力を制御する。
コンピュータ200は、プロセッサ202と、メモリ204と、通信制御部205とを備える。プロセッサ202は、仮想空間特定部902と、HMD動作検知部903と、視線検知部904と、基準視線決定部906と、視界領域決定部908と、仮想視点特定部910と、視野画像生成部912と、不整合事象判定部914と、視野画像出力部926とを含み得る。メモリ204は様々な情報を格納するように構成され得る。一例では、メモリ204は、仮想空間データ928、オブジェクトデータ930、アプリケーションデータ932、及び視覚効果選択ルール934を含んでもよい。メモリ204はまた、HMDセンサ120、モーションセンサ130、注視センサ140、コントローラ160等からの入力に対応した出力情報を、HMD110に関連付けられる表示部112へ提供するための演算に必要な各種データを含んでもよい。オブジェクトデータ930は、仮想空間内に配置される操作オブジェクト、仮想オブジェクト等に関するデータを含んでもよい。表示部112は、HMD110に内蔵されてもよいし、HMD110に取り付け可能な別のデバイス(例えば、スマートフォン)のディスプレイであってもよい。
図9においてプロセッサ202内に含まれるコンポーネントは、プロセッサ202が実行する機能を具体的なモジュールとして表現する1つの例にすぎない。複数のコンポーネントの機能が単一のコンポーネントによって実現されてもよい。プロセッサ202がすべてのコンポーネントの機能を実行するように構成されてもよい。
図10は、ユーザが没入する仮想空間の画像を表示部112に表示するための一般的な処理のフロー図である。
図9及び図10を参照して、仮想空間の画像を提供するためのHMDシステム100の一般的な処理を説明する。仮想空間400は、HMDセンサ120、注視センサ140及びコンピュータ200等の相互作用によって提供され得る。
処理はステップ1002において開始する。一例として、アプリケーションデータに含まれるゲームアプリケーションがコンピュータ200によって実行されてもよい。ステップ1004において、プロセッサ202(仮想空間特定部902)は、仮想空間データ928を参照するなどして、ユーザが没入する仮想空間400を構成する天球状の仮想空間画像402を生成する。HMDセンサ120によってHMD110の位置や傾きが検知される。HMDセンサ120によって検知された情報はコンピュータ200に送信される。ステップ1006において、HMD動作検知部903は、HMD110の位置情報や傾き情報を取得する。ステップ1008において、取得された位置情報及び傾き情報に基づいて視界方向が決定される。
注視センサ140がユーザの左右の目の眼球の動きを検出すると、当該情報がコンピュータ200に送信される。ステップ1010において、視線検知部904は、右目及び左目の視線が向けられる方向を特定し、視線方向N0を決定する。ステップ1012において、基準視線決定部906は、HMD110の傾きにより決定された視界方向又はユーザの視線方向N0を基準視線408として決定する。基準視線408はまた、HMD110の位置や傾きに追随する仮想カメラ404の位置及び傾きに基づいて決定されてもよい。
ステップ1014において、視界領域決定部908は、仮想空間400における仮想カメラ404の視界領域410を決定する。図4に示すように、視界領域410は、仮想空間画像402のうちユーザの視界を構成する部分である。視界領域410は基準視線408に基づいて決定される。視界領域410をx方向から見たyz断面図及び視界領域410をy方向から見たxz断面図は、既に説明した図6及び図7にそれぞれ示されている。
ステップ1016において、視野画像生成部912は、視界領域410に基づいて視野画像を生成する。視野画像は、右目用と左目用の2つの2次元画像を含む。これらの2次元画像が表示部112に重畳される(より具体的には、右目用画像が右目用表示部に出力され、左目用画像が左目用表示部に出力される)ことにより、3次元画像としての仮想空間400がユーザに提供される。ステップ1018において、視野画像出力部926は、視野画像に関する情報を表示部112に出力する。表示部112は、受信した視野画像の情報に基づいて、当該視野画像を表示する。処理はステップ1020において終了する。
図11は、本開示の一実施形態による方法1100のフローチャートである。本開示の一実施形態において、コンピュータプログラムが、図11に示される各ステップをプロセッサ202(又はコンピュータ200)に実行させてもよい。また、本開示の別の実施形態は、方法1100を実行するプロセッサ202(又はコンピュータ200)として実施することができる。
図11において、方法1100はステップ1102において開始する。プロセッサ202は、メモリ204に格納されているアプリケーションデータ932に含まれるアプリケーションプログラム等のコンピュータプログラムを読み出して実行する。
処理はステップ1104に進み、仮想空間特定部902は、仮想空間データ928及びオブジェクトデータ930等に基づいて、実行されたアプリケーション(例えばゲーム)のための仮想空間データを特定する。仮想空間データは、例えば図4に示されるような仮想空間400を規定するデータである。仮想空間400は、少なくとも1つの仮想オブジェクトを含む。仮想オブジェクトは、例えば、ユーザがゲーム内で使用する各種のアイテム、仮想空間400内に存在する椅子、棚、ランプなどの、様々なオブジェクトを含み得る。
処理はステップ1106に進み、仮想視点特定部910は、仮想空間400における仮想視点を特定する。例えば、図4を参照すると、仮想視点特定部910は、仮想空間400内における仮想カメラ404の現在位置を、仮想視点として特定する。
処理はステップ1108に進み、視野画像生成部912は、仮想空間データと、仮想視点と、HMDの向きとに基づいて、視野画像を生成する。視野画像は、例えば、図10に関連して既に説明された処理によって生成される。生成された視野画像は、視野画像出力部926によって、HMD110に関連付けられる表示部112に出力され、表示部112によって表示される。HMD110を装着したユーザ190は、表示部112に表示された当該視野画像を見ることができる。
処理はステップ1110に進み、視野画像生成部912は、HMD110の動きに応じて視野画像を更新する。例えば、HMD110を装着したユーザ190が部屋の中を歩き回ると、そのようなユーザ190の位置(HMD110の位置)の移動が、HMDセンサ120によって検出される。仮想視点特定部910は、HMDセンサ120によって検出されたHMD110の新たな位置に基づいて仮想視点(仮想空間400における仮想カメラ404の位置)を更新し、視野画像生成部912は、当該更新された仮想視点に基づいて、新たな視野画像を生成する。これにより、HMD110の位置の移動に応じた視野画像の更新が行われる。また例えば、HMD110を装着したユーザ190が頭の向きや傾きを変化させると、ユーザ190のそのような動作によるHMD110の向きの変化が、HMDセンサ120によって検出される。視野画像生成部912は、HMDセンサ120によって検出された変化後のHMD110の向きに基づいて、新たな視野画像を生成する。これにより、HMD110の向きの変化に応じて、仮想カメラ404からの視野の方向が変化するように視野画像の更新が行われる。視野画像生成部912は、例えば、HMD110の位置の移動とHMD110の向きの変化の両方に基づいて、視野画像を更新してもよいし(この場合、ユーザは仮想空間400内を歩き回ることができるとともに、仮想空間400内において自分の周囲を見回すことができる)、あるいは、HMD110の向きの変化のみに基づいて、視野画像を更新するのであってもよい(この場合、ユーザは仮想空間400内を歩き回ることができないが、仮想空間400内において自分の周囲を見回すことはできる)。
処理はステップ1112に進み、不整合事象判定部914は、HMD110の動きと上記ステップ1110で更新された視野画像との不整合を生じさせる事象(以下、「不整合事象」と称する)の存否を判定する。不整合事象に起因して視野画像がHMD110の動きと整合しなくなると、ユーザにVR酔いによる不快感がもたらされる可能性がある。このようなVR酔いを防止するために、不整合事象が検出された場合は、処理はステップ1114に進む。一方、不整合事象が検出されない場合は、処理はステップ1118に進む。
不整合事象の一例は、視野画像生成部912によって更新される視野画像のフレームレートが所定の閾値を下回ることである。このような事象は、「フレーム落ち」と呼ばれることもある。フレーム落ちは、例えば、プロセッサ202の有する処理能力に比べて、視野画像の生成に要求される画像処理の帯域幅が過大となるような状況で生じ得る。HMDシステム100においてフレーム落ちが発生すると、HMD110の実際の動きとユーザ190に提示される視野画像との間に不整合が発生して、ユーザがVR酔いを感じる原因となり得る。所定の閾値は、ユーザがVR酔いを感じることなく滑らかな視野画像を認識できるような所定のフレームレートの値(例えば90fps)に設定される。この例において、例えば、不整合事象判定部914は、視野画像生成部912から出力される視野画像のフレームレートを監視し(例えば所定の時間間隔でフレームレートを計測し)、当該フレームレートを所定の閾値と比較して、フレームレートが所定の閾値を下回る場合に、不整合事象(フレーム落ち)が発生したことを検出する。
不整合事象の別の例は、HMDセンサ120がHMD110の動きを検出するポジショントラッキングにエラー又は異常が生じることである。HMD110に対するポジショントラッキングに問題が発生すると、HMDシステム100はHMD110の位置を追尾することができなくなり、仮想視点特定部910がHMD110の位置に応じた正しい仮想視点(仮想カメラ404の位置)を特定することができなくなる。このような事象は、「トラッキング外れ」と呼ばれることもある。例えば、トラッキング外れが発生する状況として、HMD110がHMDセンサ120のトラッキング可能エリアの外に出てしまう、又はHMD110がHMD110とHMDセンサ120との間に存在する障害物の陰に隠れてしまう等の理由により、HMDセンサ120がHMD110からのトラッキング信号を全く取得できなくなった場合や、トラッキング信号自体は取得できるものの、混線等の影響により、仮想視点特定部910において当該トラッキング信号から異常な仮想視点が算出されてしまう場合などが想定され得る。HMDシステム100においてこのようなトラッキング外れが発生すると、仮想視点(仮想カメラ404の位置)が実際のHMD110の位置を正しく反映しなくなり両者にずれが生じる結果、上記のフレーム落ちの場合と同様に、HMD110の動きとユーザ190に提示される視野画像との間に不整合が発生し、VR酔いの原因となり得る。トラッキング外れの不整合事象を検出するための具体的な処理については、図16を参照して後述する。
上記のようなフレーム落ち又はトラッキング外れの不整合事象が検出されると、ステップ1114において、視野画像生成部912は、仮想空間400内でユーザが置かれているコンテキストを識別し、当該識別されたコンテキストに応じて、視野画像に付与すべき視覚効果を決定する。次いで、処理はステップ1116に進み、視野画像生成部912は、視野画像に上記決定した視覚効果を付与する。視覚効果が付与された視野画像は、HMD110の表示部112に表示される。
HMD110の表示部112に表示された仮想空間400の視野画像に実際のHMD110の動きとの不整合が生じていることをユーザに認識させにくくするために、視野画像の視覚的情報量を低減させる視覚効果を視野画像に付与することが有効である。視覚的情報量の低減とは、画像の少なくとも一部のディテールが失われるように(画像の少なくとも一部のディテールをユーザが視認できなくなるように)当該画像の視覚的な表現を変更することを意味する。このような視覚効果を、仮想空間400内のコンテキストに応じたものとすることによって、ユーザのVR体験(仮想空間への没入感)を損なうことなくVR酔いを低減又は防止することができる。以下、いくつかの具体例を参照して、コンテキストに応じた視覚効果についてより詳しく説明する。
図12は、コンテキストに応じた視覚効果の一例を説明するための例示的な視野画像1200A及び1200Bを示す。視野画像1200A及び1200Bは、照明器具1220を含む部屋1210の情景を表している。はじめに、不整合事象が検出されていない時には、視野画像1200AがHMD110の表示部112に表示される。視野画像1200Aにおいては、照明器具1220は正常に点灯している。視野画像1200Aが表示されている状態において不整合事象が検出されると、HMD110の表示部112には、視野画像1200Aに代えて視野画像1200Bが表示される。即ち、HMD110に表示されていた視野画像1200Aは、視野画像1200Bに更新される。視野画像1200Bにおいては、照明器具1220は、例えば点滅、減光(即ち明るさの減少)、又は消灯するように表現され、これにより、部屋1210の中のディテールに対する視認性が低下している。即ち、視野画像1200Bの視覚的情報量は、視野画像1200Aの視覚的情報量よりも少なくなっている。そのため、視野画像1200Bを見たユーザが、HMD110の動きと当該視野画像1200Bとの不整合に気が付く可能性は低い。したがって、不整合事象が検出された場合に視野画像1200Bを表示することで、VR酔いを低減又は防止することができる。
図12の例において、仮想空間400内でユーザが置かれているコンテキストは、ユーザが仮想空間400内の照明器具1220を含んだ部屋1210にいるということである。そのようなコンテキストの下では、照明器具1220を点滅、減光、又は消灯させるといったような視野画像1200Bにおける視覚効果は、ユーザにとって特段の違和感を生ずる原因とはならないことが期待される。即ち、ユーザは、一般に照明器具というものは点滅等の動作をし得るものであると理解しているはずであるから、仮想空間400内の部屋にいるというコンテキストにおいてその部屋の照明器具1220が点滅、減光、又は消灯した時には、それを現在のコンテキストから考えれば十分起こり得る自然な現象として認識するであろう。したがって、不整合事象が検出された場合にこのようなユーザのコンテキストに適合した視覚効果を有する視野画像1200Bを表示することによって、仮想空間400への高い没入感の維持とVR酔いの低減又は防止とを同時に実現することができる。
なお、視野画像1200Bにおいて、照明器具1220の点滅や減光の度合い、又は消灯に至るまでの時間は、不整合事象の内容又は不整合の程度に応じて異ならせることとしてもよい。例えば、視野画像のフレームレートが所定の閾値を超えて低下していくにつれて(即ち不整合の程度が大きくなるにつれて)、点滅におけるオフ時間の長さをより長くしたり、明るさの減少量をより大きくしたり、あるいは消灯に至るまでの時間をより短くしたりする(即ち視野画像1200Bの視覚的情報量をより大きく低減させる)こととしてもよい。
図13は、コンテキストに応じた視覚効果の別の例を説明するための例示的な視野画像1300A及び1300Bを示す。視野画像1300A及び1300Bは、ユーザが眼鏡1320を通して部屋1310を見た情景を表している。はじめに、不整合事象が検出されていない時には、視野画像1300AがHMD110の表示部112に表示される。視野画像1300Aにおいては、眼鏡1320はクリアな視界を提供している。視野画像1300Aが表示されている状態において不整合事象が検出されると、HMD110の表示部112には、視野画像1300Aに代えて視野画像1300Bが表示される。即ち、HMD110に表示されていた視野画像1300Aは、視野画像1300Bに更新される。視野画像1300Bにおいては、眼鏡1320は、例えばレンズに曇りが発生して視界が不明瞭となるように表現され、これにより、部屋1310の中のディテールに対する視認性が低下している。即ち、視野画像1300Bの視覚的情報量は、視野画像1300Aの視覚的情報量よりも少なくなっている。そのため、視野画像1300Bを見たユーザが、HMD110の動きと当該視野画像1300Bとの不整合に気が付く可能性は低い。したがって、不整合事象が検出された場合に視野画像1300Bを表示することで、VR酔いを低減又は防止することができる。
図13の例において、仮想空間400内でユーザが置かれているコンテキストは、ユーザが仮想空間400内において眼鏡1320を装着しているということである。そのようなコンテキストの下では、眼鏡1320に曇りを生じさせて視界を不明瞭にするという視野画像1300Bにおける視覚効果は、ユーザにとって特段の違和感を生ずる原因とはならず、ユーザは、眼鏡1320をかけているというコンテキストからすればその眼鏡1320に生じた曇りを自然な予期し得る現象として認識するであろう。したがって、不整合事象が検出された場合にこのようなユーザのコンテキストに適合した視覚効果を有する視野画像1300Bを表示することによって、仮想空間400への高い没入感の維持とVR酔いの低減又は防止とを同時に実現することができる。
なお、視野画像1300Bにおいて、眼鏡1320の曇り方の度合い(眼鏡1320を通して見える視界の明瞭度)は、図12の例と同様に不整合事象の内容又は不整合の程度に応じて異ならせることとしてもよい。
図14は、コンテキストに応じた視覚効果の更に別の例を説明するための例示的な視野画像1400A及び1400Bを示す。視野画像1400A及び1400Bは、加熱調理器1420を含むキッチン1410の情景を表している。はじめに、不整合事象が検出されていない時には、視野画像1400AがHMD110の表示部112に表示される。視野画像1400Aにおいては、加熱調理器1420に異常は生じていない。視野画像1400Aが表示されている状態において不整合事象が検出されると、HMD110の表示部112には、視野画像1400Aに代えて視野画像1400Bが表示される。即ち、HMD110に表示されていた視野画像1400Aは、視野画像1400Bに更新される。視野画像1400Bにおいては、例えば、加熱調理器から発生した煙1430がキッチン1410に充満している情景が表現され、これにより、キッチン1410内のディテールに対する視認性が低下している。即ち、視野画像1400Bの視覚的情報量は、視野画像1400Aの視覚的情報量よりも少なくなっている。そのため、視野画像1400Bを見たユーザが、HMD110の動きと当該視野画像1400Bとの不整合に気が付く可能性は低い。したがって、不整合事象が検出された場合に視野画像1400Bを表示することで、VR酔いを低減又は防止することができる。
図14の例において、仮想空間400内でユーザが置かれているコンテキストは、ユーザが仮想空間400内の加熱調理器1420を含んだキッチン1410(即ち火気の生じ得る場所)にいるということである。そのようなコンテキストの下では、加熱調理器1420からの煙1430をキッチン1410に充満させるというような視野画像1400Bにおける視覚効果は、ユーザにとって特段の違和感を生ずる原因とはならず、ユーザは、キッチン1410にいるというコンテキストからすれば発煙や発火は十分起こり得る現象であると認識するであろう。したがって、不整合事象が検出された場合にこのようなユーザのコンテキストに適合した視覚効果を有する視野画像1400Bを表示することによって、仮想空間400への高い没入感の維持とVR酔いの低減又は防止とを同時に実現することができる。
なお、視野画像1400Bにおいて、発生させる煙1430の濃さ(キッチン1410内の視認性)は、図12及び図13の例と同様に不整合事象の内容又は不整合の程度に応じて異ならせることとしてもよい。
図15は、コンテキストに応じた視覚効果の更に別の例を説明するための例示的な視野画像1500A及び1500Bを示す。視野画像1500A及び1500Bは、ユーザの近くに存在するゲームキャラクタ1520を当該ユーザの視点から見た情景を表している。はじめに、不整合事象が検出されていない時には、視野画像1500AがHMD110の表示部112に表示される。視野画像1500Aにおいては、ユーザにはゲームキャラクタ1520が見えている。視野画像1500Aが表示されている状態において不整合事象が検出されると、HMD110の表示部112には、視野画像1500Aに代えて視野画像1500Bが表示される。即ち、HMD110に表示されていた視野画像1500Aは、視野画像1500Bに更新される。視野画像1500Bにおいては、ユーザの視界は、例えば、視野画像1500Aではユーザに見えていなかった第2のゲームキャラクタの手1530によって目隠しされた情景として表現され、これにより、ユーザの本来の視界内のディテールに対する視認性が低下している。即ち、視野画像1500Bの視覚的情報量は、視野画像1500Aの視覚的情報量よりも少なくなっている。そのため、視野画像1500Bを見たユーザが、HMD110の動きと当該視野画像1500Bとの不整合に気が付く可能性は低い。したがって、不整合事象が検出された場合に視野画像1500Bを表示することで、VR酔いを低減又は防止することができる。
図15の例において、仮想空間400内でユーザが置かれているコンテキストは、ユーザの近くに第2のゲームキャラクタが存在する(実際に存在する、又は存在することを想定し得る)ということである。そのようなコンテキストの下では、ユーザが当該第2のゲームキャラクタによって目隠しされるという視野画像1500Bにおける視覚効果は、ユーザにとって特段の違和感を生ずる原因とはならず、ユーザは、目隠しされることを予期し得るものとして認識するであろう。したがって、不整合事象が検出された場合にこのようなユーザのコンテキストに適合した視覚効果を有する視野画像1500Bを表示することによって、仮想空間400への高い没入感の維持とVR酔いの低減又は防止とを同時に実現することができる。
図12から図15は、コンテキストに応じた視覚効果を含む視野画像の単なる例示にすぎず、限定的なものであると解されてはならない。したがって、本開示の範囲は、視野画像の視覚的情報量を低減させ、それによってVR酔いを低減又は防止することが可能であるとともに、仮想空間におけるコンテキストにも適合している、任意の他の適切な視覚効果までも包含すると理解すべきである。
上記ステップ1114において仮想空間内のコンテキストに応じた視覚効果を決定するために、例えば、メモリ204は、仮想空間400内でユーザが置かれ得る複数のコンテキスト(例えば、ユーザが仮想空間内の照明器具を含んだ部屋にいる、ユーザが仮想空間内で眼鏡を装着している、ユーザが仮想空間内のキッチンにいる、仮想空間内でユーザの近くに第2のゲームキャラクタが存在する、等)と、各コンテキストに対する1又は複数の視覚効果候補(照明器具を点滅、減光、又は消灯する、眼鏡を曇らせる、煙をキッチンに充満させる、ユーザが第2のゲームキャラクタに目隠しされる、等)との関連付けを予め規定した視覚効果選択ルール934を保持する。視野画像生成部912は、メモリ204の視覚効果選択ルール934を参照して、仮想空間400内でユーザが現在置かれているコンテキストに対応付けられた視覚効果候補を、視野画像に付与すべき視覚効果として選択する。視覚効果選択ルール934においてある1つのコンテキストに複数の視覚効果候補が関連付けられている場合、視野画像生成部912は、仮想空間400内の様々な状態(例えばユーザの位置や向き、朝昼夜等の時間帯など)に基づいて、又はランダムで、当該複数の視覚効果候補から特定の1つの視覚効果を選択するのであってもよい。あるいは、視野画像生成部912は、不整合事象の種類や、不整合の程度に基づいて、複数の視覚効果候補から特定の1つの視覚効果を選択することとしてもよい。
例えば、ユーザが仮想空間400内の照明器具1220を含んだ部屋1210にいる図12の例において、視野画像生成部912は、不整合事象がフレーム落ちである場合には、照明器具1220を点滅させる視覚効果を選択し、不整合事象がトラッキング外れである場合には、照明器具1220を減光させる視覚効果を選択してもよい。フレーム落ちが生じた時はカクカクとした映像が表示されるので、照明器具1220を点滅させてユーザの視界を断続的に失わせることで、VR酔いをより一層自然な形で低減することができる。また例えば、ユーザが、仮想空間400内の照明器具を含んだ部屋にいるとともに眼鏡を装着しているコンテキストにおいて、視野画像生成部912は、不整合事象がフレーム落ちである場合には、照明器具を点滅、減光、又は消灯させる視覚効果を選択し、不整合事象がトラッキング外れである場合には、眼鏡を曇らせる視覚効果を選択するのであってもよい。トラッキング外れが生じると仮想視点(仮想カメラ404の位置)が大きく移動してしまうことがあるので、(照明器具の点滅により視界を断続的に失わせるのではなく)眼鏡を曇らせることによって連続的に視界を遮断することで、より効果的にVR酔いを低減又は防止することができる。
ステップ1112の判定において不整合事象が検出されなかった場合には、処理はステップ1112からステップ1118に進み、視野画像生成部912は、視野画像への視覚効果の付与をキャンセルする。HMD110の表示部112には、視覚効果のない通常の視野画像が表示される。例えば、フレーム落ちとトラッキング外れの何れによる不整合事象もいまだ発生しておらず、したがってHMDシステム100の正常動作が維持されている間は、視覚効果を付与されていない視野画像がそのままHMD110に表示され続ける。また例えば、上述したようにステップ1114及び1116において視野画像にコンテキストに応じた視覚効果が付与された後、処理のループが繰り返されて再びステップ1112の判定が行われた時点で不整合事象が解消していれば、視覚効果が付与されていた視野画像から当該視覚効果が除去され、これにより視覚効果付与前の元の視野画像がHMD110に表示される(例えば、照明器具1220が正常に点灯し、眼鏡1320の曇りが晴れ、キッチン1410の煙1430が消失し、第2のゲームキャラクタの手1530による目隠しが外される)。
ステップ1116及びステップ1118の後、処理はステップ1120に進み、プロセッサ202は、アプリケーションを終了するか否かを判定する。例えば、プロセッサ202は、ユーザ190からの所定の入力指示に従って、アプリケーションを終了するか否かを判定する。アプリケーションが続行される場合、処理はステップ1110へ戻り、再びステップ1110以降が繰り返される。アプリケーションの終了が選択された場合、ステップ1122において方法1100は終了する。
図16は、トラッキング外れの不整合事象を検出するための方法1600のフローチャートである。方法1600は、上述した方法1100におけるステップ1112のより具体的な手順の一例を示す。図16において、方法1600はステップ1602において開始する。
処理はステップ1604に進み、プロセッサ202は、ユーザ190のHMD110からのトラッキング信号がHMDセンサ120によって取得されたか否かを判定する。トラッキング信号は、HMD110上のLED光源が点灯若しくは点滅することによって定常的又は定期的に発せられる信号である。HMD110から発せられたトラッキング信号は、HMDセンサ120に対するユーザ190の位置又は向きによってはHMDセンサ120に全く届かず、完全に受信不能となることがある。このようにHMDセンサ120がトラッキング信号を取得できなかった場合、処理はステップ1612に進み、不整合事象判定部914は、トラッキング外れの不整合事象が発生したと判定する。トラッキング信号がHMDセンサ120によって取得された場合、処理はステップ1606に進む。
トラッキング信号がHMDセンサ120によって取得されると、ステップ1606において、プロセッサ202は、取得されたトラッキング信号に基づいて、現実空間におけるユーザ190の位置座標を計算する。HMD110上のLED光源がHMDセンサ120の方向に向けられている配置では、トラッキング信号が良好な感度でHMDセンサ120に受信されるため、プロセッサ202は、HMD110からのトラッキング信号に基づいて、実際のユーザ190の位置座標を正しく計算することができる。一方、HMD110上のLED光源の向きがHMDセンサ120の方向から所定角度以上ずれてしまっているような配置では、HMDセンサ120によるトラッキング信号の受信感度が十分でないということがあり得る。この場合、プロセッサ202は、良好なトラッキング信号を利用することができないため、実際のユーザ190の位置座標を正しく計算することができず、算出されたユーザ190の位置は、実際の位置とは異なる異常な位置を示すものとなり得る。
処理はステップ1608に進み、プロセッサ202は、ステップ1606において算出された現実空間のユーザ190の位置に応じて、仮想空間400内の仮想カメラ404の位置を制御する。例えば、プロセッサ202は、ステップ1606において算出された現実空間のユーザ190の位置座標に対応する仮想空間400内の位置に、仮想カメラ404を配置する。ここで、ステップ1606において算出されたユーザ190の位置座標が正しいものである場合には、仮想カメラ404の配置位置は現実空間におけるユーザ190の位置に対応した正しいものとなる。しかしながら、ステップ1606においてユーザ190の異常な位置座標が算出された場合は、仮想カメラ404も仮想空間400内で異常な位置に配置される結果となる。一例として、ユーザ190の位置座標が異常になると、仮想カメラ404が当該異常な位置座標に従って仮想空間400内で本来とは異なる場所へ突然ジャンプし得る。
処理はステップ1610に進み、不整合事象判定部914は、仮想空間400内の仮想カメラ404の位置が正常であるか否かを判定する。例えば、不整合事象判定部914は、仮想空間400における仮想カメラ404の位置を上記のステップ1608の実施前後で比較し、その差、即ち位置の時間的変化(移動スピード)に基づいて、仮想カメラ404の位置が正常であるか否かを判定する。より具体的に、不整合事象判定部914は、仮想カメラ404の位置の移動スピードが所定の閾値よりも小さい場合、仮想カメラ404の位置が正常であると判定し、当該移動スピードが所定の閾値よりも大きい場合、仮想カメラ404の位置が異常であると判定する。前述したように、HMDセンサ120によるトラッキング信号の受信状態が不調であると、HMD110の正しい位置座標が算出できず、結果として仮想空間400において仮想カメラ404が異常な位置へ突然ジャンプし得る。したがって、仮想カメラ404の位置が異様に速く移動したかどうかを判断基準として、仮想カメラ404の位置の異常を識別することができる。ステップ1610の判定の結果、仮想カメラ404の位置が異常である場合、処理はステップ1612に進み、不整合事象判定部914は、トラッキング外れの不整合事象が発生したと判断する。一方、ステップ1610の判定の結果、仮想カメラ404の位置が正常である場合、処理はステップ1614に進み、不整合事象判定部914は、トラッキング外れの不整合事象は発生していないと判断する。
本開示の実施形態は、主に、プロセッサ202(もしくはコンピュータ200)又は方法1100として実施されるものとして説明された。しかし、本開示の実施形態が、プロセッサ202に方法1100を実行させるコンピュータプログラムとして実施することができることは、当業者にとって明らかであろう。
本開示の実施形態が説明されたが、これらが例示にすぎず、本開示の範囲を限定するものではないことが理解されるべきである。本開示の趣旨及び範囲から逸脱することなく、実施形態の変更、追加、改良等を適宜行うことができることが理解されるべきである。本開示の範囲は、上述した実施形態のいずれによっても限定されるべきではなく、特許請求の範囲及びその均等物によってのみ規定されるべきである。
また、上述した様々な実施形態では、非透過型のHMD装置によってユーザが没入する仮想空間を提供する例について説明したが、HMD装置として、透過型のHMD装置を採用してもよい。そのような実施形態においては、透過型のHMD装置を介してユーザが視認する現実空間に仮想オブジェクトを含む画像を重ねて表示することにより、拡張現実(AR:Augmented Reality)空間または複合現実(MR:Mixed Reality)空間におけるユーザ体験を提供してもよい。