(57)【要約】【課題】仮想空間においてアバターオブジェクト間のコミュニケーションを豊かにする。【解決手段】プロセッサが実行する処理は、仮想空間を定義するステップ（Ｓ１８１０）と、仮想空間にコンテンツを投影するステップ（Ｓ１８２０）と、仮想空間にＮＰＣオブジェクトを提示するステップ（Ｓ１８３０）と、仮想カメラの姿勢に基づき視界画像を生成するステップ（Ｓ１８４０）と、コンピュータから送られた信号に基づいてＨＭＤのユーザによる動作を検出するステップ（Ｓ１８５０）と、検出された動作に応答して、ＮＰＣオブジェクトの行動を制御するステップ（Ｓ１８６０）と、行動が制御されたＮＰＣオブジェクトを仮想空間に提示するステップ（Ｓ１８７０）とを含む。【選択図】図１８
2019106220.tif 000002
【特許請求の範囲】
【請求項１】
ヘッドマウントデバイスを介して仮想空間を提供するためにコンピュータで実行されるプログラムであって、前記プログラムはコンピュータに、
仮想空間を定義するステップと、
前記仮想空間にノンプレイヤーキャラクター（ＮＰＣ）オブジェクトを提示するステップと、
前記ヘッドマウントデバイスのユーザによる動作を検出するステップと、
前記動作を検出したことに応答して、前記ＮＰＣオブジェクトの行動を制御するステップとを実行させる、プログラム。
【請求項２】
前記動作を検出するステップは、前記ユーザの表情を検出するステップを含み、
前記制御するステップは、前記表情の検出結果に基づいて、前記ＮＰＣオブジェクトの行動を制御するステップを含む、請求項１に記載のプログラム。
【請求項３】
前記制御するステップは、前記表情の検出結果に基づいて、前記ユーザの感情を判定し、判定した前記ユーザの感情に応じて、前記ＮＰＣオブジェクトの行動を制御することを含む、請求項２に記載のプログラム。
【請求項４】
前記制御するステップは、
ＮＰＣオブジェクトの行動として予め準備された複数の行動テンプレートから前記検出された表情に対応する行動テンプレートを選択するステップと、
前記選択された行動テンプレートを前記ＮＰＣオブジェクトに反映することにより、前記ユーザの表情の検出結果に応じた行動を行うＮＰＣオブジェクトを提示するステップとを含む、請求項２に記載のプログラム。
【請求項５】
前記ＮＰＣオブジェクトを提示するステップは、第１の行動を前記ＮＰＣオブジェクトに行わせることを含み、
前記検出するステップは、前記ＮＰＣオブジェクトが第１の行動を行ったことに反応した前記ヘッドマウントデバイスのユーザの表情を検出することを含み、
前記制御するステップは、
ＮＰＣオブジェクトの第１の行動に反応した前記ユーザの表情の検出結果に対して予め準備された複数の行動テンプレートから、前記ユーザの表情の検出結果に対応する行動テンプレートを第２の行動として選択するステップと、
前記第１の行動に続けて前記第２の行動を前記ＮＰＣオブジェクトに反映することにより、前記ユーザの表情の検出結果に応じた行動を行うＮＰＣオブジェクトを提示するステップとを含む、請求項２に記載のプログラム。
【請求項６】
ヘッドマウントデバイスによって提供される仮想空間を介して通信するためにコンピュータで実行されるプログラムであって、前記プログラムはコンピュータに、
仮想空間を定義するステップと、
前記ヘッドマウントデバイスのユーザの表情を検出するステップと、
前記ヘッドマウントデバイスのユーザに対応するアバターオブジェクトとして、予め準備された一つ以上の表情を有するアバターオブジェクトを表示するためのデータにアクセスするステップと、
前記検出される前記ユーザの表情の変化に応じて、前記データに基づく表情を有するアバターオブジェクトを前記仮想空間に提示するステップとを実行させる、プログラム。
【請求項７】
前記ユーザの表情の検出結果の変化率が予め定められた範囲内にある場合に、前記アバターオブジェクトの表情が一定の表情となるように、前記データは規定されている、請求項６に記載のプログラム。
【請求項８】
前記アバターオブジェクトを前記仮想空間に提示するステップは、前記検出された表情を当該ユーザに対応するアバターオブジェクトの表情に反映させることなく、予め準備された表情が反映されたアバターオブジェクトを提示するステップを含む、請求項７に記載のプログラム。
【請求項９】
前記プログラムは、前記コンピュータに、前記予め準備された表情が反映されたアバターオブジェクトの購入を受け付けるインターフェイスオブジェクトを前記仮想空間に提示するステップをさらに実行させる、請求項７に記載のプログラム。
【請求項１０】
前記プログラムは、前記コンピュータに、前記ユーザの表情の検出結果をアバターオブジェクトに反映するか否かの指定を前記ユーザから受け付けるステップをさらに実行させ、
前記予め準備された表情が反映されたアバターオブジェクトを提示するステップは、前記ユーザの表情を前記アバターオブジェクトに反映するか否かを規定する前記設定に従って、当該アバターオブジェクトを提示するステップを含む、請求項８または９に記載のプログラム。
【請求項１１】
予め準備された表情が反映されたアバターオブジェクトを提示するステップは、前記仮想空間を共有する他のユーザの視界に対応する領域内に前記ヘッドマウントデバイスのユーザのアバターオブジェクトが入ったことに基づいて、当該アバターオブジェクトの表情を前記予め準備された表情が反映されたアバターオブジェクトを提示するステップを含む、請求項８〜１０のいずれかに記載のプログラム。
【請求項１２】
請求項１〜１１のいずれかに記載のプログラムを格納したメモリと、
前記メモリに結合され、前記プログラムを実行するためのプロセッサとを備える、情報処理装置。
【請求項１３】
ヘッドマウントデバイスを介して仮想空間を提供するためにコンピュータで実行される方法であって、
仮想空間を定義するステップと、
前記仮想空間にノンプレイヤーキャラクター（ＮＰＣ）オブジェクトを提示するステップと、
前記ヘッドマウントデバイスのユーザによる動作を検出するステップと、
前記動作を検出したことに応答して、前記ＮＰＣオブジェクトの行動を制御するステップと含む、方法。
【請求項１４】
ヘッドマウントデバイスによって提供される仮想空間を介して通信するためにコンピュータで実行される方法であって、
仮想空間を定義するステップと、
前記ヘッドマウントデバイスのユーザの表情を検出するステップと、
前記ヘッドマウントデバイスのユーザに対応するアバターオブジェクトとして、予め準備された一つ以上の表情を有するアバターオブジェクトを表示するためのデータにアクセスするステップと、
前記検出される前記ユーザの表情の変化に応じて、前記データに基づく表情を有するアバターオブジェクトを前記仮想空間に提示するステップとを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ヘッドマウントデバイス（Head  Mounted  Device：ＨＭＤ）を用いた仮想体験の提供に関し、より特定的には、ＨＭＤによって提供される仮想現実空間におけるアバターオブジェクトの表示を制御する技術に関する。
【背景技術】
【０００２】
仮想現実空間（以下、単に「仮想空間」ともいう。）を介してコンテンツを提供し、あるいは、アバター（「アバターオブジェクト」という場合もある。）を用いてコミュニケーションを行なう技術が知られている。例えば、特開２００９−１８１４５７号公報（特許文献１）は、「チャット・ソフトにおいて、活発に発言を行うアバターと、そうでないアバターとを視覚的に判別できる」技術を開示している（［要約］の［解決手段］参照）。また、特許第６２１２６６７号公報（特許文献２）は、「仮想空間を介した通信においてアバターオブジェクトの表示と音声出力とを同期させ、違和感を感じさせない技術」を開示している（［要約］の［解決手段］参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１８１４５７号公報
【特許文献２】特許第６２１２６６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
仮想空間を介してコミュニケーションを促進するためには、ＨＭＤのユーザに対応するアバターオブジェクトおよび対応しないオブジェクトのいずれについても、場面に応じた適切な表情を有することが必要となる。したがって、仮想空間に提示されるアバターオブジェクトの表情を豊かにする技術が必要とされている。
【０００５】
また、現実空間における通信相手となるＨＭＤのユーザのアバターオブジェクト以外に、所謂ノンプレイヤーキャラクタ（ＮＰＣ）オブジェクトと言われる、仮想空間で提示されるコンテンツに予め組み込まれているオブジェクトも仮想空間に提示される場合がある。したがって、仮想空間におけるコミュニケーションにおいて、そのようなＮＰＣオブジェクトの表情も豊かにする必要性も生じ得る。また、この場合、コンテンツの進行に合わせてリアルタイムに表情をＮＰＣオブジェクトに反映する技術が必要となる。その一方、アバターオブジェクトの表情をリアルタイムに反映させたくない場合も生じ得る。したがって、アバターオブジェクトの表情を適切に制御するための技術が必要とされている。
【０００６】
本開示は上述のような問題点を解決するためになされたものであって、ある局面における目的は、アバターオブジェクトの表情を豊かにする技術を提供することである。他の局面における目的は、アバターオブジェクトの表情を適切に制御するための技術を提供することである。
【課題を解決するための手段】
【０００７】
ある実施の形態に従うと、ヘッドマウントデバイスを介して仮想空間を提供するためにコンピュータで実行されるプログラムが提供される。このプログラムはコンピュータに、仮想空間を定義するステップと、仮想空間にノンプレイヤーキャラクター（ＮＰＣ）オブジェクトを提示するステップと、ヘッドマウントデバイスのユーザによる動作を検出するステップと、動作を検出したことに応答して、ＮＰＣオブジェクトの行動を制御するステップとを実行させる。
【発明の効果】
【０００８】
ある局面において、現実空間においてヘッドマウントデバイスを装着したユーザの表情変化が仮想空間に提示されるアバターオブジェクトの表情にリアルタイムに反映されるので、コミュニケーションが促進され得る。
【０００９】
この発明の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解されるこの発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【００１０】
【図１】ある実施の形態に従うＨＭＤシステム１００の構成の概略を表す図である。
【図２】一局面に従うコンピュータ２００のハードウェア構成の一例を表すブロック図である。
【図３】ある実施の形態に従うＨＭＤ１１０に設定されるｕｖｗ視野座標系を概念的に表す図である。
【図４】ある実施の形態に従う仮想空間２を表現する一態様を概念的に表す図である。
【図５】ある実施の形態に従うＨＭＤ１１０を装着するユーザ１９０の頭部を上から表した図である。
【図６】仮想空間２において視界領域２３をＸ方向から見たＹＺ断面を表す図である。
【図７】仮想空間２において視界領域２３をＹ方向から見たＸＺ断面を表す図である。
【図８】ある実施の形態に従うコントローラ１６０の概略構成を表す図である。
【図９】ある実施の形態に従うコンピュータ２００をモジュール構成として表すブロック図である。
【図１０】ある実施の形態に従うＨＭＤシステム１００において実行される処理の一部を表すシーケンスチャートである。
【図１１】ユーザの顔画像５０から口を検出する制御について説明する図である。
【図１２】トラッキングモジュール２６２が口の形状を検出する処理を説明する図（その１）である。
【図１３】トラッキングモジュール２６２が口の形状を検出する処理を説明するための図（その２）である。
【図１４】フェイストラッキングのためにストレージ１２に格納されたデータの一例を表す図である。
【図１５】ユーザ１９０が無表情時に取得される顔の特徴点を表す図である。
【図１６】ユーザ１９０が驚いたときに取得される顔の特徴点を表す図である。
【図１７】ネットワーク１９に接続されている複数のＨＭＤのそれぞれが、複数のユーザのそれぞれに仮想空間を提供する状況を模式的に示す図である。
【図１８】ＮＰＣオブジェクトが提示される処理の一部を表わすフローチャートである。
【図１９】サーバ１５０が備えるストレージ１５４におけるデータの格納の一態様を表わす図である。
【図２０】ＨＭＤ１１０を装着したユーザ１９０の表情の変化がそのままリアルにアバターオブジェクトに反映されないようにするための処理の一部を表わすフローチャートである。
【図２１】ストレージ１５４におけるデータの格納の他の態様を表わす図である。
【図２２】プロセッサが実行する処理の一部を表わすフローチャートである。
【図２３】ポーカーフェイスオブジェクトの購入を受け付けるインターフェイスを表わす図である。
【図２４】二人のユーザが同一のアプリケーションを実行することにより、仮想空間２を共有している状態を表わす図である。
【図２５】プロセッサ１５１が実行する処理の一部を表わすフローチャートである。
【図２６】ポーカーフェイスオブジェクトとして他ユーザに視認されるアバターオブジェクトの表示を表わす図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００１２】
［ＨＭＤシステムの構成］
図１を参照して、ＨＭＤ（Head-Mounted  Device）システム１００の構成について説明する。図１は、ある実施の形態に従うＨＭＤシステム１００の構成の概略を表す図である。ある局面において、ＨＭＤシステム１００は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。
【００１３】
ＨＭＤシステム１００は、ＨＭＤ１１０と、ＨＭＤセンサ１２０と、コントローラ１６０と、コンピュータ２００とを備える。ＨＭＤ１１０は、モニタ１１２と、注視センサ１４０と、スピーカ１１５と、第１カメラ１１６と、第２カメラ１１７と、マイク１１９とを含む。コントローラ１６０は、モーションセンサ１３０を含み得る。
【００１４】
ある局面において、コンピュータ２００は、インターネットその他のネットワーク１９に接続可能であり、ネットワーク１９に接続されているサーバ１５０その他のコンピュータと通信可能である。他の局面において、ＨＭＤ１１０は、ＨＭＤセンサ１２０の代わりに、センサ１１４を含み得る。
【００１５】
サーバ１５０は、プロセッサ１５１と、メモリ１５２と、通信インターフェイス１５３とを含む。サーバ１５０は、周知の構成を有するコンピュータによって実現される。プロセッサ１５１は、命令を実行する。メモリ１５２は、ＲＡＭ（Random  Access  Memory）その他の揮発性メモリである。通信インターフェイス１５３は、コンピュータ２００、ユーザ端末２０１Ａ，２０１Ｎ等と通信する。ストレージ１５４は、サーバ１５０がコンピュータ２００その他の外部の装置から受信したデータまたはプロセッサ１５１によって生成されたデータを保持する。ストレージ１５４は、例えば、ハードディスク、ＳＳＤ（Solid  State  Disc）その他の不揮発性の記憶装置によって実現され得る。
【００１６】
ＨＭＤ１１０は、ユーザ１９０の頭部に装着され、動作中に仮想空間２をユーザ１９０に提供し得る。より具体的には、ＨＭＤ１１０は、右目用の画像および左目用の画像をモニタ１１２にそれぞれ表示する。ユーザ１９０の各目がそれぞれの画像を視認すると、ユーザ１９０は、両目の視差に基づき当該画像を３次元の画像として認識し得る。
【００１７】
モニタ１１２は、たとえば、非透過型の表示装置として実現される。ある局面において、モニタ１１２は、ユーザ１９０の両目の前方に位置するようにＨＭＤ１１０の本体に配置されている。したがって、ユーザ１９０は、モニタ１１２に表示される３次元画像を視認すると、仮想空間２に没入することができる。ある実施の形態において、仮想空間２は、たとえば、背景、ユーザ１９０が操作可能なオブジェクト、ユーザ１９０が選択可能なメニューの画像を含む。複数のコンピュータ２００が各ユーザの動作に基づく信号を受け渡しすることで、複数のユーザが一の仮想空間２で仮想体験できる構成であれば、各ユーザに対応するアバターオブジェクトが、仮想空間２に提示される。
【００１８】
なお、オブジェクトとは、仮想空間２に存在する仮想の物体である。ある局面において、オブジェクトは、ユーザに対応するアバターオブジェクト、アバターオブジェクトが身に着ける仮想アクセサリおよび仮想衣類、ユーザに関する情報が示されたパネルを模した仮想パネル、手紙を模した仮想手紙、およびポストを模した仮想ポストなどを含む。さらに、アバターオブジェクトは、仮想空間２においてユーザ１９０を象徴するキャラクタであり、たとえば人型、動物型、ロボット型などを含む。オブジェクトの形は様々である。ユーザ１９０は、予め決められたオブジェクトの中から好みのオブジェクトを仮想空間２に提示するようにしてもよいし、自分が作成したオブジェクトを仮想空間２に提示するようにしてもよい。
【００１９】
ある実施の形態において、モニタ１１２は、所謂スマートフォンその他の情報表示端末が備える液晶モニタまたは有機ＥＬ（Electro  Luminescence）モニタとして実現され得る。
【００２０】
ある局面において、モニタ１１２は、右目用の画像を表示するためのサブモニタと、左目用の画像を表示するためのサブモニタとを含み得る。他の局面において、モニタ１１２は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、モニタ１１２は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
【００２１】
注視センサ１４０は、ユーザ１９０の右目および左目の視線が向けられる方向（視線方向）を検出する。当該方向の検出は、たとえば、公知のアイトラッキング機能によって実現される。注視センサ１４０は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ１４０は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ１４０は、たとえば、ユーザ１９０の右目および左目に赤外光を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ１４０は、検出した各回転角に基づいて、ユーザ１９０の視線方向を検知することができる。
【００２２】
スピーカ１１５は、コンピュータ２００から受信した音声データに対応する音声（発話）を外部に出力する。マイク１１９は、ユーザ１９０の発話に対応する音声データをコンピュータ２００に出力する。ユーザ１９０は、マイク１１９を用いて他のユーザに向けて発話する一方で、スピーカ１１５を用いて他のユーザの音声（発話）を聞くことができる。
【００２３】
より具体的には、ユーザ１９０がマイク１１９に向かって発話すると、当該ユーザ１９０の発話に対応する音声データがコンピュータ２００に入力される。コンピュータ２００は、その音声データを、ネットワーク１９を介してサーバ１５０に出力する。サーバ１５０は、コンピュータ２００から受信した音声データを、ネットワーク１９を介して他のコンピュータ２００に出力する。他のコンピュータ２００は、サーバ１５０から受信した音声データを、他のユーザが装着するＨＭＤ１１０のスピーカ１１５に出力する。これにより、他のユーザは、ＨＭＤ１１０のスピーカ１１５を介してユーザ１９０の音声を聞くことができる。同様に、他のユーザからの発話は、ユーザ１９０が装着するＨＭＤ１１０のスピーカ１１５から出力される。
【００２４】
第１カメラ１１６は、ユーザ１９０の顔の下部を撮影するようにＨＭＤ１１０の筐体に設けられている。より具体的には、第１カメラ１１６は、ユーザ１９０の鼻、頬、および口などを撮影する。第２カメラ１１７は、ユーザ１９０の目および眉などを撮影するようにＨＭＤ１１０の筐体に設けられている。本実施の形態において、ＨＭＤ１１０のユーザ１９０側の筐体をＨＭＤ１１０の内側、ＨＭＤ１１０のユーザ１９０とは逆側の筐体をＨＭＤ１１０の外側と定義する。ある局面において、第１カメラ１１６は、ＨＭＤ１１０の外側に配置され、第２カメラ１１７は、ＨＭＤ１１０の内側に配置され得る。第１カメラ１１６および第２カメラ１１７が生成した画像は、コンピュータ２００に入力される。
【００２５】
コンピュータ２００は、他のユーザのコンピュータ２００から受信した音声データに応じて、当該他のユーザに対応する他アバターオブジェクトを動かすような画像をモニタ１１２に表示する。たとえば、ある局面において、コンピュータ２００は、他アバターオブジェクトの口を動かすような画像をモニタ１１２に表示することで、あたかも仮想空間２内でアバターオブジェクト同士が会話しているかのように仮想空間２を表現する。このように、複数のコンピュータ２００間で音声データの送受信が行なわれることで、一の仮想空間２内で複数のユーザ間での会話（チャット）が実現される。
【００２６】
ＨＭＤセンサ１２０は、複数の光源（図示しない）を含む。各光源は、たとえば、赤外線を発するＬＥＤ（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）その他の無線通信インターフェースとして実現される。なお、通信インターフェース１４は上述のものに限られない。
【００４３】
ある局面において、プロセッサ１０は、ストレージ１２にアクセスし、ストレージ１２に格納されている１つ以上のプログラムをメモリ１１にロードし、当該プログラムに含まれる一連の命令を実行する。当該１つ以上のプログラムは、コンピュータ２００のオペレーティングシステム、仮想空間２を提供するためのアプリケーションプログラム、コントローラ１６０を用いて仮想空間２で実行可能なゲームソフトウェアなどを含み得る。プロセッサ１０は、入出力インターフェース１３を介して、仮想空間２を提供するための信号をＨＭＤ１１０に送る。ＨＭＤ１１０は、その信号に基づいてモニタ１１２に映像を表示する。
【００４４】
なお、図２に示される例では、コンピュータ２００は、ＨＭＤ１１０の外部に設けられる構成が示されているが、他の局面において、コンピュータ２００は、ＨＭＤ１１０に内蔵されてもよい。一例として、モニタ１１２を含む携帯型の情報通信端末（たとえば、スマートフォン）がコンピュータ２００として機能してもよい。
【００４５】
また、コンピュータ２００は、複数のＨＭＤ１１０に共通して用いられる構成であってもよい。このような構成によれば、たとえば、複数のユーザに同一の仮想空間２を提供することもできるので、各ユーザは同一の仮想空間２で他のユーザと同一のアプリケーションを楽しむことができる。
【００４６】
ある実施の形態において、ＨＭＤシステム１００では、グローバル座標系が予め設定されている。グローバル座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、ならびに、鉛直方向および水平方向の双方に直交する前後方向にそれぞれ平行な、３つの基準方向（軸）を有する。本実施の形態では、グローバル座標系は視点座標系の一つである。そこで、グローバル座標系における水平方向、鉛直方向（上下方向）、および前後方向は、それぞれ、ｘ軸、ｙ軸、ｚ軸と規定される。より具体的には、グローバル座標系において、ｘ軸は現実空間の水平方向に平行である。ｙ軸は、現実空間の鉛直方向に平行である。ｚ軸は現実空間の前後方向に平行である。
【００４７】
ある局面において、ＨＭＤセンサ１２０は、赤外線センサを含む。赤外線センサが、ＨＭＤ１１０の各光源から発せられた赤外線をそれぞれ検出すると、ＨＭＤ１１０の存在を検出する。ＨＭＤセンサ１２０は、さらに、各点の値（グローバル座標系における各座標値）に基づいて、ＨＭＤ１１０を装着したユーザ１９０の動きに応じた、現実空間内におけるＨＭＤ１１０の位置および傾きを検出する。より詳しくは、ＨＭＤセンサ１２０は、経時的に検出された各値を用いて、ＨＭＤ１１０の位置および傾きの時間的変化を検出できる。
【００４８】
グローバル座標系は現実空間の座標系と平行である。したがって、ＨＭＤセンサ１２０によって検出されたＨＭＤ１１０の各傾きは、グローバル座標系におけるＨＭＤ１１０の３軸周りの各傾きに相当する。ＨＭＤセンサ１２０は、グローバル座標系におけるＨＭＤ１１０の傾きに基づき、ｕｖｗ視野座標系をＨＭＤ１１０に設定する。ＨＭＤ１１０に設定されるｕｖｗ視野座標系は、ＨＭＤ１１０を装着したユーザ１９０が仮想空間２において物体を見る際の視点座標系に対応する。
【００４９】
［ｕｖｗ視野座標系］
図３を参照して、ｕｖｗ視野座標系について説明する。図３は、ある実施の形態に従うＨＭＤ１１０に設定されるｕｖｗ視野座標系を概念的に表す図である。ＨＭＤセンサ１２０は、ＨＭＤ１１０の起動時に、グローバル座標系におけるＨＭＤ１１０の位置および傾きを検出する。プロセッサ１０は、検出された値に基づいて、ｕｖｗ視野座標系をＨＭＤ１１０に設定する。
【００５０】
図３に示されるように、ＨＭＤ１１０は、ＨＭＤ１１０を装着したユーザ１９０の頭部を中心（原点）とした３次元のｕｖｗ視野座標系を設定する。より具体的には、ＨＭＤ１１０は、グローバル座標系を規定する水平方向、鉛直方向、および前後方向（ｘ軸、ｙ軸、ｚ軸）を、グローバル座標系内においてＨＭＤ１１０の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる３つの方向を、ＨＭＤ１１０におけるｕｖｗ視野座標系のピッチ方向（ｕ軸）、ヨー方向（ｖ軸）、およびロール方向（ｗ軸）として設定する。
【００５１】
ある局面において、ＨＭＤ１１０を装着したユーザ１９０が直立し、かつ、正面を視認している場合、プロセッサ１０は、グローバル座標系に平行なｕｖｗ視野座標系をＨＭＤ１１０に設定する。この場合、グローバル座標系における水平方向（ｘ軸）、鉛直方向（ｙ軸）、および前後方向（ｚ軸）は、ＨＭＤ１１０におけるｕｖｗ視野座標系のピッチ方向（ｕ軸）、ヨー方向（ｖ軸）、およびロール方向（ｗ軸）に一致する。
【００５２】
ｕｖｗ視野座標系がＨＭＤ１１０に設定された後、ＨＭＤセンサ１２０は、ＨＭＤ１１０の動きに基づいて、設定されたｕｖｗ視野座標系におけるＨＭＤ１１０の傾き（傾きの変化量）を検出できる。この場合、ＨＭＤセンサ１２０は、ＨＭＤ１１０の傾きとして、ｕｖｗ視野座標系におけるＨＭＤ１１０のピッチ角（θｕ）、ヨー角（θｖ）、およびロール角（θｗ）をそれぞれ検出する。ピッチ角（θｕ）は、ｕｖｗ視野座標系におけるピッチ方向周りのＨＭＤ１１０の傾き角度を表す。ヨー角（θｖ）は、ｕｖｗ視野座標系におけるヨー方向周りのＨＭＤ１１０の傾き角度を表す。ロール角（θｗ）は、ｕｖｗ視野座標系におけるロール方向周りのＨＭＤ１１０の傾き角度を表す。
【００５３】
ＨＭＤセンサ１２０は、検出されたＨＭＤ１１０の傾き角度に基づいて、ＨＭＤ１１０が動いた後のＨＭＤ１１０におけるｕｖｗ視野座標系を、ＨＭＤ１１０に設定する。ＨＭＤ１１０と、ＨＭＤ１１０のｕｖｗ視野座標系との関係は、ＨＭＤ１１０の位置および傾きに関わらず、常に一定である。ＨＭＤ１１０の位置および傾きが変わると、当該位置および傾きの変化に連動して、グローバル座標系におけるＨＭＤ１１０のｕｖｗ視野座標系の位置および傾きが変化する。
【００５４】
ある局面において、ＨＭＤセンサ１２０は、赤外線センサからの出力に基づいて取得される赤外線の光強度および複数の点間の相対的な位置関係（たとえば、各点間の距離など）に基づいて、ＨＭＤ１１０の現実空間内における位置を、ＨＭＤセンサ１２０に対する相対位置として特定してもよい。また、プロセッサ１０は、特定された相対位置に基づいて、現実空間内（グローバル座標系）におけるＨＭＤ１１０のｕｖｗ視野座標系の原点を決定してもよい。
【００５５】
［仮想空間］
図４を参照して、仮想空間２についてさらに説明する。図４は、ある実施の形態に従う仮想空間２を表現する一態様を概念的に表す図である。仮想空間２は、中心２１の３６０度方向の全体を覆う全天球状の構造を有する。図４では、説明を複雑にしないために、仮想空間２のうちの上半分の天球が例示されている。仮想空間２では各メッシュが規定される。各メッシュの位置は、仮想空間２に規定されるＸＹＺ座標系における座標値として予め規定されている。コンピュータ２００は、仮想空間２に展開可能なコンテンツ（静止画、動画など）を構成する各部分画像を、仮想空間２において対応する各メッシュにそれぞれ対応付けて、ユーザ１９０によって視認可能な仮想空間画像２２が展開される仮想空間２をユーザ１９０に提供する。
【００５６】
ある局面において、仮想空間２では、中心２１を原点とするＸＹＺ座標系が規定される。ＸＹＺ座標系は、たとえば、グローバル座標系に平行である。ＸＹＺ座標系は視点座標系の一種であるため、ＸＹＺ座標系における水平方向、鉛直方向（上下方向）、および前後方向は、それぞれＸ軸、Ｙ軸、Ｚ軸として規定される。したがって、ＸＹＺ座標系のＸ軸（水平方向）がグローバル座標系のｘ軸と平行であり、ＸＹＺ座標系のＹ軸（鉛直方向）がグローバル座標系のｙ軸と平行であり、ＸＹＺ座標系のＺ軸（前後方向）がグローバル座標系のｚ軸と平行である。
【００５７】
ＨＭＤ１１０の起動時、すなわちＨＭＤ１１０の初期状態において、仮想カメラ１が、仮想空間２の中心２１に配置される。仮想カメラ１は、現実空間におけるＨＭＤ１１０の動きに連動して、仮想空間２を同様に移動する。これにより、現実空間におけるＨＭＤ１１０の位置および向きの変化が、仮想空間２において同様に再現される。
【００５８】
仮想カメラ１には、ＨＭＤ１１０の場合と同様に、ｕｖｗ視野座標系が規定される。仮想空間２における仮想カメラのｕｖｗ視野座標系は、現実空間（グローバル座標系）におけるＨＭＤ１１０のｕｖｗ視野座標系に連動するように規定されている。したがって、ＨＭＤ１１０の傾きが変化すると、それに応じて、仮想カメラ１の傾きも変化する。また、仮想カメラ１は、ＨＭＤ１１０を装着したユーザ１９０の現実空間における移動に連動して、仮想空間２において移動することもできる。
【００５９】
仮想カメラ１の向きは、仮想カメラ１の位置および傾きに応じて決まるので、ユーザ１９０が仮想空間画像２２を視認する際に基準となる視線（基準視線５）は、仮想カメラ１の向きに応じて決まる。コンピュータ２００のプロセッサ１０は、基準視線５に基づいて、仮想空間２における視界領域２３を規定する。視界領域２３は、仮想空間２のうち、ＨＭＤ１１０を装着したユーザ１９０の視界に対応する。
【００６０】
注視センサ１４０によって検出されるユーザ１９０の視線方向は、ユーザ１９０が物体を視認する際の視点座標系における方向である。ＨＭＤ１１０のｕｖｗ視野座標系は、ユーザ１９０がモニタ１１２を視認する際の視点座標系に等しい。また、仮想カメラ１のｕｖｗ視野座標系は、ＨＭＤ１１０のｕｖｗ視野座標系に連動している。したがって、ある局面に従うＨＭＤシステム１００は、注視センサ１４０によって検出されたユーザ１９０の視線方向を、仮想カメラ１のｕｖｗ視野座標系におけるユーザ１９０の視線方向とみなすことができる。
【００６１】
［ユーザの視線］
図５を参照して、ユーザ１９０の視線方向の決定について説明する。図５は、ある実施の形態に従うＨＭＤ１１０を装着するユーザ１９０の頭部を上から表した図である。
【００６２】
ある局面において、注視センサ１４０は、ユーザ１９０の右目および左目の各視線を検出する。ある局面において、ユーザ１９０が近くを見ている場合、注視センサ１４０は、視線Ｒ１およびＬ１を検出する。他の局面において、ユーザ１９０が遠くを見ている場合、注視センサ１４０は、視線Ｒ２およびＬ２を検出する。この場合、ロール方向ｗに対して視線Ｒ２およびＬ２がなす角度は、ロール方向ｗに対して視線Ｒ１およびＬ１がなす角度よりも小さい。注視センサ１４０は、検出結果をコンピュータ２００に送信する。
【００６３】
コンピュータ２００が、視線の検出結果として、視線Ｒ１およびＬ１の検出値を注視センサ１４０から受信した場合には、その検出値に基づいて、視線Ｒ１およびＬ１の交点である注視点Ｎ１を特定する。一方、コンピュータ２００は、視線Ｒ２およびＬ２の検出値を注視センサ１４０から受信した場合には、視線Ｒ２およびＬ２の交点を注視点として特定する。コンピュータ２００は、特定した注視点Ｎ１の位置に基づき、ユーザ１９０の視線方向Ｎ０を特定する。コンピュータ２００は、たとえば、ユーザ１９０の右目Ｒと左目Ｌとを結ぶ直線の中点と、注視点Ｎ１とを通る直線の延びる方向を、視線方向Ｎ０として検出する。視線方向Ｎ０は、ユーザ１９０が両目により実際に視線を向けている方向である。また、視線方向Ｎ０は、視界領域２３に対してユーザ１９０が実際に視線を向けている方向に相当する。
【００６４】
［視界領域］
図６および図７を参照して、視界領域２３について説明する。図６は、仮想空間２において視界領域２３をＸ方向から見たＹＺ断面を表す図である。図７は、仮想空間２において視界領域２３をＹ方向から見たＸＺ断面を表す図である。
【００６５】
図６に示されるように、ＹＺ断面における視界領域２３は、領域２４を含む。領域２４は、仮想カメラ１の基準視線５と仮想空間２のＹＺ断面とによって定義される。プロセッサ１０は、仮想空間２おける基準視線５を中心として極角αを含む範囲を、領域２４として規定する。
【００６６】
図７に示されるように、ＸＺ断面における視界領域２３は、領域２５を含む。領域２５は、基準視線５と仮想空間２のＸＺ断面とによって定義される。プロセッサ１０は、仮想空間２における基準視線５を中心とした方位角βを含む範囲を、領域２５として規定する。
【００６７】
ある局面において、ＨＭＤシステム１００は、コンピュータ２００からの信号に基づいて、視界画像をモニタ１１２に表示させることにより、ユーザ１９０に仮想空間２を提供する。視界画像は、仮想空間画像２２のうちの視界領域２３に重畳する部分に相当する。ユーザ１９０が、頭に装着したＨＭＤ１１０を動かすと、その動きに連動して仮想カメラ１も動く。その結果、仮想空間２における視界領域２３の位置が変化する。これにより、モニタ１１２に表示される視界画像は、仮想空間画像２２のうち、仮想空間２においてユーザ１９０が向いた方向の視界領域２３に重畳する画像に更新される。ユーザ１９０は、仮想空間２における所望の方向を視認することができる。
【００６８】
ユーザ１９０は、ＨＭＤ１１０を装着している間、現実世界を視認することなく、仮想空間２に展開される仮想空間画像２２のみを視認できる。そのため、ＨＭＤシステム１００は、仮想空間２への高い没入感覚をユーザ１９０に与えることができる。
【００６９】
ある局面において、プロセッサ１０は、ＨＭＤ１１０を装着したユーザ１９０の現実空間における移動に連動して、仮想空間２において仮想カメラ１を移動し得る。この場合、プロセッサ１０は、仮想空間２における仮想カメラ１の位置および向きに基づいて、ＨＭＤ１１０のモニタ１１２に投影される画像領域（すなわち、仮想空間２における視界領域２３）を特定する。
【００７０】
ある実施の形態に従うと、仮想カメラ１は、二つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含むことが望ましい。また、ユーザ１９０が３次元の仮想空間２を認識できるように、適切な視差が、二つの仮想カメラに設定されていることが好ましい。本実施の形態においては、仮想カメラ１が二つの仮想カメラを含み、二つの仮想カメラのロール方向が合成されることによって生成されるロール方向（ｗ）がＨＭＤ１１０のロール方向（ｗ）に適合されるように構成されているものとして、本開示に係る技術思想を例示する。
【００７１】
［コントローラ］
図８を参照して、コントローラ１６０の一例について説明する。図８は、ある実施の形態に従うコントローラ１６０の概略構成を表す図である。
【００７２】
図８の分図（Ａ）に示されるように、ある局面において、コントローラ１６０は、右コントローラ８００と左コントローラ（図示しない）とを含み得る。右コントローラ８００は、ユーザ１９０の右手で操作される。左コントローラは、ユーザ１９０の左手で操作される。ある局面において、右コントローラ８００と左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ１９０は、右コントローラ８００を把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。他の局面において、コントローラ１６０は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ８００について説明する。
【００７３】
右コントローラ８００は、グリップ３０と、フレーム３１と、天面３２とを備える。グリップ３０は、ユーザ１９０の右手によって把持されるように構成されている。たとえば、グリップ３０は、ユーザ１９０の右手の掌と３本の指（中指、薬指、小指）とによって保持され得る。
【００７４】
グリップ３０は、ボタン３３，３４と、モーションセンサ１３０とを含む。ボタン３３は、グリップ３０の側面に配置され、右手の中指による操作を受け付ける。ボタン３４は、グリップ３０の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン３３，３４は、トリガー式のボタンとして構成される。モーションセンサ１３０は、グリップ３０の筐体に内蔵されている。なお、ユーザ１９０の動作がカメラその他の装置によってユーザ１９０の周りから検出可能である場合には、グリップ３０は、モーションセンサ１３０を備えなくてもよい。
【００７５】
フレーム３１は、その円周方向に沿って配置された複数の赤外線ＬＥＤ３５を含む。赤外線ＬＥＤ３５は、コントローラ１６０を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線ＬＥＤ３５から発せられた赤外線は、右コントローラ８００と左コントローラとの各位置や姿勢（傾き、向き）を検出するために使用され得る。図８に示される例では、二列に配置された赤外線ＬＥＤ３５が示されているが、配列の数は図８に示されるものに限られない。一列あるいは３列以上の配列が使用されてもよい。
【００７６】
天面３２は、ボタン３６，３７と、アナログスティック３８とを備える。ボタン３６，３７は、プッシュ式ボタンとして構成される。ボタン３６，３７は、ユーザ１９０の右手の親指による操作を受け付ける。アナログスティック３８は、ある局面において、初期位置（ニュートラルの位置）から３６０度任意の方向への操作を受け付ける。当該操作は、たとえば、仮想空間２に配置されるオブジェクトを移動するための操作を含む。
【００７７】
ある局面において、右コントローラ８００および左コントローラは、赤外線ＬＥＤ３５その他の部材を駆動するための電池を含む。電池は、充電式、ボタン型、乾電池型などを含むが、これらに限定されない。他の局面において、右コントローラ８００と左コントローラは、たとえば、コンピュータ２００のＵＳＢインターフェースに接続され得る。この場合、右コントローラ８００および左コントローラは、電池を必要としない。
【００７８】
図８の分図（Ｂ）は、右コントローラ８００を把持するユーザ１９０の右手に対応して仮想空間２に配置されるハンドオブジェクト８１０の一例を示す。たとえば、ユーザ１９０の右手に対応するハンドオブジェクト８１０に対して、ヨー、ロール、ピッチの各方向が規定される。たとえば、入力操作が、右コントローラ８００のボタン３４に対して行なわれると、ハンドオブジェクト８１０の人差し指を握りこんだ状態とし、入力操作がボタン３４に対して行なわれていない場合には、分図（Ｂ）に示すように、ハンドオブジェクト８１０の人差し指を伸ばした状態とすることもできる。たとえば、ハンドオブジェクト８１０において親指と人差し指とが伸びている場合に、親指の伸びる方向がヨー方向、人差し指の伸びる方向がロール方向、ヨー方向の軸およびロール方向の軸によって規定される平面に垂直な方向がピッチ方向としてハンドオブジェクト８１０に規定される。
【００７９】
［ＨＭＤの制御装置］
図９を参照して、ＨＭＤ１１０の制御装置について説明する。ある実施の形態において、制御装置は周知の構成を有するコンピュータ２００によって実現される。図９は、ある実施の形態に従うコンピュータ２００をモジュール構成として表すブロック図である。
【００８０】
図９に示されるように、コンピュータ２００は、表示制御モジュール２２０と、仮想空間制御モジュール２３０と、メモリモジュール２４０と、通信制御モジュール２５０と、フェイストラッキングモジュール２６０と、動作検出モジュール２７１と、行動制御モジュール２７２とを備える。
【００８１】
表示制御モジュール２２０は、サブモジュールとして、仮想カメラ制御モジュール２２１と、視界領域決定モジュール２２２と、視界画像生成モジュール２２３と、基準視線特定モジュール２２４と、傾き特定モジュール２２５と、視点特定モジュール２２６とを含む。
【００８２】
仮想空間制御モジュール２３０は、サブモジュールとして、仮想空間定義モジュール２３１と、仮想オブジェクト生成モジュール２３２と、手オブジェクト制御モジュール２３３とを含む。
【００８３】
ある実施の形態において、表示制御モジュール２２０、仮想空間制御モジュール２３０、フェイストラッキングモジュール２６０、動作検出モジュール２７１、および、行動制御モジュール２７２は、プロセッサ１０によって実現される。他の実施の形態において、複数のプロセッサ１０が表示制御モジュール２２０、仮想空間制御モジュール２３０、フェイストラッキングモジュール２６０、動作検出モジュール２７１、および、行動制御モジュール２７２として作動してもよい。メモリモジュール２４０は、メモリ１１またはストレージ１２によって実現される。通信制御モジュール２５０は、通信インターフェース１４によって実現される。
【００８４】
ある局面において、表示制御モジュール２２０は、ＨＭＤ１１０のモニタ１１２における画像表示を制御する。仮想カメラ制御モジュール２２１は、仮想空間２に仮想カメラ１を配置し、仮想カメラ１の挙動、向きなどを制御する。視界領域決定モジュール２２２は、ＨＭＤ１１０を装着したユーザ１９０の頭の向きに応じて、視界領域２３を規定する。視界画像生成モジュール２２３は、決定された視界領域２３に基づいて、モニタ１１２に表示される視界画像のデータ（視界画像データともいう）を生成する。さらに、視界画像生成モジュール２２３は、仮想空間制御モジュール２３０から受信したデータに基づいて、視界画像データを生成する。視界画像生成モジュール２２３によって生成された視界画像データは、通信制御モジュール２５０によってＨＭＤ１１０に出力される。基準視線特定モジュール２２４は、注視センサ１４０からの信号に基づいて、ユーザ１９０の視線を特定する。
【００８５】
傾き特定モジュール２２５は、ＨＭＤセンサ１２０の出力に基づいて、ＨＭＤ１１０の傾きを特定する。他の局面において、傾き特定モジュール２２５は、モーションセンサとして機能するセンサ１１４の出力に基づいて、ＨＭＤ１１０の傾きを特定する。
【００８６】
視点特定モジュール２２６は、注視センサ１４０からの信号に基づいて、仮想空間２におけるユーザ１９０の視線を検出する。視点特定モジュール２２６は、検出したユーザ１９０の視線と仮想空間２の天球とが交わる視点位置（ＸＹＺ座標系における座標値）を検出する。より具体的には、視点特定モジュール２２６は、仮想カメラ１の位置および傾きに基づいて、ｕｖｗ座標系で規定されるユーザ１９０の視線をＸＹＺ座標系に変換して視点位置を検出する。
【００８７】
フェイストラッキングモジュール２６０は、ＨＭＤ１１０を装着したユーザ１９０の顔の動きまたは表情を検出する。より具体的には、フェイストラッキングモジュール２６０は、顔器官検出モジュール２６１と、トラッキングモジュール２６２とを含む。顔器官検出モジュール２６１は、第１カメラ１１６および第２カメラ１１７からそれぞれ出力される画像データによって生成されるユーザ１９０の顔の画像から、ユーザ１９０の顔を構成する器官（例えば、口，目，眉）を検出する。トラッキングモジュール２６２は、顔器官検出モジュール２６１によって検出された各器官ごとの特徴点（の位置）を、例えば間欠的に（離散的に）検出する。トラッキングモジュール２６２は、ユーザ１９０の表情を検出することになる。顔器官検出モジュール２６１およびトラッキングモジュール２６２の制御内容は後述する。
【００８８】
仮想空間制御モジュール２３０は、ユーザ１９０に提供される仮想空間２を制御する。仮想空間定義モジュール２３１は、仮想空間２を表す仮想空間データを生成することにより、ＨＭＤシステム１００における仮想空間２を規定する。
【００８９】
仮想オブジェクト生成モジュール２３２は、仮想空間２に配置されるオブジェクトのデータを生成する。オブジェクトは、たとえば、他アバターオブジェクト、仮想パネル、仮想手紙、および仮想ポストなどを含み得る。仮想オブジェクト生成モジュール２３２によって生成されたデータは、視界画像生成モジュール２２３に出力される。
【００９０】
手オブジェクト制御モジュール２３３は、手オブジェクトを仮想空間２に配置する。手オブジェクトは、たとえば、コントローラ１６０を保持したユーザ１９０の右手あるいは左手に対応する。ある局面において、手オブジェクト制御モジュール２３３は、右手あるいは左手に対応する手オブジェクトを仮想空間２に配置するためのデータを生成する。また、手オブジェクト制御モジュール２３３は、ユーザ１９０によるコントローラ１６０の操作に応じて、手オブジェクトを動かすためのデータを生成する。手オブジェクト制御モジュール２３３によって生成されたデータは、視界画像生成モジュール２２３に出力される。
【００９１】
他の局面において、ユーザ１９０の体の一部の動き（たとえば、左手、右手、左足、右足、頭などの動き）がコントローラ１６０に関連付けられている場合、仮想空間制御モジュール２３０は、ユーザ１９０の体の一部に対応する部分オブジェクトを仮想空間２に配置するためのデータを生成する。仮想空間制御モジュール２３０は、ユーザ１９０が体の一部を用いてコントローラ１６０を操作すると、部分オブジェクトを動かすためのデータを生成する。これらのデータは、視界画像生成モジュール２２３に出力される。
【００９２】
プロセッサ１０は、ネットワーク１９を介して他のユーザのコンピュータ２００から音声データを受信すると、当該音声データに対応する音声（発話）をスピーカ１１５から出力する。
【００９３】
動作検出モジュール２７１は、コンピュータ２００に入力される信号に基づいて、ユーザ１９０の動作を検出する。ユーザ１９０の動作は、例えば、ユーザ１９０が表情を変更することを含む。動作検出モジュール２７１は、第１カメラ１１６から出力される信号および第２カメラ１１７から出力される信号を用いて、ユーザ１９０の表情を検出する。動作検出モジュール２７１は、さらに、これらの信号に加えて、注視センサ１４０からの出力を用いて、ユーザ１９０の表情を検出し得る。視線も考慮されることにより、表情が検出される精度が向上し得る。
【００９４】
行動制御モジュール２７２は、ユーザ１９０の表情が検出されたことに基づいて、ＮＰＣ（Non-Players  Character）オブジェクトの行動を制御する。別の局面において、行動制御モジュール２７２は、表情の検出結果に基づいて、ユーザ１９０の感情を判定し、判定したユーザ１９０の感情に応じて、ＮＰＣオブジェクトの行動を制御する。別の局面において、行動制御モジュール２７２は、ＮＰＣオブジェクトの行動として予め準備された複数の行動テンプレートから、検出された表情に対応する行動テンプレートを選択し、選択された行動テンプレートをＮＰＣオブジェクトに反映することにより、ユーザ１９０の表情の検出結果に応じた行動を行うＮＰＣオブジェクトを提示する。別の局面において、行動制御モジュール２７２は、ＮＰＣオブジェクトの第１の行動に反応したユーザ１９０の表情の検出結果に対して予め準備された複数の行動テンプレートから、ユーザ１９０の表情の検出結果に対応する行動テンプレートを第２の行動として選択し、第１の行動に続けて第２の行動をＮＰＣオブジェクトに反映することにより、ユーザ１９０の表情の検出結果に応じた行動を行うＮＰＣオブジェクトを提示する。
【００９５】
メモリモジュール２４０は、コンピュータ２００が仮想空間２をユーザ１９０に提供するために使用されるデータを保持している。ある局面において、メモリモジュール２４０は、空間情報２４１と、オブジェクト情報２４２と、ユーザ情報２４３と、顔情報２４４とを保持している。
【００９６】
空間情報２４１は、仮想空間２を提供するために規定された１つ以上のテンプレートを保持している。
【００９７】
オブジェクト情報２４２は、仮想空間２において再生されるコンテンツ、当該コンテンツで使用されるオブジェクトを配置するための情報を保持している。当該コンテンツは、たとえば、ゲーム、現実社会と同様の風景を表したコンテンツなどを含み得る。さらに、オブジェクト情報２４２は、コントローラ１６０を操作するユーザ１９０の手に相当する手オブジェクトを仮想空間２に配置するためのデータと、各ユーザのアバターオブジェクトを仮想空間２に配置するためのデータと、仮想パネルなどのその他のオブジェクトを仮想空間２に配置するためのデータとを含む。
【００９８】
ユーザ情報２４３は、ＨＭＤシステム１００の制御装置としてコンピュータ２００を機能させるためのプログラム、オブジェクト情報２４２に保持される各コンテンツを使用するアプリケーションプログラムなどを保持している。メモリモジュール２４０に格納されているデータおよびプログラムは、ＨＭＤ１１０のユーザ１９０によって入力される。あるいは、プロセッサ１０が、当該コンテンツを提供する事業者が運営するコンピュータ（たとえば、サーバ１５０）からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール２４０に格納する。
【００９９】
顔情報２４４は、顔器官検出モジュール２６１がユーザ１９０の顔器官を検出するために予め記憶されたテンプレートを含む。ある実施形態において、顔情報２４４は、口テンプレート２４５と、目テンプレート２４６と、眉テンプレート２４７とを含む。各テンプレートは、顔を構成する器官に対応する画像であり得る。例えば、口テンプレート２４５は、口の画像であり得る。なお、各テンプレートは複数の画像を含んでもよい。顔情報２４４は、基準データ２４８をさらに含む。基準データ２４８は、ユーザ１９０が無表情である状態において、トラッキングモジュール２６２によって検出されるデータである。
【０１００】
通信制御モジュール２５０は、ネットワーク１９を介して、サーバ１５０その他の情報通信装置と通信し得る。
【０１０１】
［ＨＭＤシステムの制御構造］
図１０を参照して、ＨＭＤシステム１００の制御構造について説明する。図１０は、ある実施の形態に従うＨＭＤシステム１００において実行される処理の一部を表すシーケンスチャートである。
【０１０２】
図１０に示されるように、ステップＳ１０１０にて、コンピュータ２００のプロセッサ１０は、仮想空間定義モジュール２３１として、仮想空間画像データを特定し、仮想空間２を定義する。
【０１０３】
ステップＳ１０２０にて、プロセッサ１０は、仮想カメラ１を初期化する。たとえば、プロセッサ１０は、メモリのワーク領域において、仮想カメラ１を仮想空間２において予め規定された中心点に配置し、仮想カメラ１の視線をユーザ１９０が向いている方向に向ける。
【０１０４】
ステップＳ１０３０にて、プロセッサ１０は、視界画像生成モジュール２２３として、初期の視界画像を表示するための視界画像データを生成する。生成された視界画像データは、通信制御モジュール２５０によってＨＭＤ１１０に出力される。
【０１０５】
ステップＳ１０３２にて、ＨＭＤ１１０のモニタ１１２は、コンピュータ２００から受信した視界画像データに基づいて、視界画像を表示する。ＨＭＤ１１０を装着したユーザ１９０は、視界画像を視認すると仮想空間２を認識し得る。
【０１０６】
ステップＳ１０３４にて、ＨＭＤセンサ１２０は、ＨＭＤ１１０から発信される複数の赤外線光に基づいて、ＨＭＤ１１０の位置と傾きを検知する。検知結果は、動き検知データとして、コンピュータ２００に出力される。
【０１０７】
ステップＳ１０４０にて、プロセッサ１０は、ＨＭＤ１１０の動き検知データに含まれる位置と傾きとに基づいて、ＨＭＤ１１０を装着したユーザ１９０の視界方向を特定する。
【０１０８】
ステップＳ１０５０にて、プロセッサ１０は、アプリケーションプログラムを実行し、アプリケーションプログラムに含まれる命令に基づいて、仮想空間２にオブジェクトを提示する。このとき提示されるオブジェクトは、他アバターオブジェクトを含む。
【０１０９】
ステップＳ１０６０にて、コントローラ１６０は、モーションセンサ１３０から出力される信号に基づいて、ユーザ１９０の操作を検出し、その検出された操作を表す検出データをコンピュータ２００に出力する。なお、他の局面において、ユーザ１９０によるコントローラ１６０の操作は、ユーザ１９０の周囲に配置されたカメラからの画像に基づいて検出されてもよい。
【０１１０】
ステップＳ１０６５にて、プロセッサ１０は、コントローラ１６０から取得した検出データに基づいて、ユーザ１９０によるコントローラ１６０の操作を検出する。
【０１１１】
ステップＳ１０７０にて、プロセッサ１０は、手オブジェクトを仮想空間２に提示するための視界画像データを生成する。
【０１１２】
ステップＳ１０８０にて、プロセッサ１０は、ユーザ１９０によるコントローラ１６０の操作に基づく視界画像データを生成する。生成された視界画像データは、通信制御モジュール２５０によってＨＭＤ１１０に出力される。
【０１１３】
ステップＳ１０９２にて、ＨＭＤ１１０は、受信した視界画像データに基づいて視界画像を更新し、更新後の視界画像をモニタ１１２に表示する。
【０１１４】
［フェイストラッキング］
以下、図１１〜図１６を参照して、ユーザの表情（顔の動き）を検出する方法について説明する。まず、図１１〜図１３では、一例として、ユーザ１９０の口の動きを検出する具体例について説明する。なお、図１１〜図１３で説明される検出方法は、ユーザ１９０の口の動きに限られず、ユーザ１９０の顔を構成する他の器官（例えば、目、眉、鼻、頬）の動きの検出にも適用され得る。
【０１１５】
図１１は、ユーザの顔画像５０から口を検出する制御について説明する図である。第１カメラ１１６により生成された顔画像５０は、ユーザ１９０の鼻と口とを含む。
【０１１６】
顔器官検出モジュール２６１は、顔情報２４４に格納される口テンプレート２４５を利用したパターンマッチングにより、顔画像５０から口領域５１を特定する。ある局面において、顔器官検出モジュール２６１は、顔画像５０において、矩形上の比較領域を設定し、この比較領域の大きさ、位置および角度をそれぞれ変えながら、比較領域の画像と、口テンプレート２４５の画像との類似度を算出する。顔器官検出モジュール２６１は、予め定められたしきい値よりも大きい類似度が算出された比較領域を、口領域５１として特定する。
【０１１７】
顔器官検出モジュール２６１は、さらに、算出した類似度がしきい値よりも大きい比較領域の位置と、他の顔器官（例えば、目、鼻）の位置との相対関係に基づいて、当該比較領域が口領域に相当するか否かを判断する。
【０１１８】
トラッキングモジュール２６２は、顔器官検出モジュール２６１が検出した口領域５１から、より詳細な口の形状を検出する。
【０１１９】
図１２は、トラッキングモジュール２６２が口の形状を検出する処理を説明する図（その１）である。図１２を参照して、トラッキングモジュール２６２は、口領域５１に含まれる口の形状（唇の輪郭）を検出するための複数の輪郭検出線５２を設定する。複数の輪郭検出線５２は、顔の高さ方向に直交する方向に、予め定められた間隔で設定される。
【０１２０】
トラッキングモジュール２６２は、複数の輪郭検出線５２の各々に沿った口領域５１の輝度値の変化を検出し、輝度値の変化が急激な位置を輪郭点として特定し得る。より具体的には、トラッキングモジュール２６２は、隣接画素との輝度差（すなわち、輝度値変化）が予め定められた閾値以上である画素を、輪郭点として特定する。画素の輝度値は、例えば、画素のＲＢＧ値を予め規定された重み付けで積算することにより得られる。
【０１２１】
トラッキングモジュール２６２は、口領域５１に対応する画像から２種類の輪郭点を特定する。トラッキングモジュール２６２は、口（唇）の外側の輪郭に対応する輪郭点５３と、口（唇）の内側の輪郭に対応する輪郭点５４とを特定する。ある局面において、トラッキングモジュール２６２は、１つの輪郭検出線５２上に３つ以上の輪郭点が検出された場合には、両端の輪郭点を外側の輪郭点５３として特定し得る。この場合、トラッキングモジュール２６２は、外側の輪郭点５３以外の輪郭点を、内側の輪郭点５４として特定し得る。また、トラッキングモジュール２６２は、１つの輪郭検出線５２上に２つ以下の輪郭点が検出された場合には、検出された輪郭点を外側の輪郭点５３として特定し得る。
【０１２２】
図１３は、トラッキングモジュール２６２が口の形状を検出する処理を説明するための図（その２）である。図１３では、外側の輪郭点５３は白丸、内側の輪郭点５４はハッチングされた丸としてそれぞれ示されている。
【０１２３】
トラッキングモジュール２６２は、内側の複数の輪郭点５４間を補完することにより、口形状５５を特定する。この場合、輪郭点５４は、口の特徴点といえる。ある局面において、トラッキングモジュール２６２は、スプライン補完などの非線形の補完方法を用いて、口形状５５を特定する。なお、他の局面において、トラッキングモジュール２６２は、外側の複数の輪郭点５３間を補完することにより口形状５５を特定してもよい。さらに他の局面において、トラッキングモジュール２６２は、想定される口形状（人の上唇と下唇とによって形成され得る所定の形状）から、大きく逸脱する輪郭点を除外し、残った輪郭点によって口形状５５を特定してもよい。このようにして、トラッキングモジュール２６２は、ユーザの口の動作（形状）を特定する。なお、口形状５５の検出方法は上記に限られず、トラッキングモジュール２６２は、他の手法により口形状５５を検出してもよい。また、トラッキングモジュール２６２は、同様にして、ユーザの目および眉の動作を検出し得る。なお、トラッキングモジュール２６２は、頬、鼻などの器官の形状を検出可能に構成されてもよい。
【０１２４】
図１４を参照して、フェイストラッキングデータの構造について説明する。図１４は、フェイストラッキングのためにストレージ１２に格納されたデータの一例を表す図である。フェイストラッキングデータは、各器官の形状を構成する複数の特徴点のｕｖｗ視野座標系における位置座標を表す。例えば、図１４に示されるポイントｍ１，ｍ２，・・・は、口形状５５を構成する内側の輪郭点５４に対応する。ある局面において、フェイストラッキングデータは、第１カメラ１１６の位置を基準（原点）としたｕｖｗ視野座標系における座標値である。他の局面において、フェイストラッキングデータは、各器官ごとに予め定められた特徴点を基準（原点）とした座標系における座標値である。一例として、ポイントｍ１，ｍ２，・・・は、内側の輪郭点５４のうち口角に対応するいずれか一方の特徴点を原点とした座標系における座標値である。
【０１２５】
コンピュータ２００は、生成されたフェイストラッキングデータをサーバ１５０に送信する。サーバ１５０は、コンピュータ２００と通信する他のコンピュータ２００にこのデータを転送する。他のコンピュータ２００は、受信したフェイストラッキングデータを、当該フェイストラッキングデータをもたらしたコンピュータ２００のユーザ１９０に対応するアバターオブジェクトに反映する。ユーザ１９０と通信する他のユーザは、表情が反映されたアバターオブジェクトを視認することができる。
【０１２６】
図１５および図１６を参照して、ユーザ１９０の感情の変化について説明する。図１５は、ユーザ１９０が無表情時に取得される顔の特徴点を表す。図１６は、ユーザ１９０が驚いたときに取得される顔の特徴点を表す。図１５および図１６に示される特徴点Ｐは、トラッキングモジュール２６２によって取得されるユーザ１９０の顔の特徴点を表す。
【０１２７】
ある局面において、プロセッサ１０は、第１カメラ１１６および第２カメラ１１７によってユーザ１９０の顔を撮影する。プロセッサ１０は、取得した画像に基づいてフェイストラッキングデータを生成する。このとき生成されたフェイストラッキングは基準データ２４８として機能する。プロセッサ１０は、生成した基準データ２４８をメモリモジュール２４０に保存する。
【０１２８】
図１５に示される特徴点Ｐは、基準データ２４８に対応する。一方、図１６に示される特徴点Ｐは、ユーザ１９０が仮想空間２に没入している間に随時取得されるフェイストラッキングデータに対応する。
【０１２９】
図１６に示される例において、ユーザ１９０は驚いているため、図１５と比較して目の特徴点Ｐが顔の高さ方向に広がり、眉の特徴点Ｐが上方向に移動している。このように、基準データに対するフェイストラッキングデータの変動量は、仮想空間２に展開されるコンテンツに対するユーザ１９０の関心の度合いを表す。
【０１３０】
ある局面において、プロセッサ１０は、各々の特徴点ごとに基準データに対するフェイストラッキングデータの変動量を算出し、その総和に基づいて上記の判断を行なう。他の局面において、プロセッサ１０は、感情による変化の度合いが大きい予め定められた特徴点（例えば、口角に対応する特徴点）についてのみ変動量を算出し、その総和に基づいて上記判断を行なう。
【０１３１】
［技術思想］
まず、本実施の形態に係る技術思想について説明する。当該技術思想は、要約すると、仮想空間２におけるアバターオブジェクト間のコミュニケーションをより豊かにするために、ＨＭＤ１１０を装着しているユーザ１９０の表情をトラッキングした結果に応じて、仮想空間２に提示されるアバターオブジェクトを制御するというものである。アバターオブジェクトは、ユーザ１９０に対応しないアバターオブジェクト、および、ユーザ１９０に対応するアバターオブジェクトのいずれであってもよい。
【０１３２】
例えば、ある局面において、仮想空間２に展開されるコンテンツにおいて予め準備されているノンプレイヤーキャラクタ（ＮＰＣ）アバターオブジェクトが仮想空間２に提示されている場合に、当該ＮＰＣオブジェクトの動作を、ユーザ１９０の表情をトラッキングした結果に応じて制御する。の表情をトラッキングする技術は、例えば上述のフェイストラッキングであるが、その他のトラッキング技術が用いられてもよい。当該トラッキングの結果として判別されるユーザ１９０の感情をもとに、ＮＰＣオブジェクトの動作が制御される。このような制御を実現するために、例えば、ユーザ１９０の喜怒哀楽などの感情に対するＮＰＣオブジェクトの表情を規定する表情テンプレートを予め複数パターン用意しておく。ＨＭＤ１１０を装着しているユーザ１９０の表情が、ＨＭＤ１１０に設けられたカメラやセンサーによって検出され、その検出結果に応じて表情テンプレートが選択され、ＮＰＣオブジェクトの表情に反映される。一例として、ユーザ１９０が笑っているときは、当該コンテンツにおいてガヤ（にぎやかし）として登場しているＮＰＣオブジェクトも笑っているように動作する。このような構成により、ＮＰＣオブジェクトの表情がユーザ１９０の表情の変化に応じてリアルタイムで反応するようになるので、ＨＭＤ１１０を装着したユーザ１９０による仮想空間２に対する没入感が高まり得る。
【０１３３】
別の局面において、ユーザ１９０の表情の変化を一定の範囲でＮＰＣオブジェクトに反映され得る。ユーザ１９０の表情の変化が常にＮＰＣオブジェクトに反映されると、ＮＰＣオブジェクトを視認しているユーザ１９０その他のユーザは、あまりのリアルさに違和感を覚える場合もあり得る。そこで、ユーザ１９０の表情の変化の程度が予め定められた閾値を超えた場合には、予め用意された表情テンプレートがＮＰＣオブジェクトの表情として割り当てられる。すなわち、ユーザ１９０の表情とＮＰＣオブジェクトの表情とがリニアな関係にはならず、ユーザ１９０の表情の変化が一定の範囲の場合には、ＮＰＣオブジェクトの表情は一定の表情となる。これにより、例えば、ユーザ１９０の僅かな表情変化が全てアバターオブジェクトに反映されなくなるので、当該アバターオブジェクトを視認するユーザは違和感を覚えにくくなる。
【０１３４】
さらに別の局面において、ユーザ１９０の表情のトラッキングの結果を敢えて仮想空間２に提示されるユーザ１９０のアバターオブジェクトに反映させない、ということも実現される。仮想空間２では他ユーザのアバターオブジェクトが不意にユーザ１９０の視界範囲外から視界範囲内に入ってくる場合もある。そこで、ある局面においては、ユーザ１９０がアバターオブジェクトの表情として予め選択された表情が自らのアバターオブジェクトに反映され、ユーザ１９０の表情の変化が敢えてリアルタイムに反映されない。これにより、仮想空間２を介してコミュニケーションをとっている他ユーザに対して、ユーザ１９０の意図しない表情が示されることが防止され得る。なお、ユーザ１９０によって予め選択される表情は、コンテンツの提供者によって予め作成された有料または無料の表情テンプレートのいずれに基づくものであってもよい。また、ユーザ１９０の表情を当該ユーザのアバターオブジェクトにリアルタイムに反映されるか、あるいは、予めユーザ１９０に選択された表情テンプレートに基づく表情が当該ユーザのアバターオブジェクトに反映されるか否かは、ユーザ１９０が予め選択し得る。別の局面において、コンテンツを提供するサーバ１５０その他のプロセッサが当該コンテンツに応じて予め設定してもよい。例えば、ユーザ１９０の視界領域に新たに他ユーザのアバターオブジェクトが入ってくる場合には、少なくとも、ユーザ１９０の真顔の表情あるいは微笑みの表情がユーザ１９０のアバターオブジェクトに反映されてもよい。
【０１３５】
（１）ある局面に従うと、コンピュータ（例えば、サーバ１５０）のプロセッサ１５１が、仮想現実空間として例えば仮想空間２を定義し、仮想空間２にノンプレイヤーキャラクター（ＮＰＣ）オブジェクトを提示し、ＨＭＤ１１０のユーザ１９０による動作（例えば、表情の変化、発話、四肢の動作等）を検出し、動作を検出したことに応答して、ＮＰＣオブジェクトの行動（例えば、表情の変化、発話、四肢の動作等）を制御する。
【０１３６】
（２）ある局面に従うと、プロセッサ１５１は、ユーザの表情を検出し、当該表情の検出結果に基づいて、ＮＰＣオブジェクトの行動を制御する。例えば、ＮＰＣオブジェクトは、ユーザ１９０に向かって微笑む。
【０１３７】
（３）ある局面に従うと、上記に加えて、プロセッサ１５１は、表情の検出結果に基づいて、ユーザ１９０の感情を判定し、判定したユーザの感情に応じて、ＮＰＣオブジェクトの行動を制御する。例えば、ユーザ１９０が笑っている場合には、プロセッサ１５１は、ユーザ１９０が喜んでいると判定し、ＮＰＣオブジェクトの表情も笑っている表情にする。
【０１３８】
（４）ある局面に従うと、上記に加えて、プロセッサ１５１は、ＮＰＣオブジェクトの行動として予め準備された複数の行動テンプレートから検出された表情に対応する行動テンプレートを選択し、選択された行動テンプレートをＮＰＣオブジェクトに反映することにより、ユーザ１９０の表情の検出結果に応じた行動を行うＮＰＣオブジェクトを提示する。
【０１３９】
（５）ある局面に従うと、上記に加えて、プロセッサ１５１は、第１の行動をＮＰＣオブジェクトに行わせ、ＮＰＣオブジェクトが第１の行動を行ったことに反応したＨＭＤ１１０のユーザの表情を検出する。プロセッサ１５１は、ＮＰＣオブジェクトの第１の行動に反応したユーザの表情の検出結果に対して予め準備された複数の行動テンプレートから、ユーザの表情の検出結果に対応する行動テンプレートを第２の行動として選択し、第１の行動に続けて第２の行動をＮＰＣオブジェクトに反映することにより、ユーザの表情の検出結果に応じた行動を行うＮＰＣオブジェクトを提示する。
【０１４０】
（６）ある局面に従うと、プロセッサ１５１は、ＨＭＤ１１０によって提供される仮想空間２を介して通信するためのプログラムを実行する。より詳しくは、プロセッサ１５１は、仮想空間２を定義し、ＨＭＤ１１０のユーザ１９０の表情を検出する。プロセッサ１５１は、ＨＭＤ１１０のユーザ１９０に対応するアバターオブジェクトとして、予め準備された一つ以上の表情を有するアバターオブジェクトを表示するためのデータにアクセスし、検出されるユーザの表情の変化に応じて、当該データに基づく表情を有するアバターオブジェクトを仮想空間２に提示する。
【０１４１】
（７）ある局面に従うと、上記に加えて、ユーザ１９０の表情の検出結果の変化率が予め定められた範囲内にある場合に、アバターオブジェクトの表情が一定の表情となるように、当該データは規定されている。係る構成によれば、ユーザ１９０の表情の変化に幅がある場合には、アバターオブジェクトの表情は一定の表情となるので、ユーザ１９０の表情が全てアバターオブジェクトに反映されることを防止することができる。
【０１４２】
（８）ある局面に従うと、上記に加えて、プロセッサ１５１は、検出された表情をユーザ１９０に対応するアバターオブジェクトの表情に反映させることなく、予め準備された表情が反映されたアバターオブジェクトを提示する。
【０１４３】
（９）ある局面に従うと、上記に加えて、プロセッサ１５１は、予め準備された表情が反映されたアバターオブジェクトの購入を受け付けるインターフェイスオブジェクトを仮想空間２に提示する。係る構成によれば、ユーザ１９０は、必要と判断したタイミングで当該アバターオブジェクトを購入できるので、当該アバターオブジェクトを直ぐに利用できるようになり、シームレスなコミュニケーションが可能になり、また、コンテンツを継続して楽しむことができる。
【０１４４】
（１０）ある局面に従うと、上記に加えて、プロセッサ１５１は、ユーザ１９０の表情の検出結果をアバターオブジェクトに反映するか否かの指定をユーザ１９０から受け付ける。プロセッサ１５１は、ユーザの表情をアバターオブジェクトに反映するか否かを規定する設定に従って、当該アバターオブジェクトを提示する。例えば、当該アバターオブジェクトを使用するアプリケーションの実行前に、上記指定がユーザ１９０によって入力されると、その指定が有効である場合には、ユーザ１９０の表情がリアルタイムにアバターオブジェクトに反映される。その指定が有効でない場合には、ユーザ１９０の表情はリアルタイムに反映されず、例えば、予め準備された表情がアバターオブジェクトに反映される。これにより、ユーザ１９０のニーズに応じてアバターオブジェクトの表示を切り替えることができる。
【０１４５】
（１１）ある局面に従うと、上記に加えて、プロセッサ１５１は、仮想空間２を共有する他のユーザの視界に対応する領域内にＨＭＤ１１０のユーザ１９０のアバターオブジェクトが入ったことに基づいて、ユーザ１９０のアバターオブジェクトの表情を予め準備された表情に変更して、変更後の表情が反映されたアバターオブジェクトを仮想空間２に提示する。これにより、仮想空間２を移動して偶然に他ユーザの視界に入った場合には、ユーザ１９０が意図しない表情を見られないようにできるので、ユーザ１９０は安心して仮想空間２に没入できる。
【０１４６】
［ネットワーク上でのユーザ間の交流］
図１７を参照して、ネットワーク１９上に展開される仮想空間を介したユーザ間の交流について説明する。図１７は、ネットワーク１９に接続されている複数のＨＭＤのそれぞれが、複数のユーザのそれぞれに仮想空間を提供する状況を模式的に示す図である。
【０１４７】
図１７に示されるように、ある局面において、コンピュータ２００Ａ〜２００Ｆのそれぞれが、ＨＭＤ１１０に対するコンテンツ提供装置として機能する。コンピュータ２００Ａ〜２００Ｆは、ネットワーク１９を介してサーバ１５０と通信可能である。コンピュータ２００Ａ〜２００Ｆのそれぞれは、ＨＭＤ１１０Ａ〜１１０Ｆのそれぞれに、仮想空間画像２２Ａ〜２２Ｆのそれぞれを表示させる。仮想空間画像２２Ａ〜２２Ｆは、例えば、アバターオブジェクト１７０１，１７０２，１７０３，１７０４を含む、同一のコンテンツを表わす画像である。アバターオブジェクト１７０１，１７０４は、ＨＭＤ１１０Ａ，１１０Ｂのユーザにそれぞれ対応する。オブジェクト１７０２，１７０３は、現実空間におけるユーザに対応するアバターオブジェクトではなく、ＮＰＣオブジェクトとして、コンテンツの進行に応じて仮想空間２に出現する。
【０１４８】
アバターオブジェクト１７０１は、ＨＭＤ１１０Ａのユーザに対応する。ＨＭＤ１１０Ａのユーザに提供される仮想空間画像２２Ａは、アバターオブジェクト１７０１の目の位置に対応する視界画像を表わす。ＨＭＤ１１０Ａのユーザの位置および傾きに従って、コンピュータ２００Ａは、仮想空間画像２２Ａによって表される視界画像を更新する。
【０１４９】
ＨＭＤ１１０Ａは、仮想空間におけるユーザ１９０の位置および頭の傾きをサーバ１５０に通知してもよい。ユーザ１９０の位置は、コントローラ１６０の操作に応じて変更され得る。頭の傾きは、ＨＭＤ１１０Ａに内蔵されているセンサ１１４その他のセンサによって検出される。サーバ１５０は、ＨＭＤ１１０Ａのユーザの位置および傾きを、ネットワーク１９に接続されている他のＨＭＤ１１０（例えば、ＨＭＤ１１０Ｂ〜１１０Ｆ）に通知できる。ＨＭＤ１１０Ｂ〜１１０Ｆは、当該通知に応じて、ＨＭＤ１１０Ａに対応するアバターオブジェクト１７０１の表示態様（たとえば、仮想空間における位置および姿勢）を変更し得る。
【０１５０】
アバターオブジェクト１７０４は、ＨＭＤ１１０Ｂのユーザを表わす。ＨＭＤ１１０Ｂのユーザに提供される仮想空間画像２２Ｂは、アバターオブジェクト１７０４の目の位置に対応する視界画像を表わす。
【０１５１】
サーバ１５０から送信されるデータに基づいて、ＨＭＤ１１０Ａ，１１０Ｂ等は、仮想空間２にコンテンツを提示する。現実空間において、二人のユーザがＨＭＤ１１０Ａ、１１０Ｂをそれぞれ装着している場合には、各ユーザは、仮想空間２において互いのアバターオブジェクトを視認しつつ、ＮＰＣオブジェクトも視認し得る。
【０１５２】
なお、本実施の形態に係る技術思想が適用される局面は、図１７に示されるように、複数のユーザが仮想空間２を共有する局面に限られない。ＨＭＤ１１０を装着した一人のユーザが、ＮＰＣオブジェクトが登場するコンテンツを視聴する局面にも適用され得る。
【０１５３】
図１８を参照して、本開示に係る技術思想についてさらに説明する。図１８は、ＮＰＣオブジェクトが提示される処理の一部を表わすフローチャートである。当該処理は、サーバ１５０、コンピュータ２００その他の情報処理装置が備えるプロセッサあるいは回路素子の組み合わせによって実行される。以下、サーバ１５０が当該処理を実行する場合について説明する。
【０１５４】
ステップＳ１８１０にて、プロセッサ１５１は、仮想空間２を定義する。ステップＳ１８２０にて、プロセッサ１５１は、仮想空間２にコンテンツを投影する。当該コンテンツは、例えば、映画、ドラマその他の動画コンテンツである。少なくとも、一人以上のＮＰＣオブジェクトが当該コンテンツに含まれていればよい。ＮＰＣオブジェクトは、例えば、動画コンテンツに予め組み込まれているオブジェクトでる。ステップＳ１８３０にて、プロセッサ１５１は、仮想空間２にＮＰＣオブジェクトを提示する。
【０１５５】
ステップＳ１８４０にて、プロセッサ１５１は、仮想カメラ１の姿勢に基づき、視界画像を生成する。視界画像のデータがＨＭＤ１１０に送られると、ユーザ１９０は、モニタ１１２を介して視界画像を視認することができる。
【０１５６】
ステップＳ１８５０にて、プロセッサ１５１は、コンピュータ２００から送られた信号に基づいて、ＨＭＤ１１０のユーザ１９０による動作を検出する。当該動作は、ユーザ１９０の表情の変化、コントローラ１６０の操作等を含む。表情の変化は、ＨＭＤ１１０に取り付けられている第１カメラ１１６および第２カメラ１１７から出力される各信号に基づいて、上記のフェイストラッキング手法等を用いて行なわれる。ユーザ１９０の手に装着されたコントローラ１６０は、その手の動きに応じた信号をコンピュータ２００に送信し、コンピュータ２００は受信した当該信号をサーバ１５０に送信する。
【０１５７】
ステップＳ１８６０にて、プロセッサ１５１は、検出された動作に応答して、ＮＰＣオブジェクトの行動を制御する。例えば、ユーザ１９０がＮＰＣオブジェクトに対して微笑んだ場合、プロセッサ１５１は、フェイストラッキング処理を実行してユーザ１９０の当該微笑みを検出し、ＮＰＣオブジェクトの顔がユーザ１９０に向けられてＮＰＣオブジェクトが微笑んだデータを生成する。
【０１５８】
ステップＳ１８７０にて、プロセッサ１５１は、行動が制御されたＮＰＣオブジェクトを仮想空間２に提示する。例えば、プロセッサ１５１は、仮想カメラ１による撮影範囲の中に、ユーザ１９０に向かって微笑んでいるＮＰＣオブジェクトを配置する。仮想カメラ１による視界画像データは、プロセッサ１５１によってＨＭＤ１１０に送信される。ユーザ１９０は、モニタ１１２において、ＮＰＣオブジェクトがユーザ１９０に向かって微笑んでいることを認識できる。
【０１５９】
ステップＳ１８８０にて、プロセッサ１５１は、サーバ１５０に対する命令に基づいて、コンテンツの表示を終了するか否かを判断する。例えば、ユーザ１９０が「再生停止」と発話した場合において、プロセッサ１５１が音声認識処理に基づき当該発話の内容を認識すると、コンテンツの表示を途中で終了すると判断し得る。あるいは、コンテンツの再生が終了している場合、プロセッサ１５１はコンテンツの表示を終了すると判断する。プロセッサ１５１がコンテンツの表示を終了すると判断すると（ステップＳ１８８０にてＹＥＳ）、処理は終了する。そうでない場合には（ステップＳ１８８０にてＮＯ）、プロセッサ１５１は制御をステップＳ１８３０に戻す。
【０１６０】
［データ構造］
図１９を参照して、サーバ１５０のデータ構造について説明する。図１９は、サーバ１５０が備えるストレージ１５４におけるデータの格納の一態様を表わす図である。ストレージ１５４は、行動テンプレートを保有している。より詳しくは、ストレージ１５４は、ＮＰＣオブジェクトＩＤ１９１０と、行動テンプレートＩＤ１９２０と、表情ＩＤ１９３０とを含む。ＮＰＣオブジェクトＩＤ１９１０は、仮想空間２に提示されるＮＰＣオブジェクトを識別する。行動テンプレートＩＤ１９２０は、当該ＮＰＣオブジェクトの行動を識別する。表情ＩＤ１９３０は、ＮＰＣオブジェクトの表情として予め規定された表情を識別する。
【０１６１】
［ユーザの表情変化をアバターオブジェクトにリアルに反映しない場合］
図２０を参照して、本実施の形態の他の局面について説明する。図２０は、ＨＭＤ１１０を装着したユーザ１９０の表情の変化がそのままリアルにアバターオブジェクトに反映されないようにするための処理の一部を表わすフローチャートである。
【０１６２】
ステップＳ１８１０にて、プロセッサ１５１は、仮想空間２を定義する。
ステップＳ２０１０にて、プロセッサ１５１は、第１カメラ１１６および第２カメラ１１７からそれぞれ出力される各信号に基づいて、ユーザ１９０の表情を検出する。
【０１６３】
ステップＳ２０２０にて、プロセッサ１５１は、表情の検出結果に基づいて、アバターオブジェクトを表示するためのデータにアクセスする。例えば、プロセッサ１５１は、ユーザ１９０の表情の変化率を算出し、その変化率に関連付けられている表情区分を特定し、その表情区分に関連付けられている表情を有するアバターオブジェクトを決定する。
【０１６４】
ステップＳ２０３０にて、プロセッサ１５１は、アクセスされたデータを用いて、アバターオブジェクトを仮想空間２に提示する。
【０１６５】
上記では、各処理がサーバ１５０によって実行される場合として説明されたが、当該処理は、コンピュータ２００その他演算機能を備える他のコンピュータによって実行されてもよい。例えば、ＨＭＤ１１０がプロセッサを備える場合には、そのプロセッサが当該処理を実行してもよい。
【０１６６】
［データ構造］
図２１を参照して、サーバ１５０のデータ構造について説明する。図２１は、ストレージ１５４におけるデータの格納の他の態様を表わす図である。ストレージ１５４は、テーブル２１００を保持している。テーブル２１００は、アバターオブジェクトＩＤ２１１０と、表情ＩＤ２１２０と、表情の変化率レンジ２１３０とを含む。アバターオブジェクトＩＤ２１１０は、ＨＭＤ１１０を使用するユーザに対応するアバターオブジェクトを識別する。表情ＩＤ２１２０は、当該アバターオブジェクトの表情として予め規定されて割り当てられている表情を識別する。表情の変化率レンジ２１３０は、ＨＭＤ１１０を装着したユーザ１９０の表情の変化率の範囲を特定する。
【０１６７】
例えば、ユーザ１９０の表情は、第１カメラ１１６および第２カメラ１１７から出力される各信号に基づいて、継続的に、例えば一定時間ごとに検出され、表情を表わすデータが出力される。時間的に隣接する二つのデータを用いて変化率が算出される。その変化率が表情の変化率レンジ２１３０のいずれかの範囲に属している場合、その変化率で特定される表情ＩＤ２１２０で特定される表情がアバターオブジェクトＩＤ２１１０で特定されるアバターオブジェクトに反映される。したがって、ユーザ１９０の表情の変化が常にリアルタイムで、そのアバターオブジェクトに反映されないようにすることができる。
【０１６８】
［表情を見せたくない場合における愛想笑い］
図２２を参照して、本実施の形態に係るさらに他の局面について説明する。図２２は、プロセッサが実行する処理の一部を表わすフローチャートである。
【０１６９】
ステップＳ２２１０にて、プロセッサ１５１は、ユーザ１９０に選択されたアプリケーションをメモリ１５２にロードする。ステップＳ１８１０にて、プロセッサ１５１は、アプリケーションの初期設定処理を実行し、仮想空間２を定義する。
【０１７０】
ステップＳ２２２０にて、プロセッサ１５１は、ユーザ１９０の表情をアバターオブジェクトに反映するか否かの設定の入力を受け付ける。例えば、当該設定画面がモニタ１１２に表示され、ユーザ１９０は、コントローラ１６０を操作することにより、あるいは、予め規定されたメニュー項目を視線で選択することにより、設定を入力できる。入力された設定内容は、メモリ１５２に保持される。
【０１７１】
ステップＳ２２３０にて、プロセッサ１５１は、アプリケーションの実行を開始する。ステップＳ２０１０にて、プロセッサ１５１は、ユーザ１９０の表情を検出する。ステップＳ２２４０にて、プロセッサ１５１は、メモリ１５２に保存されている設定内容に基づいて、ユーザ１９０の表情をアバターオブジェクトに反映する設定が有効であるか否かを判断する。当該設定が有効である場合には（ステップＳ２２４０にてＹＥＳ）、プロセッサ１５１は制御をステップＳ２２５０に切り替える。そうでない場合には（ステップＳ２２４０にてＮＯ）、プロセッサ１５１は、制御をステップＳ２２６０に切り替える。
【０１７２】
ステップＳ２２５０にて、プロセッサ１５１は、ユーザ１９０の表情の検出結果（例えば、表情の変化率）に基づいて、アバターオブジェクトを表示するためのデータ（表情ＩＤ２１２０）にアクセスする。
【０１７３】
ステップＳ２２６０にて、プロセッサ１５１は、予め準備された表情を表わすデータ（表情ＩＤ１９３０で特定されるデータ）にアクセスする。ステップＳ２２７０にて、プロセッサ１５１は、アクセスされたデータを用いて、ユーザ１９０の変化した表情をアバターオブジェクトに反映する。
【０１７４】
ステップＳ２２８０にて、プロセッサ１５１は、変化後の表情が反映されたアバターオブジェクトを仮想空間２に提示する。ユーザ１９０と他ユーザとが仮想空間２を共有している場合には、他ユーザは、ユーザ１９０の変化後の表情を認識する。
【０１７５】
［ポーカーフェイスオブジェクト］
図２３を参照して、ポーカーフェイスオブジェクトについて説明する。図２３は、ポーカーフェイスオブジェクトの購入を受け付けるインターフェイスを表わす図である。本実施の形態において、ポーカーフェイスオブジェクトとは、ユーザ１９０の表情に依存しないアバターオブジェクトをいう。ポーカーフェイスオブジェクトは、例えば、ユーザ１９０が、その表情の変化をチャット相手に知られたくない場合等に使用される。
【０１７６】
状態（Ａ）に示されるように、モニタ１１２は、インターフェイスオブジェクト２３１０を表示する。インターフェイスオブジェクト２３１０は、例えば、ユーザ１９０が仮想空間２を介して他のユーザとチャットするためのアプリケーションを起動した場合に提示される。インターフェイスオブジェクト２３１０は、ポーカーフェイスオブジェクトの購入を問い合わせるメッセージと、購入するという選択を受け付けるアイコン（「買う」）と、購入しないという選択を受け付けるアイコン（「買わない」）とを含む。
【０１７７】
ユーザ１９０がアイコン（「買う」）を選択すると、状態（Ｂ）に示されるように、モニタ１１２は、インターフェイスオブジェクト２３２０を表示する。インターフェイスオブジェクト２３２０は、例えば、３つのポーカーフェイスオブジェクト２３４０，２３５０，２３６０を含む。ユーザ１９０がいずれかのポーカーフェイスオブジェクトを選択して、購入確定アイコンを選択（あるいは押下）すると、その選択されたポーカーフェイスオブジェクトのデータは、ユーザ１９０が使用可能なアバターオブジェクトとして、ユーザ１９０のアカウントに関連付けられる。その後、ユーザ１９０は、自らの表情の変化をアバターオブジェクトに反映したくない場合には、購入したポーカーフェイスオブジェクトを使用することができる。
【０１７８】
図２４を参照して、仮想空間２の共有について説明する。図２４は、二人のユーザが同一のアプリケーションを実行することにより、仮想空間２を共有している状態を表わす図である。当該アプリケーションが実行されると、各ユーザは、それぞれ手に装着したコントローラ１６０を操作することで、仮想空間２を移動することができる。
【０１７９】
状態（Ａ）に示されるように、ある局面において、第１ユーザに対する仮想カメラ１Ａと、第２ユーザに対応する仮想カメラ１Ｂとが、仮想空間２に配置されている。状態（Ａ）では、仮想カメラ１Ａの視界領域２３と、仮想カメラ１Ｂの視界領域２３Ｂとは重なっていない。したがって、仮想カメラ１Ａに対応するユーザの視界には、仮想カメラ１Ｂに対応するユーザの姿が入っていない。
【０１８０】
状態（Ｂ）に示されるように、別の局面において、仮想カメラ１Ａに対応するユーザが仮想空間２における視線を変更するためにコントローラ１６０を操作すると、その操作に応じて仮想カメラ１Ａの向きも変更される。例えば、ＨＭＤ１１０を装着したユーザが頭を右方向に少し回転させると、その回転に応じて、仮想カメラ１Ａも時計回りに回転し、仮想カメラ１Ｂが視界領域２３Ａに含まれる。仮想カメラ１Ｂの場所には、仮想カメラ１Ｂに対応するユーザがいる。そのユーザは、仮想カメラ１Ａに対応するユーザが装着しているＨＭＤ１１０のモニタ１１２において視認され得る。この時、仮想カメラ１Ｂに対応するユーザは、アバターオブジェクトに反映された自らの表情を見られたくない場合もある。そこで、ユーザによる設定に基づいて、ポーカーフェイスオブジェクトが代わりに表示され得る。例えば、ユーザはポーカーフェイスオブジェクトとして、微笑んだ表情を有するポーカーフェイスオブジェクトを予め選択できる。このようにすると、当該ユーザが他ユーザの視界に不意に含まれることとなっても、微笑んだ表情が他ユーザに視認されるようにすることができる。
【０１８１】
図２５を参照して、サーバ１５０の制御構造についてさらに説明する。図２５は、プロセッサ１５１が実行する処理の一部を表わすフローチャートである。
【０１８２】
ステップＳ１８１０にて、プロセッサ１５１は、複数のユーザに共有される仮想空間２を定義する。例えば、各ユーザが同じアプリケーションを実行する場合、仮想空間２の共有は、例えば、複数のユーザが、仮想現実で規定されているコミュニケーションルームに入室した場合に実現される。
【０１８３】
ステップＳ２５１０にて、プロセッサ１５１は、各ユーザのアバターオブジェクトを仮想空間２に配置する。
【０１８４】
ステップＳ２５２０にて、プロセッサ１５１は、各ユーザの仮想カメラに基づく視界画像を生成する。
【０１８５】
ステップＳ２５３０にて、プロセッサ１５１は、各視界画像を表示するためのデータを各ユーザのＨＭＤに出力する。
【０１８６】
ステップＳ２５４０にて、プロセッサ１５１は、各ユーザの動作に応じて、仮想空間における仮想カメラの位置を変化させる。各ユーザの視界もその変化に応じて変わる。
【０１８７】
ステップＳ２５５０にて、プロセッサ１５１は、第１ユーザの仮想カメラ１Ａの視界（撮影範囲）に第２ユーザの仮想カメラ１Ｂが入ったことを検知する。例えば、プロセッサ１５１は、仮想空間２における各仮想カメラの位置と、各仮想カメラの視界（角度）とに基づいて、仮想カメラ１Ａの視界に仮想カメラ１Ｂが入ったか否かを判断し得る。上記のように、各ユーザの仮想カメラの位置と、各ユーザのアバターオブジェクトの位置とが関連付けられているため、プロセッサ１５１は、第１ユーザの仮想カメラ１Ａの視界に、第２ユーザに対応するアバターオブジェクトが入ったことを検知する構成としてもよい。
【０１８８】
ステップＳ２５６０にて、プロセッサ１５１は、予め準備された（笑っている）表情を第２ユーザのアバターオブジェクト（仮想カメラ１Ｂ）に反映する。
【０１８９】
ステップＳ２５７０にて、プロセッサ１５１は、第１ユーザに対応する仮想カメラ１Ａから、仮想カメラ１Ｂに対応する第２ユーザを含む視界画像のデータを取得する。
【０１９０】
ステップＳ２５８０にて、プロセッサ１５１は、取得した視界画像のデータを、第１ユーザのＨＭＤ１１０に出力する。第１ユーザは、自らの視界に入ってきた第２ユーザのアバターオブジェクトを見て、第２ユーザが笑っていると認識し得る。
【０１９１】
図２６を参照して、図２４に示される配置に基づくポーカーフェイスオブジェクトの表示態様について説明する。図２６は、ポーカーフェイスオブジェクトとして他ユーザに視認されるアバターオブジェクトの表示を表わす図である。
【０１９２】
状態（Ａ）に示されるように、モニタ１１２は、仮想カメラ１Ａによって撮影される視界画像を表示している。この時、仮想カメラ１Ａの視界領域２３Ａと、仮想カメラ１Ｂの視界領域２３Ｂとは重なっていないので（図２４の状態（Ａ））、モニタ１１２には仮想カメラ１Ｂに対応するユーザのアバターオブジェクトは映っていない。
【０１９３】
その後、ＨＭＤ１１０を装着したユーザが頭を右に回すことにより、仮想カメラ１Ａが時計回りに回転すると、視界領域２３Ａと視界領域２３Ｂとは、重なる。
【０１９４】
そうすると、仮想カメラ１Ａの撮影範囲には、仮想カメラ１Ｂとして表される他ユーザが含まれることになる。そこで、状態（Ｂ）に示されるように、モニタ１１２は、他ユーザに対応するアバターオブジェクト２６１０を表示する。アバターオブジェクト２６１０は、他ユーザによって予め購入されて当該他ユーザのアカウントに登録されているデータに基づいて表示される。このようにすると、不意に他のユーザの視界に入った場合であっても、ポーカーフェイスオブジェクトに基づく適切な表情がそのユーザに視認されるようにできる。
【０１９５】
以上開示された技術的特徴は、以下のように要約される。
（構成１）  ある局面に従うと、ヘッドマウントデバイスを介して仮想空間を提供するためにコンピュータで実行されるプログラムは、コンピュータに、仮想空間を定義するステップと、仮想空間にノンプレイヤーキャラクターオブジェクトを提示するステップと、ヘッドマウントデバイスのユーザによる動作を検出するステップと、動作を検出したことに応答して、ＮＰＣオブジェクトの行動を制御するステップとを実行させる。
【０１９６】
（構成２）  ある局面に従うと、上記構成に加えて、動作を検出するステップは、ユーザの表情を検出するステップを含む。制御するステップは、当該表情の検出結果に基づいて、ＮＰＣオブジェクトの行動を制御するステップを含む。
【０１９７】
（構成３）  ある局面に従うと、上記構成に加えて、制御するステップは、表情の検出結果に基づいて、ユーザの感情を判定し、判定したユーザの感情に応じて、ＮＰＣオブジェクトの行動を制御することを含む。
【０１９８】
（構成４）  ある局面に従うと、上記構成に加えて、制御するステップは、ＮＰＣオブジェクトの行動として予め準備された複数の行動テンプレートから検出された表情に対応する行動テンプレートを選択するステップと、選択された行動テンプレートをＮＰＣオブジェクトに反映することにより、ユーザの表情の検出結果に応じた行動を行うＮＰＣオブジェクトを提示するステップとを含む。
【０１９９】
（構成５）  ある局面に従うと、上記構成に加えて、ＮＰＣオブジェクトを提示するステップは、第１の行動をＮＰＣオブジェクトに行わせることを含む。検出するステップは、ＮＰＣオブジェクトが第１の行動を行ったことに反応したヘッドマウントデバイスのユーザの表情を検出することを含む。制御するステップは、ＮＰＣオブジェクトの第１の行動に反応したユーザの表情の検出結果に対して予め準備された複数の行動テンプレートから、ユーザの表情の検出結果に対応する行動テンプレートを第２の行動として選択するステップと、第１の行動に続けて第２の行動をＮＰＣオブジェクトに反映することにより、ユーザの表情の検出結果に応じた行動を行うＮＰＣオブジェクトを提示するステップとを含む。
【０２００】
（構成６）  ある局面に従うと、ヘッドマウントデバイスによって提供される仮想空間を介して通信するためにコンピュータで実行されるプログラムは、コンピュータに、仮想空間を定義するステップと、ヘッドマウントデバイスのユーザの表情を検出するステップと、ヘッドマウントデバイスのユーザに対応するアバターオブジェクトとして、予め準備された一つ以上の表情を有するアバターオブジェクトを表示するためのデータにアクセスするステップと、検出されるユーザの表情の変化に応じて、データに基づく表情を有するアバターオブジェクトを仮想空間に提示するステップとを実行させる。
【０２０１】
（構成７）  ある局面に従うと、上記構成に加えて、ユーザの表情の検出結果の変化率が予め定められた範囲内にある場合に、アバターオブジェクトの表情が一定の表情となるように、データは規定されている。
【０２０２】
（構成８）  ある局面に従うと、上記構成に加えて、アバターオブジェクトを仮想空間に提示するステップは、検出された表情を当該ユーザに対応するアバターオブジェクトの表情に反映させることなく、予め準備された表情が反映されたアバターオブジェクトを提示するステップを含む。
【０２０３】
（構成９）  ある局面に従うと、上記構成に加えて、プログラムはコンピュータに、予め準備された表情が反映されたアバターオブジェクトの購入を受け付けるインターフェイスオブジェクトを仮想空間に提示するステップをさらに実行させる。
【０２０４】
（構成１０）  ある局面に従うと、上記構成に加えて、プログラムはコンピュータに、ユーザの表情の検出結果をアバターオブジェクトに反映するか否かの指定をユーザから受け付けるステップをさらに実行させる。予め準備された表情が反映されたアバターオブジェクトを提示するステップは、ユーザの表情をアバターオブジェクトに反映するか否かを規定する設定に従って、当該アバターオブジェクトを提示するステップを含む。
【０２０５】
（構成１１）  ある局面に従うと、上記構成に加えて、予め準備された表情が反映されたアバターオブジェクトを提示するステップは、仮想空間を共有する他のユーザの視界に対応する領域内にヘッドマウントデバイスのユーザのアバターオブジェクトが入ったことに基づいて、当該アバターオブジェクトの表情を予め準備された表情が反映されたアバターオブジェクトを提示するステップを含む。
【０２０６】
（構成１２）  ある局面に従うと、上記のプログラムを格納したメモリと、当該プログラムを実行するためのプロセッサとを備える情報処理装置が提供される。
【０２０７】
（構成１３）  ある局面に従うと、ヘッドマウントデバイスを介して仮想空間を提供するためにコンピュータで実行される方法は、仮想空間を定義するステップと、仮想空間にノンプレイヤーキャラクター（ＮＰＣ）オブジェクトを提示するステップと、ヘッドマウントデバイスのユーザによる動作を検出するステップと、動作を検出したことに応答して、ＮＰＣオブジェクトの行動を制御するステップと含む。
【０２０８】
（構成１４）  ある局面に従うと、ヘッドマウントデバイスによって提供される仮想空間を介して通信するためにコンピュータで実行される方法は、仮想空間を定義するステップと、ヘッドマウントデバイスのユーザの表情を検出するステップと、ヘッドマウントデバイスのユーザに対応するアバターオブジェクトとして、予め準備された一つ以上の表情を有するアバターオブジェクトを表示するためのデータにアクセスするステップと、検出されるユーザの表情の変化に応じて、データに基づく表情を有するアバターオブジェクトを仮想空間に提示するステップとを含む。
【０２０９】
［まとめ］
以上の次第で、本実施の形態によれば、仮想空間２におけるアバターオブジェクト間のコミュニケーションがより豊かになる。ある局面において、ＮＰＣオブジェクトの表情がユーザ１９０の表情の変化に応じてリアルタイムで反応されるので、ＨＭＤ１１０を装着したユーザ１９０による仮想空間２に対する没入感が高まり得る。
【０２１０】
別の局面において、ユーザ１９０の僅かな表情変化が全てアバターオブジェクトに反映されなくなるので、当該アバターオブジェクトを視認するユーザは違和感を覚えにくくなる。さらに別の局面において、仮想空間２を介してコミュニケーションをとっている他ユーザに対して、ユーザ１９０の意図しない表情が示されることが防止され得る。
【０２１１】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２１２】
１  仮想カメラ、２  仮想空間、５  基準視線、１０，１５１  プロセッサ、１１，１５２  メモリ、１２，１５４  ストレージ、１３  入出力インターフェース、１４  通信インターフェース、１５  バス、１９  ネットワーク、２０，２０００  オブジェクト、２１  中心、２２  仮想空間画像、２３  視界領域、２４，２５  領域、３０  グリップ、３１  フレーム、３２  天面、３３，３４，３６，３７  ボタン、３８  アナログスティック、５０  顔画像、５１  口領域、５２  輪郭検出線、５３，５４  輪郭点、５５  口形状、１００  システム、１１０  ＨＭＤ、１１２  モニタ、１１４，１２０  センサ、１１５  スピーカ、１１６  第１カメラ、１１７  第２カメラ、１１９  マイク、１３０  モーションセンサ、１４０  注視センサ、１５０  サーバ、１５３  通信インターフェイス、１６０  コントローラ。
【図１】
2019106220.tif 000003
【図２】
2019106220.tif 000004
【図３】
2019106220.tif 000005
【図４】
2019106220.tif 000006
【図５】
2019106220.tif 000007
【図６】
2019106220.tif 000008
【図７】
2019106220.tif 000009
【図８】
2019106220.tif 000010
【図９】
2019106220.tif 000011
【図１０】
2019106220.tif 000012
【図１１】
2019106220.tif 000013
【図１２】
2019106220.tif 000014
【図１３】
2019106220.tif 000015
【図１４】
2019106220.tif 000016
【図１５】
2019106220.tif 000017
【図１６】
2019106220.tif 000018
【図１７】
2019106220.tif 000019
【図１８】
2019106220.tif 000020
【図１９】
2019106220.tif 000021
【図２０】
2019106220.tif 000022
【図２１】
2019106220.tif 000023
【図２２】
2019106220.tif 000024
【図２３】
2019106220.tif 000025
【図２４】
2019106220.tif 000026
【図２５】
2019106220.tif 000027
【図２６】
2019106220.tif 000028