[本開示の実施形態の説明]
最初に、本開示の実施形態の内容を列記して説明する。本開示の一実施形態は、以下のような構成を備える。
(項目1)仮想現実(VR)空間を提示するためのディスプレイを含むヘッドマウントデバイスと、前記VR空間内のオブジェクトを操作するためのコントローラと、前記ヘッドマウントデバイス及び前記コントローラを追跡してトラッキング情報を生成するセンサと、を備えるシステムにおける情報処理方法であって、前記トラッキング情報に基づいて、前記コントローラに対応する前記VR空間内の仮想コントローラを前記ディスプレイの画面の第1エリアに含む第1VR画像を生成するステップと、前記トラッキング情報の変化に応答して、前記仮想コントローラを前記画面の第2エリアに含み、前記コントローラの操作に関連する付加情報の提示を更に含む第2VR画像を生成するステップと、を含む方法。
(項目2)前記第2エリアは、前記第1エリアよりも前記画面の中心近くに位置するエリアである、項目1に記載の方法。
(項目3)前記第1VR画像を生成する前記ステップは、前記画面の注視エリアを特定するステップと、前記トラッキング情報に基づいて、前記画面内における前記仮想コントローラの位置を特定するステップと、前記注視エリアと前記仮想コントローラの位置との距離を決定するステップと、前記注視エリアと前記仮想コントローラの前記位置との距離が所定値よりも大きい場合に、前記第1VR画像を生成するステップと、を含む、項目1又は項目2に記載の方法
(項目4)前記注視エリアは、前記画面内の固定位置として予め設定される、又はユーザの視線の動きに応じて動的に決定される、項目3に記載の方法。
(項目5)前記第2VR画像を生成する前記ステップは、前記トラッキング情報の変化に応答して、前記画面内における前記仮想コントローラの位置を更新するステップと、前記注視エリアと前記仮想コントローラの前記更新された位置との距離を決定するステップと、前記注視エリアと前記仮想コントローラの前記更新された位置との距離が前記所定値よりも小さい場合に、前記第2VR画像を生成するステップと、を含む、項目3又は項目4に記載の方法
(項目6)前記注視エリアと前記仮想コントローラの前記更新された位置との距離が前記所定値よりも小さい場合に前記第2VR画像を生成する前記ステップは、前記注視エリアと前記仮想コントローラの前記更新された位置との距離が、所定時間よりも長い期間にわたって前記所定値よりも小さく保持された場合に、前記第2VR画像を生成するステップを含む、項目5に記載の方法。
(項目7)前記VR空間は、ユーザの関心領域を含み、前記方法は、更に、前記注視エリアと前記仮想コントローラの前記更新された位置との距離が前記所定値よりも小さい場合であっても、前記関心領域と前記仮想コントローラの前記更新された位置との距離が第2の所定値よりも小さいときは、前記第2VR画像の生成を禁止するステップを含む、項目5又は項目6に記載の方法
(項目8)前記関心領域は、前記コントローラによる操作対象である前記オブジェクトが存在している前記VR空間内の領域である、項目7に記載の方法。
(項目9)前記トラッキング情報は、前記ヘッドマウントデバイスの位置及び向きの情報並びに前記コントローラの位置の情報を含む、項目1から項目8のいずれか1項に記載の方法。
(項目10)前記トラッキング情報は、前記コントローラの向きの情報を更に含み、前記付加情報は、前記仮想コントローラの周囲において前記コントローラの向きに対応した向きに提示される、項目9に記載の方法。
(項目11)前記トラッキング情報の変化は、前記ヘッドマウントデバイスの向きが下へ傾く変化、又は前記コントローラの位置が上昇する変化である、項目1から項目10のいずれか1項に記載の方法。
(項目12)前記コントローラは、ユーザからの操作を受け付ける操作エレメントを含み、前記仮想コントローラは、前記操作エレメントに対応する仮想操作エレメントを含み、前記付加情報は、前記操作エレメントについての説明を記述するテキスト又は画像を、対応する前記仮想操作エレメントと視覚的に関連付けて提示する、項目1から項目11のいずれか1項に記載の方法
(項目13)前記操作エレメントに対するユーザ操作が行われた場合に、前記第2VR画像から前記付加情報を取り除くステップを更に含む、項目12に記載の方法。
(項目14)仮想現実(VR)空間を提示するためのディスプレイを含むヘッドマウントデバイスと、前記VR空間内のオブジェクトを操作するためのコントローラと、前記ヘッドマウントデバイスを装着したユーザの視線を追跡してトラッキング情報を生成するセンサと、を備えるシステムにおける情報処理方法であって、前記コントローラに対応する前記VR空間内の仮想コントローラを含む第1VR画像を生成するステップと、前記トラッキング情報の変化に応答して、前記仮想コントローラを含み、前記コントローラの操作に関連する付加情報の提示を更に含む第2VR画像を生成するステップと、を含む方法。
(項目15)プロセッサと、プログラムを格納するメモリであって、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、項目1から項目14のいずれか1項に記載の方法を実行させる、メモリと、を備えるコンピュータ。
(項目16)プロセッサによって実行されると、前記プロセッサに、項目1から項目14のいずれか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は、コントローラ160に内蔵されて、コントローラ160の動きを検出する。例えば、モーションセンサ130は、コントローラ160の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。別の態様において、コントローラ160に内蔵されないモーションセンサ130が、コントローラ160又はユーザ190の身体の動きを検出してもよい。コントローラ160又はユーザ190の身体の様々な部分の位置、向き、動きの方向、動きの距離などを検知する光学式のモーションセンサ130が用いられてもよい。例えば、コントローラ160を把持したユーザ190を撮影するカメラの信号が、ユーザ190の動作を表す信号として、コンピュータ200に入力されてもよい。コントローラ160に内蔵されないモーションセンサ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−Programmable 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は、複数のボタン162(162a、162b、162c、162d)及び164(164a、164b、164c、164d)と、左右のアナログスティック166L及び166Rとを備える。各ボタン162及び164は、プッシュ式ボタンとして構成される。ボタン162及び164は、ユーザ190の手の親指による操作を受け付ける。ユーザ190の手の人差し指又は中指による操作を受け付けることが可能な不図示のトリガー式のボタンが、更にコントローラ160に設けられてもよい。アナログスティック166L及び166Rは、ある態様において、それぞれ初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間400に配置されるオブジェクトを移動するための操作を含む。ボタン162(162a、162b、162c、162d)及び164(164a、164b、164c、164d)並びにアナログスティック166L及び166R(更に、含まれる場合には不図示のトリガー式ボタン)には、それぞれ別個の操作コマンドが割り当てられる。操作コマンドは、例えば、仮想空間400内のオブジェクトに指令を与えるためのコマンド、ゲームのメニュー画面等において各種の設定を行うためのコマンド、及びユーザ190が仮想空間400を体験している際にコンピュータ200に入力し得る任意の他のコマンドを含む。各ボタン又はアナログスティックに割り当てられた操作コマンドは、例えばゲームの進行や場面の変化に応じて、動的に変更されてもよい。ユーザ190は、コントローラ160を使った様々な操作を円滑に行うべく、コントローラ160の各ボタン及びアナログスティックにどの操作コマンドが割り当てられているかを覚えておくことが望まれる。しかしながら、以下に詳しく説明されるように、ユーザ190は、コントローラ160を使用している最中にコントローラ160の各ボタン及びアナログスティックへの操作コマンドの割り当てを仮想空間400に表示させることができる。
ある態様において、コントローラ160は、その外表面に配置された不図示の複数の赤外線LEDを含んでもよい。赤外線LEDは、コントローラ160を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LEDから発せられた赤外線は、コントローラ160の位置や姿勢(傾き、向き)を検出するために使用され得る。またコントローラ160は、内部の電子部品を駆動するための電池を含む。電池は、1次電池及び2次電池のいずれであってもよく、その形状は、ボタン型、乾電池型等任意であり得る。別の態様において、コントローラ160は、例えば、コンピュータ200のUSBインターフェースに接続され得る。この場合、コントローラ160は、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と、視界画像出力部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)として実施することができる。
以下、本開示の実施形態について具体的に説明する。ここでは、本開示の実施形態を適用することができる具体例として、複数のユーザが、各ユーザのアバター、ゲームフィールド、当該ゲームフィールド内で行動する各ユーザのユニット等が配置された仮想空間に没入して楽しむことができるゲームを想定する。しかし、本開示の実施形態は、必ずしもこのような態様に限定されない。本開示の実施形態が、特許請求の範囲において規定される範囲に含まれる様々な態様を取り得ることは、当業者にとって明らかであろう。
図12は、本実施形態において想定されるゲームの態様を概略的に説明する図である。この例では、2人のユーザ1212A及び1212B(以下、まとめて「ユーザ1212」とも呼ぶ)が当該ゲームをプレイする。ユーザ1212A及び1212Bは、それぞれ、HMD110A及び110B(以下、まとめて「HMD110」とも呼ぶ)を頭部に装着し、さらにコントローラ160A及び160B(以下、まとめて「コントローラ160」とも呼ぶ)を把持して操作する。一例では、コントローラ160は、図8に関して上述した構成を有する。
仮想空間1200内には、ユーザ1212A及び1212Bのそれぞれによって操作されるアバター1214A及び1214B(以下、まとめて「アバター1214」とも呼ぶ)並びにゲームフィールド1222が配置される。ゲームフィールド1222上には、ユーザ1212A及び1212Bの各々が有するユニット1216A及び1216B(以下、まとめて「ユニット1216」とも呼ぶ)、基地1224A及び1224B(以下、まとめて「基地1224」とも呼ぶ)等が配置される。ユニット1216は、各ユーザ1212が操作することによってゲームフィールド1222上を移動することが可能なゲームキャラクタである。ゲームのプレイ中、ユーザ1212は、自分のユニット1216が相手ユーザの基地1224に到達することができるように、様々な操作を行う。
ユーザ1212は、アバター1214を介して、仮想空間1200内のゲームフィールド1222上で行われるゲームを楽しむことができる。アバター1214A及び1214Bは、それぞれ、仮想コントローラオブジェクト1220A及び1220B(以下、まとめて「仮想コントローラオブジェクト1220」とも呼ぶ)を把持する。仮想コントローラオブジェクト1220は、現実空間のコントローラ160に対応する仮想空間1200内のオブジェクトである。すなわち、仮想空間1200のアバター1214は、現実空間のユーザ1212がコントローラ160を手に持って操作しているのと同じように、仮想コントローラオブジェクト1220を把持している。ユーザ1212はアバター1214の視点でゲームをプレイすることで仮想空間1200に入り込むことができるが、アバター1214が現実空間の自分と同じように仮想コントローラオブジェクト1220を把持していることで、仮想空間1200への没入感をより高めることができる。
図12に示されるように、アバター1214A及び1214Bの位置にそれぞれ仮想カメラ1204A1及び1204B1(以下、まとめて「仮想カメラ1204」とも呼ぶ)が配置される。仮想カメラ1204は、アバター1214の視点から仮想空間1200を捉える。仮想カメラ1204からのアバター1214の視点は、仮想空間1200内のゲームフィールド1222を俯瞰する視点である。例えば、仮想カメラ1204A1が捉えるアバター1214Aの視点からの視界画像には、ユーザ1212Aが操作可能なゲームフィールド1222上のユニット1216Aが含まれ、仮想カメラ1204B1が捉えるアバター1214Bの視点からの視界画像には、ユーザ1212Bが操作可能なゲームフィールド1222上のユニット1216Bが含まれる。更に、各仮想カメラ1204が捉える視界画像には、それぞれのアバター1214が把持している仮想コントローラオブジェクト1220も含まれ得る。上述したように、ユーザ1212は、仮想カメラ1204によってアバター1214の視点から得られた仮想空間1200の映像を見ることができる。
図11に戻り、処理はステップ1102において開始する。プロセッサ202は、メモリ204に格納されているアプリケーションデータ932に含まれるゲームプログラムを読み出して実行する。
処理はステップ1104に進み、プロセッサ202は、トラッキング情報を取得する。トラッキング情報は、現実空間におけるHMD110の位置情報及び傾き情報を含む。トラッキング情報はまた、現実空間におけるコントローラ160の位置情報も含む。更に、トラッキング情報は、現実空間におけるコントローラ160の傾き情報を含んでもよい。例えば、プロセッサ202のHMD動作検知部903は、HMDセンサ120又はセンサ114からHMD110の位置情報及び傾き情報を取得することができる。また例えば、プロセッサ202のコントローラ動作検知部910は、コントローラ160に内蔵されたモーションセンサ130、又はコントローラ160の外部(例えば部屋の壁)に設置されたモーションセンサ130(例えばカメラ)から、コントローラ160の位置情報及び傾き情報を取得することができる。
処理はステップ1106に進み、プロセッサ202の視界画像生成部912は、トラッキング情報に基づいて第1仮想現実(VR)画像を生成する。第1VR画像は、アバター1214の視点(即ち仮想カメラ1204)から仮想空間1200を捉えた光景を表す画像である。第1VR画像はまた、画面の第1エリアに仮想コントローラオブジェクト1220を含む。第1エリアは、画面の周縁部分(例えば画面の下方部分)に位置するエリアである。例えば、図12を参照すると、ユーザ1212は、コントローラ160を自分の胸の前付近で把持する。この場合、トラッキング情報は、HMD110の下方にコントローラ160が存在していることを示す。したがって、第1VR画像の仮想コントローラオブジェクト1220は、画面の下方の周縁部分である第1エリアに配置されるであろう。視界画像生成部912によって生成された第1VR画像は、視界画像出力部926から、HMD110に関連付けられる表示部112に出力され、表示部112によって表示される。HMD110を装着したユーザ1212は、表示部112に表示された第1VR画像を見ることができる。
図13は、視界画像生成部912によって生成される第1VR画像の一例を示す。図示されるように、第1VR画像1300は、アバター1214Aの視線の先(画面の中央又は上側部分)に、ゲームフィールド1222、ユーザ1212Aが操作するユニット1216A、相手ユーザ1212Bを表す相手アバター1214B、及び相手ユーザ1212Bが操作するユニット1216Bを含む。更に、第1VR画像1300は、アバター1214Aの視線よりも下方、即ち画面の下方の周縁部分である第1エリア1302に、仮想コントローラオブジェクト1220Aを含む。加えて、第1VR画像1300は、仮想コントローラオブジェクト1220Aに付随して、仮想コントローラオブジェクト1220Aを把持するアバター1214Aの仮想の手1221Aを含んでもよい。
仮想コントローラオブジェクト1220Aの配置位置は、トラッキング情報に基づく。より具体的には、仮想コントローラオブジェクト1220Aの配置位置は、HMD110とコントローラ160の相対的な位置及び向きに従って決定される。例えば、ユーザ1212がHMD110を装着した頭を上下に傾けたり、コントローラ160を上下左右に動かしたりすると、視界画像生成部912は、第1VR画像1300内の仮想コントローラオブジェクト1220の配置位置がそれらの動きに追従するように、第1VR画像1300を更新する。これにより、ユーザ1212は、現実空間における自分の頭や手の動きに応じてアバター1214の視界の中で仮想コントローラオブジェクト1220が動く様子を視認することができる。
処理はステップ1108に進み、プロセッサ202は、トラッキング情報を更新する。例えば、プロセッサ202のHMD動作検知部903は、HMDセンサ120からHMD110の新たな位置情報及び傾き情報を取得する。また例えば、プロセッサ202のコントローラ動作検知部910は、コントローラ160に内蔵又はコントローラ160の外部に設置されたモーションセンサ130から、コントローラ160の新たな位置情報及び傾き情報を取得する。
処理はステップ1110に進み、プロセッサ202の視界画像生成部912は、トラッキング情報の変化に応答して、第2VR画像を生成する。第2VR画像は、第1VR画像と同様に、アバター1214の視点(即ち仮想カメラ1204)から仮想空間1200を捉えた光景を表す画像である。しかしながら、第2VR画像は、第1VR画像とは異なり、画面の第2エリアに仮想コントローラオブジェクト1220を含む。一例として、第2エリアは、第1エリアよりも画面の中央近くに位置するエリアであってよい。例えば、ユーザ1212は、自分の胸の前付近で把持していたコントローラ160を上方へ動かして(自分の顔の高さに近づくように持ち上げて)、コントローラ160が視界の中央付近に見えるようにすることができる。この場合、トラッキング情報は、コントローラ160がHMD110により近接する方向へ移動したことを示す。したがって、第2VR画像の仮想コントローラオブジェクト1220は、画面の中央近くのエリアである第2エリアに配置されるであろう。更に、第2VR画像は、コントローラ160の操作に関連する付加情報の提示を含む。付加情報は、例えば、ユーザ1212にコントローラ160の操作方法を案内する。一例として、付加情報は、コントローラ160の各ボタン及び/又はアナログスティックにどのような操作コマンドが割り当てられているかをユーザ1212に知らせることが可能な視覚的情報を含む。視界画像生成部912によって生成された第2VR画像は、視界画像出力部926から、HMD110に関連付けられる表示部112に出力され、表示部112によって表示される。HMD110を装着したユーザ1212は、表示部112に表示された第2VR画像を見ることができる。
図14は、視界画像生成部912によって生成される第2VR画像の一例を示す。図示されるように、第2VR画像1400は、図13の第1VR画像1300と同様に、アバター1214Aの視線の先に、ゲームフィールド1222、ユニット1216A、ユニット1216B、及び相手アバター1214Bを含む。また、第2VR画像1400は、画面の下方の周縁部分である第1エリア1402よりも画面の中央に近い第2エリア1404に、仮想コントローラオブジェクト1220Aを含む。第2VR画像1400は、第1VR画像1300の場合と同様の、仮想コントローラオブジェクト1220Aを把持する仮想の手1221Aを付加的に含んでもよい。更に、第2VR画像1400は、コントローラ160の個々のボタンに割り当てられた操作コマンドの名称を示すボタン説明1410(1410a、1410b、1410c、1410d)を含む。例えば、ボタン説明1410aは、操作コマンド「アクション1」がコントローラ160のボタン162aに割り当てられていることを示し、ボタン説明1410bは、操作コマンド「アクション2」がコントローラ160のボタン162cに割り当てられていることを示し、ボタン説明1410cは、操作コマンド「アクション3」がコントローラ160のボタン164aに割り当てられていることを示し、ボタン説明1410dは、操作コマンド「アクション4」がコントローラ160のボタン164dに割り当てられていることを示す。アクション1乃至4は、ゲームフィールド1222上のゲームキャラクタであるユニット1216Aに行わせることが可能な、例えば、攻撃、防御、特殊能力発動、武器装填、装備変更などの任意の動作であってよい。また図14の例において、各ボタン説明1410は、各ボタン説明1410から伸びる線1412によって、仮想コントローラオブジェクト1220A上の対応するボタンと視覚的にリンクされている。これらの線1412は、例えば、コントローラ160のボタン162a、162c、164a、164dにそれぞれボタン説明1410a、1410b、1410c、1410dがリンクされていることを視覚的に表現する。
例えば、はじめに、HMD110Aを装着したユーザ1212Aは、コントローラ160Aを自分の胸の前付近で把持して、コントローラ160Aのボタン(162、164)及びアナログスティック(166)を適宜操作することによりゲームフィールド1222上のユニット1216Aの動作を制御している。この時、このようなHMD110Aとコントローラ160Aの相対的な位置関係に応じたトラッキング情報に基づいて、例えば図13に示されるような、仮想コントローラオブジェクト1220Aを画面の下方の周縁部分である第1エリア1302に含んだ第1VR画像1300が生成される。次いで、ユーザ1212Aは、コントローラ160Aの各ボタン及びアナログスティックへの操作コマンドの割り当てを確認したいと思うかもしれない。その場合、ユーザ1212Aは、例えば、自分の胸の前付近で把持していたコントローラ160Aを、自分の顔の高さに近づくように上方へ動かす(持ち上げる)。ユーザ1212Aのこのような動作によって、トラッキング情報が、コントローラ160Aの位置の変化を反映して更新される。すると、この更新されたトラッキング情報に従って、例えば図14に示される第2VR画像1400のように、仮想コントローラオブジェクト1220Aが画面の中央に近い第2エリア1404に移動すると共に、仮想コントローラオブジェクト1220Aの周囲には、コントローラ160Aのボタンに割り当てられた操作コマンドに関するボタン説明1410が出現する。このように、ユーザ1212Aは、コントローラ160Aを動かして仮想コントローラオブジェクト1220Aが画面の中央近くにくるようにすることで、ボタン説明1410を表示させることができ、このボタン説明1410を見ることによって、コントローラ160Aの各ボタンにどのような操作コマンドが割り当てられているかを知ることができる。
図15は、視界画像生成部912によって生成される第2VR画像の別の一例を示す。図14の第2VR画像1400と同様に、図15の第2VR画像1500は、画面の下方の周縁部分である第1エリア1502よりも画面の中央に近い第2エリア1504に仮想コントローラオブジェクト1220Aを含み、更に、仮想コントローラオブジェクト1220A上のボタンと線1512によって視覚的にリンクされたボタン説明1510(1510a、1510b、1510c、1510d)を含む。しかしながら、図15の例において、ユーザ1212Aは、コントローラ160Aを上方へ動かす代わりに、コントローラ160Aは自分の胸の前付近で把持したまま、HMD110Aを装着した頭を下へ向ける(傾ける)ことによってコントローラ160Aが視界の中央付近にくるようにしている。したがって、ユーザ1212Aが頭を動かす前にはその姿全体が画面内に捉えられていたゲームフィールド1222、ユニット1216A、ユニット1216B、及び相手アバター1214B(図13の第1VR画像1300を参照)は、ユーザ1212AがHMD110Aの向きを下へ傾けたことによって、図15の第2VR画像1500においては、画面の上端へ移動し、あるいは画面の外へ移動して画面から失われている。このように、ユーザ1212Aは、HMD110Aの向きを変えることにより、仮想コントローラオブジェクト1220Aが画面の中央近くの第2エリア1504にくるようにしてもよい。ユーザ1212Aは、そのような動作を行うことで、仮想コントローラオブジェクト1220Aの周囲にボタン説明1510を表示させることができる。
図16は、視界画像生成部912によって生成される第2VR画像の更に別の一例を示す。図16の例の第2VR画像1600は、図14の第2VR画像1400と同様に、アバター1214Aの視線の先に、ゲームフィールド1222、ユニット1216A、ユニット1216B、及び相手アバター1214Bを含む。しかしながら、第2VR画像1600においては、画面の下方の周縁部分に第2エリア1604が位置する。第2VR画像1600は、画面の下方の周縁部分である第2エリア1604に仮想コントローラオブジェクト1220Aを含むと共に、更に、図14の第2VR画像1400及び図15の第2VR画像1500と同様に、仮想コントローラオブジェクト1220A上のボタンと線1612によって視覚的にリンクされたボタン説明1610(1610a、1610b、1610c、1610d)を含む。一例として、第2エリア1604は、図16に符号1302で示されるように、図13の第1VR画像1300における第1エリア1302と同じエリアであってよい。
例えば、ユーザ1212Aは、図13の(仮想コントローラオブジェクト1220Aを第1エリア1302に含んだ)第1VR画像1300が生成された後も、図14の例のようにコントローラ160Aを上方へ動かしたり、図15の例のようにHMD110Aを装着した頭を下へ向けたりすることなく、コントローラ160AとHMD110Aの位置及び傾きをそのままの状態に維持している。その結果、第2VR画像1600において、ゲームフィールド1222、ユニット1216A、ユニット1216B、及び相手アバター1214Bは第1VR画像1300と同様に画面の上部に位置し、仮想コントローラオブジェクト1220Aは第1エリア1302と同じエリアである第2エリア1604内に位置するだろう。コントローラ160A及びHMD110Aを動かす代わりに、ユーザ1212Aは、視線(目)を画面の上部(ゲームフィールド1222)から仮想コントローラオブジェクト1220Aの近くへ移動させる。例えば、プロセッサ202の視線検知部904は、このようなユーザ1212Aの視線の動きを含むトラッキング情報を注視センサ140から取得することができる。ユーザ1212Aが視線1650を仮想コントローラオブジェクト1220Aの近くへ移動させたことをトラッキング情報が示す場合、図16に示される第2VR画像1600のように、仮想コントローラオブジェクト1220Aの周囲にボタン説明1610が出現する。このように、ユーザ1212Aは、視線1650を仮想コントローラオブジェクト1220Aの近くへ動かすことによっても、ボタン説明1410を表示させることが可能である。
図17は、本開示の一実施形態による方法1700のフローチャートである。本開示の一実施形態において、コンピュータプログラムが、図17に示される各ステップをプロセッサ202(又はコンピュータ200)に実行させてもよい。また、本開示の別の実施形態は、方法1700を実行するプロセッサ202(又はコンピュータ200)として実施することができる。
方法1700の処理はステップ1702において開始する。プロセッサ202は、メモリ204に格納されているアプリケーションデータ932に含まれるゲームプログラムを読み出して実行する。
処理はステップ1704に進み、プロセッサ202の仮想空間特定部902は、仮想空間データ928及びオブジェクトデータ930に基づいて、実行されるゲームのための仮想空間を特定する。このステップ1704で特定される仮想空間は、例えば、図12に示されるように、ゲームフィールド1222、ユーザ1212を表すアバター1214、ユーザ1212の操作の対象であるユニット1216、ゲームフィールド1222上の基地1224、アバター1214が把持する仮想コントローラオブジェクト1220などの、実行されるゲームの世界の中に存在する様々なオブジェクトを含む。
処理はステップ1706に進み、プロセッサ202は、トラッキング情報を取得する。例えば、プロセッサ202のHMD動作検知部903は、HMDセンサ120又はセンサ114から、HMD110の位置及び傾きを示すトラッキング情報を取得することができる。また例えば、プロセッサ202のコントローラ動作検知部910は、コントローラ160に内蔵されたモーションセンサ130、又はコントローラ160の外部(例えば部屋の壁)に設置されたモーションセンサ130(例えばカメラ)から、コントローラ160の位置及び傾きを示すトラッキング情報を取得することができる。更にまた、例えば、プロセッサ202の視線検知部904は、ユーザ1212の視線の動きを示すトラッキング情報を注視センサ140から取得することができる。
処理はステップ1708に進み、プロセッサ202の視界画像生成部912は、HMD110の画面の一部分を注視エリアとして特定する。注視エリアは、HMD110の画面全体のうち、ユーザが実際に見ているか、又は見ている可能性が高いと考えられる部分的な領域である。例えば、注視エリアは、画面の中央付近など、画面内の固定位置として予め設定されていてよい。この例において、視界画像生成部912は、当該予め設定された画面内の固定位置(例えば、画面の中心点を含む所定の大きさの範囲)を、注視エリアとして特定する。また例えば、注視エリアは、ユーザの視線の動きに応じて動的に決定されてもよい。この場合、視界画像生成部912は、視線検知部904が注視センサ140から取得したトラッキング情報に基づいて、ユーザの視線が向けられている画面内の部分的領域を、注視エリアとして特定する。
処理はステップ1710に進み、プロセッサ202の視界画像生成部912は、HMD110の画面内における仮想コントローラオブジェクト1220の位置を特定する。前述したように、ステップ1706で取得されたトラッキング情報には、HMD110の位置情報及び傾き情報と、コントローラ160の位置情報とが含まれている。視界画像生成部912は、例えば、これらのトラッキング情報に基づくHMD110とコントローラ160との相対的な位置関係に基づいて、HMD110の画面内における仮想コントローラオブジェクト1220の位置を特定することができる。あるいはまた、視界画像生成部912は、コントローラ160の位置情報に基づいて仮想空間1200における仮想コントローラオブジェクト1220の位置を算出し、HMD110の位置情報及び傾き情報に基づいて仮想空間1200における仮想カメラ1204の位置と向きを算出し、次いで、このように得られた仮想空間1200における仮想コントローラオブジェクト1220の位置並びに仮想カメラ1204の位置及び向きに基づいて、仮想カメラ1204から捉えた仮想コントローラオブジェクト1220の相対的な位置、即ちHMD110の画面内における仮想コントローラオブジェクト1220の位置を特定することもできる。
処理はステップ1712に進み、プロセッサ202の視界画像生成部912は、HMD110の画面内における注視エリアと仮想コントローラオブジェクト1220との距離を決定(算出)する。
処理はステップ1714に進み、プロセッサ202の視界画像生成部912は、HMD110の画面内における注視エリアと仮想コントローラオブジェクト1220との距離が所定の閾値よりも大きいか否かを判定する。所定の閾値は、視界画像生成部912に第1VR画像と第2VR画像のいずれを生成させるかを制御するための、適宜の大きさを有する値である。所定の閾値は、固定値であってもよいし、ユーザの好みにより設定変更可能であってもよい。
HMD110の画面内における注視エリアと仮想コントローラオブジェクト1220との距離が所定の閾値よりも大きい場合(ステップ1714の「Y」)、処理はステップ1716に進む。ステップ1716において、プロセッサ202の視界画像生成部912は、図13に示されるような第1VR画像1300を生成する。例えば、ユーザ1212は、コントローラ160を自分の胸の前付近で把持し、ゲームフィールド1222に視線を向けてゲームフィールド1222上のユニット1216をコントローラ160で操作している。この時、例えばユーザ1212は、画面中央付近に固定的に設定された注視エリアにゲームフィールド1222が重なるようにHMD110の向きを調整するだろう。あるいはまた、ユーザ1212は、ゲームフィールド1222を画面中央に捉えた状態で、視線をゲームフィールド1222に向けることによって注視エリアを画面中央に位置させるかもしれない。一方、コントローラ160はHMD110よりも下に位置するので、仮想コントローラオブジェクト1220は画面の下方に位置する。したがって、注視エリアと仮想コントローラオブジェクト1220が比較的離れているため、ステップ1714の判定結果が「Y」となり、ステップ1716が実施される。これにより、仮想コントローラオブジェクト1220を画面の下方の周縁部分である第1エリア1302に含んだ図13のような第1VR画像1300が生成される。
ステップ1716において第1VR画像が生成された後、処理はステップ1706に戻り、トラッキング情報が更新される。以降、更新されたトラッキング情報を用いてステップ1708からステップ1714が再び実施され、注視エリアと仮想コントローラオブジェクト1220との更新された距離に従って、ステップ1714の判定が行われる。
ステップ1714において、HMD110の画面内における注視エリアと仮想コントローラオブジェクト1220との距離が所定の閾値よりも小さいと判定された場合(ステップ1714の「N」)、処理はステップ1718に進む。ステップ1718において、プロセッサ202の視界画像生成部912は、注視エリアと仮想コントローラオブジェクト1220との距離が所定の閾値よりも小さくなってから所定時間が経過したか否かを判定する。所定時間がまだ経過していない場合(ステップ1718の「N」)、処理はステップ1706に戻り、所定時間が経過すると(ステップ1718の「Y」)、処理はステップ1720に進む。ステップ1718の判定によって、例えば、ユーザが意図せず(コントローラ160に対する操作コマンドの割り当てを確認することを希望していないにもかかわらず)コントローラ160を動かしてしまった等のユーザの偶発的な行為に起因して、第2VR画像がユーザの意図に反して生成される事態が回避される。
注視エリアと仮想コントローラオブジェクト1220との距離が所定の閾値よりも小さい状態が所定時間にわたって持続し、処理がステップ1720に進むと、プロセッサ202の視界画像生成部912は、HMD110の画面内における仮想コントローラオブジェクト1220とユーザ1212の関心領域との距離を決定(算出)する。ユーザ1212の関心領域は、仮想空間1200内においてユーザ1212が関心を持っていることが想定される仮想空間1200の部分的な領域である。例えば、図12に示される仮想空間1200の例において、ユーザ1212はコントローラ160を使用してゲームフィールド1222上のユニット1216を操作しているから、ゲームフィールド1222はユーザ1212の関心領域である。関心領域は、例えば、固定の領域として(例えば仮想空間データ928又はオブジェクトデータ930に)予め設定されてもよいし、あるいはユーザ1212が明示的に指定する(例えば、ユーザ1212の操作対象である自分のユニット1216近傍の局所的な領域を関心領域として指定する)のであってもよい。
処理はステップ1722に進み、プロセッサ202の視界画像生成部912は、HMD110の画面内における仮想コントローラオブジェクト1220とユーザの関心領域との距離が所定の第2の閾値よりも大きいか否かを判定する。第2の閾値は、第2VR画像の生成を禁止するか否かを制御するための、適宜の大きさを有する値である。第2の閾値は、固定値であってもよいし、ユーザが適宜その大きさを調整可能であってもよい。
HMD110の画面内における仮想コントローラオブジェクト1220とユーザの関心領域との距離が所定の第2の閾値よりも大きい場合(ステップ1722の「Y」)、処理はステップ1724に進む。ステップ1724において、プロセッサ202の視界画像生成部912は、図14乃至16に示されるような第2VR画像(例えば、第2VR画像1400、1500、又は1600)を生成する。例えば、ユーザ1212は、コントローラ160の各ボタン及びアナログスティックへの操作コマンドの割り当てを確認するために、頭(HMD110)は動かさず静止させた状態のまま、自分の胸の前付近で把持していたコントローラ160を、当該コントローラ160に追従して動く仮想コントローラオブジェクト1220がゲームフィールド1222と重ならない程度の高さまで持ち上げて、所定時間その場所に保持する。この時、画面中央付近に位置する注視エリアと仮想コントローラオブジェクト1220が近づくことによって、ステップ1714の判定結果が「N」となり、また仮想コントローラオブジェクト1220が注視エリアに近い位置に一定時間滞留することで、ステップ1718の判定結果が「Y」となる。更に、仮想コントローラオブジェクト1220は関心領域(ゲームフィールド1222)からはある程度離れているので、ステップ1722の判定結果は「Y」となる。これにより、ステップ1724が実施されて、仮想コントローラオブジェクト1220を第2エリア1404に含み、更に仮想コントローラオブジェクト1220の周りにボタン説明1410を含んだ図14のような第2VR画像1400が生成される。同様に、例えばユーザ1212が頭(HMD110)を下へ傾けたり、視線を仮想コントローラオブジェクト1220の近くへ移動させたりした場合も、処理はステップ1714からステップ1718、1720、1722を辿ってステップ1724が実施され、図15のような第2VR画像1500又は図16のような第2VR画像がそれぞれ生成される。
一方、HMD110の画面内における仮想コントローラオブジェクト1220とユーザの関心領域との距離が所定の第2の閾値よりも小さい場合(ステップ1722の「N」)、処理はステップ1726に進む。ステップ1726において、プロセッサ202の視界画像生成部912は、第2VR画像に代えて第3VR画像を生成する。即ち、仮想コントローラオブジェクト1220と関心領域との距離が第2の閾値よりも小さい場合には、第2VR画像の生成が禁止されて、代わりに第3VR画像が生成される。第3VR画像は、付加情報の提示を含まない点においてのみ第2VR画像と異なる。換言すると、第3VR画像は、第2VR画像から付加情報(例えばボタン説明1410)を取り除いた画像である。仮想コントローラオブジェクト1220がユーザの関心領域(例えばゲームフィールド1222)に近づきすぎた場合に、仮想コントローラオブジェクト1220の周りに付加情報の提示を含む第2VR画像を生成すると、そのような第2VR画像においては、仮想コントローラオブジェクト1220の周りの付加情報によって、ユーザの関心領域又はその一部が隠されて見えなくなってしまうおそれがある。そこで第2VR画像の代わりに第3VR画像を生成することで、ユーザの関心領域に対する視認性を確保することができる。図18は、第3VR画像の一例を示す。図示されるように、第3VR画像1800は、ゲームフィールド1222のすぐ近くに仮想コントローラオブジェクト1220を含む。しかしながら、第3VR画像1800において、仮想コントローラオブジェクト1220の周りに付加情報(例えば図14の第2VR画像1400におけるボタン説明1410)が存在しないため、ゲームフィールド1222の視認性が確保されている。
ステップ1724において第2VR画像が生成された後、処理はステップ1728に進む。ステップ1728において、プロセッサ202の視界画像生成部912は、コントローラ160のボタン162(162a、162b、162c、162d)及び164(164a、164b、164c、164d)並びにアナログスティック166L及び166R(更に、含まれる場合にはトリガー式ボタン)のいずれかに対してユーザから入力がなされたか否かを判定する。ユーザ入力がなされた場合、処理はステップ1730に進み、プロセッサ202の視界画像生成部912は、第2VR画像(例えば、第2VR画像1400、1500、又は1600)からボタン説明(例えば、ボタン説明1410、1510、又は1610)を取り除く。このように、ユーザがコントローラ160のボタンへの操作コマンドの割り当てを確認した後にいずれかのボタンを操作すると、仮想コントローラオブジェクト1220の周りに出現していたボタン説明は消失し、通常の仮想コントローラオブジェクト1220の表示が再現される。
図17のフローチャートには示されていないが、方法1700は、第2VR画像に含まれる仮想コントローラオブジェクト1220及びボタン説明をコントローラ160の向きに応じて変化させるステップを含んでもよい。図19は、このような第2VR画像の一例を示す。例えば、ユーザは、図19の上側部分に示されるように、コントローラ160をそのピッチ軸1950の周りに矢印1960の向き(コントローラ160を「寝かせる」ように傾ける方向)に回転させることができる。ユーザのこのような動作に従って、図19の第2VR画像1900における仮想コントローラオブジェクト1220もそのピッチ軸1955の周りに矢印1965の向きに回転する。それと共に、第2VR画像1900におけるボタン説明1910(1910a、1910b、1910c、1910d)もまた、コントローラ160の傾きに応じて回転し、「寝た」状態で提示される。このように、ボタン説明1910が「寝た」状態で提示されることにより、仮想コントローラオブジェクト1220がゲームフィールド1222に比較的近接して存在する場合であっても、ボタン説明1910がゲームフィールド1222を遮って見えなくしてしまうことが起こりにくくなる。
本開示の実施形態は、主に、プロセッサ202(もしくはコンピュータ200)又は方法1100として実施されるものとして説明された。しかし、本開示の実施形態が、プロセッサ202に方法1100を実行させるコンピュータプログラムとして実施することができることは、当業者にとって明らかであろう。
本開示の実施形態が説明されたが、これらが例示にすぎず、本開示の範囲を限定するものではないことが理解されるべきである。本開示の趣旨及び範囲から逸脱することなく、実施形態の変更、追加、改良等を適宜行うことができることが理解されるべきである。本開示の範囲は、上述した実施形態のいずれによっても限定されるべきではなく、特許請求の範囲及びその均等物によってのみ規定されるべきである。
また、上述した様々な実施形態では、非透過型のHMD装置によってユーザが没入する仮想空間を提供する例について説明したが、HMD装置として、透過型のHMD装置を採用してもよい。そのような実施形態においては、透過型のHMD装置を介してユーザが視認する現実空間に仮想オブジェクトを含む画像を重ねて表示することにより、拡張現実(AR:Augmented Reality)空間または複合現実(MR:Mixed Reality)空間におけるユーザ体験を提供してもよい。具体的には、視界画像生成部912は、例えばユーザが現実のコントローラを顔の前へ動かした場合に、上述した様々な第2VR画像に代えて、コントローラの各ボタンへの操作コマンドの割り当てを案内するための上述したボタン説明(図14のボタン説明1410等)を含む画像を生成する。これにより、ユーザは、例えばコントローラを顔の前に持ち上げる動作をすることによって、現実のコントローラの近傍に仮想のボタン説明が表示されるARまたはMR空間を体験することが可能である。