(57)【要約】【課題】現実空間におけるユーザの動きをより忠実にアバターに反映させる技術を提供する。【解決手段】アバターオブジェクトの動作を制御するためにコンピュータで実行される方法は、仮想空間を定義するステップ（Ｓ１７１０）と、仮想空間を介して通信するユーザのアバターオブジェクトを仮想空間に配置するステップ（Ｓ１７２０）と、ユーザの頭の角速度を示す情報を取得するステップ（Ｓ１７３０）と、角速度がしきい値以上の場合に（Ｓ１７４０においてＹＥＳ）、角速度に応じて、アバターオブジェクトの頭部と胴部とを連動させずに頭部を回転させるステップ（Ｓ１７５０）とを備える。【選択図】図１７
2018116684.tif 000002
【特許請求の範囲】
【請求項１】
アバターオブジェクトの動作を制御するためにコンピュータで実行される方法であって、
仮想空間を定義するステップと、
前記仮想空間を介して通信するユーザのアバターオブジェクトを前記仮想空間に配置するステップと、
前記ユーザの頭の角速度を示す情報を取得するステップと、
前記角速度がしきい値以上の場合に、前記角速度に応じて、前記アバターオブジェクトの頭部と胴部とを連動させずに前記頭部を回転させるステップとを備える、方法。
【請求項２】
前記角速度がしきい値未満の場合に、前記角速度に応じて、前記アバターオブジェクトの頭部と胴部とを連動させて前記頭部を回転させるステップをさらに備える、請求項１に記載の方法。
【請求項３】
前記ユーザの手の位置をトラッキングするためのデータを取得するステップをさらに備え、
前記アバターオブジェクトの頭部と胴部とを連動させずに前記頭部を回転させるステップは、前記ユーザの手の位置をトラッキングできない場合に前記角速度に応じて、前記アバターオブジェクトの頭部と胴部とを連動させずに前記頭部を回転させることを含む、請求項１または２に記載の方法。
【請求項４】
前記ユーザの頭の角速度を示す情報を取得するステップは、前記ユーザが装着するヘッドマウントデバイスに設けられたジャイロセンサの、予め定められた軸まわりの検知結果を受信することを含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
アバターオブジェクトの動作を制御するためにコンピュータで実行される方法であって、
仮想空間を定義するステップと、
前記仮想空間を介して通信するユーザのアバターオブジェクトを前記仮想空間に配置するステップと、
前記ユーザの基準状態に対する頭の回転角度を示す情報を取得するステップと、
前記回転角度がしきい値未満の場合に、前記回転角度に応じて、前記アバターオブジェクトの頭部と胴部とを連動させずに前記頭部を回転させるステップとを備える、方法。
【請求項６】
前記回転角度がしきい値以上の場合に、前記回転角度に応じて、前記アバターオブジェクトの頭部と胴部とを連動させて前記頭部を回転させるステップをさらに備える、請求項５に記載の方法。
【請求項７】
前記ユーザの手の位置をトラッキングするためのデータを取得するステップをさらに備え、
前記アバターオブジェクトの頭部と胴部とを連動させずに前記頭部を回転させるステップは、前記ユーザの手の位置をトラッキングできない場合に前記回転角度に応じて、前記アバターオブジェクトの頭部と胴部とを連動させずに前記頭部を回転させることを含む、請求項５または６に記載の方法。
【請求項８】
前記基準状態は、予め定められた期間にわたり前記ユーザの頭が略停止した状態を含む、請求項５〜７のいずれか１項に記載の方法。
【請求項９】
前記回転角度を示す情報取得するステップは、前記ユーザが装着するヘッドマウントデバイスに設けられたジャイロセンサの、予め定められた軸まわりの検知結果を受信することを含む、請求項５〜８のいずれか１項に記載の方法。
【請求項１０】
請求項１〜９のいずれか１項に記載の方法をコンピュータに実現させるためのプログラム。
【請求項１１】
請求項１０に記載のプログラムを格納したメモリと、
前記プログラムを実行するためのプロセッサとを備える、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、仮想空間に配置されるアバターを制御する技術に関し、より特定的には、アバターの動作を制御する技術に関する。
【背景技術】
【０００２】
ヘッドマウントデバイス（ＨＭＤ：Head-Mounted  Device）装置を用いて仮想現実を提供する技術が知られている。また、仮想空間上に、複数のユーザの各々のアバターを配置し、これらアバターを通じてユーザ間でのコミュニケーションを図る技術が提案されている。
【０００３】
このような仮想空間上でアバターを通じたコミュニケーションを促進するために、現実空間のユーザの動きをアバターに反映する技術も提案されている。この現実空間のユーザの動きを取得する技術に関し、例えば、特開２０１５−０１５０２１号公報（特許文献１）は、「被写体のデプス画像を、各代表画像が被写体の個別のパラメトリックモデルに関連付けられる複数の代表画像と比較することと、複数の代表画像のうちの１つの代表画像を被写体のデプス画像に最も類似した代表画像として識別することと、デプス画像に最も類似した代表画像に関連付けられるパラメトリックモデルを選択することと、選択されたパラメトリックモデルを被写体のデプス画像にフィッティングさせることによって、被写体の三次元表現を生成する」方法を開示している（「要約」参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−０１５０２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
人が社会的生活を営む際には、他者とのコミュニケーションが重要である。特に対面対話においては、人は、音声言語を用いた情報伝達だけではなく、表情や視線、姿勢、身体動作といったさまざまな情報を合わせて用いることにより、より円滑なコミュニケーションを行っている。
【０００６】
そのため、仮想空間上でアバターを通じたコミュニケーションを提供する際には、現実空間のユーザの動きを正確にアバターに反映することが望ましい。しかしながら、実際には、コストや場所その他の観点から、ユーザの全身の動き（ジェスチャー）をトラッキングできない場合が多い。したがって、ユーザの身体の一部の動きしかトラッキングできない場合において、ユーザの他の部分の動きを推定してアバターに反映させる技術が必要とされている。
【０００７】
本開示は、上記のような問題を解決するためになされたものであって、ある局面における目的は、現実空間におけるユーザの動きをより忠実にアバターに反映させる技術を提供することである。
【課題を解決するための手段】
【０００８】
ある実施形態に従うと、アバターオブジェクトの動作を制御するためにコンピュータで実行される方法が提供される。この方法は、仮想空間を定義するステップと、仮想空間を介して通信するユーザのアバターオブジェクトを仮想空間に配置するステップと、ユーザの頭の角速度を示す情報を取得するステップと、角速度がしきい値以上の場合に、角速度に応じて、アバターオブジェクトの頭部と胴部とを連動させずに頭部を回転させるステップとを備える。
【０００９】
開示された技術的特徴の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１０】
【図１】ＨＭＤシステムの構成の概略を表す図である。
【図２】ある局面に従うコンピュータのハードウェア構成の一例を表すブロック図で    ある。
【図３】ある実施形態に従うＨＭＤに設定されるｕｖｗ視野座標系を概念的に表す模    式図である。
【図４】ある実施形態に従う仮想空間を表現する一態様を概念的に表す模式図である    。
【図５】ある実施形態に従うＨＭＤを装着するユーザの頭部を上から表した模式図で    ある。
【図６】仮想空間において視認領域をＸ方向から見たＹＺ断面を表す図である。
【図７】仮想空間において視認領域をＹ方向から見たＸＺ断面を表す図である。
【図８】ある実施形態に従うコンピュータをモジュール構成として表わすブロック図    である。
【図９】動き検知データのデータ構造例を説明するための図である。
【図１０】ＨＭＤシステムにおける処理を表すフローチャートである。
【図１１】ＨＭＤセットの各ユーザのアバターオブジェクトを説明するための図であ    る。
【図１２】サーバのハードウェア構成およびモジュール構成を説明するための図であ    る。
【図１３】現実空間におけるユーザの動作をアバターオブジェクトに反映するための    、コンピュータとサーバとの信号のやりとりを表わすフローチャートである。
【図１４】現実空間におけるユーザの動きを正確にトラッキングできない場合につい    て説明するための図である。
【図１５】ヨー軸まわりの角速度がしきい値以上である場合のアバターオブジェクト    の動きの処理について説明するための図である。
【図１６】ヨー軸まわりの角速度がしきい値未満である場合のアバターオブジェクト    の動きの処理について説明するための図である。
【図１７】ユーザに対応するアバターオブジェクトの動きをコンピュータが制御する    処理について説明するフローチャートである。
【図１８】頭部が胴部と連動して動くときの手の動きについて説明するための図であ    る。
【図１９】頭部が胴部と連動せずに動くときの手の動きについて説明するための図で    ある。
【図２０】手のトラッキング情報を利用してアバターオブジェクトの動きをコンピュ    ータが制御する処理について説明するフローチャートである。
【図２１】他の実施形態に従うコンピュータのモジュール構成を表すブロック図であ    る。
【図２２】他の実施形態に従う、ユーザに対応するアバターオブジェクトの動きをコ    ンピュータが制御する処理について説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、この技術的思想の実施形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。なお、以下で説明される各実施形態は、適宜選択的に組み合わされてもよい。
【００１２】
［ＨＭＤシステムの構成］
図１を参照して、ＨＭＤ（Head-Mounted  Device）システム１００の構成について説明する。図１は、ＨＭＤシステム１００の構成の概略を表す。ＨＭＤシステム１００は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。
【００１３】
ＨＭＤシステム１００は、ＨＭＤセット１０５Ａ，１０５Ｂ，１０５Ｃ，１０５Ｄと、ネットワーク１９とサーバ１５０とを含む。ＨＭＤセット１０５Ａ，１０５Ｂ，１０５Ｃ，１０５Ｄの各々は、ネットワーク１９を介してサーバ１５０と通信可能に構成される。以下、ＨＭＤセット１０５Ａ，１０５Ｂ，１０５Ｃ，１０５Ｄを総称して、ＨＭＤセット１０５とも言う。なお、ＨＭＤシステム１００を構成するＨＭＤセット１０５の数は、４つに限られず、３つ以下でも、５つ以上でもよい。
【００１４】
ＨＭＤセット１０５は、ＨＭＤ１１０と、コンピュータ２００とを備える。他の局面において、ＨＭＤセット１０５は、ＨＭＤセンサ１２０をさらに備える構成であってもよい。ＨＭＤ１１０は、モニタ１１２と、ジャイロセンサ１１４と、スピーカ１１８と、マイク１１９とを含む。他の局面において、ＨＭＤ１１０は、カメラ１１６または／および注視センサ１４０をさらに備える構成であってもよい。
【００１５】
ある局面において、コンピュータ２００は、インターネットその他のネットワーク１９に接続可能であり、ネットワーク１９に接続されているサーバ１５０その他のコンピュータ（例えば、他のＨＭＤセット１０５のコンピュータ）と通信可能である。
【００１６】
ＨＭＤ１１０は、ユーザの頭部に装着され、動作中に仮想空間をユーザに提供し得る。より具体的には、ＨＭＤ１１０は、右目用の画像および左目用の画像をモニタ１１２にそれぞれ表示する。ユーザの各目がそれぞれの画像を視認すると、ユーザは、両目の視差に基づき当該画像を３次元の画像として認識し得る。ＨＭＤ１１０は、モニタを備える所謂ヘッドマウントディスプレイと、スマートフォンその他のモニタを有する端末を装着可能なヘッドマウント機器のいずれをも含み得る。
【００１７】
モニタ１１２は、例えば、非透過型の表示装置として実現される。ある局面において、モニタ１１２は、ユーザの両目の前方に位置するようにＨＭＤ１１０の本体に配置されている。したがって、ユーザは、モニタ１１２に表示される３次元画像を視認すると、仮想空間に没入することができる。ある実施形態において、仮想空間は、例えば、背景、ユーザが操作可能なオブジェクト、ユーザが選択可能なメニューの画像を含む。ある実施形態において、モニタ１１２は、所謂スマートフォンその他の情報表示端末が備える液晶モニタまたは有機ＥＬ（Electro  Luminescence）モニタとして実現され得る。
【００１８】
他の局面において、モニタ１１２は、透過型の表示装置として実現され得る。この場合、ＨＭＤ１１０は、図１に示されるようにユーザの目を覆う密閉型ではなく、メガネ型のような開放型であり得る。透過型のモニタ１１２は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。また、モニタ１１２は、仮想空間を構成する画像の一部と、現実空間とを同時に表示する構成を含んでいてもよい。例えば、モニタ１１２は、ＨＭＤ１１０に搭載されたカメラで撮影した現実空間の画像を表示してもよいし、一部の透過率を高く設定することにより現実空間を視認可能にしてもよい。
【００１９】
ある局面において、モニタ１１２は、右目用の画像を表示するためのサブモニタと、左目用の画像を表示するためのサブモニタとを含み得る。別の局面において、モニタ１１２は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、モニタ１１２は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【００２０】
ジャイロセンサ１１４は、一例としてＨＭＤ１１０に設定される３軸（ヨー軸、ロール軸、ピッチ軸）まわりの角速度を経時的に検出する。コンピュータ２００は、各角速度に基づいて、ＨＭＤ１１０の３軸まわりの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、ＨＭＤ１１０の傾きを算出する。この意味で、ジャイロセンサ１１４は、ＨＭＤ１１０の傾き検出器として機能し得る。他の例において、ジャイロセンサ１１４は、少なくともＨＭＤ１１０に設定されるヨー軸まわりの角速度を検出する。他の局面において、ＨＭＤ１１０は、ジャイロセンサ１１４の他にも、加速度センサ、地磁気センサその他のセンサを含み得る。
【００２１】
他の局面において、コンピュータ２００は、ＨＭＤセンサ１２０の出力に基づいて、ＨＭＤ１１０の位置および傾きを検出するように構成されてもよい。この場合、ＨＭＤ１１０は、複数の光源（図示しない）を含む。各光源は例えば、赤外線を発するＬＥＤ（Light  Emitting  Diode）により実現される。ＨＭＤセンサ１２０は、ＨＭＤ１１０の動きを検出するためのポジショントラッキング機能を有する。より具体的には、ＨＭＤセンサ１２０は、ＨＭＤ１１０が発する複数の赤外線を読み取り、現実空間内におけるＨＭＤ１１０の位置および傾きを検出する。
【００２２】
なお、さらに他の局面において、ＨＭＤセンサ１２０は、カメラにより実現されてもよい。この場合、ＨＭＤセンサ１２０は、カメラから出力されるＨＭＤ１１０の画像情報を用いて、画像解析処理を実行することにより、ＨＭＤ１１０の位置および傾きを検出することができる。
【００２３】
カメラ１１６は、対象物の深度情報を取得可能に構成される。一例として、カメラ１１６は、ＴＯＦ（Time  Of  Flight）方式に従い、対象物の深度情報を取得する。他の例として、カメラ１１６は、パターン照射方式に従い、対象物の深度情報を取得する。ある実施形態において、カメラ１１６は、対象物を２つ以上の異なる方向から撮影できるステレオカメラであり得る。また、カメラ１１６は、人間が不可視な赤外線カメラであり得る。カメラ１１６は、ＨＭＤ１１０に装着され、ユーザの手を撮影する。カメラ１１６は取得した手の深度情報をコンピュータ２００に出力する。
【００２４】
スピーカ１１８は、音声信号を音声に変換してユーザ１９０に出力する。マイク１１９は、ユーザ１９０の発話を電気信号に変換してコンピュータ２００に出力する。なお、他の局面において、ＨＭＤ１１０は、スピーカ１１８に替えてイヤホンを備えるように構成されてもよい。
【００２５】
注視センサ１４０は、ユーザ１９０の右目および左目の視線が向けられる方向（視線）を検出する。当該方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ１４０は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ１４０は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ１４０は、例えば、ユーザ１９０の右目および左目に赤外光を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ１４０は、検出した各回転角に基づいて、ユーザ１９０の視線を検知することができる。
【００２６】
サーバ１５０は、コンピュータ２００にプログラムを送信し得る。別の局面において、サーバ１５０は、他のユーザによって使用されるＨＭＤに仮想現実を提供するための他のコンピュータ２００と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行なう場合、各コンピュータ２００は、各ユーザの動作に基づく信号を他のコンピュータ２００と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。
【００２７】
［ハードウェア構成］
図２を参照して、本実施形態に係るコンピュータ２００について説明する。図２は、ある局面に従うコンピュータ２００のハードウェア構成の一例を表すブロック図である。コンピュータ２００は、主たる構成要素として、プロセッサ１０と、メモリ１１と、ストレージ１２と、入出力インターフェイス１３と、通信インターフェイス１４とを備える。各構成要素は、それぞれ、バス１５に接続されている。
【００２８】
プロセッサ１０は、コンピュータ２００に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ１１またはストレージ１２に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ１０は、ＣＰＵ（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）その他の無線通信インターフェイスとして実現される。なお、通信インターフェイス１４は上述のものに限られない。
【００３４】
ある局面において、プロセッサ１０は、ストレージ１２にアクセスし、ストレージ１２に格納されている１つ以上のプログラムをメモリ１１にロードし、当該プログラムに含まれる一連の命令を実行する。当該１つ以上のプログラムは、コンピュータ２００のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ１０は、入出力インターフェイス１３を介して、仮想空間を提供するための信号をＨＭＤ１１０に送る。ＨＭＤ１１０は、その信号に基づいてモニタ１１２に映像を表示する。
【００３５】
なお、図２に示される例では、コンピュータ２００は、ＨＭＤ１１０の外部に設けられる構成が示されているが、別の局面において、コンピュータ２００は、ＨＭＤ１１０に内蔵されてもよい。一例として、モニタ１１２を含む携帯型の情報通信端末（例えば、スマートフォン）がコンピュータ２００として機能してもよい。
【００３６】
また、コンピュータ２００は、複数のＨＭＤ１１０に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
【００３７】
ある実施形態において、ＨＭＤシステム１００では、グローバル座標系が予め設定されている。グローバル座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、ならびに、鉛直方向および水平方向の双方に直交する前後方向にそれぞれ平行な、３つの基準方向（軸）を有する。本実施形態では、グローバル座標系は視点座標系の一つである。そこで、グローバル座標系における水平方向、鉛直方向（上下方向）、および前後方向は、それぞれ、ｘ軸、ｙ軸、ｚ軸と規定される。より具体的には、グローバル座標系において、ｘ軸は現実空間の水平方向に平行である。ｙ軸は、現実空間の鉛直方向に平行である。ｚ軸は現実空間の前後方向に平行である。
【００３８】
ある局面において、ＨＭＤ１１０は、ジャイロセンサ１１４と、３軸加速度センサとを有する。コンピュータ２００は、これらのセンサの出力に基づいて、基準方向（例えば、重力（鉛直）方向）に対するＨＭＤ１１０の傾き角度を算出する。これにより、コンピュータ２００は、グローバル座標系におけるＨＭＤ１１０の傾きを取得できる。
【００３９】
他の局面において、ＨＭＤセンサ１２０は、赤外線センサを含む。赤外線センサが、ＨＭＤ１１０の各光源から発せられた赤外線をそれぞれ検出すると、ＨＭＤ１１０の存在を検出する。ＨＭＤセンサ１２０は、さらに、各点の値（グローバル座標系における各座標値）に基づいて、ＨＭＤ１１０を装着したユーザ１９０の動きに応じた、現実空間内におけるＨＭＤ１１０の位置および傾きを検出する。より詳しくは、ＨＭＤセンサ１２０は、経時的に検出された各値を用いて、ＨＭＤ１１０の位置および傾きの時間的変化を検出できる。
【００４０】
グローバル座標系は現実空間の座標系と平行である。したがって、ＨＭＤセンサ１２０によって検出されたＨＭＤ１１０の各傾きは、グローバル座標系におけるＨＭＤ１１０の３軸周りの各傾きに相当する。ＨＭＤセンサ１２０は、グローバル座標系におけるＨＭＤ１１０の傾きに基づき、ｕｖｗ視野座標系をＨＭＤ１１０に設定する。ＨＭＤ１１０に設定されるｕｖｗ視野座標系は、ＨＭＤ１１０を装着したユーザ１９０が仮想空間において物体を見る際の視点座標系に対応する。
【００４１】
［ｕｖｗ視野座標系］
図３を参照して、ｕｖｗ視野座標系について説明する。図３は、ある実施形態に従うＨＭＤ１１０に設定されるｕｖｗ視野座標系を概念的に表す模式図である。ジャイロセンサ１１４またはＨＭＤセンサ１２０は、ＨＭＤ１１０の起動時に、グローバル座標系におけるＨＭＤ１１０の傾きを検出する。プロセッサ１０は、検出された値に基づいて、ｕｖｗ視野座標系をＨＭＤ１１０に設定する。
【００４２】
図３に示されるように、ＨＭＤ１１０は、ＨＭＤ１１０を装着したユーザの頭部を中心（原点）とした３次元のｕｖｗ視野座標系を設定する。より具体的には、ＨＭＤ１１０は、グローバル座標系を規定する水平方向（ｘ軸）、鉛直方向（ｙ軸）、および前後方向（ｚ軸）を、グローバル座標系内においてＨＭＤ１１０の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる３つの方向を、ＨＭＤ１１０におけるｕｖｗ視野座標系のピッチ軸（ｕ軸）、ヨー軸（ｖ軸）、およびロール軸（ｗ軸）として設定する。図３に示されるように、ヨー軸は、ユーザ１９０の高さ方向に延在する。
【００４３】
ある局面において、ＨＭＤ１１０を装着したユーザ１９０が直立し、かつ、正面を視認している場合、プロセッサ１０は、グローバル座標系に平行なｕｖｗ視野座標系をＨＭＤ１１０に設定する。この場合、グローバル座標系における水平方向（ｘ軸）、鉛直方向（ｙ軸）、および前後方向（ｚ軸）は、ＨＭＤ１１０におけるｕｖｗ視野座標系のピッチ軸（ｕ軸）、ヨー軸（ｖ軸）、およびロール軸（ｗ軸）に一致する。
【００４４】
ｕｖｗ視野座標系がＨＭＤ１１０に設定された後、ジャイロセンサ１１４またはＨＭＤセンサ１２０は、ＨＭＤ１１０の動きに基づいて、設定されたｕｖｗ視野座標系におけるＨＭＤ１１０の傾き（傾きの変化量）を検出できる。この場合、ジャイロセンサ１１４またはＨＭＤセンサ１２０は、ＨＭＤ１１０の傾きとして、ｕｖｗ視野座標系におけるＨＭＤ１１０のピッチ角（θｕ）、ヨー角（θｖ）、およびロール角（θｗ）をそれぞれ検出する。ピッチ角（θｕ）は、ｕｖｗ視野座標系におけるピッチ軸まわりのＨＭＤ１１０の傾き角度を表す。ヨー角（θｖ）は、ｕｖｗ視野座標系におけるヨー軸まわりのＨＭＤ１１０の傾き角度を表す。ロール角（θｗ）は、ｕｖｗ視野座標系におけるロール軸まわりのＨＭＤ１１０の傾き角度を表す。ジャイロセンサ１１４は、これらピッチ角、ヨー角、ロール角についての角速度を取得可能に構成される。
【００４５】
コンピュータ２００は、ジャイロセンサ１１４またはＨＭＤセンサ１２０の出力に基づいて検出したＨＭＤ１１０の傾き角度に基づいて、ＨＭＤ１１０が動いた後のＨＭＤ１１０におけるｕｖｗ視野座標系を、ＨＭＤ１１０に設定する。ＨＭＤ１１０と、ＨＭＤ１１０のｕｖｗ視野座標系との関係は、ＨＭＤ１１０の位置および傾きに関わらず、常に一定である。ＨＭＤ１１０の位置および傾きが変わると、当該位置および傾きの変化に連動して、グローバル座標系におけるＨＭＤ１１０のｕｖｗ視野座標系の位置および傾きが変化する。
【００４６】
ある局面において、ＨＭＤセンサ１２０は、赤外線センサからの出力に基づいて取得される赤外線の光強度および複数の点間の相対的な位置関係（例えば、各点間の距離など）に基づいて、ＨＭＤ１１０の現実空間内における位置を、ＨＭＤセンサ１２０に対する相対位置として特定してもよい。また、プロセッサ１０は、特定された相対位置に基づいて、現実空間内（グローバル座標系）におけるＨＭＤ１１０のｕｖｗ視野座標系の原点を決定してもよい。
【００４７】
［仮想空間］
図４を参照して、仮想空間についてさらに説明する。図４は、ある実施形態に従う仮想空間２を表現する一態様を概念的に表す模式図である。仮想空間２は、中心２１の３６０度方向の全体を覆う全天球状の構造を有する。図４では、説明を複雑にしないために、仮想空間２のうちの上半分の天球が例示されている。仮想空間２では各メッシュが規定される。各メッシュの位置は、仮想空間２に規定されるＸＹＺ座標系における座標値として予め規定されている。コンピュータ２００は、仮想空間２に展開可能なコンテンツ（静止画、動画等）を構成する各部分画像を、仮想空間２において対応する各メッシュにそれぞれ対応付けて、ユーザによって視認可能な仮想空間画像２２が展開される仮想空間２をユーザに提供する。
【００４８】
ある局面において、仮想空間２では、中心２１を原点とするＸＹＺ座標系が規定される。ＸＹＺ座標系は、例えば、グローバル座標系に平行である。ＸＹＺ座標系は視点座標系の一種であるため、ＸＹＺ座標系における水平方向、鉛直方向（上下方向）、および前後方向は、それぞれＸ軸、Ｙ軸、Ｚ軸として規定される。したがって、ＸＹＺ座標系のＸ軸（水平方向）がグローバル座標系のｘ軸と平行であり、ＸＹＺ座標系のＹ軸（鉛直方向）がグローバル座標系のｙ軸と平行であり、ＸＹＺ座標系のＺ軸（前後方向）がグローバル座標系のｚ軸と平行である。
【００４９】
ＨＭＤ１１０の起動時、すなわちＨＭＤ１１０の初期状態において、仮想カメラ１が、仮想空間２の中心２１に配置される。ある局面において、プロセッサ１０は、仮想カメラ１が撮影する画像をＨＭＤ１１０のモニタ１１２に表示する。仮想カメラ１は、現実空間におけるＨＭＤ１１０の動きに連動して、仮想空間２を同様に移動する。これにより、現実空間におけるＨＭＤ１１０の位置および向きの変化が、仮想空間２において同様に再現され得る。
【００５０】
仮想カメラ１には、ＨＭＤ１１０の場合と同様に、ｕｖｗ視野座標系が規定される。仮想空間２における仮想カメラ１のｕｖｗ視野座標系は、現実空間（グローバル座標系）におけるＨＭＤ１１０のｕｖｗ視野座標系に連動するように規定されている。したがって、ＨＭＤ１１０の傾きが変化すると、それに応じて、仮想カメラ１の傾きも変化する。また、仮想カメラ１は、ＨＭＤ１１０を装着したユーザの現実空間における移動に連動して、仮想空間２において移動することもできる。
【００５１】
コンピュータ２００のプロセッサ１０は、仮想カメラ１の配置位置と、仮想カメラ１の傾き方向、換言すれば、仮想カメラ１の撮影方向を示す基準視線５とに基づいて、仮想空間２における視認領域２３を規定する。視認領域２３は、仮想空間２のうち、ＨＭＤ１１０を装着したユーザが視認する領域に対応する。上記のように、仮想カメラ１のｕｖｗ視野座標系はＨＭＤ１１０のｕｖｗ視野座標系に連動している。そのため、基準視線５は、ジャイロセンサ１１４またはＨＭＤ１２０の出力に基づいて定まるＨＭＤ１１０の傾きによって定まる。
【００５２】
注視センサ１４０によって検出されるユーザ１９０の視線は、ユーザ１９０が物体を視認する際の視点座標系における方向である。ＨＭＤ１１０のｕｖｗ視野座標系は、ユーザ１９０がモニタ１１２を視認する際の視点座標系に等しい。また、仮想カメラ１のｕｖｗ視野座標系は、ＨＭＤ１１０のｕｖｗ視野座標系に連動している。したがって、ある局面に従うＨＭＤシステム１００は、注視センサ１４０によって検出されたユーザ１９０の視線を、仮想カメラ１のｕｖｗ視野座標系におけるユーザの視線とみなすことができる。
【００５３】
［ユーザの視線］
図５を参照して、ユーザの視線の決定について説明する。図５は、ある実施形態に従うＨＭＤ１１０を装着するユーザ１９０の頭部を上から表した模式図である。
【００５４】
ある局面において、注視センサ１４０は、ユーザ１９０の右目および左目の各視線を検出する。ある局面において、ユーザ１９０が近くを見ている場合、注視センサ１４０は、視線Ｒ１およびＬ１を検出する。別の局面において、ユーザ１９０が遠くを見ている場合、注視センサ１４０は、視線Ｒ２およびＬ２を検出する。この場合、ロール軸ｗに対して視線Ｒ２およびＬ２が成す角度は、ロール軸ｗに対して視線Ｒ１およびＬ１が成す角度よりも小さい。注視センサ１４０は、検出結果をコンピュータ２００に送信する。
【００５５】
コンピュータ２００が、視線の検出結果として、視線Ｒ１およびＬ１の検出値を注視センサ１４０から受信した場合には、その検出値に基づいて、視線Ｒ１およびＬ１の交点である注視点Ｎ１を特定する。一方、コンピュータ２００は、視線Ｒ２およびＬ２の検出値を注視センサ１４０から受信した場合には、視線Ｒ２およびＬ２の交点を注視点として特定する。コンピュータ２００は、特定した注視点Ｎ１の位置に基づき、ユーザ１９０の視線Ｎ０を特定する。コンピュータ２００は、例えば、ユーザ１９０の右目Ｒと左目Ｌとを結ぶ直線の中点と、注視点Ｎ１とを通る直線の延びる方向を、視線Ｎ０として検出する。視線Ｎ０は、ユーザ１９０が両目により実際に視線を向けている方向である。また、視線Ｎ０は、視認領域２３に対してユーザ１９０が実際に視線を向けている方向に相当する。
【００５６】
また、別の局面において、ＨＭＤシステム１００は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、ＨＭＤシステム１００は、仮想空間２においてテレビ番組を表示することができる。
【００５７】
さらに別の局面において、ＨＭＤシステム１００は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
【００５８】
［視界領域］
図６および図７を参照して、視認領域２３について説明する。図６は、仮想空間２において視認領域２３をＸ方向から見たＹＺ断面を表す。図７は、仮想空間２において視認領域２３をＹ方向から見たＸＺ断面を表す。
【００５９】
図６に示されるように、ＹＺ断面における視認領域２３は、領域２４を含む。領域２４は、仮想カメラ１の配置位置と基準視線５と仮想空間２のＹＺ断面とによって定義される。プロセッサ１０は、仮想空間における基準視線５を中心として極角αを含む範囲を、領域２４として規定する。
【００６０】
図７に示されるように、ＸＺ断面における視認領域２３は、領域２５を含む。領域２５は、仮想カメラ１の配置位置と基準視線５と仮想空間２のＸＺ断面とによって定義される。プロセッサ１０は、仮想空間２における基準視線５を中心とした方位角βを含む範囲を、領域２５として規定する。極角αおよびβは、仮想カメラ１の配置位置と仮想カメラ１の向きとに応じて定まる。
【００６１】
ある局面において、ＨＭＤシステム１００は、コンピュータ２００からの信号に基づいて、視界画像２６をモニタ１１２に表示させることにより、ユーザ１９０に仮想空間における視界を提供する。視界画像２６は、仮想空間画像２２のうち視認領域２３に重畳する部分に相当する。ユーザ１９０が、頭に装着したＨＭＤ１１０を動かすと、その動きに連動して仮想カメラ１も動く。その結果、仮想空間２における視認領域２３の位置が変化する。これにより、モニタ１１２に表示される視界画像２６は、仮想空間画像２２のうち、仮想空間２においてユーザが向いた方向の視認領域２３に重畳する画像に更新される。ユーザは、仮想空間２における所望の方向を視認することができる。
【００６２】
このように、仮想カメラ１の傾きは仮想空間２におけるユーザの視線（基準視線５）に相当し、仮想カメラ１が配置される位置は、仮想空間２におけるユーザの視点に相当する。したがって、仮想カメラ１を移動（配置位置を変える動作、傾きを変える動作を含む）させることにより、モニタ１１２に表示される画像が更新され、ユーザ１９０の視界が移動される。
【００６３】
ユーザ１９０は、ＨＭＤ１１０を装着している間、現実世界を視認することなく、仮想空間２に展開される仮想空間画像２２のみを視認できる。そのため、ＨＭＤシステム１００は、仮想空間２への高い没入感覚をユーザに与えることができる。
【００６４】
ある局面において、プロセッサ１０は、ＨＭＤ１１０を装着したユーザ１９０の現実空間における移動に連動して、仮想空間２において仮想カメラ１を移動させ得る。この場合、プロセッサ１０は、仮想空間２における仮想カメラ１の位置および傾きに基づいて、ＨＭＤ１１０のモニタ１１２に投影される画像領域（すなわち、仮想空間２における視認領域２３）を特定する。
【００６５】
ある実施形態に従うと、仮想カメラ１は、２つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含み得る。また、ユーザ１９０が３次元の仮想空間２を認識できるように、適切な視差が、２つの仮想カメラに設定される。以下では、仮想カメラ１が２つの仮想カメラを含み、２つの仮想カメラのロール軸が合成されることによって生成されるロール軸（ｗ）が、ＨＭＤ１１０のロール軸（ｗ）に適合されるように構成されているものとして、本開示に係る技術思想を例示する。
【００６６】
［ＨＭＤの制御装置］
図８を参照して、ＨＭＤ１１０の制御装置について説明する。ある実施形態において、制御装置は周知の構成を有するコンピュータ２００によって実現される。図８は、ある実施形態に従うコンピュータ２００をモジュール構成として表わすブロック図である。
【００６７】
図８に示されるように、コンピュータ２００は、表示制御モジュール２２０と、仮想空間制御モジュール２３０と、メモリモジュール２４０と、通信制御モジュール２５０とを備える。表示制御モジュール２２０は、サブモジュールとして、仮想カメラ制御モジュール２２１と、視界領域決定モジュール２２２と、視界画像生成モジュール２２３と、角速度検出モジュール２２４と、基準視線特定モジュール２２５と、動き検出モジュール２２６と、トラッキングモジュール２２７とを含む。仮想空間制御モジュール２３０は、サブモジュールとして、仮想空間定義モジュール２３１と、仮想オブジェクト生成モジュール２３２と、操作オブジェクト制御モジュール２３３と、アバター制御モジュール２３４とを含む。アバター制御モジュール２３４は、回転制御モジュール２３５を含む。
【００６８】
ある実施形態において、表示制御モジュール２２０と仮想空間制御モジュール２３０とは、プロセッサ１０によって実現される。別の実施形態において、複数のプロセッサ１０が表示制御モジュール２２０と仮想空間制御モジュール２３０として作動してもよい。メモリモジュール２４０は、メモリ１１またはストレージ１２によって実現される。通信制御モジュール２５０は、通信インターフェイス１４によって実現される。
【００６９】
表示制御モジュール２２０は、ＨＭＤ１１０のモニタ１１２における画像表示を制御する。仮想カメラ制御モジュール２２１は、仮想空間２に仮想カメラ１を配置する。仮想カメラ制御モジュール２２１は、仮想空間２における仮想カメラ１の配置位置と、仮想カメラ１の傾き（向き）を制御する。視界領域決定モジュール２２２は、ＨＭＤ１１０の傾き（すなわち、ジャイロセンサ１１４の出力）と、仮想カメラ１の配置位置に応じて、視認領域２３を規定する。視界画像生成モジュール２２３は、決定された視認領域２３に基づいて、モニタ１１２に表示される視界画像２６を生成する。
【００７０】
角速度検出モジュール２２４は、ジャイロセンサ１１４の各軸の出力（例えば、電圧値）をそれぞれ角速度に変換する。角速度検出モジュール２２４は、各軸について時計回りに回転しているか、反時計回りに回転しているかを判別可能に構成される。角速度検出モジュール２２４は、変換した各軸まわりの角速度を、仮想カメラ制御モジュール２２１、視界領域決定モジュール２２２、および基準視線特定モジュール２２５に出力する。これらのモジュールは、角速度検出モジュール２２４から入力された角速度に基づいて、ＨＭＤ１１０の傾きを特定し得る。なお、ジャイロセンサ１１４がアナログデータではなく、角速度を示すデジタルデータを出力可能に構成される場合、コンピュータ２００は、角速度検出モジュール２２４を有さなくともよい。
【００７１】
基準視線特定モジュール２２５は、ジャイロセンサ１１４またはＨＭＤセンサ１２０の出力に基づいて、ユーザ１９０の視線（すなわち、ＨＭＤ１１０の傾き）を特定する。他の局面において、基準視線特定モジュール２２５は、注視センサ１４０からの信号に基づいて、ユーザ１９０の視線を特定し得る。動き検出モジュール２２６は、ＨＭＤセンサ１２０の出力に基づいて、ＨＭＤ１１０の基準状態（例えば、グローバル座標系における原点）に対する変位量を検出し得る。ある局面において、この変位量は、ＨＭＤセンサ１２０とＨＭＤ１１０との距離であり得る。
【００７２】
トラッキングモジュール２２７は、ユーザ１９０の手の位置を検出（トラッキング）する。本実施形態において、トラッキングモジュール２２７は、カメラ１１６から入力される深度情報に基づいて、ＨＭＤ１１０に設定されるｕｖｗ視野座標系におけるユーザ１９０の手の位置を検出する。より具体的には、トラッキングモジュール２２７は、ｕｖｗ視野座標系において、カメラ１１６を基準としたユーザ１９０の手の相対的な位置を検出する。このようなカメラ１１６およびトラッキングモジュール２２７は、例えば、ＬｅａｐＭｏｔｉｏｎ社によって提供されるＬｅａｐＭｏｔｉｏｎ（登録商標）によって実現され得る。
【００７３】
仮想空間制御モジュール２３０は、ユーザ１９０に提供される仮想空間２を制御する。仮想空間定義モジュール２３１は、仮想空間２を表わす仮想空間データを生成することにより、ＨＭＤシステム１００における仮想空間２を規定する。
【００７４】
仮想オブジェクト生成モジュール２３２は、仮想空間２に配置されるオブジェクトを生成する。オブジェクトは、例えば、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、動物等を含み得る。
【００７５】
操作オブジェクト制御モジュール２３３は、仮想空間２においてユーザの操作を受け付けるための操作オブジェクトを仮想空間２に配置する。ユーザは、操作オブジェクトを操作することにより、例えば、仮想空間２に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、ＨＭＤ１１０を装着したユーザの手に相当する手オブジェクト等を含み得る。ある局面において、操作オブジェクトは、後述するアバターオブジェクトの手に相当し得る。
【００７６】
アバター制御モジュール２３４は、ネットワークを介して接続される他のコンピュータ２００のユーザのアバターオブジェクトを仮想空間２に配置するためのデータを生成する。ある局面において、アバター制御モジュール２３４は、ユーザ１９０のアバターオブジェクトを仮想空間２に配置するためのデータを生成する。ある局面において、アバター制御モジュール２３４は、ユーザ１９０を含む画像に基づいて、ユーザ１９０を模したアバターオブジェクトを生成する。他の局面において、アバター制御モジュール２３４は、複数種類のアバターオブジェクト（例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト）の中からユーザ１９０による選択を受け付けたアバターオブジェクトを仮想空間２に配置するためのデータを生成する。
【００７７】
ある局面において、アバターオブジェクトの頭部には、ＨＭＤ１１０の場合と同様に、ｕｖｗ視野座標系が規定される。これにより、現実空間（グローバル座標系）におけるＨＭＤ１１０の傾きが変化すると、それに応じて、アバターオブジェクトの頭部の傾きも変化する。
【００７８】
アバター制御モジュール２３４は、角速度検出モジュール２２４が出力する角速度に基づいて、ＨＭＤ１１０の動きをアバターオブジェクトに反映する。例えば、アバター制御モジュール２３４は、角速度検出モジュール２２４から入力されたヨー軸まわりの角速度に従い、アバターオブジェクトの頭部をヨー軸まわりに回転させるためのデータを生成する。また、アバター制御モジュール２３４は、トラッキングモジュール２２７の出力に基づいて、現実空間のユーザの手の動きを、アバターオブジェクトの手に反映する。また、アバター制御モジュール２３４は、他のコンピュータから入力される角速度の情報などに基づいて、他のコンピュータのユーザに対応するアバターオブジェクトの動きを制御する。
【００７９】
回転制御モジュール２３５は、アバターオブジェクトの頭部をヨー軸まわりに回転させる際、アバターオブジェクトの胴部と連動させて回転させるか否かを判断する。回転制御モジュール２３５の詳細は、後述される。
【００８０】
仮想空間制御モジュール２３０は、仮想空間２に配置されるオブジェクトのそれぞれが、他のオブジェクトと衝突した場合に、当該衝突を検出する。仮想空間制御モジュール２３０は、例えば、あるオブジェクトと、別のオブジェクトとが触れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行なう。仮想空間制御モジュール２３０は、オブジェクトとオブジェクトとが触れている状態から離れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行なう。仮想空間制御モジュール２３０は、オブジェクトとオブジェクトとが触れている状態であることを検出することができる。具体的には、操作オブジェクト制御モジュール２３３は、操作オブジェクトと、他のオブジェクトとが触れたときに、これら操作オブジェクトと他のオブジェクトとが触れたことを検出して、予め定められた処理を行なう。
【００８１】
メモリモジュール２４０は、コンピュータ２００が仮想空間２をユーザ１９０に提供するために使用されるデータを保持している。ある局面において、メモリモジュール２４０は、空間情報２４１と、オブジェクト情報２４２と、ユーザ情報２４３とを保持している。
【００８２】
空間情報２４１は、仮想空間２を提供するために規定された１つ以上のテンプレートを保持している。
【００８３】
オブジェクト情報２４２は、仮想空間２において再生されるコンテンツ、当該コンテンツで使用されるオブジェクト、およびオブジェクトを仮想空間２に配置するための情報（たとえば、位置情報）を保持している。当該コンテンツは、例えば、ゲーム、現実社会と同様の風景を表したコンテンツ等を含み得る。
【００８４】
オブジェクト情報２４２は、さらに動き検知データ２４４を含む。動き検知データ２４４は、角速度検出モジュール２２４が検出したＨＭＤ１１０の各軸まわりの角速度、換言すれば、ＨＭＤ１１０の傾きを示すデータである。
【００８５】
図９は、動き検知データ２４４のデータ構造例を説明するための図である。動き検知データ２４４は、時刻と、ＨＭＤ１１０に設定される各軸（ピッチ軸（ｕ軸）、ヨー軸（ｖ軸）、ロール軸（ｗ軸））まわりの角速度とを互いに関連付けて保持する。この時刻は、角速度に対応するデータ（例えば、電圧値）をジャイロセンサ１１４が検出したタイミングである。図９に示される例において、ヨー軸（ｖ軸）まわりの角速度が大きい。これは、現実空間においてユーザ１９０が、ヨー軸（ｖ軸）まわりに頭部を回転させていることを示す。
【００８６】
なお、他の局面において、動き検知データ２４４は、ジャイロセンサ１１４の出力の他に、加速度センサの出力または地磁気センサの出力を含み得る。さらに他の局面において、動き検知データ２４４は、ＨＭＤセンサ１２０の出力、換言すれば、ＨＭＤ１１０の位置および傾きを示すデータであり得る。
【００８７】
図８を再び参照して、ユーザ情報２４３は、ＨＭＤシステム１００の制御装置としてコンピュータ２００を機能させるためのプログラム、オブジェクト情報２４２に保持される各コンテンツを使用するアプリケーションプログラム等を保持している。
【００８８】
メモリモジュール２４０に格納されているデータおよびプログラムは、ＨＭＤ１１０のユーザによって入力される。あるいは、プロセッサ１０が、当該コンテンツを提供する事業者が運営するコンピュータ（例えば、サーバ１５０）からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール２４０に格納する。
【００８９】
通信制御モジュール２５０は、ネットワーク１９を介して、サーバ１５０その他の情報通信装置と通信し得る。また、通信制御モジュール２５０は、ＨＭＤ１１０に搭載される種々のデバイスと通信し得る。
【００９０】
ある局面において、表示制御モジュール２２０および仮想空間制御モジュール２３０の一部は、例えば、ユニティテクノロジーズ社によって提供されるＵｎｉｔｙ（登録商標）を用いて実現され得る。別の局面において、表示制御モジュール２２０および仮想空間制御モジュール２３０は、各処理を実現する回路素子の組み合わせとしても実現され得る。
【００９１】
コンピュータ２００における処理は、ハードウェアと、プロセッサ１０により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール２４０に予め格納されている場合がある。また、ソフトウェアは、ＣＤ−ＲＯＭその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール２５０を介してサーバ１５０その他のコンピュータからダウンロードされた後、記憶モジュールに一旦格納される。そのソフトウェアは、プロセッサ１０によって記憶モジュールから読み出され、実行可能なプログラムの形式でＲＡＭに格納される。プロセッサ１０は、そのプログラムを実行する。
【００９２】
［コンピュータ２００の制御構造］
図１０を参照して、コンピュータ２００における視界画像の更新方法について説明する。図１０は、ＨＭＤシステム１００における処理を表すフローチャートである。
【００９３】
ステップＳ１０１０において、コンピュータ２００のプロセッサ１０は、仮想空間定義モジュール２３１として、仮想空間２を定義する。
【００９４】
ステップＳ１０２０において、プロセッサ１０は、仮想カメラ１を仮想空間２に配置する。このとき、プロセッサ１０は、メモリのワーク領域において、仮想カメラ１を仮想空間２において予め規定された中心２１に配置し得る。
【００９５】
ステップＳ１０３０にて、プロセッサ１０は、視界画像生成モジュール２２３として、初期の視界画像２６を表示するための視界画像データを生成する。生成された視界画像データは、視界画像生成モジュール２２３を介して通信制御モジュール２５０によってＨＭＤ１１０に送信される。
【００９６】
ステップＳ１０３２にて、ＨＭＤ１１０のモニタ１１２は、コンピュータ２００から受信した信号に基づいて、視界画像２６を表示する。ＨＭＤ１１０を装着したユーザ１９０は、視界画像２６を視認すると仮想空間２を認識し得る。
【００９７】
ステップＳ１０３４にて、ジャイロセンサ１１４は、ユーザ１９０の頭の動き（ＨＭＤ１１０の各軸まわりの角速度）を検知する。ジャイロセンサ１１４は、検知結果を、コンピュータ２００に出力する。
【００９８】
ステップＳ１０４０にて、プロセッサ１０は、角速度検出モジュール２２４として、ジャイロセンサ１１４から入力された検知結果に基づいてＨＭＤ１１０の各軸まわりの角速度を算出する。プロセッサ１０は、算出された角速度に基づき、ＨＭＤ１１０の傾きを検知する。プロセッサ１０はさらに、仮想カメラ制御モジュール２２１として、検知した傾きに連動するように仮想カメラ１の傾き（すなわち、仮想カメラ１の基準視線５）を変更する。これにより、仮想カメラ１が撮影する視界画像２６が更新される。
【００９９】
ステップＳ１０５０において、プロセッサ１０は、視界画像生成モジュール２２３として、傾きを変更された仮想カメラ１が撮影する視界画像２６を表示するための視界画像データを生成し、生成した視界画像データをＨＭＤ１１０に出力する。
【０１００】
ステップＳ１０５２において、ＨＭＤ１１０のモニタ１１２は、受信した視界画像データに基づいて、更新後の視界画像を表示する。これにより、仮想空間２におけるユーザの視界が更新される。
【０１０１】
［アバターオブジェクト］
図１１を参照して、本実施形態に従うアバターオブジェクトについて説明する。図１１は、ＨＭＤセット１０５Ａ，１０５Ｂの各ユーザのアバターオブジェクトを説明するための図である。以下、ＨＭＤセット１０５Ａのユーザをユーザ１９０Ａ、ＨＭＤセット１０５Ｂのユーザをユーザ１９０Ｂ、ＨＭＤセット１０５Ｃのユーザをユーザ１９０Ｃ、ＨＭＤセット１０５Ｄのユーザをユーザ１９０Ｄと表す。また、ＨＭＤセット１０５Ａに関する各構成要素の参照符号にＡが付され、ＨＭＤセット１０５Ｂに関する各構成要素の参照符号にＢが付され、ＨＭＤセット１０５Ｃに関する各構成要素の参照符号にＣが付され、ＨＭＤセット１０５Ｄに関する各構成要素の参照符号にＤが付される。例えば、ＨＭＤ１１０Ａは、ＨＭＤセット１０５Ａに含まれる。
【０１０２】
分図（Ａ）は、ネットワーク１９において、複数のＨＭＤ１１０のそれぞれが、複数のユーザ１９０のそれぞれに仮想空間を提供する状況を模式的に示す。分図（Ａ）を参照して、コンピュータ２００Ａ〜２００Ｄのそれぞれは、ＨＭＤ１１０Ａ〜１１０Ｄのそれぞれを介して、ユーザ１９０Ａ〜１９０Ｄのそれぞれに、仮想空間２Ａ〜２Ｄのそれぞれを提供する。図１０に示される例において、仮想空間２Ａと仮想空間２Ｂとは同じである。換言すれば、コンピュータ２００Ａとコンピュータ２００Ｂとは同じ仮想空間を共有していることになる。仮想空間２Ａおよび仮想空間２Ｂには、ユーザ１９０Ａのアバターオブジェクト１１００Ａと、ユーザ１９０Ｂのアバターオブジェクト１１００Ｂとが存在する。なお、仮想空間２Ａにおけるアバターオブジェクト１１００Ａおよび仮想空間２Ｂにおけるアバターオブジェクト１１００ＢがそれぞれＨＭＤを装着しているが、これは説明を分かりやすくするためのものであって、実際にはこれらのオブジェクトはＨＭＤを装着していない。
【０１０３】
ある局面において、仮想カメラ制御モジュール２２１Ａは、ユーザ１９０Ａの視界画像２６Ａを撮影する仮想カメラ１Ａを、アバターオブジェクト１１００Ａの目の位置に配置し得る。
【０１０４】
分図（Ｂ）は、ユーザ１９０Ａの視界画像１１３０を示す。視界画像１１３０は、ＨＭＤ１１０Ａのモニタ１１２Ａに表示される画像である。この視界画像１１３０は、仮想カメラ１Ａにより生成された画像である。また、視界画像１１３０には、ユーザ１９０Ｂに対応するアバターオブジェクト１１００Ｂが表示されている。分図（Ｂ）に示される例において、アバターオブジェクト１１００Ｂは、頭部１１１０Ｂと、胴部１１２０Ｂとを含む。なお、特に図示はしていないが、ユーザ１９０Ｂの視界画像にも同様に、ユーザ１９０Ａのアバターオブジェクト１１００Ａが表示されている。
【０１０５】
分図（Ｂ）の状態において、ユーザ１９０Ａは仮想空間を介してユーザ１９０Ｂと対話による通信（コミュニケーション）を図ることができる。より具体的には、マイク１１９Ａにより取得されたユーザ１９０Ａの音声データは、サーバ１５０を介してユーザ１９０ＢのＨＭＤ１１０Ｂに送信され、ＨＭＤ１１０Ｂに設けられたスピーカ１１８Ｂから出力される。また、ユーザ１９０Ｂの音声データは、サーバ１５０を介してユーザ１９０ＡのＨＭＤ１１０Ａに送信され、ＨＭＤ１１０Ａに設けられたスピーカ１１８Ａから出力される。
【０１０６】
図１３を用いて後述するように、ユーザ１９０Ｂの動き（ＨＭＤ１１０Ｂの動きおよびユーザ１９０Ｂの手の動き）は、アバター制御モジュール２３４Ａによりアバターオブジェクト１１００Ｂに反映される。これにより、ユーザ１９０Ａは、ユーザ１９０Ｂの動きを、アバターオブジェクト１１００Ｂを通じて認識できる。
【０１０７】
［サーバ１５０の制御構造］
図１２は、サーバ１５０のハードウェア構成およびモジュール構成を説明するための図である。ある実施形態において、サーバ１５０は、主たる構成要素として通信インターフェイス１２１０と、プロセッサ１２２０と、ストレージ１２３０とを備える。
【０１０８】
通信インターフェイス１２１０は、コンピュータ２００など外部の通信機器と信号を送受信するための変復調処理などを行なう無線通信用の通信モジュールとして機能する。通信インターフェイス１２１０は、チューナ、高周波回路等により実現される。
【０１０９】
プロセッサ１２２０は、サーバ１５０の動作を制御する。プロセッサ１２２０は、ストレージ１２３０に格納される各種の制御プログラムを実行することにより、送受信部１２２２、サーバ処理部１２２４、およびマッチング部１２２６として機能する。
【０１１０】
送受信部１２２２は、各コンピュータ２００と各種情報を送受信する。例えば、送受信部１２２２は、仮想空間２にオブジェクトを配置する要求、オブジェクトを仮想空間２から削除する要求、オブジェクトを移動させる要求、ユーザの音声、または仮想空間２を定義するための情報などを各コンピュータ２００に送信する。
【０１１１】
サーバ処理部１２２４は、複数のユーザが同じ仮想空間２を共有するために必要な処理を行なう。例えば、サーバ処理部１２２４は、コンピュータ２００から受信した情報に基づいて、後述するアバターオブジェクト情報１２３６を更新する。
【０１１２】
マッチング部１２２６は、複数のユーザを関連付けるための一連の処理を行なう。マッチング部１２２６は、例えば、複数のユーザが同じ仮想空間２を共有するための入力操作を行った場合に、仮想空間２に属するユーザ同士を関連付ける処理などを行なう。
【０１１３】
ストレージ１２３０は、仮想空間指定情報１２３２と、オブジェクト指定情報１２３４と、アバターオブジェクト情報１２３６と、ユーザ情報１２３８とを保持する。
【０１１４】
仮想空間指定情報１２３２は、コンピュータ２００の仮想空間定義モジュール２３１が仮想空間２を定義するために用いられる情報である。例えば、仮想空間指定情報１２３２は、仮想空間２の大きさを指定する情報や、仮想空間２を構成する各メッシュに展開されるコンテンツを含む。
【０１１５】
オブジェクト指定情報１２３４は、コンピュータ２００の仮想オブジェクト生成モジュール２３２が仮想空間２に配置するオブジェクトを指定する。
【０１１６】
アバターオブジェクト情報１２３６は、傾き情報１５４０とを含む。傾き情報１５４０は、仮想空間２における各アバターオブジェクトの傾きを示す。アバターオブジェクト情報１２３６は、コンピュータ２００から入力される情報（例えば、動き検知データ）に基づいて随時更新され得る。
【０１１７】
ユーザ情報１２３８は、コンピュータ２００のユーザ１９０についての情報である。ユーザ情報１２３８は、例えば、複数のユーザ１９０を互いに識別する識別情報（例えば、ユーザアカウント）を含む。
【０１１８】
［ユーザの動作をアバターオブジェクトに反映するための制御］
図１３を参照して、仮想空間におけるアバターオブジェクトの動作の制御方法について説明する。図１３は、現実空間におけるユーザの動作をアバターオブジェクトに反映するための、コンピュータ２００とサーバ１５０との信号のやりとりを表わすフローチャートである。図１３に示される処理は、コンピュータ２００のプロセッサ１０がメモリ１１またはストレージ１２に格納される制御プログラムを実行し、サーバ１５０のプロセッサ１２２０がストレージ１２３０に格納される制御プログラムを実行することにより実現され得る。
【０１１９】
ステップＳ１３０２において、サーバ１５０のプロセッサ１２２０は、送受信部１２２２として、コンピュータ２００Ａおよび２００Ｂから受信した仮想空間を生成するための要求に基づいて、仮想空間指定情報１２３２をコンピュータ２００Ａおよび２００Ｂに送信する。このとき、各コンピュータ２００は、仮想空間指定情報１２３２と併せてユーザ１９０の識別情報をサーバ１５０に送信し得る。プロセッサ１２２０はさらに、マッチング部１２２６として、ユーザ１９０Ａおよび１９０Ｂが同じ仮想空間を共有するものとして、彼らの識別情報を互いに関連付け得る。
【０１２０】
ステップＳ１３０４において、コンピュータ２００Ａのプロセッサ１０Ａは、仮想空間定義モジュール２３１Ａとして、受信した仮想空間指定情報１２３２に基づいて、仮想空間２Ａを定義する。ステップＳ１３０６において、コンピュータ２００Ｂのプロセッサ１０Ｂは、プロセッサ１０Ａと同様に仮想空間２Ｂを定義する。
【０１２１】
ステップＳ１３０８において、プロセッサ１２２０は、仮想空間２Ａおよび２Ｂに配置されるオブジェクトを指定するためのオブジェクト指定情報１２３４をコンピュータ２００Ａおよび２００Ｂに送信する。
【０１２２】
ステップＳ１３１０において、プロセッサ１０Ａは、仮想オブジェクト生成モジュール２３２Ａとして、受信したオブジェクト指定情報１２３４に基づいて、仮想空間２Ａにオブジェクトを配置する。ステップＳ１３１２において、プロセッサ１０Ｂは、プロセッサ１０Ａと同様に仮想空間２Ｂにオブジェクトを配置する。
【０１２３】
ステップＳ１３１４において、プロセッサ１０Ａは、アバター制御モジュール２３４Ａとして、ユーザ１９０Ａ自身のアバターオブジェクト１１００Ａ（図１６では「自アバターオブジェクト」と表記）を仮想空間２Ａに配置する。プロセッサ１０Ａはさらに、アバターオブジェクト１１００Ａの情報（例えば、モデリングのためのデータ、位置情報など）をサーバ１５０に送信する。
【０１２４】
ステップＳ１３１６において、プロセッサ１２２０は、受信したアバターオブジェクト１１００Ａの情報をストレージ１２３０（アバターオブジェクト情報１２３６）に保存する。プロセッサ１２２０はさらに、アバターオブジェクト１１００Ａの情報を、コンピュータ２００Ａと仮想空間を共有するコンピュータ２００Ｂに送信する。
【０１２５】
ステップＳ１３１８において、プロセッサ１０Ｂは、アバター制御モジュール２３４Ｂとして、受信したアバターオブジェクト１１００Ａの情報に基づいて、仮想空間２Ｂにアバターオブジェクト１１００Ａを配置する。
【０１２６】
ステップＳ１３２０〜Ｓ１３２４において、ステップＳ１３１４〜Ｓ１３１８と同様に、仮想空間２Ａおよび２Ｂにアバターオブジェクト１１００Ｂ（図１６では「他アバターオブジェクト」と表記）が生成され、ストレージ１２３０にアバターオブジェクト１１００Ｂの情報が保存される。
【０１２７】
ステップＳ１３２６において、プロセッサ１０Ａは、角速度検出モジュール２２４Ａとして、ジャイロセンサ１１４Ａの出力に基づいて、ＨＭＤ１１０Ａの各軸まわりの角速度を検知する。プロセッサ１０Ａはさらに、各軸まわりの角速度に基づいてＨＭＤ１１０Ａの傾きを検出し、この傾きに連動するように仮想空間２Ａに配置されるアバターオブジェクト１１００Ａの傾きを変更する。また、プロセッサ１０Ａは、検知したＨＭＤ１１０Ａの各軸まわりの角速度を示す動き検知データを、サーバ１５０に送信する。
【０１２８】
ステップＳ１３２８において、プロセッサ１０Ｂは、プロセッサ１０Ａと同様に、ジャイロセンサ１１４Ｂの出力に基づいて、仮想空間２Ｂに配置されるアバターオブジェクト１１００Ｂの傾きを変更する。プロセッサ１０Ｂはさらに、ジャイロセンサ１１４Ｂの出力に対応する動き検知データをサーバ１５０に送信する。
【０１２９】
ステップＳ１３３０において、プロセッサ１２２０は、サーバ処理部１２２４として、コンピュータ２００Ａから受信した動き検知データに基づいてアバターオブジェクト１１００Ａに対応する傾き情報１２４０を更新する。プロセッサ１２２０はさらに、コンピュータ２００Ｂから受信した動き検知データに基づいてアバターオブジェクト１１００Ｂに対応する傾き情報１２４０を更新する。
【０１３０】
ステップＳ１３３０において、プロセッサ１２２０はさらに、送受信部１２２２として、コンピュータ２００Ａから受信した動き検知データをコンピュータ２００Ｂに送信する。また、プロセッサ１２２０は、コンピュータ２００Ｂから受信した動き検知データをコンピュータ２００Ａに送信する。
【０１３１】
ステップＳ１３３２において、プロセッサ１０Ａは、受信した動き検知データに基づいて、仮想空間２Ａに配置されるアバターオブジェクト１１００Ｂの傾きを変更する。ステップＳ１３３４において、プロセッサ１０Ｂは、受信した動き検知データに基づいて、仮想空間２Ｂに配置されるアバターオブジェクト１１００Ａの傾きを変更する。
【０１３２】
ステップＳ１３３６において、プロセッサ１０Ａは、アバターオブジェクト１１００Ａの目の位置に配置される仮想カメラ１Ａが撮影する画像を、モニタ１１２Ａに表示する。これにより、ユーザ１９０Ａが視認する視界画像が更新される。その後、プロセッサ１０Ａは、処理をステップＳ１３２６に戻す。
【０１３３】
ステップＳ１３３８において、プロセッサ１０Ｂは、プロセッサ１０Ａと同様に、仮想カメラ１Ｂが撮影する画像をモニタ１１２Ｂに表示する。これにより、ユーザ１９０Ｂが視認する視界画像が更新される。その後、プロセッサ１０Ｂは、処理をステップＳ１３２８に戻す。
【０１３４】
ある実施形態において、繰り返し実行されるステップＳ１３２６〜Ｓ１３３８の処理は、１／６０秒または１／３０秒の間隔で実行され得る。
【０１３５】
上記の一連の処理により、ユーザ１９０は、仮想空間２において、相手のアバターオブジェクトを通じて、現実空間における他のユーザの動きを認識できる。
【０１３６】
なお、他の局面において、上記の繰り返し実行される処理は、ユーザ１９０の音声を、相手のコンピュータ２００に送信する処理、その他の仮想空間２におけるユーザ同士のコミュニケーションを促進する処理を含み得る。
【０１３７】
また、上記の例において、ステップＳ１３１４およびステップＳ１３２０において、コンピュータ２００は、当該コンピュータ２００のユーザ自身のアバターオブジェクトを仮想空間２に配置する構成であった。他の局面において、これらの処理は省略され得る。仮想空間２において相手のアバターオブジェクトさえ配置されていれば、相手とのコミュニケーションを図ることができるためである。
【０１３８】
［頭部を回転させるときの頭部と胴部との連動］
図１４は、現実空間におけるユーザ１９０の動きを正確にトラッキングできない場合について説明するための図である。状態（Ａ）において、ユーザ１９０の頭部１９１および胴部１９２は右方向を向いている。状態（Ｂ）において、ユーザ１９０の頭部１９１は正面を向いており、胴部１９２は右方向を向いている。状態（Ｃ）において、ユーザ１９０の頭部１９１および胴部１９２は正面を向いている。
【０１３９】
ある局面において、ユーザ１９０は、状態（Ａ）から状態（Ｂ）に遷移、すなわち、頭部１９１と胴部１９２とを連動させずに頭部１９１を回転させる（首をひねる）。この場合、ＨＭＤ１１０に設けられたジャイロセンサ１１４は、ヨー軸（ｖ軸）まわりの角速度（に相当する電圧値）を検知する。他の局面において、ユーザ１９０は状態（Ａ）から状態（Ｃ）に遷移、すなわち、頭部１９１と胴部１９２とを連動させて頭部１９１を回転させる（体全体を回転させる）。この場合も、ジャイロセンサ１１４は、ヨー軸まわりの角速度を検知する。
【０１４０】
上記のように、ジャイロセンサ１１４は、ユーザ１９０の頭部１９１の動きしか検知しておらず、胴部１９２の動きを検知していない。そのため、従来のコンピュータは、ジャイロセンサ１１４がヨー軸まわりの角速度を検知した場合に、ユーザ１９０が状態（Ａ）から状態（Ｂ）に遷移したのか、状態（Ａ）から状態（Ｃ）に遷移したのかを判断できなかった。従来のコンピュータにおいて、この判断を行なう場合、胴部１９２の動きをトラッキングするための新たなデバイスが必要であった。しかしながら、コストや場所の問題から、このような新たなデバイスを追加することが難しい場合もあり得る。
【０１４１】
そこで、ある実施形態に従うコンピュータ２００の回転制御モジュール２３５は、ジャイロセンサ１１４が検知するヨー軸まわりの角速度に基づいて、状態の遷移に関する上記の判断を行なう。以下、この制御について具体的に説明する。
【０１４２】
通常、頭部と胴部とを連動させずに頭部を回転させる場合（状態（Ａ）から状態（Ｂ）に遷移する場合）の頭部の回転速度は、頭部と胴部とを連動させて頭部を回転させる場合（状態（Ａ）から状態（Ｃ）に遷移する場合）の頭部の回転速度に比して速い。回転制御モジュール２３５は、この性質を利用して、状態の遷移に関する上記の判断を行なう。
【０１４３】
一例として、回転制御モジュール２３５は、ジャイロセンサ１１４が検知するヨー軸まわりの角速度がしきい値（例えば、３６０°／ｓｅｃ）以上である場合に、ユーザ１９０が頭部と胴部とを連動させずに頭部を回転させたと判断し得る。一方、回転制御モジュール２３５は、その角速度がそのしきい値未満である場合に、ユーザ１９０が頭部と胴部とを連動させて頭部を回転させたと判断し得る。
【０１４４】
図１５は、ヨー軸まわりの角速度がしきい値以上である場合のアバターオブジェクト１１００Ｂの動きの処理について説明するための図である。図１６は、ヨー軸まわりの角速度がしきい値未満である場合のアバターオブジェクト１１００Ｂの動きの処理について説明するための図である。
【０１４５】
ある局面において、コンピュータ２００Ａは、サーバ１５０を介してコンピュータ２００Ｂからジャイロセンサ１１４Ｂが検知するヨー軸まわりの角速度を示す情報（動き検知データ）を受信する。コンピュータ２００Ａは、この角速度がしきい値以上であると判断した場合、図１５に示されるように、角速度に従って、アバターオブジェクト１１００Ｂの頭部１１１０Ｂと胴部１１２０Ｂとを連動させずに頭部１１１０Ｂを回転させる。一方、コンピュータ２００Ａは、この角速度がしきい値未満であると判断した場合、図１６に示されるように、角速度に従って、アバターオブジェクト１１００Ｂの頭部１１１０Ｂと胴部１１２０Ｂとを連動させて頭部１１１０Ｂを回転させる。これにより、ユーザ１９０Ａは、仮想空間２Ａに配置されるアバターオブジェクト１１００Ｂの動きを視認して、現実空間におけるユーザ１９０Ｂの正確な動きを認識できる。
【０１４６】
［制御の流れ］
図１７を参照して、上記一連のアバターオブジェクトの頭部を回転させるときに、頭部と胴部とを連動させるか否かを判断する制御について説明する。図１７は、ユーザ１９０Ｂに対応するアバターオブジェクト１１００Ｂの動きをコンピュータ２００Ａが制御する処理について説明するフローチャートである。図１７に示される処理は、コンピュータ２００Ａのプロセッサ１０Ａが、メモリ１１Ａまたはストレージ１２Ａに格納される制御プログラムを実行することにより実現され得る。
【０１４７】
ステップＳ１７１０において、プロセッサ１０Ａは、サーバ１５０から受信した仮想空間指定情報１２３２に基づいて仮想空間２を定義する。
【０１４８】
ステップＳ１７２０において、プロセッサ１０Ａは、サーバ１５０を介してコンピュータ２００Ｂから受信したアバターオブジェクト１１００Ｂの情報に基づいて、仮想空間２Ａにアバターオブジェクト１１００Ｂを配置する。
【０１４９】
ステップＳ１７３０において、プロセッサ１０Ａは、サーバ１５０を介してコンピュータ２００Ｂからジャイロセンサ１１４Ｂが検知するヨー軸まわりの角速度を示す情報（動き検知データ）を受信する。
【０１５０】
ステップＳ１７４０において、プロセッサ１０Ａは、回転制御モジュール２３５Ａとして、ヨー軸まわりの角速度が予め定められたしきい値（例えば、３６０°／ｓｅｃ）以上であるか否かを判断する。このしきい値は、ストレージ１２に予め格納され得る。プロセッサ１０Ａは、角速度がしきい値以上であると判断した場合（ステップＳ１７４０においてＹＥＳ）、処理をステップＳ１７５０に進める。一方、プロセッサ１０Ａは、角速度がしきい値未満であると判断した場合（ステップＳ１７４０においてＮＯ）、処理をステップＳ１７６０に進める。
【０１５１】
ステップＳ１７５０において、プロセッサ１０Ａは、角速度に応じて、アバターオブジェクト１１００Ｂの頭部１１１０Ｂと胴部１１２０Ｂとを連動させずに、頭部１１１０Ｂをヨー軸まわりに回転させる。その後、プロセッサ１０Ａは、処理をステップＳ１７３０に戻す。
【０１５２】
ステップＳ１７６０において、プロセッサ１０Ａは、角速度に応じて、アバターオブジェクト１１００Ｂの頭部１１１０Ｂと胴部１１２０Ｂとを連動させて、頭部１１１０Ｂをヨー軸まわりに回転させる。その後、プロセッサ１０Ａは、処理をステップＳ１７３０に戻す。
【０１５３】
上記によれば、ある実施形態に従うコンピュータ２００は、ユーザの胴部の動きをトラッキングするためのデバイスを有さなくとも、ユーザの頭部が胴部と連動して回転しているか、胴部と連動せずに回転しているかを判断し得る。これにより、コンピュータ２００は、ユーザの動きを忠実にアバターオブジェクトに反映し得る。その結果、ユーザは、仮想空間を共有する他のユーザの動きをより忠実に再現したアバターオブジェクトを通じて、当該他のユーザとより円滑なコミュニケーションを実現し得る。
【０１５４】
なお、上記の例において、回転制御モジュール２３５は、角速度がしきい値以上であるか否かに基づいて、アバターオブジェクトの頭部と胴部とを連動させるか否かを判断するように構成されている。他の局面において、回転制御モジュール２３５は、ヨー軸まわりの角加速度がしきい値以上であるか否かに基づいてアバターオブジェクトの頭部と胴部とを連動させるか否かを判断するように構成されてもよい。
【０１５５】
［手のトラッキング情報を利用した制御］
上記の例では、コンピュータ２００は、ヨー軸まわりの角速度のみに基づいて、アバターオブジェクトの頭部と胴部とを連動させるか否かを判断するように構成されている。しかしながら、このコンピュータ２００は、ユーザが頭部と胴部とを連動させた状態で頭部を非常に速く回転させた場合などにおいて、ユーザの動きを誤って検出する可能性がある。そこで、以下、図１８〜図２０を用いて、このような誤検出を抑制するための制御方法について説明する。
【０１５６】
図１８は、頭部１９１が胴部１９２と連動して動くときの手の動きについて説明するための図である。図１８において、ユーザ１９０は、正面から右方向に頭部１９１と胴部１９２とを連動した状態で回転する。このとき、ユーザ１９０の手１８１０は通常、胴部１９２とともに正面から右方向に回転する。そのため、ユーザ１９０が回転している間、ＨＭＤ１１０に設けられたカメラ１１６が深度情報を取得可能な空間１８００には手１８１０が常に含まれる可能性が高い。換言すれば、頭部１９１が胴部１９２と連動して回転する間、コンピュータ２００は、ユーザ１９０の手１８１０の位置をトラッキングできる可能性が高い。
【０１５７】
図１９は、頭部１９１が胴部１９２と連動せずに動くときの手の動きについて説明するための図である。図１９において、ユーザ１９０は、頭部１９１を胴部１９２と連動させずに正面から右方向に回転する。このとき、ユーザ１９０の手１８１０は通常、胴部１９２に従い回転せずに正面に留まる。そのため、ユーザ１９０が回転すると、空間１８００から手１８１０が外れる可能性が高い。換言すれば、頭部１９１が胴部１９２と連動せずに回転すると、コンピュータ２００は、ユーザ１９０の手１８１０の位置をトラッキングできなくなる可能性が高い。
【０１５８】
ある実施形態に従うコンピュータ２００は、上記の性質を利用して、アバターオブジェクトの頭部と胴部とを連動させるか否かを判断する。具体的には、コンピュータ２００は、ユーザ１９０の手１８１０の位置をトラッキングできている（カメラ１１６が手１８１０の深度情報を取得している）ときは、ジャイロセンサ１１４が検知するヨー軸周りの角速度に従いアバターオブジェクトの頭部を胴部と連動させた状態で回転させる。一方、コンピュータ２００は、手１８１０の位置をトラッキングできないときは、ヨー軸まわりの角速度に従いアバターオブジェクトの頭部を胴部と連動させずに回転させる。
【０１５９】
図２０は、手のトラッキング情報を利用してアバターオブジェクト１１００Ｂの動きをコンピュータ２００Ａが制御する処理について説明するフローチャートである。なお、図１７と同一符号を付している処理は、図１７の処理と同じである。そのため、それらの処理についての説明は繰り返さない。
【０１６０】
ステップＳ１７４０において、プロセッサ１０Ａは、サーバ１５０を介してコンピュータ２００Ｂから受信したＨＭＤ１１０Ｂのヨー軸まわりの角速度が予め定められたしきい値以上であると判断した場合（ステップＳ１７４０においてＹＥＳ）、処理をステップＳ２０１０に進める。
【０１６１】
ステップＳ２０１０において、プロセッサ１０Ａは、ユーザ１９０Ｂの手の位置をトラッキングできているのか否かを判断する。プロセッサ１０Ａは、サーバ１５０を介してコンピュータ２００Ｂから、ユーザ１９０Ｂの手の位置を示す情報（トラッキングデータ）を受信できている場合に、ユーザ１９０Ｂの手の位置をトラッキングできていると判断し得る。
【０１６２】
なお、他の局面において、コンピュータ２００Ｂは、カメラ１１６Ｂが深度情報を取得可能な範囲からユーザ１９０Ｂの手が外れた場合に、その旨を知らせる信号をコンピュータ２００Ａに出力し得る。プロセッサ１０Ａは、当該信号を受信した場合に、ユーザ１９０Ｂの手の位置をトラッキングできなくなったと判断してもよい。
【０１６３】
プロセッサ１０Ａは、ユーザ１９０Ｂの手の位置をトラッキングできていると判断した場合（ステップＳ２０１０においてＹＥＳ）、処理をステップＳ１７５０に進める。一方、プロセッサ１０Ａは、ユーザ１９０Ｂの手の位置をトラッキングできていないと判断した場合（ステップＳ２０１０においてＮＯ）、処理をステップＳ１７６０に進める。
【０１６４】
上記のように、ある実施形態に従うコンピュータ２００は、ヨー軸まわりの角速度に加え、さらに手のトラッキング情報を用いてアバターオブジェクトの頭部と胴部とを連動させるか否かを判断するように構成されている。そのため、このコンピュータ２００は、ユーザの動きを誤って検出することを抑制し得る。
【０１６５】
なお、他の局面において、コンピュータ２００は、手のトラッキング情報にのみ基づいて、アバターオブジェクトの頭部と胴部とを連動させるか否かを判断するように構成されてもよい。この場合、コンピュータ２００は、図２０においてステップＳ１７４０の処理を省略し、ステップＳ１７３０からステップＳ２０１０に処理を進め得る。
【０１６６】
［回転角度に基づく制御］
上記の実施形態において、コンピュータ２００は、ユーザの頭部のヨー軸まわりの角速度に応じて、アバターオブジェクトの頭部と胴部とを連動させるか否かを判断するように構成されている。他の実施形態に従うコンピュータ２００は、角速度ではなく、回転角度に応じてこの判断を行なう。
【０１６７】
他の実施形態に従うコンピュータ２００における上記の判断制御の概略について説明する。ユーザ１９０（人間）は、正面を向いている状態（首をひねっていない状態）からヨー角θｖ１の位置に配置される物体を見ようとする場合、ヨー角θｖ１に応じて、頭だけを回転させるか、体ごと回転させるかを判断し得る。具体的には、ユーザ１９０は、ヨー角θｖ１が大きい場合（例えば、６０°以上）に体ごと回転（頭部と胴部とを連動させて回転）させて物体を視認し得る。また、ユーザ１９０は、ヨー角θｖ１が小さい場合（例えば、６０°未満）に、頭だけ回転（頭部と胴部とを連動させずに回転）させて物体を視認し得る。
【０１６８】
上記の性質を利用して、他の実施形態に従うコンピュータ２００は、ユーザ１９０の基準状態（首をひねっていない状態）に対する頭部のヨー軸まわりの回転角度がしきい値（例えば、６０°）未満の場合に、アバターオブジェクトの頭部を胴部と連動させずに回転させる。また、このコンピュータ２００は、その回転角度がしきい値以上の場合に、アバターオブジェクトの頭部と胴部とを連動させて回転させる。以下、他の実施形態に従うコンピュータ２００の具体的な構成および制御について説明する。
【０１６９】
図２１は、他の実施形態に従うコンピュータ２００のモジュール構成を表すブロック図である。なお、図８と同一符号を付している部分は、図８のデバイスまたはモジュールと同じである。そのため、その部分についての説明は繰り返さない。また、他の実施形態に従うコンピュータ２００のハードウェア構成は、図２に示されるハードウェア構成と同じである。
【０１７０】
他の実施形態に従うコンピュータ２００は、図８に示される構成に加えて、基準状態検出モジュール２２８と、回転角度検出モジュール２２９とをさらに備える。
【０１７１】
基準状態検出モジュール２２８は、ユーザ１９０が首をひねっていないと推定される状態（以下、「基準状態」とも称する）を検出する。基準状態検出モジュール２２８は、基準状態におけるＨＭＤ１１０のヨー角（以下、「基準角度」とも称する）θｖｓをメモリ１１に保存する。一例として、基準状態検出モジュール２２８は、予め定められた期間（例えば、５秒間）にわたりユーザ１９０の頭が略停止している状態を基準状態として検出する。基準状態検出モジュール２２８は、ジャイロセンサ１１４が検知するヨー軸まわりの角速度がしきい値（例えば、１０ｄｅｇｒｅｅ／ｓｅｃ）未満である場合に、ユーザ１９０の頭が略停止していると判断し得る。ユーザ１９０（人間）は、通常、首をひねった状態を長時間維持し続けることはしないためである。
【０１７２】
回転角度検出モジュール２２９は、基準角度θｖｓに対する回転角度を算出する。より具体的には、回転角度検出モジュール２２９は、ジャイロセンサ１１４が検知するヨー軸まわりの角速度に基づいてその時点におけるヨー角θｖを算出し、ヨー角θｖと基準角度θｖｓとの差分を基準角度θｖｓに対する回転角度として検出する。
【０１７３】
図２２は、他の実施形態に従う、ユーザ１９０Ｂに対応するアバターオブジェクト１１００Ｂの動きをコンピュータ２００Ａが制御する処理を表わすフローチャートである。なお、図１７と同一符号を付している処理は、図１７の処理と同じである。そのため、それらの処理についての説明は繰り返さない。
【０１７４】
ステップＳ２２１０において、プロセッサ１０Ａは、回転角度検出モジュール２２９Ａとして、コンピュータ２００Ｂから受信したヨー軸まわり角速度に基づいて、基準状態（メモリ１１Ａに格納される基準角度θｖｓ）に対する回転角度を算出する。
【０１７５】
ステップＳ２２２０において、プロセッサ１０Ａは、基準状態（基準角度θｖｓ）に対する回転角度がしきい値（例えば、６０°）以上であるか否かを判断する。プロセッサ１０Ａは、基準状態に対する回転角度がしきい値未満であると判断した場合（ステップＳ２２２０においてＮＯ）、処理をステップＳ２２３０に進める。一方、プロセッサ１０Ａは、その回転角度がしきい値以上であると判断した場合（ステップＳ２２２０においてＹＥＳ）、処理をステップＳ２２４０に進める。
【０１７６】
ステップＳ２２３０において、プロセッサ１０Ａは、基準状態に対する回転角度に応じて、アバターオブジェクト１１００Ｂの頭部と胴部とを連動させずに、頭部１１１０Ｂをヨー軸まわりに回転させる。その後、プロセッサ１０Ａは、処理をステップＳ２２５０に進める。
【０１７７】
ステップＳ２２４０において、プロセッサ１０Ａは、基準状態に対する回転角度に応じて、アバターオブジェクト１１００Ｂの頭部１１１０Ｂと胴部１１２０Ｂとを連動させて、頭部１１１０Ｂをヨー軸まわりに回転させる。
【０１７８】
ステップＳ２２５０において、プロセッサ１０Ａは、基準状態検出モジュール２２８Ａとして、コンピュータ２００Ｂから受信したヨー軸まわり角速度に基づいて、予め定められた期間にわたりユーザ１９０Ｂの頭が略停止しているか否かを判断する。
【０１７９】
プロセッサ１０Ａは、予め定められた期間にわたりユーザ１９０Ｂの頭が略停止していると判断した場合（ステップＳ２２５０においてＹＥＳ）、処理をステップＳ２２６０に進める。一方、プロセッサ１０Ａは、予め定められた期間にわたりユーザ１９０Ｂの頭が略停止していないと判断した場合（ステップＳ２２５０においてＮＯ）、処理をステップＳ１７３０に戻す。
【０１８０】
ステップＳ２２６０において、プロセッサ１０Ａは、その時点におけるアバターオブジェクト１１００Ｂのヨー角θｖを、基準角度θｖｓとしてメモリ１１に保存する。これにより、基準状態（基準角度θｖｓ）が更新される。
【０１８１】
上記によれば、他の実施形態に従うコンピュータ２００は、他のコンピュータ２００を使用する他のユーザの基準状態に対する、他のユーザの頭部のヨー軸まわりの回転角度に基づいて、他のユーザに対応するアバターオブジェクトの頭部と胴部とを連動させるか否かを判断できる。このような実施形態に従うコンピュータ２００も、ユーザの動きを忠実にアバターオブジェクトに反映し得る。
【０１８２】
なお、他の局面において、他の実施形態に従うコンピュータ２００は、上述した手のトラッキング情報を利用したユーザの動きの誤検出を抑制する制御を、上記回転角度に基づくアバターオブジェクトの動きの制御に適用し得る。
【０１８３】
［構成］
以上に開示された技術的特徴は、以下のように要約され得る。
【０１８４】
（構成１）  アバターオブジェクト１１００Ｂの動作を制御するためにコンピュータ２００Ａで実行される方法が提供される。この方法は、仮想空間２Ａを定義するステップ（Ｓ１７１０）と、仮想空間２Ａを介して通信するユーザ１９０Ｂのアバターオブジェクト１１００Ｂを仮想空間に配置するステップ（Ｓ１７２０）と、ユーザ１９０Ｂの頭の角速度を示す情報を取得するステップ（Ｓ１７３０）と、角速度がしきい値以上の場合（Ｓ１７４０においてＹＥＳ）に、角速度に応じて、アバターオブジェクト１１００Ｂの頭部と胴部とを連動させずに頭部を回転させるステップ（Ｓ１７５０）とを備える。
【０１８５】
（構成２）  （構成１）に従う方法は、角速度がしきい値未満の場合（Ｓ１７４０においてＮＯ）に、角速度に応じて、アバターオブジェクト１１００Ｂの頭部と胴部とを連動させて頭部を回転させるステップ（Ｓ１７６０）をさらに備える。
【０１８６】
（構成３）  （構成１）または（構成２）に従う方法は、ユーザ１９０Ｂの手の位置をトラッキングするためのデータを取得するステップをさらに備える。アバターオブジェクト１１００Ｂの頭部と胴部とを連動させずに頭部を回転させるステップは、ユーザ１９０Ｂの手の位置をトラッキングできない場合（Ｓ２０１０においてＮＯ）に角速度に応じて、アバターオブジェクト１１００Ｂの頭部と胴部とを連動させずに頭部を回転させることを含む。
【０１８７】
（構成４）  （構成１）〜（構成３）のいずれかにおいて、ユーザ１９０Ｂの頭の角速度を示す情報を取得するステップは、ユーザ１９０Ｂが装着するＨＭＤ１１０Ｂに設けられたジャイロセンサ１１４Ｂの、ヨー軸まわりの検知結果を受信することを含む。
【０１８８】
（構成５）  他の局面に従うと、アバターオブジェクト１１００Ｂの動作を制御するためにコンピュータ２００Ａで実行される方法が提供される。この方法は、仮想空間２Ａを定義するステップ（Ｓ１７１０）と、仮想空間２Ａを介して通信するユーザ１９０Ｂのアバターオブジェクト１１００Ｂを仮想空間２Ａに配置するステップ（Ｓ１７２０）と、ユーザ１９０Ｂの基準状態に対する頭の回転角度を示す情報を取得するステップ（Ｓ２２１０）と、回転角度がしきい値未満の場合（Ｓ２２２０においてＮＯ）に、回転角度に応じて、アバターオブジェクト１１００Ｂの頭部と胴部とを連動させずに頭部を回転させるステップ（Ｓ２２３０）とを備える。
【０１８９】
（構成６）  （構成５）に従う方法は、回転角度がしきい値以上の場合（Ｓ２２２０においてＹＥＳ）に、回転角度に応じて、アバターオブジェクト１１００Ｂの頭部と胴部とを連動させて頭部を回転させるステップ（Ｓ２２４０）をさらに備える。
【０１９０】
（構成７）  （構成５）または（構成６）に従う方法は、ユーザ１９０Ｂの手の位置をトラッキングするためのデータを取得するステップをさらに備える。アバターオブジェクト１１００Ｂの頭部と胴部とを連動させずに頭部を回転させるステップは、ユーザ１９０Ｂの手の位置をトラッキングできない場合に回転角度に応じて、アバターオブジェクト１１００Ｂの頭部と胴部とを連動させずに頭部を回転させることを含む。
【０１９１】
（構成８）  （構成５）〜（構成７）のいずれかにおいて、基準状態は、予め定められた期間にわたりユーザ１９０Ｂの頭が略停止した状態を含む。
【０１９２】
（構成９）  （構成５）〜（構成８）のいずれかにおいて、回転角度を示す情報取得するステップは、ユーザ１９０Ｂが装着するＨＭＤ１１０Ｂに設けられたジャイロセンサ１１４Ｂの、ヨー軸まわりの検知結果を受信することを含む。
【０１９３】
今回開示された実施形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１９４】
１  仮想カメラ、２  仮想空間、５  基準視線、１０，１２２０  プロセッサ、１１  
メモリ、１２，１２３０  ストレージ、１３  入出力インターフェイス、１４，１２１０
通信インターフェイス、１９  ネットワーク、２２  仮想空間画像、２３  視認領域、
２６，１１３０  視界画像、１００  システム、１０５  ＨＭＤセット、１１２  モニタ
、１１４  ジャイロセンサ、１１６  カメラ、１１８  スピーカ、１１９  マイク、１２
０  センサ、１４０  注視センサ、１５０  サーバ、１９０  ユーザ、１９１，１１１０
Ｂ  頭部、１９２，１１２０Ｂ  胴部、２００  コンピュータ、２２０  表示制御モジュ
ール、２２１  仮想カメラ制御モジュール、２２２  視界領域決定モジュール、２２３  
視界画像生成モジュール、２２４  角速度検出モジュール、２２５  基準視線特定モジュ
ール、２２６  動き検出モジュール、２２７  トラッキングモジュール、２２８  基準状
態検出モジュール、２２９  回転角度検出モジュール、２３０  仮想空間制御モジュール
、２３１  仮想空間定義モジュール、２３２  仮想オブジェクト生成モジュール、２３３
操作オブジェクト制御モジュール、２３４  アバター制御モジュール、２３５  回転制
御モジュール、２４０  メモリモジュール、２４１  空間情報、２４２  オブジェクト情
報、２４３，１２３８  ユーザ情報、２４４  動き検知データ、２５０  通信制御モジュ
ール、１１００Ａ，１１００Ｂ  アバターオブジェクト、１２２２  送受信部、１２２４
サーバ処理部、１２２６  マッチング部、１２３２  仮想空間指定情報、１２３４  オ
ブジェクト指定情報、１２３６  アバターオブジェクト情報。
【図１】
2018116684.tif 000003
【図２】
2018116684.tif 000004
【図３】
2018116684.tif 000005
【図４】
2018116684.tif 000006
【図５】
2018116684.tif 000007
【図６】
2018116684.tif 000008
【図７】
2018116684.tif 000009
【図８】
2018116684.tif 000010
【図９】
2018116684.tif 000011
【図１０】
2018116684.tif 000012
【図１１】
2018116684.tif 000013
【図１２】
2018116684.tif 000014
【図１３】
2018116684.tif 000015
【図１４】
2018116684.tif 000016
【図１５】
2018116684.tif 000017
【図１６】
2018116684.tif 000018
【図１７】
2018116684.tif 000019
【図１８】
2018116684.tif 000020
【図１９】
2018116684.tif 000021
【図２０】
2018116684.tif 000022
【図２１】
2018116684.tif 000023
【図２２】
2018116684.tif 000024