(57)【要約】【課題】ユーザに生じるＶＲ酔いを抑制する技術を提供すること。【解決手段】ＨＭＤシステムのプロセッサは、仮想空間において仮想カメラの位置を移動させるステップＳ２０２０と、ユーザの動作に基づいて、当該ユーザが不快状態にあることを検知するステップＳ２０４０と、ユーザが不快状態にあることが検知されたことに応じて、不快状態を抑制するための不快状態抑制処理を実行するステップＳ２０５０と、を実行するように構成される。【選択図】図２０
2020004061.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実行される、ユーザの頭部に関連付けられた画像表示装置を介して前記ユーザに仮想体験を提供するための方法であって、
仮想視点を含む仮想空間を定義するステップと、
前記仮想空間において前記仮想視点の位置を移動させるステップと、
前記頭部の動きを検知するステップと、
前記仮想視点の位置の移動と前記頭部の動きとに応じて、前記仮想視点からの視界を制御するステップと、
前記視界に対応する視界画像を前記画像表示装置に表示するステップと、
前記ユーザの動作に基づいて、当該ユーザが不快状態にあることを検知するステップと、
前記ユーザが前記不快状態にあることが検知されたことに応じて、前記不快状態を抑制するための抑制処理を実行するステップと、を備える方法。
【請求項２】
前記抑制処理は、前記視界画像の表示態様を変更することを含む、請求項１に記載の方法。
【請求項３】
前記抑制処理は、前記仮想視点の位置の移動速度を低減するための制御を含む、請求項１に記載の方法。
【請求項４】
前記制御は、前記仮想視点の位置の移動を停止することを含む、請求項３に記載の方法。
【請求項５】
前記制御は、前記仮想視点の位置の移動速度の低減を指示するためのオブジェクトを前記視界画像に表示することを含む、請求項３に記載の方法。
【請求項６】
前記抑制処理は、前記視界画像に対して、現実空間の画像を混合する割合を上昇させることを含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記ユーザの動作は、前記頭部の動きを含み、
前記ユーザが不快状態にあることを検知することは、前記頭部が所与の方向に所与の量以上移動したこと、前記頭部の位置が所与の時間以上固定されたこと、前記頭部が所与の頻度以上の頻度で移動したこと、および、前記頭部が所与の速度以上の速度で移動したこと、のうち少なくとも一つを検知することを含む、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記ユーザの動作は、前記ユーザを支持する支持具に対する当該ユーザの挙動を含む、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
前記ユーザの挙動は、前記支持具に対して所与の態様で荷重を印加すること、および、前記支持具に設けられた操作ボタンを操作すること、のうち少なくとも一つを含む、請求項８に記載の方法。
【請求項１０】
前記ユーザの動作は、音声の出力を含む、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
請求項１〜１０のいずれか１項に記載の方法をコンピュータに実現させるための、プログラム。
【請求項１２】
請求項１１に記載のプログラムを記憶するメモリと、前記プログラムを実行するプロセッサとを備えた、情報処理装置。
【請求項１３】
ユーザの頭部に関連付けられた画像表示装置と、
前記画像表示装置を介して前記ユーザに仮想体験を提供するためのコンピュータと、
前記ユーザを支持する支持具とを備え、
前記コンピュータは、
仮想視点を含む仮想空間を定義するステップと、
前記仮想空間において前記仮想視点の位置を移動させるステップと、
前記頭部の動きを検知するステップと、
前記仮想視点の位置の移動と前記頭部の動きとに応じて、前記仮想視点からの視界を制御するステップと、
前記ユーザの前記支持具に対する挙動に基づいて、当該ユーザが不快状態にあることを検知するステップと、
前記ユーザが前記不快状態にあることが検知されたことに応じて、前記不快状態を抑制するための抑制処理を実行するステップと、を実行するように構成されている、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は仮想体験を提供する技術に関し、より特定的には、ユーザの頭部に関連付けられた画像表示装置を介してユーザに仮想体験を提供する技術に関する。
【背景技術】
【０００２】
ヘッドマウントデバイス（ＨＭＤ：Head-Mounted  Device）装置を用いて仮想空間上の仮想視点からの視界に対応する視界画像をユーザに提供することで、当該ユーザに仮想現実（ＶＲ：Virtual  Reality）を体験させる技術が知られている。
【０００３】
たとえば、特開２０１７−１８８８２７号公報（特許文献１）は、ゲームコンテンツを提供するゲームシステム、スポーツ競技シミュレータや運転シミュレータなどのリアルタイムシミュレーションシステム、映像等のコンテンツを提供するコンテンツ提供システム、遠隔作業を実現するオペレーティングシステムなどの種々のシステムに適用可能な、バーチャルリアリティ（ＶＲ）をシミュレートするシミュレーションシステムを開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−１８８８２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した技術ではユーザの仮想体験を向上させる上で改善の余地がある。
【０００６】
本開示は、係る実情に鑑み考え出されたものであり、ある局面における目的は、ユーザの仮想体験を向上させる技術を提供することである。
【課題を解決するための手段】
【０００７】
本開示のある局面に従うと、コンピュータによって実行される、ユーザの頭部に関連付けられた画像表示装置を介して前記ユーザに仮想体験を提供するための方法であって、仮想視点を含む仮想空間を定義するステップと、前記仮想空間において前記仮想視点の位置を移動させるステップと、前記頭部の動きを検知するステップと、前記仮想視点の位置の移動と前記頭部の動きとに応じて、前記仮想視点からの視界を制御するステップと、前記視界に対応する視界画像を前記画像表示装置に表示するステップと、前記ユーザの動作に基づいて、当該ユーザが不快状態にあることを検知するステップと、前記ユーザが前記不快状態にあることが検知されたことに応じて、前記不快状態を抑制するための抑制処理を実行するステップと、を備える。
【０００８】
開示された技術的特徴の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの開示に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【０００９】
【図１】ある実施の形態に従うＨＭＤシステムの構成の概略を表す図である。
【図２】ある実施の形態に従うコンピュータのハードウェア構成の一例を表すブロック図である。
【図３】ある実施の形態に従うＨＭＤに設定されるｕｖｗ視野座標系を概念的に表す図である。
【図４】ある実施の形態に従う仮想空間を表現する一態様を概念的に表す図である。
【図５】ある実施の形態に従うＨＭＤを装着するユーザの頭部を上から表した図である。
【図６】仮想空間において視界領域をＸ方向から見たＹＺ断面を表す図である。
【図７】仮想空間において視界領域をＹ方向から見たＸＺ断面を表す図である。
【図８（Ａ）】ある実施の形態に従うコントローラの概略構成を表す図である。
【図８（Ｂ）】ある実施の形態に従うユーザの右手に対して規定されるヨー、ロール、ピッチの各方向の一例を示す図である。
【図９】ある実施の形態に従うサーバのハードウェア構成の一例を表すブロック図である。
【図１０】ある実施の形態に従うコンピュータをモジュール構成として表わすブロック図である。
【図１１】ある実施の形態に従うＨＭＤセットにおいて実行される処理の一部を表すシーケンスチャートである。
【図１２（Ａ）】ネットワークにおいて、各ＨＭＤがユーザに仮想空間を提供する状況を表す模式図である。
【図１２（Ｂ）】図１２（Ａ）におけるユーザ５Ａの視界画像を示す図である。
【図１３】ある実施の形態に従うＨＭＤシステムにおいて実行する処理を示すシーケンス図である。
【図１４】ある実施の形態に従うコンピュータのモジュールの詳細構成を表わすブロック図である。
【図１５】ある実施形態において仮想空間の中を移動するために供されるデバイスの構成例を表す図である。
【図１６】筐体の２本のバーのそれぞれの上に設けられた２つの操作ボタンを示す図である。
【図１７】図１５および図１６を参照して説明された構成例における、コンピュータに対する追加的構成を説明するための図である。
【図１８】ユーザに提供される視界画像の一例を示す図である。
【図１９】傾きセンサの検知出力に従った制御の具体例を説明するための図である。
【図２０】ユーザに仮想体験を提供するためにユーザの状態に応じて行なわれる処理のフローチャートである。
【図２１】図２０の不快状態抑制処理のサブルーチンの一例のフローチャートである。
【図２２】図２０の不快状態抑制処理のサブルーチンの他の例のフローチャートである。
【図２３】緊急停止用メニューの表示の一例を示す図である。
【図２４】図２０の不快状態抑制処理のサブルーチンのさらに他の例のフローチャートである。
【図２５】救護テントの表示の一例を説明するための図である。
【図２６】ユーザの状態の一例を示す図である。
【図２７】ユーザの状態の他の例を示す図である。
【図２８】複数の筐体の配置の一例を示す図である。
【図２９】複数の筐体の配置の他の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、この技術的思想の実施の形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。本開示において示される１以上の実施形態において、各実施形態が含む要素を互いに組み合わせることができ、かつ、当該組み合わせられた結果物も本開示が示す実施形態の一部をなすものとする。
【００１１】
［ＨＭＤシステムの構成］
図１を参照して、ＨＭＤ（Head-Mounted  Device）システム１００の構成について説明する。図１は、本実施の形態に従うＨＭＤシステム１００の構成の概略を表す図である。ＨＭＤシステム１００は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。
【００１２】
ＨＭＤシステム１００は、サーバ６００と、ＨＭＤセット１１０Ａ，１１０Ｂ，１１０Ｃ，１１０Ｄと、外部機器７００と、ネットワーク２とを含む。ＨＭＤセット１１０Ａ，１１０Ｂ，１１０Ｃ，１１０Ｄの各々は、ネットワーク２を介してサーバ６００や外部機器７００と通信可能に構成される。以下、ＨＭＤセット１１０Ａ，１１０Ｂ，１１０Ｃ，１１０Ｄを総称して、ＨＭＤセット１１０とも言う。ＨＭＤシステム１００を構成するＨＭＤセット１１０の数は、４つに限られず、３つ以下でも、５つ以上でもよい。ＨＭＤセット１１０は、ＨＭＤ１２０と、コンピュータ２００と、ＨＭＤセンサ４１０と、ディスプレイ４３０と、コントローラ３００とを備える。ＨＭＤ１２０は、モニタ１３０と、注視センサ１４０と、第１カメラ１５０と、第２カメラ１６０と、マイク１７０と、スピーカ１８０とを含む。コントローラ３００は、モーションセンサ４２０を含み得る。
【００１３】
ある局面において、コンピュータ２００は、インターネットその他のネットワーク２に接続可能であり、ネットワーク２に接続されているサーバ６００その他のコンピュータと通信可能である。その他のコンピュータとしては、例えば、他のＨＭＤセット１１０のコンピュータや外部機器７００が挙げられる。別の局面において、ＨＭＤ１２０は、ＨＭＤセンサ４１０の代わりに、センサ１９０を含み得る。
【００１４】
ＨＭＤ１２０は、ユーザ５の頭部に装着され、動作中に仮想空間をユーザ５に提供し得る。より具体的には、ＨＭＤ１２０は、右目用の画像および左目用の画像をモニタ１３０にそれぞれ表示する。ユーザ５の各目がそれぞれの画像を視認すると、ユーザ５は、両目の視差に基づき当該画像を３次元画像として認識し得る。ＨＭＤ１２０は、モニタを備える所謂ヘッドマウントディスプレイと、スマートフォンその他のモニタを有する端末を装着可能なヘッドマウント機器のいずれをも含み得る。
【００１５】
モニタ１３０は、例えば、非透過型の表示装置として実現される。ある局面において、モニタ１３０は、ユーザ５の両目の前方に位置するようにＨＭＤ１２０の本体に配置されている。したがって、ユーザ５は、モニタ１３０に表示される３次元画像を視認すると、仮想空間に没入することができる。ある局面において、仮想空間は、例えば、背景、ユーザ５が操作可能なオブジェクト、ユーザ５が選択可能なメニューの画像を含む。ある局面において、モニタ１３０は、所謂スマートフォンその他の情報表示端末が備える液晶モニタまたは有機ＥＬ（Electro  Luminescence）モニタとして実現され得る。
【００１６】
別の局面において、モニタ１３０は、透過型の表示装置として実現され得る。この場合、ＨＭＤ１２０は、図１に示されるようにユーザ５の目を覆う密閉型ではなく、メガネ型のような開放型であり得る。透過型のモニタ１３０は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。モニタ１３０は、仮想空間を構成する画像の一部と、現実空間とを同時に表示する構成を含んでいてもよい。例えば、モニタ１３０は、ＨＭＤ１２０に搭載されたカメラで撮影した現実空間の画像を表示してもよいし、一部の透過率を高く設定することにより現実空間を視認可能にしてもよい。
【００１７】
ある局面において、モニタ１３０は、右目用の画像を表示するためのサブモニタと、左目用の画像を表示するためのサブモニタとを含み得る。別の局面において、モニタ１３０は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、モニタ１３０は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【００１８】
ある局面において、ＨＭＤ１２０は、図示せぬ複数の光源を含む。各光源は例えば、赤外線を発するＬＥＤ（Light  Emitting  Diode）により実現される。ＨＭＤセンサ４１０は、ＨＭＤ１２０の動きを検出するためのポジショントラッキング機能を有する。より具体的には、ＨＭＤセンサ４１０は、ＨＭＤ１２０が発する複数の赤外線を読み取り、現実空間内におけるＨＭＤ１２０の位置および傾きを検出する。
【００１９】
別の局面において、ＨＭＤセンサ４１０は、カメラにより実現されてもよい。この場合、ＨＭＤセンサ４１０は、カメラから出力されるＨＭＤ１２０の画像情報を用いて、画像解析処理を実行することにより、ＨＭＤ１２０の位置および傾きを検出することができる。
【００２０】
別の局面において、ＨＭＤ１２０は、位置検出器として、ＨＭＤセンサ４１０の代わりに、あるいはＨＭＤセンサ４１０に加えてセンサ１９０を備えてもよい。ＨＭＤ１２０は、センサ１９０を用いて、ＨＭＤ１２０自身の位置および傾きを検出し得る。例えば、センサ１９０が角速度センサ、地磁気センサ、あるいは加速度センサである場合、ＨＭＤ１２０は、ＨＭＤセンサ４１０の代わりに、これらの各センサのいずれかを用いて、自身の位置および傾きを検出し得る。一例として、センサ１９０が角速度センサである場合、角速度センサは、現実空間におけるＨＭＤ１２０の３軸周りの角速度を経時的に検出する。ＨＭＤ１２０は、各角速度に基づいて、ＨＭＤ１２０の３軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、ＨＭＤ１２０の傾きを算出する。
【００２１】
注視センサ１４０は、ユーザ５の右目および左目の視線が向けられる方向を検出する。つまり、注視センサ１４０は、ユーザ５の視線を検出する。視線の方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ１４０は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ１４０は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ１４０は、例えば、ユーザ５の右目および左目に赤外光を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ１４０は、検出した各回転角に基づいて、ユーザ５の視線を検知することができる。
【００２２】
第１カメラ１５０は、ユーザ５の顔の下部を撮影する。より具体的には、第１カメラ１５０は、ユーザ５の鼻および口などを撮影する。第２カメラ１６０は、ユーザ５の目および眉などを撮影する。ＨＭＤ１２０のユーザ５側の筐体をＨＭＤ１２０の内側、ＨＭＤ１２０のユーザ５とは逆側の筐体をＨＭＤ１２０の外側と定義する。ある局面において、第１カメラ１５０は、ＨＭＤ１２０の外側に配置され、第２カメラ１６０は、ＨＭＤ１２０の内側に配置され得る。第１カメラ１５０および第２カメラ１６０が生成した画像は、コンピュータ２００に入力される。別の局面において、第１カメラ１５０と第２カメラ１６０とを１台のカメラとして実現し、この１台のカメラでユーザ５の顔を撮影するようにしてもよい。
【００２３】
マイク１７０は、ユーザ５の発話を音声信号（電気信号）に変換してコンピュータ２００に出力する。スピーカ１８０は、音声信号を音声に変換してユーザ５に出力する。別の局面において、ＨＭＤ１２０は、スピーカ１８０に替えてイヤホンを含み得る。
【００２４】
コントローラ３００は、有線または無線によりコンピュータ２００に接続されている。コントローラ３００は、ユーザ５からコンピュータ２００への命令の入力を受け付ける。ある局面において、コントローラ３００は、ユーザ５によって把持可能に構成される。別の局面において、コントローラ３００は、ユーザ５の身体あるいは衣類の一部に装着可能に構成される。さらに別の局面において、コントローラ３００は、コンピュータ２００から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。さらに別の局面において、コントローラ３００は、ユーザ５から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
【００２５】
ある局面において、コントローラ３００は、複数の光源を含む。各光源は例えば、赤外線を発するＬＥＤにより実現される。ＨＭＤセンサ４１０は、ポジショントラッキング機能を有する。この場合、ＨＭＤセンサ４１０は、コントローラ３００が発する複数の赤外線を読み取り、現実空間内におけるコントローラ３００の位置および傾きを検出する。別の局面において、ＨＭＤセンサ４１０は、カメラにより実現されてもよい。この場合、ＨＭＤセンサ４１０は、カメラから出力されるコントローラ３００の画像情報を用いて、画像解析処理を実行することにより、コントローラ３００の位置および傾きを検出することができる。
【００２６】
モーションセンサ４２０は、ある局面において、ユーザ５の手に取り付けられて、ユーザ５の手の動きを検出する。例えば、モーションセンサ４２０は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ２００に送られる。モーションセンサ４２０は、例えば、コントローラ３００に設けられている。ある局面において、モーションセンサ４２０は、例えば、ユーザ５に把持可能に構成されたコントローラ３００に設けられている。別の局面において、現実空間における安全のため、コントローラ３００は、手袋型のようにユーザ５の手に装着されることにより容易に飛んで行かないものに装着される。さらに別の局面において、ユーザ５に装着されないセンサがユーザ５の手の動きを検出してもよい。例えば、ユーザ５を撮影するカメラの信号が、ユーザ５の動作を表わす信号として、コンピュータ２００に入力されてもよい。モーションセンサ４２０とコンピュータ２００とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）その他の公知の通信手法が用いられる。
【００２７】
ディスプレイ４３０は、モニタ１３０に表示されている画像と同様の画像を表示する。これにより、ＨＭＤ１２０を装着しているユーザ５以外のユーザにも当該ユーザ５と同様の画像を視聴させることができる。ディスプレイ４３０に表示される画像は、３次元画像である必要はなく、右目用の画像や左目用の画像であってもよい。ディスプレイ４３０としては、例えば、液晶ディスプレイや有機ＥＬモニタなどが挙げられる。
【００２８】
サーバ６００は、コンピュータ２００にプログラムを送信し得る。別の局面において、サーバ６００は、他のユーザによって使用されるＨＭＤ１２０に仮想現実を提供するための他のコンピュータ２００と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行なう場合、各コンピュータ２００は、各ユーザの動作に基づく信号をサーバ６００を介して他のコンピュータ２００と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。各コンピュータ２００は、各ユーザの動作に基づく信号をサーバ６００を介さずに他のコンピュータ２００と通信するようにしてもよい。
【００２９】
外部機器７００は、コンピュータ２００と通信可能な機器であればどのような機器であってもよい。外部機器７００は、例えば、ネットワーク２を介してコンピュータ２００と通信可能な機器であってもよいし、近距離無線通信や有線接続によりコンピュータ２００と直接通信可能な機器であってもよい。外部機器７００としては、例えば、スマートデバイス、ＰＣ（Personal  Computer）、及びコンピュータ２００の周辺機器などが挙げられるが、これらに限定されるものではない。
【００３０】
［コンピュータのハードウェア構成］
図２を参照して、本実施の形態に係るコンピュータ２００について説明する。図２は、本実施の形態に従うコンピュータ２００のハードウェア構成の一例を表すブロック図である。コンピュータ２００は、主たる構成要素として、プロセッサ２１０と、メモリ２２０と、ストレージ２３０と、入出力インターフェイス２４０と、通信インターフェイス２５０とを備える。各構成要素は、それぞれ、バス２６０に接続されている。
【００３１】
プロセッサ２１０は、コンピュータ２００に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ２２０またはストレージ２３０に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ２１０は、ＣＰＵ（Central  Processing  Unit）、ＧＰＵ（Graphics  Processing  Unit）、ＭＰＵ（Micro  Processor  Unit）、ＦＰＧＡ（Field-Programmable  Gate  Array）その他のデバイスとして実現される。
【００３２】
メモリ２２０は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ２３０からロードされる。データは、コンピュータ２００に入力されたデータと、プロセッサ２１０によって生成されたデータとを含む。ある局面において、メモリ２２０は、ＲＡＭ（Random  Access  Memory）その他の揮発メモリとして実現される。
【００３３】
ストレージ２３０は、プログラムおよびデータを永続的に保持する。ストレージ２３０は、例えば、ＲＯＭ（Read-Only  Memory）、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ２３０に格納されるプログラムは、ＨＭＤシステム１００において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ２００との通信を実現するためのプログラムを含む。ストレージ２３０に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含む。
【００３４】
別の局面において、ストレージ２３０は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、コンピュータ２００に内蔵されたストレージ２３０の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のＨＭＤシステム１００が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
【００３５】
入出力インターフェイス２４０は、ＨＭＤ１２０、ＨＭＤセンサ４１０、モーションセンサ４２０およびディスプレイ４３０との間で信号を通信する。ＨＭＤ１２０に含まれるモニタ１３０，注視センサ１４０，第１カメラ１５０，第２カメラ１６０，マイク１７０およびスピーカ１８０は、ＨＭＤ１２０の入出力インターフェイス２４０を介してコンピュータ２００との通信を行ない得る。ある局面において、入出力インターフェイス２４０は、ＵＳＢ（Universal  Serial  Bus）、ＤＶＩ（Digital  Visual  Interface）、ＨＤＭＩ（登録商標）（High-Definition  Multimedia  Interface）その他の端子を用いて実現される。入出力インターフェイス２４０は上述のものに限られない。
【００３６】
ある局面において、入出力インターフェイス２４０は、さらに、コントローラ３００と通信し得る。例えば、入出力インターフェイス２４０は、コントローラ３００およびモーションセンサ４２０から出力された信号の入力を受ける。別の局面において、入出力インターフェイス２４０は、プロセッサ２１０から出力された命令を、コントローラ３００に送る。当該命令は、振動、音声出力、発光等をコントローラ３００に指示する。コントローラ３００は、当該命令を受信すると、その命令に応じて、振動、音声出力または発光のいずれかを実行する。
【００３７】
通信インターフェイス２５０は、ネットワーク２に接続されて、ネットワーク２に接続されている他のコンピュータ（例えば、サーバ６００）と通信する。ある局面において、通信インターフェイス２５０は、例えば、ＬＡＮ（Local  Area  Network）その他の有線通信インターフェイス、あるいは、ＷｉＦｉ（Wireless  Fidelity）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＮＦＣ（Near  Field  Communication）その他の無線通信インターフェイスとして実現される。通信インターフェイス２５０は上述のものに限られない。
【００３８】
ある局面において、プロセッサ２１０は、ストレージ２３０にアクセスし、ストレージ２３０に格納されている１つ以上のプログラムをメモリ２２０にロードし、当該プログラムに含まれる一連の命令を実行する。当該１つ以上のプログラムは、コンピュータ２００のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ２１０は、入出力インターフェイス２４０を介して、仮想空間を提供するための信号をＨＭＤ１２０に送る。ＨＭＤ１２０は、その信号に基づいてモニタ１３０に映像を表示する。
【００３９】
図２に示される例では、コンピュータ２００は、ＨＭＤ１２０の外部に設けられる構成が示されているが、別の局面において、コンピュータ２００は、ＨＭＤ１２０に内蔵されてもよい。一例として、モニタ１３０を含む携帯型の情報通信端末（例えば、スマートフォン）がコンピュータ２００として機能してもよい。
【００４０】
コンピュータ２００は、複数のＨＭＤ１２０に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
【００４１】
ある実施の形態において、ＨＭＤシステム１００では、現実空間における座標系である実座標系が予め設定されている。実座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、並びに、鉛直方向および水平方向の双方に直交する前後方向にそれぞれ平行な、３つの基準方向（軸）を有する。実座標系における水平方向、鉛直方向（上下方向）、および前後方向は、それぞれ、ｘ軸、ｙ軸、ｚ軸と規定される。より具体的には、実座標系において、ｘ軸は現実空間の水平方向に平行である。ｙ軸は、現実空間の鉛直方向に平行である。ｚ軸は現実空間の前後方向に平行である。
【００４２】
ある局面において、ＨＭＤセンサ４１０は、赤外線センサを含む。赤外線センサが、ＨＭＤ１２０の各光源から発せられた赤外線をそれぞれ検出すると、ＨＭＤ１２０の存在を検出する。ＨＭＤセンサ４１０は、さらに、各点の値（実座標系における各座標値）に基づいて、ＨＭＤ１２０を装着したユーザ５の動きに応じた、現実空間内におけるＨＭＤ１２０の位置および傾き（向き）を検出する。より詳しくは、ＨＭＤセンサ４１０は、経時的に検出された各値を用いて、ＨＭＤ１２０の位置および傾きの時間的変化を検出できる。
【００４３】
ＨＭＤセンサ４１０によって検出されたＨＭＤ１２０の各傾きは、実座標系におけるＨＭＤ１２０の３軸周りの各傾きに相当する。ＨＭＤセンサ４１０は、実座標系におけるＨＭＤ１２０の傾きに基づき、ｕｖｗ視野座標系をＨＭＤ１２０に設定する。ＨＭＤ１２０に設定されるｕｖｗ視野座標系は、ＨＭＤ１２０を装着したユーザ５が仮想空間において物体を見る際の視点座標系に対応する。
【００４４】
［ｕｖｗ視野座標系］
図３を参照して、ｕｖｗ視野座標系について説明する。図３は、ある実施の形態に従うＨＭＤ１２０に設定されるｕｖｗ視野座標系を概念的に表す図である。ＨＭＤセンサ４１０は、ＨＭＤ１２０の起動時に、実座標系におけるＨＭＤ１２０の位置および傾きを検出する。プロセッサ２１０は、検出された値に基づいて、ｕｖｗ視野座標系をＨＭＤ１２０に設定する。
【００４５】
図３に示されるように、ＨＭＤ１２０は、ＨＭＤ１２０を装着したユーザ５の頭部を中心（原点）とした３次元のｕｖｗ視野座標系を設定する。より具体的には、ＨＭＤ１２０は、実座標系を規定する水平方向、鉛直方向、および前後方向（ｘ軸、ｙ軸、ｚ軸）を、実座標系内においてＨＭＤ１２０の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる３つの方向を、ＨＭＤ１２０におけるｕｖｗ視野座標系のピッチ軸（ｕ軸）、ヨー軸（ｖ軸）、およびロール軸（ｗ軸）として設定する。
【００４６】
ある局面において、ＨＭＤ１２０を装着したユーザ５が直立し、かつ、正面を視認している場合、プロセッサ２１０は、実座標系に平行なｕｖｗ視野座標系をＨＭＤ１２０に設定する。この場合、実座標系における水平方向（ｘ軸）、鉛直方向（ｙ軸）、および前後方向（ｚ軸）は、ＨＭＤ１２０におけるｕｖｗ視野座標系のピッチ軸（ｕ軸）、ヨー軸（ｖ軸）、およびロール軸（ｗ軸）に一致する。
【００４７】
ｕｖｗ視野座標系がＨＭＤ１２０に設定された後、ＨＭＤセンサ４１０は、ＨＭＤ１２０の動きに基づいて、設定されたｕｖｗ視野座標系におけるＨＭＤ１２０の傾きを検出できる。この場合、ＨＭＤセンサ４１０は、ＨＭＤ１２０の傾きとして、ｕｖｗ視野座標系におけるＨＭＤ１２０のピッチ角（θｕ）、ヨー角（θｖ）、およびロール角（θｗ）をそれぞれ検出する。ピッチ角（θｕ）は、ｕｖｗ視野座標系におけるピッチ軸周りのＨＭＤ１２０の傾き角度を表す。ヨー角（θｖ）は、ｕｖｗ視野座標系におけるヨー軸周りのＨＭＤ１２０の傾き角度を表す。ロール角（θｗ）は、ｕｖｗ視野座標系におけるロール軸周りのＨＭＤ１２０の傾き角度を表す。
【００４８】
ＨＭＤセンサ４１０は、検出されたＨＭＤ１２０の傾きに基づいて、ＨＭＤ１２０が動いた後のＨＭＤ１２０におけるｕｖｗ視野座標系を、ＨＭＤ１２０に設定する。ＨＭＤ１２０と、ＨＭＤ１２０のｕｖｗ視野座標系との関係は、ＨＭＤ１２０の位置および傾きに関わらず、常に一定である。ＨＭＤ１２０の位置および傾きが変わると、当該位置および傾きの変化に連動して、実座標系におけるＨＭＤ１２０のｕｖｗ視野座標系の位置および傾きが変化する。
【００４９】
ある局面において、ＨＭＤセンサ４１０は、赤外線センサからの出力に基づいて取得される赤外線の光強度および複数の点間の相対的な位置関係（例えば、各点間の距離など）に基づいて、ＨＭＤ１２０の現実空間内における位置を、ＨＭＤセンサ４１０に対する相対位置として特定してもよい。プロセッサ２１０は、特定された相対位置に基づいて、現実空間内（実座標系）におけるＨＭＤ１２０のｕｖｗ視野座標系の原点を決定してもよい。
【００５０】
［仮想空間］
図４を参照して、仮想空間についてさらに説明する。図４は、ある実施の形態に従う仮想空間１１を表現する一態様を概念的に表す図である。仮想空間１１は、中心１２の３６０度方向の全体を覆う全天球状の構造を有する。図４では、説明を複雑にしないために、仮想空間１１のうちの上半分の天球が例示されている。仮想空間１１では各メッシュが規定される。各メッシュの位置は、仮想空間１１に規定されるグローバル座標系であるＸＹＺ座標系における座標値として予め規定されている。コンピュータ２００は、仮想空間１１に展開可能なパノラマ画像１３（静止画、動画等）を構成する各部分画像を、仮想空間１１において対応する各メッシュにそれぞれ対応付ける。
【００５１】
ある局面において、仮想空間１１では、中心１２を原点とするＸＹＺ座標系が規定される。ＸＹＺ座標系は、例えば、実座標系に平行である。ＸＹＺ座標系における水平方向、鉛直方向（上下方向）、および前後方向は、それぞれＸ軸、Ｙ軸、Ｚ軸として規定される。したがって、ＸＹＺ座標系のＸ軸（水平方向）が実座標系のｘ軸と平行であり、ＸＹＺ座標系のＹ軸（鉛直方向）が実座標系のｙ軸と平行であり、ＸＹＺ座標系のＺ軸（前後方向）が実座標系のｚ軸と平行である。
【００５２】
ＨＭＤ１２０の起動時、すなわちＨＭＤ１２０の初期状態において、仮想カメラ１４が、仮想空間１１の中心１２に配置される。ある局面において、プロセッサ２１０は、仮想カメラ１４が撮影する画像をＨＭＤ１２０のモニタ１３０に表示する。仮想カメラ１４は、現実空間におけるＨＭＤ１２０の動きに連動して、仮想空間１１を同様に移動する。これにより、現実空間におけるＨＭＤ１２０の位置および傾きの変化が、仮想空間１１において同様に再現され得る。
【００５３】
仮想カメラ１４には、ＨＭＤ１２０の場合と同様に、ｕｖｗ視野座標系が規定される。仮想空間１１における仮想カメラ１４のｕｖｗ視野座標系は、現実空間（実座標系）におけるＨＭＤ１２０のｕｖｗ視野座標系に連動するように規定されている。したがって、ＨＭＤ１２０の傾きが変化すると、それに応じて、仮想カメラ１４の傾きも変化する。仮想カメラ１４は、ＨＭＤ１２０を装着したユーザ５の現実空間における移動に連動して、仮想空間１１において移動することもできる。
【００５４】
コンピュータ２００のプロセッサ２１０は、仮想カメラ１４の位置と傾き（基準視線１６）とに基づいて、仮想空間１１における視界領域１５を規定する。視界領域１５は、仮想空間１１のうち、ＨＭＤ１２０を装着したユーザ５が視認する領域に対応する。つまり、仮想カメラ１４の位置は、仮想空間１１におけるユーザ５の視点と言える。
【００５５】
注視センサ１４０によって検出されるユーザ５の視線は、ユーザ５が物体を視認する際の視点座標系における方向である。ＨＭＤ１２０のｕｖｗ視野座標系は、ユーザ５がモニタ１３０を視認する際の視点座標系に等しい。仮想カメラ１４のｕｖｗ視野座標系は、ＨＭＤ１２０のｕｖｗ視野座標系に連動している。したがって、ある局面に従うＨＭＤシステム１００は、注視センサ１４０によって検出されたユーザ５の視線を、仮想カメラ１４のｕｖｗ視野座標系におけるユーザ５の視線とみなすことができる。
【００５６】
［ユーザの視線］
図５を参照して、ユーザ５の視線の決定について説明する。図５は、ある実施の形態に従うＨＭＤ１２０を装着するユーザ５の頭部を上から表した図である。
【００５７】
ある局面において、注視センサ１４０は、ユーザ５の右目および左目の各視線を検出する。ある局面において、ユーザ５が近くを見ている場合、注視センサ１４０は、視線Ｒ１およびＬ１を検出する。別の局面において、ユーザ５が遠くを見ている場合、注視センサ１４０は、視線Ｒ２およびＬ２を検出する。この場合、ロール軸ｗに対して視線Ｒ２およびＬ２が成す角度は、ロール軸ｗに対して視線Ｒ１およびＬ１が成す角度よりも小さい。注視センサ１４０は、検出結果をコンピュータ２００に送信する。
【００５８】
コンピュータ２００が、視線の検出結果として、視線Ｒ１およびＬ１の検出値を注視センサ１４０から受信した場合には、その検出値に基づいて、視線Ｒ１およびＬ１の交点である注視点Ｎ１を特定する。一方、コンピュータ２００は、視線Ｒ２およびＬ２の検出値を注視センサ１４０から受信した場合には、視線Ｒ２およびＬ２の交点を注視点として特定する。コンピュータ２００は、特定した注視点Ｎ１の位置に基づき、ユーザ５の視線Ｎ０を特定する。コンピュータ２００は、例えば、ユーザ５の右目Ｒと左目Ｌとを結ぶ直線の中点と、注視点Ｎ１とを通る直線の延びる方向を、視線Ｎ０として検出する。視線Ｎ０は、ユーザ５が両目により実際に視線を向けている方向である。視線Ｎ０は、視界領域１５に対してユーザ５が実際に視線を向けている方向に相当する。
【００５９】
別の局面において、ＨＭＤシステム１００は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、ＨＭＤシステム１００は、仮想空間１１においてテレビ番組を表示することができる。
【００６０】
さらに別の局面において、ＨＭＤシステム１００は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
【００６１】
［視界領域］
図６および図７を参照して、視界領域１５について説明する。図６は、仮想空間１１において視界領域１５をＸ方向から見たＹＺ断面を表す図である。図７は、仮想空間１１において視界領域１５をＹ方向から見たＸＺ断面を表す図である。
【００６２】
図６に示されるように、ＹＺ断面における視界領域１５は、領域１８を含む。領域１８は、仮想カメラ１４の位置と基準視線１６と仮想空間１１のＹＺ断面とによって定義される。プロセッサ２１０は、仮想空間における基準視線１６を中心として極角αを含む範囲を、領域１８として規定する。
【００６３】
図７に示されるように、ＸＺ断面における視界領域１５は、領域１９を含む。領域１９は、仮想カメラ１４の位置と基準視線１６と仮想空間１１のＸＺ断面とによって定義される。プロセッサ２１０は、仮想空間１１における基準視線１６を中心とした方位角βを含む範囲を、領域１９として規定する。極角αおよびβは、仮想カメラ１４の位置と仮想カメラ１４の傾き（向き）とに応じて定まる。
【００６４】
ある局面において、ＨＭＤシステム１００は、コンピュータ２００からの信号に基づいて、視界画像１７をモニタ１３０に表示させることにより、ユーザ５に仮想空間１１における視界を提供する。視界画像１７は、パノラマ画像１３のうち視界領域１５に対応する部分に相当する画像である。ユーザ５が、頭に装着したＨＭＤ１２０を動かすと、その動きに連動して仮想カメラ１４も動く。その結果、仮想空間１１における視界領域１５の位置が変化する。これにより、モニタ１３０に表示される視界画像１７は、パノラマ画像１３のうち、仮想空間１１においてユーザ５が向いた方向の視界領域１５に重畳する画像に更新される。ユーザ５は、仮想空間１１における所望の方向を視認することができる。
【００６５】
このように、仮想カメラ１４の傾きは仮想空間１１におけるユーザ５の視線（基準視線１６）に相当し、仮想カメラ１４が配置される位置は、仮想空間１１におけるユーザ５の視点に相当する。したがって、仮想カメラ１４の位置または傾きを変更することにより、モニタ１３０に表示される画像が更新され、ユーザ５の視界が移動される。
【００６６】
ユーザ５は、ＨＭＤ１２０を装着している間、現実世界を視認することなく、仮想空間１１に展開されるパノラマ画像１３のみを視認できる。そのため、ＨＭＤシステム１００は、仮想空間１１への高い没入感覚をユーザ５に与えることができる。
【００６７】
ある局面において、プロセッサ２１０は、ＨＭＤ１２０を装着したユーザ５の現実空間における移動に連動して、仮想空間１１において仮想カメラ１４を移動し得る。この場合、プロセッサ２１０は、仮想空間１１における仮想カメラ１４の位置および傾きに基づいて、ＨＭＤ１２０のモニタ１３０に投影される画像領域（視界領域１５）を特定する。
【００６８】
ある局面において、仮想カメラ１４は、２つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含み得る。ユーザ５が３次元の仮想空間１１を認識できるように、適切な視差が、２つの仮想カメラに設定される。別の局面において、仮想カメラ１４を１つの仮想カメラにより実現してもよい。この場合、１つの仮想カメラにより得られた画像から、右目用の画像と左目用の画像とを生成するようにしてもよい。本実施の形態においては、仮想カメラ１４が２つの仮想カメラを含み、２つの仮想カメラのロール軸が合成されることによって生成されるロール軸（ｗ）がＨＭＤ１２０のロール軸（ｗ）に適合されるように構成されているものとして、本開示に係る技術思想を例示する。
【００６９】
［コントローラ］
図８を参照して、コントローラ３００の一例について説明する。図８は、ある実施の形態に従うコントローラ３００の概略構成を表す図である。
【００７０】
図８に示されるように、ある局面において、コントローラ３００は、右コントローラ３００Ｒと図示せぬ左コントローラとを含み得る。右コントローラ３００Ｒは、ユーザ５の右手で操作される。左コントローラは、ユーザ５の左手で操作される。ある局面において、右コントローラ３００Ｒと左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ５は、右コントローラ３００Ｒを把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の局面において、コントローラ３００は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ３００Ｒについて説明する。
【００７１】
右コントローラ３００Ｒは、グリップ３１０と、フレーム３２０と、天面３３０とを備える。グリップ３１０は、ユーザ５の右手によって把持されるように構成されている。たとえば、グリップ３１０は、ユーザ５の右手の掌と３本の指（中指、薬指、小指）とによって保持され得る。
【００７２】
グリップ３１０は、ボタン３４０，３５０と、モーションセンサ４２０とを含む。ボタン３４０は、グリップ３１０の側面に配置され、右手の中指による操作を受け付ける。ボタン３５０は、グリップ３１０の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン３４０，３５０は、トリガー式のボタンとして構成される。モーションセンサ４２０は、グリップ３１０の筐体に内蔵されている。ユーザ５の動作がカメラその他の装置によってユーザ５の周りから検出可能である場合には、グリップ３１０は、モーションセンサ４２０を備えなくてもよい。
【００７３】
フレーム３２０は、その円周方向に沿って配置された複数の赤外線ＬＥＤ３６０を含む。赤外線ＬＥＤ３６０は、コントローラ３００を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線ＬＥＤ３６０から発せられた赤外線は、右コントローラ３００Ｒと左コントローラとの各位置や姿勢（傾き、向き）を検出するために使用され得る。図８に示される例では、二列に配置された赤外線ＬＥＤ３６０が示されているが、配列の数は図８に示されるものに限られない。一列あるいは３列以上の配列が使用されてもよい。
【００７４】
天面３３０は、ボタン３７０，３８０と、アナログスティック３９０とを備える。ボタン３７０，３８０は、プッシュ式ボタンとして構成される。ボタン３７０，３８０は、ユーザ５の右手の親指による操作を受け付ける。アナログスティック３９０は、ある局面において、初期位置（ニュートラルの位置）から３６０度任意の方向への操作を受け付ける。当該操作は、たとえば、仮想空間１１に配置されるオブジェクトを移動するための操作を含む。
【００７５】
ある局面において、右コントローラ３００Ｒおよび左コントローラは、赤外線ＬＥＤ３６０その他の部材を駆動するための電池を含む。電池は、充電式、ボタン型、乾電池型などを含むが、これらに限定されない。別の局面において、右コントローラ３００Ｒと左コントローラは、たとえば、コンピュータ２００のＵＳＢインターフェースに接続され得る。この場合、右コントローラ３００Ｒおよび左コントローラは、電池を必要としない。
【００７６】
図８の状態（Ａ）および状態（Ｂ）に示されるように、例えば、ユーザ５の右手に対して、ヨー、ロール、ピッチの各方向が規定される。ユーザ５が親指と人差し指とを伸ばした場合に、親指の伸びる方向がヨー方向、人差し指の伸びる方向がロール方向、ヨー方向の軸およびロール方向の軸によって規定される平面に垂直な方向がピッチ方向として規定される。
【００７７】
［サーバのハードウェア構成］
図９を参照して、本実施の形態に係るサーバ１０について説明する。図９は、ある実施の形態に従うサーバ６００のハードウェア構成の一例を表すブロック図である。サーバ６００は、主たる構成要素として、プロセッサ６１０と、メモリ６２０と、ストレージ６３０と、入出力インターフェイス６４０と、通信インターフェイス６５０とを備える。各構成要素は、それぞれ、バス６６０に接続されている。
【００７８】
プロセッサ６１０は、サーバ６００に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ６２０またはストレージ６３０に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ６１０は、ＣＰＵ、ＧＰＵ、ＭＰＵ、ＦＰＧＡその他のデバイスとして実現される。
【００７９】
メモリ６２０は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ６３０からロードされる。データは、サーバ６００に入力されたデータと、プロセッサ６１０によって生成されたデータとを含む。ある局面において、メモリ６２０は、ＲＡＭその他の揮発メモリとして実現される。
【００８０】
ストレージ６３０は、プログラムおよびデータを永続的に保持する。ストレージ６３０は、例えば、ＲＯＭ、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ６３０に格納されるプログラムは、ＨＭＤシステム１００において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、コンピュータ２００との通信を実現するためのプログラムを含んでもよい。ストレージ６３０に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含んでもよい。
【００８１】
別の局面において、ストレージ６３０は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、サーバ６００に内蔵されたストレージ６３０の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のＨＭＤシステム１００が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
【００８２】
入出力インターフェイス６４０は、入出力機器との間で信号を通信する。ある局面において、入出力インターフェイス６４０は、ＵＳＢ、ＤＶＩ、ＨＤＭＩその他の端子を用いて実現される。入出力インターフェイス６４０は上述のものに限られない。
【００８３】
通信インターフェイス６５０は、ネットワーク２に接続されて、ネットワーク２に接続されているコンピュータ２００と通信する。ある局面において、通信インターフェイス６５０は、例えば、ＬＡＮその他の有線通信インターフェイス、あるいは、ＷｉＦｉ、Ｂｌｕｅｔｏｏｔｈ、ＮＦＣその他の無線通信インターフェイスとして実現される。通信インターフェイス６５０は上述のものに限られない。
【００８４】
ある局面において、プロセッサ６１０は、ストレージ６３０にアクセスし、ストレージ６３０に格納されている１つ以上のプログラムをメモリ６２０にロードし、当該プログラムに含まれる一連の命令を実行する。当該１つ以上のプログラムは、サーバ６００のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ６１０は、入出力インターフェイス６４０を介して、仮想空間を提供するための信号をコンピュータ２００に送ってもよい。
【００８５】
［ＨＭＤの制御装置］
図１０を参照して、ＨＭＤ２１の制御装置について説明する。ある実施の形態において、制御装置は周知の構成を有するコンピュータ２００によって実現される。図１０は、ある実施の形態に従うコンピュータ２００をモジュール構成として表わすブロック図である。
【００８６】
図１０に示されるように、コンピュータ２００は、コントロールモジュール５１０と、レンダリングモジュール５２０と、メモリモジュール５３０と、通信制御モジュール５４０とを備える。ある局面において、コントロールモジュール５１０とレンダリングモジュール５２０とは、プロセッサ２１０によって実現される。別の局面において、複数のプロセッサ２１０がコントロールモジュール５１０とレンダリングモジュール５２０として作動してもよい。メモリモジュール５３０は、メモリ２２０またはストレージ２３０によって実現される。通信制御モジュール５４０は、通信インターフェイス２５０によって実現される。
【００８７】
コントロールモジュール５１０は、ユーザ５に提供される仮想空間１１を制御する。コントロールモジュール５１０は、仮想空間１１を表す仮想空間データを用いて、ＨＭＤシステム１００における仮想空間１１を規定する。仮想空間データは、例えば、メモリモジュール５３０に記憶されている。コントロールモジュール５１０が、仮想空間データを生成したり、サーバ６００などから仮想空間データを取得するようにしたりしてもよい。
【００８８】
コントロールモジュール５１０は、オブジェクトを表すオブジェクトデータを用いて、仮想空間１１にオブジェクトを配置する。オブジェクトデータは、例えば、メモリモジュール５３０に記憶されている。コントロールモジュール５１０が、オブジェクトデータを生成したり、サーバ６００などからオブジェクトデータを取得するようにしたりしてもよい。オブジェクトは、例えば、ユーザ５の分身であるアバターオブジェクト、キャラクタオブジェクト、コントローラ３００によって操作される仮想手などの操作オブジェクト、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、街並み、動物等を含み得る。
【００８９】
コントロールモジュール５１０は、ネットワーク２を介して接続される他のコンピュータ２００のユーザ５のアバターオブジェクトを仮想空間１１に配置する。ある局面において、コントロールモジュール５１０は、ユーザ５のアバターオブジェクトを仮想空間１１に配置する。ある局面において、コントロールモジュール５１０は、ユーザ５を含む画像に基づいて、ユーザ５を模したアバターオブジェクトを仮想空間１１に配置する。別の局面において、コントロールモジュール５１０は、複数種類のアバターオブジェクト（例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト）の中からユーザ５による選択を受け付けたアバターオブジェクトを仮想空間１１に配置する。
【００９０】
コントロールモジュール５１０は、ＨＭＤセンサ４１０の出力に基づいてＨＭＤ１２０の傾きを特定する。別の局面において、コントロールモジュール５１０は、モーションセンサとして機能するセンサ１９０の出力に基づいてＨＭＤ１２０の傾きを特定する。コントロールモジュール５１０は、第１カメラ１５０および第２カメラ１６０が生成するユーザ５の顔の画像から、ユーザ５の顔を構成する器官（例えば、口，目，眉）を検出する。コントロールモジュール５１０は、検出した各器官の動き（形状）を検出する。
【００９１】
コントロールモジュール５１０は、注視センサ１４０からの信号に基づいて、ユーザ５の仮想空間１１における視線を検出する。コントロールモジュール５１０は、検出したユーザ５の視線と仮想空間１１の天球とが交わる視点位置（ＸＹＺ座標系における座標値）を検出する。より具体的には、コントロールモジュール５１０は、ｕｖｗ座標系で規定されるユーザ５の視線と、仮想カメラ１４の位置および傾きとに基づいて、視点位置を検出する。コントロールモジュール５１０は、検出した視点位置をサーバ６００に送信する。別の局面において、コントロールモジュール５１０は、ユーザ５の視線を表す視線情報をサーバ６００に送信するように構成されてもよい。係る場合、サーバ６００が受信した視線情報に基づいて視点位置を算出し得る。
【００９２】
コントロールモジュール５１０は、ＨＭＤセンサ４１０が検出するＨＭＤ１２０の動きをアバターオブジェクトに反映する。例えば、コントロールモジュール５１０は、ＨＭＤ１２０が傾いたことを検知して、アバターオブジェクトを傾けて配置する。コントロールモジュール５１０は、検出した顔器官の動作を、仮想空間１１に配置されるアバターオブジェクトの顔に反映させる。コントロールモジュール５１０は、サーバ６００から他のユーザ５の視線情報を受信し、当該他のユーザ５のアバターオブジェクトの視線に反映させる。ある局面において、コントロールモジュール５１０は、コントローラ３００の動きをアバターオブジェクトや操作オブジェクトに反映する。この場合、コントローラ３００は、コントローラ３００の動きを検知するためのモーションセンサ、加速度センサ、または複数の発光素子（例えば、赤外線ＬＥＤ）などを備える。
【００９３】
コントロールモジュール５１０は、仮想空間１１においてユーザ５の操作を受け付けるための操作オブジェクトを仮想空間１１に配置する。ユーザ５は、操作オブジェクトを操作することにより、例えば、仮想空間１１に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、ユーザ５の手に相当する仮想手である手オブジェクト等を含み得る。ある局面において、コントロールモジュール５１０は、モーションセンサ４２０の出力に基づいて現実空間におけるユーザ５の手の動きに連動するように仮想空間１１において手オブジェクトを動かす。ある局面において、操作オブジェクトは、アバターオブジェクトの手の部分に相当し得る。
【００９４】
コントロールモジュール５１０は、仮想空間１１に配置されるオブジェクトのそれぞれが、他のオブジェクトと衝突した場合に、当該衝突を検出する。コントロールモジュール５１０は、例えば、あるオブジェクトのコリジョンエリアと、別のオブジェクトのコリジョンエリアとが触れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行なう。コントロールモジュール５１０は、オブジェクトとオブジェクトとが触れている状態から離れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行なう。コントロールモジュール５１０は、オブジェクトとオブジェクトとが触れている状態であることを検出することができる。例えば、コントロールモジュール５１０は、操作オブジェクトと、他のオブジェクトとが触れたときに、これら操作オブジェクトと他のオブジェクトとが触れたことを検出して、予め定められた処理を行なう。
【００９５】
ある局面において、コントロールモジュール５１０は、ＨＭＤ１２０のモニタ１３０における画像表示を制御する。例えば、コントロールモジュール５１０は、仮想空間１１に仮想カメラ１４を配置する。コントロールモジュール５１０は、仮想空間１１における仮想カメラ１４の位置と、仮想カメラ１４の傾き（向き）を制御する。コントロールモジュール５１０は、ＨＭＤ１２０を装着したユーザ５の頭の傾きと、仮想カメラ１４の位置に応じて、視界領域１５を規定する。レンダリングモジュール５２０は、決定された視界領域１５に基づいて、モニタ１３０に表示される視界画像１７を生成する。レンダリングモジュール５２０により生成された視界画像１７は、通信制御モジュール５４０によってＨＭＤ１２０に出力される。
【００９６】
コントロールモジュール５１０は、ＨＭＤ１２０から、ユーザ５のマイク１７０を用いた発話を検出すると、当該発話に対応する音声データの送信対象のコンピュータ２００を特定する。音声データは、コントロールモジュール５１０によって特定されたコンピュータ２００に送信される。コントロールモジュール５１０は、ネットワーク２を介して他のユーザのコンピュータ２００から音声データを受信すると、当該音声データに対応する音声（発話）をスピーカ１８０から出力する。
【００９７】
メモリモジュール５３０は、コンピュータ２００が仮想空間１１をユーザ５に提供するために使用されるデータを保持している。ある局面において、メモリモジュール５３０は、空間情報と、オブジェクト情報と、ユーザ情報とを保持している。
【００９８】
空間情報は、仮想空間１１を提供するために規定された１つ以上のテンプレートを保持している。
【００９９】
オブジェクト情報は、仮想空間１１を構成する複数のパノラマ画像１３、仮想空間１１にオブジェクトを配置するためのオブジェクトデータを含む。パノラマ画像１３は、静止画像および動画像を含み得る。パノラマ画像１３は、非現実空間の画像と現実空間の画像とを含み得る。非現実空間の画像としては、例えば、コンピュータグラフィックスで生成された画像が挙げられる。
【０１００】
ユーザ情報は、ユーザ５を識別するユーザＩＤを保持する。ユーザＩＤは、例えば、ユーザが使用するコンピュータ２００に設定されるＩＰ（Internet  Protocol）アドレスまたはＭＡＣ（Media  Access  Control）アドレスであり得る。別の局面において、ユーザＩＤはユーザによって設定され得る。ユーザ情報は、ＨＭＤシステム１００の制御装置としてコンピュータ２００を機能させるためのプログラム等を含む。
【０１０１】
メモリモジュール５３０に格納されているデータおよびプログラムは、ＨＭＤ１２０のユーザ５によって入力される。あるいは、プロセッサ２１０が、当該コンテンツを提供する事業者が運営するコンピュータ（例えば、サーバ６００）からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール５３０に格納する。
【０１０２】
通信制御モジュール５４０は、ネットワーク２を介して、サーバ６００その他の情報通信装置と通信し得る。
【０１０３】
ある局面において、コントロールモジュール５１０及びレンダリングモジュール５２０は、例えば、ユニティテクノロジーズ社によって提供されるＵｎｉｔｙ（登録商標）を用いて実現され得る。別の局面において、コントロールモジュール５１０及びレンダリングモジュール５２０は、各処理を実現する回路素子の組み合わせとしても実現され得る。
【０１０４】
コンピュータ２００における処理は、ハードウェアと、プロセッサ２１０により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール５３０に予め格納されている場合がある。ソフトウェアは、ＣＤ−ＲＯＭその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール５４０を介してサーバ６００その他のコンピュータからダウンロードされた後、記憶モジュールに一旦格納される。そのソフトウェアは、プロセッサ２１０によって記憶モジュールから読み出され、実行可能なプログラムの形式でＲＡＭに格納される。プロセッサ２１０は、そのプログラムを実行する。
【０１０５】
［ＨＭＤシステムの制御構造］
図１１を参照して、ＨＭＤセット１１０の制御構造について説明する。図１１は、ある実施の形態に従うＨＭＤセット１１０において実行される処理の一部を表すシーケンスチャートである。
【０１０６】
図１１に示されるように、ステップＳ１１１０にて、コンピュータ２００のプロセッサ２１０は、コントロールモジュール５１０として、仮想空間データを特定し、仮想空間１１を定義する。
【０１０７】
ステップＳ１１２０にて、プロセッサ２１０は、仮想カメラ１４を初期化する。たとえば、プロセッサ２１０は、メモリのワーク領域において、仮想カメラ１４を仮想空間１１において予め規定された中心１２に配置し、仮想カメラ１４の視線をユーザ５が向いている方向に向ける。
【０１０８】
ステップＳ１１３０にて、プロセッサ２１０は、レンダリングモジュール５２０として、初期の視界画像を表示するための視界画像データを生成する。生成された視界画像データは、通信制御モジュール５４０によってＨＭＤ１２０に出力される。
【０１０９】
ステップＳ１１３２にて、ＨＭＤ１２０のモニタ１３０は、コンピュータ２００から受信した視界画像データに基づいて、視界画像を表示する。ＨＭＤ１２０を装着したユーザ５は、視界画像を視認すると仮想空間１１を認識し得る。
【０１１０】
ステップＳ１１３４にて、ＨＭＤセンサ４１０は、ＨＭＤ１２０から発信される複数の赤外線光に基づいて、ＨＭＤ１２０の位置と傾きを検知する。検知結果は、動き検知データとして、コンピュータ２００に出力される。
【０１１１】
ステップＳ１１４０にて、プロセッサ２１０は、ＨＭＤ１２０の動き検知データに含まれる位置と傾きとに基づいて、ＨＭＤ１２０を装着したユーザ５の視界方向を特定する。
【０１１２】
ステップＳ１１５０にて、プロセッサ２１０は、アプリケーションプログラムを実行し、アプリケーションプログラムに含まれる命令に基づいて、仮想空間１１にオブジェクトを配置する。
【０１１３】
ステップＳ１１６０にて、コントローラ３００は、モーションセンサ４２０から出力される信号に基づいて、ユーザ５の操作を検出し、その検出された操作を表す検出データをコンピュータ２００に出力する。別の局面において、ユーザ５によるコントローラ３００の操作は、ユーザ５の周囲に配置されたカメラからの画像に基づいて検出されてもよい。
【０１１４】
ステップＳ１１７０にて、プロセッサ２１０は、コントローラ３００から取得した検出データに基づいて、ユーザ５によるコントローラ３００の操作を検出する。
【０１１５】
ステップＳ１１８０にて、プロセッサ２１０は、ユーザ５によるコントローラ３００の操作に基づく視界画像データを生成する。生成された視界画像データは、通信制御モジュール５４０によってＨＭＤ１２０に出力される。
【０１１６】
ステップＳ１１９０にて、ＨＭＤ１２０は、受信した視界画像データに基づいて視界画像を更新し、更新後の視界画像をモニタ１３０に表示する。
【０１１７】
［アバターオブジェクト］
図１２（Ａ）、（Ｂ）を参照して、本実施の形態に従うアバターオブジェクトについて説明する。以下、ＨＭＤセット１１０Ａ，１１０Ｂの各ユーザ５のアバターオブジェクトを説明する。以下、ＨＭＤセット１１０Ａのユーザをユーザ５Ａ、ＨＭＤセット１１０Ｂのユーザをユーザ５Ｂ、ＨＭＤセット１１０Ｃのユーザをユーザ５Ｃ、ＨＭＤセット１１０Ｄのユーザをユーザ５Ｄと表す。ＨＭＤセット１１０Ａに関する各構成要素の参照符号にＡが付され、ＨＭＤセット１１０Ｂに関する各構成要素の参照符号にＢが付され、ＨＭＤセット１１０Ｃに関する各構成要素の参照符号にＣが付され、ＨＭＤセット１１０Ｄに関する各構成要素の参照符号にＤが付される。例えば、ＨＭＤ１２０Ａは、ＨＭＤセット１１０Ａに含まれる。
【０１１８】
図１２（Ａ）は、ネットワーク２において、各ＨＭＤ１２０がユーザ５に仮想空間１１を提供する状況を表す模式図である。コンピュータ２００Ａ〜２００Ｄは、ＨＭＤ１２０Ａ〜１２０Ｄを介して、ユーザ５Ａ〜５Ｄに、仮想空間１１Ａ〜１１Ｄをそれぞれ提供する。図１２（Ａ）に示される例において、仮想空間１１Ａおよび仮想空間１１Ｂは同じデータによって構成されている。換言すれば、コンピュータ２００Ａとコンピュータ２００Ｂとは同じ仮想空間を共有していることになる。仮想空間１１Ａおよび仮想空間１１Ｂには、ユーザ５Ａのアバターオブジェクト６Ａと、ユーザ５Ｂのアバターオブジェクト６Ｂとが存在する。仮想空間１１Ａにおけるアバターオブジェクト６Ａおよび仮想空間１１Ｂにおけるアバターオブジェクト６ＢがそれぞれＨＭＤ１２０を装着しているが、これは説明を分かりやすくするためのものであって、実際にはこれらのオブジェクトはＨＭＤ１２０を装着していない。
【０１１９】
ある局面において、プロセッサ２１０Ａは、ユーザ５Ａの視界画像１７Ａを撮影する仮想カメラ１４Ａを、アバターオブジェクト６Ａの目の位置に配置し得る。
【０１２０】
図１２（Ｂ）は、図１２（Ａ）におけるユーザ５Ａの視界画像１７Ａを示す図である。視界画像１７Ａは、ＨＭＤ１２０Ａのモニタ１３０Ａに表示される画像である。この視界画像１７Ａは、仮想カメラ１４Ａにより生成された画像である。視界画像１７Ａには、ユーザ５Ｂのアバターオブジェクト６Ｂが表示されている。特に図示はしていないが、ユーザ５Ｂの視界画像にも同様に、ユーザ５Ａのアバターオブジェクト６Ａが表示されている。
【０１２１】
図１２（Ｂ）の状態において、ユーザ５Ａは仮想空間１１Ａを介してユーザ５Ｂと対話による通信（コミュニケーション）を図ることができる。より具体的には、マイク１７０Ａにより取得されたユーザ５Ａの音声は、サーバ６００を介してユーザ５ＢのＨＭＤ１７１２０Ｂに送信され、ＨＭＤ１２０Ｂに設けられたスピーカ１８０Ｂから出力される。ユーザ５Ｂの音声は、サーバ６００を介してユーザ５ＡのＨＭＤ１２０Ａに送信され、ＨＭＤ１２０Ａに設けられたスピーカ１８０Ａから出力される。
【０１２２】
ユーザ５Ｂの動作（ＨＭＤ１２０Ｂの動作およびコントローラ３００Ｂの動作）は、プロセッサ２１０Ａにより仮想空間１１Ａに配置されるアバターオブジェクト６Ｂに反映される。これにより、ユーザ５Ａは、ユーザ５Ｂの動作を、アバターオブジェクト６Ｂを通じて認識できる。
【０１２３】
図１３は、本実施の形態に従うＨＭＤシステム１００において実行される処理の一部を表すシーケンスチャートである。図１３においては、ＨＭＤセット１１０Ｄを図示していないが、ＨＭＤセット１１０Ｄについても、ＨＭＤセット１１０Ａ、１１０Ｂ、１１０Ｃと同様に動作する。以下の説明でも、ＨＭＤセット１１０Ａに関する各構成要素の参照符号にＡが付され、ＨＭＤセット１１０Ｂに関する各構成要素の参照符号にＢが付され、ＨＭＤセット１１０Ｃに関する各構成要素の参照符号にＣが付され、ＨＭＤセット１１０Ｄに関する各構成要素の参照符号にＤが付されるものとする。
【０１２４】
ステップＳ１３１０Ａにおいて、ＨＭＤセット１１０Ａにおけるプロセッサ２１０Ａは、仮想空間１１Ａにおけるアバターオブジェクト６Ａの動作を決定するためのアバター情報を取得する。このアバター情報は、例えば、動き情報、フェイストラッキングデータ、および音声データ等のアバターに関する情報を含む。動き情報は、ＨＭＤ１２０Ａの位置および傾きの時間的変化を示す情報や、モーションセンサ４２０Ａ等により検出されたユーザ５Ａの手の動きを示す情報などを含む。フェイストラッキングデータは、ユーザ５Ａの顔の各パーツの位置および大きさを特定するデータが挙げられる。フェイストラッキングデータは、ユーザ５Ａの顔を構成する各器官の動きを示すデータや視線データが挙げられる。音声データは、ＨＭＤ１２０Ａのマイク１７０Ａによって取得されたユーザ５Ａの音声を示すデータが挙げられる。アバター情報には、アバターオブジェクト６Ａ、あるいはアバターオブジェクト６Ａに関連付けられるユーザ５Ａを特定する情報や、アバターオブジェクト６Ａが存在する仮想空間１１Ａを特定する情報等が含まれてもよい。アバターオブジェクト６Ａやユーザ５Ａを特定する情報としては、ユーザＩＤが挙げられる。アバターオブジェクト６Ａが存在する仮想空間１１Ａを特定する情報としては、ルームＩＤが挙げられる。プロセッサ２１０Ａは、上述のように取得されたアバター情報を、ネットワーク２を介してサーバ６００に送信する。
【０１２５】
ステップＳ１３１０Ｂにおいて、ＨＭＤセット１１０Ｂにおけるプロセッサ２１０Ｂは、ステップＳ１３１０Ａにおける処理と同様に、仮想空間１１Ｂにおけるアバターオブジェクト６Ｂの動作を決定するためのアバター情報を取得し、サーバ６００に送信する。同様に、ステップＳ１３１０Ｃにおいて、ＨＭＤセット１１０Ｂにおけるプロセッサ２１０Ｂは、仮想空間１１Ｃにおけるアバターオブジェクト６Ｃの動作を決定するためのアバター情報を取得し、サーバ６００に送信する。
【０１２６】
ステップＳ１３２０において、サーバ６００は、ＨＭＤセット１１０Ａ、ＨＭＤセット１１０Ｂ、およびＨＭＤセット１１０Ｃのそれぞれから受信したプレイヤ情報を一旦記憶する。サーバ６００は、各アバター情報に含まれるユーザＩＤおよびルームＩＤ等に基づいて、共通の仮想空間１１に関連付けられた全ユーザ（この例では、ユーザ５Ａ〜５Ｃ）のアバター情報を統合する。そして、サーバ６００は、予め定められたタイミングで、統合したアバター情報を当該仮想空間１１に関連付けられた全ユーザに送信する。これにより、同期処理が実行される。このような同期処理により、ＨＭＤセット１１０Ａ、ＨＭＤセット１１０Ｂ、およびＨＭＤ１１０２０Ｃは、互いのアバター情報をほぼ同じタイミングで共有することができる。
【０１２７】
続いて、サーバ６００から各ＨＭＤセット１１０Ａ〜１１０Ｃに送信されたアバター情報に基づいて、各ＨＭＤセット１１０Ａ〜１１０Ｃは、ステップＳ１３３０Ａ〜Ｓ１３３０Ｃの処理を実行する。ステップＳ１３３０Ａの処理は、図１１におけるステップＳ１１８０の処理に相当する。
【０１２８】
ステップＳ１３３０Ａにおいて、ＨＭＤセット１１０Ａにおけるプロセッサ２１０Ａは、仮想空間１１Ａにおける他のユーザ５Ｂ，５Ｃのアバターオブジェクト６Ｂ、アバターオブジェクト６Ｃの情報を更新する。具体的には、プロセッサ２１０Ａは、ＨＭＤセット１１０Ｂから送信されたアバター情報に含まれる動き情報に基づいて、仮想空間１１におけるアバターオブジェクト６Ｂの位置および向き等を更新する。例えば、プロセッサ２１０Ａは、メモリモジュール５４０に格納されたオブジェクト情報に含まれるアバターオブジェクト６Ｂの情報（位置および向き等）を更新する。同様に、プロセッサ２１０Ａは、ＨＭＤセット１１０Ｃから送信されたアバター情報に含まれる動き情報に基づいて、仮想空間１１におけるアバターオブジェクト６Ｃの情報（位置および向き等）を更新する。
【０１２９】
ステップＳ１３３０Ｂにおいて、ＨＭＤセット１１０Ｂにおけるプロセッサ２１０Ｂは、ステップＳ１３３０Ａにおける処理と同様に、仮想空間１１Ｂにおけるユーザ５Ａ，５Ｃのアバターオブジェクト６Ａ，６Ｃの情報を更新する。同様に、ステップＳ１３３０Ｃにおいて、ＨＭＤセット１１０Ｃにおけるプロセッサ２１０Ｃは、仮想空間１１Ｃにおけるユーザ５Ａ，５Ｂのアバターオブジェクト６Ａ，６Ｂの情報を更新する。
【０１３０】
［モジュールの詳細構成］
図１４を参照して、コンピュータ２００のモジュール構成の詳細について説明する。図１４は、ある実施の形態に従うコンピュータ２００のモジュールの詳細構成を表わすブロック図である。
【０１３１】
図１４に示されるように、コントロールモジュール５１０は、仮想カメラ制御モジュール１４２１と、視界領域決定モジュール１４２２と、基準視線特定モジュール１４２３と、仮想空間定義モジュール１４２６と、仮想オブジェクト生成モジュール１４２７と、操作オブジェクト制御モジュール１４２８と、アバター制御モジュール１４２９と、不快状態検知モジュール１４５１と、不快状態抑制モジュール１４５２と、を備える。レンダリングモジュール５２０は、視界画像生成モジュール１４３８を備える。メモリモジュール５３０は、空間情報１４３１と、オブジェクト情報１４３２と、ユーザ情報１４３３と、を保持している。
【０１３２】
仮想カメラ制御モジュール１４２１は、仮想空間１１に仮想カメラ１４を配置する。仮想カメラ制御モジュール１４２１は、仮想空間１１における仮想カメラ１４の配置位置と、仮想カメラ１４の向き（傾き）を制御する。視界領域決定モジュール１４２２は、ＨＭＤ１２０を装着したユーザの頭の向きと、仮想カメラ１４の配置位置に応じて、視界領域１５を規定する。視界画像生成モジュール１４３８は、決定された視界領域１５に基づいて、モニタ１３０に表示される視界画像１７を生成する。
【０１３３】
基準視線特定モジュール１４２３は、センサ１９０またはＨＭＤセンサ４１０の出力に基づいて、基準視線１６を特定する。基準視線特定モジュール１４２３はさらに、注視センサ１４０からの信号に基づいて、ユーザ５の視線を特定する。
【０１３４】
仮想空間定義モジュール１４２６は、仮想空間１１を表わす仮想空間データを生成することにより、ＨＭＤシステム１００における仮想空間１１を規定する。
【０１３５】
仮想オブジェクト生成モジュール１４２７は、仮想空間１１に配置されるオブジェクトを生成する。オブジェクトは、例えば、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、動物等を含み得る。
【０１３６】
操作オブジェクト制御モジュール１４２８は、仮想空間１１においてユーザの操作を受け付けるための操作オブジェクトを仮想空間１１に配置する。ユーザは、操作オブジェクトを操作することにより、例えば、仮想空間１１に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、ＨＭＤ１２０を装着したユーザの手に相当する手オブジェクト等を含み得る。ある局面において、操作オブジェクトは、アバターオブジェクト６の手の部分に相当し得る。
【０１３７】
アバター制御モジュール１４２９は、ネットワーク２を介して接続される他のコンピュータ２００のユーザのアバターオブジェクトを仮想空間１１に配置するためのデータを生成する。ある局面において、アバター制御モジュール１４２９は、ユーザ５のアバターオブジェクトを仮想空間１１に配置するためのデータを生成する。ある局面において、アバター制御モジュール１４２９は、ユーザ５を含む画像に基づいて、ユーザ５を模したアバターオブジェクトを生成する。別の局面において、アバター制御モジュール１４２９は、複数種類のアバターオブジェクト（例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト）の中からユーザ５による選択を受け付けたアバターオブジェクトを仮想空間１１に配置するためのデータを生成する。
【０１３８】
アバター制御モジュール１４２９は、ＨＭＤセンサ４１０が検出するＨＭＤ１２０の動きをアバターオブジェクトに反映する。例えば、アバター制御モジュール１４２９は、ＨＭＤ１２０が傾いたことを検知して、アバターオブジェクトを傾けて配置するためのデータを生成する。ある局面において、アバター制御モジュール１４２９は、コントローラ３００の動きをアバターオブジェクトに反映する。この場合、コントローラ３００は、コントローラ３００の動きを検知するためのモーションセンサ、加速度センサ、または複数の発光素子（例えば、赤外線ＬＥＤ）などを備える。
【０１３９】
不快状態検知モジュール１４５１は、ユーザ５の動作に基づいて、ユーザ５が不快状態にあることを検知する。不快状態抑制モジュール１４５２は、ユーザ５における不快状態を抑制するための処理を実行する。不快状態検知モジュール１４５１、および不快状態抑制モジュール１４５２の詳細は後述する。
【０１４０】
空間情報１４３１は、仮想空間１１を提供するために規定された１つ以上のテンプレートを保持している。
【０１４１】
オブジェクト情報１４３２は、仮想空間１１において再生されるコンテンツ、当該コンテンツで使用されるオブジェクト、およびオブジェクトを仮想空間１１に配置するための情報（たとえば、位置）を保持している。当該コンテンツは、例えば、ゲーム、現実社会と同様の風景を表したコンテンツ等を含み得る。
【０１４２】
ユーザ情報１４３３は、ＨＭＤシステム１００の制御装置としてコンピュータ２００を機能させるためのプログラム、オブジェクト情報１４３２に保持される各コンテンツを使用するアプリケーションプログラム等を保持している。
【０１４３】
［仮想空間の中を移動するためのデバイス］
図１５は、ある実施形態において仮想空間の中を移動するために供されるデバイスの構成例を表す図である。
【０１４４】
図１５を参照して、ある局面においてユーザ５は、ボード１５２１に乗っている。ボード１５２１は、平板１５２３，１５２５と、バネ１５２７，１５２９と、４組のキャスター１５３１と、傾きセンサ１５３３と、４つの重量センサ１５６０と、を備える。
【０１４５】
平板１５２３と平板１５２５とは、バネ１５２７およびバネ１５２９によって連結されている。ユーザ５は、平板１５２３の上に乗っている。平板１５２５のバネ１５２７，１５２９とは反対側の面の４隅にはキャスター１５３１が取り付けられている。傾きセンサ１５３３は、平板１５２３に取り付けられている。
【０１４６】
ユーザ５は、筐体１５４１に囲まれている空間１５５１内でボード１５２１を動かす。換言すれば、筐体１５４１は、ボード１５２１の動きを制限するように構成されている。その理由は、仮にボード１５２１の動きが制限されない場合、ユーザ５がボード１５２１の動きを制御しきれず転倒するなどの危険を伴うためである。
【０１４７】
筐体１５４１は、バー１５４３を含む。ユーザ５は、ボード１５２１に乗っている間、不安定な状態である。そこで、ユーザ５はバー１５４３を掴むことによって自身の状態を安定させる。
【０１４８】
傾きセンサ１５３３は、ユーザ５が乗っている平板１５２３の向き（傾き）、つまり、ピッチ軸（ｕ軸）、ヨー軸（ｖ軸）、およびロール軸（ｗ軸）のそれぞれの回転角を検出し、検出結果をコンピュータ２００に送信するように構成されている。一例として、傾きセンサ１５３３は、ジャイロセンサにより実現される。傾きセンサ１５３３に代えて、赤外光などのＨＭＤセンサ４１０により検出可能な光を発する媒体を用いて、平板１５２３の向き（傾き）を検出するようにしてもよい。具体的には、ＨＭＤセンサ４１０が、この媒体から発する複数の赤外線を読み取り、この媒体の位置および傾きを検出するようにしてもよい。
【０１４９】
４つの重量センサ１５６０のそれぞれは、筐体１５４１の四隅のそれぞれに印加される荷重を測定するために、筐体１５４１の四隅のそれぞれの底面に設けられる。図１５では、紙面の関係上、４つの重量センサ１５６０のうち３つのみが明示的に示されている。
【０１５０】
図１６は、筐体１５４１の２本のバー１５４３のそれぞれの上に設けられた２つの操作ボタンを示す図である。図１６に示されるように、筐体１５４１の２本のバー１５４３のうち、左側のバー１５４３には操作ボタン１５１１が設けられ、右側のバー１５４３には操作ボタン１５１２が設けられている。図１５に示されたように平板１５２３上に乗っているユーザ５は、その左右の手で２本のバー１５４３の双方を握りしめることにより、操作ボタン１５１１，１５１２を押圧する。
【０１５１】
図１７は、図１５および図１６を参照して説明された構成例における、コンピュータ２００に対する追加的構成を説明するための図である。図１７に示されるように、コンピュータ２００は、図２に示された要素に加えて、傾きセンサ１５３３、４つの重量センサ１５６０、および２つの操作ボタン１５１１，１５１２に接続される。重量センサ１５６０および／または操作ボタン１５１１，１５１２は、モーションセンサ４２０（図１）によって実現されてもよい。
【０１５２】
［仮想カメラの向きの制御］
図１８は、ユーザ５に提供される視界画像１８００の一例を示す図である。視界画像１８００は、街の上空から見える風景を表わす。図１８に示された例では、コンピュータ２００は、ユーザ５に対して、街の上空をボードに乗って飛行する仮想体験を提供する。視界画像１８００は、ユーザ５が乗っているボードに対応する移動体オブジェクト１８０１を含む。視界画像１８００がボードの先端のみを表示することは、ボードに乗っているユーザ５の視界に入るのが、通常、当該ボードの先端のみであることに対応する。
【０１５３】
プロセッサ２１０は、上述のように、ＨＭＤ１２０の傾きに従って、仮想カメラ１４の向きを制御する。プロセッサー２１０は、さらに、ボード１５２１に取り付けられた傾きセンサ１５３３からの検知出力に従って、仮想カメラ１４の向きを制御する。たとえば、傾きセンサ１５３３が、ボード１５２１の右方への回転を検知すると、プロセッサ２１０は、仮想カメラ１４の向きを右方へと変更する。
【０１５４】
図１９は、傾きセンサ１５３３の検知出力に基づく制御の具体例を説明するための図である。図１９を参照して、ボード１５２１の傾きに応じて実行される仮想カメラ１４の位置および向きの制御について具体的に説明する。
【０１５５】
図１９に示される例において、ボード１５２１は正面方向１９２１を向いている。このとき、仮想カメラ制御モジュール１４２１は、仮想空間１１内の仮想カメラ１４を正面方向１９３１に向ける。
【０１５６】
傾きセンサ１５３３からの検知出力に基づく仮想カメラ１４の向きの制御の一例として、仮想カメラ制御モジュール１４２１は、ボード１５２１（平板１５２３）の向きがヨー軸に対して垂直な平面において時計回りに角度θ２傾いた方向１９２３にあることを検出すると、仮想カメラ１４の向きを正面方向１７３１から右方向に角度θ２傾いた方向１９３３に制御する。
【０１５７】
［概略的な処理の流れ］
図２０は、ユーザ５に仮想体験を提供するためにユーザ５の状態に応じて行なわれる処理のフローチャートである。図２０の処理は、たとえば、ユーザ５に仮想体験を提供するアプリケーションプログラムの一部として実行される。
【０１５８】
図２０に示されるように、ステップＳ２０１０にて、プロセッサ２１０は、コンピュータ２００の状態に基づいて、仮想カメラ１４の移動を開始する条件が成立したか否かを判断する。当該条件が成立する状況の一例は、アプリケーションプログラムにおいて移動を開始させるためのイベント（たとえば、ユーザからの開始指示の入力、レース開始時刻の到来、等）が発生したことである。なお、ステップＳ２０１０の「移動」とは、後述するステップＳ２０２０において開始される「移動」を意味する。すなわち、ステップＳ２０１０が実行されるときに、仮想カメラ１４は、静止している状態であってもよいし、移動している状態であってもよい。
【０１５９】
プロセッサ２１０は、上記条件が成立したと判断するまで、一定時間ごとにステップＳ２０１０の制御を実行する（ステップＳ２０１０にてＮＯ）。上記条件が成立したと判断すると（ステップＳ２０１０にてＹＥＳ）、ステップＳ２０２０へ制御を進める。
【０１６０】
ステップＳ２０２０にて、プロセッサ２１０は、仮想空間１１において仮想カメラ１４の移動を開始させる。プロセッサ２１０は、たとえば、一定速度で、ボード１５２１および／またはユーザ５の頭の向きに基づいて決定された方向に、仮想カメラ１４を移動させる。
【０１６１】
ステップＳ２０３０にて、プロセッサ２１０は、コンピュータ２００の状態に基づいて、仮想体験の提供の対象であるユーザ５が不快状態にあるか否かを判定する。不快状態とは、ユーザ５が不快に感じている状態であり、その一例は所謂ＶＲ酔いを引き起こしている状態である。判定の方法は後述される。
【０１６２】
ステップＳ２０４０にて、プロセッサ２１０は、ステップＳ２０３０における判定の結果を確認する。プロセッサ２１０は、判定の結果が、ユーザ５が不快状態にあるというものであれば（ステップＳ２０４０にてＹＥＳ）、ステップＳ２０５０へ制御を進め、そうでなければ（ステップＳ２０４０にてＮＯ）、ステップＳ２０３０へ制御を戻す。
【０１６３】
ステップＳ２０５０にて、プロセッサ２１０は、ユーザ５の不快状態を抑制するための処理（不快状態抑制処理）を実施した後、ステップＳ２０３０へ制御を戻す。不快状態抑制処理の内容は、図２１等を参照して後述する。
【０１６４】
ステップＳ２０６０にて、プロセッサ２１０は、ステップＳ２０１０にて開始させた移動を停止させるための条件が成立したか否かを判断する。当該条件の一例は、アプリケーションプログラムにおいて移動を停止させるためのイベントが発生したこと（仮想カメラ１４が仮想空間１１におけるゴールまで移動したこと、等）である。
【０１６５】
プロセッサ２１０は、上記条件が成立したと判断するまで、一定時間ごとにステップＳ２０１０の制御を実行する（ステップＳ２０６０にてＮＯ）。上記条件が成立したと判断すると（ステップＳ２０６０にてＹＥＳ）、ステップＳ２０７０へ制御を進める。
【０１６６】
ステップＳ２０７０にて、プロセッサ２１０は、ステップＳ２０２０にて開始した仮想カメラ１４の移動を停止させる。ステップＳ２０７０の「停止」とは、ステップＳ２０２０で開始された態様の移動の停止を意味する。この意味において、ステップＳ２０７０にて移動を停止された仮想カメラ１４は、静止している場合もあれば、ステップＳ２０２０で開始された態様の移動とは異なる態様で移動している場合もある。その後、プロセッサ２１０は図２０の処理を終了する。
【０１６７】
図２０の処理では、プロセッサ２１０は、ユーザ５が不快状態にあることをユーザ５からの操作を必要とすることなく積極的に検知し、当該不快状態を抑制するための制御を実行する。ユーザ５は、不快状態になったとき、ＨＭＤ１２０を装着しているという制約を受けた状況では不快状態である旨の操作を入力できない場合があり得る。このような場合でも、プロセッサ２１０は、積極的にユーザ５が不快状態にあることを検知して不快状態抑制処理を実行することにより、より確実にユーザ５の状態に適した仮想体験を提供し得る。
【０１６８】
また、図２０の処理は、特に、アプリケーションプログラムが、不快状態低減処理（Ｓ２０５０）以外に、ステップＳ２０２０において開始された仮想カメラ１４の移動を停止させるためのメニューを持たない場合に有益である。この意味において、ステップＳ２０２０において開始され、ステップＳ２０７０で停止される仮想カメラ１４の移動は、一定速度である必要はなく、所与のパターンに従って変動するものであってもよい。
【０１６９】
［不快状態抑制処理（その１）］
図２１は、図２０の不快状態抑制処理のサブルーチンの一例のフローチャートである。図２１に示されるように、ステップＳ２１１０にて、プロセッサ２１０は、仮想カメラ１４の移動速度を低減する。移動速度の低減は、仮想カメラ１４の移動の速度を、それまでの速度（第１速度）より遅い予め定められた速度（第２速度）まで低減する。移動速度の低減は、仮想カメラ１４を停止させることであってもよい。
【０１７０】
ステップＳ２１２０にて、プロセッサ２１０は、ユーザ５が回復したか否かを判断する。回復の一例は、上記不快状態にないことである。他の例は、不快状態のレベルが低下したことである。たとえば、頭の位置が低くなった（屈んだ）ことによってユーザ５が不快状態であると判断された場合に、当該頭の位置が、不快状態と判断されたときの位置よりも高くなったことが、不快状態のレベルが低下したことの一例である。
【０１７１】
プロセッサ２１０は、ユーザ５が回復したと判断するまで、一定時間ごとにステップＳ２１２０の制御を実行する（ステップＳ２１２０にてＮＯ）。上記条件が成立したと判断すると（ステップＳ２１２０にてＹＥＳ）、ステップＳ２１３０へ制御を進める。
【０１７２】
ステップＳ２１３０にて、プロセッサ２１０は、ステップＳ２１１０にて低減させた仮想空間カメラ１４の移動速度を元に戻す。その後、プロセッサ２１０は図２０へ制御を戻す。
【０１７３】
図２１を参照して説明された処理によれば、プロセッサ２１０は、図２０の処理でユーザ５が不快状態であると判断されたとき、ユーザ５からの特別な操作を必要とすることなく、仮想カメラ１４の移動の速度を低減し、または、仮想カメラ１４の移動を停止する。速度の低減により、視界画像において画像の流れる速度が低減される。停止により、視界画像において画像の流れが止まる。仮想カメラ１４の移動の速度の低減，停止は、それぞれ、ユーザの不快状態抑制のための制御の一例，他の例である。
【０１７４】
［不快状態抑制処理（その２）］
図２２は、図２０の不快状態抑制処理のサブルーチンの他の例のフローチャートである。図２２に示されるように、ステップＳ２２１０にて、プロセッサ２１０は、モニタ１３０に緊急停止用メニューを表示する。その後、プロセッサ２１０は図２０へ制御を戻す。なお、プロセッサ２１０は、緊急停止用メニューの表示の開始から一定時間経過後に、当該緊急停止用メニューの表示を停止してもよい。プロセッサ２１０は、ユーザ５が不快状態ではないことを検知したことを条件として、緊急停止用メニューの表示を停止してもよい。
【０１７５】
図２３は、ステップＳ２２１０において表示される緊急停止用メニューの表示の一例を示す図である。視界画像２３００は、緊急停止用メニュー２３１０を含む。緊急停止用メニュー２３１０は、メッセージ「緊急停止しますか？」と、２つのボタン２３１１，２３１２とを含む。
【０１７６】
プロセッサ２１０は、仮想空間１１において一定の速度で継続的に仮想カメラ１４を移動させているときに、ボタン２３１１が選択されると、仮想カメラ１４の移動を停止させてもよい。その後、プロセッサ２１０は、予め定められた条件が満たされると、仮想カメラ１４の移動を再開してもよい。予め定められた条件の一例は、ユーザ５の予め定められた動作を検出したことであり、他の例は、仮想カメラ１４の移動の停止から予め定められた時間が経過したことである。プロセッサ２１０は、たとえば、注視センサ１４０によってボタン２３１１が一定時間見つめられたことが検出された場合に、ボタン２３１１が選択されたと判断する。
【０１７７】
プロセッサ２１０は、ボタン２３１２が選択されると、仮想カメラ１４の移動の速度を変更することなく、緊急停止用メニュー２３１０の表示を停止させる。これにより、ユーザ５が、実際には不快状態に無いにも拘わらず、プロセッサ２１０によって不快状態であると判定された場合でも、ボタン２３１２を選択することによって不快状態抑制処理の実施を回避できる。
【０１７８】
図２３の例において、プロセッサ２１０は、緊急停止の代わりに、緊急減速を実行してもよい。すなわち、プロセッサ２１０は、ボタン２３１１を操作されると、仮想カメラ１４を停止させる代わりに、仮想カメラ１４の移動速度を低減させてもよい。プロセッサ２１０は、上記予め定められた条件が満たされたことを条件として、仮想カメラ１４の移動速度を元に戻してもよい。
【０１７９】
［不快状態抑制処理（その３）］
図２４は、図２０の不快状態抑制処理のサブルーチンのさらに他の例のフローチャートである。図２４に示されるように、ステップＳ２４１０にて、プロセッサ２１０は、モニタ１３０に救護テントを表示する。プロセッサ２１０は、救護テントの表示の開始から一定時間経過後に、当該救護テントの表示を停止してもよい。プロセッサ２１０は、ユーザ５が不快状態ではないことを検知したことを条件として、救護テントの表示を停止してもよい。図２５は、救護テントの表示の一例を説明するための図である。視界画像２５００は、救護テントを表わすオブジェクト２５１０を含む。
【０１８０】
図２４に戻って、ステップＳ２４２０にて、プロセッサ２１０は、ユーザ５が上記救護テントに入ったか否かを判断する。プロセッサ２１０は、たとえば、仮想空間１１において、仮想カメラ１４が図２５のオブジェクト２５１０によって占められる領域の内部に入ったことにより、ユーザ５が上記救護テントに入ったと判断する。プロセッサ２１０は、ユーザ５が上記救護テントに入ったと判断すると（ステップＳ２４２０にてＹＥＳ）、ステップＳ２４３０へ制御を進める。ステップＳ２４３０にて、プロセッサ２１０は、仮想空間１１において仮想カメラ１４の移動を停止させる。その後、ステップＳ２４４０へ制御を進める。ユーザ５が上記救護テントに入っていないと判断すると（ステップＳ２４２０にてＮＯ）、プロセッサ２１０はステップＳ２４４０へ制御を進める。
【０１８１】
ステップＳ２４４０にて、プロセッサ２１０は、ユーザ５の状態が回復したか否かを判断する。回復の一例は、上記不快状態にないことである。プロセッサ２１０は、ユーザ５が回復したと判断すると（ステップＳ２４４０にてＹＥＳ）、ステップＳ２４５０へ制御を進め、そうでなければ（ステップＳ２４４０にてＮＯ）、ステップＳ２４２０へ制御を戻す。
【０１８２】
ステップＳ２４５０にて、プロセッサ２１０は、仮想空間１１における仮想カメラ１４の移動をステップＳ２４３０の停止前の速度に戻した後、図２０へ制御を戻す。
【０１８３】
図２４および図２５を参照して説明された例では、プロセッサ２１０は、ユーザ５が不快状態にあると判断した場合、ユーザ５が救護テントに入るための操作を行ったことを条件として、仮想カメラ１４の移動を停止する。
【０１８４】
［不快状態抑制処理（その４）］
モニタ１３０は、ユーザ５の目を被う密閉型であって、透過の度合いを制御し得るタイプの表示装置であってもよい。プロセッサ２１０は、不快状態抑制処理（ステップＳ２０５０）として、ユーザ５が不快状態にあると判断された期間中、モニタ１３０の透過度を上昇させてもよい。これにより、ユーザ５に提供される視界画像において、現実空間の画像が混合される割合が上昇する。
【０１８５】
プロセッサ２１０は、仮想空間の視界画像に、カメラによって現実空間の画像を撮影し、撮影された現実空間の当該画像を重畳する度合いを高くすることにより、視界画像において現実空間の画像が混合される割合を上昇させてもよい。この場合、モニタ１３０は、非透過型の表示装置であってもよい。
【０１８６】
［その他の不快状態抑制処理］
不快状態抑制処理として、プロセッサ２１０は、仮想カメラ１４からの視界画像の表示態様を変更する。視界画像の表示態様の変更は、上記以外にも、モニタ１３０によって表示される画像の視認性の低下であってもよい。この場合、プロセッサ２１０は、視界画像の明度を下げることによってユーザ５の視野を暗くしてもよい。プロセッサ２１０は、視界画像に対して、霧をかけるような演出を施し、被写界深度を浅くし、または、解像度を下げることによって、視界画像としてぼかした画像を提供してもよい。不快状態抑制処理として、プロセッサ２１０は、仮想空間においてアバターオブジェクトを転ばせる演出を行った後、仮想空間１１における仮想カメラ１４の移動を停止させてもよい。
【０１８７】
［不快状態判定処理］
ステップＳ２０３０（図２０）における、ユーザ５が不快状態にあるか否かを判定するための処理（不快状態判定処理）の具体例を説明する。プロセッサ２１０は、ユーザ５の動作に基づいて、ユーザが不快状態にあるか否かを判定する。ユーザ５の動作とは、ユーザ５が動かないことも含む。すなわち、プロセッサ２１０は、ユーザ５の頭部が所与の時間以上固定されていることを検知した場合に、ユーザ５が不快状態にあると判定してもよい。
【０１８８】
図２６は、ユーザ５の状態の一例を示す図である。プロセッサ２１０は、図２６に示されるように、ユーザ５の頭部の向きが上向きであることを検知した場合、ユーザ５が不快状態にあると判定してもよい。ある局面において、ユーザ５は、不快状態になると、上を向くことによって、オブジェクトの数が少ないと想定される空を見て、これにより、視界画像における変化を低減させようとする場合があり得る。プロセッサ２１０は、ユーザ５が上を向いた場合、ユーザ５が不快状態にあると判定する。なお、頭部の向きが上向きであることは、たとえば、ＨＭＤ１２０のロール軸（軸２６１０）の、鉛直方向の軸（軸２６００）に対する角（角度θ３）が予め定められた角度以下であることによって検知される。また、プロセッサ２１０は、ユーザ５が上を向いた状態で、ユーザ５の頭（ＨＭＤ１２０）が所与の時間以上固定されたことを検知すると、ユーザ５が不快状態にあると判断してもよい。
【０１８９】
プロセッサ２１０は、ユーザ５の頭部の高さ（ＨＭＤ１２０の位置）が、不快状態にあるか否かを判断するために予め定められた鉛直方向における高さより低くなったことを検知した場合に、ユーザ５が不快状態にあると判定してもよい。これにより、ユーザ５がしゃがんだ場合に、ユーザ５が不快状態にあると判定される。
【０１９０】
図２７は、ユーザ５の状態の他の例を示す図である。プロセッサ２１０は、図２７に示されるように、ユーザ５の頭部が大きく揺れたことを検知した場合、ユーザ５が不快状態にあると判定してもよい。図２７は、ＨＭＤ１２０のヨー軸が軸２７１０で示される状態から軸２７２０で示される状態まで変化したことを示している。このときの、鉛直方向の軸に対するヨー軸の角度の変化量は、角度αで示される。プロセッサ２１０は、角度αが予め定められた角度を超えた場合にユーザ５の頭部が大きく揺れたということを検知してもよく、不快状態抑制処理を実行してもよい。
【０１９１】
プロセッサ２１０は、また、ユーザ５の頭部が所与の頻度以上の頻度で移動した場合または所与の速度以上の速度で移動した場合に、ユーザ５が不快状態にあると判定してもよい。「所与の頻度以上の頻度で移動」は、たとえば、所与の条件を満たす移動（所与の角度以上の頭部の移動、等）の回数が所与の時間内で所与の回数以上発生したことである。
【０１９２】
プロセッサ２１０は、バー１５４３（図１５）に対するユーザ５の動作に基づいて、ユーザ５が不快状態にあるか否かを判定してもよい。ユーザ５の動作の一例は、バー１５４３にぶら下がるまたは寄りかかることである。プロセッサ２１０は、たとえば、重量センサ１５６０によって検出される重量がしきい値を超えたか否かによって、ユーザ５が不快状態にあるか否かを検知できる。
【０１９３】
他の例は、ユーザ５がバー１５４３を揺らす動作である。プロセッサ２１０は、たとえば、バー１５４３においてしきい値を超える大きさの振動が生じたか否かによって、ユーザ５が不快状態にあるか否かを検知できる。
【０１９４】
ユーザ５の動作のさらに他の例は、ユーザ５がバー１５４３を離したことである。プロセッサ２１０は、たとえば、操作ボタン１５１１，１５１２の少なくとも一方の押圧が解除されたか否かを判断することにより、ユーザ５が不快状態にあるか否かを検知できる。
【０１９５】
ユーザ５の動作のさらに他の例は、ユーザ５が特別なハードウェアボタンを操作したことである。筐体１５４１（図１５）には特別なハードウェアボタン（緊急ボタン）が設けられてもよい。プロセッサ２１０は、たとえば、当該緊急ボタンが押圧されたか否かによって、ユーザ５が不快状態にあるか否かを検知できる。
【０１９６】
ユーザ５の動作のさらに他の例は、ユーザ５がその足をボード１５２１（図１５）から浮かせることである。ユーザ５は、不快状態においてバー１５４３にぶら下がることにより、ボード１５２１から足を浮かせる場合がある。プロセッサ２１０は、たとえば、光学センサまたは重量センサによって、ユーザ５の足がボード１５２１から浮いたことを検知し、これにより、ユーザ５が不快状態にあることを検知できる。
【０１９７】
ユーザ５の動作のさらに他の例は、「ギブアップ」などの特定のメッセージの音声を発することである。プロセッサ２１０は、たとえば、マイク１７０（図１）から入力される音声を変換することによって得られたテキストが上記メッセージに適合するか否かによって、ユーザ５が不快状態にあることを検知できる。
【０１９８】
［複数の筐体の設置態様］
以下、複数の筐体１５４１の配置の具体例を説明する。
＜配置の具体例（その１）＞
図２８は、複数の筐体１５４１の配置の一例を示す図である。図２８の例では、ゲームセンタ等の施設２８００において、４台の筐体１５４１Ａ〜１５４１Ｄが配置されている。筐体１５４１Ａ〜１５４１Ｄのそれぞれは、図１５に示された筐体１５４１（図１５）と同様の構成を有する。図２８の配置は、さらに、４人のユーザ５Ａ〜５Ｄ、４台のコンピュータ２００Ａ〜２００Ｄ、および、４台のＨＭＤ１２０Ａ〜１２０Ｄを含む。図２８の配置では、筐体１５４１Ａ〜１５４１Ｄ、ユーザ５Ａ〜５Ｄ、コンピュータ２００Ａ〜２００Ｄ、および、ＨＭＤ１２０Ａ〜１２０Ｄのそれぞれは、添え字のＡ〜Ｄのそれぞれに従って組を構成する。たとえば、ユーザ５Ａは、ＨＭＤ１２０Ａを装着して、筐体１５４１Ａに囲まれた空間内に位置する。
【０１９９】
図２８の配置は、さらに、ディスプレイ４３０を含む。ディスプレイ４３０の表示面は平面である。図２８の例では、ディスプレイ４３０は、４台のＨＭＤ１２０Ａ〜１２０Ｄの中の少なくとも１台のモニタ１３０に表示される画像を表示する。
【０２００】
図２８の例では、４台の筐体１５４１Ａ〜１５４１Ｄは、第１の方向（図２８の矢印Ｄ１方向）に沿って並び、ディスプレイ４３０は、筐体１５４１Ａ〜１５４１Ｄに対して第２の方向（図２８の矢印Ｄ２方向）に離間した位置に配置されている。
【０２０１】
本実施形態では、筐体１５４１の上記第１の方向（両矢印Ｄ１）の寸法は、筐体１５４１の上記第２の方向（両矢印Ｄ２）の寸法とほぼ等しい。すなわち、水平面における筐体１５４１の外殻の形状は、ほぼ正方形である。
【０２０２】
図２８から理解されるように、施設２８００は、第１の方向（両矢印Ｄ１）において筐体１５４１の２台分程度の寸法を要し、第２の方向（両矢印Ｄ２）において筐体１５４１の４台分程度の寸法を要する。
【０２０３】
＜配置の具体例（その２）＞
図２９は、複数の筐体１５４１の配置の他の例を示す。図２９の例では、ゲームセンタ等の施設２９００において、柱２９１０と、４台の筐体１５４１Ａ〜１５４１Ｄとが配置されている。柱２９１０の形状は、円筒である。ディスプレイ４３０は、柱２９１０の側面に貼り付けられている。ディスプレイ４３０の表示面は局面である。
【０２０４】
図２９の例では、筐体１５４１Ａ〜１５４１Ｄは、ユーザ５Ａ〜５Ｄのそれぞれが、柱２９１０上のディスプレイ４３０を向くように配置される。
【０２０５】
本実施形態では、筐体１５４１の上記第１の方向（両矢印Ｄ１）の寸法は、筐体１５４１の上記第２の方向（両矢印Ｄ２）の寸法とほぼ等しい。すなわち、水平面における筐体１５４１の外殻の形状は、ほぼ正方形である。
【０２０６】
図２９から理解されるように、施設２９００は、第１の方向（両矢印Ｄ１）および第２の方向（両矢印Ｄ２）において筐体１５４１の３台分程度の寸法を必要とされる。図２８の施設２８００は１つの方向において必要とされる最大の寸法が筐体１５４１の４台分の寸法であるのに対し、施設２９００は、１つの方向に必要とされる寸法が筐体１５４１の３台分の寸法である。したがって、図２９の例によれば、図２８の例に対して、施設が１つの方向において必要とする最大の寸法が短い。
【０２０７】
なお、図２８の施設２８００が必要とする床面積は、およそ、［筐体１５４１の寸法の４台分（第１の方向）］×［筐体１５４１の寸法の２台分（第２の方向）］、すなわち、筐体１５４１の床面積の８台分程度である。一方、図２９の施設２９００が必要とする床面積は、およそ、［筐体１５４１の寸法の３台分（第１の方向）］×［筐体１５４１の寸法の３台分（第２の方向）］、すなわち、筐体１５４１の床面積の９台分程度である。以上より、図２９の例によれば、図２９の例に対して、施設が必要とする床面積が小さい。
【０２０８】
［構成］
以上に開示された技術的特徴は、以下のように要約され得る。
【０２０９】
（構成１）  ある実施形態に従うと、コンピュータ２００によって実行される、ユーザ５の頭部に関連付けられたモニタ１３０を介してユーザ５に仮想体験を提供するための方法が提供される。方法は、仮想体験を提供するための仮想空間を定義するステップＳ１１１０と、頭部の動きを検知するステップＳ１１３４と、頭部の動きに応じて、仮想空間における仮想カメラ１４の向きを制御するステップＳ１１４０と、仮想空間において仮想カメラ１４の位置を移動させるステップＳ２０２０と、ユーザの動作に基づいて、当該ユーザが不快状態にあることを検知するステップＳ２０４０と、ユーザが不快状態にあることが検知されたことに応じて、不快状態を抑制するための不快状態抑制処理を実行するステップＳ２０５０と、を備える。
（構成２）  不快状態抑制処理は、モニタ１３０における仮想カメラ１４からの視界画像の表示態様を変更すること（移動の速度低減・停止による視界画像の変化の態様の変更、視認性の低下、視界画像の明度を下げること、視界画像をぼかすこと）を含んでいてもよい。
（構成３）  不快状態抑制処理は、仮想カメラ１４の位置の移動速度を低減するための制御（Ｓ２１１０等）を含んでいてもよい。
（構成４）  移動速度を低減するための制御は、仮想カメラ１４の位置の移動を停止することを含んでいてもよい。
（構成５）  移動速度を低減するための制御は、仮想カメラ１４の位置の移動速度の低減を指示するためのオブジェクト２３１０またはオブジェクト２５１０をモニタ１３０に表示することを含んでいてもよい。
（構成６）  不快状態抑制処理は、モニタ１３０の透過度の上昇、現実空間の画像の混合割合の上昇、等により、モニタ１３０における仮想カメラ１４からの視界画像に対して、現実空間の画像を混合する割合を上昇させることを含んでいてもよい。
（構成７）  ユーザの動作は、ＨＭＤセンサ４１０等によって検知される、頭部の動きを含んでいてもよい。
（構成８）  ユーザが不快状態にあることを検知することは、頭部が所与の方向に所与の量以上移動したこと（たとえば、しゃがむ）、頭部の位置が所与の時間以上固定されたこと（図２６）、頭部が所与の頻度以上の頻度で移動したこと、および、頭部が所与の速度以上の速度で移動したこと、のうち少なくとも一つを検知することを含んでもよい。
（構成９）  ユーザの動作は、ユーザ５を支持する筐体１５４１に対する当該ユーザ５の挙動を含んでいてもよい。
（構成１０）  ユーザ５の挙動は、筐体１５４１に対して所与の態様で荷重を印加すること、および、筐体１５４１に設けられた操作ボタン１５１１および／または操作ボタン１５１２を操作すること、のうち少なくとも一つを含んでいてもよい。
（構成１１）  ユーザの動作は、マイク１７０によって検出される音声の出力を含んでいてもよい。
（構成１２）  仮想カメラ１４の位置を移動させるステップＳ２０２０は、所与の速度で仮想空間において仮想カメラ１４を移動することを含んでいてもよい。
（構成１３）  メモリ２２０等に保存されるプログラムは、上記方法をコンピュータ２００に実現させる。
（構成１４）  ＨＭＤシステム１００は、プログラムを保存するメモリ２２０と、当該プログラムを実行するプロセッサ２１０とを備える。
（構成１５）  ＨＭＤシステム１００は、ユーザの頭部に関連付けられたモニタ１３０と、モニタ１３０を介してユーザに仮想体験を提供するためのコンピュータ２００と、ユーザを支持する筐体１５４１とを備える。コンピュータ２００は、仮想体験を提供するための仮想空間を定義するステップＳ１１１０と、頭部の動きを検知するステップＳ１１３４と、頭部の動きに応じて、仮想空間における仮想カメラ１４からの視界の向きを制御するステップＳ１１３４と、仮想空間において仮想カメラ１４の位置を移動させるステップＳ２０２０と、ユーザの筐体１５４１に対する挙動に基づいて、当該ユーザが不快状態にあることを検知するステップＳ２０４０と、ユーザが不快状態にあることが検知されたことに応じて、不快状態を抑制するための不快状態抑制処理を実行するステップＳ２０５０と、を実行するように構成されている。
【０２１０】
上記実施形態においては、ＨＭＤによってユーザが没入する仮想空間（ＶＲ空間）を例示して説明したが、ＨＭＤとして、透過型のＨＭＤを採用してもよい。この場合、透過型のＨＭＤを介してユーザが視認する現実空間に仮想空間を構成する画像の一部を合成した視界画像を出力することにより、拡張現実（ＡＲ：Augumented  Reality）空間または複合現実（ＭＲ：Mixed  Reality）空間における仮想体験をユーザに提供してもよい。この場合、操作オブジェクトに代えて、ユーザの手の動きに基づいて、仮想空間内における対象オブジェクトへの作用を生じさせてもよい。具体的には、プロセッサは、現実空間におけるユーザの手の位置の座標情報を特定するとともに、仮想空間内における対象オブジェクトの位置を現実空間における座標情報との関係で定義してもよい。これにより、プロセッサは、現実空間におけるユーザの手と仮想空間における対象オブジェクトとの位置関係を把握し、ユーザの手と対象オブジェクトとの間で上述したコリジョン制御等に対応する処理を実行可能となる。その結果、ユーザの手の動きに基づいて対象オブジェクトに作用を与えることが可能となる。開示された技術思想の適用対象は、トレーニングや教育等のためのシミュレーション、健康診断や体力測定その他のヘルスケア等にも適用可能である。
【０２１１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２１２】
５  ユーザ、６  アバターオブジェクト、１０  サーバ、１１  仮想空間、１３  パノラマ画像、１４  仮想カメラ、１５  視界領域、１６  基準視線、１７  視界画像、１００  ＨＭＤシステム、１１０  ＨＭＤセット、１３０  モニタ、１４０  注視センサ、１５０  第１カメラ、１６０  第２カメラ、１７０  マイク、１８０  スピーカ、１９０，４１０  センサ、２００  コンピュータ、２１０，６１０  プロセッサ、２２０，６２０  メモリ、２３０，６３０  ストレージ、２４０，６４０  入出力インターフェイス、２５０，６５０  通信インターフェイス、２６０，６６０  バス、３００  コントローラ、４２０  モーションセンサ、４３０  ディスプレイ、５１０  コントロールモジュール、５２０  レンダリングモジュール、５３０  メモリモジュール、５４０  通信制御モジュール、６００  サーバ、７００  外部機器、１４２１  仮想カメラ制御モジュール、１４２２  視界領域決定モジュール、１４２３  基準視線特定モジュール、１４２６  仮想空間定義モジュール、１４２７  仮想オブジェクト生成モジュール、１４２８  操作オブジェクト制御モジュール、１４２９  アバター制御モジュール、１４３１  空間情報、１４３２  オブジェクト情報、１４３３  ユーザ情報、１４３５  口テンプレート、１４３６  目テンプレート、１４３７  眉テンプレート、１４３８  視界画像生成モジュール、１４５１  不快状態検知モジュール、１４５２  不快状態抑制モジュール、１５２１  ボード、１５２３，１５２５  平板、１５２７，１５２９  バネ、１５３１  キャスター、１５３３  傾きセンサ、１５４１  筐体、１５４３  バー、１５５１  空間、１６２１，１９２１，１９３１  移動体オブジェクト、１９３１  手オブジェクト。
【図１】
2020004061.tif 000003
【図２】
2020004061.tif 000004
【図３】
2020004061.tif 000005
【図４】
2020004061.tif 000006
【図５】
2020004061.tif 000007
【図６】
2020004061.tif 000008
【図７】
2020004061.tif 000009
【図８（Ａ）】
2020004061.tif 000010
【図８（Ｂ）】
2020004061.tif 000011
【図９】
2020004061.tif 000012
【図１０】
2020004061.tif 000013
【図１１】
2020004061.tif 000014
【図１２（Ａ）】
2020004061.tif 000015
【図１２（Ｂ）】
2020004061.tif 000016
【図１３】
2020004061.tif 000017
【図１４】
2020004061.tif 000018
【図１５】
2020004061.tif 000019
【図１６】
2020004061.tif 000020
【図１７】
2020004061.tif 000021
【図１８】
2020004061.tif 000022
【図１９】
2020004061.tif 000023
【図２０】
2020004061.tif 000024
【図２１】
2020004061.tif 000025
【図２２】
2020004061.tif 000026
【図２３】
2020004061.tif 000027
【図２４】
2020004061.tif 000028
【図２５】
2020004061.tif 000029
【図２６】
2020004061.tif 000030
【図２７】
2020004061.tif 000031
【図２８】
2020004061.tif 000032
【図２９】
2020004061.tif 000033