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