以下、この技術的思想の実施の形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。本開示において示される1以上の実施形態において、各実施形態が含む要素を互いに組み合わせることができ、かつ、当該組み合わせられた結果物も本開示が示す実施形態の一部をなすものとする。
[HMDシステムの構成]
図1を参照して、HMD(Head-Mounted Device)システム100の構成について説明する。図1は、本実施の形態に従うHMDシステム100の構成の概略を表す図である。HMDシステム100は、家庭用のシステムとしてあるいは業務用のシステムとして提供される。HMDシステム100は、ユーザに所定のサービスを提供する。
HMDシステム100は、サーバ600と、HMDセット110A,110B,110C,110Dと、外部機器700と、ネットワーク2とを含む。HMDセット110A,110B,110C,110Dの各々は、ネットワーク2を介してサーバ600や外部機器700と通信可能に構成される。以下、HMDセット110A,110B,110C,110Dを総称して、HMDセット110とも言う。HMDシステム100を構成するHMDセット110の数は、4つに限られず、3つ以下でも、5つ以上でもよい。HMDセット110は、HMD120と、コンピュータ200と、HMDセンサ410と、ディスプレイ430と、コントローラ300とを備える。HMD120は、モニタ130と、注視センサ140と、第1カメラ150と、第2カメラ160と、マイク170と、スピーカ180とを含む。コントローラ300は、モーションセンサ420を含み得る。
ある局面において、コンピュータ200は、インターネットその他のネットワーク2に接続可能であり、ネットワーク2に接続されているサーバ600その他のコンピュータと通信可能である。その他のコンピュータとしては、例えば、他のHMDセット110のコンピュータや外部機器700が挙げられる。別の局面において、HMD120は、HMDセンサ410の代わりに、センサ190を含み得る。
HMD120は、ユーザ5の頭部に装着され、動作中に仮想空間をユーザ5に提供し得る。より具体的には、HMD120は、右目用の画像および左目用の画像をモニタ130にそれぞれ表示する。ユーザ5の各目がそれぞれの画像を視認すると、ユーザ5は、両目の視差に基づき当該画像を3次元画像として認識し得る。HMD120は、モニタを備える所謂ヘッドマウントディスプレイと、スマートフォンその他のモニタを有する端末を装着可能なヘッドマウント機器のいずれをも含み得る。
モニタ130は、例えば、非透過型の表示装置として実現される。ある局面において、モニタ130は、ユーザ5の両目の前方に位置するようにHMD120の本体に配置されている。したがって、ユーザ5は、モニタ130に表示される3次元画像を視認すると、仮想空間に没入することができる。ある局面において、仮想空間は、例えば、背景、ユーザ5が操作可能なオブジェクト、ユーザ5が選択可能なメニューの画像を含む。ある局面において、モニタ130は、所謂スマートフォンその他の情報表示端末が備える液晶モニタまたは有機EL(Electro Luminescence)モニタとして実現され得る。
別の局面において、モニタ130は、透過型の表示装置として実現され得る。この場合、HMD120は、図1に示されるようにユーザ5の目を覆う密閉型ではなく、メガネ型のような開放型であり得る。透過型のモニタ130は、その透過率を調整することにより、一時的に非透過型の表示装置として構成可能であってもよい。モニタ130は、仮想空間を構成する画像の一部と、現実空間とを同時に表示する構成を含んでいてもよい。例えば、モニタ130は、HMD120に搭載されたカメラで撮影した現実空間の画像を表示してもよいし、一部の透過率を高く設定することにより現実空間を視認可能にしてもよい。
ある局面において、モニタ130は、右目用の画像を表示するためのサブモニタと、左目用の画像を表示するためのサブモニタとを含み得る。別の局面において、モニタ130は、右目用の画像と左目用の画像とを一体として表示する構成であってもよい。この場合、モニタ130は、高速シャッタを含む。高速シャッタは、画像がいずれか一方の目にのみ認識されるように、右目用の画像と左目用の画像とを交互に表示可能に作動する。
ある局面において、HMD120は、図示せぬ複数の光源を含む。各光源は例えば、赤外線を発するLED(Light Emitting Diode)により実現される。HMDセンサ410は、HMD120の動きを検出するためのポジショントラッキング機能を有する。より具体的には、HMDセンサ410は、HMD120が発する複数の赤外線を読み取り、現実空間内におけるHMD120の位置および傾きを検出する。
別の局面において、HMDセンサ410は、カメラにより実現されてもよい。この場合、HMDセンサ410は、カメラから出力されるHMD120の画像情報を用いて、画像解析処理を実行することにより、HMD120の位置および傾きを検出することができる。
別の局面において、HMD120は、位置検出器として、HMDセンサ410の代わりに、あるいはHMDセンサ410に加えてセンサ190を備えてもよい。HMD120は、センサ190を用いて、HMD120自身の位置および傾きを検出し得る。例えば、センサ190が角速度センサ、地磁気センサ、あるいは加速度センサである場合、HMD120は、HMDセンサ410の代わりに、これらの各センサのいずれかを用いて、自身の位置および傾きを検出し得る。一例として、センサ190が角速度センサである場合、角速度センサは、現実空間におけるHMD120の3軸周りの角速度を経時的に検出する。HMD120は、各角速度に基づいて、HMD120の3軸周りの角度の時間的変化を算出し、さらに、角度の時間的変化に基づいて、HMD120の傾きを算出する。
注視センサ140は、ユーザ5の右目および左目の視線が向けられる方向を検出する。つまり、注視センサ140は、ユーザ5の視線を検出する。視線の方向の検出は、例えば、公知のアイトラッキング機能によって実現される。注視センサ140は、当該アイトラッキング機能を有するセンサにより実現される。ある局面において、注視センサ140は、右目用のセンサおよび左目用のセンサを含むことが好ましい。注視センサ140は、例えば、ユーザ5の右目および左目に赤外光を照射するとともに、照射光に対する角膜および虹彩からの反射光を受けることにより各眼球の回転角を検出するセンサであってもよい。注視センサ140は、検出した各回転角に基づいて、ユーザ5の視線を検知することができる。
第1カメラ150は、ユーザ5の顔の下部を撮影する。より具体的には、第1カメラ150は、ユーザ5の鼻および口などを撮影する。第2カメラ160は、ユーザ5の目および眉などを撮影する。HMD120のユーザ5側の筐体をHMD120の内側、HMD120のユーザ5とは逆側の筐体をHMD120の外側と定義する。ある局面において、第1カメラ150は、HMD120の外側に配置され、第2カメラ160は、HMD120の内側に配置され得る。第1カメラ150および第2カメラ160が生成した画像は、コンピュータ200に入力される。別の局面において、第1カメラ150と第2カメラ160とを1台のカメラとして実現し、この1台のカメラでユーザ5の顔を撮影するようにしてもよい。
マイク170は、ユーザ5の発話を音声信号(電気信号)に変換してコンピュータ200に出力する。スピーカ180は、音声信号を音声に変換してユーザ5に出力する。別の局面において、HMD120は、スピーカ180に替えてイヤホンを含み得る。
コントローラ300は、有線または無線によりコンピュータ200に接続されている。コントローラ300は、ユーザ5からコンピュータ200への命令の入力を受け付ける。ある局面において、コントローラ300は、ユーザ5によって把持可能に構成される。別の局面において、コントローラ300は、ユーザ5の身体あるいは衣類の一部に装着可能に構成される。さらに別の局面において、コントローラ300は、コンピュータ200から送信される信号に基づいて、振動、音、光のうちの少なくともいずれかを出力するように構成されてもよい。さらに別の局面において、コントローラ300は、ユーザ5から、仮想空間に配置されるオブジェクトの位置や動きを制御するための操作を受け付ける。
ある局面において、コントローラ300は、複数の光源を含む。各光源は例えば、赤外線を発するLEDにより実現される。HMDセンサ410は、ポジショントラッキング機能を有する。この場合、HMDセンサ410は、コントローラ300が発する複数の赤外線を読み取り、現実空間内におけるコントローラ300の位置および傾きを検出する。別の局面において、HMDセンサ410は、カメラにより実現されてもよい。この場合、HMDセンサ410は、カメラから出力されるコントローラ300の画像情報を用いて、画像解析処理を実行することにより、コントローラ300の位置および傾きを検出することができる。
モーションセンサ420は、ある局面において、ユーザ5の手に取り付けられて、ユーザ5の手の動きを検出する。例えば、モーションセンサ420は、手の回転速度、回転数等を検出する。検出された信号は、コンピュータ200に送られる。モーションセンサ420は、例えば、コントローラ300に設けられている。ある局面において、モーションセンサ420は、例えば、ユーザ5に把持可能に構成されたコントローラ300に設けられている。別の局面において、現実空間における安全のため、コントローラ300は、手袋型のようにユーザ5の手に装着されることにより容易に飛んで行かないものに装着される。さらに別の局面において、ユーザ5に装着されないセンサがユーザ5の手の動きを検出してもよい。例えば、ユーザ5を撮影するカメラの信号が、ユーザ5の動作を表す信号として、コンピュータ200に入力されてもよい。モーションセンサ420とコンピュータ200とは、一例として、無線により互いに接続される。無線の場合、通信形態は特に限られず、例えば、Bluetooth(登録商標)その他の公知の通信手法が用いられる。
ディスプレイ430は、モニタ130に表示されている画像と同様の画像を表示する。これにより、HMD120を装着しているユーザ5以外のユーザにも当該ユーザ5と同様の画像を視聴させることができる。ディスプレイ430に表示される画像は、3次元画像である必要はなく、右目用の画像や左目用の画像であってもよい。ディスプレイ430としては、例えば、液晶ディスプレイや有機ELモニタなどが挙げられる。
サーバ600は、コンピュータ200にプログラムを送信し得る。別の局面において、サーバ600は、他のユーザによって使用されるHMD120に仮想現実を提供するための他のコンピュータ200と通信し得る。例えば、アミューズメント施設において、複数のユーザが参加型のゲームを行う場合、各コンピュータ200は、各ユーザの動作に基づく信号をサーバ600を介して他のコンピュータ200と通信して、同じ仮想空間において複数のユーザが共通のゲームを楽しむことを可能にする。各コンピュータ200は、各ユーザの動作に基づく信号をサーバ600を介さずに他のコンピュータ200と通信するようにしてもよい。
外部機器700は、コンピュータ200と通信可能な機器であればどのような機器であってもよい。外部機器700は、例えば、ネットワーク2を介してコンピュータ200と通信可能な機器であってもよいし、近距離無線通信や有線接続によりコンピュータ200と直接通信可能な機器であってもよい。また、外部機器700は、例えば、ネットワーク2を介してサーバ600と通信可能な機器であってもよい。外部機器700としては、例えば、スマートデバイス、PC(Personal Computer)、およびコンピュータ200の周辺機器などが挙げられるが、これらに限定されるものではない。
[コンピュータのハードウェア構成]
図2を参照して、本実施の形態に係るコンピュータ200について説明する。図2は、本実施の形態に従うコンピュータ200のハードウェア構成の一例を表すブロック図である。コンピュータ200は、主たる構成要素として、プロセッサ210と、メモリ220と、ストレージ230と、入出力インターフェイス240と、通信インターフェイス250とを備える。各構成要素は、それぞれ、バス260に接続されている。
プロセッサ210は、コンピュータ200に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ220またはストレージ230に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ210は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、MPU(Micro Processor Unit)、FPGA(Field-Programmable Gate Array)その他のデバイスとして実現される。
メモリ220は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ230からロードされる。データは、コンピュータ200に入力されたデータと、プロセッサ210によって生成されたデータとを含む。ある局面において、メモリ220は、RAM(Random Access Memory)その他の揮発メモリとして実現される。
ストレージ230は、プログラムおよびデータを永続的に保持する。ストレージ230は、例えば、ROM(Read-Only Memory)、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ230に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、他のコンピュータ200との通信を実現するためのプログラムを含む。ストレージ230に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含む。
別の局面において、ストレージ230は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、コンピュータ200に内蔵されたストレージ230の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行うことが可能になる。
入出力インターフェイス240は、HMD120、HMDセンサ410、モーションセンサ420およびディスプレイ430との間で信号を通信する。HMD120に含まれるモニタ130,注視センサ140,第1カメラ150,第2カメラ160,マイク170およびスピーカ180は、HMD120の入出力インターフェイス240を介してコンピュータ200との通信を行ない得る。ある局面において、入出力インターフェイス240は、USB(Universal Serial Bus)、DVI(Digital Visual Interface)、HDMI(登録商標)(High-Definition Multimedia Interface)その他の端子を用いて実現される。入出力インターフェイス240は上述のものに限られない。
ある局面において、入出力インターフェイス240は、さらに、コントローラ300と通信し得る。例えば、入出力インターフェイス240は、コントローラ300およびモーションセンサ420から出力された信号の入力を受ける。別の局面において、入出力インターフェイス240は、プロセッサ210から出力された命令を、コントローラ300に送る。当該命令は、振動、音声出力、発光等をコントローラ300に指示する。コントローラ300は、当該命令を受信すると、その命令に応じて、振動、音声出力または発光のいずれかを実行する。
通信インターフェイス250は、ネットワーク2に接続されて、ネットワーク2に接続されている他のコンピュータ(例えば、サーバ600)と通信する。ある局面において、通信インターフェイス250は、例えば、LAN(Local Area Network)その他の有線通信インターフェイス、あるいは、Wi-Fi(登録商標)、Bluetooth(登録商標)、NFC(Near Field Communication)その他の無線通信インターフェイスとして実現される。通信インターフェイス250は上述のものに限られない。
ある局面において、プロセッサ210は、ストレージ230にアクセスし、ストレージ230に格納されている1つ以上のプログラムをメモリ220にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、コンピュータ200のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ210は、入出力インターフェイス240を介して、仮想空間を提供するための信号をHMD120に送る。HMD120は、その信号に基づいてモニタ130に映像を表示する。
図2に示される例では、コンピュータ200は、HMD120の外部に設けられる構成が示されているが、別の局面において、コンピュータ200は、HMD120に内蔵されてもよい。一例として、モニタ130を含む携帯型の情報通信端末(例えば、スマートフォン)がコンピュータ200として機能してもよい。
コンピュータ200は、複数のHMD120に共通して用いられる構成であってもよい。このような構成によれば、例えば、複数のユーザに同一の仮想空間を提供することもできるので、各ユーザは同一の仮想空間で他のユーザと同一のアプリケーションを楽しむことができる。
ある実施の形態において、HMDシステム100では、現実空間における座標系である実座標系が予め設定されている。実座標系は、現実空間における鉛直方向、鉛直方向に直交する水平方向、並びに、鉛直方向および水平方向の双方に直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。実座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれ、x軸、y軸、z軸と規定される。より具体的には、実座標系において、x軸は現実空間の水平方向に平行である。y軸は、現実空間の鉛直方向に平行である。z軸は現実空間の前後方向に平行である。
ある局面において、HMDセンサ410は、赤外線センサを含む。赤外線センサが、HMD120の各光源から発せられた赤外線をそれぞれ検出すると、HMD120の存在を検出する。HMDセンサ410は、さらに、各点の値(実座標系における各座標値)に基づいて、HMD120を装着したユーザ5の動きに応じた、現実空間内におけるHMD120の位置および傾き(向き)を検出する。より詳しくは、HMDセンサ410は、経時的に検出された各値を用いて、HMD120の位置および傾きの時間的変化を検出できる。
HMDセンサ410によって検出されたHMD120の各傾きは、実座標系におけるHMD120の3軸周りの各傾きに相当する。HMDセンサ410は、実座標系におけるHMD120の傾きに基づき、uvw視野座標系をHMD120に設定する。HMD120に設定されるuvw視野座標系は、HMD120を装着したユーザ5が仮想空間において物体を見る際の視点座標系に対応する。
[uvw視野座標系]
図3を参照して、uvw視野座標系について説明する。図3は、ある実施の形態に従うHMD120に設定されるuvw視野座標系を概念的に表す図である。HMDセンサ410は、HMD120の起動時に、実座標系におけるHMD120の位置および傾きを検出する。プロセッサ210は、検出された値に基づいて、uvw視野座標系をHMD120に設定する。
図3に示されるように、HMD120は、HMD120を装着したユーザ5の頭部を中心(原点)とした3次元のuvw視野座標系を設定する。より具体的には、HMD120は、実座標系を規定する水平方向、鉛直方向、および前後方向(x軸、y軸、z軸)を、実座標系内においてHMD120の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって新たに得られる3つの方向を、HMD120におけるuvw視野座標系のピッチ軸(u軸)、ヨー軸(v軸)、およびロール軸(w軸)として設定する。
ある局面において、HMD120を装着したユーザ5が直立し、かつ、正面を視認している場合、プロセッサ210は、実座標系に平行なuvw視野座標系をHMD120に設定する。この場合、実座標系における水平方向(x軸)、鉛直方向(y軸)、および前後方向(z軸)は、HMD120におけるuvw視野座標系のピッチ軸(u軸)、ヨー軸(v軸)、およびロール軸(w軸)に一致する。
uvw視野座標系がHMD120に設定された後、HMDセンサ410は、HMD120の動きに基づいて、設定されたuvw視野座標系におけるHMD120の傾きを検出できる。この場合、HMDセンサ410は、HMD120の傾きとして、uvw視野座標系におけるHMD120のピッチ角(θu)、ヨー角(θv)、およびロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ軸周りのHMD120の傾き角度を表す。ヨー角(θv)は、uvw視野座標系におけるヨー軸周りのHMD120の傾き角度を表す。ロール角(θw)は、uvw視野座標系におけるロール軸周りのHMD120の傾き角度を表す。
HMDセンサ410は、検出されたHMD120の傾きに基づいて、HMD120が動いた後のHMD120におけるuvw視野座標系を、HMD120に設定する。HMD120と、HMD120のuvw視野座標系との関係は、HMD120の位置および傾きに関わらず、常に一定である。HMD120の位置および傾きが変わると、当該位置および傾きの変化に連動して、実座標系におけるHMD120のuvw視野座標系の位置および傾きが変化する。
ある局面において、HMDセンサ410は、赤外線センサからの出力に基づいて取得される赤外線の光強度および複数の点間の相対的な位置関係(例えば、各点間の距離など)に基づいて、HMD120の現実空間内における位置を、HMDセンサ410に対する相対位置として特定してもよい。プロセッサ210は、特定された相対位置に基づいて、現実空間内(実座標系)におけるHMD120のuvw視野座標系の原点を決定してもよい。
[仮想空間]
図4を参照して、仮想空間についてさらに説明する。図4は、ある実施の形態に従う仮想空間11を表現する一態様を概念的に表す図である。仮想空間11は、中心12の360度方向の全体を覆う全天球状の構造を有する。図4では、説明を複雑にしないために、仮想空間11のうちの上半分の天球が例示されている。仮想空間11では各メッシュが規定される。各メッシュの位置は、仮想空間11に規定されるグローバル座標系であるXYZ座標系における座標値として予め規定されている。コンピュータ200は、仮想空間11に展開可能なパノラマ画像13(静止画、動画等)を構成する各部分画像を、仮想空間11において対応する各メッシュにそれぞれ対応付ける。
ある局面において、仮想空間11では、中心12を原点とするXYZ座標系が規定される。XYZ座標系は、例えば、実座標系に平行である。XYZ座標系における水平方向、鉛直方向(上下方向)、および前後方向は、それぞれX軸、Y軸、Z軸として規定される。したがって、XYZ座標系のX軸(水平方向)が実座標系のx軸と平行であり、XYZ座標系のY軸(鉛直方向)が実座標系のy軸と平行であり、XYZ座標系のZ軸(前後方向)が実座標系のz軸と平行である。
HMD120の起動時、すなわちHMD120の初期状態において、仮想カメラ14が、仮想空間11の中心12に配置される。ある局面において、プロセッサ210は、仮想カメラ14が撮影する画像をHMD120のモニタ130に表示する。仮想カメラ14は、現実空間におけるHMD120の動きに連動して、仮想空間11を同様に移動する。これにより、現実空間におけるHMD120の位置および傾きの変化が、仮想空間11において同様に再現され得る。
仮想カメラ14には、HMD120の場合と同様に、uvw視野座標系が規定される。仮想空間11における仮想カメラ14のuvw視野座標系は、現実空間(実座標系)におけるHMD120のuvw視野座標系に連動するように規定されている。したがって、HMD120の傾きが変化すると、それに応じて、仮想カメラ14の傾きも変化する。仮想カメラ14は、HMD120を装着したユーザ5の現実空間における移動に連動して、仮想空間11において移動することもできる。
コンピュータ200のプロセッサ210は、仮想カメラ14の位置と傾き(基準視線16)とに基づいて、仮想空間11における視界領域15を規定する。視界領域15は、仮想空間11のうち、HMD120を装着したユーザ5が視認する領域に対応する。つまり、仮想カメラ14の位置は、仮想空間11におけるユーザ5の視点と言える。
注視センサ140によって検出されるユーザ5の視線は、ユーザ5が物体を視認する際の視点座標系における方向である。HMD120のuvw視野座標系は、ユーザ5がモニタ130を視認する際の視点座標系に等しい。仮想カメラ14のuvw視野座標系は、HMD120のuvw視野座標系に連動している。したがって、ある局面に従うHMDシステム100は、注視センサ140によって検出されたユーザ5の視線を、仮想カメラ14のuvw視野座標系におけるユーザ5の視線とみなすことができる。
[ユーザの視線]
図5を参照して、ユーザ5の視線の決定について説明する。図5は、ある実施の形態に従うHMD120を装着するユーザ5の頭部を上から表した図である。
ある局面において、注視センサ140は、ユーザ5の右目および左目の各視線を検出する。ある局面において、ユーザ5が近くを見ている場合、注視センサ140は、視線R1およびL1を検出する。別の局面において、ユーザ5が遠くを見ている場合、注視センサ140は、視線R2およびL2を検出する。この場合、ロール軸wに対して視線R2およびL2が成す角度は、ロール軸wに対して視線R1およびL1が成す角度よりも小さい。注視センサ140は、検出結果をコンピュータ200に送信する。
コンピュータ200が、視線の検出結果として、視線R1およびL1の検出値を注視センサ140から受信した場合には、その検出値に基づいて、視線R1およびL1の交点である注視点N1を特定する。一方、コンピュータ200は、視線R2およびL2の検出値を注視センサ140から受信した場合には、視線R2およびL2の交点を注視点として特定する。コンピュータ200は、特定した注視点N1の位置に基づき、ユーザ5の視線N0を特定する。コンピュータ200は、例えば、ユーザ5の右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の延びる方向を、視線N0として検出する。視線N0は、ユーザ5が両目により実際に視線を向けている方向である。視線N0は、視界領域15に対してユーザ5が実際に視線を向けている方向に相当する。
別の局面において、HMDシステム100は、テレビジョン放送受信チューナを備えてもよい。このような構成によれば、HMDシステム100は、仮想空間11においてテレビ番組を表示することができる。
さらに別の局面において、HMDシステム100は、インターネットに接続するための通信回路、あるいは、電話回線に接続するための通話機能を備えていてもよい。
[視界領域]
図6および図7を参照して、視界領域15について説明する。図6は、仮想空間11において視界領域15をX方向から見たYZ断面を表す図である。図7は、仮想空間11において視界領域15をY方向から見たXZ断面を表す図である。
図6に示されるように、YZ断面における視界領域15は、領域18を含む。領域18は、仮想カメラ14の位置と基準視線16と仮想空間11のYZ断面とによって定義される。プロセッサ210は、仮想空間における基準視線16を中心として極角αを含む範囲を、領域18として規定する。
図7に示されるように、XZ断面における視界領域15は、領域19を含む。領域19は、仮想カメラ14の位置と基準視線16と仮想空間11のXZ断面とによって定義される。プロセッサ210は、仮想空間11における基準視線16を中心とした方位角βを含む範囲を、領域19として規定する。極角αおよびβは、仮想カメラ14の位置と仮想カメラ14の傾き(向き)とに応じて定まる。
ある局面において、HMDシステム100は、コンピュータ200からの信号に基づいて、視界画像17をモニタ130に表示させることにより、ユーザ5に仮想空間11における視界を提供する。視界画像17は、パノラマ画像13のうち視界領域15に対応する部分に相当する画像である。ユーザ5が、頭に装着したHMD120を動かすと、その動きに連動して仮想カメラ14も動く。その結果、仮想空間11における視界領域15の位置が変化する。これにより、モニタ130に表示される視界画像17は、パノラマ画像13のうち、仮想空間11においてユーザ5が向いた方向の視界領域15に重畳する画像に更新される。ユーザ5は、仮想空間11における所望の方向を視認することができる。
このように、仮想カメラ14の傾きは仮想空間11におけるユーザ5の視線(基準視線16)に相当し、仮想カメラ14が配置される位置は、仮想空間11におけるユーザ5の視点に相当する。したがって、仮想カメラ14の位置または傾きを変更することにより、モニタ130に表示される画像が更新され、ユーザ5の視界が移動される。
ユーザ5は、HMD120を装着している間、現実世界を視認することなく、仮想空間11に展開されるパノラマ画像13のみを視認できる。そのため、HMDシステム100は、仮想空間11への高い没入感覚をユーザ5に与えることができる。
ある局面において、プロセッサ210は、HMD120を装着したユーザ5の現実空間における移動に連動して、仮想空間11において仮想カメラ14を移動し得る。この場合、プロセッサ210は、仮想空間11における仮想カメラ14の位置および傾きに基づいて、HMD120のモニタ130に投影される画像領域(視界領域15)を特定する。
ある局面において、仮想カメラ14は、2つの仮想カメラ、すなわち、右目用の画像を提供するための仮想カメラと、左目用の画像を提供するための仮想カメラとを含み得る。ユーザ5が3次元の仮想空間11を認識できるように、適切な視差が、2つの仮想カメラに設定される。別の局面において、仮想カメラ14を1つの仮想カメラにより実現してもよい。この場合、1つの仮想カメラにより得られた画像から、右目用の画像と左目用の画像とを生成するようにしてもよい。本実施の形態においては、仮想カメラ14が2つの仮想カメラを含み、2つの仮想カメラのロール軸が合成されることによって生成されるロール軸(w)がHMD120のロール軸(w)に適合されるように構成されているものとして、本開示に係る技術思想を例示する。
[コントローラ]
図8を参照して、コントローラ300の一例について説明する。図8は、ある実施の形態に従うコントローラ300の概略構成を表す図である。
図8に示されるように、ある局面において、コントローラ300は、右コントローラ300Rと図示せぬ左コントローラとを含み得る。右コントローラ300Rは、ユーザ5の右手で操作される。左コントローラは、ユーザ5の左手で操作される。ある局面において、右コントローラ300Rと左コントローラとは、別個の装置として対称に構成される。したがって、ユーザ5は、右コントローラ300Rを把持した右手と、左コントローラを把持した左手とをそれぞれ自由に動かすことができる。別の局面において、コントローラ300は両手の操作を受け付ける一体型のコントローラであってもよい。以下、右コントローラ300Rについて説明する。
右コントローラ300Rは、グリップ310と、フレーム320と、天面330とを備える。グリップ310は、ユーザ5の右手によって把持されるように構成されている。たとえば、グリップ310は、ユーザ5の右手の掌と3本の指(中指、薬指、小指)とによって保持され得る。
グリップ310は、ボタン340,350と、モーションセンサ420とを含む。ボタン340は、グリップ310の側面に配置され、右手の中指による操作を受け付ける。ボタン350は、グリップ310の前面に配置され、右手の人差し指による操作を受け付ける。ある局面において、ボタン340,350は、トリガー式のボタンとして構成される。モーションセンサ420は、グリップ310の筐体に内蔵されている。ユーザ5の動作がカメラその他の装置によってユーザ5の周りから検出可能である場合には、グリップ310は、モーションセンサ420を備えなくてもよい。
フレーム320は、その円周方向に沿って配置された複数の赤外線LED360を含む。赤外線LED360は、コントローラ300を使用するプログラムの実行中に、当該プログラムの進行に合わせて赤外線を発光する。赤外線LED360から発せられた赤外線は、右コントローラ300Rと左コントローラとの各位置や姿勢(傾き、向き)を検出するために使用され得る。図8に示される例では、二列に配置された赤外線LED360が示されているが、配列の数は図8に示されるものに限られない。一列あるいは3列以上の配列が使用されてもよい。
天面330は、ボタン370,380と、アナログスティック390とを備える。ボタン370,380は、プッシュ式ボタンとして構成される。ボタン370,380は、ユーザ5の右手の親指による操作を受け付ける。アナログスティック390は、ある局面において、初期位置(ニュートラルの位置)から360度任意の方向への操作を受け付ける。当該操作は、たとえば、仮想空間11に配置されるオブジェクトを移動するための操作を含む。
ある局面において、右コントローラ300Rおよび左コントローラは、赤外線LED360その他の部材を駆動するための電池を含む。電池は、充電式、ボタン型、乾電池型などを含むが、これらに限定されない。別の局面において、右コントローラ300Rと左コントローラは、たとえば、コンピュータ200のUSBインターフェイスに接続され得る。この場合、右コントローラ300Rおよび左コントローラは、電池を必要としない。
図8の状態(A)および状態(B)に示されるように、例えば、ユーザ5の右手に対して、ヨー、ロール、ピッチの各方向が規定される。ユーザ5が親指と人差し指とを伸ばした場合に、親指の伸びる方向がヨー方向、人差し指の伸びる方向がロール方向、ヨー方向の軸およびロール方向の軸によって規定される平面に垂直な方向がピッチ方向として規定される。
[サーバのハードウェア構成]
図9を参照して、本実施の形態に係るサーバ600について説明する。図9は、ある実施の形態に従うサーバ600のハードウェア構成の一例を表すブロック図である。サーバ600は、主たる構成要素として、プロセッサ610と、メモリ620と、ストレージ630と、入出力インターフェイス640と、通信インターフェイス650とを備える。各構成要素は、それぞれ、バス660に接続されている。
プロセッサ610は、サーバ600に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ620またはストレージ630に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ610は、CPU、GPU、MPU、FPGAその他のデバイスとして実現される。
メモリ620は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ630からロードされる。データは、サーバ600に入力されたデータと、プロセッサ610によって生成されたデータとを含む。ある局面において、メモリ620は、RAMその他の揮発メモリとして実現される。
ストレージ630は、プログラムおよびデータを永続的に保持する。ストレージ630は、例えば、ROM、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ630に格納されるプログラムは、HMDシステム100において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、コンピュータ200との通信を実現するためのプログラムを含んでもよい。ストレージ630に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含んでもよい。
別の局面において、ストレージ630は、メモリカードのように着脱可能な記憶装置として実現されてもよい。さらに別の局面において、サーバ600に内蔵されたストレージ630の代わりに、外部の記憶装置に保存されているプログラムおよびデータを使用する構成が使用されてもよい。このような構成によれば、例えば、アミューズメント施設のように複数のHMDシステム100が使用される場面において、プログラムやデータの更新を一括して行うことが可能になる。
入出力インターフェイス640は、入出力機器との間で信号を通信する。ある局面において、入出力インターフェイス640は、USB、DVI、HDMIその他の端子を用いて実現される。入出力インターフェイス640は上述のものに限られない。
通信インターフェイス650は、ネットワーク2に接続されて、ネットワーク2に接続されているコンピュータ200と通信する。ある局面において、通信インターフェイス650は、例えば、LANその他の有線通信インターフェイス、あるいは、Wi-Fi、Bluetooth、NFCその他の無線通信インターフェイスとして実現される。通信インターフェイス650は上述のものに限られない。
ある局面において、プロセッサ610は、ストレージ630にアクセスし、ストレージ630に格納されている1つ以上のプログラムをメモリ620にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、サーバ600のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。プロセッサ610は、入出力インターフェイス640を介して、仮想空間を提供するための信号をコンピュータ200に送ってもよい。
[HMDの制御装置]
図10を参照して、HMD120の制御装置について説明する。ある実施の形態において、制御装置は周知の構成を有するコンピュータ200によって実現される。図10は、ある実施の形態に従うコンピュータ200をモジュール構成として表すブロック図である。
図10に示されるように、コンピュータ200は、コントロールモジュール510と、レンダリングモジュール520と、メモリモジュール530と、通信制御モジュール540とを備える。ある局面において、コントロールモジュール510とレンダリングモジュール520とは、プロセッサ210によって実現される。別の局面において、複数のプロセッサ210がコントロールモジュール510とレンダリングモジュール520として作動してもよい。メモリモジュール530は、メモリ220またはストレージ230によって実現される。通信制御モジュール540は、通信インターフェイス250によって実現される。
コントロールモジュール510は、ユーザ5に提供される仮想空間11を制御する。コントロールモジュール510は、仮想空間11を表す仮想空間データを用いて、HMDシステム100における仮想空間11を規定する。仮想空間データは、例えば、メモリモジュール530に記憶されている。コントロールモジュール510が、仮想空間データを生成したり、サーバ600などから仮想空間データを取得するようにしたりしてもよい。
コントロールモジュール510は、オブジェクトを表すオブジェクトデータを用いて、仮想空間11にオブジェクトを配置する。オブジェクトデータは、例えば、メモリモジュール530に記憶されている。コントロールモジュール510が、オブジェクトデータを生成したり、サーバ600などからオブジェクトデータを取得するようにしたりしてもよい。オブジェクトは、例えば、ユーザ5の分身であるアバターオブジェクト、キャラクタオブジェクト、コントローラ300によって操作される仮想手などの操作オブジェクト、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、街並み、動物等を含み得る。
コントロールモジュール510は、ネットワーク2を介して接続される他のコンピュータ200のユーザ5のアバターオブジェクトを仮想空間11に配置する。ある局面において、コントロールモジュール510は、ユーザ5のアバターオブジェクトを仮想空間11に配置する。ある局面において、コントロールモジュール510は、ユーザ5を含む画像に基づいて、ユーザ5を模したアバターオブジェクトを仮想空間11に配置する。別の局面において、コントロールモジュール510は、複数種類のアバターオブジェクト(例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト)の中からユーザ5による選択を受け付けたアバターオブジェクトを仮想空間11に配置する。
コントロールモジュール510は、HMDセンサ410の出力に基づいてHMD120の傾きを特定する。別の局面において、コントロールモジュール510は、モーションセンサとして機能するセンサ190の出力に基づいてHMD120の傾きを特定する。コントロールモジュール510は、第1カメラ150および第2カメラ160が生成するユーザ5の顔の画像から、ユーザ5の顔を構成する器官(例えば、口,目,眉)を検出する。コントロールモジュール510は、検出した各器官の動き(形状)を検出する。
コントロールモジュール510は、注視センサ140からの信号に基づいて、ユーザ5の仮想空間11における視線を検出する。コントロールモジュール510は、検出したユーザ5の視線と仮想空間11の天球とが交わる視点位置(XYZ座標系における座標値)を検出する。より具体的には、コントロールモジュール510は、uvw座標系で規定されるユーザ5の視線と、仮想カメラ14の位置および傾きとに基づいて、視点位置を検出する。コントロールモジュール510は、検出した視点位置をサーバ600に送信する。別の局面において、コントロールモジュール510は、ユーザ5の視線を表す視線情報をサーバ600に送信するように構成されてもよい。係る場合、サーバ600が受信した視線情報に基づいて視点位置を算出し得る。
コントロールモジュール510は、HMDセンサ410が検出するHMD120の動きをアバターオブジェクトに反映する。例えば、コントロールモジュール510は、HMD120が傾いたことを検知して、アバターオブジェクトを傾けて配置する。コントロールモジュール510は、検出した顔器官の動作を、仮想空間11に配置されるアバターオブジェクトの顔に反映させる。コントロールモジュール510は、サーバ600から他のユーザ5の視線情報を受信し、当該他のユーザ5のアバターオブジェクトの視線に反映させる。ある局面において、コントロールモジュール510は、コントローラ300の動きをアバターオブジェクトや操作オブジェクトに反映する。この場合、コントローラ300は、コントローラ300の動きを検知するためのモーションセンサ、加速度センサ、または複数の発光素子(例えば、赤外線LED)などを備えてもよい。また、コントローラ300の動きとは、アナログスティック390の動きやボタン370,380の動き等であってもよい。そして、コントロールモジュール510は、例えば、アナログスティック390の動き(換言すると、アナログスティック390に対するユーザの操作)に基づいてアバターオブジェクトを仮想空間11内で移動させるなどしてもよい。
コントロールモジュール510は、仮想空間11においてユーザ5の操作を受け付けるための操作オブジェクトを仮想空間11に配置する。ユーザ5は、操作オブジェクトを操作することにより、例えば、仮想空間11に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、ユーザ5の手に相当する仮想手である手オブジェクト等を含み得る。ある局面において、コントロールモジュール510は、モーションセンサ420の出力に基づいて現実空間におけるユーザ5の手の動きに連動するように仮想空間11において手オブジェクトを動かす。ある局面において、操作オブジェクトは、アバターオブジェクトの手の部分に相当し得る。
コントロールモジュール510は、仮想空間11に配置されるオブジェクトのそれぞれが、他のオブジェクトと衝突した場合に、当該衝突を検出する。コントロールモジュール510は、例えば、あるオブジェクトのコリジョンエリアと、別のオブジェクトのコリジョンエリアとが触れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行う。コントロールモジュール510は、オブジェクトとオブジェクトとが触れている状態から離れたタイミングを検出することができ、当該検出がされたときに、予め定められた処理を行う。コントロールモジュール510は、オブジェクトとオブジェクトとが触れている状態であることを検出することができる。例えば、コントロールモジュール510は、操作オブジェクトと、他のオブジェクトとが触れたときに、これら操作オブジェクトと他のオブジェクトとが触れたことを検出して、予め定められた処理を行う。
ある局面において、コントロールモジュール510は、HMD120のモニタ130における画像表示を制御する。例えば、コントロールモジュール510は、仮想空間11に仮想カメラ14を配置する。コントロールモジュール510は、仮想空間11における仮想カメラ14の位置と、仮想カメラ14の傾き(向き)を制御する。コントロールモジュール510は、HMD120を装着したユーザ5の頭の傾きと、仮想カメラ14の位置に応じて、視界領域15を規定する。レンダリングモジュール520は、決定された視界領域15に基づいて、モニタ130に表示される視界画像17を生成する。レンダリングモジュール520により生成された視界画像17は、通信制御モジュール540によってHMD120に出力される。
コントロールモジュール510は、HMD120から、ユーザ5のマイク170を用いた発話を検出すると、当該発話に対応する音声データの送信対象のコンピュータ200を特定する。音声データは、コントロールモジュール510によって特定されたコンピュータ200に送信される。コントロールモジュール510は、ネットワーク2を介して他のユーザのコンピュータ200から音声データを受信すると、当該音声データに対応する音声(発話)をスピーカ180から出力する。
メモリモジュール530は、コンピュータ200が仮想空間11をユーザ5に提供するために使用されるデータを保持している。ある局面において、メモリモジュール530は、空間情報と、オブジェクト情報と、ユーザ情報とを保持している。
空間情報は、仮想空間11を提供するために規定された1つ以上のテンプレートを保持している。
オブジェクト情報は、仮想空間11を構成する複数のパノラマ画像13、仮想空間11にオブジェクトを配置するためのオブジェクトデータを含む。パノラマ画像13は、静止画像および動画像を含み得る。パノラマ画像13は、非現実空間の画像と現実空間の画像とを含み得る。非現実空間の画像としては、例えば、コンピュータグラフィックスで生成された画像が挙げられる。
ユーザ情報は、ユーザ5を識別するユーザIDを保持する。ユーザIDは、例えば、ユーザが使用するコンピュータ200に設定されるIP(Internet Protocol)アドレスまたはMAC(Media Access Control)アドレスであり得る。別の局面において、ユーザIDはユーザによって設定され得る。ユーザ情報は、HMDシステム100の制御装置としてコンピュータ200を機能させるためのプログラム等を含む。また、ユーザ情報は、サービスのアカウント毎(換言すると、ユーザID毎)に管理される情報を含む。
メモリモジュール530に格納されているデータおよびプログラムは、HMD120のユーザ5によって入力される。あるいは、プロセッサ210が、当該コンテンツを提供する事業者が運営するコンピュータ(例えば、サーバ600)からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール530に格納する。
通信制御モジュール540は、ネットワーク2を介して、サーバ600その他の情報通信装置と通信し得る。
ある局面において、コントロールモジュール510およびレンダリングモジュール520は、例えば、ユニティテクノロジーズ社によって提供されるUnity(登録商標)を用いて実現され得る。別の局面において、コントロールモジュール510およびレンダリングモジュール520は、各処理を実現する回路素子の組み合わせとしても実現され得る。
コンピュータ200における処理は、ハードウェアと、プロセッサ210により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール530に予め格納されている場合がある。ソフトウェアは、CD-ROMその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール540を介してサーバ600その他のコンピュータからダウンロードされた後、メモリモジュール530に一旦格納される。そのソフトウェアは、プロセッサ210によってメモリモジュール530から読み出され、実行可能なプログラムの形式でRAMに格納される。プロセッサ210は、そのプログラムを実行する。
[HMDシステムの制御構造]
図11を参照して、HMDセット110の制御構造について説明する。図11は、ある実施の形態に従うHMDセット110において実行される処理の一部を表すシーケンスチャートである。
図11に示されるように、ステップS1110にて、コンピュータ200のプロセッサ210は、コントロールモジュール510として、仮想空間データを特定し、仮想空間11を定義する。
ステップS1120にて、プロセッサ210は、仮想カメラ14を初期化する。たとえば、プロセッサ210は、メモリのワーク領域において、仮想カメラ14を仮想空間11において予め規定された中心12に配置し、仮想カメラ14の視線をユーザ5が向いている方向に向ける。
ステップS1130にて、プロセッサ210は、レンダリングモジュール520として、初期の視界画像を表示するための視界画像データを生成する。生成された視界画像データは、通信制御モジュール540によってHMD120に出力される。
ステップS1132にて、HMD120のモニタ130は、コンピュータ200から受信した視界画像データに基づいて、視界画像を表示する。HMD120を装着したユーザ5は、視界画像を視認すると仮想空間11を認識し得る。
ステップS1134にて、HMDセンサ410は、HMD120から発信される複数の赤外線光に基づいて、HMD120の位置と傾きを検知する。検知結果は、動き検知データとして、コンピュータ200に出力される。
ステップS1140にて、プロセッサ210は、HMD120の動き検知データに含まれる位置と傾きとに基づいて、HMD120を装着したユーザ5の視界方向を特定する。
ステップS1150にて、プロセッサ210は、アプリケーションプログラムを実行し、アプリケーションプログラムに含まれる命令に基づいて、仮想空間11にオブジェクト
を配置する。
ステップS1160にて、コントローラ300は、ユーザ5の操作を検出し、その検出された操作を表す検出データをコンピュータ200に出力する。別の局面において、ユーザ5による操作は、ユーザ5の周囲に配置されたカメラからの画像に基づいて検出されてもよい。
ステップS1170にて、プロセッサ210は、コントローラ300から取得した検出データに基づいて、ユーザ5によるコントローラ300の操作を検出する。
ステップS1180にて、プロセッサ210は、ユーザ5によるコントローラ300の操作に基づく視界画像データを生成する。生成された視界画像データは、通信制御モジュール540によってHMD120に出力される。
ステップS1190にて、HMD120は、受信した視界画像データに基づいて視界画像を更新し、更新後の視界画像をモニタ130に表示する。
[アバターオブジェクト]
図12(A)、(B)を参照して、本実施の形態に従うアバターオブジェクトについて説明する。以下、HMDセット110A,110Bの各ユーザ5のアバターオブジェクトを説明する図である。以下、HMDセット110Aのユーザをユーザ5A、HMDセット110Bのユーザをユーザ5B、HMDセット110Cのユーザをユーザ5C、HMDセット110Dのユーザをユーザ5Dと表す。HMDセット110Aに関する各構成要素の参照符号にAが付され、HMDセット110Bに関する各構成要素の参照符号にBが付され、HMDセット110Cに関する各構成要素の参照符号にCが付され、HMDセット110Dに関する各構成要素の参照符号にDが付される。例えば、HMD120Aは、HMDセット110Aに含まれる。
図12(A)は、ネットワーク2において、各HMD120がユーザ5に仮想空間11を提供する状況を表す模式図である。コンピュータ200A~200Dは、HMD120A~120Dを介して、ユーザ5A~5Dに、仮想空間11A~11Dをそれぞれ提供する。図12(A)に示される例において、仮想空間11Aおよび仮想空間11Bは同じデータによって構成されている。換言すれば、コンピュータ200Aとコンピュータ200Bとは同じ仮想空間を共有していることになる。仮想空間11Aおよび仮想空間11Bには、ユーザ5Aのアバターオブジェクト6Aと、ユーザ5Bのアバターオブジェクト6Bとが存在する。仮想空間11Aにおけるアバターオブジェクト6Aおよび仮想空間11Bにおけるアバターオブジェクト6BがそれぞれHMD120を装着しているが、これは説明を分かりやすくするためのものであって、実際にはこれらのオブジェクトはHMD120を装着していない。
ある局面において、プロセッサ210Aは、ユーザ5Aの視界画像17Aを撮影する仮想カメラ14Aを、アバターオブジェクト6Aの目の位置に配置し得る。
図12(B)は、図12(A)におけるユーザ5Aの視界画像17Aを示す図である。視界画像17Aは、HMD120Aのモニタ130Aに表示される画像である。この視界画像17Aは、仮想カメラ14Aにより生成された画像である。視界画像17Aには、ユーザ5Bのアバターオブジェクト6Bが表示されている。特に図示はしていないが、ユーザ5Bの視界画像にも同様に、ユーザ5Aのアバターオブジェクト6Aが表示されている。
図12(B)の状態において、ユーザ5Aは仮想空間11Aを介してユーザ5Bと対話による通信(コミュニケーション)を図ることができる。より具体的には、マイク170Aにより取得されたユーザ5Aの音声は、サーバ600を介してユーザ5BのHMD120Bに送信され、HMD120Bに設けられたスピーカ180Bから出力される。ユーザ5Bの音声は、サーバ600を介してユーザ5AのHMD120Aに送信され、HMD120Aに設けられたスピーカ180Aから出力される。
ユーザ5Bの動作(HMD120Bの動きおよびコントローラ300Bの動き)は、プロセッサ210Aにより仮想空間11Aに配置されるアバターオブジェクト6Bに反映される。これにより、ユーザ5Bによって操作されて動くアバターオブジェクト6Bがユーザ5Aから視認される。
図13は、本実施の形態に従うHMDシステム100において実行される処理の一部を表すシーケンスチャートである。図13においては、HMDセット110Dを図示していないが、HMDセット110Dについても、HMDセット110A、110B、110Cと同様に動作する。以下の説明でも、HMDセット110Aに関する各構成要素の参照符号にAが付され、HMDセット110Bに関する各構成要素の参照符号にBが付され、HMDセット110Cに関する各構成要素の参照符号にCが付され、HMDセット110Dに関する各構成要素の参照符号にDが付されるものとする。
ステップS1310Aにおいて、HMDセット110Aにおけるプロセッサ210Aは、仮想空間11Aにおけるアバターオブジェクト6Aの動作を決定するためのアバター情報を取得する。このアバター情報は、例えば、動き情報、フェイストラッキングデータ、および音声データ等のアバターに関する情報を含む。動き情報は、HMD120Aの位置および傾きの時間的変化を示す情報や、モーションセンサ420A等により検出されたユーザ5Aの手の動きを示す情報や、コントローラ300等により検出されたユーザの操作を示す情報などを含む。フェイストラッキングデータは、ユーザ5Aの顔の各パーツの位置および大きさを特定するデータが挙げられる。フェイストラッキングデータは、ユーザ5Aの顔を構成する各器官の動きを示すデータや視線データが挙げられる。音声データは、HMD120Aのマイク170Aによって取得されたユーザ5Aの音声を示すデータが挙げられる。アバター情報には、アバターオブジェクト6A、あるいはアバターオブジェクト6Aに関連付けられるユーザ5Aを特定する情報や、アバターオブジェクト6Aが存在する仮想空間11Aを特定する情報等が含まれてもよい。アバターオブジェクト6Aやユーザ5Aを特定する情報としては、ユーザIDが挙げられる。アバターオブジェクト6Aが存在する仮想空間11Aを特定する情報としては、ルームIDが挙げられる。プロセッサ210Aは、上述のように取得されたアバター情報を、ネットワーク2を介してサーバ600に送信する。
ステップS1310Bにおいて、HMDセット110Bにおけるプロセッサ210Bは、ステップS1310Aにおける処理と同様に、仮想空間11Bにおけるアバターオブジェクト6Bの動作を決定するためのアバター情報を取得し、サーバ600に送信する。同様に、ステップS1310Cにおいて、HMDセット110Cにおけるプロセッサ210Cは、仮想空間11Cにおけるアバターオブジェクト6Cの動作を決定するためのアバター情報を取得し、サーバ600に送信する。
ステップS1320において、サーバ600は、HMDセット110A、HMDセット110B、およびHMDセット110Cのそれぞれから受信したアバター情報を一旦記憶する。サーバ600は、各アバター情報に含まれるユーザIDおよびルームID等に基づいて、共通の仮想空間11に関連付けられた全ユーザ(この例では、ユーザ5A~5C)のアバター情報を統合する。そして、サーバ600は、予め定められたタイミングで、統合したアバター情報を当該仮想空間11に関連付けられた全ユーザに送信する。これにより、同期処理が実行される。このような同期処理により、HMDセット110A、HMDセット110B、およびHMDセット110Cは、互いのアバター情報をほぼ同じタイミングで共有することができる。
続いて、サーバ600から各HMDセット110A~110Cに送信されたアバター情報に基づいて、各HMDセット110A~110Cは、ステップS1330A~S1330Cの処理を実行する。ステップS1330Aの処理は、図11におけるステップS1180の処理に相当する。
ステップS1330Aにおいて、HMDセット110Aにおけるプロセッサ210Aは、仮想空間11Aにおける他のユーザ5B,5Cのアバターオブジェクト6B、アバターオブジェクト6Cの情報を更新する。具体的には、プロセッサ210Aは、HMDセット110Bから送信されたアバター情報に含まれる動き情報に基づいて、仮想空間11におけるアバターオブジェクト6Bの位置および向き等を更新する。例えば、プロセッサ210Aは、メモリモジュール530に格納されたオブジェクト情報に含まれるアバターオブジェクト6Bの情報(位置および向き等)を更新する。同様に、プロセッサ210Aは、HMDセット110Cから送信されたアバター情報に含まれる動き情報に基づいて、仮想空間11におけるアバターオブジェクト6Cの情報(位置および向き等)を更新する。
ステップS1330Bにおいて、HMDセット110Bにおけるプロセッサ210Bは、ステップS1330Aにおける処理と同様に、仮想空間11Bにおけるユーザ5A,5Cのアバターオブジェクト6A,6Cの情報を更新する。同様に、ステップS1330Cにおいて、HMDセット110Cにおけるプロセッサ210Cは、仮想空間11Cにおけるユーザ5A,5Bのアバターオブジェクト6A,6Bの情報を更新する。
[モジュールの詳細構成]
図14を参照して、コンピュータ200のモジュール構成の詳細について説明する。図14は、ある実施の形態に従うコンピュータ200のモジュールの詳細構成を表すブロック図である。
図14に示されるように、コントロールモジュール510は、仮想カメラ制御モジュール1421と、視界領域決定モジュール1422と、基準視線特定モジュール1423と、顔器官検出モジュール1424と、動き検出モジュール1425と、仮想空間定義モジュール1426と、仮想オブジェクト生成モジュール1427と、操作オブジェクト制御モジュール1428と、アバター制御モジュール1429と、を備える。レンダリングモジュール520は、視界画像生成モジュール1438を備える。
仮想カメラ制御モジュール1421は、仮想空間11に仮想カメラ14を配置する。仮想カメラ制御モジュール1421は、仮想空間11における仮想カメラ14の配置位置と、仮想カメラ14の向き(傾き)を制御する。視界領域決定モジュール1422は、HMD120を装着したユーザの頭の向きと、仮想カメラ14の配置位置に応じて、視界領域15を規定する。視界画像生成モジュール1438は、決定された視界領域15に基づいて、モニタ130に表示される視界画像17を生成する。
基準視線特定モジュール1423は、注視センサ140からの信号に基づいて、ユーザ5の視線を特定する。顔器官検出モジュール1424は、第1カメラ150および第2カメラ160が生成するユーザ5の顔の画像から、ユーザ5の顔を構成する器官(例えば、口、目、眉)を検出する。動き検出モジュール1425は、顔器官検出モジュール1424が検出した各器官の動き(形状)を検出する。
仮想空間定義モジュール1426は、仮想空間11を表す仮想空間データを生成することにより、HMDシステム100における仮想空間11を規定する。
仮想オブジェクト生成モジュール1427は、仮想空間11に配置されるオブジェクトを生成する。オブジェクトは、例えば、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、動物等を含み得る。
操作オブジェクト制御モジュール1428は、仮想空間11においてユーザの操作を受け付けるための操作オブジェクトを仮想空間11に配置する。ユーザは、操作オブジェクトを操作することにより、例えば、仮想空間11に配置されるオブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、HMD120を装着したユーザの手に相当する手オブジェクト等を含み得る。ある局面において、操作オブジェクトは、後述するアバターオブジェクトの手の部分に相当し得る。
アバター制御モジュール1429は、ネットワーク2を介して接続される他のコンピュータ200のユーザのアバターオブジェクト6を仮想空間11に配置するためのデータを生成する。ある局面において、アバター制御モジュール1429は、ユーザ5のアバターオブジェクト6を仮想空間11に配置するためのデータを生成する。ある局面において、アバター制御モジュール1429は、ユーザ5を含む画像に基づいて、ユーザ5を模したアバターオブジェクト6を生成する。別の局面において、アバター制御モジュール1429は、複数種類のアバターオブジェクト6(例えば、動物を模したオブジェクトや、デフォルメされた人のオブジェクト)の中からユーザ5による選択を受け付けたアバターオブジェクト6を仮想空間11に配置するためのデータを生成する。
アバター制御モジュール1429は、HMDセンサ410が検出するHMD120の動きをアバターオブジェクト6に反映する。例えば、アバター制御モジュール1429は、HMD120が傾いたことを検知して、アバターオブジェクト6を傾けて配置するためのデータを生成する。ある局面において、アバター制御モジュール1429は、コントローラ300の動きをアバターオブジェクト6に反映する。別の局面において、アバター制御モジュール1429は、動き検出モジュール1425が検出した顔器官の動作を、仮想空間11に配置されるアバターオブジェクト6の顔に反映する。つまり、アバター制御モジュール1429は、ユーザ5Aの顔の動作をアバターオブジェクト6に反映する。このように、アバターオブジェクト6は、HMDセンサ410、コントローラ300または動き検出モジュール1425が検出する動きによって操作される(換言すると、動かされる)ようになっている。
レンダリングモジュール520は、アバター制御モジュール1429によって設定される表示態様で、アバターオブジェクト6をHMD120のモニタ130に表示させる。
[サーバのモジュール構成]
図15を参照して、サーバ600のモジュール構成について説明する。図15は、ある実施の形態に従うサーバ600のモジュールの構成を表すブロック図である。図15に示されるように、サーバ600は、コントロールモジュール1610と、メモリモジュール1630と、通信制御モジュール1640とを備える。ある局面において、コントロールモジュール1610は、プロセッサ610によって実現される。メモリモジュール1630は、メモリ620またはストレージ630によって実現される。通信制御モジュール1640は、通信インターフェイス650によって実現される。
コントロールモジュール1610は、推薦モジュール1731と属性設定モジュール1732と、行動履歴取得モジュール1733と、アクセス制御モジュールと1734と、連携管理モジュール1741とを備える。
メモリモジュール1630は、コンピュータ200が仮想空間11をユーザ5に提供するために使用されるデータを保持している。ある局面において、メモリモジュール1630は、空間情報と、オブジェクト情報と、ユーザ情報とを保持している。メモリモジュール1630の空間情報、オブジェクト情報、およびユーザ情報は、それぞれ上述したメモリモジュール530の空間情報、オブジェクト情報、およびユーザ情報を含み得る。したがって、ここでは説明を省略する。
通信制御モジュール1640は、各HMDセット110から、各種の情報、および各種の要求を受信する。一例として、通信制御モジュール1640が各HMDセット110から受信する情報は、空間情報、オブジェクト情報、ユーザ情報、およびアバター情報を含み得る。通信制御モジュール1640は、各HMDセット110に対して、各種の情報、および各種の要求を送信する。一例として、通信制御モジュール1640が各HMDセット110へ送信する情報は、空間情報、オブジェクト情報、ユーザ情報、およびアバター情報を含み得る。
サーバ600における処理は、ハードウェアと、プロセッサ610により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール1630に予め格納されている場合がある。ソフトウェアは、CD-ROMその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール1640を介して所定のコンピュータからダウンロードされた後、メモリモジュール1630に一旦格納される。そのソフトウェアは、プロセッサ610によってメモリモジュール1630から読み出され、実行可能なプログラムの形式でRAMに格納される。プロセッサ610は、そのプログラムを実行する。
なお、上述したコンピュータ200およびサーバ600のモジュール構成は一例にすぎない。コンピュータ200およびサーバ600の各装置は、他の装置が備えるモジュール(換言すると、機能)の少なくとも一部を備えていてもよい。また、コンピュータ200およびサーバ600等の各装置は、一体の機器により実現されるものでなくてもよく、例えば、ネットワーク等を介して接続される複数の機器によって実現されてもよい。
また、本実施形態では、コンピュータ200のプロセッサ210またはサーバ600のプロセッサ610が、HMDシステム100に記憶されているプログラムを実行することによって、上述のまたは後述する各処理を行うものとして説明する。ただし、上述のまたは後述する処理であってプロセッサ210が行う処理のうちの少なくとも一部を、プロセッサ210とは別のプロセッサが実行するようにしてもよい。また、上述のまたは後述する処理であってプロセッサ610が行う処理のうちの少なくとも一部を、プロセッサ610とは別のプロセッサが実行するようにしてもよい。換言すると、本実施形態においてプログラムを実行するコンピュータは、コンピュータ200およびサーバ600のいずれであってもよく、また、複数の装置の組み合わせにより実現されてもよい。
本実施形態のHMDシステム100は、ユーザ5に対して、行動履歴に基づく推薦を行う。本実施形態のHMDシステム100は、ユーザ5同士がアバターオブジェクト6を介して交流可能な仮想空間11としてのメタバースを提供する。以下では、仮想空間11をメタバースと呼ぶ。また、以下では、仮想空間11に配置されるアバターオブジェクト6を単にアバターと呼ぶことがある。なお、アバターはメタバース内のユーザといえる。
なお、メタバース内には、現実世界(換言すると、現実空間)に実在する場所(例えば、地域または施設等)をモチーフとした(例えば、模した)場所等が存在してもよく、存在しなくてもよい。本実施形態では、メタバース内には、現実世界の渋谷、原宿、および秋葉原をそれぞれ模した仮想渋谷、仮想原宿、および仮想秋葉原が存在するものとして説明する。
[メタバース内での行動履歴に基づくメタバース内の事物に関する推薦]
推薦モジュール1731は、メタバース内でのユーザ5の行動履歴に基づいて、メタバース内の所定の事物に関する推薦を行う。具体的には、例えば、推薦モジュール1731は、メタバース内でのユーザ5の行動履歴に基づいて、推薦する事物を決定し、推薦する事物に関する情報(以下、「推薦情報」という。)を推薦情報提示モジュール1721に送信する。推薦情報提示モジュール1721は、例えば、ユーザ5のコンピュータ200のコントロールモジュール510が備える。推薦情報提示モジュール1721は、推薦情報を受信すると、推薦する事物に関する情報をモニタ130に表示させる。
推薦モジュール1731は、例えば、ユーザ5の行動履歴に基づいて、メタバース内の交友関係に関する所定の推薦を行う。具体的には、推薦モジュール1731は、例えば、交友関係に関する推薦として、ユーザ5と相性の良さそうな他のユーザ5(換言すると、当該他のユーザ5のアバター)をユーザ5に推薦する。より具体的には、推薦モジュール1731は、ユーザ5と友達関係になれそうな他のユーザ5をユーザ5に推薦する。この場合、推薦モジュール1731は、例えば、複数のユーザ5の中から、ユーザ5に推薦する他のユーザ5(以下、「推薦ユーザ」という。)を決定し、推薦ユーザを示す推薦情報を、ユーザ5のコンピュータ200の推薦情報提示モジュール1721に送信する。また、推薦情報提示モジュール1721は、当該推薦情報を受信すると、ユーザ5への推薦ユーザの推薦に係る表示をモニタ130に表示させる。当該推薦に係る表示には、例えば、推薦ユーザのユーザ名の表示や、推薦ユーザに対する連絡の受付に係る表示や、推薦ユーザの位置を示す表示等を含んでいてもよい。換言すると、当該推薦に係る表示が表示された状態においては、ユーザ5による、推薦ユーザに対して連絡する操作(例えば、コントローラ300による操作等)が受け付けられてもよい。なお、ここで、推薦ユーザに対する連絡の受付に係る表示とは、例えば、推薦ユーザに対する所謂フレンドとしての登録の申請の受付に係る表示等を含む。換言すると、当該推薦に係る表示が表示された状態においては、推薦ユーザに対するフレンドとしての登録の申請をする操作が受け付けられてもよい。
また、推薦モジュール1731は、交友関係に関する推薦として、他の特定のユーザ5をユーザ5に推薦するのではなく、例えば、ユーザ5と相性の良さそうなグループ(換言すると、相性の良い他のユーザ5が所属している可能性の高いグループ)をユーザ5に推薦してもよい。この場合、推薦モジュール1731は、例えば、ユーザ5の行動履歴に基づいて、ユーザ5に推薦するグループを決定し、推薦するグループを示す推薦情報を、ユーザ5のコンピュータ200の推薦情報提示モジュール1721に送信する。また、推薦情報提示モジュール1721は、当該推薦情報を受信すると、ユーザ5への当該グループの推薦に係る表示をモニタ130に表示させる。当該推薦に係る表示には、例えば、推薦するグループのグループ名の表示や、グループ(例えば、グループを代表するユーザ5)に対する連絡の受付に係る表示や、グループの本拠地の位置を示す表示等を含んでいてもよい。なお、ここで、グループに対する連絡の受付に係る表示とは、例えば、グループへの加入の申請の受付に係る表示等を含む。
また、推薦モジュール1731は、例えば、ユーザ5の行動履歴に基づいて、メタバース内のコンテンツに関する所定の推薦を行う。具体的には、例えば、推薦モジュール1731は、コンテンツに関する推薦として、メタバース内の所定の場所(例えば、地域または施設等)をユーザ5に推薦してもよい。また、例えば、推薦モジュール1731は、コンテンツに関する推薦として、メタバース内の所定のサービスをユーザ5に推薦してもよい。
メタバース内での各ユーザ5の行動履歴は、サーバ600のメモリモジュール1630が備える仮想空間内履歴記憶部1751が記憶している。なお、メタバース内での行動履歴は、例えば、コントロールモジュール1610(換言すると、仮想空間内履歴取得手段)が、メタバース内でユーザ5が各種行動を行う毎に仮想空間内履歴記憶部1751に記憶させるなどしてもよい。仮想空間内履歴記憶部1751に記憶されるメタバース内での行動履歴の一例を以下に示す。
行動履歴は、例えば、アバターの装い(換言すると、外見)に関するものであってもよい。具体的には、行動履歴には、例えば、アバターの装い(例えば、服飾品(例えば、服、帽子、アクセサリー、または履物等)または髪型等)を変更した回数等に関する情報が含まれていてもよい。また、行動履歴には、例えば、アバターの取得した(換言すると、所持する)服飾品の数(例えば、総数または種類数等)等に関する情報が含まれていてもよい。
また、行動履歴は、ユーザ間のコミュニケーションに関するものであってもよい。具体的には、行動履歴には、例えば、会話を行った相手に関する情報や、特定の相手との会話の回数または頻度等に関する情報が含まれていてもよい。また、行動履歴には、特定のコンテンツを一緒に利用した相手に関する情報や、特定の相手とのコンテンツを一緒に利用した回数または頻度等に関する情報が含まれていてもよい。ここで、コンテンツを一緒に利用とは、例えば、メタバース内で所定のゲームを一緒にプレイ(例えば、共闘または対戦)することや、メタバース内の所定のイベントに共に参加することや、メタバース内の特定の場所に同時刻に位置すること等であってもよい。換言すると、行動履歴には、メタバース内でのユーザ間のコミュニケーションに基づく情報(例えば、会話やコンテンツの一緒での利用等に関する情報)が含まれていてもよい。
また、行動履歴には、メタバース内での移動距離に関する情報が含まれていてもよい。また、行動履歴には、各ユーザがメタバースにアクセス(換言すると、ログイン)した回数または頻度等に関する情報が含まれていてもよい。また、行動履歴には、メタバース内で訪れた場所に関する情報や、特定の場所に訪れた時刻に関する情報等が含まれていてもよい。換言すると、行動履歴には、メタバース内での移動に基づく情報(例えば、移動距離や移動によって訪れた場所等に関する情報)が含まれていてもよい。
メタバース内での行動履歴とは、ユーザ5が行った操作に関する情報ともいえる。具体的には、メタバース内での行動履歴とは、ユーザ5が行ったアバターオブジェクト6の操作に関する情報ともいえる。
メタバース内での行動履歴に基づくメタバース内の所定の事物に関するユーザ5への推薦は、例えば、以下のように行われてもよい。すなわち、各ユーザ5には、メタバース内での行動履歴に基づいて属性(以下、「仮想空間内属性」という。)が設定され、推薦モジュール1731は、仮想空間内属性に基づいて推薦を行うこととしてもよい。この場合、属性設定モジュール1732は、例えば、ユーザ5のメタバース内での行動履歴に基づいて、ユーザ5の仮想空間内属性を設定し、メモリモジュール1630が備えるユーザ属性記憶部1752に、ユーザ5の仮想空間内属性を記憶させる。また、推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザ5に設定された仮想空間内属性に応じた推薦を行う。
なお、1のユーザ5に対して、複数の仮想空間内属性が付され得るようになっていてもよく、1のユーザ5に対しては1の仮想空間内属性のみが付されるようになっていてもよい。
仮想空間内属性は、メタバース内におけるユーザ5の特徴や性質を示すものである。ここでは、一例として、「アクティブ」、「オタク」、「オシャレ」、「グルメ」、「非アクティブ」等の仮想空間内属性がユーザ5に設定される場合を例に説明するが、仮想空間内属性の種別はこのようなものに限られない。
属性設定モジュール1732は、例えば、図16に示されるように、ユーザ5の行動履歴の示す、メタバース内における移動距離が所定の閾値(換言すると、所定水準)以上であることや、ログイン回数または頻度が所定の閾値以上であることや、メタバース内での他のユーザとの会話の回数または頻度が所定の閾値以上であることや、メタバース内で会話をしたユーザの数や、メタバース内で所定のコンテンツを一緒に利用したユーザの数や、フレンドとして登録されているユーザの数等が所定の閾値以上であること等に基づいて、当該ユーザ5を「アクティブ」と判定し、当該ユーザ5に「アクティブ」という仮想空間内属性を付してもよい。なお、会話とはテキストメッセージの交換であってもよく、音声通話等であってもよい。
また、属性設定モジュール1732は、例えば、ユーザ5の行動履歴の示す、メタバース内における移動距離が所定の閾値未満であることや、メタバース内で会話を行う相手がほぼ固定されていることや、アニメ、マンガ、ゲーム等の2次元コンテンツの利用の回数または頻度が所定の閾値以上であること等に基づいて、当該ユーザ5を「オタク」と判定し、当該ユーザ5に「オタク」という仮想空間内属性を付してもよい。
また、属性設定モジュール1732は、例えば、ユーザ5の行動履歴の示す、メタバース内での装いの変更回数または頻度が所定の閾値以上であることや、取得した服飾品の数(例えば、総数または種類数等)が所定の閾値以上であること等に基づいて、当該ユーザ5を「オシャレ」と判定し、当該ユーザ5に「オシャレ」という仮想空間内属性を付してもよい。
また、属性設定モジュール1732は、例えば、ユーザ5の行動履歴の示す、メタバース内での料理関係のコンテンツの利用の回数または頻度が所定の閾値以上であること等に基づいて、当該ユーザ5を「グルメ」と判定し、当該ユーザ5に「グルメ」という仮想空間内属性を付してもよい。
また、属性設定モジュール1732は、例えば、ユーザ5の行動履歴の示す、メタバース内における移動距離が所定の閾値未満であることや、ログイン回数または頻度が所定の閾値未満であること等に基づいて、当該ユーザ5を「非アクティブ」と判定し、当該ユーザ5に「非アクティブ」という仮想空間内属性を付してもよい。
なお、何らかの距離、数、または頻度等に基づいてある属性を設定する場合(換言すると、あるパラメータが所定の水準以上あるいは未満であることに基づいて属性を設定する場合)に、当該距離、数、または頻度等は、例えば、所定期間内における総距離、総数、または頻度等であってもよく、所定期間内における平均距離、平均数、または平均頻度等であってもよい。また、当該所定期間は、ユーザ5がメタバースに初めてアクセスしてから属性の判断時点までの期間等であってもよく、数日以内や数か月以内やログイン回数が所定回数となるまでの期間等であってもよい。また、例えば、あるパラメータが所定の閾値以上であることに基づいて所定の属性を設定するとは、結果としてあるパラメータが所定の閾値以上である場合に当該所定の属性が付されるものであれば、内部的な処理については特に限定されるものではない。
なお、ユーザ5に所定の属性を設定するための条件は、1の条件が定められていてもよく、複数の条件が定められていてもよい。複数の条件が定められている場合には、複数の定められた条件のうちの1の条件が満たされたことに基づいてユーザ5の属性が決定されてもよく、複数の定められた条件のうちの複数あるいは全てが満たされたことに基づいてユーザ5の属性が決定されてもよい。本実施形態では、「あるパラメータが所定の閾値以上であること」等の各条件には、各仮想空間内属性に関する値(以下、「属性値」という。)が設定されており、ある条件が満たされる場合、属性設定モジュール1732は、その条件に設定された属性値をユーザに付与するようになっている。そして、属性設定モジュール1732は、属性値の累積値に基づいて仮想空間内属性を設定するようになっている。換言すると、メタバース内でユーザ5が行い得る各行動(換言すると、達成し得る各条件)には、仮想空間内属性が設定されており、属性設定モジュール1732は、ユーザ5が行った行動に設定された仮想空間内属性の属性値をユーザ5に付与し、ある仮想空間内属性の属性値の累積値が所定値に達すると、当該ある仮想空間内属性をユーザ5に設定する等してもよい。具体的には、例えば、メタバース内におけるユーザ5の移動距離が所定の閾値以上となったり、ユーザ5のログイン頻度が所定の閾値以上となったりすると、仮想空間内属性「アクティブ」の属性値の累積値が増加する。また、メタバース内におけるユーザ5の移動距離が所定の閾値以上となると、仮想空間内属性「オタク」の属性値の累積値が減少する。また、例えば、ユーザ5のメタバース内での装いの変更頻度が所定の閾値以上となると、仮想空間内属性「オシャレ」の属性値の累積値が増加する。そして、例えば、仮想空間内属性「アクティブ」の属性値の累積値が所定値に達すると、属性設定モジュール1732は、ユーザ5に仮想空間内属性「アクティブ」を設定する。
また、メタバース内の各コンテンツは、1または複数の仮想空間内属性を有しており、属性設定モジュール1732は、ユーザ5が利用(換言すると、アクセス)したコンテンツの仮想空間内属性に応じて、利用したコンテンツの仮想空間内属性の属性値をユーザ5に付与することとしてもよい。そして、属性設定モジュール1732は、特定の仮想空間内属性の属性値(具体的には、属性値の累積値)が閾値に達すると、当該特定の仮想空間内属性をユーザ5に設定する等してもよい。このような場合についても、メタバース内でユーザ5が行い得る各行動(例えば、仮想空間内属性の設定されたコンテンツの利用)には、仮想空間内属性が設定されており、属性設定モジュール1732は、ユーザ5が行った行動に設定された仮想空間内属性に関する属性値をユーザ5に付与するといえる。換言すると、メタバース内のコンテンツには、属性が設定されたコンテンツがあり、属性設定モジュール1732は、ある属性が設定されたコンテンツをユーザ5が利用したことに基づいて、当該ユーザ5に当該ある属性を設定してもよい。なお、属性設定モジュール1732は、ユーザ5がコンテンツを利用する毎に利用したコンテンツに設定された仮想空間内属性の属性値をユーザ5に付与してもよく、特定の仮想空間内属性の設定されたコンテンツの利用回数または利用頻度が所定の閾値以上である場合等に当該特定の仮想空間内属性の属性値をユーザ5に付与してもよい。なお、メタバース内のコンテンツに関する仮想空間内属性の設定情報は、例えば、サーバ600の、メモリモジュール1630に予め記憶されていてもよい。
例えば、メタバース内には、仮想空間内属性が付された場所が複数存在し、属性設定モジュール1732は、ユーザ5が訪れた(換言すると、利用した)場所に付された仮想空間内属性の属性値をユーザ5に付与してもよい。換言すると、属性設定モジュール1732は、ユーザ5が訪れた場所に応じた属性値をユーザ5に付与してもよい。具体的には、例えば、メタバース内には仮想空間内属性が付された複数の地域(具体的には、例えば、「オシャレ」という仮想空間内属性が付された「仮想渋谷」および「仮想原宿」や、「オタク」という仮想空間内属性が付された「仮想秋葉原」など)が存在し、属性設定モジュール1732は、ユーザ5がメタバース内である地域を訪れたことに基づいて、その地域に付された仮想空間内属性の属性値をユーザ5に付与してもよい。また、例えば、メタバース内には、仮想空間内属性が付された複数の施設(具体的には、例えば、「オシャレ」という仮想空間内属性が付された商業施設や、「オタク」という仮想空間内属性が付されたゲームセンターおよび雀荘など)が存在し、属性設定モジュール1732は、ユーザ5がメタバース内である施設を訪れたことに基づいて、その施設に付された仮想空間内属性の属性値をユーザ5に付与してもよい。
また、例えば、メタバース内には、仮想空間内属性が付された複数の娯楽(例えば、ゲーム)が用意されており、属性設定モジュール1732は、ユーザ5が利用した娯楽の属性値をユーザ5に付与してもよい。例えば、メタバース内には娯楽として、「オタク」という仮想空間内属性が付された麻雀や、「アクティブ」という仮想空間内属性が付されたカラオケや、各仮想空間内属性が付された視聴コンテンツなどが用意されており、属性設定モジュール1732は、ユーザ5がメタバース内である娯楽を利用(換言すると、体験)したことに基づいて、その娯楽に付された仮想空間内属性の属性値をユーザ5に付与してもよい。
また、例えば、メタバース内には、仮想空間内属性が付された複数のイベント(例えば、音楽ライブ、祭り、スポーツイベント等)が用意されており、属性設定モジュール1732は、ユーザ5があるイベントに参加(換言すると、利用)したことに基づいて、そのイベントに付された仮想空間内属性の属性値をユーザ5に付与してもよい。
推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザ5に設定された仮想空間内属性に対応する仮想空間内属性が設定された他のユーザ5(換言すると、当該他のユーザ5のアバター)を推薦する。具体的には、例えば、推薦モジュール1731は以下のような処理を行ってもよい。すなわち、例えば、推薦モジュール1731は、図16に示されるように、「アクティブ」という仮想空間内属性が設定されたユーザに対しては、「アクティブ」または「オシャレ」という仮想空間内属性が設定された他のユーザを推薦することとしてもよい。また、例えば、推薦モジュール1731は、「オタク」という仮想空間内属性が設定されたユーザに対しては、「オタク」または「非アクティブ」という仮想空間内属性が設定された他のユーザを推薦することとしてもよい。また、例えば、推薦モジュール1731は、「オシャレ」という仮想空間内属性が設定されたユーザに対しては、「オシャレ」または「アクティブ」という仮想空間内属性が設定された他のユーザを推薦することとしてもよい。また、例えば、推薦モジュール1731は、「グルメ」という仮想空間内属性が設定されたユーザに対しては、「グルメ」という仮想空間内属性が設定された他のユーザを推薦することとしてもよい。また、例えば、推薦モジュール1731は、「非アクティブ」という仮想空間内属性が設定されたユーザに対しては、「非アクティブ」または「オタク」という仮想空間内属性が設定された他のユーザを推薦することとしてもよい。
また、推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザに設定された仮想空間内属性に応じたコンテンツを推薦してもよい。具体的には、例えば、メタバース内のコンテンツの中には、いずれの属性のユーザ5に推薦するかを示す推薦対象属性が設定されたコンテンツが用意されており、推薦モジュール1731は、ユーザ5に対して、当該ユーザ5に設定された仮想空間内属性に対応する推薦対象属性が設定されたコンテンツを推薦することとしてもよい。すなわち、例えば、メタバース内のコンテンツの中には、推薦対象属性として「アクティブ」、「オタク」、「オシャレ」、「グルメ」、「非アクティブ」などが設定されたコンテンツがあり、コンテンツに設定された推薦対象属性と一致する仮想空間内属性が設定されたユーザ5に対して、当該コンテンツが推薦されるなどしてもよい。より具体的には、例えば、推薦モジュール1731は、「アクティブ」という仮想空間内属性が設定されたユーザに対しては、「アクティブ」という推薦対象属性の設定されたコンテンツを推薦するなどしてもよい。なお、メタバース内のコンテンツに関する推薦対象属性の設定情報は、例えば、サーバ600の、メモリモジュール1630に予め記憶されていてもよい。また、各コンテンツに設定された仮想空間内属性が、推薦対象属性として利用されてもよい。
また、推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザ5とメタバース内で特定の関係性を有する他のユーザ5と特定の関連性のあるメタバース内の事物を推薦してもよい。ここで、ユーザ5と特定の関係性を有する他のユーザ5とは、例えば、ユーザ5と交流のある他のユーザ5であってもよい。また、ユーザ5と交流のある他のユーザ5とは、例えば、ユーザ5と会話をしたことのある他のユーザ5であってもよく、一緒にコンテンツを利用したことのある他のユーザ5であってもよく、ユーザ5のフレンドである他のユーザ5であってもよい。また、特定の関係性を有する他のユーザ5とは、例えば、ユーザ5と交流のある他のユーザ5のうち、交流の回数が多い(例えば、総交流回数が所定の閾値以上または所定期間内の交流回数が所定の閾値以上(すなわち交流頻度が高い))他のユーザ5であってもよい。また、交流の回数が多い他のユーザ5とは、例えば、会話の回数が多い他のユーザ5であってもよく、一緒にコンテンツを利用する回数の多い他のユーザ5であってもよい。また、ユーザ5と特定の関係性を有する他のユーザ5とは、例えば、ユーザ5と共通する(例えば、同じ)仮想空間内属性または後述する現実世界内属性を有する他のユーザ5であってもよい。また、他のユーザ5と特定の関連性のあるメタバース内の事物とは、例えば、当該他のユーザ5の利用回数の多い(例えば、総利用回数が所定の閾値以上または所定期間内の利用回数が所定の閾値以上(すなわち利用頻度が高い))メタバース内のコンテンツ(例えば、頻繁に訪れる施設や、頻繁に利用するゲーム)や、当該他のユーザ5と交流のあるユーザ5(例えば、フレンド等)等であってもよい。換言すると、推薦モジュール1731は、当該他のユーザ5のお気に入りのコンテンツ等をユーザ5に推薦してもよい。なお、当該他のユーザ5の利用回数の多いコンテンツは、当該他のユーザ5のメタバース内での行動履歴に基づいて(例えば、当該行動履歴の示す各コンテンツの利用回数等から)割り出してもよい。また、交流回数や利用回数について、多いとは、例えば、そのユーザ5の中で交流回数や利用回数が相対的に多いものであってもよく、交流回数や利用回数が予め定められた所定回数よりも多いもの等であってもよい。換言すると、所定の閾値以上といった場合、所定の閾値は固定であってもよく変動するもの(例えば、複数の他のユーザ5のそれぞれとの交流回数や、複数のコンテンツそれぞれの利用回数等に応じて変動するもの)であってもよい。
なお、仮想空間内属性はより細分化されたもの等であってもよい。例えば、仮想空間内属性は、ユーザ5を、ユーザ5の趣味、嗜好に応じて分類するもの等であってもよい。また、属性設定モジュール1732は、メタバース内のコンテンツの利用履歴に応じてユーザ5の仮想空間内属性を設定してもよい。例えば、メタバース内で各ユーザがBGMの設定が可能である場合に、属性設定モジュール1732は、どの種類のBGMの利用頻度が高いか等に応じて、ユーザ5に、「クラシック好き」、「ロック好き」、「ポップス好き」、「アニメソング好き」などの属性を付してもよい。また、属性設定モジュール1732は、メタバース内で映画を見る頻度が高いユーザ5に「映画好き」という属性を付したり、メタバース内で麻雀を行う頻度が高いユーザ5に「麻雀好き」という属性を付したりしてもよい。また、属性設定モジュール1732は、メタバース内で仮想渋谷に訪問したことがあるユーザ5に「仮想渋谷にアクセスした」という属性を付してもよい。また、属性設定モジュール1732は、メタバース内で特定のアイドルのコンテンツの利用回数が多いユーザ5に「当該特定のアイドルのファン」という属性を付してもよい。また、属性設定モジュール1732は、例えば、ユーザ5がメタバース内でアバターに設定する装いの種類(例えば、特定の種類の装いにする回数や頻度)に応じて、当該ユーザ5に「ストリート系」、「モード系」、「ナチュラル系」、「ロック系」等の仮想空間内属性を付してもよい。
なお、本実施形態では、属性設定モジュール1732が、メタバース内のユーザ5の行動履歴に基づいて仮想空間内属性をユーザ5に設定し、推薦モジュール1731が、当該仮想空間内属性に基づいてメタバース内の所定の事物に関する推薦を行うこととしたが、推薦モジュール1731は、属性設定モジュール1732による仮想空間内属性の設定を伴わずに行動履歴に基づく推薦を行うものであってもよい。
推薦モジュール1731は、例えば、複数の行動履歴の中に、同一の行動履歴のある他のユーザを推薦するなどしてもよい。また、推薦モジュール1731は、例えば、ユーザ5に対して、コンテンツの利用履歴の共通性がある他のユーザを推薦するなどしてもよい。例えば、推薦モジュール1731は、ユーザ5の行動履歴と、他のユーザ5の行動履歴とが、互いの利用したことのあるコンテンツが複数重複することを示すものである場合に、当該他のユーザ5を当該ユーザ5に推薦するなどしてもよい。換言すると、推薦モジュール1731は、ユーザ5に対して、対応する属性を有する他のユーザ5や、行動履歴に共通性のある他のユーザ5等の、ユーザ5と共通する特徴を有する他のユーザ5を推薦するものであってもよい。
[現実世界での行動履歴に基づくメタバース内の事物に関する推薦]
推薦モジュール1731は、メタバース内でのユーザ5の行動履歴に基づくメタバース内の所定の事物に関する推薦に代えまたは当該推薦に加え、現実世界(換言すると、メタバース外)でのユーザ5の行動履歴に基づくメタバース内の所定の事物に関する推薦を行ってもよい。
現実世界での行動履歴に基づくメタバース内の所定の事物に関するユーザ5への推薦は、例えば、以下のように行われてもよい。すなわち、各ユーザ5には、現実世界での行動履歴に基づいて属性(以下、「現実世界内属性」という。)が設定され、推薦モジュール1731は、現実世界内属性に基づいて推薦を行うこととしてもよい。この場合、属性設定モジュール1732は、例えば、ユーザ5の現実世界での行動履歴に基づいて、ユーザ5の現実世界内属性を設定し、メモリモジュール1630が備えるユーザ属性記憶部1752に、ユーザ5の現実世界内属性を記憶させる。また、推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザ5に設定された現実世界内属性に応じた推薦を行う。
なお、1のユーザ5に対して、複数の現実世界内属性が付され得るようになっていてもよく、1のユーザ5に対しては1の現実世界内属性のみが付されるようになっていてもよい。
現実世界内属性は、現実世界におけるユーザ5の特徴や性質を示すものである。ここでは、一例として、「アクティブ」、「オタク」、「オシャレ」、「グルメ」、「非アクティブ」等の現実世界内属性がユーザ5に設定される場合を例に説明するが、現実世界内属性の種別はこのようなものに限られない。また、現実世界内属性も、仮想空間内属性の場合と同様、より細分化されたもの等であってもよい。なお、仮想空間内属性と現実世界内属性とでは、含まれる属性の種別が異なっていてもよい。換言すると、仮想空間内属性と現実世界内属性とでは、分類のされ方が異なっていてもよい。
属性設定モジュール1732は、例えば、図16に示されるように、ユーザ5の行動履歴の示す、現実世界における移動距離が所定の閾値以上であることや、現実世界における消費カロリーが所定の閾値以上であることや、現実世界における運動の回数または頻度が所定の閾値以上であることや、SNS(Social networking service)での投稿回数または頻度が所定の閾値以上であることや、メタバース外での所定のアプリケーションでの他のユーザとの会話の回数または頻度が所定の閾値以上であることや、メタバース外での所定のアプリケーションでの会話をしたユーザの数が所定の閾値以上であること等に基づいて、当該ユーザ5を「アクティブ」と判定し、当該ユーザ5に「アクティブ」という現実世界内属性を付してもよい。
また、属性設定モジュール1732は、例えば、ユーザ5の行動履歴の示す、現実世界における移動距離が所定の閾値未満であること等に基づいて、当該ユーザ5を「オタク」と判定し、当該ユーザ5に「オタク」という現実世界内属性を付してもよい。
また、属性設定モジュール1732は、例えば、ユーザ5の行動履歴の示す、SNSでの自撮り写真の投稿回数または頻度が所定の閾値以上であることや、SNSでのファッションに関する投稿に対するリアクション(所謂いいね等)の回数または頻度が所定の閾値以上であること等に基づいて、当該ユーザ5を「オシャレ」と判定し、当該ユーザ5に「オシャレ」という現実世界内属性を付してもよい。なお、属性設定モジュール1732は、例えば、ユーザ5のSNSの投稿等におけるユーザ5の写った写真等を画像認識することにより検出される現実世界内でのユーザの装いの種類の傾向(例えば、特定の種類の装いにする回数や頻度)に応じて、当該ユーザ5の現実世界内属性を「ストリート系」、「モード系」、「ナチュラル系」、「ロック系」等に設定してもよい。
また、属性設定モジュール1732は、例えば、ユーザ5の行動履歴の示す、SNSでの食事に関する投稿の回数または頻度が所定の閾値以上であることや、SNSでの飲食に関する投稿に対するリアクションの回数または頻度が所定の閾値以上であることや、高級飲食店についての訪問回数または頻度が所定の閾値以上であること等に基づいて、当該ユーザ5を「グルメ」と判定し、当該ユーザ5に「グルメ」という現実世界内属性を付してもよい。
また、属性設定モジュール1732は、例えば、ユーザ5の行動履歴の示す、現実世界における移動距離が所定の閾値未満であることや、現実世界における消費カロリーが所定の閾値未満であることや、現実世界における運動の回数または頻度が所定の閾値未満であること等に基づいて、当該ユーザ5を「非アクティブ」と判定し、当該ユーザ5に「非アクティブ」という現実世界内属性を付してもよい。
なお、上述の各条件等に基づいてユーザ5の現実世界内属性を設定する場合に、属性設定モジュール1732は、仮想空間内属性の場合と同様、ユーザ5の行った行動に応じて、各現実世界内属性に関する値(以下、「属性値」という。)をユーザ5に付与し、その累積値に基づいて現実世界内属性を設定するなどしてもよい。
また、現実世界の事物(例えば、場所、サービス、物等)には、予め現実世界内属性が設定されており、属性設定モジュール1732は、ユーザ5が利用した場所やサービスや物の現実世界内属性に応じて、利用した場所やサービスや物の現実世界内属性の属性値をユーザ5に付与することとしてもよい。そして、特定の現実世界内属性の属性値(具体的には、属性値の累積値)が閾値に達すると、当該特定の現実世界内属性をユーザ5に設定する等してもよい。換言すると、現実世界の事物には、属性が設定された事物があり、属性設定モジュール1732は、ある属性が設定された現実世界の事物をユーザ5が利用したことに基づいて、当該ユーザ5に当該ある属性を設定してもよい。なお、現実世界の事物に関する現実世界内属性の設定情報は、例えば、サーバ600の、メモリモジュール1630に予め記憶されていてもよい。
例えば、現実世界の特定の場所には現実世界内属性が設定されており、属性設定モジュール1732は、ユーザ5が訪れた場所に付された現実世界内属性の属性値をユーザ5に付与してもよい。具体的には、例えば、現実世界には現実世界内属性が設定された複数の地域(具体的には、例えば、「オシャレ」という現実世界内属性が付された「渋谷」および「原宿」や、「オタク」という現実世界内属性が設定された「秋葉原」など)が存在し、属性設定モジュール1732は、ユーザ5が現実世界内である地域を訪れたことに基づいて、その地域に設定された現実世界内属性の属性値をユーザ5に付与してもよい。また、例えば、現実世界には、現実世界内属性が設定された複数の施設(具体的には、例えば、「オシャレ」という現実世界内属性が設定された商業施設や、「オタク」という現実世界内属性が付されたゲームセンターおよび雀荘や、「グルメ」という現実世界内属性が設定されたレストラン等)が存在し、属性設定モジュール1732は、ユーザ5が現実世界である施設を訪れたことに基づいて、その施設に設定された現実世界内属性の属性値をユーザ5に付与してもよい。
また、例えば、現実世界の特定のイベント(例えば、音楽ライブ、祭り、スポーツイベント等)には現実世界内属性が設定されており、属性設定モジュール1732は、ユーザ5が現実世界であるイベントに参加したことに基づいて、そのイベントの現実世界内属性の属性値をユーザ5に付与してもよい。
推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザ5に設定された現実世界内属性に対応する仮想空間内属性が設定された他のユーザ5(換言すると、他のユーザ5のアバター)を推薦する。具体的には、例えば、推薦モジュール1731は以下のような処理を行ってもよい。すなわち、例えば、図16に示すように、推薦モジュール1731は、「アクティブ」という現実世界内属性が設定されたユーザ5に対しては、「アクティブ」または「オシャレ」という仮想空間内属性が設定された他のユーザ5を推薦することとしてもよい。また、例えば、推薦モジュール1731は、「オタク」という現実世界内属性が設定されたユーザ5に対しては、「オタク」または「非アクティブ」という仮想空間内属性が設定された他のユーザ5を推薦することとしてもよい。また、例えば、推薦モジュール1731は、「オシャレ」という現実世界内属性が設定されたユーザ5に対しては、「オシャレ」または「アクティブ」という仮想空間内属性が設定された他のユーザ5を推薦することとしてもよい。また、例えば、推薦モジュール1731は、「グルメ」という現実世界内属性が設定されたユーザ5に対しては、「グルメ」という仮想空間内属性が設定された他のユーザ5を推薦することとしてもよい。また、例えば、推薦モジュール1731は、「非アクティブ」という現実世界内属性が設定されたユーザ5に対しては、「非アクティブ」または「オタク」という仮想空間内属性が設定された他のユーザ5を推薦することとしてもよい。
また、推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザ5に設定された現実世界内属性に応じたメタバース内のコンテンツを推薦してもよい。具体的には、例えば、メタバース内のコンテンツの中には、いずれの属性のユーザ5に推薦するかを示す推薦対象属性が設定されたコンテンツが用意されており、推薦モジュール1731は、ユーザ5に対して、当該ユーザ5に設定された現実世界内属性に対応する推薦対象属性が設定されたコンテンツを推薦することとしてもよい。すなわち、例えば、メタバース内のコンテンツの中には、推薦対象属性として「アクティブ」、「オタク」、「オシャレ」、「グルメ」、「非アクティブ」などが設定されたコンテンツがあり、コンテンツに設定された推薦対象属性と一致する現実世界内属性が設定されたユーザ5に対して、当該コンテンツが推薦されるなどしてもよい。より具体的には、例えば、推薦モジュール1731は、「アクティブ」という現実世界内属性が設定されたユーザに対しては、「アクティブ」という推薦対象属性の設定されたコンテンツを推薦するなどしてもよい。
なお、本実施形態では、属性設定モジュール1732が、現実世界でのユーザ5の行動履歴に基づいて現実世界内属性をユーザ5に設定し、推薦モジュール1731が、現実世界内属性に基づいてユーザ5に対してメタバース内の所定の事物に関する推薦を行うこととしたが、推薦モジュール1731は、属性設定モジュール1732による現実世界内属性の設定を伴わずに行動履歴に基づく推薦を行うものであってもよい。具体的には、例えば、メタバース内に現実世界の所定の場所に対応する場所(例えば、現実の渋谷の特定の施設を模した、仮想渋谷の特定の施設等)が存在する場合であって、現実世界でのユーザ5の行動履歴が、当該所定の場所に頻繁に訪れていることを示す場合(換言すると、行動履歴自体が当該所定の場所に頻繁に訪れるというユーザ5の属性を示す場合。さらに換言すると、当該所定の場所の利用回数が多い場合。)に、推薦モジュール1731は、当該ユーザ5に対して、当該所定の場所に対応するメタバース内の場所を推薦するなどしてもよい。
また、現実世界でのユーザ5の行動履歴に基づくメタバース内の所定の事物に関する推薦は、以下のようなものであってもよい。すなわち、例えば、行動履歴は、後述するユーザデバイス700を用いてのユーザ5の検索(例えば、所定のウェブブラウザ等での検索)に関する履歴や、商品等の購入に関する履歴(例えば、所定のECサイト等での購入履歴)等であってもよい。そして、推薦モジュール1731は、例えば、現実世界でのユーザ5の行動履歴が、例えば、音楽コンサートについて検索したことを示す場合や、所定のECサイトで楽器を購入したことを示す場合に、メタバース内の音楽コンサートを推薦するなどしてもよい。
また、行動履歴は、クレジットカードの利用に関する履歴等であってもよい。そして、推薦モジュール1731は、例えば、現実世界でのユーザ5の行動履歴としてのクレジットカードの利用に関する履歴が、ユーザ5が家電を購入したことを示す場合に、メタバース内の家電量販店を推薦するなどしてもよい。
[メタバース内での行動履歴に基づく現実世界の事物に関する推薦]
推薦モジュール1731は、メタバース内でのユーザ5の行動履歴に基づくメタバース内の所定の事物に関する推薦や、現実世界でのユーザ5の行動履歴に基づくメタバース内の所定の事物に関する推薦に代え、またはこれらの推薦に加え、メタバース内でのユーザ5の行動履歴に基づく現実世界の所定の事物に関する推薦を行ってもよい。
メタバース内での行動履歴に基づく現実世界の所定の事物のユーザ5への推薦は、例えば、以下のように行われてもよい。すなわち、各ユーザ5には、属性設定モジュール1732により仮想空間内属性が設定され、推薦モジュール1731は、仮想空間内属性に基づいて現実世界の所定の事物に関する推薦を行うこととしてもよい。
推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザ5に設定された仮想空間内属性に応じた現実世界の事物(例えば、場所、サービス、物等)を推薦する。具体的には、例えば、現実世界の事物の中には、いずれの属性のユーザに推薦するかを示す推薦対象属性が設定された事物が用意されており、推薦モジュール1731は、ユーザ5に対して、当該ユーザ5に設定された仮想空間内属性に対応する推薦対象属性が設定された事物を推薦することとしてもよい。すなわち、例えば、現実世界の事物の中には、推薦対象属性として「アクティブ」、「オタク」、「オシャレ」、「グルメ」、「非アクティブ」などが設定された事物があり、事物に設定された推薦対象属性と一致する仮想空間内属性が設定されたユーザ5に対して、当該事物が推薦されるなどしてもよい。より具体的には、例えば、推薦モジュール1731は、「アクティブ」という仮想空間内属性が設定されたユーザに対しては、「アクティブ」という推薦対象属性の設定された現実世界のサービスや施設等を推薦するなどしてもよい。なお、現実世界の各事物の推薦対象属性を示す情報は、例えば、サーバ600の、メモリモジュール1630に予め記憶されていてもよい。
また、メタバース内には、現実世界の事物に対応付けられた(換言すると、関連付けられた)複数のコンテンツが存在し、推薦モジュール1731は、現実世界の事物に対応付けられた複数のコンテンツのうちの特定のコンテンツへのユーザ5のアクセスに基づいて、当該特定のコンテンツに対応づけられた事物に関する推薦を行うこととしてもよい。なお、現実世界の事物とメタバース内のコンテンツとの対応関係を示す情報は、例えば、サーバ600の、メモリモジュール1630に予め記憶されていてもよい。ここで、現実世界の事物に対応付けられたコンテンツとは、例えば、現実世界に実在する場所(例えば、地域または施設等)をモチーフとした(例えば、模した)メタバース内の場所等であってもよい。具体的には、例えば、現実の特定の町をモチーフとした仮想の町の中に、現実の特定の施設をモチーフとした仮想施設が存在する場合に、推薦モジュール1731は、ユーザ5がメタバース内において当該仮想施設を訪れたことに基づいて、当該特定の施設をユーザ5に推薦する等してもよい。
また、現実世界の事物に対応付けられたコンテンツとは、例えば、現実世界に実在するイベントと類似するメタバース内のイベント等であってもよい。具体的には、例えば、メタバース内で、現実世界で開催される特定の音楽ライブと類似する音楽ライブ(例えば、音楽の系統が類似するライブや、同一のアーティストが出演するライブ等)が行われる場合、推薦モジュール1731は、ユーザ5のメタバース内における当該音楽ライブへの参加(例えば、実際の参加または参加の予約等)に基づいて、現実世界で開催される当該特定の音楽ライブを当該ユーザ5に推薦する等してもよい。
また、例えば、メタバース内で、現実の特定のサービスに対応するサービスが利用可能な場合、推薦モジュール1731は、メタバース内におけるユーザ5の当該サービスの利用に基づいて、現実世界の当該特定のサービスを当該ユーザ5に推薦する等してもよい。
なお、現実世界の事物とメタバース内の各コンテンツとは、一対一で対応付けられるものであってもよいが、一対一で対応付けられるものでなくてもよい。換言すると、現実世界の1の事物に対してメタバース内の複数のコンテンツが対応付けられていてもよく、現実世界の複数の事物に対してメタバース内の1のコンテンツが対応付けられていてもよい。例えば、メタバース内には複数のカジノがあり、当該複数のカジノが、現実世界の1のカジノに対応付けられているなどしてもよい。また、メタバース内には1のカジノがあり、当該1のカジノが、現実世界の複数のカジノに対応付けられているなどしてもよい。
なお、メタバース内でのユーザ5の行動履歴に基づく現実世界の所定の事物に関する推薦は、以下のようなものであってもよい。すなわち、例えば、行動履歴は、メタバース内での買物に関する履歴であってもよい。そして、推薦モジュール1731は、例えば、メタバース内でのユーザ5の行動履歴が、例えば、メタバース内において使用可能な特定の商品(例えば、アバターが着用する服飾品や、メタバース内の家に置く家具等)を購入したことを示す場合に、当該特定の商品に関連する現実世界の商品を推薦するなどしてもよい。より具体的には、例えば、推薦モジュール1731は、ユーザ5がメタバース内の所定の店舗で購入した商品に応じて、当該所定の店舗に対応付けられた現実世界の店舗のウェブサイトにおいてユーザ5にお薦めする商品として表示される現実世界の商品を変化させるなどしてもよい。
また、推薦モジュール1731は、メタバース内でのユーザ5の行動履歴に基づいて、現実世界での行動(例えば、推奨する行動)を推薦してもよい。具体的には、推薦モジュール1731は、メタバース内においてユーザ5の移動が少ないこと(例えば、移動距離が閾値未満であること)等に基づいて、現実世界で運動することを推薦するなどしてもよい。また、推薦モジュール1731は、メタバース内でのユーザ5の行動履歴に基づいて、現実世界での生活習慣の見直しを推薦するなどしてもよい。このような構成によれば、メタバース内での行動履歴に表れるユーザ5の特徴に基づいて、現実世界でのユーザ5の生活に有用なアドバイスを行うことなどができる。
また、推薦モジュール1731は、例えば、ユーザ5に対して、当該ユーザ5とメタバース内で特定の関係性を有する他のユーザと特定の関連性のある現実世界の事物を推薦してもよい。他のユーザ5と特定の関連性のある現実世界の事物とは、例えば、当該他のユーザ5の利用回数の多い現実世界内の事物(例えば、頻繁に訪れる施設や、頻繁に利用するサービス)等であってもよい。なお、当該他のユーザ5の利用回数の多い現実世界の事物は、当該他のユーザ5の現実世界内での行動履歴に基づいて(例えば、当該行動履歴の示す各施設やサービスの利用回数等から)割り出してもよい。また、他のユーザ5と特定の関連性のある現実世界の事物とは、例えば、当該他のユーザ5の利用回数の多いメタバース内のコンテンツに対応する現実世界内の事物等であってもよい。なお、特定の関係性を有する他のユーザ5については、前述した通りである。このような構成によれば、例えば、メタバース内で特定の関係性を有する(例えば、よく交流する)他のユーザ5がメタバース内で特定のライブイベントによく参加する場合に、ユーザ5に対して、当該特定のライブイベントに対応する現実世界のライブイベントを推薦すること等が可能となる。したがって、メタバース内だけでの関係性を現実世界に広げることなどが可能となる。
なお、メタバース内においては、ユーザ5は、自身の仮想空間内属性または現実世界内属性の少なくとも一方が視覚的にわかるようになっていてもよい。また、メタバース内においては、ユーザ5は、他のユーザ5の仮想空間内属性または現実世界内属性の少なくとも一方が視覚的にわかるようになっていてもよい。具体的には、例えば、アバター制御モジュール1429は、ユーザ5の属性をアバターオブジェクト6に反映させ、属性が反映された表示態様でアバターオブジェクト6がモニタ130に表示されるように制御してもよい。ここで、アバターオブジェクト6への属性の反映は、アバターオブジェクト6のスキン(例えば、服装)を属性に応じて変化させるものであってもよい。また、アバターオブジェクト6への属性の反映は、アバターオブジェクト6の周囲(例えば、頭上)に属性を示す表示(例えば、アイコン)を付加するものであってもよい。換言すると、アバターオブジェクト6への属性の反映は、アバターオブジェクト6の表示態様を、アバターオブジェクト6に、属性に応じたオブジェクト(例えば、服またはアイコン等)が付加された表示態様に設定するものであってもよい。また、属性は、例えば、そのユーザ5についての情報を一覧で表示する画面(所謂プロフィール画面等)において表示されるもの(例えば、文字や記号等によって示されるもの)であってもよい。また、例えば、あるユーザ5に設定された仮想空間内属性と現実世界内属性との間にギャップ(換言すると、特定の差異)がある場合にギャップがあることを示す表示がされてもよい。具体的には、アバターオブジェクト6の表示態様が、ギャップがあることを示す表示態様(例えば、アバターオブジェクト6の頭上にギャップがあることを示すアイコンが表示される表示態様)に変化してもよく、プロフィール画面等において、ギャップがあることを示す表示がされてもよい。なお、属性あるいはギャップ等を他のユーザ5に対して視覚的にわかるようにするか否かは、各ユーザ5が設定可能となっていてもよい。また、例えば、アバターオブジェクト6への属性の反映を行う場合に、当該反映は、自動で行われてもよく、ユーザ5の操作に基づいて行われてもよい。例えば、推薦モジュール1731は、ユーザ5の属性(換言すると、行動履歴)に応じてアバターオブジェクト6のスキン(例えば、服装)を推薦し、ユーザ5が、推薦されたスキンに変更する操作を行った場合に、アバターオブジェクト6のスキンが推薦されたものに変化するなどしてもよい。
なお、本実施形態では、メタバース内での行動履歴に基づいて設定されるユーザ5の属性(すなわち、仮想空間内属性)と、現実世界での行動履歴に基づいて設定されるユーザ5の属性(すなわち、現実世界内属性)とは、区別して管理されるようになっている。ただし、メタバース内での行動履歴に基づいて設定される属性と、現実世界での行動履歴に基づいて設定される属性とは、区別されていなくてもよい。換言すると、本実施形態の仮想空間内属性および現実世界内属性は、ともに単に「属性」と読み替えてもよい。
現実世界でのユーザ5の行動履歴は、例えば、以下のように取得されてもよい。すなわち、例えば、サーバ600のコントロールモジュール1610は、行動履歴取得モジュール1733を備えていてもよい。また、行動履歴取得モジュール1733は、例えば、外部機器700としてのユーザ5が携帯するデバイス(以下、「ユーザデバイス700」という。)から、現実世界でのユーザ5の行動履歴に関する情報を取得し、当該情報に基づいて、現実世界でのユーザ5の行動履歴を、メモリモジュール1630の備える現実世界内履歴記憶部1753に記憶させることとしてもよい。ここで、ユーザ5が携帯するデバイスとは、例えば、スマートフォン、フィーチャーフォン、PDA(Personal Digital Assistant)、タブレット型コンピュータ、パーソナルコンピュータ等であってもよく、ユーザ5が身につけるデバイス(例えば、時計型、リストバンド型、指輪型、衣服型、メガネ型、もしくはコンタクトレンズ型等のウェアラブルデバイス、または体内埋め込み型のデバイス)等であってもよい。
行動履歴取得モジュール1733は、例えば、ユーザデバイス700が、GPSや、所定の無線通信(例えば、Wi-Fi通信、Bluetooth通信、またはUWB(Ultra Wide Band)通信などの近距離無線通信)等により取得するユーザ5の位置を示す位置情報に基づいて、ユーザ5の移動距離に関する情報や、ユーザ5が訪れた場所に関する情報や、ユーザ5が利用したサービスに関する情報を行動履歴として取得してもよい。また、行動履歴取得モジュール1733は、例えば、ユーザデバイス700から、ユーザ5のSNSでのアクションに関する情報(例えば、投稿した画像に関する情報、投稿した日時に関する情報、投稿内容を示す情報、リアクションした投稿に関する情報等)を取得し、当該情報に基づいて、ユーザ5が訪れた場所に関する情報や、ユーザ5が利用したサービスに関する情報や、ユーザ5が身に着ける服飾品に関する情報を行動履歴として取得してもよい。また、行動履歴取得モジュール1733は、例えば、ユーザデバイス700から、ユーザ5のウェブブラウザでの検索に関する履歴や、商品等の購入に関する履歴等を行動履歴として取得してもよい。また、行動履歴取得モジュール1733は、ユーザデバイス700での所定のアプリケーションの利用に関する履歴を記憶する所定のサーバや、ユーザ5のクレジットカードの利用に関する履歴を記憶する所定のサーバ等から、これらの履歴を行動履歴として取得してもよい。
また、行動履歴取得モジュール1733は、例えば、ユーザデバイス700により取得される生体情報に関する情報に基づいて行動履歴を取得してもよい。ここで、生体情報は、例えば、ユーザ5が身につけるデバイスによって測定される心拍数、血圧、体温、血中酸素量、呼気、発汗量、歩数、心電図、または脳波などのデータであってもよい。また、ユーザデバイス700または行動履歴取得モジュール1733は、生体情報を分析して得られる情報(以下、「分析結果情報」という。)を取得してもよい。ここで、分析結果情報は、例えば、生体情報を分析して得られる運動中(あるいは運動後)であることを示す情報や、睡眠時間を示す情報や、満腹状態であることを示す情報等であってもよい。そして、行動履歴取得モジュール1733は、生体情報や分岐結果情報に基づいて、ユーザ5の運動の回数または頻度に関する情報や、ユーザ5の消費カロリーに関する情報や、ユーザ5の睡眠時間に関する情報を行動履歴として取得してもよい。
なお、行動履歴取得モジュール1733は、ユーザ5がユーザデバイス700等に手動入力した情報に基づいて行動履歴を取得してもよい。例えば、ユーザ5がユーザデバイス700のヘルスケアアプリケーションに入力した情報や、家計簿アプリケーションに入力した情報等に基づいて、行動履歴を取得してもよい。換言すると、行動履歴は、ユーザ5の行動に伴いリアルタイムで取得されてもよく、行動を行った後にユーザ5が所定の情報の入力を手動で行うことにより取得されるなどしてもよい。
なお、コントロールモジュール1610は、各ユーザ5のユーザデバイス700との連携に関する情報を管理する連携管理モジュール1741を備えている。また、連携管理モジュール1741(換言すると、連携情報登録手段)は、ユーザ5の操作(例えば、コントローラ300による操作や、ユーザデバイス700での操作等)に基づいて、当該ユーザ5の使用するユーザデバイス700との連携に関する情報を登録する。ここで、ユーザデバイス700との連携に関する情報とは、ユーザ5が使用するユーザデバイス700(例えば、ウェアラブルデバイス等)を示す情報であってもよい。換言すると、ユーザデバイス700との連携に関する情報とは、ユーザ5が連携を許可したユーザデバイス700を示す情報であってもよい。また、ユーザデバイス700との連携に関する情報とは、ユーザデバイス700内のアプリケーション(例えば、生体情報を取得するアプリケーションや、SNSアプリケーション等)と、メタバースを提供するアプリケーションとの連携に関する情報であってもよい。換言すると、ユーザデバイス700との連携に関する情報とは、ユーザ5が連携を許可したユーザデバイス700内のアプリケーション(換言すると、ユーザデバイス700で使用可能なアプリケーション)を示す情報であってもよい。すなわち、ユーザデバイス700との連携に関する情報とは、ユーザ5の現実世界での行動履歴に関する情報の、ユーザデバイス700を介しての取得の許諾に係る情報ともいえる。連携管理モジュール1741は、ユーザ5の操作に基づいて、ユーザデバイス700との連携に関する情報をメモリモジュール1630に記憶させる。また、連携管理モジュール1741によってユーザデバイス700との連携に関する情報が登録されると、行動履歴取得モジュール1733が、ユーザデバイス700によって取得される情報に基づいてユーザ5の行動履歴を取得することが可能となる。換言すると、ユーザデバイス700との連携に関する情報が登録されると、例えば、メタバースを提供するアプリケーションが、ユーザデバイス700内のアプリケーションから情報を取得することが可能となる。また、連携管理モジュール1741(換言すると、通知手段)は、ユーザデバイス700との連携に関する情報が登録されていないユーザ5に対して、ユーザデバイス700との連携に関する情報の登録を促す通知を行う。具体的には、例えば、連携管理モジュール1741は、ユーザデバイス700との連携を許可することで、所定の推薦が行われるようになることをユーザ5に通知する。より具体的には、例えば、連携管理モジュール1741は、ユーザ5のコンピュータ200のコントロールモジュール510に、ユーザデバイス700との連携に関する情報の登録がされていないことを示す情報を送信する。また、当該情報を受信したコントロールモジュール510は、ユーザデバイス700との連携がされていないことをユーザ5に報知する表示またはユーザデバイス700との連携を許可することで、現実世界での行動履歴に基づいてメタバース内の所定の事物に関する推薦がされるようになることをユーザ5に報知する表示等をモニタ130に表示させる。
なお、行動履歴取得モジュール1733に行動履歴の取得を実行させるか否か(換言すると、許可するか否か)は、ユーザ5の操作に基づいて設定可能(換言すると、ON/OFF切替可能)となっていてもよい。例えば、行動履歴取得モジュール1733は、ユーザ5による操作(例えば、所定の設定画面でのコントローラ300による操作)により設定される設定情報(具体的には、行動履歴の取得を行うか否かについての設定情報)に基づいて行動履歴の取得を行うか否かを決定してもよい。また、行動履歴の取得を実行させるか否かは、行動履歴の取得経路毎に設定可能となっていてもよい。具体的には、例えば、ユーザデバイス700からの行動履歴の取得を許可しつつ、クレジットカードの利用に関する履歴の取得を許可しない、といった設定が可能となっていてもよい。換言すると、複数の媒体(例えば、ユーザデバイス700、クレジットカード等)のうちいずれの媒体についての行動履歴の取得を行動履歴取得モジュール1733に許可するかがユーザ毎に設定可能となっていてもよい。また、推薦モジュール1731に各種行動履歴に基づく各種推薦を実行させるか否か(換言すると、許可するか否か)は、ユーザ5の操作に基づいて設定可能(換言すると、ON/OFF切替可能)となっていてもよい。例えば、推薦モジュール1731は、ユーザ5による操作(例えば、所定の設定画面でのコントローラ300による操作)により設定される設定情報(具体的には、推薦を行うか否かについての設定情報)に基づいて推薦を行うか否かを決定してもよい。また、推薦を実行させるか否かは、推薦する事物毎に設定可能となっていてもよい。このような構成によれば、例えば、現実世界での行動履歴に基づいてメタバース内の事物に関する推薦が行われる構成において、メタバース内の事物に関する推薦のON/OFFを切り替えること等が可能となり、推薦される事物によって現実世界での行動がばれてしまうこと等を防止することができる。
推薦モジュール1731が各種推薦を行う際のユーザ5に提供される表示は、例えば、以下のようなものであってもよい。すなわち、例えば、推薦モジュール1731は、メタバース内または現実世界でのユーザ5の行動履歴に基づいて、ユーザ5に推薦するメタバース内または現実世界の事物を決定すると、当該事物を示す推薦情報を出力し、推薦情報提示モジュール1721に送信する。また、推薦情報提示モジュール1721は、推薦モジュール1731からの推薦情報に基づいて、当該事物を推薦する表示(以下、「推薦表示30」という。)を、モニタ130に表示させる。
推薦表示30の一例を図17に示す。図17は、現実世界での行動履歴に基づいてメタバース内のコンテンツおよび他のユーザ5を推薦する場合の表示例を示すものである。図17に示すように、推薦情報提示モジュール1721は、推薦するコンテンツの名称等の表示を含む推薦表示30をモニタ130に表示させてもよい。また、図17に示されるように、推薦情報提示モジュール1721は、推薦する他のユーザ5のメタバース内での名前(換言すると、当該他のユーザ5のアバターの名前)、換言すると、当該他のユーザ5の識別情報(例えば、ユーザ名)等の表示を含む推薦表示30をモニタ130に表示させてもよい。なお、他のユーザ5の推薦に係る推薦表示30は、例えば、当該他のユーザ5に対する連絡の受付に係る表示や、当該他のユーザのメタバース内の位置を示す表示等を含んでいてもよい。また、メタバース内のコンテンツを推薦する推薦表示は、例えば、当該コンテンツに関する場所の位置(例えば、当該コンテンツとしての施設の位置、または当該コンテンツとしてのサービスが利用できる場所の位置等)を示す表示等を含んでいてもよい。なお、メタバース内での行動履歴に基づいてメタバース内のコンテンツや他のユーザを推薦する場合の推薦表示30についても、図17に例示されるようなものであってもよい。なお、推薦表示30は、モニタ130の表示領域全体にわたって表示されるものであってもよく、表示領域の一部に表示されるものであってもよい。
推薦表示の他の例を図18に示す。図18は、メタバース内での行動履歴に基づいて現実世界の事物を推薦する場合の表示例を示すものである。なお、メタバース内での行動履歴あるいは現実世界での行動履歴に基づいてメタバース内のコンテンツや他のユーザを推薦する場合の推薦表示30についても、図18に例示されるようなものであってもよい。
図18に示されるように、推薦表示30は、推薦する事物の名称の表示を含んでいてもよい。また、推薦表示30は、推薦する事物について説明する表示(例えば、説明文の表示等)を含んでいてもよい。また、推薦表示30は、推薦する事物の価格(例えば、推薦する物の価格や、推薦するサービスの価格等)に関する表示を含んでいてもよい。また、推薦表示30は、推薦する事物に関する場所の位置を示す表示を含んでいてもよい。ここで、当該位置を示す表示は、例えば、住所等の文字による表示であってもよく、地図等による表示であってもよい。また、推薦表示30は、推薦する事物についての予約の受付に係る表示を含んでいてもよい。換言すると、推薦表示30が表示された状態においては、ユーザ5による、推薦される事物についての予約に係る操作(例えば、コントローラ300による操作または視線による操作等)が受け付けられてもよい。また、推薦表示30は、推薦する事物に関する場所を、現実世界で実際に向かう目的地として設定する操作の受付に係る表示を含んでいてもよい。換言すると、推薦表示30が表示された状態においては、ユーザ5による、推薦する事物に関する場所を、現実世界で実際に向かう目的地として設定する操作(例えば、コントローラ300による操作または視線による操作等)が受け付けられてもよい。また、推薦表示30は、推薦する事物についての所定のリストへの追加の受付に係る表示を含んでいてもよい。換言すると、推薦表示30が表示された状態においては、ユーザ5による、推薦される事物についての所定のリストへの追加に係る操作(例えば、コントローラ300による操作または視線による操作等)が受け付けられてもよい。ここで、所定のリストとは、例えば、将来行く場所の候補を登録するリストであってもよく、今から向かう場所を登録するリストであってもよく、購入する予定の物を登録するリスト等であってもよい。また、ここで、当該所定のリストは、ユーザデバイス700において所定のアプリケーションを用いて閲覧することができるものであってもよい。また、推薦表示30がされた状態において、推薦する事物に関する場所を、現実世界で実際に向かう目的地として設定する操作が行われると、ユーザデバイス700のナビゲーションアプリケーションに、目的地として設定されるようになっていてもよい。なお、これらの各種設定等は、メタバースにアクセスするためのアプリケーションと他のアプリケーションやウェブサイトとを連携させる技術等の公知の技術により実現できる。
また、推薦モジュール1731は、メタバース内または現実世界でのユーザ5の行動履歴に基づいて、ユーザ5に推薦するメタバース内または現実世界の事物を決定すると、当該事物を示す推薦情報を出力し、ユーザデバイス700に送信してもよい。そして、ユーザデバイス700のコンピュータが、推薦モジュール1731からの推薦情報に基づいて、当該事物を推薦する推薦表示30を、ユーザデバイス700のモニタに表示させるなどしてもよい。換言すると、推薦モジュール1731がユーザ5に対して推薦する現実世界の事物に関する情報はユーザデバイス700(例えば、スマートフォンやウェアラブルデバイス等)においてユーザ5に提示されてもよく、メタバース内でユーザ5に提示されてもよい。また、ユーザデバイス700に推薦情報が送られた場合に、ユーザデバイス700において所定の操作を行うことで、ユーザデバイス700の所定のアプリケーションに、推薦に係る情報が登録できるようになっていてもよい。具体的には、例えば、推薦情報が送られるとユーザデバイス700において推薦表示30が表示されるとともに、推薦する事物についての予約に係る操作、推薦する事物に関する場所を現実世界で実際に向かう目的地として設定する操作、または推薦する事物についての所定のリストへの追加に係る操作等が受け付けられ、各操作に基づいて、予約に関する日時や目的地に行く日時を管理するアプリケーション(例えば、カレンダーアプリケーション)や、所定のリストを管理するアプリケーションや、ナビゲーションアプリケーション等に、推薦に係る情報が登録されるようになっていてもよい。また、ユーザデバイス700に現実世界の所定の事物を推薦する推薦情報が送られた場合に、ユーザデバイス700は、推薦に係る情報を記憶しておき、当該所定の事物にユーザ5が近づいた場合に(換言すると、当該所定の事物から所定範囲内に位置する状態となった際に)、ユーザ5に対して所定の通知を行うようになっていてもよい。ここで、当該所定の通知は、例えば、当該所定の事物に近づいたことを知らせる通知や、到着したことを知らせる通知や、当該所定の事物についての詳細情報を知らせる通知等であってもよい。なお、当該所定の事物に近づいたか否かは、例えば、ユーザデバイス700がGPS等により取得するユーザ5の位置を示す位置情報に基づいて判断されてもよい。また、ユーザ5が推薦された事物に関する場所に実際に訪れた場合に、ユーザデバイス700は、訪れたことを検知し、訪れたことを知らせる情報をサーバ600に送信してもよい。そして、コントロールモジュール1610は、当該情報に基づいて(換言すると、推薦に応じたアクションをユーザ5が行ったことに基づいて)、ユーザ5に対して所定の報酬(例えば、メタバース内で使用可能な報酬、または現実世界で使用可能な報酬)を付与してもよい。
ユーザ5に対して推薦を行うタイミングについては、特に限定されるものでないが、例えば、以下のようにすることができる。すなわち、推薦は、複数のメニュー項目が表示されるメニュー画面(換言すると、モニタ130に表示されるユーザインターフェース)等において、ユーザ5が推薦を要求する操作(例えば、推薦表示30の表示を要求する操作)を行った際に行われるなどしてもよい。なお、ここで推薦を行うタイミングとは、推薦に係る情報がユーザ5に提供されるタイミング(例えば、推薦表示30がユーザ5に対して表示されるタイミング)を意味するが、推薦する事物を推薦モジュール1731が決定するタイミング等も意味し得る。
また、推薦は、ユーザ5の行動履歴が蓄積され、ユーザ5に対して推薦する事物を特定できたタイミング(換言すると、推薦モジュール1731が推薦を行うことが可能な量、行動履歴が蓄積されたタイミング)等で行われるなどしてもよい。具体的には、ユーザ5の行動履歴が蓄積され、ユーザ5に対して推薦する事物が新たに抽出される毎に、推薦が行われるなどしてもよい。
また、推薦は、メタバースにユーザ5がアクセスしたタイミングで行われてもよい。すなわち、例えば、ユーザ5がHMD120を装着し、メタバースにアクセスするためのアプリケーションを起動したタイミング等で行われてもよい。具体的には、例えば、メタバースにアクセスするためのアプリケーションを起動した後、ユーザ5によるアバターオブジェクト6の操作が可能となる以前のタイミング等で行われてもよい。一例として、メタバース空間に関する設定等が行われる画面(例えば、所謂ホーム画面)において推薦が行われてもよい。このような構成によれば、例えば、現実世界でのユーザ5の行動履歴に基づいてメタバース内の事物に関する推薦を行う場合等について、以下のような効果が得られる。すなわち、ユーザ5が久しぶりにメタバースにアクセスする場合等において、現実世界で行った行動がメタバース空間へ活かされることがユーザ5にわかる形で示されるので、メタバース内で活動していない期間についてもメタバースとの関わりがあるという感覚をユーザ5に与えることができ、再アクセスに対する心理的障壁を取り除くことができる。また、現実世界でのユーザ5の行動履歴に基づいてメタバース内の事物に関する推薦を行う場合、メタバースに初めてアクセスした際に推薦が行われてもよい。この場合、例えば、ユーザ5に対してある程度操作方法についての説明等がされた後(換言すると、チュートリアル中あるいはチュートリアル後)等に推薦が行われてもよい。このような構成によれば、ユーザ5がメタバース内での活動を開始するにあたりまず何をしたら良いかを、ユーザ5の特徴に合わせて提示することができる。
また、推薦は、メタバース内の所定のコンテンツにユーザ5がアクセスしたタイミングで行われてもよい。例えば、メタバース内の所定のコンテンツに対応する現実世界の事物を推薦する場合や、メタバース内の所定のコンテンツに対応するメタバース内の事物を推薦する場合等について、当該所定のコンテンツにユーザ5がアクセスしたタイミングで推薦が行われるようにしてもよい。例えば、図18に示すように、現実の特定の町をモチーフとした仮想の町の中に、現実の特定の施設をモチーフとした仮想施設が存在する場合において、ユーザ5がメタバース内で当該仮想施設を訪れると(具体的には、例えば、当該仮想施設が視界に入る場所を訪れると、または、当該仮想施設の中に入ると)、推薦モジュール1731は、現実の当該特定の施設を当該ユーザ5に推薦する等してもよい。なお、図18に示される表示等によりユーザ5への推薦を行う場合、当該推薦は、例えば、以下のようなものであってもよい。すなわち、推薦モジュール1731および/または推薦情報提示モジュール1721は、ユーザ5がメタバース内のどの場所にいるかに基づいて、ユーザ5に対して推薦する事物を異ならせてもよい。また、推薦モジュール1731および/または推薦情報提示モジュール1721は、ユーザ5がメタバース内のどこを見ているかに基づいて、ユーザ5に対して推薦する事物を異ならせてもよい。すなわち、例えば、推薦情報提示モジュール1721は、ユーザ5が現実の特定の町をモチーフとした仮想の町にいる場合に、当該仮想の町の中の仮想施設に対応する現実の施設を推薦する推薦表示30をモニタ130に表示させてもよい。換言すると、推薦モジュール1731は、メタバース内におけるユーザ5の現在位置に基づいて現実世界またはメタバース内の所定の事物(換言すると、現在位置に応じた所定の事物)を推薦するものであってもよい。また、推薦情報提示モジュール1721は、例えば、ユーザ5が第1の仮想施設31を見ている場合に、当該第1の仮想施設31に対応する現実の施設を推薦する推薦表示30をモニタ130に表示させてもよい。また、推薦情報提示モジュール1721は、例えば、ユーザ5が第2の仮想施設32を見ている場合に、当該第2の仮想施設32に対応する現実の施設を推薦する推薦表示30をモニタ130に表示させてもよい。換言すると、推薦モジュール1731は、メタバース内におけるユーザ5の見ている箇所に基づいて現実世界またはメタバース内の所定の事物(換言すると、見ている箇所に応じた所定の事物)を推薦するものであってもよい。なお、ユーザ5が見ている箇所(換言すると、どの施設を見ているか等)は、例えば、視界画像17に基づいて判断してもよく、注視センサ140からの信号に基づいて特定されるユーザ5の視線に基づいて判断してもよい。具体的には、例えば、視界画像17に映っている範囲をユーザ5の見ている箇所と判断する等してもよく、ユーザ5の視線が向かう地点を基準とする所定範囲等をユーザ5の見ている箇所と判断する等してもよい。
また、推薦は、メタバースからユーザ5が出る際に行われてもよい。すなわち、例えば、ユーザ5がメタバースからログアウトする操作(例えば、コントローラ300による操作)を実行したタイミング等で行われてもよい。
また、本実施形態のコントロールモジュール1610は、メタバース内の特定のコンテンツについてのアクセスの可否を制御するアクセス制御モジュール1734を備える。アクセス制御モジュール1734は、推薦モジュール1731がユーザ5に対して特定のコンテンツを推薦すると、当該特定のコンテンツへのユーザ5のアクセスを可能とする。具体的には、例えば、メタバース内には、推薦されないとユーザ5が侵入することのできない場所(例えば、地域または施設等)が存在してもよい。この場合、アクセス制御モジュール1734は、例えば、推薦モジュール1731のユーザ5に対する当該場所の推薦に基づいて、ユーザ5の当該場所への侵入(すなわち、アクセス)を可能としてもよい。また、例えば、メタバース内には、推薦されないとユーザ5が利用することのできないサービスが存在してもよい。この場合、アクセス制御モジュール1734は、例えば、推薦モジュール1731のユーザ5に対する当該サービスの推薦に基づいて、ユーザ5の当該サービスの利用(すなわち、アクセス)を可能としてもよい。また、例えば、メタバース内には、推薦されないとユーザ5が取得(例えば、購入)することのできない物が存在してもよい。この場合、アクセス制御モジュール1734は、例えば、推薦モジュール1731のユーザ5に対する当該物の推薦に基づいて、ユーザ5の当該物の取得(すなわち、アクセス)を可能としてもよい。このように、推薦に基づいて、推薦される事物へのアクセスを可能とすることで、メタバース内あるいは現実世界での活動に対する意欲や目的意識を高めることができる。
また、アクセス制御モジュール1734によってアクセスが制御される空間には、特定の属性を有するユーザ5のみがアクセスできる空間等が存在してもよい。換言すると、アクセス制御モジュール1734は、メタバース内の特定の空間について、ユーザ5が特定の属性を有する場合にアクセスを許可するものであってもよい。このような構成によれば、類似するユーザ5の集まる空間をメタバース内に用意することができる。
次に図19~22を参照しながら、HMDシステム100が実行する処理の流れについて説明する。
[メタバース内での行動履歴に基づくメタバース内の事物に関する推薦に係る処理]
メタバース内での行動履歴に基づいてメタバース内の事物に関する推薦を行う処理の一例について、図19および図20を参照しながら説明する。なお、ここでは、ユーザ5Aに対して推薦が行われる場合を例に説明する。
まず、メタバース内での行動履歴に基づいて他のユーザを推薦する処理の一例について、図19を参照しながら説明する。
ステップS101において、属性設定モジュール1732は、仮想空間内履歴記憶部1751に記憶されたユーザ5Aのメタバース内での行動履歴に基づいて、ユーザ5Aの仮想空間内属性を決定する。
次いで、ステップS102において、推薦モジュール1731は、ユーザ5Aの仮想空間内属性に基づいて、ユーザ5Aに推薦する他のユーザ5を決定する。具体的には、推薦モジュール1731は、メタバースを利用する複数のユーザ5の中から、ユーザ5Aの仮想空間内属性に対応する仮想空間内属性を有する他のユーザ5を抽出し、ユーザ5Aに推薦する他のユーザ5として決定する。ここでは、一例として、ユーザ5Cがユーザ5Aに推薦する他のユーザ5として決定されたものとする。なお、推薦モジュール1731は、属性の関連性の高い他のユーザ5(例えば、対応する属性の数が多いユーザ5等)を優先的に抽出してもよい。また、推薦モジュール1731は、メタバース内での行動履歴の示すメタバース内のユーザ5の居場所に関する関連性が高い他のユーザ5(例えば、現在居る位置が近い他のユーザ5や、行動範囲が類似している他のユーザ5や、同じ場所によく訪れる他のユーザ5等)を優先的に抽出してもよい。また、推薦モジュール1731は、現実世界での行動履歴の示す現実世界でのユーザ5の居場所に関する関連性が高い他のユーザ5(例えば、現在居る位置が近い他のユーザ5や、行動範囲が類似している他のユーザ5や、同じ場所によく訪れる他のユーザ5等)を優先的に抽出してもよい。
次いで、ステップS103において、推薦モジュール1731は、ユーザ5Aに推薦する他のユーザ5Cに関する推薦情報を、推薦情報提示モジュール1721Aに送信する。換言すると、推薦モジュール1731は、ユーザ5Aに対して他のユーザ5Cを推薦する推薦表示30を表示するための推薦情報を出力する。
次いで、ステップS104において、推薦情報提示モジュール1721Aは、推薦モジュール1731から送信された推薦情報に基づいて、ユーザ5Aに他のユーザ5Cを推薦する推薦表示30をモニタ130Aに表示させる。
次に、メタバース内での行動履歴に基づいてメタバース内のコンテンツを推薦する処理の一例について、図20を参照しながら説明する。
ステップS151において、属性設定モジュール1732は、仮想空間内履歴記憶部1751に記憶されたユーザ5Aのメタバース内での行動履歴に基づいて、ユーザ5Aの仮想空間内属性を決定する。
次いで、ステップS152において、推薦モジュール1731は、ユーザ5Aの仮想空間内属性に基づいて、ユーザ5Aに推薦するメタバース内のコンテンツを決定する。具体的には、推薦モジュール1731は、メタバース内の複数のコンテンツの中から、ユーザ5Aの仮想空間内属性に対応する推薦対象属性を有するコンテンツを抽出し、ユーザ5Aに推薦するコンテンツとして決定する。なお、推薦モジュール1731は、メタバース内での行動履歴の示すメタバース内のユーザ5Aの居場所との関連性が高いコンテンツ(例えば、現在居る位置に近いコンテンツや、ユーザ5Aの行動範囲内に存在するコンテンツ等)を優先的に抽出してもよい。また、推薦モジュール1731は、現実世界での行動履歴の示す現実世界でのユーザ5Aの居場所との関連性が高いコンテンツ(例えば、現在居る位置に近い現実世界の場所に対応するコンテンツや、ユーザ5Aの行動範囲内に存在する現実世界の場所に対応するコンテンツ等)を優先的に抽出してもよい。
次いで、ステップS153において、推薦モジュール1731は、ユーザ5Aに推薦するコンテンツに関する推薦情報を、推薦情報提示モジュール1721Aに送信する。換言すると、推薦モジュール1731は、ユーザ5Aに対して所定のコンテンツを推薦する推薦表示30を表示するための推薦情報を出力する。
次いで、ステップS154において、推薦情報提示モジュール1721Aは、推薦モジュール1731から送信された推薦情報に基づいて、ユーザ5Aに所定のコンテンツを推薦する推薦表示30をモニタ130Aに表示させる。
[現実世界での行動履歴に基づくメタバース内の事物に関する推薦に係る処理]
現実世界での行動履歴に基づいてメタバース内の事物に関する推薦を行う処理の一例について、図21を参照しながら説明する。なお、ここでは、ユーザ5Aに対して推薦が行われる場合を例に説明する。
ステップS201において、行動履歴取得モジュール1733は、ユーザ5Aの現実世界での行動に関する情報に基づいてユーザ5Aの現実世界での行動履歴を取得する。ここで、ユーザ5Aの現実世界での行動に関する情報とは、例えば、ユーザデバイス700により取得される生体情報または生体情報を分析して得られる分析結果情報であってもよい。また、ユーザ5Aの現実世界での行動に関する情報とは、例えば、ユーザ5のSNSでのアクションに関する情報であってもよい。また、ユーザ5Aの現実世界での行動に関する情報とは、例えば、ユーザ5Aの現実世界における位置を示す位置情報であってもよい。これらのユーザ5Aの現実世界での行動に関する情報は、例えば、ユーザデバイス700で取得され、コントロールモジュール1610に送られる。なお、ユーザ5のSNSでのアクションに関する情報は、SNSを提供するサーバ等からコントロールモジュール1610に送られてもよい。なお、SNSでのアクションとは、SNSで投稿を行うことや、他者が行った投稿に対してリアクション(所謂いいね等)を行うことを含む。
次いで、ステップS202において、属性設定モジュール1732は、ユーザ5Aの現実世界での行動履歴に基づいて、ユーザ5Aの現実世界内属性を決定する。
次いで、ステップS203において、推薦モジュール1731は、ユーザ5Aの現実世界内属性に基づいて、ユーザ5Aに推薦するメタバース内の事物を決定する。具体的には、推薦モジュール1731は、メタバース内の複数のコンテンツの中から、ユーザ5Aの現実世界内属性に対応する推薦対象属性を有するコンテンツを抽出し、ユーザ5Aに推薦するコンテンツとして決定する。なお、推薦モジュール1731は、現実世界での行動履歴の示す現実世界のユーザ5Aの居場所との関連性が高いコンテンツ(例えば、現在居る位置に近い現実世界の場所に対応するコンテンツや、ユーザ5Aの行動範囲内に存在する現実世界の場所に対応するコンテンツ等)を優先的に抽出してもよい。また、推薦モジュール1731は、メタバース内での行動履歴の示すメタバース内のユーザ5Aの居場所との関連性が高いコンテンツ(例えば、現在居る位置に近いコンテンツや、ユーザ5Aの行動範囲内に存在するコンテンツ等)を優先的に抽出してもよい。
次いで、ステップS204において、推薦モジュール1731は、ユーザ5Aに推薦する事物(例えば、コンテンツ)に関する推薦情報を、推薦情報提示モジュール1721Aに送信する。換言すると、推薦モジュール1731は、ユーザ5Aに対してメタバース内の所定の事物を推薦する推薦表示30を表示するための推薦情報を出力する。
次いで、ステップS205において、推薦情報提示モジュール1721Aは、推薦モジュール1731から送信された推薦情報に基づいて、ユーザ5Aに所定の事物(例えば、所定のコンテンツ)を推薦する推薦表示30をモニタ130Aに表示させる。
[メタバース内での行動履歴に基づく現実世界の事物に関する推薦に係る処理]
メタバース内での行動履歴に基づいて現実世界の事物に関する推薦を行う処理の一例について、図22を参照しながら説明する。なお、ここでは、ユーザ5Aに対して推薦が行われる場合を例に説明する。
ステップS301において、推薦モジュール1731は、ユーザ5Aのアクセスしたメタバース内のコンテンツに対応する現実世界の事物を特定する。そして、推薦モジュール1731は、特定した事物をユーザ5Aに推薦する事物として決定する。具体的には、推薦モジュール1731は、ユーザ5Aの行動履歴に基づいて、ユーザ5Aがアクセスしたコンテンツを特定し、メモリモジュール1630に記憶された現実世界の事物とメタバース内のコンテンツとの対応関係を示す情報に基づいて、ユーザ5Aがアクセスしたコンテンツに対応する現実世界の事物を特定する。ここでは、一例として、ユーザ5Aが現実世界の特定施設をモチーフとした仮想施設にアクセスしたことに基づいて、現実世界の特定施設がユーザ5Aに推薦する事物として決定されたものとする。なお、推薦モジュール1731は、例えば、ユーザ5Aがメタバース内で当該仮想施設にアクセスしたタイミングで、特定施設を推薦する事物として決定するなどしてもよい。また、推薦モジュール1731は、例えば、ユーザ5Aがアクセスしたことのある複数のコンテンツ(具体的には、対応する現実世界の事物が設定された複数のコンテンツ)のうち、ユーザ5Aに対して推薦表示30を表示するタイミングにおいて、ユーザ5Aの利用回数の多い(例えば、総利用回数が所定の閾値以上または所定期間内の利用回数が所定の閾値以上(すなわち利用頻度が高い))コンテンツに対応する現実世界の事物を推薦する事物として決定するなどしてもよい。
次いで、ステップS302において、推薦モジュール1731は、ユーザ5Aに推薦する現実世界の特定施設に関する推薦情報を、推薦情報提示モジュール1721Aに送信する。換言すると、推薦モジュール1731は、ユーザ5Aに対して現実世界の特定施設を推薦する推薦表示30を表示するための推薦情報を出力する。なお、推薦モジュール1731は、ユーザ5Aに推薦する現実世界の事物に関する推薦情報を、ユーザ5Aのユーザデバイス700に送信してもよい。
次いで、ステップS303において、推薦情報提示モジュール1721Aは、推薦モジュール1731から送信された推薦情報に基づいて、ユーザ5Aに現実世界の特定施設を推薦する推薦表示30をモニタ130Aに表示させる。
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変形して実施できる。本発明はその発明の範囲内において、各構成要素の自由な組み合わせ、任意の構成要素の変形、または任意の構成要素の省略等が可能である。また、本明細書において説明した処理の流れはあくまで一例であり、各処理の順序や構成は異なるものであってもよい。
[付記]
以上の実施形態で説明した事項は、以下の付記のようにも記載され得る。
(付記1)
コンピュータを、
ユーザに対して、メタバース内での前記ユーザの行動履歴に基づいて、現実世界の所定の事物に関する推薦を行う推薦手段(例えば、推薦モジュール1731)として機能させる
プログラム。
このような構成によれば、メタバース内でのユーザの行動に表れるユーザの特徴に応じて各ユーザに合う現実世界の事物を推薦することが可能となる。したがって、ユーザは、メタバース内での活動を現実世界に活かし、現実世界での活動の幅を広げることができる。したがって、サービスの興趣性を向上させることができる。
(付記2)
前記メタバース内には、現実世界の事物に対応付けられた複数のコンテンツが存在し、
前記推薦手段は、前記メタバース内の複数のコンテンツのうちの特定のコンテンツを利用した前記ユーザに対して、前記特定のコンテンツに対応する現実世界の事物に関する推薦を行う
付記1に記載のプログラム。
このような構成によれば、メタバース内でユーザが興味を持ったコンテンツに対応する現実世界の事物を当該ユーザに紹介することができる。したがって、サービスの興趣性を向上させることができる。
(付記3)
前記メタバース内には、現実世界の事物に対応付けられた複数のコンテンツが存在し、
前記推薦手段は、前記ユーザに対して、前記ユーザと交流のある他のユーザと特定の関連性のあるコンテンツに対応する現実世界の事物に関する推薦を行う
付記1に記載のプログラム。
ユーザと交流のある他のユーザと特定の関連性のあるコンテンツおよび当該コンテンツに対応する現実世界の事物は、当該ユーザも興味を抱く可能性が高い。このような構成によれば、ユーザが興味を抱く可能性の高い現実世界の事物をユーザに推薦することができる。したがって、ユーザの現実世界での活動の幅を広げることや、他のユーザとの交流を深めるきっかけをつくること等が可能となる。したがって、サービスの興趣性を向上させることができる。
(付記4)
前記推薦手段は、前記ユーザに対して現実世界の事物を推薦をする表示を、前記メタバース内に表示するための情報を出力する
付記1~3のいずれか1つに記載のプログラム。
このような構成によれば、現実世界の事物の推薦をメタバース内で行うことができる。したがって、メタバースと現実世界との繋がりを強め、メタバースおよび現実世界の面白みを深めることができる。したがって、サービスの興趣性を向上させることができる。
(付記5)
前記推薦手段は、前記ユーザに対して現実世界の事物を推薦する表示を、前記メタバース内に、推薦する事物に対応付けられたコンテンツとともに表示するための情報を出力する
付記2または3に記載のプログラム。
このような構成によれば、メタバース内のコンテンツと推薦する現実世界の事物との対応関係がわかりやすい形でユーザに対する推薦を行うことができる。したがって、サービスの興趣性を向上させることができる。
(付記6)
前記推薦手段は、前記ユーザに対して現実世界の事物を推薦する表示を、推薦する事物に対応する前記メタバース内のコンテンツに前記ユーザがアクセスしたタイミングで表示するための情報を出力する
付記2または3に記載のプログラム。
このような構成によれば、ユーザがメタバース内で特定のコンテンツにアクセスしたタイミングで、当該特定のコンテンツに対応する現実世界の事物をユーザに紹介することができる。したがって、メタバース内のコンテンツと推薦する現実世界の事物との対応関係がわかりやすい形でユーザに対する推薦を行うことや、ユーザが特定のコンテンツに興味を抱いたタイミングで当該特定のコンテンツに対応する現実世界の事物を推薦すること等が可能となる。したがって、サービスの興趣性を向上させることができる。
(付記7)
前記推薦手段は、前記ユーザに対して現実世界の事物を推薦する表示を、前記ユーザが前記メタバースから出る際に表示するための情報を出力する
付記2または3に記載のプログラム。
このような構成によれば、ユーザがメタバースからログアウトするタイミングで、現実世界の事物をユーザに推薦することができる。したがって、ユーザが当該推薦に基づく現実世界での行動を起こしやすくなり、サービスの興趣性を向上させることができる。
(付記8)
前記推薦手段は、前記推薦に係る情報を前記ユーザの使用する外部端末(例えば、ユーザデバイス700)に対して送信する
付記1~3のいずれか1つに記載のプログラム。
このような構成によれば、ユーザは、例えば、スマートフォンやウェアラブルデバイス等において、推薦された現実世界の事物についての情報を確認することが可能となる。したがって、推薦された事項についての現実世界での行動をユーザが起こしやすくなる。したがって、サービスの興趣性を向上させることができる。
(付記9)
ユーザに対して、メタバース内での前記ユーザの行動履歴に基づいて、現実世界の所定の事物に関する推薦を行う推薦手段(例えば、推薦モジュール1731)を備える
情報処理システム。
このような構成によれば、付記1に記載のプログラムと同様の作用効果を奏することができる。