〔実施形態1〕
以下、この技術的思想の実施の形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。本開示において示される1以上の実施形態において、各実施形態が含む要素を互いに組み合わせることができ、かつ、当該組み合わせられた結果物も本開示が示す実施形態の一部をなすものとする。
[HMDシステムの構成]
図1を参照して、HMD(Head-Mounted Device)システム100の構成について説明する。図1は、本実施の形態に従う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としては、例えば、スマートデバイス、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)その他の有線通信インターフェイス、あるいは、WiFi(Wireless Fidelity)、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その他の有線通信インターフェイス、あるいは、WiFi、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)などを備える。
コントロールモジュール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を機能させるためのプログラム等を含む。
メモリモジュール530に格納されているデータおよびプログラムは、HMD120のユーザ5によって入力される。あるいは、プロセッサ210が、当該コンテンツを提供する事業者が運営するコンピュータ(例えば、サーバ600)からプログラムあるいはデータをダウンロードして、ダウンロードされたプログラムあるいはデータをメモリモジュール530に格納する。
通信制御モジュール540は、ネットワーク2を介して、サーバ600その他の情報通信装置と通信し得る。
ある局面において、コントロールモジュール510及びレンダリングモジュール520は、例えば、ユニティテクノロジーズ社によって提供されるUnity(登録商標)を用いて実現され得る。別の局面において、コントロールモジュール510及びレンダリングモジュール520は、各処理を実現する回路素子の組み合わせとしても実現され得る。
コンピュータ200における処理は、ハードウェアと、プロセッサ210により実行されるソフトウェアとによって実現される。このようなソフトウェアは、ハードディスクその他のメモリモジュール530に予め格納されている場合がある。ソフトウェアは、CD-ROMその他のコンピュータ読み取り可能な不揮発性のデータ記録媒体に格納されて、プログラム製品として流通している場合もある。あるいは、当該ソフトウェアは、インターネットその他のネットワークに接続されている情報提供事業者によってダウンロード可能なプログラム製品として提供される場合もある。このようなソフトウェアは、光ディスク駆動装置その他のデータ読取装置によってデータ記録媒体から読み取られて、あるいは、通信制御モジュール540を介してサーバ600その他のコンピュータからダウンロードされた後、記憶モジュールに一旦格納される。そのソフトウェアは、プロセッサ210によって記憶モジュールから読み出され、実行可能なプログラムの形式で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は、モーションセンサ420から出力される信号に基づいて、ユーザ5の操作を検出し、その検出された操作を表す検出データをコンピュータ200に出力する。別の局面において、ユーザ5によるコントローラ300の操作は、ユーザ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に反映される。これにより、ユーザ5Aは、ユーザ5Bの動作を、アバターオブジェクト6Bを通じて認識できる。
図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の手の動きを示す情報などを含む。フェイストラッキングデータは、ユーザ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を備えている。
仮想オブジェクト生成モジュール1421は、各種の仮想オブジェクトを仮想空間11に生成する。ある局面において、仮想オブジェクトは、例えば、ゲームのストーリーの進行に従って配置される森、山その他を含む風景、動物等を含み得る。ある局面において、仮想オブジェクトは、アバターオブジェクト、操作オブジェクト、およびステージオブジェクト、UI(User Interface)オブジェクトを含み得る。
仮想カメラ制御モジュール1422は、仮想空間11における仮想カメラ14の挙動を制御する。仮想カメラ制御モジュール1422は、例えば、仮想空間11における仮想カメラ14の配置位置と、仮想カメラ14の向き(傾き)とを制御する。
操作オブジェクト制御モジュール1423は、仮想空間11においてユーザ5の操作を受け付けるための操作オブジェクトを制御する。ユーザ5は、操作オブジェクトを操作することによって、例えば、仮想空間11に配置される仮想オブジェクトを操作する。ある局面において、操作オブジェクトは、例えば、HMD120を装着したユーザ5の手に相当する手オブジェクト(仮想手)等を含み得る。ある局面において、操作オブジェクトは、後述するアバターオブジェクトの手の部分に相当し得る。
アバターオブジェクト制御モジュール1424は、HMDセンサ410が検出するHMD120の動きをアバターオブジェクトに反映する。例えば、アバターオブジェクト制御モジュール1424は、HMD120が傾いたことを検知して、アバターオブジェクトを傾けて配置するためのデータを生成する。ある局面において、アバターオブジェクト制御モジュール1424は、コントローラ300の動きをアバターオブジェクトに反映する。この場合、コントローラ300は、コントローラ300の動きを検知するためのモーションセンサ、加速度センサ、または複数の発光素子(例えば、赤外線LED)などを備える。アバターオブジェクト制御モジュール1424は、動き検出モジュール1425が検出した顔器官の動作を、仮想空間11に配置されるアバターオブジェクトの顔に反映させる。つまり、アバターオブジェクト制御モジュール1424は、ユーザ5の顔の動作をアバターオブジェクトに反映する。
動き検出モジュール1425は、ユーザ5の動きを検出する。動き検出モジュール1425は、例えば、コントローラ300の出力に応じて、ユーザ5の手の動きを検出する。動き検出モジュール1425は、例えば、ユーザ5の身体に装着されるモーションセンサの出力に応じて、ユーザ5の身体の動きを検出する。動き検出モジュール1425は、ユーザ5の顔器官の動作を検出することもできる。
衝突検出モジュール1426は、仮想空間11に配置される仮想オブジェクトのそれぞれが、他の仮想オブジェクトと衝突した場合に、当該衝突を検出する。衝突検出モジュール1426は、例えば、ある仮想オブジェクトと、別の仮想オブジェクトとが触れたタイミングを検出することができる。衝突検出モジュール1426は、ある仮想オブジェクトと他の仮想オブジェクトとが触れている状態から離れたタイミングを検出することができる。衝突検出モジュール1426は、ある仮想オブジェクトと他の仮想オブジェクトとが触れている状態であることを検出することもできる。衝突検出モジュール1426は、例えば、操作オブジェクトと、他の仮想オブジェクトとが触れたときに、これら操作オブジェクトと他のオブジェクトとが触れたことを検出する。衝突検出モジュール1426は、これらの検出結果に基づいて、予め定められた処理を実行する。
仮想オブジェクト制御モジュール1427は、仮想空間11において、アバターオブジェクトを除く仮想オブジェクトの挙動を制御する。一例として、仮想オブジェクト制御モジュール1427は、仮想オブジェクトを変形させる。別の例として、仮想オブジェクト制御モジュール1427は、仮想オブジェクトの配置位置を変更する。別の例として、仮想オブジェクト制御モジュール1427は、仮想オブジェクトを移動させる。
課金処理モジュール1428は、課金に関する処理を実行する。
決済処理モジュール1429は、決済に関する処理を実行する。
[視聴者の仮想空間]
図15は、ある実施の形態に従う仮想空間11Aおよび視界画像1517Aを示す図である。図15(A)では、ユーザ5A(第1ユーザ)に仮想体験を提供するための仮想空間11Aに、アバターオブジェクト6A~6D、仮想カメラ14A、およびステージオブジェクト1532が少なくとも配置される。ユーザ5Aは、頭部にHMD120Aを装着している。ユーザ5Aは、ユーザ5Aの身体の右側の一部を構成する右手(第1部位)で右コントローラ300RAを把持し、ユーザ5Aの身体の左側の一部を構成する左手(第2部位)で左コントローラ300LAを把持している。アバターオブジェクト6A(第1アバター)は、仮想右手1531RAおよび仮想左手1531LAを含む。仮想右手1531RAは操作オブジェクトの一種であり、ユーザ5Aの右手の動きに応じて仮想空間11Aにおいて動くことができる。仮想左手1531LAは操作オブジェクトの一種であり、ユーザ5Aの左手の動きに応じて仮想空間11Aにおいて動くことができる。
図15(A)に示す仮想空間11Aは、コンピュータ200Aにおいてライブコンテンツが再生されることによって、構築される。仮想空間11Aにおいて、アバターオブジェクト6Bは、ライブの演者としてパフォーマンスを実行し、アバターオブジェクト6Aを含む他のアバターオブジェクトは、ライブの視聴者としてパフォーマンスを視聴する。仮想空間11Aにおいて、アバターオブジェクト6A~6Dは、それぞれ、ユーザ5A~5Dに個別に関連付けられている。
仮想空間11Aにおいて、アバターオブジェクト6B(第2アバター)は、ステージオブジェクト1532上に配置される。ステージオブジェクト1532は、現実のライブ会場におけるステージを模した外観を有している。アバターオブジェクト6A、6C、および6Dは、いずれも、ステージオブジェクト1532の手前に配置される。仮想空間11Aにおいて、アバターオブジェクト6Bは、ユーザ5B(第2ユーザ)の動きに応じて動くことによって、ライブのパフォーマンスを実行する。仮想空間11Aにおいて、アバターオブジェクト6Aは、アバターオブジェクト6Bによるパフォーマンスを視聴する。このとき、ユーザ5Cに提供される仮想空間11Cにおいて、アバターオブジェクト6Cは、アバターオブジェクト6Bによって実行されたパフォーマンスを視聴する。同様に、ユーザ5Dに提供される仮想空間11Dにおいて、アバターオブジェクト6Dは、アバターオブジェクト6Bによって実行されたパフォーマンスを視聴する。したがって、ユーザ5Bが演者であり、かつ、ユーザ5A、5C、および5Dが視聴者であるとも言える。
図15(A)において、仮想カメラ14Aは、アバターオブジェクト6Aの頭部に配置される。仮想カメラ14Aは、仮想カメラ14Aの位置および向きに応じた視界領域15Aを規定する。仮想カメラ14Aは、視界領域15Aに対応する視界画像1517Aを生成して、図15(B)に示すようにHMD120Aに表示させる。ユーザ5Aは、視界画像1517Aを視認することによって、アバターオブジェクト6Aの視点で仮想空間の一部を視認する。これにより、ユーザ5Aは、あたかもユーザ5A自身がアバターオブジェクト6Aであるかのような仮想体験を、得ることができる。視界画像1517Aには、パフォーマンスを実行するアバターオブジェクト6Bが含まれる。したがって、ユーザ5Aは、アバターオブジェクト6Bによるパフォーマンスを、アバターオブジェクト6Aの視点で視聴することができる。
仮想空間11Aには、異なる複数のアバターオブジェクト6Bが配置されることもできる。ある局面では、複数のアバターオブジェクト6Bにそれぞれ異なるユーザ5が関連付けられる。別の局面では、複数のアバターオブジェクト6Bに同一のユーザ5Bが関連付けられる。
[演者の仮想空間]
図16は、ある実施の形態に従う仮想空間11Bおよび視界画像1617Bを示す図である。図16(A)では、ユーザ5Bに仮想体験を提供するための仮想空間11Bに、アバターオブジェクト6A~6D、仮想カメラ14B、およびステージオブジェクト1532が少なくとも配置される。ユーザ5Bは、頭部にHMD120Bを装着している。ユーザ5Bは、ユーザ5Bの身体の右側の一部を構成する右手(第1部位)で右コントローラ300RBを把持し、ユーザ5Bの身体の左側の一部を構成する左手(第2部位)で左コントローラ300LBを把持している。
HMD120Bは、モーションセンサとして機能するセンサ190を備える。右コントローラ300RBおよび左コントローラ300LBは、モーションセンサ420を備える。ユーザ5Bは、さらに、モーションセンサ1641~1643を装着している。モーションセンサ1641は、ベルト1644によってユーザ5Bの腰部に装着されている。モーションセンサ1642は、ユーザ5Bの右足の甲に装着されている。モーションセンサ1643は、ユーザ5Bのユーザ5Bの左足の甲に装着されている。モーションセンサ1641~1643は、有線または無線によってコンピュータ200Bに接続されている。
ある局面において、ユーザ5Bに装着されるモーションセンサは、ベースステーション(図示しない)から照射される信号(例えば赤外線レーザ)の到達時間と角度とを検出する。コンピュータ200Bのプロセッサ210B(以下、単にプロセッサ210B)は、モーションセンサの検出結果に基づいて、ベースステーションに対するモーションセンサの位置を検出する。プロセッサ210Bは、さらに、ベースステーションに対するモーションセンサの位置を、所定点(例えば頭部に装着されたセンサ190の位置)を基準として規格化してもよい。
アバターオブジェクト6Bは、仮想右手1531RBおよび仮想左手1531LBを含む。仮想右手1531RBは操作オブジェクトの一種であり、ユーザ5Bの右手の動きに応じて仮想空間11Bにおいて動くことができる。仮想左手1531LAは操作オブジェクトの一種であり、ユーザ5Bの左手の動きに応じて仮想空間11Bにおいて動くことができる。
図16(A)に示す仮想空間11Bは、コンピュータ200Bにおいてライブコンテンツが再生されることによって、構築される。仮想空間11Aおよび11Bは、サーバ600の制御に応じて互いに同期している。ユーザ5Bは、アバターオブジェクト6Bにパフォーマンスを実行させるために、自身の身体を動かす。コンピュータ200Bは、ユーザ5Bに装着される各種のモーションセンサの出力に基づいて、ユーザ5Bの動きを検出する。仮想空間11Bにおいて、アバターオブジェクト6Bは、特定されたユーザ5Bの動きに応じて、現実空間におけるユーザ5Bの動きが反映されたパフォーマンスを実行する。仮想空間11Bにおいて、アバターオブジェクト6A、6C、および6Dは、アバターオブジェクト6Bによるパフォーマンスを視聴する。仮想空間11Bにおいてアバターオブジェクト6Bがユーザ5Bに動きに応じたパフォーマンスを実行すると、それに同期して、仮想空間11A、11C、および11Dにおいてもアバターオブジェクト6Bが同じパフォーマンスを実行する。このように、ユーザ5Bは、アバターオブジェクト6Bによるライブを、ユーザ5A、5C、および5Dにそれぞれ配信する配信者としての役割を有する。
図16(A)において、仮想カメラ14Bは、アバターオブジェクト6Bの頭部に配置される。仮想カメラ14Bは、仮想カメラ14Bの位置および向きに応じた視界領域15Bを規定する。仮想カメラ14Bは、視界領域15Bに対応する視界画像1617Bを生成して、図16(B)に示すようにHMD120Bに表示させる。ユーザ5Bは、視界画像1617Bを視認することによって、アバターオブジェクト6Bの視点で仮想空間の一部を視認する。これにより、ユーザ5Bは、あたかもユーザ5B自身がアバターオブジェクト6Bであるかのような仮想体験を、得ることができる。視界画像1617Bには、パフォーマンスを視聴するアバターオブジェクト6A、6C、および6Dが含まれる。したがって、ユーザ5Bは、アバターオブジェクト6Bによるパフォーマンスを視聴するアバターオブジェクト6A、6C、および6Dの様子を、アバターオブジェクト6Bの視点で把握することができる。
[ライブ配信フロー]
図17は、HMDシステム100において実行される処理の一例を示すシーケンス図である。以下では、仮想空間11Bにおいて行われるアバターオブジェクト6Bのライブを、コンピュータ200Bからコンピュータ200Aに対して配信するための一連の処理を説明する。コンピュータ200Cおよび200Dに対しても、同様の一連の処理に基づいてアバターオブジェクト6Bのライブが配信される。
ステップS1701において、プロセッサ210Bは、ユーザ5Bに装着されたモーションセンサから、ユーザ5Bの頭部、腰部、両手、および両足の位置を検出する。以下、各モーションセンサによって検出されるユーザ5Bの部位の位置を「位置情報」とも言う。ステップS1702において、プロセッサ210Bは、ユーザ5Bの現在の位置情報と、予め取得されたユーザ5Bの寸法データとに基づいて、ユーザ5Bの関節の回転方向を算出する。寸法データは、ユーザ5Bの身体の寸法を表すデータである。寸法データおよび回転方向については後述する。現在の位置情報を検出することおよび回転方向を算出すること、ユーザ5Bの動きを検出することと同義である。
ステップS1703において、プロセッサ210Bは、現在の位置情報および回転方向に基づいて、仮想空間11Bに配置されるアバターオブジェクト6Bを動かす。プロセッサ210Bは、例えば、右肩の回転方向に基づいて、アバターオブジェクト6Bの右上腕部を動かす。プロセッサ210Bはさらに、現在の位置情報(例えば現在の腰部の位置情報)に基づいて、アバターオブジェクト6Bの仮想空間11Bにおける位置を動かす。これにより、プロセッサ210Bは、現実空間のユーザ5Bの動きが仮想空間のアバターオブジェクト6Bに反映させる。言い換えれば、プロセッサ210Bは、アバターオブジェクト6Bに、ユーザ5Bの動きに応じたパフォーマンスを実行させる。
ユーザ5Bの動きをアバターオブジェクト6Bに反映させるための処理は、上述した位置情報および回転方向に応じた処理に限定されない。プロセッサ210Bは、例えば、回転方向を算出することなく、ユーザ5Bの動きに応じてアバターオブジェクト6Bを動かすこともできる。プロセッサ210Bは、例えば、ユーザ5Bの身体を構成する各部位の位置に対応するように、ユーザ5Bの各部位に対応するアバターオブジェクト6Bの各部位オブジェクトの位置を制御するようにしてもよい。
ステップS1704において、プロセッサ210Bは、パフォーマンスを実行した際のアバターオブジェクト6Bの動きを表す動き情報を生成し、この動き情報を含むアバターオブジェクト6Bのアバター情報をサーバ600に送信する。
ステップS1710において、コンピュータ200Aのプロセッサ210A(以下、単にプロセッサ210A)は、アバターオブジェクト6Aのアバター情報をサーバに送信する。ステップS1720において、サーバ600は、仮想空間11Aおよび11Bを同期するための同期処理を実行する。詳細には、サーバ600は、コンピュータ200Bから受信したアバターオブジェクト6Bのアバター情報を、コンピュータ200Aに送信する。サーバ600は、さらに、コンピュータ200Aから受信したアバターオブジェクト6Aのアバター情報を、コンピュータ200Bに送信する。
ステップS1705において、プロセッサ210Bは、サーバ600から送信されたアバターオブジェクト6Aのアバター情報を受信する。ステップS1706において、プロセッサ210Bは、受信したアバター情報に基づいて、仮想空間11Bにおいてアバターオブジェクトを制御する。これにより、仮想空間11Aにおけるアバターオブジェクト6Aの挙動が、仮想空間11Bにおけるアバターオブジェクト6Aに反映される。言い換えれば、アバターオブジェクト6Aの挙動が、仮想空間11Aおよび11Bにおいて同期される。例えば、仮想空間11Aにおいてアバターオブジェクト6Aが移動した場合、仮想空間11Bにおいてもアバターオブジェクト6Aは同様に移動する。
ステップS1711において、プロセッサ210Aは、サーバ600から送信されたアバターオブジェクト6Bのアバター情報を受信する。ステップS1712において、プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、アバターオブジェクト6Bを動かす。これにより、プロセッサ210Bは、現実空間のユーザ5Bの動きを、仮想空間11Aに配置されるアバターオブジェクト6Bに反映させる。言い換えれば、プロセッサ210Aは、仮想空間11Aにおいて、アバターオブジェクト6Bにユーザ5Bの動きに応じたパフォーマンスを実行させる。これにより、仮想空間11Bにおけるアバターオブジェクト6Bの挙動が、仮想空間11Aにおけるアバターオブジェクト6Bに反映される。言い換えれば、アバターオブジェクト6Bの挙動が、仮想空間11Aおよび11Bにおいて同期される。例えば、仮想空間11Bにおいてアバターオブジェクト6Bが第1パフォーマンスを実行した場合、仮想空間11Aにおいてもアバターオブジェクト6Bは同様に第1パフォーマンスを実行する。このようにして、仮想空間11Bにおけるアバターオブジェクト6Bのライブが、仮想空間11Aに配信される。
図示しないが、プロセッサ210Bは、ユーザ5Bが発した音声を、マイク170Bを用いて録音する。プロセッサ210Bは、ユーザ5Bの音声を表す音声データを生成し、サーバ600に送信する。サーバ600は、受信したユーザ5Bの音声データを、同期処理によってコンピュータ200Aに送信する。プロセッサ210Aは、受信したユーザ5Bの音声データが表す音声を、スピーカ180Aに出力する。これらの一連の処理の結果、ユーザ5Aは、ライブ中にユーザ5Bが発した音声を、リアルタイムに聴取することができる。
[寸法データの取得]
図18は、寸法データの取得方法を説明するための図である。図18(A)は、ユーザ5Bが、正面を向き、両手を水平に広げ、起立している状態を表す。以下、図18(A)に示される状態を第1姿勢とも言う。図18(B)は、ユーザ5Bが、正面を向き、両手を太もも側面に下ろし、起立している状態を表す。以下、図18(B)に示される状態を第2姿勢とも言う。
ある局面において、プロセッサ210Bは、ユーザ5Bに対し第1姿勢および第2姿勢をとるように促す。一例として、プロセッサ210Bは、第1姿勢および第2姿勢のキャラクタをモニタ130Bに表示し、同様の姿勢をとる旨のメッセージを表示する。他の例として、プロセッサ210Bは、第1姿勢および第2姿勢をとる旨の音声をスピーカ180Bから出力してもよい。
プロセッサ210Bは、2つの姿勢(第1姿勢と第2姿勢)のそれぞれにおいて、ユーザ5Bに装着されたモーションセンサの出力に基づいてユーザ5Bの頭部、腰部、両手、両足の位置情報を取得する。これら位置情報は、図19に示されるように実座標系(x、y、z)における位置として取得され得る。
プロセッサ210Bは、2つの姿勢に対応する位置情報からユーザ5Bの寸法データを算出する。ある実施形態において、プロセッサ210Bは、図20に示されるように、ユーザ5Bの身長、肩幅、腕の長さ、足の長さ、頭部から肩までの高さを寸法データとして算出する。プロセッサ210Bは、第2姿勢における両手の間隔を肩幅として算出し得る。プロセッサ210Bは、第1姿勢における両手の間隔から肩幅を差し引いた値の半分を腕の長さとして算出し得る。プロセッサ210Bは、足の高さから頭部の高さまでの距離を身長として算出し得る。プロセッサ210Bは、足の高さから腰部の高さまでの距離を足の長さとして算出し得る。プロセッサ210Bは、第1姿勢における手の高さから頭部までの高さを、頭部から肩までの高さとして算出し得る。
図21は、寸法データを取得するための処理を表すフローチャートである。ステップS2110において、プロセッサ210Bは、仮想空間11Bに仮想カメラ14Bを配置する。プロセッサ210Bはさらに、仮想カメラ14Bの撮影範囲に対応する視界画像17Bをモニタ130Bに出力する。
ステップS2120において、プロセッサ210Bは、ユーザ5Bに第1姿勢になるように指示する。例えば、プロセッサ210Bは、当該指示が記されたオブジェクトを仮想空間11Bに配置することでステップS2120の処理を実現する。ステップS2130において、プロセッサ210Bは、第1姿勢に対応する位置情報を取得する。
ステップS2140において、プロセッサ210Bは、ユーザ5Bに第2姿勢になるように指示する。ステップS2150において、プロセッサ210Bは、第2姿勢に対応する位置情報を取得する。
ステップS2160において、プロセッサ210Bは、第1姿勢に対応する位置情報と第2姿勢に対応する位置情報とから、ユーザ5Bの寸法データを算出する。プロセッサ210Bは、寸法データをストレージ230Bに格納する。
以上のように、ユーザ5Bは、2つの姿勢をとるだけで、自身の寸法をコンピュータ200Bに容易に入力できる。なお、他の局面において、ユーザ5Bは、自身の寸法をキーボード等の入力デバイスを用いてコンピュータ200Bに入力してもよい。
[関節の回転方向]
ある実施形態において、プロセッサ210Bは、ユーザ5Bに装着された6つのモーションセンサの出力(位置情報)と、寸法データとに基づいて、ユーザ5Bの関節の回転方向を推定する。一例として、プロセッサ210Bは、頭部の位置情報と、肩幅と、頭部から肩までの高さとに基づいて、肩の位置を推定する。プロセッサ210Bは、肩の位置と手の位置情報とから、肘の位置を推定する。この推定は、逆運動学(Inverse Kinematics)を利用した公知のアプリケーションにより実行され得る。
ある実施形態において、プロセッサ210Bは、6つのモーションセンサから、ユーザ5Bの首(頭部)、腰、両手首、および両足首の関節の傾き(回転方向)を取得する。加えて、プロセッサ210Bは、逆運動学に基づいて、両肩、両肘、両股(足のつけ根)、両膝の関節の回転方向を推定する。図22に示されるように、プロセッサ210Bは、各関節の回転方向をuvw視野座標系で取得または推定する。
なお、回転方向が位置情報と寸法データとに基づいて算出される場合、プロセッサ210Bは、ユーザ5Bが正面を向いていないとき(つまり、頭部と腰部とが異なる方向を向いているとき)の肩の位置等を正確に推定できない。そこで、他の実施形態において、コンピュータ200Bは、モーションセンサによって検出されるユーザ5Bの部位の傾きをさらに考慮して関節の回転方向を推定してもよい。例えば、コンピュータ200Bは、頭部の位置情報と、頭部の傾きと、腰部の傾きと、肩幅と、頭部から肩までの高さとに基づいて、肩の位置を推定する。当該構成によれば、コンピュータ200Bは、関節の回転方向の精度を向上し得る。
[ライブ会場選択処理フロー]
図23は、ある実施の形態に従うHMDセット110Aにおいて実行される処理の一部を表すシーケンスチャートである。図24は、ある実施の形態に従う第1仮想空間2411Aおよび視界画像2417Aを示す図である。本実施形態では、ユーザ5Aが仮想ライブを視聴する場所である仮想会場を選択するための一連の処理が、HMDセット110Aにより実行されるものとして説明する。ただし、当該処理は、他のHMDセット110B,110C,110Dにより実行されてもよいし、当該処理の一部または全部がサーバ600によって実行されてもよい。
ステップS2301において、プロセッサ210Aは、図24(A)に示すような第1仮想空間2411Aを定義する。当該処理は、図11のステップS1110の処理に相当する。具体的には、プロセッサ210Aは、仮想空間データを特定することによって、仮想空間データによって表される第1仮想空間2411Aを定義する。第1仮想空間2411Aは、アバターオブジェクト6Bによるライブが開始される前にアバターオブジェクト6Aが配置される仮想空間である。第1仮想空間2411Aは、ユーザ5Aに、会場を選択させるための仮想空間でもある。
ステップS2302において、プロセッサ210Aは、仮想オブジェクト生成モジュール1421として、仮想カメラ14Aを生成し、第1仮想空間2411Aに配置する。ステップS2303において、プロセッサ210Aは、仮想オブジェクト生成モジュール1421として、仮想右手1531RAおよび仮想左手1531LAを含むアバターオブジェクト6Aを生成し、第1仮想空間2411Aに配置する。ステップS2304において、プロセッサ210Aは、仮想オブジェクト生成モジュール1421として、UIパネル2450およびペンオブジェクト2453を生成し、第1仮想空間2411Aに配置する。
UIパネル2450はUIオブジェクトの一種であり、会場を選択するための処理をプロセッサ210Aに実行させるために、ユーザ5Aによって用いられる。UIパネル2450は、UIパネル2450の前面に配置される選択肢2451および2452を含む。選択肢2451および2452は、その選択肢がユーザ5Aによって選択された場合に選択される会場の名称を説明する情報を含む。選択肢2451は、第1会場を選択するための項目であり、選択肢2452は、第1会場とは異なる第2会場を選択するための項目である。ペンオブジェクト2453は、仮想オブジェクトの一種であり、UIパネル2450の選択肢2451または2452を選択するために、仮想右手1531RAまたは仮想左手1531LAによって把持されかつ使用される。
ステップS2305において、プロセッサ210Aは、仮想カメラ制御モジュール1422として、HMD120Aの動きに応じて第1仮想空間2411Aにおける仮想カメラ14Aの位置および傾きを決定する。より詳細には、プロセッサ210Aは、ユーザ5Aの頭部の姿勢と、第1仮想空間2411Aにおける仮想カメラ14Aの位置とに応じて、第1仮想空間2411Aにおける仮想カメラ14Aからの視界である視界領域15Aを制御する。当該処理は、図11のステップS1140の処理の一部に相当する。仮想カメラ14Aがアバターオブジェクト6Aと同一の位置に配置されるので、仮想カメラ14Aの位置は、アバターオブジェクト6Aの位置と同義である。さらに、仮想カメラ14Aからの視界は、アバターオブジェクト6Aからの視界と同義である。
ステップS2306において、プロセッサ210Aは、視界画像17Aをモニタ130Aに表示する。具体的には、プロセッサ210Aは、HMD120Aの動き(すなわち仮想カメラ14Aの位置および傾き)と、第1仮想空間2411Aを定義する仮想空間データと、に基づいて、視界領域15Aに対応する視界画像17Aを定義する。視界画像17Aを定義することは、視界画像17Aを生成することと同義である。プロセッサ210Aは、さらに、HMD120Aのモニタ130Aに視界画像17Aを出力することによって、視界画像17AをHMD120Aに表示させる。当該処理は、図11のステップS1180およびS1190の処理に相当する。
プロセッサ210Aは、例えば、図24(A)に示す第1仮想空間2411Aに対応する視界画像2417Aを、図24(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像2417Aを視認することによって、UIパネル2450の選択肢2451または選択肢2452を選択する必要があることを認識する。
上述したステップS2305およびS2306の処理(すなわち、HMD120Aの動きに応じた視界画像17Aの更新)は、後述するステップS2307~S2310が実行される間にも、継続して繰り返し実行される。
ステップS2307において、プロセッサ210Aは、動き検出モジュール1425として、右コントローラ300RAの出力に基づいて、ユーザ5Aの右手の動きを検出する。ステップS2308において、プロセッサ210Aは、操作オブジェクト制御モジュール1423として、検出されたユーザ5Aの右手の動きに応じて、第1仮想空間2411Aにおいて仮想右手1531RAを動かす。ある局面において、プロセッサ210Aは、ユーザ5Aの右手の動きに応じて、ペンオブジェクト2453に仮想右手1531RAを近づけるように、第1仮想空間2411Aにおいて仮想右手1531RAを動かす。プロセッサ210Aは、仮想右手1531RAがペンオブジェクト2453に十分に近づいた後、ユーザ5Aの右手の動きに基づいて、仮想右手1531RAでペンオブジェクト2453を選択する(掴む)。ユーザ5Aの右手の動きとしては、例えば、右コントローラ300RAのいずれかのボタンを押下する動きが挙げられる。これにより、仮想右手1531RAでペンオブジェクト2453が把持される。
図25は、ある実施の形態に従う第1仮想空間2411Aおよび視界画像2517Aを示す図である。図25(A)に示すように、プロセッサ210Aは、仮想右手1531RAがペンオブジェクト2453を選択した後、ユーザ5Aの右手の動きに基づいて、ペンオブジェクト2453の先端を選択肢2451に近づけるように、第1仮想空間2411Aにおいて仮想右手1531RAおよびペンオブジェクト2453を動かす。プロセッサ210Aは、衝突検出モジュール1426として、ペンオブジェクト2453の先端と選択肢2451とが第1位置関係になった場合、ペンオブジェクト2453の先端と選択肢2451とが衝突したことを検出する。第1位置関係とは、例えば、ペンオブジェクト2453の先端と選択肢2451との距離が第1距離を下回ることである。あるいは、ペンオブジェクト2453の先端に規定されるコリジョンエリアと、選択肢2451に設定されるコリジョンエリアとが少なくとも部分的に衝突することである。プロセッサ210Aは、ペンオブジェクト2453の先端と選択肢2451とが衝突したことに基づいて、ペンオブジェクト2453によって選択肢2451が選択されたことを検出する。ステップS2309において、プロセッサ210Aは、選択された選択肢2451に対応する第1会場の選択を受け付ける。第1会場は、ユーザ5Aがライブを視聴する環境である第2仮想空間2711Aに対応する仮想会場である。
プロセッサ210Aは、例えば、図25(A)に示す第1仮想空間2411Aに対応する視界画像2517Aを、図25(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像2517Aを視認することによって、UIパネル2450の選択肢2451を選択したこと(すなわち第1会場を選択したこと)を認識する。
ステップS2310において、プロセッサ210Aは、アバターオブジェクト制御モジュール1424として、アバターオブジェクト6Aを第1仮想空間2411Aから退出させる。詳細には、プロセッサ210Aは、第1仮想空間2411Aにおけるアバターオブジェクト6Aの配置を終了する。この後、プロセッサ210Aは、第1仮想空間2411Aの定義を継続する。プロセッサ210Aは、さらに、アバターオブジェクト6Aが配置されなくなった後も、第1仮想空間2411Aには他の仮想オブジェクトを配置したままにする。プロセッサ210Aは、ユーザ5Aに対する第1仮想空間2411Aの提供を中断する。プロセッサ210Aは、さらに、アバターオブジェクト6Bによるパフォーマンスをアバターオブジェクト6Aに視聴させるための一連の処理を実行することによって、第1会場に対応する第2仮想空間2711Aをユーザ5Aに新たに提供する。
会場選択方式は、上述した例に限定されない。プロセッサ210Aは、例えば、会場の内容を視覚化した球体モデルを第1仮想空間2411Aに配置する。プロセッサ210Aは、この球体モデルが仮想右手1531RAまたは仮想左手1531LAによって選択された場合も、選択された球体モデルが示す会場に対応する第2仮想空間2711Aをユーザ5Aに新たに提供することができる。
[ライブ視聴処理フロー]
図26は、ある実施の形態に従うHMDセット110Aにおいて実行される処理の一部を表すシーケンスチャートである。図27は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像2717Aを示す図である。本実施形態では、ライブ視聴を開始するための一連の処理が、HMDセット110Aにより実行されるものとして説明する。ただし、当該処理は、他のHMDセット110B,110C,110Dにより実行されてもよいし、当該処理の一部または全部がサーバ600によって実行されてもよい。
ステップS2601において、プロセッサ210Aは、図27(A)に示すような第2仮想空間2711Aを定義する。当該処理は、図11のステップS1110の処理に相当する。具体的には、プロセッサ210Aは、仮想空間データを特定することによって、仮想空間データによって表される第2仮想空間2711Aを定義する。第2仮想空間2711Aは、第1仮想空間2411Aとは異なる仮想空間であり、アバターオブジェクト6Bのライブをアバターオブジェクト6Aが視聴する仮想空間である。言い換えれば、第2仮想空間2711Aは、アバターオブジェクト6Bによるパフォーマンスが行われる仮想空間である。
ステップS2602において、プロセッサ210Aは、仮想カメラ14Aを生成し、第2仮想空間2711Aに配置する。ステップS2603において、プロセッサ210Aは、ステージオブジェクト1532を生成し、第2仮想空間2711Aに配置する。ステップS2604において、プロセッサ210Aは、アバターオブジェクト6Cおよび6Dの各アバター情報を、サーバ600から受信する。ステップS2605において、プロセッサ210Aは、受信した各アバター情報に基づいて、アバターオブジェクト6Cおよび6Dを第2仮想空間2711Aに配置する。プロセッサ210Aは、さらに、他のアバターオブジェクト6のアバター情報も受信し、第2仮想空間2711Aに配置する。第2仮想空間2711Aには、他のアバターオブジェクト6が多数配置されているが、図27では、説明の便宜のため、その内の1つのみを代表的に図示している。以降、特に必要がない限り、他のアバターオブジェクト6には言及しない。
ステップS2606において、プロセッサ210Aは、アバターオブジェクト制御モジュール1424として、アバターオブジェクト6Aを第2仮想空間2711Aに入場させる。詳細には、プロセッサ210Aは、第1仮想空間2411Aから退出させたアバターオブジェクト6Aを、第2仮想空間2711Aに配置する。このように、アバターオブジェクト6Aを第2仮想空間2711Aに入場させることは、アバターオブジェクト6Aを第2仮想空間2711Aに配置することと同義である。図示しないが、プロセッサ210Aは、任意のタイミングで、アバターオブジェクト6Aのアバター情報を生成し、サーバ600に送信する。
ステップS2607において、プロセッサ210Aは、仮想オブジェクト生成モジュール1421として、タグオブジェクト2733Aを生成し、アバターオブジェクト6Aに関連付ける。詳細には、プロセッサ210Aは、タグオブジェクト2733Aをアバターオブジェクト6Aの仮想左手1531LAに配置する。タグオブジェクト2733Aは、仮想オブジェクトの一種である。タグオブジェクト2733Aは、第2仮想空間2711Aにおいてライブを視聴するユーザ5Aに課金される課金額を表す課金情報を管理するための仮想オブジェクトである。
プロセッサ210Aは、ライブ中にユーザ5Aに課金されることが可能な課金額の上限(以下、上限課金額)を設定する。プロセッサ210Aは、さらに、設定された上限課金額を表す上限課金情報を、タグオブジェクト2733Aに登録する。プロセッサ210Aは、例えば、タグオブジェクト2733Aを仮想左手1531LAに配置した後、ユーザ5Aによる上限課金額の入力を受け付け、入力された上限課金額を設定することができる。プロセッサ210Aは、例えば、ユーザ5BがHMDシステム100にユーザ情報を登録した際、ユーザ情報に含まれるクレジットカード情報などに基づいて、上限課金額を予め設定することもできる。プロセッサ210Aは、例えば、ユーザ5Aが過去に視聴したライブにおけるユーザの過去の課金額に基づいて、上限課金額を算出することもできる。プロセッサ210Aは、設定された上限課金額を表す上限課金情報を、タグオブジェクト2733Aに登録する。
図27(A)では、アバターオブジェクト6Bは第2仮想空間2711Aに配置されていない。言い換えれば、第2仮想空間2711Aにおいて、アバターオブジェクト6Bのライブがまだ開始されていない。ステップS2608において、プロセッサ210Aは、仮想カメラ制御モジュール1422として、HMD120Aの動きに応じて第2仮想空間2711Aにおける仮想カメラ14Aの位置および傾きを決定する。この処理は、ステップS2305における処理と基本的に同一であるため、詳細な説明を繰り返さない。ステップS2609において、プロセッサ210Aは、視界画像17Aをモニタ130Aに表示する。この処理は、ステップS2306における処理と基本的に同一であるため、詳細な説明を繰り返さない。
プロセッサ210Aは、例えば、図27(A)に示す第2仮想空間2711Aに対応する視界画像2717Aを、図27(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像2717Aを視認することによって、アバターオブジェクト6Aが第2仮想空間2711Aに入場したことを認識する。ユーザ5Aは、さらに、ステージオブジェクト1532上にアバターオブジェクト6Bが配置されていないので、アバターオブジェクト6Bのライブがまだ開始されていないことを認識する。
図28は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像2817Aを示す図である。ステップS2610において、プロセッサ210Aは、課金処理モジュール1428として、第2仮想空間2711Aに対応する第1会場の入場料を表す課金情報を、タグオブジェクト2733Aに登録する。第1会場の入場料は、第2仮想空間2711Aにおいて行われるライブを視聴するためにユーザ5Aに課金される課金額である。ここで登録される課金情報は、アバターオブジェクト6Aが第2仮想空間2711Aに入場するという行動に応じた課金情報であるとも言える。プロセッサ210Aは、タグオブジェクト2733Aに登録された課金情報を、タグオブジェクト2733A上で視覚化する。詳細には、プロセッサ210Aは、タグオブジェクト2733Aの表面に、登録された各課金情報が表す課金額の合計(以下、合計課金額)を表示する。図28(A)では、タグオブジェクト2733Aに1つの課金情報が登録されている。この場合、プロセッサ210Aは、登録された課金情報が表す課金額(500円)そのものを、合計課金額としてタグオブジェクト2733Aに表示する。プロセッサ210Aは、さらに、上限課金情報が表す上限課金額(30000円)を、タグオブジェクト2733Aに表示する。
課金情報が登録された後、ユーザ5Aは、腕時計で時間を確認するように、左手を自身の視界内まで移動させる。プロセッサ210Aは、左コントローラ300LAの出力に基づいて、ユーザ5Aの左手の動きを検出する。プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図28(A)に示すように仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図28(A)に示す第2仮想空間2711Aに対応する視界画像2817Aを、図28(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像2817Aを視認することによって、タグオブジェクト2733Aに表示される上限課金額および合計課金額を、それぞれ確認する。図28(B)の例では、ユーザは、上限課金額が30000円であり、かつ、現時点での合計課金額が500円であることを認識する。言い換えれば、ユーザ5Aは、第2仮想空間2711Aにアバターオブジェクト6Aが入場した結果、入場料として500円がユーザ5Aに課金されたことを把握する。
[ライブ開始]
図29は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像2917Bを示す図である。アバターオブジェクト6Aが第2仮想空間2711Aに入場した後、プロセッサ210Bは、図29に示す第2仮想空間2711Bを定義する。第2仮想空間2711Bは、ユーザ5Bに提供され、かつ、第2仮想空間2711Aと同期される仮想空間である。第2仮想空間2711Bは、アバターオブジェクト6Bによるパフォーマンスが行われる仮想空間でもある。プロセッサ210Bは、仮想カメラ14B、アバターオブジェクト6B、およびステージオブジェクト1532を第2仮想空間2711Bに配置する。プロセッサ210Bは、アバターオブジェクト6A、6C、および6Dの各アバター情報をサーバ600から受信し、これらのアバター情報に基づいて、アバターオブジェクト6A、6C、および6Dを第2仮想空間2711Bに配置する。
プロセッサ210Bは、例えば、図29(A)に示す第2仮想空間2711Bに対応する視界画像2917Bを、図29(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像2917Bを視認することによって、ライブの視聴者であるアバターオブジェクト6A、6C、および6Dがステージオブジェクト1532の前にいることを認識する。ステージオブジェクト1532上にアバターオブジェクト6Bが配置された後、アバターオブジェクト6Bによるライブが開始される。この後、ユーザ5Bは、自身が動いたり、音声を発したり、右コントローラ300RBおよび左コントローラ300LBを操作したりすることによって、第2仮想空間2711Bにおけるアバターオブジェクト6Bのライブを進行させる。プロセッサ210Bは、ライブの実行中に、アバターオブジェクト6Bの動き情報を含むアバター情報を、リアルタイムにサーバ600に送信する。
図30は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3017Aを示す図である。第2仮想空間2711Bが定義された後、ステップS2611において、プロセッサ210Aは、アバターオブジェクト6Bのアバター情報をサーバ600からリアルタイムに受信する。ステップS2612において、プロセッサ210Aは、最初に受信したアバターオブジェクト6Bのアバター情報に基づいて、図30(A)に示すように、アバターオブジェクト6Bを第2仮想空間2711Aに配置する。詳細には、プロセッサ210Aは、アバターオブジェクト6Bをステージオブジェクト1532上に配置する。
プロセッサ210Aは、例えば、図30(A)に示す第2仮想空間2711Aに対応する視界画像3017Aを、図30(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像3017Aを視認することによって、ライブの演者であるアバターオブジェクト6Bがステージオブジェクト1532上に登場したことを認識する。ユーザ5Bは、さらに、アバターオブジェクト6Bによるライブがこれから開始されることを認識する。
図31は、ある実施形態に係るユーザ5Bの姿勢の一例を表す図である。ライブの開始後、ユーザ5Bは、例えば図31に示す姿勢を取るように自身の身体を動かす。図31に示す姿勢は、第1パフォーマンスに対応する姿勢である。プロセッサ210Bは、図31に示す姿勢を取った際のユーザ5Bの動きに応じて、第2仮想空間2711Bにおいてアバターオブジェクト6Bに第1パフォーマンスを実行させる。プロセッサ210Bは、アバターオブジェクト6Bが第1パフォーマンスを実行した際のアバターオブジェクト6Bの動き情報を含むアバター情報を、サーバ600にリアルタイムに送信する。
図32は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3217Aを示す図である。第2仮想空間2711Bにおいてアバターオブジェクト6Bが第1パフォーマンスを実行した後、ステップS2613において、プロセッサ210Aは、アバターオブジェクト6Bのアバター情報をサーバ600からリアルタイムに受信する。ステップS2614において、プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、アバターオブジェクト6Bに第1パフォーマンスを実行させる。これにより、プロセッサ210Aは、図31に示すユーザ5Bの動きに応じて、アバターオブジェクト6Bに第1パフォーマンスを実行させることができる。
図31の例では、アバターオブジェクト6Bは、ステージオブジェクト1532上に限らず、第2仮想空間2711A内の任意に位置に移動して、第1パフォーマンスを実行することができる。また、アバターオブジェクト6Aは、第2仮想空間2711A内の任意の位置で、アバターオブジェクト6Bによる第1パフォーマンスを視聴することできる。したがって、第2仮想空間2711A内において第1パフォーマンスが行われる領域(第1領域)は、第2仮想空間2711Aの全体であると言える。
プロセッサ210Aは、アバターオブジェクト6Bによる第1パフォーマンスを、第2仮想空間2711Aにおいてアバターオブジェクト6Aに視聴させる。プロセッサ210Aは、例えば、図32(A)に示す第2仮想空間2711Aに対応する視界画像3217Aを、図32(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像3217Aを視認することによって、アバターオブジェクト6Bがステージオブジェクト1532上で第1パフォーマンスを実行したことを認識する。これにより、ユーザ5Aは、アバターオブジェクト6Aの視点で、アバターオブジェクト6Bによるパフォーマンスを楽しむことができる。
[課金情報の登録]
図33は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3317Aを示す図である。プロセッサ210Aは、アバターオブジェクト6Bのライブを撮影したライブ映像の購入をユーザ5Aに案内するメッセージを、ライブ中にユーザ5Aに通知する。プロセッサ210Aは、例えば、タグオブジェクト2733Aにメッセージを表示する。メッセージは、ライブ映像の購入をユーザ5Aに案内するテキストと、ユーザ5Bがライブ映像を購入するための必要な課金額とを含む。図33の例では、ライブ映像を購入するための課金額は1000円である。
第2仮想空間2711Aには、ユーザ5Aが購入可能なライブ映像を撮影するための専用の仮想カメラ(不図示)が、第2仮想空間2711Aに配置されている。プロセッサ210Aは、専用の仮想カメラによって第2仮想空間2711A内の一部を撮影することによって、ライブ映像を生成する。プロセッサ210Aは、専用の仮想カメラを第2仮想空間2711A内で移動させながらライブ映像を撮影することもできる。
メッセージがタグオブジェクト2733Aに表示された後、ユーザ5Aは、腕時計で時間を確認するように、左手を自身の視界内まで移動させる。プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図33(A)に示すように、仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図33(A)に示す第2仮想空間2711Aに対応する視界画像3317Aを、図33(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像3317Aを視認することによって、タグオブジェクト2733Aに表示されるメッセージを確認する。これにより、ユーザ5Bは、新たに1000円の課金額を支払えばライブ映像を購入できることを認識する。
図34は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3417Aを示す図である。ユーザ5Aは、タグオブジェクト2733Aに表示されたメッセージを確認した後、ライブ映像を購入するための操作を行う。ユーザ5Aは、仮想右手1531RAの先端をタグオブジェクト2733Aに近づけるように、自身の右手を動かす。プロセッサ210Aは、ユーザ5Bの右手の動きに応じて、仮想右手1531RAの先端をタグオブジェクト2733Aに近づけるように、第2仮想空間2711Aにおいて仮想右手1531RAを動かす。
プロセッサ210Aは、衝突検出モジュール1426として、仮想右手1531RAの先端とタグオブジェクト2733Aとが第1位置関係になった場合、仮想右手1531RAの先端とタグオブジェクト2733Aとが衝突したことを検出する。第1位置関係とは、例えば、仮想右手1531RAの先端とタグオブジェクト2733Aとの距離が第1距離を下回ることである。あるいは、仮想右手1531RAの先端に規定されるコリジョンエリアと、タグオブジェクト2733Aに設定されるコリジョンエリアとが少なくとも部分的に衝突することである。プロセッサ210Aは、仮想右手1531RAの先端とタグオブジェクト2733Aとが衝突したことに基づいて、仮想右手1531RAによってタグオブジェクト2733Aが選択されたことを検出する。プロセッサ210Aは、ライブ映像を購入を案内するメッセージが表示されるタグオブジェクト2733Aが選択されたことに応じて、ライブ映像を購入するためのユーザ5Aの操作を検出する。
プロセッサ210Aは、例えば、図34(A)に示す第2仮想空間2711Aに対応する視界画像3417Aを、図34(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像3417Aを視認することによって、メッセージが表示されるタグオブジェクト2733Aを仮想右手1531RAで選択したことを認識する。図34の例では、ライブ映像を購入するためのユーザ5Aの操作がタグオブジェクト2733Aに対してなされるので、第2仮想空間2711Aに対するユーザ5Aの没入感を損なわずに済む。
図35は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3517Aを示す図である。ステップS2615において、プロセッサ210Aは、課金処理モジュール1428として、アバターオブジェクト6Bの行動に応じた課金情報を、タグオブジェクト2733Aに登録する。ここで言うアバターオブジェクト6Aの行動とは、ユーザ5Bに対する課金に繋がるアバターオブジェクト6Aの行動を意味する。図34の例では、ユーザ5Bに対する課金に繋がる行動は、アバターオブジェクト6Aが、仮想右手1531RAでタグオブジェクト2733Aを選択することである。課金に繋がる行動は、後述する実施形態2~8における課金に繋がる行動でもあり得る。課金に繋がる行動は、ユーザ5Aがライブ中に使用可能な仮想グッズ(例えば仮想ペンライト)を購入することに繋がるアバターオブジェクト6Aの行動でもあり得る。図34の例では、プロセッサ210Aは、ライブ映像の購入に必要な課金額(1000円)を表す課金情報を、タグオブジェクト2733Aに新たに登録する。
課金情報が登録された後、プロセッサ210Aは、タグオブジェクト2733A上で課金情報を再び視覚化する。詳細には、プロセッサ210Aは、タグオブジェクト2733Aにおけるメッセージの表示を消去すると共に、上限課金額および合計課金額をタグオブジェクト2733Aに表示する。詳細には、プロセッサ210Aは、タグオブジェクト2733Aに登録された2つの課金情報が表す2つの課金額(500円および1000円)の合計(1500円)を算出し、合計課金額としてタグオブジェクト2733Aに表示する。プロセッサ210Aは、例えば、図35(A)に示す第2仮想空間2711Aに対応する視界画像3517Aを、図35(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像3517Aを視認することによって、ライブ映像を購入したことによって現時点での合計課金額が1500円に増加したことを認識する。このように、ユーザ5Aは、簡単な操作で合計課金額を確認することができる。
プロセッサ210Aは、合計課金額だけでなく、その内訳をタグオブジェクト2733A上で視覚化することもできる。プロセッサ210Aは、例えば、タグオブジェクト2733Aに登録された複数の課金情報が表す各課金額を、個別にタグオブジェクト2733Aに表示する。ユーザ5Aは、タグオブジェクト2733Aを視認することによって、個々の課金額を確認することができる。
プロセッサ210Aは、課金情報をタグオブジェクト2733A上で視覚化することなく、視界画像3517A上で直接視覚化することもできる。プロセッサ210Aは、例えば、視界画像3517Aに重畳するポップアップ画像などの通知UIをモニタ130Aに表示すると共に、その通知UIに合計課金額を表示することができる。プロセッサ210Aは、ポップアップ画像を視界画像3517A上でタグオブジェクト2733Aに関連付けてモニタ130Aに表示することもできる。
ライブ映像購入に対応する課金情報の登録後、プロセッサ210Aは、第2仮想空間2711A内でアバターオブジェクト6Aが課金に繋がる新たな行動を取るたびに、その行動に応じた課金情報をタグオブジェクト2733Aに新たに登録する。タグオブジェクト2733Aに登録された課金情報がより増加することによって、ユーザ5Aに課金される合計課金額がさらに増加する。ユーザ5Bは、所望のタイミングでタグオブジェクト2733Aを視認することによって、最新の合計課金額を確認することができる。
[合計課金額の決済]
図36は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3617Aを示す図である。図36(A)では、第2仮想空間2711Aにおけるライブは終了している。ライブの終了に伴って、アバターオブジェクト6Bおよび6Cが第2仮想空間2711Aから退出している。アバターオブジェクト6Aおよび6Dは、ライブの終了後に第2仮想空間2711Aに残っている。ライブの終了時点で、ユーザ5Bに対して課金された合計課金額は12000円であるとする。言い換えれば、タグオブジェクト2733Aに登録される各課金情報が表す課金額の合計は、12000円である。
プロセッサ210Aは、例えば、図36(A)に示す第2仮想空間2711Aに対応する視界画像3617Aを、図36(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像3617Aを視認することによって、ライブが終了したことを認識する。ユーザ5Bは、さらに、ユーザ5Aに課金された合計課金額が12000円であることを認識する。
ユーザ5Aは、ライブ終了時点での合計課金額を確認した後、アバターオブジェクト6Aを第2仮想空間2711Aから退出させるための操作を行う。この操作は、例えば、右コントローラ300RAのいずれかのボタンをユーザ5Aが押下することである。ステップS2616において、プロセッサ210Aは、アバターオブジェクト6Aを退出させるためのユーザ5Aの操作を検出したことに応じて、アバターオブジェクト6Aを第2仮想空間2711Aから退出させる。これにより、プロセッサ210Aは、ユーザ5Aに対する第2仮想空間2711Aの提供を終了する。
図37は、ある実施の形態に従う第1仮想空間2411Aおよび視界画像3717Aを示す図である。ステップS2617において、プロセッサ210Aは、第2仮想空間2711Aから退出したアバターオブジェクト6Aを、図37に示すように再び第1仮想空間2411Aに入場させる。言い換えれば、プロセッサ210Aは、アバターオブジェクト6Aを第1仮想空間2411Aに再び配置する。このとき、プロセッサ210Aは、アバターオブジェクト6Aに対するタグオブジェクト2733Aの関連付けを解消する。言い換えれば、プロセッサ210Aは、第1仮想空間2411Aにおいて、仮想左手1531LAにタグオブジェクト2733Aを配置しない。
ステップS2618において、プロセッサ210Aは、決済処理モジュール1429として、タグオブジェクト2733Aに登録された課金情報に応じた決済に関する処理を実行する。プロセッサ210Aは、例えば、登録された各課金情報が表す各課金額の合計を、サーバ600に通知する。サーバ600は、通知された合計課金額を決済する。サーバ600は、例えば、HMDシステム100に登録されたユーザ5Aのクレジットカード情報に応じて、合計課金額のクレジットカード決済を実行する。これにより、クレジットカードの発行者は、後日、ユーザ5Aに課金された12000円を、ユーザ5Aに請求する。サーバ600とは異なる別のサーバが、ユーザ5Aに課金された合計課金額を決済することもできる。プロセッサ210Aが、ユーザ5Aに課金された合計課金額を決済することもできる。
プロセッサ210Aは、例えば、図37(A)に示す第1仮想空間2411Aに対応する視界画像3717Aを、図37(B)に示すようにモニタ130Aに表示する。サーバ600は、決済が終了したことをコンピュータ200Aに通知する。プロセッサ210Aは、決済の完了がサーバ600から通知されたことに応じて、決済が完了したことを視界画像3717A上でユーザ5Aに通知する。プロセッサ210Aは、例えば、決済が完了したことを説明するメッセージを含む通知画像3735を、視界画像3717Aに重畳させてモニタ130Aに表示する。プロセッサ210Aは、通知画像3735と同一の外観を有する仮想オブジェクトを、第2仮想空間2711Aにおける視界領域15A内の任意の位置に配置することもできる。プロセッサ210Aは、あるいは、視界画像3717Aの生成時に、視界画像3717A内の任意の位置に通知画像3735を含めることもできる。ユーザ5Bは、視界画像3717Aを視認することによって、ライブの終了後、第1仮想空間2411Aにアバターオブジェクト6Aが再び配置されたことを認識する。ユーザ5Aは、さらに、通知画像3735を視認することによって、ライブ中にユーザ5Aに課金された課金額の決済が完了したことを把握する。ユーザ5Aは、さらに、第1仮想空間2411Aにおいて仮想左手7131LBにタグオブジェクト2733Aが配置されないので、第1仮想空間2411Aにおいてはアバターオブジェクト6Aの行動に応じた課金額がユーザ5Aにこれ以上課金されないことを認識する。
プロセッサ210Aは、アバターオブジェクト6Aが第1仮想空間2411Aに移動した後、タグオブジェクト2733Aをアバターオブジェクト6Aに配置したままにすることもできる。この場合、プロセッサ210Aは、決済の完了後、決済が完了したことをユーザ5Aに通知するメッセージをタグオブジェクト2733Aに表示する。プロセッサ210Aは、さらに、「了承」ボタンをタグオブジェクト2733Aに表示する。プロセッサ210Aは、アバターオブジェクト6Aが「了承」ボタンを押下した場合、アバターオブジェクト6Aに対するタグオブジェクト2733Aの関連付けを解消する。これにより、タグオブジェクト2733Aがアバターオブジェクト6Aに配置されなくなる。したがって、ユーザ5Aは、仮想左手1531LAを視界領域15A内に移動させたとしても、タグオブジェクト2733Aを視認できなくなる。
プロセッサ210Bは、ライブの終了後、視聴者である各ユーザ5に課金された各合計課金額を合算することによって、ライブの売り上げを算出する。サーバ600が売り上げを算出し、コンピュータ200Bに通知することもできる。プロセッサ210Bは、ライブの売り上げに応じた報酬をユーザ5Bに支払うための処理を実行する。プロセッサ210Bは、例えば、報酬の支払いをサーバ600に要求する要求情報を、ライブの終了後にサーバ600に送信する。サーバ600は、受信した要求情報に応じて、各ユーザ5に対する決済の完了後、ライブの売り上げの少なくとも一部を報酬としてユーザ5Bに支払う。サーバ600は、ライブが終了するたびに、報酬をユーザ5Bに支払うことができる。サーバ600は、あるいは、一定期間(例えば一ヶ月)内に行われた各ライブの売り上げの合計に応じた報酬を、一定期間が経過した時点でユーザ5Bにまとめて支払うこともできる。サーバ600ではなくプロセッサ210Bが、売り上げに応じた報酬をユーザ5Bに支払うこともできる。
[本実施形態の主要な利点]
以上のように、プロセッサ210Aは、第2仮想空間2711A内でのアバターオブジェクト6Aの行動に応じた課金情報を、アバターオブジェクト6Aに関連付けられて自動的に登録する。このように、HMDシステム100は、第2仮想空間2711Aにおける好適な課金方式をユーザ5Aに提供することができる。プロセッサ210Aは、さらに、課金に関する入力をユーザ5Aに求めるUIを視界画像17Aに重畳させてモニタ130Aに表示することなく、タグオブジェクト2733Aに課金情報を自動的に登録する。これにより、課金に関する処理が実行される際に、第2仮想空間2711Aに対するユーザ5Aの没入感を損なわずに済む。
プロセッサ210Aは、さらに、アバターオブジェクト6Aが第2仮想空間2711Aから退場した場合、決済に関する処理を自動的に実行する。このように、HMDシステム100は、第2仮想空間2711Aにおける好適な決済方法をユーザ5Aに提供することができる。プロセッサ210Aは、さらに、決済に関する入力をユーザ5Aに求めるUIを視界画像17Aに重畳させてモニタ130Aに表示することなく、決済に関する処理を自動的に実行する。これにより、決済に関する処理が実行される際に、第1仮想空間2411Aに対するユーザ5Aの没入感を損なわずに済む。
プロセッサ210Aは、さらに、クレジットカードまたは現金を模した決済用の仮想オブジェクト(仮想通貨)をユーザ5Aに使用させることなく、決済に関する処理を自動的に実行する。これにより、決済に関する処理が実行される際に、ユーザ5Aに煩わしさを与えずに済む。
[ユーザ5Aに対する警告]
図38は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3817Aを示す図である。図38の例では、合計課金額は25000円であり、上限課金額の一定割合を超えている。一定割合は、例えば上限課金額の70%(21000円である)。プロセッサ210Aは、合計課金額が上限課金額の一定割合を超えていることを、ユーザ5Bに警告する。プロセッサ210Aは、例えば、図38(A)に示すように、タグオブジェクト2733Aを発光させることによって、ユーザ5Bに警告する。
プロセッサ210Aは、例えば、図38(A)に示す第2仮想空間2711Aに対応する視界画像3817Aを、図38(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像3817Aを視認することによって、現時点での合計課金額が25000円であることを認識する。ユーザ5Aは、さらに、タグオブジェクト2733Aの発光を視認することによって、合計課金額が上限課金額に近づいた旨を警告されたことを認識する。これにより、ユーザ5Aは、自身の知らない間に合計課金額が上限課金額を超えてしまうことを、避けることができる。
プロセッサ210Aは、ユーザ5Aに警告した後、ユーザ5Aの操作に応じて上限課金額を増加させることができる。ユーザ5Aは、例えば、仮想右手1531RAを操作することによって、タグオブジェクト2733Aに新たな上限課金額を入力する。プロセッサ210Aは、入力された新たな上限課金額を検出する。プロセッサ210Aは、タグオブジェクト2733Aに登録される上限課金情報が表す上限課金額を、検出した新たな上限課金額に更新する。
図39は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3917Aを示す図である。図39の例では、プロセッサ210Aは、合計課金額に応じて第2仮想空間2711Aの外観を制御する。詳細には、プロセッサ210Aは、合計課金額をユーザ5Aに通知するためのモニタオブジェクト3936Aを、アバターオブジェクト6Aに関連付けて第2仮想空間2711Aに配置する。プロセッサ210Aは、さらに、合計課金額を表す合計課金情報を生成し、サーバ600に定期的に送信する。以後、この合計課金情報を、アバターオブジェクト6Aの合計課金情報と称する。
図示しない第2仮想空間2711Cにおいて、アバターオブジェクト6Cの仮想左手1531LCにタグオブジェクト2733Cが配置されている。タグオブジェクト2733Cには、ユーザ5Cに対して課金される各課金額を表す各課金情報が登録されている。プロセッサ210Cは、タグオブジェクト2733Cに登録される各課金情報が表す各課金額の合計(合計課金額)を算出する。プロセッサ210Cは、さらに、合計課金額を表す合計課金情報を生成し、サーバ600に定期的に送信する。以後、この合計課金情報を、アバターオブジェクト6Cの合計課金情報と称する。
図示しない第2仮想空間2711Dにおいて、アバターオブジェクト6Dの仮想左手1531LDにタグオブジェクト2733Dが配置されている。タグオブジェクト2733Dには、ユーザ5Dに対して課金される各課金額表す各課金情報が登録されている。プロセッサ210Dは、タグオブジェクト2733Dに登録される各課金情報が表す各課金額の合計(合計課金額)を算出する。プロセッサ210Dは、さらに、合計課金額を表す合計課金情報を生成し、サーバ600に定期的に送信する。以後、この合計課金情報を、アバターオブジェクト6Dの合計課金情報と称する。
プロセッサ210Aは、アバターオブジェクト6Cおよび6Dの各合計課金情報をサーバ600から受信する。プロセッサ210Aは、アバターオブジェクト6Cの合計課金情報が表す合計課金額に応じて、第2仮想空間2711Aにおいてアバターオブジェクト6Cの外観を制御する。詳細には、プロセッサ210Aは、ユーザ5Cの合計課金額が視覚化されるモニタオブジェクト3936Cを、アバターオブジェクト6Cに関連付けて第2仮想空間2711Aに配置する。
プロセッサ210Aは、課金情報が表す課金額の合計に応じて、第2仮想空間2711Aにおいてアバターオブジェクト6Dの外観を制御する。プロセッサ210Aは、アバターオブジェクト6Dの合計課金情報が表す合計課金額に応じて、第2仮想空間2711Aにおいてアバターオブジェクト6Dの外観を制御する。詳細には、プロセッサ210Aは、ユーザ5Dの合計課金額が視覚化されるモニタオブジェクト3936Dを、アバターオブジェクト6Dに関連付けて第2仮想空間2711Aに配置する。
モニタオブジェクト3936A~3936Cは、アバターオブジェクト6A~6Cのそれぞれの上部に配置される。プロセッサ210Aは、アバターオブジェクト6Aの課金情報をモニタオブジェクト3936A上で視覚化することによって、アバターオブジェクト6Aの外観を制御する。詳細には、プロセッサ210Aは、ユーザ5Aの合計課金額をモニタオブジェクト3936Aに表示する。プロセッサ210Aは、アバターオブジェクト6Cの課金情報をモニタオブジェクト3936C上で視覚化することによって、アバターオブジェクト6Cの外観を制御する。詳細には、プロセッサ210Aは、ユーザ5Cの合計課金額を、モニタオブジェクト3936Cに表示する。プロセッサ210Aは、アバターオブジェクト6Dの課金情報をモニタオブジェクト3936D上で視覚化することによって、アバターオブジェクト6Dの外観を制御する。詳細には、プロセッサ210Dはユーザ5Dの合計課金額をモニタオブジェクト3936Dに表示する。
プロセッサ210Aは、例えば、図39(A)に示す第2仮想空間2711Aに対応する視界画像3917Aを、図39(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像3917Aを視認することによって、ユーザ5Cの現時点での合計課金額が20000円であり、かつ、ユーザ5Dの現時点での合計課金額が5000円であることを認識する。モニタオブジェクト3936Aは視界領域15A内に配置されないので、ユーザ5Aは、モニタオブジェクト3936Aに表示されるユーザ5Aの合計課金額を視認しない。
モニタオブジェクト3936Aには、ユーザ5Aの合計課金額が表示されるので、合計課金額がより多いほど、より高い金額がモニタオブジェクト3936Aに表示される。モニタオブジェクト3936Aに表示される金額が低いと、その金額はユーザ5B~5Dの注目をあまり集めない。したがって、モニタオブジェクト3936Aに関連付けられるアバターオブジェクト6Aは、他のユーザ5B~5Dに対してあまり目立たない。モニタオブジェクト3936Aに表示される金額がより高いほど、その金額はユーザ5B~5Dの注目をより多く集める。したがって、モニタオブジェクト3936Aに関連付けられるアバターオブジェクト6Aは、他のユーザ5B~5Dに、より目立って見える。このように、プロセッサ210Aは、モニタオブジェクト3936Aにユーザ5Aの合計課金額を表示することによって、合計課金額がより多いほどアバターオブジェクト6Aの外観をより目立たせることができる。
視界画像3917Aにおいて、アバターオブジェクト6Cに関連付けて表示されるユーザ5Cの合計課金額(20000円)は、アバターオブジェクト6Dに関連付けて表示されるユーザ5Dの合計課金額(5000円)よりも多い。したがって、ユーザ5Aは、視界画像3917Aを視認することによって、アバターオブジェクト6Cの外観がアバターオブジェクト6Dの外観よりも目立っていることを認識する。
図40は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像4017Bを示す図である。サーバ600は、受信したアバターオブジェクト6A、6C、および6Dの各合計課金情報を、同期処理によってコンピュータ200Bに送信する。プロセッサ210Bは、サーバ600から送信されたアバターオブジェクト6A、6C、および6Dの各合計課金情報を受信する。プロセッサ210Bは、受信したアバターオブジェクト6A、6C、および6Dの各合計課金情報に応じて、アバターオブジェクト6A、6C、および6Dの各外観を制御する。この場合の外観制御は、図39に示す第2仮想空間2711Aにおけるアバターオブジェクト6A、6C、および6Dの各外観の制御と同様であるため、詳細な説明は繰り返さない。
プロセッサ210Bは、例えば、図40(A)に示す第2仮想空間2711Bに対応する視界画像4017Bを、図40(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像4017Bを視認することによって、ユーザ5Aの現時点での合計課金額が7000円であり、ユーザ5Cの現時点での合計課金額が20000円であり、かつ、ユーザ5Dの現時点での合計課金額が5000円であることを認識する。ユーザ5Bにとって、より高い合計課金額に対応するアバターオブジェクト6Cの外観は、より低い合計課金額に対応するアバターオブジェクト6Aおよびユーザ5Dに関連付けられるアバターオブジェクト6Dの各外観に比べて、より目立って見える。このように、ユーザ5Cは、ユーザ5Bおよび5Dに比べて自身の合計課金額が多いことを、アバターオブジェクト6Cの外観変化を通じてユーザ5Bに対してアピールすることができる。
図41は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像4117Aを示す図である。図41の例では、プロセッサ210Aは、アバターオブジェクト6A、6C、および6Dの各課金情報に応じて、アバターオブジェクト6A、6C、および6Dの外観の色を制御する。詳細には、プロセッサ210Aは、各課金情報に応じたテクスチャ4137A、4137C、および4137Dを、アバターオブジェクト6A、6C、および6Dに貼り付けることによって、アバターオブジェクト6A、6C、および6Dの外観の色を変化させる。
テクスチャ4137Dは、合計課金額が第1閾値を上回ることに対応する、第1色に着色されるテクスチャである。テクスチャ4137Aは、合計課金額が第2閾値を上回ることに対応する、第2色に着色されるテクスチャである。テクスチャ4137Cは、合計課金額が第3閾値を上回ることに対応する、第3色に着色されるテクスチャである。第2色は、第1色よりも目立つ色である。第3色は、第2色よりも目立つ色である。第1色は、例えば銅色であり、第2色は例えば銀色であり、第3色は例えば金色である。
プロセッサ210Aは、例えば、図41(A)に示す第2仮想空間2711Aに対応する視界画像4117Aを、図41(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像4117Aを視認することによって、アバターオブジェクト6Cの外観が第3色に変化し、かつ、アバターオブジェクト6Dの外観が第1色に変化したことを認識する。ユーザ5Aは、視界画像3917Aを視認することによって、アバターオブジェクト6Cの外観がアバターオブジェクト6Dの外観よりも目立っていることを認識する。
プロセッサ210Aは、合計課金額がより多いほど、アバターオブジェクト6Aの外観を、より金持ちらしく見える外観に変化させることもできる。プロセッサ210Aは、図示しない掲示板オブジェクトを第2仮想空間2711Aに配置すると共に、合計課金額のランキングを掲示板オブジェクトに表示することもできる。プロセッサ210Aは、例えば、合計課金額がより多い上位5名のユーザ5の名称を、掲示板オブジェクトに表示する。これにより、合計課金額がより多いユーザ5に関連付けられるアバターオブジェクト6を、第2仮想空間2711Aにおいてより目立たせることができる。
プロセッサ210Aは、アバターオブジェクト6Aの外観の全体ではなくその一部を変化させることもできる。プロセッサ210Aは、アバターオブジェクト6Aの外観をより金持ちらしく見せることができるアクセサリーを、アバターオブジェクト6Aに装着することもできる。このようなアクセサリーとして、例えば、例えば、金ぴかの時計またはネックレスなどが挙げられる。
[ライブビューイングの視聴]
図42は、ある実施の形態に従う第2仮想空間4211Bおよびライブ映像4239を示す図である。プロセッサ210Bは、第2仮想空間2711Bと同様に、アバターオブジェクト6A~6D、ステージオブジェクト1532、および仮想カメラ14Bを第2仮想空間4211Bに配置する。プロセッサ210Bは、さらに、第2仮想空間4211Bには仮想カメラ4238を配置する。仮想カメラ4238は、アバターオブジェクト6Bのライブを撮影したライブ映像を生成する仮想オブジェクトである。プロセッサ210Bは、例えば、アバターオブジェクト6Bの正面から一定距離を置いた位置に、仮想カメラ4238を配置する。プロセッサ210Bは、さらに、仮想カメラ4238の向きを制御することによって、仮想カメラ4238の視界領域4215内にステージオブジェクト1532およびアバターオブジェクト6Bを収める。
プロセッサ210Bは、例えば、仮想カメラ4238を制御することによって、第2仮想空間4211Bのうち視界領域4215に含まれる箇所を仮想カメラ4238で撮影する。これにより、プロセッサ210Bは、視界領域4215に対応するライブ映像4239を図42(B)に示すように生成する。ライブ映像4239は、一種の視界画像である。ライブ映像4239には、アバターオブジェクト6Bがステージオブジェクト1532上でパフォーマンスを実行する様子が映し出されている。プロセッサ210Bは、生成されたライブ映像4239を、コンピュータ200Aなどの他の各コンピュータ200にサーバ600を介して配信する。
図43は、ある実施の形態に従う第2仮想空間4311Aおよび視界画像4317Aを示す図である。プロセッサ210Aは、第2仮想空間2711Aと同様に、アバターオブジェクト6A、6C、および6Dを第2仮想空間4311Aに配置する。しかし、プロセッサ210Aは、第2仮想空間2711Aとは異なり、ステージオブジェクト1532およびアバターオブジェクト6Bを、第2仮想空間4311Aに配置しない。その代わりに、プロセッサ210Aは、スクリーンオブジェクト4340を第2仮想空間4311Aに配置する。
プロセッサ210Aは、サーバ600を介してコンピュータ200Bから配信されたライブ映像4239を受信する。プロセッサ210Aは、受信したライブ映像4239を、スクリーンオブジェクト4340に表示する。これにより、プロセッサ210Aは、ライブ映像4239に映し出されるアバターオブジェクト6Bによるパフォーマンスを、アバターオブジェクト6Aに視聴させる。プロセッサ210Aは、例えば、図43(A)に示す第2仮想空間4311Aに対応する視界画像4317Aを、図43(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像4317Aを視認することによって、スクリーンオブジェクト4340に表示されるライブ映像4239を視認する。ライブ映像4239には、ステージオブジェクト1532上でパフォーマンスを行うアバターオブジェクト6Bの姿が映し出されている。ユーザ5Aは、ライブ映像4239を視認することによって、アバターオブジェクト6Bによるライブのライブビューイングを第2仮想空間4311Aにおいてあたかも自身が視聴しているかのような仮想体験を、得ることができる。
ライブビューイングの配信は、上述した例に限定されない。例えば、アバターオブジェクト6B、ステージオブジェクト1532、および仮想カメラ4238のみが配置されるライブ映像撮影用の仮想空間において、アバターオブジェクト6Bのライブ映像を撮影し、そのライブ映像を、第2仮想空間4311Aに配置されるスクリーンオブジェクト4340に表示する方式によっても、ライブ映像を配信することができる。
プロセッサ210Aは、第2仮想空間4311A内でのアバターオブジェクト6Aの行動に応じた課金情報を、タグオブジェクト2733Aに登録することもできる。プロセッサ210Aは、例えば、ユーザ5Aがライブ映像4239を購入することに繋がる行動をアバターオブジェクト6Aが取った場合、その行動に応じた課金情報をタグオブジェクト2733Aに登録する。
[仮想空間内の第1領域]
図44は、ある実施の形態に従う第2仮想空間4411Aおよび視界画像4417Aを示す図である。プロセッサ210Aは、第2仮想空間2711Aと同様に、アバターオブジェクト6Aおよび6C、およびステージオブジェクト1532を第2仮想空間4411Aに配置する。第2仮想空間4411Aは、第1領域4451を含んでいる。第1領域4451は、第2仮想空間4411Aの一部分に相当する。プロセッサ210Aは、第1領域4451の外縁における一カ所に、ゲートオブジェクト4452を配置する。
図44では、アバターオブジェクト6Cおよびステージオブジェクト1532は第1領域4451内に配置されている。アバターオブジェクト6Aは、第1領域4451外に配置されている。第1領域4451は、図示しない不透明の壁オブジェクトによって囲まれている。第1領域4451は、アバターオブジェクト6Bのライブが開催される場所である。アバターオブジェクト6Aは、第1領域4451内にいる場合、アバターオブジェクト6Bによるパフォーマンスを視聴することができる。アバターオブジェクト6Aは、第1領域4451外にいる場合、アバターオブジェクト6Bによるパフォーマンスを視聴することができない。アバターオブジェクト6Aは、ゲートオブジェクト4452を通ることによって、第1領域4451に入場したり、第1領域4451から退出したりすることができる。
プロセッサ210Aは、第2仮想空間4411Aを定義した後、アバターオブジェクト6Aを、第2仮想空間4411Aにおける第1領域4451外に配置する。プロセッサ210Aは、アバターオブジェクト6Aが第1領域4451外に配置される間、タグオブジェクト2733Aを仮想左手1531LAに配置しない。プロセッサ210Aは、ユーザ5Aの操作に応じて、ゲートオブジェクト4452を通じてアバターオブジェクト6Aを第1領域4451外から第1領域4451内に移動させる。これにより、プロセッサ210Aは、アバターオブジェクト6Aを第1領域4451に入場させる。
プロセッサ210Aは、アバターオブジェクト6Aが第1領域4451に入場した場合、仮想左手1531LAにタグオブジェクト2733Aを配置する。プロセッサ210Aは、第1領域4451内でのアバターオブジェクト6Aの行動に応じた課金情報を、タグオブジェクト2733Aに登録する。プロセッサ210Aは、ユーザ5Aの操作に応じて、ゲートオブジェクト4452を通じてアバターオブジェクト6Aを第1領域4451内から第1領域4451外に移動させる。これにより、プロセッサ210Aは、アバターオブジェクト6Aを第1領域4451から退出させる。
プロセッサ210Aは、アバターオブジェクト6Aが第1領域4451から退出した場合、タグオブジェクト2733Aに登録される課金情報に応じた決済に関する処理を実行する。プロセッサ210Aは、さらに、仮想左手1531LAからタグオブジェクト2733Aを削除する。
[変形例]
プロセッサ210Aは、タグオブジェクト2733Aを、仮想左手1531LAに限らず、アバターオブジェクト6Aの任意の一部に関連付けることができる。プロセッサ210Aは、例えば、タグオブジェクト2733Aを仮想右手1531RAに関連付ける。プロセッサ210Aは、例えば、アバターオブジェクト6Aの胴体または足にタグオブジェクト2733Aを関連付ける。プロセッサ210Aは、好ましくは、仮想右手1531RAまたは仮想左手1531LAにタグオブジェクト2733Aを配置する。これにより、タグオブジェクト2733Aに表示される合計課金額をユーザ5Aに容易に確認させることができる。
プロセッサ210Aは、アバターオブジェクト6Aが第2仮想空間2711Aに入場した場合、必ずしもタグオブジェクト2733Aをアバターオブジェクト6Aに関連付ける必要はない。プロセッサ210Aは、課金情報をアバターオブジェクト6Aに関連付けてアバターオブジェクト6Aに登録することができる。アバターオブジェクト6Aは、アバターオブジェクト6Aが第2仮想空間2711Aから退場した場合、アバターオブジェクト6Aに登録された課金情報に応じて決済に関する処理を実行することもできる。
ユーザ5Aは、合計課金額の決済に利用可能なポイントを事前に購入することができる。サーバ600は、ユーザ5Aがポイントを事前に購入していた場合、ユーザ5Aが所持する全ポイントのうち合計課金額に相当するポイントを消費することによって、合計課金額を決済することができる。
プロセッサ210Aは、タグオブジェクト2733Aに課金情報を登録する際、課金情報をストレージ230Aに保存することができる。プロセッサ210Aは、アバターオブジェクト6Aが第2仮想空間2711Aから不正に離脱した場合、ストレージ230Aに保存される課金情報を用いて、決済に関する処理を実行する。アバターオブジェクト6Aが第2仮想空間2711Aから不正に離脱することは、例えば、アバターオブジェクト6Aが第2仮想空間2711Aから退場する前に、ユーザ5Aがコンピュータ200Aの電源を強制的にオフさせる場合に、発生し得る。プロセッサ210Aは、コンピュータ200Aの電源がオンされた後、ストレージ230Aに保存される課金情報をサーバ600に送信する。プロセッサ610は、受信した課金情報が表す課金額の合計を決済する。
プロセッサ210Aは、アバターオブジェクト6Aを第2仮想空間2711Aから退場させる前に、ユーザ5Aがコンピュータ200Aの電源を強制的にオフさせた場合、コンピュータ200Aの電源が次回オンされた後に、アバターオブジェクト6Aの不正離脱が発生したことを検出する。プロセッサ210Aは、不正離脱の発生を検出した場合、サーバ600にその旨を通知する。プロセッサ610は、不正離脱の発生がコンピュータ200Aから通知された場合、不正離脱が発生した時点でのユーザ5Aの課金情報に応じて、課金額を決済する。これにより、HMDシステム100は、ユーザ5Aが課金額の決済を逃れることを防止することができる。プロセッサ610は、アバターオブジェクト6Aの不正離脱が頻繁に発生したり、不正離脱後の決済を正常に完了させることができなかったりする場合、ユーザ5Aのアカウントを削除することができる。
プロセッサ210Aは、アバターオブジェクト6Aが第2仮想空間2711Aに入場した場合、入場料に対応する課金情報をタグオブジェクト2733Aに登録すると共に、入場料に対応する決済に関する処理を直ちに実行することができる。言い換えれば、プロセッサ210Aは、タグオブジェクト2733Aに課金情報が登録された後、アバターオブジェクト6Aが第2仮想空間2711Aから退場する前に、決済に関する処理を実行することもできる。プロセッサ210Aは、さらに、アバターオブジェクト6Aの行動に応じた課金情報をタグオブジェクト2733Aに登録した場合も、アバターオブジェクト6Aが退場する前に、登録された課金情報に対応する決済に関する処理を実行することができる。
プロセッサ210Aは、第2仮想空間2711Aにおけるアバターオブジェクト6Bのライブが開催される前に、アバターオブジェクト6Aを第2仮想空間2711Aに入場させることができる。プロセッサ210Aは、アバターオブジェクト6Aがライブの開催前に第2仮想空間2711Aに入場した場合、第2仮想空間2711Aにおいて、アバターオブジェクト6Aにアバターオブジェクト6Bからライブのチケットを購入させることができる。
ユーザ5Aは、ライブの開催前に、ライブのチケットをアバターオブジェクト6Aに購入させることができる。ある局面において、プロセッサ210Bは、ライブのチケットを販売するためのユーザ5Bの動きを、ライブの開催前に予めに検出する。プロセッサ210Bは、検出された動きに応じて、アバターオブジェクト6Bに、チケットを販売するための第1動作を実行させる。プロセッサ210Bは、第1動作に対応する動き情報を含むアバターオブジェクト6Bのアバター情報を、サーバ600に送信する。
プロセッサ210Aは、ライブの開催前にアバターオブジェクト6Aが第2仮想空間2711Aに入場した場合、コンピュータ200Bが事前にサーバ600に送信しておいたアバターオブジェクト6Bのアバター情報を、サーバ600にリクエストする。サーバ600は、リクエストに応じて、アバターオブジェクト6Bのアバター情報をコンピュータ200Aに送信する。プロセッサ210Aは、受信したアバター情報に基づいて、アバターオブジェクト6Bを第2仮想空間2711Aに配置する。プロセッサ210Aは、アバター情報に含まれる動き情報に基づいて、チケットを販売するための第1動作を、アバターオブジェクト6Bに実行させる。プロセッサ210Aは、例えば、アバターオブジェクト6Bからアバターオブジェクト6Aにチケットを手渡しさせる。プロセッサ210Aは、さらに、アバターオブジェクト6Bに仮想左手1531LBを振らせる。
別の局面において、プロセッサ210Aは、特定の時間帯にアバターオブジェクト6Aを第2仮想空間2711Aに入場させた場合、アバターオブジェクト6Aのアバター情報をサーバ600に送信する。サーバ600による同期処理の結果、プロセッサ210Bは、アバターオブジェクト6Aのアバター情報をサーバ600から受信する。プロセッサ210Bは、受信したアバター情報に応じて、アバターオブジェクト6Aを第2仮想空間2711Bに配置する。プロセッサ210Bは、アバターオブジェクト6Aが配置された後、ライブのチケットを販売するためのユーザ5Bの動きを検出する。プロセッサ210Bは、検出したユーザ5Bの動きに応じて、第2仮想空間2711Bにおいて、アバターオブジェクト6Aにチケットを販売するための第2動作をアバターオブジェクト6Bに実行させる。プロセッサ210Bは、第2動作に対応する動き情報を含むアバターオブジェクト6Bのアバター情報を、サーバ600に送信する。
プロセッサ210Aは、サーバ600の同期処理の結果、アバターオブジェクト6Bのアバター情報をサーバ600から受信する。プロセッサ210Aは、受信したアバター情報に含まれる動き情報に応じて、プロセッサ210Aは、アバター情報に含まれる動き情報に基づいて、チケットを販売するための第2動作を、アバターオブジェクト6Bに実行させる。言い換えれば、プロセッサ210Aは、ユーザ5Bのリアルタイムの動きに応じて、アバターオブジェクト6Bにチケットを販売する動作を実行させることができる。これにより、ユーザ5Aをユーザ5Bとリアルタイムに交流させることができるので、ユーザ5Aをより満足させることができる。
〔実施形態2〕
本実施形態において、プロセッサ210Aは、ユーザ5Aに対する課金および決済に関する処理を、実施形態1に記載されるタグオブジェクト2733Aを用いた方式によって実行する。しかし、これに限定されず、プロセッサ210Aは、実施形態1に係る方式とは異なる任意の方式によって、ユーザ5Aに対する課金および決済に関する処理を実行することもできる。
[移動距離に応じた課金処理フロー]
図45は、ある実施の形態に従うHMDセット110Aにおいて実行される処理の一部を表すシーケンスチャートである。図46は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像4617Aを示す図である。図46では、第2仮想空間2711Aにおいて、ユーザ5B(第2ユーザ)に関連付けられるアバターオブジェクト6B(第2アバター)によるパフォーマンスが行われている。タグオブジェクト2733Aには、入場料(500円)に対応する課金情報のみが登録されている。ユーザ5A(第1ユーザ)に関連付けられるアバターオブジェクト6A(第1アバター)は、第2仮想空間2711Aにおける、ステージオブジェクト1532から大きく離れた第1位置4661に配置されている。ユーザ5Aは、アバターオブジェクト6Aから遠く離れた位置にいるアバターオブジェクト6Bのパフォーマンスを視聴している。
ユーザ5Aは、アバターオブジェクト6Aをステージオブジェクト1532に近い第2位置4662に移動させることによって、アバターオブジェクト6Bのもっと近くでパフォーマンスを視聴することを望む。ユーザ5Aは、この希望を叶えるために、仮想右手1531RAの先端が第2位置4662を指し示すように、右手を動かす。ステップS4501において、プロセッサ210Aは、右コントローラ300RAの出力に基づいて、ユーザ5Aの右手の動きを検出する。ステップS4502において、プロセッサ210Aは、ユーザ5Aの右手の動きに応じて仮想右手1531RAを動かす。図46(A)に示すように、仮想右手1531RAが動いた後、仮想右手1531RAの先端は、第2仮想空間2711Aにおける第2位置4662を指し示している。ステップS4503において、プロセッサ210Aは、仮想右手1531RAの先端が指し示す第2仮想空間2711A内の第2位置4662を特定する。
プロセッサ210Aは、例えば、図46(A)に示す第2仮想空間2711Aに対応する視界画像4617Aを、図46(B)に示すようにモニタ130Aに表示する。ステップS4504において、プロセッサ210Aは、第2仮想空間2711A内の第2位置4662を示すマーク4663を、視界画像4617A上でユーザ5Aに通知する。詳細には、プロセッサ210Aは、マーク4663を、第2位置4662に対応する視界画像4617Aにおける位置4664に重畳させてモニタ130Aに表示する。プロセッサ210Aは、マーク4663を、第2仮想空間2711A内の第2位置4662に仮想オブジェクトとして配置することができる。プロセッサ210Aは、あるいは、視界画像4617Aの生成時に、第2位置4662に対応する位置4664にマーク4663を含めるようにすることもできる。ユーザ5Aは、視界画像4617Aを視認することによって、第2仮想空間2711A内の第2位置4662を示すマーク4663がモニタ130Aに表示されたことを確認する。ユーザ5Aは、マーク4663を確認することによって、アバターオブジェクト6Aの移動先として第2位置4662を指定したことを把握する。
マーク4663の確認後、ユーザ5Aは、アバターオブジェクト6Aを第2位置4662に移動させるための第1操作を行う。第1操作は、例えば、右コントローラ300RAのいずれかのボタンをユーザが押下することである。ステップS4505において、プロセッサ210Aは、アバターオブジェクト6Aを移動させるためのユーザ5Aの第1操作を検出する。
図47は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像4717Aを示す図である。ステップS4506において、プロセッサ210Aは、ユーザ5Aの第1操作が検出された場合、アバターオブジェクト制御モジュール1424として、図47(A)に示すように、第2仮想空間2711A内でアバターオブジェクト6Aを第1位置4661から第2位置4662まで離散的に移動させる。詳細には、プロセッサ210Aは、第1位置4661から第2位置4662までの間の各位置を経由することなく、アバターオブジェクト6Aを第1位置4661から第2位置4662まで瞬間的に移動させる(ワープ移動させる)。プロセッサ210Aは、さらに、アバターオブジェクト6Aの移動に連動させて仮想カメラ14Aも離散的に移動させる。
ステップS4507において、プロセッサ210Aは、第1位置4661から第2位置4662までのアバターオブジェクト6Aの移動距離4775に応じた課金情報を、タグオブジェクト2733Aに登録する。詳細には、プロセッサ210Aは、移動距離4775に、一定距離ごとの課金単価を乗算することによって、移動距離4775に応じた課金額を算出する。課金単価は、例えば、HMDシステム100の運営者によって予め決定されている。プロセッサ210Aは、例えば、第2仮想空間2711Aを定義する際、仮想空間データに含まれる単価情報が表す課金単価を、コンピュータ200Aに設定する。図47では、課金額として500円が算出される。プロセッサ210Aは、算出した課金額を表す課金情報を、タグオブジェクト2733Aに新たに登録する。プロセッサ210Aは、タグオブジェクト2733Aの表面に、登録された2つの課金情報が表す各課金額の合計(1000円)を表示する。
課金情報が登録された後、プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図47(A)に示すように、仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図47(A)に示す第2仮想空間2711Aに対応する視界画像4717Aを、図47(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像4717Aを視認することによって、アバターオブジェクト6Aがステージオブジェクト1532の近くの第2位置4662まで移動したことを認識する。ユーザ5Aは、さらに、アバターオブジェクト6Bがアバターオブジェクト6Aの目の前にいることを認識する。これにより、ユーザ5Aは、アバターオブジェクト6Bの近くでパフォーマンスを視聴することができるので、ライブをより楽しむことができる。ユーザ5Aは、さらに、タグオブジェクト2733Aを視認することによって、現時点での合計課金額が1000円であることを認識する。言い換えれば、ユーザ5Aは、アバターオブジェクト6Aを第2位置4662まで移動させた結果、移動料金として500円が新たにユーザ5Aに課金されたことを把握する。
図48は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像4817Aを示す図である。図48における第2仮想空間2711Aにおいて、図46と同一である。アバターオブジェクト6Aは第1位置4661に配置されている。タグオブジェクト2733Aには、入場料(500円)に対応する課金情報のみが登録されている。ユーザ5Aは、仮想右手1531RAの先端が、第2位置4662よりもステージオブジェクト1532から遠い第3位置4866を指し示すように、右手を動かす。プロセッサ210Aは、仮想右手1531RAの先端が指し示す第2仮想空間2711A内の第3位置4866を特定する。
プロセッサ210Aは、例えば、図48(A)に示す第2仮想空間2711Aに対応する視界画像4817Aを、図48(B)に示すようにモニタ130Aに表示する。プロセッサ210Aは、第2仮想空間2711Aにおける第3位置4866を示すマーク4663を、視界画像4817A上でユーザ5Aに通知する。詳細には、プロセッサ210Aは、マーク4663を、第2仮想空間2711Aにおける第3位置4866に対応する視界画像4817Aにおける位置4867に重畳させてモニタ130Aに表示する。プロセッサ210Aは、マーク4663を、第2仮想空間2711A内の第3位置4866に仮想オブジェクトとして配置することができる。プロセッサ210Aは、あるいは、視界画像4817Aの生成時に、第3位置4886に対応する位置4867にマーク4663を含めるようにすることもできる。ユーザ5Aは、視界画像4817Aを視認することによって、第2仮想空間2711A内の第3位置4866を示すマーク4663がモニタ130Aに表示されたことを確認する。ユーザ5Aは、マーク4663を確認することによって、アバターオブジェクト6Aの移動先として第3位置4866を指定したことを把握する。
図49は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像4917Aを示す図である。プロセッサ210Aは、アバターオブジェクト6Aを第3位置4866に移動させるためのユーザ5Aの第1操作を検出する。プロセッサ210Aは、ユーザ5Aの第1操作が検出された場合、図49(A)に示すように、第2仮想空間2711A内でアバターオブジェクト6Aおよび仮想カメラ14Aを第1位置4661から第3位置4866まで離散的に移動させる。プロセッサ210Aは、第1位置4661から第3位置4866までのアバターオブジェクト6Aの移動距離4969に応じた課金情報を、タグオブジェクト2733Aに登録する。詳細には、プロセッサ210Aは、移動距離4969に課金単価を乗算することによって、移動距離4969に応じた課金額を算出する。移動距離4969は移動距離4775よりも短いので、図49では、500円よりも安い250円が課金額として算出される。プロセッサ210Aは、算出した課金額を表す課金情報を、タグオブジェクト2733Aに新たに登録する。
プロセッサ210Aは、タグオブジェクト2733Aの表面に、登録された2つの課金情報が表す各課金額の合計(750円)を表示する。プロセッサ210Aは、例えば、図49(A)に示す第2仮想空間2711Aに対応する視界画像4917Aを、図49(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像4917Aを視認することによって、アバターオブジェクト6Aがステージオブジェクト1532からやや離れた第3位置4866まで移動したことを認識する。ユーザ5Aは、さらに、現時点での合計課金額が750円であることを認識する。言い換えれば、ユーザ5Aは、アバターオブジェクト6Aを第3位置4866まで移動させた結果、移動料金として250円が新たにユーザ5Aに課金されたことを把握する。図47および図49に示すように、プロセッサ210Aは、移動距離がより長いほどより高い課金額を表す課金情報をタグオブジェクト2733Aに登録する。
[本実施形態の主要な利点]
プロセッサ210Aは、アバターオブジェクト6Aの移動距離に応じた課金情報をタグオブジェクト2733Aに登録する。このように、HMDシステム100は、第2仮想空間2711Aにおける好適な課金方式をユーザ5Aに提供することができる。
ユーザ5Aは、ライブ中に第2仮想空間2711Aにおける所望の位置にアバターオブジェクト6Aを移動させることによって、自身の好きな位置でライブを視聴することができる。ユーザ5Aは、例えば、自身の好きなパフォーマンスが行われる場合はアバターオブジェクト6Aをアバターオブジェクト6Bの近くの位置まで移動させる。ユーザ5Aは、アバターオブジェクト6Bにより行われるパフォーマンスの内容に応じて視聴したい位置が異なる場合には、パフォーマンスの内容ごとに自身の好きな位置にアバターオブジェクト6Aを移動させてライブを視聴できる。ユーザ5Aは、例えば、自身の好きなパフォーマンスが2つのパートで構成されている場合、第1のパートは、アバターオブジェクト6Bの正面位置にアバターオブジェクト6Aを移動させて視聴し、第2のパートは、ステージオブジェクト1532の上手側にアバターオブジェクト6Aを移動させて斜め方向からアバターオブジェクト6Bを視聴することができる。パフォーマンスを行うアバターオブジェクト6Bが第2仮想空間2711A内に複数存在し、かつ、各アバターオブジェクト6Bのステージオブジェクト1532上での位置が入れ替わる場合、ユーザ5Aは、自身の好きなアバターオブジェクト6Bの位置に追従するようにアバターオブジェクト6Aを移動させてライブを視聴することもできる。これらの結果、HMDシステム100は、ユーザ5Aの嗜好に応じてライブをより楽しませることができる。
[アバターオブジェクト6Bの移動]
以上では、アバターオブジェクト6Aが任意のタイミングで移動可能である例について説明したが、アバターオブジェクト6Aの移動はこの例に限定されない。以下では、アバターオブジェクト6Bが指定したタイミングでのみアバターオブジェクト6Aの移動が可能である例について、詳細に説明する。
図50は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像5017Aを示す図である。図50では、第2仮想空間2711Aにおいてアバターオブジェクト6Bによるパフォーマンスが行われている。タグオブジェクト2733Aには、入場料(500円)に対応する課金情報のみが登録されている。アバターオブジェクト6Bは、ステージオブジェクト1532上の右端近くの第1位置5070に配置されている。アバターオブジェクト6Aは、第2仮想空間2711Aにおける、ステージオブジェクト1532に近くにおける、第1位置5070に対向する第2位置5071に配置されている。このように、アバターオブジェクト6Aは、アバターオブジェクト6Bと向き合うようにして、アバターオブジェクト6Bの近くでアバターオブジェクト6Bによるパフォーマンスを視聴している。
プロセッサ210Aは、例えば、図50(A)に示す第2仮想空間2711Aに対応する視界画像5017Aを、図50(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像5017Aを視認することによって、アバターオブジェクト6Aの近くにいるアバターオブジェクト6Bのパフォーマンスを楽しむ。
図51は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像5117Bを示す図である。図51に示す第2仮想空間2711Bは、図50に示す第2仮想空間2711Aに同期されている。プロセッサ210Bは、例えば、図51(A)に示す第2仮想空間2711Bに対応する視界画像5117Bを、図51(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像5117Bを視認することによって、アバターオブジェクト6Aがアバターオブジェクト6Bの近くでパフォーマンスを視聴していることを認識する。
図52は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像5217Aを示す図である。プロセッサ210Aは、第2仮想空間2711A内でアバターオブジェクト6Aを移動させることを可能とさせる条件が成立していない場合、アバターオブジェクト6Aが第2仮想空間2711A内で移動することを禁止している。図52において、プロセッサ210Aは、ユーザ5Aの右手の動きに応じて、仮想右手1531RAの先端が第2仮想空間2711Aにおける所望の位置を指し示すように、仮想右手1531RAを動かす。しかし、プロセッサ210Aは、アバターオブジェクト6Aの移動が禁止されていることに応じて、仮想右手1531RAの先端が指し示す位置を特定しない。
プロセッサ210Aは、例えば、図52(A)に示す第2仮想空間2711Aに対応する視界画像5217Aを、図52(B)に示すようにモニタ130Aに表示する。プロセッサ210Aは、仮想右手1531RAの先端が指し示す位置を特定しないことに応じて、当該位置を示すマーク4663を視界画像5217A上でユーザ5Aに通知しない。ユーザ5Aは、視界画像5217Aを視認することによって、仮想右手1531RAの先端で第2仮想空間2711A内の所望の位置を指し示したにも関わらず、位置を示すマーク4663がモニタ130Aに表示されないことを確認する。ユーザ5Aは、さらに、マーク4663が表示されないために、アバターオブジェクト6Aを移動させることができないことを把握する。
図53は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像5317Bを示す図である。ユーザ5Bは、ステージオブジェクト1532においてアバターオブジェクト6Bがパフォーマンスを実行する位置を、ステージオブジェクト1532の左端に近い第3位置5372に変更することを望む。ユーザ5Bは、この希望を叶えるため、仮想左手1531LBの先端が第3位置5372を指し示すように、左手を動かす。プロセッサ210Bは、ユーザ5Bの左手の動きに応じて、第2仮想空間2711Bにおいて仮想左手1531LBを動かす。プロセッサ210Bは、仮想左手1531LBの先端が指し示す第2仮想空間2711B内の第3位置5372を特定する。
プロセッサ210Bは、例えば、図53(A)に示す第2仮想空間2711Bに対応する視界画像5317Bを、図53(B)に示すようにモニタ130Bに表示する。プロセッサ210Bは、第2仮想空間2711Bにおける第3位置5372を示すマーク4663を、視界画像5317B上でユーザ5Bに通知する。詳細には、プロセッサ210Bは、マーク4663を、第2仮想空間2711Bにおける第3位置5372に対応する視界画像5317Bにおける位置5373に重畳させてモニタ130Bに表示する。プロセッサ210Bは、マーク4663を、第2仮想空間2711B内の第3位置5372に仮想オブジェクトとして配置することができる。プロセッサ210Bは、あるいは、視界画像5317Bの生成時に、第3位置5372に対応する位置5373にマーク4663を含めるようにすることもできる。ユーザ5Bは、視界画像5317Bを視認することによって、第3位置5372を示すマーク4663がモニタ130Bに表示されたことを確認する。ユーザ5Bは、マーク4663を確認することによって、アバターオブジェクト6Bの移動先として第3位置5372を指定したことを把握する。
マーク4663の確認後、ユーザ5Bは、アバターオブジェクト6Bを第3位置5372に移動させるための第2操作を行う。第2操作は、例えば、右コントローラ300RAのいずれかのボタンをユーザ5Bが押下することである。プロセッサ210Bは、アバターオブジェクト6Bを移動させるためのユーザ5Bの第2操作を検出する。
図54は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像5417Bを示す図である。プロセッサ210Bは、ユーザ5Bの第2操作が検出された場合、図54(A)に示すように、第2仮想空間2711B内でアバターオブジェクト6Bおよび仮想カメラ14Bを第1位置5070から第3位置5372まで離散的に移動させる。プロセッサ210Bは、例えば、図54(A)に示す第2仮想空間2711Bに対応する視界画像5417Bを、図54(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像5417Bを視認することによって、アバターオブジェクト6Bが第3位置5372まで移動したことを認識する。ユーザ5Bは、さらに、アバターオブジェクト6Bが移動した結果、アバターオブジェクト6Aがアバターオブジェクト6Bの視界内からいなくなったことを認識する。
図55は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像5517Aを示す図である。第2仮想空間2711Bにおいてアバターオブジェクト6Bが移動した後、プロセッサ210Aは、アバターオブジェクト6Bの最新のアバター情報をサーバ600から受信する。プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、第2仮想空間2711Aにおいてアバターオブジェクト6Bを第1位置5070から第3位置5372まで離散的に移動させる。これにより、アバターオブジェクト6Bは視界領域15A外に配置される。プロセッサ210Aは、例えば、図55(A)に示す第2仮想空間2711Aに対応する視界画像5517Aを、図55(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像5517Aを視認することによって、アバターオブジェクト6Bがステージオブジェクト1532上を移動したために、アバターオブジェクト6Aの視界内からいなくなったことを認識する。
プロセッサ210Aは、第2仮想空間2711A内でアバターオブジェクト6Bが移動した場合、第2仮想空間2711A内でアバターオブジェクト6Aを移動させることを可能とする。ただし、第2仮想空間2711A内でアバターオブジェクト6Aを移動させることを可能とさせる条件は、これに限定されるものではない。プロセッサ210Aは、アバターオブジェクト6Aが移動できるようになったことを、例えば音声などでユーザ5Aに通知する。プロセッサ210Aは、アバターオブジェクト6Aが移動できるようなったことを、第2仮想空間2711A内の照明を変更することによってユーザ5Aに通知することもできる。
図56は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像5617Aを示す図である。図56では、プロセッサ210Aは、アバターオブジェクト6Bが移動したことに応じて、第2仮想空間2711A内でアバターオブジェクト6Aが移動することを許可している。ユーザ5Aは、右側を向くことによって、アバターオブジェクト6Bがステージオブジェクト1532の右端近くに移動したことを認識する。ユーザ5Aは、移動後のアバターオブジェクト6Bに近い第2仮想空間2711Aにおける第4位置5674にアバターオブジェクト6Aを移動させることによって、引き続きアバターオブジェクト6Bの近くでライブを視聴することを望む。
ユーザ5Aは、この希望を叶えるために、仮想右手1531RAの先端が第4位置5674を指し示すように、右手を動かす。プロセッサ210Aは、ユーザ5Aの右手の動きに応じて仮想右手1531RAを動かす。プロセッサ210Aは、アバターオブジェクト6Aの移動が許可されていることに応じて、移動後の仮想右手1531RAの先端が指し示す第4位置5674を特定する。
プロセッサ210Aは、例えば、図56(A)に示す第2仮想空間2711Aに対応する視界画像5617Aを、図56(B)に示すようにモニタ130Aに表示する。プロセッサ210Aは、第2仮想空間2711Aにおける第4位置5674を示すマーク4663を、第2仮想空間2711Aにおける第4位置5674に対応する視界画像4817Aにおける位置5675に重畳させてモニタ130Aに表示する。プロセッサ210Aは、マーク4663を、第2仮想空間2711A内の第4位置5674に仮想オブジェクトとして配置することができる。プロセッサ210Aは、あるいは、視界画像5617Aの生成時に、第4位置5674に対応する位置5675にマーク4663を含めるようにすることもできる。ユーザ5Aは、視界画像5617Aを視認することによって、アバターオブジェクト6Bがステージオブジェクト1532の右端近くまで移動したことを認識する。ユーザ5Aは、さらに、視界画像5617Aに含まれるマーク4663を確認することによって、アバターオブジェクト6Aの移動先として第4位置5674を指定したことを把握する。
図57は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像5717Aを示す図である。プロセッサ210Aは、アバターオブジェクト6Aを第4位置5674に移動させるためのユーザ5Aの第1操作を検出する。プロセッサ210Aは、ユーザ5Aの第1操作が検出された場合、図57(A)に示すように、第2仮想空間2711A内でアバターオブジェクト6Aおよび仮想カメラ14Aを第2位置5071から第4位置5674まで離散的に移動させる。プロセッサ210Aは、第2位置5071から第4位置5674までのアバターオブジェクト6Aの移動距離5776に応じた課金情報を、タグオブジェクト2733Aに登録する。
プロセッサ210Aは、例えば、図57(A)に示す第2仮想空間2711Aに対応する視界画像5717Aを、図57(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像5717Aを視認することによって、アバターオブジェクト6Aがアバターオブジェクト6Bの近くの第4位置5674まで移動したことを認識する。ユーザ5Aは、さらに、アバターオブジェクト6Bがアバターオブジェクト6Aの目の前にいることを認識する。これにより、ユーザ5Aは、引き続きアバターオブジェクト6Bの近くでライブを楽しむことができる。
図50~図57に示す形態では、アバターオブジェクト6Bが第2仮想空間2711A内で移動した結果、ユーザ5Aは、アバターオブジェクト6Aをアバターオブジェクト6Bの近くに移動させる動機を強く持つ。このように、ユーザ5Bは、アバターオブジェクト6Aを移動させることによって、アバターオブジェクト6Aの移動をユーザ5Aに強く促すことができる。したがって、ユーザ5Aが第2仮想空間2711A内でアバターオブジェクト6Aを積極的に移動することが期待できるので、移動距離に応じた課金額をユーザ5Aに課金できる可能性をより高めることができる。その結果、アバターオブジェクト6Bのライブの売り上げを増加させる可能性を高めることができる。
[変形例]
プロセッサ210Aは、移動距離に応じた課金情報を、必ずしもタグオブジェクト2733Aに登録する必要はない。プロセッサ210Aは、例えば、移動距離に応じた課金情報を、アバターオブジェクト6Aに関連付けてアバターオブジェクト6Aに登録することもできる。プロセッサ210Aは、移動距離に応じた課金情報をタグオブジェクト2733Aに登録する代わりに、移動距離に応じた課金に関する任意の処理を実行することができる。課金に関する処理は、例えば、課金情報をタグオブジェクト2733Aに登録することなくサーバ600に送信することである。
プロセッサ210Aは、アバターオブジェクト6Aの移動回数に応じた課金に関する処理を実行することもできる。プロセッサ210Aは、例えば、移動回数に応じた課金情報を、タグオブジェクト2733Aに登録する。プロセッサ210Aは、例えば、移動回数がより多いほどより高くなる課金額を算出し、算出した課金額を表す課金情報をタグオブジェクト2733Aに登録する。この場合、プロセッサ210Aは、アバターオブジェクト6Aの移動回数に応じた最適な課金情報をタグオブジェクト2733Aに登録することができる。プロセッサ210Aは、さらに、アバターオブジェクト6Aが第2仮想空間2711A内を無制限に移動することによってアバターオブジェクト6Bのライブを阻害することを、防止することができる。
プロセッサ210Aは、移動距離および移動回数の少なくともいずれかに応じた課金処理を実行することができる。プロセッサ210Aは、移動距離のみに応じた課金に関する第1処理、移動回数のみに応じた課金に関する第2処理、ならびに移動距離および移動回数の双方に応じた課金に関する第3処理のうち、任意の処理を実行することができる。
プロセッサ210Aは、アバターオブジェクト6Aの移動距離および移動方向に応じた課金に関する処理を実行することもできる。プロセッサ210Aは、例えば、アバターオブジェクト6Aの移動方向がアバターオブジェクト6Bにより近づく方向である場合、課金単価をより高くする。プロセッサ210Aは、例えば、アバターオブジェクト6Aの移動方向がアバターオブジェクト6Bからより離れる方向である場合、課金単価をより安くする。
プロセッサ210Aは、第2仮想空間2711A内でアバターオブジェクト6Aを連続的に移動させることもできる。プロセッサ210Aは、例えば、ユーザ5Aによる第1操作に応じて、第1位置4661から第2位置4662までの間の各位置をすべて経由するように、アバターオブジェクト6Aを第1位置4661から第2位置4662まで移動させる。この場合も、プロセッサ210Aは、移動距離4775に応じた課金額を表す課金情報を、タグオブジェクト2733Aに登録する。
プロセッサ210Aは、ユーザ5Bの第1操作を検出することなく、第2仮想空間2711A内でアバターオブジェクト6Aを自動的に移動させることもできる。プロセッサ210Aは、アバターオブジェクト6Aを自動的に移動させた場合も、移動距離に応じた課金額を表す課金情報をタグオブジェクト2733Aに登録する。
本実施形態では、プロセッサ210Aは、第2仮想空間2711Aにおいてアバターオブジェクト6Aとは異なるアバターオブジェクト6が配置されない位置にのみ、アバターオブジェクト6Aを移動させることができることを前提とするが、これに限定されるものではない。言い換えれば、ユーザ5Aは、アバターオブジェクト6Aとは異なるアバターオブジェクト6が配置される位置を、アバターオブジェクト6Aの異動先の位置として指定することはできないことを前提とするが、これに限定されるものではない。
プロセッサ210Aは、第2仮想空間2711Aにおける規定の範囲内の位置にだけ、アバターオブジェクト6Aを移動させることができることを前提とする。プロセッサ210Aは、例えば、ステージオブジェクト1532上にアバターオブジェクト6Aを移動することを原則として禁止する。プロセッサ210Aは、ユーザ5Bによる許可があった場合、ステージオブジェクト1532上にアバターオブジェクト6Aを移動させることもできる。ただし、これに限定されるものではない。
ユーザ5Bは、アバターオブジェクト6Aの移動を許可するための第2操作を行うことができる。プロセッサ210Bは、ユーザ5Bの第2操作を検出した場合、第2操作の検出を示す検出情報をサーバ600を介してコンピュータ200Aに送信する。プロセッサ210Aは、コンピュータ200Bから送信された検出情報を受信する。プロセッサ210Aは、受信した検出情報に基づいて、ユーザ5Bによる第2操作を検出する。プロセッサ210Aは、第2操作を検出した場合、第2仮想空間2711A内でアバターオブジェクト6Aを移動させることを可能とする。プロセッサ210Aは、例えば、第2操作を検出してから、一定期間、移動させることを可能とする。第2操作は、ユーザ5Bの操作そのものではなく、ユーザ5Bの発話内容などのユーザ5Bの動作であってもよいし、移動させることを可能とする期間を指定する情報としてもよい。これにより、プロセッサ210Aは、ライブ中にユーザ5Bの許可無く勝手にアバターオブジェクト6Aが移動することを防止することができる。言い換えれば、ユーザ5Bは、アバターオブジェクト6Aが移動することができるタイミングを、自らの意志で指定することができる。これにより、ユーザ5Bは、ライブの演出をよりユーザ5Bの望むような形に制御することができる。
プロセッサ210Aは、第2仮想空間2711Aにおける第1事象の発生を検出することができる。第1事象は、例えば、アバターオブジェクト6Bが何らかの行動を取ることである。アバターオブジェクト6Bの行動は、例えば、図55に示すように、アバターオブジェクト6Bがステージオブジェクト1532上の他の位置に移動することである。第1事象は、ステージオブジェクト1532上でアバターオブジェクト6Bが一定時間以上、規定のパフォーマンスを実行することでもよい。プロセッサ210Aは、第1事象を検出した場合、アバターオブジェクト6Aを第2仮想空間2711A内で移動させることを可能とする。これにより、アバターオブジェクト6Aがライブ中に無作為に移動することを防止することができる。
HMDシステム100において、一定距離ごとの課金単価は、第2仮想空間2711Aのサイズに応じて異なっていてもよい。例えば、第2仮想空間2711Aのサイズがより大きいほど、課金単価はより安い。プロセッサ210Aは、定義された第2仮想空間2711Aのサイズが第1サイズである場合、課金単価として第1課金単価(例えば50円)をコンピュータ200Aに設定する。プロセッサ210Aは、定義された第2仮想空間2711Aのサイズが第1サイズよりも大きい第2サイズの場合、課金単価として第1課金単価よりも安い第2課金単価(例えば20円)をコンピュータ200Aに設定する。プロセッサ210Aは、コンピュータ200Aに設定された課金単価にアバターオブジェクト6Aの移動距離を乗算することによって、第2仮想空間2711Aのサイズおよび移動距離の双方に応じた最適な課金額を算出することができる。
プロセッサ210Aは、図43に示すライブ映像4239が再生される第2仮想空間4311A内でアバターオブジェクト6Aが移動した場合も、移動距離および移動回数の少なくともいずれかに応じた課金に関する処理を実行することができる。プロセッサ210Aは、他にも、アバターオブジェクト6Bによるパフォーマンスが行われず、かつ、ライブ映像4239が再生されない仮想空間内でアバターオブジェクト6Aが移動した場合も、移動距離および移動回数の少なくともいずれかに応じた課金に関する処理を実行することができる。
〔実施形態3〕
本実施形態において、プロセッサ210Aは、ユーザ5Aに対する課金および決済に関する処理を、実施形態1に記載されるタグオブジェクト2733Aを用いた方式によって実行する。しかし、これに限定されず、プロセッサ210Aは、実施形態1に係る方式とは異なる任意の方式によって、ユーザ5Aに対する課金および決済に関する処理を実行することもできる。
本実施形態において、プロセッサ210Cは、ユーザ5Cに対する課金および決済に関する処理を、実施形態1に記載されるタグオブジェクト2733Aを用いた方式と同一の方式によって実行する。しかし、これに限定されず、プロセッサ210Cは、実施形態1に係る方式とは異なる任意の方式によって、ユーザ5Cに対する課金および決済に関する処理を実行することもできる。
[視点共有処理フロー]
図58は、ある実施の形態に従うHMDセット110Aにおいて実行される処理の一部を表すシーケンスチャートである。図59は、ある実施の形態に従う第2仮想空間2711Cおよび視界画像5917Cを示す図である。図59では、プロセッサ210Cは、ユーザ5C(第2ユーザ)に提供される第2仮想空間2711Cにおいて、ユーザ5Bの動きに応じて、ユーザ5B(第3ユーザ)に関連付けられるアバターオブジェクト6B(第3アバター)にパフォーマンス(第1パフォーマンス)を実行させる。プロセッサ210Cは、ユーザ5Cに関連付けられるアバターオブジェクト6C(第2アバター)に、アバターオブジェクト6Bの近くでパフォーマンスを視聴させる。プロセッサ210Cは、ユーザ5A(第1ユーザ)に関連付けられるアバターオブジェクト6A(第1アバター)に、アバターオブジェクト6Bから離れた位置でパフォーマンスを視聴させる。
第2仮想空間2711Cに同期される第2仮想空間2711Aにおいて、プロセッサ210Aは、ユーザ5Bの動きに応じて、アバターオブジェクト6Bにパフォーマンスを実行させる。プロセッサ210Aは、第2仮想空間2711Aにおいて、アバターオブジェクト6Bによるパフォーマンスをアバターオブジェクト6Aおよび6Cに視聴させる。
プロセッサ210Cは、ステージオブジェクト1532へのアバターオブジェクト6Cの移動を案内するメッセージを、ライブ中にユーザ5Cに通知する。プロセッサ210Cは、例えば、図59(A)に示すように、メッセージをタグオブジェクト2733Cに表示する。メッセージは、ステージオブジェクト1532への移動をユーザ5Cに案内するテキストと、アバターオブジェクト6Cを移動させる場合にユーザ5Cに課金される課金額とを含む。図59の例では、アバターオブジェクト6Cをステージオブジェクト1532上に移動させるための課金額は、1000円である。
メッセージがタグオブジェクト2733Cに表示された後、プロセッサ210Cは、ユーザ5Cの左手の動きに応じて、図59(A)に示すように、仮想左手1531LCを視界領域15C内に移動させる。プロセッサ210Cは、例えば、図59(A)に示す第2仮想空間2711Cに対応する視界画像5917Cを、図59(B)に示すようにモニタ130Cに表示する。ユーザ5Cは、視界画像5917Cを視認することによって、タグオブジェクト2733Cに表示されるメッセージを確認する。これにより、ユーザ5Cは、新たに1000円の課金額を支払えば、アバターオブジェクト6Cをステージオブジェクト1532上に移動させることができることを認識する。
図60は、ある実施の形態に従う第2仮想空間2711Cおよび視界画像6017Cを示す図である。ユーザ5Cは、視界画像6017Cを視聴することによって、タグオブジェクト2733Cに表示されたメッセージを確認する。ユーザ5Cは、メッセージを確認した結果、アバターオブジェクト6Cをステージオブジェクト1532上に移動させることを望む。この希望を叶えるため、ユーザ5Cは、タグオブジェクト2733Cを選択するための操作を行う。プロセッサ210Cは、ユーザ5Cの操作を検出したことに応じて、タグオブジェクト2733Cに、ステージ移動に対応する課金情報を登録する。詳細には、プロセッサ210Cは、アバターオブジェクト6Cをステージオブジェクト1532上に移動させるたの課金額を表す課金情報をタグオブジェクト2733Cに登録する。課金情報の登録後、プロセッサ210Cは、図60(A)に示すように、アバターオブジェクト6Cをステージオブジェクト1532上に移動させる。プロセッサ210Cは、ステージオブジェクト1532におけるアバターオブジェクト6Bの目の前の位置に、移動後のアバターオブジェクト6Cを配置する。プロセッサ210Cは、アバターオブジェクト6Cの移動後、アバターオブジェクト6Cのアバター情報をサーバ600に送信する。
プロセッサ210Cは、例えば、図60(A)に示す第2仮想空間2711Cに対応する視界画像6017Cを、図60(B)に示すようにモニタ130Cに表示する。ユーザ5Cは、視界画像6017Cを視認することによって、アバターオブジェクト6Cがステージオブジェクト1532上に移動したことを認識する。ユーザ5Cは、さらに、アバターオブジェクト6Bの目の前でパフォーマンスを楽しんだり、アバターオブジェクト6Bとの(言い換えれば、ユーザ5Bとの)交流を楽しんだりすることができる。
図61は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像6117Aを示す図である。ステップS5801において、プロセッサ210Aは、第2仮想空間2711Cにおいてアバターオブジェクト6Cがステージオブジェクト1532上に移動した後、アバターオブジェクト6Cのアバター情報をサーバ600から受信する。ステップS5802において、プロセッサ210Aは、受信したアバター情報に基づいて、図61(A)に示すように、第2仮想空間2711Aにおいてアバターオブジェクト6Cをステージオブジェクト1532上に移動させる。言い換えれば、プロセッサ210Aとしては、第2仮想空間2711Aを、図60に示す第2仮想空間2711Cに同期させる。プロセッサ210Aは、プロセッサ210Cは、ステージオブジェクト1532におけるアバターオブジェクト6Bの目の前の位置に、アバターオブジェクト6Cを配置する。
プロセッサ210Aは、アバターオブジェクト6Cをステージオブジェクト1532上に移動した後、アバターオブジェクト6Bのアバター情報をサーバ600から受信する。プロセッサ210Aは、受信したアバター情報に含まれる動き情報に応じて、アバターオブジェクト6Bに、アバターオブジェクト6Cに対するパフォーマンス(第2パフォーマンス)を実行させる。このように、第2仮想空間2711Aにおいて、アバターオブジェクト6Cは、ステージ移動に対応する課金情報がタグオブジェクト2733Cに登録されたことに応じて、アバターオブジェクト6Cに対するアバターオブジェクト6Bによるパフォーマンスを視聴している。
プロセッサ210Aは、アバターオブジェクト6Cがステージオブジェクト1532上に移動した後、アバターオブジェクト6Aとは異なる他のアバターオブジェクト6の視点をアバターオブジェクト6Aに共有させることをユーザ5Aに案内するメッセージを、ライブ中にユーザ5Aに通知する。プロセッサ210Aは、例えば、タグオブジェクト2733Aにメッセージを表示する。メッセージは、視点共有をユーザ5Aに案内するテキストと、視点を共有させる場合にユーザ5Aに課金される課金額とを含む。図61の例では、視点共有のためにユーザ5Aに課金される課金額は、200円である。メッセージがタグオブジェクト2733Aに表示された後、プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図61(A)に示すように、仮想左手1531LAを視界領域15A内に移動させる。
プロセッサ210Aは、例えば、図61(A)に示す第2仮想空間2711Aに対応する視界画像6117Aを、図61(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像6117Aを視認することによって、アバターオブジェクト6Cがステージオブジェクト1532上に移動したことを認識する。ユーザ5Aは、さらに、アバターオブジェクト6Cがステージオブジェクト1532上でアバターオブジェクト6Bの近くでパフォーマンスを視認していることを認識する。ユーザ5Aは、さらに、タグオブジェクト2733Cに表示されるメッセージを確認することによって、新たに200円の課金額を支払えば、いずれかのアバターオブジェクト6の視点をアバターオブジェクト6Aに共有させることができることを認識する。
[課金による視点共有]
図62は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像3417Aを示す図である。ユーザ5Aは、タグオブジェクト2733Aに表示されたメッセージを確認した後、アバターオブジェクト6Cの視点をアバターオブジェクト6Aに共有させることを望む。ユーザ5Aは、この希望を叶えるため、タグオブジェクト2733Aを選択するための操作を行う。ステップS5803において、プロセッサ210Aは、ユーザ5Aの操作を検出した場合、視点共有に対応する課金情報をタグオブジェクト2733Aに登録する。詳細には、プロセッサ210Aは、視点共有に必要な課金額(200円)を表す課金情報をタグオブジェクト2733Aに新たに登録する。プロセッサ210Aは、課金情報が登録されたことに応じて、第2仮想空間2711Aにおいて、他のアバターオブジェクト6の視点をアバターオブジェクト6Aに共有させることを可能とする。プロセッサ210Aは、視点共有が可能になったことを、例えば音声などでユーザ5Aに通知する。プロセッサ210Aは、視点共有が可能になったことを、第2仮想空間2711A内の照明を変更することによってユーザ5Aに通知することもできる。
プロセッサ210Aは、タグオブジェクト2733Aが選択された後の右手の動きに応じて、図62(A)に示すように、仮想右手153の1RAの先端がアバターオブジェクト6Cを指し示すように、仮想右手1531RAを動かす。ステップS5804において、プロセッサ210Aは、仮想右手1531RAの先端が指し示すアバターオブジェクト6Cを特定する。
プロセッサ210Aは、例えば、図62(A)に示す第2仮想空間2711Aに対応する視界画像6217Aを、図62(B)に示すようにモニタ130Aに表示する。ステップ5805において、プロセッサ210Aは、アバターオブジェクト6Cを示すマーク6277を、視界画像6217Aにおいてアバターオブジェクト6Cに重畳させてモニタ130Aに表示する。プロセッサ210Aは、マーク6277を、アバターオブジェクト6Cに接触または近接する仮想オブジェクトとして第2仮想空間2711Aに配置することもできる。プロセッサ210Aは、視界画像6217Aの生成時に、視界画像4617A内のアバターオブジェクト6Cの位置にマーク6277を含めるようにすることもできる。ユーザ5Aは、視界画像6217A内のマーク6277を視認することによって、アバターオブジェクト6Cを指定したことを把握する。マーク6277の確認後、ユーザ5Aは、アバターオブジェクト6Cの視点をアバターオブジェクト6Aに共有させるための第1操作を行う。第1操作は、例えば、右コントローラ300RAのいずれかのボタンをユーザ5Aが押下することである。
図63は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像6317Aを示す図である。ステップS5806において、プロセッサ210Aは、第1操作が検出されたことに応じて、アバターオブジェクト6Cを選択する。ステップS5807において、プロセッサ210Aは、アバターオブジェクト6Cが選択されたことに応じて、アバターオブジェクト6Cに対するパフォーマンスを視聴しているアバターオブジェクト6Cの視点を、アバターオブジェクト6Aに共有させる。詳細には、プロセッサ210Aは、仮想カメラ14Aを、アバターオブジェクト6Aの位置からアバターオブジェクト6Cの位置まで移動させる。このとき、プロセッサ210Aは、アバターオブジェクト6Aを移動させない。したがって、仮想カメラ14Aが移動した後、第2仮想空間2711Aにおいてアバターオブジェクト6Aおよび仮想カメラ14Aが配置される位置は、互いに異なる。プロセッサ210Aは、アバターオブジェクト6Cの頭部の向きに応じて、移動後の仮想カメラ14Aの向きを制御する。これにより、アバターオブジェクト6Aはアバターオブジェクト6Cの視点を共有することができる。
プロセッサ210Aは、視点共有に対応する課金情報がタグオブジェクト2733Aに登録された場合、アバターオブジェクト6Cを選択するためのUIをタグオブジェクト2733A上に表示することもできる。この場合、ユーザ5Aは、タグオブジェクト2733Aに表示されるUIへの入力を通じて、アバターオブジェクト6Cを選択する。プロセッサ210Aは、UIを通じて選択されたアバターオブジェクト6Cの視点を、アバターオブジェクト6Aに共有させる。プロセッサ210Aは、視点共有に対応する課金情報がタグオブジェクト2733Aに登録された場合、ユーザ5Aにアバターオブジェクト6Cを選択させることなく、アバターオブジェクト6Cの視点を自動的にアバターオブジェクト6Aに共有させることもできる。
視点共有後、ステップS5808において、プロセッサ210Aは、アバターオブジェクト6Bのアバター情報をサーバ600から受信する。ステップS5809において、プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、アバターオブジェクト6Bに、アバターオブジェクト6Cに対するパフォーマンス(第2パフォーマンス)を実行させる。このように、アバターオブジェクト6Cは、ステージ移動に対応する課金情報がタグオブジェクト2733Cに登録されたことに応じて、第2仮想空間2711Aにおいてアバターオブジェクト6Cに対するアバターオブジェクト6Bによるパフォーマンスを視聴している。
プロセッサ210Aは、例えば、図63(A)に示す第2仮想空間2711Aに対応する視界画像6317A(第1視界画像)を、図63(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像6317Aを視認することによって、アバターオブジェクト6Cの視点がアバターオブジェクト6Aに共有されたことを認識する。言い換えれば、ユーザ5Aは、ユーザ5Cと同様に、アバターオブジェクト6Bの目の前で、アバターオブジェクト6Cに対するパフォーマンスを視聴することができる。
図63(A)では、アバターオブジェクト6Cの視点がアバターオブジェクト6Aに共有されるが、アバターオブジェクト6Aそのものはアバターオブジェクト6Bから遠く離れた位置にいる。したがって、ユーザ5Aは、アバターオブジェクト6Aをアバターオブジェクト6Bと直接的に交流させることはできない。例えば、ユーザ5Aは、仮想右手1531RAをアバターオブジェクト6Bに向かって差し出したり、振らせたりすることはできない。プロセッサ210Aは、ユーザ5Bが発した音声をスピーカ180Aに出力しないようにしてもよい。これにより、ユーザ5Aが、ユーザ5Bがアバターオブジェクト6Cに向かって語りかける音声を聴取することはできないようにしてもよい。このように、ユーザ5Aは、ユーザ5Cがアバターオブジェクト6B(ユーザ5B)と交流する様子を、アバターオブジェクト6Cの視点で視認することができるのみである。視点共有のための課金額(200円)は、ステージオブジェクト1532上への移動のための課金額(1000円)よりも安いので、ユーザ5Aは、視点共有後にアバターオブジェクト6Aをアバターオブジェクト6Bと交流させることができないことに納得する。さらに、ユーザ5Aには、視点共有を試してみようという動機が与えられる。
図64は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像6417Bを示す図である。図64(A)において、ステージオブジェクト1532上にアバターオブジェクト6Bおよびアバターオブジェクト6Cが配置されている。アバターオブジェクト6Aを含む異なる3つのアバターオブジェクト6が、アバターオブジェクト6Cの視点を共有している。プロセッサ210Bは、アバターオブジェクト6Cの視点を共有しているアバターオブジェクト6の数をユーザ5Bに通知するためのモニタオブジェクト6478を、アバターオブジェクト6Cに関連付けて第2仮想空間2711Bに配置する。モニタオブジェクト6478は、アバターオブジェクト6Cの上に配置される。プロセッサ210Bは、モニタオブジェクト6478に、アバターオブジェクト6Cの視点を共有しているアバターオブジェクト6の数を表示する。
プロセッサ210Bは、例えば、図64(A)に示す第2仮想空間2711Bに対応する視界画像6417Bを、図64(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像6417Bを視認することによって、アバターオブジェクト6Bの目の前でアバターオブジェクト6Cがパフォーマンスを視聴していることを認識する。ユーザ5Bは、さらに、モニタオブジェクト6478に表示される数を確認することによって、アバターオブジェクト6Cの視点を他の3つのアバターオブジェクト6が共有していることを認識する。言い換えれば、ユーザ5Bは、アバターオブジェクト6Cに向けたパフォーマンスが、どのくらいの数の他のユーザ5に受けているのかを把握することができる。
[課金によるアバターオブジェクト6Aの移動]
図65は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像6517Aを示す図である。図65(A)に示すように、プロセッサ210Aは、アバターオブジェクト6Cをステージオブジェクト1532上に移動させた後、規定の条件(例えば、一定時間の経過)が成立した場合、アバターオブジェクト6Cを第2仮想空間2711Aにおける元の位置に戻す。ステップS5810において、プロセッサ210Aは、アバターオブジェクト6Cを元の位置に戻した場合、視点共有を終了する。詳細には、プロセッサ210Aは、仮想カメラ14Aをアバターオブジェクト6Aの位置まで移動させる。
視点共有の終了後、プロセッサ210Aは、ステージオブジェクト1532上へのアバターオブジェクト6Aの移動を案内するメッセージを、ライブ中にユーザ5Aに通知する。プロセッサ210Aは、例えば、タグオブジェクト2733Aにメッセージを表示する。メッセージは、ステージオブジェクト1532への移動をユーザ5Aに案内するテキストと、アバターオブジェクト6Aをステージオブジェクト1532上に移動させる場合にユーザ5Aに課金される課金額とを含む。図65の例では、アバターオブジェクト6Aをステージオブジェクト1532上に移動させるための課金額は、1000円である。
メッセージの表示後、プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図65(A)に示すように、仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図65(A)に示す第2仮想空間2711Aに対応する視界画像6517Aを、図65(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像6517Aを視認することによって、視点の共有が終了したことを認識する。ユーザ5Aは、さらに、タグオブジェクト2733Aに表示されるメッセージを確認することによって、新たに1000円の課金額を支払えばアバターオブジェクト6Aをステージオブジェクト1532上に移動させることできることを認識する。
図66は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像6617Aを示す図である。ユーザ5Aは、アバターオブジェクト6Cの視点をアバターオブジェクト6Aに共有させた体験を楽しんだ結果、アバターオブジェクト6Aをステージオブジェクト1532上に移動させることによって、アバターオブジェクト6Bと直接交流することを望む。この希望を叶えるため、ユーザ5Aは、タグオブジェクト2733Aに表示されたメッセージを確認した後、タグオブジェクト2733Aを選択するための操作を行う。ステップS5811において、プロセッサ210Aは、タグオブジェクト2733Aを選択するためのユーザ5Aの操作を検出した場合、ステージ移動に対応する課金情報をタグオブジェクト2733Aに登録する。詳細には、プロセッサ210Aは、視点の共有が終了した後、ステージ移動に対応する課金額(1000円)を表す課金情報を、タグオブジェクト2733Aに新たに登録する。
ステップS5812において、プロセッサ210Aは、ステージ移動に対応する課金情報がタグオブジェクト2733Aに登録された場合、図66(A)に示すように、アバターオブジェクト6Aをステージオブジェクト1532上に移動させる。プロセッサ210Aは、ステージオブジェクト1532におけるアバターオブジェクト6Bの目の前の位置に、移動後のアバターオブジェクト6Aを配置する。ステップS5813において、プロセッサ210Aは、アバターオブジェクト6Bのアバター情報をサーバ600から受信する。ステップS5814において、アバターオブジェクト制御モジュール1424は、受信したアバター情報に含まれる動き情報に応じて、アバターオブジェクト6Bに、アバターオブジェクト6Aに対するパフォーマンス(第2パフォーマンス)を実行させる。
プロセッサ210Aは、例えば、図66(A)に示す第2仮想空間2711Aに対応する視界画像6617Aを、図66(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像6617Aを視認することによって、アバターオブジェクト6Aがステージオブジェクト1532上に移動したことを認識する。ユーザ5Aは、さらに、アバターオブジェクト6Bの目の前でパフォーマンスを楽しんだり、アバターオブジェクト6Bとの(言い換えれば、ユーザ5Bとの)交流を楽しんだりすることができる。
図66では、視点共有の場合とは異なり、第2仮想空間2711Aにおいてアバターオブジェクト6Aはアバターオブジェクト6Bの目の前にいる。したがって、ユーザ5Aは、仮想右手1531RAをアバターオブジェクト6Bに向かって差し出したり、振らせたりすることができる。プロセッサ210Aは、ユーザ5Bが発した音声をスピーカ180Aに出力する。したがって、ユーザ5Aは、ユーザ5Bがアバターオブジェクト6Aに向かって語りかける音声を聴取することができる。このように、ユーザ5Aは、視点共有の場合とは異なりアバターオブジェクト6Aをアバターオブジェクト6Bと直接交流させることができるので、視点共有の場合に比べてより満足することができる。
[本実施形態の主要な利点]
プロセッサ210Aは、第2仮想空間2711Aにおいて、アバターオブジェクト6Aとは異なる他のアバターオブジェクト6の視点を、アバターオブジェクト6Aに共有させることができる。これにより、ユーザ5Aは、アバターオブジェクト6Aの視点だけではなく、アバターオブジェクト6Aとは異なる位置にいる他のアバターオブジェクト6の視点でも、アバターオブジェクト6Bのパフォーマンスを視聴することができる。ユーザ5Aは、例えば、アバターオブジェクト6Aを移動させたい位置にアバターオブジェクト6Cがすでにいるために、その位置にアバターオブジェクト6Aを移動させることができない場合であっても、視点共有によってアバターオブジェクト6Cの視点でアバターオブジェクト6Bのパフォーマンスを視聴することができる。このように、HMDシステム100は、第2仮想空間2711Aにおけるユーザ5Aの興趣性をより高めることができる。
本実施形態では、アバターオブジェクト6Cは、ステージ移動の課金額がユーザ5Cに課金された結果、アバターオブジェクト6Bによるアバターオブジェクト6Cに対するパフォーマンスを視聴する。アバターオブジェクト6Aは、視点共有の課金額がユーザ5Aに課金された場合、課金の結果として行われるアバターオブジェクト6Cに対するパフォーマンスを、アバターオブジェクト6Cの視点で視聴する。これにより、ユーザ5Aは、アバターオブジェクト6Cに対するパフォーマンスを、不完全な形ではあるが事前に体験することができる。ユーザ5Bは、視点共有時のアバターオブジェクト6Bのパフォーマンスに満足した場合、アバターオブジェクト6Bによるパフォーマンスをアバターオブジェクト6Aに対して実行して貰うことを望む。これにより、ユーザ5Aは、ステージ移動のための課金額がユーザ5Aに課金されることを許容する。
このように、HMDシステム100は、ステージ移動に対応する課金額をユーザ5Cに課金した後、視点共有に対応する課金額をユーザ5Aに課金し、さらにその課金をきっかけとして、ステージ移動に対応する課金額をユーザ5Aにも課金することができる。このように、HMDシステム100は、ユーザ5Aに対する複数回数の課金サイクルを実現することができるので、より多くの課金額をユーザ5Aに課金することができる。その結果、ユーザ5Bは、ライブの売り上げをより増加させることができる。
[変形例]
視点共有のためのユーザ5Aに対する課金は、必ずしも必要ではない。プロセッサ210Aは、視点共有に対応する課金情報をタグオブジェクト2733Aに登録することなく、視点共有をユーザ5Aに許可することができる。言い換えれば、プロセッサ210Aは、ライブ中の任意の時点におけるユーザ5Aによる操作に応じて、他のアバターオブジェクト6の視点をアバターオブジェクト6Aに共有させることができる。プロセッサ210Aは、ユーザ5Aによる操作を検出することなく、他のアバターオブジェクト6の視点をアバターオブジェクト6Aに自動的に共有させることもできる。
プロセッサ210Aは、ステージオブジェクト1532に配置されない他のアバターオブジェクト6の視点を、アバターオブジェクト6Aに共有させることができる。プロセッサ210Aは、例えば、ユーザ5Aによってアバターオブジェクト6Dが選択された場合、アバターオブジェクト6Dの視点をアバターオブジェクト6Aに共有させる。
プロセッサ210Bは、複数の異なるアバターオブジェクト6のそれぞれについて、視点を共有している他のアバターオブジェクト6の数をユーザ5Bに通知することができる。これによりユーザ5Bは、第2仮想空間2711Bにおけるどのアバターオブジェクト6の視点が、より多くのユーザ5の人気を集めているのかを把握することができる。
プロセッサ210Cは、ステージ移動に対応する課金情報を、必ずしもタグオブジェクト2733Cに登録する必要はない。プロセッサ210Cは、例えば、ステージ移動に対応する課金情報をアバターオブジェクト6Cに関連付けてアバターオブジェクト6Cに登録することもできる。プロセッサ210Cは、ステージ移動に対応する課金情報をタグオブジェクト2733Cに登録する代わりに、ステージ移動に対応する課金(第2課金)に関する任意の他の処理を実行することができる。当該他の処理は、例えば、ステージ移動に対応する課金情報をタグオブジェクト2733Cに登録することなくサーバ600に送信することである。
プロセッサ210Aは、視点共有に対応する課金情報を、必ずしもタグオブジェクト2733Aに登録する必要はない。プロセッサ210Aは、例えば、視点共有に対応する課金情報をアバターオブジェクト6Aに関連付けてアバターオブジェクト6Aに登録することもできる。プロセッサ210Aは、視点共有に対応する課金情報をタグオブジェクト2733Aに登録する代わりに、視点共有に対応する課金(第1課金)に関する任意の他の処理を実行することができる。当該他の処理は、例えば、視点共有に対応する課金情報をタグオブジェクト2733Aに登録することなくサーバ600に送信することである。
プロセッサ210Aは、ステージ移動に対応する課金情報を、必ずしもタグオブジェクト2733Aに登録する必要はない。プロセッサ210Aは、例えば、ステージ移動に対応する課金情報をアバターオブジェクト6Aに関連付けてアバターオブジェクト6Aに登録することもできる。プロセッサ210Aは、ステージ移動に対応する課金情報をタグオブジェクト2733Aに登録する代わりに、ステージ移動に対応する課金(第3課金)に関する任意の他の処理を実行することができる。当該他の処理は、例えば、課金情報をタグオブジェクト2733Aに登録することなくサーバ600に送信することである。
ユーザ5Bは、視点共有を許可するための第1操作を行うことができる。プロセッサ210Bは、ユーザ5Bの第1操作を検出した場合、第1操作の検出を示す検出情報をサーバ600を介してコンピュータ200Aに送信する。プロセッサ210Aは、コンピュータ200Bから送信された検出情報を受信する。プロセッサ210Aは、受信した検出情報に基づいて、ユーザ5Bによる第1操作を検出する。プロセッサ210Aは、第1操作が検出された場合、アバターオブジェクト6Aとは異なる他のいずれかのアバターオブジェクト6の視点をアバターオブジェクト6Aに共有させることを可能とする。プロセッサ210Aは、例えば、第1操作を検出した後、一定期間、アバターオブジェクト6Aとは異なる他のいずれかのアバターオブジェクト6の視点をアバターオブジェクト6Aに共有させることを可能とする。第1操作は、ユーザ5Bの操作そのものではなく、ユーザ5Bの発話内容などのユーザ5Bの動作であってもよいし、視点共有させることを可能とする期間を指定する情報としてもよい。これにより、ユーザ5Bの許可無く勝手に他のアバターオブジェクト6の視点がアバターオブジェクト6Aに共有されることを防止することができる。言い換えれば、ユーザ5Bは、アバターオブジェクト6Aが他のアバターオブジェクト6の視点を共有することができるタイミングを、自らの意志で指定することができる。これにより、ユーザ5Bは、ライブの演出をよりユーザ5Bの望むような形に制御することができる。
プロセッサ210Aは、仮想カメラ14Aをアバターオブジェクト6Cの位置に移動させることなく、アバターオブジェクト6Cの視点をアバターオブジェクト6Aに共有させることができる。プロセッサ210Aは、例えば、アバターオブジェクト6Cの視点をアバターオブジェクト6Aに共有させるためのユーザ5Aの操作を検出した場合、視点共有を要求するための要求情報を、サーバ600を介してコンピュータ200Cに送信する。プロセッサ210Cは、要求情報を受信した場合、仮想カメラ14Cによって生成される、アバターオブジェクト6Cからの視界領域15Cに対応する視界画像6017C(第2視界画像)を、サーバ600を介してコンピュータ200Aに送信する。プロセッサ210Aは、視界画像6017Cを受信した場合、仮想カメラ14Aの制御を一時的に停止する。プロセッサ210Aは、さらに、受信した視界画像6017Cを、モニタ130Aに出力する。ユーザ5Aは、視界画像6017Cを視認することによって、アバターオブジェクト6Cの視点でアバターオブジェクト6Bのパフォーマンスを視聴することができる。
プロセッサ210Aは、第2仮想空間2711Aにおける第1事象の発生を検出することができる。第1事象は、例えば、アバターオブジェクト6Bが何らかの行動を取ることである。アバターオブジェクト6Bの行動は、例えば、アバターオブジェクト6Bがステージオブジェクト1532上の他の位置に移動することである。第1事象は、ステージオブジェクト1532上でアバターオブジェクト6Bが一定時間以上、規定のパフォーマンスを実行することでもよい。第1事象は、他には、アバターオブジェクト6Cがステージオブジェクト1532上に移動することでもよい。プロセッサ210Aは、第1事象を検出した場合、他のアバターオブジェクト6の視点をアバターオブジェクト6Aに共有させることを可能とする。これにより、勝手に他のアバターオブジェクト6の視点がアバターオブジェクト6Aに共有されることを防止することができる。
プロセッサ210Aは、視点の共有後、仮想カメラ14Cの制御に連動させて仮想カメラ14Aを制御することができる。プロセッサ210Aは、例えば、仮想カメラ14Aをアバターオブジェクト6Cの位置に移動させた後、仮想カメラ14Cの位置および向きの制御内容を表す制御情報を、サーバ600を介してコンピュータ200Cから受信する。プロセッサ210Aは、受信した制御情報に応じて、仮想カメラ14Cの制御に連動させて仮想カメラ14Aを制御する。これにより、アバターオブジェクト6Cの視点をアバターオブジェクト6Aが共有していることを、より明瞭にユーザ5Aに実感させることができる。
〔実施形態4〕
本実施形態において、プロセッサ210Bは、ユーザ5Bに対する課金および決済に関する処理を、実施形態1に記載されるタグオブジェクト2733Aを用いた方式と同一の方式によって実行する。しかし、これに限定されず、プロセッサ210Bは、実施形態1に係る方式とは異なる任意の方式によって、ユーザ5Bに対する課金および決済に関する処理を実行することもできる。
[アバター選択フロー]
図67は、ある実施の形態に従うHMDセット110Bにおいて実行される処理の一部を表すシーケンスチャートである。図68は、ある実施の形態に従う第3仮想空間6811Bおよび視界画像6817Bを示す図である。ステップS6701において、コンピュータ200Bのプロセッサ210B(以下単に「プロセッサ210B」)は、図68(A)に示すような第3仮想空間6811Bを定義する。当該処理は、図11のステップS1110の処理に相当する。具体的には、プロセッサ210Bは、仮想空間データを特定することによって、仮想空間データによって表される第3仮想空間6811Bを定義する。第3仮想空間6811Bは、第2仮想空間2711Bにおけるライブが開始される前にアバターオブジェクト6Bが配置される仮想空間である。第3仮想空間6811Bは、ライブ中にユーザ5Bによって用いられるアバターオブジェクトをユーザ5Bに選択させるための仮想空間でもある。
ステップS6702において、プロセッサ210Bは、仮想カメラ14Bを生成し、第3仮想空間6811Bに配置する。ステップS6703において、プロセッサ210Bは、仮想右手1531RBおよび仮想左手1531LBを含むアバターオブジェクト6Bを生成し、第3仮想空間6811Bに配置する。アバターオブジェクト6Bは、ライブ中にユーザ5Bによって使用されるアバターを第3仮想空間6811Bにおいて選択するために、ユーザ5Bによって使用される。本実施形態では、アバターオブジェクト6Bは第2仮想空間2711Bにおいて使用されない。ステップS6704において、プロセッサ210Bは、UIパネル6850およびペンオブジェクト6853を生成し、第3仮想空間6811Bに配置する。
本実施形態では、複数の異なるアバターオブジェクトが、HMDシステム100に予め用意されている。ユーザ5Bは、複数のアバターオブジェクトの中から、第2仮想空間2711Bにおいてライブに使用する1つのアバターオブジェクトを選択することができる。
UIパネル6850はUIオブジェクトの一種であり、複数のアバターオブジェクトの中から1つのアバターオブジェクトを選択するための処理をプロセッサ210Bに実行させるために、ユーザ5Bによって用いられる。UIパネル6850は、UIパネル6850の前面に配置される選択肢6851および6852を含む。選択肢6851および6852は、その選択肢がユーザ5Bによって選択された場合に選択されるアバターオブジェクトの外観を示す画像を含む。選択肢6851は、複数のアバターオブジェクトのうちの第1アバターオブジェクトを選択するための項目であり、選択肢6852は、複数のアバターのうちの第2アバターオブジェクトを選択するための項目である。ペンオブジェクト6853は、仮想オブジェクトの一種であり、UIパネル6850の選択肢6851または6852を選択するために、仮想右手1531RBまたは仮想左手1531LBによって把持されかつ使用される。
ステップS6705において、プロセッサ210Bは、HMD120Bの動きに応じて第3仮想空間6811Bにおける仮想カメラ14Bの位置および傾きを決定する。当該処理は、図11のステップS1140の処理の一部に相当する。ステップS6706において、プロセッサ210Bは、視界画像17Bをモニタ130Aに表示する。当該処理は、図11のステップS1180およびS1190の処理に相当する。
プロセッサ210Bは、例えば、図68(A)に示す第3仮想空間6811Bに対応する視界画像6817Bを、図68(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像6817Bを視認することによって、UIパネル6850の選択肢6851または選択肢6852を選択する必要があることを認識する。
上述したステップS6705およびS6706の処理(すなわち、HMD120Bの動きに応じた視界画像17Bの更新)は、後述するステップS6707~S6709が実行される間にも、継続して繰り返し実行される。
ステップS6707において、プロセッサ210Bは、右コントローラ300RBの出力に基づいて、ユーザ5Bの右手の動きを検出する。ステップS6708において、プロセッサ210Bは、検出されたユーザ5Bの右手の動きに応じて、第3仮想空間6811Bにおいて仮想右手1531RBを動かす。ある局面において、プロセッサ210Bは、ユーザ5Bの右手の動きに応じて、ペンオブジェクト6853に仮想右手1531RBを近づけるように、第3仮想空間6811Bにおいて仮想右手1531RBを動かす。プロセッサ210Bは、仮想右手1531RBがペンオブジェクト6853に十分に近づいた後、ユーザ5Bの右手の動きに基づいて、仮想右手1531RBでペンオブジェクト6853を選択する(掴む)。
図69は、ある実施の形態に従う第3仮想空間6811Bおよび視界画像6917Bを示す図である。図69(A)に示すように、プロセッサ210Bは、仮想右手1531RBがペンオブジェクト6853を選択した後、ユーザ5Bの右手の動きに基づいて、ペンオブジェクト6853の先端を選択肢6851に近づけるように、第3仮想空間6811Bにおいて仮想右手1531RBおよびペンオブジェクト6853を動かす。プロセッサ210Bは、ペンオブジェクト6853の先端と選択肢6851とが衝突したことに基づいて、ペンオブジェクト6853によって選択肢6851が選択されたことを検出する。ステップS6709において、プロセッサ210Bは、複数のアバターオブジェクトの中から、選択された選択肢6851に対応するアバターオブジェクト7106Bを選択する。アバターオブジェクト7106Bの外観およびサイズは、アバターオブジェクト6Bの外観およびサイズとは異なっている。
プロセッサ210Bは、例えば、図69(A)に示す第3仮想空間6811Bに対応する視界画像6917Bを、図69(B)に示すようにモニタ130Aに表示する。ユーザ5Bは、視界画像6917Bを視認することによって、UIパネル6850の選択肢6851を選択したことによってアバターオブジェクト7106Bを選択したことを、認識する。
プロセッサ210Bは、アバターオブジェクト7106Bの選択後、第3仮想空間6811Bにおけるアバターオブジェクト6Bの配置を終了する。この後、プロセッサ210Bは、第3仮想空間6811Bの定義を継続する。プロセッサ210Bは、さらに、アバターオブジェクト6Bが配置されなくなった後も、第3仮想空間6811Bには他の仮想オブジェクトを配置したままにする。プロセッサ210Bは、ユーザ5Bに対する第3仮想空間6811Bの提供を中断する。プロセッサ210Bは、さらに、アバターオブジェクト7106Bにパフォーマンスを実行させる一連の処理を実行することによって、第2仮想空間2711Bをユーザ5Bに新たに提供する。
ユーザ5Bによるアバターオブジェクトの選択方式は、上述した例に限定されない。プロセッサ210Bは、例えば、選択肢6851が示す第1アバターオブジェクトおよび選択肢6852が示す第2アバターオブジェクトを、第3仮想空間6811Bに配置してもよい。ユーザ5Bは、例えば、仮想右手1531RBを、第3仮想空間6811Bに配置される第1アバターオブジェクトまたは第2アバターオブジェクトに接触させる。プロセッサ210Bは、仮想右手1531RBに接触したアバターオブジェクトを選択する。
[パフォーマンス実行処理フロー]
図70は、ある実施の形態に従うHMDセット110Bにおいて実行される処理の一部を表すシーケンスチャートである。図71は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像7117Aを示す図である。ステップS7001において、プロセッサ210Bは、図71(A)に示すような第2仮想空間2711Bを定義する。ステップS7002において、プロセッサ210Bは、仮想カメラ14Bを生成し、第2仮想空間2711Bに配置する。ステップS7003において、プロセッサ210Bは、ステージオブジェクト1532を生成し、第2仮想空間2711Bに配置する。ステップS7004において、プロセッサ210Bは、アバターオブジェクト6A、6C、および6Dの各アバター情報を、サーバ600から受信する。ステップS7005において、プロセッサ210Bは、受信した各アバター情報に基づいて、アバターオブジェクト6A、6C、および6Dを第2仮想空間2711Bに配置する。
ステップS7006において、プロセッサ210Bは、仮想右手7131RBおよび仮想左手7131LBを含むアバターオブジェクト7106B(第1アバター)を、ユーザ5B(第1ユーザ)に関連付けて第2仮想空間2711Bに配置する。詳細には、プロセッサ210Bは、アバターオブジェクト7106Bをステージオブジェクト1532上に配置する。図示しないが、プロセッサ210Bは、任意のタイミングで、アバターオブジェクト6Bのアバター情報を生成し、サーバ600に送信する。
ステップS7007において、プロセッサ210Bは、タグオブジェクト2733Bを生成し、アバターオブジェクト7106Bに関連付ける。詳細には、プロセッサ210Bは、タグオブジェクト2733Bをアバターオブジェクト7106Bの仮想左手7131LBに配置する。プロセッサ210Bは、ライブ中にユーザ5Bに課金されることが可能な課金額の上限を表す上限課金情報を、タグオブジェクト2733Bに登録する。
ステージオブジェクト1532上にアバターオブジェクト7106Bが配置された後、第2仮想空間2711Bにおいて、アバターオブジェクト7106Bによるライブが開始される。図71(A)は、ライブが開始された時点の第2仮想空間2711Bを表す。プロセッサ210Bは、ライブの開始時点では、タグオブジェクト2733Bに課金情報を登録しない。ステップS7008において、プロセッサ210Bは、HMD120Bの動きに応じて第2仮想空間2711Bにおける仮想カメラ14Bの位置および傾きを決定する。この処理は、ステップS2305における処理と基本的に同一であるため、詳細な説明を繰り返さない。ステップS7009において、プロセッサ210Bは、視界画像17Bをモニタ130Bに表示する。この処理は、ステップS2306における処理と基本的に同一であるため、詳細な説明を繰り返さない。
プロセッサ210Bは、例えば、図71(A)に示す第2仮想空間2711Bに対応する視界画像7117Bを、図71(B)に示すようにモニタ130Bに表示する。プロセッサ210Bは、上限課金情報が表す上限課金額をタグオブジェクト2733Bに表示する。プロセッサ210Bは、さらに、課金情報がタグオブジェクト2733Aに登録されていないことに応じて、合計課金額として0円をタグオブジェクト2733Aに表示する。ユーザ5Bは、視界画像7117Bを視認することによって、ライブの視聴者であるアバターオブジェクト6A、6C、および6Dがステージオブジェクト1532の前にいることを認識する。ユーザ5Bは、さらに、ライブの開始時点ではアバターオブジェクト7106Bの使用料がユーザ5Bに課金されていないことを認識する。
図72は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像7217Aを示す図である。プロセッサ210Aは、第2仮想空間2711Bが定義された後、アバターオブジェクト6Bのアバター情報をサーバ600からリアルタイムに受信する。プロセッサ210Aは、最初に受信したアバターオブジェクト6Bのアバター情報に基づいて、図72(A)に示すように、アバターオブジェクト7106Bを第2仮想空間2711Aに配置する。詳細には、プロセッサ210Aは、アバターオブジェクト7106Bをステージオブジェクト1532上に配置する。
プロセッサ210Aは、例えば、図72(A)に示す第2仮想空間2711Aに対応する視界画像7217Aを、図72(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像7217Aを視認することによって、ライブの演者であるアバターオブジェクト7106Bがステージオブジェクト1532上に登場したことを認識する。ユーザ5は、さらに、アバターオブジェクト7106Bによるライブがこれから開始されることを認識する。
図73は、ある実施形態に係るユーザ5Bの姿勢の一例を表す図である。ライブの開始後、ユーザ5Bは、例えば図73に示す姿勢を取るように自身の身体を動かす。ステップS7010において、プロセッサ210Bは、各モーションセンサの出力に基づいて、図73に示す姿勢を取った際のユーザ5Bの動きを検出する。
図74は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像7417Bを示す図である。ステップS7011において、プロセッサ210Bは、ユーザ5Bの動きに応じて、図74(A)に示すように、第2仮想空間2711Bにおいてアバターオブジェクト7106Bにパフォーマンスを実行させる。詳細には、プロセッサ210Bは、図73に示すユーザ5Bの身体の動きを、アバターオブジェクト7106Bに反映させる。プロセッサ210Bは、アバターオブジェクト7106Bがパフォーマンスを実行した際のアバターオブジェクト7106Bの動き情報を含むアバター情報を、サーバ600にリアルタイムに送信する。
プロセッサ210Bは、例えば、図74(A)に示す第2仮想空間2711Bに対応する視界画像7417Bを、図74(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像7417Bを視認することによって、パフォーマンスに対するアバターオブジェクト6A、6C、および6Dの反応を確認する。
図75は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像7517Aを示す図である。第2仮想空間2711Bにおいてアバターオブジェクト7106Bがパフォーマンスを実行した後、プロセッサ210Aは、アバターオブジェクト7106Bのアバター情報をサーバ600からリアルタイムに受信する。プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、アバターオブジェクト7106Bにパフォーマンスを実行させる。これにより、プロセッサ210Aは、図73に示すユーザ5Bの動きに応じて、アバターオブジェクト7106Bにパフォーマンスを実行させることができる。プロセッサ210Aは、アバターオブジェクト7106Bによるパフォーマンスを、第2仮想空間2711Aにおいてアバターオブジェクト6Aに視聴させる。プロセッサ210Aは、例えば、図75(A)に示す第2仮想空間2711Aに対応する視界画像7517Aを、図75(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像7517Aを視認することによって、アバターオブジェクト7106Bがステージオブジェクト1532上で第1パフォーマンスを実行したことを認識する。これにより、ユーザ5Aは、アバターオブジェクト6Aの視点で、アバターオブジェクト7106Bによるパフォーマンスを楽しむことができる。
[課金情報の登録]
図76は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像7617Bを示す図である。図76(A)に示す第2仮想空間2711Bにおいて、アバターオブジェクト7106Bのライブはすでに終了している。ステップS7012において、プロセッサ210Bは、第2仮想空間2711Bにおけるアバターオブジェクト7106Bのパフォーマンスに応じた課金情報を、タグオブジェクト2733Bに登録する。プロセッサ210Bは、例えば、第2仮想空間2711Bにおいてアバターオブジェクト7106Bが使用された時間に応じた課金額を表す課金情報を、ライブが終了した後にタグオブジェクト2733Bに登録する。プロセッサ210Bは、ライブの開始時点から終了時点までの経過時間に、アバターオブジェクト7106Bに設定される一定時間ごとの課金単価を乗算することによって、アバターオブジェクト7106Bの使用料である課金額を算出する。図76では、課金額として1000円が算出される。プロセッサ210Bは、算出された課金額を表す課金情報を、タグオブジェクト2733Bに登録する。プロセッサ210Bは、登録された課金情報をタグオブジェクト2733B上で視覚化する。
プロセッサ210Bは、例えば、図76(A)に示す第2仮想空間2711Bに対応する視界画像7617Bを、図76(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像7617Bを視認することによって、アバターオブジェクト7106Bの使用料として1000円がユーザ5Bに課金されたことを把握する。
ユーザ5Bは、ライブ終了時点での合計課金額を確認した後、アバターオブジェクト7106Bを第2仮想空間2711Bから退出させるための操作を行う。この操作は、例えば、右コントローラ300RBのいずれかのボタンをユーザ5Bが押下することである。ステップS7013において、プロセッサ210Bは、アバターオブジェクト7106Bを退出させるためのユーザ5Bの操作を検出したことに応じて、アバターオブジェクト7106Bを第2仮想空間2711Bから退出させる。これにより、プロセッサ210Bは、ユーザ5Bに対する第2仮想空間2711Bの提供を終了する。
図77は、ある実施の形態に従う第3仮想空間6811Bおよび視界画像7717Bを示す図である。ステップS7014において、プロセッサ210Bは、アバターオブジェクト6Bを、図77(A)に示すように再び第3仮想空間6811Bに配置する。このとき、プロセッサ210Bは、仮想左手1531LBにタグオブジェクト2733Bを配置しない。ステップS7015において、プロセッサ210Bは、タグオブジェクト2733Bに登録された課金情報に応じた決済に関する処理を実行する。この処理は、ステップS2618における処理と基本的に同一であるため、詳細な説明を繰り返さない。
プロセッサ210Bは、例えば、図77(A)に示す第3仮想空間6811Bに対応する視界画像7717Bを、図77(B)に示すようにモニタ130Bに表示する。サーバ600は、決済が終了したことをコンピュータ200Bに通知する。プロセッサ210Bは、決済の完了がサーバ600から通知されたことに応じて、決済が完了したことを視界画像7717B上でユーザ5Bに通知する。プロセッサ210Bは、例えば、決済が完了したことを説明するメッセージを含む通知画像3735を、視界画像7717Bに重畳させてモニタ130Bに表示する。プロセッサ210Bは、通知画像3735と同一の外観を有する仮想オブジェクトを、第2仮想空間2711Bにおける視界領域15B内の任意の位置に配置することもできる。プロセッサ210Bは、あるいは、視界画像7717Bの生成時に、視界画像7717B内の任意の位置に通知画像3735を含めることもできる。ユーザ5Bは、視界画像7717Bを視認することによって、ライブの終了後、第3仮想空間6811Bにアバターオブジェクト6Bが再び配置されたことを認識する。ユーザ5Bは、さらに、通知画像3735を視認することによって、アバターオブジェクト7106Bの使用料に対応する課金額の決済が完了したことを把握する。ユーザ5Bは、さらに、第3仮想空間6811Bにおいて仮想左手7131LBにタグオブジェクト2733Bが配置されないので、アバターオブジェクト7106Bの使用料金がこれ以上課金されないことを認識する。
ステップS7016において、プロセッサ210Bは、アバターオブジェクト7106Bの作成者への報酬を決定する。プロセッサ210Bは、詳細には、タグオブジェクト2733Bに登録された課金情報に応じて報酬を決定する。課金情報はアバターオブジェクト7106Bのパフォーマンスに応じて登録されるので、課金情報に応じて報酬を決定することは、アバターオブジェクト7106Bのパフォーマンスに応じて報酬を決定することと同義である。図76の例では、第2仮想空間2711Bにおいてアバターオブジェクト7106Bが使用された時間に応じた課金額を表す課金情報が登録される。したがって、プロセッサ210Bは、第2仮想空間2711Bにおいてアバターオブジェクト7106Bが使用された時間に応じた報酬を決定する。
ステップS7017において、プロセッサ210Bは、決定された報酬をアバターオブジェクト7106Bの作成者に支払うための処理を実行する。プロセッサ210Bは、例えば、決定された報酬をサーバ600に通知する。サーバ600は、決済の実行後、通知された報酬をアバターオブジェクト7106Bの作成者に支払う。サーバ600は、アバターオブジェクト7106Bが使用されるライブが終了するたびに、報酬をアバターオブジェクト7106Bの使用者に支払うことができる。サーバ600は、あるいは、一定期間(例えば一ヶ月)内のアバターオブジェクト7106Bの使用料の合計に応じた報酬を、一定期間が経過した時点でアバターオブジェクト7106Bの作成者にまとめて支払うこともできる。サーバ600ではなくプロセッサ210Bが、課金情報に応じた報酬をアバターオブジェクト7106Bの作成者に支払うこともできる。
[本実施形態の主要な利点]
以上のように、プロセッサ210Bは、第2仮想空間2711Bにおけるアバターオブジェクト7106Bのパフォーマンスに応じた課金情報を、タグオブジェクト2733Bに登録する。このように、HMDシステム100は、第2仮想空間2711Bにおける好適な課金方式をユーザ5Bに提供することができる。
プロセッサ210Bは、ユーザ5Bの位置情報および関節の回転方向に応じて、ユーザ5Bによって選択されたアバターオブジェクトにパフォーマンスを実行させる。これにより、ユーザ5Bとは形状が大きく異なるアバターオブジェクトに対しても、ユーザ5Bの動きを正確に反映させることができる。このように、HMDシステム100では、ユーザ5Bが選択可能なアバターオブジェクトの形状を、特定の形状に制約する必要がない。したがって、形状が異なる多様なアバターオブジェクトを、HMDシステム100に用意することができる。その結果、ユーザ5Bが選択可能なアバターオブジェクトの選択肢をより増やすことができるので、演者によるライブの多様性を高めることができる。
アバターオブジェクトの作成者は、自身が作成したアバターオブジェクトが演者によって使用された場合、アバターオブジェクトのパフォーマンスに応じた報酬を受け取ることができる。したがって、HMDシステム100は、HMDシステム100において使用可能な新たなアバターオブジェクトを作成する動機を、多くの作成者に与えることができる。その結果、HMDシステム100に用意されるアバターオブジェクトの種類をより増やすことができる。これにより、演者が選択可能なアバターオブジェクトの選択肢を、より増やすことができるので、演者によるライブの多様性を高めることができる。
[変形例]
プロセッサ210Bは、アバター使用に対応する課金情報を、必ずしもタグオブジェクト2733Bに登録する必要はない。プロセッサ210Bは、例えば、アバター使用に対応する課金情報をアバターオブジェクト7106Bに関連付けてアバターオブジェクト7106Bに登録することもできる。プロセッサ210Bは、アバター使用に対応する課金情報をタグオブジェクト2733Bに登録する代わりに、アバター使用に対応する課金に関する任意の他の処理を実行することができる。当該他の処理は、例えば、アバター使用に対応する課金情報をタグオブジェクト2733Bに登録することなくサーバ600に送信することである。
プロセッサ210Bは、第2仮想空間2711Bにおけるライブの売り上げに応じた課金額に対応する課金に関する処理を、実行することができる。プロセッサ210Bは、さらに、第2仮想空間2711Bにおけるライブの売り上げに応じた報酬を決定することができる。プロセッサ210Bは、例えば、売り上げの一部をライブの売り上げに応じた課金額として算出する。プロセッサ210Bは、売り上げに応じた課金額を表す課金情報を、タグオブジェクト2733Bに登録する。これにより、ライブの売り上げがより高くなるほど、アバターオブジェクト7106Bの使用料としてユーザ5Bに課金される課金額もより高くなる。また、ライブの売り上げがより高いほど、アバターオブジェクト7106Bの作成者に支払われる報酬もより高くなる。これにより、HMDシステム100は、ライブの売り上げ増加に繋がるような人気のあるアバターオブジェクト7106Bを作成する動機を、作成者に与えることができる。
プロセッサ210Bは、アバターオブジェクト7106Bが使用される第2仮想空間2711Bの内容に応じた課金額に対応する課金に関する処理を、実行することができる。プロセッサ210Bは、さらに、第2仮想空間2711Bの内容に応じた報酬を決定することができる。プロセッサ210Bは、例えば、アバターオブジェクト7106Bが使用される第2仮想空間2711Bのサイズがより大きいほど、アバターオブジェクト7106Bの使用料としてより高い課金額を算出する。プロセッサ210Bは、算出した課金額を表す課金情報をタグオブジェクト2733Bに登録する。アバターオブジェクト7106Bが使用される第2仮想空間2711Bのサイズがより大きいほど、アバターオブジェクト7106Bの作成者に支払われる報酬がより高くなる。これにより、HMDシステム100は、より大きいサイズの第2仮想空間2711Bにおいて使用されるような人気のあるアバターオブジェクト7106Bを作成する動機を、作成者に与えることができる。
プロセッサ210Bは、第2仮想空間2711Bにおけるアバターオブジェクト7106Bの使用履歴を生成することができる。プロセッサ210Bは、使用履歴として、例えば、第2仮想空間2711Bにおけるアバターオブジェクト7106Bの使用時間の履歴を生成する。プロセッサ210Aは、使用履歴として、例えば、第2仮想空間2711Bにおいてアバターオブジェクト7106Bが使用されたライブの売り上げの履歴を生成する。プロセッサ210Bは、例えば、アバターオブジェクト7106Bが使用された第2仮想空間2711Aの履歴を生成する。プロセッサ210Bは、生成された使用履歴を、アバターオブジェクト7106Bの作成者に通知する。作成者は、通知されたアバターオブジェクト7106Bの使用履歴を閲覧することによって、第2仮想空間2711Bにおいて過去にアバターオブジェクト7106Bが使用された状況の詳細を把握することができる。作成者は、把握した使用状況を参考にすることによって、より優れたアバターオブジェクトを新たに作成することができる。
ユーザ5Bは、アバターオブジェクト7106Bを、作成者からレンタルすることもできる。この場合、プロセッサ210Bは、アバターオブジェクト7106Bのレンタル期間に応じた課金額を、ユーザ5Bに課金する。プロセッサ210Bは、さらに、アバターオブジェクト7106Bのレンタル期間に応じた報酬を決定する。
〔実施形態5〕
本実施形態において、プロセッサ210Aは、ユーザ5Aに対する課金および決済に関する処理を、実施形態1に記載されるタグオブジェクト2733Aを用いた方式によって実行する。しかし、これに限定されず、プロセッサ210Aは、実施形態1に係る方式とは異なる任意の方式によって、ユーザ5Aに対する課金および決済に関する処理を実行することもできる。
[第2パフォーマンスのリクエスト]
図78は、HMDシステム100において実行される処理の一例を示すシーケンスチャートである。以下では、ユーザ5A(第1ユーザ)が行った第2パフォーマンスのリクエストに対し、ユーザ5B(第2ユーザ)が、仮想空間11Bにてアバターオブジェクト6B(第2アバター)に第2パフォーマンスを実行させるための一連の処理を説明する。図78に示すシーケンスチャートは、図26に示すステップS2614が実行された後の処理を示している。なお、第2パフォーマンスのリクエストは、ユーザ5Cが行ってもよいし、ユーザ5Dが行ってもよい。
図79は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像7917Aを示す図である。プロセッサ210Aは、アバターオブジェクト6Bに対する第2パフォーマンスのリクエストをユーザ5Aに案内するメッセージを、ライブ中にユーザ5Aに通知する。プロセッサ210Aは、例えば、タグオブジェクト2733Aにメッセージを表示する。メッセージは、第2パフォーマンスの内容をユーザ5Aに案内するテキストと、ユーザ5Aが第2パフォーマンスをリクエストするために必要な課金額とを含む。図79の例では、第2パフォーマンスの内容は指さしポーズであり、指さしポーズのリクエストを行うために必要な課金額は500円である。指さしポーズとは、例えば、アバターオブジェクト6Bがアバターオブジェクト6A(第1アバター)を指さすパフォーマンスである。このように、第2パフォーマンスは、第2パフォーマンスをリクエストしたユーザ5に関連付けられたアバターオブジェクト6を対象とするパフォーマンスであってもよい。
メッセージがタグオブジェクト2733Aに表示された後、プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図79(A)に示すように、仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図79(A)に示す第2仮想空間2711Aに対応する視界画像7917Aを、図79(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像7917Aを視認することによって、タグオブジェクト2733Aに表示されるメッセージを確認する。これにより、ユーザ5Aは、新たに500円の課金額を支払えば、アバターオブジェクト6Bに対して、指さしポーズをリクエストできることを認識する。
ユーザ5Aは、タグオブジェクト2733Aに表示されたメッセージを確認した後、指さしポーズをリクエストするための操作を行う。該操作は、実施形態1にて図34を参照して説明しているため、ここでは繰り返さない。プロセッサ210Aは、第2パフォーマンスのリクエストを案内するメッセージが表示されるタグオブジェクト2733Aが選択されたことに応じて、第2パフォーマンスをリクエストするためのユーザ5Aの操作を検出する。
図80は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像8017Aを示す図である。ステップS7801において、プロセッサ210Aは、第2パフォーマンスのリクエストに対応する課金情報を、タグオブジェクト2733Aに登録する。図79の例では、プロセッサ210Aは、アバターオブジェクト6Aが、仮想右手1531RAでタグオブジェクト2733Aを選択した場合、指さしポーズのリクエストに必要な課金額(500円)を表す課金情報を、タグオブジェクト2733Aに新たに登録する。なお、登録された課金情報が表す課金額の決済は、実施形態1で説明した方法で行えばよい。
課金情報が登録された後、プロセッサ210Aは、タグオブジェクト2733A上で課金情報を再び視覚化する。この処理の詳細については、実施形態1にて図35を参照して説明しているため、ここでは繰り返さない。プロセッサ210Aは、例えば、図80(A)に示す第2仮想空間2711Aに対応する視界画像8017Aを、図80(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像8017Aを視認することによって、指さしポーズをリクエストした結果として現時点での合計課金額が2000円に増加したことを認識する。
ステップS7802において、プロセッサ210Aは、第2パフォーマンスのリクエストをコンピュータ200Bへ送信する。詳細には、プロセッサ210Aは、該リクエストをサーバ600へ送信する。サーバ600は、受信した第2パフォーマンスに関する情報を、同期処理によってコンピュータ200Bへ送信する。なお、コンピュータ200Aとコンピュータ200Bとの間の情報の送受信がサーバ600を介して行われることは、実施形態1にて図17を参照して既に説明している。このため、図78では、サーバ600が実行する処理を図示していない。
図81は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像8117Bを示す図である。図81の例では、アバターオブジェクト6Bは、アバターオブジェクト6C(第3アバター)の方向を向いており、かつ、アバターオブジェクト6Aは、視界領域外の第1位置8176に配置されている。つまり、視界領域15B内には、アバターオブジェクト6Aが配置されていない。プロセッサ210Bは、例えば、図81(A)に示す第2仮想空間2711Bに対応する視界画像8117Bを、図81(B)に示すようにモニタ130Aに表示する。
ステップS7811において、プロセッサ210Bは、プロセッサ210Aから送信された第2パフォーマンスのリクエストを受信する。ステップS7812において、プロセッサ210Bは、リクエストされた第2パフォーマンスに関する情報をユーザ5Bに通知する。リクエストされた第2パフォーマンスに関する情報は、例えば、リクエストされた第2パフォーマンスの内容であってもよい。プロセッサ210Bは、さらに、第2パフォーマンスをリクエストしたユーザ5Aに関連付けられたアバターオブジェクト6Aの、第2仮想空間2711Bにおける位置(以下、「第1位置」)を示す情報をユーザ5Bに通知してもよい。プロセッサ210Bは、一例として、リクエストされた第2パフォーマンスに関する情報と、第1位置8176を示す情報とを、視界画像8117B上で通知する。プロセッサ210Bは、例えば、図81(B)に示すように、通知画像8181および矢印画像8182を視界画像8117Bに含めて、モニタ130に表示する。プロセッサ210Bは、通知画像8181と同一の外観を有する仮想オブジェクトを、第2仮想空間2711Bに配置することもできる。プロセッサ210Bは、矢印画像8182と同一の外観を有する仮想オブジェクトを、第2仮想空間2711Bに配置することもできる。
通知画像8181は、一例として、図81(B)に示すように、第2パフォーマンスがリクエストされたこと、および、リクエストされた第2パフォーマンスの内容を含む。これにより、ユーザ5Bは、第2パフォーマンスがリクエストされたこと、および、リクエストされた第2パフォーマンスの内容を認識することができる。
矢印画像8182は、図81(A)に示すように、アバターオブジェクト6Aが視界領域15Bに配置されていない場合の第1位置8176を示す画像である。詳細には、矢印画像8182は、視界領域15B内の第2位置8177から、アバターオブジェクト6Aがいる第1位置8176へ向かう第1方向8178に対応する、視界画像8117Bにおける第2方向を示す画像である。すなわち、図81の例の場合、矢印画像8182は、視界画像8117Bの左から右へ向かう(右向きの)矢印の画像である。矢印画像8182が視界画像8117Bに含まれていることにより、ユーザ5Bは、右方向に頭部を動かすことにより、視界画像17Bに、第2パフォーマンスをリクエストしたユーザ5に関連付けられたアバターオブジェクト6(アバターオブジェクト6A)が含まれることを、容易に認識することができる。
なお、プロセッサ210Bは、リクエストに含まれるアバターオブジェクト6Aを識別する情報を用いて、第2仮想空間2711Bにおける、アバターオブジェクト6Aの第1位置8176を特定すればよい。該情報は、例えば、ユーザ5Aまたはアバターオブジェクト6AのIDであってもよい。そして、プロセッサ210Bは、アバターオブジェクト6Aが視界領域15Bに配置されているか否かを判定すればよい。
図82は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像8217Bを示す図である。ユーザ5Bが頭部を動かしたことにより、アバターオブジェクト6Bが図82(A)に示す方向を向いたとする。これにより、図82(A)に示すように、アバターオブジェクト6Aが視界領域15Bに含まれる。換言すれば、プロセッサ210Bは、アバターオブジェクト6Aが視界領域15Bに含まれていると判定する。プロセッサ210Bは、図82(A)に示す第2仮想空間2711Bに対応する視界画像8117Bに、図82(B)に示すように、アバターオブジェクト6Aを囲う枠画像8283を含めて、モニタ130Bに表示する。これにより、ユーザ5Bは、第2パフォーマンスをリクエストしたユーザ5に関連付けられたアバターオブジェクト6を容易に特定することができる。プロセッサ210Bは、枠画像8283と同一の外観を有する仮想オブジェクトを、アバターオブジェクト6Aを囲うように第2仮想空間2711Bに配置することもできる。
図83は、ある実施形態に係るユーザ5Bの姿勢の一例を表す図である。ステップS7813において、プロセッサ210Bは、第2パフォーマンスに対応するユーザ5Bの動きを検出する。図81(B)に示す通知画像8181を視認したユーザ5Bは、例えば図83に示す姿勢、すなわち、右手を前に突き出す姿勢を取るように自身の身体を動かす。このとき、ユーザ5Bは、右コントローラ300RBに設けられたボタン(図83では不図示)を操作(例えば押下)するものとする。図83に示す姿勢は、ユーザ5Aにリクエストされた第2パフォーマンス、すなわち指さしポーズに対応する姿勢である。
図84は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像8417Bを示す図である。ステップS7814において、プロセッサ210Bは、検出した動きに応じてアバターオブジェクト6Bに第2パフォーマンスを実行させる。一例として、プロセッサ210Bは、図83に示す姿勢をとるユーザ5Bの動き、および、右コントローラ300RBに設けられたボタンの押下に応じて、図84(A)に示すように、アバターオブジェクト6Bに指さしポーズを実行させる。詳細には、プロセッサ210Bは、仮想右手1531RBを前に伸ばし、伸ばした先を指さす動作を、アバターオブジェクト6Bに実行させる。プロセッサ210Bは、例えば、図84(A)に示す第2仮想空間2711Bに対応する視界画像8417Bを、図84(B)に示すようにモニタ130Aに表示する。ユーザ5Bは仮想右手1531RBを含む視界画像8417Bを視認することによって、アバターオブジェクト6Bが指さしポーズを実行していることを認識することができる。
プロセッサ210Bは、アバターオブジェクト6Bに第2パフォーマンスを実行させると、図84(B)に示すように、通知画像8181および枠画像8283を視界画像8417Bにおいて非表示とする。一例として、プロセッサ210Bは、ユーザ5Bがとった姿勢を示す情報と、第2パフォーマンスの内容と関連付けられてストレージ230に格納されている、該第2パフォーマンスの姿勢を示す情報とを比較する。比較した結果、2つの情報の一致率が所定の閾値以上であった場合、プロセッサ210Bは、アバターオブジェクト6Bに第2パフォーマンスを実行させたと判定し、通知画像8181および枠画像8283を視界画像8417Bにおいて非表示とする。
ステップS7815において、プロセッサ210Bは、第2パフォーマンスの実行に対応するアバター情報を、コンピュータ200Aへ送信する。詳細には、プロセッサ210Bは、該アバター情報をサーバ600へ送信する。サーバ600は、受信したアバター情報を、同期処理によってコンピュータ200Aへ送信する。
図85は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像8517Aを示す図である。ステップS7803において、プロセッサ210Aは、プロセッサ210Bから送信されたアバター情報をリアルタイムに受信する。ステップS7804において、プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、アバターオブジェクト6Bに第2パフォーマンスを実行させる。これにより、プロセッサ210Aは、図83に示すユーザ5Bの動きに応じて、アバターオブジェクト6Bに第2パフォーマンスを実行させることができる。
プロセッサ210Aは、アバターオブジェクト6Bによる第2パフォーマンスを、第2仮想空間2711Aにおいてアバターオブジェクト6Aに視聴させる。プロセッサ210Aは、例えば、図85(A)に示す第2仮想空間2711Aに対応する視界画像8517Aを、図85(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像8517Aを視認することによって、アバターオブジェクト6Bが、自身がリクエストした第2パフォーマンスを実行したことを認識する。これにより、ユーザ5Aは、アバターオブジェクト6Bが、自身がリクエストした第2パフォーマンスを実行したことに対し、喜びを感じる。詳細には、ユーザ5Aは、現実のライブでは体験することが難しい、自身に向けられた演者のパフォーマンスを、課金額の負担により仮想体験することができる。結果として、ユーザ5Aに喜びを感じさせることができ、ユーザ5Aをより満足させることができる。つまり、仮想空間におけるライブの興趣性をより高めることができる。
[変形例]
ユーザ5Aが、内容を指定せずに第2パフォーマンスをリクエストすることが可能であってもよい。この場合、リクエストを受信したプロセッサ210Bは、第2パフォーマンスのリクエストがあったことのみをユーザ5Bへ通知する。ユーザ5Bは、アバターオブジェクト6Bに実行させる第2パフォーマンスを自ら決定し、決定した第2パフォーマンスに対応する姿勢を取る。
第2パフォーマンスのリクエストを行うために必要な課金額は、リクエストする第2パフォーマンスの内容に応じて設定されてもよい。一例として、実行に時間がかかる、複雑である、工数(動作)が多いなどの、ユーザ5Bにとって実行することが大変な第2パフォーマンスは、課金額が高く設定されてもよい。
第2パフォーマンスの内容は、上述した例に限定されない。例えば、第2パフォーマンスは、アバターオブジェクト6Bがステージオブジェクト1532から移動し、リクエストしたアバターオブジェクト6に近づいて、任意のまたはリクエストされた内容のパフォーマンスを実行することであってもよい。アバターオブジェクト6Bのステージオブジェクト1532からの移動は、実施形態2で説明した移動方法で行われてもよい。また、第2パフォーマンスは、第2パフォーマンスをリクエストしたユーザ5に関連付けられたアバターオブジェクト6を対象としないパフォーマンスであってもよい。このようなパフォーマンスの一例としては、ステージオブジェクト1532上でジャンプするなどが挙げられる。
通知画像8181、および、矢印画像8182または枠画像8283は、リクエストを受信した直後ではなく、予め設定されたタイミングで視界画像17Bに含められてもよい。予め設定されたタイミングとは、例えば、ユーザ5Bが、第2パフォーマンスを実行する期間として設定した期間が開始されたタイミングであってもよい。
第2パフォーマンスをリクエストするために必要な課金額は、例えば、第2パフォーマンスをリクエストするための操作が行われたときに決済されてもよい。
第2パフォーマンスのリクエストは、例えば、入札方式であってもよい。この例の場合、第2パフォーマンスをリクエストするために必要な課金額は設定されていない。プロセッサ210Aは、第2パフォーマンスの対価としての金額(以下、「第1金額」)の入力を受け付ける。また、プロセッサ210Aは、第1金額が、ユーザ5A以外のユーザ5(第3ユーザ)により入力された、第2パフォーマンスの対価としての金額(第2金額)より高い場合、第1金額を表す課金情報をタグオブジェクト2733Aに登録する。第1金額と第2金額との比較は、例えば、サーバ600が行えばよい。つまり、プロセッサ210Aは第1金額を示す情報をサーバ600へ送信する。サーバ600は、第1金額が第2金額より高い場合、その旨をコンピュータ200Aに通知する。プロセッサ210Aは、該通知を受信した場合、第1金額を表す課金情報をタグオブジェクト2733Aに登録する。
第2パフォーマンスのリクエストが入札方式である場合、第2パフォーマンスの内容および実行するタイミングはユーザ5Bが予め設定していてもよい。また、仮想空間11を複数の領域に分割し、該領域単位で入札が行われてもよい。この場合、プロセッサ210Bは、各領域の課金額を集計し、集計した金額が最も高い領域を示す画像を、視界画像17Bに含める。この場合の第2パフォーマンスは、例えば、各領域に配置されたステージオブジェクトのうち、集計した金額が最も高い領域に配置されたステージオブジェクトにアバターオブジェクト6Bが移動し、第1パフォーマンスを実行することであってもよい。
第2パフォーマンスのリクエストが入札方式である場合、最低入札金額が設定されていてもよい。サーバ600は、第1金額および第2金額が、いずれも最低入札金額より低い場合、その旨をコンピュータ200Bへ通知してもよい。プロセッサ210Bは、該通知を受信した場合、ユーザ5Bに、入札された金額が最低入札金額に到達しなかったことを通知してもよい。この場合、ユーザ5Bは、アバターオブジェクト6Bに第2パフォーマンスを実行させなくてもよい。例えば、第2パフォーマンスが、リクエストしたユーザ5に関連付けられたアバターオブジェクト6に近づいて、リクエストされた内容のパフォーマンスを行うことである例を説明する。この例において、第1金額および第2金額最低入札金額より低い場合、ユーザ5Bは、アバターオブジェクト6Bに、上記第2パフォーマンスに代えて、ステージオブジェクト1532上での第1パフォーマンスを継続させてもよい。
また、第2パフォーマンスのリクエストは、アバターオブジェクト6Bによる第1パフォーマンスが開始される前に行われてもよい。一例として、該リクエストは、ユーザ5Aがライブの仮想体験を開始する前に行われてもよい。この例の場合、該リクエストは、いわゆるクラウドファンディングの形式で行われてもよい。例えば、ユーザ5Bが、ライブの仮想体験の開始前に、アバターオブジェクト6Bが近づいて、所定のパフォーマンスを行なうことを希望するユーザ5に課金額の支払いを促す旨の募集を行う。課金額が設定した金額以上となった場合、アバターオブジェクト6Bは、ライブにおいて、課金額を負担したユーザ5に関連付けられたアバターオブジェクト6に近づいて、所定のパフォーマンスを行う。
〔実施形態6〕
本実施形態において、プロセッサ210Aは、ユーザ5Aに対する課金および決済に関する処理を、実施形態1に記載されるタグオブジェクト2733Aを用いた方式によって実行する。しかし、これに限定されず、プロセッサ210Aは、実施形態1に係る方式とは異なる任意の方式によって、ユーザ5Aに対する課金および決済に関する処理を実行することもできる。
図86は、HMDシステム100において実行される処理の一例を示すシーケンスチャートである。以下では、ユーザ5A(第1ユーザ)が、仮想空間11Aにてアバターオブジェクト6A(第1アバター)の外観を制御し、アバターオブジェクト6Aを対象とする第2パフォーマンスをアバターオブジェクト6B(第2アバター)に実行させるための一連の処理を説明する。図86に示すシーケンスチャートは、図26に示すステップS2614が実行された後の処理を示している。なお、アバターオブジェクト6の外観の制御は、ユーザ5Cが行ってもよいし、ユーザ5Dが行ってもよい。
図87は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像8717Aを示す図である。プロセッサ210Aは、アバターオブジェクト6Aの外観の制御をユーザ5Aに案内するメッセージを、ライブ中にユーザ5Aに通知する。一例として、外観の制御は、アバターオブジェクト6Aの外観を、他のアバターオブジェクト6より目立たせる(強調する)ことである。プロセッサ210Aは、例えば、タグオブジェクト2733Aにメッセージを表示する。メッセージは、外観の強調を案内するテキストと、ユーザ5Aがアバターオブジェクト6Aの外観を強調するために必要な課金額とを含む。
メッセージがタグオブジェクト2733Aに表示された後、プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図87(A)に示すように、仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図87(A)に示す第2仮想空間2711Aに対応する視界画像8717Aを、図87(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像8717Aを視認することによって、タグオブジェクト2733Aに表示されるメッセージを確認する。これにより、ユーザ5Aは、新たに500円の課金額を支払えば、アバターオブジェクト6Aの外観を強調できることを認識する。
ユーザ5Aは、タグオブジェクト2733Aに表示されたメッセージを確認した後、アバターオブジェクト6Aの外観を強調するための操作を行う。該操作は、実施形態1にて図34を参照して説明しているため、ここでは繰り返さない。プロセッサ210Aは、アバターオブジェクト6Aの外観の強調を案内するメッセージが表示されるタグオブジェクト2733Aが選択されたことに応じてアバターオブジェクト6Aの外観を強調するためのユーザ5Aの操作を検出する。
図88は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像8817Aを示す図である。ステップS8601において、プロセッサ210Aは、アバターオブジェクト6Aの強調に対応する課金情報を、タグオブジェクト2733Aに登録する。図88の例では、プロセッサ210Aは、アバターオブジェクト6Aが、仮想右手1531RAでタグオブジェクト2733Aを選択した場合、アバターオブジェクト6Aの強調に必要な課金額(500円)を表す課金情報を、タグオブジェクト2733Aに新たに登録する。なお、登録された課金情報が表す課金額の決済は、実施形態1で説明した方法で行えばよい。
課金情報が登録された後、プロセッサ210Aは、タグオブジェクト2733A上で課金情報を再び視覚化する。この処理の詳細については、実施形態1にて図35を参照して説明しているため、ここでは繰り返さない。プロセッサ210Aは、例えば、図88(A)に示す第2仮想空間2711Aに対応する視界画像8817Aを、図88(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像8817Aを視認することによって、アバターオブジェクト6Aを強調させた結果として現時点での合計課金額が2000円に増加したことを認識する。
図89は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像8117Bを示す図である。ステップS8602において、プロセッサ210Aは、アバターオブジェクト6Aの外観を、ユーザ5A以外の視聴者側のユーザ5(第3ユーザ)に関連付けられたアバターオブジェクト6(第3アバター、以下「他のアバターオブジェクト6」)より目立たせる。一例として、プロセッサ210Aは、他のアバターオブジェクト6より目立つように、アバターオブジェクト6Aの外観の色を制御する。詳細には、プロセッサ210Aは、図89(A)に示すように、テクスチャ4137Aをアバターオブジェクト6Aに貼り付けることにより、アバターオブジェクト6Aの外観の色を変化させる。テクスチャ4137Aは、アバターオブジェクト6Aの強調に必要な課金額(500円)がユーザ5Aに1回課金されたことに対応する、第1色に着色されるテクスチャである。プロセッサ210Aは、例えば、図89(A)に示す第2仮想空間2711Aに対応する視界画像8917Aを、図89(B)に示すようにモニタ130Aに表示する。
プロセッサ210Aは、アバターオブジェクト6Aの強調に必要な課金額をユーザ5Aに課金した回数が増えるたびに、アバターオブジェクト6Aをより目立たせてもよい。一例として、該課金額を課金した回数が増えるたびに、アバターオブジェクト6Aの外観の色をより目立つように変化させてもよい。例えば、該課金額を2回課金した場合、第1色より目立つ第2色に着色されるテクスチャを、アバターオブジェクト6Aに貼り付けてもよい。また、該課金額を3回課金した場合、第2色より目立つ第3色に着色されるテクスチャを、アバターオブジェクト6Aに貼り付けてもよい。第1色は、例えば銅色であり、第2色は例えば銀色であり、第3色は例えば金色である。
ステップS8603において、プロセッサ210Aは、外観が制御されたアバターオブジェクト6Aのアバター情報(第1情報)を、コンピュータ200Bへ送信する。詳細には、プロセッサ210Aは、該アバター情報をサーバ600へ送信する。サーバ600は、受信したアバター情報を、同期処理によってコンピュータ200Bへ送信する。なお、アバター情報には、ユーザ5Aを示す第1ユーザ情報が含まれている。第1ユーザ情報は、例えば、ユーザ5Aを示すIDであってもよいし、アバターオブジェクト6Aを示すIDであってもよい。
図90は、ある実施の形態に従う第2仮想空間2711Bおよび視界画像9017Bを示す図である。ステップS8611において、プロセッサ210Bは、プロセッサ210Aから送信されたアバター情報をリアルタイムに受信する。ステップS8612において、プロセッサ210Bは、受信したアバター情報に基づいて、アバターオブジェクト6Aの外観を、他のアバターオブジェクト6より目立たせる。詳細には、プロセッサ210Bは、受信したアバター情報に基づいて、図90(A)に示すように、テクスチャ4137Aをアバターオブジェクト6Aに貼り付けることにより、アバターオブジェクト6Aの外観の色を変化させる。プロセッサ210Bは、例えば、図90(A)に示す第2仮想空間2711Bに対応する視界画像9017Bを、図90(B)に示すようにモニタ130Aに表示する。ユーザ5B(第2ユーザ)は、視界画像9017Bを視認することによって、アバターオブジェクト6Aの外観が、他のアバターオブジェクト6より目立つように変更されたことを認識する。すなわち、ユーザ5Bは、アバターオブジェクト6Aを目立たせるための課金額がユーザ5Aに課金されたことを認識する。
ステップS8613において、プロセッサ210Bは、お勧めの第2パフォーマンスをユーザ5Bに通知する。詳細には、プロセッサ210Bは、複数の第2パフォーマンスのうち、少なくとも1つの第2パフォーマンスを選択し、ユーザ5Bに優先的に通知する。一例として、プロセッサ210Bは、外観が制御されたアバターオブジェクト6Aが関連付けられたユーザ5Aに対する課金に繋がる第2パフォーマンスを選択し、ユーザ5Bに通知する。
図91は、ユーザ5Bに少なくとも1つの第2パフォーマンスを通知するために、プロセッサ210Bが参照するデータの一例を示す図である。該データは、例えば、ストレージ230Bに格納されている。「第2パフォーマンス」のカラムには、「指さしポーズ」、「手を振る」などの各第2パフォーマンスの内容を示す情報(以下、「第2情報」)が格納されている。「第1ユーザ情報」のカラムには、各第2情報に関連付けられている第1ユーザ情報が格納されている。図91では、第1ユーザ情報の一例として、本明細書で「ユーザ」に付している符号5A、5C、および5Dを用いている。
第1ユーザ情報は、図86に示す処理以前に、プロセッサ210Bにより第2情報に関連付けられる。一例として、プロセッサ210Bは、アバターオブジェクト6Bが第2パフォーマンスを実行した後、該第2パフォーマンスの実行から所定時間、アバター情報の受信を待機する。所定時間以内にアバター情報を受信した場合、プロセッサ210Bは、該アバター情報に含まれる第1ユーザ情報を、直前に実行した第2パフォーマンスを示す第2情報に関連付ける。つまり、プロセッサ210Bは、第2パフォーマンスが実行されてから所定時間以内に、視聴者側のユーザ5が、自身に関連付けられたアバターオブジェクト6を目立たせるために課金情報を登録した場合、直前に実行した第2パフォーマンスを、該ユーザ5による課金に繋がった第2パフォーマンスとして設定する。
プロセッサ210Bは、受信したアバター情報に含まれる第1ユーザ情報が関連付けられている第2情報を、ユーザ5Bに通知する。一例として、ユーザ5Aを示す第1ユーザ情報「5A」を含むアバター情報を受信した場合、プロセッサ210Bは、図91に示すデータを参照し、「5A」という第1ユーザ情報が対応付けられた「指さしポーズ」を選択し、ユーザ5Bに通知する。つまり、プロセッサ210Bは、過去にアバターオブジェクト6Bに実行させた結果としてユーザ5Aに対する課金に実際に繋がった第2パフォーマンスを、課金に繋がる可能性が高い第2パフォーマンスとしてユーザ5Bに通知する。プロセッサ210Bは、図90(B)に示すように、視界画像9017Bに、選択した第2パフォーマンスの内容を示すテキストを含む通知画像9084を含めて、モニタ130Bに表示する。プロセッサ210Bは、通知画像9084と同一の外観を有する仮想オブジェクトを、第2仮想空間2711Bに配置することもできる。ユーザ5Bは、通知画像9084を視認することによって、ユーザ5Aに対する課金に繋がる可能性が高い第2パフォーマンスを認識することができる。
ステップS8614において、プロセッサ210Bは、第2パフォーマンスに対応するユーザ5Bの動きを検出する。ステップS8615において、プロセッサ210Bは、検出したユーザ5Bの動きに応じて、アバターオブジェクト6Bに第2パフォーマンスを実行させる。プロセッサ210Bは、ユーザ5Bの動きに応じて、アバターオブジェクト6Bに指さしポーズを実行させる。指さしポーズの詳細、および、指さしポーズをアバターオブジェクト6Bに実行させるためのユーザ5Bの動きの詳細は、実施形態5にて図83および84を参照して既に説明しているため、ここでは繰り返さない。
プロセッサ210Bは、アバターオブジェクト6Bに第2パフォーマンスを実行させると、通知画像9084を視界画像17Bにおいて非表示とする。プロセッサ210Bは、この処理の一例として、実施形態5にて説明した、通知画像8181および枠画像8283を視界画像17Bにおいて非表示とする処理と同様の処理を行なえばよい。
ステップS8616において、プロセッサ210Bは、第2パフォーマンスの実行に対応するアバター情報を、コンピュータ200Aへ送信する。詳細には、プロセッサ210Bは、該アバター情報をサーバ600へ送信する。サーバ600は、受信したアバター情報を、同期処理によってコンピュータ200Aへ送信する。
図92は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像9217Aを示す図である。ステップS8604において、プロセッサ210Aは、プロセッサ210Bから送信されたアバター情報をリアルタイムに受信する。ステップS8605において、プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、アバターオブジェクト6Bに第2パフォーマンスを実行させる。これにより、プロセッサ210Aは、ユーザ5Bの動きに応じて、アバターオブジェクト6Bに第2パフォーマンスを実行させることができる。
プロセッサ210Aは、アバターオブジェクト6Bによる第2パフォーマンスを、第2仮想空間2711Aにおいてアバターオブジェクト6Aに視聴させる。プロセッサ210Aは、例えば、図92(A)に示す第2仮想空間2711Aに対応する視界画像9217Aを、図92(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像8517Aを視認することによって、アバターオブジェクト6Bが、自身がリクエストした第2パフォーマンスを実行したことを認識する。これにより、ユーザ5Aは、自身に関連付けられたアバターオブジェクト6Aの外観を、課金額の負担により他の視聴者側のアバターオブジェクト6より目立たせたことによって、アバターオブジェクト6Bが第2パフォーマンスを実行したと認識し、喜びを感じる。つまり、仮想空間におけるライブの興趣性をより高めることができる。また、ユーザ5Aは、自身に向けられた第2パフォーマンスを再度実行してほしいと願い、アバターオブジェクト6Aをさらに目立たせるために、さらに課金額を支払う可能性がある。これにより、ユーザ5Bはより多くの収入を得ることができる。
また、ユーザ5Bがアバターオブジェクト6Bに、通知された第2パフォーマンス(お勧めの第2パフォーマンス)を実行させた場合を考える。該第2パフォーマンスは、過去に実行した際、ユーザ5Aが課金額を支払うことに繋がった第2パフォーマンスであり、換言すれば、ユーザ5Aが好む第2パフォーマンスである。ユーザ5Aにしてみると、自身に関連付けられたアバターオブジェクト6Aの外観を、課金額の支払いにより他の視聴者側のアバターオブジェクト6より目立たせたことによって、アバターオブジェクト6Bが、自身が好む第2パフォーマンスを実行してくれたと感じる。これにより、ユーザ5Aはより大きな喜びを感じる。また、アバターオブジェクト6Aをさらに目立たせるための課金額をユーザ5Aが支払う可能性も上がる。
[変形例]
アバターオブジェクト6Aの外観の制御は、アバターオブジェクト6Bからアバターオブジェクト6Aが目立つような外観の制御であれば、上述した、アバターオブジェクト6Aの色を変化させる例に限定されない。例えば、プロセッサ210Aは、アバターオブジェクト6Aの大きさや形状を変化させてもよい。また、プロセッサ210Aは、他のアバターオブジェクト6の外観を制御することにより、アバターオブジェクト6Aを目立たせてもよい。例えば、プロセッサ210Aは、他のアバターオブジェクト6を一定時間透明にしてもよい。
ユーザ5Bに通知する第2パフォーマンスを選択するための条件は、上述した例、すなわち、「課金に繋がる第2パフォーマンス」に限定されない。詳細には、プロセッサ210Bは、該条件で選択した第2パフォーマンスを、他の条件でさらに絞り込んでもよい。該他の条件は、例えば、「ユーザ5Bが得意な第2パフォーマンス」であってもよい。つまり、プロセッサ210Bは、ユーザ5Aに対する課金に繋がった第2パフォーマンスが複数ある場合、ユーザ5Bが得意な第2パフォーマンスを選択し、ユーザ5Bに通知してもよい。ユーザ5Bが得意な第2パフォーマンスは、ユーザ5Bが予め設定しておけばよい。
また、該他の条件は、例えば、「他のユーザ5の評価を下げない第2パフォーマンス」であってもよい。つまり、プロセッサ210Bは、ユーザ5Aに対する課金に繋がった第2パフォーマンスが複数ある場合、過去のライブで実行したときの評価を示す評価値が閾値未満の第2パフォーマンスを選択肢から除外してもよい。評価値は、一例として、視聴者側の各ユーザが行った個別の評価に基づいて算出される。該個別の評価は、例えば、視聴者側のユーザ5が右手または左手を用いて所定の操作を行うことにより入力された値であり、該値は、コンピュータ200Bへ送信される。プロセッサ210Bは、一例として、受信した値を平均することで、評価値を算出する。以上より、課金に繋がる第2パフォーマンスを行った結果、アバターオブジェクト6Bの評価が下がったり、インターネット上で批判されたりすることを防ぐことができる。
視聴者側のユーザ5は、個別の評価とともに、第2パフォーマンスに対するコメントを入力してもよい。プロセッサ210Aは、図示しない掲示板オブジェクトを第2仮想空間2711Aに配置すると共に、該コメントを掲示板オブジェクトに表示してもよい。
また、プロセッサ210Bは、ユーザ5Bに通知する第2パフォーマンスを選択する際、視聴者側のユーザ5の男女比、年齢の分布などを参照してもよい。例えば、ユーザ5Aに対する課金に繋がった複数の第2パフォーマンスに、過去のライブで実行したときの評価を示す評価値が閾値未満の第2パフォーマンスがあるとする。該第2パフォーマンスは、女性限定のライブにおいて評価値が閾値未満である一方、男性限定のライブにおいては評価値が閾値以上であるとする。ここで、今回のライブの視聴者側のユーザ5の男女比は、男性が8割であるとする。この場合、プロセッサ210Bは、該第2パフォーマンスは、男性には受けが良い第2パフォーマンスであるとして、選択肢から除外せず、ユーザ5Bに通知してもよい。
〔実施形態7〕
本実施形態において、プロセッサ210Aは、ユーザ5Aに対する課金および決済に関する処理を、実施形態1に記載されるタグオブジェクト2733Aを用いた方式によって実行する。しかし、これに限定されず、プロセッサ210Aは、実施形態1に係る方式とは異なる任意の方式によって、ユーザ5Aに対する課金および決済に関する処理を実行することもできる。
図93は、HMDシステム100において実行される処理の一例を示すシーケンスチャートである。以下では、ユーザ5A(第1ユーザ)の入力に基づいて、ライブの演出制御を実行するための一連の処理を説明する。図93に示すシーケンスチャートは、図26に示すステップS2613が実行された後の処理を示している。なお、本実施形態では、ユーザ5Aに行わせる演出制御として、照明制御を例に挙げて説明する。ただし、該演出制御は、照明制御に限定されない。例えば、該演出制御は、音響制御を含んでもよい。この例の場合、プロセッサ210Aは、ユーザ5Aの入力に基づいて、照明および音響の少なくとも一方を制御する。また、ライブの演出制御は、ユーザ5Cが行ってもよいし、ユーザ5Dが行ってもよい。
図94は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像9417Aを示す図である。図94(A)に示すように、第2仮想空間2711Aには、仮想オブジェクトの一種である、照明オブジェクト9491が配置されている。一例として、プロセッサ210Aは、ステージオブジェクト1532とともに、照明オブジェクト9491を第2仮想空間2711Aに配置してもよい。
ステップS9301において、プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、アバターオブジェクト6B(第2アバター)に第1パフォーマンスを実行させる。ステップS9302において、プロセッサ210Aは、第1照明演出を実行する。第1照明演出は、ユーザ5Bがライブの開始前に予め設定した照明演出である。第1照明演出を実行するための情報は、コンピュータ200Bからサーバ600を介してコンピュータ200Aに送信される。コンピュータ200Aは、例えば、アバターオブジェクト6Bを第2仮想空間2711Aに配置するためのアバター情報とともに、該情報を受信しておき、ステップS9302において、該情報に基づいて第1照明演出を実行してもよい。
詳細には、プロセッサ210Aは、仮想オブジェクト制御モジュール1427として、図94(A)に示すように、照明オブジェクト9491から、第1照明演出を実行するための情報に基づいて、光線オブジェクト9492を出射させる。プロセッサ210Aは、該情報に基づいて、照明オブジェクト9491を動かしてもよい。これにより、プロセッサ210Aは、光線オブジェクト9492を動かすことができる。なお、照明オブジェクト9491は、例えば、ステージオブジェクト1532の配置と同じタイミングで、第2仮想空間2711Aに配置されてもよい。
プロセッサ210Aは、照明制御をユーザ5Aに案内するメッセージを、ライブ中にユーザ5Aに通知する。プロセッサ210Aは、例えば、タグオブジェクト2733Aにメッセージを表示する。メッセージは、照明制御を案内するテキストと、ユーザ5Aがライブの照明制御を行うために必要な課金額とを含む。
メッセージがタグオブジェクト2733Aに表示された後、プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図94(A)に示すように、仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図94(A)に示す第2仮想空間2711Aに対応する視界画像9417Aを、図94(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像9417Aを視認することによって、タグオブジェクト2733Aに表示されるメッセージを確認する。これにより、ユーザ5Aは、新たに1000円の課金額を支払えば、自身がライブの照明制御を行なえることを認識する。
ユーザ5Aは、タグオブジェクト2733Aに表示されたメッセージを確認した後、照明制御を自身が行うための操作を行う。該操作は、実施形態1にて図34を参照して説明しているため、ここでは繰り返さない。プロセッサ210Aは、照明制御を案内するメッセージが表示されるタグオブジェクト2733Aが選択されたことに応じて、照明制御を行うためのユーザ5Aの操作を検出する。
図95は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像9517Aを示す図である。ステップS9303において、プロセッサ210Aは、照明制御に対応する課金情報を、タグオブジェクト2733Aに登録する。図95の例では、プロセッサ210Aは、アバターオブジェクト6A(第1アバター)が、仮想右手1531RAでタグオブジェクト2733Aを選択した場合、照明制御に必要な課金額(1000円)を表す課金情報を、タグオブジェクト2733Aに新たに登録する。なお、登録された課金情報が表す課金額の決済は、実施形態1で説明した方法で行えばよい。
課金情報が登録された後、プロセッサ210Aは、タグオブジェクト2733A上で課金情報を再び視覚化する。この処理の詳細については、実施形態1にて図35を参照して説明しているため、ここでは繰り返さない。プロセッサ210Aは、例えば、図95(A)に示す第2仮想空間2711Aに対応する視界画像9517Aを、図95(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像9517Aを視認することにより、照明制御を行うことによって現時点での合計課金額が2500円に増加したことを認識する。
図96は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像9617Aを示す図である。ステップS9304において、プロセッサ210Aは、アバターオブジェクト6Aを、照明制御を行うための第1位置へ移動させる。プロセッサ210Aは、仮想オブジェクト生成モジュール1421として、照明制御オブジェクト9693を生成し、第1位置へ移動したアバターオブジェクト6Aの前に配置する。照明制御オブジェクト9693は、照明演出を制御するための処理をプロセッサ210Aに実行させるために、ユーザ5Cによって用いられる。照明制御オブジェクト9693は、一例として、アバターオブジェクト6Aの操作を受け付けるボタン、ダイヤル、スライダなどの部分オブジェクトを含む。プロセッサ210Aは、部分オブジェクトに対する操作を受け付けることにより、照明演出を制御する。例えば、プロセッサ210Aは、受け付けた操作に応じて、光線オブジェクト9492の色を変化させたり、照明オブジェクト9491を動かしたりすることができる。なお、照明制御オブジェクト9693は、第1位置に基づいて定まる所定の位置(図96(A)に示す位置)に、アバターオブジェクト6Aが移動する前に配置されてもよい。例えば、照明制御オブジェクト9693は、ステージオブジェクト1532の配置と同じタイミングで、該所定の位置に配置されてもよい。
プロセッサ210Aは、例えば、図96(A)に示す第2仮想空間2711Aに対応する視界画像9617Aを、図96(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像9617Aを視認することにより、アバターオブジェクト6Aが第1位置へ移動したこと、および、照明制御オブジェクト9693を認識する。換言すれば、ユーザ5Aは、自身が照明制御を行えるようになったことを認識する。
図97は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像9717Aを示す図である。ユーザ5Aは、第1位置に移動した後、照明を制御するための操作を行う。ユーザ5Aは、仮想右手1531RAの先端を照明制御オブジェクト9693に近づけるように、自身の右手を動かす。ステップS9305において、プロセッサ210Aは、右コントローラ300RAの出力に基づいて、ユーザ5Aの右手の動きを検出する。ステップS9306において、プロセッサ210Aは、ユーザ5Aの右手の動きに応じて、仮想右手1531RAの先端を照明制御オブジェクト9693に近づけるように、第2仮想空間2711Aにおいて仮想右手1531RAを動かす。
ステップS9307において、プロセッサ210Aは、仮想右手1531RAの動きに応じて、照明制御オブジェクト9693を操作する。詳細には、プロセッサ210Aは、仮想右手1531RAの先端と照明制御オブジェクト9693に含まれる部分オブジェクトとが第1位置関係になった場合、仮想右手1531RAの先端と部分オブジェクトとが衝突したことを検出する。第1位置関係とは、例えば、仮想右手1531RAの先端と部分オブジェクトとの距離が第1距離を下回ることである。あるいは、仮想右手1531RAの先端に規定されるコリジョンエリアと、部分オブジェクトに設定されるコリジョンエリアとが少なくとも部分的に衝突することである。プロセッサ210Aは、仮想右手1531RAの先端と部分オブジェクトとが衝突したことに基づいて、仮想右手1531RAによって部分オブジェクトが操作されたことを検出する。
ステップS9308において、プロセッサ210Aは、照明制御オブジェクト9693に対する操作、すなわち、部分オブジェクトに対する操作に応じて、第2照明演出を実行する。第2照明演出とは、ユーザ5Aの制御によって行われる、第1照明演出と異なる照明演出である。例えば、プロセッサ210Aは、部分オブジェクトに対する操作に応じて、第1色に着色された光線オブジェクト9492を、図97(A)に示すように、第2色に着色された光線オブジェクト9792に変更する。プロセッサ210Aは、例えば、図97(A)に示す第2仮想空間2711Aに対応する視界画像9717Aを、図97(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像9717Aを視認することによって、第2仮想空間2711Aにおいて、自身の操作に応じた第2照明演出が実行されていることを確認する。
プロセッサ210Aは、第2照明演出を実行するための情報を、サーバ600に送信する。サーバ600は、受信した該情報を、全てのユーザ5のコンピュータ200へ送信する。これにより、各コンピュータ200のプロセッサ210は、第2照明演出を実行可能となる。
図98は、ある実施の形態に従う第2仮想空間2711Cおよび視界画像9817Cを示す図である。プロセッサ210Cは、第2照明演出を実行するための情報を受信すると、UIパネル9894を生成し、第2仮想空間2711Cに配置する。プロセッサ210Cは、例えば、図98(A)に示す第2仮想空間2711Cに対応する視界画像9817Cを、図98(B)に示すようにモニタ130Cに表示する。ユーザ5C(第3ユーザ)は、視界画像9817Cを視認することによって、UIパネル9894が第2仮想空間2711Cに配置されたことを認識する。
UIパネル9894はUIオブジェクトの一種であり、照明演出を選択するための処理をプロセッサ210Cに実行させるために、ユーザ5Cによって用いられる。UIパネル9894は、UIパネル9894の前面に配置される選択肢9895および9896を含む。選択肢9895および選択肢9896は、その選択肢がユーザ5Cによって選択された場合に選択される照明演出を説明する情報を含む。選択肢9895は、第1照明演出、換言すれば、デフォルトの照明演出を選択するための項目であり、選択肢9896は、第2照明演出、換言すれば、ユーザ5Aの制御による照明演出を選択するための項目である。つまり、ユーザ5Cは、第2照明演出でアバターオブジェクト6Bの第1パフォーマンスを視聴するか否かを選択することができる。
図98の例では、選択肢9895が選択されている。このため、プロセッサ210Cは、第2仮想空間2711Cにおいて、第1照明演出を実行している。プロセッサ210Cは、図98(B)に示すように、選択されている選択肢9895と選択されていない選択肢9896との色を異ならせてもよい。これにより、ユーザ5Cは、選択肢9895が選択されていることを認識することができる。なお、第1照明演出はデフォルトの照明演出であるため、UIパネル9894が第2仮想空間2711Cに配置された時点で、自動的に選択肢9855が選択されていてもよい。
ユーザ5Cは、第2仮想空間2711Cにおいて第2照明演出の実行を希望する場合、照明演出を変更するための操作を行う。一例として、ユーザ5Cは、仮想右手1531RCの先端を選択肢9896に近づけるように、自身の右手を動かす。プロセッサ210Cは、右コントローラ300RCの出力に基づいて、ユーザ5Cの右手の動きを検出する。そして、プロセッサ210Cは、ユーザ5Cの右手の動きに応じて、仮想右手1531RCの先端を選択肢9896に近づけるように、第2仮想空間2711Cにおいて仮想右手1531RCを動かす。
プロセッサ210Cは、ユーザ5Cの右手の動きに基づいて、仮想右手1531RCの先端を選択肢9896に近づけるように、第2仮想空間2711Cにおいて仮想右手1531RCを動かす。プロセッサ210Cは、仮想右手1531RCの先端と選択肢9896とが衝突したことに基づいて、仮想右手1531RCによって選択肢9896が選択されたことを検出する。
図99は、ある実施の形態に従う第2仮想空間2711Cおよび視界画像9917Cを示す図である。プロセッサ210Cは、選択肢9896の選択を検出したことに応じて、第2仮想空間2711Cにおいて第2照明演出を実行する。プロセッサ210Cは、例えば、図99(A)に示す第2仮想空間2711Cに対応する視界画像9917Cを、図99(B)に示すようにモニタ130Cに表示する。ユーザ5Cは、視界画像9917Cを視認することによって、選択肢9896が選択されたこと、および、第2仮想空間2711Cにおいて第2照明演出が開始されたことを認識する。プロセッサ210Cは、第2仮想空間2711Cにおいて第2照明演出を実行すると、サーバ600を介して、その旨をコンピュータ200Aへ通知する。
図100は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像10017Aを示す図である。ステップS9309において、プロセッサ210Aは、第2照明演出でアバターオブジェクト6Bの第1パフォーマンスを視聴しているユーザ5の人数をユーザ5Aに通知する。詳細には、プロセッサ210Aは、他のコンピュータ200から受信した、第2照明演出を実行した旨の通知の数を、上記人数としてユーザ5Aに通知する。プロセッサ210Aは、例えば、図100(A)に示す第2仮想空間2711Aに対応する視界画像10017Aに、上記人数を示すテキストを含む通知画像10085を含める。そして、プロセッサ210Aは、図100(B)に示すように、視界画像10017Aをモニタ130Aに表示する。プロセッサ210Aは、通知画像10085と同一の外観を有する仮想オブジェクトを、第2仮想空間2711Aに配置することもできる。ユーザ5Aは、視界画像10017Aを視認することによって、第2照明演出でアバターオブジェクト6Bの第1パフォーマンスを視聴している人数を認識する。
図101は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像10117Aを示す図である。図101(A)では、第2仮想空間2711Aにおけるライブは終了している。ライブの終了に伴って、アバターオブジェクト6Bおよび6Cが第2仮想空間2711Aから退出している。アバターオブジェクト6Aおよび6Dは、ライブの終了後に第2仮想空間2711Aに残っている。
ステップS9310において、プロセッサ210Aは、他のユーザ5の、第2照明演出に対する評価に基づいて、タグオブジェクト2733Aに登録された課金情報における課金額を変更する。該評価は、一例として、第2照明演出でアバターオブジェクト6Bの第1パフォーマンスを視聴したユーザ5の人数であってもよい。プロセッサ210Aは、例えば、該人数が多いほど、タグオブジェクト2733Aに登録された課金情報における課金額を減少させてもよい。
プロセッサ210Aは、例えば、図101(A)に示す第2仮想空間2711Aに対応する視界画像10117Aを、図101(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像10117Aを視認することによって、ライブが終了したことを認識する。ユーザ5Aは、さらに、ユーザ5Aに課金された合計課金額が、2500円(図95(B)参照)から2300円に変更されたことを認識する。換言すれば、ユーザ5Aは、自身が行った照明制御の評価により、照明制御に必要な課金額が安くなったことを認識する。
以上のように、プロセッサ210Aは、課金情報の登録に応じて、ユーザ5Aにライブの演出を制御させる。このように、HMDシステム100は、現実のライブでは不可能な、観客によるライブの演出をユーザ5Aに仮想体験させることができる。結果として、仮想空間におけるライブの興趣性をより高めることができる。また、ライブの演出制御には、課金額の支払いが必要となるため、演出制御を行うユーザ5の人数を最適化することができ、ユーザ5の演出によりアバターオブジェクト6Bのパフォーマンスが阻害されることを防ぐことができる。
また、ユーザ5Aによる演出制御が高い評価を得た場合、ユーザ5Aが仮想空間におけるライブの演出スタッフとしての名声を得ることができる。結果として、ユーザ5Aが、ユーザ5Bにより演出スタッフとして雇用されることも考えられる。
[変形例]
図102は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像10217Aを示す図である。プロセッサ210Aは、ユーザ5B(第2ユーザ)による第1操作を検出した場合に、ユーザ5Aによる演出制御を可能としてもよい。詳細には、プロセッサ210Aは、コンピュータ200Bから、演出制御を許可する旨の通知を受信した場合、演出制御をユーザ5Aに案内するメッセージを、タグオブジェクト2733Aに表示する。プロセッサ210Aは、例えば、図102(A)に示す第2仮想空間2711Aに対応する視界画像10217Aを、図102(B)に示すようにモニタ130Aに表示する。このとき、プロセッサ210Aは、視界画像10217Aに、ユーザ5Aによる演出制御が可能となったことを示す通知画像10286を含めてもよい。これにより、ユーザ5Aは、視界画像10217Aを視認することによって、自身による演出制御が可能となったことを認識することができる。なお、第1操作は、例えば、図102(B)に示すように、アバターオブジェクト6Bに、両手を上に上げる姿勢を取らせるためのユーザ5Bの動きであってもよい。プロセッサ210Aは、通知画像10286と同一の外観を有する仮想オブジェクトを、第2仮想空間2711Aに配置することもできる。
演出制御のために必要な課金額は、演出制御の内容に応じて設定されてもよい。例えば、音響および照明を制御する場合、いずれか一方のみを制御する場合より高い課金額が設定されてもよい。また、演出制御のために必要な課金額は、演出制御を行った時間に応じて決定されてもよい。この例の場合、プロセッサ210Aは、演出制御の終了後に、演出制御に要した時間に応じた課金額を表す課金情報を、タグオブジェクト2733Aに新たに登録する。
ユーザ5Aは、演出制御を、コンピュータ200Aに接続された入力デバイスへの操作により行ってもよい。この例の場合、プロセッサ210Aは、モニタ130だけでなく、コンピュータ200Aに接続されたディスプレイ430Aに視界画像17Aを表示するものとする。詳細には、ユーザ5Aは、課金情報が登録された後、HMD120を頭部から外す。そして、演出制御に適した視界画像17Aが、ディスプレイ430Aに表示されるように、HMD120の向きを調節する。演出制御に適した視界画像17Aとは、例えば、アバターオブジェクト6Bおよび光線オブジェクト9492が含まれる視界画像である。そして、ユーザ5Aは、コンピュータ200Aに接続されたキーボードやマウスなどの入力デバイスを操作する。プロセッサ210Aは、該操作に応じた演出制御を実行する。
他のユーザ5の、第2照明演出に対する評価に基づいて、タグオブジェクト2733Aに登録された課金情報における課金額が変更された結果、合計課金額が負の値となってもよい。例えば、ユーザ5Aが行った演出制御が非常に高い評価を得たことにより、課金額が大幅に減少され、合計課金額が負の値となってもよい。この場合、ユーザ5Bまたはプラットフォーマが、上記合計課金額の絶対値をユーザ5Aに報酬として支払うこととなる。
ユーザ5Aによる演出制御に、ユーザ5Aに対する課金が不要であってもよい。
〔実施形態8〕
本実施形態において、プロセッサ210Aは、ユーザ5Aに対する課金および決済に関する処理を、実施形態1に記載されるタグオブジェクト2733Aを用いた方式によって実行する。しかし、これに限定されず、プロセッサ210Aは、実施形態1に係る方式とは異なる任意の方式によって、ユーザ5Aに対する課金および決済に関する処理を実行することもできる。
[会場選択]
図103は、ある実施の形態に従う第1仮想空間2411A(第1領域)および視界画像10317Aを示す図である。プロセッサ210Aは、UIパネル10350およびペンオブジェクト2453を生成し、第1仮想空間2411Aに配置する。なお、ペンオブジェクト2453は、実施形態1にて、図24を参照して既に説明しているため、ここでは説明を繰り返さない。
UIパネル10350は、実施形態1にて説明したUIパネル2450(図24参照)と同様に、会場を選択するための処理をプロセッサ210Aに実行させるために、ユーザ5Aによって用いられる。UIパネル10350は、UIパネル10350の前面に配置される選択肢10351および10352を含む。選択肢10351および10352は、その選択肢がユーザ5A(第1ユーザ)によって選択された場合に選択される会場の名称を説明する情報を含む。また、選択肢10351および10352は、その選択肢がユーザ5Aによって選択された場合の課金額を含む。該課金額は、一例として、会場料金(第1課金額)およびパフォーマンス料金(第2課金額)である。会場料金は、会場に応じた課金額であり、パフォーマンス料金は、アバターオブジェクト6のパフォーマンスに応じた課金額である。
選択肢10351は、第1会場を選択するための項目であり、第1会場を選択した場合の会場料金は1000円、パフォーマンス料金は1000円である。選択肢10352は、第1会場と異なる第2会場を選択するための項目であり、第2会場を選択した場合の会場料金は500円、パフォーマンス料金は800円である。つまり、第1会場と第2会場とは異なる会場であるため、選択肢10351と選択肢10352とで会場料金が異なっている。また、第1会場でパフォーマンスをするアバターオブジェクト6と、第2会場でパフォーマンスをするアバターオブジェクト6とは異なり、さらに、そのパフォーマンス内容も異なり得るため、選択肢10351と選択肢10352とでパフォーマンス料金も異なっている。
プロセッサ210Aは、例えば、図103(A)に示す第1仮想空間2411Aに対応する視界画像10317Aを、図103(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像10317Aを視認することによって、UIパネル10350の選択肢10351または選択肢10352を選択する必要があることを認識する。
図104は、ある実施の形態に従う第1仮想空間2411Aおよび視界画像10417Aを示す図である。プロセッサ210Aは、第1会場をユーザ5Aに選択させる。図104(A)に示すように、プロセッサ210Aは、仮想右手1531RAがペンオブジェクト2453を選択した後、ユーザ5Aの右手の動きに基づいて、ペンオブジェクト2453の先端を選択肢10351に近づけるように、第1仮想空間2411Aにおいて仮想右手1531RAおよびペンオブジェクト2453を動かす。プロセッサ210Aは、ペンオブジェクト2453の先端と選択肢10351とが衝突したことに基づいて、ペンオブジェクト2453によって選択肢10351が選択されたことを検出する。そして、プロセッサ210Aは、選択された選択肢10351に対応する第1会場の選択を受け付ける。
プロセッサ210Aは、例えば、図104(A)に示す第1仮想空間2411Aに対応する視界画像10417Aを、図104(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像10417Aを視認することによって、UIパネル10350の選択肢10351を選択したこと(すなわち第1会場を選択したこと)を認識する。
図105は、ある実施形態に従うHMDセット110において実行される処理の一部を表すシーケンスチャートである。以下では、ユーザ5Aが、第1会場を選択した後の課金に関する処理について説明する。図105に示すシーケンスチャートは、図26に示すステップS2607が実行された後の処理を示している。
図106は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像10617Aを示す図である。ステップS10501において、プロセッサ210Aは、会場料金を表す課金情報をタグオブジェクト2733Aに登録する(第1課金に関する処理を実行する)。ステップS10502において、プロセッサ210Aは、パフォーマンス料金を表す課金情報をタグオブジェクト2733Aに登録する(第2課金に関する処理を実行する)。プロセッサ210Aは、タグオブジェクト2733Aに登録された課金情報を、タグオブジェクト2733A上で視覚化する。図106(A)の例では、プロセッサ210Aは、会場料金とパフォーマンス料金との合計(2000円)を、合計課金額としてタグオブジェクト2733Aに表示する。なお、ステップS10501およびステップS10502の処理は、同時に実行されてもよいし、ステップS10502の処理が、ステップS10501の処理より前に実行されてもよい。
課金情報が登録された後、ユーザ5Aは、腕時計で時間を確認するように、左手を自身の視界内まで移動させる。プロセッサ210Aは、左コントローラ300LAの出力に基づいて、ユーザ5Aの左手の動きを検出する。プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図106(A)に示すように仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図106(A)に示す第2仮想空間2711Aに対応する視界画像10617Aを、図106(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像10617Aを視認することによって、タグオブジェクト2733Aに表示される上限課金額および合計課金額を、それぞれ確認する。図106(B)の例では、ユーザは、上限課金額が30000円であり、かつ、現時点での合計課金額が2000円であることを認識する。換言すれば、ユーザ5Aは、第2仮想空間2711Aにアバターオブジェクト6A(第1アバター)が入場した結果、会場料金(1000円)およびパフォーマンス料金(1000円)が課金されたことを把握する。
ステップS10503において、プロセッサ210Aは、アバターオブジェクト6B(第2アバター)のアバター情報をサーバ600からリアルタイムに受信する。ステップS10504において、プロセッサ210Aは、最初に受信したアバターオブジェクト6Bのアバター情報に基づいて、アバターオブジェクト6Bを第2仮想空間2711Aに配置する。詳細には、プロセッサ210Aは、アバターオブジェクト6Bをステージオブジェクト1532上に配置する。
実施形態1にて図31を参照して説明したように、ライブの開始後、ユーザ5B(第2ユーザ)は自身の身体を動かす。プロセッサ210Bは、ユーザ5Bの動きに応じて、第2仮想空間2711Bにおいてアバターオブジェクト6Bに第1パフォーマンスを実行させる。プロセッサ210Bは、アバターオブジェクト6Bが第1パフォーマンスを実行した際のアバターオブジェクト6Bの動き情報を含むアバター情報を、サーバ600にリアルタイムに送信する。
ステップS10505において、プロセッサ210Aは、アバターオブジェクト6Bのアバター情報をサーバ600からリアルタイムに受信する。ステップS10506において、プロセッサ210Aは、受信したアバター情報に含まれる動き情報に基づいて、アバターオブジェクト6Bに第1パフォーマンスを実行させる。
以上のように、プロセッサ210Aは、ユーザ5Aの会場選択に応じて、アバターオブジェクト6Aが第2仮想空間2711Aに入場したとき、会場料金を表す課金情報と、パフォーマンス料金を表す課金情報とをタグオブジェクト2733Aに登録する。このように、HMDシステム100は、アバターオブジェクト6Bのパフォーマンスと、該パフォーマンスを実行する会場とが考慮された、より適切な課金額を、ユーザ5Aに課金することができる。
[会場料金の設定]
図107は、ある実施の形態に従う第1仮想空間2411Aおよび視界画像10717Aを示す図である。プロセッサ210Aは、UIパネル10750およびペンオブジェクト2453を生成し、第1仮想空間2411Aに配置する。図107に示す第1仮想空間2411Aは、図103に示す第1仮想空間2411Aとは異なるタイミング(例えば、別の日)に生成された第1仮想空間であるとする。つまり、図107は、図103の例とは別の日において、ユーザ5Aがライブを視聴するために会場の選択を行なっている例を示す図である。
図107に示す例において、第1会場は、図103に示す第1会場と異なる。一方、第1会場で行われるパフォーマンス、および、該パフォーマンスを行うアバターオブジェクト6は、図103の例と同じであるとする。なお、第2会場、該第2会場で行われるパフォーマンス、および、該パフォーマンスを行うアバターオブジェクト6は、図103の例と同じであるとする。このため、UIパネル10750は、選択肢10751に含まれる会場料金(500円)が選択肢10351に含まれる会場料金(1000円)と異なる。UIパネル10750は、この点を除き、図103に示すUIパネル10350と同様である。
図108は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像10817Aを示す図である。図108は、図107に示す第1仮想空間2411Aにおいて、ユーザ5Aが第1会場を選択し、第1会場、すなわち第2仮想空間2711Aに入場した後の状態を示す図である。
図108(A)に示す第2仮想空間2711Aは、図106(A)に示す第2仮想空間2711Aより狭い。換言すれば、図108(A)に示す第2仮想空間2711Aは、図106(A)に示す第2仮想空間2711Aに比べて収容人数が少ない。また、図108(A)に示す第2仮想空間2711Aに配置されたステージオブジェクト10832は、図106(A)に示す第2仮想空間2711Aに配置されたステージオブジェクト1532より狭い。換言すれば、図108(A)に示す第2仮想空間2711Aは、図106(A)に示す第2仮想空間2711Aに比べて設備が充実していない。
このため、図108(A)に示す第2仮想空間2711Aに入場するために課金される会場料金(500円)は、図106(A)に示す第2仮想空間2711Aに入場するために課金される会場料金(1000円)より安くなっている。このように、ある局面において、会場料金は、会場、すなわち第2仮想空間2711Aの属性に基づいて設定される。第2仮想空間2711Aの属性の一例としては、収容人数、設備の充実度合い、音質などが挙げられる。
プロセッサ210Aは、例えば、図108(A)に示す第2仮想空間2711Aに対応する視界画像10817Aを、図108(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像10817Aを視認することによって、第2仮想空間2711Aにアバターオブジェクト6Aが入場した結果、1500円が課金されたことを認識する。具体的には、ユーザ5Aは、会場料金として500円、パフォーマンス料金として1000円が課金されたことを認識する。
図109は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像10917Aを示す図である。図109は、アバターオブジェクト6Bが第2仮想空間2711Aに配置された後の状態を示す図である。なお、アバターオブジェクト6Bが第2仮想空間2711Aに配置された後、すなわちライブの開始後に、視聴者側のアバターオブジェクト6が第2仮想空間2711Aに入場することはできないものとする。
プロセッサ210Aは、第2仮想空間2711Aに配置された、アバターオブジェクト6A以外の視聴者側のアバターオブジェクト6(第3アバター、以下、「他のアバターオブジェクト6」)の数に基づいて、ユーザ5Aに課金する会場料金を設定してもよい。この例の場合、会場料金は、第1仮想空間2411Aにおける会場の選択の時点では確定していない。このため、第1仮想空間2411Aに配置されるUIパネルの選択肢は、会場料金の金額を含まない選択肢であってもよい。換言すれば、この例におけるUIパネルは、図24に示すUIパネル2450であってもよい。
プロセッサ210Aは、アバターオブジェクト6Bが第2仮想空間2711Aに配置されると、他のアバターオブジェクト6の数を算出する。そして、プロセッサ210Aは、算出した数に応じて、アバターオブジェクト6Aに課金する会場料金を決定し、該会場料金を表す課金情報をタグオブジェクト2733Aに登録する。なお、プロセッサ210Aは、一例として、このタイミングで、パフォーマンス料金を表す課金情報もタグオブジェクト2733Aに登録してもよい。あるいは、プロセッサ210Aは、アバターオブジェクト6Aが第2仮想空間2711Aに入場したときに、パフォーマンス料金を表す課金情報をタグオブジェクト2733Aに登録してもよい。
図109(A)に示すように、第2仮想空間2711Aには、他のアバターオブジェクト6が3体配置されている。プロセッサ210Aは、この例において、会場料金を1000円に決定し、該会場料金を表す課金情報と、パフォーマンス料金(1000円)を表す課金情報をタグオブジェクト2733Aに登録する。
プロセッサ210Aは、例えば、図109(A)に示す第2仮想空間2711Aに対応する視界画像10917Aを、図109(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像10917Aを視認することによって、第2仮想空間2711Aにアバターオブジェクト6Aが入場した結果、会場料金とパフォーマンス料金の合計金額として2000円が課金されたことを認識する。
図110は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像11017Aを示す図である。図110は、図109と同様の状態を示す図である。この例においても、アバターオブジェクト6Bが第2仮想空間2711Aに配置された後、すなわちライブの開始後に、視聴者側のアバターオブジェクト6が第2仮想空間2711Aに入場することはできないものとする。また、この例におけるアバターオブジェクト6Bのパフォーマンスは、図109の例と同一であるものとする。つまり、図110の例におけるパフォーマンス料金は、図109の例と同様に1000円であるとする。
図110の例では、図110(A)に示すように、第2仮想空間2711Aに配置された、他のアバターオブジェクト6の数が5体であり、図109の例より多い。プロセッサ210Aは、この例において、会場料金を、図109の例より高い1500円に決定し、該会場料金を表す課金情報と、パフォーマンス料金(1000円)を表す課金情報をタグオブジェクト2733Aに登録する。プロセッサ210Aは、例えば、図110(A)に示す第2仮想空間2711Aに対応する視界画像11017Aを、図110(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像11017Aを視認することによって、第2仮想空間2711Aにアバターオブジェクト6Aが入場した結果、会場料金とパフォーマンス料金の合計金額として2500円が課金されたことを認識する。
このように、プロセッサ210Aは、視聴者側のアバターオブジェクト6の数が多い、すなわち、人気のあるライブである場合、会場料金をより高く設定し、会場料金を適正なものとすることができる。
プロセッサ210Aは、他のアバターオブジェクト6の数に代えて、他のアバターオブジェクト6が関連付けられるユーザ5(第3ユーザ、以下、「他のユーザ5」)の属性に基づいて、会場料金を設定してもよい。あるいは、プロセッサ210Aは、他のアバターオブジェクト6の数、および、他のユーザ5の属性に基づいて、会場料金を設定してもよい。該属性の一例としては、有名度、性別、職業、年収などが挙げられる。これらの情報は、例えば、仮想空間でのライブを視聴するサービスへ登録するときに入力されればよい。プロセッサ210Aは、例えば、有名人に関連付けられたアバターオブジェクト6が、視聴者側のアバターオブジェクト6として第2仮想空間2711Aに配置されている場合、会場料金をより高く設定してもよい。また例えば、プロセッサ210Aは、ユーザ5Aが男性である場合において、女性であるユーザ5に関連付けられた、他のアバターオブジェクト6の割合が所定の値以上である場合、会場料金をより高く設定してもよい。
また、プロセッサ210Aは、アバターオブジェクト6Aを第2仮想空間2711Aに入場させた時点で、既に第2仮想空間2711Aに配置されている他のアバターオブジェクト6に基づいて、会場料金を設定してもよい。詳細には、プロセッサ210Aは、該他のアバターオブジェクト6の数、および、該他のアバターオブジェクト6に関連付けられるユーザ5の属性の少なくとも一方に基づいて、会場料金を設定してもよい。この例の場合、プロセッサ210Aは、アバターオブジェクト6Aが第2仮想空間2711Aに入場したときに、会場料金を表す課金情報をタグオブジェクト2733Aに登録してもよい。
プロセッサ210Aは、ユーザ5Aが好む他のユーザ5の属性と、第2仮想空間2711Aに配置された他のユーザ5の属性との一致率に応じて、会場料金を設定してもよい。ユーザ5Aが好む他のユーザ5の属性は、ユーザ5Aが予め入力しておいてもよいし、プロセッサ210Aが、過去にユーザ5Aが視聴したライブにおける他のユーザ5の属性に基づいて決定してもよい。
[会場選択の変形例]
会場料金およびパフォーマンス料金は、ライブを視聴した時間に応じて設定されてもよい。この例の場合、プロセッサ210Aは、ユーザ5Aがライブの視聴を終了した時点で、会場料金およびパフォーマンス料金の決済に関する処理を行えばよい。
会場料金は、さらに、第2仮想空間2711Aにおいて、アバターオブジェクト6Aが配置された位置に応じて設定されてもよい。一例として、プロセッサ210Aは、アバターオブジェクト6Bにより近い位置にアバターオブジェクト6Aを配置した場合、会場料金をより高く設定してもよい。また、プロセッサ210Aは、第2仮想空間2711Aにおけるアバターオブジェクト6Aの位置と、該位置にアバターオブジェクト6Aが存在した時間とに応じて、会場料金を設定してもよい。つまり、プロセッサ210Aは、アバターオブジェクト6Aが位置を移動する前後において、単位時間当たりの課金額を変更してもよい。
プロセッサ210Aは、第1仮想空間2411Aにおいて、すなわち、ユーザ5Aに会場を選択させるときに、各会場の最も良い席からのプレビューをユーザ5Aに体験させてもよい。最も良い席とは、例えば、最前列の席であってもよい。
[アバターオブジェクト6のシャッフル]
プロセッサ210Aは、一例として、ユーザ5Aの入力に応じて、課金に関する処理が実行された場合、アバターオブジェクト6Aおよび他のアバターオブジェクト6からなるアバター群から選択された複数のアバターオブジェクト6それぞれを、第2仮想空間2711Aの異なる位置に移動させる。ある局面において、プロセッサ210Aは、第2仮想空間2711Aにおいて、アバター群から選択された複数のアバターオブジェクト6の位置を入れ替える。以下、この入れ替えを「アバターシャッフル」と称する。
図111は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像11017Aを示す図である。プロセッサ210Aは、アバターシャッフルをユーザ5Aに案内するメッセージを、ライブ中にユーザ5Aに通知する。プロセッサ210Aは、例えば、タグオブジェクト2733Aにメッセージを表示する。メッセージは、アバターシャッフルを案内するテキストと、ユーザ5Aがアバターシャッフルを行うために必要な課金額とを含む。
メッセージがタグオブジェクト2733Aに表示された後、プロセッサ210Aは、ユーザ5Aの左手の動きに応じて、図111(A)に示すように、仮想左手1531LAを視界領域15A内に移動させる。プロセッサ210Aは、例えば、図111(A)に示す第2仮想空間2711Aに対応する視界画像11117Aを、図111(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像11117Aを視認することによって、タグオブジェクト2733Aに表示されるメッセージを確認する。これにより、ユーザ5Aは、新たに1000円の課金額を支払えば、アバターシャッフルを行なえることを認識する。
ユーザ5Aは、タグオブジェクト2733Aに表示されたメッセージを確認した後、アバターシャッフルを行うための操作を行う。該操作は、実施形態1にて図34を参照して説明しているため、ここでは繰り返さない。プロセッサ210Aは、アバターシャッフルを案内するメッセージが表示されるタグオブジェクト2733Aが選択されたことに応じて、アバターシャッフルを行うためのユーザ5Aの操作を検出する。該操作を検出すると、プロセッサ210Aは、アバターシャッフルに対応する課金情報を、タグオブジェクト2733Aに登録し、アバターシャッフルを実行する。図111の例では、プロセッサ210Aは、アバターオブジェクト6Aが、仮想右手1531RAでタグオブジェクト2733Aを選択した場合、アバターシャッフルに必要な課金額(1000円)を表す課金情報を、タグオブジェクト2733Aに新たに登録する(第3課金に関する処理を実行する)。なお、登録された課金情報が表す課金額の決済は、実施形態1で説明した方法で行えばよい。
図112は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像11217Aを示す図である。プロセッサ210Aは、一例として、図112(A)に示すように、第2仮想空間2711Aに配置されている6体のアバターオブジェクト6の位置をランダムに入れ替える。アバターシャッフルが実行されたことにより、アバターオブジェクト6Aは、図111の例において最前列にいたアバターオブジェクト6の位置へ移動している。また、図111の例において、アバターオブジェクト6Aに最も近い位置にいたアバターオブジェクト6はアバターオブジェクト6Cである。一方、アバターシャッフルが実行されたことにより、アバターオブジェクト6Aに最も近い位置にいるアバターオブジェクト6は、図112(A)に示すようにアバターオブジェクト6Dとなっている。
プロセッサ210Aは、例えば、図112(A)に示す第2仮想空間2711Aに対応する視界画像11217Aを、図112(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像11217Aを視認することにより、アバターシャッフルによってアバターオブジェクト6Aが移動したことを認識する。
プロセッサ210Aは、アバターシャッフルを実行した場合、アバターシャッフル実行後の各アバターオブジェクト6の位置を示す情報を含むアバター情報を、サーバ600へ送信する。サーバ600は、同期処理により、受信したアバター情報を、各コンピュータ200へ送信する。これにより、ユーザ5B、5C、5Dなどの各ユーザ5に提供された仮想空間11においても、アバターシャッフルが実行される。
図113は、ある実施の形態に従う第2仮想空間2711Aおよび視界画像11317Aを示す図である。課金情報が登録された後、プロセッサ210Aは、タグオブジェクト2733A上で課金情報を再び視覚化する。この処理の詳細については、実施形態1にて図35を参照して説明しているため、ここでは繰り返さない。プロセッサ210Aは、例えば、図113(A)に示す第2仮想空間2711Aに対応する視界画像11317Aを、図113(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像11317Aを視認することにより、アバターシャッフルを行うことによって現時点での合計課金額が2500円に増加したことを認識する。
以上のように、プロセッサ210Aは、課金情報の登録に応じて、アバターシャッフルを実行する。これにより、アバターオブジェクト6Aに最も近い位置にいる他のアバターオブジェクト6が変更される。結果として、ユーザ5は、ライブ中にアバターシャッフルを実行することにより、多様な他のユーザ5とのコミュニケーションを実現することができる。
[アバターシャッフルの変形例]
図114は、ある実施の形態に従う第2仮想空間4411Aおよび視界画像11417Aを示す図である。プロセッサ210Aは、第2仮想空間2711Aと同様に、アバターオブジェクト6A~6D、およびステージオブジェクト1532を第2仮想空間4411Aに配置する。第2仮想空間4411Aは、第1領域4451を含んでいる。第1領域4451は、第2仮想空間4411Aの一部分に相当する。プロセッサ210Aは、第1領域4451の外縁における一カ所に、ゲートオブジェクト4452を配置する。
図114では、アバターオブジェクト6A~6Cおよびステージオブジェクト1532は第1領域4451内に配置されている。アバターオブジェクト6Dは、第1領域4451外に配置されている。第1領域4451は、図示しない不透明の壁オブジェクトによって囲まれている。第1領域4451では、アバターオブジェクト6Bのライブが開催されている。第1領域4451内にいるアバターオブジェクト6は、アバターオブジェクト6Bによるパフォーマンスを視聴することができる。第1領域4451外にいるアバターオブジェクト6は、アバターオブジェクト6Bによるパフォーマンスを視聴することができない。つまり、図114の例の場合、アバターオブジェクト6Aおよび6Cは、アバターオブジェクト6Bによるパフォーマンスを視聴することができる。アバターオブジェクト6Dは、アバターオブジェクト6Bによるパフォーマンスを視聴することができない。
プロセッサ210Aは、例えば、図114(A)に示す第2仮想空間4411Aに対応する視界画像11417Aを、図114(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像11417Aを視認することにより、アバターオブジェクト6Cが第1領域4451内にいることを認識する。
図115は、ある実施の形態に従う第2仮想空間4411Aおよび視界画像11517Aを示す図である。プロセッサ210Aは、一例として、ユーザ5Aの入力に応じて、課金に関する処理が実行された場合、アバターシャッフルを実行し、第1領域4451内に配置された他のアバターオブジェクト6を第1領域4451外に移動させるとともに、第1領域4451外に配置された他のアバターオブジェクト6を第1領域4451内に移動させてもよい。プロセッサ210Aは、例えば、アバターシャッフルを実行することにより、アバターオブジェクト6Cの位置とアバターオブジェクト6Dの位置とを入れ替える。これにより、図115(A)に示すように、アバターオブジェクト6Cが第1領域4451外へ移動し、アバターオブジェクト6Dが第1領域内へ移動する。
プロセッサ210Aは、例えば、図115(A)に示す第2仮想空間4411Aに対応する視界画像11517Aを、図115(B)に示すようにモニタ130Aに表示する。ユーザ5Aは、視界画像11517Aを視認することにより、アバターシャッフルによって、アバターオブジェクト6Dが、アバターオブジェクト6Cがいた位置に移動したことを認識する。そして、ユーザ5Aは、新たな他のユーザ5(ユーザ5D)とのコミュニケーションを実現することができる。
なお、本変形例の場合、アバターシャッフルにより第1領域4451内から第1領域4451外へアバターオブジェクト6が移動する可能性があることを、ライブの開始前にユーザ5に通知しておくことが好ましい。また、プロセッサ210Aは、第1領域4451外にスクリーンオブジェクト4340(図43参照)を配置してもよい。すなわち、第1領域4451外は、第1領域4451内で行われているライブのパブリックビューイング会場であってもよい。
また、プロセッサ210Aは、ユーザ5Bによる第1操作を検出した場合に、アバターシャッフルを可能としてもよい。詳細には、プロセッサ210Aは、コンピュータ200Bから、アバターシャッフルを許可する旨の通知を受信した場合、アバターシャッフルをユーザ5Aに案内するメッセージを、タグオブジェクト2733Aに表示する。このとき、プロセッサ210Aは、視界画像17Aに、アバターシャッフルが可能となったことを示す通知画像を含めてもよい。これにより、ユーザ5Aは、視界画像17Aを視認することによって、アバターシャッフルが可能となったことを認識することができる。
また、プロセッサ210Aは、一例として、ユーザ5Aの入力に応じて、課金に関する処理が実行された場合、1体の他のアバターオブジェクト6を、アバターオブジェクト6Aに最も近い位置へ移動させてもよい。
ユーザ5Aによるアバターシャッフルに、ユーザ5Aに対する課金が不要であってもよい。
プロセッサ210Aは、ユーザ5Aの入力に応じて、他のユーザ5が実行するアバターシャッフルの対象からアバターオブジェクト6Aを除外するための課金に関する処理を実行してもよい。
以上、本開示の実施形態について説明したが、本発明の技術的範囲は、本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は、特許請求の範囲に記載された発明の範囲およびその均等の範囲に基づいて定められるべきである。
〔付記事項〕
本発明の一側面に係る内容を列記すると以下の通りである。
(項目1) プログラムを説明した。本開示のある局面によると、プログラムは、第1ユーザ(ユーザ5A)に仮想体験を提供するために、プロセッサ(プロセッサ210A)を備えたコンピュータ(コンピュータ200A)によって実行される。プログラムは、プロセッサに、仮想体験を第1ユーザに提供するための仮想空間(第2仮想空間2711A)を定義するステップ(S2601)と、第1ユーザに関連付けられる第1アバター(アバターオブジェクト6A)と、第2ユーザ(ユーザ5B)に関連付けられる第2アバター(アバターオブジェクト6B)とを、仮想空間に配置するステップ(S2606、S2612)と、第2ユーザの動きに応じて、第2アバターにパフォーマンスを実行させるステップ(S9301)と、パフォーマンスに関する演出を実行するステップ(S9302)と、第1ユーザの入力に基づいて、演出を制御するステップ(S9308)と、を実行させる。
(項目2) (項目1)において、プログラムは、プロセッサに、第1ユーザの頭部の姿勢と仮想空間における第1アバターの位置とに応じて、仮想空間における第1アバターからの視界(視界領域15A)を制御するステップ(S2608)と、第1アバターからの視界に対応する視界画像(視界画像17A)を定義するステップ(S2609)と、第1ユーザの頭部に関連付けられた画像表示装置(モニタ130A)に前記視界画像を出力するステップ(S2609)と、をさらに実行させる。
(項目3) (項目1)または(項目2)において、プログラムは、プロセッサに、第1ユーザの入力に基づいて、課金に関する処理を実行するステップ(S9303)をさらに実行させる。課金に関する処理が実行された場合、演出を制御するステップにおいて、演出を制御する。
(項目4) (項目3)において、プログラムは、プロセッサに、仮想空間に、第3ユーザ(ユーザ5C、5D)に関連付けられる第3アバター(アバターオブジェクト6C、6D)を配置するステップ(S2605)と、第1ユーザの入力に基づいて制御された演出に対する、第3ユーザの評価に基づいて、第1ユーザに対する課金額を決定するステップ(S9310)をさらに実行させる。
(項目5) (項目4)において、課金額を決定するステップにおいて、評価が高いほど、課金額を減少させる。
(項目6) (項目4)または(項目5)において、第3ユーザは、第1ユーザの入力に基づいて制御された演出でパフォーマンスを視聴するか否かを選択可能である。プログラムは、プロセッサに、第1ユーザの入力に基づいて制御された演出でパフォーマンスを視聴している第3ユーザの人数を第1ユーザに通知するステップ(S9309)をさらに実行させる。
(項目7) (項目1)~(項目6)のいずれかにおいて、プログラムは、プロセッサに、第2ユーザによる第1操作を検出するステップをさらに実行させる。第1操作が検出された場合、演出を制御するステップにおいて、演出を制御することを可能とする。
(項目8) (項目1)~(項目7)のいずれかにおいて、演出を制御するステップにおいて、パフォーマンスに関する音響および照明の少なくとも一方を制御する。
(項目9) 情報処理装置を説明した。本開示のある局面によると、情報処理装置(コンピュータ200A)は、第1ユーザ(ユーザ5A)に仮想体験を提供するために、情報処理装置によって実行されるプログラムを記憶する記憶部(ストレージ230A)と、プログラムを実行することにより、情報処理装置の動作を制御する制御部(プロセッサ210A)と、を備えている。制御部は、仮想体験を第1ユーザに提供するための仮想空間(第2仮想空間2711A)を定義し、第1ユーザに関連付けられる第1アバター(アバターオブジェクト6A)と、第2ユーザ(ユーザ5B)に関連付けられる第2アバター(アバターオブジェクト6B)とを、仮想空間に配置し、第2ユーザの動きに応じて、第2アバターにパフォーマンスを実行させ、パフォーマンスに関する演出を実行し、第1ユーザの入力に基づいて、演出を制御する。
(項目10) プログラムを実行する方法を説明した。本開示のある局面によると、プログラムは、第1ユーザ(ユーザ5A)に仮想体験を提供するために、プロセッサ(プロセッサ210A)を備えたコンピュータ(コンピュータ200A)によって実行される。方法は、プロセッサが、仮想体験を第1ユーザに提供するための仮想空間(第2仮想空間2711A)を定義するステップ(S2601)と、第1ユーザに関連付けられる第1アバター(アバターオブジェクト6A)と、第2ユーザ(ユーザ5B)に関連付けられる第2アバター(アバターオブジェクト6B)とを、仮想空間に配置するステップ(S2606、S2612)と、第2ユーザの動きに応じて、第2アバターにパフォーマンスを実行させるステップ(S9301)と、パフォーマンスに関する演出を実行するステップ(S9302)と、第1ユーザの入力に基づいて、演出を制御するステップ(S9308)と、を含む。
上記実施形態においては、HMDによってユーザが没入する仮想空間(VR空間)を例示して説明したが、HMDとして、透過型のHMDを採用してもよい。この場合、透過型のHMDを介してユーザが視認する現実空間に仮想空間を構成する画像の一部を合成した視界画像を出力することにより、拡張現実(AR:Augmented Reality)空間または複合現実(MR:Mixed Reality)空間における仮想体験をユーザに提供してもよい。この場合、操作オブジェクトに代えて、ユーザの手の動きに基づいて、仮想空間内における対象オブジェクトへの作用を生じさせてもよい。具体的には、プロセッサは、現実空間におけるユーザの手の位置の座標情報を特定するとともに、仮想空間内における対象オブジェクトの位置を現実空間における座標情報との関係で定義してもよい。これにより、プロセッサは、現実空間におけるユーザの手と仮想空間における対象オブジェクトとの位置関係を把握し、ユーザの手と対象オブジェクトとの間で上述したコリジョン制御等に対応する処理を実行可能となる。その結果、ユーザの手の動きに基づいて対象オブジェクトに作用を与えることが可能となる。