[本開示が示す実施形態の説明]
本開示が示す実施形態の概要を説明する。
(1)第1ユーザの身体の一部の動きを検出するように構成されたセンサを有し、前記第1ユーザに関連付けられた第1ユーザ端末と、ヘッドマウントデバイスを有し、第2ユーザに関連付けられた第2ユーザ端末とを備えた情報処理システムにおいてコンピュータによって実行される情報処理方法であって、
前記情報処理方法は、
(a)前記第1ユーザに関連付けられた第1アバターを含み、前記第2ユーザに提供される仮想空間を規定する仮想空間データを生成するステップと、
(b)前記ヘッドマウントデバイスの動きと前記仮想空間データに基づいて、第1レートで、前記ヘッドマウントデバイスに表示される視野画像を更新するステップと、
(c)前記センサによって検出された検出データに基づいて、第2レートで前記第1ユーザの身体の一部の第1位置情報を取得するステップと、
(d)前記第1位置情報に基づいて、前記第1ユーザの身体の前記一部に対応する前記第1アバターの身体の一部の第2位置情報を生成するステップと、
(e)前記第1レート及び前記第2レートよりも低い第3レートで、前記第1位置情報又は前記第2位置情報を前記第2ユーザ端末に向けて送信するステップと、
(f)前記第2位置情報に基づいて、前記第1レートで、前記仮想空間内の前記第1アバターの身体の前記一部の位置を更新するステップと、
を含み、
前記第1位置情報は、前記第1ユーザの身体の前記一部を包含する第1身体領域を構成する複数の部分領域のうちの前記第1ユーザの身体の前記一部が現在位置している第1部分領域を示す情報であって、
前記第2位置情報は、前記第1アバターの身体の前記一部を包含する第2身体領域を構成する複数の部分領域のうちの前記第1アバターの身体の前記一部が現在位置している第2部分領域を示す情報であって、
前記ステップ(e)では、
前記第1位置情報又は前記第2位置情報を送信する時点の直前に生成された前記第1位置情報又は前記第2位置情報を前記第2ユーザ端末に向けて送信する、
情報処理方法。
上記方法によれば、第1レート及び第2レートよりも低い第3レートで、第1位置情報又は第2位置情報が第2ユーザ端末に向けて送信される場合において、第1位置情報又は第2位置情報を送信する時点の直前に生成された第1位置情報又は第2位置情報が第2ユーザ端末に向けて送信される。このように、生成された第1位置情報又は第2位置情報は、間引かれた状態で第2ユーザ端末に向けて送信される。さらに、第2ユーザ端末に送信される第1位置情報(又は第2位置情報)は、第1ユーザ(又は第1アバター)の身体の一部が現在位置している第1部分領域(又は第2部分領域)を示す情報であって、第1ユーザ(又は第1アバター)の身体の一部の位置座標を示す情報ではない。したがって、第2ユーザ端末に送信すべき情報量を低減させることができるため、第1ユーザ端末と第2ユーザ端末との間の通信負荷を低減させることが可能となる。このように、情報処理システムにおける通信負荷を低減させることが可能な情報処理方法を提供することができる。
(2)前記第1ユーザの身体の前記一部は、前記第1ユーザの黒目であり、
前記第1アバターの身体の前記一部は、前記第1アバターの黒目であり、
前記第1身体領域は、前記第1ユーザの白目を包含し、
前記第2身体領域は、前記第1アバターの白目を包含する、
項目(1)に記載の情報処理方法。
上記方法によれば、センサによって検出された検出データに基づいて、第1ユーザの黒目の第1位置情報が取得される。また、第1位置情報に基づいて、第1ユーザの黒目に対応する第1アバターの黒目の第2位置情報が生成される。さらに、第2位置情報に基づいて、仮想空間内の第1アバターの黒目の位置が更新される。このように、第1ユーザの黒目の位置と、第1アバターの黒目の位置を同期させることが可能となるため、ユーザの表情をリアルにアバターの表情に反映させることが可能となる。
(3)前記ステップ(f)では、
前記第1ユーザの身体の前記一部が前記第1部分領域から前記第1ユーザの身体の前記一部の移動先の部分領域である第3部分領域に移動した場合に、前記第1アバターの身体の前記一部が前記第1アバターの身体の前記一部の移動先の部分領域である第4部分領域の中心位置に向かって徐々に移動するように、前記第1アバターの身体の前記一部の位置を更新する、
項目(1)又は(2)に記載の情報処理方法。
上記方法によれば、第1ユーザの身体の一部が第1部分領域から第3部分領域に移動した場合に、第1アバターの身体の一部が第4部分領域の中心位置に向かって徐々に移動する。このように、第1ユーザの身体の一部が第1部分領域から第3部分領域に移動した場合に、第1アバターの身体の一部を第2部分領域から第4部分領域に向けて滑らかに移動させることが可能となる。換言すれば、第1ユーザの身体の一部が第1部分領域から第3部分領域に移動した場合に、第1アバターの身体の一部は、第2部分領域から第4部分領域に瞬時に移動(ワープ)しない。従って、アバターの身体の一部の動きをユーザの身体の一部の動きに滑らかに追従させることが可能となる。
(4)(g)前記第1ユーザの身体の前記一部の第1方向情報を取得するステップと、
(h)前記1方向情報に基づいて、前記第1アバターの身体の前記一部の第2方向情報を取得するステップと、
をさらに含み、
前記第1方向情報は、前記第1ユーザの身体の前記一部の移動先の部分領域である第3部分領域を示す情報であって、
前記第2方向情報は、前記第1アバターの身体の前記一部の移動先の部分領域である第4部分領域を示す情報であって、
前記ステップ(e)は、前記第3レートで、前記1方向情報又は前記第2方向情報を送信するステップを含み、
前記ステップ(f)では、前記第2位置情報と前記第2方向情報に基づいて、前記仮想空間内の前記第1アバターの身体の前記一部の位置を更新する、
項目(1)から(3)のうちいずれか一項に記載の情報処理方法。
上記方法によれば、第2位置情報と第2方向情報に基づいて、仮想空間内の第1アバターの身体の一部の位置が更新される。このように、第1アバターの身体の一部の移動先を考慮した上で、第1アバターの身体の一部の位置を更新することができる。
(5)前記ステップ(f)では、
前記第1アバターの身体の前記一部が前記第4部分領域に向かって前記第2部分領域内を徐々に移動するように前記第1アバターの身体の前記一部の位置を更新する、
項目(4)に記載の情報処理方法。
上記方法によれば、第1アバターの身体の一部が第4部分領域(移動先の部分領域)に向かって第2部分領域(移動元の部分領域)内を徐々に移動する。このように、ユーザの身体の一部が第1部分領域から第3部分領域に移動した場合に、第1アバターの身体の一部を第2部分領域から第4部分領域に向けて滑らかに移動させることが可能となる。従って、アバターの身体の一部の動きをユーザの身体の一部の動きに滑らかに追従させることが可能となる。
(6)前記第3部分領域は、前記第1部分領域内で移動する前記第1ユーザの身体の前記一部の少なくとも一つの移動方向に基づいて特定される、
項目(4)又は(5)に記載の情報処理方法。
上記方法によれば、第1部分領域内で移動する第1ユーザの身体の一部の少なくとも一つの移動方向に基づいて、第1ユーザの身体の前記一部の移動先の第3部分領域を特定することが可能となる。
(7)項目(1)から(6)のうちいずれか一項に記載の情報処理方法をコンピュータに実行させるための情報処理プログラム。
上記によれば、情報処理システムにおける通信負荷を低減させることが可能な情報処理プログラムを提供することができる。
(8)第1ユーザの身体の一部の動きを検出するように構成されたセンサを有し、前記第1ユーザに関連付けられた第1ユーザ端末と、
表示部を有し、第2ユーザに関連付けられた第2ユーザ端末と、
を備え、項目(1)から(6)のうちいずれか一項に記載の情報処理方法を実行するように構成された、情報処理システム。
上記によれば、通信負荷が低減された情報処理システムを提供することができる。
(9)プロセッサと、
コンピュータ可読命令を記憶するメモリと、を備えた情報処理装置であって、
前記コンピュータ可読命令が前記プロセッサにより実行されると、前記情報処理装置は項目(1)から(6)のうちいずれか一項に記載の情報処理方法を実行する、情報処理装置。
上記によれば、情報処理システムにおける通信負荷を低減させることが可能な情報処理装置を提供することができる。尚、情報処理装置は、ユーザ端末又はサーバのいずれか一方である点に留意されたい。
[本開示が示す実施形態の詳細]
以下、本開示が示す実施形態について図面を参照しながら説明する。尚、本実施形態の説明において既に説明された要素と同一の参照番号を有する要素については、説明の便宜上、その説明は繰り返さない。
最初に、仮想空間配信システム100(情報処理システム)の構成の概略について図1を参照して説明する。図1は、仮想空間配信システム100(以下、単に配信システム100という。)の概略図である。図1に示すように、配信システム100は、ヘッドマウントデバイス(HMD)110(第1HMD)を装着したユーザA(第1ユーザ)によって操作されるユーザ端末1A(第1ユーザ端末)と、HMD110(第2HMD)を装着したユーザB(第2ユーザ)によって操作されるユーザ端末1B(第2ユーザ端末)と、サーバ2とを備える。ユーザ端末1A,1Bは、インターネット等の通信ネットワーク3を介してサーバ2に通信可能に接続されている。また、以降では、説明の便宜上、各ユーザ端末1A,1Bを単にユーザ端末1と総称する場合がある。さらに、各ユーザA,Bを単にユーザUと総称する場合がある。また、本実施形態では、ユーザ端末1A,1Bは、同一の構成を備えているものとする。
次に、図2を参照してユーザ端末1の構成について説明する。図2は、ユーザ端末1を示す概略図である。図2に示すように、ユーザ端末1は、ユーザUの頭部に装着されたヘッドマウントデバイス(HMD)110と、ヘッドフォン116と、フェイスカメラ117と、マイク118と、位置センサ130と、外部コントローラ320と、制御装置120とを備える。
HMD110は、表示部112と、HMDセンサ114と、注視センサ140と、フェイスカメラ113とを備える。表示部112は、HMD110を装着したユーザUの視界(視野)を完全に覆うように構成された非透過型の表示装置を備える。これにより、ユーザUは、表示部112に表示された視野画像のみを見ることで仮想空間に没入することができる。尚、表示部112は、ユーザUの左目に画像を提供するように構成された左目用表示部と、ユーザUの右目に画像を提供するように構成された右目用表示部とから構成されてもよい。また、HMD110は、透過型の表示装置を備えてもよい。この場合、透過型の表示装置は、その透過率を調整することで、一時的に非透過型の表示装置として構成されてもよい。
HMDセンサ114は、HMD110の表示部112の近傍に搭載される。HMDセンサ114は、地磁気センサ、加速度センサ、傾きセンサ(角速度センサやジャイロセンサ等)のうちの少なくとも1つを含み、ユーザUの頭部に装着されたHMD110の各種動き(傾き等)を検出することができる。
注視センサ140は、ユーザUの視線を検出するアイトラッキング機能を有する。注視センサ140は、例えば、右目用注視センサと、左目用注視センサを備えてもよい。右目用注視センサは、ユーザUの右目に例えば赤外光を照射して、右目(特に、角膜や虹彩)から反射された反射光を検出することで、右目の眼球の回転角に関する情報を取得してもよい。一方、左目用注視センサは、ユーザUの左目に例えば赤外光を照射して、左目(特に、角膜や虹彩)から反射された反射光を検出することで、左目の眼球の回転角に関する情報を取得してもよい。注視センサ140によって取得された検出データの取得レートは、アバター制御情報(後述する)の送信レート及びユーザ端末1BのHMD110に表示される視野画像のフレームレートより大きい。例えば、検出データの取得レートは、200Hzである。
フェイスカメラ113は、HMD110がユーザUに装着された状態でユーザUの目(左目と右目)とまゆげ(左まゆげと右まゆげ)が表示された画像(特に、動画像)を取得するように構成されている。フェイスカメラ113は、ユーザUの目とまゆげを撮像可能なようにHMD110の内側の所定箇所に配置されている。フェイスカメラ113によって取得された動画像のフレームレートは、アバター制御情報の送信レート及びユーザ端末1BのHMD110に表示される視野画像のフレームレートより大きい。例えば、当該取得された動画像のフレームレートは、200fpsである。
ヘッドフォン116(音声出力部)は、ユーザUの左耳と右耳にそれぞれ装着されている。ヘッドフォン116は、制御装置120から音声データ(電気信号)を受信し、当該受信した音声データに基づいて音声を出力するように構成されている。マイク118(音声入力部)は、ユーザUから発声された音声を収集し、当該収集された音声に基づいて音声データ(電気信号)を生成するように構成されている。さらに、マイク118は、音声データを制御装置120に送信するように構成されている。
フェイスカメラ117は、ユーザUの口及びその周辺が表示された画像(特に、動画像)を取得するように構成されている。フェイスカメラ117は、ユーザUの口及びその周辺を撮像可能なようにユーザUの口に対向する位置に配置されてもよい。また、フェイスカメラ117は、HMD110に連結されていてもよい。フェイスカメラ117によって取得される動画像のフレームレートは、HMD110に表示される視野画像のフレームレートよりも大きくてもよい。
位置センサ130は、例えば、ポジション・トラッキング・カメラにより構成され、HMD110と外部コントローラ320の位置を検出するように構成されている。位置センサ130は、制御装置120に無線又は有線により通信可能に接続されており、HMD110に設けられた図示しない複数の検知点の位置、傾き又は発光強度に関する情報を検出するように構成されている。さらに、位置センサ130は、外部コントローラ320に設けられた図示しない複数の検知点の位置、傾き及び/又は発光強度に関する情報を検出するように構成されている。検知点は、例えば、赤外線や可視光を放射する発光部である。また、位置センサ130は、赤外線センサや複数の光学カメラを含んでもよい。
外部コントローラ320は、ユーザUの手の動きを検知することにより、仮想空間内に表示されるアバターの手の動作を制御するために使用される。外部コントローラ320は、ユーザUの右手によって操作される右手用外部コントローラ320R(以下、単にコントローラ320Rという。)と、ユーザUの左手によって操作される左手用外部コントローラ320L(以下、単にコントローラ320Lという。)と、を有する。コントローラ320Rは、ユーザUの右手の位置や右手の手指の動きを示す装置である。また、コントローラ320Rの動きに応じて仮想空間内に存在するアバターの右手が動く。コントローラ320Lは、ユーザUの左手の位置や左手の手指の動きを示す装置である。また、コントローラ320Lの動きに応じて仮想空間内に存在するアバターの左手が動く。
制御装置120は、HMD110を制御するように構成されたコンピュータである。制御装置120は、位置センサ130から取得された情報に基づいて、HMD110の位置情報を特定し、当該特定された位置情報に基づいて、仮想空間における仮想カメラの位置(アバターの位置)と、現実空間におけるHMD110を装着したユーザUの位置を正確に対応付けることができる。さらに、制御装置120は、位置センサ130及び/又は外部コントローラ320に内蔵されたセンサから取得された情報に基づいて、外部コントローラ320の動作を特定し、当該特定された外部コントローラ320の動作に基づいて、仮想空間内に表示されるアバターの手の動作と現実空間における外部コントローラ320の動作を正確に対応付けることができる。特に、制御装置120は、位置センサ130及び/又はコントローラ320Lに内蔵されたセンサから取得された情報に基づいて、コントローラ320Lの動作を特定し、当該特定されたコントローラ320Lの動作に基づいて、仮想空間内に表示されるアバターの左手の動作と現実空間におけるコントローラ320Lの動作(ユーザUの左手の動作)を正確に対応付けることができる。同様に、制御装置120は、位置センサ及び/コントローラ320Rに内蔵されたセンサから取得された情報に基づいて、コントローラ320Rの動作を特定し、当該特定されたコントローラ320Rの動作に基づいて、仮想空間内に表示されるアバターの右手の動作と現実空間におけるコントローラ320Rの動作(ユーザUの右手の動作)を正確に対応付けることができる。
また、制御装置120は、フェイスカメラ113,117によって取得された動画像に基づいて、ユーザUの顔の表情(状態)とユーザUのアバターの顔の表情(状態)を対応付けることができる。ユーザUの顔の表情とアバターの顔の表情を互いに対応づける処理の詳細については後述する。
また、制御装置120は、ユーザUの右目の視線と左目の視線をそれぞれ特定し、当該右目の視線と当該左目の視線の交点である注視点を特定することができる。さらに、制御装置120は、特定された注視点に基づいて、ユーザUの両目の視線(ユーザUの視線)を特定することができる。ここで、ユーザUの視線は、ユーザUの両目の視線であって、ユーザUの右目と左目を結ぶ線分の中点と注視点を通る直線の方向に一致する。また、制御装置120は、注視センサ140(左目用注視センサと右目用注視センサ)から送信された検出データ(アイトラッキングデータ)に基づいて、ユーザUの右目の黒目の中心位置とユーザUの左目の黒目の中心位置とをそれぞれ特定することができる。
次に、図3を参照して、HMD110の位置や傾きに関する情報を取得する方法について以下に説明する。図3は、HMD110を装着したユーザUの頭部を示す図である。HMD110を装着したユーザUの頭部の動きに連動したHMD110の位置や傾きに関する情報は、位置センサ130及び/又はHMD110に搭載されたHMDセンサ114により検出可能である。図2に示すように、HMD110を装着したユーザUの頭部を中心として、3次元座標(uvw座標)が規定される。ユーザUが直立する垂直方向をv軸として規定し、v軸と直交しHMD110の中心を通る方向をw軸として規定し、v軸およびw軸と直交する方向をu軸として規定する。位置センサ130及び/又はHMDセンサ114は、各uvw軸回りの角度(すなわち、v軸を中心とする回転を示すヨー角、u軸を中心とした回転を示すピッチ角、w軸を中心とした回転を示すロール角で決定される傾き)を検出する。制御装置120は、検出された各uvw軸回りの角度変化に基づいて、仮想カメラの視軸を制御するための角度情報を決定する。
次に、図4を参照することで、制御装置120のハードウェア構成について説明する。図4は、制御装置120のハードウェア構成を示す図である。図4に示すように、制御装置120は、制御部121と、記憶部123と、I/O(入出力)インターフェース124と、通信インターフェース125と、バス126とを備える。制御部121と、記憶部123と、I/Oインターフェース124と、通信インターフェース125は、バス126を介して互いに通信可能に接続されている。
制御装置120は、HMD110とは別体に、パーソナルコンピュータ、スマートフォン、ファブレット、タブレット又はウェアラブルデバイスとして構成されてもよいし、HMD110に内蔵されていてもよい。また、制御装置120の一部の機能がHMD110に搭載されると共に、制御装置120の残りの機能がHMD110とは別体の他の装置に搭載されてもよい。
制御部121は、メモリとプロセッサを備えている。メモリは、例えば、各種プログラム等が格納されたROM(Read Only Memory)やプロセッサにより実行される各種プログラム等が格納される複数ワークエリアを有するRAM(Random Access Memory)等から構成される。プロセッサは、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)及び/又はGPU(Graphics Processing Unit)であって、ROMに組み込まれた各種プログラムから指定されたプログラムをRAM上に展開し、RAMとの協働で各種処理を実行するように構成されている。
特に、プロセッサが制御プログラムをRAM上に展開し、RAMとの協働で制御プログラムを実行することで、制御部121は、制御装置120の各種動作を制御してもよい。制御部121は、視野画像データに基づいてHMD110の表示部112に視野画像を表示する。これにより、ユーザUは、仮想空間に没入することができる。
記憶部(ストレージ)123は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、USBフラッシュメモリ等の記憶装置であって、プログラムや各種データを格納するように構成されている。記憶部123は、本実施形態に係る情報処理方法の少なくとも一部をコンピュータに実行させるための制御プログラムや、複数のユーザによる仮想空間の共有を実現するための制御プログラムを格納してもよい。また、記憶部123には、ユーザUの認証プログラムや各種画像やオブジェクト(例えば、アバター等)に関するデータが格納されてもよい。さらに、記憶部123には、各種データを管理するためのテーブルを含むデータベースが構築されてもよい。
I/Oインターフェース124は、HMD110と、位置センサ130と、外部コントローラ320と、ヘッドフォン116と、フェイスカメラ117と、マイク118とをそれぞれ制御装置120に通信可能に接続するように構成されており、例えば、USB(Universal Serial Bus)端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High―Definition Multimedia Interface)端子等により構成されている。尚、制御装置120は、HMD110と、位置センサ130と、外部コントローラ320と、ヘッドフォン116と、フェイスカメラ117と、マイク118とのそれぞれと無線接続されていてもよい。
通信インターフェース125は、制御装置120をLAN(Local Area Network)、WAN(Wide Area Network)又はインターネット等の通信ネットワーク3に接続させるように構成されている。通信インターフェース125は、通信ネットワーク3を介してサーバ2等の外部装置と通信するための各種有線接続端子や、無線接続のための各種処理回路を含んでおり、通信ネットワーク3を介して通信するための通信規格に適合するように構成されている。
次に、図5から図8を参照することで視野画像をHMD110に表示するための処理について説明する。図5は、視野画像をHMD110に表示する処理を示すフローチャートである。図6は、仮想空間200の一例を示すxyz空間図である。図7の状態(a)は、図6に示す仮想空間200のyx平面図である。図7の状態(b)は、図6に示す仮想空間200のzx平面図である。図8は、HMD110に表示された視野画像Vの一例を示す図である。
図5に示すように、ステップS1において、制御部121(図4参照)は、仮想カメラ300と、各種オブジェクトとを含む仮想空間200を示す仮想空間データを生成する。図6に示すように、仮想空間200は、中心位置210を中心とした全天球として規定される(図6では、上半分の天球のみが図示されている)。また、仮想空間200では、中心位置210を原点とするxyz座標系が設定されている。仮想カメラ300は、HMD110に表示される視野画像V(図8参照)を特定するための視軸Lを規定している。仮想カメラ300の視野を定義するuvw座標系は、現実空間におけるユーザUの頭部を中心として規定されたuvw座標系に連動するように決定される。また、HMD110を装着したユーザUの現実空間における移動に連動して、制御部121は、仮想カメラ300を仮想空間200内で移動させてもよい。
次に、ステップS2において、制御部121は、仮想カメラ300の視野CV(図7参照)を特定する。具体的には、制御部121は、位置センサ130及び/又はHMDセンサ114から送信されたHMD110の状態を示すデータに基づいて、HMD110の位置や傾きに関する情報を取得する。次に、制御部121は、HMD110の位置や傾きに関する情報に基づいて、仮想空間200内における仮想カメラ300の位置や向きを特定する。次に、制御部121は、仮想カメラ300の位置や向きから仮想カメラ300の視軸Lを決定し、決定された視軸Lから仮想カメラ300の視野CVを特定する。ここで、仮想カメラ300の視野CVは、HMD110を装着したユーザUが視認可能な仮想空間200の一部の領域に相当する(換言すれば、HMD110に表示される仮想空間200の一部の領域に相当する)。また、視野CVは、図7の状態(a)に示すxy平面において、視軸Lを中心とした極角αの角度範囲として設定される第1領域CVaと、図7の状態(b)に示すxz平面において、視軸Lを中心とした方位角βの角度範囲として設定される第2領域CVbとを有する。尚、制御部121は、注視センサ140から送信されたユーザUの視線を示すデータに基づいてユーザUの視線を特定し、特定されたユーザUの視線とHMD110の位置や傾きに関する情報に基づいて、仮想カメラ300の向き(仮想カメラの視軸L)を決定してもよい。また、後述するように、制御部121は、HMD110の位置や傾きに関する情報に基づいて、ユーザUのアバターの顔の向きを決定してもよい。
このように、制御部121は、位置センサ130及び/又はHMDセンサ114からのデータに基づいて、仮想カメラ300の視野CVを特定することができる。ここで、HMD110を装着したユーザUが動くと、制御部121は、位置センサ130及び/又はHMDセンサ114から送信されたHMD110の動きを示すデータに基づいて、仮想カメラ300の視野CVを更新することができる。つまり、制御部121は、HMD110の動きに応じて、視野CVを更新することができる。同様に、ユーザUの視線が変化すると、制御部121は、注視センサ140から送信されたユーザUの視線を示すデータに基づいて、仮想カメラ300の視野CVを更新してもよい。つまり、制御部121は、ユーザUの視線の変化に応じて、視野CVを変化させてもよい。
次に、ステップS3において、制御部121は、HMD110の表示部112に表示される視野画像Vを示す視野画像データを生成する。具体的には、制御部121は、仮想空間200を規定する仮想空間データと、仮想カメラ300の視野CVとに基づいて、視野画像データを生成する。
次に、ステップS4において、制御部121は、視野画像データに基づいて、HMD110の表示部112に視野画像Vを表示する(図7参照)。このように、HMD110を装着しているユーザUの動きに応じて、仮想カメラ300の視野CVが変化し、HMD110の表示部112に表示される視野画像Vが変化するので、ユーザUは仮想空間200に没入することができる。
尚、仮想カメラ300は、左目用仮想カメラと右目用仮想カメラを含んでもよい。この場合、制御部121は、仮想空間データと左目用仮想カメラの視野に基づいて、左目用の視野画像を示す左目用視野画像データを生成する。さらに、制御部121は、仮想空間データと、右目用仮想カメラの視野に基づいて、右目用の視野画像を示す右目用視野画像データを生成する。その後、制御部121は、左目用視野画像データに基づいて、左目用表示部に左目用の視野画像を表示すると共に、右目用視野画像データに基づいて、右目用表示部に右目用の視野画像を表示する。このようにして、ユーザUは、左目用視野画像と右目用視野画像との間の視差により、視野画像を3次元的に視認することができる。尚、仮想カメラは、後述するように、ユーザによって操作されるアバターの目の位置に配置されてもよい。例えば、左目用仮想カメラは、アバターの左目に配置される一方で、右目用仮想カメラは、アバターの右目に配置されてもよい。
また、図5に示すステップS1〜S4の処理は1フレーム毎に実行されてもよい。例えば、動画のフレームレートが90fpsである場合、ステップS1〜S4の処理はΔT=1/90(秒)間隔で繰り返し実行されてもよい。このように、ステップS1〜S4の処理が所定間隔ごとに繰り返し実行されるため、HMD110の動作に応じて仮想カメラ300の視野が更新されると共に、HMD110の表示部112に表示される視野画像Vが更新される。
次に、図1に示すサーバ2のハードウェア構成について図9を参照して説明する。図9は、サーバ2のハードウェア構成を示す図である。図9に示すように、サーバ2は、制御部23と、記憶部22と、通信インターフェース21と、バス24とを備える。制御部23と、記憶部22と、通信インターフェース21は、バス24を介して互いに通信可能に接続されている。制御部23は、メモリとプロセッサを備えており、メモリは、例えば、ROM及びRAM等から構成されると共に、プロセッサは、例えば、CPU、MPU及び/又はGPUにより構成される。
記憶部(ストレージ)22は、例えば、大容量のHDD等である。記憶部22は、本実施形態に係る情報処理方法の少なくとも一部をコンピュータに実行させるための制御プログラムや、複数のユーザによる仮想空間の共有を実現させるための制御プログラムを格納してもよい。また、記憶部22は、各ユーザを管理するためのユーザ管理情報や各種画像やオブジェクト(例えば、アバター等)に関するデータを格納してもよい。通信インターフェース21は、サーバ2を通信ネットワーク3に接続させるように構成されている。
[アバター間の動作制御に関する説明]
次に、図1,10及び11を参照してユーザ端末1Aとユーザ端末1B間において各アバター4A,4Bの動きを同期制御する処理の一例について説明する。図10の状態(a)は、ユーザAに提供される仮想空間200Aを示す図である。図10の状態(b)は、ユーザBに提供される仮想空間200Bを示す図である。図11は、ユーザ端末1Aとユーザ端末1B間において各アバター4A,4Bの動きを同期させる処理の一例を説明するためのシーケンス図である。本説明では、前提条件として、図10に示すように、ユーザ端末1A(ユーザA)に関連付けられたアバター4A(第1アバター)と、ユーザ端末1B(ユーザB)に関連付けられたアバター4B(第2アバター)が同一の仮想空間を共有しているものとする。つまり、通信ネットワーク3を介してユーザAとユーザBが一つの仮想空間を共有するものとする。
図10の状態(a)に示すように、ユーザAの仮想空間200Aは、アバター4Aと、アバター4Bとを含む。アバター4Aは、ユーザAによって操作されると共に、ユーザAの動作に連動する。アバター4Aは、ユーザ端末1Aのコントローラ320Lの動作(ユーザAの左手の動作)に連動する左手と、ユーザ端末1Aのコントローラ320Rの動作に連動する右手と、表情がユーザAの顔の表情に連動する顔を有する。アバター4Aの顔は、複数の顔パーツ(例えば、目、まゆげ、口等)を有する。アバター4Bは、ユーザBによって操作されると共に、ユーザBの動作に連動する。アバター4Bは、ユーザBの左手の動作を示すユーザ端末1Bのコントローラ320Lの動作に連動する左手と、ユーザBの右手の動作を示すユーザ端末1Bのコントローラ320Rの動作に連動する右手と、表情がユーザBの顔の表情と連動する顔を有する。アバター4Bの顔は、複数の顔パーツ(例えば、目、まゆげ、口等)を有する。
また、ユーザ端末1A,1BのHMD110の位置に応じてアバター4A,4Bの位置が特定されてもよい。同様に、ユーザ端末1A,1BのHMD110の傾きに応じてアバター4A,4Bの顔の向きが特定されてもよい。さらに、ユーザ端末1A,1Bの外部コントローラ320の動作に応じてアバター4A,4Bの手の動作が特定されてもよい。また、ユーザA,Bの顔の表情(状態)に応じてアバター4A,4Bの顔の表情が特定されてもよい。特に、ユーザA,Bの白目に対する黒目の位置に応じてアバター4A,4Bの白目に対する黒目の位置が特定されてもよい。
図10の状態(b)に示すように、ユーザBの仮想空間200Bは、アバター4Aと、アバター4Bとを含む。仮想空間200A内におけるアバター4A,4Bの位置は、仮想空間200B内におけるアバター4A,4Bの位置に対応してもよい。
次に、図11を参照すると、ステップS10において、ユーザ端末1Aの制御部121は、ユーザAの音声データを生成する。例えば、ユーザAがユーザ端末1Aのマイク118(音声入力部)に音声を入力したときに、マイク118は、入力された音声を示す音声データを生成する。その後、マイク118は生成された音声データをI/Oインターフェース124を介して制御部121に送信する。
次に、ステップS11において、ユーザ端末1Aの制御部121は、アバター4Aの制御情報を生成した上で、当該生成したアバター4Aの制御情報とユーザAの音声を示す音声データ(ユーザAの音声データ)をサーバ2に送信する。その後、サーバ2の制御部23は、ユーザ端末1Aからアバター4Aの制御情報とユーザAの音声データを受信する(ステップS12)。
ここで、アバター4Aの制御情報は、アバター4Aの動作を制御するために必要な情報である。アバター4Aの制御情報は、アバター4Aの位置に関する情報(位置情報)と、アバター4Aの顔の向きに関する情報(顔向き情報)と、アバター4Aの手(左手と右手)の状態に関する情報(手情報)と、アバター4Aの顔の表情に関する情報(顔情報)とを含んでもよい。
アバター4Aの顔情報は、複数の顔パーツの状態を示す情報を有する。複数の顔パーツの状態を示す情報は、アバター4Aの目の状態(白目の形状及び白目に対する黒目の位置等)を示す情報(目情報)と、アバター4Aのまゆげの情報(まゆげの位置及び形状等)を示す情報(まゆげ情報)と、アバター4Aの口の状態(口の位置及び形状等)を示す情報(口情報)を有する。
詳細には、アバター4Aの目情報は、アバター4Aの左目の状態を示す情報と、アバター4Aの右目の状態を示す情報を有する。アバター4Aのまゆげ情報は、アバター4Aの左まゆげの状態を示す情報と、アバター4Aの右まゆげの状態を示す情報を有する。
ユーザ端末1Aの制御部121は、HMD110に搭載されたフェイスカメラ113からユーザAの目(左目と右目)とまゆげ(左まゆげと右まゆげ)を示す画像を取得した上で、当該取得された画像と所定の画像処理アルゴリズムに基づいてユーザAの目(左目と右目)とまゆげ(左まゆげと右まゆげ)の状態を特定する。次に、制御部121は、特定されたユーザAの目とまゆげの状態に基づいて、アバター4Aの目(左目と右目)の状態を示す情報とアバター4Aのまゆげ(左まゆげと右まゆげ)の状態を示す情報をそれぞれ生成する。尚、ユーザAの目の状態を示す情報のうち、ユーザAの黒目の位置(中心位置)を示す情報は、フェイスカメラ113の代わりに注視センサ140によって取得されてもよい。
同様に、ユーザ端末1Aの制御部121は、フェイスカメラ117からユーザAの口及びその周辺を示す画像を取得した上で、当該取得された画像と所定の画像処理アルゴリズムに基づいてユーザAの口の状態を特定する。次に、制御部121は、特定されたユーザAの口の状態に基づいて、アバター4Aの口の状態を示す情報を生成する。
このように、ユーザ端末1Aの制御部121は、ユーザAの目に対応するアバター4Aの目情報と、ユーザAのまゆげに対応するアバター4Aのまゆげ情報と、ユーザAの口に対応するアバター4Aの口情報を生成することが可能となる。
また、制御部121は、フェイスカメラ113によって撮像された画像と、フェイスカメラ117によって撮像された画像と、所定の画像処理アルゴリズムに基づいて、記憶部123又はメモリに記憶された複数の種類の顔の表情(例えば、笑顔、悲しい表情、無表情、怒りの表情、驚いた表情、困った表情等)の中からユーザAの顔の表情(例えば、笑顔)を特定してもよい。その後、制御部121は、特定されたユーザAの顔の表情に基づいて、アバター4Aの顔の表情(例えば、笑顔)を示す顔情報を生成することが可能となる。この場合、アバター4Aの複数の種類の顔の表情と、各々が当該複数の種類の顔の表情の一つに関連付けられた複数のアバター4Aの顔情報を含む表情データベースが記憶部123に保存されてもよい。
例えば、制御部121は、アバター4Aの顔の表情を笑顔として特定した場合、アバター4Aの顔の表情(笑顔)と表情データベースに基づいて、アバター4Aの笑顔を示す顔情報を取得する。ここで、アバター4Aの笑顔を示す顔情報は、アバター4Aの顔の表情が笑顔のときのアバター4Aの目情報、まゆげ情報及び口情報を含む。
次に、ステップS13において、ユーザ端末1Bの制御部121は、アバター4Bの制御情報を生成した上で、当該生成したアバター4Bの制御情報をサーバ2に送信する。その後、サーバ2の制御部23は、ユーザ端末1Bからアバター4Bの制御情報を受信する(ステップS14)。
ここで、アバター4Bの制御情報は、アバター4Bの動作を制御するために必要な情報である。アバター4Bの制御情報は、アバター4Bの位置に関する情報(位置情報)と、アバター4Bの顔の向きに関する情報(顔向き情報)と、アバター4Bの手(左手と右手)の状態に関する情報(手情報)と、アバター4Bの顔の表情に関する情報(顔情報)とを含んでもよい。
アバター4Bの顔情報は、複数の顔パーツの状態を示す情報を有する。複数の顔パーツの状態を示す情報は、アバター4Bの目の状態(白目の形状及び白目に対する黒目の位置等)を示す情報(目情報)と、アバター4Bのまゆげの情報(まゆげの位置及び形状等)を示す情報(まゆげ情報)と、アバター4Bの口の状態(口の位置及び形状等)を示す情報(口情報)を有する。アバター4Bの顔情報の取得方法は、アバター4Aの顔情報の取得方法と同様である。
次に、サーバ2は、アバター4Bの制御情報をユーザ端末1Aに送信する一方(ステップS15)、アバター4Aの制御情報とユーザAの音声データをユーザ端末1Bに送信する(ステップS19)。その後、ユーザ端末1Aの制御部121は、ステップS16においてアバター4Bの制御情報を受信した後に、アバター4A,4Bの制御情報に基づいて、アバター4A,4Bの状態を更新した上で、仮想空間200A(図10の状態(a)参照)を示す仮想空間データを更新する(ステップS17)。
詳細には、ユーザ端末1Aの制御部121は、アバター4A,4Bの位置情報に基づいて、アバター4A,4Bの位置を更新する。制御部121は、アバター4A,4Bの顔向き情報に基づいて、アバター4A,4Bの顔の向きを更新する。制御部121は、アバター4A,4Bの手情報に基づいて、アバター4A,4Bの手を更新する。制御部121は、アバター4A,4Bの顔情報に基づいて、アバター4A,4Bの顔の表情を更新する。このように、更新されたアバター4A,4Bを含む仮想空間200Aを示す仮想空間データが更新される。
その後、ユーザ端末1Aの制御部121は、HMD110の位置や傾きに応じてアバター4A(仮想カメラ300)の視野CVを特定した上で、更新された仮想空間データと、アバター4Aの視野CVとに基づいて、HMD110に表示される視野画像を更新する(ステップS18)。
一方、ユーザ端末1Bの制御部121は、ステップS20においてアバター4Aの制御情報とユーザAの音声データを受信した後に、アバター4A,4Bの制御情報に基づいて、アバター4A,4Bの状態を更新した上で、仮想空間200B(図10の状態(b)参照)を示す仮想空間データを更新する(ステップS21)。
詳細には、ユーザ端末1Bの制御部121は、アバター4A,4Bの位置情報に基づいて、アバター4A,4Bの位置を更新する。制御部121は、アバター4A,4Bの顔向き情報に基づいて、アバター4A,4Bの顔の向きを更新する。制御部121は、アバター4A,4Bの手情報に基づいて、アバター4A,4Bの手を更新する。制御部121は、アバター4A,4Bの顔情報に基づいて、アバター4A,4Bの顔の表情を更新する。このように、更新されたアバター4A,4Bを含む仮想空間を示す仮想空間データが更新される。
その後、ユーザ端末1Bの制御部121は、HMD110の位置や傾きに応じてアバター4B(仮想カメラ300)の視野CVを特定した上で、更新された仮想空間データと、アバター4Bの視野CVとに基づいて、HMD110に表示される視野画像を更新する(ステップS22)。
次に、ユーザ端末1Bの制御部121は、受信したユーザAの音声データと、アバター4Aの制御情報に含まれるアバター4Aの位置に関する情報と、アバター4Bの位置に関する情報と、所定の音声処理アルゴリズムに基づいてユーザAの音声データを加工する。その後、制御部121は、加工された音声データをヘッドフォン116(音声出力部)に送信した上で、ヘッドフォン116は、加工された音声データに基づいてユーザAの音声を出力する(ステップS23)。このように、仮想空間上においてユーザ間(アバター間)の音声チャット(VRチャット)を実現することができる。
本実施形態では、ユーザ端末1A,1Bがサーバ2にアバター4Aの制御情報とアバター4Bの制御情報をそれぞれ送信した後に、サーバ2がアバター4Aの制御情報をユーザ端末1Bに送信する一方、アバター4Bの制御情報をユーザ端末1Aに送信する。このように、ユーザ端末1Aとユーザ端末1B間において各アバター4A,4Bの動きを同期させることが可能となる。
[第1実施形態に係る情報処理方法についての説明]
次に、図12から図17を参照することで、第1実施形態に係る情報処理方法について説明する。図12は、第1実施形態に係る情報処理方法の一例を説明するためのシーケンス図である。図13の状態(a)は、ユーザAの黒目53と白目52を示す図である。図13の状態(b)は、ユーザAの黒目53と白目52を包含する複数の部分領域Sから構成される身体領域F(第1身体領域)を示す図である。図14は、ユーザAの黒目53の中心位置Qの移動軌跡の一例を示す図である。図15の状態(a)は、アバター4Aの黒目63と白目62を示す図である。図15の状態(b)は、アバター4Aの黒目63と白目62を包含する身体領域E(第2身体領域)を示す図である。
本実施形態では、ユーザAの黒目53(身体の一部)の位置とユーザAに関連付けられたアバター4Aの黒目63(身体の一部)の位置を同期制御することを説明する。つまり、既に述べたアバター4Aの制御情報のうちアバター4Aの黒目63の位置情報(第2位置情報)に基づいて、アバター4Aの黒目63の位置を更新する処理について説明を行う。より具体的には、本実施形態では、ユーザ端末1Bは、ユーザ端末1Aからサーバ2を介して送信されたアバター4Aの黒目63の位置情報に基づいて、ユーザBに提供される仮想空間200B内のアバター4Aの黒目63の位置を更新するものとする。また、本実施形態では、アバター4Aの黒目63の位置情報を取得する取得レートC1(第2レート)と、アバター4Aの黒目63の位置情報を送信する送信レートC2(第3レート)と、ユーザ端末1B側でアバター4Aの黒目63の位置を更新するフレームレートC3(第1レート)は以下の関係を有するものとする。
取得レートC1>フレームレートC3>送信レートC2
例えば、取得レートC1は、200Hzであって、送信レートC2は、60Hzであって、フレームレートC3は、90fpsである。このように、本実施形態では、送信レートC2が取得レートC1よりも低いため、低い送信レートC2を考慮した上で、ユーザAの表情とアバター4Aの表情を同期制御させる必要がある。より具体的には、低い送信レートC2を考慮した上で、ユーザAの黒目53の位置とアバター4Aの黒目63の位置を同時制御させる必要がある。このように、送信レートが低い場合において、図1に示す配信システム100における通信負荷を低減させることが可能な情報処理方法について以下に説明する。尚、本実施形態では、ユーザAの目は、ユーザAの左目と右目を含むのとする。さらに、アバター4Aの目は、アバター4Aの左目と右目を含むものとする。
図12に示すように、ステップS30において、ユーザ端末1Aの制御部121は、取得レートC1(例えば、200Hz)で注視センサ140から検出データ(アイトラッキングデータ)を取得する。次に、制御部121は、取得レートC1で取得された検出データに基づいてユーザAの黒目53の中心位置Qを特定する(ステップS31)。その後、ステップS32において、制御部121は、取得レートC1で、ユーザAの黒目53の中心位置Qが現在位置している部分領域S(第1部分領域)を示す第1位置情報を取得する。
図13の状態(b)に示すように、ユーザAの黒目53と白目52を包含するように、身体領域Fが設定された上で、身体領域Fが複数の部分領域Sに区分されている。本図に示すように、ユーザAの黒目53の中心位置Qが部分領域S1に現在位置している場合、制御部121は、複数の部分領域Sと位置座標との間の対応関係(例えば、関係式やテーブル等)に基づいて、ユーザAの黒目53の中心位置Qが現在位置している部分領域Sを部分領域S1として特定する。その後、制御部121は、部分領域S1を示す第1位置情報を取得する。図14に示すように、中心位置Qが部分領域S1に位置している場合、制御部121は、部分領域S1を示す第1位置情報を取得する。また、中心位置Qが部分領域S2に位置している場合、制御部121は、部分領域S2を示す第1位置情報を取得する。
次に、制御部121は、第1位置情報に基づいて、アバター4Aの黒目63の中心位置Pが現在位置している部分領域R(第2部分領域)を示す第2位置情報を取得レートC1で取得する(ステップS33)。図14の状態(a)に示すように、アバター4Aの黒目63と白目62を包含するように、身体領域Eが設定された上で、身体領域Eが複数の部分領域Rに区分されている。複数の部分領域Rの各々は、複数の部分領域Sのうちの一つと対応付けられていてもよい。例えば、第1位置情報が部分領域S1を示す場合、制御部121は、複数の部分領域Rと複数の部分領域Sとの間の対応関係(関係式やテーブル等)に基づいて、部分領域R1を示す第2位置情報を取得する。
次に、ステップS34において、制御部121は、通信ネットワーク3を介して、送信レートC2(例えば、60Hz)で、第2位置情報をサーバ2に送信する。特に、第2位置情報は、アバター4Aの黒目63の中心位置Pを制御するための情報であって、アバター4Aの制御情報のうちの一つである。このため、制御部121は、通信ネットワーク3を介して、第2位置情報を含むアバター4Aの制御情報(図11参照)をサーバ2に送信する。
また、送信レートC2(例えば、60Hz)は取得レートC1(例えば、200Hz)よりも小さいため、制御部121は、取得レートC1で取得された第2位置情報を間引きした状態でサーバ2に送信する。例えば、一の第2位置情報が送信される時刻Ta1と次の第2位置情報が送信される時刻Ta2との間の時間間隔ΔT12の間において、3つの第2位置情報が取得された場合、制御部121は、第2位置情報を送信する時点(時刻T2)の直前に生成された第2位置情報をサーバ2に送信する。
次に、サーバ2は、第2位置情報を含むアバター4Aの制御情報を受信した後に、通信ネットワーク3を介してアバター4Aの制御情報をユーザ端末1Bに送信する(ステップS35)。その後、ユーザ端末1Bの制御部121は、通信ネットワーク3及び通信インターフェース125を介して、第2位置情報を含むアバター4Aの制御情報を受信する(ステップS36)。次に、ユーザ端末1Bの制御部121は、受信した第2位置情報に基づいて、フレームレートC3(例えば、90fps)で、ユーザBに提供される仮想空間200B(図10参照)内のアバター4Aの黒目63の中心位置P(図15参照)を更新する(ステップS37)。例えば、受信した第2位置情報が部分領域R1を示す場合、制御部121は、第2位置情報に基づいて、アバター4Aの黒目63の中心位置Pが部分領域R1に位置するように中心位置Pを更新する。ここで、仮想空間200B内に配置されたアバター4Aの黒目63と白目62を包含する身体領域Eが設定されていると共に、身体領域Eは、複数の部分領域Rに区分されているものとする。このため、制御部121は、送信された第2位置情報に基づいて、アバター4Aの黒目63の中心位置Pを更新することが可能となる。
また、制御部121は、アバター4Aの黒目63の中心位置Pを更新する際に、フレームレートC3で、仮想空間200B内のアバター4A,4Bの動作(例えば、手や顔の動作)も更新する。このように、制御部121は、仮想空間200Bを示す仮想空間データを更新した後に、HMD110の動き(仮想カメラの視野)と仮想空間データに基づいて、フレームレートC3で、ユーザBの頭部に装着されたHMD110に表示される視野画像を更新する。
本実施形態によれば、取得レートC1及びフレームレートC3よりも低い送信レートC2で、第2位置情報がサーバ2を介してユーザ端末1Bに向けて送信される場合において、第2位置情報を送信する時点の直前に生成された第2位置情報がサーバ2を介してユーザ端末1Bに向けて送信される。このように、生成された第2位置情報は、間引かれた状態でユーザ端末1Bに向けて送信される。さらに、ユーザ端末1Bに送信された第2位置情報は、アバター4Aの黒目63が現在位置している部分領域Rを示す情報であって、アバター4Aの黒目63の位置座標を示す情報ではない。したがって、ユーザ端末1Bに送信すべき情報量を低減させることができるため、ユーザ端末1Aとユーザ端末1Bとの間における通信負荷を低減させることが可能となる。このように、配信システム100における通信負荷を低減させることが可能な情報処理方法を提供することができる。
さらに、ユーザAの黒目53に対応するアバター4Aの黒目63の第2位置情報に基づいて、仮想空間200B内のアバター4Aの黒目63の中心位置Pがユーザ端末1B側で更新される。このように、ユーザAの黒目53の中心位置Qと、仮想空間200B内に配置されたアバター4Aの黒目63の中心位置Pを同期制御することが可能となるため、ユーザAの表情をアバター4Aの表情にリアルに反映させることが可能となる。
尚、本実施形態では、ユーザ端末1Aの制御部121は、送信レートC2で、サーバ2を介して第2位置情報をユーザ端末1Bに送信しているが、第2位置情報の代わりに第1位置情報をサーバ2を介してユーザ端末1Bに送信レートC1で送信してもよい。この場合、送信レートC2は取得レートC1よりも小さいため、制御部121は、第1位置情報を送信する時点の直前に生成された第1位置情報をサーバ2に送信する。つまり、制御部121によって取得された第1位置情報は、間引かれた状態でサーバ2に送信される。その後、ユーザ端末1Bの制御部121は、第1位置情報をサーバ2から受信した後に、第1位置情報に基づいて第2位置情報を生成する。このとき、第2位置情報は、送信レートC2と同一のレートで生成されてもよい。その後、ユーザ端末1Bの制御部121は、生成された第2位置情報に基づいて、フレームレートC3で、仮想空間200B内に配置されたアバター4Aの黒目63の位置を更新する。
また、本実施形態では、ステップS32からS34に規定された処理がユーザ端末1A側で実行されなくてもよい。この点において、ステップS32からS34に規定された処理は、サーバ2側で実行されてもよい。
[アバター4Aの黒目の更新処理]
次に、図16及び図17を参照することで、ステップS37で規定された処理を具体的に説明する。より具体的には、送信レートC2(例えば、60Hz)で送信された第2位置情報に基づいて、送信レートC2より高いフレームレートC3(例えば、90fps)でアバター4Aの黒目63の中心位置Pを更新する処理について説明する。図16の状態(a)は、ユーザ端末1Bに送信された第2位置情報に基づいて、送信レートC2より高いフレームレートC3で、アバター4Aの黒目63の中心位置Pを更新する処理を説明するための図である。図16の状態(b)は、各時刻T(T1,T2,T3・・・)においてユーザ端末1Bに送信された第2位置情報を示す図である。図17は、部分領域R1の中心位置O1から部分領域R2の中心位置O2に向けてアバター4Aの黒目63の中心位置Pが徐々に移動する様子を説明するための図である。
図16の状態(a)に示すように、フレームレートC3は、送信レートC2よりも高いため、単位時間(例えば、1秒)当たりのアバター4Aの黒目の位置の更新回数は、単位時間(例えば、1秒)当たりに送信される第2位置情報の数よりも多い。例えば、図16及び図17に示すように、時刻T3において部分領域R1を示す第2位置情報がユーザ端末1Bに送信された場合、ユーザ端末1Bの制御部121は、時刻t5,t6(>T3)において、アバター4Aの黒目63の中心位置Pを部分領域R1の中心位置O1に配置する。ここで、図17に示すように、時刻t5での中心位置Pは、中心位置P5として示されると共に、時刻t6での中心位置Pは、中心位置P6として示される。
次に、ユーザAの黒目53の中心位置Qが部分領域S1(第1部分領域)から部分領域S2(第3部分領域)に移動した場合に(図13参照)、ユーザ端末1Bの制御部121は、アバター4Aの黒目63の中心位置Pが部分領域R1(第2部分領域)から移動先の部分領域である部分領域R2(第4部分領域)の中心位置O2に向かって徐々に移動するように、アバター4Aの黒目63の中心位置Pを更新する。具体的には、最初に、制御部121は、中心位置Pが部分領域R1の中心位置O1と部分領域R2の中心位置O2とを結ぶ線分L1を特定する。次に、制御部121は、線分L1の長さD1を特定した上で、中心位置Pの移動速度(フレーム毎の移動量)を決定する。例えば、制御部121は、中心位置Pの移動速度を(1/4)D1として決定してもよい。その後、制御部121は、中心位置Pが線分L1上を決定された移動速度で徐々に移動するように、中心位置Pを更新する。
ここで、時刻t7,t8,t9での中心位置Pをそれぞれ中心位置P7,P8,P9として規定すると共に、中心位置Pの移動速度を(1/4)D1とする。尚、時刻T4<t7<t8<t9である。この場合、図17に示すように、制御部121は、時刻t7において、中心位置P7と中心位置O1との間の距離が(1/4)D1となるように、中心位置P7を線分L1上に配置する。次に、制御部121は、時刻t8において、中心位置P8と中心位置O1との間の距離が(1/2)D1となるように、中心位置P8を線分L1上に配置する。さらに、制御部121は、時刻t9において、中心位置P9と中心位置O1との間の距離が(3/4)D1となるように、中心位置P9を線分L1上に配置する。
このように、中心位置Qが部分領域S1から部分領域S2に移動した場合に、中心位置Pが部分領域R2の中心位置O2に向かって徐々に移動する。このように、ユーザAの黒目53が部分領域S1から部分領域S2に移動した場合に、アバター4Aの黒目63の中心位置Pを中心位置O1から中心位置O2に瞬時に移動(ワープ)させる処理と比較して、アバター4Aの黒目63を部分領域R1から部分領域R2に向けて滑らかに移動させることが可能となる。従って、アバター4Aの黒目63の動きをユーザAの黒目53の動きに滑らかに追従させることが可能となり、ユーザAの表情をアバター4Aの表情にリアルに反映させることが可能となる。
尚、本実施形態の説明では、中心位置Pの移動速度の一例として(1/4)D1を挙げたが、中心位置Pの移動速度はこれには限定されない。さらに、制御部121は、所定の数(例えば、3つ)の部分領域R2を示す第2位置情報を受信した場合に、中心位置Pを中心位置O2に向けて所定の移動速度で徐々に移動させてもよい。
[第2実施形態に係る情報処理方法についての説明]
次に、図12及び図18−20を参照することで、第2実施形態に係る情報処理方法について説明する。本実施形態に係る情報処理方法は、第2位置情報及び第2方向情報に基づいてアバター4Aの黒目63の中心位置Pが更新される点で第1実施形態に係る情報処理方法とは異なる。ここで、第2方向情報は、アバター4Aの黒目63の中心位置Pの移動先の部分領域を示す情報である。図18の状態(a)は、ユーザ端末1Bに送信された第2位置情報と第2方向情報に基づいて、送信レートC2より高いフレームレートC3で、アバター4Aの黒目63の中心位置Pを更新する処理を説明するための図である。図18の状態(b)は、各時刻T(T1,T2,T3・・・)においてユーザ端末1Bに送信された第2位置情報と第2方向情報を示す図である。図19は、部分領域R1の中心位置O1から交差点X1に向けてアバター4Aの黒目63の中心位置Pが徐々に移動する様子を説明するための図である。図20は、ユーザAの黒目53の移動を示す移動ベクトルV1,V2,V3の合成ベクトルVcに基づいて第2方向情報を取得する処理を説明するための図である。
本実施形態では、図12に示すように、ステップS33の処理の後に、ユーザ端末1Aの制御部121は、ユーザAの黒目53の中心位置Qの移動先の部分領域Sを示す第1方向情報を取得する。以下に、図20を参照して第1方向情報の取得方法の一例について説明する。
図20に示すように、例えば、取得レートC1が200Hzである一方、送信レートC2が60Hzである場合に、一の第2位置情報が送信される時刻Ta1と次の第2位置情報が送信される時刻Ta2(>Ta1)との間の時間間隔ΔT12の間において、ユーザ端末1Aの制御部121は、ユーザAの黒目53の3つの中心位置Qを取得するものとする。ここで、3つの中心位置Qのうち、時刻T12での中心位置Qを中心位置Q12として規定し、時刻T13での中心位置Qを中心位置Q13として規定し、時刻T14での中心位置Qを中心位置Q14として規定する。また、時刻T11(<時刻Ta1)での中心位置Qを中心位置Q11として規定する。ここで、時刻T11<Ta1<T12<T13<T14であるとする。時刻Ta1に送信される第2位置情報は、中心位置Q11が属する部分領域S1を示す。一方、時刻Ta2に送信される第2位置情報は、中心位置Q14が属する部分領域S1を示す。
次に、制御部121は、各中心位置Qに基づいて移動ベクトルV1〜V3を特定する。具体的には、制御部121は、中心位置Q11とQ12に基づいて、移動ベクトルV1を特定し、中心位置Q12と中心位置Q13に基づいて、移動ベクトルV2を特定し、中心位置Q13と中心位置Q14に基づいて、移動ベクトルV3を特定する。その後、制御部121は、3つの移動ベクトルV1〜V3の合成ベクトルVcを特定する。尚、制御部121は、中心位置Q11とQ14のみに基づいて合成ベクトルVcを特定してもよい。
次に、制御部121は、合成ベクトルVcの方向に基づいて、中心位置Qの移動先の部分領域Sを特定する。例えば、図20に示すように、合成ベクトルVcが部分領域S2を向いている場合、制御部121は、移動先の部分領域Sを部分領域S2として決定する。このように、制御部121は、部分領域S2を示す第1方向情報を取得することができる。また、制御部121は、合成ベクトルVcのスカラ量に基づいて、移動先の部分領域Sが特定できない(NULL)と判定してもよい。例えば、制御部121は、合成ベクトルVcのスカラ量が所定の閾値以下であると判定した場合に、移動先の部分領域Sが特定できないと判定してもよい。このように、制御部121は、合成ベクトルVcの方向とスカラ量の両方に基づいて、移動先の部分領域Sを特定してもよい。
次に、制御部121は、第1方向情報と部分領域Sと部分領域Rとの間の対応関係に基づいて、アバター4Aの黒目63の中心位置Pの移動先の部分領域Rを部分領域R2として特定した上で、部分領域R2を示す第2方向情報を取得する。その後、ステップS34において、制御部121は、第2位置情報及び第2方向情報を送信レートC2で送信する。
次に、サーバ2は、第2位置情報と第2方向情報を受信した後に、通信ネットワーク3を介して第2位置情報と第2方向情報をユーザ端末1Bに送信する(ステップS35)。その後、ユーザ端末1Bの制御部121は、通信ネットワーク3及び通信インターフェース125を介して、第2位置情報と第2方向情報を受信する(ステップS36)。次に、ユーザ端末1Bの制御部121は、受信した第2位置情報及び第2方向情報に基づいて、フレームレートC3で、仮想空間200B内のアバター4Aの黒目63の中心位置Pを更新する(ステップS37)。
次に、図18及び図19を参照することで、ステップS37で規定された処理を具体的に説明する。より具体的には、送信レートC2(例えば、60Hz)で送信された第2位置情報と第2方向情報に基づいて、送信レートC2より高いフレームレートC3(例えば、90fps)で中心位置Pを更新する処理について説明する。
この点において、第2位置情報が部分領域R1を示す一方、第2方向情報が部分領域R2を示す場合、制御部121は、アバター4Aの黒目63の中心位置Pが部分領域R2に向かって部分領域R1内を徐々に移動するように中心位置Pを更新する。具体的には、最初に、制御部121は、部分領域R1の中心位置O1と部分領域R2の中心位置O2とを結ぶ線分L1を特定する。次に、制御部121は、部分領域R1と部分領域R2との間の境界線B1と線分L1との間の交差点X1を特定する。その後、制御部121は、交差点X1と中心位置O1との間の距離D2を特定する。
ここで、時刻t1,t2,t3,t4での中心位置Pをそれぞれ中心位置P1,P2,P3,P4として規定する(尚、時刻t1<T1<t2<t3<t4である)。さらに、中心位置P1は中心位置O1に位置するものとする。この場合、図19に示すように、制御部121は、時刻t2において、中心位置P2と交差点X1との間の距離が(1/2)×D2となるように、中心位置P2を線分L1上に配置する。次に、制御部121は、時刻t3において、中心位置P3と交差点X1との間の距離が(1/2)2×D2となるように、中心位置P3を線分L1上に配置する。さらに、制御部121は、時刻t4において、中心位置P4と交差点X1との間の距離が(1/2)3×D2となるように中心位置P4を線分L1上に配置する。このように、時刻tnにおいて、中心位置Pnと交差点X1との間の距離が(1/2)n-1×D2となるように中心位置Pnを線分L1上に配置してもよい。さらに、時刻tnにおいて、中心位置Pnと交差点X1との間の距離がan-1×D2となるように中心位置Pnを線分L1上に配置してもよい(ここで、a<1である)。また、制御部121は、中心位置Pの移動速度を、例えば、(1/4)D2として決定した上で、中心位置Pが線分L1上を移動速度(1/4)D2で徐々に移動するように、中心位置Pを更新してもよい。尚、上記移動速度の値は単なる一例である。
また、制御部121は、時刻T4において部分領域R2を示す第2位置情報を受信した場合に、時刻t7以降において、中心位置Pが部分領域R2の中心位置O2に向かって線分L1上を徐々に移動するように中心位置Pを更新してもよい。この場合、時刻t7において、中心位置Pは交差点X1上に位置してもよい。
このように、第2方向情報を用いることで、アバター4Aの黒目63の中心位置Pを部分領域R2に向かって部分領域R1内を徐々に移動させることができる。このため、ユーザAの黒目53の中心位置Qが部分領域S1から部分領域S2に移動した場合に、アバター4Aの黒目63を部分領域R1から部分領域R2に向けて滑らかに移動させることが可能となる。従って、アバター4Aの黒目63の動きをユーザAの黒目53の動きに滑らかに追従させることが可能となり、ユーザAの表情をアバター4Aの表情にリアルに反映させることが可能となる。
また、本実施形態の説明では、仮想空間200Bを示す仮想空間データがユーザ端末1B側で更新されていることを前提としているが、仮想空間データはサーバ2側で更新されてもよい。さらに、視野画像に対応する視野画像データがユーザ端末1B側で更新されていることを前提としているが、視野画像データはサーバ2側で更新されてもよい。この場合、ユーザ端末1Bは、サーバ2から送信された視野画像データに基づいて、HMD110に視野画像を表示する。
また、ユーザ端末1の制御部121によって実行される各種処理をソフトウェアによって実現するために、各種処理をコンピュータ(プロセッサ)に実行させるための制御プログラムが記憶部123又はメモリに予め組み込まれていてもよい。または、制御プログラムは、磁気ディスク(HDD、フロッピーディスク)、光ディスク(CD−ROM,DVD−ROM、Blu−rayディスク等)、光磁気ディスク(MO等)、フラッシュメモリ(SDカード、USBメモリ、SSD等)等のコンピュータ読取可能な記憶媒体に格納されていてもよい。この場合、記憶媒体が制御装置120に接続されることで、当該記憶媒体に格納された制御プログラムが、記憶部123に組み込まれる。そして、記憶部123に組み込まれた制御プログラムがRAM上にロードされて、プロセッサがロードされた当該プログラムを実行することで、制御部121は各種処理を実行する。
また、制御プログラムは、通信ネットワーク3上のコンピュータから通信インターフェース125を介してダウンロードされてもよい。この場合も同様に、ダウンロードされた当該制御プログラムが記憶部123に組み込まれる。
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲及びその均等の範囲に基づいて定められるべきである。
本実施形態では、ユーザ(アバター)の身体の一部の一例としてユーザ(アバター)の黒目をピックアップした上で、ユーザの黒目の中心位置とアバターの黒目の中心位置を同期制御する例について説明したが、ユーザ(アバター)の身体の一部は、黒目には限定されない。例えば、ユーザ(アバター)の身体の一部の一例として、ユーザの舌の位置とアバターの舌の位置を同期制御してもよい。このように、ユーザ(アバター)の身体の一部は、ユーザ(アバター)の黒目のみには限定されず、本実施形態に係る情報処理方法は、ユーザ(アバター)の身体の色々な部位にも適用可能である。
本実施形態において、仮想空間は、ユーザにVR(Virtual Reality)、AR(Argumented Reality)及びMR(Mixed Reality)といった、仮想体験を提供するために用いられる。仮想空間がVRを提供する場合、仮想空間の背景にはメモリに保存された背景データが使用される。仮想空間がAR又はMRを提供する場合、背景には現実空間が使用される。この場合、HMD110が透過型の表示装置(光学シースルーまたはビデオシースルー型の表示装置)を備えることにより、現実空間が背景として使用され得る。仮想空間がMRに適用される場合、オブジェクトは、現実空間によって影響を与えられてもよい。このように、仮想空間が背景や仮想オブジェクトといった仮想シーンを少なくとも一部に含むことにより、ユーザには当該仮想シーンとの相互作用が可能な仮想体験が提供され得る。