〔実施形態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の情報を更新する。
[コンピュータ200のモジュールの詳細構成]
図14を参照して、コンピュータ200のモジュール構成の詳細について説明する。図14は、ある実施の形態に従うコンピュータ200のモジュールの詳細構成を表わすブロック図である。図14に示されるように、コントロールモジュール510は、仮想オブジェクト生成モジュール1421、仮想カメラ制御モジュール1422、操作オブジェクト制御モジュール1423、アバターオブジェクト制御モジュール1424、動き検出モジュール1425、衝突検出モジュール1426、仮想オブジェクト制御モジュール1427、および学習モジュール1428を備えている。メモリモジュール530は、学習済みモデル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は、アバターオブジェクト6が仮想空間2611において行った過去の動作(第1動作)を機械学習することによって、当該動作が機械学習された学習済みモデル1429を生成する。
[配信システムの構成]
図15は、本実施の形態に従う配信システム1500の構成の概略を表す図である。配信システム1500は、サーバ600と、HMDセット110Bと、ユーザ端末800A,800C,800Dと、ネットワーク2とを含む。HMDセット110Bと、ユーザ端末800A,800C,800Dの各々とは、ネットワーク2を介してサーバ600と通信可能に構成される。以下、ユーザ端末800A,800C,800Dを総称して、ユーザ端末800とも言う。配信システム1500を構成するユーザ端末800の数は、3つに限られず、2つ以下でも、4つ以上でもよい。
ユーザ端末800は、ユーザ5が持ち運び可能な携帯型の端末装置である。ユーザ端末800は、例えば、スマートフォン、タブレット端末、またはノートパソコンなどとして実現される。以下、ユーザ端末800Aのユーザをユーザ5A、HMDセット110Bのユーザをユーザ5B、ユーザ端末800Cのユーザをユーザ5C、ユーザ端末800Dのユーザをユーザ5Dと表す。ユーザ端末800Aに関する各構成要素の参照符号にAが付され、HMDセット110Bに関する各構成要素の参照符号にBが付され、ユーザ端末800Cに関する各構成要素の参照符号にCが付され、ユーザ端末800Dに関する各構成要素の参照符号にDが付される。
配信システム1500は、ユーザ5Bに関連付けられるアバターオブジェクト6Bが仮想空間において実演する番組を、HMDセット110Bから各ユーザ端末800にストリーミング配信するためのシステムである。ユーザ5Bは、HMDセット110Bにおいてアバターオブジェクト6Bを制御することによって、アバターオブジェクト6Bの番組を進行させる。ユーザ5Aは、配信されるアバターオブジェクト6Bの番組を、ユーザ端末800Aを通じて視聴する。ユーザ5Cは、配信されるアバターオブジェクト6Bの番組を、ユーザ端末800Cを通じて視聴する。ユーザ5Dは、配信されるアバターオブジェクト6Bの番組を、ユーザ端末800Dを通じて視聴する。
[ユーザ端末のハードウェア構成]
図16は、ある実施の形態に従うユーザ端末800のハードウェア構成の一例を表すブロック図である。ユーザ端末800は、主たる構成要素として、プロセッサ710と、メモリ720と、ストレージ730と、入出力インターフェイス740と、通信インターフェイス750と、タッチスクリーン770と、スピーカ780とを備える。各構成要素は、それぞれ、バス760に接続されている。
プロセッサ710は、ユーザ端末800に与えられる信号に基づいて、あるいは、予め定められた条件が成立したことに基づいて、メモリ720またはストレージ730に格納されているプログラムに含まれる一連の命令を実行する。ある局面において、プロセッサ710は、CPU、GPU、MPU、FPGAその他のデバイスとして実現される。
メモリ720は、プログラムおよびデータを一時的に保存する。プログラムは、例えば、ストレージ730からロードされる。データは、ユーザ端末800に入力されたデータと、プロセッサ710によって生成されたデータとを含む。ある局面において、メモリ720は、RAMその他の揮発メモリとして実現される。
ストレージ730は、プログラムおよびデータを永続的に保持する。ストレージ730は、例えば、ROM、ハードディスク装置、フラッシュメモリ、その他の不揮発記憶装置として実現される。ストレージ730に格納されるプログラムは、ユーザ端末800において仮想空間を提供するためのプログラム、シミュレーションプログラム、ゲームプログラム、ユーザ認証プログラム、サーバ600との通信を実現するためのプログラムを含んでもよい。ストレージ730に格納されるデータは、仮想空間を規定するためのデータおよびオブジェクト等を含んでもよい。別の局面において、ストレージ730は、メモリカードのように着脱可能な記憶装置として実現されてもよい。
入出力インターフェイス740は、入出力機器との間で信号を通信する。ある局面において、入出力インターフェイス740は、USB、DVI、HDMIその他の端子を用いて実現される。入出力インターフェイス740は上述のものに限られない。
通信インターフェイス750は、ネットワーク2に接続されて、ネットワーク2に接続されているサーバ600と通信する。ある局面において、通信インターフェイス750は、例えば、LANその他の有線通信インターフェイス、あるいは、WiFi、Bluetooth、NFCその他の無線通信インターフェイスとして実現される。通信インターフェイス750は上述のものに限られない。
タッチスクリーン770は、図示しない入力部および表示部を組み合わせた電子部品である。入力部は、例えばタッチセンシティブなデバイスであり、例えばタッチパッドによって構成される。表示部152は、例えば液晶ディスプレイ、または有機EL(Electro-Luminescence)ディスプレイ等によって構成される。入力部は、入力面に対しユーザの操作(主にタッチ操作、スライド操作、スワイプ操作、およびタップ操作等の物理的接触操作)が入力された位置を検知して、位置を示す情報を入力信号として送信する機能を備える。入力部は、図示しないタッチセンシング部を備えていればよい。タッチセンシング部は、静電容量方式または抵抗膜方式等のどのような方式を採用したものであってもよい。
スピーカ780は、音声信号を音声に変換してユーザ5に出力する。別の局面において、ユーザ端末800は、スピーカ780に替えてイヤホンを含み得る。
ある局面において、プロセッサ710は、ストレージ730にアクセスし、ストレージ730に格納されている1つ以上のプログラムをメモリ720にロードし、当該プログラムに含まれる一連の命令を実行する。当該1つ以上のプログラムは、ユーザ端末800のオペレーティングシステム、仮想空間を提供するためのアプリケーションプログラム、仮想空間で実行可能なゲームソフトウェア等を含み得る。
図示していないが、ユーザ端末800は、ユーザ端末800の保持姿勢を特定するための1以上のセンサを備えていてもよい。このセンサは、例えば、加速度センサ、または、角速度センサ等であってもよい。ユーザ端末800がセンサを備えている場合、プロセッサ710は、センサの出力からユーザ端末800の保持姿勢を特定して、保持姿勢に応じた処理を行うことも可能になる。例えば、プロセッサ710は、ユーザ端末800が縦向きに保持されているときには、縦長の画像をタッチスクリーン770に表示させる縦画面表示としてもよい。一方、ユーザ端末800が横向きに保持されているときには、横長の画像をタッチスクリーンに表示させる横画面表示としてもよい。このように、プロセッサ710は、ユーザ端末800の保持姿勢に応じて縦画面表示と横画面表示とを切り替え可能であってもよい。
[ユーザ端末のモジュール構成]
図17は、ある実施の形態に従うユーザ端末800のモジュールの詳細構成を表わすブロック図である。図17に示されるように、ユーザ端末800Aは、コントロールモジュール810と、レンダリングモジュール820と、メモリモジュール830と、通信制御モジュール840とを備える。ある局面において、コントロールモジュール810とレンダリングモジュール820とは、プロセッサ710によって実現される。別の局面において、複数のプロセッサ710がコントロールモジュール810とレンダリングモジュール820として作動してもよい。メモリモジュール830は、メモリ720またはストレージ730によって実現される。通信制御モジュール840は、通信インターフェイス750によって実現される。
コントロールモジュール810、レンダリングモジュール820、メモリモジュール530、および通信制御モジュール840の基本的な機能は、コンピュータ200が備えるコントロールモジュール510、レンダリングモジュール520、メモリモジュール530、および通信制御モジュール540と同一である。したがって、これらの詳細な説明は繰り返さない。
図17に示すように、コントロールモジュール810は、仮想オブジェクト生成モジュール1721、仮想視点制御モジュール1722、アバターオブジェクト制御モジュール1723、および学習モジュール1724を備えている。メモリモジュール830は、学習済みモデル1725を格納している。
仮想オブジェクト生成モジュール1721は、コンピュータ200が備える仮想オブジェクト生成モジュール1421と同一の機能を少なくとも有するため、その詳細な説明を繰り返さない。仮想視点制御モジュール1722は、仮想空間11における仮想視点の挙動を制御する。仮想視点は、仮想カメラ14と同等の機能を有する。仮想視点制御モジュール1722は、例えば、仮想空間11における仮想視点の配置位置と、仮想視点の向き(傾き)とを制御する。アバターオブジェクト制御モジュール1723は、コンピュータ200が備えるアバターオブジェクト制御モジュール1424と同一の機能を少なくとも有するため、その詳細な説明を繰り返さない。
学習モジュール1724は、コンピュータ200が備える学習モジュール1428と同一の機能を少なくとも有するため、その詳細な説明を繰り返さない。学習済みモデル1725は、コンピュータ200のメモリモジュール530に格納される学習済みモデル1429と同一のものであるため、その詳細な説明は繰り返さない。
[演者(配信者)の仮想空間]
図18は、ある実施の形態に従う仮想空間11Bおよび視界画像1817Bを示す図である。図18(A)では、ユーザ5Bに仮想体験を提供するための仮想空間11Bに、アバターオブジェクト6B、仮想カメラ14B、およびパネルオブジェクト1832が少なくとも配置される。ユーザ5B(第1ユーザ)は、頭部にHMD120Bを装着している。ユーザ5Bは、ユーザ5Bの身体の右側の一部を構成する右手(第1部位)で右コントローラ300RBを把持し、ユーザ5Bの身体の左側の一部を構成する左手(第2部位)で左コントローラ300LBを把持している。
HMD120Bは、モーションセンサとして機能するセンサ190を備える。右コントローラ300RBおよび左コントローラ300LBは、モーションセンサ420を備える。ユーザ5Bは、さらに、モーションセンサ1841~1843を装着している。モーションセンサ1841は、ベルト1844によってユーザ5Bの腰部に装着されている。モーションセンサ1842は、ユーザ5Bの右足の甲に装着されている。モーションセンサ1843は、ユーザ5Bのユーザ5Bの左足の甲に装着されている。モーションセンサ1841~1843は、有線または無線によってコンピュータ200Bに接続されている。
ある局面において、ユーザ5Bに装着されるモーションセンサは、ベースステーション(図示しない)から照射される信号(例えば赤外線レーザ)の到達時間と角度とを検出する。コンピュータ200Bのプロセッサ210B(以下、単にプロセッサ210B)は、モーションセンサの検出結果に基づいて、ベースステーションに対するモーションセンサの位置を検出する。プロセッサ210Bは、さらに、ベースステーションに対するモーションセンサの位置を、所定点(例えば頭部に装着されたセンサ190の位置)を基準として規格化してもよい。
アバターオブジェクト6Bは、仮想右手1831RBおよび仮想左手1831LBを含む。仮想右手1831RBは操作オブジェクトの一種であり、ユーザ5Bの右手の動きに応じて仮想空間11Bにおいて動くことができる。仮想左手1831LBは操作オブジェクトの一種であり、ユーザ5Bの左手の動きに応じて仮想空間11Bにおいて動くことができる。
図18(A)に示す仮想空間11Bは、コンピュータ200Bにおいて番組コンテンツが再生されることによって、構築される。ユーザ5Bは、アバターオブジェクト6Bにパフォーマンスを実行させるために、自身の身体を動かす。コンピュータ200Bは、ユーザ5Bに装着される各種のモーションセンサの出力に基づいて、ユーザ5Bの動きを検出する。仮想空間11Bにおいて、アバターオブジェクト6Bは、特定されたユーザ5Bの動きに応じて、現実空間におけるユーザ5Bの動きが反映されたパフォーマンスを実行する。仮想空間11Bにおいてアバターオブジェクト6Bがユーザ5Bに動きに応じたパフォーマンスを実行すると、仮想空間11Bに同期する仮想空間11A、11C、および11Dにおいても、アバターオブジェクト6Bが同じパフォーマンスを実行する。このように、ユーザ5Bは、アバターオブジェクト6Bによる番組を、ユーザ5A、5C、および5Dにそれぞれ配信する配信者としての役割を有する。
パネルオブジェクト1832は、アバターオブジェクト6Bの番組の視聴者であるユーザ5Aなどが、番組の配信中に入力したコメントが表示される仮想オブジェクトである。パネルオブジェクト1832は、透過設定された半透明のオブジェクトであってもよい。
図18(A)において、仮想カメラ14Bは、アバターオブジェクト6Bの頭部に配置される。仮想カメラ14Bは、仮想カメラ14Bの位置および向きに応じた視界領域15Bを規定する。仮想カメラ14Bは、視界領域15Bに対応する視界画像1817Bを生成して、図18(B)に示すようにHMD120Bに表示させる。ユーザ5Bは、視界画像1817Bを視認することによって、アバターオブジェクト6Bの視点で仮想空間の一部を視認する。これにより、ユーザ5Bは、あたかもユーザ5B自身がアバターオブジェクト6Bであるかのような仮想体験を、得ることができる。視界画像1817Bには、パネルオブジェクト1832が含まれる。したがって、ユーザ5Bは、アバターオブジェクト6Bによる番組に対するユーザ5Aなどからのコメントを、番組の配信中にリアルタイムに視認することができる。
[視聴者の仮想空間]
図19は、ある実施の形態に従う仮想空間11Aおよびユーザ端末800Aの表示面を示す図である。図19(A)では、ユーザ5A(第2ユーザ)に仮想体験を提供するための仮想空間11Aに、アバターオブジェクト6Bが少なくとも配置される。仮想空間11Aは、図18に示す仮想空間11Bに同期している。ユーザ5Aは、頭部にHMD120Aを装着せず、左手にユーザ端末800Aを把持している。図19の例では、ユーザ5Aは、アバターオブジェクト6Bが実演する番組(配信動画)を、ユーザ端末800Aの画面を視認しながら視聴する。
図19(A)に示す仮想空間11Aは、ユーザ端末800Aにおいて番組コンテンツが再生されることによって、構築される。仮想空間11Aにおいて、アバターオブジェクト6Bは、ユーザ5Bの動きに基づいて、ライブの演者としてパフォーマンスを実行する。ユーザ5Bは、ユーザ端末800Aの画面を通じて、ライブの視聴者としてアバターオブジェクト6Bのパフォーマンスを視聴する。このとき、ユーザ5Cは、ユーザ端末800Cの画面を通じて、ライブの視聴者としてアバターオブジェクト6Bのパフォーマンスを視聴する。また、ユーザ5Dは、ユーザ端末800Dの画面を通じて、ライブの視聴者としてアバターオブジェクト6Bのパフォーマンスを視聴する。このように、アバターオブジェクト6Bの番組は、複数の異なるユーザ5に対して同時にストリーミング配信される。
図19(A)において、仮想空間11Aの中心12Aに仮想視点1951が設定される。仮想視点1951は、仮想カメラ14Aと同等の機能を有する。仮想視点1951は、仮想視点1951の位置および向きに応じた視界領域15Aを規定する。プロセッサ710Aは、視界領域15Aに対応する視界画像1917Aを生成して、図19(B)に示すように、タッチスクリーン770Aに表示する。視界画像1917Aには、パフォーマンスを実行するアバターオブジェクト6Bが少なくとも含まれる。ユーザ5Aは、視界画像1917Aを視認することによって、アバターオブジェクト6Bと、アバターオブジェクト6Bが登場する仮想空間11Aの一部とを、視認する。これにより、ユーザ5Aは、あたかもアバターオブジェクト6Bが実際の配信者であるかのような仮想体験を、得ることができる。
[寸法データの取得]
図20は、寸法データの取得方法を説明するための図である。寸法データは、ユーザ5Bの身体の寸法を表すデータである。図20(A)は、ユーザ5Bが、正面を向き、両手を水平に広げ、起立している状態を表す。以下、図20(A)に示される状態を第1姿勢とも言う。図20(B)は、ユーザ5Bが、正面を向き、両手を太もも側面に下ろし、起立している状態を表す。以下、図20(B)に示される状態を第2姿勢とも言う。
ある局面において、プロセッサ210Bは、ユーザ5Bに対し第1姿勢および第2姿勢をとるように促す。一例として、プロセッサ210Bは、第1姿勢および第2姿勢のキャラクタをモニタ130Bに表示し、同様の姿勢をとる旨のメッセージを表示する。他の例として、プロセッサ210Bは、第1姿勢および第2姿勢をとる旨の音声をスピーカ180Bから出力してもよい。
プロセッサ210Bは、ユーザ5Bに装着されたモーションセンサから、ユーザ5Bの頭部、腰部、両手、および両足の位置を検出する。以下、各モーションセンサによって検出されるユーザ5Bの部位の位置を「位置情報」とも言う。プロセッサ210Bは、2つの姿勢(第1姿勢と第2姿勢)のそれぞれにおいて、ユーザ5Bに装着されたモーションセンサの出力に基づいてユーザ5Bの頭部、腰部、両手、両足の位置情報を取得する。これら位置情報は、図21に示されるように実座標系(x、y、z)における位置として取得され得る。
プロセッサ210Bは、2つの姿勢に対応する位置情報からユーザ5Bの寸法データを算出する。ある実施形態において、プロセッサ210Bは、図22に示されるように、ユーザ5Bの身長、肩幅、腕の長さ、足の長さ、頭部から肩までの高さを寸法データとして算出する。プロセッサ210Bは、第2姿勢における両手の間隔を肩幅として算出し得る。プロセッサ210Bは、第1姿勢における両手の間隔から肩幅を差し引いた値の半分を腕の長さとして算出し得る。プロセッサ210Bは、足の高さから頭部の高さまでの距離を身長として算出し得る。プロセッサ210Bは、足の高さから腰部の高さまでの距離を足の長さとして算出し得る。プロセッサ210Bは、第1姿勢における手の高さから頭部までの高さを、頭部から肩までの高さとして算出し得る。
図23は、寸法データを取得するための処理を表すフローチャートである。ステップS2310において、プロセッサ210Bは、仮想空間11Bに仮想カメラ14Bを配置する。プロセッサ210Bはさらに、仮想カメラ14Bの撮影範囲に対応する視界画像17Bをモニタ130Bに出力する。
ステップS2320において、プロセッサ210Bは、ユーザ5Bに第1姿勢になるように指示する。例えば、プロセッサ210Bは、当該指示が記されたオブジェクトを仮想空間11Bに配置することでステップS2320の処理を実現する。ステップS2330において、プロセッサ210Bは、第1姿勢に対応する位置情報を取得する。
ステップS2340において、プロセッサ210Bは、ユーザ5Bに第2姿勢になるように指示する。ステップS2350において、プロセッサ210Bは、第2姿勢に対応する位置情報を取得する。
ステップS2360において、プロセッサ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は、関節の回転方向の精度を向上し得る。
[番組配信フロー]
図25は、ある実施の形態に従う配信システム1500において実行される処理の一部を表すシーケンスチャートである。図26は、ある実施の形態に従う仮想空間2611Bおよび視界画像2617Bを示す図である。図27は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。本実施形態では、少なくともHMDセット110B、ユーザ端末800A、およびサーバ600が、アバターオブジェクト6Bの番組を進行させるための一連の処理を実行する。HMDセット110Bの処理の一部または全部は、サーバ600またはユーザ端末800Aによって実行されてもよい。以下では、仮想空間2611Bにおいて進行するアバターオブジェクト6Bの番組を、HMDセット110Bからユーザ端末800Aに配信するための一連の処理を説明する。ユーザ端末800Cおよび800Dに対しても、同様の一連の処理に基づいてアバターオブジェクト6Bの番組が配信される。
ステップS2501において、プロセッサ210Bは、図26(A)に示すような仮想空間2611Bを定義する。当該処理は、図11のステップS1110の処理に相当する。具体的には、プロセッサ210Bは、仮想空間データを特定することによって、仮想空間データによって表される仮想空間2611Bを定義する。仮想空間2611Bは、アバターオブジェクト6Bが番組を実演する仮想空間である。言い換えれば、仮想空間2611Bは、アバターオブジェクト6Bによるパフォーマンスが行われる仮想空間である。
ステップS2502において、プロセッサ210Bは、仮想オブジェクト生成モジュール1421として、ユーザ5B(第1ユーザ)に関連付けられるアバターオブジェクト6B(第1アバター)を生成し、仮想空間2611Bに配置する。ステップS2503において、プロセッサ210Bは、仮想オブジェクト生成モジュール1421として、仮想カメラ14Bを生成し、仮想空間2611Bに配置する。図26(A)では、仮想カメラ14Bは、アバターオブジェクト6Bの頭部に配置される。ステップS2504において、プロセッサ210Bは、仮想オブジェクト生成モジュール1421として、パネルオブジェクト1832を生成し、仮想空間2611Bに配置する。パネルオブジェクト1832は、番組の視聴者であるユーザ5Aなどが入力したコメントが表示される仮想オブジェクトである。図26(A)では、パネルオブジェクト1832は、アバターオブジェクト6Bの正面における、アバターオブジェクト6Bから一定距離置いた位置に配置される。この時点では、番組に対するコメントがユーザ5Aなどによって入力されていないので、パネルオブジェクト1832にはコメントが表示されていない。
ステップS2505において、プロセッサ210Bは、アバターオブジェクト6Bのアバター情報を生成し、サーバ600を介してユーザ端末800Aに送信する。ステップS2506において、プロセッサ210Bは、仮想カメラ制御モジュール1422として、HMD120Bの動きに応じて仮想空間2611Bにおける仮想カメラ14Bの位置および傾きを決定する。より詳細には、プロセッサ210Bは、ユーザ5Bの頭部の姿勢と、仮想空間2611Bにおける仮想カメラ14Bの位置とに応じて、仮想空間2611Bにおける仮想カメラ14B(仮想視点)からの視界である視界領域15Bを制御する。当該処理は、図11のステップS1140の処理の一部に相当する。仮想カメラ14Bがアバターオブジェクト6Bと同一の位置に配置されるので、仮想カメラ14Bの位置は、アバターオブジェクト6Bの位置と同義である。さらに、仮想カメラ14Bからの視界は、アバターオブジェクト6Bからの視界と同義である。
ステップS2507において、プロセッサ210Bは、視界画像2617Bをモニタ130Bに表示する。具体的には、プロセッサ210Bは、HMD120Bの動き(すなわち仮想カメラ14Bの位置および傾き)と、仮想空間2611Bを定義する仮想空間データと、に基づいて、視界領域15Bに対応する視界画像2617Bを定義する。視界画像2617を定義することは、視界画像2617Bを生成することと同義である。プロセッサ210Bは、さらに、HMD120Bのモニタ130Bに視界画像2617Bを出力することによって、視界画像2617BをHMD120Bに表示させる。当該処理は、図11のステップS1180およびS1190の処理に相当する。
プロセッサ210Bは、例えば、図26(A)に示す仮想空間2611Bに対応する視界画像2617Bを、図26(B)に示すようにモニタ130Bに表示する。視界画像2617Bは、コメントが表示されないパネルオブジェクト1832を含む。ユーザ5Bは、視界画像2617Bを視認することによって、アバターオブジェクト6Bの視点で、仮想空間2611Bの一部を視認する。これにより、ユーザ5Bは、あたかもユーザ5B自身がアバターオブジェクト6Bであるかのような仮想体験を、得ることができる。ユーザ5Bは、パネルオブジェクト1832を視認することによって、現時点ではアバターオブジェクト6Bの番組に対するコメントが得られていないことを認識する。
ステップS2521において、プロセッサ710Aは、ユーザ5Aに仮想体験を提供するための仮想空間2611Aを定義する。この処理は、ステップS2501における仮想空間2611Bを定義するための処理と基本的に同一であるため、詳細な説明を繰り返さない。図26(A)では、仮想空間2611Aは、アバターオブジェクト6Bを含む。仮想空間2611Aは、仮想空間2611Bに部分的に同期される仮想空間である。ステップS2522において、プロセッサ710Aは、仮想空間2611Bに仮想視点1951を設定する。図27(A)では、仮想視点1951は、仮想空間2611Aの中心に設定される。ステップS2523において、プロセッサ710Aは、コンピュータ200Bから送信されたアバターオブジェクト6Bのアバター情報を受信する。ステップS2524において、プロセッサ710Aは、仮想オブジェクト生成モジュール1721として、受信したアバター情報に基づいて、アバターオブジェクト6Bを生成し、仮想空間2611Aにおける仮想視点1951の視界領域15A内に配置する。プロセッサ710Aは、パネルオブジェクト1832に関する情報をコンピュータ200Bから受信せず、パネルオブジェクト1832を仮想空間2611Aに配置しない。このように、パネルオブジェクト1832は、ユーザ5Bは視認できるが、ユーザ5Aは視認できない仮想オブジェクトである。
ステップS2525において、プロセッサ710Aは、仮想視点制御モジュール1722として、タッチスクリーン770Aに対するユーザ5Aの操作に基づいて、仮想空間2611Aにおける仮想視点1951の位置および傾きを決定する。プロセッサ710Aは、例えば、タッチスクリーン770Aに対するユーザ5Aのフリック操作の方向と、仮想空間2611Aにおける仮想視点1951の位置とに応じて、仮想空間2611Aにおける仮想視点1951からの視界である視界領域15Aを制御する。
ステップS2526において、プロセッサ710Aは、視界領域15Aに対応する視界画像2717Aを生成し、タッチスクリーン770Aに表示する。具体的には、プロセッサ710Aは、仮想視点1951の位置および傾きと、仮想空間2611Aを定義する仮想空間データと、に基づいて、視界領域15Aに対応する視界画像2717Aを定義する。視界画像2717Aを定義することは、視界画像2717Aを生成することと同義である。プロセッサ710Aは、さらに、ユーザ端末800Aのタッチスクリーン770Aに視界画像2717Aを出力することによって、視界画像2717Aをタッチスクリーン770Aに表示する。
プロセッサ710Aは、例えば、図27(A)に示す仮想空間2611Aに対応する視界画像2717Aを、図27(B)に示すようにタッチスクリーン770Aに表示する。これにより、プロセッサ710Aは、アバターオブジェクト6Bを含む視界画像2717Aをユーザ5Aに提供する。ユーザ5Aは、視界画像2717Aを視認することによって、アバターオブジェクト6Bの番組を視聴する。ステップS2527において、プロセッサ710Aは、コメント欄1952を、タッチスクリーン770Aにおける視界画像2717Aの下部に表示する。この時点では、ユーザ5Aは、コメントをまだ入力していない。そのため、コメント欄1952にはユーザ5Aのコメントが表示されていない。
図28は、ある実施形態に従うユーザ5Bの姿勢の一例を表す図である。図29は、ある実施の形態に従う仮想空間2611Bおよび視界画像2917Bを示す図である。ユーザ5Bは、番組の開始後、例えば図28に示す姿勢を取るように自身の身体を動かす。図28に示す姿勢は、第1パフォーマンスに対応する姿勢である。ステップS2508において、プロセッサ210Bは、図28に示す姿勢を取るためのユーザ5Bの動きを検出する。詳細には、プロセッサ210Bは、ユーザ5Bに装着された各モーションセンサから、ユーザ5Bの頭部、腰部、両手、および両足の位置を検出する。プロセッサ210Bは、ユーザ5Bの現在の位置情報と、予め取得されたユーザ5Bの寸法データとに基づいて、ユーザ5Bの関節の回転方向を算出する。このように、現在の位置情報を検出することおよび回転方向を算出することは、ユーザ5Bの動きを検出することと同義である。
ステップS2509において、プロセッサ210Bは、検出したユーザ5Bの動きに基づいて、図29(A)に示すようにアバターオブジェクト6Bを制御する。詳細には、プロセッサ210Bは、ユーザ5Bの現在の位置情報および回転方向に基づいて、仮想空間2611Bに配置されるアバターオブジェクト6Bを動かす。プロセッサ210Bは、例えば、右肩の回転方向に基づいて、アバターオブジェクト6Bの右上腕部を動かす。プロセッサ210Bはさらに、現在の位置情報(例えば現在の腰部の位置情報)に基づいて、アバターオブジェクト6Bの仮想空間2611Bにおける位置を動かす。これにより、プロセッサ210Bは、現実空間のユーザ5Bの動きを、仮想空間2611Bに配置されるアバターオブジェクト6Bに反映させる。言い換えれば、プロセッサ210Bは、アバターオブジェクト6Bに、ユーザ5Bの動きに応じた第1パフォーマンスを実行させる。
ユーザ5Bの動きをアバターオブジェクト6Bに反映させるための処理は、上述した位置情報および回転方向に応じた処理に限定されない。プロセッサ210Bは、例えば、回転方向を算出することなく、ユーザ5Bの動きに応じてアバターオブジェクト6Bを動かすこともできる。プロセッサ210Bは、例えば、ユーザ5Bの身体を構成する各部位の位置に対応するように、ユーザ5Bの各部位に対応するアバターオブジェクト6Bの各部位オブジェクトの位置を制御するようにしてもよい。
ステップS2510において、プロセッサ210Bは、第1パフォーマンスを実行した際のアバターオブジェクト6Bの動きを表す動き情報をリアルタイムに生成し、この動き情報を含むアバターオブジェクト6Bのアバター情報を、サーバ600を介してユーザ端末800Aにリアルタイムに送信する。ステップS2511において、プロセッサ210Bは、モニタ130Bに表示される視界画像2617Bを更新する。プロセッサ210Bは、例えば、図29(A)に示す仮想空間2611Bに対応する視界画像2917Bを生成し、図29(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像3017Bを視認することによって、第1パフォーマンスの実施直後に、番組に対するコメントがまだ得られていないことを認識する。
図30は、ある実施の形態に仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。ステップS2528において、プロセッサ710Aは、コンピュータ200Bから送信されたアバターオブジェクト6Bのアバター情報をリアルタイムに受信する。ステップS2529において、プロセッサ710Aは、受信したアバター情報に含まれるアバターオブジェクト6Bの動き情報に基づいて、図30(A)に示すように仮想空間2611Aにおいてアバターオブジェクト6Bの第1カテゴリに属する動作をリアルタイムに制御する。詳細には、プロセッサ710Aは、アバター情報に含まれるアバターオブジェクト6Bの動き情報に基づいて、仮想空間2611Bにおいてアバターオブジェクト6Bに第1カテゴリに属する第1パフォーマンスを実行させる。このように、第1カテゴリに属する動作は、アバターオブジェクト6Bの身体の一部を構成する部位を動かす動作である。仮想空間2611Bにおけるアバターオブジェクト6Bの挙動が、仮想空間2611Aにおけるアバターオブジェクト6Bに反映される。言い換えれば、アバターオブジェクト6Bの挙動が、仮想空間2611Aおよび2611Bにおいて同期される。このようにして、仮想空間2611Bにおけるアバターオブジェクト6Bの番組が、仮想空間2611Aに配信される。
ステップS2530において、プロセッサ710Aは、タッチスクリーン770Aに表示される視界画像17Aを更新する。プロセッサ710Aは、例えば、図30(A)に示す仮想空間2611Aに対応する視界画像3017Aを生成し、図30(B)に示すようにタッチスクリーン770Aに表示する。ユーザ5Aは、視界画像3017Aを視認することによって、アバターオブジェクト6Bの第1パフォーマンスを楽しむことができる。
図示しないが、プロセッサ210Bは、ユーザ5Bが発した音声を、マイク170Bを用いて録音する。プロセッサ210Bは、ユーザ5Bの音声を表す音声データを生成し、サーバ600に送信する。サーバ600は、受信したユーザ5Bの音声データを、同期処理によってユーザ端末800Aに送信する。ユーザ端末800Aは、受信したユーザ5Bの音声データが表す音声を、スピーカ780Aに出力する。これらの一連の処理の結果、ユーザ5Aは、ライブ中にユーザ5Bが発した音声を、リアルタイムに聴取することができる。
(実施形態1の詳細)
図31は、ある実施の形態に係るアバターオブジェクト6Bが取り得る表情3161~3163を示す図である。図31(A)は破顔表情3161を示し、図31(B)は怒気表情3162を示し、図31(C)は困惑表情3163を示す。アバターオブジェクト6B(第1アバター)は、ユーザ5B(第1ユーザ)による所望の操作に基づいて、破顔表情3161、怒気表情3162、および困惑表情3163のうちいずれかを、アバターオブジェクト6Bの顔に作ることができる。破顔表情3161は、アバターオブジェクト6Bが笑ったときに示す顔の表情であり、怒気表情3162は、アバターオブジェクト6Bが怒ったときに示す顔の表情であり、困惑表情3163は、アバターオブジェクト6Bが困ったときに示す顔の表情である。
これらの表情は、コントローラ300RBに備えられるいずれかのボタンに対する操作に予め設定されている。例えば、ボタン340の押下操作に破顔表情3161が設定され、ボタン350の押下操作に怒気表情3162が設定され、ボタン370の押下操作に困惑表情3163が設定される。メモリモジュール530Bは、破顔表情3161、怒気表情3162、および困惑表情3163をそれぞれ表す個別の動作情報を格納している。以下、アバターオブジェクト6Bの動作情報は、アバターオブジェクト6Bの動き情報と同義であるとする。動作情報は、アバターオブジェクト6の骨格部分の動作を規定した情報であればよい。プロセッサ210Bは、ユーザ5Bが押下したボタンに対応する動作情報をメモリモジュール530Bから取得し、当該情報が表す表情をアバターオブジェクト6Bに作らせる。
図32は、ある実施の形態に従う仮想空間2611Bおよび視界画像3217Bを示す図である。以下では、まず、アバターオブジェクト6Bの番組の視聴者に好評の表情を機械学習するための一連の手順を説明する。図32(A)では、アバターオブジェクト6Bおよびパネルオブジェクト1832が仮想空間2611Bに配置されている。ユーザ5Bは、アバターオブジェクト6Bに破顔表情3161を作らせるために、コントローラ300RBのボタン340を押下する。プロセッサ210Bは、ボタン340に対するユーザ5Bの押下操作を、ユーザ5Bの動きととして検出する。プロセッサ210Bは、ボタン340に対する押下操作に対応する破顔表情3161を、図32(A)に示すようにアバターオブジェクト6Bに作らせる。プロセッサ210Bは、破顔表情3161を表す動作情報を、サーバ600を介してユーザ端末800Aに送信する。
プロセッサ210Bは、図32(A)に示す仮想空間2611Bに対応する視界画像3217Bを生成し、例えば図32(B)に示すようにモニタ130Bに表示する。視界画像3217Bには、何も表示されないパネルオブジェクト1832が含まれる。ユーザ5Bは、視界画像3217Bを通じて、アバターオブジェクト6Bの破顔表情3161に対する視聴者のコメントがまだ得られていないことを認識する。
図33は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。図33(A)に示す仮想空間2611Aには、アバターオブジェクト6Bが配置されている。プロセッサ710Aは、破顔表情3161を表す動作情報をHMDセット110Bから受信し、当該情報に基づいて、図33(B)に示すように仮想空間2611Aにおいてアバターオブジェクト6Bに破顔表情3161を作らせる。
プロセッサ710Aは、図33(A)に示す仮想空間2611Aに対応する視界画像3317Aを生成し、例えば図33(B)に示すようにタッチスクリーン770Aに表示する。視界画像3317Aには、破顔表情3161を作っているアバターオブジェクト6Bが含まれている。ユーザ5A(第2ユーザ)は、視界画像3317Aを通じて、アバターオブジェクト6Bが破顔表情3161を作ったことを認識する。
図34は、ある実施の形態に従うユーザ端末800Aの表示面を示す図である。ユーザ5Aは、アバターオブジェクト6Bの破顔表情3161を好ましいものと感じ、そのような評価をユーザ5Bに与えるための操作をユーザ端末800Aに入力する。詳細には、ユーザ5Aは、アバターオブジェクト6Bの破顔表情3161に対するコメントを、ユーザ端末800Aに入力する。プロセッサ710Aは、例えば、タッチスクリーン770Aに対するユーザ5Bの操作に基づいて、文字列を入力するためのソフトウェアキーボードをタッチスクリーン770Aに表示する。ユーザ5Aは、ソフトウェアキーボードに対するタップ操作によって、コメントをユーザ端末800Aに入力する。プロセッサ710Aは、ユーザ5Aによるコメントの入力を検出する。これにより、プロセッサ710Aは、ユーザ5Aが入力したコメント3453を特定する。
プロセッサ710Aは、特定したコメント3453を、図34に示すようにコメント欄1952に表示する。ユーザ5Aは、コメント欄1952に表示されたコメント3453を視認することによって、コメント3453が正常に入力されたことを認識する。プロセッサ710Aは、コメント3453をサーバ600を介してコンピュータ200Bに送信する。
図35は、ある実施の形態に従う仮想空間2611Bおよび視界画像3517Bを示す図である。プロセッサ210Bは、ユーザ端末800Aから送信されたコメント3453を受信し、図35(A)に示すように、コメント3453に関するテキスト3553をパネルオブジェクト1832の表示面に表示する。当該テキストは、ユーザ5Aのコメント3453と、ユーザ5Aの名称とを含む。プロセッサ210Bは、図35(A)に示す仮想空間2611Bに対応する視界画像3517Bを生成し、例えば図35(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像3517Bを通じて、破顔表情3161に対してユーザ5Aからコメントが入力されたことを認識する。
図36は、ある実施の形態に係る学習済みモデル1429を示す図である。プロセッサ210Bは、ユーザ5Bの操作に基づいてアバターオブジェクト6Bが作った破顔表情3161に対してユーザ5Aが入力したコメント3453を、破顔表情3161に対する評価として特定する。プロセッサ210Bは、破顔表情3161に対して、特定したユーザ5Aの評価を関連付ける。さらに、評価が関連付けられた破顔表情3161を機械学習することによって、表情の学習結果に相当する学習済みモデル1429を生成する。プロセッサ210Bは、例えば、図36に示すように、アバターオブジェクト6Bが取り得る表情を表す動作情報と、当該表情に対する評価の総計とが関連付けられて格納される学習済みモデル1429を生成する。図36では、破顔表情3161に評価の総計「100」が関連付けられ、怒気表情3162に評価の総計「5」が関連付けられ、困惑表情3163に評価総計「12」が関連付けられる。この例では、破顔表情3161、困惑表情3163、および怒気表情3162の順で、視聴者から得られた評価の総計が高い。
図37は、ある実施の形態に従う配信システム1500において実行される処理の一部を表すシーケンスチャートである。以下では、表情の機械学習結果に基づいてアバターオブジェクト6Bが好適な表情を自動的に作る際の一連の処理の流れを説明する。
図38は、ある実施形態に従うユーザの姿勢の一例を表す図である。ユーザ5Bは、番組の配信中に、例えば図38に示す姿勢を取るように自身の身体を動かす。図38に示す姿勢は、ユーザ5Bの第2パフォーマンスに対応する姿勢である。ステップS3701において、プロセッサ210Bは、図38に示す姿勢を取るためのユーザ5Bの動きを検出する。ステップS3702において、プロセッサ210Bは、学習済みモデル1429に基づいて、アバターオブジェクト6Bが行い得る新たな動作に関する情報を特定する。ここでは、当該新たな動作は、アバターオブジェクト6Bが表情を作る動作のことである。プロセッサ210Bは、学習済みモデル1429に格納される表情に関する複数の動作情報のうち、より多くの評価が関連付けられた表情を表す動作情報を、より優先的に特定する。ここでは、破顔表情3161、怒気表情3162、および困惑表情3163のうち、最も大きい評価の総計「100」が関連付けられる破顔表情3161を表す動作情報を、学習済みモデル1429から特定する。
ステップS3703において、プロセッサ210Bは、ユーザ5Bの動きと、学習済みモデル1429から取得した動作情報とに基づいて、アバターオブジェクト6Bに適用可能な制御内容を特定する。ここでは、ユーザ5Bの動きに対応する第2パフォーマンスを実行しながら、取得した動作情報が表す破顔表情3161を作るという制御内容を特定する。特に図示しないが、プロセッサ210Bは、仮想空間2611Bにおいて、特定した制御内容に基づいてアバターオブジェクト6Bを制御してもよい。ステップS3704において、プロセッサ210Bは、特定した制御内容をサーバ600を介してユーザ端末800Aに送信する。
図39は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。ステップS3705において、プロセッサ710Aは、コンピュータ200Bから送信された制御内容を受信する。ステップS3706において、プロセッサ710Aは、受信した制御内容に基づいて、図39(A)に示すようにアバターオブジェクト6Bを制御する。詳細には、アバターオブジェクト6Bに、第2パフォーマンスを実行させながら破顔表情3161を作らせる。このように、アバターオブジェクト6Bは、ユーザ5Bが表情を指定する操作を行わなくても、視聴者からの評価が高い破顔表情3161を自動的に作ることができる。
プロセッサ710Aは、図39(A)に示す仮想空間2611Aに対応する視界画像3917Aを生成し、例えば図39(B)に示すようにタッチスクリーン770Aに表示する。視界画像3917Aには、破顔表情3161を作りながら第2パフォーマンスを実行しているアバターオブジェクト6Bが表示されている。ユーザ5Aは、視界画像3917Aを通じて、アバターオブジェクト6Bの第2パフォーマンスを楽しむ。ユーザ5Aは、特に、ユーザ5Aが過去に評価した破顔表情3161をアバターオブジェクト6Bが作っているため、アバターオブジェクト6Bの番組に対してより一層好ましい印象を持つことになる。
(主要な作用効果)
本実施形態では、ユーザ5Bの動きと、アバターオブジェクト6Bの過去の動作を機械学習した学習結果に基づいて特定されたアバターオブジェクト6Bの新たな動作に関する動作情報との双方に基づいて、アバターオブジェクト6Bの制御内容を特定するため、仮想空間2611においてアバターオブジェクト6Bをより好適に制御することができる。
また、アバターオブジェクト6Bの過去の動作に対する視聴者の評価に基づいて、アバターオブジェクト6Bが取るべき好ましい動作を機械学習するため、視聴者の好みに合致した動作をアバターオブジェクト6Bに実行させることができる。
(変形例)
図40は、ある実施の形態に係るユーザ端末800Aの表示面を示す図である。図40(A)では、プロセッサ710Aは、タッチスクリーン770Aに視界画像3317Aを表示すると共に、タッチスクリーン770Aにおける視界画像3317Aの下部にUI表示欄4054を表示している。UI表示欄4054は、番組視聴に関する各種のUI部品を表示するための領域である。図40(A)では、プロセッサ710Aは、UI表示欄4054にボタン4055を表示している。ボタン4055には「Good」というテキストがラベルされている。ボタン4055は、番組に対する視聴者の好意的な評価が対応している。ボタン4055は、アバターオブジェクト6Bの番組に対するユーザ5Aからの評価の入力を受け付ける機能を有する。
図40(B)では、ユーザ5Bは、アバターオブジェクト6Bが作った破顔表情3161を好意的なものと感じ、破顔表情3161に応答してボタン4055を押下することによって、破顔表情3161に対する評価をタッチスクリーン770Aに入力する。プロセッサ710Aは、ボタン4055に対するユーザ5Bの操作を検出し、当該操作を表す操作情報を生成してコンピュータ200Bに送信する。プロセッサ210Bは、ユーザ端末800Aから受信した操作情報に基づいて、アバターオブジェクト6Bが破顔表情3161を作ったことに応答して、ユーザ5Bがボタン4055を押下操作したことを特定する。これにより、プロセッサ210Bは、破顔表情3161に対するユーザ5Aの評価を特定する。
本例でも、プロセッサ210Bは、アバターオブジェクト6Bが過去に行った動作に対するユーザ5Aの評価を適切に特定することができる。これにより、番組の視聴者から好まれるアバターオブジェクト6Bの動作を効果的に機械学習することができる。
図41は、ある実施の形態に係るユーザ端末800Aの表示面を示す図である。図41(A)では、プロセッサ710Aは、タッチスクリーン770Aに視界画像3317Aを表示すると共に、タッチスクリーン770Aにおける視界画像3317Aの下部にUI表示欄4054を表示している。図41(A)では、プロセッサ710Aは、UI表示欄4054に、アイコン状態のダイヤオブジェクト4156を表示している。ダイヤオブジェクト4156は、ユーザ5Aが有償で入手可能な仮想オブジェクトの一種である。ダイヤオブジェクト4156は、ダイヤオブジェクト4156をユーザ5Bに付与するための操作を受け付け可能な態様でUI表示欄4054に表示される。
図41(B)では、ユーザ5Aは、アバターオブジェクト6Bが作った破顔表情3161を好意的なものと感じ、ユーザ5Bによる番組配信を応援すべく、有償のダイヤオブジェクト4156をユーザ5Bに付与するための操作をタッチスクリーン770Aに入力する。詳細には、ユーザ5Aは、ダイヤオブジェクト4156をUI表示欄4054から視界画像3317Aまで移動させるためのスワイプ操作を、ダイヤオブジェクト4156に対して入力する。プロセッサ710Aは、ユーザ5Bのスワイプ操作を検出し、図41(B)に示すようにダイヤオブジェクト4156を視界画像3317Aの位置まで移動させる。プロセッサ710Aは、ダイヤオブジェクト4156の移動に応答して、ダイヤオブジェクト4156を表すオブジェクト情報を生成し、コンピュータ200Bに送信する。
図42は、ある実施の形態に従う仮想空間2611Bおよび視界画像4217Bを示す図である。プロセッサ210Bは、ユーザ端末800Aから送信されたオブジェクト情報を受信し、当該情報に基づいて、ユーザ5Aからユーザ5Bにダイヤオブジェクト4156が付与されたことを特定する。プロセッサ210Bは、この特定に応答して、ユーザ5Bにダイヤオブジェクト4156が付与されたことを表すメッセージ4134を、図42(A)に示すようにパネルオブジェクト1832の表示面に表示する。プロセッサ210Bは、さらに、ダイヤオブジェクト4156を、図42(B)に示すように視界領域15B内に配置する。
プロセッサ210Bは、図42(A)に示す仮想空間2611Bに対応する視界画像4217Bを生成し、例えば図42(B)に示すようにモニタ130Bに表示する。視界画像4217Bは、メッセージ4134が表示されるパネルオブジェクト1832と、ユーザ5Bに付与されたダイヤオブジェクト4156とを含む。ユーザ5Bは、視界画像4217Bを通じて、ユーザ5Aからダイヤオブジェクト4156を貰ったことを認識する。ダイヤオブジェクト4156がユーザ5Bに付与されたことによって、ユーザ5Aがダイヤオブジェクト4156の購入に要した費用の一部が、番組の配信者に支払われる。これにより、番組の売り上げが増加する。
プロセッサ210Bは、ユーザ5Aからユーザ5Bに付与されたダイヤオブジェクト4156を、破顔表情3161に対するユーザ5Aの評価として特定する。このように、アバターオブジェクト6Bが特定の表情を作ったことに応答して、視聴者からユーザ5Bにダイヤオブジェクト4156などの贈答用のオブジェクトがユーザ5Bに付与されるたびに、当該表情に関連付けられる評価がより高くなる。本例でも、プロセッサ210Bは、アバターオブジェクト6Bが過去に行った動作に対するユーザ5Aの評価を適切に特定することができる。これにより、番組の視聴者から好まれる動作を効果的に機械学習することができる。
プロセッサ210Bは、機械学習された破顔表情3161をユーザ5A等に販売することができる。ユーザ5Aは、自らを配信者として、アバターオブジェクト6Aによる番組をユーザ5B等に配信することができる。その際、プロセッサ210Aは、アバターオブジェクト6Aの番組配信中にユーザ5Aの動きを検出した場合、当該動きと、ユーザ5Bから購入した機械学習済みの破顔表情3161とに基づいて、アバターオブジェクト6Aに適用可能な制御内容を特定する。これにより、ユーザ5Aがアバターオブジェクト6Aの表情を制御する操作を行わなくても、アバターオブジェクト6Aに破顔表情3161を自動的に作らせることができる。
プロセッサ210Bは、ユーザ5Bの動きに基づくアバターオブジェクト6Bの任意の動作を機械学習し、当該動作を表す動作情報を販売することができる。例えば、ダンス、スポーツ等の定型的な動作(スイングや投球フォーム)、楽器を弾く動きなどの売買が配信システム1500において可能になる。
〔実施形態2〕
図43は、ある実施の形態に従うユーザ5Bおよびアバターオブジェクト6Bを表す図である。図43(A)では、ユーザ5Bは、両手をぶら下げた状態で、自然な呼吸動作を行っている。この場合のユーザ5Bの動きが小さいため、検出したユーザ5Bの動きに単にそのまま基づくのでは、アバターオブジェクト6Bを正常に動作させることができない可能性がある。そこでプロセッサ210Bは、検出したユーザ5Bの動きに対応するアバターオブジェクト6Bの動作に関する動作情報(第1情報)をまず生成し、そして当該動作情報を所定の補正パラメータを用いて補正することによって、アバターオブジェクト6Bの補正された補正動作(第1動作)を表す補正動作情報(第2情報)を生成する。ここでの補正動作は、図43(A)に示すように、アバターオブジェクト6Bが、その両肩および両腕を大きく上下させる動作である。
図44は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。図44(A)に示す仮想空間2611Aでは、視界領域15A内にアバターオブジェクト6Bが配置されている。プロセッサ710Aは、HMDセット110Bにおいて生成された補正動作情報を、コンピュータ200Bから受信する。プロセッサ210Bは、受信した補正動作情報に基づいて、図44(A)に示すように、仮想空間2611Aにおいてアバターオブジェクト6Bに補正動作を実行させる。ここでの補正動作は、図43(B)に示す補正動作と同一である。
プロセッサ710Aは、図44(A)に示す仮想空間2611Aに対応する視界画像4417Aを生成し、例えば図44(B)に示すようにタッチスクリーン770Aに表示する。プロセッサ210Bは、視界画像4417と共に、番組に対する好意的な評価をユーザ5Bに与えるためのボタン4055をタッチスクリーン770Aに表示する。視界画像4417Aには、アバターオブジェクト6Bが両肩および両腕を上下させる様子が表示されている。ユーザ5Aは、このような動作を不自然と感じるため、視界画像4417Aを視認した際にボタン4055を押下しない。
図45は、ある実施の形態に従うユーザ5Bおよびアバターオブジェクト6Bを表す図である。図45(A)では、ユーザ5Bは、アバターオブジェクト6Bが図43(A)に示す補正動作を行った後、引き続き両手をぶら下げた状態で自然な呼吸動作を行っている。プロセッサ210Bは、アバターオブジェクト6Bが行った補正動作に対する評価が閾値以上であるか否かを特定する。ここでは、ユーザ5Aがボタン4055を押下しないことに対応して、図44に示す補正動作に対する評価が、所定の閾値を下回っていると特定する。プロセッサ210Bは、補正動作に対する評価が閾値を下回る場合、補正パラメータを調整する。調整の手法は特に限定されない。ここでは、ユーザ5Bの動きを強調する程度を、調整前に比べて小さくするように、補正パラメータを調整するものとする。
プロセッサ210Bは、図45(A)に示すユーザ5Bの動きに対応するアバターオブジェクト6Bの動作に関する動作情報を生成し、そして当該動作情報を、調整後の補正パラメータを用いて補正することによって、アバターオブジェクト6Bの補正動作情報を生成する。この補正動作情報が表す補正動作は、図45(B)に示すように、アバターオブジェクト6Bが、その両肩および両腕を僅かに上下させる動作であり、図45(A)に示すユーザ5Bの動きに良く合致した自然なものである。
図46は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。図46(A)に示す仮想空間2611Aでは、視界領域15A内にアバターオブジェクト6Bが配置されている。プロセッサ710Aは、図45(B)に示すアバターオブジェクト6Bの補正動作を表す補正動作情報を、コンピュータ200Bから受信する。プロセッサ210Bは、受信した補正動作情報に基づいて、図46(A)に示すように、仮想空間2611Aにおいてアバターオブジェクト6Bに補正動作を実行させる。ここでの第1動作は、図45(B)に示す動作と同一である。
プロセッサ710Aは、図46(A)に示す仮想空間2611Aに対応する視界画像4617Aを生成し、例えば図46(B)に示すようにタッチスクリーン770Aに表示する。プロセッサ210Bは、視界画像4617と共にボタン4055をタッチスクリーン770Aに表示する。視界画像4617Aには、アバターオブジェクト6Bが両肩および両腕を僅かに上下させる様子が表示されている。ユーザ5Aは、このような動作を自然なものと感じるため、視界画像4617Aを視認した際にボタン4055を押下することによって、図46(B)に示すアバターオブジェクト6Bの動作に対する好意的な評価をユーザ5Bに与える。
プロセッサ210Bは、ユーザ端末800Aにおいてアバターオブジェクト6Bの第1動作に与えられた評価を特定する。プロセッサ210Bは、評価が関連付けられる補正動作を表す補正動作情報を生成するために用いられた補正パラメータを機械学習することによって、当該補正パラメータが格納された学習済みモデル1429を生成する。
図47は、ある実施の形態に従うユーザ5Bおよびアバターオブジェクト6Bを表す図である。図47(A)では、ユーザ5Bは、補正パラメータが機械学習された後に、両手の先を体の前で近づけた状態で、自然な呼吸動作を行っている。プロセッサ210Bは、図47(A)に示すユーザ5Bの動きに対応するアバターオブジェクト6Bの動作情報を生成し、さらに、当該動作情報を補正するための学習済み補正パラメータを、学習済みモデル1429から特定する。プロセッサ210Bは、特定した補正パラメータを用いて動作情報を補正することによって、アバターオブジェクト6Bに図47(B)に示す補正動作を行わせるための補正動作情報を生成する。この補正動作は、図47(B)に示すように、アバターオブジェクト6Bが、その両手を体の前で近づけた状態で、両肩および両腕を僅かに上下させる動作であり、図47(A)に示すユーザ5Bの動きに良く合致した自然な動作である。
図48は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。図48(A)に示す仮想空間2611Aでは、視界領域15A内にアバターオブジェクト6Bが配置されている。プロセッサ710Aは、図47(B)に示すアバターオブジェクト6Bの補正動作を表す補正動作情報を、コンピュータ200Bから受信する。プロセッサ210Bは、受信した補正動作情報に基づいて、図48(A)に示すように、仮想空間2611Aにおいてアバターオブジェクト6Bに補正動作を実行させる。ここでの第1動作は、図47(B)に示す動作と同一である。
プロセッサ710Aは、図48(A)に示す仮想空間2611Aに対応する視界画像4817Aを生成し、例えば図48(B)に示すようにタッチスクリーン770Aに表示する。視界画像4817Aには、アバターオブジェクト6Bが両肩および両腕を僅かに上下させる様子が表示されている。ユーザ5Aは、このような動作を自然なものと感じる。
(主要な作用効果)
本実施形態では、アバターオブジェクト6Bの補正動作に対する評価が閾値に満たない場合には補正パラメータが調整されるので、このような調整を繰り返すことによって、補正動作に対する評価が閾値を超えるような補正パラメータをいずれは得ることができる。これにより、ユーザ5Aの様々な動きに対して補正パラメータを適用することによって、アバターオブジェクト6Bの動作を自然なものとしてユーザ5Aに視認させることができるようになる。その結果、仮想空間2611においてアバターオブジェクト6Bに自然な振る舞いをさせることができ、これにより番組に対する視聴者(ユーザ5A)の満足度をより高めることができる。
(変形例)
プロセッサ210Bは、ユーザ5Bの動きを一定時間検出しない場合、規定の動作をアバターオブジェクト6Bに実行させることができる。この場合の動作として、機械学習したアバターオブジェクト6Bの過去の動作が挙げられる。
〔実施形態3〕
図49は、ある実施の形態に従うユーザ5Bおよびアバターオブジェクト6Bを表す図である。図49(A)では、ユーザ5Bは、コントローラ300RBを把持した右手をユーザ5Bの頭部のすぐ側まで近づける。プロセッサ210Bは、図49(A)に示すユーザ5Bの右手の動きに基づいて、図49(B)に示すように、アバターオブジェクト6Bの仮想右手1831RBを仮想空間2611Bにおいて動作させる。図49(B)は、仮想右手1831RBはアバターオブジェクト6Bの顔の側で止まらずに、アバターオブジェクト6Bの顔の内部にまでめり込んでいる。
プロセッサ210Bは、図49(B)に示すように動作された仮想右手1831RBが、アバターオブジェクト6Bにめり込んだか否かを判定する。具体的には、アバターオブジェクト6Bと仮想右手1831RBとの位置関係に基づいて、両者が少なくとも部分的に重畳することを検出した場合、仮想右手1831RBがアバターオブジェクト6Bにめり込んだと判定する。ここでは、仮想右手1831RBがめり込んだと判定される。プロセッサ210Bは、アバターオブジェクト6Bにめり込んだ仮想右手1831RBの動作を表す動作情報は、機械学習しない。
図50は、ある実施の形態に従うユーザ5Bおよびアバターオブジェクト6Bを表す図である。図50(A)では、ユーザ5Bは、コントローラ300RBを把持した右手をユーザ5Bの頭部から少し放れた位置まで近づける。プロセッサ210Bは、図50(A)に示すユーザ5Bの右手の動きに基づいて、図50(B)に示すように、アバターオブジェクト6Bの仮想右手1831RBを仮想空間2611Bにおいて動作させる。図50(B)では、仮想右手1831RBはアバターオブジェクト6Bの顔から少し離れた位置で止まり、アバターオブジェクト6Bの顔の内部にめり込んでいない。
図51は、ある実施の形態に従う学習済みモデル1429を示す図である。プロセッサ210Bは、図50(B)に示すように動作された仮想右手1831RBが、アバターオブジェクト6Bにめり込んだか否かを判定する。ここでは、仮想右手1831RBがめり込んでいないと判定する。この判定結果に基づき、プロセッサ210Bは、図50(B)に示す仮想右手1831RBの動作を表す動作情報を学習することによって、図51に示すように、当該動作情報が格納された学習済みモデル1429を生成する。図51では、めり込み「なし」が関連付けられた動作情報「α」が、学習済みモデル1429に格納されている。
図52は、ある実施の形態に従うユーザ5Bおよびアバターオブジェクト6Bを表す図である。動作情報の学習後、ユーザ5Bは、図52(A)に示すように、コントローラ300RBを把持した右手をユーザ5Bの頭部のすぐ側まで近づける。これは図49(A)に示すユーザ5Bの動作と同じである。プロセッサ210Bは、図52(A)に示すユーザ5Bの右手の動きを検出した場合、学習済みモデル1429にアクセスして、仮想右手1831RBの動きに関する複数の動作情報の中から、機械学習された動作情報αを特定する。プロセッサ210Bは、検出したユーザ5Bの右手の動きと、学習済みモデル1429から特定した動作情報αとに基づいて、仮想右手1831RBがアバターオブジェクト6Bにめり込まずに済む制御内容を特定する。ここでは、動作情報αが表すアバターオブジェクト6Bの動作、すなわち仮想右手1831RBをアバターオブジェクト6Bの頭部のすぐ側まで近づける動作を、ユーザ5Bの動きに対応するアバターオブジェクト6Bの制御内容として特定する。プロセッサ210Bは、特定した制御内容に基づいて、図52(B)に示すように仮想右手1831RBを制御する。この結果、動作情報αの学習前には図49(B)に示すように仮想右手1831RBをアバターオブジェクト6Bにめり込ませていた動きを、動作情報αの学習後にユーザ5Bが行った場合、図52の(B)に示すように仮想右手1831RBはアバターオブジェクト6Bにめり込まずに済む。
〔実施形態4〕
本実施形態では、ユーザ5Bは、自身が発話した音声(第1音声)の代わりに、当該音声を変換した変換音声(第2音声)をアバターオブジェクト6Bに発話させるための設定を、HMDセット110Bに対して行う。当該設定を開始する際、ユーザ5Bは、HMDセット110Bのマイク170Aに向かって、所定の音声を発する。プロセッサ210Bは、ユーザ5Bの動きを検出する際、ユーザ5Bが発した音声をマイク170Aを通じて検出する。プロセッサ210Bは、検出されたユーザ5Bの音声を、音声変換のための変換パラメータ(第1パラメータ)を用いて変換音声に変換する。変換パラメータは、そのデフォルト値がメモリモジュール530Bに予め記憶されている。
プロセッサ210Bは、第2音声が、基準音声と同一の音質を有するか否かを判定する。基準音声とは、ユーザ5Bが自身の音声の代わりにアバターオブジェクト6Bに発話させたい音質を有する音声のことである。ユーザ5Bは、設定開始前に、基準音声を表す音声データを入手してHMDセット110Bに保存しており、当該音声データを再生することによって基準音声を聴取することができる。プロセッサ210Bは、第2音声を表す音声データと、基準音声を表す音声データとに基づいて、第2音声と基準音声との音質の同一性を判定する。判定の手法は特に限定されない。
プロセッサ210Bは、両者が同一の音質を有すると判定された場合、音声変換に用いた変換パラメータを機械学習することによって、音声変換に関する学習結果を生成する。詳細には、プロセッサ210Bは、学習結果として、機械学習された変換パラメータが格納された学習済みモデル1429を生成する。プロセッサ210Bは、同一の音質を有しないと判定された場合、音声変換に用いた変換パラメータを学習しない。その代わりに、変換パラメータを補正することによって、新たな変換パラメータを取得する。プロセッサ210Bは、新たな変換パラメータを用いて、ユーザ5Bの音声の変換処理、および変換音声と基準音声との音質の同一性判定処理を実行する。その際、音質が否同一と判定されるたびに変換パラメータの補正の度合いを変更しながら、音声変換および同一性質判定の処理を繰り返し実行する。プロセッサ210Bは、機械学習された変換パラメータを格納した学習済みモデル1429を生成した場合、音声変換の設定処理を終了する。プロセッサ210Bは、設定が終了したことをユーザ5Bに通知してもよい。
プロセッサ210Bは、変換パラメータが機械学習された後、学習済みモデル1429に格納される変換パラメータを、アバターオブジェクト6Bが行い得る新たな動作に関する情報として特定する。プロセッサ210Bは、ユーザ5Bが番組の進行中に何らかの音声を発話するたびに、当該音声を検出し、次に変換パラメータを用いて当該音声を変換することによって発話用の変換音声を生成し、当該変換音声を仮想空間2611Bにおいてアバターオブジェクト6Bに発話させる。その際、プロセッサ210Bは、変換音声をスピーカ180Bから出力させる。
プロセッサ210Bは、特定した変換パラメータを、サーバ600を介してユーザ端末800Aに送信する。また、プロセッサ210Bは、検出したユーザ5Bの音声を表す音声データを生成して、サーバ600を介してユーザ端末800Aに送信する。プロセッサ710Aは、受信した音声データが表すユーザ5Bの音声をアバターオブジェクト6Bに発話させず、受信した変換パラメータを用いてユーザ5Bの音声を変換することによって変換音声を生成し、当該変換音声を仮想空間2611Aにおいてアバターオブジェクト6Bに発話させる。
(主要な作用効果)
本実施形態では、ユーザ5Bの音声を基準音声と同一音質の音声に変換するための変換パラメータを学習し、当該パラメータを用いて、番組配信中にユーザ5Bが発話した音声を自動的に基準音声と同一音質の音声に変換してアバターオブジェクト6Bに発話させる。これにより、ユーザ5Bは、自身が好む所望の音質を有する音声をアバターオブジェクト6Bに発話させることができるので、アバターオブジェクト6Bによる番組の興趣性をより向上させることができる。さらに、配信システム1500は、自身の声にあまり自信のないユーザ5に対して、アバターオブジェクト6を用いた番組配信を行わせる動機を与えることができる。
(変形例)
プロセッサ210Bは、機械学習した変換パラメータを用いてユーザ5Bの音声を変換した変換音声を、ユーザ5B以外の任意のユーザ5に販売することができる。例えばユーザ5Aが当該変換音声を購入した場合、当該変換音声は、ユーザ5Aにとっての基準音声として機能する。ユーザ5Aは、基準音声を聴取することによって、例えばHMDセット110Aを用いて上述した変換パラメータの設定を行うことができる。これにより、ユーザ5Aは、ユーザ5Aに関連付けられるアバターオブジェクト6Aを用いた番組を配信する際に、アバターオブジェクト6Bが発話する音声と同じ音質の音声を、ユーザ5Aの音声の代わりにオブジェクトに発話させることができる。
プロセッサ210Bは、ユーザ5Bが番組配信中に歌を歌う際に、ユーザ5Bの歌声を検出し、当該歌声の音程を自動的に補正することができる。プロセッサ210Bは、さらに、音程補正後のユーザ5Bの歌声を、アバターオブジェクト6Bに発話させることによって、アバターオブジェクト6Bに適切な音程の歌を歌わせることができる。このような音程補正は、ユーザ端末800Aにおいてプロセッサ710Aが実行することもできる。
プロセッサ210Bは、ユーザ5Bが発話した音声を、仮想空間2611Bにおいてアバターオブジェクト6Bが歌っているように響かせることができる。このような処理は、ユーザ端末800Aにおいてプロセッサ710Aが実行することもできる。
プロセッサ210Bは、ユーザ5Bの音声に応じた表情を、アバターオブジェクト6Bに作らせることができる。プロセッサ210Bは、例えば、検出したユーザ5Bの音声に関する各種のパラメータ(波形、周波数、声の高さ、声の太さ)などを検出し、当該パラメータに対応する表情を特定する。プロセッサ210Bは、例えば、ユーザ5Bの音声の波形が第1パターンの波形であった場合、当該波形に対応する破顔表情3161をメモリモジュール530Bから特定し、アバターオブジェクト6Bの顔に反映させる。これにより、ユーザ5Bが発話した音声に合致する適切な表情をアバターオブジェクト6Bに自動的に作らせることができるので、ユーザ5Bは、自身が発話した音声に合致する適切な表情をアバターオブジェクト6Bに作らせるための操作をする必要がない。
〔実施形態5〕
図53は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。図53(A)では、仮想空間2611Aに配置されるアバターオブジェクト6Bが、困惑表情3163を作っている。プロセッサ710Aは、アバターオブジェクト6Bが困惑表情3163が作っていることを、仮想空間2611Aにおいて発生した事象として特定する。プロセッサ710Aは、特定した事象に応じた情報を、仮想空間2611Aに出力する。図53(A)では、プロセッサ710Aは、困惑表情3163に応じた「ガーン」という音声5371を、アバターオブジェクト6Bが発生する音声として仮想空間2611Aにおいて再生する。
プロセッサ710Aは、図53(A)に示す仮想空間2611Aに対応する視界画像5317Aを生成し、例えば図53(B)に示すようにタッチスクリーン770Aに表示する。プロセッサ210Bは、さらに、音声5371をスピーカ780Aから出力させる。ユーザ5Aは、視界画像5317Aを視認しながら、スピーカ780Aから流れる音声5371を聴取する。このように、ユーザ5Bは、アバターオブジェクト6Bの困惑表情3163に適切に合致した音声5371を耳にする。
図54は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。図54(A)では、アバターオブジェクト6Bは、図53(A)と同様に、ユーザ5Bの操作に基づいて、困惑表情3163を作っている。プロセッサ710Aは、アバターオブジェクト6Bが困惑表情3163を作っているという事象を特定し、当該事象に応じた情報として、「ガーン」というテキスト5472を仮想空間2611Aにおける視界領域15A内に出力する。
プロセッサ710Aは、図54(A)に示す仮想空間2611Aに対応する視界画像5417Aを生成し、例えば図54(B)に示すようにタッチスクリーン770Aに表示する。図54の(A)において視界領域15Aにアバターオブジェクト6Bおよびテキスト5472が含まれることから、図54に示す視界画像5417Aには、アバターオブジェクト6Bと、アバターオブジェクト6Bに重畳するテキスト5472とが含まれている。ユーザ5Aは、視界画像5417Aを通じて、アバターオブジェクト6Bが困惑表情3163を作った際に、困惑表情3163に適切に合致する「ガーン」というテキスト5472が番組内のテロップとして表示されていることを認識する。
図55は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。図54(A)では、アバターオブジェクト6Bは、図53(A)と同様に、ユーザ5Bの操作に基づいて、困惑表情3163を作っている。プロセッサ710Aは、アバターオブジェクト6Bが困惑表情3163を作っているという事象を特定し、当該事象に応じた情報として特殊効果5573を仮想空間2611Aに反映する。特殊効果5573は、仮想空間2611Aの少なくとも一部を暗転させる効果である。図55(A)では、特殊効果5573が仮想空間2611Aに出力された結果、視界領域15Aの全体が暗転されている。
プロセッサ710Aは、図55(A)に示す仮想空間2611Aに対応する視界画像5517Aを生成し、例えば図55(B)に示すようにタッチスクリーン770Aに表示する。視界領域15A内に特殊効果5573が反映されているため、全体に特殊効果5573が反映された視界画像5517Aが表示される。ユーザ5Bは、視界画像5617Aを通じて、アバターオブジェクト6Bが困惑表情3163を作った際に、困惑表情3163に適切に合致する暗転という特殊効果5573が仮想空間2611Aに反映されていることを認識する。
(主要な作用効果)
本実施形態の各例によれば、仮想空間2611Aにおいて発生した事象に応じた適切な各種の情報が仮想空間2611Aに自動的に出力されるので、仮想空間2611Aにおけるアバターオブジェクト6Bの番組をより盛り上げることができる。
〔実施形態6〕
図56は、ある実施の形態に従うHMDセット110Bにおいて実行される処理の一部を表すシーケンスチャートである。図57は、ある実施の形態に従う仮想空間2611Bおよび視界画像17Bを示す図である。図57の例では、プロセッサ210Bは、ユーザ5Bに関連付けられるアバターオブジェクト6Bと、ユーザ5Bから独立して制御されるアバターオブジェクト5706とを含む仮想空間2611Bを定義している。アバターオブジェクト5706は、アバターオブジェクト6Bと同様に人体を模した外観を有した仮想オブジェクトであり、仮想左手5231Lおよび仮想右手5231Rを有している。仮想空間2611Bにおいて、アバターオブジェクト5706は、その背面をアバターオブジェクト6Bの正面に向ける形で視界領域15B内に配置されている。
図57(A)では、アバターオブジェクト5706は、所定の姿勢を取っている。プロセッサ210Bは、図57(A)に示す仮想空間2611Bに対応する視界画像5317Aを生成し、例えば図53(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像5317Bを視認することによって、仮想空間2611B内に配置されるアバターオブジェクト5706を視認する。
図58は、ある実施の形態に従う仮想空間2611Bおよび視界画像5817Bを示す図である。S5601において、プロセッサ210Bは、視界領域15B内にアバターオブジェクト5706が配置されるときに、図58(A)に示すようにアバターオブジェクト5706に見本動作(第1動作)を実行させる。ここでは、見本動作は、仮想左手5231Lをアバターオブジェクト5706の顔の正面近くまでに移動させる動作である。メモリモジュール530Bには、アバターオブジェクト5706による見本動作を表す動作情報が予め格納されており、プロセッサ210Bは、当該動作情報に基づいてアバターオブジェクト5706に見本動作を自動的に実行させる。このように、アバターオブジェクト5706は、ユーザ5Bを含む各ユーザの動きに連動せずに自動的に制御されるオブジェクトである。
プロセッサ210Bは、図58(A)に示す仮想空間2611Bに対応する視界画像5317Bを生成し、例えば図58(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像5817Bを視認することによって、ユーザ5Bが従うべき見本となる見本動作をアバターオブジェクト5706が実行したことを認識する。ユーザ5Bは、アバターオブジェクト5706による見本動作を視認しながら、当該動作を模倣して自らの左手を動かす。詳細には、ユーザ5Bは、アバターオブジェクト5706と同様に、自身の左手を自身の顔の正面近くにまで移動させる。
図59は、ある実施の形態に従う仮想空間2611Bおよび視界画像5917Bを示す図である。ステップS5602において、プロセッサ210Bは、アバターオブジェクト5706による見本動作の実行中に、見本動作に倣ったユーザ5Bの動きを検出する。ステップS5603において、プロセッサ210Bは、検出されたユーザ5Bの動きに基づいて、視界領域15内にアバターオブジェクト5706が配置されるときに、アバターオブジェクト6Bに見本動作と同じ動作を実行させる。ここで検出されたユーザ5Bの動きは、見本動作に対応する動きであるため、プロセッサ210Bは、検出されたユーザ5Bの動きに基づいて、アバターオブジェクト6Bに見本動作と同一の動作を実行させることができる。
プロセッサ210Bは、図59(A)に示す仮想空間2611Bに対応する視界画像5917Bを生成し、例えば図59(B)に示すようにモニタ130Bに表示する。ユーザ5Bは、視界画像5917Bを視認することによって、アバターオブジェクト6Bの仮想左手1831LBが、アバターオブジェクト5706の仮想左手5231Lと同様に動いた結果、アバターオブジェクト6Bの(体感的にはユーザ5Bの)顔の近くにまで移動したことを認識する。
図60は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。プロセッサ810Aは、アバターオブジェクト6Bを含む仮想空間2611Aを定義している。プロセッサ210Bは、アバターオブジェクト5706に関する情報をユーザ端末810に送信せず、プロセッサ810Aは、仮想空間2611Aにアバターオブジェクト5706を配置しない。したがって、ユーザ端末810の表示面にアバターオブジェクト5706が表示されることはない。このように、アバターオブジェクト5706は、仮想空間2611Bにおいてユーザ5Bは視認できるが、仮想空間2611Aにおいてユーザ5Aは視認できないオブジェクトである。
プロセッサ210Bは、アバターオブジェクト6Bが実行した第1動作を表す動作情報を生成して、サーバ600を介してユーザ端末800Aに送信する。プロセッサ710Aは、送信された動作情報を受信し、当該動作情報に基づいて、図60(A)に示すように、仮想空間2611Aに配置されるアバターオブジェクト6Bに第1動作を実行させる。詳細には、プロセッサ810Aは、仮想空間2611Aにおいて、アバターオブジェクト6Bの仮想左手1831LBをアバターオブジェクト6Bの顔の正面近くまで移動させる。これにより、仮想空間2611Aにおけるアバターオブジェクト6Bの動作が、仮想空間2611Bにおけるアバターオブジェクト6Bの動作に同期される。
プロセッサ710Aは、図60(A)に示す仮想空間2611Aに対応する視界画像6017Aを生成し、例えば図60(B)に示すようにタッチスクリーン770Aに表示する。ユーザ5Aは、視界画像6017Aを通じて、アバターオブジェクト6Bの仮想左手1831LBがアバターオブジェクト6Bの顔の近くまで移動したことを認識する。
(主要な作用効果)
本実施形態では、ユーザ5Bは、見本となるアバターオブジェクト5706の動きをリアルタイムで参考にしながら、アバターオブジェクト6Bに所望の動作をさせるための所望の動きを行うことができる。これにより、ユーザ5Bは、アバターオブジェクト6Bの動作がユーザ5Bの動きに合致していないのではないかと不安に思わずに済む。さらには、より安心して番組を進行することができるので、番組をよりスムーズに進めることができる。
〔実施形態7〕
図61は、ある実施の形態に従うHMDセット110Bにおいて実行される処理の一部を表すシーケンスチャートである。図62は、ある実施の形態に従う仮想空間2611Bおよび視界画像5717Bを示す図である。図62の例では、プロセッサ210Bは、アバターオブジェクト6Bおよびパネルオブジェクト1832を含む仮想空間2611Bを定義している。パネルオブジェクト1832は、アバターオブジェクト6Bの正面から一定距離を置いて、その表示面をアバターオブジェクト6Bの正面に向けるようにして、視界領域15B内に配置されている。図61に示す態様で仮想空間2611Bが定義される際、パネルオブジェクト1832には何も表示されない。
プロセッサ210Bは、図62(A)に示す仮想空間2611Bに対応する視界画像5717Bを生成し、例えば図62(B)に示すようにモニタ130Bに表示する。視界画像6317Bは、視界画像6317B内の上部領域に配置されるパネルオブジェクト1832を含む。ユーザ5Bは、視界画像5717Bを通じて、表示面に何も表示されないパネルオブジェクト1832を視認する。
図63は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。図63の例では、プロセッサ710Aは、アバターオブジェクト6Bを含むがパネルオブジェクト1832は含まない仮想空間2611Aを定義している。仮想空間2611A内のアバターオブジェクト6Bの挙動は、仮想空間2611B内のアバターオブジェクト6Bの挙動に同期される。プロセッサ210Bはパネルオブジェクト1832に関する情報をユーザ端末800Aに送信せず、プロセッサ710Aは仮想空間2611Aにパネルオブジェクト1832を配置しない。プロセッサ710Aは、仮想視点1951が仮想空間2611A内のいずれの方向を向いていたとしても、ユーザ端末800の表示面にパネルオブジェクト1832を表示することがない。
プロセッサ710Aは、図63(A)に示す仮想空間2611Aに対応する視界画像6317Aを生成し、例えば図63(B)に示すようにタッチスクリーン770Aの表示面に表示する。アバターオブジェクト6Bは、視界画像6317Aにおいて、ユーザ端末800Aの表示面の右端部の方を向くにように表示されている。プロセッサ710Aは、視界画像6317Aを表示する際、タッチスクリーン770Aにおける視界画像6317Aの下部にUI表示欄4054をさらに表示する。プロセッサ710Aは、さらに、アイコン状態の敵オブジェクト6357をUI表示欄4054に表示する。敵オブジェクト6357は、仮想空間2611に配置され得る一種の仮想オブジェクトである。敵オブジェクト6357は、UI表示欄4054に表示される際、ユーザ5Aによる敵オブジェクト6357の選択操作を受け付け可能なUI部品として機能する。敵オブジェクト6357には、ユーザ5Aがアバターオブジェクト6Bにリクエストする行動(第1行動)が関連付けられている。図63では、敵オブジェクト6357に関連付けられる行動は、「アバターオブジェクト6Bが敵オブジェクト6357と戦闘する」という戦闘行動である。
図64は、ある実施の形態におけるユーザ端末800Aの表示面を示す図である。ユーザ5Aは、図64に示すように、敵オブジェクト6357をアバターオブジェクト6Bに付与するための操作をタッチスクリーン770Aに対して行う。当該操作は、図64では、敵オブジェクト6357をユーザ5Bがタッチした状態でUI表示欄4054から視界画像6317Aまで移動させるスワイプ操作である。プロセッサ210Bは、当該スワイプ操作を検出すると、図64に示すように、タッチスクリーン770Aの表示面において、敵オブジェクト6357をUI表示欄4054から視界画像6317Aまで移動させる。
図65は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。プロセッサ710Aは、敵オブジェクト6357が視界画像6417A上に移動したことに応答して、図65に示すように、敵オブジェクト6357を仮想空間2611Aに配置する。図65では、敵オブジェクト6357は、仮想空間2611Aにおいてアバターオブジェクト6Bと正対するように、視界領域15A内に配置される。プロセッサ710Aは、図65(A)に示す仮想空間2611Aに対応する視界画像6517Aを生成し、例えば図65(B)に示すようにタッチスクリーン770Aに表示する。ユーザ5Aは、視界画像6517Aを視認することによって、ユーザ5Aのスワイプ操作の結果、敵オブジェクト6357がアバターオブジェクト6Bに正対するように仮想空間2611Aに配置されたことを認識する。
図66は、ある実施の形態に従う仮想空間2611Bおよび視界画像6617Bを示す図である。プロセッサ710Aは、敵オブジェクト6357が仮想空間2611Aに配置されたことに応答して、敵オブジェクト6357に関する情報を生成し、サーバ600に送信する。当該情報は、敵オブジェクト6357の位置および向き、ならびに敵オブジェクト6357に関連付けられる戦闘行動を表す各情報を少なくとも含む。サーバ600は、ユーザ端末800Aから受信した情報を、コンピュータ200Bに送信する。プロセッサ210Bは、サーバ600から送信された情報を受信する。
ステップS6101において、プロセッサ200Bは、サーバ600から受信した敵オブジェクト6357に関する情報に基づいて、図66に示すように敵オブジェクト6357を仮想空間2611Bに配置する。図66では、敵オブジェクト6357は、視界領域15B内に配置され、アバターオブジェクト6Bと正対している。プロセッサ210Bは、敵オブジェクト6357を仮想空間2611Bに配置する際、敵オブジェクト6357に関連付けられる戦闘行動を仮想空間2611B内に表示する。図66(A)では、視界領域15B内に配置されるパネルオブジェクト1832の表示面に、戦闘行動をユーザ5Bに説明する態様のテキストとして戦闘行動が表示される。
プロセッサ210Bは、図66(A)に示す仮想空間2611Bに対応する視界画像6617Bを生成し、例えば図66(B)に示すようにモニタ130Bに表示する。視界画像6617Bは、敵オブジェクト6357およびパネルオブジェクト1832を含む。視界画像6617Bにおいて、パネルオブジェクト1832に、ユーザ5Aがアバターオブジェクト6Bにリクエストした戦闘行動を説明するテキスト6658が表示される。ユーザ5Bは、視界画像6617Bを通じて、アバターオブジェクト6Bの正面に敵オブジェクト6357が出現したことと、ユーザ5Aからアバターオブジェクト6Bに対して敵オブジェクト6357と戦闘して欲しいことがリクエストされたことと認識する。
図67は、ある実施の形態に従う仮想空間2611Bおよび視界画像6717Bを示す図である。ステップS6502において、プロセッサ210Bは、敵オブジェクト6357が配置されたことに応答して、図67に示すように、武器オブジェクト6759をアバターオブジェクト6Bに関連付けて仮想空間2611Bに配置する。武器オブジェクト6759は、アバターオブジェクト6Bが敵オブジェクト6357を攻撃するために使用可能な仮想オブジェクトの一種である。武器オブジェクト6759は、仮想右手1831RBに把持される形でアバターオブジェクト6Bに関連付けられる。
図68は、ある実施の形態に従う仮想空間2611Bおよび視界画像6817Bを示す図である。アバターオブジェクト6Bが仮想右手1831RBに武器オブジェクト6759を把持した後、ユーザ5Bは、ユーザ5Aからのリクエストに応じて、アバターオブジェクト6Bを敵オブジェクト6357と戦闘させるための操作を、HMDセット110Bに入力する。ここでは、ユーザ5Bは、武器オブジェクト6759で敵オブジェクト6357を斬りつけるように、ユーザ5Bの右手を動かす。ステップS6503において、プロセッサ210Bは、ユーザ5Bによる右手の動きを検出する。ステップS6504において、プロセッサ210Bは、当該検出したユーザ5Bの動きに基づいて、図68(A)に示すように、敵オブジェクト6357に対する戦闘行動をアバターオブジェクト6Bに実行させる。図68では、プロセッサ210Bは、武器オブジェクト6759で敵オブジェクト6357を攻撃するという戦闘行動を、アバターオブジェクト6Bに実行させる。
プロセッサ210Bは、図68(A)に示す仮想空間2611Bに対応する視界画像6817Bを生成し、例えば図68(B)に示すようにモニタ130Bに表示する。視界画像6817Bには、武器オブジェクト6759で敵オブジェクト6357に斬りつける様子が表示されている。ユーザ5Bは、視界画像6817Bを通じて、ユーザ5Aのリクエストに応えるようにアバターオブジェクト6Bを制御できたことを認識する。
図69は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。プロセッサ210Bは、図67に示すようにアバターオブジェクト6Bに武器オブジェクト6759を把持させたことに応答して、武器オブジェクト6759に関する情報を生成し、サーバ600に送信する。サーバ600は、武器オブジェクト6759に関する情報をユーザ端末800Aに転送する。プロセッサ710Aは、当該情報をサーバ600から受信し、当該情報に基づいて、図69(A)に示すように、仮想空間2611Aにおいてアバターオブジェクト6Bの仮想右手1831RBに武器オブジェクト6759を把持させる。プロセッサ710Aは、図69(A)に示す仮想空間2611Aに対応する視界画像6917Aを生成し、例えば図69(B)に示すようにタッチスクリーン770Aに表示する。ユーザ5Aは、視界画像6917Aを通じて、アバターオブジェクト6Bが敵オブジェクト6357と戦闘するために武器オブジェクト6759を把持したと理解する。
図70は、ある実施の形態に従う仮想空間2611Aおよびユーザ端末800Aの表示面を示す図である。プロセッサ210Bは、図68に示すアバターオブジェクト6Bの動作を表す動作情報を生成し、サーバ600を介してユーザ端末800Aに送信する。プロセッサ210Bは、アバターオブジェクト6Bの動作情報を受信し、当該情報に基づいて、図70(A)に示すように仮想空間2611Aにおいて、敵オブジェクト6357に対する戦闘動作をアバターオブジェクト6Bに実行させる。図70では、仮想空間2611A内のアバターオブジェクト6Bは、図68に示す仮想空間2611B内のアバターオブジェクト6Bの動作に連動して、敵オブジェクト6357を攻撃するための戦闘動作を武器オブジェクト6759を用いて実行する。
プロセッサ710Aは、図70(A)に示す仮想空間2611Aに対応する視界画像7017Aを生成し、例えば図70(B)に示すようにタッチスクリーン770Aに表示する。ユーザ5Aは、視界画像7017Aを通じて、アバターオブジェクト6Bはユーザ5Aのリクエストに応えて敵オブジェクト6357と戦闘してくれたのだと理解する。
(主要な作用効果)
本実施形態では、ユーザ5Aからリクエストされた動作をアバターオブジェクト6Bに実行させることができるので、仮想空間2611におけるユーザ5Aの興趣性を向上させることができる。
以上、本開示の実施形態について説明したが、本発明の技術的範囲は、本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は、特許請求の範囲に記載された発明の範囲およびその均等の範囲に基づいて定められるべきである。
各実施形態およびその各種変形例については、他の実施形態または他の変形例と矛盾しない限り、他の実施形態または他の変形例に適用可能である。
各実施形態における「機械学習」は、例えば深層学習であればよい。例えば、プロセッサ210Bは、視聴者からの評価が関連付けられた破顔表情3161を深層学習することによって、破顔表情3161が深層学習された学習済みモデル1429を生成することができる。
HMDセット110は、HMD120、コンピュータ200、HMDセンサ410、およびモーションセンサ420が一体化された構成であってもよい。
〔付記事項〕
本発明の一側面に係る内容を列記すると以下の通りである。
(項目1) プログラムを説明した。本開示のある局面によると、プログラムは、プロセッサ(210B)およびメモリ(220B)を備えたコンピュータ(200B)によって実行される。プログラムは、プロセッサに、第1ユーザ(ユーザ5B)に関連付けられるアバター(アバターオブジェクト6B)を含む仮想空間(2611B)を定義するステップ(S2501)と、第1ユーザの動きを検出するステップ(S3701)と、アバターの過去の第1動作を人工知能に基づいて機械学習した学習結果(学習済みモデル1429)に基づいて、アバターが行い得る新たな動作に関する情報を特定するステップ(S3702)と、検出された第1ユーザの動きと、特定された動作に関する動作情報とに基づいて、アバターに適用可能な制御内容を特定するステップ(S3704)と、特定された制御内容に基づいて、アバターを制御するステップとを実行させる。
(項目2) (項目1)において、プログラムは、プロセッサに、第1動作に対する評価を特定するステップと、特定された評価が関連付けられる第1動作を機械学習することによって、学習結果を生成するステップとを実行させ、情報を特定するステップでは、複数の動作情報のうち、より多くの評価が関連付けられた動作に関する動作情報を、より優先的に特定する。
(項目3) (項目2)において、評価を特定するステップでは、仮想空間に表示されるボタン(4055)に対して、第1動作に応答して第2ユーザが行った操作に基づいて、評価を特定する、
(項目4) (項目2)において、評価を特定するステップでは、動作に応答して第2ユーザが入力したコメント(3533)を、評価として特定する。
(項目5) (項目2)において、評価を特定するステップでは、アバターが行った動作に応答して第2ユーザから第1ユーザに付与されたオブジェクト(4156)を、動作に対する評価として特定する。
(項目6) (項目2)~(項目5)のいずれかにおいて、第1動作は、アバターが顔の表情を作る動作であり、学習結果を生成するステップでは、評価が付与された表情(破顔表情3161)を機械学習し、情報を特定するステップでは、複数の表情の中から、機械学習された表情を特定し、制御内容を特定するステップでは、検出された第1ユーザの動きと、特定された表情とに基づいて、アバターが新たに作る表情を示す制御内容を特定する。
(項目7) (項目2)~(項目5)のいずれかにおいて、プログラムは、プロセッサに、検出された第1ユーザの動きに対応するアバターの動作に関する第1情報を、第1パラメータを用いて補正することによって、第1情報に関する第2情報を生成するステップと、生成された第2情報に基づいて、アバターに第1動作を行わせるステップと、特定された評価が閾値を下回る場合、第1パラメータを調整するステップとを実行させる。
(項目8) (項目1)において、アバターは、操作オブジェクトを有し、プログラムは、プロセッサに、検出された第1ユーザの動きに基づいて、仮想空間において操作オブジェクト(仮想右手1831RB)を動作させるテップと、動作された操作オブジェクトがアバターにめり込んだか否かを判定するステップと、めり込まなかったと判定された場合の操作オブジェクトの動作に関する動作情報を機械学習することによって、学習結果を生成するステップとを実行させ、情報を特定するステップでは、操作オブジェクトの動きに関する複数の動作情報の中から、機械学習された動作情報を特定し、制御内容を特定するステップでは、検出された第1ユーザの動きと、特定された動作情報とに基づいて、操作オブジェクトがアバターにめり込まずに済む制御内容を特定する。
(項目9) (項目1)のいずれかにおいて、第1ユーザの動きを検出するステップでは、第1ユーザが発した第1音声を検出し、プログラムは、プロセッサに、検出された第1音声を、音声変換のための第1パラメータを用いて第2音声に変換するステップと、第2音声が、基準音声と同一の音質を有するか否かを判定するステップと、同一の音質を有すると判定された場合、第1パラメータを機械学習することによって、学習結果を生成するステップとを実行させ、情報を特定するステップでは、機械学習された第1パラメータを、情報として特定し、制御するステップでは、検出された第1ユーザの音声を、特定された第1パラメータを用いて変換することによって、第3音声を生成し、当該第3音声をアバターに発話させる。
(項目10) (項目2)~(項目9)のいずれかにおいて、学習結果を生成するステップでは、第1動作を深層学習する。
(項目11) を実行させる(項目1)~(項目10)のいずれかにおいて、プログラムは、プロセッサに、仮想空間において発生した事象を特定するステップと、特定された事象に応じた情報を仮想空間に出力するステップと。
(項目12) (項目11)において、通知するステップでは、特定された事象に応じた音声を仮想空間において再生する。
(項目13) (項目11)において、通知するステップでは、特定された事象に応じたテキストを仮想空間に表示する。
(項目14) (項目11)において、通知するステップでは、特定された事象に応じた特殊効果を仮想空間に反映する。
(項目15) (項目1)~(項目14)のいずれかにおいて、プログラムは、プロセッサに、特定された制御内容を販売するステップを実行させる。
(項目16) 情報処理装置を説明した。本開示のある局面によると、情報処理装置(コンピュータ200B)は、情報処理装置によって実行されるプログラムを記憶する記憶部(ストレージ230B)と、プログラムを実行することにより、情報処理装置の動作を制御する制御部(プロセッサ210B)と、を備えている。制御部は、第1ユーザ(ユーザ5B)に関連付けられるアバター(アバターオブジェクト6B)を含む仮想空間(2611B)を定義し、第1ユーザの動きを検出し、アバターの過去の第1動作を人工知能に基づいて機械学習した学習結果(学習済みモデル1429)に基づいて、アバターが行い得る新たな動作に関する情報を特定し、検出された第1ユーザの動きと、特定された動作に関する動作情報とに基づいて、アバターに適用可能な制御内容を特定し、特定された制御内容に基づいて、アバターを制御する。
(項目17) プログラムを実行する方法を説明した。本開示のある局面によると、プログラムは、プロセッサ(210B)およびメモリ(220B)を備えたコンピュータ(200B)によって実行される。方法は、プロセッサが、第1ユーザ(ユーザ5B)に関連付けられるアバター(アバターオブジェクト6B)を含む仮想空間(2611B)を定義するステップ(S2501)と、第1ユーザの動きを検出するステップ(S3701)と、アバターの過去の第1動作を人工知能に基づいて機械学習した学習結果(学習済みモデル1429)に基づいて、アバターが行い得る新たな動作に関する情報を特定するステップ(S3702)と、検出された第1ユーザの動きと、特定された動作に関する動作情報とに基づいて、アバターに適用可能な制御内容を特定するステップ(S3704)と、特定された制御内容に基づいて、アバターを制御するステップとを含む。
(項目18) プログラムを説明した。本開示のある局面によると、プログラムは、プロセッサ(210B)およびメモリ(220B)を備えたコンピュータ(ユーザ端末200B)によって実行される。プログラムは、プロセッサに、第1ユーザ(ユーザ5B)に関連付けられる第1アバター(アバターオブジェクト6B)と、第2アバター(アバターオブジェクト5706)とを含む仮想空間(仮想空間2611B)を定義するステップと、第1アバターの視界(視界領域15B)内に第2アバターが配置されるときに、第2アバターに第1動作を実行させるステップと、第2アバターによる第1動作の実行中に、第1ユーザの動きを検出するステップと、検出された第1ユーザの動きに基づいて、視界内に第2アバターが配置されるときに、第1アバターに第1動作を実行させるステップとを実行させる。
(項目19) プログラムを説明した。本開示のある局面によると、プログラムは、プロセッサ(210B)およびメモリ(220B)を備えたコンピュータ(ユーザ端末200B)によって実行される。プログラムは、プロセッサに、第1ユーザ(ユーザ5B)に関連付けられるアバター(アバターオブジェクト6B)を含む仮想空間(仮想空間2611B)を定義するステップと、第2ユーザ(ユーザ5A)が第1アバターにリクエストする行動が関連付けられるオブジェクト(敵オブジェクト6357)を、第2ユーザによる操作に基づいて仮想空間に配置するステップと、第1ユーザの動きを検出するステップと、検出されたユーザの動きに基づいて、オブジェクトに対する行動をアバターに実行させるステップとを実行させる。
上記実施形態においては、HMDによってユーザが没入する仮想空間(VR空間)を例示して説明したが、HMDとして、透過型のHMDを採用してもよい。この場合、透過型のHMDを介してユーザが視認する現実空間に仮想空間を構成する画像の一部を合成した視界画像を出力することにより、拡張現実(AR:Augmented Reality)空間または複合現実(MR:Mixed Reality)空間における仮想体験をユーザに提供してもよい。この場合、操作オブジェクトに代えて、ユーザの手の動きに基づいて、仮想空間内における対象オブジェクトへの作用を生じさせてもよい。具体的には、プロセッサは、現実空間におけるユーザの手の位置の座標情報を特定するとともに、仮想空間内における対象オブジェクトの位置を現実空間における座標情報との関係で定義してもよい。これにより、プロセッサは、現実空間におけるユーザの手と仮想空間における対象オブジェクトとの位置関係を把握し、ユーザの手と対象オブジェクトとの間で上述したコリジョン制御等に対応する処理を実行可能となる。その結果、ユーザの手の動きに基づいて対象オブジェクトに作用を与えることが可能となる。