[本開示が示す実施形態の説明]
本開示が示す実施形態の概要を説明する。
(1)ヘッドマウントデバイスを備えたシステムにおける情報処理方法であって、
当該情報処理方法は、
(a)前記ヘッドマウントデバイスのユーザに関連付けられた第一オブジェクトと、動作部分を備え、前記動作部分によって前記第一オブジェクトに対して所定の動作を実行する第二オブジェクトと、を含む仮想空間を定義する仮想空間データを生成するステップと、
(b)前記ヘッドマウントデバイスの動きおよび前記仮想空間データに基づいて、前記ヘッドマウントデバイスに表示される視野画像を示す視野画像データを生成するステップと、
(c)前記動作部分により前記第一オブジェクトに対して前記所定の動作が実行された場合に、前記視野画像の視界を狭くするとともに前記視野画像の表示態様を異ならせる第一状態の表示制御を行うステップと、
を含む。
この方法によれば、仮想空間において必要な情報をユーザに違和感なく提供することができる。本方法では、例えば仮想空間内においてユーザが敵オブジェクトから攻撃を受けた場合に、ユーザの視界を狭くするとともに狭くなった部分の表示態様を異ならせることで、ユーザは攻撃を受けたことを直感的かつ違和感なく認識することができる。
(2)前記ステップ(c)は、前記動作部分を前記視野画像において非表示とするステップを含んでもよい。
動作部分が第一オブジェクトに対して所定の動作を実行する際に視野画像において動作部分を表示させたままにしておくと、レンダリングが想定されていない動作部分の内部が視界に現れることとなり、不自然な視野画像となってしまう可能性がある。そのため、ステップ(c)では動作部分を非表示とすることが好ましい。
(3)前記ステップ(c)において、前記所定の動作に関連付けられる所定のパラメータに関する第一表示を前記視野画像に表示させることによって、前記第一状態の表示制御を行ってもよい。
(4)前記ステップ(c)において、前記視野画像の隅部の視覚的効果を低減させることで前記視界を狭くするとともに、前記隅部よりも前記視野画像の中央側に前記第一表示を表示してもよい。
これらの方法により、ユーザに必要な情報を与えるための新規なユーザ・インタフェースを提供することができる。
(5)(d)前記ステップ(c)における前記第一状態の表示制御を行った後で、前記視界をさらに狭くする処理を施す第二状態の表示制御を行うステップを、さらに含んでもよい。
この方法により、ユーザに関連付けられたパラメータ(例えば、ヒットポイント)が減少してきたことをユーザが認識することができる。
(6)前記第一状態での前記視野画像の表示態様と前記第二状態での前記視野画像の表示態様とが異なっていてもよい。
この方法により、仮想空間体験の品質を損なうことなく、ユーザが例えばパラメータの減少を直感的に認識することができる。
(7)(e)前記所定のパラメータが閾値を下回った場合には、前記第一状態および前記第二状態での前記視野画像の表示態様とは異なる表示態様で、前記視野画像の前記視界を狭くする処理を施す第三状態の表示制御を行うステップを、さらに含んでもよい。
この方法により、ユーザはパラメータの減少を段階的に認識することができる。
(8)前記ステップ(d)において、前記動作部分の視認性が前記動作部分以外の部分の視認性よりも高くされていてもよい。
視界が狭くされた場合でも、動作部分の視認性を確保しておくことで、ゲーム性を向上させることができる。
(9)前記ステップ(d)において、前記動作部分はカラーで表示され、前記動作部分以外の部分はグレースケールで表示されていてもよい。
この方法によれば、パラメータが減少した場合でも、動作部分の視認性を確保することができる。
(10)情報処理プログラムは、上記項目(1)から(9)のいずれかに記載の情報処理方法をコンピュータに実行させるための情報処理プログラムである。
仮想空間において必要な情報をユーザに違和感なく提供可能な情報処理プログラムを提供することができる。
(11)ヘッドマウントデバイスを用いた情報処理システムであって、
当該情報処理システムは、項目(1)から(9)のうちいずれかに記載の情報処理方法を実行するように構成された、情報処理システムである。
仮想空間において必要な情報をユーザに違和感なく提供可能な情報処理システムを提供することができる。
(12)プロセッサと、
コンピュータ可読命令を記憶するメモリと、を備えた情報処理装置であって、
前記コンピュータ可読命令が前記プロセッサにより実行されると、前記情報処理装置は項目(1)から(9)のうちいずれかに記載の情報処理方法を実行する、情報処理装置である。
上記によれば、仮想空間において必要な情報をユーザに違和感なく提供可能な情報処理装置を提供することができる。情報処理装置は、ユーザ端末またはサーバのいずれか一方である点に留意されたい。
[本開示が示す実施形態の詳細]
以下、本開示が示す実施形態について図面を参照しながら説明する。本実施形態の説明において既に説明された要素と同一の参照番号を有する要素については、説明の便宜上、その説明は繰り返さない。
最初に、仮想空間配信システム100(情報処理システム)の構成の概略について図1を参照して説明する。図1は、仮想空間配信システム100(以下、単に配信システム100という。)の概略図である。図1に示すように、配信システム100は、ヘッドマウントデバイス(HMD)110(第一HMD)を装着したユーザA(第一ユーザ)によって操作されるユーザ端末1A(第一ユーザ端末)と、HMD110(第二HMD)を装着したユーザB(第二ユーザ)によって操作されるユーザ端末1B(第二ユーザ端末)と、サーバ2とを備える。ユーザ端末1A,1Bは、インターネット等の通信ネットワーク3を介してサーバ2に通信可能に接続されている。以降では、説明の便宜上、各ユーザ端末1A,1Bを単にユーザ端末1と総称する場合がある。各ユーザA,Bを単にユーザUと総称する場合がある。本実施形態では、ユーザ端末1A,1Bは、同一の構成を備えているものとする。仮想空間とは、VR(Virtual Reality)空間と、AR(Argumented Reality)空間と、MR(Mixed Reality)空間を含む。
次に、図2を参照してユーザ端末1の構成について説明する。図2は、ユーザ端末1を示す概略図である。図2に示すように、ユーザ端末1は、ユーザUの頭部に装着されたヘッドマウントデバイス(HMD)110と、ヘッドフォン116と、位置センサ130と、外部コントローラ320と、制御装置120とを備える。
HMD110は、表示部112と、HMDセンサ114と、注視センサ140とを備える。表示部112は、HMD110を装着したユーザUの視界(視野)を完全に覆うように構成された非透過型の表示装置を備える。これにより、ユーザUは、表示部112に表示された視野画像のみを見ることで仮想空間に没入することができる。表示部112は、ユーザUの左目に画像を提供するように構成された左目用表示部と、ユーザUの右目に画像を提供するように構成された右目用表示部とから構成されてもよい。HMD110は、透過型の表示装置を備えてもよい。この場合、透過型の表示装置は、その透過率を調整することで、一時的に非透過型の表示装置として構成されてもよい。
HMDセンサ114は、HMD110の表示部112の近傍に搭載される。HMDセンサ114は、地磁気センサ、加速度センサ、傾きセンサ(角速度センサやジャイロセンサ等)のうちの少なくとも1つを含み、ユーザUの頭部に装着されたHMD110の各種動き(傾き等)を検出することができる。
注視センサ140は、ユーザUの視線を検出するアイトラッキング機能を有する。注視センサ140は、例えば、右目用注視センサと、左目用注視センサを備えてもよい。右目用注視センサは、ユーザUの右目に例えば赤外光を照射して、右目(特に、角膜や虹彩)から反射された反射光を検出することで、右目の眼球の回転角に関する情報を取得してもよい。一方、左目用注視センサは、ユーザUの左目に例えば赤外光を照射して、左目(特に、角膜や虹彩)から反射された反射光を検出することで、左目の眼球の回転角に関する情報を取得してもよい。
ヘッドフォン116(音声出力部)は、ユーザUの左耳と右耳にそれぞれ装着されている。ヘッドフォン116は、制御装置120から音声データ(電気信号)を受信し、当該受信した音声データに基づいて音声を出力するように構成されている。
位置センサ130は、例えば、ポジション・トラッキング・カメラにより構成され、HMD110と外部コントローラ320の位置を検出するように構成されている。位置センサ130は、制御装置120に無線または有線により通信可能に接続されており、HMD110に設けられた図示しない複数の検知点の位置、傾きまたは発光強度に関する情報を検出するように構成されている。位置センサ130は、外部コントローラ320に設けられた図示しない複数の検知点の位置、傾きおよび/または発光強度に関する情報を検出するように構成されている。検知点は、例えば、赤外線や可視光を放射する発光部である。位置センサ130は、赤外線センサや複数の光学カメラを含んでもよい。
外部コントローラ320は、ユーザUの手の動きを検知することにより、仮想空間内に表示される手オブジェクトの動作を制御するために使用される。外部コントローラ320は、ユーザUの右手によって操作される右手用外部コントローラ320R(以下、単にコントローラ320Rという。)と、ユーザUの左手によって操作される左手用外部コントローラ320L(以下、単にコントローラ320Lという。)と、を有する。コントローラ320Rは、ユーザUの右手の位置や右手の手指の動きを示す装置である。コントローラ320Lは、ユーザUの左手の位置や左手の手指の動きを示す装置である。コントローラ320R,320Lの動きに応じて仮想空間内に存在する左手オブジェクトおよび右手オブジェクトがそれぞれ動く。
制御装置120は、HMD110を制御するように構成されたコンピュータである。制御装置120は、位置センサ130から取得された情報に基づいて、HMD110の位置情報を特定し、当該特定された位置情報に基づいて、仮想空間における仮想カメラの位置(仮想空間内でのユーザUの位置)と、現実空間におけるHMD110を装着したユーザUの位置を正確に対応付けることができる。制御装置120は、位置センサ130および/または外部コントローラ320に内蔵されたセンサから取得された情報に基づいて、外部コントローラ320の動作を特定し、当該特定された外部コントローラ320の動作に基づいて、仮想空間内に表示される手オブジェクトの動作と現実空間における外部コントローラ320の動作を正確に対応付けることができる。特に、制御装置120は、位置センサ130および/またはコントローラ320Lに内蔵されたセンサから取得された情報に基づいて、コントローラ320Lの動作を特定し、当該特定されたコントローラ320Lの動作に基づいて、仮想空間内に表示される左手オブジェクトの動作と現実空間におけるコントローラ320Lの動作(ユーザUの左手の動作)を正確に対応付けることができる。同様に、制御装置120は、位置センサおよび/コントローラ320Rに内蔵されたセンサから取得された情報に基づいて、コントローラ320Rの動作を特定し、当該特定されたコントローラ320Rの動作に基づいて、仮想空間内に表示される右手オブジェクトの動作と現実空間におけるコントローラ320Rの動作(ユーザUの右手の動作)を正確に対応付けることができる。
制御装置120は、ユーザUの右目の視線と左目の視線をそれぞれ特定し、当該右目の視線と当該左目の視線の交点である注視点を特定することができる。制御装置120は、特定された注視点に基づいて、ユーザUの両目の視線(ユーザUの視線)を特定することができる。ユーザUの視線は、ユーザUの両目の視線であって、ユーザUの右目と左目を結ぶ線分の中点と注視点を通る直線の方向に一致する。制御装置120は、注視センサ140(左目用注視センサと右目用注視センサ)から送信された検出データ(アイトラッキングデータ)に基づいて、ユーザUの右目の黒目の中心位置とユーザUの左目の黒目の中心位置とをそれぞれ特定することができる。
次に、図3を参照して、HMD110の位置や傾きに関する情報を取得する方法について以下に説明する。図3は、HMD110を装着したユーザUの頭部を示す図である。HMD110を装着したユーザUの頭部の動きに連動したHMD110の位置や傾きに関する情報は、位置センサ130および/またはHMD110に搭載されたHMDセンサ114により検出可能である。図2に示すように、HMD110を装着したユーザUの頭部を中心として、3次元座標(uvw座標)が規定される。ユーザUが直立する垂直方向をv軸として規定し、v軸と直交しHMD110の中心を通る方向をw軸として規定し、v軸およびw軸と直交する方向をu軸として規定する。位置センサ130および/またはHMDセンサ114は、各uvw軸回りの角度(すなわち、v軸を中心とする回転を示すヨー角、u軸を中心とした回転を示すピッチ角、w軸を中心とした回転を示すロール角で決定される傾き)を検出する。制御装置120は、検出された各uvw軸回りの角度変化に基づいて、仮想カメラの視軸を制御するための角度情報を決定する。
次に、図4を参照することで、制御装置120のハードウェア構成について説明する。図4は、制御装置120のハードウェア構成を示す図である。図4に示すように、制御装置120は、制御部121と、記憶部123と、I/O(入出力)インターフェース124と、通信インターフェース125と、バス126とを備える。制御部121と、記憶部123と、I/Oインターフェース124と、通信インターフェース125は、バス126を介して互いに通信可能に接続されている。
制御装置120は、HMD110とは別体に、パーソナルコンピュータ、スマートフォン、ファブレット、タブレットまたはウェアラブルデバイスとして構成されてもよいし、HMD110に内蔵されていてもよい。また、制御装置120の一部の機能がHMD110に搭載されると共に、制御装置120の残りの機能がHMD110とは別体の他の装置に搭載されてもよい。
制御部121は、メモリとプロセッサを備えている。メモリは、例えば、各種プログラム等が格納されたROM(Read Only Memory)やプロセッサにより実行される各種プログラム等が格納される複数ワークエリアを有するRAM(Random Access Memory)等から構成される。プロセッサは、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)および/またはGPU(Graphics Processing Unit)であって、ROMに組み込まれた各種プログラムから指定されたプログラムをRAM上に展開し、RAMとの協働で各種処理を実行するように構成されている。
特に、プロセッサが制御プログラムをRAM上に展開し、RAMとの協働で制御プログラムを実行することで、制御部121は、制御装置120の各種動作を制御してもよい。制御部121は、視野画像データに基づいてHMD110の表示部112に視野画像を表示する。これにより、ユーザUは、仮想空間に没入することができる。
記憶部(ストレージ)123は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、USBフラッシュメモリ等の記憶装置であって、プログラムや各種データを格納するように構成されている。記憶部123は、本実施形態に係る情報処理方法の少なくとも一部をコンピュータに実行させるための制御プログラムや、複数のユーザによる仮想空間の共有を実現するための制御プログラムを格納してもよい。記憶部123には、ユーザUの認証プログラムや各種画像やオブジェクト(例えば、手オブジェクト等)に関するデータが格納されてもよい。記憶部123には、各種データを管理するためのテーブルを含むデータベースが構築されてもよい。
I/Oインターフェース124は、HMD110と、位置センサ130と、外部コントローラ320と、ヘッドフォン116と、をそれぞれ制御装置120に通信可能に接続するように構成されており、例えば、USB(Universal Serial Bus)端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High―Definition Multimedia Interface)端子等により構成されている。制御装置120は、HMD110と、位置センサ130と、外部コントローラ320と、ヘッドフォン116とのそれぞれと無線接続されていてもよい。
通信インターフェース125は、制御装置120をLAN(Local Area Network)、WAN(Wide Area Network)またはインターネット等の通信ネットワーク3に接続させるように構成されている。通信インターフェース125は、通信ネットワーク3を介してサーバ2等の外部装置と通信するための各種有線接続端子や、無線接続のための各種処理回路を含んでおり、通信ネットワーク3を介して通信するための通信規格に適合するように構成されている。
次に、図5を参照して外部コントローラ320の具体的構成の一例について説明する。外部コントローラ320は、ユーザUの身体の一部(頭部以外の部位であり、本実施形態においてはユーザUの手)の動きを検知することにより、仮想空間内に表示される手オブジェクトの動作を制御するために使用される。外部コントローラ320は、ユーザUの右手によって操作される右手用外部コントローラ320R(以下、単にコントローラ320Rという。)と、ユーザUの左手によって操作される左手用外部コントローラ320L(以下、単にコントローラ320Lという。)と、を有する。コントローラ320Rは、ユーザUの右手の位置や右手の手指の動きを示す装置である。また、コントローラ320Rの動きに応じて仮想空間内に存在する右手オブジェクト400R(図11参照)が移動する。コントローラ320Lは、ユーザUの左手の位置や左手の手指の動きを示す装置である。また、コントローラ320Lの動きに応じて仮想空間内に存在する左手オブジェクト400L(図11参照)が移動する。コントローラ320Rとコントローラ320Lは略同一の構成を有するので、以下では、図5を参照してコントローラ320Rの具体的構成についてのみ説明する。以降の説明では、便宜上、コントローラ320L,320Rを単に外部コントローラ320と総称する場合がある。
図5に示すように、コントローラ320Rは、操作ボタン302と、複数の検知点304と、図示しないセンサと、図示しないトランシーバとを備える。検知点304とセンサは、どちらか一方のみが設けられていてもよい。操作ボタン302は、ユーザUからの操作入力を受付けるように構成された複数のボタン群により構成されている。操作ボタン302は、プッシュ式ボタン、トリガー式ボタン及びアナログスティックを含む。プッシュ式ボタンは、親指による押下する動作によって操作されるボタンである。例えば、天面322上に2つのプッシュ式ボタン302a,302bが設けられている。トリガー式ボタンは、人差し指や中指で引き金を引くような動作によって操作されるボタンである。例えば、グリップ324の前面部分にトリガー式ボタン302eが設けられると共に、グリップ324の側面部分にトリガー式ボタン302fが設けられる。トリガー式ボタン302e,302fは、人差し指と中指によってそれぞれ操作されることが想定されている。アナログスティックは、所定のニュートラル位置から360度任意の方向へ傾けて操作されうるスティック型のボタンである。例えば、天面322上にアナログスティック320iが設けられており、親指を用いて操作されることが想定されている。
コントローラ320Rは、グリップ324の両側面から天面322とは反対側の方向へ延びて半円状のリングを形成するフレーム326を備える。フレーム326の外側面には、複数の検知点304が埋め込まれている。複数の検知点304は、例えば、フレーム326の円周方向に沿って一列に並んだ複数の赤外線LEDである。位置センサ130は、複数の検知点304の位置、傾きまたは発光強度に関する情報を検出した後に、制御装置120は、位置センサ130によって検出された情報に基づいて、コントローラ320Rの位置や姿勢(傾き・向き)に関する情報を取得する。
コントローラ320Rのセンサは、例えば、磁気センサ、角速度センサ、若しくは加速度センサのいずれか、又はこれらの組み合わせであってもよい。センサは、ユーザUがコントローラ320Rを動かしたときに、コントローラ320Rの向きや動きに応じた信号(例えば、磁気、角速度、又は加速度に関する情報を示す信号)を出力する。制御装置120は、センサから出力された信号に基づいて、コントローラ320Rの位置や姿勢に関する情報を取得する。
コントローラ320Rのトランシーバは、コントローラ320Rと制御装置120との間でデータを送受信するように構成されている。例えば、トランシーバは、ユーザUの操作入力に対応する操作信号を制御装置120に送信してもよい。また、トランシーバは、検知点304の発光をコントローラ320Rに指示する指示信号を制御装置120から受信してもよい。さらに、トランシーバは、センサによって検出された値を示す信号を制御装置120に送信してもよい。
次に、図6から図9を参照することで視野画像をHMD110に表示するための処理について説明する。図6は、視野画像をHMD110に表示する処理を示すフローチャートである。図7は、仮想空間200の一例を示すxyz空間図である。図8の状態(a)は、図7に示す仮想空間200のyx平面図である。図8の状態(b)は、図7に示す仮想空間200のzx平面図である。図9は、HMD110に表示された視野画像Vの一例を示す図である。
図6に示すように、ステップS1において、制御部121(図4参照)は、仮想カメラ300と、各種オブジェクトとを含む仮想空間200を示す仮想空間データを生成する。図7に示すように、仮想空間200は、中心位置210を中心とした全天球として規定される(図7では、上半分の天球のみが図示されている)。仮想空間200では、中心位置210を原点とするxyz座標系が設定されている。仮想カメラ300は、HMD110に表示される視野画像V(図9参照)を特定するための視軸Lを規定している。仮想カメラ300の視野を定義するuvw座標系は、現実空間におけるユーザUの頭部を中心として規定されたuvw座標系に連動するように決定される。HMD110を装着したユーザUの現実空間における移動に連動して、制御部121は、仮想カメラ300を仮想空間200内で移動させてもよい。
次に、ステップS2において、制御部121は、仮想カメラ300の視野CV(図8参照)を特定する。具体的には、制御部121は、位置センサ130および/またはHMDセンサ114から送信されたHMD110の状態を示すデータに基づいて、HMD110の位置や傾きに関する情報を取得する。次に、制御部121は、HMD110の位置や傾きに関する情報に基づいて、仮想空間200内における仮想カメラ300の位置や向きを特定する。次に、制御部121は、仮想カメラ300の位置や向きから仮想カメラ300の視軸Lを決定し、決定された視軸Lから仮想カメラ300の視野CVを特定する。仮想カメラ300の視野CVは、HMD110を装着したユーザUが視認可能な仮想空間200の一部の領域に相当する(換言すれば、HMD110に表示される仮想空間200の一部の領域に相当する)。視野CVは、図8の状態(a)に示すxy平面において、視軸Lを中心とした極角αの角度範囲として設定される第一領域CVaと、図8の状態(b)に示すxz平面において、視軸Lを中心とした方位角βの角度範囲として設定される第二領域CVbとを有する。制御部121は、注視センサ140から送信されたユーザUの視線を示すデータに基づいてユーザUの視線を特定し、特定されたユーザUの視線とHMD110の位置や傾きに関する情報に基づいて、仮想カメラ300の向き(仮想カメラの視軸L)を決定してもよい。
このように、制御部121は、位置センサ130および/またはHMDセンサ114からのデータに基づいて、仮想カメラ300の視野CVを特定することができる。HMD110を装着したユーザUが動くと、制御部121は、位置センサ130および/またはHMDセンサ114から送信されたHMD110の動きを示すデータに基づいて、仮想カメラ300の視野CVを更新することができる。つまり、制御部121は、HMD110の動きに応じて、視野CVを更新することができる。同様に、ユーザUの視線が変化すると、制御部121は、注視センサ140から送信されたユーザUの視線を示すデータに基づいて、仮想カメラ300の視野CVを更新してもよい。つまり、制御部121は、ユーザUの視線の変化に応じて、視野CVを変化させてもよい。
次に、ステップS3において、制御部121は、HMD110の表示部112に表示される視野画像Vを示す視野画像データを生成する。具体的には、制御部121は、仮想空間200を規定する仮想空間データと、仮想カメラ300の視野CVとに基づいて、視野画像データを生成する。
次に、ステップS4において、制御部121は、視野画像データに基づいて、HMD110の表示部112に視野画像Vを表示する(図8参照)。このように、HMD110を装着しているユーザUの動きに応じて、仮想カメラ300の視野CVが変化し、HMD110の表示部112に表示される視野画像Vが変化するので、ユーザUは仮想空間200に没入することができる。
仮想カメラ300は、左目用仮想カメラと右目用仮想カメラを含んでもよい。この場合、制御部121は、仮想空間データと左目用仮想カメラの視野に基づいて、左目用の視野画像を示す左目用視野画像データを生成する。さらに、制御部121は、仮想空間データと、右目用仮想カメラの視野に基づいて、右目用の視野画像を示す右目用視野画像データを生成する。その後、制御部121は、左目用視野画像データに基づいて、左目用表示部に左目用の視野画像を表示すると共に、右目用視野画像データに基づいて、右目用表示部に右目用の視野画像を表示する。このようにして、ユーザUは、左目用視野画像と右目用視野画像との間の視差により、視野画像を3次元的に視認することができる。
図6に示すステップS1〜S4の処理は1フレーム毎に実行されてもよい。例えば、動画のフレームレートが90fpsである場合、ステップS1〜S4の処理はΔT=1/90(秒)間隔で繰り返し実行されてもよい。このように、ステップS1〜S4の処理が所定間隔ごとに繰り返し実行されるため、HMD110の動作に応じて仮想カメラ300の視野が更新されると共に、HMD110の表示部112に表示される視野画像Vが更新される。
次に、図1に示すサーバ2のハードウェア構成について図10を参照して説明する。図10は、サーバ2のハードウェア構成を示す図である。図10に示すように、サーバ2は、制御部23と、記憶部22と、通信インターフェース21と、バス24とを備える。制御部23と、記憶部22と、通信インターフェース21は、バス24を介して互いに通信可能に接続されている。制御部23は、メモリとプロセッサを備えており、メモリは、例えば、ROMおよびRAM等から構成されると共に、プロセッサは、例えば、CPU、MPUおよび/またはGPUにより構成される。
記憶部(ストレージ)22は、例えば、大容量のHDD等である。記憶部22は、本実施形態に係る情報処理方法の少なくとも一部をコンピュータに実行させるための制御プログラムや、複数のユーザによる仮想空間の共有を実現させるための制御プログラムを格納してもよい。また、記憶部22は、各ユーザを管理するためのユーザ管理情報や各種画像やオブジェクト(例えば、手オブジェクト等)に関するデータを格納してもよい。通信インターフェース21は、サーバ2を通信ネットワーク3に接続させるように構成されている。
以下、本実施形態に係る仮想空間配信システム100の処理の流れを図11〜17を参照して詳細に説明する。図11の状態(a)は、HMD110と外部コントローラ320R,320Lを装着したユーザUが存在する現実空間を示す図である。図11の状態(b)は、仮想カメラ300と、各種の仮想オブジェクトとを含む仮想空間200を示す図である。図12は、本実施形態に係る情報処理方法を説明するためのフローチャートである。図13は、図11の状態(b)での視野画像V1を示す図である。
本実施形態において、仮想空間200は、仮想空間配信システム100により提供されるゲーム空間として構成されている。図11の状態(b)に示すように、仮想空間200は、仮想カメラ300と、コリジョンオブジェクト350(第一オブジェクトの一例)と、左手オブジェクト400Lと、右手オブジェクト400Rと、敵オブジェクト500(第二オブジェクトの一例)とを含む。制御部121は、これらのオブジェクトを含む仮想空間200を規定する仮想空間データを生成する。また、制御部121は、1フレーム毎に仮想空間データを更新してもよい。上記したように、仮想カメラ300は、図11の状態(a)に示すユーザUが装着しているHMD110の動きに連動する。つまり、仮想カメラ300の視野は、HMD110の動きに応じて更新される。仮想カメラ300は、ユーザUの一人称視点に関連付けられた視点を有する。
コリジョンオブジェクト350は、HMD110を装着したユーザUに関連付けられたオブジェクトである。コリジョンオブジェクト350は、ユーザUと、仮想空間200内の他のオブジェクト(例えば、敵オブジェクト500)とのコリジョン判定(当たり判定)に供される。例えば、コリジョンオブジェクト350と敵オブジェクト500とが接触することで、ユーザUと敵オブジェクト500とが接触したことが判定される。コリジョンオブジェクト350は、例えば、仮想カメラ300の中心位置を中心とした直径Rを有する球状により規定されてもよい。以下の説明では、コリジョンオブジェクト350は、仮想カメラ300の中心位置を中心とした直径Rの球状に形成されているものとする。なお、コリジョンオブジェクト350は、透明体として構成されており、視野画像V(V1〜V4)内に表示されるものではない。
左手オブジェクト400Lは、ユーザUの左手に装着される外部コントローラ320Lの動きに連動する。同様に、右手オブジェクト400Rは、ユーザUの右手に装着される外部コントローラ320Rの動きに連動する。これらの手オブジェクト400L,400Rは、所定の装備(例えば、図13に示す武器オブジェクト450)を備えていてもよい。なお、図13に示す例では、手オブジェクト400は、武器オブジェクト450として銃を備えているが、手オブジェクト400の操作によって、手オブジェクト400が装備する武器オブジェクト450の種類を変えることもできる。例えば、ユーザUは、コントローラ320を持ちながら、装備したい武器オブジェクト450に応じて定められている所定の動作を行うことで、銃に代えて、剣や弓矢などを手オブジェクト400に装備させることができる。
敵オブジェクト500は、ユーザUに対して所定の影響を与えるオブジェクトであり、例えば、武器オブジェクト600(動作部分の一例)を備えている。制御部121は、敵オブジェクト500が武器オブジェクト600を用いてユーザUに対して攻撃を行う、すなわち、武器オブジェクト600によりコリジョンオブジェクト350に対して所定の動作を実行するように、敵オブジェクト500を制御する。敵オブジェクト500および武器オブジェクト600はコリジョンエリアをそれぞれ有している。本実施形態では、敵オブジェクト500および武器オブジェクト600のコリジョンエリアは、敵オブジェクト500および武器オブジェクト600を構成する領域(敵オブジェクト500および武器オブジェクト600の外形領域)にそれぞれ一致しているものとする。なお、図11や図13に示す例では、敵オブジェクト500は、武器オブジェクト600として剣(刀)を備えているが、武器オブジェクト600は敵オブジェクト500の種類や属性によって異なっており、例えば弓矢や銃などを装備している場合もある。
敵オブジェクト500が備える武器オブジェクト600がコリジョンオブジェクト350に接触することで、ユーザUに所定の影響(コリジョン効果)が与えられる。具体的には、敵オブジェクト500の攻撃により武器オブジェクト600がコリジョンオブジェクト350に衝突することで、例えば、ユーザUは所定量のダメージを受け、ユーザUに関連付けられた所定のパラメータ、例えば、ユーザUのヒットポイント(以下、HPと称す)が減少する。
なお、ユーザUは、手オブジェクト400を操作することにより、敵オブジェクト500に所定の影響を与えることができる。例えば、ユーザUの所定の動作により手オブジェクト400が備える武器オブジェクト450を用いて、敵オブジェクト500を攻撃し、敵オブジェクト500にダメージを与えることができる。
以下、本実施形態に係る仮想空間配信システム100で提供されるゲームの進行処理の流れを、図12〜図17を参照して詳細に説明する。なお、本実施形態に係るゲームは、HMD110を装着したユーザUが仮想空間200内に配置された敵オブジェクト500と対戦する対戦ゲームである。上述の通り、ユーザUは、手オブジェクト400、あるいは手オブジェクト400が備える武器オブジェクト450を用いて、敵オブジェクト500を攻撃することもできるが、本実施形態では、敵オブジェクト500からユーザUが攻撃を受けた場合の処理を中心に説明する。
本対戦ゲームが開始されると、図12に示すステップS10において、制御部121(図3参照)は、仮想空間200を規定する仮想空間データと仮想カメラ300の視野CVとに基づいて視野画像データを生成し、視野画像データに基づいてHMD110の表示部112に視野画像を表示する。ステップS10は、図6に示すステップS1と同じである。例えば、仮想カメラ300が敵オブジェクト500の方向を向いている場合には、図13に示すように、視野画像V1内には敵オブジェクト500が表示される。
次に、ステップS12において、制御部121は、敵オブジェクト500からの攻撃がユーザUにヒットしたか、すなわち、敵オブジェクト500が備える武器オブジェクト600が仮想カメラ300の周囲に規定されたコリジョンエリアCAに衝突したか否かを判定する。図14に示すように仮想空間200内で武器オブジェクト600がコリジョンエリアCAと接触したと判定された場合には(ステップS12のYes)、ステップS14において、制御部121は、視野画像V1を暗転させる。ステップS14における処理は、視野画像の表示態様を異ならせる処理、例えば、ユーザUに与える視覚的効果を低減させる処理であればよく、視野画像V1を暗転させる代わりに、例えば、視野画像V1にぼかし処理を施してもよい。
次に、ステップS16において、制御部121は、図15に示す視野画像V2を表示部112に表示させる。図15に示す視野画像V2においては、その中央部に、敵オブジェクト500からの攻撃がユーザUにヒットしたことを示すための攻撃表示700が表示されるとともに、ユーザUのHPに関するHP表示720(第一表示の一例)が表示される。これにより、敵オブジェクト500から攻撃を受けたことや、受けた攻撃によって自らのHPがどの程度減少したかをユーザUが直感的に把握することができるとともに、このHP表示720や攻撃表示700により視界が狭くされる。
ところで、武器オブジェクト600がコリジョンエリアCAに衝突してコリジョンエリアCAをすり抜けるような場合に、視野画像V2に武器オブジェクト600を表示させたままにしておくと、レンダリングされることが想定されていない武器オブジェクト600の内部がユーザUの視界に現れることとなり、不自然な視野画像となってしまう可能性がある。そのため、ステップS14において、制御部121は、武器オブジェクト600がコリジョンエリアCAに衝突してコリジョンエリアCAをすり抜ける間は、視野画像V2において、武器オブジェクト600を視野画像V2上で非表示とすることが好ましい。ここで、「武器オブジェクト600を視野画像V2上で非表示とする」方法としては、制御部121は、仮想空間200内に配置される武器オブジェクト600自体を非表示とするようにオブジェクト制御する処理を採用してもよく、HMD110の表示部112に視野画像V2をレンダリングする際に武器オブジェクト600はレンダリングしないようにする画像処理を採用してもよい。
また、図15に示すように、制御部121は、ステップS16で、視界の残余部分R1のうち、視野画像V2の周縁部の領域(以下、着色領域R2と称す)を仮想空間200の画像とは異なる色(例えば、赤色)で着色するような画像処理を施す。これにより、敵オブジェクト500から攻撃を受けた際の視界をさらに狭くすることができる。
次に、ステップS18において、制御部121は、図15に示す視野画像V2の表示開始から一定の時間が経過したか否かを判定する。一定の時間(例えば、2〜3秒間)が経過したと判定された場合には(ステップS18のYes)、ステップS20において、制御部121は、図16に示す視野画像V3を表示部112に表示する。ステップS20では、仮想カメラ300の向きに応じて敵オブジェクト500を再び表示させるとともに、視野画像V3のうち武器オブジェクト600を除く部分をグレースケールで表示させることで、視界が狭く(視覚的効果が低減)されている。なお、グレースケールではなく、視野画像V3のうち武器オブジェクト600を除く部分についてぼかし処理を施してもよい。このように、制御部121は、ステップS16における状態(第一状態)の視野画像V2を表示した後に、ステップS20において第一状態から継続してユーザUの視界を狭くするための状態(第二状態)の視野画像V3を表示部112に表示させる。これにより、ユーザUは、自己のHPが減少してきたことを容易に認識することができる。
なお、敵オブジェクト500から攻撃を受けた後で、攻撃表示700やHP表示720を含む視野画像V2の表示を継続させると、敵オブジェクト500からの再度の攻撃をユーザUが視認することができず、ゲーム性が損なわれる恐れがある。そこで、本実施形態では、視野画像V2(第一状態の視野画像)を一定時間表示させたのちに、視野画像V2の表示態様と異なる視野画像V3(第二状態の視野画像)を表示部112に表示させている。すなわち、第二状態である視野画像V3においては、攻撃表示700やHP表示720を非表示とするとともに、視野画像V3を例えばグレースケールで表示することで、ゲーム性を損なうことがない。
なお、視野画像V3において、武器オブジェクト600のみは視野画像V1と同様に、グレースケールやぼかし処理されていない表示態様、すなわち、カラー表示のままとしておくことが好ましい。すなわち、武器オブジェクト600のみカラー表示とすることで、視野画像V3内における武器オブジェクト600の視認性が武器オブジェクト600以外の部分の視認性よりも高くされていることが好ましい。これにより、ユーザUのHPが減少し、視界が狭くされた場合でも、攻撃部位である武器オブジェクト600の視認性が維持されるため、ゲーム性を向上させることができる。
次に、ステップS22において、制御部121は、ユーザUのHPが所定の閾値以下となったか否かを判定する。ユーザUのHPが所定の閾値以下となったと判定された場合には(ステップS22のYes)、ステップS24において、制御部121は、図17に示す視野画像V4(第三状態の視野画像)を表示部112に表示する。このステップS24では、視野画像V3をグレースケールで表示することに加えて、視野画像V4の周縁部である着色領域R2が、視野画像V4の中央部とは異なる色、例えば、中央部のグレー色よりも濃い色(濃灰色、黒色など)で着色される。これにより、視野画像V4では、ユーザUの視界がさらに狭くされている。このように、ユーザUのHPが所定の閾値を下回った場合には、視野画像V2(第一状態)や視野画像V3(第二状態)の表示態様とは異なる表示態様によりユーザUの視界が狭くされることで、ユーザUはHPの減少を段階的に認識することができる。なお、ユーザUのHPの減少に伴い、例えば着色領域R2の内辺が視野画像V4の中央側に徐々に寄ってくる(敵オブジェクト500を視認可能な範囲が徐々に小さくなる)ようにして、視界を段階的に狭めてもよい。
次に、ステップS26において、制御部121は、ユーザUのHPがゼロになったか否かを判定する。ユーザUのHPがゼロになったと判定された場合には(ステップS26のYes)、ステップS28において、制御部121は、対戦ゲームを終了させ、対戦が終了した(ユーザUが負けた)ことをユーザUに通知(例えば、表示部112に表示)して、一連の処理を終了する。なお、ユーザUのHPがゼロになる前に、敵オブジェクト500が保有するHPがゼロになった場合には、制御部121は、対戦ゲームを終了させ、ユーザUが勝ったことを表示部112に表示させることができる。
以上説明したように、制御部121は、敵オブジェクト500が備える武器オブジェクト600により仮想カメラ300のコリジョンエリアCAに対して例えば攻撃が実行された場合に、視界を狭くするためにHP表示720や攻撃表示700を視野画像V2内に表示するとともに、狭くされた視界の残余部分R1(着色領域R2を含む)について視野画像V2の表示態様を異ならせる処理、例えば、ユーザUに与える視覚的効果を低減させる処理(例えば、暗転処理や、着色/ぼかし処理)を施す。このように、ユーザUが敵オブジェクト500から攻撃された場合に、HP表示720等により視界を狭くするとともに狭くなった視界の残余部分R1の表示態様を異ならせて視覚的効果を低減させることで、ユーザUは攻撃を受けたことを直感的かつ違和感なく認識することができる。すなわち、この方法によれば、仮想空間200において必要な情報をユーザUに違和感なく提供することができる。
なお、上記の実施形態では、仮想空間200内に配置される敵オブジェクト500は、武器オブジェクト600を用いて、ユーザUを攻撃するものとしているが、この例に限られない。例えば、敵オブジェクト500は、武器オブジェクト600を用いず、素手あるいは足など敵オブジェクト500の身体の一部でユーザUを攻撃するものであってもよい。この場合には、ユーザUを攻撃するための攻撃部位(敵オブジェクト500の手や足)が敵オブジェクト500の動作部分となる。
また、上記の実施形態では、ステップS14にて視野画像V1を暗転させたのちに、ステップS16で視野画像V2にHP表示720や着色領域R2を表示することで視界を狭くしているが、この例に限られない。例えば、武器オブジェクト600がコリジョンオブジェクト350に衝突した場合に、視野画像V1を暗転させる代わりに、視野画像V2のHP表示720や着色領域R2ではない部分(残余部分R1)の視覚的効果を低減させてから、HP表示720や着色領域R2を表示するようにしてもよい。すなわち、視野画像全体の表示態様を変化させて視覚的効果が低減された後に視界を狭くするようにしてもよく、視界を狭くした後に、この狭くされた視界部分について表示態様を変化させて視覚的効果を低減させるようにしてもよい。さらに、武器オブジェクト600がコリジョンオブジェクト350に衝突した場合に、視野を振動させるような処理を施してもよい。
また、ステップS16やステップS24で表示される着色領域R2は、視野画像の隅部すべてに設けられる必要はなく、視野画像の隅部の少なくとも一部(例えば、視野画像V2,V4の左端部分)のみに設けられていてもよい。また、ステップS16においては、例えば、HP表示720のみを表示してもよい(すなわち、攻撃表示700や着色領域R2は表示してもしなくてもよい)。
なお、上記の実施形態では、一人称視点のゲームを例として、仮想カメラ300を基準としてコリジョンオブジェクト350が規定されているがこの例に限られない。例えば、三人称視点のゲームである場合には、ユーザUに関連付けられたアバターオブジェクトが、仮想空間200内において仮想カメラ300から視認できる位置に配置してもよい。この場合、コリジョンオブジェクトは、アバターオブジェクトの外径領域と一致しているものとしても良く、アバターオブジェクトの周囲を取り囲む一定の範囲として規定してもよい。アバターオブジェクトに関連付けられたコリジョンオブジェクトに、敵オブジェクト500の攻撃により武器オブジェクト600が衝突した場合には、制御部121は、図12のステップS12以降の処理を進行させる。
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲およびその均等の範囲に基づいて定められるべきである。
本実施形態の説明では、仮想空間200を示す仮想空間データがユーザ端末1側で更新されていることを前提としているが、仮想空間データはサーバ2側で更新されてもよい。さらに、視野画像に対応する視野画像データがユーザ端末1側で更新されていることを前提としているが、視野画像データはサーバ2側で更新されてもよい。この場合、ユーザ端末1は、サーバ2から送信された視野画像データに基づいて、HMD110に視野画像を表示する。
また、ユーザ端末1の制御部121によって実行される各種処理をソフトウェアによって実現するために、各種処理をコンピュータ(プロセッサ)に実行させるための制御プログラムが記憶部123またはメモリに予め組み込まれていてもよい。または、制御プログラムは、磁気ディスク(HDD、フロッピーディスク)、光ディスク(CD−ROM,DVD−ROM、Blu−rayディスク等)、光磁気ディスク(MO等)、フラッシュメモリ(SDカード、USBメモリ、SSD等)等のコンピュータ読取可能な記憶媒体に格納されていてもよい。この場合、記憶媒体が制御装置120に接続されることで、当該記憶媒体に格納された制御プログラムが、記憶部123に組み込まれる。そして、記憶部123に組み込まれた制御プログラムがRAM上にロードされて、プロセッサがロードされた当該プログラムを実行することで、制御部121は各種処理を実行する。
また、制御プログラムは、通信ネットワーク3上のコンピュータから通信インターフェース125を介してダウンロードされてもよい。この場合も同様に、ダウンロードされた当該制御プログラムが記憶部123に組み込まれる。
本実施形態において、仮想空間は、ユーザにVR(Virtual Reality)、AR(Argumented Reality)およびMR(Mixed Reality)といった、仮想体験を提供するために用いられる。仮想空間がVRを提供する場合、仮想空間の背景にはメモリに保存された背景データが使用される。仮想空間がARまたはMRを提供する場合、背景には現実空間が使用される。この場合、HMD110が透過型の表示装置(光学シースルーまたはビデオシースルー型の表示装置)を備えることにより、現実空間が背景として使用され得る。仮想空間がMRに適用される場合、オブジェクトは、現実空間によって影響を与えられてもよい。このように、仮想空間が背景や仮想オブジェクトといった仮想シーンを少なくとも一部に含むことにより、ユーザには当該仮想シーンとの相互作用が可能な仮想体験が提供され得る。