[本開示が示す実施形態の説明]
本開示が示す実施形態の概要を説明する。
(1)第1ユーザの頭部に装着される第1ヘッドマウントデバイスを有する第1ユーザ端末と、第2ユーザの頭部に装着される第2ヘッドマウントデバイスを有する第2ユーザ端末と、を備えた仮想空間配信システムにおいてコンピュータによって実行される情報処理方法であって、
前記情報処理方法は、
(a)前記第1ユーザに関連付けられた第1アバターと、前記第2ユーザに関連付けられた第2アバターとを含む仮想空間を規定する仮想空間データを生成するステップと、
(b)前記第2ヘッドマウントデバイスの動きと前記仮想空間データに基づいて、前記第2ヘッドマウントデバイスに表示される視野画像を更新するステップと、
(d)前記第1ユーザが前記第1ヘッドマウントデバイスを装着していないことを示す非装着情報を受信した場合に、前記第1ユーザが前記第1ヘッドマウントデバイスを装着していないことを前記第2ユーザ端末によって前記第2ユーザに提示するステップと、
を含む、情報処理方法。
上記方法によれば、第1ユーザが第1ヘッドマウントデバイス(以下、第1HMD)を装着していないことを示す非装着情報が受信された場合に、第2ユーザ端末によって第1ユーザが第1HMDを装着していないことが第2ユーザに提示される。このように、第2ユーザは、仮想空間上において第1ユーザとコミュニケーションを行っているときに、第1ユーザが第1HMDを装着していないことを容易に把握することができる。従って、ユーザにリッチな仮想体験を提供することができる。
特に、第2ユーザは、第1ユーザが第1HMDを装着していないことを把握してなければ、リアクションを示さない第1ユーザに対して違和感を抱く場合がある。このように、第1ユーザが第1HMDを装着していないことを第2ユーザに把握させることで、第2ユーザがリアクションを示さない第1ユーザに対して違和感を抱くといった状況を回避することが可能となる。
(2)前記ステップ(d)は、
前記非装着情報を受信した場合に、前記第1ユーザが前記第1ヘッドマウントデバイスを装着していないことを前記第2ヘッドマウントデバイスに表示される視野画像上において可視化するステップを含む、
項目(1)に記載の情報処理方法。
上記方法によれば、第1ユーザが第1ヘッドマウントデバイス(第1HMD)を装着していないことを示す非装着情報が受信された場合に、第1ユーザが第1HMDを装着していないことを示す情報が第2ヘッドマウントデバイス(第2HMD)に表示される視野画像上において可視化される。このように、第2ユーザは、仮想空間上において第1ユーザとコミュニケーションを行っているときに、第2HMDを通じて第1ユーザが第1HMDを装着していないことを示す情報を視認することで、第1ユーザが第1HMDを装着していないことを容易に把握することができる。
(3)(e)前記第1アバターの顔の表情を示す顔情報を受信した場合に、前記顔情報に基づいて、前記第1アバターの顔の表情を更新するステップをさらに含み、
前記ステップ(d)は、
前記非装着情報を受信した場合に、表情が第1の態様に設定された第1アバターを前記第2ヘッドマウントデバイスに表示される視野画像上において可視化するステップを含む、
項目(1)又は(2)に記載の情報処理方法。
上記方法によれば、第1ユーザが第1ヘッドマウントデバイス(第1HMD)を装着していないことを示す非装着情報が受信された場合に、表情が第1の態様に設定された第1アバターが第2ヘッドマウントデバイス(第2HMD)に表示される視野画像上において可視化される。このように、第2ユーザは、仮想空間上において第1ユーザとコミュニケーションを行っているときに、第1アバターの顔の表情が所定の表情となっていることを視認することで、第1ユーザが第1HMDを装着していないことを容易に把握することができる。
特に、第1ユーザが第1HMDを装着していない場合には、第1アバターの顔の表情が全く更新されない。このため、第2ユーザは、第1ユーザが第1HMDを装着していないことを把握してなければ、第1ユーザに対して違和感を抱く場合がある。このように、第1ユーザが第1HMDを装着していないことを第2ユーザに把握させることで、第2ユーザがリアクションを示さない第1ユーザに対して違和感を抱くといった状況を回避することが可能となる。
(4)前記第1の態様は、デフォルト設定された前記第1アバターの顔の表情である、項目(3)に記載の情報処理方法。
上記方法によれば、第1ユーザが第1ヘッドマウントデバイス(第1HMD)を装着していないことを示す非装着情報が受信された場合に、第1アバターの顔の表情がデフォルト設定された第1アバターの顔の表情となる。このように、第2ユーザは、仮想空間上において第1ユーザとコミュニケーションを行っているときに、第1アバターの顔の表情がデフォルト設定された顔の表情になっていることを視認することで、第1ユーザが第1HMDを装着していないことを容易に把握することができる。
(5)前記第1の態様は、前記第1ユーザが前記第1ヘッドマウントデバイスを装着していないことを示す態様として予め選択された表情である、項目(3)に記載の情報処理方法。
上記方法によれば、第1ユーザが第1ヘッドマウントデバイス(第1HMD)を装着していないことを示す非装着情報が受信された場合に、第1アバターの顔の表情が第1ユーザが第1ヘッドマウントデバイスを装着していないことを示す態様として第1ユーザによって予め選択された表情(以下、選択表情という。)に設定される。このように、第2ユーザは、仮想空間上において第1ユーザとコミュニケーションを行っているときに、第1アバターの顔の表情が選択表情になっていることを視認することで、第1ユーザが第1HMDを装着していないことを容易に把握することができる。
(6)前記第1ユーザ端末は、前記第1ユーザが前記第1ヘッドマウントデバイスを装着しているかどうかを検出するように構成された装着センサをさらに備え、
前記第1ユーザが前記第1ヘッドマウントデバイスを装着していないことを前記装着センサが検出した場合に、前記第1ユーザ端末は、前記非装着情報を出力し、前記第2ユーザ端末は、出力された前記非装着情報を前記第1ユーザ端末から受信する、項目(1)から(5)のうちいずれか一項に記載の情報処理方法。
上記方法によれば、第1ユーザ端末の装着センサから送信された情報に応じて、第1ユーザが第1ヘッドマウントデバイス(第1HMD)を装着していないことが特定される。その後、第1ユーザが第1HMDを装着していないことを示す非装着情報が送信される。このように、第1ユーザ端末の装着センサから出力された情報に応じて、第1ユーザが第1HMDを装着していないことを自動的に特定することが可能となる。
(7)(f)前記第1ヘッドマウントデバイスが前記第1ユーザから取り外された後に再び装着されたことを示す装着情報を受信した場合、前記第1ユーザが前記第1ヘッドマウントデバイスを装着していることを前記第2ユーザ端末によって前記第2ユーザに提示するステップをさらに含む、項目(1)から(6)のうちいずれか一項に記載の情報処理方法。
上記方法によれば、第1ヘッドマウントデバイス(第1HMD)が第1ユーザから取り外された後に再び装着されたことを示す装着情報が受信された場合、第2ユーザ端末によって第1ユーザが第1HMDを装着していることが第2ユーザに提示される。このように、第2ユーザは、第1ユーザが第1HMDを再び装着したことを容易に把握することができる。従って、ユーザにリッチな仮想体験を提供することができる。
(8)項目(1)から(7)のうちいずれか一項に記載の情報処理方法をコンピュータに実行させるためのプログラム。
上記プログラムによれば、ユーザにリッチな仮想体験を提供することができる。
(9)第1ユーザの頭部に装着される第1ヘッドマウントデバイスを有する第1ユーザ端末と、第2ユーザの頭部に装着される第2ヘッドマウントデバイスを有する第2ユーザ端末と、を備え、項目(1)から(7)のうちいずれか一項に記載の情報処理方法を実行するように構成された、仮想空間配信システム。
上記仮想空間配信システムによれば、ユーザにリッチな仮想体験を提供することができる。
(10)プロセッサと、
コンピュータ可読命令を記憶するメモリと、を備えた装置であって、
前記コンピュータ可読命令が前記プロセッサにより実行されると、前記装置は項目(1)から(7)のうちいずれか一項に記載の情報処理方法を実行する、装置。
上記装置によれば、ユーザにリッチな仮想体験を提供することができる。
[本開示が示す実施形態の詳細]
以下、本開示が示す実施形態について図面を参照しながら説明する。尚、本実施形態の説明において既に説明された要素と同一の参照番号を有する要素については、説明の便宜上、その説明は繰り返さない。
最初に、仮想空間配信システム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に通信可能に接続されている。尚、本実施形態において、仮想空間とは、VR(Virtual Reality)空間と、AR(Argumented Reality)空間と、MR(Mixed Reality)空間を含むものである。また、以降では、説明の便宜上、各ユーザ端末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と、装着センサ115とを備えている。表示部112は、HMD110を装着したユーザUの視界(視野)を完全に覆うように構成された非透過型の表示装置を備えている。これにより、ユーザUは、表示部112に表示された視野画像のみを見ることで仮想空間に没入することができる。尚、表示部112は、ユーザUの左目に画像を提供するように構成された左目用表示部と、ユーザUの右目に画像を提供するように構成された右目用表示部とから構成されてもよい。また、HMD110は、透過型の表示装置を備えてもよい。この場合、透過型の表示装置は、その透過率を調整することで、一時的に非透過型の表示装置として構成されてもよい。
HMDセンサ114は、HMD110の表示部112の近傍に搭載される。HMDセンサ114は、地磁気センサ、加速度センサ、傾きセンサ(角速度センサやジャイロセンサ等)のうちの少なくとも1つを含み、ユーザUの頭部に装着されたHMD110の各種動き(傾き等)を検出することができる。
注視センサ140は、ユーザUの視線を検出するアイトラッキング機能を有する。注視センサ140は、例えば、右目用注視センサと、左目用注視センサを備えてもよい。右目用注視センサは、ユーザUの右目に例えば赤外光を照射して、右目(特に、角膜や虹彩)から反射された反射光を検出することで、右目の眼球の回転角に関する情報を取得してもよい。一方、左目用注視センサは、ユーザUの左目に例えば赤外光を照射して、左目(特に、角膜や虹彩)から反射された反射光を検出することで、左目の眼球の回転角に関する情報を取得してもよい。
フェイスカメラ113は、HMD110がユーザUに装着された状態でユーザUの目(左目と右目)とまゆげ(左まゆげと右まゆげ)が表示された画像(特に、動画像)を取得するように構成されている。フェイスカメラ113は、ユーザUの目とまゆげを撮像可能なようにHMD110の内側の所定箇所に配置されている。フェイスカメラ113によって取得される動画像のフレームレートは、HMD110に表示される視野画像(後述する)のフレームレートよりも大きくてもよい。
装着センサ115は、ユーザUがHMD110を装着しているかどうかを示すためのイベント情報を生成するように構成されている。具体的には、ユーザUがHMD110を取り外したときに(HMD110の状態が装着状態から非装着状態に遷移したときに)、装着センサ115は、イベント情報を生成した上で、当該イベント情報を制御装置120に送信する。また、ユーザUがHMD110を装着したときに(HMD110の状態が非装着状態から装着状態に遷移したときに)、装着センサ115は、イベント情報を生成した上で、当該イベント情報を制御装置120に送信する。また、装着センサ115の構成は特に限定されない。例えば、ユーザUがHMD110を装着したときに、HMD110に設けられたバネの弾性力が変化すると仮定する。この場合、装着センサ115は、このバネの弾性力の変化に基づいて、イベント情報を生成してもよい。さらに、ユーザUがHMD110を装着したときに、HMD110に設けられた身体の一部(鼻部分)に接触する2つのパッド間を流れる電流が変化すると仮定する。この場合、装着センサ115は、この2つのパッド間を流れる電流の変化に基づいて、イベント情報を生成してもよい。
ヘッドフォン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の身体の一部(頭部以外の部位であり、本実施形態においてはユーザ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の右手の動作)を正確に対応付けることができる。
また、制御部121は、フェイスカメラ113,117によって取得された動画像に基づいて、ユーザUの顔の表情(状態)とユーザUのアバターの顔の表情(状態)を対応付けることができる。ユーザUの顔の表情とアバターの顔の表情を互いに対応づける処理の詳細については後述する。
また、制御装置120は、注視センサ140(左目用注視センサと右目用注視センサ)から送信された情報に基づいて、ユーザUの右目の視線と左目の視線をそれぞれ特定し、当該右目の視線と当該左目の視線の交点である注視点を特定することができる。さらに、制御装置120は、特定された注視点に基づいて、ユーザUの両目の視線(ユーザUの視線)を特定することができる。ここで、ユーザUの視線は、ユーザ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の左手の動作)に連動する左手(アバター4Aの仮想身体の一部)と、ユーザ端末1Aのコントローラ320Rの動作(ユーザAの右手の動作)に連動する右手と、表情がユーザAの顔の表情に連動する顔を有する。アバター4Aの顔は、複数の顔パーツ(例えば、目、まゆげ、口等)を有する。アバター4Bは、ユーザBによって操作されると共に、ユーザBの動作に連動する。アバター4Bは、ユーザBの左手の動作を示すユーザ端末1Bのコントローラ320Lの動作に連動する左手と、ユーザBの右手の動作を示すユーザ端末1Bのコントローラ320Rの動作に連動する右手と、表情がユーザBの顔の表情と連動する顔を有する。アバター4Bの顔は、複数の顔パーツ(例えば、目、まゆげ、口等)を有する。
尚、ユーザAに提供される仮想空間200Aでは、アバター4Aが可視化されない場合も想定される。この場合、仮想空間200Aに配置されるアバター4Aは、少なくともユーザ端末1AのHMD110の動きに連動する仮想カメラ300を含む。
また、ユーザ端末1A,1BのHMD110の位置に応じてアバター4A,4Bの位置が特定されてもよい。同様に、ユーザ端末1A,1BのHMD110の傾きに応じてアバター4A,4Bの顔の向きが特定されてもよい。さらに、ユーザ端末1A,1Bの外部コントローラ320の動作に応じてアバター4A,4Bの手の動作が特定されてもよい。特に、ユーザ端末1A,1Bのコントローラ320Lの動作に応じてアバター4A,4Bの左手の動作が特定されると共に、ユーザ端末1A,1Bのコントローラ320Rの動作に応じてアバター4A,4Bの右手の動作が特定されてもよい。また、ユーザA,Bの顔の表情(状態)に応じてアバター4A,4Bの顔の表情が特定されてもよい。
また、アバター4A,4Bの各々の目には、仮想カメラ300(図6)が配置されてもよい。特に、アバター4A,4Bの左目には、左目用仮想カメラが配置されると共に、アバター4A,4Bの右目には、右目用仮想カメラが配置されてもよい。尚、以降の説明では、仮想カメラ300は、アバター4A,4Bの目に配置されているものとする。このため、アバター4Aの視野CVは、アバター4Aに配置された仮想カメラ300の視野CV(図7参照)と一致するものとする。同様に、アバター4Bの視野CVは、アバター4Bに配置された仮想カメラ300の視野CV(図7参照)と一致するものとする。
図10の状態(b)に示すように、ユーザBの仮想空間200Bは、アバター4Aと、アバター4Bとを含む。仮想空間200A内におけるアバター4A,4Bの位置は、仮想空間200B内におけるアバター4A,4Bの位置に対応してもよい。
尚、ユーザBに提供される仮想空間200Bでは、アバター4Bが可視化されない場合も想定される。この場合、仮想空間200Bに配置されるアバター4Bは、少なくともユーザ端末1BのHMD110の動きに連動する仮想カメラ300を含む。
次に、図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のまゆげ(左まゆげと右まゆげ)の状態を示す情報をそれぞれ生成する。
同様に、ユーザ端末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の動きを同期させることが可能となる。
次に、図12及び図14を主に参照することで、ユーザAのHMD110を取り外した場合における本実施形態に係る情報処理方法について説明する。図12は、ユーザAがHMD110を取り外した場合における本実施形態に係る情報処理方法を説明するためのフローチャートの一例である。図14は、本実施形態に係る情報処理方法を説明するためのユーザBに提供される仮想空間200Bの一例を示す図である。尚、図12に示すフローチャートでは、ユーザ端末1Aの制御部121がアバター4Aの制御情報をサーバ2に送信する処理やユーザ端末1Bの制御部121がアバター4Bの制御情報をサーバ2に送信する処理については説明の便宜上省略している。
本実施形態では、前提条件として、図14に示すように、アバター4Aと、アバター4Bが同一の仮想空間を共有しているものとする。つまり、通信ネットワーク3を介してユーザA,Bが一つの仮想空間を共有するものとする。
ユーザBの仮想空間200Bは、アバター4Aと、アバター4Bとを含む。ユーザ端末1Bの制御部121は、仮想空間200Bを示す仮想空間データを更新する。本説明では、説明の便宜上、アバター4Aに提供される仮想空間200Aの図示は省略する。
図12を参照すると、ステップS30において、ユーザ端末1Aの制御部121は、ユーザAがHMD110を取り外したかどうかを判定する。この点において、制御部121は、HMDセンサ114から送信されたHMD110の傾き情報又は装着センサ115から送信されたイベント情報に基づいて、ユーザAがHMD110を取り外したかどうかを判定してもよい。HMD114と装着センサ115は、HMD110を装着しているかどうかを検出するように構成されたセンサとして機能する。
図13の状態(a)を参照して、HMDセンサ114を用いてユーザAがHMD110を取り外したかどうかを判定する処理について説明する。図13の状態(a)は、HMDセンサ114を用いてユーザAがHMD110を取り外したかどうかを判定するための処理を説明するためのフローチャートの一例である。図13の状態(a)に示すように、制御部121は、HMDセンサ114からHMD110の傾き(ロール角、ヨー角、ピッチ角)を示す傾き情報を受信する(ステップS301)。次に、制御部121は、受信した傾き情報に基づいて、HMD110の傾きが所定の傾きよりも大きいかどうかを判定する(S302)。ここで、所定の傾きは、ユーザによって適宜設定されてもよい。ユーザAがHMD110を装着している間では、HMD110の傾きが所定の傾きよりも大きくなることがないものとする。つまり、ユーザAがHMD110を装着している間では、HMD110の傾きは所定の傾き以下となる一方で、ユーザAがHMD110を取り外すときは、HMD110が大きく傾くため、HMD110の傾きが所定の傾きを超えることがある。このような観点より、所定の傾きが設定される。
例えば、制御部121は、HMD110の傾きの一例として、HMD110のピッチ角θが所定の角度θthよりも大きいと判定した場合に(ステップS302でYES)、ユーザAがHMD110を取り外した(換言すれば、ユーザAがHMD110を装着していない)ことを特定した上で、ステップS31の処理を実行する。一方、制御部121は、HMD110のピッチ角θが所定の角度θth以下であると判定した場合に(ステップS302でNO)、ユーザAがHMD110を装着していることを特定した上で、HMDセンサ114からのHMD110の傾き情報を受信するまで待機する。
次に、図13の状態(b)を参照して、装着センサ115を用いてユーザAがHMD110を取り外したかどうかを判定する処理について説明する。図13の状態(b)は、装着センサ115を用いてユーザAがHMD110を取り外したかどうかを判定するための処理を説明するためのフローチャートの一例である。図13の状態(b)に示すように、制御部121は、装着センサ115からイベント情報を受信したかどうかを判定する(ステップS303)。ここで、装着センサ115から送信されたイベント情報は、ユーザ端末1AのHMD110の状態が装着状態と非装着状態との間で変化したことを示す情報である。例えば、ユーザAがHMD110を取り外したときに(HMD110の状態が装着状態から非装着状態に遷移したときに)、装着センサ115はイベント情報を出力する。また、ユーザAがHMD110を装着したときに(HMD110の状態が非装着状態から装着状態に遷移したときに)、装着センサ115はイベント情報を出力する。
制御部121は、装着センサ115からイベント情報を受信したと判定した場合に(ステップS303でYES)、ユーザAがHMD110を取り外した(換言すれば、ユーザAがHMD110を装着していない)ことを特定した上で、ステップS31の処理を実行する。一方、制御部121は、装着センサ115からイベント情報を受信していないと判定した場合に(ステップS303でNO)、ユーザAはHMD110を装着していることを特定した上で、イベント情報を装着センサ115から受信するまで待機する。
次に、図12に戻ると、制御部121は、ユーザAがHMD110を取り外した(換言すれば、ユーザAがHMD110を装着していない)と判定した場合に(ステップS30YES)、ユーザAがHMD110を装着していないことを示す情報(非装着情報)を生成する(ステップS31)。その後、制御部121は、通信ネットワーク3を介して非装着情報をサーバ2に送信する(ステップS32)。
次に、サーバ2は、非装着情報をユーザ端末1Aから受信した後に、通信ネットワーク3を介して非装着情報をユーザ端末1Bに送信する(ステップS33)。その後、ユーザ端末1Bの制御部121は、非装着情報をサーバ2から受信した後に、仮想空間200Bに配置されたアバター4Aの顔の表情をデフォルトの顔の表情(換言すれば、デフォルト設定された顔の表情)に設定する(ステップS34)。ここで、アバター4Aのデフォルトの顔の表情とは、アバター4Aの顔の表情の更新を開始する前の初期状態におけるアバター4Aの顔の表情をいう。デフォルトの顔の表情が笑顔の場合、図14に示すように、アバター4Aの顔の表情は笑顔に設定される。また、制御部121は、アバター4Bの制御情報に基づいて、アバター4Bの動作(アバター4Bの顔の表情を含む)を更新する。
尚、ステップS34において、制御部121は、ユーザAがHMD110を装着していないことを示す態様として、アバター4Aの顔の表情をユーザAによって予め選択された表情に設定してもよい。この場合、ユーザAによって選択されたアバター4Aの表情に関する情報がユーザ端末1Aからユーザ端末1Bに送信された上で、ユーザ端末1Bの記憶部123に予め保存されてもよい。
次に、制御部121は、図14に示すように、アバター4Aに関連付けられた吹き出しオブジェクト42Aを仮想空間200Bに生成する。吹き出しオブジェクト42Aには、ユーザAがHMD110を装着していないことを示す情報(例えば、「ユーザAは退席中です。」等)が表示される。
尚、制御部121は、吹き出しオブジェクト42Aの代わりに、テロップオブジェクト43Aを仮想空間200Bに生成してもよい(図15参照)。図15に示すように、テロップオブジェクト43Aには、ユーザAがHMD110を装着していないことを示す情報(例えば、「ユーザAは退席中です。」等)が表示される。テロップオブジェクト43Aは、アバター4Aの近くに配置されてもよいし、アバター4Bの視野CV内に常に配置されるように、アバター4Bの視野CVの動きに連動してもよい。さらに、ユーザAがHMD110を装着していないことを示す情報を示すテロップがHMD110に表示される視野画像上に重畳されてもよい。
その後、制御部121は、仮想空間200Bを示す仮想空間データを更新すると共に、ユーザ端末1BのHMD110の動きに応じてアバター4Bの視野CVを更新する。次に、制御部121は、更新された仮想屈間データと更新されたアバター4Bの視野CVに基づいて視野画像データを更新した上で、更新された視野画像データに基づいて視野画像をHMD110に表示する(ステップS36)。
一方、ユーザ端末1Aの制御部121は、通信ネットワーク3を介して非装着情報をサーバ2に送信した後に、アクティブモードからスリープモードに移行する(ステップS37)。この場合、制御部121のモードがスリープモードである一方、センサ(装着センサ115又はHMDセンサ114)のモードはアクティブモードであることが好ましい。
本実施形態によれば、ユーザAがHMD110を装着していない場合に、ユーザ端末1BによってユーザAがHMD110を装着していないことがユーザBに提示される。特に、本実施形態によれば、ユーザAがHMD110を装着していない場合に、ユーザAがHMD110を装着していないことを示す情報がユーザ端末1BのHMD110に表示される視野画像上において可視化される。この点において、表情がデフォルトの表情に設定されたアバター4Aと吹き出しオブジェクト42Aがユーザ端末1BのHMD110に表示される視野画像上において可視化される。
このように、ユーザBは、仮想空間200B上においてユーザAとコミュニケーションを行っているときに、アバター4Aのデフォルトの表情(例えば、笑顔)及び吹き出しオブジェクト42Aに表示された情報を視認することで、ユーザAがHMD110を装着していないことを容易に把握することができる。従って、ユーザにリッチな仮想体験を提供することができる。
特に、ユーザBは、ユーザAがHMD110を装着していないことを把握してなければ、リアクションを示さないユーザAに対して違和感を抱く場合がある。このように、ユーザAがHMD100を装着していないことをユーザBに把握させることで、ユーザBがリアクションを示さないユーザAに対して違和感(例えば、不気味の谷現象)を抱くといった状況を回避することが可能となる。
また、本実施形態によれば、ユーザ端末1Aのセンサ(HMDセンサ114又は装着センサ115)から送信された情報(傾き情報又はイベント情報)に応じて、ユーザAがHMD110を装着していないことが特定される。その後、ユーザAがHMD110を装着していないことを示す非装着情報がサーバ2に送信される。このように、ユーザ端末1Aのセンサから出力された情報に応じて、ユーザAがHMD110を装着していないことを自動的に特定することが可能となる。
尚、本実施形態では、ユーザ端末1Aは、サーバ2を介して非装着情報をユーザ端末1Bに送信しているが、非装着情報に代わって、HMDセンサ114から送信された傾き情報をユーザ端末1Bに送信してもよい。この場合、ユーザ端末1Bの制御部121は、受信した傾き情報に基づいて、ユーザAがHMD110を装着していないことを特定した上で、ステップS34からS36に規定される処理を実行してもよい。
次に、図16及び図17を主に参照することで、HMD110を取り外したユーザAがHMD110を再び装着した場合における本実施形態に係る情報処理方法について説明する。図16は、ユーザAがHMD110を再び装着した場合における本実施形態に係る情報処理方法を説明するためのフローチャートの一例である。図17は、本実施形態に係る情報処理方法を説明するためのユーザBに提供される仮想空間200Bの一例を示す図である。
図16を参照すると、ステップS40において、ユーザ端末1Aの制御部121は、ユーザAが再びHMD110を装着したかどうかを判定する。この点において、制御部121は、HMDセンサ114から送信されたHMD110の傾き情報又は装着センサ115から送信されたイベント情報に基づいて、ユーザAがHMD110を再び装着したかどうかを判定してもよい。例えば、制御部121は、装着センサ115からイベント情報を受信したと判定した場合に、ユーザAがHMD110を装着したことを特定した上で、ステップS41の処理を実行する。一方、制御部121は、装着センサ115からイベント情報を受信していないと判定した場合に、ユーザAはHMD110を装着していないことを特定した上で、イベント情報を装着センサ115から受信するまで待機する。
ステップS40の判定結果がYESの場合、制御部121は、スリープモードからアクティブモードに移行する(ステップS41)。次に、アクティブモードに移行した制御部121は、アバター4Aの制御情報を生成すると共に、ユーザAがHMD110を装着したことを示す装着情報を生成する(ステップS42)。その後、ステップS43において、制御部121は、通信ネットワーク3を介してアバター4Aの制御情報と装着情報をサーバ2に送信する(ステップS43)。
次に、サーバ2は、アバター4Aの制御情報と装着情報をユーザ端末1Aから受信した後に、通信ネットワーク3を介してアバター4Aの制御情報と装着情報をユーザ端末1Bに送信する(ステップS44)。その後、ステップS45において、ユーザ端末1Bの制御部121は、アバター4Aの制御情報に基づいてアバター4Aの動作を更新する共に、アバター4Bの制御情報に基づいてアバター4Bの動作を更新する。特に、制御部121は、アバター4Aの制御情報に含まれるアバター4Aの顔情報に基づいて、アバター4Aの顔の表情を更新すると共に、アバター4Bの制御情報に含まれるアバター4Bの顔情報に基づいて、アバター4Bの顔の表情を更新する。
次に、制御部121は、図17に示すように、アバター4Aに関連付けられた吹き出しオブジェクト44Aを仮想空間200Bに生成する(ステップS46)。吹き出しオブジェクト44Aには、ユーザAがHMD110を装着したことを示す情報(例えば、「ユーザAは席に戻りました。」等)が表示される。
その後、制御部121は、仮想空間200Bを示す仮想空間データを更新すると共に、ユーザ端末1BのHMD110の動きに応じてアバター4Bの視野CVを更新する。次に、制御部121は、更新された仮想屈間データと更新されたアバター4Bの視野CVに基づいて視野画像データを更新した上で、更新された視野画像データに基づいて視野画像をHMD110に表示する(ステップS47)。
本実施形態によれば、ユーザAがHMD110を取り外した後に再び装着した場合、ユーザ端末1BによってユーザAがHMD110を装着していることがユーザBに提示される。このように、ユーザBは、更新されたアバター4Aの表情と吹き出しオブジェクト44Aを視認することで、ユーザAがHMD110を再び装着したことを容易に把握することができる。従って、ユーザにリッチな仮想体験を提供することができる。
尚、本実施形態の説明では、ユーザAがHMD110を装着したこと又は装着していないことを示す情報が視野画像上に可視化されているが、本実施形態はこれには限定されない。例えば、ユーザAがHMD110を装着していないことを示す音声案内(例えば、「ユーザAは退席しました。」等)やユーザAがHMD110を装着したことを示す音声案内(例えば、「ユーザAは席に戻りました。」等)がユーザ端末1Bのヘッドフォン116(音声出力部)から出力されてもよい。この場合、ユーザ端末1Aの制御部121は、サーバ2を介して非装着情報(又は装着情報)と共に音声案内データをユーザ端末1Bに送信する。
また、本実施形態の説明では、仮想空間200Bを示す仮想空間データがユーザ端末1B側で更新されていることを前提としているが、仮想空間データはサーバ2側で更新されてもよい。さらに、視野画像に対応する視野画像データがユーザ端末1B側で更新されていることを前提としているが、視野画像データはサーバ2側で更新されてもよい。この場合、ユーザ端末1Bは、サーバ2から送信された視野画像データに基づいて、HMD110に視野画像を表示する。
また、図12及び16に示す各ステップで規定される処理の順番はあくまでも一例であって、これらのステップの順番は適宜変更可能である。
また、ユーザ端末1の制御部121によって実行される各種処理をソフトウェアによって実現するために、各種処理をコンピュータ(プロセッサ)に実行させるための制御プログラムが記憶部123又はメモリに予め組み込まれていてもよい。または、制御プログラムは、磁気ディスク(HDD、フロッピーディスク)、光ディスク(CD−ROM,DVD−ROM、Blu−rayディスク等)、光磁気ディスク(MO等)、フラッシュメモリ(SDカード、USBメモリ、SSD等)等のコンピュータ読取可能な記憶媒体に格納されていてもよい。この場合、記憶媒体が制御装置120に接続されることで、当該記憶媒体に格納された制御プログラムが、記憶部123に組み込まれる。そして、記憶部123に組み込まれた制御プログラムがRAM上にロードされて、プロセッサがロードされた当該プログラムを実行することで、制御部121は各種処理を実行する。
また、制御プログラムは、通信ネットワーク3上のコンピュータから通信インターフェース125を介してダウンロードされてもよい。この場合も同様に、ダウンロードされた当該制御プログラムが記憶部123に組み込まれる。
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲及びその均等の範囲に基づいて定められるべきである。