(57)【要約】【課題】仮想体験を可能とする空間における位置の認識に関する改善された方法を提供する。【解決手段】現実空間における第１エリアを特定するステップと、前記第１エリアに対応する仮想空間内の第２エリアを特定するステップと、前記第１エリア内において、ユーザの身体の少なくとも一部の位置を検知するステップと、前記ユーザの身体の少なくとも一部の位置に応じて前記仮想空間内のオブジェクトを前記第２エリア内において動かすステップと、前記ユーザの身体の少なくとも一部の位置が正しく検知されないことによって生じる、前記仮想空間内における前記オブジェクトの位置の異常を検知するステップと、前記異常の検知に基づいて、前記オブジェクトが異常位置へ動かされる直前における前記第２エリア内の位置を示す画像を生成するステップと、前記画像を含むように前記仮想空間の視野画像を生成するステップと、を含む情報処理方法が提供される。【選択図】図１１
2019051300.tif 000002
【特許請求の範囲】
【請求項１】
現実空間における第１エリアを特定するステップと、
前記第１エリアに対応する仮想空間内の第２エリアを特定するステップと、
前記第１エリア内において、ユーザの身体の少なくとも一部の位置を検知するステップと、
前記ユーザの身体の少なくとも一部の位置に応じて前記仮想空間内のオブジェクトを前記第２エリア内において動かすステップと、
前記ユーザの身体の少なくとも一部の位置が正しく検知されないことによって生じる、前記仮想空間内における前記オブジェクトの位置の異常を検知するステップと、
前記異常の検知に基づいて、前記オブジェクトが異常位置へ動かされる直前における前記第２エリア内の位置を示す画像を生成するステップと、
前記画像を含むように前記仮想空間の視野画像を生成するステップと、
を含む情報処理方法。
【請求項２】
前記異常を検知する前記ステップは、前記仮想空間内における前記オブジェクトの位置の時間的変化に基づいて、前記異常が発生したか否かを判定するステップを含む、請求項１に記載の情報処理方法。
【請求項３】
前記異常を検知する前記ステップは、前記仮想空間内における前記オブジェクトの位置の時間的変化が所定の閾値よりも大きい場合に前記異常が発生したと判定するステップを含む、請求項２に記載の情報処理方法。
【請求項４】
前記画像は、前記異常が１又は複数回検知された履歴に基づいて、前記オブジェクトが各異常位置へ動かされる直前における前記第２エリア内の各位置を、前記仮想空間にマッピングすることによって表現される、請求項１から請求項３のいずれか１項に記載の情報処理方法。
【請求項５】
前記画像は、濃淡、色、模様、若しくは図形の空間分布として表される画像、又は、前記オブジェクトと同一の若しくは前記オブジェクトを変化させた画像である、請求項４に記載の情報処理方法。
【請求項６】
前記画像は、現在を含む所定の長さを有する時間期間内に取得された前記履歴に基づいて更新される、請求項４又は請求項５に記載の情報処理方法。
【請求項７】
前記異常が検知されたことに関連する情報を、前記仮想空間を前記ユーザと共有している他のユーザの端末へ送信するステップを更に含む、請求項１から請求項６のいずれか１項に記載の情報処理方法。
【請求項８】
前記異常が検知される頻度が閾値頻度よりも高いか否かを判定するステップと、
前記頻度が前記閾値頻度よりも高い場合に前記ユーザに警告を発するステップと、
を更に含む、請求項１から請求項７のいずれか１項に記載の情報処理方法。
【請求項９】
前記ユーザの挙動を監視するステップと、
前記ユーザの挙動に基づいて前記閾値頻度を調整するステップと、
を更に含む、請求項８に記載の情報処理方法。
【請求項１０】
前記ユーザの挙動は、前記異常が検知される回数、前記異常が検知されてから解消するまでの時間、又は現実空間における前記ユーザの身体の少なくとも一部の移動量のうちの少なくとも１つを含む、請求項９に記載の情報処理方法。
【請求項１１】
前記異常が検知された場合に、前記仮想空間内で行われるゲームの進行を一時停止するステップを更に含む、請求項１から請求項１０のいずれか１項に記載の情報処理方法。
【請求項１２】
現実空間において前記ユーザの身体の少なくとも一部を単位距離だけ動かした時に前記仮想空間において前記オブジェクトが動かされる距離を規定するための比率を設定するステップと、
前記異常が検知される頻度に応じて前記比率を調整するステップと、
を更に含む、請求項１から請求項１１のいずれか１項に記載の情報処理方法。
【請求項１３】
前記比率を調整する前記ステップは、
前記異常が検知される頻度を前記仮想空間内の各方向について特定するステップと、
前記仮想空間内の方向毎の前記頻度に応じて、前記比率を前記仮想空間内の方向毎に調整するステップと、
を含む、請求項１２に記載の情報処理方法。
【請求項１４】
プロセッサと、
プログラムを格納するメモリであって、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、請求項１から請求項１３のいずれか１項に記載の方法を実行させる、メモリと、
を備えるコンピュータ。
【請求項１５】
プロセッサによって実行されると、前記プロセッサに、請求項１から請求項１３のいずれか１項に記載の方法を実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理方法、コンピュータ、及びプログラムに関する。
【背景技術】
【０００２】
近年、ユーザに仮想現実（ＶＲ）空間を体験させることが可能な様々なタイプのヘッドマウントディスプレイが開発されている。これらのうち「ルームスケール」に対応したヘッドマウントディスプレイでは、事前準備として、トラッキングセンサが設置された部屋の中にプレイエリアを設定する作業がユーザによって行われる（例えば、非特許文献１参照）。
【０００３】
一方、特許文献１には、ユーザがセンサ計測領域２０の内側周辺の領域である警告領域５０に入った場合に警告を発するように構成された装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１６５８４８号公報
【非特許文献】
【０００５】
【非特許文献１】「プレイエリアの選択」、［ｏｎｌｉｎｅ］、［平成２９年８月１８日検索］、インターネット＜https://www.vive.com/jp/support/category_howto/choosing-your-play-area.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１において、センサ計測領域２０は、センサ装置１０による計測が可能な境界位置を示す境界計測点３０を測定することによって特定され、また、警告領域５０は、センサ計測領域２０からセンサ計測領域２０と相似な安全領域４０を除いた領域として特定される。したがって、特許文献１のセンサ計測領域２０、安全領域４０、及び警告領域５０は、いずれも、センサ装置１０の配置や性能から物理的に自ずと定まる領域であって、ユーザが設定するものではない。そのため、特許文献１の技術は、ユーザが自由にプレイエリアを設定するように構成されている非特許文献１のようなシステムには適用することが不可能である。
【０００７】
本開示は、上記の点に鑑みてなされたものであり、その目的の１つは、仮想体験を可能とする空間における位置の認識に関する改善された方法を提供することにある。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本開示の一態様は、現実空間における第１エリアを特定するステップと、前記第１エリアに対応する仮想空間内の第２エリアを特定するステップと、前記第１エリア内において、ユーザの身体の少なくとも一部の位置を検知するステップと、前記ユーザの身体の少なくとも一部の位置に応じて前記仮想空間内のオブジェクトを前記第２エリア内において動かすステップと、前記ユーザの身体の少なくとも一部の位置が正しく検知されないことによって生じる、前記仮想空間内における前記オブジェクトの位置の異常を検知するステップと、前記異常の検知に基づいて、前記オブジェクトが異常位置へ動かされる直前における前記第２エリア内の位置を示す画像を生成するステップと、前記画像を含むように前記仮想空間の視野画像を生成するステップと、を含む情報処理方法である。
【０００９】
また、本開示の他の一態様は、プロセッサと、プログラムを格納するメモリであって、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、前記方法を実行させる、メモリと、を備えるコンピュータである。
【００１０】
また、本開示の他の一態様は、プロセッサによって実行されると、前記プロセッサに、前記方法を実行させる、プログラムである。
【発明の効果】
【００１１】
本発明によれば、仮想体験を可能とする空間における位置の認識に関する改善された方法を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】ＨＭＤシステム１００の構成を概略的に示す。
【図２】一実施形態による、コンピュータの基本的なハードウェア構成の例を表すブロック図である。
【図３】一実施形態による、ＨＭＤに設定されるｕｖｗ視野座標系を概念的に表す図である。
【図４】一実施形態による、仮想空間を表現する一態様を概念的に表す図である。
【図５】一実施形態による、ＨＭＤ１１０を装着するユーザの頭部を上から表した図である。
【図６】仮想空間において視認領域をｘ方向から見たｙｚ断面を表す図である。
【図７】仮想空間において視認領域をｙ方向から見たｘｚ断面を表す図である。
【図８】一実施形態によるコントローラの概略構成を表す図である。
【図９】一実施形態による、ＨＭＤシステムにおける仮想空間の表示処理等を実現するためのコンピュータの機能を示すブロック図である。
【図１０】ユーザが没入する仮想空間の画像を表示部に表示するための一般的な処理のフロー図である。
【図１１】本開示の一実施形態による方法のフローチャートである。
【図１２】本開示の一実施形態において想定されるゲームの態様を概略的に説明する図である。
【図１３】本開示の一実施形態において想定されるユーザの自宅の部屋の一例を示す図である。
【図１４】本開示の一実施形態における初期設定を実施するための方法のフローチャートである。
【図１５Ａ】第１の例による異常位置提示画像を示す図である。
【図１５Ｂ】第２の例による異常位置提示画像を示す図である。
【図１６】第３の例による異常位置提示画像を示す図である。
【図１７】本開示の一実施形態による方法のフローチャートである。
【図１８】本開示の一実施形態による方法のフローチャートである。
【図１９】本開示の一実施形態による方法のフローチャートである。
【図２０】本開示の一実施形態による方法のフローチャートである。
【発明を実施するための形態】
【００１３】
［本開示の実施形態の説明］
最初に、本開示の実施形態の内容を列記して説明する。本開示の一実施形態は、以下のような構成を備える。
【００１４】
（項目１）現実空間における第１エリアを特定するステップと、前記第１エリアに対応する仮想空間内の第２エリアを特定するステップと、前記第１エリア内において、ユーザの身体の少なくとも一部の位置を検知するステップと、前記ユーザの身体の少なくとも一部の位置に応じて前記仮想空間内のオブジェクトを前記第２エリア内において動かすステップと、前記ユーザの身体の少なくとも一部の位置が正しく検知されないことによって生じる、前記仮想空間内における前記オブジェクトの位置の異常を検知するステップと、前記異常の検知に基づいて、前記オブジェクトが異常位置へ動かされる直前における前記第２エリア内の位置を示す画像を生成するステップと、前記画像を含むように前記仮想空間の視野画像を生成するステップと、を含む情報処理方法。
【００１５】
（項目２）前記異常を検知する前記ステップは、前記仮想空間内における前記オブジェクトの位置の時間的変化に基づいて、前記異常が発生したか否かを判定するステップを含む、項目１に記載の情報処理方法。
【００１６】
（項目３）前記異常を検知する前記ステップは、前記仮想空間内における前記オブジェクトの位置の時間的変化が所定の閾値よりも大きい場合に前記異常が発生したと判定するステップを含む、項目２に記載の情報処理方法。
【００１７】
（項目４）前記画像は、前記異常が１又は複数回検知された履歴に基づいて、前記オブジェクトが各異常位置へ動かされる直前における前記第２エリア内の各位置を、前記仮想空間にマッピングすることによって表現される、項目１から項目３のいずれか１項に記載の情報処理方法。
【００１８】
（項目５）前記画像は、濃淡、色、模様、若しくは図形の空間分布として表される画像、又は、前記オブジェクトと同一の若しくは前記オブジェクトを変化させた画像である、項目４に記載の情報処理方法。
【００１９】
（項目６）前記画像は、現在を含む所定の長さを有する時間期間内に取得された前記履歴に基づいて更新される、項目４又は項目５に記載の情報処理方法。
【００２０】
（項目７）前記異常が検知されたことに関連する情報を、前記仮想空間を前記ユーザと共有している他のユーザの端末へ送信するステップを更に含む、項目１から項目６のいずれか１項に記載の情報処理方法。
【００２１】
（項目８）前記異常が検知される頻度が閾値頻度よりも高いか否かを判定するステップと、前記頻度が前記閾値頻度よりも高い場合に前記ユーザに警告を発するステップと、を更に含む、項目１から項目７のいずれか１項に記載の情報処理方法。
【００２２】
（項目９）前記ユーザの挙動を監視するステップと、前記ユーザの挙動に基づいて前記閾値頻度を調整するステップと、を更に含む、項目８に記載の情報処理方法。
【００２３】
（項目１０）前記ユーザの挙動は、前記異常が検知される回数、前記異常が検知されてから解消するまでの時間、又は現実空間における前記ユーザの身体の少なくとも一部の移動量のうちの少なくとも１つを含む、項目９に記載の情報処理方法。
【００２４】
（項目１１）前記異常が検知された場合に、前記仮想空間内で行われるゲームの進行を一時停止するステップを更に含む、項目１から項目１０のいずれか１項に記載の情報処理方法。
【００２５】
（項目１２）現実空間において前記ユーザの身体の少なくとも一部を単位距離だけ動かした時に前記仮想空間において前記オブジェクトが動かされる距離を規定するための比率を設定するステップと、前記異常が検知される頻度に応じて前記比率を調整するステップと、を更に含む、項目１から項目１１のいずれか１項に記載の情報処理方法。
【００２６】
（項目１３）前記比率を調整する前記ステップは、前記異常が検知される頻度を前記仮想空間内の各方向について特定するステップと、前記仮想空間内の方向毎の前記頻度に応じて、前記比率を前記仮想空間内の方向毎に調整するステップと、を含む、項目１２に記載の情報処理方法。
【００２７】
（項目１４）プロセッサと、プログラムを格納するメモリであって、前記プログラムは、前記プロセッサによって実行されると、前記プロセッサに、項目１から項目１３のいずれか１項に記載の方法を実行させる、メモリと、を備えるコンピュータ。
【００２８】
（項目１５）プロセッサによって実行されると、前記プロセッサに、項目１から項目１３のいずれか１項に記載の方法を実行させる、プログラム。
【００２９】
［本開示の実施形態の詳細］
以下、図面を参照しながら本発明の実施形態について詳しく説明する。
【００３０】
図１を参照して、ヘッドマウントデバイス（Ｈｅａｄ−Ｍｏｕｎｔｅｄ  Ｄｅｖｉｃｅ、ＨＭＤ）システム１００の構成について説明する。図１は、ＨＭＤシステム１００の構成を概略的に示す。一例では、ＨＭＤシステム１００は、家庭用のシステム又は業務用のシステムとして提供される。ＨＭＤは、表示部を備える所謂ヘッドマウントディスプレイであってもよく、表示部を有するスマートフォン等の端末を装着可能なヘッドマウント機器であってもよい。
【００３１】
ＨＭＤシステム１００は、ＨＭＤ１１０と、トラッキングセンサ１２０と、コントローラ１６０と、コンピュータ２００とを備える。ＨＭＤ１１０は、表示部１１２と、注視センサ１４０とを含む。コントローラ１６０は、モーションセンサ１３０を含んでもよい。
【００３２】
一例では、コンピュータ２００は、インターネット等のネットワーク１９２に接続可能であってもよく、ネットワーク１９２に接続されるサーバ１５０等のコンピュータと通信可能であってもよい。別の態様において、ＨＭＤ１１０は、トラッキングセンサ１２０の代わりにセンサ１１４を含んでもよい。
【００３３】
ＨＭＤ１１０は、ユーザ１９０の頭部に装着され、動作中に仮想空間をユーザに提供し得る。より具体的には、ＨＭＤ１１０は、右目用の画像及び左目用の画像を表示部１１２にそれぞれ表示する。ユーザの各目がそれぞれの画像を視認すると、ユーザは、両目の視差に基づき当該画像を３次元の画像として認識し得る。
【００３４】
表示部１１２は、例えば、非透過型の表示装置として実現される。一例では、表示部１１２は、ユーザの両目の前方に位置するように、ＨＭＤ１１０の本体に配置される。したがって、ユーザは、表示部１１２に表示される３次元画像を視認すると、仮想空間に没入することができる。ある実施形態において、仮想空間は、例えば、背景、ユーザが操作可能なオブジェクト、ユーザが選択可能なメニューの画像等を含む。ある実施形態において、表示部１１２は、スマートフォン等の情報表示端末が備える液晶表示部又は有機ＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ）表示部として実現され得る。
【００３５】
一例では、表示部１１２は、右目用の画像を表示するためのサブ表示部と、左目用の画像を表示するためのサブ表示部とを含み得る。別の態様において、表示部１１２は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、表示部１１２は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【００３６】
一例では、ＨＭＤ１１０は、複数の光源（図示せず）を含む。各光源は、例えば、赤外線を発するＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）により実現される。トラッキングセンサ１２０は、ＨＭＤ１１０の動きを検出するためのポジショントラッキング機能を有する。より具体的には、トラッキングセンサ１２０は、ＨＭＤ１１０が発する複数の赤外線を読み取り、現実空間内におけるＨＭＤ１１０の位置及び傾きを検出してもよい。
【００３７】
ある態様において、トラッキングセンサ１２０は、カメラにより実現されてもよい。この場合、トラッキングセンサ１２０は、カメラから出力されるＨＭＤ１１０の画像情報を用いて、画像解析処理を実行することにより、ＨＭＤ１１０の位置及び傾きを検出することができる。また、トラッキングセンサ１２０は、カメラによって撮像されたユーザの画像を解析することにより、ユーザの身体の一部（例えば頭や手）の位置を検出するように構成されてもよい。
【００３８】
別の態様において、ＨＭＤ１１０は、位置検出器として、トラッキングセンサ１２０の代わりに、センサ１１４を備えてもよい。ＨＭＤ１１０は、センサ１１４を用いて、ＨＭＤ１１０自身の位置及び傾きを検出し得る。例えば、センサ１１４が角速度センサ、地磁気センサ、加速度センサ、ジャイロセンサ等である場合、ＨＭＤ１１０は、トラッキングセンサ１２０の代わりに、これらの各センサのいずれかを用いて、自身の位置及び傾きを検出し得る。一例として、センサ１１４が角速度センサである場合、角速度センサは、現実空間におけるＨＭＤ１１０の３軸周りの角速度を経時的に検出する。ＨＭＤ１１０は、各角速度に基づいて、ＨＭＤ１１０の３軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、ＨＭＤ１１０の傾きを算出する。また、ＨＭＤ１１０は、透過型表示装置を備えていても良い。この場合、当該透過型表示装置は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、視界画像は、仮想空間を構成する画像の一部に、現実空間を提示する構成を含んでいてもよい。例えば、ＨＭＤ１１０に搭載されたカメラで撮影した画像を視界画像の一部に重畳して表示させてもよいし、当該透過型表示装置の一部の透過率を高く設定することにより、視界画像の一部から現実空間を視認可能にしてもよい。
【００３９】
注視センサ１４０は、ユーザ１９０の右目及び左目の視線が向けられる方向（視線）を検出する。当該方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ１４０は、当該アイトラッキング機能を有するセンサにより実現される。ある態様において、注視センサ１４０は、右目用のセンサ及び左目用のセンサを含むことが好ましい。注視センサ１４０は、例えば、ユーザ１９０の右目及び左目に赤外光を照射するとともに、照射光に対する角膜及び虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ１４０は、検出した各回転角に基づいて、ユーザ１９０の視線を検知することができる。
【００４０】
サーバ１５０は、コンピュータ２００にプログラムを送信し得る。別の態様において、サーバ１５０は、他のユーザによって使用されるＨＭＤに仮想現実を提供するための他のコンピュータ２００と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行う場合、各コンピュータ２００は、各ユーザの動作に基づく信号を他のコンピュータ２００と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。
【００４１】
コントローラ１６０は、有線又は無線によりコンピュータ２００に接続される。コントローラ１６０は、ユーザ１９０からコンピュータ２００への命令の入力を受け付ける。ある態様において、コントローラ１６０は、ユーザ１９０によって把持可能に構成される。別の態様において、コントローラ１６０は、ユーザ１９０の身体又は衣類の一部に装着可能に構成される。別の態様において、コントローラ１６０は、コンピュータ２００から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。別の態様において、コントローラ１６０は、ユーザ１９０から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
【００４２】
ある態様において、モーションセンサ１３０は、ユーザの手に取り付けられて、ユーザの手の動きを検出する。例えば、モーションセンサ１３０は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ２００に送られる。モーションセンサ１３０は、例えば、手袋型のコントローラ１６０に設けられる。ある実施形態において、現実空間における安全のため、コントローラ１６０は、手袋型のようにユーザ１９０の手に装着されることにより容易に飛んで行かないものに装着されるのが望ましい。別の態様において、ユーザ１９０に装着されないセンサがユーザ１９０の手の動きを検出してもよい。ユーザ１９０の身体の様々な部分の位置、向き、動きの方向、動きの距離などを検知する光学式センサが用いられてもよい。例えば、ユーザ１９０を撮影するカメラの信号が、ユーザ１９０の動作を表す信号として、コンピュータ２００に入力されてもよい。モーションセンサ１３０とコンピュータ２００とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）その他の公知の通信手法が用いられる。
【００４３】
図２を参照して、本開示の実施形態に係るコンピュータ２００について説明する。図２は、本開示の一実施形態によるコンピュータ２００の基本的なハードウェア構成の例を表すブロック図である。コンピュータ２００は、主たる構成要素として、プロセッサ２０２と、メモリ２０４と、ストレージ２０６と、入出力インターフェース２０８と、通信インターフェース２１０とを備える。各構成要素は、それぞれ、バス２１２に接続される。
【００４４】
プロセッサ２０２は、コンピュータ２００に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ２０４又はストレージ２０６に格納されているプログラムに含まれる一連の命令を実行する。ある態様において、プロセッサ２０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のデバイスとして実現される。
【００４５】
メモリ２０４は、プログラム及びデータを一時的に保存する。プログラムは、例えば、ストレージ２０６からロードされる。データは、コンピュータ２００に入力されたデータと、プロセッサ２０２によって生成されたデータとを含む。ある態様において、メモリ２０４は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の揮発性メモリとして実現される。
【００４６】
ストレージ２０６は、プログラム及びデータを永続的に保持する。ストレージ２０６は、例えば、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ハードディスク装置、フラッシュメモリ等の不揮発性記憶装置として実現される。ストレージ２０６に格納されるプログラムは、ＨＭＤシステム１００において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ２００との通信を実現するためのプログラム等を含む。ストレージ２０６に格納されるデータは、仮想空間を規定するためのデータ及びオブジェクト等を含む。
【００４７】
別の態様において、ストレージ２０６は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の態様において、コンピュータ２００に内蔵されたストレージ２０６の代わりに、外部の記憶装置に保存されているプログラム及びデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のＨＭＤシステム１００が使用される場面において、プログラムやデータの更新を一括して行なうことが可能になる。
【００４８】
ある実施形態において、入出力インターフェース２０８は、ＨＭＤ１１０、トラッキングセンサ１２０及びモーションセンサ１３０との間で信号を通信する。ある態様において、入出力インターフェース２０８は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ、ＵＳＢ）、ＤＶＩ（Ｄｉｇｉｔａｌ  Ｖｉｓｕａｌ  Ｉｎｔｅｒｆａｃｅ）、ＨＤＭＩ（登録商標）（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）等の端子を用いて実現される。なお、入出力インターフェース２０８は上述のものに限られない。
【００４９】
ある実施形態において、入出力インターフェース２０８は、さらに、コントローラ１６０と通信し得る。例えば、入出力インターフェース２０８は、コントローラ１６０及びモーションセンサ１３０から出力された信号の入力を受ける。別の態様において、入出力インターフェース２０８は、プロセッサ２０２から出力された命令を、コントローラ１６０に送る。当該命令は、振動、音声出力、発光等をコントローラ１６０に指示する。コントローラ１６０は、当該命令を受信すると、その命令に応じて、振動、音声出力、発光等を実行する。
【００５０】
通信インターフェース２１０は、ネットワーク１９２に接続され、ネットワーク１９２に接続されている他のコンピュータ（例えば、サーバ１５０）と通信する。ある態様において、通信インターフェース２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の有線通信インターフェース、あるいは、ＷｉＦｉ（Ｗｉｒｅｌｅｓｓ  Ｆｉｄｅｌｉｔｙ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）等の無線通信インターフェースとして実現される。なお、通信インターフェース２１０は上述のものに限られない。
【００５１】
ある態様において、プロセッサ２０２は、ストレージ２０６にアクセスし、ストレージ２０６に格納されている１つ以上のプログラムをメモリ２０４にロードし、当該プログラムに含まれる一連の命令を実行する。当該１つ以上のプログラムは、コンピュータ２００のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ２０２は、入出力インターフェース２０８を介して、仮想空間を提供するための信号をＨＭＤ１１０に送る。ＨＭＤ１１０は、その信号に基づいて表示部１１２に映像を表示する。
【００５２】
図２に示される例では、コンピュータ２００は、ＨＭＤ１１０の外部に設けられている。しかし、別の態様において、コンピュータ２００は、ＨＭＤ１１０に内蔵されてもよい。一例として、表示部１１２を含む携帯型の情報通信端末（例えば、スマートフォン）がコンピュータ２００として機能してもよい。
【００５３】
また、コンピュータ２００は、複数のＨＭＤ１１０に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
【００５４】
ある実施形態において、ＨＭＤシステム１００では、グローバル座標系が予め設定されている。グローバル座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、ならびに、鉛直方向及び水平方向の双方に直交する前後方向にそれぞれ平行な、３つの基準方向（軸）を有する。本実施形態では、グローバル座標系は視点座標系の１つである。そこで、グローバル座標系における水平方向、鉛直方向（上下方向）、及び前後方向は、それぞれ、ｘ軸、ｙ軸、ｚ軸として規定される。より具体的には、グローバル座標系において、ｘ軸は現実空間の水平方向に平行である。ｙ軸は、現実空間の鉛直方向に平行である。ｚ軸は現実空間の前後方向に平行である。
【００５５】
ある態様において、トラッキングセンサ１２０は、赤外線センサを含む。赤外線センサが、ＨＭＤ１１０の各光源から発せられた赤外線をそれぞれ検出すると、ＨＭＤ１１０の存在を検出する。トラッキングセンサ１２０は、さらに、各点の値（グローバル座標系における各座標値）に基づいて、ＨＭＤ１１０を装着したユーザ１９０の動きに応じた、現実空間内におけるＨＭＤ１１０の位置及び傾きを検出する。より詳しくは、トラッキングセンサ１２０は、経時的に検出された各値を用いて、ＨＭＤ１１０の位置及び傾きの時間的変化を検出できる。また、後述するように、トラッキングセンサ１２０は、コントローラ１６０から発せられる赤外線を検出することによって、現実空間におけるコントローラ１６０の位置及び傾きを検出するように構成されてもよい。
【００５６】
グローバル座標系は現実空間の座標系と平行である。したがって、トラッキングセンサ１２０によって検出されたＨＭＤ１１０の各傾きは、グローバル座標系におけるＨＭＤ１１０の３軸周りの各傾きに相当する。トラッキングセンサ１２０は、グローバル座標系におけるＨＭＤ１１０の傾きに基づき、ｕｖｗ視野座標系をＨＭＤ１１０に設定する。ＨＭＤ１１０に設定されるｕｖｗ視野座標系は、ＨＭＤ１１０を装着したユーザ１９０が仮想空間において物体を見る際の視点座標系に対応する。
【００５７】
図３を参照して、ｕｖｗ視野座標系について説明する。図３は、ある実施形態に従うＨＭＤ１１０に設定されるｕｖｗ視野座標系を概念的に表す図である。トラッキングセンサ１２０は、ＨＭＤ１１０の起動時に、グローバル座標系におけるＨＭＤ１１０の位置及び傾きを検出する。プロセッサ２０２は、検出された値に基づいて、ｕｖｗ視野座標系をＨＭＤ１１０に設定する。
【００５８】
図３に示されるように、ＨＭＤ１１０は、ＨＭＤ１１０を装着したユーザの頭部を中心（原点）とした３次元のｕｖｗ視野座標系を設定する。より具体的には、ＨＭＤ１１０は、グローバル座標系を規定する水平方向、鉛直方向、及び前後方向（ｘ軸、ｙ軸、ｚ軸）を、グローバル座標系内においてＨＭＤ１１０の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる３つの方向を、ＨＭＤ１１０におけるｕｖｗ視野座標系のピッチ方向（ｕ軸）、ヨー方向（ｖ軸）、及びロール方向（ｗ軸）として設定する。
【００５９】
ある態様において、ＨＭＤ１１０を装着したユーザ１９０が直立し、かつ、正面を視認している場合、プロセッサ２０２は、グローバル座標系に平行なｕｖｗ視野座標系をＨＭＤ１１０に設定する。この場合、グローバル座標系における水平方向（ｘ軸）、鉛直方向（ｙ軸）、及び前後方向（ｚ軸）は、ＨＭＤ１１０におけるｕｖｗ視野座標系のピッチ方向（ｕ軸）、ヨー方向（ｖ軸）及びロール方向（ｗ軸）に一致する。
【００６０】
ｕｖｗ視野座標系がＨＭＤ１１０に設定された後、トラッキングセンサ１２０は、ＨＭＤ１１０の動きに基づいて、設定されたｕｖｗ視野座標系におけるＨＭＤ１１０の傾き（傾きの変化量）を検出できる。この場合、トラッキングセンサ１２０は、ＨＭＤ１１０の傾きとして、ｕｖｗ視野座標系におけるＨＭＤ１１０のピッチ角（θｕ）、ヨー角（θｖ）及びロール角（θｗ）をそれぞれ検出する。ピッチ角（θｕ）は、ｕｖｗ視野座標系におけるピッチ方向周りのＨＭＤ１１０の傾き角度を表す。ヨー角（θｖ）は、ｕｖｗ視野座標系におけるヨー方向周りのＨＭＤ１１０の傾き角度を表す。ロール角（θｗ）は、ｕｖｗ視野座標系におけるロール方向周りのＨＭＤ１１０の傾き角度を表す。
【００６１】
トラッキングセンサ１２０は、検出されたＨＭＤ１１０の傾き角度に基づいて、ＨＭＤ１１０が動いた後のＨＭＤ１１０におけるｕｖｗ視野座標系を、ＨＭＤ１１０に設定する。ＨＭＤ１１０と、ＨＭＤ１１０のｕｖｗ視野座標系との関係は、ＨＭＤ１１０の位置及び傾きに関わらず、常に一定である。ＨＭＤ１１０の位置及び傾きが変わると、当該位置及び傾きの変化に連動して、グローバル座標系におけるＨＭＤ１１０のｕｖｗ視野座標系の位置及び傾きが変化する。
【００６２】
ある態様において、トラッキングセンサ１２０は、赤外線センサからの出力に基づいて取得される赤外線の光強度及び複数の点間の相対的な位置関係（例えば、各点間の距離等）に基づいて、ＨＭＤ１１０の現実空間内における位置を、トラッキングセンサ１２０に対する相対位置として特定してもよい。また、プロセッサ２０２は、特定された相対位置に基づいて、現実空間内（グローバル座標系）におけるＨＭＤ１１０のｕｖｗ視野座標系の原点を決定してもよい。
【００６３】
図４を参照して、仮想空間についてさらに説明する。図４は、ある実施形態に従う仮想空間４００を表現する一態様を概念的に表す図である。仮想空間４００は、中心４０６の３６０度方向の全体を覆う全天球状の構造を有する。図４では、説明を複雑にしないために、仮想空間４００のうちの上半分の天球が例示されている。仮想空間４００では各メッシュが規定される。各メッシュの位置は、仮想空間４００に規定されるＸＹＺ座標系における座標値として予め規定されている。コンピュータ２００は、仮想空間４００に展開可能なコンテンツ（静止画、動画等）を構成する各部分画像を、仮想空間４００において対応する各メッシュにそれぞれ対応付けて、ユーザによって視認可能な仮想空間画像が展開される仮想空間４００をユーザに提供する。
【００６４】
ある態様において、仮想空間４００では、中心４０６を原点とするｘｙｚ座標系が規定される。ｘｙｚ座標系は、例えば、グローバル座標系に平行である。ｘｙｚ座標系は視点座標系の一種であるため、ｘｙｚ座標系における水平方向、鉛直方向（上下方向）及び前後方向は、それぞれｘ軸、ｙ軸及びｚ軸として規定される。したがって、ｘｙｚ座標系のｘ軸（水平方向）がグローバル座標系のｘ軸と平行であり、ｘｙｚ座標系のｙ軸（鉛直方向）がグローバル座標系のｙ軸と平行であり、ｘｙｚ座標系のｚ軸（前後方向）がグローバル座標系のｚ軸と平行である。
【００６５】
ＨＭＤ１１０の起動時、すなわちＨＭＤ１１０の初期状態において、仮想カメラ４０４が、仮想空間４００の中心４０６に配置される。ある態様において、プロセッサ２０２は、仮想カメラ４０４が撮影する画像をＨＭＤ１１０の表示部１１２に表示する。仮想カメラ４０４は、現実空間におけるＨＭＤ１１０の動きに連動して、仮想空間４００を同様に移動する。これにより、現実空間におけるＨＭＤ１１０の位置及び向きの変化が、仮想空間４００において同様に再現され得る。
【００６６】
ＨＭＤ１１０の場合と同様に、仮想カメラ４０４には、ｕｖｗ視野座標系が規定される。仮想空間４００における仮想カメラ４０４のｕｖｗ視野座標系は、現実空間（グローバル座標系）におけるＨＭＤ１１０のｕｖｗ視野座標系に連動するように規定される。したがって、ＨＭＤ１１０の傾きが変化すると、それに応じて、仮想カメラ４０４の傾きも変化する。また、仮想カメラ４０４は、ＨＭＤ１１０を装着したユーザの現実空間における移動に連動して、仮想空間４００において移動することもできる。
【００６７】
コンピュータ２００のプロセッサ２０２は、仮想カメラ４０４の配置位置と、基準視線４０８とに基づいて、仮想空間４００における視認領域４１０を規定する。視認領域４１０は、仮想空間４００のうち、ＨＭＤ１１０を装着したユーザが視認する領域に対応する。
【００６８】
注視センサ１４０によって検出されるユーザ１９０の視線は、ユーザ１９０が物体を視認する際の視点座標系における方向である。ＨＭＤ１１０のｕｖｗ視野座標系は、ユーザ１９０が表示部１１２を視認する際の視点座標系に等しい。また、仮想カメラ４０４のｕｖｗ視野座標系は、ＨＭＤ１１０のｕｖｗ視野座標系に連動している。したがって、ある態様に従うＨＭＤシステム１００は、注視センサ１４０によって検出されたユーザ１９０の視線を、仮想カメラ４０４のｕｖｗ視野座標系におけるユーザの視線とみなすことができる。
【００６９】
図５を参照して、ユーザの視線の決定について説明する。図５は、ある実施形態に従うＨＭＤ１１０を装着するユーザ１９０の頭部を上から表した図である。
【００７０】
ある態様において、注視センサ１４０は、ユーザ１９０の右目及び左目の各視線を検出する。ある態様において、ユーザ１９０が近くを見ている場合、注視センサ１４０は、視線Ｒ１及びＬ１を検出する。別の態様において、ユーザ１９０が遠くを見ている場合、注視センサ１４０は、視線Ｒ２及びＬ２を検出する。この場合、ロール方向ｗに対して視線Ｒ２及びＬ２がなす角度は、ロール方向ｗに対して視線Ｒ１及びＬ１がなす角度よりも小さい。注視センサ１４０は、検出結果をコンピュータ２００に送信する。
【００７１】
コンピュータ２００が、視線の検出結果として、視線Ｒ１及びＬ１の検出値を注視センサ１４０から受信した場合には、その検出値に基づいて、視線Ｒ１及びＬ１の交点である注視点Ｎ１を特定する。一方、コンピュータ２００は、視線Ｒ２及びＬ２の検出値を注視センサ１４０から受信した場合には、視線Ｒ２及びＬ２の交点を注視点として特定する。コンピュータ２００は、特定した注視点Ｎ１の位置に基づき、ユーザ１９０の視線Ｎ０を特定する。コンピュータ２００は、例えば、ユーザ１９０の右目Ｒと左目Ｌとを結ぶ直線の中点と、注視点Ｎ１とを通る直線の延びる方向を、視線Ｎ０として検出する。視線Ｎ０は、ユーザ１９０が両目により実際に視線を向けている方向である。また、視線Ｎ０は、視認領域４１０に対してユーザ１９０が実際に視線を向けている方向に相当する。
【００７２】
別の態様において、ＨＭＤシステム１００は、ＨＭＤシステム１００を構成するいずれかの部分に、マイク及びスピーカを備えてもよい。ユーザは、マイクに発話することにより、仮想空間４００に対して、音声による指示を与えることができる。
【００７３】
また、別の態様において、ＨＭＤシステム１００は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、ＨＭＤシステム１００は、仮想空間４００においてテレビ番組を表示することができる。
【００７４】
さらに別の態様において、ＨＭＤシステム１００は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
【００７５】
図６及び図７を参照して、視認領域４１０について説明する。図６は、仮想空間４００において視認領域４１０をｘ方向から見たｙｚ断面を表す図である。図７は、仮想空間４００において視認領域４１０をｙ方向から見たｘｚ断面を表す図である。
【００７６】
図６に示されるように、ｙｚ断面における視認領域４１０は、領域６０２を含む。領域６０２は、仮想カメラ４０４の配置位置と基準視線４０８と仮想空間４００のｙｚ断面とによって定義される。プロセッサ２０２は、仮想空間おける基準視線４０８を中心として極角αを含む範囲を、領域６０２として規定する。
【００７７】
図７に示されるように、ｘｚ断面における視認領域４１０は、領域７０２を含む。領域７０２は、仮想カメラ４０４の配置位置と基準視線４０８と仮想空間４００のｘｚ断面とによって定義される。プロセッサ２０２は、仮想空間４００における基準視線４０８を中心とした方位角βを含む範囲を、領域７０２として規定する。極角α及びβは、仮想カメラ４０４の配置位置と仮想カメラ４０４の向きとに応じて定まる。
【００７８】
ある態様において、ＨＭＤシステム１００は、コンピュータ２００からの信号に基づいて、視界画像を表示部１１２に表示させることにより、仮想空間における視界をユーザ１９０に提供する。視界画像は、仮想空間画像４０２のうち視認領域４１０に重畳する部分に相当する。ユーザ１９０が、頭に装着したＨＭＤ１１０を動かすと、その動きに連動して仮想カメラ４０４も動く。その結果、仮想空間４００における視認領域４１０の位置が変化する。これにより、表示部１１２に表示される視界画像は、仮想空間画像４０２のうち、仮想空間４００においてユーザが向いた方向の視認領域４１０に重畳する画像に更新される。ユーザは、仮想空間４００における所望の方向を視認することができる。
【００７９】
このように、仮想カメラ４０４の向き（傾き）は仮想空間４００におけるユーザの視線（基準視線４０８）に相当し、仮想カメラ４０４が配置される位置は、仮想空間４００におけるユーザの視点に相当する。したがって、仮想カメラ４０４を移動（配置位置を変える動作、向きを変える動作を含む）させることにより、表示部１１２に表示される画像が更新され、ユーザ１９０の視界（視点、視線を含む）が移動される。
【００８０】
ユーザ１９０は、ＨＭＤ１１０を装着している間、現実世界を視認することなく、仮想空間４００に展開される仮想空間画像４０２のみを視認できる。そのため、ＨＭＤシステム１００は、仮想空間４００への高い没入感覚をユーザに与えることができる。
【００８１】
ある態様において、プロセッサ２０２は、ＨＭＤ１１０を装着したユーザ１９０の現実空間における移動に連動して、仮想空間４００において仮想カメラ４０４を移動し得る。この場合、プロセッサ２０２は、仮想空間４００における仮想カメラ４０４の位置及び向きに基づいて、ＨＭＤ１１０の表示部１１２に投影される画像領域（すなわち、仮想空間４００における視認領域４１０）を特定する。
【００８２】
ある実施形態に従うと、仮想カメラ４０４は、２つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含んでもよい。また、ユーザ１９０が３次元の仮想空間４００を認識できるように、適切な視差が、２つの仮想カメラに設定されてもよい。
【００８３】
図８を参照して、コントローラ１６０の一例について説明する。図８は、ある実施形態に従うコントローラ１６０の概略構成を表す図である。
【００８４】
ある態様において、コントローラ１６０は、右コントローラと左コントローラとを含み得る。説明を簡単にするために、図８には右コントローラ８００のみが示される。右コントローラ８００は、ユーザ１９０の右手で操作される。左コントローラは、ユーザ１９０の左手で操作される。ある態様において、右コントローラ８００と左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ１９０は、右コントローラ８００を把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の態様において、コントローラ１６０は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ８００について説明する。
【００８５】
右コントローラ８００は、グリップ８０２と、フレーム８０４と、天面８０６とを備える。グリップ８０２は、ユーザ１９０の右手によって把持されるように構成されている。例えば、グリップ８０２は、ユーザ１９０の右手の掌と３本の指（中指、薬指、小指）とによって保持され得る。
【００８６】
グリップ８０２は、ボタン８０８及び８１０と、モーションセンサ１３０とを含む。ボタン８０８は、グリップ８０２の側面に配置され、右手の中指による操作を受け付ける。ボタン８１０は、グリップ８０２の前面に配置され、右手の人差し指による操作を受け付ける。ある態様において、ボタン８０８、８１０は、トリガー式のボタンとして構成される。モーションセンサ１３０は、グリップ８０２の筐体に内蔵されている。なお、ユーザ１９０の動作がカメラその他の装置によってユーザ１９０の周りから検出可能である場合には、グリップ８０２は、モーションセンサ１３０を備えなくてもよい。
【００８７】
フレーム８０４は、その円周方向に沿って配置された複数の赤外線ＬＥＤ８１２を含む。赤外線ＬＥＤ８１２は、コントローラ１６０を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線ＬＥＤ８１２から発せられた赤外線は、右コントローラ８００と左コントローラ（図示しない）との各位置や姿勢（傾き、向き）を検出するためにトラッキングセンサ１２０によって使用され得る。図８に示される例では、２列に配置された赤外線ＬＥＤ８１２が示されているが、配列の数は図８に示されるものに限られない。１列あるいは３列以上の配列が使用されてもよい。
【００８８】
天面８０６は、ボタン８１４及び８１６と、アナログスティック８１８とを備える。ボタン８１４及び８１６は、プッシュ式ボタンとして構成される。ボタン８１４及び８１６は、ユーザ１９０の右手の親指による操作を受け付ける。アナログスティック８１８は、ある態様において、初期位置（ニュートラルの位置）から３６０度任意の方向への操作を受け付ける。当該操作は、例えば、仮想空間４００に配置されるオブジェクトを移動するための操作を含む。
【００８９】
ある態様において、右コントローラ８００及び左コントローラは、赤外線ＬＥＤ８１２等の部材を駆動するための電池を含む。電池は、１次電池及び２次電池のいずれであってもよく、その形状は、ボタン型、乾電池型等任意であり得る。別の態様において、右コントローラ８００と左コントローラは、例えば、コンピュータ２００のＵＳＢインターフェースに接続され得る。この場合、右コントローラ８００及び左コントローラは、ＵＳＢインターフェースを介して電力を供給され得る。
【００９０】
図９は、本開示の一実施形態による、ＨＭＤシステム１００における仮想空間４００の表示処理等を実現するための、コンピュータ２００の機能を示すブロック図である。コンピュータ２００は、主にトラッキングセンサ１２０、モーションセンサ１３０、注視センサ１４０、コントローラ１６０からの入力に基づいて、表示部１１２への画像出力を制御する。
【００９１】
コンピュータ２００は、プロセッサ２０２と、メモリ２０４と、通信制御部２０５とを備える。プロセッサ２０２は、仮想空間特定部９０２と、ＨＭＤ動作検知部９０３と、視線検知部９０４と、基準視線決定部９０６と、視界領域決定部９０８と、コントローラ動作検知部９１０と、視界画像生成部９１２と、視界画像出力部９２６とを含み得る。メモリ２０４は様々な情報を格納するように構成され得る。一例では、メモリ２０４は、仮想空間データ９２８、オブジェクトデータ９３０、アプリケーションデータ９３２、その他のデータ９３４を含んでもよい。メモリ２０４はまた、トラッキングセンサ１２０、モーションセンサ１３０、注視センサ１４０、コントローラ１６０等からの入力に対応した出力情報を、ＨＭＤ１１０に関連付けられる表示部１１２へ提供するための演算に必要な各種データを含んでもよい。オブジェクトデータ９３０は、仮想空間内に配置される操作オブジェクト、仮想オブジェクト等に関するデータを含んでもよい。表示部１１２は、ＨＭＤ１１０に内蔵されてもよいし、ＨＭＤ１１０に取り付け可能な別のデバイス（例えば、スマートフォン）のディスプレイであってもよい。
【００９２】
図９においてプロセッサ２０２内に含まれるコンポーネントは、プロセッサ２０２が実行する機能を具体的なモジュールとして表現する１つの例にすぎない。複数のコンポーネントの機能が単一のコンポーネントによって実現されてもよい。プロセッサ２０２がすべてのコンポーネントの機能を実行するように構成されてもよい。
【００９３】
図１０は、ユーザが没入する仮想空間の画像を表示部１１２に表示するための一般的な処理のフロー図である。
【００９４】
図９及び図１０を参照して、仮想空間の画像を提供するためのＨＭＤシステム１００の一般的な処理を説明する。仮想空間４００は、トラッキングセンサ１２０、注視センサ１４０及びコンピュータ２００等の相互作用によって提供され得る。
【００９５】
処理はステップ１００２において開始する。一例として、アプリケーションデータに含まれるゲームアプリケーションがコンピュータ２００によって実行されてもよい。ステップ１００４において、プロセッサ２０２（仮想空間特定部９０２）は、仮想空間データ９２８を参照するなどして、ユーザが没入する仮想空間４００を構成する天球状の仮想空間画像４０２を生成する。トラッキングセンサ１２０によってＨＭＤ１１０の位置や傾きが検知される。トラッキングセンサ１２０によって検知された情報はコンピュータ２００に送信される。ステップ１００６において、ＨＭＤ動作検知部９０３は、ＨＭＤ１１０の位置情報や傾き情報を取得する。ステップ１００８において、取得された位置情報及び傾き情報に基づいて視界方向が決定される。
【００９６】
注視センサ１４０がユーザの左右の目の眼球の動きを検出すると、当該情報がコンピュータ２００に送信される。ステップ１０１０において、視線検知部９０４は、右目及び左目の視線が向けられる方向を特定し、視線方向Ｎ０を決定する。ステップ１０１２において、基準視線決定部９０６は、ＨＭＤ１１０の傾きにより決定された視界方向又はユーザの視線方向Ｎ０を基準視線４０８として決定する。基準視線４０８はまた、ＨＭＤ１１０の位置や傾きに追随する仮想カメラ４０４の位置及び傾きに基づいて決定されてもよい。
【００９７】
ステップ１０１４において、視界領域決定部９０８は、仮想空間４００における仮想カメラ４０４の視界領域４１０を決定する。図４に示すように、視界領域４１０は、仮想空間画像４０２のうちユーザの視界を構成する部分である。視界領域４１０は基準視線４０８に基づいて決定される。視界領域４１０をｘ方向から見たｙｚ断面図及び視界領域４１０をｙ方向から見たｘｚ断面図は、既に説明した図６及び図７にそれぞれ示されている。
【００９８】
ステップ１０１６において、視界画像生成部９１２は、視界領域４１０に基づいて視界画像を生成する。視界画像は、右目用と左目用の２つの２次元画像を含む。これらの２次元画像が表示部１１２に重畳される（より具体的には、右目用画像が右目用表示部に出力され、左目用画像が左目用表示部に出力される）ことにより、３次元画像としての仮想空間４００がユーザに提供される。ステップ１０１８において、視界画像出力部９２６は、視界画像に関する情報を表示部１１２に出力する。表示部１１２は、受信した視界画像の情報に基づいて、当該視界画像を表示する。処理はステップ１０２０において終了する。
【００９９】
図１１は、本開示の一実施形態による方法１１００のフローチャートである。本開示の一実施形態において、コンピュータプログラムが、図１１に示される各ステップをプロセッサ２０２（又はコンピュータ２００）に実行させてもよい。また、本開示の別の実施形態は、方法１１００を実行するプロセッサ２０２（又はコンピュータ２００）として実施することができる。
【０１００】
以下、本開示の実施形態について具体的に説明する。ここでは、本開示の実施形態を適用することができる具体例として、複数のユーザが、各ユーザのアバターが配置された仮想空間に没入して楽しむことができるゲームを想定する。しかし、本開示の実施形態は、必ずしもこのような態様に限定されない。本開示の実施形態が、特許請求の範囲において規定される範囲に含まれる様々な態様を取り得ることは、当業者にとって明らかであろう。
【０１０１】
図１２は、本実施形態において想定されるゲームの一態様例を概略的に説明する図である。この例では、２人のユーザ１２１２Ａ及び１２１２Ｂ（以下、まとめて「ユーザ１２１２」とも呼ぶ）が、仮想空間上のテニスゲームをプレイする。テニスゲームは本実施形態の説明のための単なる例示にすぎず、他の任意の種類のゲームが本実施形態に適用され得ることに留意すべきである。ユーザ１２１２Ａ及び１２１２Ｂは、それぞれ、ＨＭＤ１１０Ａ及び１１０Ｂ（以下、まとめて「ＨＭＤ１１０」とも呼ぶ）を頭部に装着し、さらにコントローラ１６０Ａ及び１６０Ｂ（以下、まとめて「コントローラ１６０」とも呼ぶ）を把持して操作する。一例では、コントローラ１６０は、図８に関して上述した構成を有する。
【０１０２】
仮想空間１２００内には、ユーザ１２１２Ａ及び１２１２Ｂのそれぞれによって操作されるアバター１２１４Ａ及び１２１４Ｂ（以下、まとめて「アバター１２１４」とも呼ぶ）、並びに、アバター１２１４Ａ及び１２１４Ｂによるテニスの対戦が行われるゲームフィールドとしてのテニスコート１２２２が配置される。アバター１２１４Ａ及び１２１４Ｂは、それぞれの手１２２０Ａ、１２２０Ｂ（以下、まとめて「手１２２０」とも呼ぶ）にラケット１２２１Ａ、１２２１Ｂ（以下、まとめて「ラケット１２２１」とも呼ぶ）を把持する。テニスコート１２２２は、例えばライン１２２２−１及びネット１２２２−２を含む。ゲームのプレイ中、ユーザ１２１２は、現実空間において様々な動作を行うことによって、仮想空間１２００内のアバター１２１４として仮想空間上のテニスを楽しむことができる。
【０１０３】
図１２に示されるように、アバター１２１４Ａ及び１２１４Ｂの位置にそれぞれ仮想カメラ１２０４Ａ１及び１２０４Ｂ１（以下、まとめて「仮想カメラ１２０４」とも呼ぶ）が配置される。仮想カメラ１２０４は、アバター１２１４の視点から仮想空間１２００を捉える。例えば、仮想カメラ１２０４Ａ１が捉えるアバター１２１４Ａの視点からの視界画像には、テニスコート１２２２及びテニスコート１２２２上の相手プレーヤであるアバター１２１４Ｂが含まれ、仮想カメラ１２０４Ｂ１が捉えるアバター１２１４Ｂの視点からの視界画像には、テニスコート１２２２及びテニスコート１２２２上の相手プレーヤであるアバター１２１４Ａが含まれる。更に、各仮想カメラ１２０４が捉える視界画像には、それぞれのアバター１２１４の手１２２０、及び手１２２０に把持されているラケット１２２１も含まれ得る。ユーザ１２１２は、仮想カメラ１２０４によってアバター１２１４の視点から得られた仮想空間１２００の映像を見ることができる。
【０１０４】
仮想空間１２００には、更に、アバター移動可能エリアが設定される。アバター移動可能エリアは、仮想空間１２００内においてアバター１２１４が移動することができるエリアを示す。図１２には、一方のアバター１２１４Ａに対するアバター移動可能エリア１２５０のみが示されているが、もう一方のアバター１２１４Ｂについても同様にアバター移動可能エリアが設定され得る。図１２に示される例において、アバター１２１４Ａのアバター移動可能エリア１２５０は、テニスコート１２２２全体のうちのアバター１２１４Ａ側の陣地及びその周辺を含むように設定されている。ユーザ１２１２Ａは、アバター１２１４Ａをアバター移動可能エリア１２５０内で動かし、仮想空間１２００上でテニスをすることができる。
【０１０５】
仮想空間１２００内のアバター移動可能エリア１２５０は、現実空間の位置と対応付けられている。典型的な例として、ユーザ１２１２は、自宅の部屋でテニスゲームをプレイする。図１３は、ユーザ１２１２Ａの自宅の部屋１３００の一例を示す。ユーザ１２１２Ａは、部屋１３００の中にゲームのためのプレイエリア１３２０を設定することができる。プレイエリア１３２０は、ゲームのプレイ中にユーザ１２１２Ａが動き回ることができるエリアである。前述したように、現実空間におけるユーザ１２１２の位置（例えばＨＭＤ１１０の位置又はコントローラ１６０の位置）は、トラッキングセンサ１２０によって検知される。図１３は、２つのトラッキングセンサ１２０が部屋１３００に設置された例を示す。ユーザ１２１２は、部屋１３００の広さ及び形状、部屋１３００の中に存在している障害物（例えば家具等）、トラッキングセンサ１２０の性能、設置位置、及び向きなどを考慮して、プレイエリア１３２０を適宜に決めることができる。ユーザ１２１２がプレイエリア１３２０の中を動き回ると、ユーザ１２１２の位置がトラッキングセンサ１２０によって検知され、ユーザ１２１２の動きに応じて、仮想空間１２００内のアバター１２１４がアバター移動可能エリア１２５０内を移動する。
【０１０６】
プレイエリア１３２０の大きさとアバター移動可能エリア１２５０の大きさの関係は任意である。一例として、現実空間のプレイエリア１３２０におけるユーザ１２１２の１メートルの移動が、仮想空間１２００のアバター移動可能エリア１２５０におけるアバター１２１４のＲメートルの移動に対応し、比率Ｒが所定の値に設定されているのであってよい。これにより、ユーザ１２１２がプレイエリア１３２０を端から端まで動いたときに、アバター１２１４をアバター移動可能エリア１２５０のちょうど端から端まで移動させるようにすることができる。別の例として、プレイエリア１３２０はアバター移動可能エリア１２５０よりも小さくてよく、その場合、トラッキングセンサ１２０によって検知されるユーザ１２１２の位置の移動だけでなく、コントローラ１６０に対するユーザ入力（例えばアナログスティック８１８への操作入力）を組み合わせることによって、仮想空間１２００のアバター１２１４がアバター移動可能エリア１２５０を端から端まで移動できるのであってもよい。
【０１０７】
トラッキングセンサ１２０は、ユーザ１２１２がプレイエリア１３２０内に存在している場合に、ユーザ１２１２の位置を検知することができる。これにより、アバター１２１４及びアバター１２１４の仮想カメラ１２０４は、ユーザ１２１２の現実空間の検知位置に対応したアバター移動可能エリア１２５０内の正しい位置に配置され、視界画像生成部９１２は、当該仮想カメラ１２０４の位置に基づき、ユーザ１２１２の検知位置に応じた正しい視界画像を生成することができる。しかしながら、ある状況において、トラッキングセンサ１２０は、ユーザ１２１２の位置を正しく検知できないことがあり、その結果、仮想空間１２００におけるアバター１２１２及び仮想カメラ１２０４の位置に異常が生じ、視界画像生成部９１２がユーザ１２１２の実際の位置に応じた正しい視界画像を生成できないことがある。そのような、仮想カメラ１２０４の位置に異常を生じさせる状況は、例えば、ユーザ１２１２がプレイエリア１３２０の外に出てしまった場合、ＨＭＤ１１０上のＬＥＤ光源又はコントローラ１６０上の赤外線ＬＥＤ８１２からの信号が何らかの障害物（例えばユーザ１２１２自身の身体）によって遮られてしまった場合、及び、ＨＭＤ１１０又はコントローラ１６０からの信号はトラッキングセンサ１２０で受信できたものの何らかの処理エラーによってユーザ１２１２の位置が算出不能や異常となる場合、等を含む。
【０１０８】
図１１に戻り、処理はステップ１１０２において開始する。プロセッサ２０２は、メモリ２０４に格納されているアプリケーションデータ９３２に含まれるゲームプログラムを読み出して実行する。
【０１０９】
処理はステップ１１０４に進み、プロセッサ２０２は、ゲームのための初期設定を実施する。初期設定は、図１３に示されるようなプレイエリア１３２０の設定、及び図１２に示されるようなアバター移動可能エリア１２５０の設定を含む。
【０１１０】
図１４は、上記のステップ１１０４における初期設定を実施するための方法１４００のフローチャートである。ステップ１４０２において、プロセッサ２０２は、現実空間のプレイエリアを特定する。例えば、図１３を参照すると、ユーザ１２１２Ａは、コントローラ１６０Ａを使用して、四角形の形状のプレイエリア１３２０を設定する作業を行うことができる。ユーザ１２１２Ａは、まず、部屋１３００内のＡ地点（四角形の１つの頂点）に立ち、コントローラ１６０Ａの所定のボタンを押下する。コントローラ１６０Ａは、当該ボタンの押下を受けてプレイエリア設定信号を送出し、トラッキングセンサ１２０は、コントローラ１６０Ａからのプレイエリア設定信号を受信する。プロセッサ２０２は、トラッキングセンサ１２０によって受信されたプレイエリア設定信号に基づいて、ユーザ１２１２Ａがコントローラ１６０Ａのボタンを押下した位置であるＡ地点の位置座標を特定する。次にユーザ１２１２Ａは、部屋１３００内のＢ地点（四角形の別の頂点）へ移動し、同様にコントローラ１６０Ａの所定のボタンを押下する。このユーザ操作に応答して、上述のＡ地点の場合と同様に、プロセッサ２０２はＢ地点の位置座標を特定する。以下同様の作業をユーザ１２１２ＡがＣ地点及びＤ地点について繰り返すことにより、プロセッサ２０２は、Ｃ地点及びＤ地点の位置座標も特定する。次いで、ユーザ１２１２Ａは、コントローラ１６０Ａの所定のボタンを押下することによってプレイエリア設定作業の終了を指示する。この指示を受けると、プロセッサ２０２は、それまでに位置座標が特定された複数の地点（Ａ、Ｂ、Ｃ、及びＤ地点）を連結して、各地点を結ぶ線によって囲まれるエリアをプレイエリア１３２０と特定する。
【０１１１】
プレイエリアを設定するためにユーザ１２１２Ａによって指定される地点の数は、任意の数であってよい。これにより、任意の形状を有したプレイエリアを設定することが可能である。また、ユーザ１２１２Ａがプレイエリアを設定する方法は、上記のものに限られない。例えば、ユーザ１２１２Ａは、コントローラ１６０Ａの所定のボタンを押下し続けたまま、設定しようとするプレイエリアの外枠を描くように（例えばプレイエリア１３２０の線分ＡＢ、ＢＣ、ＣＤ、ＤＡの上を順に辿るように）部屋１３００の中を歩いてもよい。この場合、プロセッサ２０２は、コントローラ１６０Ａからのプレイエリア設定信号を連続的に追跡し、それにより得られる軌跡が囲むエリアを、プレイエリアと特定するのであってよい。あるいはまた、ユーザ１２１２Ａは、トラッキングセンサ１２０の信号検出可能エリア（トラッキングセンサ１２０がコントローラ１６０Ａ又はＨＭＤ１１０Ａからの信号を検出することが可能なエリア）内において１回だけコントローラ１６０Ａの所定のボタンを押下するのであってもよい。この場合、プロセッサ２０２は、トラッキングセンサ１２０の設置位置、向き、及び性能等によって定まる当該信号検出可能エリアを、プレイエリアと特定してもよい。
【０１１２】
処理はステップ１４０４に進み、プロセッサ２０２は、上記のステップ１４０２において特定されたプレイエリアと対応するように、仮想空間のアバター移動可能エリアを特定する。例えば、図１２及び図１３をまとめて参照すると、プロセッサ２０２は、ユーザ１２１２Ａにより設定されたプレイエリア１３２０内の各点を、仮想空間１２００上のテニスコート１２２２のうちアバター１２１４Ａ側の陣地とその周辺を含む領域内の各点に対応付ける（写像する）ことによって、アバター移動可能エリア１２５０を特定することができる。例えば、プレイエリア１３２０の４つのコーナー（Ａ、Ｂ、Ｃ、及びＤ地点）と中心点は、それぞれアバター移動可能エリア１２５０の各コーナーと中心点に対応付けられる。プレイエリア１３２０内の他の地点も同様に、アバター移動可能エリア１２５０内の各点に対応付けられる。これにより、プレイエリア１３２０内のユーザ１２１２Ａの任意の位置に対して、アバター移動可能エリア１２５０内のアバター１２１４Ａの位置を一意に決定することができる。この場合、ユーザ１２１２Ａは、プレイエリア１３２０内を移動することで、アバター１２１４Ａにアバター移動可能エリア１２５０の全体を動き回らせることができる。なお、前述したようにプレイエリアとアバター移動可能エリアの大きさは異なっていてよく、ユーザがプレイエリア上を距離ｄだけ移動したとき、アバターはアバター移動可能エリア上を距離Ｒ×ｄだけ移動するであろう。但し、Ｒはユーザとアバターの移動距離を関連付ける所定の比率（例えばプレイエリアとアバター移動可能エリアの大きさの比）である。
【０１１３】
別の例として、プロセッサ２０２は、テニスコート１２２２のアバター１２１４Ａ側の陣地とその周辺を含む領域をアバター移動可能エリア１２５０と特定すると共に、プレイエリア１３２０をアバター移動可能エリア１２５０の部分的な可動のエリアに対応付けてもよい。この場合、ユーザ１２１２Ａがプレイエリア１３２０内を動き回ると、アバター１２１４Ａは、アバター移動可能エリア１２５０全体ではなく、アバター移動可能エリア１２５０の一部分である当該部分的な可動のエリア内を移動する。しかしながら、ユーザ１２１２Ａは、プレイエリア１３２０内を動き回ることに加えて更にコントローラ１６０Ａの操作をすることによって、この部分的な可動エリアをアバター移動可能エリア１２５０内で移動させることができ、それにより、アバター１２１４Ａがアバター移動可能エリア１２５０全体を動き回るようにすることができる。このように、プレイエリア１３２０内のユーザ１２１２Ａの位置とコントローラ１６０Ａへのユーザ入力との両方に従って、アバター移動可能エリア１２５０内のアバター１２１４Ａの位置が決定されるのであってもよい。
【０１１４】
ゲームのための初期設定は以上で終了し、処理は図１１のステップ１１０６に進む。ステップ１１０６において、プロセッサ２０２は、ユーザ１２１２のＨＭＤ１１０又はコントローラ１６０からのトラッキング信号がトラッキングセンサ１２０によって取得されたか否かを判定する。例えば、仮想空間１２００においてアバター１２１４によるテニスの試合が開始されると、ユーザ１２１２のＨＭＤ１１０及びコントローラ１６０は、それぞれ、現実空間におけるユーザ１２１２の頭又は手の位置の追跡を可能にするためのトラッキング信号を送出する。トラッキング信号は、ＨＭＤ１１０上のＬＥＤ光源又はコントローラ１６０上の赤外線ＬＥＤ８１２が点灯若しくは点滅することによって定常的又は定期的に発せられる信号である。ＨＭＤ１１０及びコントローラ１６０から発せられたトラッキング信号は、トラッキングセンサ１２０に対するユーザ１２１２の位置又は向きによってはトラッキングセンサ１２０に全く届かず、完全に受信不能となることがある。このようにトラッキングセンサ１２０がトラッキング信号を取得できなかった場合、処理はステップ１１１４に進む。トラッキング信号がトラッキングセンサ１２０によって取得された場合、処理はステップ１１０８に進む。
【０１１５】
トラッキング信号がトラッキングセンサ１２０によって取得されると、ステップ１１０８において、プロセッサ２０２は、取得されたトラッキング信号に基づいて、現実空間におけるユーザ１２１２の位置を検知する。ステップ１１０８は、トラッキング信号に基づいて、現実空間におけるユーザ１２１２の頭（ＨＭＤ１１０）又は手（コントローラ１６０）の位置座標を計算することを含む。図１３を参照して、例えば、ユーザ１２１２Ａは、プレイエリア１３２０の中に存在しており、且つ、ＨＭＤ１１０Ａ上のＬＥＤ光源及びコントローラ１６０Ａ上の赤外線ＬＥＤ８１２がトラッキングセンサ１２０の方向を向くような姿勢をとっている。このような配置においては、トラッキング信号が良好な感度でトラッキングセンサ１２０に受信されるため、プロセッサ２０２は、ＨＭＤ１１０Ａ及びコントローラ１６０Ａからのトラッキング信号に基づいて、実際のユーザ１２１２Ａの頭及び手の位置座標を正しく計算することができる。あるいはユーザ１２１２Ａは、プレイエリア１３２０の外に出てしまっているか、又は、プレイエリア１３２０の中に存在してはいるものの、ＨＭＤ１１０Ａ上のＬＥＤ光源又はコントローラ１６０Ａ上の赤外線ＬＥＤ８１２の向きが、トラッキングセンサ１２０の方向から所定角度以上ずれてしまっているかもしれない。そのような配置では、トラッキングセンサ１２０によるトラッキング信号の受信感度が十分でないということがあり得る。この場合、プロセッサ２０２は、良好なトラッキング信号を利用することができないため、実際のユーザ１２１２Ａの頭及び手の位置座標を正しく計算することができず、算出されたユーザ１２１２Ａの頭及び手の位置は、実際の位置とは異なる異常な位置を示すものとなり得る。
【０１１６】
処理はステップ１１１０に進み、プロセッサ２０２は、ステップ１１０８において検知された現実空間のユーザ１２１２の位置に応じて、仮想空間１２００内の操作対象オブジェクトの位置を制御する。図１２に示される仮想空間１２００において、操作対象オブジェクトは、仮想カメラ１２０４及びアバター１２１４の手１２２０を含む。例えば、プロセッサ２０２は、ステップ１１０８において算出された現実空間のユーザ１２１２の頭（ＨＭＤ１１０）の位置座標に対応する仮想空間１２００内の位置に、仮想カメラ１２０４を配置する。またプロセッサ２０２は、ステップ１１０８において算出された現実空間のユーザ１２１２の手（コントローラ１６０）の位置座標に対応する仮想空間１２００内の位置に、アバター１２１４の手１２２０を配置する。これにより、例えば、ユーザ１２１２Ａがプレイエリア１３２０内を移動し、あるいはコントローラ１６０Ａを持った手を動かすと、そのようなユーザ１２１２Ａの動きに応じて、仮想空間１２００のアバター１２１４Ａ及びアバター１２１４Ａの仮想カメラ１２０４Ａ１をアバター移動可能エリア１２５０内で動かすことができる。ここで、ステップ１１０８において算出されたユーザ１２１２の頭及び手の位置座標が正しいものである場合には、アバター１２１４及び仮想カメラ１２０４の動きはユーザ１２１２の動きを反映し自然なものとなる。しかしながら、ステップ１１０８においてユーザ１２１２の異常な位置座標が算出された場合は、アバター１２１４及び仮想カメラ１２０４は不自然な動きを示す結果となる。一例として、ユーザ１２１２の頭（ＨＭＤ１１０）の位置座標が異常になると、仮想カメラ１２０４が当該異常な位置座標に従って仮想空間１２００内で本来とは異なる場所へ突然ジャンプし、その結果、視界画像生成部９１２から不連続で予期しない視界画像が生成されてしまう。同様に、ユーザ１２１２の手（コントローラ１６０）の位置座標が異常になると、アバター１２１４の手１２２０が、本来存在すべきでない場所へ移動し得る。
【０１１７】
処理はステップ１１１２に進み、プロセッサ２０２は、仮想空間１２００内の操作対象オブジェクトの位置が正常であるか否かを判定する。例えば、プロセッサ２０２は、仮想空間１２００における仮想カメラ１２０４及びアバター１２１４の手１２２０の位置を上記のステップ１１１０の実施前後で比較し、その差、即ち位置の時間的変化（移動スピード）に基づいて、仮想カメラ１２０４及びアバター１２１４の手１２２０の位置が正常であるか否かを判定する。より具体的に、プロセッサ２０２は、仮想カメラ１２０４の位置の移動スピードが所定の閾値よりも小さい場合、仮想カメラ１２０４の位置が正常であると判定し、当該移動スピードが所定の閾値よりも大きい場合、仮想カメラ１２０４の位置が異常であると判定する。アバター１２１４の手１２２０の位置についての判定も同様である。前述したように、トラッキングセンサ１２０によるトラッキング信号の受信状態が不調であると、ＨＭＤ１１０及び／又はコントローラ１６０の正しい位置座標が検知できず、結果として仮想空間１２００において仮想カメラ１２０４やアバター１２１４の手１２２０が異常な位置へ突然ジャンプし得る。したがって、仮想カメラ１２０４及びアバター１２１４の手１２２０の位置が異様に速く移動したかどうかを判断基準として、仮想カメラ１２０４及びアバター１２１４の手１２２０の位置の異常を識別することができる。ステップ１１１２の判定の結果、操作対象オブジェクトの位置が正常である場合、処理はステップ１１１８に進み、位置が異常である場合、処理はステップ１１１４に進む。
【０１１８】
操作対象オブジェクトの位置が異常と判定されると、ステップ１１１４において、プロセッサ２０２は、位置が異常となる直前の時点における操作対象オブジェクトの位置（即ち、最後に正常であった位置）を、メモリ２０４に記憶させる。以下、当該位置を「異常発生直前位置」と呼ぶこととする。異常発生直前位置は、上記のステップ１１１０が実施される前における操作対象オブジェクトの位置として得ることができる。例えば、プロセッサ２０２は、ステップ１１１０を実施する前に操作対象オブジェクトの位置を一時的に保持しておき、ステップ１１１０の実施による操作対象オブジェクトの移動先の位置がステップ１１１２において異常と判定されたら、当該一時的に保持しておいた位置を異常発生直前位置とすることができる。プロセッサ２０２は、異常発生直前位置と共に、操作対象オブジェクトが異常発生直前位置に存在していた時点を示す時刻情報をメモリ２０４に記憶させてもよい。
【０１１９】
ステップ１１１４は、ステップ１１０６の判定においてトラッキング信号が取得不能であった場合にも実施される。プロセッサ２０２は、トラッキング信号が取得不能となる直前における操作対象オブジェクトの位置を、上述の異常発生直前位置としてメモリ２０４に記憶させるのであってよい。
【０１２０】
ステップ１１０６からステップ１１２０のループが繰り返し実施されると、メモリ２０４には、操作対象オブジェクトの位置に異常が生じる度に、その異常に対応する異常発生直前位置が順次記憶されていく。例えば、図１２を参照して、アバター１２１４Ａがアバター移動可能エリア１２５０の右端に近づきすぎると、仮想カメラ１２０４Ａ１の位置に異常が生じ得る（これは、例えばユーザ１２１２Ａがプレイエリア１３２０の右端に近づきすぎ、トラッキング信号の受信状態が良好でなくなった結果として起こり得る）。この場合、アバター移動可能エリア１２５０の右端付近の位置を示す異常発生直前位置がメモリ２０４に記憶される。同様に、アバター１２１４Ａがアバター移動可能エリア１２５０の左端あるいは右前方コーナー部に近づきすぎた場合、それぞれアバター移動可能エリア１２５０の左端付近又は右前方コーナー付近の位置を示す異常発生直前位置がメモリ２０４に記憶される。このようにして、メモリ２０４には、操作対象オブジェクトに生じた位置の異常の履歴（複数の異常発生直前位置）が蓄積される。
【０１２１】
処理はステップ１１１６に進み、プロセッサ２０２は、メモリ２０４に記憶されている異常発生直前位置に基づき、異常発生直前位置をユーザ１２１２に対して視覚的に提示するための画像（以下、「異常位置提示画像」と呼ぶ）を生成する。異常位置提示画像は、１又は複数の異常発生直前位置を視覚的に識別可能な態様で仮想空間にマッピングすることによって生成することができる。以下、異常位置提示画像のいくつかの具体例を図に示す。
【０１２２】
図１５Ａは、第１の例による異常位置提示画像１５１０を示す図である。図１５Ａは、仮想空間１２００上のテニスコート１２２２とアバター移動可能エリア１２５０の上面図を表している。この第１の例による異常位置提示画像１５１０は、アバター移動可能エリア１２５０の周縁部分に配置された１１個の星型図形１５２０から構成される。しかしながら、図１５Ａに示される異常位置提示画像１５１０における星型図形１５２０の数及び配置位置は、単なる例にすぎず、限定的であると解されてはならない。星型図形１５２０の各々は、ユーザ１２１２ＡのＨＭＤ１１０Ａ又はコントローラ１６０Ａに関して１又は複数回記録されたそれぞれの異常発生直前位置を示す。例えば、プロセッサ２０２は、メモリ２０４から記憶済みの全ての異常発生直前位置を読み出し、各異常発生直前位置に星型図形１５２０を配置することによって、異常位置提示画像１５１０を生成することができる。ユーザ１２１２Ａは、星型図形１５２０の位置及び数から、アバター１２１４Ａが仮想空間１２００内のどこへ移動した時に、ＨＭＤ１１０Ａ及びコントローラ１６０Ａのトラッキングに異常が生じやすいかを知ることができる。なお、図１５Ａは仮想空間１２００を二次元平面で表しているが、異常発生直前位置は高さを含む三次元の位置座標によって特定され得る。したがって、プロセッサ２０２は、そのような異常発生直前位置に従って星型図形１５２０を三次元に配置し、それにより異常位置提示画像１５１０を三次元で表現するのであってもよい。
【０１２３】
図１５Ｂは、第２の例による異常位置提示画像１５１５を示す図である。この第２の例による異常位置提示画像１５１５は、ユーザ１２１２Ａの（ＨＭＤ１１０Ａではなく）コントローラ１６０Ａに関する異常発生直前位置をユーザに提示することを想定したものであり、図１５Ａの第１の例による異常位置提示画像１５１０における星型図形１５２０に代えて、アバター１２１４Ａの手１２２０Ａの残像１５２５から構成される。手の残像１５２５は、アバター１２１４Ａの手１２２０Ａと同一の外見であってもよいし、アバター１２１４Ａの手１２２０Ａとは異なる外見（例えば、半透明に表現された手）であってもよい。前述したように、アバター１２１４Ａの手１２２０Ａの位置は、コントローラ１６０Ａの検知位置に対応している。図１５Ｂの例では、コントローラ１６０Ａの正しい位置座標が得られなくなると、それに対応する異常発生直前位置に、アバター１２１４Ａの手１２２０Ａの残像１５２５が提示される。ユーザ１２１２Ａは、この残像１５２５の位置及び数から、コントローラ１６０Ａのトラッキングに異常が生じやすい場所を知ることができる。
【０１２４】
図１６は、第３の例による異常位置提示画像１６１０を示す図である。この第３の例による異常位置提示画像１６１０は、複数の異常発生直前位置を色の濃淡の空間分布として表している。例えば、異常位置提示画像１６１０のうち色の濃い部分は、多くの異常発生直前位置が集まっている（即ち、その場所では操作対象オブジェクトの位置が異常となりやすい）ことを示し、色の薄い部分は、異常発生直前位置がまばらである（即ち、その場所では操作対象オブジェクトの位置はあまり異常とはならない）ことを示す。図１６に示される異常位置提示画像１６１０は単なる例であり、空間分布を表すことが可能な任意の視覚的表現方法が用いられてよい。例えば、異常位置提示画像１６１０は、複数の異常発生直前位置を色、模様、図形等の空間分布として表したものであってもよい。例えば、プロセッサ２０２は、メモリ２０４から記憶済みの全ての異常発生直前位置を読み出し、異常発生直前位置の局所的な空間的密度を計算する。プロセッサ２０２は、場所毎に得られた空間的密度に応じた所定の異なる濃さ、異なる色、異なる模様、又は異なる図形等を仮想空間１２００上に配置することによって、異常位置提示画像１６１０を生成することができる。ユーザ１２１２は、異常位置提示画像１６１０における濃淡、色、模様、又は図形等の空間分布から、ＨＭＤ１１０及びコントローラ１６０のトラッキングに異常が生じやすい場所を知ることができる。
【０１２５】
プロセッサ２０２は、直近の所定長さの時間期間内にメモリ２０４に記憶された異常発生直前位置を用いて、異常位置提示画像を順次更新してもよい。例えば、プロセッサ２０２は、仮想空間１２００内の同一の場所（又はある広さの領域）を示す異常発生直前位置が直近の所定時間の間に複数回記録されている場合、その数に応じて、異常位置提示画像の中の当該異常発生直前位置に対応する部分の表現を変化させてもよい。一例として、図１５Ａに例示された異常位置提示画像１５１０において、アバター移動可能エリア１２５０内のある特定の１つの場所に対して直近の所定時間内（例えば３０分前から現在までの直近の３０分間）に記録された異常発生直前位置の数が多いほど、その場所に配置される星型図形１５２０が明るく表されるのであってよい。また、その後当該場所に対して新しく異常発生直前位置が記録されなかった場合、当該場所に配置された星型図形１５２０の明るさを時間の経過につれて徐々に減少させてもよい。ユーザ１２１２は、星型図形１５２０の明るさから、最近その場所でトラッキングの異常がどのくらいの頻度で生じたかを知ることができる。異常位置提示画像１５１５及び１６１０についても同様の変化を適用可能である。
【０１２６】
処理はステップ１１１８に進み、プロセッサ２０２は、異常位置提示画像を含むように仮想空間１２００の視界画像を生成する。視界画像の生成手法は、図１０のステップ１００６からステップ１０１６として上述したとおりである。視界画像は表示部１１２に表示され、これによりユーザ１２１２は、異常位置提示画像を含んだ視界画像を視認することで、操作対象オブジェクト（仮想カメラ１２０４及びアバター１２１４の手１２２０）の位置が異常となった、又は異常となりやすい場所を知ることができる。
【０１２７】
処理はステップ１１２０に進み、プロセッサ２０２は、ゲームを終了するか否かを判定する。例えば、プロセッサ２０２は、ユーザ１２１２からの所定の入力指示に従って、ゲームを終了するか否かを判定する。ゲームが続行される場合、処理はステップ１１０６へ戻り、再びステップ１１０６以降が繰り返される。
【０１２８】
図１７は、本開示の別の実施形態による方法１１５０のフローチャートである。方法１１５０は、前述した方法１１００の各ステップに加えて、ステップ１１１６とステップ１１１８の間に付加的なステップ１７０２を更に含むものである。ステップ１７０２において、プロセッサ２０２は、メモリ２０４に記憶されている異常発生直前位置の情報を、他のユーザのコンピュータ２００へ送信する。図１２を参照すると、ユーザ１２１２Ａは仮想空間１２００をユーザ１２１２Ｂと共有している。この例において、ユーザ１２１２Ａに関する異常発生直前位置の情報が、ネットワーク１９２を介してユーザ１２１２Ｂのコンピュータ２００へ送信される。同様に、ユーザ１２１２Ｂに関する異常発生直前位置の情報が、ユーザ１２１２Ａのコンピュータ２００へ送信されてもよい。ユーザ１２１２Ａの異常発生直前位置の情報を受け取ったユーザ１２１２Ｂのコンピュータ２００のプロセッサ２０２は、その異常発生直前位置に基づく前述したような異常位置提示画像を生成し、それをアバター１２１４Ｂの仮想カメラ１２０４Ｂ１からの視界画像に含めてユーザ１２１２ＢのＨＭＤ１１０Ｂに表示させてもよい。これにより、ユーザ１２１２Ｂは、ユーザ１２１２Ａ側の異常発生直前位置を知ることができ、それをテニスゲームにおける戦術の決定に役立てることができる。
【０１２９】
図１８は、本開示の別の実施形態による方法１１６０のフローチャートである。方法１１６０は、前述した方法１１００の各ステップに加えて、ステップ１１１６とステップ１１１８の間に付加的なステップ１８０２及びステップ１８０４を更に含むものである。ステップ１８０２において、プロセッサ２０２は、メモリ２０４に記憶されている異常発生直前位置の頻度が所定の閾値よりも高いか否かを判定する。異常発生直前位置の頻度は、例えば、今までに仮想空間１２００内の操作対象オブジェクトの位置が異常となった総回数、又は所定の単位時間内に仮想空間１２００内の操作対象オブジェクトの位置が異常となった回数として定義することができる。メモリ２０４に記憶されている異常発生直前位置の頻度が所定の閾値よりも低い場合、処理はステップ１１１８に進み、当該頻度が所定の閾値よりも高い場合、処理はステップ１８０４に進む。
【０１３０】
処理がステップ１８０４に進むと、プロセッサ２０２は、ユーザ１２１２に対する警告をＨＭＤ１１０から出力させる。警告は、映像、音声、光、振動など任意の態様によるものであってよい。前述したように、仮想空間１２００内においてアバター１２１４の仮想カメラ１２０４（操作対象オブジェクト）の位置が異常になる（例えば離れた場所へ突然ジャンプする）と、視界画像生成部９１２によって生成される視界画像がユーザ１２１２の予期し得ない不連続なものとなり、これがユーザ１２１２に「酔い」を感じさせる原因となり得る。そこで、仮想カメラ１２０４の位置が頻繁に異常になった場合に、ステップ１８０４において、例えばユーザ１２１２に休憩をとるよう促す警告を発することで、ユーザ１２１２の酔いを軽減し、又は未然に防ぐことが可能となる。また、このような操作対象オブジェクトの位置の異常は、トラッキングセンサ１２０の配置やプレイエリア１３２０の設定に何らかの問題があることが原因となっていることもあるので、ユーザ１２１２にそれらの再セットアップをするよう促す警告を発することとしてもよい。
【０１３１】
ステップ１８０２における判定に用いられる閾値は、ユーザ１２１２の仮想空間への慣れの度合いに応じて変化させてもよい。ユーザ１２１２の仮想空間への慣れの度合いは、ユーザ１２１２の挙動から知ることができる。例えば、方法１１６０は、オプションのステップ（不図示）として、ユーザ１２１２の挙動を監視するステップと、ユーザ１２１２の挙動に基づいて上記の閾値を調整するステップとを更に含んでもよい。ユーザ１２１２の挙動としては、例えば、操作対象オブジェクトの位置が異常となった回数、操作対象オブジェクトの位置が異常となってからその異常が解消されるまでの時間、又は現実空間におけるユーザ１２１２の移動量等を採用することができる。例えば、仮想空間における体験に慣れている熟練ユーザであれば、操作対象オブジェクトの位置がなるべく異常とならないように、上手く現実空間での動作をすることができるかもしれない。また熟練ユーザは、操作対象オブジェクトの位置が異常となってしまった場合でも、正常位置へ戻すための適切な動作を素早く行うことができるかもしれない。更に、仮想空間における体験にあまり慣れていない非熟練ユーザは、動作を慎重に行う結果として、現実空間における移動量が熟練ユーザよりも少ないかもしれない。仮想空間への慣れを反映したこれらのユーザ挙動に応じて、ステップ１８０２の閾値は適宜調整されてよい。例えば、熟練ユーザに対しては閾値を大きくし、非熟練ユーザに対しては閾値を小さくするのであってよい。
【０１３２】
図１９は、本開示の別の実施形態による方法１１７０のフローチャートである。方法１１７０は、前述した方法１１００の各ステップに加えて、更に、ステップ１１１６とステップ１１１８の間に付加的なステップ１９０２を含むと共に、ステップ１１１２とステップ１１１８の間に付加的なステップ１９０４を含むものである。前述したように、ステップ１１１２において操作対象オブジェクトの位置が異常と判定されると、ステップ１１１４及びステップ１１１６が実行される。ステップ１１１６の後、処理はステップ１９０２に進み、プロセッサ２０２は、ゲームの進行を一時停止する。ゲームの進行を一時停止するいくつかの例として、ゲーム内の時間の進行が停止されてもよいし、アバター１２１４のとった行動が無効化される（例えば、一時停止中にアバター１２１４がボールを打っても得点が入らない等）のであってもよい。操作対象オブジェクトの位置が異常となってしまったユーザはゲームを正常にプレイできない不利な状況に置かれることになるため、ゲームの進行を一時停止することで、ユーザ間にゲーム遂行上の好ましくないアンバランスが生じることを回避することができる。ゲームの進行が一時停止された後、ステップ１１０６からステップ１１２０のループが再び繰り返され、操作対象オブジェクトの位置が正常に戻ると、処理はステップ１１１２からステップ１９０４に進む。ステップ１９０４において、プロセッサ２０２は、ゲームの一時停止を解除し、通常どおりゲームを進行させる。
【０１３３】
図２０は、本開示の別の実施形態による方法１１８０のフローチャートである。方法１１８０は、前述した方法１１００の各ステップに加えて、ステップ１１０６とステップ１１０８の間に付加的なステップ２００２を更に含むものである。ステップ２００２において、プロセッサ２０２は、ユーザ１２１２とアバター１２１４の移動距離を関連付ける前述の比率Ｒを、メモリ２０４に記憶されている異常発生直前位置の頻度に応じて調整する。例えば、プロセッサ２０２は、操作対象オブジェクトの位置が異常となる回数が多いほど、比率Ｒを大きくする。これにより、ユーザ１２１２が現実空間内を少し動くだけで、仮想空間１２００内のアバター１２１４を大きく動かすことができる。したがって、ユーザ１２１２はプレイエリア１３２０の周縁部分近くまで移動しなくてもアバター１２１４をアバター移動可能エリア１２５０の全範囲にわたって動かすことができるようになるので、それ以降、ユーザ１２１２がプレイエリア１３２０の端に近づくことによって再び操作対象オブジェクトの位置が異常となってしまう可能性を小さくすることができる。プロセッサ２０２は、メモリ２０４に記憶されている異常発生直前位置の頻度を仮想空間１２００内の方向（アバター１２１４の現在位置から見た方向）毎に特定し、頻度の高い方向、即ち操作対象オブジェクトの位置が異常となる回数が多い方向に、より大きな比率Ｒを設定してもよい。これにより、ユーザ１２１２がプレイエリア１３２０の端に近づくことによって操作対象オブジェクトの位置が異常となってしまう可能性を、より効果的に小さくすることができる。
【０１３４】
本開示の実施形態は、主に、プロセッサ２０２（もしくはコンピュータ２００）又は方法１１００として実施されるものとして説明された。しかし、本開示の実施形態が、プロセッサ２０２に方法１１００を実行させるコンピュータプログラムとして実施することができることは、当業者にとって明らかであろう。
【０１３５】
本開示の実施形態が説明されたが、これらが例示にすぎず、本開示の範囲を限定するものではないことが理解されるべきである。本開示の趣旨及び範囲から逸脱することなく、実施形態の変更、追加、改良等を適宜行うことができることが理解されるべきである。本開示の範囲は、上述した実施形態のいずれによっても限定されるべきではなく、特許請求の範囲及びその均等物によってのみ規定されるべきである。
【０１３６】
また、上述した様々な実施形態では、非透過型のＨＭＤ装置によってユーザが没入する仮想空間を提供する例について説明したが、ＨＭＤ装置として、透過型のＨＭＤ装置を採用してもよい。そのような実施形態においては、透過型のＨＭＤ装置を介してユーザが視認する現実空間に仮想オブジェクトを含む画像を重ねて表示することにより、拡張現実（ＡＲ：Augmented Reality）空間または複合現実（ＭＲ：Mixed Reality）空間におけるユーザ体験を提供してもよい。具体的には、透過型のＨＭＤ装置は、上述した視界画像ではなく、異常位置提示画像を当該ＨＭＤ装置の表示部に表示させるのであってよい。これにより、ユーザは、異常発生直前位置が表示されたＡＲまたはＭＲ空間を体験することが可能である。
【符号の説明】
【０１３７】
１００…ＨＭＤシステム、１１０…ＨＭＤ、１１２…表示部、１１４…センサ、１２０…トラッキングセンサ、１３０…モーションセンサ、１４０…注視センサ、１５０…サーバ、１６０…コントローラ、１９０…ユーザ、１９２…ネットワーク、２００…コンピュータ、２０２…プロセッサ、２０４…メモリ、２０５…通信制御部、２０６…ストレージ、２０８…入出力インターフェース、２１０…通信インターフェース、２１２…バス、４００…仮想空間、４０２…仮想空間画像、４０４…仮想カメラ、４０６…中心、４０８…基準視線、４１０…視認領域、６０２、７０２…領域、８００…コントローラ、８０２…グリップ、８０４…フレーム、８０６…天面、８０８、８１０、８１４、８１６…ボタン、８１８…アナログスティック、９０２…仮想空間特定部、９０３…ＨＭＤ動作検知部、９０４…視線検知部、９０６…基準視線決定部、９０８…視界領域決定部、９１０…コントローラ動作検知部、９１２…視界画像生成部、９２６…視界画像出力部、９２８…仮想空間データ、９３０…オブジェクトデータ、９３２…アプリケーションデータ、９３４…その他のデータ、１２００…仮想空間、１２０４Ａ１、Ｂ１…仮想カメラ、１２１２Ａ、Ｂ…ユーザ、１２１４Ａ、Ｂ…アバター、１２２０Ａ、Ｂ…アバターの手、１２２１Ａ、Ｂ…ラケット、１２２２…ゲームフィールド、１２５０…アバター移動可能エリア、１３００…部屋、１３２０…プレイエリア、１５１０、１５１５、１６１０…異常位置提示画像、１５２０…星型図形、１５２５…手の残像
【図１】
2019051300.tif 000003
【図２】
2019051300.tif 000004
【図３】
2019051300.tif 000005
【図４】
2019051300.tif 000006
【図５】
2019051300.tif 000007
【図６】
2019051300.tif 000008
【図７】
2019051300.tif 000009
【図８】
2019051300.tif 000010
【図９】
2019051300.tif 000011
【図１０】
2019051300.tif 000012
【図１１】
2019051300.tif 000013
【図１２】
2019051300.tif 000014
【図１３】
2019051300.tif 000015
【図１４】
2019051300.tif 000016
【図１５Ａ】
2019051300.tif 000017
【図１５Ｂ】
2019051300.tif 000018
【図１６】
2019051300.tif 000019
【図１７】
2019051300.tif 000020
【図１８】
2019051300.tif 000021
【図１９】
2019051300.tif 000022
【図２０】
2019051300.tif 000023