[本開示が示す実施形態の説明]
本開示が示す実施形態の概要を説明する。
(1)ヘッドマウントデバイスと、前記ヘッドマウントデバイスの位置とユーザの頭部以外の身体の一部の位置を検出するように構成された位置センサとを備えたシステムにおけるコンピュータにより実行される情報処理方法であって、
(a)仮想カメラと、操作オブジェクトと、対象オブジェクトとを含む仮想空間を規定する仮想空間データを生成するステップと、
(b)前記ヘッドマウントデバイスの位置及び傾きに基づいて、前記仮想カメラの視野を特定するステップと、
(c)前記仮想カメラの視野と前記仮想空間データに基づいて、前記ヘッドマウントデバイスに視野画像を表示させるステップと、
(d)前記ユーザの身体の一部の位置に基づいて、前記操作オブジェクトの位置を特定するステップと、
を含み、
前記操作オブジェクトのコリジョンエリアが前記対象オブジェクトのコリジョンエリアに意図的に接触したかどうかを判定するための所定の条件が満たされないと判定された場合、前記操作オブジェクトは前記対象オブジェクトに所定の影響を与えない、情報処理方法。
上記方法によれば、操作オブジェクトのコリジョンエリアが対象オブジェクトのコリジョンエリアに意図的に接触したかどうかを判定するための所定の条件が満たされないと判定された場合、操作オブジェクトは対象オブジェクトに所定の影響を与えない。このように、操作オブジェクトが意図せずに対象オブジェクトに接触したと判定される場合には、操作オブジェクトと対象オブジェクトとの間のコリジョン効果は生じない。例えば、手オブジェクト(操作オブジェクトの一例)がボタンオブジェクト(対象オブジェクトの一例)に意図せずに接触した場合、ボタンオブジェクトが手オブジェクトによって意図せずに押されてしまうといった状況が回避される。従って、ユーザの仮想体験をさらに改善することが可能な情報処理方法を提供することができる。
(2)(e)前記ヘッドマウントデバイスの絶対速度を特定するステップをさらに含み、
前記所定の条件は、前記ヘッドマウントデバイスの絶対速度が所定の値以下であることである、項目(1)に記載の情報処理方法。
上記方法によれば、ヘッドマウントデバイス(HMD)の絶対速度が所定の値以下ではない(つまり、HMDの絶対速度が所定の値より大きい)と判定された場合に、操作オブジェクトは対象オブジェクトに所定の影響を与えない。このように、HMDの絶対速度が所定の値よりも大きい状態で操作オブジェクトが対象オブジェクトに接触した場合には、操作オブジェクトは意図せずに対象オブジェクトに接触したと判定され、操作オブジェクトと対象オブジェクトとの間のコリジョン効果は生じない。
(3)前記所定の条件は、第1条件と第2条件とを含み、
前記第1条件は、前記ヘッドマウントデバイスに関連した条件であり、
前記第2条件は、前記第1条件とは異なる条件であり、
前記第1条件及び前記第2条件が満たされないと判定された場合、前記操作オブジェクトは前記対象オブジェクトに前記所定の影響を与えない、項目(1)又は(2)に記載の情報処理方法。
上記方法によれば、操作オブジェクトのコリジョンエリアが対象オブジェクトのコリジョンエリアに意図的に接触したかどうかを判定するための第1条件及び第2条件が満たされないと判定された場合、操作オブジェクトは対象オブジェクトに所定の影響を与えない。このように、互いに異なる2つの判定条件を用いることで操作オブジェクトが意図せずに対象オブジェクトに接触したかどうかをより確実に判定することができる。
(4)(e)前記ヘッドマウントデバイスの絶対速度を特定するステップをさらに含み、
前記第1条件は、前記ヘッドマウントデバイスの絶対速度が所定の値以下であることであって、
前記第2条件は、前記操作オブジェクトが前記仮想カメラの視野内に存在することである、項目(3)に記載の情報処理方法。
上記方法によれば、ヘッドマウントデバイス(HMD)の絶対速度が所定の値以下ではない(つまり、HMDの絶対速度が所定の値より大きい)と判定されると共に、操作オブジェクトが仮想カメラの視野内に存在しないと判定された場合に、操作オブジェクトは対象オブジェクトに所定の影響を与えない。このように、HMDの絶対速度が所定の値よりも大きく、且つ操作オブジェクトが仮想カメラの視野内に存在しない状態で操作オブジェクトが対象オブジェクトに接触した場合には、操作オブジェクトは意図せずに対象オブジェクトに接触したと判定され、操作オブジェクトと対象オブジェクトとの間のコリジョン効果は生じない。
(5)(e)前記ヘッドマウントデバイスの絶対速度を特定するステップをさらに含み、
前記第1条件は、前記ヘッドマウントデバイスの絶対速度が所定の値以下であることであって、
前記第2条件は、前記操作オブジェクトと前記対象オブジェクトのうちの少なくとも一つが前記仮想カメラの視野内に存在することである、項目(3)に記載の情報処理方法。
上記方法によれば、ヘッドマウントデバイス(HMD)の絶対速度が所定の値以下ではない(つまり、HMDの絶対速度が所定の値より大きい)と判定されると共に、操作オブジェクトと対象オブジェクトの両方が仮想カメラの視野内に存在しないと判定された場合に、操作オブジェクトは対象オブジェクトに所定の影響を与えない。このように、HMDの絶対速度が所定の値よりも大きく、且つ操作オブジェクトと対象オブジェクトの両方が仮想カメラの視野内に存在しない状態で操作オブジェクトが対象オブジェクトに接触した場合には、操作オブジェクトは意図せずに対象オブジェクトに接触したと判定され、操作オブジェクトと対象オブジェクトとの間のコリジョン効果は生じない。
(6)(e)前記ヘッドマウントデバイスの絶対速度を特定するステップと、
(f)前記ヘッドマウントデバイスに対する前記ユーザの前記身体の一部の相対速度を特定するステップと、
をさらに含み、
前記第1条件は、前記ヘッドマウントデバイスの絶対速度が所定の値以下であることであって、
前記第2条件は、前記相対速度が所定の値よりも大きいことである、項目(3)に記載の情報処理方法。
上記方法によれば、ヘッドマウントデバイス(HMD)の絶対速度が所定の値以下ではない(つまり、HMDの絶対速度が所定の値より大きい)と判定されると共に、HMDに対するユーザの身体の一部の相対速度が所定の値よりも大きくない(つまり、HMDに対するユーザの身体の一部の相対速度が所定の値以下である)と判定された場合に、操作オブジェクトは対象オブジェクトに所定の影響を与えない。このように、HMDの絶対速度が所定の値よりも大きく、且つユーザの身体の一部の相対速度が所定の値以下である状態で操作オブジェクトが対象オブジェクトに接触した場合には、操作オブジェクトは意図せずに対象オブジェクトに接触したと判定され、操作オブジェクトと対象オブジェクトとの間のコリジョン効果は生じない。
(7)項目(1)から(6)のうちいずれか一項に記載の情報処理方法をコンピュータに実行させるためのプログラム。
上記プログラムによれば、ユーザの仮想体験をさらに改善させることができる。
[本開示が示す実施形態の詳細]
以下、本開示が示す実施形態について図面を参照しながら説明する。尚、本実施形態の説明において既に説明された部材と同一の参照番号を有する部材については、説明の便宜上、その説明は繰り返さない。
最初に、図1を参照してヘッドマウントデバイス(HMD)システム1の構成について説明する。図1は、HMDシステム1を示す概略図である。図1に示すように、HMDシステム1は、ユーザUの頭部に装着されたHMD110と、位置センサ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の左目に例えば赤外光を照射して、左目(特に、角膜や虹彩)から反射された反射光を検出することで、左目の眼球の回転角に関する情報を取得してもよい。
位置センサ130は、例えば、ポジション・トラッキング・カメラにより構成され、HMD110と外部コントローラ320の位置を検出するように構成されている。位置センサ130は、制御装置120に無線又は有線により通信可能に接続されており、HMD110に設けられた図示しない複数の検知点の位置、傾き又は発光強度に関する情報を検出するように構成されている。さらに、位置センサ130は、外部コントローラ320に設けられた図示しない複数の検知点304(図4参照)の位置、傾き及び/又は発光強度に関する情報を検出するように構成されている。検知点は、例えば、赤外線や可視光を放射する発光部である。また、位置センサ130は、赤外線センサや複数の光学カメラを含んでもよい。
外部コントローラ320は、ユーザUの身体の一部(頭部以外の部位であり、本実施形態においてはユーザUの手)の動きを検知することにより、仮想空間内に表示される手オブジェクトの動作を制御するために使用される。外部コントローラ320は、ユーザUの右手によって操作される右手用外部コントローラ320R(以下、単にコントローラ320Rという。)と、ユーザUの左手によって操作される左手用外部コントローラ320L(以下、単にコントローラ320Lという。)と、を有する。コントローラ320Rは、ユーザUの右手の位置や右手の手指の動きを示す装置である。また、コントローラ320Rの動きに応じて仮想空間内に存在する右手オブジェクト400R(図9参照)が移動する。コントローラ320Lは、ユーザUの左手の位置や左手の手指の動きを示す装置である。また、コントローラ320Lの動きに応じて仮想空間内に存在する左手オブジェクト400L(図9参照)が移動する。
制御装置120は、HMD110を制御するように構成されたコンピュータである。制御装置120は、位置センサ130から取得された情報に基づいて、HMD110の位置情報を特定し、当該特定された位置情報に基づいて、仮想空間における仮想カメラの位置と、現実空間におけるHMD110を装着したユーザUの位置を正確に対応付けることができる。さらに、制御装置120は、位置センサ130から取得された情報に基づいて、外部コントローラ320の動作を特定し、当該特定された外部コントローラ320の動作に基づいて、仮想空間内に表示される手オブジェクトの動作と現実空間における外部コントローラ320の動作を正確に対応付けることができる。特に、制御装置120は、位置センサ130から取得された情報に基づいて、コントローラ320L(コントローラ320R)の動作を特定し、当該特定されたコントローラ320L(コントローラ320R)の動作に基づいて、仮想空間内に表示される左手オブジェクト400L(右手オブジェクト400R)の動作と現実空間におけるコントローラ320L(コントローラ320R)の動作を正確に対応付けることができる。
また、制御装置120は、注視センサ140(左目用注視センサと右目用注視センサ)から送信された情報に基づいて、ユーザUの右目の視線と左目の視線をそれぞれ特定し、当該右目の視線と当該左目の視線の交点である注視点を特定することができる。さらに、制御装置120は、特定された注視点に基づいて、ユーザUの両目の視線(ユーザUの視線)を特定することができる。ここで、ユーザUの視線は、ユーザUの両目の視線であって、ユーザUの右目と左目を結ぶ線分の中点と注視点を通る直線の方向に一致する。
次に、図2を参照して、HMD110の位置や傾きに関する情報を取得する方法について説明する。図2は、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軸回りの角度変化に基づいて、仮想カメラの視軸を制御するための角度情報を決定する。
次に、図3を参照することで、制御装置120のハードウェア構成について説明する。図3は、制御装置120のハードウェア構成を示す図である。図3に示すように、制御装置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は、メモリや記憶部123に格納された所定のアプリケーションプログラム(ゲームプログラム)を実行することで、HMD110の表示部112に仮想空間(視野画像)を表示する。これにより、ユーザUは、表示部112に表示された仮想空間に没入することができる。
記憶部(ストレージ)123は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、USBフラッシュメモリ等の記憶装置であって、プログラムや各種データを格納するように構成されている。記憶部123は、本実施形態に係る情報処理方法をコンピュータに実行させるプログラムを格納してもよい。また、ユーザUの認証プログラムや各種画像やオブジェクトに関するデータを含むゲームプログラム等が格納されてもよい。さらに、記憶部123には、各種データを管理するためのテーブルを含むデータベースが構築されてもよい。
I/Oインターフェース124は、位置センサ130と、HMD110と、外部コントローラ320とをそれぞれ制御装置120に通信可能に接続するように構成されており、例えば、USB(Universal Serial Bus)端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High―Definition Multimedia Interface)端子等により構成されている。尚、制御装置120は、位置センサ130と、HMD110と、外部コントローラ320とのそれぞれと無線接続されていてもよい。
通信インターフェース125は、制御装置120をLAN(Local Area Network)、WAN(Wide Area Network)又はインターネット等の通信ネットワーク3に接続させるように構成されている。通信インターフェース125は、通信ネットワーク3を介してネットワーク上の外部装置と通信するための各種有線接続端子や、無線接続のための各種処理回路を含んでおり、通信ネットワーク3を介して通信するための通信規格に適合するように構成されている。
次に、図4を参照して外部コントローラ320の具体的構成の一例について説明する。コントローラ320Rとコントローラ320Lは略同一の構成を有するので、以下では、図4を参照してコントローラ320Rの具体的構成についてのみ説明する。尚、以降の説明では、便宜上、コントローラ320L,320Rを単に外部コントローラ320と総称する場合がある。
図4に示すように、コントローラ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に送信してもよい。
次に、図5から図8を参照することで視野画像をHMD110に表示するための処理について説明する。図5は、視野画像をHMD110に表示する処理を示すフローチャートである。図6は、仮想空間200の一例を示すxyz空間図である。図7の状態(a)は、図6に示す仮想空間200のyx平面図である。図7の状態(b)は、図6に示す仮想空間200のzx平面図である。図8は、HMD110に表示された視野画像Mの一例を示す図である。
図5に示すように、ステップS1において、制御部121(図3参照)は、仮想カメラ300と、各種オブジェクトとを含む仮想空間200を示す仮想空間データを生成する。図6に示すように、仮想空間200は、中心位置21を中心とした全天球として規定される(図6では、上半分の天球のみが図示されている)。また、仮想空間200では、中心位置21を原点とするxyz座標系が設定されている。仮想カメラ300は、HMD110に表示される視野画像V(図8参照)を特定するための視軸Lを規定している。仮想カメラ300の視野を定義するuvw座標系は、現実空間におけるユーザUの頭部を中心として規定されたuvw座標系に連動するように決定される。また、制御部121は、HMD110を装着したユーザUの現実空間における移動に応じて、仮想カメラ300を仮想空間200内で移動させてもよい。また、仮想空間200は、例えば、左手オブジェクト400Lと、右手オブジェクト400Rと、ブロックオブジェクト500と、ボタンオブジェクト600を含む(図9参照)。
次に、ステップS2において、制御部121は、仮想カメラ300の視野CV(図7参照)を特定する。具体的には、制御部121は、位置センサ130及び/又はHMDセンサ114から送信されたHMD110の状態を示すデータを取得した上で、当該取得されたデータに基づいて、HMD110の位置や傾きに関する情報を取得する。次に、制御部121は、HMD110の位置や傾きに関する情報に基づいて、仮想空間200内における仮想カメラ300の位置や向きを特定する。次に、制御部121は、仮想カメラ300の位置や向きから仮想カメラ300の視軸Lを決定し、決定された視軸Lから仮想カメラ300の視野CVを特定する。ここで、仮想カメラ300の視野CVは、HMD110を装着したユーザUが視認可能な仮想空間200の一部の領域に相当する。換言すれば、視野CVは、HMD110に表示される仮想空間200の一部の領域に相当する。また、視野CVは、図7の状態(a)に示すxy平面において、視軸Lを中心とした極角αの角度範囲として設定される第1領域CVaと、図7の状態(b)に示すxz平面において、視軸Lを中心とした方位角βの角度範囲として設定される第2領域CVbとを有する。尚、制御部121は、注視センサ140から送信されたユーザUの視線方向を示すデータに基づいて、ユーザUの視線方向を特定し、ユーザUの視線方向に基づいて仮想カメラ300の向きを決定してもよい。
このように、制御部121は、位置センサ130及び/又はHMDセンサ114からのデータに基づいて、仮想カメラ300の視野CVを特定することができる。ここで、HMD110を装着したユーザUが動くと、制御部121は、位置センサ130及び/又はHMDセンサ114から送信されたHMD110の動きを示すデータに基づいて、仮想カメラ300の視野CVを変化させることができる。つまり、制御部121は、HMD110の動きに応じて、視野CVを変化させることができる。同様に、ユーザUの視線方向が変化すると、制御部121は、注視センサ140から送信されたユーザUの視線方向を示すデータに基づいて、仮想カメラ300の視野CVを移動させることができる。つまり、制御部121は、ユーザUの視線方向の変化に応じて、視野CVを変化させることができる。
次に、ステップS3において、制御部121は、HMD110の表示部112に表示される視野画像Vを示す視野画像データを生成する。具体的には、制御部121は、仮想空間200を規定する仮想空間データと、仮想カメラ300の視野CVとに基づいて、視野画像データを生成する。
次に、ステップS4において、制御部121は、視野画像データに基づいて、HMD110の表示部112に視野画像Vを表示する(図7参照)。このように、HMD110を装着しているユーザUの動きに応じて、仮想カメラ300の視野CVが更新され、HMD110の表示部112に表示される視野画像Vが更新されるので、ユーザUは仮想空間200に没入することができる。
尚、仮想カメラ300は、左目用仮想カメラと右目用仮想カメラを含んでもよい。この場合、制御部121は、仮想空間データと左目用仮想カメラの視野に基づいて、左目用の視野画像を示す左目用視野画像データを生成する。さらに、制御部121は、仮想空間データと、右目用仮想カメラの視野に基づいて、右目用の視野画像を示す右目用視野画像データを生成する。その後、制御部121は、左目用視野画像データに基づいて、左目用表示部に左目用の視野画像を表示すると共に、右目用視野画像データに基づいて、右目用表示部に右目用の視野画像を表示する。このようにして、ユーザUは、左目用視野画像と右目用視野画像との間の視差により、視野画像を3次元的に視認することができる。
また、図5に示すステップS1〜S4の処理は1フレーム(動画を構成する静止画像)毎に実行されてもよい。例えば、動画のフレームレートが90fpsである場合、ステップS1〜S4の処理はΔT=1/90(秒)間隔で繰り返し実行されてもよい。このように、ステップS1〜S4の処理が所定間隔ごとに繰り返し実行されるため、HMD110の動作に応じて仮想カメラ300の視野が更新されると共に、HMD110の表示部112に表示される視野画像Vが更新される。
次に、仮想空間200に含まれる左手オブジェクト400L(操作オブジェクトの一例)、右手オブジェクト400R(操作オブジェクトの一例)、ブロックオブジェクト500(仮想オブジェクト)及びボタンオブジェクト600(仮想オブジェクトである対象オブジェクトの一例)について図9を参照して説明する。図9の状態(a)は、HMD110とコントローラ320L,320Rを装着したユーザUを示す図である。図9の状態(b)は、仮想カメラ300と、左手オブジェクト400Lと、右手オブジェクト400Rと、ブロックオブジェクト500と、ボタンオブジェクト600とを含む仮想空間200を示す図である。
上記したように、仮想空間200は、仮想カメラ300と、左手オブジェクト400Lと、右手オブジェクト400Rと、ブロックオブジェクト500と、ボタンオブジェクト600とを含む。制御部121は、これらのオブジェクトを含む仮想空間200を規定する仮想空間データを生成する。また、制御部121は、1フレーム毎に仮想空間データを更新してもよい。上記したように、仮想カメラ300は、ユーザUが装着しているHMD110の動きに連動する。つまり、仮想カメラ300の視野は、HMD110の動きに応じて更新される。
左手オブジェクト400Lは、ユーザUの左手に装着されるコントローラ320Lの動きに連動する。同様に、右手オブジェクト400Rは、ユーザUの右手に装着されるコントローラ320Rの動きに連動する。尚、以降では、説明の便宜上、左手オブジェクト400Lと右手オブジェクト400Rを単に手オブジェクト400と総称する場合がある。
また、ユーザUが外部コントローラ320の操作ボタン302を操作することで、手オブジェクト400の各手指を操作することが可能となる。つまり、制御部121は、操作ボタン302に対する入力操作に対応する操作信号を外部コントローラ320から取得した上で、当該操作信号に基づいて、手オブジェクト400の手指の動作を制御する。例えば、ユーザUが操作ボタン302を操作することで手オブジェクト400はブロックオブジェクト500を掴むことができる。さらに、手オブジェクト400がブロックオブジェクト500を掴んだ状態で、コントローラ320の移動に応じて、手オブジェクト400とブロックブジェクト500を移動させることが可能となる。このように、制御部121は、ユーザUの手指の動きに応じて、手オブジェクト400の動作を制御するように構成されている。
また、左手オブジェクト400Lと右手オブジェクト400Rは、それぞれコリジョンエリアCAを有する。コリジョンエリアCAは、手オブジェクト400と仮想オブジェクト(例えば、ブロックオブジェクト500やボタンオブジェクト600)とのコリジョン判定(当たり判定)に供される。手オブジェクト400のコリジョンエリアCAとブロックオブジェクト500(ボタンオブジェクト600)のコリジョンエリアとが接触することで、ブロックオブジェクト500(ボタンオブジェクト600)に所定の影響(コリジョン効果)が与えられる。
例えば、手オブジェクト400のコリジョンエリアCAとブロックオブジェクト500のコリジョンエリアとが接触することで、ブロックオブジェクト500に所定のダメージを与えることができる。また、手オブジェクト400がブロックオブジェクト500を掴んだ状態で手オブジェクト400とブロックオブジェクト500を一体的に移動させることができる。
図9に示すように、コリジョンエリアCAは、例えば、手オブジェクト400の中心位置を中心とした直径Rを有する球により規定されてもよい。以下の説明では、手オブジェクト400のコリジョンエリアCAは、手オブジェクト400の中心位置を中心とした直径Rの球状に形成されているものとする。
ブロックオブジェクト500は、手オブジェクト400によって影響を受ける仮想オブジェクトである。ブロックオブジェクト500もコリジョンエリアを有しており、本実施形態では、ブロックオブジェクト500のコリジョンエリアは、ブロックオブジェクト500を構成する領域(ブロックオブジェクト500の外形領域)に一致しているものとする。
ボタンオブジェクト600は、手オブジェクト400によって影響を受ける仮想オブジェクトであって、操作部620を有する。ボタンオブジェクト600もコリジョンエリアを有しており、本実施形態では、ボタンオブジェクト600のコリジョンエリアは、ボタンオブジェクト600を構成する領域(ボタンオブジェクト600の外形領域)に一致しているものとする。特に、操作部620のコリジョンエリアは、操作部620の外形領域に一致しているものとする。
ボタンオブジェクト600の操作部620が手オブジェクト400によって押されたときに、仮想空間200内に配置された所定のオブジェクト(図示せず)に所定の影響が与えられる。具体的には、手オブジェクト400のコリジョンエリアCAと操作部620のコリジョンエリアとが接触することで、コリジョン効果として操作部620が手オブジェクト400によって押される。そして、操作部620が押されることで仮想空間200内に配置された所定のオブジェクトに所定の影響が与えられる。例えば、操作部620が手オブジェクト400によって押されることで仮想空間200内に存在するオブジェクト(キャラクターオブジェクト)が動き出してもよい。
(第1実施形態)
次に、第1実施形態に係る情報処理方法について図9から図11を参照して説明する。図10は、右手オブジェクト400RのコリジョンエリアCAがボタンオブジェクト600の操作部620に接触している様子を示す仮想空間200の平面図である。図11は、第1実施形態に係る情報処理方法を説明するためのフローチャートである。図11に示すフローチャートでは、右手オブジェクト400RのコリジョンエリアCAが操作部620のコリジョンエリアに意図的に接触したかどうかを判定する処理(ステップS13で規定される判定処理)が右手オブジェクト400Rと操作部620との当たり判定(ステップS14で規定される処理)の前に実行される。
また、本実施形態の説明では、説明の便宜上、右手オブジェクト400Rがボタンオブジェクト600の操作部620に所定の影響を与えるかどうかについて言及する一方、左手オブジェクト400Lがボタンオブジェクト600の操作部620に所定の影響を与えるかどうかについては言及しない。このため、図10では、左手オブジェクト400Lの図示が省略されている。また、制御部121は、図10及び図12に示す各処理を1フレーム毎に繰り返し実行してもよい。尚、制御部121は、図10に示す各処理を所定の時間間隔ごとに繰り返し実行してもよい。
図11に示すように、ステップS10において、制御部121は、HMD110の絶対速度V(図9参照)を特定する。ここで、絶対速度Vとは、現実空間内の所定の場所に固定的に設置された位置センサ130に対するHMD110の速度をいう。また、ユーザUがHMD110を装着しているため、HMD110の絶対速度はユーザUの絶対速度に相当する。つまり、本実施形態では、HMD110の絶対速度を特定することで、ユーザUの絶対速度を特定している。図10に示すように、現実空間においてHMD110が移動すると、仮想カメラ300も仮想空間200内において移動する。
具体的には、制御部121は、位置センサ130によって取得されたデータに基づいて、HMD110の位置情報を取得し、当該取得された位置情報に基づいて、HMD110の絶対速度Vを特定する。例えば、n番目(nは1以上の整数)のフレームのときのHMD110の位置をPnとし、(n+1)番目のフレームのときのHMD110の位置をPn+1とし、各フレーム間の時間間隔をΔTとした場合、n番目のフレームのときのHMD110の絶対速度Vnは、Vn=|Pn+1−Pn|/ΔTとなる。ここで、動画像のフレームレートが90fpsである場合、時間間隔ΔTは1/90となる。また、HMD110の位置Pは、三次元座標系に表示可能な位置ベクトルである。このように、制御部121は、n番目のフレームのときのHMD110の位置Pnと(n+1)番目のフレームのときのHMD110の位置Pn+1を取得した上で、位置ベクトルPn,Pn+1及び時間間隔ΔTに基づいて、n番目のフレームのときの絶対速度Vnを特定することができる。
尚、制御部121は、w軸方向におけるHMD110の絶対速度Vを特定してもよいし、w軸方向以外の所定の方向におけるHMD110の絶対速度Vを特定してもよい。例えば、n番目(nは1以上の整数)のフレームのときのHMD110の位置Pnのw軸方向の位置をwnとし、(n+1)番目のフレームのときのHMD110の位置Pn+1のw軸方向の位置をwn+1とし、各フレーム間の時間間隔をΔTとした場合、n番目のフレームのときのw軸方向におけるHMD110の絶対速度Vnは、Vn=(wn+1−wn)/ΔTとなる。
次に、ステップS11において、制御部121は、仮想カメラ300の視野CVを特定する。具体的には、制御部121は、位置センサ130及び/又はHMDセンサ114からのデータに基づいて、HMD110の位置及び傾きを特定した上で、HMD110の位置及び傾きに基づいて、仮想カメラ300の視野CVを特定する。その後、制御部121は、右手オブジェクト400Rの位置を特定する(ステップS12)。具体的には、制御部121は、位置センサ130及び/又はコントローラ320Rのセンサからのデータに基づいて、現実空間におけるコントローラ320Rの位置を特定した上で、現実空間におけるコントローラ320Rの位置に基づいて右手オブジェクト400Rの位置を特定する。
次に、制御部121は、HMD110の絶対速度Vが所定の値Vth以下(V≦Vth)であるかどうかを判定する(ステップS13)。ここで、所定の値Vth(Vth≧0)はゲーム等のコンテンツの内容に応じて適宜設定されてもよい。また、ステップS13で規定された判定条件(V≦Vth)は、右手オブジェクト400R(操作オブジェクト)のコリジョンエリアCAがボタンオブジェクト600(対象オブジェクト)の操作部620のコリジョンエリアに意図的に接触したかどうかを判定するための判定条件(第1条件)に相当する。
制御部121は、ステップS13で規定される判定条件が満たされないと判定した場合(つまり、絶対速度Vが所定の値Vthよりも大きいと判定した場合)(ステップS13でNO)、ステップS14及びS15で規定される処理を実行しない。つまり、制御部121は、ステップS14で規定されるコリジョン判定処理及びステップS15で規定されるコリジョン効果を発生させる処理をしないので、右手オブジェクト400Rはボタンオブジェクト600の操作部620に所定の影響を与えない。
一方、制御部121は、ステップS13で規定される判定条件が満たされると判定した場合(つまり、絶対速度Vが所定の値Vth以下であると判定した場合)(ステップS13でYES)、ボタンオブジェクト600の操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触しているかどうかを判定する(ステップS14)。特に、制御部121は、右手オブジェクト400Rの位置とボタンオブジェクト600の操作部620の位置に基づいて、操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触しているかどうかを判定する。ステップS14の判定結果がYESの場合、制御部121は、右手オブジェクト400RのコリジョンエリアCAに接触している操作部620に所定の影響を与える(ステップS14)。例えば、右手オブジェクト400Rと操作部620との間のコリジョン効果として、制御部121は、操作部620が右手オブジェクト400Rによって押されたと判定してもよい。この結果として、仮想空間200内に配置された所定のオブジェクト(図示せず)に所定の影響が与えられてもよい。さらに、右手オブジェクト400Rと操作部620との間のコリジョン効果として、操作部620の接触面620aが+X方向に移動してもよい。一方、ステップS14の判定結果がNOの場合、右手オブジェクト400Rと操作部620との間のコリジョン効果は発生させない。
本実施形態によれば、右手オブジェクト400RのコリジョンエリアCAが操作部620のコリジョンエリアに意図的に接触するかどうかを判定するための判定条件として、HMD110の絶対速度Vが所定の値Vth以下であるかどうかが判定される。絶対速度Vが所定の値Vthよりも大きいと判定された場合(ステップS13の判定条件が満たされないと判定された場合)、ステップS14及びS15で規定される処理は実行されない。このように、HMD110の絶対速度Vが所定の値Vthよりも大きい状態で右手オブジェクト400Rが操作部620に接触した場合には、右手オブジェクト400Rは意図せずに操作部620に接触したと判断されるため、右手オブジェクト400Rと操作部620との間のコリジョン判定も実行されないと共に、右手オブジェクト400Rと操作部620との間のコリジョン効果も生じない。
従って、右手オブジェクト400Rが操作部620に意図せずに接触した場合、操作部620が右手オブジェクト400Rによって意図せずに押されてしまうといった状況が回避される。このように、ユーザの仮想体験をさらに改善することができる。
次に、第1実施形態の変形例に係る情報処理方法について図12を参照して説明する。図12は、第1実施形態の変形例に係る情報処理方法を説明するためのフローチャートである。図12に示すフローチャートでは、右手オブジェクト400RのコリジョンエリアCAが操作部620のコリジョンエリアに意図的に接触したかどうかを判定する処理(ステップS24で規定される判定処理)が右手オブジェクト400Rと操作部620との当たり判定(ステップS23で規定される処理)の後に実行される。この点において、図12に示す情報処理方法と図11に示す情報処理方法は相違する。以下では、図11に示す情報処理方法との相違点についてのみ説明を行う。
図12に示すように、制御部121は、ステップS20〜S22に規定された処理を実行した後に、ボタンオブジェクト600の操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触しているかどうかを判定する(ステップS23)。尚、ステップS20〜S22の処理は、図11に示すステップS10〜S12の処理に相当する。
ステップS23の判定結果がNOである場合、操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触していないので、本処理を終了する。一方、ステップS23の判定結果がYESである場合(操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触していると判定された場合)、制御部121は、HMD110の絶対速度Vが所定の値Vth以下であるかどうかを判定する(ステップS24)。
制御部121は、絶対速度Vが所定の値Vthよりも大きいと判定した場合(ステップS24でNO)、ステップS25で規定される処理を実行せずに本処理を終了する。一方、制御部121は、絶対速度Vが所定の値Vth以下であると判定した場合(ステップS24でYES)、右手オブジェクト400RのコリジョンエリアCAに接触している操作部620に所定の影響(コリジョン効果)を与える(ステップS25)。
このように、絶対速度Vが所定の値Vthよりも大きいと判定された場合(ステップS24の判定条件が満たされないと判定された場合)、ステップS25で規定される処理は実行されない。このように、HMD110の絶対速度Vが所定の値Vthよりも大きい状態で右手オブジェクト400Rが操作部620に接触した場合には、右手オブジェクト400Rは意図せずに操作部620に接触したと判断されるため、右手オブジェクト400Rと操作部620との間のコリジョン効果が生じない。この点において、本変形例に係る情報処理方法では、右手オブジェクト400Rと操作部620との間のコリジョン判定は実行されるものの、ステップS24の判定結果がNOである場合に右手オブジェクト400Rと操作部620との間のコリジョン効果が発生しない。
従って、右手オブジェクト400Rが操作部620に意図せずに接触した場合、操作部620が右手オブジェクト400Rによって意図せずに押されてしまうといった状況が回避される。このように、ユーザの仮想体験をさらに改善することができる。
(第2実施形態)
次に、第2実施形態に係る情報処理方法について図13及び図14を参照して説明する。図13は、第2実施形態に係る情報処理方法を説明するためのフローチャートである。図14は、右手オブジェクト400Rとボタンオブジェクト600が仮想カメラ300の視野CV外に存在する様子を示す仮想空間200の平面図である。図13に示すように、第2実施形態に係る情報処理方法は、ステップS34に規定されるステップを更に有する点で第1実施形態に係る情報処理方法(図11参照)と相違する。尚、以下では、第1実施形態において既に説明した事項については繰り返し説明しない。
図13に示すように、制御部121は、ステップS30〜S32に規定された処理を実行した後に、HMD110の絶対速度Vが所定の値Vth以下であるかどうかを判定する(ステップS33)。尚、ステップS30〜S32の処理は、図11に示すステップS10〜S12の処理に対応する。
ステップS33の判定結果がYESの場合、制御部121は、ボタンオブジェクト600の操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触しているかどうかを判定する(ステップS35)。一方、ステップS33の判定結果がNOの場合、制御部121は、仮想カメラ300の視野CVと右手オブジェクト400Rの位置に基づいて、右手オブジェクト400Rが仮想カメラ300の視野CV内に存在するかどうかを判定する(ステップS34)。図14に示すように、右手オブジェクト400Rが仮想カメラ300の視野CV外に存在する場合、制御部121は、ステップS34で規定される判定条件(第2条件)は満たされないと判定し、ステップS35及びS36の処理を実行せずに、本処理を終了する。つまり、制御部121は、ステップS35で規定されるコリジョン判定処理及びステップS36で規定されるコリジョン効果を発生させる処理を実行しないので、右手オブジェクト400Rはボタンオブジェクト600の操作部620に所定の影響を与えない。ここで、ステップS34で規定された判定条件は、右手オブジェクト400RのコリジョンエリアCAが操作部620のコリジョンエリアに意図的に接触したかどうかを判定するための判定条件(第2条件)に相当する。
一方、制御部121は、ステップS34で規定された判定条件が満たされると判定した場合(つまり、右手オブジェクト400Rが仮想カメラ300の視野CV内に存在すると判定した場合)(ステップS34でYES)、ステップS35の判定処理(コリジョン判定処理)を実行する。ステップS35の判定結果がYESの場合、制御部121は、右手オブジェクト400RのコリジョンエリアCAに接触している操作部620に所定の影響を与える(ステップS36)。一方、ステップS35の判定結果がNOの場合、ステップS36の処理を実行せずに本処理を終了する。
本実施形態によれば、右手オブジェクト400RのコリジョンエリアCAが操作部620のコリジョンエリアに意図的に接触するかどうかを判定するための判定条件として、HMD110の絶対速度Vが所定の値Vth以下であるかどうかが判定される(ステップS33)と共に、右手オブジェクト400Rが仮想カメラ300の視野CV内に存在するかどうかが判定される(ステップS34)。さらに、ステップS33の判定条件とステップS34の判定条件が共に満たされないと判定された場合、右手オブジェクト400Rは操作部620に所定の影響を与えない。このように、互いに異なる2つの判定条件を用いることで右手オブジェクト400Rが意図せずに操作部620に接触したかどうかをより確実に判定することができる。特に、HMD110の絶対速度Vが所定の値Vthよりも大きく、且つ右手オブジェクト400Rが視野CV内に存在しない状態で、右手オブジェクト400Rが操作部620に接触した場合には、右手オブジェクト400Rは意図せずに操作部620に接触したと判定され、右手オブジェクト400Rと操作部620との間のコリジョン効果は生じない。従って、右手オブジェクト400Rが操作部620に意図せずに接触した場合、操作部620が右手オブジェクト400Rによって意図せずに押されてしまうといった状況が回避される。このように、ユーザの仮想体験をさらに改善することができる。
尚、本実施形態では、ステップS34において、制御部121は、右手オブジェクト400Rが視野CV内に存在するかどうかを判定している。これに代わり、制御部121は、右手オブジェクト400Rとボタンオブジェクト600のうちの少なくとも一つが視野CV内に存在するかどうかを判定してもよい。この場合、HMD110の絶対速度Vが所定の値Vthよりも大きく、且つ右手オブジェクト400Rとボタンオブジェクト600の両方が視野CV内に存在しない状態で右手オブジェクト400Rが操作部620に接触した場合には、右手オブジェクト400Rは意図せずに操作部620に接触したと判定され、右手オブジェクト400Rと操作部620との間のコリジョン効果は生じない。
次に、第2実施形態の変形例に係る情報処理方法について図15を参照して説明する。図15は、第2実施形態の変形例に係る情報処理方法を説明するためのフローチャートである。図15に示すフローチャートでは、右手オブジェクト400RのコリジョンエリアCAが操作部620のコリジョンエリアに意図的に接触したかどうかを判定する処理(ステップS44及びS45で規定される判定処理)が右手オブジェクト400Rと操作部620との当たり判定(ステップS43で規定される処理)の後に実行される。この点において、図15に示す情報処理方法と図13に示す情報処理方法は相違する。以下では、図13に示す情報処理方法との相違点についてのみ説明を行う。
図15に示すように、制御部121は、ステップS40〜S42に規定された処理を実行した後に、ボタンオブジェクト600の操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触しているかどうかを判定する(ステップS43)。
ステップS43の判定結果がNOである場合、操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触していないので、本処理を終了する。一方、ステップS43の判定結果がYESである場合(操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触していると判定された場合)、制御部121は、HMD110の絶対速度Vが所定の値Vth以下であるかどうかを判定する(ステップS44)。
制御部121は、絶対速度Vが所定の値Vthよりも大きいと判定した場合(ステップS44でNO)、ステップS45で規定される判定処理を実行する。一方、制御部121は、絶対速度Vが所定の値Vth以下であると判定した場合(ステップS44でYES)、右手オブジェクト400RのコリジョンエリアCAに接触している操作部620に所定の影響(コリジョン効果)を与える(ステップS46)。
制御部121は、右手オブジェクト400Rが仮想カメラ300の視野CV内に存在すると判定した場合(ステップS45でYES)、右手オブジェクト400RのコリジョンエリアCAに接触している操作部620に所定の影響(コリジョン効果)を与える(ステップS46)。一方、ステップS45の判定結果がNOである場合、ステップS46の処理を実行せずに本処理を終了する。
本変形例に係る情報処理方法では、右手オブジェクト400Rと操作部620との間のコリジョン判定は実行されるものの、ステップS44の判定条件とステップS45の判定条件が共に満たされないと判定された場合、右手オブジェクト400Rと操作部620との間のコリジョン効果が発生しない。
従って、右手オブジェクト400Rが操作部620に意図せずに接触した場合、操作部620が右手オブジェクト400Rによって意図せずに押されてしまうといった状況が回避される。このように、ユーザの仮想体験をさらに改善することができる。
(第3実施形態)
次に、第3実施形態に係る情報処理方法について図16を参照して説明する。図16は、第3実施形態に係る情報処理方法を説明するためのフローチャートである。図16に示すように、第3実施形態に係る情報処理方法は、ステップS51,S55に規定されるステップを更に有する点で第1実施形態に係る情報処理方法(図11参照)と相違する。尚、以下では、第1実施形態において既に説明した事項については繰り返し説明しない。
図16に示すように、制御部121は、ステップS50に規定された処理を実行した後に、HMD110に対するコントローラ320R(ユーザUの右手)の相対速度v(図9参照)を特定する(ステップS51)。例えば、上記したように、n番目(nは1以上の整数)のフレームのときのHMD110の位置をPnとし、(n+1)番目のフレームのときのHMD110の位置をPn+1とし、各フレーム間の時間間隔をΔTとした場合、n番目のフレームのときのHMD110の絶対速度Vnは、Vn=|Pn+1−Pn|/ΔTとなる。さらに、n番目のフレームのときのコントローラ320Rの位置をP’nとし、(n+1)番目のフレームのときのコントローラ320Rの位置をP’n+1とし、各フレーム間の時間間隔をΔTとした場合、n番目のフレームのときのコントローラ320Rの絶対速度V’nは、V’n=|P’n+1−P’n|/ΔTとなる。このように、n番目のフレームのときのHMD110に対するコントローラ320Rの相対速度vnは、vn=V’n−Vnとなる。このように、制御部121は、n番目のフレームのときのHMD110の絶対速度Vnとコントローラ320Rの絶対速度V’nに基づいて、n番目のフレームのときの相対速度vnを特定することができる。尚、制御部121は、w軸方向における相対速度vを特定してもよいし、w軸方向以外の所定の方向における相対速度vを特定してもよい。
次に、制御部121は、ステップS52及びS53に規定された処理を実行した後、HMD110の絶対速度Vが所定の値Vth以下であるかどうかを判定する(ステップS54)。
ステップS54の判定結果がYESの場合、制御部121は、ボタンオブジェクト600の操作部620のコリジョンエリアが右手オブジェクト400RのコリジョンエリアCAに接触しているかどうかを判定する(ステップS56)。一方、ステップS54の判定結果がNOの場合、制御部121は、HMD110に対するコントローラ320Rの相対速度vが所定の値vthよりも大きいかどうかを判定する(ステップS55)。ここで、所定の値vth(vth≧0)は、ゲーム等のコンテンツの内容に応じて適宜設定することができる。ステップS55の判定結果がNOである場合、ステップS56及びS57の処理を実行せずに、本処理を終了する。つまり、制御部121は、ステップS56で規定されるコリジョン判定処理及びステップS57で規定されるコリジョン効果を発生させる処理を実行しないので、右手オブジェクト400Rはボタンオブジェクト600の操作部620に所定の影響を与えない。ここで、ステップS55で規定された判定条件は、右手オブジェクト400RのコリジョンエリアCAが操作部620のコリジョンエリアに意図的に接触したかどうかを判定するための判定条件(第2条件)に相当する。
一方、制御部121は、ステップS55で規定された判定条件が満たされると判定した場合(つまり、相対速度vが所定の値vthよりも大きいと判定した場合)(ステップS55でYES)、ステップS56の判定処理(コリジョン判定処理)を実行する。ステップS56の判定結果がYESの場合、制御部121は、右手オブジェクト400RのコリジョンエリアCAに接触している操作部620に所定の影響を与える(ステップS57)。一方、ステップS56の判定結果がNOの場合、ステップS57の処理を実行せずに本処理を終了する。
本実施形態によれば、右手オブジェクト400RのコリジョンエリアCAが操作部620のコリジョンエリアに意図的に接触するかどうかを判定するための判定条件として、HMD110の絶対速度Vが所定の値Vth以下であるかどうかが判定される(ステップS54)と共に、HMD110に対するコントローラ320Rの相対速度vがvthよりも大きいかどうかが判定される(ステップS55)。さらに、ステップS54の判定条件とステップS55の判定条件が共に満たされないと判定された場合、右手オブジェクト400Rは操作部620に所定の影響を与えない。このように、互いに異なる2つの判定条件を用いることで右手オブジェクト400Rが意図せずに操作部620に接触したかどうかをより確実に判定することができる。特に、HMD110の絶対速度Vが所定の値Vthよりも大きく、且つHMD110に対するコントローラ320Rの相対速度vが所定の値vth以下である状態で、右手オブジェクト400が操作部620に接触した場合には、右手オブジェクト400Rは意図せずに操作部620に接触したと判定され、右手オブジェクト400Rと操作部620との間のコリジョン効果は生じない。従って、右手オブジェクト400Rが操作部620に意図せずに接触した場合、操作部620が右手オブジェクト400Rによって意図せずに押されてしまうといった状況が回避される。このように、ユーザの仮想体験をさらに改善することができる。
制御部121によって実行される各種処理をソフトウェアによって実現するために、本実施形態に係る情報処理方法をコンピュータ(プロセッサ)に実行させるための情報処理プログラムが記憶部123又はROMに予め組み込まれていてもよい。または、情報処理プログラムは、磁気ディスク(HDD、フロッピーディスク)、光ディスク(CD−ROM,DVD−ROM、Blu−rayディスク等)、光磁気ディスク(MO等)、フラッシュメモリ(SDカード、USBメモリ、SSD等)等のコンピュータ読取可能な記憶媒体に格納されていてもよい。この場合、記憶媒体が制御装置120に通信可能に接続されることで、当該記憶媒体に格納された情報処理プログラムが、記憶部123に組み込まれる。そして、記憶部123に組み込まれた情報処理プログラムがRAM上にロードされて、プロセッサがロードされた当該プログラムを実行することで、制御部121は本実施形態に係る情報処理方法を実行する。
また、情報処理プログラムは、通信ネットワーク3上のコンピュータから通信インターフェース125を介してダウンロードされてもよい。この場合も同様に、ダウンロードされた当該プログラムが記憶部123に組み込まれる。
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲及びその均等の範囲に基づいて定められるべきである。
本実施形態では、ユーザUの手の動きを示す外部コントローラ320の動きに応じて、手オブジェクトの移動が制御されているが、ユーザUの手自体の移動量に応じて、仮想空間内における手オブジェクト400の移動が制御されてもよい。例えば、外部コントローラを用いる代わりに、ユーザの手指に装着されるグローブ型デバイスや指輪型デバイスを用いることで、位置センサ130により、ユーザUの手の位置や移動量を検出することができると共に、ユーザUの手指の動きや状態を検出することができる。また、位置センサ130は、ユーザUの手(手指を含む)を撮像するように構成されたカメラであってもよい。この場合、カメラを用いてユーザの手を撮像することにより、ユーザの手指に直接何らかのデバイスを装着させることなく、ユーザの手が表示された画像データに基づいて、ユーザUの手の位置や移動量を検出することができると共に、ユーザUの手指の動きや状態を検出することができる。
また、本実施形態では、ユーザUの頭部以外の身体の一部である手の位置及び/又は動きに応じて、手オブジェクトがボタンオブジェクトの操作部に与える影響を規定するコリジョン効果が設定されているが、本実施形態はこれには限定されない。例えば、ユーザUの頭部以外の身体の一部である足の位置及び/又は動きに応じて、ユーザUの足の動きに連動する足オブジェクト(操作オブジェクトの一例)が対象オブジェクトに与える影響を規定するコリジョン効果が設定されてもよい。このように、本実施形態では、当該ユーザUの身体の一部と連動する操作オブジェクトが対象オブジェクトに与える影響を規定するコリジョン効果が設定されてもよい。
また、本実施形態では、手オブジェクトにより所定の影響を受ける仮想オブジェクトの一例としてブロックオブジェクト500やボタンオブジェクト600が説明されているが、仮想オブジェクトの属性は特に限定されない。例えば、仮想オブジェクト(対象オブジェクト)が他のユーザにより操作されるアバターの場合、コリジョン効果としてアバターに与えられるダメージ量が設定されてもよい。