[本開示が示す実施形態の説明]
本開示が示す実施形態の概要を説明する。
(1)情報処理方法であって、
前記情報処理方法は、ヘッドマウントデバイスを備えたシステムにおいて実行され、
(a)操作オブジェクトと、前記操作オブジェクトによって影響が与えられる対象オブジェクトと、を含む仮想空間を定義する仮想空間データを生成するステップと、
(b)前記ヘッドマウントデバイスの動きおよび前記仮想空間データに基づいて、前記ヘッドマウントデバイスに表示される視野画像を示す視野画像データを生成するステップと、
(c)前記ヘッドマウントデバイスを装着したユーザの身体の一部の動きに応じて、前記操作オブジェクトを動かすステップと、
(d)前記操作オブジェクトの動きに応じて前記操作オブジェクトと前記対象オブジェクトとが干渉した場合には、前記操作オブジェクトと前記対象オブジェクトとの干渉量に基づいて、前記対象オブジェクトに与えられる前記影響を特定するステップと、
を含む。
この方法によれば、操作オブジェクトの対象オブジェクトに対する干渉量に応じて対象オブジェクトに与えられる影響を異ならせることができ、ユーザに対して、より直感的な仮想体験を提供することができる。
(2)前記影響は、前記対象オブジェクトにおける視覚的な表示を含んでもよい。
この方法によれば、操作オブジェクトを対象オブジェクトに干渉させた場合には、対象オブジェクトの表示が視覚的に変化することで、ユーザは自らが操作する操作オブジェクトにより対象オブジェクトに与えられた影響を直感的に把握することができる。
(3)前記操作オブジェクトと前記対象オブジェクトとが干渉している場合に、前記操作オブジェクトの位置が、前記対象オブジェクトの表面において接触する位置となるように調整されており、
前記操作オブジェクトと前記表面との接触点において前記視覚的な表示が、前記干渉量に基づいて異ならされていてもよい。
この方法によれば、操作オブジェクトが対象オブジェクトと干渉する場合でも操作オブジェクトの対象オブジェクトに対する不自然な貫通が発生しないように操作オブジェクトの位置を調整しつつ干渉量に基づいて対象オブジェクトの視覚的な表示態様を変化させることにより、直感的で自然な仮想体験を容易に提供することができる。
(4)前記対象オブジェクトは、前記接触点を含む前記表面と、前記表面とは反対側の裏面と、を少なくとも含み、
前記視覚的な表示は、前記表面において前記接触点を含む第1部分の面積、前記第1部分の濃淡、および、前記裏面において前記第1部分に対応する部分である第2部分の面積、の少なくとも一つを含んでもよい。
視覚的な表示の変化パターンとして、これらの方法を用いることが好ましい。
(5)前記影響は、前記対象オブジェクトの少なくとも一部が変形されるか否かが特定されることを含んでもよい。
(6)前記影響は、前記対象オブジェクトに予め関連付けられたパラメータを変動させることを含んでもよい。
(7)(f)前記干渉量または前記影響に応じた触覚的なフィードバックを前記ユーザに与えるステップを、さらに含んでもよい。
これらの方法によっても、より直感的な仮想体験を容易に提供することができる。
(8)前記干渉量は、前記対象オブジェクトに干渉した前記操作オブジェクトの干渉部分の体積、前記干渉部分の最大深さ、前記対象オブジェクトの表面における前記干渉部分の面積、の少なくとも一つに基づいて規定されてもよい。
(9)情報処理プログラムは、上記項目(1)から(8)のいずれかに記載の情報処理方法をコンピュータに実行させるための情報処理プログラムである。
上記によれば、ヘッドマウントデバイスのユーザに対して、より直感的な仮想体験を提供可能な情報処理プログラムを提供することができる。
(10)ヘッドマウントデバイスを用いた情報処理システムであって、
当該情報処理システムは、項目(1)から(8)のうちいずれかに記載の情報処理方法を実行するように構成された、情報処理システムである。
上記によれば、ヘッドマウントデバイスのユーザに対して、より直感的な仮想体験を提供可能な情報処理システムを提供することができる。
(11)プロセッサと、
コンピュータ可読命令を記憶するメモリと、を備えた情報処理装置であって、
前記コンピュータ可読命令が前記プロセッサにより実行されると、前記情報処理装置は項目(1)から(8)のうちいずれかに記載の情報処理方法を実行する、情報処理装置である。
上記によれば、ヘッドマウントデバイスのユーザに対して、より直感的な仮想体験を提供可能な情報処理装置を提供することができる。情報処理装置は、ユーザ端末またはサーバのいずれか一方である点に留意されたい。
[本開示が示す実施形態の詳細]
以下、本開示が示す実施形態について図面を参照しながら説明する。本実施形態の説明において既に説明された要素と同一の参照番号を有する要素については、説明の便宜上、その説明は繰り返さない。
最初に、仮想空間配信システム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を表示する(図9参照)。このように、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〜14を参照して詳細に説明する。図11の状態(a)は、HMD110とコントローラ320R,320Lを装着したユーザUが存在する現実空間を示す図である。図11の状態(b)は、仮想カメラ300と、手オブジェクト400と、筆記具オブジェクト500と、ノートオブジェクト600とを含む仮想空間200を示す図である。図12は、本実施形態に係る情報処理方法を説明するためのフローチャートである。図13は、視野画像を示す図である。図14は、筆記具オブジェクト500とノートオブジェクト600とが干渉している状態を示す図である。
本実施形態において、仮想空間200は、仮想空間配信システム100により提供されるゲーム空間として構成されている。図11の状態(b)に示すように、仮想空間200は、仮想カメラ300と、手オブジェクト400と、筆記具オブジェクト500(操作オブジェクトの一例)と、ノートオブジェクト600(対象オブジェクトの一例)と、を含む。制御部121は、これらのオブジェクトを含む仮想空間200を規定する仮想空間データを生成する。また、制御部121は、1フレーム毎に仮想空間データを更新してもよい。上記したように、仮想カメラ300は、図11の状態(a)に示すユーザUが装着しているHMD110の動きに連動する。つまり、仮想カメラ300の視野は、HMD110の動きに応じて更新される。仮想カメラ300は、ユーザUの一人称視点に関連付けられた視点を有する。
左手オブジェクト400Lは、ユーザUの左手に装着されるコントローラ320Lの動きに連動する。同様に、右手オブジェクト400Rは、ユーザUの右手に装着されるコントローラ320Rの動きに連動する。
制御部121は、位置センサ130からコントローラ320の位置情報を取得した上で、当該取得された位置情報に基づいて、仮想空間200内の手オブジェクト400L,400Rの位置と現実空間におけるコントローラ320の位置とを対応付ける。このように、制御部121は、ユーザUの手の位置(コントローラ320の位置)に応じて、手オブジェクト400L,400Rの位置を制御する。
また、ユーザUが操作ボタン302を操作することで、仮想空間200内に配置された手オブジェクト400L,400Rの各指を操作することが可能となる。つまり、制御部121は、操作ボタン302に対する入力操作に対応する操作信号をコントローラ320から取得した上で、当該操作信号に基づいて、手オブジェクト400L,400Rの手指の動作を制御する。例えば、ユーザUが操作ボタン302を操作することで右手オブジェクト400Rは筆記具オブジェクト500を掴むことができる(図13参照)。さらに、右手オブジェクト400Rが筆記具オブジェクト500を掴んだ状態で、コントローラ320の移動に応じて、右手オブジェクト400Rと筆記具オブジェクト500を移動させることが可能となる。このように、制御部121は、ユーザUの手指の動きに応じて、手オブジェクト400L,400Rの動作を制御するように構成されている。
筆記具オブジェクト500は、ノートオブジェクト600に対して影響を与えるオブジェクトである。筆記具オブジェクト500はコリジョンエリアを有している。本実施形態では、筆記具オブジェクト500のコリジョンエリアは、筆記具オブジェクト500を構成する領域(筆記具オブジェクト500の外形領域)に一致しているものとする。筆記具オブジェクト500がノートオブジェクト600に接触して、筆記具オブジェクト500とノートオブジェクト600とが干渉することで、ノートオブジェクト600に後述の影響が与えられる。なお、図11等に示す例では、筆記具オブジェクト500として例えば万年筆を図示しているが、手オブジェクト400の操作によって、筆記具オブジェクト500の種類を変えることもできる。例えば、コントローラ320を握っているユーザUの手の所定の動作に基づいて、万年筆に代えて、鉛筆や消しゴムなど別の筆記用具を手オブジェクト400に持ち替えさせることができる。
ノートオブジェクト600は、仮想空間200内の所定の位置に配置されている。ユーザUは、手オブジェクト400L,400Rを動かして、筆記具オブジェクト500を掴み、筆記具オブジェクト500をノートオブジェクト600に接触させることで、ノートオブジェクト600の表面に線(文字や絵など)を描くことができる。ノートオブジェクト600には、各種情報が表示されていてもよい。ノートオブジェクト600は、仮想空間200内の所定の位置に固定的に配置されていてもよいが、ユーザUが操作ボタン302を操作することでノートオブジェクト600を掴んで移動させることができてもよい。なお、対象オブジェクトは、ノート(書籍)型のものに限られず、タブレットやモニタなど筆記具オブジェクト500等の操作オブジェクトによって影響が与えられるものであればよい。
以下、本実施形態に係る仮想空間配信システム100で提供される情報処理方法の流れを、図12〜図15を参照して詳細に説明する。
まず、図12に示すステップS10において、制御部121(図3参照)は、仮想空間200を規定する仮想空間データと仮想カメラ300の視野CVとに基づいて視野画像データを生成し、視野画像データに基づいてHMD110の表示部112に視野画像を表示する。ステップS10は、図6に示すステップS1と同じである。
次に、ステップS12において、制御部121は、ユーザUにより操作されるコントローラ320の動きに応じて手オブジェクト400L,400Rを動かす。そして、ステップS14において、制御部121は、ユーザUが操作するコントローラ320L,320Rの少なくとも一方に筆記具オブジェクト500を掴むための所定の操作が入力された否か(具体的には、例えば右手オブジェクト400Rが筆記具オブジェクト500に近づいた状態でコントローラ320Rの操作ボタン302が操作された否か)を判定する。コントローラ320Rに所定の操作が入力されたと判定された場合には(ステップS14のYes)、ステップS16において、制御部121は、右手オブジェクト400Rに筆記具オブジェクト500を掴ませるように制御する。
次に、ステップS18において、制御部121は、右手オブジェクト400Rが筆記具オブジェクト500を掴んだ状態で右手オブジェクト400Rが移動したかどうかを判定する。ステップS18でYesの場合には、ステップS20において、制御部121は、コントローラ320Rの移動に応じて、右手オブジェクト400と筆記具オブジェクト500とを一緒に移動させる。
次に、ステップS22において、制御部121は、筆記具オブジェクト500がノートオブジェクト600に干渉したか否かを判定する。図14に示すように筆記具オブジェクト500がノートオブジェクト600に干渉したと判定された場合には(ステップS22のYes)、ステップS24において、制御部121は、筆記具オブジェクト500の位置を調整する。仮想空間200内における筆記具オブジェクト500の位置を調整する際に、実空間でユーザUが操作するコントローラ320Rの位置を直接用いると、筆記具オブジェクト500がノートオブジェクト600と干渉する位置に動かされた場合に、筆記具オブジェクト500がノートオブジェクト600の内部に侵入するかノートオブジェクト600を貫通してしまい、不自然な視野画像が生成されユーザUの没入感を阻害するおそれがある。そのため、本ステップでは、制御部121は、視野画像Vにレンダリングされるべき筆記具オブジェクト500の位置(以下、レンダリング位置と称す。)を、実空間におけるコントローラ320Rの位置(入力値)から特定される仮想空間200内での筆記具オブジェクト500の目標位置(以下、ターゲット位置と称す。)と、ノートオブジェクト600の位置とに基づいて、調整している。具体的には、図14に示すように、1フレーム毎に筆記具オブジェクト500のターゲット位置(図14の破線で示された筆記具オブジェクト500の位置)が特定されたうえで、この筆記具オブジェクト500のターゲット位置がノートオブジェクト600に干渉している場合には、ノートオブジェクト600との衝突が検出された位置、すなわち、筆記具オブジェクト500とノートオブジェクト600との最初の接触点Pで筆記具オブジェクト500が止まるように、筆記具オブジェクト500のレンダリング位置(図14の実線で示された筆記具オブジェクト500の位置)を特定する。このように、筆記具オブジェクト500のターゲット位置がノートオブジェクト600と干渉している場合でも、筆記具オブジェクト500のレンダリング位置がノートオブジェクト600の表面600aにおいて接触する位置となるように調整することにより、視野画像Vにおいて筆記具オブジェクト500のノートオブジェクト600に対する不自然な侵入や貫通が発生することがないため、ユーザUに対して自然な仮想体験を提供することができる。
次に、ステップS26において、制御部121は、筆記具オブジェクト500のターゲット位置とノートオブジェクト600との干渉量を特定する。ステップS26における干渉量の特定処理は、例えば、図14に示すように、ターゲット位置における筆記具オブジェクト500のノートオブジェクト600に干渉した部分(干渉部分)510の最大深さにより規定することができる。なお、干渉部分510の最大深さは、干渉部分510の先端520と、ノートオブジェクト600の表面600aにおいて干渉部分510の先端520から一番近い部分P´との間の距離L1として特定してもよい。また、干渉部分510の最大深さは、筆記具オブジェクト500とノートオブジェクト600の表面600aとの最初の接触点Pと、干渉部分510の先端520との間の距離L2として特定してもよい。干渉量を特定する別の方法として、筆記具オブジェクト500の干渉部分510の体積や、ノートオブジェクト600の表面600aにおける筆記具オブジェクト500の干渉部分510の面積などに基づいて干渉量が規定されてもよい。
次に、ステップS28において、制御部121は、ステップS26で特定された筆記具オブジェクト500とノートオブジェクト600との干渉量に基づいて、ノートオブジェクト600における視覚的な表示(ノートオブジェクト600に与えられる影響の一例)を特定する。そして、ステップS30において、ステップS28で特定された視覚的な表示に基づいて、視野画像Vを更新して、処理を終了する。具体的には、図15の更新された視野画像Vに示すように、例えば、筆記具オブジェクト500とノートオブジェクト600との干渉量に基づいて、ノートオブジェクト600の表面600aにおいて筆記具オブジェクト500との接触点を含む着色部分710(第一部分の一例)の面積が変更される。例えば、筆記具オブジェクト500とノートオブジェクト600との干渉量が大きくなるにつれて、着色部分710の面積を大きくする。これにより、筆記具オブジェクト500とノートオブジェクト600との干渉量が少ない場合には、筆記具オブジェクト500によりノートオブジェクト600上に描かれる着色部分710の線幅が狭くなり、干渉量が多ければ、着色部分710の線幅が太くなる。このように、実空間で万年筆等の筆記具を用いて筆記する場合と同様に、仮想空間200内で筆記具オブジェクト500を用いてノートオブジェクト600に筆記する場合にも、筆記具オブジェクト500とノートオブジェクト600との干渉量に応じて着色部分710の線幅を変更することで、筆圧の違いやにじみを表現することができる。また、筆圧の違いをより直感的に表現するために、着色部分710の濃淡を干渉量に応じて変更してもよい。例えば、干渉量が少なければ、着色部分710の色を淡くし、干渉量が多ければ着色部分710の色を濃くすることができる。
さらに、図16に示すように、ノートオブジェクト600の各ページが手オブジェクト400で捲れるような場合には、裏抜け(紙の上にインクで文字や図形などを記すとき、紙の裏側までインクが浸透してしまう状態)を表現するために、筆記具オブジェクト500とノートオブジェクト600との干渉量に基づいて、ノートオブジェクト600の表面600aの着色部分710に対応する裏面600bの着色部分720(第二部分の一例)の面積を異ならせてもよい。
以上説明したように、本実施形態によれば、制御部121は、ユーザUの手の動きに応じて筆記具オブジェクト500を動かし、筆記具オブジェクト500の動きに応じて筆記具オブジェクト500とノートオブジェクト600とが干渉した場合には、筆記具オブジェクト500とノートオブジェクト600との干渉量に基づいて、ノートオブジェクト600に与えられる影響(例えば、視覚的な表示)を特定する。筆記具オブジェクト500とノートオブジェクト600とが干渉した場合に、筆記具オブジェクト500とノートオブジェクト600との干渉量に基づいてノートオブジェクト600に与えられる影響を異ならせることで、ユーザUに対して、より直感的な仮想体験を提供することができる。
なお、筆記具オブジェクト500とノートオブジェクト600とが干渉した場合には、その干渉量に応じてノートオブジェクト600の少なくとも一部が変形されたり、切断されたりするようにしてもよい。この場合、筆記具オブジェクト500とノートオブジェクト600との干渉量だけでなく、ノートオブジェクト600と干渉している状態での筆記具オブジェクト500の移動速度(フレーム毎の筆記具オブジェクト500の移動量)に基づいて、ノートオブジェクト600の変形パターンが決定されてもよい。例えば、筆記具オブジェクト500の移動速度が一定値以下である場合には、ノートオブジェクト600は少し凹むだけである一方で、筆記具オブジェクト500の移動速度が一定値より大きい場合には、ノートオブジェクト600が切断されるように、ノートオブジェクト600の視覚的な表示が異ならされてもよい。
また、上記の実施形態では、筆記具オブジェクト500によりノートオブジェクト600に与えられる影響の一例として、ノートオブジェクト600における視覚的な表示を異ならせる方法を採用しているが、この例に限られない。筆記具オブジェクト500とノートオブジェクト600との干渉量に応じて、ノートオブジェクト600に予め関連付けられたパラメータ(例えば、耐久度)を変動させてもよい。例えば、干渉量に応じてノートオブジェクト600の耐久度が減じられ、耐久度がある閾値を下回った場合に、筆記具オブジェクト500によってノートオブジェクト600に穴があけられるようにしても良い。パラメータの変動についても、干渉量だけではなく、筆記具オブジェクト500の移動速度を加味してもよい。
さらに、筆記具オブジェクト500とノートオブジェクト600との干渉量や、ノートオブジェクト600に与えられる影響に応じて、制御部121は、コントローラ320を振動させるための入力信号をコントローラ320へ送信してもよい。例えば、干渉量が一定量以上の場合にはコントローラ320を振動させるようにすることで、触覚的なフィードバックをユーザUに与え、より直感的な仮想体験を提供することができる。
なお、上記実施形態では、操作オブジェクトの一例として筆記具オブジェクト500を用いてノートオブジェクト600に影響を与える方法を採用しているが、筆記具オブジェクト500を用いずに、操作オブジェクトとしての手オブジェクト400とノートオブジェクト600との干渉量に基づいて、ノートオブジェクト600に直接影響を与えることもできる。例えば、手オブジェクト400とノートオブジェクト600が干渉している場合に、手オブジェクト400によってノートオブジェクト600上に表示されている各種メニューを操作したり、ノートオブジェクト600を変形させたり、ページを捲ったりすることも可能である。
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲およびその均等の範囲に基づいて定められるべきである。
本実施形態の説明では、仮想空間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に適用される場合、オブジェクトは、現実空間によって影響を与えられてもよい。このように、仮想空間が背景や仮想オブジェクトといった仮想シーンを少なくとも一部に含むことにより、ユーザには当該仮想シーンとの相互作用が可能な仮想体験が提供され得る。また、仮想空間がARやMRを提供する場合には、手オブジェクト400(400L,400R)に代えて、ユーザUの実際の手(および実際の手が持っている筆記具等)がノートオブジェクト600に影響を与えられる操作オブジェクトとして適用される。