以下、各実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
[第1の実施形態]
<画像生成システムの全体構成>
はじめに、画像生成システムについて説明する。図1は、画像生成システムの全体構成の一例を示す第1の図である。図1に示すように、画像生成システム100は、サーバソフトウェアが配置される画像生成装置110と、クライアントアプリケーションソフトウェアが配置される情報処理装置121、131を含むクライアント側システム120、130とを有する。画像生成装置110と、クライアント側システム120、130とは、インターネットやLAN(Local Area Network)等に代表されるネットワーク160を介して接続される。
画像生成システム100は、画像生成装置110と、クライアント側システム120、130とが、全体の処理を分割して実行することで、コミュニケーションサービスを提供する。ユーザ140(ユーザID=“userA”)、ユーザ150(ユーザID=“userB”)は、互いに離間した場所にて、画像生成システム100が提供するコミュニケーションサービスを利用する。これにより、ユーザ140とユーザ150とは同じ仮想空間においてアバタ(ユーザと対応付けた状態の画像)を介してコミュニケーションを行うことができる。
画像生成装置110は、ユーザ140、150をセンシングした結果得られたセンサデータを収集し、各種処理を行うサーバ装置である。
画像生成装置110には、サーバソフトウェアとしての画像生成プログラムがインストールされており、当該画像生成プログラムが実行されることで、画像生成装置110は、基本機能部及び制約部115として機能する。
基本機能部には、情報収集処理管理部111、情報表示処理部112、登録データ管理部113、表示履歴管理部114が含まれ、コミュニケーションサービスを提供するための基本的な機能を実現する。
情報収集処理管理部111は、ユーザ140、150をセンシングした結果得られたセンサデータを収集してセンサデータ用データベース(以下、DB(Database)と略す)117に格納する。
情報表示処理部112は、センサデータ用DB117に格納されたセンサデータに基づいて、仮想空間におけるアバタの画像を生成する。情報表示処理部112は、例えば、コンテンツ用DB116に格納されたアバタ骨格モデルを用いてアバタの画像を生成する。アバタ骨格モデルとは、人型の画像であって、複数のアバタ骨格を用いて、ユーザの各部位の動き(動作)を表現する画像である。なお、アバタ骨格とは、アバタの頭や肢体を動かす基点となるオブジェクトであり、アバタ骨格モデル内に複数配されている。情報表示処理部112は、各アバタ骨格について仮想空間における位置及び回転角度を算出し、算出した位置及び回転角度をアバタ骨格モデルに反映させることでアバタの画像を生成する。
また、情報表示処理部112は、コンテンツ用DB116に格納された仮想空間の画像(背景画像)に、アバタの画像を組み込むことで仮想空間用情報を生成し、クライアント側システム120、130に送信する。
なお、情報表示処理部112は、制約部115からの指示に基づいて、仮想空間の画像に組み込むアバタの画像を変更する。例えば、制約部115から、情報表示処理部112にて生成した次の時刻のアバタの画像を表示するよう指示があった場合には、情報表示処理部112にて生成した次の時刻のアバタの画像を組み込むことで次の時刻の仮想空間用画像を生成する。制約部115は、次の時刻のアバタの画像が、アバタを見ている相手に違和感を与えないと判定した場合、情報表示処理部112に対して、情報表示処理部112にて生成した次の時刻のアバタの画像を表示するよう指示する。
一方、制約部115から、制約部115にて生成された次の時刻のアバタの画像を表示するよう指示があった場合には、情報表示処理部112は、制約部115にて生成された次の時刻のアバタの画像を組み込むことで次の時刻の仮想空間用画像を生成する。なお、制約部115は、次の時刻のアバタの画像が、アバタを見ている相手に違和感を与えると判定した場合に、情報表示処理部112に対して、制約部115にて生成した次の時刻のアバタの画像を表示するよう指示する。
登録データ管理部113は、情報収集処理管理部111がセンサデータを収集し、情報表示処理部112が仮想空間用情報を生成して送信する際に用いる各種情報をコンテンツ用DB116、定義情報用DB118に登録する。
表示履歴管理部114は、情報表示処理部112が送信した仮想空間用情報に含まれるアバタの画像の生成に用いられたデータを、表示履歴に関するログテーブルとしてログ用DB119に記録する。画像生成装置110の管理者は、表示履歴管理部114によりログ用DB119に記録された表示履歴に関するログテーブルを解析することで、ユーザ140、150の人間関係(例えば、親密性のバランス等)を推測する。
制約部115は、センサデータ用DB117に格納されたセンサデータに基づいて算出される、アバタ骨格モデル候補の各アバタ骨格の変化の仕方を監視し、アバタを見ている相手に違和感を与えるか否かを判定する。「アバタ骨格の変化の仕方」とは、仮想空間におけるある時刻のアバタ骨格と、次の時刻のアバタ骨格との間の位置及び回転角度の遷移を指す。
制約部115では、アバタを見ている相手に違和感を与えないと判定した場合、情報表示処理部112にて生成される次の時刻のアバタの画像を表示するよう、情報表示処理部112に対して指示をする。
一方、制約部115では、アバタを見ている相手に違和感を与えると判定した場合、制約部115にて生成した次の時刻のアバタの画像(制約を加えたアバタの画像)を表示するよう、情報表示処理部112に対して指示をする。
このように、第1の実施形態における画像生成装置110では、アバタを見ている相手に違和感を与えないと判定した場合、センサデータに基づくアバタの画像を次の時刻に表示する。一方、アバタを見ている相手に違和感を与えると判定した場合には、制約を加えたアバタの画像を次の時刻に表示する。この結果、第1の実施形態における画像生成装置110によれば、アバタを見ている相手に違和感を与えない画像を表示することができる。
続いて、クライアント側システムについて説明する。なお、クライアント側システム120とクライアント側システム130とは同様の構成を有していることから、ここでは、クライアント側システム120について説明する。
クライアント側システム120は、情報処理装置121、情報提示装置123、情報収集装置124〜126を有する。
情報処理装置121には、クライアントアプリケーションとしての情報処理プログラムがインストールされており、当該情報処理プログラムが実行されることで、情報処理装置121は、情報処理部122として機能する。情報処理部122は、情報収集装置124〜126から出力されるセンサデータを画像生成装置110に送信するとともに、画像生成装置110から送信される仮想空間用情報を受信し、情報提示装置123に出力する。
なお、第1の実施形態において、情報処理装置121は、HMD(Head‐Mounted Display)に搭載されているものとして説明するが、情報処理装置121は、HMDに搭載されていなくてもよい。例えば、情報処理装置121は、ユーザ140を取り囲む環境埋め込み型端末に搭載されていてもよい。あるいは、情報処理装置121は、コンタクトレンズ、眼鏡のような装着型モバイル端末や、据え置き型サーバ装置等に搭載されていてもよい。
情報提示装置123は、画像生成装置110より送信された仮想空間用情報を、ユーザ140に対して表示する。なお、第1の実施形態において、情報提示装置123は、HMDの表示部により実現される。
情報収集装置124〜126は、ユーザ140の実空間における非言語行動をセンシングし、センサデータを出力する。
第1の実施形態において、情報収集装置124は頭部姿勢センサであり、HMDに搭載されている。頭部姿勢センサ124は、ユーザ140の実空間における非言語行動に含まれる“頭の向き”をセンシングして頭部姿勢データを出力する。
また、第1の実施形態において、情報収集装置125は深度センサである。深度センサ125は、ユーザ140の前方に設置され、設置位置からユーザ140までの三次元の距離をセンシングすることで、実空間におけるユーザ140の非言語行動に応じて変化する深度データ及び二次元の距離画像等を出力する。深度データとは、深度(奥行き)を示すデータ(例えば、3cm等)である。また、距離画像とは、深度センサ125から得られた深度データをXY平面にプロットして得られる画像をいう。距離画像上の各画素には、深度センサ125から得た各XY座標位置にある物体(深度センサ125から見て一番手前の物体)までの距離の値が格納される。なお、深度センサ125から得られるデータ(深度データ、距離画像のほか、カラー画像等も含む)を総称して、深度センサデータと称する。
また、第1の実施形態において、情報収集装置126は筋電位センサである。筋電位センサ126は、実空間におけるユーザ140の非言語行動に含まれる“表情の変化”をセンシングして筋電位データを出力する。
なお、以下では、クライアントアプリケーションソフトウェアが配置された1つの装置(情報処理装置)上に、1人のユーザが割り当てられるものとして説明するが、1つの装置上に複数のユーザが割り当てられていてもよい。
また、以下では、サーバソフトウェアもクライアントアプリケーションソフトウェアも、それぞれ1つの装置(画像生成装置、情報処理装置)上に配置されるものとして説明するが、1つの装置上に、複数のソフトウェアが配置されていてもよい。あるいは、サーバソフトウェアとクライアントアプリケーションソフトウェアは、1つの装置上に配置されていてもよい。あるいは、サーバソフトウェアもクライアントアプリケーションソフトウェアも、それぞれのソフトウェアにおいて実現される機能が、複数の装置に分散されて配置されていてもよい。
また、以下では、クライアントアプリケーションソフトウェアがユーザ140を識別し、画像生成装置110から送信される仮想空間用情報を、当該識別したユーザ140に応じた仮想空間用情報に変換して表示するものとする。また、以下では、ユーザ140の非言語行動をセンシングした結果得られるセンサデータが、ユーザ140と紐づけて画像生成装置110に送信されるものとして説明する。なお、クライアントアプリケーションソフトウェアが配置される情報処理装置121は、クライアントアプリケーションソフトウェアまたはサーバソフトウェアによってアクセス制御されているものとする。つまり、以下では、クライアントアプリケーションソフトウェアは、クライアントアプリケーションソフトウェアが配置される情報処理装置121にて、本人確認(ユーザ認証)が事前に行われているものとする。
また、以下では、クライアントアプリケーションソフトウェアが情報提示装置123の仕様を確認し、画像生成装置110から送信される仮想空間用情報を、当該確認した仕様に応じた仮想空間用情報に変換して表示するものとする。
また、以下では、クライアントアプリケーションソフトウェアが情報処理装置121を確認し、ユーザ140の非言語行動をセンシングした結果得られたセンサデータを、情報処理装置121と紐づけて画像生成装置110に送信するものとする。
また、以下では、ユーザ140を識別する識別子を、ユーザ140が1種類有しているものとして説明するが、画像生成システム100が複数のサービスを提供する場合にあっては、ユーザ140は、サービスごとに異なる識別子を有していてもよい。ただし、その場合、画像生成システム100により、ユーザ140が有している複数の識別子間の対応付けが管理されているものとする。
また、以下では、情報収集装置124〜126として、頭部姿勢センサ、深度センサ、筋電位センサがユーザ140の非言語行動をセンシングするものとして説明するが、それ以外のセンサが、ユーザ140の非言語行動をセンシングしてもよい。それ以外のセンサには、例えば、動画像撮像装置、静止画像(カラー画像)撮像装置、音声取得装置、生体センサ等が含まれる。
なお、非接触のセンサにおいては、例えば、ユーザ140を撮影している静止画像にユーザ140が映っていない場合のように、センサデータ中にユーザ140のデータがない場合もある。また、例えば、ユーザ140を撮影している静止画像に複数のユーザが撮影され、どのユーザをセンシングしたのか判別できない場合もある。本実施形態においては、このような事象については、別途対策がなされているものとし、センサデータは画像生成装置110においてユーザ140と正しく紐付けがなされているものとする。
また、以下では、情報収集装置124〜126にてセンシングされたセンサデータ自体が画像生成装置110に送信されるものとして説明するが、センシングされたセンサデータから導出可能な中間的な情報が送信されてもよい。例えば、ユーザ140の顔画像データをセンシングする場合にあっては、ユーザ140の顔パーツに着目することで導出される笑顔の変化の大小を表す情報が、画像生成装置110に送信されてもよい。あるいは、ユーザ140の顔の大きさに着目することで導出される姿勢変化を表す情報が、画像生成装置110に送信されてもよい。
更に、以下では、情報処理装置121、131から送信されるセンサデータには、タイムスタンプが付加されているものとする。また、このとき付加されるタイムスタンプは、クライアント側システム120とクライアント側システム130との間で、時刻合わせが行われているものとする。
<仮想空間の画像>
次に、ユーザ140のアバタの画像を含む仮想空間の画像について説明する。図2は、仮想空間の画像の一例を示す図である。
図2に示すように、コミュニケーションサービスを利用するユーザ140は、実空間において、HMD(頭部姿勢センサ124及び表示部123が搭載されたHMD)と、筋電位センサ126とを装着して、例えば、椅子200に着座する。また、ユーザ140の前方には深度センサ125が設置され、ユーザ140をセンシングする。
頭部姿勢センサ124、深度センサ125、筋電位センサ126によるセンシングにより得られた頭部姿勢データ、深度センサデータ、筋電位データは、画像生成装置110に送信され、ユーザ140のアバタの画像が生成される。同様の処理がユーザ150に対しても行われ、ユーザ150のアバタの画像が生成される。
更に、画像生成装置110において生成されたアバタの画像は、仮想空間の画像に組み込まれ、仮想空間用情報として情報処理装置121及び131にそれぞれ送信される。
図2に示す画像210は、情報処理装置121に送信された仮想空間用情報に含まれる仮想空間の画像の一例であり、当該画像210には、ユーザ140のアバタの画像220とユーザ150のアバタの画像230とが組み込まれている。図2に示すように、画像210は、ユーザ140が、自身のアバタの画像220を後から見ているように表示される。この状態で、ユーザ140が非言語行動を起こすと、画像210内のアバタの画像220も変化する。画像210によれば、ユーザ140は、自身の非言語行動に伴って仮想空間内で変化するアバタの画像220を、アバタの画像220の後ろ側から確認することができる。
<アバタの画像の表現方法>
次に仮想空間におけるアバタの画像の表現方法について説明する。仮想空間におけるアバタの画像は、実空間におけるユーザの非言語行動を反映させるために、部位ごとに異なる表現方法を用いて表現することができる。ただし、以下では、いずれの部位もアバタ骨格モデルを用いて表現するものとして説明する。
上述したように、アバタ骨格はアバタ骨格モデル内に複数配されている。例えば、アバタ骨格モデルの頭部には、頭部のアバタ骨格が配されている。頭部のアバタ骨格の位置及び回転角度は、頭部姿勢データに基づいて算出される。また、アバタ骨格モデルの頭部以外の肢体には、頭部以外の肢体のアバタ骨格が配されている。これらのアバタ骨格の位置及び回転角度は、深度データに基づいて算出される。
ここでは、一例として、アバタの上半身の画像についてアバタ骨格モデルを用いて表現する表現方法について説明する。図3は、アバタの画像の表現方法の一例を示す図であり、ユーザの上半身が前傾または後傾する動き、ユーザが左右を見回すように上半身の向きを変える動き、及び上半身全体で左側面や右側面に揺れる動きをアバタの画像として表現したものである。アバタ骨格モデルを用いた表現方法の場合、これらの動きはアバタの腰の位置を原点とする3軸方向に対するアバタ骨格(“Bone_Chest”)の回転角度の変化として表現することができる。
なお、図3では、仮想空間で一意に定まる座標系のX軸、Y軸、Z軸を、それぞれアバタの左右方向、上下方向、前後方向としている。
画像301は、X軸に対してアバタ骨格が+α[度]回転した場合のアバタの画像を示しており、画像302は、X軸に対してアバタ骨格が−α[度]回転した場合のアバタの画像を示している。また、画像311は、Y軸に対してアバタ骨格が+α[度]回転した場合のアバタの画像を示しており、画像312は、Y軸に対してアバタ骨格が−α[度]回転した場合のアバタの画像を示している。
更に、画像321は、Z軸に対してアバタ骨格が+α[度]回転した場合のアバタの画像を示しており、画像322は、Z軸に対してアバタ骨格が−α[度]回転した場合のアバタの画像を示している。
<画像生成装置のハードウェア構成>
次に、画像生成システム100に含まれる画像生成装置110のハードウェア構成について説明する。図4は、画像生成装置のハードウェア構成の一例を示す図である。図4に示すように、画像生成装置110は、CPU(Central Processing Unit)401、ROM(Read Only Memory)402、RAM(Random Access Memory)403を備える。また、画像生成装置110は、補助記憶部404、通信部405、表示部406、操作部407、ドライブ部408を備える。なお、画像生成装置110の各部は、バス409を介して相互に接続されている。
CPU401は、補助記憶部404にインストールされた各種プログラム(例えば、サーバソフトウェア)を実行する。ROM402は、不揮発性メモリである。ROM402は、補助記憶部404に格納された各種プログラムをCPU401が実行するために必要な各種プログラム、データ等を格納する主記憶部である。具体的には、ROM402はBIOS(Basic Input/Output System)やEFI(Extensible Firmware Interface)等のブートプログラム等を格納する。
RAM403は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の揮発性メモリであり、主記憶部として機能する。RAM403は、補助記憶部404に格納された各種プログラムがCPU401によって実行される際に展開される、作業領域を提供する。
補助記憶部404は、画像生成装置110にインストールされた各種プログラムや、各種プログラムを実行する際に用いる情報(各種コンテンツ、各種定義情報等)を格納する。また、補助記憶部404は、各種プログラムを実行することで取得される情報(センサデータ、ログテーブル等)を格納する。
通信部405は、画像生成装置110に接続されるクライアント側システム120、130の情報処理装置121、131と通信するためのデバイスである。表示部406は、画像生成装置110の処理結果や処理状態を表示するデバイスである。操作部407は、画像生成装置110に対して各種指示を入力する際に用いられるデバイスである。
ドライブ部408は記録媒体410をセットするためのデバイスである。ここでいう記録媒体410には、CD−ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する媒体が含まれる。また、記録媒体410には、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等も含まれる。
なお、補助記憶部404にインストールされる各種プログラムは、例えば、配布された記録媒体410がドライブ部408にセットされ、記録媒体410に記録された各種プログラムがドライブ部408により読み出されることでインストールされる。あるいは、補助記憶部404にインストールされる各種プログラムは、通信部405を介してネットワーク160より受信することでインストールされてもよい。
<情報処理装置が搭載されたHMDのハードウェア構成>
次に、情報処理装置121が搭載されたHMDのハードウェア構成について説明する。図5は、情報処理装置が搭載されたHMDのハードウェア構成の一例を示す図である。図5に示すように、HMDに搭載された情報処理装置121は、CPU501、ROM502、RAM503を備える。また、HMDに搭載された情報処理装置121は、補助記憶部504、通信部505を備える。HMDは、更に、操作部506、表示部123、頭部姿勢センサ124、I/F(Interface)部507を備え、これらの各部は、バス508を介して相互に接続されている。なお、HMDには、更に、音声出力装置(スピーカ等)及び音声取得装置(マイク等)が配されているが、第1の実施形態において、音声データの送受信の説明は省略するため、ここでも音声に関連する装置の説明は省略する。
CPU501は、補助記憶部504にインストールされた各種プログラム(例えば、クライアントアプリケーションソフトウェア)を実行するコンピュータである。ROM502は、不揮発性メモリである。ROM502は、補助記憶部504に格納された各種プログラムをCPU501が実行するために必要な各種プログラム、データ等を格納する主記憶部である。具体的には、ROM502はBIOSやEFI等のブートプログラム等を格納する。
RAM503は、DRAMやSRAM等の揮発性メモリであり、主記憶部として機能する。RAM503は、補助記憶部504に格納された各種プログラムがCPU501によって実行される際に展開される、作業領域を提供する。
補助記憶部504は、インストールされた各種プログラムや、各種プログラムを実行する際に用いる情報を格納する。通信部505は、画像生成装置110と通信するためのデバイスである。
操作部506は、HMDに対して各種指示を入力する際に用いられるデバイスである。表示部123は、画像生成装置110から送信された仮想空間用情報に含まれる仮想空間の画像を表示するデバイスである。
頭部姿勢センサ124は、実空間におけるユーザ140の非言語行動に含まれる“頭の向き”をセンシングし頭部姿勢データを出力する。
I/F部507は、深度センサ125、筋電位センサ126と接続し、深度センサ125より出力された深度センサデータ、筋電位センサ126より出力された筋電位データをそれぞれ取得する。
取得した頭部姿勢データ、深度センサデータ、筋電位データ等のセンサデータは、通信部505により画像生成装置110に送信される。なお、図5の例では、HMDが一体の装置として形成された場合を示したが、HMDは一体により形成されていても、別体の複数のデバイスにより形成されていてもよい。
<画像生成装置の制約部の機能構成>
次に、画像生成装置110の制約部115の機能構成について説明する。図6は、画像生成装置の制約部の機能構成を説明するための第1の図である。図6(a)に示すように、制約部115は、センサデータ処理部601、アバタ骨格モデル候補生成部602、時系列違和感判定部603、アバタ骨格遷移決定部604、アバタ骨格モデル管理部605を有する。
センサデータ処理部601は、第1の取得手段及び第2の取得手段の一例である。図6(b)に示すように、センサデータ処理部601は、クライアント側システム120、130より送信され、センサデータ用DB117に格納されたセンサデータを読み出す。センサデータ用DB117において、センサデータは、種類(第1の実施形態では、頭部姿勢データ、深度センサデータ、筋電位データ)ごとに分けて格納されている。
アバタ骨格モデル候補生成部602は、生成手段の一例である。アバタ骨格モデル候補生成部602は、センサデータ用DB117より読み出されたセンサデータに基づいてユーザ140の実空間における各部位の位置を算出する。また、アバタ骨格モデル候補生成部602は、算出した各部位の位置から、既存のAPI(Application Programming Interface)を用いて、仮想空間における各アバタ骨格の位置及び回転角度を算出する。更に、アバタ骨格モデル候補生成部602は、算出した仮想空間における各アバタ骨格の位置及び回転角度を反映させることでアバタ骨格モデル候補を生成する。
なお、アバタ骨格モデル候補生成部602は、時刻t1の次の時刻t1+1のセンサデータに基づいて、時刻t1+1のアバタ骨格モデル候補を生成する。
ただし、アバタ骨格モデル候補の生成方法はこれに限定されず、例えば、APIを用いて算出したアバタ骨格の位置及び回転角度に対して移動平均処理を施したうえで、アバタ骨格モデル候補を生成するようにしてもよい。あるいは、アバタ骨格モデル候補生成部602は、下半身に位置するアバタ骨格モデル候補については、APIを用いずに生成するようにしてもよい。
時系列違和感判定部603は、算出手段の一例である。時系列違和感判定部603は、アバタ骨格モデル候補の各アバタ骨格について、時刻t1と時刻t1+1の間の遷移を算出し、違和感が出るか否かを判定する。時系列違和感判定部603は、定義情報用DB118に格納された「違和感の出る遷移区間定義情報」(以下、「遷移区間定義情報」と称す。詳細は後述)を参照することで、違和感が出るか否かを判定する。
また、時系列違和感判定部603は、違和感が出るか否かの判定結果(時系列違和感判定値等)を、ログ用DB119の「時系列違和感判定値算出ログテーブル」(以下、「判定値ログテーブル」と称す。詳細は後述)に記録する。
アバタ骨格遷移決定部604は、決定手段の一例である。アバタ骨格遷移決定部604は、時系列違和感判定部603において判定された時系列違和感判定値に基づき、時刻t1+1のセンサデータに基づいて算出されたアバタ骨格の位置及び回転角度を、アバタ骨格モデルに反映させるか否かを決定する。
全てのアバタ骨格について違和感が出ないことを示す違和感判定値であった場合、アバタ骨格遷移決定部604では、時刻t1+1のセンサデータに基づく全てのアバタ骨格を、アバタ骨格モデルに反映させることを決定する。
一方、一部のアバタ骨格について違和感が出ることを示す時系列違和感判定値であった場合、アバタ骨格遷移決定部604では、時刻t1+1のセンサデータに基づくアバタ骨格のうち当該一部のアバタ骨格を、アバタ骨格モデルに反映させないことを決定する。この場合、アバタ骨格遷移決定部604は、時刻t1と時刻t1+1との間の一部のアバタ骨格の遷移を、違和感を与えない範囲で決定する。
アバタ骨格モデル管理部605は、出力手段の一例である。アバタ骨格モデル管理部605は、アバタ骨格遷移決定部604による決定結果に基づいて、情報表示処理部112に対して指示を行う。
アバタ骨格遷移決定部604が全てのアバタ骨格について“反映させる”と決定した場合、アバタ骨格モデル管理部605は、情報表示処理部112にて生成された時刻t1+1のアバタの画像を表示するよう指示する。
これにより、情報表示処理部112では、時刻t1+1において時刻t1のアバタの画像に代えて、情報表示処理部112が生成した時刻t1+1のアバタの画像を出力することになる。
一方、アバタ骨格遷移決定部604が一部のアバタ骨格について“反映させない”と決定した場合、アバタ骨格モデル管理部605は、時刻t1+1のアバタ骨格モデルを生成する。また、アバタ骨格モデル管理部605は、情報表示処理部112に対して、生成した時刻t1+1のアバタ骨格モデルの画像(アバタの画像)を送信し、当該画像を表示するよう指示する。
なお、アバタ骨格モデル管理部605は、以下の手順で、時刻t1+1のアバタ骨格モデルを生成して、時刻t1+1のアバタの画像を表示するよう指示する。
・アバタ骨格に含まれる複数のアバタ骨格のうち、アバタ骨格遷移決定部604が“反映させる”と決定したアバタ骨格については、時刻t1+1のセンサデータに基づいて算出されたアバタ骨格の位置及び回転角度を、アバタ骨格モデルに反映させる。
・アバタ骨格に含まれる複数のアバタ骨格のうち、アバタ骨格遷移決定部604が“反映させない”と決定したアバタ骨格については、違和感を与えない範囲で遷移するアバタ骨格の位置及び回転角度を、アバタ骨格モデルに反映させる。
これにより、情報表示処理部112では、時刻t1+1において時刻t1のアバタの画像に代えて、アバタ骨格モデル管理部605にて生成された時刻t1+1のアバタの画像を出力することになる。
更に、アバタ骨格モデル管理部605は、上記手順で生成したアバタ骨格モデルを、ログ用DB119のアバタ骨格ログテーブル(詳細は後述)に記録する。
なお、上記説明では、アバタ骨格遷移決定部604が“反映させない”と決定したアバタ骨格については、アバタ骨格モデル管理部605が、違和感を与えない範囲で遷移するアバタ骨格を、アバタ骨格モデルに反映させるものとした。しかしながら、“反映させない”と決定したアバタ骨格について、アバタ骨格モデル管理部605が、時刻t1で反映されたアバタ骨格を時刻t1+1でも継続してアバタ骨格モデルに反映させるようにしてもよい。
<センサデータ用DBに格納されるセンサデータ>
次に、センサデータ用DB117に格納されるセンサデータについて説明する。図7は、センサデータ用DBに格納されるセンサデータの一例を示す図である。
このうち、図7(a)は、筋電位データが格納される筋電位データ群700を示している。図7(a)に示すように、筋電位データが格納される筋電位データ群700は、情報の項目として、“DB記録時刻”、“センサ記録時刻”、“ユーザID”、“情報収集装置ID”、“筋電位活動値”を含む。
“DB記録時刻”には、クライアント側システム120、130から送信された筋電位データが、センサデータ用DB117に格納された時点で付加されるタイムスタンプが記録される。
“センサ記録時刻”には、筋電位センサ126、136がユーザ140、150をセンシングした時点で付加されたタイムスタンプが記録される。
“ユーザID”には、筋電位センサ126、136によりセンシングされたユーザ140、150を識別する識別子が記録される。
“情報収集装置ID”には、筋電位センサを識別する識別子が記録される。筋電位センサは、センシングする場所によって異なる識別子を有している。図7(a)のデータ行のうちの1行目の“TcA_c3_zygomaticus(cheek)”は、頬をセンシングする筋電位センサの識別子である。また、図7(a)のデータ行のうちの2行目の“TcA_c3_orbicularis(under eye)”は、目の下をセンシングする筋電位センサの識別子である。更に、図7(a)のデータ行のうちの3行目の“TcA_c3_corrugator(blow)”は、眉をセンシングする筋電位センサの識別子である。
“筋電位活動値”には、それぞれの筋電位センサでセンシングされた筋電位データの値が記録される。
図7(b)は、頭部姿勢データが格納される頭部姿勢データ群710を示している。図7(b)に示すように、頭部姿勢データ群710に含まれる情報の項目は、筋電位データ群700に含まれる情報の項目と概ね同じである。
なお、頭部姿勢データ群710の“情報収集装置ID”において、“TcA_c1”とは、情報処理装置IDが“TcA”の情報処理装置に、情報収集装置の種類が“c1”である情報収集装置が対応付けられていることを示している。具体的には、“TcA_c1”は、情報処理装置121と対応付けられた頭部姿勢センサ124である。
また、“頭部姿勢データ”には、頭部の位置を示すデータと、頭部の回転角度を示すデータとが記録される。
図7(c)は、深度センサデータが格納される深度センサデータファイル群720を示している。図7(c)に示すように、深度センサデータファイル群720に含まれる情報の項目には、“DB記録時刻”、“ユーザID”、“情報収集装置ID”の他、“センサ記録開始時刻”、“センサ記録終了時刻”、“深度センサデータ記録ファイルURI”が含まれる。
“センサ記録開始時刻”には、深度センサ125、135によりセンシングが開始された時刻が記録される。深度センサ125、135の場合、所定の記録長のファイルとしてセンサデータを出力する。“センサ記録開始時刻”には、それぞれのファイルに含まれる最初の深度センサデータをセンシングした時点で付加されたタイムスタンプが記録される。
“センサ記録終了時刻”には、深度センサ125、135によりセンシングが終了した時刻が記録される。具体的には、所定の記録長のファイルに含まれる最後の深度センサデータをセンシングした時点で付加されたタイムスタンプが記録される。
“深度センサデータ記録ファイルURI”には、所定の記録長を有するファイルの格納場所を示すURIが記録される。
なお、深度センサデータファイル群720の“情報収集装置ID”において、“TcA_c2”とは、情報処理装置IDが“TcA”の情報処理装置に、情報収集装置の種類が“c2”である情報収集装置が対応付けられていることを示している。具体的には、“TcA_c2”は、情報処理装置121と対応付けられた深度センサ125である。
<定義情報用DBに格納される遷移区間定義情報>
次に、定義情報用DB118に格納される「遷移区間定義情報」について説明する。図8は、定義情報用DBに格納される遷移区間定義情報の一例を示す図である。
図8(a)に示すように、遷移区間定義情報800は情報の項目として、“アバタ骨格ラベル”、“違和感の出る遷移区間定義”を含む。
“アバタ骨格ラベル”には、アバタ骨格モデル候補に含まれる複数のアバタ骨格のうちの、いずれのアバタ骨格であるかを示す情報が格納される。
“違和感の出る遷移区間定義”には、各アバタ骨格の各軸に対する回転について、違和感が出るか否かを判定する対象となる遷移区間を示す情報が格納される。
“違和感の出る遷移区間定義”は、仮想空間におけるX軸、Y軸、Z軸の各軸に対してそれぞれ規定されている。図8(a)のデータ行のうちの1行目の例は、アバタ骨格ラベル=“Bone_RightHand”(アバタの右手の骨格)の場合、X軸に対して回転角度が40[度]より大きく220[度]より小さい範囲で遷移すると、違和感が出ることを示している。
図8(b)に、アバタ骨格ラベル=“Bone_RightHand”の場合の、違和感の出る遷移区間定義と、アバタ骨格の回転角度の遷移との関係を示す。図8(b)は、時刻t1で0[度]であったアバタ骨格の回転角度が、時刻t1+1ではX軸に対して90[度]まで回転した場合を示している。
この場合、時刻t1(0[度])と時刻t1+1(90[度])の間のアバタ骨格の回転角度の遷移のうち、前方方向への遷移が「最短の遷移」となる。一方、後方方向への遷移が「最短でない遷移」となる。
また、遷移区間定義情報800によれば、違和感の出る遷移区間定義が“40<X<220”と規定されていることから、0[度]から40[度]までの前方方向の範囲が、遷移区間定義に「抵触せずに遷移させることができる範囲(+方向)」となる。また、0[度]から220[度]までの後方方向の範囲が、遷移区間定義に「抵触せずに遷移させることができる範囲(−方向)」となる。
なお、遷移区間定義情報800における上記定義は、例えば、画像生成装置110の管理者によって、一括で静的に作成されるものとする。あるいは、上記定義は、シチュエーションによって異なることも加味して、時間帯や場所、状況、ユーザやユーザグループの特性、コミュニケーションの内容等の過去の履歴データに基づいて作成されてもよい。あるいは、上記定義は、時間的に近い履歴データ等から動的に作成されてもよい。
<アバタ骨格モデル更新処理>
次に、制約部115によるアバタ骨格モデル更新処理の流れについて説明する。図9は、アバタ骨格モデル更新処理の第1のフローチャートである。図9に示すフローチャートは、所定の時間ごとに制約部115により定期的に実行される。あるいは、センサデータ用DB117に一定量以上のセンサデータが格納されたタイミングで制約部115により実行される。
ステップS901において、センサデータ処理部601は、センサデータ用DB117より時刻t1+1のセンサデータを読み出す。
ステップS902において、アバタ骨格モデル候補生成部602は、読み出されたセンサデータに基づいて時刻t1+1のアバタ骨格モデル候補を生成する。
ステップS903において、アバタ骨格モデル候補生成部602は、時刻t1+1のアバタ骨格モデル候補の全アバタ骨格でセンシング結果に誤りがないかを判定する。
ステップS903において、時刻t1+1のアバタ骨格モデル候補のいずれかのアバタ骨格において、センシング結果に誤りがあると判定した場合には、判定結果が情報表示処理部112に送信された後、アバタ骨格モデル更新処理を終了する。
この場合、情報表示処理部112では、例えば、センシング結果に誤りがあったことがわかるような態様で、アバタの画像を生成して表示する。
一方、ステップS903において、時刻t1+1のアバタ骨格モデル候補の全アバタ骨格について、センシング結果に誤りがないと判定した場合には、ステップS904に進む。
ステップS904において、時系列違和感判定部603は、各アバタ骨格について、時刻t1と時刻t1+1の間の遷移のうち、最短の遷移が違和感の出る遷移区間定義に抵触するか否かを判定する。
具体的には、時系列違和感判定部603は、遷移区間定義情報800を参照する。そして、時系列違和感判定部603は、各アバタ骨格について、時刻t1と時刻t1+1の間の最短の遷移が、違和感の出る遷移区間定義に抵触するか否かを判定する。なお、時系列違和感判定部603は、X軸、Y軸、Z軸のそれぞれについて判定を行う。
ステップS905において、時系列違和感判定部603は、違和感の出る遷移区間定義に抵触する軸について、ログ用DB119の判定値ログテーブル(詳細は後述)に、時系列違和感判定値=“高”と記録する。また、時系列違和感判定部603は、違和感の出る遷移区間定義に抵触しない軸について、ログ用DB119の判定値ログテーブルに、時系列違和感判定値=“低”と記録する。
ステップS906において、時系列違和感判定部603は、“高”と記録したアバタ骨格について、時刻t1と時刻t1+1の間で、最短でない遷移により、違和感の出る遷移区間定義に抵触せずに遷移させることができるか否かを判定する。
最短でない遷移により、違和感の出る遷移区間定義に抵触せずに遷移させることができると判定した場合、時系列違和感判定部603は、ステップS905において記録した時系列違和感判定値を書き換える。具体的には、時系列違和感判定部603は、時系列違和感判定値を“高”から“中”へと書き換える。また、時系列違和感判定部603は、違和感の出る遷移区間定義に抵触せずに遷移させることができる遷移方向(+方向または−方向)を、「遷移可能な相対変分」として、ログ用DB119の判定値ログテーブルに記録する。なお、相対変分に記録される“+”は、X軸に対する回転の場合、前方であることを表し、“−”は後方であることを表す。また、Y軸に対する回転の場合、“+”は右方向であることを表し、“−”は左方向であることを表す。更に、Z軸に対する回転の場合、“+”は左方向であることを表し、“−”は右方向であることを表す。
一方、最短でない遷移であっても違和感の出る遷移区間定義に抵触せずに遷移させることができないと判定した場合、時系列違和感判定部603は、当該アバタ骨格について、ステップS907の処理を行う。
ステップS907において、時系列違和感判定部603は、ステップS906において書き換えが行われなかったアバタ骨格について、違和感の出る遷移区間定義に抵触せずに遷移させることができる範囲を、ログ用DB119の判定値ログテーブルに記録する。
ここで、アバタの左手の骨格を例に挙げて、ステップS907の処理について説明する。アバタの左手の骨格の場合、X軸に対する回転において、回転角度が0[度]から90[度]への+方向(前方)の遷移のうち、0[度]から40[度]までの遷移は、違和感の出る遷移区間定義(X軸に対する回転)に抵触しない。このため、0[度]から40[度]までの範囲が、違和感の出る遷移区間定義に接触せずに遷移させることができる範囲として、判定値ログテーブルに記録される。また、0[度](360[度])から90[度]への−方向(後方)の遷移のうち、0[度](360[度])から220[度]までの遷移についても、違和感の出る遷移区間定義(X軸に対する回転)に抵触しない。
このため、0[度]から220[度]までの範囲についても、違和感の出る遷移区間定義に抵触せずに遷移させることができる範囲として、判定値ログテーブルに記録されることになる。
なお、抵触せずに遷移させることができる範囲のうち、いずれの範囲を“遷移可能な相対変分”に記録するのかは任意である。例えば、最短の遷移と同じ遷移方向を有する方を、遷移可能な相対変分として選択してもよい。あるいは、時刻t1+1のアバタ骨格の回転角度に最も近づくことができる方を、遷移可能な相対変分として選択してもよい。あるいは、抵触せずに遷移させることができる範囲のうち、範囲が広い方を、遷移可能な相対変分として選択してもよい。
図9の説明に戻る。ステップS908において、アバタ骨格遷移決定部604は、時系列違和感判定部603により判定された時系列違和感判定値に基づき、時刻t1と時刻t1+1の間の各アバタ骨格の遷移を決定する。
アバタ骨格遷移決定部604は、時系列違和感判定値が“低”と判定されたアバタ骨格については、ステップS902においてアバタ骨格モデル候補が生成された際に算出されたアバタ骨格の遷移を、時刻t1と時刻t1+1の間のアバタ骨格の遷移に決定する。
一方、アバタ骨格遷移決定部604は、時系列違和感判定部603により時系列違和感判定値が“中”または“高”と判定されたアバタ骨格については、“低”と判定されたアバタ骨格とは異なる遷移に決定する。
具体的には、アバタ骨格遷移決定部604では、時系列違和感判定値が“中”または“高”と判定されたアバタ骨格が、時刻t1とt1+1の間で違和感を与えない範囲で遷移するように当該アバタ骨格の遷移を決定する。
例えば、アバタ骨格遷移決定部604は、時系列違和感判定部603により時系列違和感判定値が“中”と判定されたアバタ骨格の遷移を、最短ではない遷移の半分に決定する。
また、アバタ骨格遷移決定部604は、時系列違和感判定部603により時系列違和感判定値が“高”と判定されたアバタ骨格の遷移を、判定値ログテーブルに記録した“遷移可能な相対変分”の半分に決定する。
このように、アバタ骨格遷移決定部604が、時系列違和感判定値に応じた各アバタ骨格の遷移を決定することで、各アバタ骨格を違和感を与えない範囲で遷移させることができるため、アバタ骨格の突飛な遷移を避けることが可能となる。また、ユーザ140が同じような傾向の動きを連続していた場合、ユーザ140の動きと類する動きをアバタ骨格モデルに反映させることができる。
ステップS909において、アバタ骨格モデル管理部605は、ステップS908における決定結果に基づいて、情報表示処理部112に対して指示を行う。
具体的には、アバタ骨格モデル管理部605は、アバタ骨格モデル候補に含まれる全てのアバタ骨格の時系列違和感判定値が“低”の場合、情報表示処理部112にて生成した時刻t1+1のアバタの画像を表示するよう、情報表示処理部112に対して指示する。
一方、一部のアバタ骨格の時系列違和感判定値が“高”または“中”の場合、アバタ骨格モデル管理部605は、ステップS908において決定されたアバタ骨格の遷移を反映したアバタ骨格モデルを生成し、当該アバタ骨格モデルを表示するよう指示する。
また、アバタ骨格モデル管理部605は、生成したアバタ骨格モデルを、ログ用DB119のアバタ骨格ログテーブル(詳細は後述)に記録する。
<ログ用DBに記録される情報>
次に、アバタ骨格モデル更新処理が実行されることで、ログ用DB119に記録される情報(判定値ログテーブル、アバタ骨格ログテーブル)について説明する。
図10は、判定値ログテーブルの一例を示す図である。図10に示すように、判定値ログテーブル1000は、情報の項目として、“DB記録時刻”、“ユーザの現在時刻”、“ユーザID”、“情報処理装置ID”、“アバタ骨格ラベル”、“時系列違和感判定値”、“遷移可能な相対変分”を含む。
“DB記録時刻”には、時系列違和感判定部603により判定された時系列違和感判定値が、ログ用DB119の判定値ログテーブル1000に記録された時点で付加されたタイムスタンプが記録される。
“ユーザの現在時刻”には、アバタ骨格モデル候補生成部602がアバタ骨格モデル候補を生成した際に用いたセンサデータに付加されたタイムスタンプ(ユーザが非言語行動を行った時刻)が記録される。
“ユーザID”には、ユーザを識別する識別子が記録される。“情報処理装置ID”には、情報処理装置のIDが記録される。
“アバタ骨格ラベル”には、時系列違和感判定部603により時系列違和感判定値が判定されたアバタ骨格を示すラベルが記録される。“Bone_LeftHand”とは、アバタの左手の骨格を示すラベルである。また、“Bone_LeftForearm”とは、アバタの左前腕の骨格を示すラベルである。
“時系列違和感判定値”には、時系列違和感判定部603により判定された時系列違和感判定値が記録される。図10のデータ行のうちの1行目の例は、アバタの左手の骨格のうち、X軸に対する時系列違和感判定値が“高”であり、Y軸及びZ軸に対する時系列違和感判定値が“低”であることを示している。同様に、図10のデータ行のうちの2行目の例は、アバタの左前腕の骨格のうち、X軸に対する時系列違和感判定値が“中”であり、Y軸及びZ軸に対する時系列違和感判定値が、“低”であることを示している。
“遷移可能な相対変分”には、“時系列違和感判定値”において、“高”と記録された軸に対して、違和感の出る遷移区間定義に抵触せずに遷移させることができる範囲が記録される。
図10のデータ行のうちの1行目の例は、アバタの左手の骨格が時刻t1ではX軸に対する回転角度が0[度]であったが、時刻t1+1ではX軸に対する回転角度が90[度]になったと算出された場合の遷移可能な相対変分を示している。上述したように、アバタの左手の骨格の場合、“違和感の出る遷移区間定義(X軸に対する回転)”として、“40<X<220”が定義されている。このため、0[度]から90[度]への+方向(前方)の遷移のうち、0[度]から40[度]までの遷移は、“違和感の出る遷移区間定義(X軸に対する回転)”に抵触しない。また、0[度](360[度])から90[度]への−方向(後方)の遷移のうち、0[度](360[度])から220[度]までの遷移は、“違和感の出る遷移区間定義(X軸に対する回転)”に抵触しない。
このうち、図10のデータ行のうちの1行目の例は、0[度]から40[度]までの遷移を、違和感の出る遷移区間定義に抵触せずに遷移させることができる範囲として記録したことを示している。このため、“遷移可能な相対変分”には、時刻t1と時刻t1+1の間のアバタの左手の骨格のX軸に対する回転角度である“+40”が、遷移可能な相対変分として記録されている。
なお、アバタの左手の骨格の場合、Y軸及びZ軸については、時系列違和感判定値が“低”であるため、“遷移可能な相対変分”のY軸及びZ軸には、何も記録されていない。
また、アバタの左前腕の骨格の場合、X軸に対する時系列違和感判定値が“中”に書き換えられているため、“遷移可能な相対変分”のX軸には、違和感の出る遷移区間定義に抵触せずに遷移させることができる遷移方向が記録されている。具体的には、“+”(前方)が記録されている。更に、アバタの左前腕の骨格の場合、Y軸に対する時系列違和感判定値及びZ軸に対する時系列違和感判定値が“低”であるため、“遷移可能な相対変分”のY軸及びZ軸には、何も記録されていない。
図11は、アバタ骨格ログテーブルの一例を示す図である。図11に示すように、アバタ骨格ログテーブル1100は、情報の項目として、“DB記録時刻”、“ユーザの現在時刻”、“ユーザID”、“情報処理装置ID”、“遷移量”、“表示アバタ骨格モデル”を含む。
“DB記録時刻”には、アバタ骨格モデル管理部605が、時刻t1+1のアバタ画像の表示に用いたアバタ骨格モデルについて、アバタ骨格ログテーブル1100に記録した時点で付加されたタイムスタンプが記録される。
“ユーザの現在時刻”には、アバタ骨格モデル候補生成部602がアバタ骨格モデル候補を生成した際に用いたセンサデータに付加されたタイムスタンプ(ユーザが非言語行動を行った時刻)が記録される。
“ユーザID”には、ユーザを識別する識別子が記録される。“情報処理装置ID”には、情報処理装置のIDが記録される。
“遷移量”には、アバタ骨格モデル候補の各アバタ骨格について、時刻t1と、時刻t1+1の間の遷移量が記録される。
“表示アバタ骨格モデル”には、アバタ画像の表示に用いられたアバタ骨格モデルが記録される。
なお、第1の実施形態において、センサデータとは異なる遷移のアバタ骨格を含むアバタ骨格モデルを用いてアバタ画像を表示する場合、実空間におけるユーザ140の動きと仮想空間におけるアバタ骨格の遷移とが一致しないことになる。このため、ユーザ140に対しては、センサデータを反映させたアバタの画像(アバタ_Local)を表示するようにしてもよい。この場合、ユーザ140に対して表示するアバタの画像(アバタ_Local)については、ユーザ150に対して表示するアバタの画像220(アバタ_Network)とは異なる表示態様で表示するようにしてもよい。
例えば、アバタ_Localは、センサデータが反映されていることをユーザ140に知らせる表示態様とする。具体的には、アバタ_Localについては、アバタ骨格モデルに基づくアバタ画像ではなく、点群の塊を含む影のようなアバタ画像を表示するようにしてもよい。また、アバタ全体ではなく、アバタの身体を部分的に表示するようにしてもよい。一方、アバタ_Networkには、アバタ骨格モデルに基づくアバタ画像を表示する。ただし、ユーザ140に対しては、アバタ_Localとアバタ_Networkの両方を表示するようにしてもよい。なお、以下の説明において、ユーザ140、150に表示するアバタの画像は、いずれもアバタ_Networkであるとする。
以上の説明から明らかなように、第1の実施形態における画像生成システム100は、アバタ骨格ごとに違和感の出る遷移区間を予め定義する。また、第1の実施形態における画像生成システム100は、時刻t1と時刻t1+1の間のアバタ骨格の遷移が、違和感の出る遷移区間に抵触するか否かを判定する。また、第1の実施形態における画像生成システム100は、違和感の出る遷移区間に抵触しないと判定した場合には、時刻t1+1においてユーザの非言語行動を反映させてアバタ画像を生成する。一方、第1の実施形態における画像生成システム100は、違和感の出る遷移区間に抵触すると判定した場合には、時刻t1+1においてユーザの非言語行動をそのまま反映させることはせず、違和感を与えない範囲で反映させてアバタ画像を生成する。
これにより、アバタを見ている相手に違和感を与えるような画像が生成されることを回避することができる。つまり、アバタを見ている相手に違和感を与えない画像を生成することができる。
[第2の実施形態]
上記第1の実施形態における画像生成システム100は、時刻t1と時刻t1+1の間のアバタ骨格の遷移が、違和感の出る遷移区間定義に抵触するか否かを判定することで、アバタを見ている相手に違和感を与える画像が生成されることを回避した。
これに対して、第2の実施形態では、時刻t1と時刻t1+1との間で社会的振る舞いの傾向が変化するか否かを判定することで、アバタを見ている相手に違和感を与える画像が生成されることを回避する。
なお、社会的振る舞い(Social Behavior)とは、実空間における所定の人の非言語行動のうち、社会的な存在に対して行われる非言語行動を指す。
例えば、所定の人の非言語行動が、前進する非言語行動であったとした時に、前進した先に他の人がいる場合には、当該所定の人の非言語行動は、他の人に近づくという社会的振る舞い(接近傾向を示す社会的振る舞い)ということができる。反対に、他の人が近くにいる状態で、前進する非言語行動を行った結果、当該他の人から遠ざかる場合には、当該所定の人の非言語行動は、他の人から遠ざかる社会的振る舞い(回避傾向を示す社会的振る舞い)ということができる。同様に、例えば、所定の人の非言語行動が、頭の向きを右方向に向ける非言語行動であったとした時に、右側に他の人がいる場合には、当該所定の人の非言語行動は、他の人に顔を向ける社会的振る舞い(接近傾向を示す社会的振る舞い)ということができる。反対に、当該所定の人の左側に他の人がいる状態で、頭の向きを右方向に向ける非言語行動を行った場合、当該所定の人の非言語行動は、他の人から顔をそむける社会的振る舞い(回避傾向を示す社会的振る舞い)ということができる。
したがって、仮想空間における「アバタ骨格の遷移」は、他のアバタとの関係によっては反対の意味を持つことになる。以下、ユーザの社会的振る舞いの傾向が変化するか否かを判定することで、違和感を与える画像が表示されることを回避する第2の実施形態について、上記第1の実施形態との相違点を中心に説明する。
<画像生成装置の制約部の機能構成>
はじめに、第2の実施形態における画像生成装置の制約部の機能構成について説明する。図12は、画像生成装置の制約部の機能構成を説明するための第2の図である。図12(a)に示す要素のうち、図6(a)に示す要素と同様の機能を有する要素については、同じ符号を付すこととし、ここでは説明を省略する。
図6(a)との相違点は、図12(a)の場合、制約部115が、社会的振る舞い管理部1201、アバタ骨格モデル候補生成部(社会的振る舞い)1202、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203を有する点である。
図12(b)に示すように、社会的振る舞い管理部1201は、センサデータ用DB117より読み出された所定の時間範囲のセンサデータに基づいて、社会的振る舞いを判定し、社会的振る舞い判定結果をログ用DB119に格納する。
社会的振る舞い管理部1201は、定義情報用DB118の社会的振る舞い判定API定義情報(以下、「API定義情報」と称す。詳細は後述)より既存のAPIを呼び出すことで、社会的振る舞いの判定を行う。
社会的振る舞い管理部1201は、所定の時間範囲の1つのセンサデータから1つの社会的振る舞いを判定してもよいし、所定の時間範囲の複数のセンサデータから1つの社会的振る舞いを判定してもよい。また、社会的振る舞い管理部1201は、新しく取得した所定の時間範囲のセンサデータから社会的振る舞いを判定してもよい。あるいは、過去に記録した所定の時間範囲のセンサデータと新しく取得した所定の時間範囲のセンサデータとを用いて社会的振る舞いを判定してもよい。
アバタ骨格モデル候補生成部(社会的振る舞い)1202は、ログ用DB119に格納された社会的振る舞い判定結果を読み出す。
アバタ骨格モデル候補生成部(社会的振る舞い)1202は、読み出した社会的振る舞いの判定結果に基づいて、アバタ骨格モデル候補を生成する。具体的には、アバタ骨格モデル候補生成部(社会的振る舞い)1202は、社会的振る舞いの判定に用いられた時間範囲を確認する。また、アバタ骨格モデル候補生成部(社会的振る舞い)1202は、確認した時間範囲においてセンシングされたセンサデータに基づいて、アバタ骨格モデル候補を生成する。
第2の実施形態では、このとき生成されるアバタ骨格モデル候補のうち、社会的振る舞いが開始する時点のアバタ骨格モデル候補を、時刻t1のセンサデータに基づいて生成されたアバタ骨格モデル候補とする。また、社会的振る舞いが完了した時点のアバタ骨格モデル候補を、時刻t1+1のセンサデータに基づいて生成されたアバタ骨格モデル候補とする。
アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、時系列違和感判定部603において判定された時系列違和感判定値に基づき、時刻t1と時刻t1+1の間の各アバタ骨格の遷移を決定する。
全てのアバタ骨格について違和感が出ないことを示す違和感判定値であった場合、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203では、時刻t1+1の全てのアバタ骨格を、アバタ骨格モデルに反映させることを決定する。
一方、一部のアバタ骨格について違和感が出ることを示す時系列違和感判定値であった場合、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203では、時刻t1+1の一部のアバタ骨格を、アバタ骨格モデルに反映させないことを決定する。この場合、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、時刻t1と時刻t1+1との間のアバタ骨格の遷移を、違和感を与えない範囲で決定する。ただし、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、定義情報用DB118に格納された傾向定義情報(詳細は後述)を参照し、社会的振る舞いの傾向が変化しない範囲で、時刻t1+1の各アバタ骨格の遷移を決定する。
<定義情報用DBに格納される定義情報>
次に、第2の実施形態において定義情報用DB118に格納される定義情報のうち、「API定義情報」と、「傾向定義情報」とについて説明する。遷移区間定義情報800については、上記第1の実施形態において説明済みであるため、ここでは説明を省略する。
図13は、定義情報用DBに格納されるAPI定義情報の一例を示す図である。図13に示すように、API定義情報1300は情報の項目として、“情報収集装置ID”、“社会的振る舞い判定API”、“センサデータ”、“社会的振る舞いタイプラベル”、“API入力として必要なアバタ骨格”を含む。
“情報収集装置ID”には、情報収集装置の種類を示す識別子が格納される。“社会的振る舞い判定API”には、社会的振る舞いを判定する際に用いるAPIが格納される。
“センサデータ”には、社会的振る舞い判定APIに入力されるセンサデータの種類が格納される。
“社会的振る舞いタイプラベル”には、社会的振る舞い判定APIにより判定される社会的振る舞いの種類が格納される。“API入力として必要なアバタ骨格”には、社会的振る舞い判定APIを用いて社会的振る舞いを判定するにあたり、当該APIに入力すべきアバタ骨格が格納される。
図13のデータ行のうちの1行目の例は、情報収集装置ID=“c2”により特定される深度センサ125によりセンシングされる深度データが、“姿勢解析API”に入力されることを示している。また、図13のデータ行のうちの1行目の例は、ユーザ140の社会的振る舞いが、“body‐close‐to”に該当するか否かが判定されることを示している。更に、図13のデータ行のうちの1行目の例は、時系列違和感判定値の判定に際して、アバタ骨格遷移候補の社会的振る舞いを判定する場合に、アバタ骨格=“Body‐Chest”が用いられることを示している。
また、図13のデータ行のうちの2行目の例は、情報収集装置ID=“c2”により特定される深度センサ125によりセンシングされる深度データが、“姿勢解析API”に入力されることを示している。また、図13のデータ行のうちの2行目の例は、ユーザ140の社会的振る舞いが、“body‐far‐to”に該当するか否かが判定されることを示している。更に、図13のデータ行のうちの2行目の例は、時系列違和感判定値の判定に際して、アバタ骨格候補の社会的振る舞いを判定する場合に、アバタ骨格=“Bone_Chest”が用いられることを示している。
また、図13のデータ行のうちの3行目の例は、情報収集装置ID=“c1”により特定される頭部姿勢センサ124によりセンシングされる頭部姿勢データが、“顔向き解析API”に入力されることを示している。また、図13のデータ行のうちの3行目の例は、ユーザ140の社会的振る舞いが、“face‐close‐to”に該当するか否かが判定されることを示している。更に、図13のデータ行のうちの3行目の例は、時系列違和感判定値の判定に際して、アバタ骨格候補の社会的振る舞いを判定する場合に、アバタ骨格=“Bone_Head”が用いられることを示している。
更に、図13のデータ行のうちの4行目の例は、情報収集装置ID=“c2”により特定される深度センサ125によりセンシングされる深度データが、“姿勢解析API”に入力されることを示している。また、図13のデータ行のうちの4行目の例は、ユーザ140の社会的振る舞いが、“bodyparts‐close‐to”に該当するか否かが判定されることを示している。更に、図13のデータ行のうちの4行目の例は、時系列違和感判定値の判定に際して、アバタ骨格候補の社会的振る舞いを判定する場合に、アバタ骨格=“Bone_LeftHand”及び“Bone_RightHand”が用いられることを示している。
図14は、定義情報用DBに格納された傾向定義情報の一例を示す図である。図14に示すように、傾向定義情報1400は、情報の項目として、“社会的振る舞いのタイプラベル”、“接近傾向/回避傾向”、“優先順位”を含む。
“社会的振る舞いのタイプラベル”には、社会的振る舞いの種類が格納される。“接近傾向/回避傾向”には、社会的振る舞いの種類ごとに、接近傾向または回避傾向のいずれかが格納される。“優先順位”には、社会的振る舞いに対する動きの種類について割り当てた優先順位が格納される。なお、傾向定義情報1400の“社会的振る舞いのタイプラベル”に格納されるレコードは、以下のような動作を意味する。
例えば、“body‐close‐to”は、身体を相手に近づける動作を意味し、“body‐far‐to”は、身体を相手から遠ざける動作を意味する。“bodyparts‐close‐to”は、身体のパーツを相手に近づける動作を意味し、“bodyparts‐far‐to”は、身体のパーツを相手から遠ざける動作を意味する。
また、“mutualattention‐to”は、お互いを見る動作を意味し、“avertedattention‐to”は、相手から視線を外す動作を意味する。“jointattention‐to”は、相手と同じものを見る動作を意味し、“followingattention‐to”は、相手の見ているものを追いかけて見る動作を意味する。“sharedattention‐to”は、相手と同じものを見ているとお互い知りながら見る動作を意味する。
また、“face‐close‐to”は、顔を相手に近づける動作を意味し、“face‐far‐to”は、顔を相手から遠ざける動作を意味する。“upperbody‐leanforward‐to”は、身体を前傾する動作を意味し、“upperbody‐leanbackward‐to”は、身体を後倒する動作を意味する。
更に、“smile‐to”は、微笑む動作を意味し、“nosmile‐to”は、微笑まない動作を意味する。
その他、図14の傾向定義情報1400に例示した動作以外の動作も、接近傾向の振る舞いまたは回避傾向の振る舞いとして、傾向定義情報1400に格納されてもよい。例えば、接近傾向の振る舞いとして、顔を相手側に向ける動作や、身体を相手側に向ける動作が挙げられる。また、回避傾向の振る舞いとして、顔を相手から背ける動作や、身体を相手から背ける動作が挙げられる。
<アバタ骨格モデル更新処理>
次に、制約部115によるアバタ骨格モデル更新処理の流れについて説明する。図15及び図16は、アバタ骨格モデル更新処理の第2及び第3のフローチャートである。図9に示した第1のフローチャートとの相違点は、図15のステップS1501〜S1503が実行される点である。また、図9のステップS908の処理の代わりに、図16のステップS1601〜S1608が実行される点である。
図15のステップS1501において、センサデータ処理部601は、センサデータ用DB117より所定の時間範囲のセンサデータを読み出す。
ステップS1502において、社会的振る舞い管理部1201は、ステップS1501において読み出された所定の時間範囲のセンサデータに基づいて、社会的振る舞いを判定し、社会的振る舞い判定結果をログ用DB119に格納する。
ステップS1503において、アバタ骨格モデル候補生成部(社会的振る舞い)1202は、社会的振る舞いの判定に用いられた時間範囲においてセンシングされたセンサデータに基づいて、時刻t1及び時刻t1+1のアバタ骨格モデル候補を生成する。
図16のステップS1601において、社会的振る舞い管理部1201は、図15のステップS904〜S907の処理が行われた各アバタ骨格について、それぞれ時系列違和感判定値を確認する。ステップS1601において、時系列違和感判定値が“低”であると判定したアバタ骨格については、ステップS1602においてアバタ骨格の遷移を決定する。具体的には、ステップS1602において、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、ステップS1503においてアバタ骨格モデル候補が生成された際に算出されたアバタ骨格の遷移を、時刻t1+1のアバタ骨格の遷移に決定する。
一方、ステップS1601において、時系列違和感判定値が“中”であると判定したアバタ骨格については、ステップS1603〜ステップS1605においてアバタ骨格の遷移を決定する。具体的には、ステップS1603において、社会的振る舞い管理部1201が、時刻t1と時刻t1+1の間の最短でない遷移を判定の対象とする。
また、ステップS1604において、社会的振る舞い管理部1201が、ステップS1603において判定の対象とした最短でない遷移の社会的振る舞いが、接近傾向か回避傾向かを判定する。
更に、ステップS1605において、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203が、ステップS1604において判定された傾向が、時刻t1において判定した社会的振る舞いの傾向と同じか否かを判定する。同じであると判定した場合、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、ステップS1603において判定の対象とした遷移(最短でない遷移)をアバタ骨格の遷移に決定する。一方、異なると判定した場合、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、時刻t1+1において当該アバタ骨格の遷移を反映させないことを決定する。
また、ステップS1601において、時系列違和感判定値が“高”であると判定したアバタ骨格については、ステップS1606〜S1608においてアバタ骨格の遷移を決定する。具体的には、ステップS1606において、社会的振る舞い管理部1201が、判定値ログテーブル1000の“遷移可能な相対変分”に記録された相対変分を抽出する。
また、ステップS1607において、社会的振る舞い管理部1201が、ステップS1606において抽出した遷移可能な相対変分に基づく遷移の社会的振る舞いが、接近傾向か回避傾向かを判定する。
更に、ステップS1608において、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203が、ステップS1607において判定された傾向が、時刻t1において判定した社会的振る舞いの傾向と同じか否かを判定する。同じであると判定した場合、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、ステップS1606において抽出された遷移可能な相対変分に基づく遷移をアバタ骨格の遷移に決定する。一方、異なると判定した場合、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、時刻t1+1において当該アバタ骨格の遷移を反映させないことを決定する。
<ログ用DBに記録される情報>
次に、アバタ骨格モデル更新処理が実行されることで、ログ用DB119に記録される情報について説明する。なお、ここでは、第1の実施形態において説明済みのテーブル以外のテーブル(社会的振る舞いログテーブル)について説明する。
図17は、社会的振る舞いログテーブルの一例を示す図である。図17に示すように、社会的振る舞いログテーブル1700は、情報の項目として、“DB記録時刻”、“社会的振る舞い判定時刻(開始)”、“社会的振る舞い判定時刻(終了)”、“ユーザID”を含む。更に、社会的振る舞いログテーブル1700は、情報の項目として、“情報処理装置ID”、“社会的振る舞いのタイプラベル”、“社会的振る舞いの対象”、“社会的振る舞いログデータ”を含む。
“DB記録時刻”には、社会的振る舞いログデータが社会的振る舞いログテーブル1700に記録された時点で付加されたタイムスタンプが格納される。
“社会的振る舞い判定時刻(開始)”、“社会的振る舞い判定時刻(終了)”には、ユーザが社会的振る舞いを開始した時刻と終了した時刻が格納される。具体的には、社会的振る舞いが行われたと判定した際に用いた、所定の時間範囲のセンサデータの最初と最後のセンサデータにそれぞれ付加されたタイムスタンプが記録される。深度データの場合には、社会的振る舞いが行われたと判定した際に用いた深度センサデータファイルに含まれる最初と最後の深度データに付加されたタイムスタンプが記録される。ただし、深度センサデータファイルが長い場合には、社会的振る舞いのログデータの生成に実際に使用した深度データのタイムスタンプに基づいて、社会的振る舞いを開始した時刻と終了した時刻とを正確に特定して記録するようにしてもよい。
なお、社会的振る舞い管理部1201は、時刻t1+1にセンシングされたセンサデータより一定時間kだけ遡った時刻t1+1−kまでの時間範囲(時刻t1+1−k〜t1+1)のセンサデータを用いて、時刻t1+1の社会的振る舞いログデータを生成する。このため、例えば、深度データを用いて社会的振る舞いログデータを生成する場合、社会的振る舞い管理部1201は、センサ記録終了時刻=“2015/7/27 11:01:05.000”(図7(c)参照)より一定時間kだけ遡ったセンサデータを抽出する。そして、社会的振る舞い管理部1201は、当該抽出したセンサデータに基づいて、当該時刻の社会的振る舞いを判定する。
“ユーザID”には、ユーザを識別する識別子が記録される。“情報処理装置ID”には、情報処理装置の識別子が記録される。
“社会的振る舞いのタイプラベル”には、社会的振る舞いの種類を示す情報が記録される。“社会的振る舞いの対象”には、社会的振る舞いの判定対象となったユーザを識別する識別子が格納される。
“社会的振る舞いログデータ”には、判定対象となったユーザの行った社会的振る舞いが記録される。
図17のデータ行のうちの1行目の例は、ユーザ140が、ユーザ150に対して“body‐close‐to”という種類の社会的振る舞いを行ったと判定したことを示している。なお、図17のデータ行のうちの1行目の例では、ユーザ140の行った社会的振る舞いがどのようなアバタ骨格の遷移として表現されるかを同時に記録している。具体的には、ユーザ140のアバタの腰の骨格(Bone_Chest)が、位置を変更せずに、X軸に対して4[度]から10[度]へと、+6[度]回転した動きとして表現されることを記録している。
<実施例1>
第2の実施形態におけるアバタ骨格モデル更新処理の実施例1として、時系列違和感判定値が“中”と判定された場合について説明する。ここでは以下のような状況により、アバタの左手の骨格の時系列違和感判定値が“中”と判定されたとする。
・ユーザ140のアバタの右側にユーザ150のアバタがいる。
・時刻t1+1で、ユーザ140のアバタの左手がユーザ150のアバタの側に伸びる。
・このとき、ユーザ140のアバタの手のひらの向きがユーザ140の正面向きにねじれ、ユーザ150のアバタの方向を向いていないアバタ骨格モデル候補が生成された。
この場合、時刻t1と時刻t1+1の間のアバタの左手の骨格の遷移は、時系列違和感判定部603により、Y軸の時系列違和感判定値が“中”と判定される。このため、社会的振る舞い管理部1201では、最短でない遷移を判定の対象とする。具体的には、社会的振る舞い管理部1201では、アバタ骨格=Bone_LeftHand(アバタの左手の骨格)の最短でない遷移として、((5,25,‐12),(0,0,0))から((10,25,‐12),(0,170,0))への遷移を判定の対象とする。
社会的振る舞い管理部1201は、判定の対象とした最短でない遷移について、社会的振る舞いの判定を行う。ここでは、アバタ骨格=Bone_LeftHand(アバタの左手の骨格)の((0,25,‐12),(4,0,0))から((10,25,‐12),(0,170,0))への遷移について、社会的振る舞いを判定する。
社会的振る舞いの判定には、API定義情報1300に格納された社会的振る舞い判定APIのうち、“Bone_LeftHand”を入力する“姿勢解析API”が用いられる。
1つの社会的振る舞い判定APIは、複数の社会的振る舞いのタイプラベルを出力する。ここでは、アバタの左手の骨格の最短でない遷移について、社会的振る舞いのタイプラベルとして、“bodyparts‐close‐to”が出力されたとする。
社会的振る舞いのタイプラベルが出力されると、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203では、傾向定義情報1400を参照し、“bodyparts‐close‐to”に対応する傾向が“接近傾向”であると判定する。
ここで、時刻t1で判定した社会的振る舞いの傾向が“回避傾向”であったとすると、時刻t1+1で判定した社会的振る舞いの傾向と異なることとなり、アバタの左手の骨格の遷移を反映したアバタ画像は、他のユーザに違和感を与える可能性がある。
そこで、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203では、アバタの左手の骨格の遷移をアバタの画像には反映させず、時刻t1のアバタの左手の骨格を維持する。
<実施例2>
第2の実施形態におけるアバタ骨格モデル更新処理の実施例2として、時系列違和感判定値が“高”と判定された場合について説明する。ここでは以下のような状況により、アバタの左手の骨格の時系列違和感判定値が“高”と判定されたとする。
・ユーザ140のアバタが前方に向かって左手の手のひらを向けた状態から、時刻t1+1で、X軸に対して手首を90[度]折り曲げるアバタ骨格モデル候補が生成された。
・違和感の出る遷移区間定義(X軸)が40<X<220である。
この場合、時刻t1と時刻t1+1の間のアバタの左手の骨格の遷移は、時系列違和感判定部603により、X軸の時系列違和感判定値が“高”と判定される。このため、社会的振る舞い管理部1201では、遷移可能な相対変分を抽出する。このとき抽出される遷移可能な相対変分は、X軸に対して“+40[度]”である。
社会的振る舞い管理部1201は、抽出した遷移可能な相対変分について、社会的振る舞いの判定を行う。例えば、アバタ骨格=“Bone_LeftHand”(アバタの左手の骨格)の((5,25,‐12),(0,0,0))から((5,25,‐12),(40,0,0))への遷移について、社会的振る舞いを判定する。
社会的振る舞いの判定は、時系列違和感判定値が“中”と判定された場合と同様であり、社会的振る舞い判定APIが社会的振る舞いのタイプラベルを出力すると、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、傾向定義情報1400を参照する。
これにより、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、社会的振る舞いのタイプラベルが接近傾向か回避傾向かを判定する。判定の結果、時刻t1で判定した社会的振る舞いの傾向から変化していなければ、アバタ骨格遷移決定部(社会的振る舞いの傾向)1203は、相対変分(“+40[度]”)に基づく遷移を、時刻t1+1におけるアバタの左手の骨格の遷移に決定する。
なお、時系列違和感判定値が“中”であった場合も、“高”であった場合も、実際のアバタ骨格遷移は、遷移可能な相対変分の半分の量とするなど、遷移量を少なくするようにしてもよい。
以上の説明から明らかなように、第2の実施形態における画像生成システム100は、時刻t1と時刻t1+1の間のアバタの骨格の遷移が、違和感の出る遷移区間に抵触すると判定した場合、社会的振る舞いの傾向が変化するか否かを判定する。また、第2の実施形態における画像生成システム100は、社会的振る舞いの傾向が変化すると判定した場合、時刻t1+1においてユーザの非言語行動をアバタ骨格の遷移に反映させない。一方、第2の実施形態における画像生成システム100は、社会的振る舞いの傾向が変化しないと判定した場合には、違和感を与えない範囲で反映させてアバタ画像を生成する。
これにより、アバタ骨格の遷移において、社会的振る舞いの傾向が変化するような遷移が発生することがなくなり、アバタを見ている相手に違和感を与えるような画像が生成されることを回避することができる。つまり、アバタを見ている相手に違和感を与えない画像を生成することができる。
[第3の実施形態]
上記第1の実施形態では、アバタ骨格ごとに違和感の出る遷移区間定義を規定し、時系列違和感判定部は、アバタ骨格ごとに時系列違和感判定値を判定するものとして説明した。しかしながら、アバタ骨格単位では、違和感の出る遷移区間定義に抵触しない場合であっても、実際のコミュニケーションシーンにおけるユーザの動きとしては違和感を与えるケースも考えられる。
例えば、アバタの右手の骨格のX軸に対する回転角度が、時刻t1と時刻t1+1の間に、0[度]から270[度]へと遷移する場合について説明する。これは、ユーザが自身の前方に向かって手のひらを向け、指先をまっすぐ上方に伸ばした状態(0[度])から、自身の体方向に手首を90[度]折り曲げる動きをした場合に相当する。
このようなユーザの動きは、頭を掻く動きや物をつかむ動きとして想定されることから、アバタ骨格単位で、違和感の出る遷移区間定義に規定することはできない。
しかしながら、他のユーザとのコミュニケーションシーンにおいて、例えば、肘を曲げて挙手するような状態から、上記のような動きをした場合には、他のユーザに違和感を与えることになる。
第3の実施形態では、このようなケースにおいても、他のユーザに違和感を与える画像が生成されることがないようにアバタ骨格モデル更新処理を行う。以下、第3の実施形態について、上記第1の実施形態との相違点を中心に説明する。
<画像生成装置の制約部の機能構成>
はじめに、第3の実施形態における画像生成装置の制約部の機能構成について説明する。図18は、画像生成装置の制約部の機能構成を説明するための第3の図である。図6(a)との相違点は、図18(a)の場合、制約部115が、第1の時系列違和感判定部1801と第2の時系列違和感判定部1802とを有している点である。
第1の時系列違和感判定部1801は、時系列違和感判定部603と同様の機能を有する。すなわち、第1の時系列違和感判定部1801は、アバタ骨格モデル候補生成部602により生成されたアバタ骨格モデル候補の各アバタ骨格について、時刻t1と時刻t1+1の間の遷移により、違和感が出るか否かを判定する。第1の時系列違和感判定部1801は、定義情報用DB118に格納された遷移区間定義情報800を参照することで、違和感が出るか否かを判定する。また、第1の時系列違和感判定部1801は、判定結果に基づいて、各アバタ骨格の時系列違和感判定値等を判定値ログテーブル1000に記録する。
第2の時系列違和感判定部1802は、アバタ骨格モデル候補生成部602により生成されたアバタ骨格モデル候補の各アバタ骨格のうち、第1の時系列違和感判定部1801により、時系列違和感判定値が“低”と判定されたアバタ骨格を抽出する。
第2の時系列違和感判定部1802は、時系列違和感判定値が“低”と判定されたアバタ骨格について、定義情報用DB118に格納された、違和感の出る遷移区間組み合わせ条件定義情報(以下、「組み合わせ条件定義情報」と称す。詳細は後述)を参照することで、時系列違和感判定値を書き換えるか否かを判定する。第2の時系列違和感判定部1802は、抽出したアバタ骨格が、組み合わせ条件定義情報に規定された“組み合わせる条件”に合致するか否かを判定することで、時系列違和感判定値を書き換えるか否かを判定する。なお、“組み合わせる条件”とは、アバタ骨格ごとに規定した違和感の出る遷移区間定義と組み合わせることで、違和感が出ると判定される条件である。
このように、第2の時系列違和感判定部1802は、アバタ骨格単位では、違和感の出る遷移区間定義に抵触しない場合であっても、アバタ骨格の遷移としては違和感を与えるような場合には、時系列違和感判定値を書き換える。これにより、アバタを見ている相手に違和感を与える画像が生成される可能性を低減させることができる。
<組み合わせ条件定義情報の説明>
次に、第2の時系列違和感判定部1802により参照される、組み合わせ条件定義情報について説明する。図19は、組み合わせ条件定義情報の一例を示す図である。
図19に示すように、組み合わせ条件定義情報1900は、情報の項目として、“アバタ骨格ラベル”、“違和感の出る遷移区間定義(各軸に対する回転)”、“組み合わせる条件”を含む。
“アバタ骨格ラベル”には、アバタ骨格モデル候補の複数のアバタ骨格のうち、いずれのアバタ骨格であるかを示す情報が格納される。
“違和感の出る遷移区間定義(各軸に対する回転)”には、各アバタ骨格の各軸に対する回転について、違和感が出るか否かを判定する対象となる遷移区間を示す情報が格納される。なお、組み合わせ条件定義情報1900の“違和感の出る遷移区間定義(各軸に対する回転)”に規定される範囲は、遷移区間定義情報800の“違和感の出る遷移区間定義”に規定された範囲とは一致しない。第2の時系列違和感判定部1802は、第1の時系列違和感判定部1801において判定される範囲に当てはまらない範囲について、違和感の有無を判定するためである。
ただし、組み合わせ条件定義情報1900の“違和感の出る遷移区間定義(各軸に対する回転)”に規定される範囲を、遷移区間定義情報800の“違和感の出る遷移区間定義”に規定される範囲と部分的に一致させてもよい。
“組み合わせる条件”には、組み合わせ条件定義情報1900の“違和感の出る遷移区間定義”と組み合わせることで、違和感があると判定される条件が規定される。組み合わせる条件は、システム中の関数化された値であり、以下に詳細に説明する。
<組み合わせる条件>
図20は、組み合わせる条件を説明するための図である。このうち、図20(a)は、“組み合わせる条件”に記載された「深度センサ正面から見た平面に射影した距離画像エリアのうち、手付近のエリア」及び「深度センサ上面から見た平面に射影した距離画像エリアのうち、手付近のエリア」を示す図である。
図20(a)において、領域2021は、深度センサ正面から見た平面に射影した距離画像エリアであり、領域2022は、手付近のエリアである。また、領域2022内の×印は領域2022の重心を示しており、〇印は手のアバタ骨格を領域2021の平面に射影した位置を示している。すなわち、「深度センサ正面から見た平面に射影した距離画像エリアのうち、手付近のエリアの重心へ、アバタ骨格から向かうベクトル」とは、右手のアバタ骨格のケースでは、図20(a)のベクトル2020に示すベクトルである。
同様に、領域2011は、深度センサ上面から見た平面に射影した距離画像エリアであり、領域2012は、手付近のエリアである。また、領域2012内の×印は領域2012の重心を示しており、〇印は手のアバタ骨格を領域2011の平面に射影した位置を示している。すなわち、「深度センサ上面から見た平面に射影した距離画像エリアのうち、手付近のエリアの重心へ、アバタ骨格から向かうベクトル」とは、図20(a)のベクトル2010に他ならない。
ベクトル2020の長さが、0以上0.8以下となる遷移は、アバタ骨格において手首を深度センサに正面から相対するユーザから見て前方や後方へ折り曲げる動きの中で生じる。また、ベクトル2010の長さが、0以上0.2以下となる遷移は、例えば、前述した、深度センサに正面から相対するユーザから見て前方や後方へ折り曲げる動きの中において生じる。具体的には、ユーザがアバタ骨格の手首を曲げることで手首の位置よりも後方に手の指先が位置する動きによって生じる。換言すると、図20(b)に示すように、X軸に対する右手首の回転角度が0[度]から90[度]へと遷移するようなケース(右手首を前方に曲げることで、指先が前方へ動くケース)は、ベクトル2010の長さが、0以上0.2以下となる遷移には該当しない。
このように、“組み合わせる条件”に規定された第1の条件(ベクトル2020の長さが、0以上0.8以下となる遷移)は、手首を前方や後方へ折り曲げる動きによって生じるベクトル長さの遷移を規定する。また、“組み合わせる条件”に規定された第2の条件(ベクトル2010の長さが、0以上0.2以下となる遷移)は、組み合わせる第1の条件が規定するユーザの動きのうち、例えば、手首を後方へ折り曲げる動きによって生じるベクトル長さの遷移を規定する。
したがって、ユーザが深度センサ125に正面から相対して肘を折り曲げて、手のひらを深度センサ125に向けて挙手しているような状態を例に説明すると、第1の条件と第2の条件の両方を満たすのは、次のような場合が相当する。すなわち、ユーザが右手の手首を後方へ折り曲げ、例えば、アバタの右手の骨格の回転角度がX軸に対して0[度]から270[度]へと遷移する場合である。
この結果、第2の時系列違和感判定部1802によれば、第1の時系列違和感判定部1801において時系列違和感判定値が“低”と判定される、アバタの右手の骨格のこのような遷移を、時系列違和感判定値が“高”と判定することができる。
なお、図20(a)の領域2012及び領域2022は以下の手順で規定する。まず、アバタの右手の骨格の位置座標を、深度センサ125の座標空間の位置座標へ変換する。次に、深度センサ125の座標空間に変換された、アバタの右手の骨格の位置座標を中心として、ユーザの手が検出されている可能性があるエリアを判定する。具体的には、深度センサ125から得られるカラー画像を併用した肌色画素を検出する詳細なアルゴリズムを用いた手のエリア判定でもよいし、平均的な手の大きさの直方体を用いて手のエリア判定を行うのでもよい。そして、判定したエリアにおいてセンシングされた深度データに基づいて、深度センサ上面から見た平面に射影した手付近のエリアを、領域2011と規定する。また、深度センサ正面から見た平面に射影した、手付近のエリアを領域2021と規定する。ただし、領域2012、領域2022は、深度データ以外の別のセンサデータを用いて規定してもよい。
<アバタ骨格モデル更新処理>
次に、第3の実施形態における制約部115によるアバタ骨格モデル更新処理の流れについて説明する。図21及び図22は、アバタ骨格モデル更新処理の第4及び第5のフローチャートである。図9に示す第1のフローチャートとの相違点は、図21のステップS2101と、図22のステップS2201〜S2206である。なお、ここでは、アバタの右手の骨格のみに着目して説明する。具体的には、時刻t1において、X軸に対する回転角度が0[度]であったものが、時刻t1+1において、X軸に対する回転角度が270[度]まで回転するアバタの右手の骨格の遷移に着目して説明する。
図21のステップS2101において、第2の時系列違和感判定部1802は、第1の時系列違和感判定部1801において、時系列違和感判定値が“低”と記録されたアバタ骨格を抽出する(ここでは、アバタの右手の骨格を抽出する)。
図22のステップS2201において、第2の時系列違和感判定部1802は、ステップS2101において抽出されたアバタ骨格に基づいて、組み合わせ条件定義情報1900を参照する。第2の時系列違和感判定部1802は、抽出されたアバタ骨格の遷移が組み合わせ条件定義情報1900の“違和感の出る遷移区間定義(各軸に対する回転)”に抵触するか否かを判定する。ここでは、アバタの右手の骨格の最短での遷移が、0[度]から270[度]であるため、組み合わせ条件定義情報1900の“違和感の出る遷移区間定義(各軸に対する回転)”に抵触する。
なお、“違和感の出る遷移区間定義(各軸に対する回転)”に抵触するか否かの判定は、アバタ骨格の最短での遷移が、規定された範囲に完全に含まれるか否かに基づいて行ってもよいし、部分的に含まれるか否かに基づいて行ってもよい。
ステップS2202において、第2の時系列違和感判定部1802は、ステップS2201において抵触すると判定した“違和感の出る遷移区間定義(各軸に対する回転)”に対応付けて規定された“組み合わせる条件”を抽出する。ここでは、2つの“組み合わせる条件”が抽出される。
ステップS2203において、第2の時系列違和感判定部1802は、抽出したアバタ骨格が、ステップS2202において抽出した“組み合わせる条件”に合致するか否かを判定する。
抽出したアバタ骨格が、ステップS2202において抽出した“組み合わせる条件”に合致すると判定した場合、第2の時系列違和感判定部1802は、判定値ログテーブル1000の“時系列違和感判定値”を“高”に書き換える。
ここでも、ユーザ140が深度センサ125に正面から相対して肘を折り曲げて、手のひらを深度センサ125に向けて挙手しているような状態を例に説明する。アバタの右手の骨格の最短での遷移が0[度]から270[度]の場合(手首を後方に折り曲げる動きの場合)、前述したように、組み合わせる条件に合致すると判定されるため、判定値ログテーブル1000の“時系列違和感判定値”は“高”に書き換えられる。
ステップS2204において、第2の時系列違和感判定部1802は、この時点で、判定値ログテーブル1000の“時系列違和感判定値”に“高”と記録されているアバタ骨格を抽出する。
また、第2の時系列違和感判定部1802は、抽出したアバタ骨格に基づいて、組み合わせ条件定義情報1900を参照する。第2の時系列違和感判定部1802は、抽出したアバタ骨格を、組み合わせ条件定義情報1900の“違和感の出る遷移区間定義(各軸に対する回転)”及び“組み合わせる条件”に抵触させずに遷移させることができるか否かを判定する。加えて、第2の時系列違和感判定部1802は、抽出したアバタ骨格を、各軸に対する違和感の出る遷移区間定義に抵触させずに遷移させることができるか否かを判定する。
ステップS2205において、第2の時系列違和感判定部1802は、ステップS2204において“違和感の出る遷移区間定義(各軸に対する回転)”及び“組み合わせる条件”に抵触させずに遷移させることができると判定したとする。更に、第2の時系列違和感判定部1802は、ステップS2204において、各軸に対する違和感の出る遷移区間定義に抵触させずに遷移させることができると判定したとする。その場合、第2の時系列違和感判定部1802は、当該アバタ骨格を抽出する。また、第2の時系列違和感判定部1802は、抽出したアバタ骨格について、判定値ログテーブル1000の“時系列違和感判定値”を“中”に書き換える。
更に、第2の時系列違和感判定部1802は、“違和感の出る遷移区間定義(各軸に対する回転)”及び“組み合わせる条件”に加えて、各軸に対する違和感の出る遷移区間定義に抵触させずに遷移させることができる遷移方向を判定する。そして、第2の時系列違和感判定部1802は、判定した遷移方向を、判定値ログテーブル1000の“遷移可能な相対変分”に記録する。
ステップS2206において、第2の時系列違和感判定部1802は、ステップS2204において抽出されたアバタ骨格(時系列違和感判定値が“高”と記録されたアバタ骨格)のうち、時系列違和感判定値が書き換えられなかったアバタ骨格を抽出する。
また、第2の時系列違和感判定部1802は、抽出したアバタ骨格について、各軸に対する違和感の出る遷移区間定義に抵触させずに遷移させることができる範囲を、判定値ログテーブル1000の“遷移可能な相対変分”に記録する。
なお、時刻t1と時刻t1+1の間に、アバタの右手の骨格の回転角度が0[度]から270[度]へと遷移するケースでは、ステップS2206において、第2の時系列違和感判定部1802が“遷移可能な相対変分”に“+40[度]”を記録することになる。つまり、このようなケースにおいて、アバタの右手の骨格が後方へ回転することはなく、違和感を与える画像が表示されることもない。
以上の説明から明らかなように、第3の実施形態における画像生成システム100は、アバタ骨格ごとに規定された違和感の出る遷移区間定義と組み合わせることで違和感があると判定される条件(図19)を予め規定する。また、第3の実施形態における画像生成システム100は、時刻t1と時刻t1+1の間のアバタ骨格の遷移が、当該条件(図19)に合致するか否かを判定する。また、第3の実施形態における画像生成システム100は、各軸に対する違和感の出る遷移区間定義(図8)に抵触しない場合でも、当該条件(図19)に合致すると判定した場合には、ユーザの非言語行動をアバタ骨格の遷移にそのまま反映させることはしない。この場合、第3の実施形態における画像生成システム100は、違和感を与えない範囲でアバタ画像を生成する。
これにより、アバタを見ている相手に違和感を与えるような画像が生成される可能性を更に低減させることができる。つまり、アバタを見ている相手に違和感を与えない画像を生成することができる。
[第4の実施形態]
上記第1乃至第3の実施形態では、センサデータに基づいて生成されるアバタ骨格モデル候補について、時刻t1と時刻t1+1との間の各アバタ骨格の遷移を判定した。また、第1乃至第3の実施形態では、アバタ骨格の遷移についての判定結果に基づいて、アバタの時系列の動きに制約をかけることで、他のユーザに違和感を与える画像が生成されることを回避した。
これに対して、第4の実施形態では、実空間における障害物等の存在を加味して、アバタの時系列の動きに制約をかける。これにより、他のユーザに違和感を与える画像が生成されることを回避する。
例えば、実空間において、深度センサとユーザとの間に机があったとする。また、机の下の手が深度センサが検出できるギリギリの位置にあったとする。この場合、深度データに基づいてアバタ骨格を遷移させた場合、アバタの手の骨格が違和感の出る遷移となるケースが多発することが想定される。
このような場合において、従来は、例えば、リアルタイムに撮影した撮像画像から、動体検出(ユーザ等の動く物体を検出)を行い、静止している物体を障害物として検出していた。しかしながら、障害物が柔らかい布の場合と硬い机の場合とでは、アバタの骨格の遷移に影響を与える度合が変わってくる。このため、第4の実施形態では、過去のセンサデータに基づいて、アバタ骨格モデル候補を生成した際に頻繁に違和感が発生しているエリアを特定し、特定したエリアではアバタの骨格を遷移させないようにする。これにより、他のユーザに違和感を与える画像が生成されることを回避することが可能となる。以下、第4の実施形態の詳細について、第1の実施形態との相違点を中心に説明する。
<画像生成装置の制約部の機能構成>
はじめに、第4の実施形態における画像生成装置の制約部の機能構成について説明する。図23は、画像生成装置の制約部の機能構成を説明するための第4の図である。図23(a)に示す要素のうち、図6(a)に示す要素と同様の機能を有する要素については、同じ符号を付すこととし、ここでは説明を省略する。
図6(a)との相違点は、図23(a)の場合、制約部115が、時系列違和感発生エリア抽出部2301、アバタ骨格遷移決定部(エリア回避)2302を有する点である。
図23(b)に示すように、時系列違和感発生エリア抽出部2301は、ログ用DB119に格納された判定値ログテーブル1000及びアバタ骨格ログテーブル1100を参照することで、時系列違和感発生エリア情報(以下、「エリア情報」と称す)を生成する。
具体的には、時系列違和感発生エリア抽出部2301は、判定値ログテーブル1000より時系列違和感判定値に“高”と記録されたログデータの“ユーザの現在時刻”を抽出する。また、時系列違和感発生エリア抽出部2301は、抽出した“ユーザの現在時刻”に基づいて、アバタ骨格ログテーブル1100を参照し、抽出した“ユーザの現在時刻”の前後において、アバタがどの位置座標からどの位置座標に遷移したかを判定する。これにより、時系列違和感発生エリア抽出部2301は、時刻t1と時刻t1+1との間で、時系列違和感判定値が“高”となる位置座標のリストを作成することができる。
時系列違和感発生エリア抽出部2301は、作成したリストを“時系列違和感発生エリア”として、エリア情報に記録する。なお、時系列違和感発生エリア抽出部2301は、時系列違和感発生エリアを記録する際、時系列違和感発生エリアを判定した時刻(開始時刻、終了時刻)、判定したログデータのユーザID、情報処理装置ID等を合わせて記録する。
時系列違和感発生エリア抽出部2301では、時系列違和感発生エリアとして、時系列違和感発生座標群全体を包括するようなエリアを記録する。あるいは、時系列違和感発生エリア抽出部2301は、時系列違和感発生エリアとして、時系列違和感発生座標群のうち、密度の高いエリアを包括するような領域を記録する。あるいは、時系列違和感発生エリア抽出部2301は、時系列違和感発生座標群全体の重心から、例えば、半径が一定値以内の球により特定されるエリアを、時系列違和感発生エリアとして記録する。
アバタ骨格遷移決定部(エリア回避)2302は、アバタ骨格モデル候補生成部602により生成されたアバタ骨格モデル候補について、各アバタ骨格の仮想空間での位置を判定する。また、アバタ骨格遷移決定部(エリア回避)2302は、ログ用DB119に格納されたエリア情報を参照し、各アバタ骨格の仮想空間での位置が、時系列違和感発生エリアに抵触するか否かを判定する。アバタ骨格遷移決定部(エリア回避)2302は、エリア情報を参照するにあたり、対応するユーザID、情報処理装置IDと対応付けられた時系列違和感発生エリアを参照する。
また、アバタ骨格遷移決定部(エリア回避)2302は、エリア情報2400を参照するにあたり、時系列違和感発生エリアを判定した時刻が、現在時刻に比較的近いもののみを参照してもよい。例えば、アバタ骨格遷移決定部(エリア回避)2302は、過去半日の間に判定された時系列違和感発生エリアを参照する。
更に、アバタ骨格遷移決定部(エリア回避)2302は、いずれかのアバタ骨格の仮想空間での位置が、時系列違和感発生エリアに抵触すると判定した場合、当該アバタ骨格の遷移はアバタ骨格モデルに反映させない。あるいは、アバタ骨格遷移決定部(エリア回避)2302は、いずれかのアバタ骨格の仮想空間での位置が、時系列違和感発生エリアに抵触すると判定した場合、当該アバタ骨格の遷移は、時系列違和感発生エリアを回避するようにアバタ骨格の遷移を決定する。なお、時系列違和感発生エリアを回避するようにアバタ骨格の遷移を決定するにあたっては、予め、仮想空間内において、時系列違和感発生エリアに視覚的には見えない障害物を設定するようにしてもよい。仮想空間内に障害物を設定しておくことで、アバタ骨格を当該障害物の位置に遷移させることを強制的に回避することができるからである。
<エリア情報の説明>
次に、ログ用DB119に格納されるエリア情報について説明する。図24は、エリア情報の一例を示す図である。図24に示すように、エリア情報2400は、情報の項目として、“DB記録時刻”、“時系列違和感発生エリアの判定時刻(開始)”、“時系列違和感発生エリアの判定時刻(終了)”を含む。更に、エリア情報2400は、情報の項目として、“ユーザID”、“情報処理装置ID”、“時系列違和感発生エリア”を含む。
“DB記録時刻”には、時系列違和感発生エリア抽出部2301が、ログ用DB119のエリア情報2400に、時系列違和感発生エリアを記録した時点で付加されたタイムスタンプが記録される。
“時系列違和感発生エリアの判定時刻(開始)”には、時系列違和感発生エリア抽出部2301が時系列違和感発生エリアの判定を開始した時刻が記録される。“時系列違和感発生エリアの判定時刻(終了)”には、時系列違和感発生エリア抽出部2301が時系列違和感発生エリアの判定を終了した時刻が記録される。
なお、時系列違和感発生エリア抽出部2301は、一定時間ごとに、時系列違和感発生エリアを判定してもよい。あるいは、判定値ログテーブル1000に新たに記録された時系列違和感判定値が一定量以上となった場合に、時系列違和感発生エリアを判定してもよい。あるいは、アバタ骨格ログテーブル1100に新たに記録されたアバタ骨格モデルが一定量以上となった場合に、時系列違和感発生エリアを判定してもよい。
“ユーザID”には、ユーザを識別する識別子が記録される。“情報処理装置ID”には、情報処理装置のIDが記録される。
“時系列違和感発生エリア”には、ここでは時系列違和感判定値が“高”の位置座標を包含するようなエリアが格納される。図24の例において、“Cube、C=(0,9,−9)、E=1”とは、仮想空間において、重心位置の座標が(0,9,−9)であり、一辺の長さが1の立方体のエリアを指す。
以上の説明から明らかなように、第4の実施形態における画像生成システム100は、時系列違和感判定値が“高”となる仮想空間内のエリアを特定し、特定したエリアにアバタ骨格が遷移することを回避する。
これにより、アバタを見ている相手に違和感を与えるような画像が生成されることを回避することができる。つまり、アバタを見ている相手に違和感を与えない画像を生成することができる。
[第5の実施形態]
上記第1の実施形態では、遷移区間定義情報800を管理者等が予め規定するものとして説明した。これに対して、第5の実施形態では、ログ用DB119に格納された、アバタ骨格ログテーブル1100を解析することで、遷移区間定義情報800を逐次更新する。以下、第5の実施形態について詳細を説明する。
<画像生成システムの全体構成>
はじめに、第5の実施形態における画像生成システムについて説明する。図25は、画像生成システムの全体構成の一例を示す第2の図である。図1に示す画像生成システム100との相違点は、図25に示す画像生成システム100の場合、画像生成装置110が、解析部2500を有している点である。
解析部2500は、基本機能部及び制約部115が動作し、コミュニケーションサービスが提供されることで、アバタ骨格ログテーブル1100が更新された場合に、これらのテーブルを解析する。
また、解析部2500は、解析結果に基づいて、定義情報用DB118に格納されている遷移区間定義情報800を更新する。
<解析結果の一例>
図26は、解析部による解析結果の一例を示す図であり、所定の時間帯におけるアバタの右手の骨格の遷移区間の頻度について解析した結果を示す図である。図26において、横軸はX軸に対する回転角度を表しており、縦軸は、遷移回数を表している。
図26の例によれば、+方向では、0[度]から45[度]の間の遷移頻度が高く、−方向では、360[度]〜210[度]の間の遷移頻度が高い。つまり、45[度]〜210[度]の間の遷移区間が、低頻度となる。なお、解析部2500は、低頻度であるか否かを判定する際に、遷移回数から求めた閾値を用いてもよいし、頻度値のヒストグラムから求めた閾値を用いてもよい。
<画像生成装置の解析部の機能構成>
次に、解析部2500の詳細な機能構成について説明する。図27は、解析部の機能構成の一例を示す図である。図27に示すように、解析部2500は、低頻度遷移区間抽出部2701、アバタ骨格遷移決定部(予測)2702、アバタ骨格モデル管理部(予測)2703、遷移区間更新部2704を有する。
低頻度遷移区間抽出部2701は、ログ用DB119に格納されたアバタ骨格ログテーブル1100の“遷移量”を読み出し、遷移区間の頻度を解析する。更に、低頻度遷移区間抽出部2701は、解析した遷移区間の頻度に基づいて、低頻度の遷移区間を抽出する。
アバタ骨格ログテーブル1100の“遷移量”には、全ての時間帯の全てのユーザに対するアバタ骨格の遷移が記録されている。低頻度遷移区間抽出部2701では、このうち、一定期間の“遷移量”のデータ(例えば、過去1時間分のアバタの右手の骨格の“遷移量”のデータ)を読み出し、遷移区間の頻度を解析する。なお、低頻度遷移区間抽出部2701では、アバタ骨格ログテーブル1100の“表示アバタ骨格モデル”のデータではなく、“遷移量”のデータを読み出す。遷移量を用いる理由は、時系列違和感判定値が“中”または“高”と判定されたが遷移したケースの場合、必ずしも最短の遷移を時刻t1+1におけるアバタ骨格の遷移に決定していないため、実際に遷移した実績に基づく解析を行うためである。低頻度遷移区間抽出部2701では、+符号または−符号のいずれかの符号の遷移が何回行われたのかを記録している“遷移量”のデータを読み出して、低頻度の遷移区間を抽出する。
アバタ骨格遷移決定部(予測)2702は、低頻度遷移区間抽出部2701により抽出された低頻度の遷移区間について、違和感が出ると予想される時系列のアバタ骨格モデルの動きと、違和感が出ないと予想される時系列のアバタ骨格モデルの動きとを生成する。
例えば、低頻度の遷移区間として、45[度]〜210[度]が抽出されたとする。この場合、アバタ骨格遷移決定部(予測)2702は、+方向と−方向の両方向から、違和感が出ると予想される時系列のアバタ骨格モデルの動きと、違和感が出ないと予想される時系列のアバタ骨格モデルの動きとを生成する。具体的には、アバタ骨格遷移決定部(予測)2702は、アバタの右手の骨格について、X軸に対する回転が、+方向に45[度]〜210[度]の動きと、−方向に210[度]〜45[度]の動きとを生成する。
なお、遷移区間定義情報800によれば、アバタの右手の骨格において、“違和感の出る遷移区間定義(X軸に対する回転)”には、“40<X<220”が規定されている。したがって、アバタ骨格遷移決定部(予測)2702が生成した、違和感が出ると予測されるアバタの右手の骨格の動きは、既に、遷移区間定義情報800に規定されている範囲に含まれる。
この場合、アバタ骨格遷移決定部(予測)2702は、違和感が出ないと予測されるアバタの右手の骨格の動きとして、+方向について40[度]〜45[度]、−方向について220[度]〜210[度]を生成する。
アバタ骨格モデル管理部(予測)2703は、アバタ骨格遷移決定部(予測)2702において生成されたアバタ骨格の遷移を表示する。具体的には、アバタ骨格モデル管理部(予測)2703は、アバタ骨格遷移決定部(予測)2702において生成されたアバタ骨格の遷移として、下記のアバタ骨格の遷移を表示する。
・X軸の+方向において違和感が出ないと予測されるアバタ骨格の動き
・X軸の+方向において違和感が出ると予測されるアバタ骨格の動き
・X軸の−方向において違和感が出ないと予測されるアバタ骨格の動き
・X軸の−方向において違和感が出ると予測されるアバタ骨格の動き
低頻度遷移区間抽出部2701において、低頻度の遷移区間として、Y軸またはZ軸に対する遷移区間が抽出された場合には、Y軸またはZ軸について、同様の処理が行われる。
遷移区間更新部2704は、アバタ骨格モデル管理部(予測)2703により表示されたアバタ骨格の動きに対して、ユーザが違和感が出るか否かを判断した場合、判断結果を取得する。遷移区間更新部2704は、違和感が出る、または違和感が出ない、との判断結果に基づいて、遷移区間定義情報800について、“違和感の出る遷移区間定義”を更新する。
なお、ここでいうユーザとは、画像生成装置110を管理する管理者であってもよいし、画像生成システム100を利用するユーザ140、150であってもよい。また、画像生成システム100を利用するユーザの場合にあっては、いずれか1名のユーザであっても複数のユーザであってもよい。更に、複数のユーザの場合には、違和感が出るか否かの判断結果を、多数決処理することにより、あるいは平均化処理することにより、“違和感の出る遷移区間定義”を更新するようにしてもよい。
なお、ユーザによる判断の結果、例えば、+方向40[度]〜45[度]のアバタ骨格の遷移と、0[度]〜45[度]のアバタ骨格の遷移が違和感がないと判断されたとする。また、−方向220[度]〜210[度]のアバタ骨格の遷移と、360[度]〜210[度]のアバタ骨格の遷移とが、違和感があると判断されたとする。あるいは、40[度]〜45[度]や220[度]〜210[度]だけでなく、これらを含む長い遷移をユーザに提示し、ユーザの判断を助ける形態があってもよい。あるいは、ユーザが正確に違和感が出る、出ない、の判断を行っているか否かを決定づけるために、確認したい遷移区間を含む複数通りのアバタ骨格の遷移をユーザに提示する形態があってもよい。
この場合、遷移区間更新部2704は、遷移区間定義情報800の“違和感の出る遷移区間定義(X軸に対する回転)”を、“40<X<220”から“45<X<220”へと更新する。
なお、遷移区間更新部2704は、遷移区間定義情報800だけでなく、組み合わせ条件定義情報1900もあわせて更新するようにしてもよい。
以上の説明から明らかなように、第5の実施形態における画像生成システム100は、コミュニケーションサービスを提供することでログ用DB119に格納されたアバタ骨格ログテーブル1100を解析する。また、第5の実施形態における画像生成システム100は、解析結果に応じて、遷移区間定義情報800を更新する。これにより、画像生成システム100が利用される時間帯や、クライアント側システムが設置される環境等によって、違和感が出る動きが変化するような場合にも対応することができる。
なお、遷移区間定義情報800や違和感の出る遷移区間組み合わせ条件情報1800等は、ユーザごと、クライアント側システムごと、クライアントアプリケーションごとに管理するようにしてもよい。
なお、開示の技術では、以下に記載する付記のような形態が考えられる。
(付記1)
所定の人を第1のタイミングでセンシングした結果得られた、該人の体の部位の位置を示す第1のデータを取得する第1の取得手段と、
前記第1のデータにより示される前記人の体の部位の位置を、前記人を表すアバタに反映させた第1の画像を生成して出力する生成手段と、
前記人を前記第1のタイミングより後の第2のタイミングでセンシングした結果得られた、該人の体の部位の位置を示す第2のデータを取得する第2の取得手段と、
前記第1のデータから前記第2のデータへの前記人の動作の変化の仕方に応じて、前記第2のデータに示される前記人の体の部位の位置を、前記人を表すアバタに反映させるか否かを決定する決定手段と、
反映させると決定した場合に、前記第2のデータに示される前記人の体の部位の位置を前記人を表すアバタに反映させた第2の画像を、前記第1の画像に代えて出力する出力手段と
を有することを特徴とする画像生成装置。
(付記2)
反映させないと決定した場合に、前記出力手段は、前記第1のデータにより示される前記人の体の部位の位置を、前記人を表すアバタに反映させた前記第1の画像を継続して出力することを特徴とする付記1に記載の画像生成装置。
(付記3)
反映させないと決定した場合に、前記第1のデータと前記第2のデータとを用いて第3のデータを算出する算出手段を更に有し、
反映させないと決定した場合に、前記出力手段は、前記第3のデータにより示される前記人の体の部位の位置を、前記人を表すアバタに反映させた第3の画像を、前記第1の画像に代えて出力することを特徴とする付記1に記載の画像生成装置。
(付記4)
前記生成手段は、
前記第1のデータにより示される前記人の体の部位の位置を、前記人を表すアバタに反映させた前記第1の画像と、前記第2のデータにより示される前記人の体の部位の位置を、前記人を表すアバタに反映させた前記第2の画像とを生成し、
前記決定手段は、
前記第1の画像から前記第2の画像への変化の仕方に応じて、前記第2の画像を前記第1の画像に代えて出力するか否かを決定することを特徴とする付記1に記載の画像生成装置。
(付記5)
前記決定手段は、
前記第1の画像から前記第2の画像への変化の仕方が、予め定められた条件を満たすか否かに応じて、反映させるか否かを決定することを特徴とする付記4に記載の画像生成装置。
(付記6)
前記決定手段は、
振る舞いの種別と接近傾向か回避傾向かの別とを対応付けて記憶する記憶部を参照し、前記第1のタイミングにおける前記人の振る舞い、前記第2のタイミングにおける前記人の振る舞いともに、他の人に対する接近傾向であった場合、または、前記第1のタイミングにおける前記人の振る舞い、前記第2のタイミングにおける前記人の振る舞いともに、前記他の人に対する回避傾向であった場合に、前記第2のデータに示される前記人の体の部位の位置を、前記人を表すアバタに反映させると決定することを特徴とする付記5に記載の画像生成装置。
(付記7)
前記決定手段は、前記第1のデータから前記第2のデータへの前記人の動作の変化が、所定の区間と抵触する変化であるか否かに応じて、反映させるか否かを決定し、
前記所定の区間は、前記人の動作の変化が発生しにくい区間を解析することで更新されることを特徴とする付記5に記載の画像生成装置。
(付記8)
所定の人を第1のタイミングでセンシングした結果得られた、該人の体の部位の位置を示す第1のデータを取得し、
前記第1のデータにより示される前記人の体の部位の位置を、前記人を表すアバタに反映させた第1の画像を生成して出力し、
前記人を前記第1のタイミングより後の第2のタイミングでセンシングした結果得られた、該人の体の部位の位置を示す第2のデータを取得し、
前記第1のデータから前記第2のデータへの前記人の動作の変化の仕方に応じて、前記第2のデータに示される前記人の体の部位の位置を、前記人を表すアバタに反映させるか否かを決定し、
反映させると決定した場合に、前記第2のデータに示される前記人の体の部位の位置を前記人を表すアバタに反映させた第2の画像を、前記第1の画像に代えて出力する、
処理をコンピュータに実行させるための画像生成プログラム。
(付記9)
所定の人を第1のタイミングでセンシングした結果得られた、該人の体の部位の位置を示す第1のデータを取得し、
前記第1のデータにより示される前記人の体の部位の位置を、前記人を表すアバタに反映させた第1の画像を生成して出力し、
前記人を前記第1のタイミングより後の第2のタイミングでセンシングした結果得られた、該人の体の部位の位置を示す第2のデータを取得し、
前記第1のデータから前記第2のデータへの前記人の動作の変化の仕方に応じて、前記第2のデータに示される前記人の体の部位の位置を、前記人を表すアバタに反映させるか否かを決定し、
反映させると決定した場合に、前記第2のデータに示される前記人の体の部位の位置を前記人を表すアバタに反映させた第2の画像を、前記第1の画像に代えて出力する、
処理をコンピュータが実行する画像生成方法。
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせ等、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。