はじめに、以下の各実施形態の反応出力システムの説明に用いる用語の定義について簡単に説明する。以下の各実施形態において説明する反応出力システムは、互いに離間した場所にいる複数の人間同士がコミュニケーションを行う際に利用する仮想空間を提供するとともに、親密性のバランスがとれているか否かを推測するための合成画像群を提供する。
当該反応出力システムは、仮想空間を提供するにあたり、実空間における「人の振る舞い」を、仮想空間における「アバタの動き」に変換する処理を行う。「アバタの動き」は、各タイムフレーム(時刻)において生成された各タイムフレーム(時刻)の画像である「アバタ」を連続的に表示することで表現される。ここでいう「人の振る舞い」は、ジェスチャとして知られる、手を挙げる、首を傾ける等の定型化された振る舞いも含むが、必ずしも、人からジェスチャとして認識されるものでなくてもよい。
各フレームにおける「アバタ」は、アバタの各部位の「部位情報」に基づいて生成される。アバタの各部位の「部位情報」は、実空間における人の振る舞い(Behavior)をセンシングすることで得たセンサデータを、仮想空間におけるアバタの各部位の状態(位置、角度等)を示す情報に変換することで得られる。なお、「部位情報」には、「部位の種類を示す情報」と、「部位の状態を示す値(部位値)」とが含まれる。
つまり、仮想空間における「アバタの動き」は、時刻の経過に伴う各タイムフレーム間での「アバタ」の変化(アバタの各部位の部位値の変化)として表現される。なお、以下の実施形態では、アバタの各部位がどのように動いたのかによってアバタの動きをラベル付けした情報(実空間において人がどのような振る舞いを行ったのかについてラベル付けした情報)を、「アバタの動きの種類」と称する。
なお、実空間においては、同じ振る舞いであっても、他の人との関係によっては反対の意味を持つ(異なる社会的振る舞い(Social Behavior)であると判断される)場合がある。社会的振る舞いとは、振る舞いの中でも他の人の社会的な存在に対して行われる振る舞いをいう。
例えば、人の振る舞いが、前進する振る舞いであったとした時に、前進した先に他の人がいる場合には、当該人の振る舞いは、他の人に近づくという社会的振る舞い(接近傾向を示す社会的振る舞い)ということができる。反対に、他の人が近くにいる状態で、前進する振る舞いを行った結果、当該他の人から遠ざかる場合には、当該人の振る舞いは、他の人から遠ざかる社会的振る舞い(回避傾向を示す社会的振る舞い)ということができる。同様に、例えば、人の振る舞いが、顔の向きを右方向に向ける振る舞いであったとした時に、右側に他の人がいる場合には、当該人の振る舞いは、他の人に顔を向ける社会的振る舞い(接近傾向を示す社会的振る舞い)ということができる。反対に、当該人の左側に他の人がいる状態で、顔の向きを右方向に向ける振る舞いを行った場合、当該人の振る舞いは、他の人から顔をそむける社会的振る舞い(回避傾向を示す社会的振る舞い)ということができる。
したがって、仮想空間における「アバタの動き」も、他のアバタとの関係によっては反対の意味を持つことになる。以下の実施形態では、「他のアバタに対する動き」が、実空間における人のどのような社会的振る舞いに相当するかを判定することを、「他のアバタに対する動きの種類」を判定する、と称する。
続いて、以下の各実施形態の反応出力システムの処理の概要について説明する。各実施形態における反応出力システムは、実空間における人の振る舞いをセンシングすることで得たセンサデータに基づいて、それぞれのアバタの動きを算出する。そして、所定のアバタが所定量以上動いたことに伴って、他のアバタが所定量以上動いた場合に、動きの種類を判定するとともに、それぞれの動きを反映した画像群を生成し、それらを合成することで、合成画像群を生成する。
このとき、各実施形態における反応出力システムは、所定のアバタの動きを他のユーザが視認できるように表示した際の表示タイミングと、他のユーザの振る舞い(反応)をセンシングしたセンシングタイミングとのズレに応じた時間差で、画像群を合成する。これにより、所定のユーザの振る舞いに対して他の人たちが個別にした反応を、当該振る舞いに対するそれぞれの反応が生起したタイミングを変えずに、合成画像群として出力することができる。この結果、仮想空間においても、ユーザの個々の振る舞いとそれぞれの振る舞いに対する他のユーザの反応との関係を容易に把握することができる。
なお、以下の各実施形態における反応出力システムは、画像群を生成するにあたり、判定した「アバタの動きの種類」に応じた「他のアバタに対する動きの種類」を判定する。そして、各実施形態における反応出力システムは、「他のアバタに対する動きの種類」を判定するのに用いたセンサデータ等に基づいて、画像群を生成する。これにより、実空間における人の社会的振る舞いに相当する、仮想空間におけるアバタの動きを反映した画像群を含む合成画像群を生成することができる。
以下、各実施形態の詳細について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
[第1の実施形態]
<反応出力システムの全体構成>
はじめに、反応出力システムの全体構成について説明する。図1は、反応出力システムの全体構成の一例を示す図である。図1に示すように、反応出力システム100は、サーバ装置110と、第1乃至第3端末の一例であるクライアント装置120〜140とを有する。サーバ装置110と、クライアント装置120〜140とは、インターネットやLAN(Local Area Network)等に代表されるネットワーク180を介して接続されている。
ユーザ150(ユーザ名="ユーザA"、第1の人)、ユーザ160(ユーザ名="ユーザB"、第2の人)、ユーザ170(ユーザ名="ユーザC"、第3の人)は、互いに離間した場所にいて、反応出力システム100を利用する。これにより、ユーザ150〜170はサーバ装置110が提供する同じ仮想空間において、互いにコミュニケーションを行うことができる。また、ユーザ150〜170は、反応出力システム100において提供される合成画像群(詳細は後述)を視認することが可能である。これにより、ユーザ150〜170は、それぞれのユーザが行う振る舞いと他のユーザの反応との関係とを容易に把握することができ、親密性のバランスがとれているか否かを推測することができる。
サーバ装置110には、仮想空間用情報提供プログラムと合成画像群用情報提供プログラムとがインストールされている。サーバ装置110は、これらのプログラムを実行することで、仮想空間用情報提供部111及び合成画像群用情報提供部112として機能する。
仮想空間用情報提供部111は、ユーザ150〜170が互いにコミュニケーションを行う仮想空間を提供する。具体的には、仮想空間用情報提供部111は、ユーザ150〜170の実空間における振る舞い(体の姿勢を変える動作、顔の向きや表情を変える動作、発話等)をセンシングすることで取得したセンサデータをクライアント装置から受信する。
なお、センサデータには、上記したユーザの振る舞い以外の振る舞い(ユーザの視線の動作等も含む)をセンシングすることで取得したデータが含まれていてもよい。
仮想空間用情報提供部111は、受信したセンサデータをセンサデータ格納部114に格納する。また、仮想空間用情報提供部111は、受信したセンサデータに基づいて、仮想空間におけるアバタの動きを表現すべく、各時刻におけるアバタの各部位の部位情報を算出する。更に、仮想空間用情報提供部111は、算出した部位情報に基づいて各時刻におけるアバタを生成し、生成したアバタを含む仮想空間の画像を、受信したセンサデータに含まれる音声データともに仮想空間用情報として他のクライアント装置に提供する。
このとき、仮想空間用情報提供部111は、コンテンツ格納部113に格納された背景画像の中から選択した背景画像を用いて、仮想空間の画像(背景部分)を生成する。また、仮想空間用情報提供部111は、コンテンツ格納部113に格納された人型画像の中から選択した、ユーザ150〜170それぞれに対応する人型画像を用いて、アバタを生成する。
合成画像群用情報提供部112は、仮想空間用情報提供部111により提供される仮想空間において、ユーザ150〜170のアバタの各部位が所定量以上動いたか否か(アバタの各部位の部位情報が所定量以上変化したか否か)を判定する。また、合成画像群用情報提供部112は、アバタの各部位が所定量以上動いたと判定した場合に、当該動きを含む合成画像群を生成し、生成した合成画像群をユーザ150〜170が視認できるように提供する。これにより、ユーザ150〜170は、ユーザ150〜170間において親密性のバランスがとれているか否かを推測することができる。
また、合成画像群用情報提供部112は、合成画像群を提供するための各処理を実行した際に取得した各種ログをログ格納部116のログテーブルに格納する。これにより(各種ログを解析することにより)、サーバ装置110の管理者は、ユーザ150〜170間において親密性のバランスがとれているか否かを推測することができる。
クライアント装置120には、情報処理プログラムがインストールされている。クライアント装置120は、当該プログラムを実行することで、情報処理部121として機能する。
また、クライアント装置120には、深度センサ122が接続されている。深度センサ122は、ユーザ150の前方に配置され、ユーザ150の三次元の位置を計測することで、ユーザ150の実空間における振る舞い(例えば、体の姿勢を変える振る舞い等)に応じて変化するデータである深度データを出力する。
更に、クライアント装置120は、ユーザ150が利用するウェアラブル型の表示装置またはセンサとの間で、無線通信を行う。第1の実施形態においてウェアラブル型の表示装置には、HMD(Head-Mounted Display)123が含まれる。HMD123は、ユーザ150に対して各タイムフレーム(時刻)における仮想空間の画像を表示する。また、第1の実施形態においてウェアラブル型のセンサには、頭部姿勢センサ124、音声センサ125、筋電位センサ126が含まれる。
頭部姿勢センサ124は、ユーザ150の実空間における振る舞いのうち、"顔の向き"に応じたデータである頭部姿勢データを出力する。音声センサ125は、ユーザ150の実空間における振る舞いのうち、"発話"に応じたデータである音声データを出力する。筋電位センサ126は、ユーザ150の実空間における振る舞いのうち、"表情"に応じたデータである筋電位データを出力する。
HMD123、頭部姿勢センサ124、音声センサ125、筋電位センサ126は、ユーザ150の頭部に装着される。なお、頭部姿勢センサ124、音声センサ125、筋電位センサ126は、HMD123に内蔵されていてもよい。また、ウェアラブル型のセンサには、上記した振る舞い以外のユーザ150の振る舞いに応じたデータを出力するセンサが含まれていてもよい。例えば、ウェアラブル型のセンサには、ユーザ150の実空間における振る舞いのうち、視線の向きに応じたデータを出力するセンサが含まれていてもよい。
クライアント装置120は、深度データ、頭部姿勢データ、音声データ、筋電位データをセンサデータとして取得し、サーバ装置110に送信する。また、クライアント装置120は、サーバ装置110より送信された仮想空間用情報を受信する。また、クライアント装置120は、受信した仮想空間用情報と、取得したセンサデータとに基づいて、ユーザ150から見た場合の各タイムフレーム(時刻)における仮想空間の画像(以下、"視野画像"と称す)を生成する。更に、クライアント装置120は、生成した視野画像と、仮想空間用情報に含まれる音声データとをHMD123に送信する。これにより、ユーザ150は、仮想空間を視認することができるとともに、実空間において発せられた音声を仮想空間において視聴することができる。
また、クライアント装置120は、サーバ装置110にセンサデータを送信したことに応じて、サーバ装置110より送信された合成画像群用情報を受信する。合成画像群用情報は、ユーザ150〜170間において親密性のバランスがとれているか否かを推測するのに適した合成画像群を含む情報である。クライアント装置120は、合成画像群用情報に含まれる当該合成画像群を所定の再生開始タイミングで、HMD123において再生するよう制御する。所定の再生開始タイミングは、当該合成画像群が、他のユーザ160、170に装着されるHMD133、143において再生される再生開始タイミングと同期したタイミングである。
なお、クライアント装置130及びクライアント装置140が有する機能、クライアント装置130及びクライアント装置140に接続される表示装置及びセンサ等は、クライアント装置120と同様であるため、ここでは説明を省略する。
<反応出力システムにおける視野画像の説明>
次に、ユーザ150〜170のHMD123、133、143それぞれに表示される視野画像について説明する。図2は、各ユーザのHMDそれぞれに表示される視野画像の一例を示す図である。
図2に示すように、ユーザ150のHMD123には、各タイムフレーム(時刻)における視野画像として、ユーザ160のアバタ260(第2画像)と、ユーザ170のアバタ270(第3画像)とを含む仮想空間の画像200が表示される。なお、ユーザ150のHMD123に表示された視野画像には、ユーザ150自身のアバタの一部(手等)が表示されていないが、ユーザ150自身のアバタの全体や一部(手等)が表示されてもよい。
ユーザ160のHMD133には、各タイムフレーム(時刻)における視野画像として、ユーザ150のアバタ250(第1画像)を含む仮想空間の画像200が表示される。ユーザ160の向きは、ユーザ150の向きとは異なっているため、同じ仮想空間の画像200であっても、ユーザ150のHMD123に表示された視野画像とは異なる視野画像が表示される。なお、仮想空間の画像200において、ユーザ170は、ユーザ160の左横にいるため、図2の例では、ユーザ160のHMD123に表示された視野画像には、ユーザ170のアバタ270は表示されていない。また、ユーザ160のHMD123に表示された視野画像には、ユーザ160自身のアバタの一部(手等)が表示されていないが、ユーザ160自身のアバタの全体や一部(手等)が表示されてもよい。
ユーザ170のHMD143には、ユーザ150のアバタ250を含む仮想空間の画像200が表示される。ユーザ170の向きは、ユーザ160の向きと概ね同じであるため、ユーザ160のHMD133と同様の視野画像が表示される。なお、仮想空間の画像200において、ユーザ160は、ユーザ170の右横にいるため、図2の例では、ユーザ170のHMD123に表示された仮想空間の画像200には、ユーザ160のアバタ260は表示されていない。また、ユーザ170のHMD123に表示された視野画像には、ユーザ170自身のアバタの一部(手等)が表示されていないが、ユーザ170自身のアバタの全体や一部(手等)が表示されてもよい。
<反応出力システムにおけるユーザの振る舞いと視野画像との関係及び合成画像群の説明>
次に、反応出力システム100におけるユーザ150〜170の振る舞いと視野画像との関係及び合成画像群について説明する。図3及び図4は、各ユーザの振る舞いと視野画像との関係を説明するための図である。図3及び図4において矢印300は、時間軸を示している。
時刻t1において、ユーザ150が実空間において体の向きを保ったまま、前方(矢印301方向)に進む振る舞いを行ったとする。クライアント装置120は、ユーザ150の振る舞いに関してセンシングしたセンサデータを取得すると、当該センサデータに基づいて、仮想空間の画像200におけるユーザ150の視野画像を更新する。視野画像311は、更新後の視野画像を示している。ユーザ150が実空間において前方に進む振る舞いを行ったことで、仮想空間の画像200において、ユーザ160のアバタ260及びユーザ170のアバタ270に近づくことになる。これにより、視野画像311は、仮想空間の画像200においてアバタ260及びアバタ270に接近した状態を示す画像となる。
クライアント装置120において取得されたセンサデータは、サーバ装置110に送信される。サーバ装置110は、受信したセンサデータに基づいてアバタ250の部位情報を算出する。また、サーバ装置110は、算出した部位情報を仮想空間の画像200におけるアバタ250に反映した後、当該仮想空間の画像を含む仮想空間用情報を、クライアント装置130及びクライアント装置140に送信する。
時刻t2において仮想空間用情報を受信したクライアント装置130は、仮想空間用情報に含まれる仮想空間の画像に基づいて、ユーザ160の視野画像を更新する。視野画像321は、更新後の視野画像を示している。ユーザ150が実空間において前方に進む振る舞いを行ったことで、仮想空間の画像200'においても、ユーザ150のアバタ250が近づくことになる。これにより、視野画像321は、仮想空間の画像200'においてアバタ250が接近した状態を示す画像となる。
同様に、時刻t3において仮想空間用情報を受信したクライアント装置140は、仮想空間用情報に含まれる仮想空間の画像に基づいて、ユーザ170の視野画像を更新する。視野画像331は、更新後の視野画像を示している。ユーザ150が実空間において前方に進む振る舞いを行ったことで、仮想空間の画像200'においても、ユーザ150のアバタ250がユーザ170のアバタ270に近づくことになる。これにより、視野画像331は、仮想空間の画像200'においてアバタ250が接近した状態を示す画像となる。
仮想空間の画像200'においてアバタ250の画像が接近したことに応じて、図4に示すように、時刻t4において、ユーザ160が後方(矢印302方向)に進む振る舞いを行ったとする。クライアント装置130は、ユーザ160の振る舞いに関してセンシングしたセンサデータを取得すると、当該センサデータに基づいて、仮想空間の画像200'におけるユーザ160の視野画像を更新する。視野画像322は、更新後の視野画像を示している。ユーザ160が実空間において後方に進む振る舞いを行ったことで、仮想空間の画像200'においても、ユーザ150のアバタ250から遠ざかることになる。これにより、視野画像322は、仮想空間の画像200'においてアバタ250から遠ざかった状態を示す画像となる。
クライアント装置130において取得されたセンサデータは、サーバ装置110に送信される。サーバ装置110は、受信したセンサデータに基づいてアバタ260の部位情報を算出する。
同様に、時刻t5において、ユーザ170は、仮想空間の画像200'において接近したアバタ250がいる右方向(矢印303方向)を向く振る舞いを行ったとする。クライアント装置140は、ユーザ170の振る舞いをセンシングしたセンサデータを取得すると、当該センサデータに基づいて、仮想空間の画像200'におけるユーザ170の視野画像を更新する。視野画像332は、更新後の視野画像を示している。ユーザ160が実空間において右方向を向く振る舞いを行ったことで、仮想空間の画像200'においても、アバタ270の右側が視認されることになる。これにより、視野画像332は、仮想空間の画像200'において、アバタ250とアバタ260とが接近している状態を示す画像となる。なお、時刻t5の時点で、ユーザ170のHMD143には、時刻t4でのユーザ160の振る舞いがアバタ260の動きに反映された仮想空間の画像は表示されない。このため、視野画像332に示すように、アバタ260の画像は後方に進んでいない画像となる。
クライアント装置140において取得されたセンサデータは、サーバ装置110に送信される。サーバ装置110は、受信したセンサデータに基づいてアバタ270の部位情報を算出する。
なお、ユーザ150により所定の振る舞いが行われ、当該振る舞い応じてアバタ250が動いた仮想空間の画像200'がユーザ160、170のHMD133、143に表示されると、仮想空間用情報の更新が一旦停止する。このため、時刻t6においてユーザ150のHMD123には、時刻t1において表示された仮想空間の画像200に基づく視野画像と同じ視野画像が依然として表示されることになる。
このように、ユーザ150が実空間で所定の振る舞いを行った時刻(t1)と、ユーザ160、170がそれぞれの視野画像に基づいてユーザ150のアバタ250の動きを視認して反応する時刻(t4,t5)との間には、一定程度のタイムラグがある。
このため、ユーザ160、170の反応が、ユーザ150の一連の振る舞いのうち、時刻t1における振る舞いに起因する反応であるのか、他の時刻における他の振る舞いに起因する反応であるのかを判断するのは困難である。
そこで、第1の実施形態では、ユーザ150の時刻t1における振る舞いに起因して発生するユーザ160、170の振る舞いをアバタ250〜270の動きとしてまとめた合成画像群をサーバ装置110が生成する。そして、合成画像群用情報として、クライアント装置120、130、140に送信する。図5は、合成画像群の表示例を示す図である。
図5に示すように、ユーザ150〜170の視野画像(図5の例では、視野画像311、322、332)の合成画像群再生領域501〜503には、合成画像群が再生される。具体的には、クライアント装置120、130、140は、それぞれ、サーバ装置110から送信された合成画像群用情報に含まれる合成画像群を、時刻t7において、合成画像群再生領域501〜503に再生するよう制御する。
合成画像群再生領域501〜503にて再生した合成画像群は、アバタ250'がアバタ260'に近づくことで、アバタ260'が後方に進み、アバタ270'が顔を右方向を向けた一連の動きが含まれる画像群である。
合成画像群において、アバタ260'は、アバタ250'が近づいてから所定の時間差で、後方に進む動きをする。このときの所定の時間差は、アバタ250が接近した状態の視野画像321をユーザ160が視認してから、ユーザ160が後方に進む振る舞いを行うまでの時間差(t2とt4との時間差)である。
また、合成画像群において、アバタ270'は、アバタ250'が接近してから所定の時間差で、右方向を向く動きをする。このときの所定の時間差は、アバタ250が接近した状態の視野画像331をユーザ170が視認してから、ユーザ170が右方向を向く振る舞いを行うまでの時間差(t3とt5との時間差)である。
このようにして、合成画像群が再生されることで、ユーザ150の振る舞いに起因する他のユーザ160、170の反応を、あたかも実空間において居合わせてそれぞれが反応した場合のように、仮想空間上でアバタ250'〜260'で表現することが可能となる。
<サーバ装置のハードウェア構成>
次に、サーバ装置110のハードウェア構成について説明する。図6は、サーバ装置のハードウェア構成の一例を示す図である。図6に示すように、サーバ装置110は、CPU(Central Processing Unit)601、ROM(Read Only Memory)602、RAM(Random Access Memory)603を備える。また、サーバ装置110は、補助記憶部604、通信部605、表示部606、操作部607、ドライブ部608を備える。なお、サーバ装置110の各部は、バス609を介して相互に接続されている。
CPU601は、補助記憶部604にインストールされた各種プログラム(例えば、仮想空間用情報提供プログラム、合成画像群用情報提供プログラム)を実行するコンピュータである。ROM602は、不揮発性メモリである。ROM602は、補助記憶部604に格納された各種プログラムをCPU601が実行するために必要な各種プログラム、データ等を格納する主記憶部として機能する。具体的には、ROM602はBIOS(Basic Input/Output System)やEFI(Extensible Firmware Interface)等のブートプログラム等を格納する。
RAM603は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の揮発性メモリであり、主記憶部として機能する。RAM603は、補助記憶部604に格納された各種プログラムがCPU601によって実行される際に展開される、作業領域を提供する。
補助記憶部604は、サーバ装置110にインストールされた各種プログラムや、各種プログラムを実行する際に用いる情報(仮想空間の画像(背景部分)、人型画像、定義情報等)を格納する。また、補助記憶部604は、各種プログラムを実行することで取得される情報(センサデータ、ログ等)を格納する。
通信部605は、サーバ装置110が接続するクライアント装置120、130、140と通信するためのデバイスである。表示部606は、サーバ装置110における各種処理結果や処理状態を表示する。操作部607は、サーバ装置110に対して各種指示を入力する際に用いられる。
ドライブ部608は記録媒体610をセットするためのデバイスである。ここでいう記録媒体610には、CD−ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する媒体が含まれる。また、記録媒体610には、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等も含まれる。
なお、補助記憶部604に格納される各種プログラムは、例えば、配布された記録媒体610がドライブ部608にセットされ、記録媒体610に記録された各種プログラムがドライブ部608により読み出されることで格納されるものとする。あるいは、通信部605を介して受信することで格納されてもよい。
<クライアント装置のハードウェア構成>
次に、クライアント装置120、130、140のハードウェア構成について説明する。図7は、クライアント装置のハードウェア構成の一例を示す図である。図7に示すように、クライアント装置120、130、140は、CPU(Central Processing Unit)701、ROM(Read Only Memory)702、RAM(Random Access Memory)703を備える。また、クライアント装置120、130、140は、補助記憶部704、通信部705、操作部706、表示部707、音声データ転送部708、音声データ取得部709を備える。更に、クライアント装置120、130、140は、頭部姿勢データ取得部710、深度データ取得部711、筋電位データ取得部712を備える。なお、これらの各部は、バス713を介して相互に接続されている。
CPU701は、補助記憶部704にインストールされた各種プログラム(例えば、情報処理プログラム)を実行するコンピュータである。ROM702は、不揮発性メモリである。ROM702は、補助記憶部704に格納された各種プログラムをCPU701が実行するために必要な各種プログラム、データ等を格納する主記憶部として機能する。具体的には、ROM702はBIOS(Basic Input/Output System)やEFI(Extensible Firmware Interface)等のブートプログラム等を格納する。
RAM703は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の揮発性メモリであり、主記憶部として機能する。RAM703は、補助記憶部704に格納された各種プログラムがCPU701によって実行される際に展開される、作業領域を提供する。
補助記憶部704は、インストールされた各種プログラムや、各種プログラムを実行する際に用いる情報を格納する。
通信部705は、クライアント装置120、130、140が接続するサーバ装置110と通信するためのデバイスである。操作部706は、クライアント装置120、130、140に対して各種指示を入力する際に用いられる。表示部707は、クライアント装置120、130、140における各種処理結果や処理状態を表示する。
音声データ転送部708は、サーバ装置110より送信される仮想空間用情報に含まれる音声データを抽出し、HMD123に送信する。これにより、HMD123が有するスピーカにおいて、音声データが出力される。
音声データ取得部709は、音声センサ125(または音声センサ135、145)より送信された音声データを取得する。頭部姿勢データ取得部710は、頭部姿勢センサ124(または頭部姿勢センサ134、144)より送信された頭部姿勢データを取得する。深度データ取得部711は、深度センサ122(または深度センサ132、142)より送信された深度データを取得する。筋電位データ取得部712は、筋電位センサ126(筋電位センサ136、146)より送信された筋電位データを取得する。
なお、取得された音声データ、頭部姿勢データ、深度データ、筋電位データは、センサデータとして、通信部705によりサーバ装置110に送信される。
<クライアント装置の機能構成>
次に、クライアント装置120、130、140の情報処理部121、131、141の機能構成について説明する。図8は、クライアント装置の機能構成の一例を示す図である。図8に示すように、クライアント装置120、130、140の情報処理部121、131、141は、仮想空間用情報取得部801、センサデータ取得部802、視野画像生成部803、視野画像表示制御部804、音声出力制御部805を有する。なお、仮想空間用情報取得部801から音声出力制御部805までの各部は、仮想空間用情報に関する処理を実行する際に用いる機能である。
また、クライアント装置120、130、140の情報処理部121、131、141は、センサデータ送信部806、合成画像群用情報取得部807、合成画像群再生部808を有する。なお、センサデータ取得部802及びセンサデータ送信部806から合成画像群再生部808までの各部は、合成画像群用情報に関連する処理を実行する際に用いる機能である。
仮想空間用情報取得部801は、サーバ装置110より送信される仮想空間用情報を取得し、視野画像生成部803及び音声出力制御部805に通知する。
センサデータ取得部802は、頭部姿勢データ取得部710において取得された頭部姿勢データを、センサデータ取得時刻を示す時刻情報と対応付けて取得する。また、センサデータ取得部802は、深度データ取得部711において取得された深度データを、センサデータ取得時刻を示す時刻情報と対応付けて取得する。更に、センサデータ取得部802は、筋電位データ取得部712において取得された筋電位データ、音声データ取得部709において取得された音声データを、それぞれのセンサデータ取得時刻を示す時刻情報と対応付けて取得する。
センサデータ取得部802は、取得した頭部姿勢データと深度データとを、視野画像生成部803に通知する。また、取得した頭部姿勢データと深度データと筋電位データと音声データとを、それぞれ時刻情報と対応付けて、センサデータとして、センサデータ送信部806に通知する。
視野画像生成部803は、センサデータ取得部802より通知された頭部姿勢データ及び深度データと、仮想空間用情報に含まれる仮想空間の画像とに基づいて、ユーザ150(またはユーザ160、170)の各タイムフレームにおける視野画像を生成する。
視野画像表示制御部804は、視野画像生成部803により生成された視野画像を、HMD123(またはHMD133、143)に表示するよう制御する。
音声出力制御部805は、仮想空間用情報に含まれる音声データを抽出し、HMD123(またはHMD133、143)が有するスピーカにおいて出力されるよう制御する。
センサデータ送信部806は、センサデータ取得部802より通知されたセンサデータを、サーバ装置110に送信する。センサデータ送信部806は、センサデータを送信するにあたり、センサデータのセンシングに用いたセンサを利用するユーザのユーザ名を合わせてサーバ装置に送信する。また、センサデータ送信部806は、センシングされたセンサデータを取得したクライアント装置を識別するための識別子等もあわせてサーバ装置110に送信する。
合成画像群用情報取得部807は、サーバ装置110より送信された合成画像群用情報を取得し、合成画像群再生部808に通知する。
合成画像群再生部808は、合成画像群用情報取得部807より通知された合成画像群用情報に含まれる合成画像群を抽出し、HMD123(またはHMD133、143)に送信する。また、合成画像群の再生が、合成画像群用情報にて指示された再生開始タイミングで開始されるよう、HMD123(またはHMD133、143)を制御する。
<クライアント装置により実行されるセンサデータ送信処理の流れ>
次に、クライアント装置120により実行されるセンサデータ送信処理の流れについて説明する。図9は、クライアント装置により実行されるセンサデータ送信処理のフローチャートである。
ステップS901において、センサデータ取得部802は、頭部姿勢データ取得部710により取得された頭部姿勢データを取得し、時刻情報等と対応付けて、センサデータとしてセンサデータ送信部806に通知する。
ステップS902において、センサデータ取得部802は、深度データ取得部711により取得された深度データを取得し、時刻情報等と対応付けて、センサデータとしてセンサデータ送信部806に通知する。
ステップS903において、センサデータ取得部802は、筋電位データ取得部712により取得された筋電位データを取得し、時刻情報等と対応付けて、センサデータとしてセンサデータ送信部806に通知する。
ステップS904において、センサデータ取得部802は、音声データ取得部709により取得された音声データを取得し、時刻情報等と対応付けて、センサデータとしてセンサデータ送信部806に通知する。なお、ステップS901からS904における各処理の順序については、これらに限定されるものではなく、他の順序で行っても、あるいは、並行して行ってもよい。
ステップS905において、センサデータ送信部806は、センサデータ取得部802より通知されたセンサデータ(時刻情報等を含む)を、サーバ装置110に送信する。
ステップS906において、センサデータ取得部802は、センサデータ送信処理を終了するか否かを判定する。センサデータ送信処理を終了しないと判定した場合には、ステップS901に戻り、センサデータ送信処理を継続する。一方、終了すると判定した場合には、センサデータ送信処理を終了する。
<クライアント装置により実行される仮想空間再生処理の流れ>
次に、クライアント装置120〜140により実行される仮想空間再生処理の流れについて説明する。クライアント装置120〜140により実行される仮想空間再生処理はいずれも同様の処理であるため、ここでは、クライアント装置120により実行される仮想空間再生処理について説明する。図10は、クライアント装置により実行される仮想空間再生処理のフローチャートである。
ステップS1001において、仮想空間用情報取得部801は、サーバ装置110より送信される仮想空間用情報を新たに取得したか否かを判定する。ステップS1001において新たに取得していないと判定した場合には、ステップS1004に進む。
一方、ステップS1001において新たに取得したと判定した場合には、ステップS1002に進む。ステップS1002において、仮想空間用情報取得部801は、取得した仮想空間用情報を視野画像生成部803及び音声出力制御部805に通知する。これにより、視野画像生成部803及び音声出力制御部805が保持している仮想空間用情報が更新される。
ステップS1003において、音声出力制御部805は、仮想空間用情報に含まれる音声データを抽出し、音声データ転送部708を介してHMD123に出力する。
ステップS1004において、センサデータ取得部802は、頭部姿勢データ取得部710において取得された頭部姿勢データ及び深度データ取得部711において取得された深度データを取得する。
ステップS1005において、視野画像生成部803は、ステップS1003において取得された頭部姿勢データ及び深度データと、現在保持している仮想空間用情報に含まれる仮想空間の画像とに基づいて、ユーザ150の現在時刻における視野画像を生成する。なお、センサデータは、アバタの各部位の部位情報の算出に用いられるだけでなく、ユーザの視野画像を変更するためにも用いられる。
ステップS1006において、視野画像表示制御部804は、ステップS1004において生成された現在時刻における視野画像を、HMD123に表示するよう制御する。
ステップS1007において、仮想空間用情報取得部801は、仮想空間再生処理の終了指示の有無を判定する。ステップS1007において、仮想空間再生処理の終了指示がないと判定した場合には、ステップS1001に戻る。一方、ステップS1007において、仮想空間再生処理の終了指示が入力されたと判定した場合には、仮想空間再生処理を終了する。
<クライアント装置により実行される合成画像群再生処理の流れ>
次に、クライアント装置120〜140により実行される合成画像群再生処理の流れについて説明する。クライアント装置120〜140により実行される合成画像群再生処理はいずれも同様の処理であるため、ここでは、クライアント装置120により実行される合成画像群再生処理について説明する。図11は、クライアント装置により実行される合成画像群再生処理のフローチャートである。
ステップS1101において、合成画像群用情報取得部807は、サーバ装置110より合成画像群用情報を取得したか否かを判定する。ステップS1101において、合成画像群用情報を取得していないと判定した場合には、合成画像群用情報を取得するまで待機する。
一方、ステップS1101において、合成画像群用情報を取得したと判定した場合には、ステップS1102に進む。ステップS1102において、合成画像群再生部808は、現在時刻が合成画像群用情報に含まれる合成画像群の再生開始タイミングか否かを判定する。
ステップS1102において、合成画像群の再生開始タイミングでないと判定した場合には、再生開始タイミングになるまで待機する。一方、ステップS1102において、合成画像群の再生開始タイミングであると判定した場合には、ステップS1103に進む。
ステップS1103において、合成画像群再生部808は、HMD123において合成画像群が再生されるよう制御する。
ステップS1104において、合成画像群用情報取得部807は、合成画像群再生処理を終了するか否かを判定する。ステップS1104において、終了しないと判定した場合には、ステップS1101に戻り、合成画像群再生処理を継続する。一方、ステップS1104において終了すると判定した場合には、合成画像群再生処理を終了する。
<サーバ装置(仮想空間用情報提供部)の機能構成>
次に、サーバ装置110の機能構成について説明する。図12は、サーバ装置の機能構成の一例を示す第1の図であり、仮想空間用情報提供部111の機能構成を示す図である。
図12に示すように、サーバ装置110の仮想空間用情報提供部111は、センサデータ収集部1201、仮想空間用情報生成部1202、仮想空間用情報送信部1203を有する。
センサデータ収集部1201は、クライアント装置120、130、140それぞれより送信されるセンサデータを収集し、センサデータ格納部114に格納する。また、センサデータ収集部1201は、収集したセンサデータを仮想空間用情報生成部1202に通知する。
仮想空間用情報生成部1202は、コンテンツ格納部113より仮想空間の画像(背景部分)を読み出す。また、仮想空間用情報生成部1202は、コンテンツ格納部113より各ユーザに対応する人型画像を読み出し、仮想空間の画像(背景部分)に配置するアバタを特定する。更に、仮想空間用情報生成部1202は、センサデータ収集部1201により収集されたセンサデータに基づいてアバタの各部位の部位情報を算出し、仮想空間の画像(背景部分)に配置するとともに、当該センサデータより音声データを抽出する。これにより、仮想空間用情報生成部1202は、各ユーザの振る舞いに対応してアバタが動き発声するための、各タイムフレームにおける仮想空間の画像及び音声を生成する。
仮想空間用情報送信部1203は、仮想空間用情報生成部1202により生成された仮想空間の画像及び音声を含む仮想空間用情報を、センサデータを送信した送信元のクライアント装置以外のクライアント装置に送信する。
<仮想空間用情報提供部により格納されるセンサデータ>
次に、センサデータ格納部114に格納されるセンサデータのうち、音声データを除くセンサデータ(頭部姿勢データ、深度データ、筋電位データ)について、図13〜図15を用いて説明する。なお、以降の説明において、音声データについての説明は省略し、センサデータとして、頭部姿勢データ、深度データ、筋電位データについて説明する(ただし、音声データも他のセンサデータと同様に処理されるものとする)。
また、以下の説明における(位置、角度)のうち、位置は、仮想空間におけるXYZ軸に対して一意に決まる座標であり、角度は、仮想空間におけるXYZ軸に対する回転度合を指すものとする。
(1)頭部姿勢データ
図13は、頭部姿勢データテーブルの一例を示す図である。図13に示すように、頭部姿勢データテーブル1300は、情報の項目として、"記録時刻"と、"センサデータ取得時刻"と、"ユーザ名"と、"クライアント装置ID"と、"頭部姿勢データ(位置、角度)"とを含む。
"記録時刻"には、頭部姿勢データが、センサデータ格納部114に格納された時刻が記録される。"センサデータ取得時刻"には、頭部姿勢データが、センサデータ取得部802により取得された時刻が記録される。センサデータ送信部806は、センサデータとして頭部姿勢データをサーバ装置110に送信する際に、あわせて頭部姿勢データを取得した、センサデータ取得時刻を示す時刻情報を送信する。
"ユーザ名"には、頭部姿勢センサを利用するユーザのユーザ名が記録される。センサデータ送信部806は、センサデータとして頭部姿勢データをサーバ装置110に送信する際に、あわせて頭部姿勢センサを利用するユーザのユーザ名を送信する。
"クライアント装置ID"には、頭部姿勢データを含むセンサデータを送信したクライアント装置を識別するための識別子が記録される。センサデータ送信部806は、センサデータをサーバ装置110に送信する際に、あわせてクライアント装置を識別するための識別子を送信する。なお、センサデータ送信部806は、クライアント装置を識別するための識別子に加え、頭部姿勢センサを識別するための識別子を送信するようにしてもよい。この場合、"クライアント装置ID"には、クライアント装置を識別するための識別子に加え、頭部姿勢センサを識別するための識別子が合わせて記録されることになる。
"頭部姿勢データ(位置,角度)"には、頭部姿勢データである、位置データと角度データとが記録される。具体的には、頭部姿勢データを、仮想空間におけるXYZ軸に対する位置、XYZ軸に対する角度として算出したものが時系列に記録される。
図13のデータ行1301の例は、"2015年7月27日11時00分00秒000"に、ユーザ名="ユーザA"であるユーザ150をセンサID="s1"で識別される頭部姿勢センサ124がセンシングし、頭部姿勢データが取得されたことを示している。また、データ行1301の例は、当該頭部姿勢データを仮想空間における位置、角度として算出したものが、((位置),(角度))="((0,18,−18)、(0,0,0))"であったことを示している。また、データ行1301の例は、当該頭部姿勢データが、クライアント装置ID="c1"のクライアント装置120より送信され、"2015年7月27日11時00分01秒030"に頭部姿勢データテーブル1300に格納されたことを示している。
(2)深度データファイル
図14は、深度データファイルテーブルの一例を示す図である。図14に示すように、深度データファイルテーブル1400は、情報の項目として、"記録時刻"と、"センサデータ取得開始時刻"と、"センサデータ取得終了時刻"と、"ユーザ名"と、"クライアント装置ID"と、"深度データファイルURI"とを含む。
"記録時刻"には、深度データファイルが、深度データファイルテーブル1400に格納された時刻が記録される。"センサデータ取得開始時刻"には、所定時間の間に取得された複数の深度データ群として形成される深度データファイルのうち、はじめの深度データが取得されたセンサデータ取得時刻(例えば、所定時間の開始時刻)が記録される。"センサデータ取得終了時刻"には、所定時間の間に取得された複数の深度データ群として形成される深度データファイルのうち、最後の深度データが取得されたセンサデータ取得時刻(例えば、所定時間の終了時刻)が記録される。センサデータ送信部806は、センサデータとして深度データファイルをサーバ装置110に送信する際に、合わせて深度データ群それぞれを取得した、センサデータ取得時刻を示す時刻情報を送信する。
"ユーザ名"には、深度センサを利用するユーザのユーザ名が記録される。センサデータ送信部806は、センサデータとして深度データファイルをサーバ装置110に送信する際に、あわせて深度センサを利用するユーザのユーザ名を送信する。
"クライアント装置ID"には、深度データファイルを含むセンサデータを送信したクライアント装置を識別するための識別子が記録される。センサデータ送信部806は、センサデータをサーバ装置110に送信する際に、あわせてクライアント装置を識別するための識別子を送信する。なお、センサデータ送信部806は、クライアント装置を識別するための識別子に加え、深度センサを識別するための識別子を送信してもよい。この場合、"クライアント装置ID"には、クライアント装置を識別するための識別子に加え、深度センサを識別するための識別子が合わせて記録されることになる。
"深度データファイルURI"には、深度データファイルの格納先を示すURI(Uniform Resource Identifier)及びファイル名が記録される(ただし、図14では、URIは省略して示している)。
図14のデータ行1401の例は、深度データファイルとして、ファイル名="001.xef"の深度データファイルが深度データファイルテーブル1400に格納されたことを示している。また、データ行1401の例は、深度データファイルには、"2015年7月27日11時00分00秒000"に取得された深度データから、"2015年7月27日11時00分01秒000"に取得された深度データまでが含まれることを示している。また、データ行1401の例は、深度データファイルが、ユーザ名="ユーザA"であるユーザ150をセンサID="s1"により識別される深度センサ122がセンシングすることで取得されたことを示している。更に、データ行1401の例は、深度データファイルが、クライアント装置ID="c1"のクライアント装置120により送信され、"2015年7月27日11時00分01秒030"に深度データファイルテーブル1400に格納されたことを示している。
(3)筋電位データ
図15は、筋電位データテーブルの一例を示す図である。図15に示すように、筋電位データテーブル1500は、情報の項目として、"記録時刻"と、"センサデータ取得時刻"と、"ユーザ名"と、"クライアント装置ID"と、"筋電位データ(EMG(μV))"とを含む。
"記録時刻"には、筋電位データが筋電位データテーブル1500に格納された時刻が記録される。"センサデータ取得時刻"には、筋電位データが、センサデータ取得部802により取得された時刻が記録される。センサデータ送信部806は、センサデータとして筋電位データをサーバ装置110に送信する際に、あわせて筋電位データを取得した、センサデータ取得時刻を示す時刻情報を送信する。
"ユーザ名"には、筋電位センサを利用するユーザのユーザ名が記録される。センサデータ送信部806は、筋電位データをサーバ装置110に送信する際に、あわせて筋電位センサを利用するユーザのユーザ名を送信する。
"クライアント装置ID"には、筋電位データを含むセンサデータを送信したクライアント装置を識別するための識別子が記録される。センサデータ送信部806は、センサデータをサーバ装置110に送信する際に、クライアント装置を識別するための識別子を、センサデータと対応付けて送信する。なお、センサデータ送信部806は、クライアント装置を識別するための識別子に加え、筋電位センサを識別するための識別子を送信するようにしてもよい。特に、センシングの部位に応じて複数種類の筋電位センサが配されていた場合には、それぞれの筋電位センサを識別するための識別子を送信するようにしてもよい。この場合、"クライアント装置ID"には、クライアント装置を識別するための識別子に加え、各筋電位センサを識別するための識別子が合わせて記録されることになる。
"筋電位データ(EMG(μV))"には、筋電位データの値が記録される。
図15のデータ行1501の例は、"2015年7月27日11時00分01秒000"に、ユーザ名="ユーザA"であるユーザ150をセンシングしたことを示している。また、データ行1501の例は、センサID="s3_zygomaticus(cheek)"により識別される筋電位センサがセンシングしたことを示している。また、データ行1501の例は、筋電位データとして、センサデータ取得部802が、EMG(μV)="33.9"を取得したことを示している。また、データ行1501の例は、当該筋電位データが、クライアント装置ID="c1"のクライアント装置120より送信され、"2015年7月27日11時00分01秒035"に筋電位データテーブル1500に格納されたことを示している。
<仮想空間用情報提供部により実行される仮想空間用情報提供処理の流れ>
次に、サーバ装置110の仮想空間用情報提供部111が実行する、仮想空間用情報提供処理の流れについて説明する。図16は、サーバ装置により実行される仮想空間用情報提供処理のフローチャートである。
ステップS1601において、センサデータ収集部1201は、クライアント装置120よりセンサデータ(第1のセンサデータ)を収集したか否かを判定する。ステップS1601において、第1のセンサデータを収集していないと判定した場合には、ステップS1604に進む。
一方、ステップS1601において、第1のセンサデータを収集したと判定した場合には、ステップS1602に進む。ステップS1602において、センサデータ収集部1201は、収集した第1のセンサデータを、センサデータ格納部114に格納する。また、仮想空間用情報生成部1202は、収集した第1のセンサデータに基づいて、仮想空間におけるアバタ250(第1のアバタ)の各部位の部位情報を算出する。
ステップS1603において、仮想空間用情報生成部1202は、算出した部位情報を反映した第1のアバタを生成する。また、仮想空間用情報生成部1202は、生成した第1のアバタにより仮想空間用情報を更新する。
ステップS1604において、センサデータ収集部1201は、クライアント装置130よりセンサデータ(第2のセンサデータ)を収集したか否かを判定する。ステップS1604において、第2のセンサデータを収集していないと判定した場合には、ステップS1607に進む。
一方、ステップS1604において、第2のセンサデータを収集したと判定した場合には、ステップS1605に進む。ステップS1605において、センサデータ収集部1201は、収集した第2のセンサデータを、センサデータ格納部114に格納する。また、仮想空間用情報生成部1202は、収集した第2のセンサデータに基づいて、仮想空間におけるアバタ260(第2のアバタ)の各部位の部位情報を算出する。
ステップS1606において、仮想空間用情報生成部1202は、算出した部位情報を反映した第2のアバタを生成する。また、仮想空間用情報生成部1202は、生成した第2のアバタにより仮想空間用情報を更新する。
ステップS1607において、センサデータ収集部1201は、クライアント装置140よりセンサデータ(第3のセンサデータ)を収集したか否かを判定する。ステップS1607において、第3のセンサデータを収集していないと判定した場合には、ステップS1610に進む。
一方、ステップS1607において、第3のセンサデータを収集したと判定した場合には、ステップS1608に進む。ステップS1608において、センサデータ収集部1201は、収集した第3のセンサデータを、センサデータ格納部114に格納する。また、仮想空間用情報生成部1202は、収集した第2のセンサデータに基づいて、仮想空間におけるアバタ270(第3のアバタ)の各部位の部位情報を算出する。
ステップS1609において、仮想空間用情報生成部1202は、算出した部位情報を反映した第3のアバタを生成する。また、仮想空間用情報生成部1202は、生成した第3のアバタにより仮想空間用情報を更新する。
ステップS1610において、仮想空間用情報送信部1203は、更新した仮想空間用情報を送信する。仮想空間用情報送信部1203は、クライアント装置120より送信されたセンサデータ(第1のセンサデータ)に基づいて仮想空間用情報を更新した場合には、更新した仮想空間用情報を、クライアント装置130及び140に送信する。また、仮想空間用情報送信部1203は、クライアント装置130より送信されたセンサデータ(第2のセンサデータ)に基づいて仮想空間用情報を更新した場合には、更新した仮想空間用情報を、クライアント装置120及び140に送信する。更に、仮想空間用情報送信部1203は、クライアント装置140より送信されたセンサデータ(第3のセンサデータ)に基づいて仮想空間用情報を更新した場合には、更新した仮想空間用情報を、クライアント装置120及び130に送信する。
ステップS1611において、センサデータ収集部1201は、仮想空間用情報提供処理を終了するか否かを判定する。ステップS1611において終了しないと判定した場合には、ステップS1601に戻り、仮想空間用情報提供処理を継続する。一方、ステップS1611において終了すると判定した場合には、仮想空間用情報提供処理を終了する。
<サーバ装置(合成画像群用情報提供部)の機能構成>
次に、サーバ装置110の機能構成のうち、合成画像群用情報提供部112の機能構成について説明する。図17は、サーバ装置の機能構成の一例を示す第2の図であり、合成画像群用情報提供部112の機能構成を示す図である。
図17に示すように、サーバ装置110の合成画像群用情報提供部112は、処理条件判定部1701、動き(変化)判定部1702、動き(関係)判定部1703、合成画像群生成部1704、合成画像群送信部1705を有する。
処理条件判定部1701は、動き(変化)判定部1702が処理を開始するための条件が成立したか否かを判定する。第1の実施形態において、処理条件判定部1701は、センサデータ格納部114に所定量のセンサデータが格納されると、動き(変化)判定部1702が処理を開始するための条件が成立したと判定し、動き(変化)判定部1702に通知する。
動き(変化)判定部1702は、センサデータ格納部114に所定量のセンサデータが格納され、処理条件判定部1701より通知を受けると、当該所定量のセンサデータに基づいて仮想空間用情報生成部1202によりそれぞれ算出された部位情報を取得する。なお、このとき取得される部位情報は、複数のタイムフレーム分の部位情報となる。また、動き(変化)判定部1702は、取得した部位情報が、所定量以上変化したか否かを判定する。
動き(変化)判定部1702は、定義情報格納部115に格納された定義情報に規定された閾値と、仮想空間用情報生成部1202より取得した部位情報とを比較することにより、部位情報が所定量以上変化したか否かを判定する。なお、動き(変化)判定部1702は、所定量以上変化したと判定した場合、アバタの各部位が所定量以上動いたと判断し、動きの種類を判定する。また、動き(変化)判定部1702は、動きの種類の判定結果等を、ログ格納部116の「動きの種類判定ログテーブル」に新たなデータ行を追加して格納する。
動き(関係)判定部1703は、動き(変化)判定部1702により、アバタの各部位の部位情報が所定量以上変化したと判定された場合に、上記所定量のセンサデータの一部に基づいて、他のアバタに対する動きの種類を判定する。
動き(関係)判定部1703は、判定結果や当該判定に用いられたセンサデータの時間範囲(判定時刻(開始)、判定時刻(終了)と称す)を、ログ格納部116の「他のアバタに対する動きの種類判定ログテーブル」に格納する。動き(関係)判定部1703は、「他のアバタに対する動きの種類判定ログテーブル」に新たなデータ行を追加することで、当該判定結果等を格納する。
このように、動き(関係)判定部1703は、動き(変化)判定部1702によりアバタの各部位の部位情報が所定量以上変化したと判定されたことをトリガに、他のアバタに対する動きの種類の判定を行う。
したがって、他のアバタに対する動きの種類を判定するのに用いられるセンサデータの時間範囲のうち、判定時刻(開始)は、動き(変化)判定部1702により部位情報が所定量以上変化したと判定された際に用いられたセンサデータのセンサデータ取得時刻となる。ただし、判定時刻(開始)はこれに限定されず、動き(関係)判定部1703は、当該取得時刻より前に取得されたセンサデータを用いて、他のアバタに対する動きの種類を判定するようにしてもよい。
合成画像群生成部1704は、動き(関係)判定部1703によってログ格納部116の「他のアバタに対する動きの種類判定ログテーブル」に新たなデータ行が追加されると、作用イベントが発生したと判定する。また、合成画像群生成部1704は、作用イベントが発生したと判定した後に、更に、ログ格納部116の「他のアバタに対する動きの種類判定ログテーブル」に新たなデータ行が追加されると、反応イベントが発生したと判定する。
合成画像群生成部1704は、ログ格納部116の「他のアバタに対する動きの種類判定ログテーブル」に新たに追加されたデータ行であって、作用イベント発生と判定した際に格納されたデータ行の"判定時刻(開始)"、"判定時刻(終了)"を抽出する。また、合成画像群生成部1704は、抽出した"判定時刻(開始)"〜"判定時刻(終了)"の時間範囲に取得されたセンサデータに基づいて、合成画像群の生成に用いる画像群を生成する。また、合成画像群生成部1704は、反応イベント発生と判定された際に格納されたデータ行の"判定時刻(開始)"、"判定時刻(終了)"を抽出する。更に、合成画像群生成部1704は、抽出した"判定時刻(開始)"〜"判定時刻(終了)"の時間範囲に取得されたセンサデータに基づいて、合成画像群の生成に用いる画像群を生成する。
これにより、例えば、作用イベントを発生させたアバタ250の動きが反映された仮想空間の画像群と、反応イベントを発生させたアバタ260の動きが反映された仮想空間の画像群とを合成することができる。
なお、合成画像群生成部1704は、作用イベントを発生させたアバタ250の動きが反映された仮想空間の画像群が、ユーザ160のHMD133に表示された時刻と、ユーザ160が反応した時刻との時間差に応じて合成を行う。つまり、合成画像群生成部1704は、出力タイミングと反応タイミングとの時間差に応じて合成を行う。なお、ここでいう反応タイミングは、ユーザ160の反応を検出した検出タイミングである"判定時刻(開始)"に等しい。
同様に、合成画像群生成部1704は、作用イベントを発生させたアバタ250の動きが反映された仮想空間の画像群と、反応イベントを発生させたアバタ270の動きが反映された仮想空間の画像群とを合成することができる。
このとき合成画像群生成部1704は、作用イベントを発生させたアバタ250の動きが反映された仮想空間の画像群が、ユーザ170のHMD143に表示された時刻と、ユーザ170が反応した時刻との時間差に応じて合成を行う。つまり、合成画像群生成部1704は、出力タイミングと反応タイミングとの時間差に応じて合成を行う。なお、ここでいう反応タイミングは、ユーザ170の反応を検出した検出タイミングである"判定時刻(開始)"に等しい。
このようにして、合成画像群生成部1704は、アバタ250、260、270の動きが所定の時間差で反映された合成画像群を生成する。
合成画像群送信部1705は、合成画像群生成部1704により生成された合成画像群を含む合成画像群用情報を、クライアント装置120、130、140に送信する。
<合成画像群用提供部により判定される動きの種類の説明>
次に、動き(変化)判定部1702にて判定される動きの種類について説明する。アバタの動きには、アバタの体全体の動きと、アバタの体の一部の動きと、アバタの体の一部(顔)において表情が変化する動きとが含まれる。
アバタの体全体の動きには、例えば、アバタが前方または後方、左方または右方に移動する動きや、アバタが体全体の向きを変える動き等が含まれる。アバタが前方または後方、左方または右方に移動する動きは、例えば、アバタの中心位置の座標の変化として表すことができる。また、アバタが進行方向を変える時のように、位置を動かずに体全体の向きを右や左へ変える動きは、床面に対して垂直方向に延びる軸(Y軸)の軸周りの角度の変化として表すことができる。
アバタの体の一部の動きには、例えば、アバタの上半身が前傾または後傾する動きや、アバタの上半身が左方または右方に向きを変える動き等が含まれる。また、アバタの体の一部の動きには、例えば、アバタが顔の向きを上向きまたは下向きにする動きや、アバタが顔の向きを左方向または右方向に変える動き等が含まれる。
このうち、アバタの上半身が前傾または後傾する動きや、アバタの上半身が左方または右方に向きを変える動きは、例えば、アバタの腰の位置を原点とする3軸方向の軸周りの角度の変化("Bone_Chest"の変化)として表すことができる。同様に、アバタが顔の向きを上向きまたは下向きにする動きや、アバタが顔の向きを左方向または右方向に変える動きは、例えば、アバタの顔の位置を原点とする3軸方向の軸周りの角度の変化("Bone_Head"の変化)として表すことができる。
アバタの体の一部(顔)において表情が変化する動きには、例えば、アバタが視線を上方向または下方向、左方向または右方向に向ける動きや、アバタの口角が上がるまたは下がる動き、アバタの眉毛の角度が変わる動き等が含まれる。これらの動きは、例えば、アバタの顔面中の複数の点群の位置及び当該位置に囲まれた平面(例えば唇の皮膚相当)の状態変化(例えば、"Shape_Mouse"の変化)として表すことができる。
なお、アバタの動きについての上記の表現方法は一例であり、他の表現方法により表わしてもよい。第1の実施形態において、アバタの各部位の部位情報には、上述した"Bone_chest"、"Bone_Head"、"Shape_Mouse"等が含まれる。
図18は、仮想空間におけるアバタの動きの一例を示す図である。図18では、アバタの上半身が前傾または後傾する動き、及び、左方または右方に向きを変える動きを、アバタの腰の位置を原点とする3軸方向の軸周りの角度の変化("Bone_Chest"の変化)として表している。
具体的には、仮想空間におけるXYZ軸が、それぞれアバタの左右方向、上下方向、前後方向に対応するときの、アバタの腰の位置に配置された骨格の回転として上記動きを示している。
図18において、画像1801は、x軸上で+α度回転した場合に、アバタがどのような姿勢となるのかを表しており、画像1802は、x軸上で−α度回転した場合に、アバタがどのような姿勢となるのかを表している。
また、画像1811は、y軸上で+α度回転した場合に、アバタがどのような姿勢となるのかを表しており、画像1812は、y軸上で−α度回転した場合に、アバタがどのような姿勢となるのかを表している。
更に、画像1821は、z軸上で+α度回転した場合に、アバタがどのような姿勢となるのかを表しており、画像1822は、z軸上で−α度回転した場合に、アバタがどのような姿勢となるのかを表している。
<動きの種類を判定する際に参照する定義情報>
次に、定義情報格納部115に格納され、動き(変化)判定部1702が動きの種類を判定する際に参照する定義情報について説明する。図19は、定義情報格納部に格納された定義情報のうち、アバタの動きの種類を判定するための定義情報を示した図である。図19に示すように、アバタの動きの種類を判定するための定義情報には、判定項目情報1910と判定閾値情報1920が含まれる。
図19(a)に示すように、判定項目情報1910には、判定する"動きの種類"がユーザごとに定義されている。これは、取得可能なセンサデータが、ユーザが利用するクライアント装置ごとに異なっている場合があるからであり、取得可能なセンサデータが異なっている場合、判定可能な"動きの種類"も異なってくるからである。
図19(a)の例では、ユーザ名="ユーザA"の場合、"動きの種類"として、少なくとも、前傾変化と、顔向き変化と、口表情変化とを判定することが可能である。
また、図19(b)に示すように、判定閾値情報1920には、それぞれの動きの種類の判定に用いる"センサデータ"が定義されている。また、判定閾値情報1920には、センサデータに基づいて算出されるアバタの各部位の部位情報のうち、変化の有無を判定するために監視される"監視対象の部位"が定義されている。更に、判定閾値情報1920には、それぞれの監視対象の部位において部位情報の変化があったと判定するための条件("閾値")が定義されている。更に、判定閾値情報1920には、監視対象の部位において部位情報の変化があったと判定された場合に判定される"動きの種類"が定義されている。
例えば、動き(変化)判定部1702は、深度データに基づいて算出される部位情報のうち、"Bone_Chest"を監視する。動き(変化)判定部1702は、監視対象の部位である"Bone_Chest"の部位値が、X軸周りに+5度以上回転したことを検出すると、"前傾変化"が発生したと判定する。
また、動き(変化)判定部1702は、頭部姿勢データに基づいて算出される部位情報のうち、"Bone_Head"を監視する。動き(変化)判定部1702は、監視対象の部位である"Bone_Head"の部位値が、いずれかの軸周りに+5度以上回転したことを検出すると、"顔向き変化"が発生したと判定する。
更に、動き(変化)判定部1702は、筋電位データに基づいて算出される部位情報のうち、"Shape_Mouse"を監視する。具体的には、動き(変化)判定部1702に、"Shape_Mouse"の部位値に基づいて算出される、スマイルの度合いを示すパラメータ("IsSmile")を監視する。スマイルの度合いを示すパラメータ("IsSmile")は、"IsSmile"=0の場合、口を閉じた状態での点群の位置を示し、"IsSmile"=1の場合、口を大きく開いた状態での点群の位置を示す。動き(変化)判定部1702は、"Shape_Mouse"から算出されるパラメータ("IsSmile)が0.5より大きくなったことを検出すると、"口表情変化"が発生したと判定する。
<他のアバタに対する動きの種類を判定する際に用いる定義情報>
次に、定義情報格納部115に格納され、動き(関係)判定部1703が他のアバタに対する動きの種類を判定する際に用いる定義情報について説明する。図20は、定義情報格納部に格納された定義情報のうち、他のアバタに対する動きの種類を判定するための定義情報を示した図である。
図20に示すように、他のアバタに対する動きの種類を判定するための定義情報には、API定義情報2010と判定項目情報2020とが含まれる。
図20(a)に示すように、API定義情報2010には、他のアバタに対する動きの種類の判定に用いるAPIが"ユーザ名"及び"動きの種類"ごとに定義されている。動き(変化)判定部1702によりユーザの動きの種類が判定されると、動き(関係)判定部1703では、対応するAPIを実行する。図20(a)の例では、動き(変化)判定部1702によりユーザ名="A"のユーザの動きの種類が"前傾変化"と判定された場合、動き(関係)判定部1703では、姿勢解析APIを実行して、他のアバタに対する動きの種類の判定を行う。また、動き(変化)判定部1702によりユーザ名="A"のユーザの動きの種類がそれぞれ"顔向き変化"、"口表情変化"と判定された場合、動き(関係)判定部1703では、顔向き解析API、口表情解析APIをそれぞれ実行する。これにより、動き(関係)判定部1703は、他のアバタに対する動きの種類の判定を行う。
また、図20(b)に示すように、判定項目情報2020には、それぞれの判定に用いる"センサデータ"と、それぞれのセンサデータの送信元の"クライアント装置ID"とが定義されている。また、判定項目情報2020には、センサデータを入力したことで判定される"他のアバタに対する動きの種類"と、判定に用いる"API"とが定義されている。
例えば、動き(関係)判定部1703は、姿勢解析APIに対しては、クライアント装置ID="c2"のクライアント装置130から送信された深度データを入力する。これにより、動き(関係)判定部1703は、アバタの動きが他のアバタに対して近づく動き("body-close-to")であるのか否かを判定する。また、動き(関係)判定部1703は、姿勢解析APIに対しては、クライアント装置ID="c1"のクライアント装置120から送信された深度データを入力する。これにより、動き(関係)判定部1703は、アバタの動きが他のアバタから遠ざかる動き("body-far-to")であるのか否かを判定する。
更に、動き(関係)判定部1703は、顔向き解析APIに対しては、クライアント装置ID="c3"のクライアント装置140から送信された頭部姿勢データを入力する。これにより、動き(関係)判定部1703は、アバタの動きが他のアバタの方に顔を向ける動き("face-close-to")であるのか否かを判定する。
なお、図20(b)の例では、他のアバタに対する動きの種類を1種類判定するのに、1種類のセンサデータを用いる場合について示したが、他のアバタに対する動きの種類を1種類判定するのに、複数種類のセンサデータを用いるようにしてもよい。
<動きの種類及び他のアバタに対する動きの種類を判定して記録するログ記録処理の概要>
次に、サーバ装置110の合成画像群用情報提供部112における処理のうち、ユーザの振る舞いが行われてから、作用イベントを発生させるまでの処理(動きの種類及び他のアバタに対する動きの種類を判定して記録するログ記録処理)の概要について説明する。図21は、ユーザの振る舞いが行われてから作用イベントが発生するまでの処理の流れを説明するための図である。
図21において、センサデータ群2110は、クライアント装置120において取得された所定量のセンサデータ群を示している。センサデータ群2110に含まれるセンサデータ2111〜2116は、それぞれ、センサデータ送信部806によりサーバ装置110に対して送信される。
図21に示すように、サーバ装置110に送信された所定量のセンサデータ2111〜2116は、センサデータ格納部114に順次格納される。センサデータ格納部114に格納された所定量のセンサデータ2111〜2116は、仮想空間用情報生成部1202に読み出され、仮想空間用情報生成部1202により、アバタの各部位の部位情報2121〜2126が算出される。なお、ここでは説明の簡略化のため、部位情報2121〜2126は、所定の監視対象の部位の部位情報であるとする。
動き(変化)判定部1702は、仮想空間用情報生成部1202により算出された部位情報2121〜2126を取得し、部位情報2121〜2126のいずれかが所定量以上変化しているかを判定する。そして、動き(変化)判定部1702は、いずれかの部位情報が所定量以上変化していると判定した場合、当該部位情報について動きの種類を判定する。
例えば、動き(変化)判定部1702は、部位情報2121と、定義情報(例えば、図19(b))とを比較し、部位情報2121の部位値が所定量以上変化しているかを判定する。同様に、動き(変化)判定部1702は、部位情報2122〜2126について、定義情報(例えば、図19(b))との比較を行い、部位情報2122〜2126のいずれかの部位値が所定量以上変化しているかを判定する。
なお、ここでは、動き(変化)判定部1702が部位情報2123の部位値が所定量以上変化していると判定したとする。この場合、動き(変化)判定部1702では、定義情報(例えば、図19(b))に基づいて、部位情報2123について動きの種類を判定し、判定結果を、ログ格納部116の「動きの種類判定ログテーブル」に新たにデータ行を追加して格納する。
動き(変化)判定部1702により、「動きの種類判定ログテーブル」に新たにデータ行が追加されると、動き(関係)判定部1703は、センサデータ2113に基づいて、他のアバタに対する動きの種類を判定する。具体的には、動き(関係)判定部1703は、センサデータ2113を、動きの種類に応じたAPIに入力することで、他のアバタに対する動きの種類を判定する。
動き(関係)判定部1703は、判定した他のアバタに対する動きの種類や当該判定に用いられたセンサデータの時間範囲(判定時刻(開始)、判定時刻(終了))を、ログ格納部116の「他のアバタに対する動きの種類判定ログテーブル」に格納する。動き(関係)判定部1703による判定結果がログ格納部116の「他のアバタに対する動きの種類判定ログテーブル」に新たなデータ行として格納されると、合成画像群生成部1704は、作用イベント2120が発生したと判定する。
合成画像群生成部1704は、作用イベント2120が発生したと判定すると、反応イベントの発生を監視する(作用イベント2120が発生して以降の流れは後述する)。
<動きの種類及び他のアバタに対する動きの種類を判定して記録するログ記録処理の流れ>
次に、サーバ装置110の合成画像群用情報提供部112における処理のうち、ユーザの振る舞いが行われてから、作用イベントを発生させるまでの処理(動きの種類及び他のアバタに対する動きの種類を判定して記録するログ記録処理)の流れについて説明する。図22は、サーバ装置により実行されるログ記録処理のフローチャートである。
ステップS2201において、センサデータ収集部1201は、ユーザ150〜170の実空間における振る舞いをセンシングしたセンサデータをクライアント装置120〜140から収集する。
ステップS2202において、センサデータ収集部1201は、収集したセンサデータを、センサデータ格納部114に格納する。
ステップS2203において、処理条件判定部1701は、センサデータ格納部114に新たに格納されたセンサデータが所定量以上になったか否かを判定する。
ステップS2203において、新たに格納されたセンサデータが所定量未満であると判定した場合には、ステップS2201に戻り、センサデータの収集及び格納を継続する。
一方、ステップS2203において、新たに格納されたセンサデータが所定量以上になったと判定した場合には、ステップS2204に進む。ステップS2204において、動き(変化)判定部1702は、定義情報(図19(a)、(b))に基づいて、判定すべき動きの種類や、それぞれの動きの種類を判定する際の監視対象の部位及び閾値を認識する。
ステップS2205において、動き(変化)判定部1702は、新たに格納されたセンサデータに基づいて仮想空間用情報生成部1202がそれぞれ算出した部位情報を取得する。また、動き(変化)判定部1702は、取得した部位情報のうち、監視対象の部位の部位情報について、ステップS2204において認識した閾値との比較を行う。
ステップS2206において、動き(変化)判定部1702は、比較の結果に基づいて、監視対象の部位の部位情報が閾値以上変化したか否かを判定する。ステップS2206において、監視対象の部位の部位情報が閾値以上変化していないと判定した場合には、ステップS2210に進む。
一方、ステップS2206において、監視対象の部位の部位情報が閾値以上変化したと判定した場合、ステップS2207に進む。ステップS2207において、動き(変化)判定部1702は、閾値以上変化した部位情報について動きの種類を判定する。更に、動き(変化)判定部1702は、判定結果を、ログ格納部116の「動きの種類判定ログテーブル」に新たにデータ行を追加して格納する。
ログ格納部116の「動きの種類判定ログテーブル」に新たにデータ行が追加されて動きの種類等が格納されると、ステップS2208において、動き(関係)判定部1703は、動き(変化)判定部1702により判定された動きの種類に応じたAPIを呼び出す。また、動き(関係)判定部1703は、呼び出したAPIにセンサデータを入力することで、他のアバタに対する動きの種類を判定する。
ステップS2209において、動き(関係)判定部1703は、ステップS2208において判定された判定結果を、ログ格納部116の「他のアバタに対する動きの種類判定ログテーブル」に新たにデータ行を追加して格納する。なお、このとき新たに追加されたデータ行に格納される判定結果には、他のアバタに対する動きの種類や当該判定に用いられたセンサデータの時間範囲(判定時刻(開始)、判定時刻(終了))等が含まれる。
ステップS2210において、処理条件判定部1701は、合成画像群生成処理を終了するか否かを判定し、終了しないと判定した場合には、ステップS2201に戻り、ログ記録処理を継続する。
一方、ステップS2210において、終了すると判定した場合には、ログ記録処理を終了する。
<ログ記録処理により記録されるログテーブルの説明>
次に、図22に示すログ記録処理が実行されたことで、ログ格納部116に記録された「動きの種類判定ログテーブル」及び「他のアバタに対する動きの種類判定ログテーブル」について図23または図24を用いて説明する。
(1)動きの種類判定ログテーブルの説明
図23は、動きの種類判定ログテーブルの一例を示す図である。図23に示すように、動きの種類判定ログテーブル2300には、情報の項目として、"記録時刻"、"変化発生時刻"、"ユーザ名"、"クライアント装置ID"、"動きの種類"、"変化前及び変化後の部位情報"が含まれる。
"記録時刻"には、ログ格納部116の動きの種類判定ログテーブル2300に新たにデータ行が追加され、動きの種類等が格納された時刻が記録される。"変化発生時刻"には、部位情報が所定量以上変化したことで動きの種類の判定を行った際に用いられたセンサデータが、センサデータ取得部802により取得された時刻が記録される。
"ユーザ名"には、動きの種類が判定されたアバタに対応するユーザのユーザ名が記録される。"クライアント装置ID"には、動きの種類の判定に用いられたセンサデータを送信したクライアント装置を識別するための識別子が記録される。
"動きの種類"には、部位情報に基づいて判定されたアバタの動きの種類が記録される。"変化前及び変化後の部位情報"には、所定量以上の変化が発生する前の部位情報と、所定量以上の変化が発生した後の部位情報とが記録される。
図23のデータ行2301の例は、"2015年7月27日11時02分00秒000"に、ログ格納部116の動きの種類判定ログテーブル2300に新たにデータ行が追加され、動きの種類が格納されたことを示している。また、データ行2301の例は、ユーザ名="ユーザA"であるユーザ150のアバタ250の部位情報が所定量以上変化したこと、動きの種類が"口表情変化"と判定されたことを示している。また、データ行2301の例は、当該動きの種類の判定に用いられたセンサデータが、クライアント装置ID="c1"のクライアント装置120により、"2015年7月27日11時00分01秒000"に取得されたことを示している。更に、データ行2301の例は、センサデータに基づいて算出された部位情報("Shape_Mouse")のパラメータ("IsSmile")が、"0.5"から"0.8"に変化したことを示している。
(2)他のアバタに対する動きの種類判定ログテーブルの説明
図24は、他のアバタに対する動きの種類判定ログテーブルの一例を示す図である。図24に示すように、他のアバタに対する動きの種類判定ログテーブル2400には、情報の項目として、"ログID"、"記録時刻"、"判定時刻(開始)"、"判定時刻(終了)"が含まれる。また、情報の項目として、"ユーザ名"、"クライアント装置ID"、"他のアバタに対する動きの種類"、"開始時及び終了時の部位情報"が含まれる。
"ログID"には、ログ格納部116の他のアバタに対する動きの種類判定ログテーブル2400に新たにデータ行が追加され、他のアバタに対する動きの種類等が格納されるごとに付与される識別子が記録される。
"記録時刻"には、ログ格納部116の他のアバタに対する動きの種類判定ログテーブル2400に新たにデータ行が追加され、他のアバタに対する動きの種類等が格納された時刻が記録される。"判定時刻(開始)"及び"判定時刻(終了)"には、他のアバタに対する動きの種類の判定に用いられたセンサデータの時間範囲が記録される。
"ユーザ名"には、他のアバタに対する動きの種類が判定されたアバタに対応するユーザのユーザ名が記録される。"クライアント装置ID"には、他のアバタに対する動きの種類の判定に用いられたセンサデータを送信したクライアント装置を識別するための識別子が記録される。
"他のアバタに対する動きの種類"には、センサデータに基づいて判定された他のアバタに対する動きの種類が記録される。"開始時及び終了時の部位情報"には、"判定時刻(開始)"における部位情報と、"判定時刻(終了)"における部位情報が記録される。
図24のデータ行2401の例は、"2015年7月27日11時02分03秒020"に、ログ格納部116の他のアバタに対する動きの種類判定ログテーブル2400に新たにデータ行が追加されたことを示している。また、図24のデータ行2401には、データ行の追加に際して、ログID="100"が付与されたことを示している。また、データ行2401の例は、ユーザ名="ユーザA"であるユーザ150のアバタ250の他のアバタに対する動きの種類が判定され、判定に用いられたセンサデータがクライアント装置ID="c1"から送信されたことを示している。
また、データ行2401の例は、判定に用いられたセンサデータの時間範囲が"2015年7月27日11時00分04秒000"から"2015年7月27日11時01分05秒000"までであることを示している。また、データ行2401の例は、判定のトリガとなった変化が発生した部位が、"Bone_Chest"であったことを示している。更に、当該部位の部位情報である位置及び角度が、上記時間範囲の間に(0,8,−10),(4,0,0)から(0,8,−10),(12,0,0)へと変化したことを示している。更に、データ行2401の例は、他のアバタに対する動きの種類が"body-close-to"と判定されたことを示している。
<合成画像群用情報提供部により実行される合成画像群提供処理の概要>
次に、ユーザの振る舞いが行われてから合成画像群が再生されるまでの流れ(合成画像群用情報提供部による合成画像群提供処理の概要)について、図3〜図5を参照しながら図25を用いて説明する。なお、合成画像群提供処理には、上記ログ記録処理も含まれるが、ここではログ記録処理は簡略化して説明する。図25は、ユーザの振る舞いが行われてから合成画像群が再生されるまでの流れを説明するための図である。
図25において、サーバ装置110から延びる3本の実線のうち、1番目の実線は、合成画像群用情報提供部112がイベント等を処理するタイミングを示すための線である。また、2番目の線は、仮想空間用情報提供部111が仮想空間の画像群を生成するタイミングを示すための線である。更に、3番目の線は、仮想空間用情報提供部111がセンサデータを処理するタイミングを示すための線である。
また、図25において、クライアント装置120〜140からそれぞれ延びる3本の実線のうち、1番目の実線は、クライアント装置が視野画像群または合成画像群を再生するタイミングを示すための線である。また、2番目の実線は、クライアント装置が仮想空間空間用情報を受信したタイミングを示すための線である。更に、3番目の実線は、クライアント装置がセンサデータを取得したタイミングを示すための線である。
なお、図25において、各タイミングを示すための実線上に配置された矩形図形には、縦方向の長さが長い図形と縦方向の長さが短い図形とが含まれる。前者は、画像群に関するデータを示しており、後者は、画像群以外のデータを示している。
ユーザ150の振る舞いにより(例えば、図3の矢印301)、クライアント装置120がセンサデータ群2110(所定量のセンサデータ)を取得すると、クライアント装置120はセンサデータ群2110をサーバ装置110に送信する。
サーバ装置110の仮想空間用情報提供部111は、クライアント装置120より収集したセンサデータ群2110に基づいて、ユーザ150のアバタ250の部位情報を算出する。そして、仮想空間用情報提供部111は、ユーザ150のアバタ250の部位情報に基づいて仮想空間の画像群2110Iを生成し、クライアント装置130及びクライアント装置140にそれぞれ送信する。また、サーバ装置110の合成画像群用情報提供部112は、仮想空間用情報提供部111により算出された部位情報が、所定量以上変化しているか否かを判定し、所定量以上変化していると判定した場合には、動きの種類を判定する。また、合成画像群用情報提供部112は、判定した動きの種類に応じたAPIを読み出し、センサデータ群2110に基づいて、他のアバタに対する動きの種類を判定する。更に、サーバ装置110の合成画像群用情報提供部112は、判定結果等を他のアバタに対する動きの種類判定ログテーブル2400に新たなデータ行を追加して格納する。これにより、サーバ装置110の合成画像群用情報提供部112は、作用イベント2120が発生したと判定する。
仮想空間の画像群2110Iが送信されたクライアント装置130及びクライアント装置140は、各タイムフレームにおける視野画像321、331(図3参照)を生成し、HMD133、143それぞれに表示するよう制御する。
各タイムフレームにおける視野画像321が表示されることで、ユーザ160が振る舞いをして(例えば、図4の矢印302)、クライアント装置130が、センサデータ群2510を取得したとする。クライアント装置130は、取得したセンサデータ群2510を、サーバ装置110に送信する。
同様に、各タイムフレームにおける視野画像331が表示されることで、ユーザ170が振る舞いをして(例えば、図4の矢印303)、クライアント装置140が、センサデータ群2530を取得したとする。クライアント装置140は、取得したセンサデータ群2530を、サーバ装置110に送信する。
サーバ装置110の仮想空間用情報提供部111は、センサデータ群2510とセンサデータ群2530に基づいて、それぞれのアバタ260、270の部位情報を算出する。また、サーバ装置110の合成画像群用情報提供部112は、仮想空間用情報提供部111により算出された部位情報が所定量以上変化しているか否かを判定し、所定量以上変化していると判定した場合には、動きの種類を判定する。また、合成画像群用情報提供部112は、判定した動きの種類に応じたAPIを読み出し、センサデータ群2510、2530それぞれに基づいて、他のアバタに対する動きの種類を判定する。更に、サーバ装置110の合成画像群用情報提供部112は、判定結果等を他のアバタに対する動きの種類判定ログテーブル2400に新たなデータ行を追加して格納する。これにより、サーバ装置110の合成画像群用情報提供部112は、反応イベント2520、2540が発生したと判定する。
なお、合成画像群用情報提供部112は、作用イベント2120が発生すると、作用イベント2120をクライアント装置130及びクライアント装置140に送信し、クライアント装置130及びクライアント装置140より作用イベント受信完了の通知を受信する。同様に、合成画像群用情報提供部112は、反応イベント2520または2540をクライアント装置120に送信し、クライアント装置120より、反応イベント受信完了の通知を受信する。
合成画像群用情報提供部112は、作用イベント2120を送信してから作用イベント受信完了の通知を受信するまでの時間に基づいて、通信速度実績を算出する。また、合成画像群用情報提供部112は、反応イベント2520または反応イベント2540を送信してから反応イベント受信完了の通知を受信するまでの時間に基づいて、通信速度実績を算出する。合成画像群用情報提供部112は、算出した通信速度実績に基づいて、クライアント装置120〜140に合成画像群2500が到達する時刻を予測する。これにより、合成画像群用情報提供部112は、合成画像群2500の再生開始タイミング(例えば、図5及び図25の時刻t7)を決定する。
なお、作用イベント2120を受信したクライアント装置130は、各タイムフレームにおける視野画像321を、ユーザ160のHMD133に表示したタイミング(出力タイミング)を示す表示タイミング情報を、作用イベント受信完了の通知に含めて送信する。また、作用イベント2120を受信したクライアント装置140は、各タイムフレームにおける視野画像331を、ユーザ170のHMD143に表示したタイミング(出力タイミング)を示す表示タイミング情報を、作用イベント受信完了の通知に含めて送信する。
これにより、合成画像群用情報提供部112は、クライアント装置130及び140よりそれぞれ受信した作用イベント受信完了の通知に基づいて、表示タイミング情報を抽出することができる。
合成画像群用情報提供部112は、作用イベント2120発生から作用イベント受信完了の通知を受信するまでの間に取得した情報を、「バッファテーブル」及び「イベントテーブル」(詳細は図26を用いて後述)に格納する。また、合成画像群用情報提供部112は、「バッファテーブル」及び「イベントテーブル」に格納された情報に基づいて導出される情報2560を、「作用イベント及び反応イベントログ参考表」(詳細は図27を用いて後述)に格納する。
また、合成画像群用情報提供部112は、画像群2110Iがクライアント装置130、140に送信されてから、センサデータ群2510、2530を受信するまでの間に取得した情報を「再生と反応ログテーブル」(詳細は図28を用いて後述)に格納する。更に、合成画像群用情報提供部112は、「再生と反応ログテーブル」に格納された情報及び「作用イベント及び反応イベントログ参考表」に基づいて、合成画像群生成用情報2561及び合成画像群再生指示情報2562を導出する。合成画像群生成用情報2561及び合成画像群再生指示情報2562は、合成画像群2500の生成及び再生に必要な情報である。
また、合成画像群用情報提供部112は、合成画像群生成用情報2561及び合成画像群再生指示情報2562を、それぞれ、「合成画像群生成用情報参考表」及び「合成再生指示情報参考表」(詳細は図29を用いて後述)に格納する。
更に、合成画像群用情報提供部112は、合成画像群生成用情報2561に基づいて合成画像群2500を生成し、合成画像群再生指示情報2562に基づいて、クライアント装置120〜140に合成画像群2500を送信する。
<合成画像群提供処理において作用イベント発生後に記録される情報の説明その1>
次に、作用イベント2120発生から作用イベント受信完了の通知を受信するまでの間に取得した情報が格納される「バッファテーブル」及び「イベントログテーブル」及び両テーブルから導出される参考表について説明する。
(1)バッファテーブルの説明
図26(a)は、バッファテーブルの一例を示す図である。他のアバタに対する動きの種類判定ログテーブル2400に新たなデータ行が追加され、イベントが発生したと判定されるごとに、バッファテーブル2600に新たなデータ行が追加される。
作用イベントが発生したことで、バッファテーブル2600に新たなデータ行が追加されると、バッファテーブル2600では、一定時間、他のクライアント装置からのセンサデータに基づいて発生したイベントにより、新たなデータ行が追加されるのを待ち受ける。
バッファテーブル2600では、他のクライアント装置からのセンサデータに基づいて発生したイベントにより、新たなデータ行が追加されると、待ち受けを終了する。作用イベントの発生に伴って、バッファテーブル2600にデータ行が追加されてから、一定時間内にデータ行が追加された場合、当該データ行に対応するイベントを、作用イベントに対応する反応イベントと判定する。
(2)イベントログテーブルの説明
図26(b)は、イベントログテーブルの一例である。合成画像群用情報提供部112は、発生したイベントを他のクライアント装置に送信するため、イベントログテーブル2610では、イベントの送受信を記録する。なお、合成画像群用情報提供部112は、イベントの送受信に際して、通信速度を測定してイベントログテーブル2610に記録する。
(3)作用イベント及び反応イベントログ参考表
次に、バッファテーブル2600及びイベントログテーブル2610に格納された情報に基づいて導出される情報を格納する、「作用イベント及び反応イベントログ参考表」について図27を用いて説明する。作用イベント及び反応イベントログ参考表は、バッファテーブル2600及びイベントログテーブル2610に格納された情報に基づいて導出される情報を、わかりやすくまとめた表である。
図27は、作用イベント及び反応イベントログ参考表の一例を示す図である。図27に示すように、作用イベント及び反応イベントログ参考表2700には情報の項目として、"記録時刻"、"作用イベント/反応イベント"が含まれる。更に、情報の項目として、"ログID"、"ユーザ名"、"クライアント装置ID"、"通信速度実績"が含まれる。
"記録時刻"には、作用イベントまたは反応イベントが発生したと判定され、作用イベントまたは反応イベントがログ格納部116に格納された時刻が記録される。
"作用イベント/反応イベント"には、発生したイベントが作用イベントであるのか、反応イベントであるのかの区別を示す情報が記録される。"ログID"には、他のアバタに対する動きの種類判定ログテーブル2400に格納された各データ行のうち、作用イベント2120に対応するデータ行に格納されたログIDが記録される。
"ユーザ名"には、作用イベントまたは反応イベントを発生させたアバタの元となるユーザのユーザ名が格納される。"クライアント装置ID"には、作用イベントまたは反応イベントを発生させたアバタの元となるユーザが利用するクライアント装置を識別するための識別子が格納される。また、"クライアント装置ID"には、作用イベントまたは反応イベントの送信先となるクライアント装置を識別するための識別子が格納される。
"通信速度実績"には、作用イベントまたは反応イベントが発生した際に、作用イベント受信完了の通知または反応イベント受信完了の通知を受信するまでの時間に基づいて算出された通信速度実績が格納される。
<合成画像群提供処理において作用イベント発生後に記録される情報の説明その2>
次に、作用イベントに対応するアバタの動きが、他のクライアント装置において再生されたこと、及び、再生に伴って他のユーザが振る舞いを行ったこと(反応したこと)を記録した「再生と反応ログテーブル」について説明する。更に、当該テーブルに基づいて導出される参考表(合成画像群生成用情報参考表及び合成画像群再生指示情報参考表)について説明する。
(1)再生と反応ログテーブル
合成画像群用情報提供部112は、クライアント装置において、作用イベントに対応するアバタの動きが再生されたタイミング、及び、再生に伴って他のユーザが反応したタイミングを、「再生と反応ログテーブル」に記録する。
図28は、再生と反応ログテーブルの一例を示す図である。図28に示すように、再生と反応ログテーブル2800には、作用イベントに対応するアバタの動きが再生されたタイミングが、"実行開始時刻"及び"実行終了時刻"として記録される。
再生と反応ログテーブル2800において、データ行2801は、クライアント装置ID="c2"のクライアント装置130で、作用イベントに対応するアバタの動きが再生されたことを示している。また、データ行2803は、クライアント装置="c3" のクライアント装置140で、作用イベントに対応するアバタの動きが再生されたことを示している。
また、再生と反応ログテーブル2800には、再生に伴って他のユーザが反応したタイミングが、"実行開始時刻"及び"実行終了時刻"として記録される。
再生と反応ログテーブル2800において、データ行2802は、クライアント装置ID="c2"のクライアント装置130で、当該クライアント装置を利用するユーザ160が反応したことを示している。また、データ行2804は、クライアント装置="c3"のクライアント装置140で、当該クライアント装置を利用するユーザ170が反応したことを示している。
(2)合成画像群生成用情報参考表及び合成画像群再生指示情報参考表
次に、「合成画像群生成用情報参考表」と、「合成画像群再生指示情報参考表」について図29を用いて説明する。「合成画像群生成用情報参考表」は、再生と反応ログテーブル2800に格納された情報に基づいて導出される、合成画像群2500の生成に必要な情報をまとめたものである。また、「合成画像群再生指示情報参考表」は、イベントログテーブル2610及び再生と反応ログテーブル2800に格納された情報に基づいて導出される、合成画像群2500の再生に必要な情報をまとめたものである。以下、合成画像群生成用情報参考表と、合成画像群再生指示情報参考表について説明する。
図29(a)は、合成画像群生成用情報参考表の一例を示す図である。図29(a)に示すように、合成画像群生成用情報参考表2910には合成画像群2500の生成に必要な合成画像群生成用情報2561が格納される。合成画像群2500の生成に際して、合成画像群用情報提供部112は、合成画像群の生成の対象とする作用イベント及び反応イベントを特定する。このため、合成画像群生成用情報参考表2910には、対象とする作用イベント及び反応イベントを特定するための情報として、"イベント"が格納される。作用イベント及び反応イベントは、他のアバタに対する動きの種類判定ログテーブル2400に新たにデータ行が格納され、ログIDが付加されることで発生する。このため、合成画像群生成用情報参考表2910には、作用イベント2120及び反応イベント2520、2540を特定するための情報として、"ログID"が格納される。
また、合成画像群2500の生成に際して、合成画像群用情報提供部112は、各ユーザの振る舞いがアバタの動きに反映された画像群を生成するために抽出すべきセンサデータの範囲を確定する。このため、合成画像群生成用情報参考表2910には、作用イベント2120について、他のアバタに対する動きの種類判定ログテーブル2400より読み出した、"判定時刻(開始)"と"判定時刻(終了)"が格納される。また、反応イベント2520、2540について、他のアバタに対する動きの種類判定ログテーブル2400より読み出した、"判定時刻(開始)"と"判定時刻(終了)"が格納される。
また、合成画像群2500の生成に際して、合成画像群用情報提供部112は、作用イベントを発生させたアバタ250の動きを、ユーザ160のHMD133またはユーザ170のHMD143に表示した表示タイミング情報を取得する。このため、合成画像群生成用情報テーブル2710には、"表示タイミング(開始)"と"表示タイミング(終了)"が格納される。
図29(b)は、合成画像群再生指示情報参考表の一例を示す図である。図29(b)に示すように、合成画像群再生指示情報参考表2920には、合成画像群2500の再生に必要な情報が格納される。
合成画像群用情報提供部112は、合成画像群2500を再生するにあたり、合成画像群2500に含まれる画像群2110I'、画像群2510I'、画像群2530I'の再生時刻を算出する。このため、合成画像群再生指示情報参考表2920には、合成画像群2500に含まれる画像群2110I'、画像群2510I'、画像群2530I'の"再生時刻(開始〜終了)"が、"イベント"及び"ログID"と対応付けて格納される。
<合成画像群提供処理における合成画像群の生成手順の概要>
次に、合成画像群用情報提供部112による合成画像群2500の生成手順について説明する。
上述したように、合成画像群生成用情報参考表2910には、作用イベント2120に対応する"判定時刻(開始)"と"判定時刻(終了)"とが格納される。合成画像群用情報提供部112は、センサデータ群2110のうち当該"判定時刻(開始)"と"判定時刻(終了)"とに基づいて特定される時間範囲のセンサデータを抽出し、画像群2110I'を生成する。
同様に、合成画像群生成用情報参考表2910には、反応イベント2520に対応する"判定時刻(開始)"と"判定時刻(終了)"とが格納される。合成画像群用情報提供部112は、センサデータ群2530のうち当該"判定時刻(開始)" と"判定時刻(終了)"とに基づいて特定される時間範囲のセンサデータを抽出し、画像群2510I'を生成する。
同様に、合成画像群生成用情報参考表2910には、反応イベント2540に対応する"判定時刻(開始)"と"判定時刻(終了)"とが格納される。合成画像群用情報提供部112は、センサデータ群2530のうち当該"判定時刻(開始)" と"判定時刻(終了)"とに基づいて特定される時間範囲のセンサデータを抽出し、画像群2530I'を生成する。
合成画像群生成用情報参考表2910には、作用イベント2120に対応するアバタ250の動きが表示された表示タイミング情報として、"表示タイミング(開始)"が格納される。"表示タイミング(開始)"に格納された時刻のうち、反応イベント2520に対応付けて格納された時刻は、ユーザ160のアバタ260がユーザ150のアバタ250の動きに応じて動きを開始した時刻である。つまり、実空間に応じて、ユーザ160がユーザ150に対して社会的振る舞い(反応)をした、反応タイミングを示す情報(ユーザ160の反応タイミング情報)である。
そこで、合成画像群用情報提供部112は、ユーザ160のHMD133に各時刻における視野画像321を表示した表示タイミング情報と、ユーザ160の反応タイミング情報との差分に基づいて、両者の時間のズレ(矢印2550)を算出する。更に、合成画像群用情報提供部112は、算出したズレに応じた時間差で、画像群2110I'と画像群2510I'とを合成する。
同様に、"表示タイミング(開始)"に格納された時刻のうち、反応イベント2540に対応付けて格納された時刻は、ユーザ170のアバタ270がユーザ150のアバタ250の動きに応じて動きを開始した時刻である。つまり、実空間に応じて、ユーザ170がユーザ150に対して社会的振る舞い(反応)をした、反応タイミングを示す情報(ユーザ170の反応タイミング情報)である。
そこで、合成画像群用情報提供部112は、ユーザ170のHMD143に各時刻における視野画像331を表示した表示タイミング情報と、ユーザ170の反応タイミング情報との差分に基づいて、両者の時間のズレ(矢印2551)を算出する。更に、合成画像群用情報提供部112は、算出したズレに応じた時間差で、画像群2110I'と画像群2530I'とを合成する。
<合成画像群提供処理における合成画像群の再生手順の概要>
次に、合成画像群用情報提供部112による合成画像群2500の再生手順について説明する。
上述したように、合成画像群再生指示情報参考表2920には、合成画像群2500に含まれる画像群2110I'、画像群2510I'、画像群2530I'の再生時刻が格納される。合成画像群用情報提供部112は、生成した合成画像群2500と、合成画像群2500に含まれる画像群2110I'、画像群2510I'、画像群2530I'の再生時刻とを含む合成画像群用情報として、クライアント装置120〜140に送信する。これにより、クライアント装置120〜140は、同じ時刻(例えば、図5または図25の時刻t7)において、合成画像群2500を同期して再生することができる。
<合成画像群用情報提供部により実行される合成画像群提供処理の流れ>
次に、サーバ装置110の合成画像群用情報提供部112による合成画像群用情報提供処理の流れについて説明する。図30は、サーバ装置により実行される合成画像群用情報提供処理のフローチャートであり、センサデータが所定量以上格納されるごとに実行される。
ステップS3001において、合成画像群生成部1704は、新たに作用イベント2120が発生したか否かを判定する。ステップS3001において、新たに作用イベント2120が発生していないと判定した場合には、新たに作用イベント2120が発生するまで待機する。
一方、ステップS3001において、新たに作用イベント2120が発生したと判定した場合には、作用イベント2120が発生したことをバッファテーブル2600に記録し、ステップS3002に進む。ステップS3002において、合成画像群生成部1704は、作用イベント2120の発生に応じて反応イベント2520、2540が発生したことを検出し、バッファテーブル2600に記録する。
ステップS3003において、合成画像群生成部1704は、作用イベントが発生したクライアント装置以外のクライアント装置に、作用イベントを送信し、送信先のクライアント装置から、作用イベント受信完了の通知を受信する。
ステップS3004において、合成画像群生成部1704は、作用イベントを送信してから作用イベント受信完了の通知を受信するまでの時間に基づいて、通信速度を算出し、イベントログテーブル2610に記録する。
ステップS3005において、合成画像群生成部1704は、各種テーブル(バッファテーブル2600、イベントログテーブル2610、再生と反応ログテーブル2800)他のアバタに対する動きの種類判定ログテーブル2400を参照する。これにより、合成画像群生成部1704は、合成画像群生成用情報2561を生成する。更に、合成画像群生成部1704は、合成画像群生成用情報2561に基づいて、合成画像群の生成に用いる画像群2110I'、画像群2510I'、2530I'を生成する。
ステップS3006において、合成画像群生成部1704は、合成画像群生成用情報2561を参照し、表示タイミング情報と反応タイミング情報とのズレ(矢印2550)に応じた時間差を算出する。また、当該時間差に応じて仮想空間の画像群2110Iと画像群2510Iとを合成する。また、合成画像群生成部1704は、合成画像群生成用情報2561を参照し、表示タイミング情報と反応タイミング情報とのズレ(矢印2550)に応じた時間差を算出する。当該時間差に応じて仮想空間の画像群2510Iと画像群2530Iとを合成する。これにより、合成画像群2500を生成する。
ステップS3007において、合成画像群送信部1705は、ステップS3006で生成した合成画像群2500のデータサイズと、ステップS3003で算出した通信速度とに基づいて、クライアント装置に合成画像群2500が到達する時刻を予測する。また、合成画像群送信部1705は、クライアント装置120〜140における合成画像群2500の再生開始タイミングを決定する。更に、合成画像群送信部1705は、合成画像群生成用情報2561を参照し、各画像群(画像群2110I'、画像群2510I'、画像群2530I')の再生時刻を算出し、合成画像群再生指示情報2562に格納する。
ステップS3008において、合成画像群送信部1705は、合成画像群2500を合成画像群再生指示情報2562とともに、合成画像群用情報としてクライアント装置120〜140に送信する。
なお、合成画像群送信部1705は、クライアント装置120〜140にて合成画像群が2500が再生されると、再生結果を合成画像群再生ログテーブルに記録する。図31は、合成画像群再生ログテーブルの一例を示す図である。図31に示すように、合成画像群再生ログテーブル3100には、再生先のクライアント装置と、再生開始時刻、再生終了時刻等が記録される。
以上の説明から明らかなように、反応出力システム100は、ユーザ150〜170それぞれの実空間における振る舞いに応じたアバタ250〜270それぞれの動きが反映された仮想空間の画像群2110I〜2530Iを生成する。また、反応出力システム100は、生成した仮想空間の画像群2110I〜2530Iを合成することで合成画像群2500を生成する。また、反応出力システム100は、合成画像群2500を生成するにあたり、視野画像群を表示したタイミング(出力タイミング)とユーザの振る舞いのタイミング(反応タイミング)とのズレに応じた時間差で合成を行う。更に、反応出力システム100は、生成した合成画像群2500が、各クライアント装置にて同期して再生されるように制御する。
これにより、あるユーザの振る舞いに対する他のユーザそれぞれの反応を、あたかもその場に居合わせているかのように、仮想空間上で表示することが可能となる。
つまり、複数人が利用する仮想空間上で、ある人の振る舞いを反映したアバタの動きに対して他の人たちが個別にした反応を反映したアバタの動きを、当該振る舞いに対するそれぞれの反応が生起したタイミングを変えずに、合成して出力することが可能になる。
[第2の実施形態]
上記第1の実施形態において、反応出力システムは、他のアバタに対する動きの種類を判定したが、第2の実施形態では、更に、他のアバタに対する動きの傾向について判定する。他のアバタに対する動きの傾向とは、例えば、ユーザが他のユーザに対して行った社会的振る舞いを反映したアバタの動きが、他のアバタとの関係において接近傾向にあるのか、回避傾向にあるのかを判定したものである。以下、第2の実施形態について、第1の実施形態との相違点を中心に説明する。
はじめに、第2の実施形態におけるサーバ装置110の機能構成について説明する。図32は、サーバ装置の機能構成の一例を示す第3の図である。図17に示した機能構成との違いは、傾向判定部3201を有する点と、合成画像群生成部3202の機能が、合成画像群生成部1704の機能とは異なる点、定義情報格納部3203が、他のアバタに対する動きの種類と傾向に関する定義情報を有する点である。
傾向判定部3201は、動き(関係)判定部1703において判定された他のアバタに対する動きの傾向が接近傾向にあるのか、回避傾向にあるのかを判定する。傾向判定部3201は、定義情報格納部3203に格納された定義情報のうち、他のアバタに対する動きの種類と傾向との関係を定義した定義情報を参照する。これにより、傾向判定部3201は、ユーザが他のユーザに対して行った社会的振る舞いを反映したアバタの動きが、他のアバタとの関係において接近傾向にあるのか、回避傾向にあるのかを判定する。
なお、他のアバタに対する動きの種類と傾向との関係を定義した定義情報には、他のアバタに対する動きの優先順位が対応付けられている。傾向判定部3201は、ユーザが他のユーザに対して行った社会的振る舞いを反映したアバタの動きが、他のアバタとの関係において接近傾向にあるのか、回避傾向にあるのかの判定を行うにあたり、あわせて優先順位を取得する。
合成画像群生成部3202は、合成画像群を生成するにあたり、傾向判定部3201により判定された判定結果と、傾向判定部3201により取得された優先順位とに応じた表示態様(色、大きさ等)で、合成画像群を生成する。なお、ここでいう、表示態様には、強調を強めた表示態様と、強調を弱めた表示態様とが含まれる。また、強調を弱めた表示態様には、表示する色を透明にする、あるいは、色を薄くする等の表示態様が含まれる。
次に、他のアバタに対する動きの種類と傾向と優先順位との関係を定義した定義情報について説明する。図33は、他のアバタに対する動きの種類と傾向と優先順位との関係を定義した定義情報の一例を示す図である。
図33に示すように、定義情報は情報の項目として、"他のアバタに対する動きの種類"、"接近傾向/回避傾向"、"優先順位"を含む。
"他のアバタに対する動きの種類"には、動き(関係)判定部1703により判定されうる、他のアバタに対する動きの種類が格納される。"接近傾向/回避傾向"には、他のアバタに対する動きの種類ごとに、接近傾向または回避傾向のいずれかが格納される。
"優先順位"には、他のアバタに対する動きの種類について割り当てた優先順位が格納される。例えば、同じ時間範囲に2種類の動きが行われ、それぞれ他のアバタに対する動きの種類が判定された場合において、一方の判定結果の傾向が接近傾向と判定され、他方の判定結果の傾向が回避傾向と判定されたとする。このとき、傾向判定部3201は、"優先順位"に格納された優先順位にしたがって、いずれの傾向を、当該時間範囲における判定結果として採用するかを決定する。また、例えば、合成画像群の生成に際して判定された、他のアバタに対する動きの種類の優先順位が高かったとする。このとき、合成画像群生成部3202は、他のアバタに対する動きの種類の優先順位が低かった場合と比較して、より強調した表示態様となるように合成画像群を生成する。反対に、優先順位が低かった場合には、強調を弱めた表示態様となるように合成画像群を生成する。
図33によれば、例えば、動き(関係)判定部1703により、他のアバタに対する動きの種類="body-close-to"と判定された場合、傾向判定部3201は、他のアバタに対する動きの傾向を"接近傾向"と判定する。また、そのときの優先順位として"1"を取得する。これにより、合成画像群生成部1704は、合成画像群2500を生成する際に、他のアバタに対する動きの傾向="接近傾向"で、優先順位="1"に応じた表示態様で、合成画像群2500を生成することができる。
このように、第2の実施形態に係る反応出力システムによれば、判定した他のアバタに対する動きの種類に応じて、ユーザが他のユーザに対して行った社会的振る舞いに対応するアバタの動きの傾向を判定する。これにより、合成画像群に反映する他のアバタに対する動きの種類や、その表示態様を変更することができる。
[第3の実施形態]
上記第1及び第2の実施形態では、仮想空間においてコミュニケーションを行う複数の人間の属性について言及しなかったが、例えば、仮想空間においてコミュニケーションを行う複数の人間を、属性に応じて、複数のグループに分類するようにしてもよい。
複数のグループに分類した場合、例えば、あるユーザの顔の向きや体の向きだけでは、当該ユーザの社会的振る舞いを反映したアバタの動きが、他のいずれのユーザのアバタを対象としたものであるのかを判断できないケースにおいて有益である。当該ユーザの社会的振る舞いを反映したアバタの動きが、どのグループに対する社会的振る舞いを反映した動きであるのかをおおまかに判断することができるからである。
例えば、当該ユーザが所定のグループに属しており、当該ユーザの社会的振る舞いを反映したアバタの動きを判断する場合について考える。この場合、他のユーザのアバタの仮想空間における位置を、他のユーザがそれぞれ属するグループに応じて分類し、それぞれのグループごとに、アバタの位置をおおまかに覆う図形を仮想空間内に設定する。
これにより、他のグループに属するユーザのアバタのおおまかな位置を特定することができ、判断対象のユーザの社会的振る舞いを反映したアバタの動きが、いずれのグループを対象として行われたものであるのかを判断することができる。
なお、判断対象のユーザの社会的振る舞いを反映したアバタの動きが、いずれのグループを対象として行われたものであるかを判断した場合、判断結果であるグループ名を、例えば、他のアバタに対する動きの種類判定ログテーブル2400に記述してもよい。あるいは、判断結果であるグループに属する全てのユーザ名を、他のアバタに対する動きの種類判定ログテーブル2400に記述してもよい。
一方で、複数のグループに分類した場合であっても、判断対象のユーザの社会的振る舞いを反映したアバタの動きが、同じグループに属する他のユーザのアバタを対象として行われたのか、他のグループを対象として行われたのかを判断するのが困難なケースもある。
例えば、判断対象のユーザの社会的振る舞いを反映したアバタの顔の向きに対して、同じグループに属する他のユーザのアバタの位置と、他のグループの位置とが、同じ方向にある場合があるからである。
このような場合には、ユーザの振る舞いをセンシングするセンサとして視線センサを配し、3次元の視線データを取得することで、判断対象のユーザの視線の焦点距離を求めることが有効である。判断対象のユーザのアバタの位置から、同じグループに属する他のユーザのアバタの位置までの距離と、他のグループの位置までの距離とは異なるため、判断対象のユーザの社会的振る舞いを反映したアバタの動きの対象を区別することができるからである。
あるいは、判断対象のユーザのつぶやき等の音声データに基づいて、対象を区別するようにしてもよい。あるいは、他のユーザが判断対象のユーザに対して、音声を介して直接問い合わせた場合にあっては、当該問い合わせ結果に基づいて、対象を区別するようにしてもよい。
あるいは、判断対象のユーザの社会的振る舞いを反映したアバタの動きが、反応イベントを発生させる動きである場合には、どの作用イベントに対する反応イベントであるのかに基づいて、対象を区別するようにしてもよい。
このように、同じ仮想空間内において、異なるグループに属するユーザのアバタが存在する場合には、所定のグループに属するユーザの人間関係の構築に、異なるグループに属するユーザが関与することができることになる。しかしながら、ユーザの社会的振る舞いを反映したアバタの動きが、いずれのグループを対象として行われたものであるのかを判断することができれば、同じグループに属するユーザのアバタを対象としたものであるのか否かを分けて管理することができる。
[第4の実施形態]
上記第1及び第2の実施形態では、合成画像群として、仮想空間の画像群を合成するものとして説明した。つまり、視野画像群に表示されるアバタと同じアバタを合成画像群の生成に用いるものとして説明したが、合成画像群に用いるアバタは、視野画像群に表示されるアバタとは異なる種類のアバタであってもよい。
また、上記第1及び第2の実施形態では、合成画像群の表示方法について特に言及しなかったが、合成画像群は、仮想空間を俯瞰的に見た場合の画像群であっても、特定のユーザの視点から見た場合の画像群であってもよい。
また、上記第1及び第2の実施形態においてサーバ装置110が有するものとして説明した機能の一部は、クライアント装置120〜140が有していてもよい。あるいは、上記第1及び第2の実施形態においてクライアント装置120〜140が有しているものとして説明した機能の一部は、サーバ装置110が有していてもよい。つまり、上記第1及び第2の実施形態において説明した、サーバ装置110とクライアント装置120〜140との間の機能の区分は一例にすぎず、任意の組み合わせが可能であるものとする。
また、上記第1及び第2の実施形態では、サーバ装置110において合成画像群2500を生成し、クライアント装置120〜140に送信する場合について説明した。しかしながら、合成画像群2500は、クライアント装置120〜140において生成するようにしてもよい。図34は、ユーザの振る舞いが行われてから合成画像群を再生するまでの流れを説明するための第2の図である。
図25との相違点は、サーバ装置110が、クライアント装置130から受信したセンサデータ群2510をクライアント装置120及びクライアント装置140に送信している点である。また、サーバ装置110が、クライアント装置140から受信したセンサデータ群2530をクライアント装置120及びクライアント装置130に送信している点である。更に、サーバ装置110が、合成画像群生成用情報2561と合成画像群再生指示情報2562とを、クライアント装置120〜140に送信している点である。
これにより、クライアント装置120〜140は、合成画像群2500を生成して再生することができる。なお、この場合、クライアント装置120〜140には、センサデータ群に基づいて、仮想空間におけるアバタを生成する機能が備えられているものとする。
なお、開示の技術では、以下に記載する付記のような形態が考えられる。
(付記1)
第1端末で第1の人について検出された第1動作について、第1の人と対応付けた状態の第1画像群を生成して、第2端末と第3端末に提供する第1の提供手段と、
前記第2端末で、前記第1画像群を出力した後に検出された第2の人の第2動作に基づいて、第2の人と対応付けた状態の第2画像群を生成する第2画像生成手段と、
前記第3端末で、前記第1画像群を出力した後に検出された第3の人の第3動作に基づいて、第3の人と対応付けた状態の第3画像群を生成する第3画像生成手段と、
前記第1画像群と前記第2画像群と前記第3画像群とを、
前記第1画像群と前記第2画像群とは、前記第1画像群の前記第2端末における出力タイミングと前記第2動作の検出タイミングとのズレに応じた時間差で合成し、
前記第1画像群と前記第3画像群とは、前記第1画像群の前記第3端末における出力タイミングと前記第3動作の検出タイミングとのズレに応じた時間差で合成し、
前記第1画像群と前記第2画像群と前記第3画像群とを含む合成画像群を、前記第1端末、前記第2端末、前記第3端末のそれぞれに提供する第2の提供手段と
を有することを特徴とする反応出力システム。
(付記2)
検出された前記第2動作が、前記第1画像群に示される前記第1の人に対する接近傾向の動作であるのか、回避傾向の動作であるのかを判定し、判定の結果に応じて、前記合成画像群の表示態様を変更することを特徴とする付記1に記載の反応出力システム。
(付記3)
検出された前記第3動作が、前記第1画像に示される前記第1の人に対する接近傾向の動作であるのか、回避傾向の動作であるのかを判定し、判定の結果に応じて、前記合成画像群の表示態様を変更することを特徴とする付記1に記載の反応出力システム。
(付記4)
前記第1端末と前記第2端末との間の通信速度と、前記第1端末と前記第3端末との間の通信速度とに基づいて、前記合成画像群を、前記第1端末、前記第2端末、前記第3端末において再生するタイミングを決定することを特徴とする付記1に記載の反応出力システム。
(付記5)
第1端末で第1の人について検出された第1動作について、第1の人と対応付けた状態の第1画像群を生成して、第2端末と第3端末に提供し、
前記第2端末で、前記第1画像群を出力した後に検出された第2の人の第2動作に基づいて、第2の人と対応付けた状態の第2画像群を生成し、
前記第3端末で、前記第1画像群を出力した後に検出された第3の人の第3動作に基づいて、第3の人と対応付けた状態の第3画像群を生成し、
前記第1画像群と前記第2画像群と前記第3画像群とを、
前記第1画像群と前記第2画像群とは、前記第1画像群の前記第2端末における出力タイミングと前記第2動作の検出タイミングとのズレに応じた時間差で合成し、
前記第1画像群と前記第3画像群とは、前記第1画像群の前記第3端末における出力タイミングと前記第3動作の検出タイミングとのズレに応じた時間差で合成し、
前記第1画像群と前記第2画像群と前記第3画像群とを含む合成画像群を、前記第1端末、前記第2端末、前記第3端末のそれぞれに提供する、
処理をコンピュータに実行させるための反応出力プログラム。
(付記6)
コンピュータが、
第1端末で第1の人について検出された第1動作について、第1の人と対応付けた状態の第1画像群を生成して、第2端末と第3端末に提供し、
前記第2端末で、前記第1画像群を出力した後に検出された第2の人の第2動作に基づいて、第2の人と対応付けた状態の第2画像群を生成し、
前記第3端末で、前記第1画像群を出力した後に検出された第3の人の第3動作に基づいて、第3の人と対応付けた状態の第3画像群を生成し、
前記第1画像群と前記第2画像群と前記第3画像群とを、
前記第1画像群と前記第2画像群とは、前記第1画像群の前記第2端末における出力タイミングと前記第2動作の検出タイミングとのズレに応じた時間差で合成し、
前記第1画像群と前記第3画像群とは、前記第1画像群の前記第3端末における出力タイミングと前記第3動作の検出タイミングとのズレに応じた時間差で合成し、
前記第1画像群と前記第2画像群と前記第3画像群とを含む合成画像群(2500)を、前記第1端末、前記第2端末、前記第3端末のそれぞれに提供する、
処理を実行する反応出力方法。
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせ等、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。