(57)【要約】【課題】仮想空間におけるエンタテインメント性を向上させる。【解決手段】制御回路部は、仮想空間に生成される仮想右手（ＨＲ）および仮想左手（ＨＬ）が、仮想空間において特定の関係にある場合、付加画像としてのロックオン（ＥＡ）を含む視界画像をＨＭＤに表示させる。【選択図】図１２
2018028920.tif 000002
【特許請求の範囲】
【請求項１】
ヘッドマウントディスプレイ（以下、ＨＭＤ）を装着したユーザに仮想空間を提供する方法であって、
前記仮想空間を規定するステップと、
前記仮想空間における前記ユーザの基準視線を特定するステップと、
前記ユーザの右手の状態を表す情報および前記ユーザの左手の状態を表す情報を取得するステップと、
前記右手の状態を表す情報および前記左手の状態の双方に基づく付加画像を、前記仮想空間に生成するステップと、
前記基準視線に基づき、前記付加画像を少なくとも含む視界画像を生成するステップと、
前記視界画像を前記ＨＭＤに表示させるステップとを有する、仮想空間を提供する方法。
【請求項２】
前記右手の状態を表す情報に基づき、前記仮想空間に仮想右手を生成するステップと、
前記左手の状態を表す情報に基づき、前記仮想空間に仮想左手を生成するステップと、をさらに有しており、
前記付加画像を生成するステップにおいて、前記仮想空間における前記仮想右手および前記仮想左手の関係に基づく前記付加画像を生成し、
前記視界画像を生成するステップにおいて、前記仮想右手および前記仮想左手をさらに含む前記視界画像を生成する、請求項１に記載の仮想空間を提供する方法。
【請求項３】
前記右手の状態を表す情報および前記左手の状態を表す情報を取得するステップにおいて、前記ユーザが右手に持つ右コントローラの検出値および前記ユーザが左手に持つ左コントローラの検出値を、前記右手の状態を表す情報および前記左手の状態を表す情報としてそれぞれ取得する、請求項１または２に記載の仮想空間を提供する方法。
【請求項４】
前記付加画像を生成するステップにおいて、前記仮想空間に前記付加画像として付加オブジェクトを生成する、請求項１〜３のいずれか１項に記載の仮想空間を提供する方法。
【請求項５】
前記仮想空間において前記付加画像による影響を受けるオブジェクトを特定するステップと、
特定された前記オブジェクトに対する前記影響を、前記仮想空間に反映させるステップとをさらに有する、請求項１〜４のいずれか１項に記載の仮想空間を提供する方法。
【請求項６】
前記影響を受けるオブジェクトを特定するステップにおいて、前記仮想空間において前記付加画像の表示範囲に重畳するオブジェクトを、前記付加画像による影響を受けるオブジェクトとして特定する、請求項５に記載の仮想空間を提供する方法。
【請求項７】
前記ユーザの視線方向を特定するステップをさらに有し、
前記影響を受けるオブジェクトを特定するステップにおいて、前記付加画像および前記視線方向に基づき、前記影響を受けるオブジェクトを特定する、請求項５または６に記載の仮想空間を提供する方法。
【請求項８】
前記ＨＭＤのロール方向を特定するステップをさらに有し、
前記影響を受けるオブジェクトを特定するステップにおいて、前記付加画像および前記ロール方向に基づき、前記影響を受けるオブジェクトを特定する、請求項５または６に記載の仮想空間を提供する方法。
【請求項９】
請求項１〜８のいずれか１項に記載の仮想空間を提供する方法の各ステップを、コンピュータに実行させるプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間を提供する方法、プログラム、および記録媒体に関する。
【背景技術】
【０００２】
特許文献１には、装着されることによりユーザの両目のそれぞれに対応した画像を表示することで電子的な出版物を表示する表示部と、前記出版物のページをめくる操作を行う物体を検出する検出部と、前記検出部の検出結果に応じて、前記出版物のページのうち、新たな表示されるページに対応付けられたオブジェクトを前記表示部に表示させる制御部とを備える表示装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−７１４９８号公報（２０１４年４月２１日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の表示装置では、仮想空間の状態を変化させるためのユーザの操作が、仮想的な出版物のページをめくったり千切ったりするなどの、ユーザの片手の動きのみに基づく操作に限られている。ユーザが片手でできる動きには限りがあるため、特許文献１の表示装置を用いる場合、ユーザは、限られた範囲内での動きでしか仮想空間の状態を変化させることができない。したがって、仮想空間におけるエンタテインメント性が低いという問題がある。
【０００５】
本発明は前記の課題を解決するためになされたものである。そして、その目的は、仮想空間におけるエンタテインメント性を高めることにある。
【課題を解決するための手段】
【０００６】
前記の課題を解決するために、本開示に係る仮想空間を提供する方法は、ヘッドマウントディスプレイ（以下、ＨＭＤ）を装着したユーザに仮想空間を提供する方法であって、仮想空間を規定するステップと、仮想空間におけるユーザの基準視線を特定するステップと、ユーザの右手の状態を表す情報およびユーザの左手の状態を表す情報を取得するステップと、右手の状態を表す情報および左手の状態の双方に基づく付加画像を、仮想空間に生成するステップと、基準視線に基づき、付加画像とを少なくとも含む視界画像を生成するステップと、視界画像をＨＭＤに表示させるステップとを有する。
【発明の効果】
【０００７】
本開示によれば、仮想空間におけるエンタテインメント性を高めることができる。
【図面の簡単な説明】
【０００８】
【図１】ＨＨＭＤシステムの構成を示す図である。
【図２】制御回路部のハード構成を示す図である。
【図３】ＨＭＤに設定される視野座標系を例示する図である。
【図４】ユーザに提供される仮想空間とＨＭＤとの関係を示す図である。
【図５】視界領域の断面を示す図である。
【図６】ユーザの視線方向を決定する方法を例示する図である。
【図７】コントローラの構成を表す図である。
【図８】制御回路部の機能的構成を示すブロック図である。
【図９】ＨＭＤシステムが仮想空間をユーザに提供する処理の流れを示すシーケンス図である。
【図１０】仮想空間におけるゲームの進行を説明するシーケンス図である。
【図１１】判定テーブルの詳細を示す図である。
【図１２】ディスプレイに表示される視界画像の一例を示す図である。
【図１３】ロックオンによる影響を受けるオブジェクトを特定する方法を説明する図である。
【図１４】ディスプレイに表示される視界画像の他の例を示す図である。
【図１５】ディスプレイに表示される視界画像のさらに他の例を示す図である。
【発明を実施するための形態】
【０００９】
［本発明の実施形態の詳細］
本発明の実施形態に係る仮想空間を提供する方法、および、プログラムの具体例を、以下に図面を参照しつつ説明する。本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
【００１０】
（ＨＭＤシステム１００の構成）
図１は、ＨＭＤシステム１００の構成を示す図である。この図に示すように、ＨＭＤシステム１００は、ＨＭＤ１１０、ＨＭＤセンサ１２０、コントローラセンサ１４０、制御回路部２００、およびコントローラ３００を備えている。
【００１１】
ＨＭＤ１１０は、ユーザの頭部に装着される。ＨＭＤ１１０は、非透過型の表示装置であるディスプレイ１１２、センサ１１４、および注視センサ１３０を備えている。ＨＭＤ１１０は、右目用画像および左目用画像をディスプレイ１１２にそれぞれ表示することにより、ユーザの両目の視差に基づきユーザに立体的に視認される３次元画像を、ユーザに視認させる。これにより仮想空間をユーザに提供する。ディスプレイ１１２がユーザの眼前に配置されているので、ユーザは、ディスプレイ１１２に表示される画像を通じて仮想空間に没入できる。仮想空間は、背景、ならびにユーザが操作可能な各種のオブジェクトおよびメニュー画像等を含む。
【００１２】
ディスプレイ１１２は、右目用画像を表示する右目用サブディスプレイと、左目用画像を表示する左目用サブディスプレイとを含んでもよい。または、ディスプレイ１１２は、右目用画像および左目用画像を共通の画面に表示する１つの表示装置であってもよい。このような表示装置として、たとえば、表示画像が一方の目にしか認識できないようにするシャッターを高速に切り替えることにより、右目用画像および左目用画像を独立して交互に表示する表示装置が挙げられる。
【００１３】
（制御回路部２００のハード構成）
図２は、制御回路部２００のハード構成を示す図である。制御回路部２００は、ＨＭＤ１１０に仮想空間を提供させるためのコンピュータである。図２に示すように、制御回路部２００は、プロセッサ、メモリ、ストレージ、入出力インターフェース、および通信インターフェースを備えている。これらは、データ伝送路としてのバスを通じて、制御回路部２００内において互いに接続されている。
【００１４】
プロセッサは、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro-processing unit）、またはＧＰＵ（Graphics Processing Unit）等を含んで構成され、制御回路部２００およびＨＭＤシステム１００全体の動作を制御する。
【００１５】
メモリは、主記憶として機能する。メモリには、プロセッサによって処理されるプログラムおよび制御用データ（演算パラメータなど）が記憶される。メモリは、ＲＯＭ（Read
Only Memory）またはＲＡＭ（Random Access Memory）等を含んで構成され得る。
【００１６】
ストレージは、補助記憶として機能する。ストレージには、ＨＭＤシステム１００全体の動作を制御するためのプログラム、各種のシミュレーションプログラム、ユーザ認証プログラム、および、仮想空間を規定するための各種のデータ（画像およびオブジェクト等）が格納されている。さらには、各種のデータを管理するためのテーブルを含むデータベースがストレージに構築されていてもよい。ストレージは、フラッシュメモリまたはＨＤＤ（Hard Disc Drive）等を含んで構成され得る。
【００１７】
入出力インターフェースは、ＵＳＢ（Universal Serial Bus）端子、ＤＶＩ（Digital Visual Interface）端子、ＨＤＭＩ（登録商標）（High-Definition Multimedia Interface）端子等の各種の有線接続端子、および、無線接続のための各種の処理回路を含んで構成されている。入出力インターフェースは、ＨＭＤ１１０と、ＨＭＤセンサ１２０およびコントローラセンサ１４０を含む各種のセンサと、コントローラ３００とを互いに接続する。
【００１８】
通信インターフェースは、ネットワークＮＷを介して外部装置と通信するための各種の有線接続端子、および、無線接続のための各種の処理回路を含んで構成される。通信インターフェースは、ＬＡＮ（Local Area Network）またはインターネットを介して通信するための各種の通信規格およびプロトコルに適合するように、構成されている。
【００１９】
制御回路部２００は、ストレージに格納された所定のアプリケーションプログラムをメモリにロードして実行することによって、ユーザに仮想空間を提供する。プログラムの実行時に、メモリおよびストレージには、仮想空間内に配置される各種のオブジェクトを操作したり、各種のメニュー画像等を表示および制御したりするための各種のプログラムが格納される。
【００２０】
制御回路部２００は、ＨＭＤ１１０に搭載されていてもよいし、されていなくてもよい。すなわち制御回路部２００は、ＨＭＤ１１０から独立した別のハードウェア（たとえば、パーソナルコンピュータ、またはネットワークを通じてＨＭＤ１１０と通信可能なサーバ装置）であってもよい。制御回路部２００は、複数のハードウェアの協働によって１または複数の機能が実装される形態の装置であってもよい。または、制御回路部２００が有する全機能のうち一部の機能のみがＨＭＤ１１０に実装され、残りの機能が別のハードウェアに実装されていてもよい。
【００２１】
ＨＭＤシステム１００を構成するＨＭＤ１１０等の各要素には、予め、グローバル座標系が設定されている。このグローバル座標系は、現実空間における、鉛直方向、鉛直方向と直交する横方向、ならびに、鉛直方向および横方向の双方と直交する前後方向にそれぞれ平行な、３つの基準方向（軸）を有する。本実施形態では、グローバル座標系は視点座標系の一種であるため、グローバル座標系における横方向、鉛直方向（上下方向）、および前後方向を、それぞれｘ軸、ｙ軸、ｚ軸とする。具体的には、グローバル座標系のｘ軸は現実空間の横方向に平行であり、ｙ軸は現実空間の鉛直方向に平行であり、ｚ軸は現実空間の前後方向に平行である。
【００２２】
ＨＭＤセンサ１２０は、ＨＭＤ１１０の動きを検出するためのポジション・トラッキング機能を有する。ＨＭＤセンサ１２０は、この機能によって、現実空間内におけるＨＭＤ１１０の位置および傾きを検出する。この検出を実現するために、ＨＭＤ１１０は、図示しない複数の光源を備えている。各光源は、たとえば赤外線を発するＬＥＤである。ＨＭ
Ｄセンサ１２０は、たとえば赤外線センサを含んで構成される。ＨＭＤセンサ１２０は、ＨＭＤ１１０の光源から照射された赤外線を、赤外線センサによって検出することによって、ＨＭＤ１１０の検出点を検出する。さらに、ＨＭＤ１１０の検出点の検出値に基づき、ユーザの動きに応じたＨＭＤ１１０の現実空間内における位置および傾きを検出する。ＨＭＤセンサ１２０は、検出値の経時的変化に基づいて、ＨＭＤ１１０の位置および傾きの時間変化を決定することができる。
【００２３】
ＨＭＤセンサ１２０は、光学カメラを含んで構成されてもよい。この場合、ＨＭＤセンサ１２０は、光学カメラによって得られたＨＭＤ１１０の画像情報に基づいて、ＨＭＤ１１０の位置および傾きを検出する。
【００２４】
ＨＭＤセンサ１２０の代わりに、ＨＭＤ１１０が、センサ１１４を用いて自身の位置および傾きを検出してもよい。この場合、センサ１１４は、たとえば角速度センサ、地磁気センサ、加速度センサ、またはジャイロセンサであればよい。ＨＭＤ１１０は、これらのうち少なくとも１つを用いる。センサ１１４が角速度センサである場合、センサ１１４は、ＨＭＤ１１０の動きに応じて、ＨＭＤ１１０の現実空間における３軸回りの角速度を経時的に検出する。ＨＭＤ１１０は、角速度の検出値に基づき、ＨＭＤ１１０の３軸回りの角度の時間的変化を決定し、さらに、角度の時間的変化に基づきＨＭＤ１１０の傾きを検出することができる。
【００２５】
ＨＭＤ１１０がセンサ１１４による検出値に基づきＨＭＤ１１０の位置および傾きを自ら検出する場合、ＨＭＤシステム１００にＨＭＤセンサ１２０は不要である。逆に、ＨＭＤ１１０から離れた位置に配置されるＨＭＤセンサ１２０がＨＭＤ１１０の位置および傾きを検出する場合、ＨＭＤ１１０にセンサ１１４は不要である。
【００２６】
上述したように、グローバル座標系は現実空間の座標系と平行である。そのため、ＨＭＤセンサ１２０によって検出されたＨＭＤ１１０の各傾きは、グローバル座標系におけるＨＭＤ１１０の３軸周りの各傾きに相当する。ＨＭＤセンサ１２０は、グローバル座標系におけるＨＭＤセンサ１２０の傾きの検出値に基づき、ｕｖｗ視野座標系をＨＭＤ１１０に設定する。ＨＭＤ１１０に設定されるｕｖｗ視野座標系は、ＨＭＤ１１０を装着したユーザが物体を見る際の視点座標系に対応する。
【００２７】
（ｕｗｖ視野座標系）
図３は、ＨＭＤ１１０に設定されるｕｗｖ視野座標系を例示する図である。ＨＭＤセンサ１２０は、ＨＭＤ１１０の起動時に、グローバル座標系におけるＨＭＤ１１０の位置および傾きを検出する。そして、傾きの検出値に基づく３次元のｕｖｗ視野座標系を、ＨＭＤ１１０に設定する。図３に示すように、ＨＭＤセンサ１２０は、ＨＭＤ１１０を装着したユーザの頭部を中心（原点）とした３次元のｕｖｗ視野座標系を、ＨＭＤ１１０に設定する。具体的には、グローバル座標系を規定する横方向、鉛直方向、および前後方向（ｘ軸、ｙ軸、ｚ軸）を、グローバル座標系内においてＨＭＤ１１０の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって得られる新たな３つの方向を、ＨＭＤ１１０におけるｕｖｗ視野座標系のピッチ方向（ｕ軸）、ヨー方向（ｖ軸）、およびロール方向（ｗ軸）として設定する。
【００２８】
図３に示すように、ＨＭＤセンサ１２０は、ＨＭＤ１１０を装着したユーザが直立しかつ正面を視認している場合、グローバル座標系に平行なｕｖｗ視野座標系をＨＭＤ１１０に設定する。この場合、グローバル座標系の横方向（ｘ軸）、鉛直方向（ｙ軸）、および前後方向（ｚ軸）が、そのまま、ＨＭＤ１１０におけるｕｖｗ視野座標系のピッチ方向（ｕ軸）、ヨー方向（ｖ軸）、およびロール方向（ｗ軸）に一致する。
【００２９】
ＨＭＤセンサ１２０は、ＨＭＤ１１０にｕｖｗ視野座標系を設定した後、ＨＭＤ１１０の動きに応じて、現在設定中のｕｖｗ視野座標系におけるＨＭＤ１１０の傾き（傾きの変化量）を検出することができる。この場合、ＨＭＤセンサ１２０は、ＨＭＤ１１０の傾きとして、現在設定中のｕｖｗ視野座標系におけるＨＭＤ１１０のピッチ角（θｕ）、ヨー角（θｖ）、およびロール角（θｗ）をそれぞれ検出する。ピッチ角（θｕ）は、ｕｖｗ視野座標系におけるピッチ方向周りのＨＭＤ１１０の傾き角度である。ヨー角（θｖ）は、ｕｖｗ視野座標系におけるヨー方向周りのＨＭＤ１１０の傾き角度である。ロール角（θｗ）は、ｕｖｗ視野座標系におけるロール方向周りのＨＭＤ１１０の傾き角度である。
【００３０】
ＨＭＤセンサ１２０は、ＨＭＤ１１０の傾きの検出値に基づき、動いた後のＨＭＤ１１０におけるｕｖｗ視野座標系を、新たにＨＭＤ１１０に設定する。ＨＭＤ１１０と、ＨＭＤ１１０のｕｖｗ視野座標系との関係は、ＨＭＤ１１０の位置および傾きによらず常に一定である。ＨＭＤ１１０の位置および傾きが変わると、それの変化に連動して、グローバル座標系におけるＨＭＤ１１０のｕｖｗ視野座標系の位置および傾きが同様に変化する。
【００３１】
ＨＭＤセンサ１２０は、赤外線センサによって取得される赤外線の光強度および複数の検出点間の相対位置関係（検出点間の距離等）に基づいて、ＨＭＤ１１０の現実空間内における位置を、ＨＭＤセンサ１２０に対する相対位置として特定してもよい。また、特定した相対位置に基づいて、現実空間内（グローバル座標系）におけるＨＭＤ１１０のｕｖｗ視野座標系の原点を決定してもよい。また、ＨＭＤセンサ１２０は、複数の検出点間の相対位置関係に基づきＨＭＤ１１０の現実空間内における傾きを検出し、さらに、その検出値に基づき現実空間内（グローバル座標系）におけるＨＭＤ１１０のｕｖｗ視野座標系の向きを決定してもよい。
【００３２】
（仮想空間２の概要）
図４は、ユーザに提供される仮想空間２の概要を説明する図である。この図に示すように、仮想空間２は、中心２１の３６０°方向全体を覆う全天球状の構造を有する。図４には、仮想空間２の全体のうち上半分の天球のみを例示する。仮想空間２には、略正方形または略長方形の複数のメッシュが関連付けられている。仮想空間２における各メッシュの位置は、仮想空間２に規定されるＸＹＺ座標系における座標として、予め規定されている。制御回路部２００は、仮想空間２に展開可能なコンテンツ（静止画、動画等）を構成する各部分画像を、仮想空間２における対応する各メッシュに対応付けることによって、ユーザによって視認可能な仮想空間画像２２が展開される仮想空間２をユーザに提供する。
【００３３】
仮想空間２には、中心２１を原点とするＸＹＺ空間座標系が規定されている。ＸＹＺ座標系は、たとえばグローバル座標系に平行である。ＸＹＺ座標系は視点座標系の一種であるため、ＸＹＺ座標系における横方向、鉛直方向（上下方向）、および前後方向を、それぞれＸ軸、Ｙ軸、Ｚ軸とする。すなわち、ＸＹＺ座標系のＸ軸（横方向）がグローバル座標系のｘ軸と平行であり、ＸＹＺ座標系のＹ軸（上下方向）がグローバル座標系のｙ軸と平行であり、ＸＹＺ座標系のＺ軸（前後方向）がグローバル座標系のｚ軸と平行である。
【００３４】
ＨＭＤ１１０の起動時（初期状態）において、仮想空間２の中心２１に仮想カメラ１が配置されている。仮想カメラ１は、現実空間内におけるＨＭＤ１１０の動きに連動して、仮想空間２内において同様に動く。これにより、現実空間内におけるＨＭＤ１１０の位置および向きの変化が、仮想空間２内において同様に再現される。
【００３５】
仮想カメラ１には、ＨＭＤ１１０と同様にｕｖｗ視野座標系が規定される。仮想空間２内における仮想カメラ１のｕｖｗ視野座標系は、現実空間（グローバル座標系）内におけるＨＭＤ１１０のｕｖｗ視野座標系に変動するように規定されている。したがって、ＨＭＤ１１０の傾きが変化すると、それに連動して仮想カメラ１の傾きも変化する。仮想カメ
ラ１は、ＨＭＤ１１０を装着したユーザの現実空間における移動に連動して、仮想空間２において移動することもできる。
【００３６】
仮想空間２における仮想カメラ１の位置および傾きに応じて、仮想空間２における仮想カメラ１の向きが決まる。これにより、仮想空間２に展開される仮想空間画像２２をユーザが視認する際の基準となる視線（基準視線５）が決まる。制御回路部２００は、基準視線５に基づき、仮想空間２における視界領域２３を決定する。視界領域２３は、仮想空間２のうち、ＨＭＤ１１０を装着したユーザの視界に対応する領域である。
【００３７】
図５は、視界領域２３の断面を示す図である。図５の（ａ）に、仮想空間２において視界領域２３をＸ方向から見たＹＺ断面を示す。図５の（ｂ）に、仮想空間２において視界領域２３をＹ方向から見たＸＺ断面を示す。視界領域２３は、基準視線５と仮想空間２のＹＺ断面とによって定義される範囲である第１領域２４（図５の（ａ）参照）と、基準視線５と仮想空間２のＸＺ断面とによって定義される範囲である第２領域２５（図５の（ｂ）参照）とを有する。制御回路部２００は、仮想空間２における基準視線５を中心として極角αを含む範囲を、第１領域２４として設定する。また、仮想空間２における基準視線５を中心とした方位角βを含む範囲を、第２領域２５として設定する。
【００３８】
ＨＭＤシステム１００は、仮想空間画像２２のうち視界領域２３に重畳する部分である視界画像２６をＨＭＤ１１０のディスプレイ１１２に表示させることによって、ユーザに仮想空間２を提供する。ユーザがＨＭＤ１１０を動かせば、それに連動して仮想カメラ１も動き、その結果、仮想空間２における視界領域２３の位置が変化する。これによりディスプレイ１１２に表示される視界画像２６が、仮想空間画像２２のうち、仮想空間２においてユーザが向いた箇所（＝視界領域２３）に重畳する画像に更新される。したがってユーザは、仮想空間２における所望の箇所を視認することができる。
【００３９】
ユーザは、ＨＭＤ１１０を装着している間、現実世界を目にすることなく、仮想空間２に展開される仮想空間画像２２のみを視認する。そのためＨＭＤシステム１００は、仮想空間２への高い没入感覚をユーザに与えることができる。
【００４０】
制御回路部２００は、ＨＭＤ１１０を装着したユーザの現実空間における移動に連動して、仮想カメラ１を仮想空間２内において移動させてもよい。この場合、制御回路部２００は、仮想カメラ１の仮想空間２内における位置および向きに基づいて、仮想空間２のうちＨＭＤ１１０のディスプレイ１１２に投影されることによってユーザが視認する視界領域２３を特定する。
【００４１】
仮想カメラ１は、右眼用画像を提供する右眼用仮想カメラと、左眼用画像を提供する左眼用仮想カメラとを含むことが好ましい。さらに、２つの仮想カメラには、ユーザが三次元の仮想空間２を認識できるように適切な視差が設定されていることが好ましい。本実施形態では、このような２つの仮想カメラのロール方向が合成されることによって生成されるロール方向（ｗ）がＨＭＤ１１０のロール方向（ｗ）に適合されるような仮想カメラ１のみを、代表して図示および説明するものとする。
【００４２】
（視線方向の検出）
注視センサ１３０は、ユーザの右目および左目の視線が向けられる方向（視線方向）を検出するアイトラッキング機能を有する。注視センサ１３０として、アイトラッキング機能を有する公知のセンサを採用することができる。注視センサ１３０は、右目用センサおよび左目用センサを備えていることが好ましい。注視センサ１３０は、たとえば、ユーザの右目および左目に赤外光を照射すると共に、照射光に対する角膜および虹彩からの反射光を受光することによって、各眼球の回転角を検出するセンサでもよい。注視センサ１３
０は、検出した各回転角に基づき、ユーザの視線方向を検知することができる。
【００４３】
注視センサ１３０によって検出されるユーザの視線方向は、ユーザが物体を視認する際の視点座標系における方向である。上述したように、ＨＭＤ１１０のｕｖｗ視野座標系は、ユーザがディスプレイ１１２を視認する際の視点座標系に等しい。また、仮想カメラ１のｕｖｗ視野座標系は、ＨＭＤ１１０のｕｖｗ視野座標系に連動している。したがってＨＭＤシステム１００では、注視センサ１３０によって検出されたユーザの視線方向を、仮想カメラ１のｕｖｗ視野座標系におけるユーザの視線方向と見なすことができる。
【００４４】
図６は、ユーザの視線方向を決定する方法を例示する図である。この図に示すように、注視センサ１３０は、ユーザＵの右目および左目の視線を検出する。ユーザＵが近くを見ている場合、注視センサ１３０は、ユーザＵの視線Ｒ１およびＬ１を検出する。ユーザが遠くを見ている場合、注視センサ１３０は、ユーザの視線Ｒ１およびＬ１よりも、ＨＭＤ１１０のロール方向（ｗ）とのなす角が小さい視線Ｒ２およびＬ２を特定する。注視センサ１３０は、検出値を制御回路部２００に送信する。
【００４５】
制御回路部２００は、視線の検出値として視線Ｒ１およびＬ１を受信した場合、両者の交点である注視点Ｎ１を特定する。一方、視線Ｒ２およびＬ２を受信した場合も、両者の交点である注視点Ｎ１（不図示）を特定する。制御回路部２００は、特定した注視点Ｎ１に基づき、ユーザＵの視線方向Ｎ０を検出する。制御回路部２００は、たとえば、ユーザＵの右目Ｒと左目Ｌとを結ぶ直線の中点と、注視点Ｎ１とを通る直線の伸びる方向を、視線方向Ｎ０として検出する。視線方向Ｎ０は、ユーザＵが両目により実際に視線を向けている方向である。視線方向Ｎ０はまた、視界領域２３に対してユーザＵが実際に視線を向けている方向でもある。
【００４６】
ＨＭＤシステム１００は、ＨＭＤシステム１００を構成するいずれかの要素に、マイクおよびスピーカを備えていてもよい。これにより、ユーザは仮想空間２内に対して、音声による指示を与えることができる。また、仮想空間内の仮想テレビにテレビ番組の放送を受信するために、ＨＭＤシステム１００はいずれかの要素にテレビジョン受像機を含んでいても良い。また、ユーザが取得した電子メール等を表示させるための、通信機能等を含んでいても良い。
【００４７】
（コントローラ３００）
図７は、コントローラ３００の構成を表す図である。コントローラ３００は、ユーザがコンピュータゲーム内のオブジェクトの動きを制御するために用いる装置である。図１および図７に示すように、コントローラ３００は、ユーザが右手に持って使用する右コントローラ３２０と、ユーザが左手に持って使用する左コントローラ３３０とからなる。右コントローラ３２０および左コントローラ３３０は、それぞれ別体の装置として構成される。ユーザは、右コントローラ３２０を持った右手と、左コントローラ３３０を持った左手とを、相互に自由に動かすことができる。
【００４８】
図１および図７に示すように、右コントローラ３２０および左コントローラ３３０は、それぞれ、操作ボタン３０２、赤外線ＬＥＤ（Light Emitting Diode）３０４、センサ３０６、およびトランシーバ３０８を備えている。後述するように、右コントローラ３２０および左コントローラ３３０は、赤外線ＬＥＤ３０４およびセンサ３０６のうちいずれか一方のみを備えていてもよい。
【００４９】
操作ボタン３０２は、コントローラ３００に対するユーザからの操作入力を受け取るように構成された複数のボタン群である。本実施形態では、操作ボタン３０２は、プッシュ式ボタン、トリガー式ボタン、およびアナログスティックを含む。
【００５０】
プッシュ式ボタンは、親指で下向きに押下する動作によって操作するように構成されたボタンである。右コントローラ３２０は、プッシュ式ボタンとして、天面３２２上に親指ボタン３０２ａおよび３０２ｂを備えている。左コントローラ３３０は、プッシュ式ボタンとして、天面３３２上に２つの親指ボタン３０２ｃおよび３０２ｄを備えている。親指ボタン３０２ａおよび３０２ｂは、いずれも右手の親指によって操作（押下）される。親指ボタン３０２ｃおよび３０２ｄは、いずれも左手の親指によって操作（押下）される。
【００５１】
トリガー式ボタンは、人差し指または中指で引き金を引くような動作によって操作するように構成されたボタンである。右コントローラ３２０は、トリガー式ボタンとして、グリップ３２４の前面部分に人差し指ボタン３０２ｅを備えており、さらに、グリップ３２４の側面部分に中指ボタン３０２ｆを備えている。左コントローラ３３０は、トリガー式ボタンとして、グリップ３３４の前面部分に人差し指ボタン３０２ｇを備えており、さらに、グリップ３３４の側面部分に中指ボタン３０２ｈを備えている。人差し指ボタン３０２ｅ、中指ボタン３０２ｆ、人差し指ボタン３０２ｇ、および中指ボタン３０２ｈは、それぞれ右手の人差し指、右手の中指、左手の人差し指、および左手の中指によって操作（押下）される。
【００５２】
右コントローラ３２０は、親指ボタン３０２ａおよび３０２ｂ、人差し指ボタン３０２ｅ、ならびに中指ボタン３０２ｆの押下状態をそれぞれ検出し、これらの検出値を制御回路部２００に出力する。一方、左コントローラ３３０は、親指ボタン３０２ｃおよび３０２ｄ、人差し指ボタン３０２ｇ、ならびに中指ボタン３０２ｈの押下状態をそれぞれ検出し、これらの検出値を制御回路部２００に出力する。
【００５３】
本実施形態では、右コントローラ３２０および左コントローラ３３０の各ボタンの押下状態の検出値は、０から１のいずれかの値を取り得る。たとえば、ユーザが親指ボタン３０２ａをまったく押下していない場合、親指ボタン３０２ａの押下状態として「０」が検出される。一方、ユーザが親指ボタン３０２ａを完全に（最も深く）押下している場合、親指ボタン３０２ａの押下状態として「１」が検出される。
【００５４】
アナログスティックは、所定のニュートラル位置から３６０°任意の方向へ傾けて操作することが可能なスティック型のボタンである。右コントローラ３２０の天面３２２上にアナログスティック３０２ｉが設けられ、左コントローラ３３０の天面３３２上にアナログスティック３０２ｊが設けられる。アナログスティック３０２ｉおよび３０２ｊは、それぞれ右手および左手の親指によって操作される。
【００５５】
右コントローラ３２０および左コントローラ３３０は、それぞれ、グリップ（３２４および３３４）の両側面から天面（３２２および３３２）とは反対側の方向へ延びて半円状のリングを形成するフレーム３２６および３３６を備えている。各フレーム３２６および３３６の外表面には、複数の赤外線ＬＥＤ３０４が埋め込まれている。複数（たとえば１０個程度）の赤外線ＬＥＤ３０４が、フレーム３２６、３３６の円周方向に沿って一列に並んで設けられる。フレーム３２６および３３６の円周方向に沿って、複数列（たとえば２列）の赤外線ＬＥＤ３０４が配置されていてもよい。
【００５６】
ユーザがコントローラ３００を握る際、ユーザの各指はグリップ（３２４または３３４）とフレーム（３２６または３３６）との間にある。したがって、各フレーム３２６および３３６の外表面に配置された赤外線ＬＥＤ３０４は、ユーザの手または指によって覆い隠されてしまうことはない。フレーム３２６および３３６の外表面に加えて、さらに、グリップ３２４および３３４の表面のうちユーザの指で隠されない部分にも、赤外線ＬＥＤ３０４が設けられていてもよい。赤外線ＬＥＤ３０４は、コンピュータゲームのプレイ中
に赤外線を発光する。赤外線ＬＥＤ３０４から発せられた赤外光は、右コントローラ３２０および左コントローラ３３０のそれぞれの位置および傾きを検出するために利用される。
【００５７】
右コントローラ３２０および左コントローラ３３０は、赤外線ＬＥＤ３０４の代わりに、または赤外線ＬＥＤ３０４に加えて、さらにセンサ３０６を内蔵する。センサ３０６は、たとえば磁気センサ、角速度センサ、若しくは加速度センサのいずれか、またはこれらの組み合わせであってよい。センサ３０６によっても、右コントローラ３２０および左コントローラ３３０の位置および傾きを検出することができる。
【００５８】
センサ３０６は、ユーザが右コントローラ３２０および左コントローラ３３０をそれぞれ右手および左手で持って動かした際、右コントローラ３２０および左コントローラ３３０の向きおよび動きに応じた値（磁気、角速度、または加速度の値）を、出力する。制御回路部２００は、センサ３０６からの出力値を適宜の方法によって加工することによって、右コントローラ３２０および左コントローラ３３０のそれぞれの位置および傾きを検出することができる。
【００５９】
トランシーバ３０８は、右コントローラ３２０および左コントローラ３３０と、制御回路部２００との間でデータを送受信するように構成される。トランシーバ３０８は、ユーザが操作ボタン３０２を介して右コントローラ３２０または左コントローラ３３０に与えた操作入力に基づくデータを、制御回路部２００へ送信する。また、トランシーバ３０８は、赤外線ＬＥＤ３０４の発光を右コントローラ３２０または左コントローラ３３０に指示する命令を、制御回路部２００から受信する。さらに、トランシーバ３０８は、センサ３０６によって検出した各種の値に対応するデータを、制御回路部２００へ送信する。
【００６０】
右コントローラ３２０および左コントローラ３３０は、ユーザの手に振動による触覚フィードバックを伝えるためのバイブレータを備えていてもよい。この構成では、トランシーバ３０８は、上述した各データの送受信に加えて、バイブレータに触覚フィードバックを行わせるための命令を制御回路部２００から受信することができる。トランシーバ３０８は、無線通信によってデータを送受信するように構成されるのが好適である。この構成では、右コントローラ３２０および左コントローラ３３０に有線通信用のケーブルが接続されないので、ユーザは、右コントローラ３２０を持った右手および左コントローラ３３０を持った左手を、より自由にそれぞれ動かせる。
【００６１】
コントローラセンサ１４０は、右コントローラ３２０および左コントローラ３３０の動きを検出するためのポジション・トラッキング機能を有する。コントローラセンサ１４０は、この機能によって、現実空間内における右コントローラ３２０および左コントローラ３３０の位置および傾きを検出する。この検出を実現するために、コントローラセンサ１４０は、右コントローラ３２０および左コントローラ３３０の赤外線ＬＥＤ３０４から発せられた赤外光を、それぞれ検出する。コントローラセンサ１４０は、たとえば、赤外波長領域において画像を撮像する赤外カメラを備えており、この赤外カメラによって撮像した画像のデータに基づき、右コントローラ３２０および左コントローラ３３０の位置および傾きを検出する。
【００６２】
赤外カメラによって撮像された画像は、右コントローラ３２０および左コントローラ３３０の表面に埋め込まれている多数の赤外線ＬＥＤ３０４の配置を反映した明暗画像である。ある１つの撮像画像には、互いに左右に離れた２つの明点の集団が含まれ得る。２つの集団のうち左側の集団は、ユーザが右手で持っている右コントローラ３２０の赤外線ＬＥＤ３０４に対応する。右側の集団は、ユーザが左手で持っている左コントローラ３３０の赤外線ＬＥＤ３０４に対応する。コントローラセンサ１４０は、左側の集団を構成して
いる明点の並んでいる方向から、右コントローラ３２０の傾きを検出する。たとえば、明点が撮像画像内で横方向（即ち水平方向）に並んでいる場合、右コントローラ３２０の傾きを、フレーム３２６が水平に保持された傾きとして検出すればよい。また、撮像画像内で明点の並んでいる方向が横方向からある角度だけ斜めになっている場合、右コントローラ３２０の傾きを、フレーム３２６が水平から当該角度だけ傾いた傾きとして検出すればよい。同様に、コントローラセンサ１４０は、撮像画像内における右側の集団を構成している明点の並んでいる方向から、左コントローラ３３０の傾きを検出する。
【００６３】
コントローラセンサ１４０は、撮像画像内の明点（赤外線ＬＥＤ３０４）を識別することによって、右コントローラ３２０および左コントローラ３３０の位置をそれぞれ検出する。たとえば、撮像画像から検出したされた２つの明点の集団のうち、左側の集団を構成している複数の明点の重心位置を、右コントローラ３２０の位置として検出する。さらに、右側の集団を構成している複数の明点の重心位置を、左コントローラ３３０の位置として検出する。
【００６４】
コントローラセンサ１４０の代わりに、右コントローラ３２０および左コントローラ３３０が、センサ３０６を用いて自身の位置および傾きを検出してもよい。この場合、たとえば、右コントローラ３２０の三軸角速度センサ（センサ３０６）が、右コントローラ３２０の３つの直交する各軸回りの回転を検出する。右コントローラ３２０は、各検出値に基づいて、右コントローラ３２０がどちらの方向にどれだけ回転したかを検出し、さらに、逐次検出した回転方向と回転量とを累積することによって、右コントローラ３２０の傾きを算出する。同様に、左コントローラ３３０は、左コントローラ３３０の三軸角速度センサ（センサ３０６）からの検出値を用いて、左コントローラ３３０の傾きを算出すればよい。右コントローラ３２０および左コントローラ３３０は、三軸角速度センサの検出値に加えて、たとえば三軸磁気センサおよび／または三軸加速度センサからの検出値を併用してもよい。
【００６５】
詳細な説明は省略するが、右コントローラ３２０は、三軸角速度センサ（センサ３０６）からの検出値を用いて、右コントローラ３２０の位置を検出することができる。また、左コントローラ３３０は、三軸角速度センサ（センサ３０６）からの検出値を用いて、左コントローラ３３０の位置を検出することができる。
【００６６】
（制御回路部２００の機能的構成）
図８は、制御回路部２００の機能的構成を示すブロック図である。制御回路部２００は、ＨＭＤセンサ１２０、コントローラセンサ１４０、注視センサ１３０、およびコントローラ３００から受信した各種のデータを用いることによって、ユーザに提供される仮想空間２を制御すると共に、ＨＭＤ１１０のディスプレイ１１２への画像表示を制御する。図８に示すように、制御回路部２００は、検出部２１０、表示制御部２２０、仮想空間制御部２３０、記憶部２４０、および通信部２５０を備えている。制御回路部２００は、図２に示す各ハードウェアの協働によって、検出部２１０、表示制御部２２０、仮想空間制御部２３０、記憶部２４０、および通信部２５０として機能する。検出部２１０、表示制御部２２０、および仮想空間制御部２３０は、主としてプロセッサおよびメモリの協働によってその機能が実現され得る。記憶部２４０は、主としてメモリおよびストレージの協働によってその機能が実現され得る。通信部２５０は、主としてプロセッサおよび通信インターフェースの協働によってその機能が実現され得る。
【００６７】
検出部２１０は、制御回路部２００に接続される各種のセンサ（ＨＭＤセンサ１２０等）から検出値を受信する。また、必要に応じて、受信した検出値を用いた所定の処理を実行する。検出部２１０は、ＨＭＤ検出部２１１、視線検出部２１２、およびコントローラ検出部２１３を備えている。ＨＭＤ検出部２１１は、ＨＭＤ１１０およびＨＭＤセンサ１
２０から検出値をそれぞれ受信する。視線検出部２１２は、注視センサ１３０から検出値を受信する。コントローラ検出部２１３は、コントローラセンサ１４０、右コントローラ３２０、および左コントローラ３３０から、それぞれの検出値を受信する。
【００６８】
表示制御部２２０は、ＨＭＤ１１０のディスプレイ１１２への画像表示を制御する。表示制御部２２０は、仮想カメラ制御部２２１、視界領域決定部２２２、および視野画像生成部２２３を備えている。仮想カメラ制御部２２１は、仮想空間２内に仮想カメラ１を配置すると共に、仮想空間２内における仮想カメラ１の挙動を制御する。視界領域決定部２２２は、視界領域２３を決定する。視野画像生成部２２３は、決定された視界領域２３に基づき、ディスプレイ１１２に表示される視界画像２６を生成する。
【００６９】
仮想空間制御部２３０は、ユーザに提供される仮想空間２を制御する。仮想空間制御部２３０は、仮想空間規定部２３１、仮想手制御部２３２、関係判定部２３３、付加オブジェクト制御部２３４、影響対象特定部２３５、および影響反映部２３６を備えている。
【００７０】
仮想空間規定部２３１は、ユーザに提供される仮想空間２を表す仮想空間データを生成することによって、ＨＭＤシステム１００における仮想空間２を規定する。仮想手制御部２３２は、ユーザによる右コントローラ３２０および左コントローラ３３０の操作に応じたユーザの各仮想手（仮想右手および仮想左手）を仮想空間２内に配置すると共に、仮想空間２内における各仮想手の挙動を制御する。関係判定部２３３は、仮想空間２内におけるユーザの仮想手同士の位置関係を判定する。付加オブジェクト制御部２３４は、判定された位置関係に基づく付加オブジェクトを仮想空間２内に配置すると共に、仮想空間２における付加オブジェクトの挙動を制御する。付加オブジェクトとは、仮想右手および仮想左手が仮想空間２において特定の関係を満たす場合に仮想空間２に規定されるオブジェクトである。言い換えると、付加オブジェクトは、ユーザの右手の状態を表す情報およびユーザの左手の状態を表す情報の双方に基づき仮想空間２に生成される付加画像の一種である。影響対象特定部２３５は、仮想空間２において付加オブジェクトによる影響を受けるオブジェクトを特定する。影響反映部２３６は、特定されたオブジェクトへの影響を仮想空間２に反映させる。
【００７１】
記憶部２４０は、制御回路部２００が仮想空間２をユーザに提供するために用いる各種のデータを格納している。記憶部２４０は、雛形格納部２４１、コンテンツ格納部２４２、および判定テーブル２４３を備えている。雛形格納部２４１は、仮想空間２の雛形を表す各種の雛形データを格納している。コンテンツ格納部２４２は、仮想空間２において再生可能な各種のコンテンツを格納している。判定テーブル２４３は、仮想空間２における仮想右手と仮想左手との関係の判定に用いられる各種の判定値を格納している。
【００７２】
通信部２５０は、ネットワークＮＷを介して外部機器４００（たとえばゲームサーバ）との間でデータを送受信する。
【００７３】
（仮想空間２の提供処理）
図９は、ＨＭＤシステム１００が仮想空間２をユーザに提供する処理の流れを示すシーケンス図である。仮想空間２は、基本的に、ＨＭＤ１１０および制御回路部２００の協働によってユーザに提供される。図９に示す処理が開始されると、まず、Ｓ１において、仮想空間規定部２３１が、ユーザに提供される仮想空間２を表す仮想空間データを生成することによって、仮想空間２を規定する。生成の手順は次の通りである。まず仮想空間規定部２３１は、仮想空間２の雛形データを、雛形格納部２４１から取得する。雛形データは、仮想空間２の空間構造を規定する空間構造データを有する。空間構造データは、たとえば、中心２１を中心とする３６０°の全天球の空間構造を規定するデータである。雛形データは、仮想空間２のＸＹＺ座標系を規定するデータをさらに有する。雛形データは、天
球を構成する各メッシュのＸＹＺ座標系における位置を特定する座標データをさらに有する。また、雛形データは、仮想空間２内にオブジェクトを配置可能であるか否かを示すフラグをさらに有する。コンテンツには、ＨＭＤ１１０の初期状態（起動時）にユーザに見せる画像を向いた初期方向が、予め規定されている。
【００７４】
仮想空間規定部２３１は、さらに、仮想空間２において再生されるコンテンツを、コンテンツ格納部２４２から取得する。本実施形態では、このコンテンツはゲームコンテンツである。コンテンツは、ゲームの背景画像、および、ゲームに登場するオブジェクト（キャラクタ、アイテム等）を規定するデータを少なくとも有する。
【００７５】
仮想空間規定部２３１は、取得した雛形データに、取得したコンテンツを適合することによって、仮想空間２を規定する仮想空間データを生成する。仮想空間規定部２３１は、仮想空間データにおいて、仮想空間２の天球を構成する各メッシュの管理データに、コンテンツに含まれる背景画像を構成する各部分画像を適宜関連付ける。仮想空間規定部２３１は、コンテンツに規定される初期方向を仮想空間２のＸＹＺ座標系におけるＺ方向に合致させるように、各部分画像と各メッシュとを関連付けることが好ましい。
【００７６】
仮想空間規定部２３１は、さらに、コンテンツに含まれる各オブジェクトの管理データを、仮想空間データに追加する。その際、各管理データに、対応するオブジェクトが仮想空間２において配置される位置を表す座標を、設定する。これにより各オブジェクトが、仮想空間２における当該座標の位置にそれぞれ配置される。
【００７７】
その後、ユーザによってＨＭＤ１１０が起動されると、Ｓ２において、ＨＭＤセンサ１２０が、ＨＭＤ１１０の初期状態における位置および傾きを検出して、Ｓ３において、検出値を制御回路部２００に出力する。ＨＭＤ検出部２１１は、この検出値を受信する。この後、Ｓ４において、仮想カメラ制御部２２１は、仮想空間２において仮想カメラ１を初期化する。
【００７８】
初期化の手順は次の通りである。まず仮想カメラ制御部２２１は、仮想空間２内における初期位置（図４における中心２１等）に、仮想カメラ１を配置する。次に、仮想空間２における仮想カメラ１の向きを設定する。その際、仮想カメラ制御部２２１は、ＨＭＤセンサ１２０からの検出値に基づき初期状態のＨＭＤ１１０のｕｖｗ視野座標系を特定すると共に、ＨＭＤ１１０のｕｖｗ視野座標系に一致するｕｖｗ視野座標系を仮想カメラ１に設定することによって、仮想カメラ１の向きを設定すればよい。
【００７９】
視界領域決定部２２２は、仮想カメラ１のｕｖｗ視野座標系に基づいて、仮想空間２における視界領域２３を決定する（詳細は後述する）。Ｓ５において、視界画像生成部２２３は、仮想空間データを処理することによって、仮想空間２に展開される仮想空間画像２２の全体のうち、仮想空間２における視界領域２３に投影される部分に相当する視界画像２６を生成（レンダリング）する。Ｓ６において、視野画像生成部２２３は、生成した視界画像２６を初期視界画像としてＨＭＤ１１０に出力する。Ｓ７において、ＨＭＤ１１０は、受信した初期視界画像をディスプレイ１１２に表示する。これによりユーザは初期視界画像を視認する。
【００８０】
その後、Ｓ８において、ＨＭＤセンサ１２０が、ＨＭＤ１１０の現在の位置および傾きを検出して、Ｓ９において、これらの検出値を制御回路部２００に出力する。ＨＭＤ検出部２１１は、各検出値を受信する。仮想カメラ制御部２２１は、ＨＭＤ１１０の位置および傾きの検出値に基づき、ＨＭＤ１１０における現在のｕｖｗ視野座標系を特定する。さらに、Ｓ１０において、仮想カメラ制御部２２１は、ＸＹＺ座標系におけるｕｖｗ視野座標系のロール方向（ｗ軸）を、ＨＭＤ１１０の視界方向として特定する。
【００８１】
本実施形態では、Ｓ１１において、仮想カメラ制御部２２１が、特定したＨＭＤ１１０の視界方向を、仮想空間２におけるユーザの基準視線５として特定する。Ｓ１２において、仮想カメラ制御部２２１は、特定した基準視線５に基づき、仮想カメラ１を制御する。仮想カメラ制御部２２１は、基準視線５の位置（起点）および方向が仮想カメラ１の初期状態と同一であれば、仮想カメラ１の位置および方向をそのまま維持する。一方、基準視線５の位置（起点）および／または方向が、仮想カメラ１の初期状態から変化していれば、仮想空間２内における仮想カメラ１の位置および／または傾きを、変化後の基準視線５に応じた位置および／または傾きに変更する。また、制御後の仮想カメラ１に対してｕｖｗ視野座標系を再設定する。
【００８２】
Ｓ１３において、視界領域決定部２２２は、特定した基準視線５に基づき、仮想空間２における視界領域２３を決定する。その後、Ｓ１４において、視界画像生成部２２３は、仮想空間データを処理することによって、仮想空間２に展開される仮想空間画像２２の全体のうち、仮想空間２における視界領域２３に投影（重畳）される部分である視界画像２６を生成（レンダリング）する。Ｓ１５において、視野画像生成部２２３は、生成した視界画像２６を更新用の視界画像としてＨＭＤ１１０に出力する。Ｓ１６において、ＨＭＤ１１０は、受信した視界画像２６をディスプレイ１１２に表示することによって、視界画像２６を更新する。これにより、ユーザがＨＭＤ１１０を動かせば、それに連動して視界画像２６が更新される。
【００８３】
（仮想空間ゲームの提供）
本実施形態では、ユーザは、右コントローラ３２０および左コントローラ３３０を操作することによって、仮想空間２内においてシューティングゲームをプレイする。たとえばユーザは、仮想空間内に登場する敵キャラクタを、短距離攻撃用の武器（剣など）または遠距離攻撃用の武器（銃など）を用いて攻撃する。
【００８４】
図１０は、仮想空間２におけるゲームの進行を説明するフローチャートである。図１０の処理が開始されると、Ｓ２１において、コントローラセンサ１４０は、右コントローラ３２０の位置および傾き、ならびに、左コントローラ３３０の位置および傾きをそれぞれ検出する。Ｓ２２において、ＨＭＤセンサ１２０は、各検出値を制御回路部２００に送信する。コントローラ検出部２１３は、これらの検出値を受信する。
【００８５】
次に、Ｓ２３において、コントローラ３００が、各ボタンの押下状態を検出する。具体的には、右コントローラ３２０は、親指ボタン３０２ａ、人差し指ボタン３０２ｅ、および中指ボタン３０２ｆの押下状態をそれぞれ検出する。一方、左コントローラ３３０は、親指ボタン３０２ｃ、人差し指ボタン３０２ｇ、および中指ボタン３０２ｈの押下状態をそれぞれ検出する。Ｓ２４において、右コントローラ３２０および左コントローラ３３０は、各検出値を制御回路部２００に送信する。コントローラ検出部２１３は、これらの検出値を受信する。
【００８６】
この後、Ｓ２５において、仮想手制御部２３２が、受信された各検出値を用いて、ユーザの各仮想手（仮想右手および仮想左手）を、仮想空間２に生成する。具体的には、仮想右手を規定するデータおよび仮想左手を規定するデータをそれぞれ生成し、仮想空間データに追加する。
【００８７】
仮想手制御部２３２は、右コントローラ３２０位置および傾きの検出値、ならびに右コントローラ３２０の各ボタンの押下状態の検出値を用いて、ユーザの仮想右手を規定する。その際、仮想空間２における仮想右手の位置として、グローバル座標系における右コントローラ３２０の位置を規定する。仮想手制御部２３２は、さらに、右コントローラ３２
０の傾きの検出値に基づき、右コントローラ３２０に設定されたｕｖｗ視野座標系に連動するｕｖｗ視野座標系を仮想右手に設定することによって、仮想空間２内における仮想右手の傾きを規定する。
【００８８】
仮想手制御部２３２は、さらに、右コントローラ３２０の親指ボタン３０２ａ、人差し指ボタン３０２ｅ、および中指ボタン３０２ｆの各検出値に基づき、仮想右手を構成する右親指、右人差し指、および右中指の表示状態を規定する。なお、右薬指および右小指の表示状態は、右中指に合致させるように規定する。
【００８９】
仮想手制御部２３２は、あるボタンの押下状態の検出値が「０」の場合、そのボタンに対応する仮想手の指の表示状態として、指を完全に伸ばした状態を規定する。一方、あるボタンの押下状態が「１」の場合、そのボタンに対応する仮想手の指の表示状態として、指を完全に折り曲げた状態を規定する。また、あるボタンの押下状態が「中間（０と１との間の値）」の場合、そのボタンに対応する仮想手の指の表示状態として、押下状態に応じた程度に指を折り曲げた表示状態を規定する。
【００９０】
同様に、仮想手制御部２３２は、左コントローラ３３０の各検出値に基づき、仮想空間２における仮想左手の位置、傾き、および各指の状態を規定する。これらの処理によって、仮想手制御部２３２は、仮想右手および仮想左手を、仮想空間２に配置する。この後、Ｓ２６において、関係判定部２３３は、判定テーブル２４３を参照することによって、仮想空間２における仮想右手と仮想左手との関係を判定する。
【００９１】
図１１は、判定テーブル２４３の詳細を示す図である。判定テーブル２４３は、複数の行および列によって構成されており、行ごとに、付加オブジェクトの種類（名称）、右コントローラ３２０の各ボタンの押下状態、位置、および傾きの各判定値、左コントローラ３３０の各ボタンの押下状態、位置、および傾きの各判定値、ならびに付加オブジェクトへの視線の各判定値を、互いに関連づけて格納している。
【００９２】
仮想空間２における仮想右手の状態（位置、傾き、各指の曲げ具合）は、右コントローラ３２０の各検出値によって決まる。同様に、仮想空間２における仮想左手の状態（位置、傾き、各指の曲げ具合）は、左コントローラ３３０の各検出値によって決まる。そこで関係判定部２３３は、仮想右手および仮想左手が特定の関係を満たすか否かを、右コントローラ３２０および左コントローラ３３０の各検出値と、判定テーブル２４３に格納されている各判定値とを照合することによって、判定する。
【００９３】
関係判定部２３３は、右コントローラ３２０の各検出値に一致する右コントローラ３２０の各判定値と、左コントローラ３３０の各検出値に一致する左コントローラ３３０の各判定値とが、判定テーブル２４３内において互いに関連付けて格納されている場合、仮想右手および仮想左手が特定の関係を満たすと判定する。具体的には、関係判定部２３３は、右コントローラ３２０の各検出値に一致する右コントローラ３２０の判定値と、左コントローラ３３０の各検出値に一致する左コントローラ３３０の判定値とを格納している行を、判定テーブル２４３から検索する。関係判定部２３３は、そのような行を判定テーブル２４３から発見した場合、仮想右手および仮想左手が特定の関係を満たすと判定する。
【００９４】
Ｓ２７において、付加オブジェクト制御部２３４は、関係判定部２３３による判定結果に応じた付加オブジェクトを、仮想空間２に生成する。具体的には、付加オブジェクト制御部２３４は、発見された行に格納されている付加オブジェクトの名称を、判定テーブル２４３から取得し、その名称の付加オブジェクトを規定するデータを生成して仮想空間データに追加する。付加オブジェクト制御部２３４は、仮想空間２における付加オブジェクトの位置を、仮想右手および仮想左手の位置に関連した位置に設定する。たとえば、仮想
右手と仮想左手との中間位置を、仮想空間２における付加オブジェクトの位置として設定する。付加オブジェクト制御部２３４は、仮想右手および仮想左手が特定の関係に無いと判定された場合、付加オブジェクトを仮想空間２に生成しない。
【００９５】
この後、Ｓ２８において、注視センサ１３０は、ユーザの右目の視線および左目の視線をそれぞれ検出し、Ｓ２９において、各検出値を制御回路部２００に送信する。視線検出部２１２が、この検出値を受信する。Ｓ３０において、視線検出部２１２は、受信した検出値を用いて、仮想カメラ１のｕｖｗ視野座標系におけるユーザの視線方向Ｎ０を特定する。
【００９６】
次に、Ｓ３１において、影響対象特定部２３５は、仮想空間２内に配置される各オブジェクトのうち、付加オブジェクトによる影響を受けるオブジェクトを特定する。影響対象特定部２３５は、たとえば、仮想空間２内において、付加オブジェクトに規定される表示範囲内に位置するオブジェクトを、付加オブジェクトによる影響を受けるオブジェクトとして特定する。なお、詳しくは後述するが、影響対象特定部２３５は、付加オブジェクトの表示範囲内に視線方向Ｎ０が向いている場合に、付加オブジェクトの影響を受けるオブジェクトを特定すると共に、付加オブジェクトの表示範囲内に視線方向Ｎ０が向いていない場合には、付加オブジェクトの影響を受けるオブジェクトを特定しない。
【００９７】
Ｓ３２において、影響反映部２３６は、特定されたオブジェクトへの付加オブジェクトによる影響を、仮想空間２に反映させる。具体的には、たとえば、仮想空間データにおける、特定されたオブジェクトの表示状態を規定する値を、付加オブジェクトによる影響に応じた表示状態に更新する。Ｓ２７において付加オブジェクトが規定されない場合、Ｓ３１およびＳ３２は実行されない。
【００９８】
その後、視野画像生成部２２３は、現在の基準視線５に基づいて、仮想空間２における視界領域２３を決定する。Ｓ３３において、視界画像生成部２２３は、仮想空間データを処理することによって、仮想空間２に展開される仮想空間画像２２の全体のうち、仮想空間２における視界領域２３に投影される部分である視界画像２６を生成（レンダリング）する。
【００９９】
仮想空間２に仮想右手および仮想左手が規定されているので、生成される視界画像２６には、少なくとも仮想右手および仮想左手がさらに含まれる。また、付加オブジェクトが仮想空間２に規定された場合、視界画像２６には付加オブジェクトがさらに含まれる。また、付加オブジェクトによる他のオブジェクトへの影響が仮想空間２に反映された場合、視界画像には、その影響により表示状態が変化したオブジェクトがさらに含まれる。
【０１００】
Ｓ３４において、視野画像生成部２２３は、生成した視界画像２６を更新用の視界画像としてＨＭＤ１１０に出力する。Ｓ３５において、ＨＭＤ１１０は、受信した視界画像２６をディスプレイ１１２に表示することによって、視界画像２６を更新する。
【０１０１】
（ロックオンＥＡ）
図１０の処理によってディスプレイ１１２に表示される視界画像２６の一例を、図１２に示す。図１２は、ディスプレイ１１２に表示される視界画像２６の一例を示す図である。図１２の（ａ）では、視界画像２６は、背景画像、敵キャラクタ（オブジェクト）ＯＡ〜ＯＣ、仮想右手ＨＲ、仮想左手ＨＬ、およびロックオンＥＡを含んでいる。仮想右手ＨＲは、右親指ＦＲａ、右人差し指ＦＲｂ、および右中指ＦＲｃを含んでいる。仮想左手ＨＬは、左親指ＦＬａ、左人差し指ＦＬｂ、および左中指ＦＬｃを含んでいる。
【０１０２】
ロックオンＥＡは、付加オブジェクトの一種である。ユーザは、シューティングゲーム
の実行中に、敵キャラクタＯＡ〜ＯＣを攻撃対象にするために、ロックオンＥＡを利用する。ロックオンＥＡは、視界画像２６に含まれる仮想右手ＨＲおよび仮想左手ＨＬが特定の関係にある場合、視界画像２６に現れる。言い換えると、ユーザは、ゲーム中にロックオンＥＡを用いるために、両手を適宜動かす必要がある。
【０１０３】
図１２の（ａ）では、敵キャラクタＯＡがロックオンＥＡの表示範囲に含まれている。そのため、視界画像２６における敵キャラクタＯＡは、攻撃対象として選択されていることを示す状態となっている。一方、敵キャラクタＯＢおよびＯＣはロックオンＥＡの表示範囲に含まれないので、視界画像２６における敵キャラクタＯＢおよびＯＣは、攻撃対象から外れていることを示す状態となっている。
【０１０４】
図１２の（ａ）に示す視界画像２６をディスプレイ１１２に表示させるための手順を、以下に説明する。まずユーザは、ロックオンＥＡを表示させるための操作を、右コントローラ３２０および左コントローラ３３０に対して行う。本実施形態では、この操作は、図１２の（ａ）に示す状態の仮想右手ＨＲおよび仮想左手ＨＬが視界画像２６に含まれるように、右コントローラ３２０を持つ右手と左コントローラ３３０を持つ左手とを適宜動かすことである。
【０１０５】
ロックオンＥＡを表示させるために、ユーザはまず、右コントローラ３２０の親指ボタン３０２ａおよび人差し指ボタン３０２ｅを押下せず、かつ、右コントローラ３２０の中指ボタン３０２ｆを完全に押下する。さらにユーザは、右コントローラ３２０の親指ボタン３０２ａおよび人差し指ボタン３０２ｅを押下せず、かつ、右コントローラ３２０の中指ボタン３０２ｆを完全に押下する。
【０１０６】
ユーザはさらに、右親指ＦＲａが視界画像２６において上を向くと共に、右人差し指ＦＲｂが視界画像２６において左を向くように、右コントローラ３２０を傾ける。また、左親指ＦＬａが視界画像２６において下を向くと共に、左人差し指ＦＬｂが視界画像２６において右を向くように、左コントローラ３３０を傾ける。ユーザはさらに、右親指ＦＲａの先端と左人差し指ＦＬｂの先端とが視界画像２６内で接触すると共に、右人差し指ＦＲｂの先端と左親指ＦＬａの先端とが視界画像２６内において接触するように、右コントローラ３２０および左コントローラ３３０の位置を変化させる。
【０１０７】
ユーザが上述したように右コントローラ３２０および左コントローラ３３０を操作すると、制御回路部２００は、右コントローラ３２０の親指ボタン３０２ａ、人差し指ボタン３０２ｅ、および中指ボタン３０２ｆの押下状態の検出値として、それぞれ「０」、「０」、および「１」を受信する。また、右コントローラ３２０の位置および傾きの検出値として、位置ＰＲ１および傾きＤＲ１を受信する。さらに、左コントローラ３３０の親指ボタン３０２ｃ、人差し指ボタン３０２ｇ、中指ボタン３０２ｈの検出値として、それぞれ「０」、「０」、および「１」を受信する。さらに、左コントローラ３３０の位置および傾きの検出値として、位置ＰＬ１および傾きＤＬ１を受信する。
【０１０８】
これらの検出値は、判定テーブル２４３において「ロックオン」に関連付けられている右コントローラ３２０および左コントローラ３３０の各判定値に一致する。したがって、付加オブジェクト制御部２３４は、付加オブジェクトとしてロックオンＥＡを仮想空間２に規定する。
【０１０９】
判定テーブル２４３において、「ロックオン」に対して視線の判定値として「必要」が関連付けられている。図１２の（ａ）では、ロックオンＥＡが視界画像２６に中央に配置されている。視線として視界方向を用いる場合、図１２の（ａ）では、視界方向は視界画像２６の中央に向かっているので、視線はロックオンＥＡに向けられている。そこで、影
響対象特定部２３５は、ロックオンＥＡによる影響を受けるオブジェクトの特定を実行する。
【０１１０】
図１２の（ａ）では、仮想空間２において、敵キャラクタＯＡの位置は、ロックオンＥＡの表示範囲に含まれているが、敵キャラクタＯＢおよびＯＣの位置は、ロックオンＥＡの表示範囲に含まれていない。そこで影響対象特定部２３５は、ロックオンＥＡによる影響を受けるオブジェクトとして、ロックオンＥＡの表示範囲に含まれる敵キャラクタＯＡを特定する。特定された敵キャラクタＯＡへの影響は、ロックオンＥＡによる攻撃対象としての選択である。これにより影響反映部２３６は、敵キャラクタＯＡの表示状態を規定する値を、ロックオンＥＡによる選択がなされていることを示す値に更新する。
【０１１１】
この後、制御回路部２００が視界画像２６を生成することによって、図１２の（ａ）に示す視界画像２６をＨＭＤ１１０のディスプレイ１１２に表示させることができる。
【０１１２】
図１３は、ロックオンＥＡによる影響を受けるオブジェクトを特定する方法を説明する図である。影響対象特定部２３５は、仮想空間２内におけるロックオンＥＡの表示範囲および仮想カメラ１の位置に基づき、ロックオンＥＡによる影響を受けるオブジェクトを特定してもよい。図１３に示すように、影響対象特定部２３５は、仮想空間２における仮想カメラ１の位置を起点としてロックオンＥＡの表示範囲の外枠に向かう方向をそれぞれ特定し、さらに、これらの方向によって規定されるロックオンＥＡの広がり角γ１およびγ２を特定する。そして、これらの広がり角γ１およびγ２によって規定される仮想空間２内の広がり領域に位置するオブジェクトを、ロックオンＥＡによる影響を受けるオブジェクトとして特定する。なお、拡大ロックオンＥＢの場合も上記と同様である。
【０１１３】
（ロックオンＥＡの拡大）
ユーザは、ロックオンＥＡをディスプレイ１１２に表示させた後、右コントローラ３２０および左コントローラ３３０を適宜操作することによって、図１２の（ｂ）に示すように、ロックオンＥＡを拡大させることができる。図１２の（ｂ）では、視界画像２６は、背景画像、敵キャラクタＯＡ〜ＯＣ、仮想右手ＨＲ、仮想左手ＨＬ、および拡大ロックオンＥＢを含んでいる。
【０１１４】
拡大ロックオンＥＢは、付加オブジェクトの一種である。拡大ロックオンＥＢの表示範囲はロックオンＥＡよりも大きいので、敵キャラクタＯＡ〜ＯＣが拡大ロックオンＥＢの表示範囲に含まれている。したがって、敵キャラクタＯＡに加えて、敵キャラクタＯＢおよびＯＣも、攻撃対象として選択されていることを示す状態となっている。ユーザは、ロックオンＥＡを拡大することによって、より多くの敵キャラクタを攻撃対象として選択することができる。
【０１１５】
図１２の（ｂ）に示す視界画像２６をディスプレイ１１２に表示させるための手順を以下に説明する。ロックオンＥＡを拡大するために、ユーザは、右コントローラ３２０の傾きおよび左コントローラ３３０の傾きをそれぞれ維持したまま、仮想右手ＨＲと仮想左手ＨＬとが視界画像２６において互いに遠ざかるように、右手と左手とを互いに遠ざける。これにより、右コントローラ３２０および左コントローラ３３０の位置が、互いに離間するように経時的に変化する。
【０１１６】
コントローラ検出部２１３は、経時的にコントローラセンサ１４０から受信する位置の各検出値に基づき、右コントローラ３２０の位置および左コントローラ３３０の位置が、互いに離間するようにそれぞれ移動していることを検出する。コントローラ検出部２１３は、この検出に基づき、右コントローラ３２０および左コントローラ３３０の位置の検出値として、いずれも「離間移動」を生成する。右コントローラ３２０の押下状態および傾
きの検出値、ならびに左コントローラ３３０の押下状態および傾きの検出値は、ロックオンＥＡの表示時から変わりない。これらの各検出値は、判定テーブル２４３において「拡大ロックオン」に関連付けられている各判定値に一致する。そこで付加オブジェクト制御部２３４は、付加オブジェクトとして拡大ロックオンＥＢを仮想空間２に規定する。
【０１１７】
判定テーブル２４３において、「拡大ロックオン」に対して視線の判定値として「必要」が規定されている。図１２の（ｂ）では、拡大ロックオンＥＢが視界画像２６に中央に配置されている。視線として視界方向を用いる場合、図１２の（ｂ）では、視界方向は視界画像２６の中央に向かっているので、視線は拡大ロックオンＥＢに向けられている。そこで、影響対象特定部２３５は、拡大ロックオンＥＢによる影響を受けるオブジェクトの特定を実行する。
【０１１８】
図１２の（ｂ）では、仮想空間２において、敵キャラクタＯＡ〜ＯＣの各位置は、いずれも拡大ロックオンＥＢの表示範囲に含まれている。そのため影響対象特定部２３５は、拡大ロックオンＥＢによる影響を受けるオブジェクトとして、敵キャラクタＯＡ〜ＯＣを特定する。特定された敵キャラクタＯＡ〜ＯＣへの影響は、拡大ロックオンＥＢによる攻撃対象としての選択である。敵キャラクタＯＡはすでにロックオンＥＡによる影響を受けているので、表示状態を変える必要はない。影響反映部２３６は、仮想空間データにおいて、敵キャラクタＯＢおよびＯＣの表示状態を規定する値を、拡大ロックオンＥＢによる選択がなされていることを示す値に更新する。
【０１１９】
この後、制御回路部２００が視界画像２６を生成することによって、図１２の（ｂ）に示す視界画像２６をＨＭＤ１１０のディスプレイ１１２に表示させることができる。
【０１２０】
制御回路部２００は、視界画像２６におけるロックオンＥＡ（または拡大ロックオンＥＢ）に重なる部分を、ユーザによる指示（たとえば特定のボタンの押下）に基づきスクリーンショットとして取得してもよい。この場合、制御回路部２００は、図１３に示す広がり角を考慮することなく、視界画像２６においてロックオンＥＡ（または拡大ロックオンＥＢ）にちょうど重なる箇所の部分画像を、スクリーンショットとして取得する。
【０１２１】
（エネルギーＥＣ）
図１１の処理によってディスプレイ１１２に表示される視界画像２６の他の例を、図１４に示す。図１４は、ディスプレイ１１２に表示される視界画像２６の他の例を示す図である。図１４の（ａ）では、視界画像２６は、背景画像、敵キャラクタ（オブジェクト）ＯＢおよびＯＣ、仮想右手ＨＲ、仮想左手ＨＬ、およびエネルギーＥＣを含んでいる。
【０１２２】
エネルギーＥＣは、付加オブジェクトの一種である。ユーザは、シューティングゲームの実行中に、敵キャラクタを攻撃するためのソードまたは敵キャラクタから身を守るためにシールドを利用するために、まず、エネルギーＥＣを仮想空間２に生成する。エネルギーＥＣは、視界画像２６に含まれる仮想右手ＨＲおよび仮想左手ＨＬが特定の関係にある場合、視界画像２６に現れる。言い換えると、ユーザは、エネルギーＥＣをディスプレイ１１２に表示させるために、両手を適宜動かす必要がある。
【０１２３】
図１４の（ａ）に示す視界画像２６をディスプレイ１１２に表示させるための手順を、以下に説明する。まずユーザは、エネルギーＥＣを表示させるための操作を、右コントローラ３２０および左コントローラ３３０に対して行う。本実施形態では、この操作は、図１４の（ａ）に示す状態の仮想右手ＨＲおよび仮想左手ＨＬが視界画像２６に含まれるように、右コントローラ３２０を持つ右手と左コントローラ３３０を持つ左手とを適宜動かすことである。
【０１２４】
エネルギーＥＣを表示させるために、ユーザはまず、右コントローラ３２０の親指ボタン３０２ａおよび人差し指ボタン３０２ｅを中程度に押下し、かつ、右コントローラ３２０の中指ボタン３０２ｆを完全に押下する。さらにユーザは、左コントローラ３３０の親指ボタン３０２ｃおよび人差し指ボタン３０２ｇを中程度に、かつ、左コントローラ３３０の中指ボタン３０２ｈを完全に押下する。
【０１２５】
ユーザはさらに、仮想右手ＨＲの甲が視界画像２６に表示され、かつ、右親指ＦＲａおよび右人差し指ＦＲｂが視界画像２６において斜め左下を向くように、右コントローラ３２０を傾ける。また、仮想左手ＨＬの手のひらが視界画像２６に表示され、左親指ＦＬａおよび左人差し指ＦＬｂが視界画像２６において斜め右上を向くように、左コントローラ３３０を傾ける。ユーザはさらに、右親指ＦＲａの先端、左人差し指ＦＬｂの先端、右人差し指ＦＲｂの先端、左親指ＦＬａの先端が視界画像２６内の小さな領域を取り囲むように、右コントローラ３２０および左コントローラ３３０の位置を変化させる。
【０１２６】
ユーザが上述したように右コントローラ３２０および左コントローラ３３０を操作すると、制御回路部２００は、右コントローラ３２０の親指ボタン３０２ａ、人差し指ボタン３０２ｅ、および中指ボタン３０２ｆの押下状態の検出値として、それぞれ「中間」、「中間」、および「１」を受信する。また、右コントローラ３２０の位置および傾きの検出値として、位置ＰＲ２および傾きＤＲ２を受信する。さらに、左コントローラ３３０の親指ボタン３０２ｃ、人差し指ボタン３０２ｇ、中指ボタン３０２ｈの検出値として、それぞれ「中間」、「中間」、および「１」を受信する。さらに、左コントローラ３３０の位置および傾きの検出値として、位置ＰＬ２および傾きＤＬ２を受信する。
【０１２７】
これらの検出値は、判定テーブル２４３において「エネルギーＥＣ」に関連付けられている右コントローラ３２０および左コントローラ３３０の各判定値に一致する。したがって、付加オブジェクト制御部２３４は、付加オブジェクトとしてエネルギーＥＣを仮想空間２に規定する。
【０１２８】
この後、制御回路部２００が視界画像２６を生成することによって、図１４の（ａ）に示す視界画像２６をＨＭＤ１１０のディスプレイ１１２に表示させることができる。
【０１２９】
ユーザは、エネルギーＥＣをディスプレイ１１２に表示させた後、右コントローラ３２０および左コントローラ３３０を適宜操作することによって、図１４の（ｂ）に示すように、敵キャラクタを攻撃するためのソードＥＤを、ディスプレイ１１２に表示させることができる。図１４の（ｂ）では、視界画像２６は、背景画像、敵キャラクタＯＢおよびＯＣ、仮想右手ＨＲ、仮想左手ＨＬ、およびソードＥＤを含んでいる。ソードＥＤは、付加オブジェクトの一種である。
【０１３０】
図１４の（ｂ）に示す視界画像２６をディスプレイ１１２に表示させるための手順を以下に説明する。エネルギーＥＣの表示後、ユーザは、右コントローラ３２０の傾きおよび左コントローラ３３０の傾きをそれぞれ維持したまま、仮想右手ＨＲと仮想左手ＨＬとが視界画像２６において互いに遠ざかるように、右手と左手とを互いに遠ざける。これにより、右コントローラ３２０および左コントローラ３３０の位置が、互いに離間するように経時的に変化する。
【０１３１】
コントローラ検出部２１３は、経時的にコントローラセンサ１４０から受信する位置の各検出値に基づき、右コントローラ３２０の位置および左コントローラ３３０の位置が、互いに離間するようにそれぞれ移動していることを検出する。コントローラ検出部２１３は、この検出に基づき、右コントローラ３２０および左コントローラ３３０の位置の検出値として、いずれも「離間移動」を生成する。右コントローラ３２０の押下状態および傾
きの検出値、ならびに左コントローラ３３０の押下状態および傾きの検出値は、エネルギーＥＣの表示時から変わりない。これらの各検出値は、判定テーブル２４３において「ソードＥＤ」に関連付けられている各判定値に一致する。そこで付加オブジェクト制御部２３４は、付加オブジェクトとしてソードＥＤを仮想空間２に規定する。
【０１３２】
この後、制御回路部２００が視界画像２６を生成することによって、図１４の（ｂ）に示す視界画像２６をＨＭＤ１１０のディスプレイ１１２に表示させることができる。図１４の（ｃ）に示すように、ユーザは、生成したソードＥＤを仮想右手ＨＲまたは仮想左手ＨＬで掴んで利用することができる。たとえば、ソードＥＤを振り回して敵キャラクタＯＢまたはＯＣを斬りつけたり、ソードＥＤを敵キャラクタＯＢまたはＯＣに投げつけたりすることができる。
【０１３３】
（シールドＥＥ）
図１１の処理によってディスプレイ１１２に表示される視界画像２６の他の例を、図１５に示す。図１５は、ディスプレイ１１２に表示される視界画像２６のさらに他の例を示す図である。図１５の（ａ）では、視界画像２６は、背景画像、敵キャラクタ（オブジェクト）ＯＢおよびＯＣ、仮想右手ＨＲ、仮想左手ＨＬ、およびシールドＥＥを含んでいる。
【０１３４】
シールドＥＥは、付加オブジェクトの一種である。ユーザは、図１４の（ｂ）に示すソードＥＤを表示させた後、両手を回転移動させることによって、シールドＥＥを表示させることができる。
【０１３５】
図１５の（ｂ）に示す視界画像２６をディスプレイ１１２に表示させるための手順を、以下に説明する。ソードＥＤの表示後、ユーザは、右コントローラ３２０の傾きおよび左コントローラ３３０の傾きをそれぞれ維持したまま、仮想右手ＨＲと仮想左手ＨＬとがソードＥＤの中央を原点とする円上を動くように、右手および左手を動かす。これにより、右コントローラ３２０および左コントローラ３３０の位置が、いずれも回転運動をするように経時的に変化する。
【０１３６】
コントローラ検出部２１３は、経時的にコントローラセンサ１４０から受信する位置の各検出値に基づき、右コントローラ３２０の位置および左コントローラ３３０の位置が、いずれも回転移動していることを検出する。コントローラ検出部２１３は、この検出に基づき、右コントローラ３２０および左コントローラ３３０の位置の検出値として、いずれも「回転移動」を生成する。右コントローラ３２０の押下状態および傾きの検出値、ならびに左コントローラ３３０の押下状態および傾きの検出値は、ソードＥＤの表示時から変わりない。これらの各検出値は、判定テーブル２４３において「シールド」に関連付けられている各判定値に一致する。そこで付加オブジェクト制御部２３４は、付加オブジェクトとしてシールドＥＥを仮想空間２に規定する。
【０１３７】
この後、制御回路部２００が視界画像２６を生成することによって、図１５の（ａ）に示す視界画像２６をＨＭＤ１１０のディスプレイ１１２に表示させることができる。図１５の（ｂ）に示すように、ユーザは、生成したシールドＥＥを仮想右手ＨＲまたは仮想左手ＨＬで掴んで利用することができる。たとえば、シールドＥＥを敵キャラクタの前に配置することによって、敵キャラクタからの攻撃を防ぐことができる。
【０１３８】
本実施形態では、図１２、図１４、および図１５に示すように、ユーザの仮想右手ＨＲおよび仮想左手ＨＬとの関係（位置関係）に応じた様々な付加オブジェクトが、仮想空間２に登場する。すなわちユーザは、両手を用いた幅広い範囲内での様々なポーズを取ることによって、仮想空間２の状態を様々に変化させることができる。ユーザは、両手を使っ
た様々なポーズを取るために、両手をダイナミックに動かす必要がある。このような動きを通じて、ユーザは、仮想空間２における己の姿に高い躍動感と満足感（自尊心）を覚えることもできる。したがって、本実施形態によれば、エンタテインメント性の高い仮想空間２をユーザに提供することができる。
【０１３９】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態も、本発明の技術的範囲に含まれる。各実施形態にそれぞれ開示された技術的手段を組み合わせることによって、新しい技術的特徴を形成することもできる。
【０１４０】
たとえば制御回路部２００は、視界方向ではなく視線方向Ｎ０を、基準視線５として特定してもよい。この場合、ユーザが視線を変化させるとそれに連動して仮想カメラ１の向きが変わるので、視界領域２３の位置も視線変化に連動して変化する。その結果、視界画像２６の内容が視線変化に応じて変化することになる。
【０１４１】
また、制御回路部２００は、ユーザの右手の状態を表す情報およびユーザの左手の状態を表す情報の双方に基づき、オブジェクトとしての機能を持たない単なる付加画像を、仮想空間２に生成してもよい。
【０１４２】
〔ソフトウェアによる実現例〕
制御回路部２００の制御ブロック（検出部２１０、表示制御部２２０、仮想空間制御部２３０、記憶部２４０、および通信部２５０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ＣＰＵ（Central Processing Unit）を用いてソフトウェアによって実現してもよい。
【０１４３】
後者の場合、制御ブロックは、各機能を実現するソフトウェアであるプログラムの命令を実行するＣＰＵ、前記プログラムおよび各種データがコンピュータ（又はＣＰＵ）で読み取り可能に記録されたＲＯＭ（Read Only Memory）または記憶装置（これらを「記録媒体」と称する）、前記プログラムを展開するＲＡＭ（Random Access Memory）等を備えている。そして、コンピュータ（又はＣＰＵ）が前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記記録媒体としては、「一時的でない有形の媒体」、例えば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して前記コンピュータに供給されてもよい。なお、本発明は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０１４４】
〔付記事項〕
本発明の一側面にかかる内容を列記すると以下の通りである。
【０１４５】
（項目１）ヘッドマウントディスプレイ（以下、ＨＭＤ）を装着したユーザに仮想空間を提供する方法であって、前記仮想空間を規定するステップと、前記仮想空間における前記ユーザの基準視線を特定するステップと、前記ユーザの右手の状態を表す情報および前記ユーザの左手の状態を表す情報を取得するステップと、前記右手の状態を表す情報および前記左手の状態の双方に基づく付加画像を、前記仮想空間に生成するステップと、前記基準視線に基づき、前記付加画像を少なくとも含む視界画像を生成するステップと、前記視界画像を前記ＨＭＤに表示させるステップとを有する、仮想空間を提供する方法。ユーザが両手を用いた幅広い範囲内の様々なポーズを取ることによって仮想空間の状態を様々に変化させることができるので、エンタテインメント性の高い仮想空間をユーザに提供することができる。
【０１４６】
（項目２）前記右手の状態を表す情報に基づき、前記仮想空間に仮想右手を生成するステップと、前記左手の状態を表す情報に基づき、前記仮想空間に仮想左手を生成するステップと、をさらに有しており、前記付加画像を生成するステップにおいて、前記仮想空間における前記仮想右手および前記仮想左手の関係に基づく前記付加画像を生成し、前記視界画像を生成するステップにおいて、前記仮想右手および前記仮想左手をさらに含む前記視界画像を生成する、項目１の仮想空間を提供する方法。ユーザの右手および左手にそれぞれ対応した仮想右手および仮想左手が生成されるので、仮想空間のリアリティをより高めることができる。
【０１４７】
（項目３）前記右手の状態を表す情報および前記左手の状態を表す情報を取得するステップにおいて、前記ユーザが右手に持つ右コントローラの検出値および前記ユーザが左手に持つ左コントローラの検出値を、前記右手の状態を表す情報および前記左手の状態を表す情報としてそれぞれ取得する、項目１または２の仮想空間を提供する方法。ユーザの右手の状態を表す情報および左手を表す情報を簡易に取得することができる。
【０１４８】
（項目４）前記付加画像を生成するステップにおいて、前記仮想空間に前記付加画像として付加オブジェクトを生成する、項目１〜３のいずれか１つの仮想空間を提供する方法。ユーザの両手の関係に応じた付加オブジェクトを仮想空間内に登場させることができる。
【０１４９】
（項目５）前記仮想空間において前記付加画像による影響を受けるオブジェクトを特定するステップと、特定された前記オブジェクトに対する前記影響を、前記仮想空間に反映させるステップとをさらに有する、項目１〜４のいずれか１つの仮想空間を提供する方法。ユーザが両手を適宜動かすことによって仮想空間内のオブジェクトに影響を与えることができる。
【０１５０】
（項目６）前記影響を受けるオブジェクトを特定するステップにおいて、前記仮想空間において前記付加画像の表示範囲に重畳するオブジェクトを、前記付加画像による影響を受けるオブジェクトとして特定する、項目５の仮想空間を提供する方法。影響を受けるオブジェクトを適切に特定することができる。
【０１５１】
（項目７）前記ユーザの視線方向を特定するステップをさらに有し、前記影響を受けるオブジェクトを特定するステップにおいて、前記付加画像および前記視線方向に基づき、前記影響を受けるオブジェクトを特定する、項目４または５の仮想空間を提供する方法。ユーザが注意を向けた領域内のオブジェクトに影響を与えることができる。
【０１５２】
（項目８）前記ＨＭＤのロール方向を特定するステップをさらに有し、前記影響を受けるオブジェクトを特定するステップにおいて、前記付加画像および前記ロール方向に基づき、前記影響を受けるオブジェクトを特定する、項目５または６の仮想空間を提供する方法。ユーザの正面にある領域内のオブジェクトに影響を与えることができる。
【０１５３】
（項目９）項目１〜８のいずれか１つの仮想空間を提供する方法の各ステップを、コンピュータに実行させるプログラム。
【０１５４】
（項目１０）項目９のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【符号の説明】
【０１５５】
１  仮想カメラ、２  仮想空間、５  基準視線、２１  中心、２２  仮想空間画像、２３
視界領域、２４  第１領域、２５  第２領域、２６  視界画像、１００  ＨＭＤシステ
ム、１１０  ＨＭＤ、１１２  ディスプレイ、１１４、３０６  センサ、１２０  ＨＭＤセンサ、１３０  注視センサ、１４０  コントローラセンサ、２００  制御回路部、２１０  検出部、２１１  ＨＭＤ検出部、２１２  視線検出部、２１３  コントローラ検出部、２２０  表示制御部、２２１  仮想カメラ制御部、２２２  視界領域決定部、２２３  視野画像生成部、２３０  仮想空間制御部、２３１  仮想空間規定部、２３２  仮想手制御部、２３３  位置関係判定部、２３４  付加オブジェクト制御部、２３５  影響対象特定部、２３６  影響反映部、２４０  記憶部、２４１  雛形格納部、２４２  コンテンツ格納部、２４３  判定テーブル、２５０  通信部、３００  コントローラ、３０２  操作ボタン、３０２ａ〜３０２ｄ  親指ボタン、３０２ｅ、３０２ｇ  人差し指ボタン、３０２ｆ、３０２ｈ  中指ボタン、３０２ｉ、３０２ｊ  アナログスティック、３２０  右コントローラ、３２２、３３２  天面、３２４、３３４  グリップ、３２６  フレーム、３３０  左コントローラ、ＨＲ  仮想右手、ＨＬ  仮想左手、ＦＬ１、ＦＬ２、ＦＲ１、ＦＲ２  位置、ＦＬａ  左親指、ＦＬｃ  左中指、ＦＲａ  右親指、ＦＲｃ  右中指
【図１】
2018028920.tif 000003
【図２】
2018028920.tif 000004
【図３】
2018028920.tif 000005
【図４】
2018028920.tif 000006
【図５】
2018028920.tif 000007
【図６】
2018028920.tif 000008
【図７】
2018028920.tif 000009
【図８】
2018028920.tif 000010
【図９】
2018028920.tif 000011
【図１０】
2018028920.tif 000012
【図１１】
2018028920.tif 000013
【図１２】
2018028920.tif 000014
【図１３】
2018028920.tif 000015
【図１４】
2018028920.tif 000016
【図１５】
2018028920.tif 000017