(57)【要約】【課題】ユーザの仮想空間における体験をより豊かにする技術を提供すること。【解決手段】ヘッドマウントデバイスに仮想空間を提供するためにコンピュータで実行されるプログラムは、仮想空間を定義するステップ（Ｓ１６０５）と、ヘッドマウントデバイスのユーザの操作を受け付け可能な１以上のオブジェクトを仮想空間に配置するステップ（Ｓ１６１０）と、ユーザの視線を検出するステップ（Ｓ１６２０）と、１以上のオブジェクトの中から、検出された視線により指定されるオブジェクトを特定するステップ（Ｓ１６２５）と、ユーザの四肢の少なくとも一部の動きを検出するステップ（Ｓ１６３０）と、ユーザの四肢の少なくとも一部の動きの検出結果に基づいて特定されたオブジェクトに対する操作を受け付けるステップ（Ｓ１６６０）とを備える。【選択図】図１６
2018200688.tif 000002
【特許請求の範囲】
【請求項１】
ヘッドマウントデバイスに仮想空間を提供するためにコンピュータで実行されるプログラムであって、
前記プログラムは前記コンピュータに、
仮想空間を定義するステップと、
前記ヘッドマウントデバイスのユーザの操作を受け付け可能な１以上のオブジェクトを前記仮想空間に配置するステップと、
前記ユーザの視線を検出するステップと、
前記１以上のオブジェクトの中から、前記検出された視線により指定されるオブジェクトを特定するステップと、
前記ユーザの四肢の少なくとも一部の動きを検出するステップと、
前記ユーザの四肢の少なくとも一部の動きの検出結果に基づいて前記特定されたオブジェクトに対する操作を受け付けるステップとを実行させる、プログラム。
【請求項２】
前記ユーザの四肢の少なくとも一部は、前記ユーザの手を含み、
前記操作を受け付けるステップは、前記ユーザの手の形状に応じて前記操作を受け付けることを含む、請求項１に記載のプログラム。
【請求項３】
前記動きを検出するステップは、前記ユーザの手が開いているときに当該手のひらに対する法線を検出するステップを含み、
前記ユーザの手の形状に応じて前記操作を受け付けることは、前記法線と前記視線とが略同じ方向である状態から前記ユーザの手が閉じた状態に変化したことに応じて、前記操作を受け付けることを含む、請求項２に記載のプログラム。
【請求項４】
前記動きを検出するステップは、
前記ユーザの四肢の第１部分の動きを検出するステップと、
前記ユーザの四肢の第２部分の動きを検出するステップとを含み、
前記操作を受け付けるステップは、前記第１部分と第２部分とが接触したことに基づいて前記操作を受け付けることを含む、請求項１に記載のプログラム。
【請求項５】
前記プログラムは前記コンピュータに、
前記検出された視線とオブジェクトとが交わる交点にポインタオブジェクトを配置するステップと、
前記仮想空間における前記ユーザの視座と前記交点との間隔を算出するステップと、
前記算出された間隔が狭いほど前記ポインタオブジェクトの大きさを小さくするステップとをさらに実行させる、請求項１〜４のいずれか１項に記載のプログラム。
【請求項６】
前記ポインタオブジェクトの大きさを小さくするステップは、前記算出された間隔に予め定められた値を乗じた値に基づいて、前記ポインタオブジェクトの大きさを設定することを含む、請求項５に記載のプログラム。
【請求項７】
前記プログラムは前記コンピュータに、
前記検出された視線とオブジェクトとが交わる交点を含む内領域の画質よりも、前記内領域の外側の外領域の画質が低い視界画像を前記ヘッドマウントデバイスに表示するステップをさらに実行させる、請求項１〜６のいずれか１項に記載のプログラム。
【請求項８】
前記プログラムは前記コンピュータに、
前記ヘッドマウントデバイスの動きを検出するステップと、
前記検出された動きに連動して前記視界画像を更新するステップとをさらに実行させ、
前記視界画像を更新するステップは、前記外領域に位置するオブジェクトの画質を、前記内領域に位置する当該オブジェクトの画質よりも低くすることを含む、請求項７に記載のプログラム。
【請求項９】
前記オブジェクトの画質を低くすることは、前記外領域に位置するオブジェクトのポリゴン数を、前記内領域に位置する当該オブジェクトのポリゴン数よりも少なくすることを含む、請求項８に記載のプログラム。
【請求項１０】
前記オブジェクトの画質を低くすることは、前記外領域に位置するオブジェクトのテクスチャ解像度を、前記内領域に位置する当該オブジェクトのテクスチャ解像度よりも低くすることを含む、請求項８または９に記載のプログラム。
【請求項１１】
前記コンピュータのメモリは、前記１以上のオブジェクトの各々についてオブジェクトを構成するための異なる画質の複数の描画データを記憶しており、
前記オブジェクトの画質を低くすることは、
前記オブジェクトが前記内領域に位置するときに、前記複数の描画データのうち第１描画データを用いて当該オブジェクトを描画することと、
前記オブジェクトが前記外領域に位置するときに、前記複数の描画データのうち前記第１描画データよりも画質が低い第２描画データを用いて当該オブジェクトを描画することとを含む、請求項８〜１０のいずれか１項に記載のプログラム。
【請求項１２】
請求項１〜１１のいずれか１項に記載のプログラムを格納したメモリと、
前記プログラムを実行するためのプロセッサとを備える、情報処理装置。
【請求項１３】
ヘッドマウントデバイスに仮想空間を提供するためにコンピュータで実行される方法で
あって、
仮想空間を定義するステップと、
前記ヘッドマウントデバイスのユーザの操作を受け付け可能な１以上のオブジェクトを前記仮想空間に配置するステップと、
前記ユーザの視線を検出するステップと、
前記１以上のオブジェクトの中から、前記検出された視線により指定されるオブジェクトを特定するステップと、
前記ユーザの四肢の少なくとも一部の動きを検出するステップと、
前記ユーザの四肢の少なくとも一部の動きの検出結果に基づいて前記特定されたオブジェクトに対する操作を受け付けるステップとを備える、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、仮想空間を提供するための技術に関し、より特定的には仮想空間におけるユーザの操作を支援する技術に関する。
【背景技術】
【０００２】
ヘッドマウントデバイス（ＨＭＤ：Head-Mounted  Device）を用いて仮想空間（仮想現実空間とも言う）を提供する技術が知られている。また、仮想空間におけるユーザの体験を豊かにする様々な技術が提案されている。
【０００３】
例えば、非特許文献１は、仮想空間でのシューティングゲームにおいて、ユーザの視線を利用して、対象物への照準を合わせる技術を開示している。
【０００４】
また、非特許文献２は、仮想空間におけるユーザの視線部分のみを高解像度でレンダリングし、その他の部分を低解像度でレンダリングする技術を開示している。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“視線ひとつでここまで体験は変わる。アイトラッキングシステム搭載ＶＲヘッドセット「ＦＯＶＥ」”、［online］、［平成２９年５月１０日検索］、インターネット〈URL：http://www.gizmodo.jp/2016/09/tgs2016-vr-fove.html〉
【非特許文献２】“ハイエンドＶＲを超低負荷で実現する“Foveated  Rendering”最新動向”、［online］、［平成２９年５月１１日検索］、インターネット〈URL：http://game.watch.impress.co.jp/docs/series/vrgaming/745831.html〉
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来、ユーザは仮想空間に展開されるオブジェクトを操作するにあたり、まず仮想空間上でオブジェクトの近くまで移動する必要があった。しかしながら、ユーザは、この移動作業を面倒と感じる場合がある。そのため、仮想空間においてユーザがより楽に操作できる技術が必要とされている。
【０００７】
本開示の目的は、例えば上記のような課題を解決するためになされたものであって、ユーザの仮想空間における体験をより豊かにする技術を提供することである。
【課題を解決するための手段】
【０００８】
ある実施形態に従うと、ヘッドマウントデバイスに仮想空間を提供するためにコンピュータで実行される方法が提供される。この方法は、仮想空間を定義するステップと、ヘッドマウントデバイスのユーザの操作を受け付け可能な１以上のオブジェクトを仮想空間に配置するステップと、ユーザの視線を検出するステップと、１以上のオブジェクトの中から、検出された視線により指定されるオブジェクトを特定するステップと、ユーザの四肢の少なくとも一部の動きを検出するステップと、ユーザの四肢の少なくとも一部の動きの検出結果に基づいて特定されたオブジェクトに対する操作を受け付けるステップとを備える。
【０００９】
開示された技術的特徴の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１０】
【図１】ＨＭＤシステムの構成の概略を表す図である。
【図２】ある局面に従うコンピュータのハードウェア構成の一例を表すブロック図である。
【図３】ある実施形態に従うＨＭＤに設定されるｕｖｗ視野座標系を概念的に表す模式図である。
【図４】ある実施形態に従う仮想空間を表現する一態様を概念的に表す模式図である。
【図５】ある実施形態に従うＨＭＤを装着するユーザの頭部を上から表した模式図である。
【図６】仮想空間において視認領域をＸ方向から見たＹＺ断面を表す図である。
【図７】仮想空間において視認領域をＹ方向から見たＸＺ断面を表す図である。
【図８】ある実施形態に従うコンピュータをモジュール構成として表わすブロック図である。
【図９】手をトラッキングする処理について説明するための図である。
【図１０】トラッキングモジュールの動作を説明するための図である。
【図１１】トラッキングデータのデータ構造の一例を表す図である。
【図１２】ＨＭＤシステムが実行する処理の一例を表わすフローチャートである。
【図１３】ユーザの視界画像を表す図である。
【図１４】図１３に示される視界画像に対応する仮想空間を表す図である。
【図１５】図１３において右手オブジェクトが開いた状態から閉じた状態に移行した後の視界画像を表す図である。
【図１６】ユーザの視線と四肢の一部の動きとに基づくユーザ操作を受け付ける処理を表すフローチャートである。
【図１７】触覚によるフィードバック処理を説明するための図である。
【図１８】内領域ＩＳと外領域ＯＳとを説明するための図である。
【図１９】図１８における視認領域に対応する視界画像を表す図である。
【図２０】ある実施形態に従うオブジェクト情報のデータ構造の一例を表す図である。
【図２１】コンピュータにおける画像処理負担を軽減するための一連の制御を説明するためのフローチャートである。
【図２２】ポインタオブジェクトを含む視界画像を表す図である。
【図２３】図２２に示される視界画像に対応する仮想空間を表す図である。
【図２４】仮想空間におけるポインタオブジェクトの大きさを制御する処理を表すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、この技術的思想の実施形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。なお、以下で説明される各実施形態は、適宜選択的に組み合わされてもよい。
【００１２】
［ＨＭＤシステムの構成］
図１を参照して、ＨＭＤ（Head-Mounted  Device）システム１００の構成について説明する。図１は、ＨＭＤシステム１００の構成の概略を表す。ＨＭＤシステム１００は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。
【００１３】
ＨＭＤシステム１００は、ＨＭＤ（Head-Mounted  Device）セット１０５Ａ，１０５Ｂ，１０５Ｃ，１０５Ｄと、ネットワーク１９とサーバ１５０とを含む。ＨＭＤセット１０５Ａ，１０５Ｂ，１０５Ｃ，１０５Ｄの各々は、ネットワーク１９を介してサーバ１５０と通信可能に構成される。以下、ＨＭＤセット１０５Ａ，１０５Ｂ，１０５Ｃ，１０５Ｄを総称して、ＨＭＤセット１０５とも言う。なお、ＨＭＤシステム１００を構成するＨＭＤセット１０５の数は、４つに限られず、３つ以下でも、５つ以上でもよい。
【００１４】
ＨＭＤセット１０５は、ＨＭＤ１１０と、ＨＭＤセンサ１２０と、コンピュータ２００とを備える。ＨＭＤ１１０は、モニタ１１２と、カメラ１１６と、スピーカ１１８と、マイク１１９と、注視センサ１４０とを含む。他の局面において、ＨＭＤ１１０は、センサ１１４をさらに備える。
【００１５】
ある局面において、コンピュータ２００は、インターネットその他のネットワーク１９に接続可能であり、ネットワーク１９に接続されているサーバ１５０その他のコンピュータ（例えば、他のＨＭＤセット１０５のコンピュータ）と通信可能である。
【００１６】
ＨＭＤ１１０は、ユーザ１９０の頭部に装着され、動作中に仮想空間をユーザ１９０に提供し得る。より具体的には、ＨＭＤ１１０は、右目用の画像および左目用の画像をモニタ１１２にそれぞれ表示する。ユーザ１９０の各目がそれぞれの画像を視認すると、ユーザ１９０は、両目の視差に基づき当該画像を３次元の画像として認識し得る。ＨＭＤ１１０は、モニタを備える所謂ヘッドマウントディスプレイと、スマートフォンその他のモニタを有する端末を装着可能なヘッドマウント機器のいずれをも含み得る。
【００１７】
モニタ１１２は、例えば、非透過型の表示装置として実現される。ある局面において、モニタ１１２は、ユーザ１９０の両目の前方に位置するようにＨＭＤ１１０の本体に配置されている。したがって、ユーザ１９０は、モニタ１１２に表示される３次元画像を視認すると、仮想空間に没入することができる。ある実施形態において、仮想空間は、例えば、背景、ユーザ１９０が操作可能なオブジェクト、ユーザ１９０が選択可能なメニューの画像を含む。ある実施形態において、モニタ１１２は、所謂スマートフォンその他の情報表示端末が備える液晶モニタまたは有機ＥＬ（Electro  Luminescence）モニタとして実現され得る。
【００１８】
他の局面において、モニタ１１２は、透過型の表示装置として実現され得る。この場合、ＨＭＤ１１０は、図１に示されるようにユーザ１９０の目を覆う密閉型ではなく、メガネ型のような開放型であり得る。透過型のモニタ１１２は、その透過率を調整することにより、一時的に非透過型の表示装置として機能し得る。また、モニタ１１２は、仮想空間を構成する画像の一部と、現実空間とを同時に表示する構成を含んでいてもよい。例えば、モニタ１１２は、ＨＭＤ１１０に搭載されたカメラで撮影した現実空間の画像を表示してもよいし、一部の透過率を高く設定することにより現実空間を視認可能にしてもよい。
【００１９】
ある局面において、モニタ１１２は、右目用の画像を表示するためのサブモニタと、左目用の画像を表示するためのサブモニタとを含み得る。別の局面において、モニタ１１２は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、モニタ１１２は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【００２０】
カメラ１１６は、対象物の深度情報を取得可能に構成される。一例として、カメラ１１６は、ＴＯＦ（Time  Of  Flight）方式に従い、対象物の深度情報を取得する。他の例として、カメラ１１６は、パターン照射方式に従い、対象物の深度情報を取得する。ある実施形態において、カメラ１１６は、対象物を２つ以上の異なる方向から撮影できるステレオカメラであり得る。また、カメラ１１６は、人間が不可視な赤外線カメラであり得る。カメラ１１６は、ＨＭＤ１１０に装着され、ユーザ１９０の身体の一部を撮影する。以下、一例として、カメラ１１６は、ユーザ１９０の手を撮影する。カメラ１１６は取得したユーザ１９０の手の深度情報をコンピュータ２００に出力する。
【００２１】
スピーカ１１８は、音声信号を音声に変換してユーザ１９０に出力する。マイク１１９は、ユーザ１９０の発話を電気信号である音声信号に変換してコンピュータ２００に出力する。なお、他の局面において、ＨＭＤ１１０は、スピーカ１１８に替えてイヤホンを備えるように構成されてもよい。
【００２２】
ＨＭＤセンサ１２０は、ＨＭＤ１１０の位置および傾きを検出する。この場合、ＨＭＤ１１０は、複数の光源（図示しない）を含む。各光源は例えば、赤外線を発するＬＥＤ（Light  Emitting  Diode）により実現される。ＨＭＤセンサ１２０は、各光源が発する光を検出して、ＨＭＤ１１０の位置および姿勢を検出するための公知のポジショントラッキング機能を有する。
【００２３】
他の局面において、コンピュータ２００は、ＨＭＤセンサ１２０の出力に替えてセンサ１１４の出力に基づいてＨＭＤ１１０の傾きを検出するように構成されてもよい。センサ１１４は、例えば、角速度センサ、加速度センサ、地磁気センサにより、またはこれらのセンサの組み合わせにより実現される。コンピュータ２００は、センサ１１４の出力に基づいて、ＨＭＤ１１０の傾きを検出する。一例として、センサ１１４が角速度センサである場合、角速度センサは、現実空間におけるＨＭＤ１１０の３軸周りの角速度を経時的に検出する。コンピュータ２００は、各角速度に基づいて、ＨＭＤ１１０の３軸周りの角度の各々の時間的変化を算出してＨＭＤ１１０の傾きを算出する。
【００２４】
注視センサ１４０は、ユーザ１９０の右目および左目の視線が向けられる方向（視線）を検出する。当該方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ１４０は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ１４０は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ１４０は、例えば、ユーザ１９０の右目および左目に赤外光を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ１４０は、検出した各回転角に基づいて、ユーザ１９０の視線を検知することができる。
【００２５】
サーバ１５０は、コンピュータ２００にプログラムを送信し得る。別の局面において、サーバ１５０は、他のユーザによって使用されるＨＭＤに仮想現実を提供するための他のコンピュータ２００と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行なう場合、各コンピュータ２００は、各ユーザの動作に基づく信号を他のコンピュータ２００と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。
【００２６】
［ハードウェア構成］
図２を参照して、本実施形態に係るコンピュータ２００について説明する。図２は、ある局面に従うコンピュータ２００のハードウェア構成の一例を表すブロック図である。コンピュータ２００は、主たる構成要素として、プロセッサ１０と、メモリ１１と、ストレージ１２と、入出力インターフェイス１３と、通信インターフェイス１４とを備える。各構成要素は、それぞれ、バス１５に接続されている。
【００２７】
プロセッサ１０は、コンピュータ２００に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ１１またはストレージ１２に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ１０は、ＣＰＵ（Central  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）アドレス）などをさらに保持してもよい。
【００８１】
メモリモジュール２４０に格納されているデータおよびプログラムは、ＨＭＤ１１０のユーザ１９０によって入力される。あるいは、プロセッサ１０が、当該コンテンツを提供する事業者が運営するコンピュータ（例えば、サーバ１５０）からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール２４０に格納する。
【００８２】
通信制御モジュール２５０は、ネットワーク１９を介して、サーバ１５０その他の情報通信装置と通信し得る。
【００８３】
ある局面において、表示制御モジュール２２０および仮想空間制御モジュール２３０の一部は、例えば、ユニティテクノロジーズ社によって提供されるＵｎｉｔｙ（登録商標）を用いて実現され得る。別の局面において、表示制御モジュール２２０および仮想空間制御モジュール２３０は、各処理を実現する回路素子の組み合わせとしても実現され得る。
【００８４】
コンピュータ２００における処理は、ハードウェアと、プロセッサ１０により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール２４０に予め格納されている場合がある。また、ソフトウェアは、ＣＤ−ＲＯＭその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール２５０を介してサーバ１５０その他のコンピュータからダウンロードされた後、記憶モジュールに一旦格納される。そのソフトウェアは、プロセッサ１０によって記憶モジュールから読み出され、実行可能なプログラムの形式でＲＡＭに格納される。プロセッサ１０は、そのプログラムを実行する。
【００８５】
［手のトラッキング］
以下、図９〜図１１を参照して、手の動きをトラッキングする処理について説明する。図９は、手をトラッキングする処理について説明するための図である。
【００８６】
図９を参照して、ユーザ１９０は、現実空間においてＨＭＤ１１０を装着している。ＨＭＤ１１０に設けられたカメラ１１６は、ＨＭＤ１１０の前方の空間９００に含まれる物体の深度情報を取得する。図９に示される例において、カメラ１１６は、空間９００に含まれるユーザ１９０の手の深度情報を取得する。
【００８７】
トラッキングモジュール２２６は、この深度情報に基づき、手の位置情報（以下、「トラッキングデータ」とも称する）を生成する。カメラ１１６はＨＭＤ１１０に搭載される。そのため、トラッキングデータはＨＭＤ１１０に設定されるｕｖｗ視野座標系における座標値を示す。
【００８８】
図１０は、トラッキングモジュール２２６の動作を説明するための図である。ある局面において、トラッキングモジュール２２６は、カメラ１１６から入力される深度情報に基づいて、ユーザ１９０の手の骨の動きをトラッキングする。図１２に示される例において、トラッキングモジュール２２６は、ユーザ１９０の手の関節ａ、ｂ、ｃ・・・、ｘの各位置をそれぞれ検出する。
【００８９】
トラッキングモジュール２２６は、関節ａ〜ｘの位置関係に基づいて、ユーザ１９０の手の形状（指の動き）を認識可能に構成される。トラッキングモジュール２２６は、例えば、ユーザ１９０の手が指を指していること、手が開いていること、手が閉じていること、手が何かをつまむ動作をしていること、手がひねられていること、手が握手の形状をしていることなどを認識できる。トラッキングモジュール２２６はさらに、関節ａ〜ｄと、その他の関節との位置関係により、認識している手が左手であるか右手であるかを判断できる。このようなカメラ１１６およびトラッキングモジュール２２６は、例えば、ＬｅａｐＭｏｔｉｏｎ社によって提供されるＬｅａｐＭｏｔｉｏｎ（登録商標）によって実現され得る。
【００９０】
図１１は、トラッキングデータのデータ構造の一例を表す。トラッキングモジュール２２６は、関節ａ〜ｘそれぞれについてのｕｖｗ視野座標系についての座標値（トラッキングデータ）を取得する。
【００９１】
［コンピュータ２００の制御構造］
図１２を参照して、本実施形態に係るコンピュータ２００の制御構造について説明する。図１２は、ＨＭＤシステム１００が実行する処理の一例を表わすフローチャートである。
【００９２】
ステップＳ１２０５において、コンピュータ２００のプロセッサ１０は、仮想空間定義モジュール２３１として、仮想空間２を定義する。
【００９３】
ステップＳ１２１０において、プロセッサ１０は、パノラマ画像２２を用いて仮想空間２を構成する。より具体的には、プロセッサ１０は仮想空間２を構成する各メッシュにパノラマ画像２２の部分画像を展開する。
【００９４】
ステップＳ１２２０において、プロセッサ１０は、仮想カメラ１および操作オブジェクトを含む各種オブジェクトを仮想空間２に配置する。このとき、プロセッサ１０は、メモリのワーク領域において、仮想カメラ１を仮想空間２において予め規定された中心２１に配置する。
【００９５】
ステップＳ１２３０において、プロセッサ１０は、視界画像生成モジュール２２３として、初期の視界画像２６（パノラマ画像２２の一部）を表示するための視界画像データを生成する。生成された視界画像データは、通信制御モジュール２５０によってＨＭＤ１１０に送信される。
【００９６】
ステップＳ１２３２において、ＨＭＤ１１０のモニタ１１２は、コンピュータ２００から受信した信号に基づいて、視界画像２６を表示する。これにより、ＨＭＤ１１０を装着したユーザ１９０は、仮想空間２を認識する。
【００９７】
ステップＳ１２３４において、ＨＭＤセンサ１２０は、ＨＭＤ１１０が出力する複数の赤外線光に基づいて、ＨＭＤ１１０の位置および傾き（ユーザ１９０の動き）を検知する。検知結果は、動き検知データとして、コンピュータ２００に送信される。
【００９８】
ステップＳ１２４０において、プロセッサ１０は仮想カメラ制御モジュール２２１として、ＨＭＤセンサ１２０から入力された動き検知データに基づいて、仮想カメラ１の位置および傾きを変更する。これにより、仮想カメラ１の位置および傾き（撮影方向５）は、ユーザ１９０の頭の動きに連動して更新される。視界領域決定モジュール２２２は、変更後の仮想カメラ１の位置および傾きに応じて視認領域２３を規定する。
【００９９】
ステップＳ１２４６において、カメラ１１６は、ユーザ１９０の手の深度情報を検出してコンピュータ２００に送信する。
【０１００】
ステップＳ１２５０において、プロセッサ１０はトラッキングモジュール２２６として受信した深度情報に基づいてｕｖｗ視野座標系におけるユーザ１９０の手の位置を検出する。プロセッサ１０は操作オブジェクト制御モジュール２３３として、検出したユーザ１９０の手の位置に連動するように操作オブジェクトを移動させる。このとき、操作オブジェクトが他のオブジェクトと接触するなどして、プロセッサ１０が他のオブジェクトに対するユーザ操作を受け付けた場合、操作に対する予め定められた処理を実行する。
【０１０１】
ステップＳ１２６０において、プロセッサ１０は、視界画像生成モジュール２２３として、仮想カメラ１が撮影する視界画像２６を表示するための視界画像データを生成し、生成した視界画像データをＨＭＤ１１０に出力する。
【０１０２】
ステップＳ１２６２において、ＨＭＤ１１０のモニタ１１２は、受信した視界画像データに基づいて、更新後の視界画像を表示する。これにより、仮想空間２におけるユーザの視界が更新される。
【０１０３】
［ユーザの操作］
次に、図１３〜図１５を用いてユーザ１９０の視線とユーザ１９０の手の動きとに基づく仮想空間２における操作について説明する。
【０１０４】
図１３は、ユーザの視界画像１３００を表す。図１４は、図１３に示される視界画像１３００に対応する仮想空間２を表す。
【０１０５】
図１３に示される視界画像１３００は、図１４に示される仮想カメラ１の撮影範囲である視認領域２３に対応する。視界画像１３００は、左手オブジェクト１３１０と、右手オブジェクト１３２０と、円柱オブジェクト１３３０と、ボックスオブジェクト１３４０とを含む。
【０１０６】
図１４を参照して、視線１４１０は、視線検出モジュール２２５により検出された仮想空間２におけるユーザ１９０の視線を表す。図１４において、ユーザ１９０の視線１４１０とボックスオブジェクト１３４０とは交わっている。換言すれば、視線１４１０は、ボックスオブジェクト１３４０に衝突しているとも言える。
【０１０７】
ポインタオブジェクト１３５０は、視線１４１０がボックスオブジェクト１３４０に衝突する衝突点に配置される。仮想空間制御モジュール２３０は、視線１４１０が衝突しているオブジェクト（ボックスオブジェクト１３４０）を、ユーザ１９０によって指定されている状態として扱う。
【０１０８】
ある局面において、仮想空間制御モジュール２３０は、ボックスオブジェクト１３４０の表示態様（例えば、色、模様など）を、視線１４１０との衝突前後で変更してもよい。これにより、ユーザ１９０は、ボックスオブジェクト１３４０がユーザ１９０によって指定されているか否かを容易に認識できる。
【０１０９】
仮想空間制御モジュール２３０は、ユーザ１９０の四肢の少なくとも一部の動きに基づいて、指定されたオブジェクトに対するユーザ１９０の操作を受け付ける。以下では一例として、仮想空間制御モジュール２３０はユーザ１９０の手の形状に基づいて指定されたボックスオブジェクト１３４０に対する操作を受け付ける。
【０１１０】
図１３および図１４において、右手オブジェクト１３２０は開いている。つまり、現実空間におけるユーザ１９０の右手も開いている。また、右手オブジェクト１３２０の手のひらはボックスオブジェクト１３４０に向けられている。
【０１１１】
ある局面において、トラッキングモジュール２２６は、トラッキングデータに基づいてユーザ１９０の手が開いていることを認識すると、現実空間におけるユーザ１９０の手のひらに対する法線を検出する。仮想空間制御モジュール２３０は、トラッキングモジュール２２６によって検出された法線に基づいて、仮想空間２に配置される右手オブジェクト１３２０の手のひらに対する法線１４２０を検出する。図１４に示される例において、視線１４１０と法線１４２０とは略同じ方向を向いている。
【０１１２】
図１５は、図１３において右手オブジェクト１３２０が開いた状態から閉じた状態に移行した後の視界画像１５００を表す。
【０１１３】
トラッキングモジュール２２６は、トラッキングデータに基づいてユーザ１９０の右手が開いた状態から閉じた状態に移行したことを検出する。仮想空間制御モジュール２３０は、視線１４１０と法線１４２０とが略同じ方向である状態から、ユーザ１９０の右手が開いた状態から閉じた状態に移行したことに応じて、指定中のボックスオブジェクト１３４０に対する操作を受け付ける。
【０１１４】
図１５に示される例において、仮想空間制御モジュール２３０は、ボックスオブジェクト１３４０を右手オブジェクト１３２０に向けて移動させる。上記によれば、ユーザ１９０は、仮想空間２において操作したいオブジェクトに近づかなくとも、視線と手の動きによって当該オブジェクトに対する操作を行なうことができる。
【０１１５】
（制御構造）
図１６は、ユーザ１９０の視線と四肢の一部の動きとに基づくユーザ操作を受け付ける処理を表すフローチャートである。図１６に示される処理は、プロセッサ１０がストレージ１２に格納される制御プログラムを読み込んで実行することにより実現される。
【０１１６】
ステップＳ１６０５において、プロセッサ１０は仮想空間２を定義する。ステップＳ１６１０において、プロセッサ１０は仮想オブジェクト生成モジュール２３２として、２種類のオブジェクトを配置する。具体的には、仮想オブジェクト生成モジュール２３２は、ユーザ１９０の操作を受け付け可能に構成されるオブジェクトと、ユーザの操作を受け付け不能に構成されるオブジェクトとを配置する。以下、ユーザ１９０の操作を受け付け可能に構成されるオブジェクトを「第１種オブジェクト」とも言う。また、ユーザ１９０の操作を受け付け可能に構成されるオブジェクトを「第２種オブジェクト」とも言う。
【０１１７】
ある局面において、第１種オブジェクトは視線１４１０と衝突し、第２種オブジェクトは視線１４１０と衝突しないように構成される。つまり、ポインタオブジェクト１３５０は第１種オブジェクトの表面に配置されるが、第２種オブジェクトの表面には配置されない。ユーザ１９０は、ポインタオブジェクト１３５０により、視線１４１０が注がれるオブジェクトが操作可能であるか否かを認識できる。第２種オブジェクトは、例えば、仮想カメラ１、左手オブジェクト１３１０、右手オブジェクト１３２０、およびアバターオブジェクトを含む。アバターオブジェクトは、ユーザ１９０または他のコンピュータ２００のユーザに対応する。
【０１１８】
なお、図２０で後述するように、オブジェクト情報２４２は、各オブジェクトを描画するためのデータと、オブジェクトが視線１４１０と衝突するか否かを規定する情報とを関連付けて保持する。
【０１１９】
ステップＳ１６２０において、プロセッサ１０は視線検出モジュール２２５として、仮想空間２におけるユーザ１９０の視線１４１０を検出する。
【０１２０】
ステップＳ１６２５において、プロセッサ１０は、仮想空間２に配置された検出した視線１４１０と衝突する（視線１４１０によって指定される）第１種オブジェクトを特定する。
【０１２１】
ステップＳ１６３０において、プロセッサ１０はトラッキングモジュール２２６として、ユーザ１９０の手の動きを表すトラッキングデータを検出する。
【０１２２】
ステップＳ１６３５において、プロセッサ１０は、トラッキングデータに基づいて、ユーザ１９０の手が開いているか否かを判断する。プロセッサ１０は、ユーザ１９０の手が開いていると判断した場合（ステップＳ１６３５でＹＥＳ）、処理をステップＳ１６４０に進める。一方、プロセッサ１０は、ユーザ１９０の手が閉じていると判断した場合（ステップＳ１６３５でＮＯ）、処理をステップＳ１６２０に戻す。
【０１２３】
ステップＳ１６４０において、プロセッサ１０は、仮想空間２に配置される手オブジェクトの手のひらに対する法線１４２０を検出する。
【０１２４】
ステップＳ１６４５において、プロセッサ１０は、視線１４１０を再び検出し、検出した視線１４１０がステップＳ１６２５で特定した第１種オブジェクト（指定中のオブジェクト）から外れたか否かを判断する。プロセッサ１０は、視線１４１０が特定した第１種オブジェクトから外れたと判断した場合（ステップＳ１６４５でＹＥＳ）、処理をステップＳ１６２０に戻す。そうでない場合（ステップＳ１６４５でＮＯ）、プロセッサ１０は処理をステップＳ１６５０に進める。
【０１２５】
ステップＳ１６５０において、プロセッサ１０は、視線１４１０と法線１４２０とが略同じ方向であるか否かを判断する。一例として、プロセッサ１０は、視線１４１０のベクトルと法線１４２０のベクトルとが成す角度が１０°未満である場合に、これらが同じ方向であると判断する。プロセッサ１０は、視線１４１０と法線１４２０とが同じ方向であると判断した場合（ステップＳ１６５０でＹＥＳ）、処理をステップＳ１６５５に進める。そうでない場合（ステップＳ１６５０でＮＯ）、プロセッサ１０は処理をステップＳ１６４５に戻す。
【０１２６】
ステップＳ１６５５において、プロセッサ１０は、トラッキングデータを再び検出し、ステップＳ１６３５で開いていたユーザ１９０の手が閉じたか否かを判断する。プロセッサ１０は、ユーザ１９０の手が閉じていると判断した場合（ステップＳ１６５５でＹＥＳ）、処理をステップＳ１６６０に進める。そうでない場合（ステップＳ１６５５でＮＯ）、プロセッサ１０は処理をステップＳ１６４５に戻す。
【０１２７】
ステップＳ１６６０において、プロセッサ１０は仮想空間制御モジュール２３０として、特定された第１種オブジェクトを法線１４２０に対応する手オブジェクトの方向に向けて移動させる。その後、プロセッサ１０は処理をステップＳ１６２０に戻す。
【０１２８】
他の局面において、プロセッサ１０は、ステップＳ１６５５において、手オブジェクトが、特定された第１種オブジェクトから離れる方向に移動したことを検出した場合に、ステップＳ１６６０の処理を実行するように構成されてもよい。
【０１２９】
上記の例では、仮想空間制御モジュール２３０は、指定されたオブジェクトを仮想空間２におけるユーザ１９０の視座に向けて移動させるように構成されているが、当該オブジェクトの移動方向はこれに限られない。例えば、仮想空間制御モジュール２３０は、ユーザ１９０が指定されたオブジェクトの方向に向けて腕を突き出す動作（パンチ）または足を蹴り上げる動作（キック）を行なったことを検出する。仮想空間制御モジュール２３０は、この検出結果に応じて、当該オブジェクトを仮想空間２におけるユーザ１９０の視座とは逆方向に移動させてもよい。
【０１３０】
（触覚によるフィードバック）
上記の例において、ユーザ１９０は、空間９００で手を動かすことによってオブジェクトに対する操作をコンピュータ２００に入力する。このとき、ユーザ１９０は、視覚または聴覚により当該操作がコンピュータ２００に入力されたことを認識する。例えば、コンピュータ２００は、当該操作が入力されたことに応じて報知音をスピーカ１１８から出力する。次に、図１７を用いてユーザ１９０に対して触覚による操作のフィードバックを与えるための処理について説明する。
【０１３１】
図１７は、触覚によるフィードバック処理を説明するための図である。図１７に示される視界画像１７００は、ＵＩ１７１０を含む。ＵＩ１７１０は、チュートリアルボタン１７２０と、セッティングボタン１７３０と、戻るボタン１７４０と、終了ボタン１７５０とを含む。ある局面において、ユーザ１９０は、ＵＩ１７１０を操作して、仮想空間２における設定を変更する。
【０１３２】
ユーザ１９０は、視線１４１０と両手の動きとに基づいてＵＩ１７１０を操作する。一例として、ユーザ１９０がセッティングボタン１７３０を操作する例について説明する。
【０１３３】
ユーザ１９０は、視線１４１０をセッティングボタン１７３０に注ぐ。これにより、視界画像１７００においてセッティングボタン１７３０の上にポインタオブジェクト１３５０が表示されている。
【０１３４】
ユーザ１９０は、セッティングボタン１７３０に視線１４１０を注いでいる状態において、両手のうち一方の手を、他方の手に接触させる。図１７に示される例において、ユーザ１９０は、右手の人差し指で左手の甲をタッチしている。そのため、仮想空間２において右手オブジェクト１３２０の人差し指が左手１３１０オブジェクトの甲をタッチしている。
【０１３５】
仮想空間制御モジュール２３０は、左手オブジェクト１３１０と右手オブジェクト１３２０とが接触したことに応じて、指定されたオブジェクト（セッティングボタン１７３０）に対するユーザ１９０の操作を受け付ける。
【０１３６】
当該構成によれば、ユーザ１９０は、仮想空間２においてセッティングボタン１７３０に近づかなくとも、当該ボタンに対する操作をコンピュータ２００に対して入力できる。さらに、左手オブジェクト１３１０と右手オブジェクト１３２０との接触が操作のトリガとなる。つまり、現実空間におけるユーザ１９０の左手と右手との接触が操作のトリガとなる。これにより、ユーザ１９０は、触覚による操作のフィードバックを得ることにより、セッティングボタン１７３０が確実に操作されたことを認識できる。
【０１３７】
また、仮にユーザ１９０がセッティングボタン１７３０を左手オブジェクト１３１０または右手オブジェクト１３２０で操作しようとした場合、ユーザ１９０は現実空間において手を大きく動かす必要がある。一方、上記の制御によれば、ユーザ１９０は両手を接触させるだけで、セッティングボタン１７３０に対する操作をコンピュータ２００に入力できる。
【０１３８】
なお、上記の例において、指定されたオブジェクトに対する操作のトリガは、ユーザ１９０の両手が接触することであったが、他の局面において、ユーザ１９０の身体の第１部分（例えば手）が身体の第２部分（例えば足、腕）に接触することであってもよい。
【０１３９】
［処理負担を軽減するための制御］
一般的にコンピュータ２００は、ＨＭＤ１１０に仮想空間を提供するにあたり、高い画質の画像を高いフレームレートでモニタ１１２に出力する。その理由は、ユーザ１９０が低い画質の画像を認識することによる仮想空間２に対する没入感の低下を抑制するためである。
【０１４０】
しかしながら、上記の処理はコンピュータ２００に多大な負担を要する。その結果、コンピュータ２００の性能によっては、モニタ１１２に出力される画像がコマ落ちする場合があった。この場合、やはりユーザ１９０の仮想空間２に対する没入感が低下してしまう。
【０１４１】
そこで、ある実施形態に従うコンピュータ２００は、上記の課題を解決するために、ユーザ１９０の仮想空間２に対する没入感の低下を抑制しつつ、処理負担を軽減するための制御を実行する。以下、この制御内容について具体的に説明する。
【０１４２】
図１８は、内領域ＩＳと外領域ＯＳとを説明するための図である。図１９は、図１８における視認領域２３に対応する視界画像１９００を表す。
【０１４３】
図１８を参照して、仮想カメラ１の撮影範囲である視認領域２３に、ボックスオブジェクト１８１０、１８２０、およびアバターオブジェクト１８３０が配置されている。アバターオブジェクト１８３０は、他のコンピュータ２００のユーザ（以下「他のユーザ」とも言う）に対応する。ユーザ１９０は、アバターオブジェクト１８３０を介して仮想空間２上で他のユーザとコミュニケーションを図ることができる。
【０１４４】
図１８および図１９に示される例において、ユーザ１９０の視線１４１０と、ボックスオブジェクト１８１０とは交わっている。そのため、ポインタオブジェクト１３５０がボックスオブジェクト１８１０の上に配置されている。
【０１４５】
ある局面において、プロセッサ１０は、ポインタオブジェクト１３５０の位置（つまり、視線１４１０がボックスオブジェクト１８１０に交わる交点）を中心とする球状の内領域ＩＳを設定する。内領域ＩＳの外側の領域を外領域ＯＳと定義する。
【０１４６】
プロセッサ１０は、モニタ１１２に出力する視界画像２６において、内領域ＩＳに対応する画像の画質よりも、外領域ＯＳに対応する画像の画質を低くする。人の目に設けられた網膜は場所によって解像度が異なる。具体的には、網膜の中央が最も解像度が高く、網膜の中央から離れる程に解像度が低下する。そのため、外領域ＯＳに対応する画像の画質を低くした場合であってもユーザ１９０は違和感を覚えず、ユーザ１９０の仮想空間２への没入感の低下は起こらない。これにより、コンピュータ２００は、ユーザ１９０の仮想空間２に対する没入感の低下を抑制しつつ、画像処理負担を軽減できる。なお、内領域ＩＳの大きさは、ユーザ１９０が違和感を覚えない範囲に設定される。
【０１４７】
一例としてプロセッサ１０は、内領域ＩＳに含まれるオブジェクトを高画質に描画し、外領域ＯＳに含まれるオブジェクトを低画質に描画する。図１８および図１９に示される例において、ボックスオブジェクト１８１０が内領域ＩＳに含まれ、ボックスオブジェクト１８２０およびアバターオブジェクト１８３０が外領域ＯＳに含まれる。
【０１４８】
プロセッサ１０は、内領域ＩＳに含まれるボックスオブジェクト１８１０を高画質に描画する。ある局面において、プロセッサ１０は、ポリゴン数の多い描画データを用いてボックスオブジェクト１８１０を描画する。他の局面において、プロセッサ１０は、テクスチャ解像度が高い描画データを用いてボックスオブジェクト１８１０を描画する。
【０１４９】
ポリゴンは、オブジェクトの曲面を表現する際に用いられる多角形（例えば３角形）である。オブジェクトは、ポリゴン数が多いほど、滑らかに表現される。テクスチャは、オブジェクトの質感（例えば、光沢）を表現するために当該オブジェクトの表面に張り付けられる画像である。オブジェクトは、テクスチャの解像度が高いほど、より精細に表現される。
【０１５０】
さらに他の局面において、プロセッサ１０は、処理負担が高いシェーダを用いてボックスオブジェクト１８１０を描画する。シェーダは、オブジェクトの陰影処理を行なうプログラムである。一般的に、オブジェクトの陰影は、シェーダの処理負担が高いほど、より精細に表現される。
【０１５１】
一方、プロセッサ１０は、外領域ＯＳに含まれるボックスオブジェクト１８２０およびアバターオブジェクト１８３０を低画質に描画する。ある局面において、プロセッサ１０は、ポリゴン数の少ない描画データを用いてこれらのオブジェクトを描画する。他の局面において、プロセッサ１０は、テクスチャ解像度が低い描画データを用いてこれらのオブジェクトを描画する。さらに他の局面において、プロセッサ１０は、処理負担が低いシェーダを用いてこれらのオブジェクトの陰影を描画する。
【０１５２】
なお、モニタ１１２に表示される視界画像１９００において、内領域ＩＳに対応する画像の解像度と、外領域ＯＳに対応する画像の解像度とは同じ解像度である。
【０１５３】
ある実施形態において、ストレージ１２は、仮想空間２に配置される各オブジェクトについて、内領域ＩＳに含まれる場合の描画データと、外領域ＯＳに含まれる場合の描画データとをそれぞれ記憶する。
【０１５４】
図２０は、ある実施形態に従うオブジェクト情報２４２のデータ構造の一例を表す。図２０を参照して、オブジェクト情報２４２は、各オブジェクトごとに、高画質用描画データと、低画質用描画データと、衝突判定とを関連付けて記憶する。
【０１５５】
高画質用描画データは、オブジェクトが内領域ＩＳに含まれる場合に用いられる。一方、低画質用描画データは、オブジェクトが外領域ＯＳに含まれる場合に用いられる。衝突判定は、オブジェクトが視線１４１０と衝突するか否かを表す。上記説明した通り、第１種オブジェクトは視線１４１０と衝突し、第２種オブジェクトは視線１４１０と衝突しない。
【０１５６】
あるオブジェクトについての低画質用描画データのポリゴン数は、高画質用描画データのポリゴン数よりも少ない。また、あるオブジェクトについての低画質用描画データのテクスチャ解像度は、高画質用描画データのテクスチャ解像度よりも低い。
【０１５７】
一例として、ボックスオブジェクト１８１０を描画するためのデータとして、ポリゴン数が「多く」かつテクスチャ解像度が「高い」高画質用描画データと、ポリゴン数が「少なく」かつテクスチャ解像度が「高い」低画質用描画データとがストレージ１２に記憶されている。
【０１５８】
（制御構造）
図２１は、コンピュータ２００における画像処理負担を軽減するための一連の制御を説明するためのフローチャートである。図２１に示される各処理は、プロセッサ１０がストレージ１２に格納される制御プログラムを読み込んで実行することにより実現される。
【０１５９】
ステップＳ２１１０において、プロセッサ１０は仮想空間定義モジュール２３１として、仮想空間２を定義する。
【０１６０】
ステップＳ２１２０において、プロセッサ１０は仮想オブジェクト生成モジュール２３２として、仮想空間２に第１種および第２種オブジェクトを配置する（各オブジェクトが仮想空間２において占める領域を定義する）。第２種オブジェクトは、仮想カメラ１を含む。
【０１６１】
ステップＳ２１３０において、プロセッサ１０は仮想カメラ１の位置および傾き（撮影方向５）に基づいて、視認領域２３を特定する。
【０１６２】
ステップＳ２１４０において、プロセッサ１０は視線検出モジュール２２５として、仮想空間２におけるユーザ１９０の視線１４１０を検出する。
【０１６３】
ステップＳ２１５０において、プロセッサ１０は検出した視線１４１０と第１種オブジェクトとが交わる交点（ポインタオブジェクト１３５０の位置）を検出する。プロセッサ１０はさらに、検出した交点を中心とする内領域ＩＳと、その外側の外領域ＯＳを設定する。
【０１６４】
なお、他の局面において、プロセッサ１０は、オブジェクトの種類（第１種／第２種）に関わらず、視線１４１０が最初に交わるオブジェクトと視線１４１０との交点検出し、この交点を中心として内領域ＩＳと外領域ＯＳとを設定するように構成されてもよい。係る場合、実際にユーザ１９０の視線１４１０が注がれているオブジェクトを中心として上記領域の設定がなされる。
【０１６５】
ステップＳ２１６０において、プロセッサ１０は仮想空間制御モジュール２３０として、特定した視認領域２３に配置されるオブジェクトのうち、外領域ＯＳに含まれるオブジェクトを低画質に描画し、内領域ＩＳに含まれるオブジェクトを高画質に描画する。一例として、プロセッサ１０は、オブジェクト情報２４２を参照して、外領域ＯＳに含まれるオブジェクトを低画質用描画データを用いて描画し、内領域ＩＳに含まれるオブジェクトを高画質用描画データを用いて描画する。
【０１６６】
ステップＳ２１７０において、プロセッサ１０は視界画像生成モジュール２２３として、視認領域２３に対応する視界画像２６を生成する。
【０１６７】
ステップＳ２１８０において、プロセッサ１０は、生成した視界画像２６をモニタ１１２に出力する。その後、プロセッサ１０はステップＳ２１３０の処理を再び実行する。
【０１６８】
上記によれば、ある実施形態に従うコンピュータ２００は、外領域ＯＳに配置されるオブジェクトの画像処理負担を軽減できる。その結果、コンピュータ２００は、性能が低い場合であっても、ユーザ１９０の仮想空間２に対する没入感の低下を抑制できる。
【０１６９】
なお、上記の例において、コンピュータ２００は、内領域ＩＳおよび外領域ＯＳの２つの領域を設定しているが、他の局面において、画質が異なる３つ以上の領域を設定しても良い。
【０１７０】
［ポインタオブジェクトの大きさの制御］
次に、図２２を用いてポインタオブジェクト１３５０の大きさを制御する処理について説明する。
【０１７１】
図２２は、ポインタオブジェクト１３５０を含む視界画像２２００を表す。図２３は、図２２に示される視界画像２２００に対応する仮想空間２を表す。
【０１７２】
視界画像２２００は、視認領域２３に対応する。視認領域２３には、円柱オブジェクト１３３０と、ボックスオブジェクト１３４０と、木オブジェクト２２１０とが配置されている。
【０１７３】
木オブジェクト２２１０は、円柱オブジェクト１３３０およびボックスオブジェクト１３４０よりも、仮想カメラ１に近い位置に配置されている。
【０１７４】
仮に仮想空間２におけるポインタオブジェクト１３５０の大きさが一定である場合、視界画像２２００におけるポインタオブジェクト１３５０の大きさは、ポインタオブジェクト１３５０が仮想カメラ１に近いほど大きくなる。
【０１７５】
視界画像２２００に示されるように、木オブジェクト２２１０の上に配置されるポインタオブジェクト１３５０は、ボックスオブジェクト１３４０の上に配置されるポインタオブジェクト１３５０よりも大きい。
【０１７６】
視界画像２２００に示されるように、仮想カメラ１に近いポインタオブジェクト１３５０は、ユーザ１９０にとって邪魔である。一方、ユーザ１９０は、仮想カメラ１から遠いポインタオブジェクト１３５０を視認しづらい。
【０１７７】
上記のような課題を解決するために、ある実施形態に従うコンピュータ２００は、ポインタオブジェクト１３５０と仮想カメラ１との間隔ＤＩＳを算出し、間隔ＤＩＳに基づいて、ポインタオブジェクト１３５０の大きさを制御する。一例として、コンピュータ２００は、間隔ＤＩＳが狭いほどポインタオブジェクト１３５０の大きさを小さくする。より具体的には、コンピュータ２００は、ユーザ１９０が視認する視界画像においてポインタオブジェクト１３５０の大きさが常に一定になるように、仮想空間２におけるポインタオブジェクト１３５０の大きさを制御する。
【０１７８】
（制御構造）
図２４は、仮想空間２におけるポインタオブジェクト１３５０の大きさを制御する処理を表すフローチャートである。図２１に示される各処理は、プロセッサ１０がストレージ１２に格納される制御プログラムを読み込んで実行することにより実現される。なお、図２４に示される処理のうち上述の処理と同じ処理については同じ符号を付している。そのため、その処理についての説明は繰り返さない。
【０１７９】
ステップＳ２４０５において、プロセッサ１０は、検出した視線１４１０と第１種オブジェクトとが交わる交点を検出する。
【０１８０】
ステップＳ２４１０において、プロセッサ１０は、仮想空間２におけるユーザ１９０の視座（つまり、仮想カメラ１の位置）と、検出した交点との間隔ＤＩＳを算出する。
【０１８１】
ステップＳ２４２０において、プロセッサ１０は、算出した間隔ＤＩＳに、予め定められた値（例えば、ｔａｎ５°）を乗じた値（ピクセル数）を、ポインタオブジェクト１３５０の大きさとして設定する。
【０１８２】
ステップＳ２４３０において、プロセッサ１０は、設定した大きさに従うポインタオブジェクト１３５０を交点に配置する。
【０１８３】
ステップＳ２４４０において、プロセッサ１０は視界画像生成モジュール２２３として、視界画像を生成してモニタ１１２に出力する。その後、プロセッサ１０はステップＳ１６２０の処理を再び実行する。
【０１８４】
上記によれば、ユーザ１９０が視認する視界画像におけるポインタオブジェクト１３５０の大きさは、間隔ＤＩＳによらず常に一定になる。これにより、ある実施形態に従うコンピュータ２００は、ポインタオブジェクト１３５０の大きさが変更されることによるユーザ１９０の仮想空間２に対する没入感の低下を抑制できる。
【０１８５】
［構成］
以上に開示された技術的特徴は、以下のように要約され得る。
【０１８６】
（構成１）  ある実施形態に従うと、ＨＭＤ１１０に仮想空間２を提供するためにコンピュータ２００で実行されるプログラムが提供される。このプログラムはコンピュータ２００に、仮想空間２を定義するステップ（Ｓ１６０５）と、ＨＭＤ１１０のユーザ１９０の操作を受け付け可能な１以上のオブジェクトを仮想空間２に配置するステップ（Ｓ１６１０）と、ユーザ１９０の視線１４１０を検出するステップ（Ｓ１６２０）と、１以上のオブジェクトの中から、検出された視線１４１０により指定されるオブジェクトを特定するステップ（Ｓ１６２５）と、ユーザ１９０の四肢の少なくとも一部の動きを検出するステップ（Ｓ１６３０）と、ユーザ１９０の四肢の少なくとも一部の動きの検出結果に基づいて特定されたオブジェクトに対する操作を受け付けるステップ（Ｓ１６６０）とを実行させる。
【０１８７】
（構成２）  （構成１）において、ユーザ１９０の四肢の少なくとも一部は、ユーザ１９０の手を含む。操作を受け付けるステップは、ユーザ１９０の手の形状に応じて操作を受け付けること（Ｓ１６３５、Ｓ１６５５）を含む。
【０１８８】
（構成３）  （構成２）において、動きを検出するステップは、ユーザ１９０の手が開いているとき（Ｓ１６３５でＹＥＳ）に当該手のひらに対する法線を検出するステップ（Ｓ１６４０）を含む。ユーザ１９０の手の形状に応じて操作を受け付けることは、法線と視線１４１０とが略同じ方向である状態（Ｓ１６５０でＹＥＳ）からユーザ１９０の手が閉じた状態（Ｓ１６５５でＹＥＳ）に変化したことに応じて、操作を受け付けることを含む。
【０１８９】
（構成４）  （構成１）において、動きを検出するステップは、ユーザ１９０の四肢の第１部分の動きを検出するステップと、ユーザ１９０の四肢の第２部分の動きを検出するステップとを含み、操作を受け付けるステップは、第１部分と第２部分とが接触したことに基づいて操作を受け付けること（図１７）を含む。
【０１９０】
（構成５）  （構成１）〜（構成４）のいずれかに従うプログラムは、検出された視線１４１０とオブジェクトとが交わる交点にポインタオブジェクト１３５０を配置するステップ（Ｓ２４３０）と、仮想空間２におけるユーザ１９０の視座と交点との間隔ＤＩＳを算出するステップ（Ｓ２４１０）と、算出された間隔ＤＩＳが狭いほどポインタオブジェクト１３５０の大きさを小さくするステップとをさらに備える。
【０１９１】
（構成６）  （構成５）において、ポインタオブジェクト１３５０の大きさを小さくするステップは、算出された間隔ＤＩＳに予め定められた値を乗じた値に基づいて、ポインタオブジェクト１３５０の大きさを設定すること（Ｓ２４２０）を含む。
【０１９２】
（構成７）  （構成１）〜（構成６）のいずれかに従うプログラムは、検出された視線１４１０とオブジェクトとが交わる交点を含む内領域ＩＳの画質よりも、内領域ＩＳの外側の外領域ＯＳの画質が低い視界画像をＨＭＤ１１０に表示するステップ（Ｓ２１６０〜Ｓ２１８０）をさらに備える。
【０１９３】
（構成８）  （構成７）従うプログラムは、ＨＭＤ１１０の動きを検出するステップ（Ｓ１２３４）と、検出された動きに連動して視界画像を更新するステップ（Ｓ１２４０、Ｓ１２６０）とをさらに備える。視界画像を更新するステップは、外領域ＯＳに位置するオブジェクトの画質を、内領域ＩＳに位置する当該オブジェクトの画質よりも低くすること（Ｓ２１６０）を含む。
【０１９４】
（構成９）  （構成８）において、オブジェクトの画質を低くすることは、外領域ＯＳに位置するオブジェクトのポリゴン数を、内領域ＩＳに位置する当該オブジェクトのポリゴン数よりも少なくすることを含む。
【０１９５】
（構成１０）  （構成８）および（構成９）のいずれかにおいて、オブジェクトの画質を低くすることは、外領域ＯＳに位置するオブジェクトのテクスチャ解像度を、内領域ＩＳに位置する当該オブジェクトのテクスチャ解像度よりも低くすることを含む。
【０１９６】
（構成１１）  （構成８）〜（構成１０）のいずれかにおいて、ストレージ１２に格納されるオブジェクト情報２４２は、１以上のオブジェクトの各々についてオブジェクトを構成するための異なる画質の複数の描画データを保持している。オブジェクトの画質を低くすることは、オブジェクトが内領域ＩＳに位置するときに、複数の描画データのうち高画質用描画データを用いて当該オブジェクトを描画することと、オブジェクトが外領域ＯＳに位置するときに、複数の描画データのうち高画質用描画データよりも画質が低い低画質用描画データを用いて当該オブジェクトを描画すること（Ｓ２１６０）とを含む。
【０１９７】
今回開示された実施形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。
【符号の説明】
【０１９８】
１  仮想カメラ、２  仮想空間、５  撮影方向、１０  プロセッサ、１１  メモリ、１２  ストレージ、１３  入出力インターフェイス、１４  通信インターフェイス、１９  ネットワーク、２２  パノラマ画像、２３  視認領域、２６，１３００，１５００，１７００，１９００，２２００  視界画像、１００  ＨＭＤシステム、１０５  ＨＭＤセット、１１２  モニタ、１１４，１２０  センサ、１１６  カメラ、１１８  スピーカ、１１９  マイク、１４０  注視センサ、１５０  サーバ、１９０  ユーザ、２００  コンピュータ、２２０  表示制御モジュール、２２１  仮想カメラ制御モジュール、２２２  視界領域決定モジュール、２２３  視界画像生成モジュール、２２４  傾き特定モジュール、２２５  視線検出モジュール、２２６  トラッキングモジュール、２３０  仮想空間制御モジュール、２３１  仮想空間定義モジュール、２３２  仮想オブジェクト生成モジュール、２３３  操作オブジェクト制御モジュール、２４０  メモリモジュール、２４１  空間情報、２４２  オブジェクト情報、２４３  ユーザ情報、２５０  通信制御モジュール、９００  空間、１３１０  左手オブジェクト、１３２０  右手オブジェクト、１３３０  円柱オブジェクト、１３４０，１８１０，１８２０  ボックスオブジェクト、１３５０  ポインタオブジェクト、１４１０  視線、１４２０  法線、１８３０  アバターオブジェクト、２２１０  木オブジェクト。
【図１】
2018200688.tif 000003
【図２】
2018200688.tif 000004
【図３】
2018200688.tif 000005
【図４】
2018200688.tif 000006
【図５】
2018200688.tif 000007
【図６】
2018200688.tif 000008
【図７】
2018200688.tif 000009
【図８】
2018200688.tif 000010
【図９】
2018200688.tif 000011
【図１０】
2018200688.tif 000012
【図１１】
2018200688.tif 000013
【図１２】
2018200688.tif 000014
【図１３】
2018200688.tif 000015
【図１４】
2018200688.tif 000016
【図１５】
2018200688.tif 000017
【図１６】
2018200688.tif 000018
【図１７】
2018200688.tif 000019
【図１８】
2018200688.tif 000020
【図１９】
2018200688.tif 000021
【図２０】
2018200688.tif 000022
【図２１】
2018200688.tif 000023
【図２２】
2018200688.tif 000024
【図２３】
2018200688.tif 000025
【図２４】
2018200688.tif 000026