特許法第30条第2項適用申請有り 令和3年3月26日 https://www.youtube.com/watch?v=wRErhyoT70cを通じて発表、 令和3年3月28日 https://www.youtube.com/watch?v=WyC76fzzzCAを通じて発表、 令和3年3月31日 https://www.youtube.com/watch?v=YhX7xJ0MkxI、https://speakerdeck.com/clusterinc/cluster-lodを通じて発表、
以下、アバター出力装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
本実施の形態において、仮想的な三次元空間(以下、適宜、単に「三次元空間」と言う。)の中に滞在する2以上の各ユーザのアバターのうち、少なくとも一部のアバターについては小さいサイズの情報を用いて出力される情報システムについて説明する。なお、三次元空間は、例えば、VRであるが、AR等でも良い。
本実施の形態における情報システムは、例えば、三次元空間の中において、各ユーザの分身である2以上のアバターが集まり、ユーザ間において、コミュニケーションをすることを支援するシステムである。本情報システムは、ゲーム等にも応用可能である。本情報システムは、アバターを出力する機能を有すれば良く、応用範囲は問わない。
なお、以下、2以上のユーザのうちの一人のユーザに対応するアバターを自アバターと表現し、それ以外のユーザを他アバターと表現する。
また、本実施の形態において、端末装置ごとに、2以上の各アバターのスコアを用いて、アバターに対して使用するモデル情報または音声情報を決定し、当該決定したモデル情報または音声情報を用いて、アバターを表現する情報システムについて説明する。なお、スコアは、動的属性値または静的属性値を用いて取得される。
さらに、本実施の形態において、三次元空間の中のアバター表示に関する処理を、アバター出力装置と端末装置とで、適切に分担する情報システムについて説明する。
図1は、本実施の形態における情報システムAの概念図である。情報システムAは、アバター出力装置1、および1または2以上の端末装置2を備える。
アバター出力装置1は、アバターの出力のための処理を行う装置である。アバター出力装置1は、ここでは、通常、いわゆるサーバであるが、スタンドアロンで動作する装置でも良い。アバター出力装置1は、例えば、クラウドサーバ、ASPサーバ等である。なお、アバター出力装置1の種類は問わない。また、アバター出力装置1がスタンドアロンの装置である場合、端末装置2は不要であり、後述する端末装置2の機能の一部は、アバター出力装置1が実行する。
端末装置2は、ユーザが使用する端末である。端末装置2は、自分に対応する自アバターと1以上の他アバターとを出力する端末である。一のアバターは、例えば、一の端末装置2に対応付く。また、一のアバターは、例えば、一のユーザに対応付く。他アバターは、他の端末装置2を使用する他のユーザに対応するアバターである。なお、一のユーザに対して2以上のアバターが対応付いていても良い。つまり、一のユーザが、2以上のアバターを切り替えて、2以上のアバターの中の一つのアバターを使用しても良い。端末装置2は、例えば、いわゆるパーソナルコンピュータ、タブレット端末、スマートフォン等であり、その種類は問わない。なお、出力とは、通常、表示であるが、表示デバイスへの送信でも良い。
なお、アバターは、通常、ユーザの分身として出力されるキャラクターである。アバターは、キャラクターと言っても良い。
図2は、本実施の形態における情報システムAのブロック図である。情報システムAを構成するアバター出力装置1は、格納部11、受付部12、処理部13、および出力部14を備える。
格納部11は、ワールド格納部111、およびアバター格納部112を備える。受付部12は、例えば、アバター受信部121を備える。処理部13は、例えば、モデル圧縮部131、アバター蓄積部132、決定部133、アバター取得部134、および音声取得部135を備える。出力部14は、例えば、位置情報送信部141、アバター出力部142、および音声出力部143を備える。
端末装置2は、端末格納部21、端末受付部22、端末処理部23、端末送信部24、端末受信部25、および端末出力部26を備える。
アバター出力装置1を構成する格納部11には、各種の情報が格納される。各種の情報とは、例えば、後述するワールド情報、後述するアバター情報である。
ワールド格納部111には、ワールド情報が格納される。ワールド情報は、ワールドを構成するための情報である。ワールド情報の構造は問わない。
アバター格納部112には、1または2以上のアバター情報が格納される。アバター情報は、出力されるアバターを構成するための情報を含む。アバター情報は、アバターごとの情報である。アバター情報は、アバター識別子に対応付いている。アバター識別子に対応付いていることは、アバター識別子を有することでも良い。アバター識別子は、例えば、アバターのIDであるが、アバターに対応するユーザのID、端末装置2のID等でも良い。
アバター情報は、モデル情報を有する。モデル情報は、アバターの表示を構成するための情報である。モデル情報は、例えば、メッシュ情報、ボーン情報、マテリアル情報を有する。モデル情報は、例えば、glTF ?(GL Transmission Format)?のデータ構造を有する。ただし、モデル情報のデータ構造は、VRM、OBJ、FBX、STL、GLB、COLLADA、等でも良く、種類を問わない。
ここでの各アバター情報は、データサイズの異なる2種類以上のモデル情報を有することは好適である。アバター情報は、例えば、第一モデル情報と第二モデル情報とを有する。ここで、「第一モデル情報のデータサイズ>第二モデル情報のデータサイズ」である。第二モデル情報は、例えば、第一モデル情報のデータサイズを圧縮したモデル情報である。なお、圧縮のアルゴリズムは問わない。第二モデル情報は、例えば、第一モデル情報が有するメッシュ情報のうち、2以上のメッシュ情報から一のメッシュ情報を構成し(メッシュを統合し)、メッシュ情報を削減したモデル情報である。また、第二モデル情報は、例えば、第一モデル情報が有する色情報の階調を小さくすることにより、データサイズを削減したモデル情報である。第二モデル情報は、例えば、第一モデル情報が有するテクスチャのアトラス化により、データサイズを小さくしたモデル情報である。
なお、第一モデル情報は、例えば、アバター識別子に対応付けて、端末装置2から送信された情報である。なお、アバター識別子は、端末識別子でも良い。また、第一モデル情報は、例えば、端末装置2から送信された元情報を用いて取得された情報でも良い。元情報は、モデル情報でも良いし、モデル情報を特定する識別子でも良い。
また、アバター情報は、モデル情報の他、音声情報や1以上の属性値を有することは好適である。
音声情報は、アバターが発する音声の情報である。音声情報のデータ構造やデータ形式は問わない。アバター情報は、データサイズまたは属性値が異なる2種類以上の音声情報を有することは好適である。アバター情報は、例えば、第一音声情報と第二音声情報とを有する。例えば、「第一音声情報のデータサイズ>第二音声情報のデータサイズ」である。また、例えば、「第一音声情報の属性値であるボリューム>第二音声情報の属性値であるボリューム」である。また、例えば、「第一音声情報の属性値であるサンプリング周波数>第二音声情報の属性値であるサンプリング周波数」である。また、例えば、「第一音声情報の属性値である高さ(周波数)>第二音声情報の属性値である高さ(周波数)」である。
1以上の各属性値は、アバターの属性値である。属性値は、例えば、動的属性値、または静的属性値である。
動的属性値は、動的に変化し得る属性値である。動的属性値は、例えば、位置情報、向き情報である。
位置情報は、アバターの場における位置を特定する情報である。位置情報は、例えば、ユーザが入力した位置情報である。ユーザが入力した位置情報は、通常、アバターを動作させるユーザの操作により決定される情報である。位置情報は、場(ワールドと言っても良い)の中での絶対的な位置を特定する情報であり、例えば、三次元座標(x、y、z)または二次元座標(x、y)である。
向き情報は、アバターの場における向きを特定する情報である。向き情報は、例えば、基準となる方向に対する角度である。基準となる方向は、場(ワールドと言っても良い)の中での絶対的な向きを特定する情報である。向き情報は、例えば、場の中の正面を向いているか否かを示す情報である。
静的属性値は、動的には変化しない属性値である。静的属性値は、例えば、役割属性値、由来属性値、端末属性値である。
役割属性値は、アバターの役割に関する情報である。役割属性値は、例えば、「主催者」「司会者」「観客」である。なお、「主催者」は、仮想的な三次元空間上で、アバターを用いたイベントを開催する場合の主催者である。「司会者」は、仮想的な三次元空間上で、アバターを用いたイベントを開催する場合の司会者である。「観客」は、仮想的な三次元空間上で、アバターを用いたイベントを開催する場合の観客である。
由来属性値は、アバターの由来に関する情報である。由来属性値は、例えば、ユーザが作成したアバター(UGC)か否かを示す情報である。
端末属性値は、アバターに対応する端末装置2に関する情報である。端末属性値は、例えば、端末装置2の種類を特定する端末種類識別子(例えば、「PC」「スマートフォン」「タブレット」)、端末装置2のプロセッサの能力を特定する情報(例えば、能力のレベル、動作周波数(GHz))、端末装置2の画面サイズ、アスペクト比である。
受付部12は、各種の情報や指示を受け付ける。なお、ここでの受け付けは、通常、端末装置2からの受信であるが、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付け等でも良い。
また、各種の情報や指示は、例えば、アバター情報、音声情報、リクエストである。受け付けられるアバター情報は、アバター格納部112のアバター情報と同じ構造でなくても良い。受け付けられるアバター情報は、例えば、第一モデル情報と位置情報とを有する。
リクエストは、アバターの送信の要求である。リクエストは、例えば、他アバターの表示に関するリクエストであり、他アバターを示すアバター識別子とモデル情報の組を、1組以上、有する。リクエストは、例えば、ワールド情報の送信指示を有しても良い。
アバター受信部121は、ユーザが使用する2以上の各端末装置2から第一モデル情報または元情報を受信する。元情報は、第一モデル情報の元になる情報である。元情報は、例えば、モデル情報であるが、第一モデル情報の識別子でも良い。
アバター受信部121は、2以上の各端末装置2から、各端末装置2に対応するアバターの位置を特定する位置情報をも受信することは好適である。なお、アバター受信部121は、2以上の各端末装置2から第一モデル情報または元情報、位置情報、およびアバター識別子を対応付けて受信することは好適である。ただし、第一モデル情報または元情報、および位置情報は対応付けば良く、別々に受信されても良い。なお、アバター識別子は、アバターを識別する情報であり、例えば、ID、ユーザ名である。また、アバター受信部121が端末装置2から第一モデル情報または元情報を受信したことに応じて、ユニークなアバター識別子が取得されても良い。
アバター受信部121は、音声情報、位置情報をも受信することは好適である。アバター受信部121は、音声情報を、アバター識別子を対応付けて受信することは好適である。
アバター受信部121は、2以上の各端末装置2から、第一モデル情報と第二モデル情報とを有するアバター情報を受信しても良い。かかる場合、端末装置2が、第一モデル情報に基づいて、第二モデル情報を取得する処理を行っても良い。
アバター受信部121は、2以上の各端末装置2から、各端末装置2で取得された1以上の他アバターのスコアまたは判定結果を、アバター識別子に対応付けて受信することは好適である。アバター受信部121は、各端末装置2ごとに、自アバターのスコアまたは判定結果をも受信しても良い。なお、判定結果とは、アバターのモデル情報の種類を決定するための情報である。判定結果は、例えば、スコアに基づいて決定された情報である。判定結果は、例えば、モデル情報の種類を特定する種類識別子である。判定結果は、例えば、第一モデル情報に対応する「第一」、第二モデル情報に対応する「第二」である。
なお、他アバターは、自アバターでは無いアバターである。自アバターは、端末装置2に対応するアバターである。アバター受信部121が自アバターのスコアを受信しない場合、自アバターのスコアは、通常、デフォルト値(例えば、最高点)である。なお、端末装置2にとっての他アバターのスコアは、端末装置2にとっての他アバターの重要度を特定する情報である。スコアは、例えば、0~100、10段階評価等であるが、その範囲等は問わない。
処理部13は、各種の処理を行う。各種の処理は、例えば、モデル圧縮部131、アバター蓄積部132、決定部133、アバター取得部134、音声取得部135が行う処理である。
処理部13は、例えば、ワールド格納部111のワールド情報を取得する。
モデル圧縮部131は、第一モデル情報または元情報を用いて、第二モデル情報を取得する。第二モデル情報は、第一モデル情報より小さいデータサイズのモデル情報である。
なお、モデル圧縮部131が行う処理は問わない。モデル圧縮部131は、例えば、第一モデル情報または元情報が有する2以上のメッシュ情報から一のメッシュ情報を構成し、メッシュ情報の数を削減した第二モデル情報を取得する。かかる場合、第二モデル情報は、例えば、第一モデル情報が有するN(Nは2以上の自然数)のメッシュ情報を用いて取得された、Nよりも少ないM(Mは1以上の自然数)のメッシュ情報を有するモデル情報である。
また、モデル圧縮部131は、例えば、第一モデル情報または元情報が有する色情報の階調を小さくすることにより、データサイズを削減した第二モデル情報を取得する。モデル圧縮部131は、例えば、第一モデル情報または元情報が有するテクスチャのアトラス化により、データサイズを小さくした第二モデル情報を取得する。
モデル圧縮部131は、第一モデル情報が有するアバターの一部の箇所(例えば、ボディー部、顔部以外の箇所)の情報のみを圧縮し、第二モデル情報を取得することは好適である。
アバター蓄積部132は、アバター受信部121が受信した第一モデル情報、またはアバター受信部121が受信した元情報を用いて取得された第一モデル情報を有するアバター情報をアバター格納部112に蓄積する。
アバター蓄積部132は、例えば、アバター受信部121が受信した位置情報、音声情報のうちの1以上の情報をも有するアバター情報をアバター格納部112に蓄積する。
アバター蓄積部132は、例えば、第一モデル情報と第二モデル情報とを有するアバター情報をアバター格納部112に蓄積する。
アバター蓄積部132は、例えば、第一モデル情報とモデル圧縮部131が取得した第二モデル情報とを有するアバター情報をアバター格納部112に蓄積する。
なお、アバター蓄積部132が行う蓄積処理は、一時的な蓄積でも良い。
決定部133は、2以上のアバターのうち、1以上の第一アバターと1以上の第二アバターとを決定する。なお、第一アバターは、第一モデル情報を用いて表示されるアバターである。第二アバターは、第二モデル情報を用いて表示されるアバターである。なお、決定する処理は、例えば、アバター識別子と対になるスコアまたは判定結果に対応する種類識別子を取得すること、端末装置2から受信された種類識別子を取得すること等である。種類識別子は、例えば、「第一アバター」「第二アバター」である。
決定部133は、例えば、受信されたリクエストに含まれるアバター識別子ごとに、当該アバター識別子と対になるスコアまたは判定結果に対応する種類識別子を取得する。
モデル情報が3種類以上存在する場合、決定部133は、3以上のアバターのうち、1以上の第一アバターと1以上の第二アバターと1以上の第三アバターとを決定する。
決定部133は、2以上の各アバターが、少なくとも2種類以上のアバターのうちのいずれであるかを決定する。決定部133は、2以上の各アバターが、3種類以上のアバターのうちのいずれであるかを決定しても良い。なお、アバターは、通常、ユーザまたは端末装置2に対応付いている。
決定部133は、通常、端末装置2ごとに、1以上の第一アバターと1以上の第二アバターとを決定する。つまり、端末装置2によって、同じ他アバターでも、モデル情報の種類が異なることは好適である。
決定部133は、2以上の各端末装置ごとに、2以上の各アバターに対応する1以上の動的属性値を用いて取得されたスコアに基づいて、1以上の第二アバターを決定することは好適である。
決定部133は、2以上の各アバターに対応する1以上の静的属性値に基づく情報を用いて、1以上の第二アバターを決定しても良い。
決定部133は、スコアまたは判定結果を用いて、2以上の各端末装置ごとに、2以上の各アバターに対して、1以上の第一アバターと1以上の第二アバターとを決定する。なお、スコアまたは判定結果は、端末装置2から受信された情報でも良いし、アバター出力装置1が取得した情報でも良い。
決定部133は、例えば、スコアまたは判定結果に基づいて、第一アバターと第二アバターとを決定する。
決定部133は、例えば、スコア条件を満たすほど高いスコアと対になるアバター識別子で識別されるアバターを第一アバターに決定し、スコア条件を満たさないほど低いスコアと対になるアバター識別子で識別されるアバターを第二アバターに決定する。
スコア条件は、例えば、「スコアが閾値以上」「スコアが閾値より大きい」「スコアが上位N(Nは自然数)以内」「スコアが上位N(Nは自然数)より高い」である。
決定部133は、例えば、判定結果「第一」と対になるアバター識別子で識別されるアバターを第一アバターに決定し、判定結果「第二」と対になるアバター識別子で識別されるアバターを第二アバターに決定する。
決定部133は、例えば、端末装置2から受信された1以上の各他アバターのスコアまたは判定結果を用いて、各他アバターが2種類以上のアバターのうちのいずれかであるかを決定する。
決定部133は、例えば、端末装置2から受信された1以上の属性値を用いて、1以上の各他アバターに対するスコア取得処理を行い、当該スコアに基づいて、各他アバターが2種類以上のアバターのうちのいずれかであるかを決定する。なお、スコア取得処理は、各端末装置2が行っても良い。
決定部133は、例えば、以下のようなスコア取得処理を行う。つまり、決定部133は、2以上の各端末装置2から受信された1以上の属性値と、各アバターの位置情報とを用いて、2以上の各端末装置2ごとに、1以上の他アバターのスコアを取得する。なお、各端末装置2から受信された1以上の属性値は、例えば、自アバターの位置情報、自アバターの向き情報を有する。
具体的には、決定部133は、例えば、端末装置2から受信された自アバターの位置情報、端末装置2から受信された自アバターの向き情報、カメラ属性値、1以上の各他アバターの位置情報のうちの2以上の情報を用いて、1以上の他アバターの動的属性値を取得する。なお、カメラ属性値は、例えば、カメラの位置を特定するカメラ位置情報、カメラの向きを特定するカメラ向き情報、カメラの画角を特定する画角情報である。カメラ属性値は、例えば、格納部11に格納されている。また、画角情報は、通常、カメラの水平方向の角度の範囲、カメラの垂直方向の角度の範囲である。なお、ここでのカメラは、仮想的な三次元空間上に設置されたカメラである。
決定部133は、例えば、自アバターの位置情報と他アバターの位置情報とを用いて、自アバターと他アバターとの距離を取得する。また、決定部133は、例えば、自アバターの位置情報と自アバターの向き情報と他アバターの位置情報とを用いて、他アバターが自アバターの視野の中に入っているか否かを示す動的属性値(視野内属性値と言っても良い。)を取得する。また、決定部133は、例えば、カメラ位置情報とカメラ向き情報と画角情報と他アバターの位置情報とを用いて、他アバターがカメラによる撮影の範囲に入っているか否かを示す動的属性値(撮影範囲属性値と言っても良い。)を取得する。
そして、決定部133は、例えば、他アバターに対して、距離が近いほど大きな値のスコアを取得する。また、決定部133は、例えば、視野の中に入っている場合に、視野の中に入っていない場合と比較して、大きな値のスコアを取得する。また、決定部133は、例えば、カメラによる撮影の範囲に入っている場合に、撮影の範囲に入っていない場合と比較して、大きな値のスコアを取得する。
さらに具体的には、決定部133は、例えば、他アバターに対して、距離をパラメータとする減少関数により、スコアを取得する。決定部133は、例えば、距離、視野内属性値、および撮影範囲属性値に対応するスコアを対応表から取得する。かかる場合、対応表は、例えば、距離の範囲、視野内属性値、および撮影範囲属性値の組と、スコアとの対応を示す2以上の対応情報を有する表である。
また、決定部133は、例えば、1以上の静的属性値を用いて、以下のようなスコア取得処理を行っても良い。なお、1以上の静的属性値は、例えば、アバターの役割に関する属性値、アバターの由来に関する属性値のいずれかを含む。
決定部133は、例えば、他アバターの役割が「主催者」または「司会者」である場合、他アバターの役割が「観客」である場合と比較して、高いスコアを取得する。決定部133は、例えば、例えば、他アバターがUGCである場合、UGCでない場合と比較して、高いスコアを取得する。
決定部133は、例えば、視野内属性値または撮影範囲属性値のみに基づいて、決定しても良い。決定部133による決定処理のアルゴリズムは問わない。また、決定部133がスコアを取得する場合、当該スコア取得のアルゴリズムも問わない。
決定部133は、例えば、2以上のアバターのうち、第一音声情報に対応するアバターである1以上の第一アバターと、第二音声情報に対応するアバターである1以上の第二アバターを決定する。なお、第二音声情報は、第一音声情報より小さいデータサイズの音声情報または第一音声情報とは異なる属性値を有する音声情報である。なお、異なる属性値とは、例えば、音量、周波数である。
決定部133は、例えば、他アバターのスコアまたは判定結果に基づいて、当該他アバターの音声情報の種類を決定する。決定部133は、例えば、他アバターのスコアまたは判定結果に基づいて、第一アバター、第二アバター等の種類を決定し、当該種類に対応する音声情報の種類を決定する。
アバター取得部134は、決定部133が決定した1以上の各第二アバターについては、第二モデル情報を用いたアバターをアバター格納部112から取得し、1以上の各第一アバターについては、第一モデル情報を用いたアバターをアバター格納部112から取得する。
アバターを取得することは、モデル情報を取得することでも良いし、モデル情報を含むアバター情報を取得することでも良いし、モデル情報と音声情報とを含むアバター情報を取得することでも良いし、モデル情報を識別するモデル識別子(例えば、第一アバターか第二アバターかを識別する情報、モデル情報の種類を識別する情報)を取得することでも良いし、音声情報を識別する音声識別子(例えば、第一アバターか第二アバターかを識別する情報、音声情報の種類を識別する情報)を取得することでも良い。
アバター取得部134は、例えば、決定部133が決定した1以上の第二アバターについては、第二モデル情報を読み出し、第二モデル情報を用いてアバターを構成する。
音声取得部135は、決定部133が決定した1以上の各第二アバターについては、第二音声情報を取得し、1以上の各第一アバターについては、第一音声情報を取得する。
出力部14は、各種の情報を出力する。ここで、出力とは、通常、端末装置2への送信であるが、ディスプレイへの表示、プロジェクターを用いた投影、プリンタでの印字、音出力、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念であっても良い。
出力部14は、例えば、ワールド格納部111のワールド情報を2以上の各端末装置2に送信する。
位置情報送信部141は、2以上の各端末装置2に対応する2以上の各アバターの位置情報のうち、1以上の他アバターの位置情報を、アバターを識別するアバター識別子に対応付けて、2以上の各端末装置に送信する。1以上の他アバターの位置情報は、例えば、各他アバターに対応する端末装置2が送信した情報である。1以上の他アバターの位置情報は、各端末装置2における自アバターの位置情報を含まなくても良い。位置情報送信部141は、2以上の各端末装置2に、当該端末装置2に対応する自アバターの位置情報を送信しなくても良いし、自アバターの位置情報も送信しても良い。
アバター出力部142は、アバター取得部134が取得した2以上のアバターを出力する。ここで、出力とは、通常、端末装置2への送信であるが、ディスプレイへの表示、プロジェクターを用いた投影、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念であっても良い。
また、アバターの出力とは、モデル情報の送信でも良いし、モデル識別子の送信でも良い。端末装置2でアバターが出力されれば良い。
アバター出力部142は、通常、2以上の各端末装置2ごとに、アバター取得部134が取得した2以上のアバターを、2以上の各端末装置2に送信する。
アバター出力部142は、受信されたリクエストに含まれる1以上の各アバター識別子を用いて、当該各アバター識別子に対応するモデル情報とアバター識別子とを対にして有する情報を、リクエストを送信してきた端末装置2に送信する。
アバター出力部142は、受信されたリクエストがワールド情報の送信指示を含む場合、ワールド情報を、リクエストを送信してきた端末装置2に送信する。
アバター出力部142が出力するアバターは、端末装置2で表示されるアバターの情報と完全に同一でなくても良い。アバター出力部142が出力するアバターは、端末装置2で表示されるアバターを構成するための情報でも良い。アバターを出力することは、アバターを含む画像を出力することでも良い。
音声出力部143は、音声取得部135が取得した第一音声情報、および第二音声情報を出力する。第一音声情報および第二音声情報の出力とは、第一音声情報を識別する識別子および第二音声情報を識別する識別子の出力でも良い。
音声出力部143は、アバターのスコアまたは判定結果に応じた種類の音声情報を出力することは好適である。
ここで、出力とは、通常、端末装置2への送信であるが、音出力、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念であっても良い。
音声出力部143が出力する第一音声情報、および第二音声情報は、端末装置2で出力される音声と同じ情報でなくても良い。
端末装置2を構成する端末格納部21には、1以上の端末属性値が格納される。端末属性値は、端末装置2の属性値である。端末装置2の属性値は、例えば、端末装置2の端末種類識別子、端末装置2の画面サイズ、アスペクト比である。端末格納部21には、位置情報、第一モデル情報または元情報が格納されても良い。
端末受付部22は、各種の指示や情報を受け付ける。各種の指示や情報は、例えば、位置情報、第一モデル情報、第一モデル情報を識別する識別子、アバター識別子、1以上の属性値、初期入力である。1以上の属性値は、例えば、役割属性値、由来属性値、端末属性値である。
なお、初期入力は、2以上のアバターを含む三次元空間を端末装置2に出力する前の入力であり、アバターの位置情報を含む。初期入力は、1または2以上のスコア取得元属性値を含む。初期入力は、アバターのモデル情報または元情報を含むことは好適である。初期入力は、アバター識別子を含んでも良い。初期入力に含まれるモデル情報は、第一モデル情報であることは好適である。スコア取得元属性値は、スコアを取得する元になる属性値であり、位置情報を含む。スコア取得元属性値は、通常、向き情報を含む。
ここで、受け付けとは、キーボードやマウス、タッチパネルなどの入力デバイスから入力された情報の受け付け、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスク、半導体メモリなどの記録媒体から読み出された情報の受け付けなどを含む概念である。
端末処理部23は、各種の処理を行う。各種の処理は、例えば、後述するスコア取得処理、後述するアバター構成処理である。なお、スコアの取得をアバター出力装置1が行う場合、端末処理部23は、スコア取得処理を行わない。
端末処理部23は、例えば、1以上の他アバターの位置情報と1以上の端末属性値とを用いて、1以上の他アバターのスコアを取得する。
端末処理部23は、例えば、1以上の他の端末装置2における1以上の他アバターの位置情報と、自アバターの位置情報とを用いて、1以上の他アバターのスコアを取得する。
具体的には、端末処理部23は、例えば、自アバターの位置情報、自アバターの向き情報、カメラ位置情報、カメラ向き情報、カメラの画角情報、1以上の各他アバターの位置情報のうちの2以上の情報を用いて、1以上の他アバターの動的属性値を取得する。
端末処理部23は、例えば、自アバターの位置情報と他アバターの位置情報とを用いて、自アバターと他アバターとの距離を取得する。また、端末処理部23は、例えば、自アバターの位置情報と自アバターの向き情報と他アバターの位置情報とを用いて、他アバターが自アバターの視野の中に入っているか否かを示す動的属性値(視野内属性値と言っても良い。)を取得する。また、端末処理部23は、例えば、カメラ位置情報とカメラ向き情報と画角情報他アバターの位置情報とを用いて、他アバターがカメラによる撮影の範囲に入っているか否かを示す動的属性値(撮影範囲属性値と言っても良い。)を取得する。
そして、端末処理部23は、例えば、他アバターに対して、三次元空間内における自アバターとの距離が近いほど大きな値のスコアを取得する。また、端末処理部23は、例えば、他アバターが自アバターの視野の中に入っている場合に、視野の中に入っていない場合と比較して、大きな値のスコアを取得する。また、端末処理部23は、例えば、カメラによる撮影の範囲に入っている場合に、撮影の範囲に入っていない場合と比較して、大きな値のスコアを取得する。
端末処理部23は、例えば、他アバターに対して、カメラとの距離が近いほど、大きな値のスコアを取得する。
さらに具体的には、端末処理部23は、例えば、他アバターに対して、距離をパラメータとする減少関数により、スコアを取得する。端末処理部23は、例えば、距離、視野内属性値、および撮影範囲属性値に対応するスコアを対応表から取得する。かかる場合、対応表は、例えば、距離の範囲、視野内属性値、および撮影範囲属性値の組と、スコアとの対応を示す2以上の対応情報を有する表である。
また、端末処理部23は、例えば、他アバターの1以上の静的属性値を用いて、以下のような他アバターのスコア取得処理を行っても良い。
1以上の静的属性値は、例えば、他アバターの役割に関する属性値、他アバターの由来に関する属性値のいずれかを含む。端末処理部23は、例えば、他アバターの役割が「主催者」または「司会者」である場合、他アバターの役割が「観客」である場合と比較して、高いスコアを取得する。端末処理部23は、例えば、例えば、他アバターがUGCである場合、UGCでない場合と比較して、高いスコアを取得する。
また、端末処理部23は、例えば、1以上の各他アバターのスコアを用いて、各他アバターに対応する判定結果を取得しても良い。端末処理部23は、スコアの幅と判定結果との対応を示す2以上の対応情報を有する対応表を参照し、スコアと対になる判定結果を、他アバターごとに取得する。端末処理部23は、例えば、スコアをパラメータとする演算式にスコアを代入し、当該演算式を実行し、判定結果を取得する。なお、判定結果は、他アバターを出力する際に使用するアバターを、2以上のアバター(例えば、第一アバターと第二アバター)のうちのいずれのアバターとするかの判定の結果である。
また、端末処理部23は、例えば、アバター出力装置1から、1以上の他アバターに対するモデル情報を取得し、当該モデル情報を用いて、表示されるアバターを構成するアバター構成処理を行う。なお、アバター構成処理は、公知技術である。
また、端末処理部23は、受信されたワールド情報を用いて、ワールドを構成し、当該ワールドの中に2以上のアバターを配置し、アバターが配置された三次元空間を構成する。なお、端末処理部23は、2以上の各アバターを、対応する位置情報で特定される位置に配置する。
端末送信部24は、各種の情報をアバター出力装置1に送信する。端末送信部24は、例えば、端末装置2に対応する自アバターの位置情報をアバター出力装置1に送信する。端末送信部24は、例えば、端末格納部21の1以上の属性値をアバター出力装置1に送信する。1以上の属性値は、例えば、自アバターの位置情報、自アバターの向き情報、端末属性値である。
端末送信部24は、端末装置2の端末識別子に対応付けて、1以上の他アバターのスコアまたは判定結果をアバター出力装置1に送信する。なお、ここで送信されるスコアまたは判定結果は、端末処理部23が取得した情報である。また、スコアまたは判定結果は、他アバターのアバター識別子に対応付いている。なお、スコアまの取得をアバター出力装置1が行う場合、端末送信部24は、スコアをアバター出力装置1に送信しない。判定結果の取得をアバター出力装置1が行う場合、端末送信部24は、判定結果をアバター出力装置1に送信しない。
端末受信部25は、アバター出力装置1から1以上の他の端末装置2に対応する他アバターの位置情報を受信する。端末受信部25は、例えば、他アバターの1以上の属性値をアバター出力装置1から受信する。
端末受信部25は、アバター出力装置1から他アバターのモデル情報であり、スコアまたは判定結果に応じた異なるモデル情報を受信する。
端末受信部25は、各アバターに対して、2種類以上のモデル情報を受信しても良い。かかる場合、端末処理部23は、他アバターのスコアまたは判定結果に応じて、他アバターを表示する際に使用するモデル情報を決定する。
端末受信部25は、アバター出力装置1からワールド情報をも受信することは好適である。
端末出力部26は、1以上の各モデル情報を用いて構成された1以上の他アバターを表示する。なお、表示は、他の表示媒体への送信でも良い。また、モデル情報は、2種類以上のモデル情報のうちの一のモデル情報である。
端末出力部26は、自アバターをも表示することは好適である。
端末出力部26は、ワールド情報をも用いて、ワールドを表示することは好適である。
端末出力部26は、アバターに対応する音声情報を出力することは好適である。出力される音声情報は、アバターのスコアまたは判定結果に応じた種類の音声情報(例えば、第一、または第二音声情報)であることは好適である。
格納部11、ワールド格納部111、アバター格納部112、および端末格納部21は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
格納部11等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部11等で記憶されるようになってもよく、通信回線等を介して送信された情報が格納部11等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部11等で記憶されるようになってもよい。
受付部12、アバター受信部121、および端末受信部25は、通常、無線または有線の通信手段で実現される。
処理部13、モデル圧縮部131、アバター蓄積部132、決定部133、アバター取得部134、音声取得部135、および端末処理部23は、通常、プロセッサやメモリ等から実現され得る。処理部13等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。なお、プロセッサは、MPU、CPU、GPU等であり、その種類は問わない。
出力部14、位置情報送信部141、アバター出力部142、および音声出力部143は、通常、無線または有線の通信手段で実現される。
端末受付部22は、タッチパネルやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
端末出力部26は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。端末出力部26は、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
次に、情報システムAの動作例について説明する。まず、アバター出力装置1の動作例について、図3のフローチャートを用いて説明する。
(ステップS301)アバター受信部121は、端末装置2からモデル情報等を受信したか否かを判断する。モデル情報等を受信した場合はステップS302に行き、モデル情報等を受信しなかった場合はステップS303に行く。なお、モデル情報等は、端末装置2に対応するアバターの第一モデル情報または元情報を含む情報である。モデル情報等は、例えば、端末装置2に対応するアバターの位置情報を含むことは好適である。モデル情報等は、アバター識別子を含んでも良い。なお、アバター識別子は、モデル情報等の受信に応じて、処理部13がユニークなアバター識別子を取得しても良い。ユニークなアバター識別子を取得する方法は問わない。また、ステップS301では、2以上の各端末装置2から、モデル情報等が受信される。
(ステップS302)アバター蓄積部132は、受信されたモデル情報等をアバター識別子に対応付けて蓄積する。ステップS301に戻る。
(ステップS303)処理部13は、圧縮処理等を開始するか否かを判断する。圧縮処理等を開始する場合はステップS304に行き、圧縮処理等を開始しない場合はステップS312に行く。なお、圧縮処理等は、ステップS304からS311の処理である。また、圧縮処理等を開始するための条件は問わない。かかる条件は、例えば、予め決められた時刻になったこと、処理部13が参加予定のすべての端末装置2からモデル情報等が受信された、と判断したことである。また、かかる条件は、例えば、受付部12が圧縮処理等のリクエストを、端末装置2から受信したことである。
(ステップS304)処理部13は、カウンタiに1を代入する。
(ステップS305)圧縮処理等の対象のi番目のアバターのアバター識別子が存在するか否かを判断する。i番目のアバター識別子が存在する場合はステップS306に行き、存在しない場合はステップS310に行く。
(ステップS306)モデル圧縮部131は、i番目のアバター識別子の第一モデル情報を取得する。
モデル圧縮部131は、受信された第一モデル情報を取得しても良いし、受信された元情報に対応する第一モデル情報を取得しても良い。つまり、モデル圧縮部131は、例えば、i番目のアバター識別子と対になる第一モデル情報をアバター格納部112から取得する。モデル圧縮部131は、例えば、i番目のアバター識別子と対になる元情報をアバター格納部112から取得し、当該元情報を用いて、第一モデル情報を取得する。かかる場合、元情報は、例えば、第一モデル情報の識別子、または第一モデル情報を構成する元になるモデル情報である。
(ステップS307)モデル圧縮部131は、ステップS306で取得した第一モデル情報より小さいデータサイズの1または2種類以上のモデル情報を取得する。1種類以上のモデル情報は、第二モデル情報を含む。
(ステップS308)アバター蓄積部132は、i番目のアバター識別子に対応付けて、第一モデル情報と第二モデル情報とを含むアバター情報をアバター格納部112に蓄積する。なお、アバター情報を蓄積することは、アバター情報が蓄積された状態にすることであり、元々、アバター格納部112に格納されていた情報は、ここで、蓄積する必要はない。
(ステップS309)処理部13は、カウンタiを1、インクリメントする。ステップS305に戻る。
(ステップS310)処理部13は、全アバターの1以上のスコア取得元属性値を、アバター識別子に対応付けて取得する。なお、スコア取得元属性値は、スコアを取得する元になる属性値であり、位置情報を含む。スコア取得元属性値は、通常、向き情報を含む。
(ステップS311)位置情報送信部141は、ステップS310で取得された各アバターの1以上のスコア取得元属性値をアバター識別子に対応付けて、2以上の全端末装置2に送信する。ステップS301に戻る。
(ステップS312)受付部12は、端末装置2からリクエストを受信したか否かを判断する。リクエストを受信した場合はステップS313に行き、リクエストを受信しなかった場合はステップS301に戻る。なお、ステップS312において、2以上の全端末装置2からリクエストを受信する。なお、リクエストは、アバター識別子に対応付けられた1以上の他アバターの判定結果またはスコアを含む。
(ステップS313)処理部13は、アバター情報取得処理を行う。アバター情報取得処理とは、アバターを表示するためのモデル情報等を取得する処理である。また、アバター情報取得処理は、ワールド情報を取得しても良い。アバター情報取得処理の例について、図4のフローチャートを用いて説明する。
(ステップS314)アバター出力部142は、ステップS313で取得された情報を、リクエストを送信してきた端末装置2に送信する。ステップS301に戻る。なお、送信される情報は、通常、アバターのモデル情報を含む。
なお、図3のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、ステップS313のアバター情報取得処理の例について、図4のフローチャートを用いて説明する。
(ステップS401)決定部133は、カウンタiに1を代入する。
(ステップS402)決定部133は、アバター情報取得処理に対応するi番目のアバター識別子が存在するか否かを判断する。i番目のアバター識別子が存在する場合はステップS403に行き、i番目のアバター識別子が存在しない場合はステップS406に行く。なお、i番目のアバター識別子は、通常、受信されたリクエストに含まれるi番目のアバター識別子である。
(ステップS403)決定部133は、i番目のアバター識別子に対応する判定結果またはスコアを取得する。また、決定部133は、スコアが取得された場合、当該スコアに対応する判定結果を取得する。なお、判定結果は、通常、取得するモデル情報の種類を特定する種類識別子である。種類識別子は、例えば、第一モデル情報に対応する「第一」、第二モデル情報に対応する「第二」である。
(ステップS404)アバター取得部134は、i番目のアバター識別子と判定結果に対応するモデル情報を、i番目のアバター識別子に対応付けて取得する。
アバター取得部134は、例えば、当該モデル情報をアバター格納部112から取得する。アバター取得部134は、例えば、当該モデル情報を第一モデル情報から生成する。
(ステップS405)決定部133は、カウンタiを1、インクリメントする。ステップS402に戻る。
(ステップS406)アバター取得部134は、ワールド情報を送信するか否かを判断する。ワールド情報を送信する場合はステップS407に行き、送信しない場合はステップS408に行く。なお、ワールド情報を送信する場合は、通常、動作開始から、一度も当該端末装置2にワールド情報を送信していない場合である。
(ステップS407)アバター取得部134は、ワールド情報をワールド格納部111から取得する。
(ステップS408)アバター取得部134は、1以上の各アバター識別子に対応付けられているモデル情報を含む情報を構成する。上位処理にリターンする。
なお、かかる情報は、ワールド情報を含んでも良い。かかる情報は、端末装置2に送信される情報である。
次に、端末装置2の動作例について、図5のフローチャートを用いて説明する。
(ステップS501)端末受付部22は、動作開始前の入力である初期入力を受け付けたか否かを判断する。初期入力を受け付けた場合はステップS502に行き、初期入力を受け付けなかった場合はステップS512に行く。なお、初期入力は、1以上のスコア取得元属性値を含む。
(ステップS502)端末処理部23は、ステップS501で受け付けられた初期入力を用いて、送信する情報を構成する。端末送信部24は、当該情報をアバター出力装置1に送信する。なお、当該情報は、例えば、モデル情報、位置情報、向き情報等を含む。
(ステップS503)端末受信部25は、ステップS502における送信に応じて、全アバターのスコア取得元属性値を受信したか否かを判断する。スコア取得元属性値を受信した場合はステップS504に行き、スコア取得元属性値を受信しなかった場合はステップS503に戻る。なお、端末受信部25は、各アバターのアバター識別子に対応付けて、アバターごとに、1以上のスコア取得元属性値を受信する。
(ステップS504)端末処理部23は、各アバターの1以上のスコア取得元属性値を用いて、各アバターのスコアを取得する。かかるスコア取得処理の例について、図6のフローチャートを用いて説明する。なお、スコア取得処理において、端末処理部23は、スコアを取得し、かつ当該スコアを用いて、判定結果を取得しても良い。スコア取得処理において、端末処理部23は、スコアを取得し、判定結果を取得しなくても良い。かかる場合、アバター出力装置1が判定結果を取得する。
(ステップS505)端末処理部23は、ステップS504で取得したスコアまたは判定結果を用いて、リクエストを構成する。なお、リクエストは、各アバターのアバター識別子に対応付くスコアまたは判定結果を有する。
(ステップS506)端末送信部24は、ステップS505で構成されたリクエストをアバター出力装置1に送信する。リクエストには、例えば、他アバターごとに取得したスコアと対応するアバター識別子を含めてもよいし、端末処理部23で判定結果を取得する場合は他アバターごとの判定結果と対応する識別子を含めてもよい。
(ステップS507)端末受信部25は、ステップS506におけるリクエストの送信に応じて、情報を受信したか否かを判断する。情報を受信した場合はステップS508に行き、情報を受信しなかった場合はステップS507に戻る。なお、情報は、通常、リクエストに応じてアバター出力装置1が出力した1以上の各アバターのモデル情報を含む。また、情報は、ワールド情報を含むことは好適である。また、情報は、1以上の各アバター識別子に対応付いた音声情報を含んでも良い。さらに、受信された情報は、端末格納部21に、少なくとも一時蓄積される。
(ステップS508)端末処理部23は、ステップS507で受信された情報を用いて、表示情報構成処理を行う。表示情報構成処理とは、端末装置2に表示する情報を構成する処理である。表示情報構成処理の例について、図7のフローチャートを用いて説明する。
(ステップS509)端末出力部26は、ステップS508で構成された情報を出力する。なお、出力される情報は、通常、ワールドと1または2以上のアバターとを含む。
(ステップS510)端末処理部23は、ステップS507で受信された情報が音声情報を有するか否かを判断する。音声情報を有する場合はステップS511に行き、音声情報を有しない場合はステップS501に戻る。
(ステップS511)処理部13等は、音声出力処理を行う。ステップS501に戻る。音声出力処理の例について、図8のフローチャートを用いて説明する。
(ステップS512)端末受付部22は、ユーザからの入力を受け付けたか否かを判断する。入力を受け付けた場合はステップS513に行き、入力を受け付けなかった場合はステップS519に行く。ユーザからの入力は、例えば、自アバターの位置情報の変更の入力、自アバターの向き情報の変更の入力、自アバターの音声情報である。
(ステップS513)端末処理部23は、ステップS512における入力に基づいて、属性値(例えば、変化した自アバターの位置情報、変化した自アバターの向き情報など)を取得する。端末処理部23は、当該入力に基づいて、変更されるスコアを取得する。また、ステップS519で、情報が受信された場合、端末処理部23は、受信された情報に基づいて、変更されるスコアを取得する。かかるスコア取得処理について、図6のフローチャートを用いて説明する。
(ステップS514)端末処理部23は、ステップS504で取得したスコアまたは判定結果を用いて、リクエストを構成する。なお、リクエストは、各アバターのアバター識別子に対応付くスコアまたは判定結果を有する。
また、2回目以降のリクエストの送付の場合、端末処理部23は、前回のスコアまたは判定結果と、異なったスコアまたは判定結果が得られたアバターに関するリクエストを構成することは好適である。かかるリクエストは、スコアまたは判定結果に変化のないアバターのスコアまたは判定結果を含まない。かかるリクエストは、異なったスコアまたは判定結果が得られたアバターのアバター識別子と、スコアまたは判定結果を含む。
また、各アバターのスコアまたは判定結果に変化がない等の場合には、ステップS514において、リクエストが構成されない場合もあり得る。
(ステップS515)端末処理部23は、ステップS514において、リクエストが構成されたか否かを判断する。リクエストが構成された場合はステップS506に行き、リクエストが構成されなかった場合はステップS516に行く。
(ステップS516)端末処理部23は、ステップS512における入力に対応する情報を送信するか否かを判断する。情報を送信する場合はステップS517に行き、情報を送信しない場合はステップS508に行く。なお、入力に対応する情報は、例えば、ユーザが入力した音声情報、入力後の新しい自アバターの位置や向きに関する情報である。
(ステップS517)端末処理部23は、ステップS512における入力に対応する送信情報を構成する。
(ステップS518)端末送信部24は、ステップS517で構成された送信情報を、自分のアバター識別子と対にして、アバター出力装置1に送信する。ステップS508に行く。
(ステップS519)端末受信部は、アバター出力装置1から情報を受信したか否かを判断する。情報を受信した場合はステップS513に行き、情報を受信しなかった場合はステップS501に戻る。なお、情報とは、例えば、音声情報、他アバターの変更された位置情報、他アバターの変更された向き情報である。
なお、図5のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
次に、ステップS504のスコア取得処理の例について、図6のフローチャートを用いて説明する。
(ステップS601)端末処理部23は、スコアを取得するための1以上の属性値を取得する。ここでの1以上の属性値は、自アバターの位置情報を含む。ここでの1以上の属性値は、例えば、自アバターの向き情報、カメラ位置情報、カメラ向き情報、カメラの画角情報を含む。
(ステップS602)端末処理部23は、カウンタiに1を代入する。
(ステップS603)端末処理部23は、スコアを取得する対象のi番目のアバターのアバター識別子が存在するか否かを判断する。i番目のアバター識別子が存在する場合はステップS604に行き、存在しない場合は上位処理にリターンする。
(ステップS604)端末処理部23は、i番目のアバター識別子と対になる1以上のスコア取得元属性値を取得する。なお、1以上のスコア取得元属性値は、例えば、i番目のアバターの位置情報、向き情報、役割属性値、由来属性値である。
(ステップS605)端末処理部23は、自アバターの位置情報と自アバターの向き情報とi番目のアバターの位置情報とを用いて、ユーザ視野属性値を取得する。なお、ユーザ視野属性値は、自アバターの視野の中にi番目のアバターが存在するか否かを示す情報である。
(ステップS606)端末処理部23は、カメラ位置情報とカメラ向き情報とカメラの画角情報とi番目のアバターの位置情報とを用いて、カメラ視野属性値を取得する。なお、カメラ視野属性値は、i番目のアバターがカメラの撮影範囲であるか否かを示す情報である。
(ステップS607)端末処理部23は、自アバターの位置情報とi番目のアバターの位置情報とを用いて、ユーザ距離属性値を取得する。なお、ユーザ距離属性値は、自アバターとi番目のアバターとの距離を特定する情報である。
(ステップS608)端末処理部23は、自アバターの向き情報とi番目のアバターの向き情報とを用いて、ユーザ向き属性値を取得する。なお、ユーザ向き属性値は、自アバターとi番目のアバターとの相対的な向きに関する情報であり、例えば、自アバターとi番目のアバターとの角度に関する情報、自アバターとi番目のアバターとが向き合っているか否かを示す情報である。
(ステップS609)端末処理部23は、カメラ位置情報とi番目のアバターの位置情報とを用いて、カメラ距離属性値を取得する。なお、カメラ距離属性値は、カメラとi番目のアバターとの距離を特定する情報である。
(ステップS610)端末処理部23は、ステップS605からステップS609で取得した動的属性値のうち、1または2以上の動的属性値を用いて、i番目のアバターのスコアを取得する。
(ステップS611)端末処理部23は、i番目のアバターのスコアを用いて、i番目のアバターの判定結果を取得する。なお、判定結果は、ここでは、例えば、種類識別子である。なお、端末処理部23は、通常、スコアが高いほど、大きなデータサイズに対応する判定結果を取得する。
(ステップS612)端末処理部23は、i番目のアバター識別子に対応付けて、判定結果を一時蓄積する。なお、端末処理部23は、i番目のアバター識別子に対応付けて、スコアを一時蓄積しても良い。
(ステップS613)端末処理部23は、カウンタiに1を1、インクリメントする。ステップS603に戻る。
なお、図6のフローチャートにおいて、端末処理部23は、判定結果を取得しなくても良い。かかる場合、端末処理部23は、i番目のアバター識別子に対応付けて、スコアを一時蓄積する。
次に、ステップS508の表示情報構成処理の例について、図7のフローチャートを用いて説明する。
(ステップS701)端末処理部23は、ワールド情報を取得する。なお、ワールド情報は、アバター出力装置1から受信された情報、または端末格納部21に格納されている情報である。
(ステップS702)端末処理部23は、カウンタiに1を代入する。
(ステップS703)端末処理部23は、構成する対象のi番目のアバターのアバター識別子が存在するか否かを判断する。i番目のアバター識別子が存在する場合はステップS704に行き、i番目のアバター識別子が存在しない場合は上位処理にリターンする。
(ステップS704)端末処理部23は、i番目のアバター識別子と対になる1以上の属性値等を端末格納部21から取得する。
(ステップS705)端末処理部23は、ステップS704で取得した1以上の属性値等を用いて、i番目のアバターを出力するか否かを判断する。i番目のアバターを出力する場合はステップS706に行き、i番目のアバターを出力しない場合はステップS70に行く。端末処理部23は、例えば、カメラに視野に入っていない他アバター、またはユーザの自アバターの視野に入っていない他アバターは、出力しないと判断する。
(ステップS706)端末処理部23は、i番目のアバター識別子と対になるモデル情報を取得する。なお、モデル情報は、例えば、各アバターの判定結果に基づいて決定された第一モデル情報または第二モデル情報である。
(ステップS707)端末処理部23は、ステップS706で取得したモデル情報を用いて表示するアバターを構成する。
(ステップS708)端末処理部23は、i番目のアバター識別子と対になる位置情報を用いて、ステップS707で構成したアバターを、ステップS701で取得したワールド情報により構成されるワールドの中に配置する。
(ステップS709)端末処理部23は、カウンタiに1を1、インクリメントする。ステップS703に戻る。
次に、ステップS511の音声出力処理の例について、図8のフローチャートを用いて説明する。
(ステップS801)端末処理部23は、カウンタiに1を代入する。
(ステップS802)端末処理部23は、i番目のアバターのアバター識別子が存在するか否かを判断する。i番目のアバター識別子が存在する場合はステップS803に行き、i番目のアバター識別子が存在しない場合は上位処理にリターンする。
(ステップS803)端末処理部23は、i番目のアバター識別子と対になる音声情報が存在するか否かを判断する。当該音声情報が存在する場合はステップS804に行き、存在しない場合はステップS807に行く。なお、i番目のアバター識別子と対になる音声情報は、例えば、アバター出力装置1から受信された情報である。
(ステップS804)端末処理部23は、i番目のアバター識別子と対になるスコアまたは判定結果を取得する。
(ステップS805)端末処理部23は、ステップS804におけるスコアまたは判定結果に応じた種類の音声情報を取得する。
ここで、i番目のアバター識別子と対にして2以上の種類の音声情報が格納されている場合、例えば、端末処理部23は、i番目のアバター識別子と対になる音声情報(例えば、第一音声情報、第二音声情報)のうちの、スコアまたは判定結果に応じた種類の音声情報を取得する。i番目のアバター識別子と対にして一の音声情報が格納されている場合、例えば、端末処理部23は、スコアまたは判定結果に応じて、当該一の音声情報の属性値(例えば、音量、周波数)を変更し、出力する音声情報を取得する。
(ステップS806)端末出力部26は、ステップS805で取得された音声情報を出力する。
(ステップS807)端末処理部23は、カウンタiに1を1、インクリメントする。ステップS802に戻る。
以下、本実施の形態における情報システムAの具体的な動作例について、図9を用いて説明する。情報システムAは、アバター出力装置1と2以上の端末装置2を有する。ここで、2以上の端末装置2を、端末装置2(1)、・・・、端末装置2(N)とする。
端末装置2(1)の端末受付部22は、ユーザからモデル情報等を受け付けた、とする。そして、端末処理部23は、受け付けられたモデル情報等を用いて、送信するモデル情報等を構成する。端末送信部24は、当該モデル情報をアバター出力装置1に送信する(901参照)。なお、モデル情報等は、ここで、第一モデル情報、1以上の属性値を有する。1以上の属性値は、ここでは、位置情報、役割属性値、由来属性値、端末属性値を含む、とする。
また、同様に、端末装置2(N)も、ユーザから受け付けたモデル情報等をアバター出力装置1に送信する(902参照)。
次に、アバター出力装置1のアバター受信部121は、端末装置2(1)や端末装置2(N)等からモデル情報等を受信する(901、902参照)。そして、アバター蓄積部132は、各モデル情報等に対して、ユニークなアバター識別子を生成する。次に、アバター蓄積部132は、受信されたモデル情報等を、アバター識別子に対応付けて、アバター格納部112の図10の構造を有するアバター管理表に蓄積した、とする。
アバター管理表は、「ID」「アバター識別子」「第一モデル情報」「第二モデル情報」「属性値」を有する。また、「属性値」は、「位置情報」「役割属性値」「由来属性値」「端末属性値」を有する。「端末属性値」は、ここでは「画面サイズ」「動作周波数」を有する。「ID」は、レコードを識別する情報である。「第一モデル情報」は、第一モデル情報のファイル名である。「第二モデル情報」は、第二モデル情報のファイル名である。なお、各ファイルも、アバター格納部112に格納されている。「位置情報」は、三次元空間におけるアバターの位置を特定する情報である。また、ここでは、「役割属性値」は、「主催者」「司会者」「観客」のいずれかを採り得る。「由来属性値」は、「UGC」「デフォルト」のいずれかを採り得る。「UGC」は、ユーザが作成したアバターであることを示す。「デフォルト」は、デフォルトのアバターであることを示す。デフォルトのアバターは、例えば、アバター出力装置1の管理者が予め用意しているアバターである。なお、現段階では、表の「第二モデル情報」には、情報が存在しない。
次に、アバター出力装置1のモデル圧縮部131は、予め決められた条件を満たした(例えば、予め決められた時刻になった)ことを検知し、端末装置2(1)や端末装置2(N)等の第一モデル情報に対して、上述した圧縮処理を行い、第二モデル情報を取得する(903参照)。次に、モデル圧縮部131は、2以上の各第二モデル情報をアバター格納部112に蓄積し、2以上の各第二モデル情報のファイル名を、アバター識別子と対にして、アバター管理表に蓄積する。以上の処理により、図10のアバター管理表が構成された。なお、図10のアバター管理表において、「D1.json」はデフォルトのアバターの第一モデル情報であり、「D2.json」はデフォルトのアバターの第二モデル情報である。
次に、処理部13は、全アバターのスコア取得元属性値を、アバター識別子に対応付けて、図10のアバター管理表、または格納部11から取得する。スコア取得元属性値は、ここでは、図10の5つの属性値、およびカメラ属性値(カメラ位置情報、カメラ向き情報、画角情報)である、とする。なお、カメラ属性値は、格納部11に格納されている、とする。
次に、位置情報送信部141は、全アバターのスコア取得元属性値を、アバター識別子に対応付けて、端末装置2(1)や端末装置2(N)を含む全ての端末装置2に送信する(904、905参照)。
次に、端末装置2(1)の端末受信部25は、全アバターのスコア取得元属性値を受信する(904参照)。また、端末装置2(N)等の端末受信部25も、全アバターのスコア取得元属性値を受信する(904参照)。
次に、端末装置2(1)等の端末処理部23は、受信されたスコア取得元属性値が有する各他アバターの位置情報と、カメラ位置情報とカメラ向き情報と画角情報とを用いて、各他アバターの撮影範囲属性値、カメラからの距離を、他アバターごとに、取得する。また、端末装置2(1)等のすべての端末処理部23は、各々の自アバターの位置情報と各他アバターの位置情報とを用いて、自アバターと他アバターとの距離を、他アバターごとに、取得する。
次に、端末装置2(1)等の端末処理部23は、各他アバターごとに、他アバターに対応する撮影範囲属性値、カメラからの距離、自アバターと他アバターとの距離、役割属性値、由来属性値等を用いて、スコアを取得する。次に、端末装置2(1)等の端末処理部23は、各他アバターごとに、判定結果「第一」または「第二」を取得する。なお、端末処理部23は、ここでは、スコアが閾値以上の他アバターに対しては、「第一」の判定結果を取得し、スコアが閾値未満の他アバターに対しては、「第二」の判定結果を取得する、とする(906、907参照)。
また、ここでの判定結果の概念は、例えば、図11である。図11において、グレーで示された領域1101がカメラの撮影範囲である場合に、カメラの撮影範囲に含まれ、かつ、カメラから近い9つのアバターの判定結果は「第一」であり、他のアバターの判定結果は「第二」である。図11において、判定結果「第一」のアバターは黒く塗りつぶされており、判定結果「第二」のアバターは黒く塗りつぶされていない。また、端末装置2(1)、・・・、端末装置2(N)のうちの各端末装置2によって、判定結果は異なることは好適である。なお、判定結果「第一」に対応する9つのアバターは、図11のA01、A02、A03、A04、A05、A06、A07、A08、A09である。
同様に、図11において、グレーで示された領域1101が特定の端末装置(N)から見た視野とすれば、自アバターの視野を考慮した判定が可能となる。
次に、端末装置2(1)等のすべての端末処理部23は、他アバターのアバター識別子と判定結果との組を、他アバターの数だけ有するリクエストとを構成する。次に、端末装置2(1)、・・・、端末装置2(N)の各端末送信部24は、リクエストをアバター出力装置1に送信する(908、909参照)。
次に、アバター出力装置1の受付部12は、2以上の各端末装置2からリクエストを受信する(908、909参照)。
次に、アバター出力装置1の決定部133は、各端末装置2からのリクエストに含まれる各アバター識別子に対応する判定結果を取得する。次に、アバター取得部134は、アバター識別子ごとに、判定結果に応じて、属性値「第一モデル情報」または属性値「第二モデル情報」のファイル名をアバター管理表(図10)から取得し、当該ファイル名で識別される第一モデル情報または第二モデル情報を、アバター識別子に対応付けて、アバター格納部112から取得する。なお、判定結果「第一」に対応するアバター識別子に対して第一モデル情報が取得され、判定結果「第二」に対応するアバター識別子に対して第二モデル情報が取得される。
次に、アバター取得部134は、ワールド情報を送付したか否かを示すフラグワールド情報送付フラグがOFF(未送付)であることを検知し、ワールド情報を送信する、と判断する。そして、アバター取得部134は、ワールド情報をワールド格納部111から取得する。決定部133およびアバター取得部134は、端末装置2ごとに、上記の処理を行い、アバター識別子に対応付けられた第一モデル情報または第二モデル情報、およびワールド情報を取得する(910、911参照)。
次に、アバター出力部142は、アバター取得部134により取得された情報を、リクエストを送信してきた2以上の各端末装置2に送信する(912、913参照)。なお、処理部13は、ワールド情報の送付により、ワールド情報送付フラグをON(送付済み)とする。
次に、2以上の各端末装置2の端末受信部25は、リクエストの送信に応じて、情報を受信する(912、913参照)。ここでの情報は、ワールド情報と、アバター識別子とモデル情報との2以上の組を含む。
次に、2以上の各端末装置2の端末処理部23は、受信された情報を用いて、上述した表示情報構成処理を行う(914、915参照)。端末出力部26は、表示情報構成処理により構成された情報を出力する(916、917参照)。出力される情報は、仮想的な三次元空間の中に多数のアバターを有する。なお、かかる出力例は、図12である。図12において、2以上の端末装置2の各ユーザに対応するアバターが、ワールドと共に表示されている。また、端末装置2によって、同じアバターでも、第一モデル情報が使用されたり、第二モデル情報が使用されたりすることは好適である。
また、図12の1201の仮想的なスクリーンにおいて、ワールド内のカメラで取得された映像が表示されることは好適である。かかる場合、例えば、アバター出力装置1は、ワールド内のカメラで取得される映像を構成し、各端末装置2に送信する。そして、各端末装置2の端末受信部25は、カメラで取得される映像を受信する。そして、端末処理部23は、受信された映像をワールド内の仮想的なスクリーンに貼り付ける、次に、端末出力部26は、かかる映像が貼り付けられたスクリーンを含むワールドを、各ユーザに対応するアバターと共に出力する。
さらに、時間が経過し、ユーザが端末装置2(1)に、自アバターの位置情報を変更する入力を行った、とする(918参照)。
次に、端末装置2(1)の端末処理部23は、自アバターの位置情報の変更に応じて、1以上の各他アバターのスコアを、再度、算出する。なお、端末処理部23は、自アバターの位置情報以外の情報(他アバターの情報、カメラ属性値等)は、既に受信し、蓄積されている情報を用いて、1以上の各他アバターのスコアを算出する、とする。
次に、端末装置2(1)の端末処理部23は、1以上の各他アバターのスコアに応じた判定結果を取得する(919参照)。
次に、端末処理部23は、前回の判定結果と比較して、判定結果に変化があった他アバターのアバター識別子と判定結果との1組以上の組、および変更された自アバターの位置情報を有するリクエストを構成する。
次に、端末装置2(1)の端末送信部24は、当該リクエストをアバター出力装置1に送信する(920参照)。
次に、アバター出力装置1の受付部12は、端末装置2(1)からリクエストを受信する(920参照)。
次に、アバター出力装置1の決定部133は、端末装置2(1)からのリクエストに含まれる1以上の各アバター識別子に対応する判定結果を取得する。次に、アバター取得部134は、アバター識別子ごとに、判定結果に応じて、属性値「第一モデル情報」または属性値「第二モデル情報」のファイル名をアバター管理表(図10)から取得し、当該ファイル名で識別される第一モデル情報または第二モデル情報を、アバター識別子に対応付けて、アバター格納部112から取得する。
次に、端末装置2(1)に既にワールド情報を送信しているので、アバター取得部134は、ワールド情報を送信しない、と判断する。
次に、アバター出力部142は、アバター取得部134により取得された情報を、リクエストを送信してきた端末装置2(1)に送信する(921参照)。
また、端末装置2(1)の端末処理部23は、自アバターの位置情報の更新に応じて、受信された他アバターのモデル情報をも用いて、変更される表示情報を構成する(922参照)。次に、端末装置2(1)の端末出力部26は、新たに構成された表示情報を出力する(923参照)。なお、端末処理部23は、自アバターの位置情報の更新に応じて、他アバターの位置情報(相対的な位置情報)も変更する。
また、アバター出力部142は、端末装置2(1)のアバターの変更された位置情報と端末装置2(1)のアバターのアバター識別子とを含む他アバターの情報を、端末装置2(N)を含む1以上の端末装置2に送信する(924参照)。
次に、端末装置2(N)等の端末受信部25は、端末装置2(1)の他アバターの情報を受信する。
次に、端末装置2(N)等の端末処理部23は、端末装置2(1)のアバターの位置情報の変更による、端末装置2(1)のアバターに対する新たなスコアを取得する。次に、端末装置2(N)等の端末処理部23は、端末装置2(1)のアバターに対する判定結果を取得する(925参照)。
そして、端末装置2(N)における端末装置2(1)のアバターの判定結果が、前回の判定結果とは異なる判定結果になった、とする。
次に、端末装置2(N)の端末送信部24は、端末装置2(1)の他アバターのアバター識別子と新たな判定結果とを含むリクエストをアバター出力装置1に送信する(926参照)。なお、端末装置2(1)のアバターの判定結果が、前回の判定結果と同じ端末装置(2)は、リクエストをアバター出力装置1に送信しない、とする。
次に、アバター出力装置1の受付部12は、端末装置2(N)からリクエストを受信する(926参照)。
次に、アバター出力装置1の決定部133は、端末装置2(N)からのリクエストに含まれるアバター識別子に対応する判定結果を取得する。次に、アバター取得部134は、当該アバター識別子の判定結果に応じて、属性値「第一モデル情報」または属性値「第二モデル情報」のファイル名であり、当該アバター識別子と対になるファイル名を、アバター管理表(図10)から取得し、当該ファイル名で識別される第一モデル情報または第二モデル情報を、アバター識別子に対応付けて、アバター格納部112から取得する。
次に、アバター出力部142は、アバター取得部134により取得された情報を、リクエストを送信してきた端末装置2(N)に送信する(927参照)。
次に、端末装置2(N)の端末受信部25は、リクエストの送信に応じて、情報を受信する(927参照)。
次に、端末装置2(N)の端末処理部23は、受信された情報を用いて、表示情報構成処理を行う(928参照)。端末装置2(N)の端末出力部26は、表示情報構成処理により構成された情報を出力する(929参照)。なお、かかる表示情報構成処理により、端末装置2(N)において、例えば、端末装置2(1)のアバターの位置が移動し、かつ当該アバターの表示に利用されるモデル情報が、第二モデル情報から第一モデル情報に変更される。
なお、端末装置2(1)のアバターの位置情報の変更により、端末装置2(N)以外の端末装置2も、アバター出力装置1にリクエストを送信し、端末装置2(N)と同様に、変更された情報を出力しても良い。
以上、本実施の形態によれば、2以上のアバターのうちの少なくとも一部のアバターを、よりデータサイズの小さなアバターとすることにより、多数のアバターを出力する場合に、処理の負荷を抑制しつつ、ユーザにとって適切なアバターを得ることができる。
また、本実施の形態によれば、アバターに応じた音声情報を使用することにより、2以上のアバターの適切な音声が出力できる。
また、本実施の形態によれば、2以上の各端末装置から、アバターのモデル情報または元情報を受信し、利用できる。つまり、ユーザは自分の好きなアバターを場に表示できる。
また、本実施の形態によれば、2以上の各端末装置2で他アバターのスコアを取得することにより、アバター出力装置1における負荷が軽減できる。
また、本実施の形態によれば、アバターの適切な動的属性値を用いて取得した適切なスコアに基づいて、より小さなデータサイズとするアバターを決定できる。
また、本実施の形態によれば、一部の箇所についてのみ小さいサイズとしたアバターを使用できる。
さらに、本実施の形態によれば、2以上の各端末装置2とアバター出力装置1とで処理を適切に分担できる。
なお、本実施の形態において、アバターが端末装置2に表示されるまでの処理において、2以上の各端末装置2とアバター出力装置1とで、如何様に処理を分担しても良い。上記の具体例において、例えば、各アバターのスコアの取得と判定は、端末装置2が行ったが、例えば、各アバターのスコアの取得は端末装置2が行い、スコアを用いた判定はアバター出力装置1が行っても良い。また、各アバターのスコアの取得と判定は、アバター出力装置1が行っても良い。
また、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD-ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態におけるアバター出力装置1を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、2以上の各アバターごとに、アバターを表示するための第一モデル情報を有するアバター情報が格納されるアバター格納部にアクセス可能なコンピュータを、前記2以上のアバターのうち、前記第一モデル情報を用いて表示される1以上の第一アバターと、前記第一モデル情報より小さいデータサイズの第二モデル情報を用いて表示される1以上の第二アバターとを決定する決定部と、前記決定部が決定した前記1以上の各第二アバターについては、前記第二モデル情報を用いたアバターを取得し、前記1以上の各第一アバターについては、前記第一モデル情報を用いたアバターを取得するアバター取得部と、前記アバター取得部が取得した2以上のアバターを出力するアバター出力部として機能させるためのプログラムである。
また、図13は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態のアバター出力装置1等を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図13は、このコンピュータシステム300の概観図であり、図14は、システム300のブロック図である。
図13において、コンピュータシステム300は、CD-ROMドライブを含むコンピュータ301と、キーボード302と、マウス303と、モニタ304とを含む。
図14において、コンピュータ301は、CD-ROMドライブ3012に加えて、MPU3013と、CD-ROMドライブ3012等に接続されたバス3014と、ブートアッププログラム等のプログラムを記憶するためのROM3015と、MPU3013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM3016と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3017とを含む。ここでは、図示しないが、コンピュータ301は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。なお、2以上の各端末装置2は、カメラ、スピーカー、マイクを含むことは好適である。
コンピュータシステム300に、上述した実施の形態のアバター出力装置1等の機能を実行させるプログラムは、CD-ROM3101に記憶されて、CD-ROMドライブ3012に挿入され、さらにハードディスク3017に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ301に送信され、ハードディスク3017に記憶されても良い。プログラムは実行の際にRAM3016にロードされる。プログラムは、CD-ROM3101またはネットワークから直接、ロードされても良い。
プログラムは、コンピュータ301に、上述した実施の形態のアバター出力装置1等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム300がどのように動作するかは周知であり、詳細な説明は省略する。
なお、上記プログラムにおいて、情報を送信するステップや、情報を受信するステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、上記各実施の形態において、一の装置に存在する2以上の通信手段は、物理的に一の媒体で実現されても良いことは言うまでもない。
また、上記各実施の形態において、各処理は、単一の装置によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。