[本開示が示す実施形態の説明]
本開示が示す実施形態の概要を説明する。
(1)a)操作オブジェクトと、指示オブジェクトとを含む仮想空間を規定する仮想空間データを生成するステップと、
b)ヘッドマウントデバイスの動きと、前記仮想空間データとに基づいて、前記ヘッドマウントデバイスに表示される視野画像を示す視野画像データを生成するステップと、
c)前記ヘッドマウントデバイスを装着したユーザの頭部以外の身体の一部の動きに応じて、前記操作オブジェクトを動かすステップと、
を含み、
前記指示オブジェクトは、
前記操作オブジェクトに視覚的に関連付けられ、前記ユーザの身体の前記一部に誘導動作をさせるように誘導する、
プロセッサによって実行される情報処理方法。
上記方法によれば、指示オブジェクトは、ユーザの身体の一部(例えば、手や指)に誘導動作をさせるように誘導する。このように、ユーザは、指示オブジェクトを視認することで、身体の一部が誘導動作を行うように当該身体の一部を動かすことができる。例えば、ユーザは、チュートリアル等において、指示オブジェクトを視認することで、仮想空間内での所定のアクションに関連付けられたユーザの手や指(ユーザの身体の一部の一例)の動きを比較的容易に習得することができる。このように、仮想空間におけるユーザの利便性を高めることが可能な情報処理方法を提供することができる。
(2)前記仮想空間は、前記操作オブジェクトと前記指示オブジェクトとを視覚的に関連付けるように連結する第1連結オブジェクトをさらに含む、項目(1)に記載の情報処理方法。
上記方法によれば、操作オブジェクトと指示オブジェクトを視覚的に関連付けるように連結する第1連結オブジェクトによって、ユーザの視線を指示オブジェクトに誘導させることができる。
(3)d)前記操作オブジェクトの移動に応じて、前記第1連結オブジェクトの視覚的態様を、前記操作オブジェクトと前記指示オブジェクトとを視覚的に関連付け続けるように更新するステップをさらに含む、項目(2)に記載の情報処理方法。
上記方法によれば、操作オブジェクトの移動に応じて、操作オブジェクトと指示オブジェクトとを視覚的に関連付け続けるように、第1連結オブジェクトの視覚的態様が更新される。このように、操作オブジェクトを動かした場合でも、第1連結オブジェクトによってユーザの視線を指示オブジェクトに誘導させることができる。
(4)前記仮想空間は、
仮想ボタンを有し、前記操作オブジェクトに関連付けられた仮想コントローラと、
前記指示オブジェクトと前記仮想ボタンを視覚的に関連付けるように連結する第2連結オブジェクトを更に含む、
項目(2)又は(3)に記載の情報処理方法。
上記方法によれば、指示オブジェクトと仮想コントローラの仮想ボタンを視覚的に関連付けるように連結する第2連結オブジェクトによって、ユーザの視線を仮想ボタンと指示オブジェクトに誘導させることができる。このため、ユーザは、チュートリアル等において、指示オブジェクトと仮想ボタンの両方を視認することで、ユーザの指(ユーザの身体の一部の一例)の動きと仮想空間内でのアクションの関連付けを覚えることができる。
(5)e)前記ユーザの視野の移動に応じて、前記指示オブジェクトが前記視野内の所定位置に配置され続けるように前記指示オブジェクトを移動させるステップを更に含む、項目(1)から(4)うちいずれか一項に記載の情報処理方法。
上記方法によれば、ユーザの視野の移動に応じて、指示オブジェクトがユーザの視野内の所定位置に配置され続けるように移動する。このように、指示オブジェクトがユーザの視野に追随するため、仮想空間におけるユーザの利便性を高めることができる。
(6)前記指示オブジェクトは、前記仮想空間内に固定的に配置される、項目(1)から(4)のうちいずれか一項に記載の情報処理方法。
上記方法によれば、指示オブジェクトが仮想空間内に固定的に配置される。このため、指示オブジェクトがユーザの視野外に位置する場合でも、操作オブジェクトと指示オブジェクトを連結する第1連結オブジェクトによって、ユーザの視線を指示オブジェクトに誘導させることができる。
(7)前記指示オブジェクトは、前記仮想空間内に配置されたアバターであり、
前記アバターの仮想身体の一部が、前記誘導動作を実行させるべき前記ユーザの身体の前記一部に相当する部分を含むことにより、前記指示オブジェクトは前記操作オブジェクトに視覚的に関連付けられ、
前記部分の動きが誘導動作を実行することにより、前記指示オブジェクトは前記ユーザの身体の前記一部に前記誘導動作を実行させるように誘導する、
項目(6)に記載の情報処理方法。
上記方法によれば、アバターの仮想身体の一部の動きが誘導動作を実行することにより、指示オブジェクトは、ユーザの身体の一部(例えば、手や指)に誘導動作を実行させるように誘導する。このように、ユーザは、アバターの仮想身体の一部の動きを視認することで、身体の一部が誘導動作を行うように当該身体の一部を動かすことができる。例えば、ユーザは、チュートリアル等において、アバターの仮想身体の一部の動きを視認することで、仮想空間内での所定のアクションに関連付けられたユーザの手や指(ユーザの身体の一部の一例)の所定の動きを比較的容易に習得することができる。
(8)前記ユーザの視野内に前記アバターが存在する場合に、前記アバターの背面が前記視野画像上に表示されるように、前記アバターの向きが設定される、項目(7)に記載の情報処理方法。
上記方法によれば、ユーザの視野内にアバターが存在する場合に、アバターの背面が視野画像上に表示されるようにアバターの向きが設定される。このように、アバターはユーザに対して背を向けているため、ユーザは、アバターの仮想身体の一部の動きを比較的容易に真似ることができる。
(9)前記アバターは、前記仮想身体のうち前記部分のみが動くように制御される、項目(7)又は(8)に記載の情報処理方法。
上記方法によれば、アバターは仮想身体のうちユーザの身体の一部に相当する部分のみが動くように制御されるので、ユーザの視線をアバターの仮想身体の一部分(例えば、仮想手)に誘導させることができる。
(10)前記誘導動作は、第1の動きと第2の動きを含み、
前記ユーザの身体の前記一部は、手と指を含み、
前記指示オブジェクトは、前記手に前記第1の動きをさせるように誘導する第1指示オブジェクトと、前記指に前記第2の動きをさせるように誘導する第2指示オブジェクトと、
を有し、
f)前記第1の動きに引き続いて実行される前記第2の動きに応じて、前記操作オブジェクトによって操作される対象オブジェクトを生成するステップをさらに含む、
項目(1)から(3)のうちいずれか一項に記載の情報処理方法。
上記方法によれば、第1指示オブジェクトは、ユーザの手に第1の動きをさせるように誘導すると共に、第2指示オブジェクトは、ユーザの指に第2の動きをさせるように誘導する。さらに、第1の動きに引き続いて実行される第2の動きに応じて、操作オブジェクトによって操作される対象オブジェクトが生成される。このように、ユーザは、第1指示オブジェクトを視認することで、ユーザの手の動きが第1の動きとなるようにユーザの手を動かすことができると共に、第2指示オブジェクトを視認することで、ユーザの指の動きが第2の動きとなるようにユーザの指を動かすことができる。例えば、ユーザは、チュートリアル等において、第1指示オブジェクトと第2指示オブジェクトを視認することで、仮想空間内での対象オブジェクトの出現に関するアクションに関連付けられたユーザの手の第1の動きとユーザの指の第2の動きを比較的容易に習得することができる。
(11)項目(1)から(10)のうちいずれか一項に記載の情報処理方法をコンピュータに実行させるための情報処理プログラムが提供される。
上記によれば、仮想空間におけるユーザの利便性を高めることが可能な情報処理プログラムを提供することができる。
(12)プロセッサと、
コンピュータ可読命令を記憶するメモリと、を備えた情報処理装置であって、
前記コンピュータ可読命令が前記プロセッサにより実行されると、前記情報処理装置は項目(1)から(10)のうちいずれか一項に記載の情報処理方法を実行する、情報処理装置。
上記によれば、仮想空間におけるユーザの利便性を高めることが可能な情報処理装置を提供することができる。
[本開示が示す実施形態の詳細]
以下、本開示が示す実施形態について図面を参照しながら説明する。尚、本実施形態の説明において既に説明された部材と同一の参照番号を有する部材については、説明の便宜上、その説明は繰り返さない。
最初に、図1を参照してユーザ端末1の構成について説明する。図1は、ユーザ端末1を示す概略図である。図1に示すように、ユーザ端末1は、ユーザUの頭部に装着されたヘッドマウントデバイス(HMD)110と、ヘッドフォン116と、マイク118と、位置センサ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から音声データ(電気信号)を受信し、当該受信した音声データに基づいて音声を出力するように構成されている。マイク118(音声入力部)は、ユーザUから発声された音声を収集し、当該収集された音声に基づいて音声データ(電気信号)を生成するように構成されている。さらに、マイク118は、音声データを制御装置120に送信するように構成されている。
位置センサ130は、例えば、ポジション・トラッキング・カメラにより構成され、HMD110と外部コントローラ320の位置を検出するように構成されている。位置センサ130は、制御装置120に無線又は有線により通信可能に接続されており、HMD110に設けられた図示しない複数の検知点の位置、傾き又は発光強度に関する情報を検出するように構成されている。さらに、位置センサ130は、外部コントローラ320に設けられた図示しない複数の検知点の位置、傾き及び/又は発光強度に関する情報を検出するように構成されている。検知点は、例えば、赤外線や可視光を放射する発光部である。また、位置センサ130は、赤外線センサや複数の光学カメラを含んでもよい。
外部コントローラ320は、ユーザUの身体の一部(頭部以外の部位であり、本実施形態においてはユーザUの手)の動きを検知することにより、仮想空間内に表示される手オブジェクト(アバターの仮想手ともいう。)の動作を制御するために使用される。外部コントローラ320は、ユーザUの右手によって操作される右手用外部コントローラ320R(以下、単にコントローラ320Rという。)と、ユーザUの左手によって操作される左手用外部コントローラ320L(以下、単にコントローラ320Lという。)と、を有する。
コントローラ320Rは、ユーザUの右手の位置や右手の指の動きを示す装置であって、右手の指によって操作される複数の操作ボタンを備えてもよい。コントローラ320Rの動きに応じて仮想空間内に存在する右手オブジェクト(アバターの仮想右手ともいう。)が動く。例えば、ユーザUがコントローラ320Rの所定の操作ボタンを押すことで、右手オブジェクトの所定の指が折れ曲がる一方、ユーザUがコントローラ320Rの所定の操作ボタンを離すことで、右手オブジェクトの所定の指が伸びてもよい。このように、コントローラ320Rの操作ボタンに対する操作に応じて右手オブジェクトの指が制御されてもよい。
コントローラ320Lは、ユーザUの左手の位置や左手の指の動きを示す装置であって、左手の指によって操作される複数の操作ボタンを備えてもよい。コントローラ320Lの動きに応じて仮想空間内に存在する左手オブジェクト(アバターの仮想左手ともいう。)が動く。例えば、ユーザUがコントローラ320Lの所定の操作ボタンを押すことで、左手オブジェクトの所定の指が折れ曲がる一方、ユーザUがコントローラ320Lの所定の操作ボタンを離すことで、左手オブジェクトの所定の指が伸びてもよい。このように、コントローラ320Lの操作ボタンに対する操作に応じて左手オブジェクトの指が制御されてもよい。
制御装置120は、HMD110を制御するように構成されたコンピュータである。制御装置120は、位置センサ130から取得された情報に基づいて、HMD110の位置情報を特定し、当該特定された位置情報に基づいて、仮想空間における仮想カメラの位置と、現実空間におけるHMD110を装着したユーザUの位置を正確に対応付けることができる。さらに、制御装置120は、位置センサ130及び/又は外部コントローラ320から送信された情報に基づいて、外部コントローラ320の動作を特定し、当該特定された外部コントローラ320の動作に基づいて、仮想空間内に表示される手オブジェクトの動作と現実空間における外部コントローラ320の動作を正確に対応付けることができる。特に、制御装置120は、位置センサ130及び/又はコントローラ320Lから送信された情報に基づいて、コントローラ320Lの動作を特定し、当該特定されたコントローラ320Lの動作に基づいて、仮想空間内に表示される左手オブジェクトの動作と現実空間におけるコントローラ320Lの動作(ユーザUの左手の動作)を正確に対応付けることができる。同様に、制御装置120は、位置センサ及び/コントローラ320Rから送信された情報に基づいて、コントローラ320Rの動作を特定し、当該特定されたコントローラ320Rの動作に基づいて、仮想空間内に表示される右手オブジェクトの動作と現実空間におけるコントローラ320Rの動作(ユーザUの右手の動作)を正確に対応付けることができる。
また、制御装置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は、視野画像データに基づいてHMD110の表示部112に視野画像を表示する。これにより、ユーザUは、仮想空間に没入することができる。
記憶部(ストレージ)123は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、USBフラッシュメモリ等の記憶装置であって、プログラムや各種データを格納するように構成されている。記憶部123は、本実施形態に係る情報処理方法の少なくとも一部をコンピュータに実行させるための制御プログラムや、複数のユーザによる仮想空間の共有を実現するための制御プログラムを格納してもよい。また、記憶部123には、ユーザUの認証プログラムや各種画像やオブジェクト(指示オブジェクト等)に関するデータが格納されてもよい。さらに、記憶部123には、各種データを管理するためのテーブルを含むデータベースが構築されてもよい。
I/Oインターフェース124は、位置センサ130と、HMD110と、外部コントローラ320と、ヘッドフォン116と、マイク118とをそれぞれ制御装置120に通信可能に接続するように構成されており、例えば、USB(Universal Serial Bus)端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High―Definition Multimedia Interface)端子等により構成されている。尚、制御装置120は、位置センサ130と、HMD110と、外部コントローラ320と、ヘッドフォン116と、マイク118とのそれぞれと無線接続されていてもよい。
通信インターフェース125は、制御装置120をLAN(Local Area Network)、WAN(Wide Area Network)又はインターネット等の通信ネットワーク30に接続させるように構成されている。通信インターフェース125は、通信ネットワーク30を介してサーバ等の外部装置と通信するための各種有線接続端子や、無線接続のための各種処理回路を含んでおり、通信ネットワーク30を介して通信するための通信規格に適合するように構成されている。
次に、図4から図7を参照することで視野画像をHMD110に表示するための処理について説明する。図4は、視野画像をHMD110に表示する処理を示すフローチャートである。図5は、仮想空間200の一例を示すxyz空間図である。図6の状態(a)は、図5に示す仮想空間200のyx平面図である。図6の状態(b)は、図5に示す仮想空間200のzx平面図である。図7は、HMD110に表示された視野画像Vの一例を示す図である。
図4に示すように、ステップS1において、制御部121(図3参照)は、仮想カメラ300と、各種オブジェクトとを含む仮想空間200を示す仮想空間データを生成する。図5に示すように、仮想空間200は、中心位置210を中心とした全天球として規定される(図5では、上半分の天球のみが図示されている)。また、仮想空間200では、中心位置210を原点とするxyz座標系が設定されている。仮想カメラ300は、HMD110に表示される視野画像V(図7参照)を特定するための視軸Lを規定している。仮想カメラ300の視野を定義するuvw座標系は、現実空間におけるユーザUの頭部を中心として規定されたuvw座標系に連動するように決定される。また、HMD110を装着したユーザUの現実空間における移動に連動して、制御部121は、仮想カメラ300を仮想空間200内で移動させてもよい。
次に、ステップS2において、制御部121は、仮想カメラ300の視野CV(図6参照)を特定する。具体的には、制御部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は、図6の状態(a)に示すxy平面において、視軸Lを中心とした極角αの角度範囲として設定される第1領域CVaと、図6の状態(b)に示すxz平面において、視軸Lを中心とした方位角βの角度範囲として設定される第2領域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を表示する(図7参照)。このように、HMD110を装着しているユーザUの動きに応じて、仮想カメラ300の視野CVが変化し、HMD110の表示部112に表示される視野画像Vが変化するので、ユーザUは仮想空間200に没入することができる。
尚、仮想カメラ300は、左目用仮想カメラと右目用仮想カメラを含んでもよい。この場合、制御部121は、仮想空間データと左目用仮想カメラの視野に基づいて、左目用の視野画像を示す左目用視野画像データを生成する。さらに、制御部121は、仮想空間データと、右目用仮想カメラの視野に基づいて、右目用の視野画像を示す右目用視野画像データを生成する。その後、制御部121は、左目用視野画像データに基づいて、左目用表示部に左目用の視野画像を表示すると共に、右目用視野画像データに基づいて、右目用表示部に右目用の視野画像を表示する。このようにして、ユーザUは、左目用視野画像と右目用視野画像との間の視差により、視野画像を3次元的に視認することができる。尚、仮想カメラは、後述するように、ユーザによって操作されるアバターの目の位置に配置されてもよい。例えば、左目用仮想カメラは、アバターの左目に配置される一方で、右目用仮想カメラは、アバターの右目に配置されてもよい。
また、図4に示すステップS1〜S4の処理は1フレーム(動画を構成する静止画像)毎に実行されてもよい。例えば、動画のフレームレートが90fpsである場合、ステップS1〜S4の処理はΔT=1/90(秒)間隔で繰り返し実行されてもよい。このように、ステップS1〜S4の処理が所定間隔ごとに繰り返し実行されるため、HMD110の動作に応じて仮想カメラ300の視野が更新されると共に、HMD110の表示部112に表示される視野画像Vが更新される。
(第1実施形態)
次に、図8を参照して本開示の第1実施形態について以下に説明する。図8は、第1実施形態に係る仮想空間200Aを模式的に示した図である。図8に示すように、仮想空間200Aは、仮想カメラ300と、左手オブジェクト5Lと、右手オブジェクト5Rと、左仮想コントローラ6Lと、右仮想コントローラ6Rとを含む。更に、仮想空間200Aは、第1指示オブジェクト3と、第2指示オブジェクト4と、第1連結オブジェクト12,13と、第2連結オブジェクト14,16とを含む。
図8に示す仮想空間200Aは、アクションゲーム等の開始前にユーザUに所定のアクション(例えば、仮想剣を取り出すアクション)に関連付けられた所定の手の動きと指の動きを習得させるためのチュートリアル用の仮想空間である。制御部121(図3参照)は、図8に示す仮想空間200Aを規定する仮想空間データを生成した上で、仮想カメラ300の視野CVと仮想空間データに基づいて視野画像データを生成する。その後、制御部121は、視野画像データに基づいて視野画像VをHMD110上に表示する。
制御部121は、ユーザUの左手の動きを示すコントローラ320L(図1参照)の動きに応じて、仮想空間200A内で左手オブジェクト5L(操作オブジェクトの一例)を動かす。特に、制御部121は、位置センサ130及び/又はコントローラ320Lから送信された情報に基づいて、コントローラ320Lの動作を特定し、当該特定されたコントローラ320Lの動作に基づいて、左手オブジェクト5Lの動作とコントローラ320Lの動作(ユーザUの左手の動作)を正確に対応付ける。例えば、制御部121は、コントローラ320Lの移動に応じて左手オブジェクト5Lを移動させると共に、コントローラ320Lの操作ボタンに対する操作に応じて左手オブジェクト5Lの指を動かしてもよい。
同様に、制御部121は、ユーザUの右手の動きを示すコントローラ320R(図1参照)の動きに応じて、仮想空間200A内で右手オブジェクト5R(操作オブジェクトの一例)を動かす。特に、制御部121は、位置センサ130及び/又はコントローラ320Rから送信された情報に基づいて、コントローラ320Rの動作を特定し、当該特定されたコントローラ320Rの動作に基づいて、右手オブジェクト5Rの動作とコントローラ320Rの動作(ユーザUの右手の動作)を正確に対応付ける。例えば、制御部121は、コントローラ320Rの移動に応じて右手オブジェクト5Rを移動させると共に、コントローラ320Rの操作ボタンに対する操作に応じて右手オブジェクト5Rの指を動かしてもよい。
左仮想コントローラ6Lは、コントローラ320Lに対応するオブジェクトであって、左手オブジェクト5Lと視覚的に関連付けられる。左仮想コントローラ6Lは、仮想ボタン7L,8Lを備える。仮想ボタン7Lは、コントローラ320Lの第1ボタンに対応するオブジェクトである一方、仮想ボタン8Lは、コントローラ320Lの第2ボタンに対応するオブジェクトである。左仮想コントローラ6Lは、左手オブジェクト5Lと共に移動してもよい。現実空間においてコントローラ320Lの第1ボタンがユーザUによって押されることで、左仮想コントローラ6Lの仮想ボタン7Lが左手オブジェクト5Lの指によって押されてもよい。
右仮想コントローラ6Rは、現実空間のコントローラ320Rに対応するオブジェクトであって、右手オブジェクト5Rと視覚的に関連付けられる。右仮想コントローラ6Rは、仮想ボタン7R,8Rを備える。仮想ボタン7Rは、コントローラ320Rの第1ボタンに対応するオブジェクトである一方、仮想ボタン8Rは、コントローラ320Rの第2ボタンに対応するオブジェクトである。右仮想コントローラ6Rは、右手オブジェクト5Rと共に移動してもよい。現実空間においてコントローラ320Rの第1ボタンがユーザUによって押されることで、右仮想コントローラ6Rの仮想ボタン7Rが右手オブジェクト5Rの指によって押されてもよい。
また、制御部121は、コントローラ320L(320R)から送信されたコントローラ320L(320R)の種類を示す情報に基づいて、左仮想コントローラ6L(右仮想コントローラ6R)の形状等の視覚的態様を特定してもよい。
第1指示オブジェクト3は、ユーザUの手(手全体)に誘導動作をさせるように誘導するように構成されている。ここで、誘導動作とは、第1指示オブジェクト3によって誘導されるユーザUの動作をいう。特に、第1指示オブジェクト3は、ユーザUの手(手全体の動き)に第1の動きをさせるように誘導するように構成されている。本実施形態では、「左手を下から上に動かしてください」旨の動作指示が第1指示オブジェクト3に表示されている。ユーザUは、第1指示オブジェクト3を視認することで、左手を下から上に動かすように誘導される。第1指示オブジェクト3は、仮想空間200Aに固定的に配置されてもよい。
第2指示オブジェクト4は、ユーザUの指に誘導動作をさせるように誘導するように構成されている。ここで、誘導動作とは、第2指示オブジェクト4によって誘導されるユーザUの動作をいう。特に、第2指示オブジェクト4は、ユーザUの指に第2の動きをさせるように誘導するように構成されている。本実施形態では、「左コントローラの第1ボタンと第2ボタンを押してください」旨の動作指示が第2指示オブジェクト4に表示されている。ユーザUは、第2指示オブジェクト4を視認することで、コントローラ320Lの第1ボタンと、第2ボタンを押すように誘導される。
第1連結オブジェクト12は、左手オブジェクト5Lと第2指示オブジェクト4とを視覚的に関連付けるように連結するように構成される。このように、第1連結オブジェクト12によって、第2指示オブジェクト4は、左手オブジェクト5Lに視覚的に関連付けられる。また、左手オブジェクト5Lの移動に応じて、左手オブジェクト5Lと第2指示オブジェクト4とを視覚的に関連付け続けるように、第1連結オブジェクト12の視覚的態様(形状等)が更新されてもよい。この点において、制御部121は、左手オブジェクト5Lの位置を更新した後に、第1連結オブジェクト12の視覚的態様を更新する。左手オブジェクト5Lと第2指示オブジェクト4との間の距離が大きい程、第1連結オブジェクト12の長さは大きくなる。その反対に、左手オブジェクト5Lと第2指示オブジェクト4との間の距離が小さい程、第1連結オブジェクト12の長さは小さくなる。尚、第1連結オブジェクト12によって第2指示オブジェクト4が左手オブジェクト5Lに視覚的に関連付けられていることをユーザUが視認できる限りにおいて、第1連結オブジェクト12の表示形態は特に限定されない。例えば、第1連結オブジェクト12の一部が可視化されていなくてもよい(透明化されてもよい)。
第1連結オブジェクト13は、右手オブジェクト5Rと第2指示オブジェクト4とを視覚的に関連付けるように連結するように構成される。このように、第1連結オブジェクト13によって、第2指示オブジェクト4は、右手オブジェクト5Rに視覚的に関連付けられる。また、右手オブジェクト5Rの移動に応じて、右手オブジェクト5Rと第2指示オブジェクト4とを視覚的に関連付け続けるように、第1連結オブジェクト13の視覚的態様(形状等)が更新されてもよい。尚、第1連結オブジェクト13によって第2指示オブジェクト4が右手オブジェクト5Rに視覚的に関連付けられていることをユーザUが視認できる限りにおいて、第1連結オブジェクト13の表示形態は特に限定されない。例えば、第1連結オブジェクト13の一部が可視化されていなくてもよい。
第2連結オブジェクト14は、左仮想コントローラ6Lの仮想ボタン7Lと第2指示オブジェクト4とを連結するように構成される。第2連結オブジェクト14によって、第2指示オブジェクト4は、仮想ボタン7Lに視覚的に関連付けられる。尚、第2連結オブジェクト14の表示形態は特に限定されない。例えば、第2連結オブジェクト14の一部が可視化されなくてもよい。
第2連結オブジェクト16は、左仮想コントローラ6Lの仮想ボタン8Lと第2指示オブジェクト4とを連結するように構成される。第2連結オブジェクト16によって、第2指示オブジェクト4は、仮想ボタン8Lに視覚的に関連付けられる。また、左手オブジェクト5Lの移動に応じて、第2連結オブジェクト14,16の視覚的態様(形状等)が更新されてもよい。尚、第2連結オブジェクト16の表示形態は特に限定されない。例えば、第2連結オブジェクト16の一部が可視化されなくてもよい。また、本実施形態では、「左コントローラの第1ボタンと第2ボタンを押してください」旨の動作指示が第2指示オブジェクト4に表示されていることから、2つの第2連結オブジェクト14,16が生成されている。一方、「左コントローラの第1ボタンを押してください」旨の動作指示が第2指示オブジェクト4に表示される場合、第2連結オブジェクト14のみが生成されてもよい。
本実施形態では、ユーザUの左手を下から上に動かした後に、コントローラ320Lの第1ボタンと第2ボタンを押すことで、仮想剣(対象オブジェクトの一例)を取り出すアクションが実行される場合、第1指示オブジェクト3は、当該アクションに関連付けられた手の動き(第1の動き)を示すと共に、第2指示オブジェクト4は、当該アクションに関連付けられた指の動き(第2の動き)を示す。このように、ユーザUは、第1指示オブジェクト3を視認することで、仮想剣を取り出すアクションに関連付けられた手の動き(即ち、左手を下から上に動かすこと)となるように手を動かすことができると共に、第2指示オブジェクト4を視認することで、当該アクションに関連付けられた指の動き(即ち、コントローラ320Lの第1ボタンと、第2ボタンを押すこと)となるように指を動かすことができる。このように、ユーザUは、チュートリアルにおいて、第1指示オブジェクト3と第2指示オブジェクト4を視認することで、仮想空間200A内での仮想剣の出現に関するアクションに関連付けられた手の動きと指の動きを比較的容易に習得することができる。このように、仮想空間におけるユーザの利便性を高めることができる。
また、本実施形態によれば、第1連結オブジェクト12,13によって、ユーザUの視線を第2指示オブジェクト4に誘導させることができる。さらに、左手オブジェクト5Lの移動に応じて第1連結オブジェクト12の視覚的態様が更新されると共に、右手オブジェクト5Rの移動に応じて第1連結オブジェクト13の視覚的態様が更新される。このように、左手オブジェクト5L又は右手オブジェクト5Rを動かした場合でも、第1連結オブジェクトによってユーザUの視線を第2指示オブジェクト4に誘導させることができる。
さらに、第2連結オブジェクト14,16によって、ユーザUの視線を仮想ボタン7L,8Lと第2指示オブジェクト4に誘導させることができる。このため、ユーザUは、チュートリアルにおいて、第2指示オブジェクト4と仮想ボタン7L,8Lの両方を視認することで、仮想空間200A内での所定のアクションに関連付けられた指の動きを比較的容易に習得することができる。
尚、本実施形態では、所定のアクションの一例として仮想剣を取り出すアクションについて説明したが、本実施形態は様々なアクションのチュートリアルに適用可能である。例えば、ユーザUの手の動きが第1の動きとなるようにユーザUの手を動かすと共に、ユーザUの指の動きが第2の動きとなるようにユーザUの指を動かすことで、第1のアクションが実行される場合では、第1指示オブジェクト3は、第1の動きを示す動作指示を表示することで、ユーザUの手に第1の動きをさせるように誘導する。第2指示オブジェクト4は、第2の動きを示す動作指示を表示することで、ユーザUの指に第2の動きをさせるように誘導する。
また、本実施形態では、2つの第1連結オブジェクト12,13が生成されているが、第1連結オブジェクト12,13のうちの一方のみが生成されてもよい。仮想空間200Aは、第1指示オブジェクト3と左手オブジェクト5Lを視覚的に関連付けるように連結する連結表示オブジェクト及び/又は第1指示オブジェクト3と右手オブジェクト5Rとを視覚的に関連付けるように連結する連結表示オブジェクトをさらに含んでもよい。この場合、第1指示オブジェクト3は仮想空間200A内に固定的に配置されている。このため、第1指示オブジェクト3が仮想カメラ300の視野CV外に位置する場合でも、連結表示オブジェクトによってユーザUの視線を第1指示オブジェクト3に誘導させることができる。特に、連結表示オブジェクトが視野画像上に表示されるので、ユーザUの視線を第1指示オブジェクト3に誘導させることができる。
また、第2指示オブジェクト4には、所定のアクションに関連するユーザUの指の動きを示す動作指示だけでなく、所定のアクションに関連するユーザUの手の動きを示す動作指示が表示されてもよい。この場合、第1指示オブジェクト3は、仮想空間200A内に配置されなくてもよい。
次に、図9及び図10を参照して第2指示オブジェクト4を移動させる処理について以下に説明する。図9は、第2指示オブジェクト4が仮想カメラ300の視野CV内の所定の位置に移動する様子を示した模式図である。図10は、第2指示オブジェクト4を仮想カメラ300の視野CV(ユーザUの視野ともいう。)内の所定の位置に移動させる処理を説明するためのフローチャートである。
図9に示すように、前提条件として、仮想カメラ300の視野CVの移動に伴い第2指示オブジェクト4が仮想カメラ300の視野CV(ユーザUの視野)外に位置したとする。このとき、図10に示すように、制御部121は、第2指示オブジェクト4が視野CV内に位置しているかどうかを判定する(ステップS10)。次に、制御部121は、第2指示オブジェクト4が視野CV内に位置していないと判定した場合(ステップS10でNO)、第2指示オブジェクト4が視野CV内の所定の位置に配置され続けるように第2指示オブジェクト4を移動させる。一方、制御部121は、第2指示オブジェクト4が視野CV内に位置していると判定した場合(ステップS10でYES)、本処理は終了する。
ステップS11の処理において、制御部121は、仮想カメラ300の動作が終了した後の所定期間経過後に、視野CV内の所定の位置に向けて第2指示オブジェクト4を徐々に移動させてもよい。または、制御部121は、第2指示オブジェクト4が視野CV外に位置したと判定した後の次フレームにおいて、第2指示オブジェクト4の移動処理を開始してもよい。また、視野CV内の所定の位置は、特に限定されない。
本実施形態によれば、仮想カメラ300の視野CVの移動に応じて、第2指示オブジェクト4が視野CV内の所定の位置に配置され続けるように移動する。このように、第2指示オブジェクト4が視野CVに追随するため、仮想空間におけるユーザUの利便性を高めることができる。換言すれば、第2指示オブジェクト4が視野画像上の所定の位置に表示されるため、仮想空間におけるユーザUの利便性を高めることができる。
(第2実施形態)
次に、図11及び図12を参照して本開示の第2実施形態について以下に説明する。図11は、第2実施形態に係る仮想空間200Bを模式的に示した図である。図12は、仮想空間200Bに配置されたアバター9(指示オブジェクトの一例)の動きを説明するための図である。特に、図12は、仮想剣80(対象オブジェクトの一例)を取り出すアクションに関連する手の動きを演じるアバター9の右側面を示している。図12の状態(a)は、仮想剣を取り出すアクションの第1段階におけるアバター9の左手93Lの動きを示す。図12の状態(b)は、当該アクションの第2段階における左手93Lの動きを示す。図12の状態(c)は、当該アクションの第3段階における左手93Lの動きを示す。図12の状態(d)は、仮想剣80を取り出したアバター9を示す。第2実施形態に係る仮想空間200Bは、第1指示オブジェクト3の代わりにアバター9が仮想空間上に配置されている点で第1実施形態に係る仮想空間200Aとは相違する。
図12に示すように、アバター9は、ユーザUの手の動き(手全体の動き)に第1の動きをさせるように誘導するように構成されている。特に、アバター9は、第1の動きを実行させるべきユーザUの左手に相当する左手93Lを含んでいる。このように、アバター9は、左手オブジェクト5Lに視覚的に関連付けられる。アバター9の動作は、制御部121によって制御される(つまり、アバター9は、プロセッサによって制御されるアバターであって、他のユーザによって操作されるアバターではない。)。本実施形態では、アバター9は、仮想剣80を取り出すアクションに関連付けられた手の動きの手本を示している。具体的には、アバター9は、左手93Lを動かすことで、仮想剣80を取り出すアクションに関連付けられた左手の動きの手本を示している(尚、本アクションでは右手を動かさないため、アバター9は右手を動かしていない)。このように、ユーザUは、チュートリアルにおいて、アバター9の左手93Lの動きと第2指示オブジェクト4を視認することで、仮想剣80を取り出すアクションに関連付けられた手の動き(第1の動き)と指の動き(第2の動き)を比較的容易に習得することができる。また、仮想剣80を取り出すアクションに関連付けられた手の動きに引き続いて実行される指の動きに応じて、制御部121は、左手オブジェクト5Lによって操作される仮想剣80を生成する(図12の状態(d)参照)。
また、アバター9は、仮想剣80を取り出すアクションに関連付けられた左手の動きの手本を示しているため、左手オブジェクト5Lに視覚的に関連付けられている。つまり、ユーザUは、アバター9の左手93Lを視認することで、自身の左手を動かすため、アバター9(より具体的には、アバター9の左手93L)は、左手オブジェクト5Lに視覚的に関連付けられている。また、アバター9は、仮想剣80を取り出すアクションに関連する左手93Lのみが動くように制御部121によって制御されるため、ユーザUの視線をアバター9の左手93Lに誘導させることができる。尚、習得すべきアクションがユーザUの右手の動きに関連する場合、アバター9は、アバター9の右手のみが動くように制御部121によって制御される。この場合、アバター9の右手は、右手オブジェクト5Rに関連付けられると共に、ユーザUの視線をアバター9の右手に誘導させることができる。
また、図11に示すように、アバター9は、仮想カメラ300に対して背を向けているため、アバター9はユーザUに対して背を向けた状態で視野画像上に表示される。特に、仮想カメラ300の視野CV内にアバター9が存在する場合に、制御部121は、アバター9の背面が視野画像上に表示されるように、アバター9の向きを設定している。このように、アバター9はユーザUに対して背を向けているため、アバター9とユーザUの向きが一致することで両者の動作の向きが一致するので、ユーザUは、アバター9の手の動きを比較的容易に真似することができる。
尚、本実施形態では、仮想空間200Bは、アバター9(特に、アバター9の左手)と左手オブジェクト5Lを視覚的に関連付けるように連結する連結表示オブジェクト及び/又はアバター9(特に、アバター9の右手)と右手オブジェクト5Rとを連結する連結表示オブジェクトをさらに含んでもよい。
また、ユーザ端末1の制御部121によって実行される各種処理をソフトウェアによって実現するために、各種処理をコンピュータ(プロセッサ)に実行させるための制御プログラムが記憶部123又はメモリに予め組み込まれていてもよい。または、制御プログラムは、磁気ディスク(HDD、フロッピーディスク)、光ディスク(CD−ROM,DVD−ROM、Blu−ray(登録商標)ディスク等)、光磁気ディスク(MO等)、フラッシュメモリ(SDカード、USBメモリ、SSD等)等のコンピュータ読取可能な記憶媒体に格納されていてもよい。この場合、記憶媒体が制御装置120に接続されることで、当該記憶媒体に格納された制御プログラムが、記憶部123に組み込まれる。そして、記憶部123に組み込まれた制御プログラムがRAM上にロードされて、プロセッサがロードされた当該プログラムを実行することで、制御部121は各種処理を実行する。
また、制御プログラムは、通信ネットワーク30上のコンピュータから通信インターフェース125を介してダウンロードされてもよい。この場合も同様に、ダウンロードされた当該制御プログラムが記憶部123に組み込まれる。
以上、本開示の実施形態について説明をしたが、本発明の技術的範囲が本実施形態の説明によって限定的に解釈されるべきではない。本実施形態は一例であって、特許請求の範囲に記載された発明の範囲内において、様々な実施形態の変更が可能であることが当業者によって理解されるところである。本発明の技術的範囲は特許請求の範囲に記載された発明の範囲及びその均等の範囲に基づいて定められるべきである。
本実施形態では、ユーザUの手の動きを示す外部コントローラ320の動きに応じて、アバターの手の移動が制御されているが、ユーザUの手自体の移動量に応じて、仮想空間内における手オブジェクトの移動が制御されてもよい。例えば、外部コントローラを用いる代わりに、ユーザの指に装着されるグローブ型デバイスや指輪型デバイスを用いることで、位置センサ130により、ユーザUの手の位置や移動量を検出することができると共に、ユーザUの指の動きや状態を検出することができる。また、位置センサ130は、ユーザUの手(指を含む)を撮像するように構成されたカメラであってもよい。この場合、カメラを用いてユーザの手を撮像することにより、ユーザの指に直接何らかのデバイスを装着させることなく、ユーザの手が表示された画像に基づいて、ユーザUの手の位置や移動量を検出することができると共に、ユーザUの指の動きや状態を検出することができる。
また、本実施形態では、ユーザUの身体の一部である手(左手と右手)の動きに応じて手オブジェクト(左手オブジェクトと右手オブジェクト)が動かされているが、本実施形態はこれには限定されない。例えば、ユーザUの身体の一部であるユーザUの足(左足、右足)の動きに応じて足オブジェクト(左足オブジェクトと右足オブジェクト)が動かされてもよい。所定のアクションがユーザUの足の動きに関連する場合、ユーザUの足に誘導動作をさせるように誘導すると共に、足オブジェクトに視覚的に関連付けられた指示オブジェクトが生成されてもよい。
本実施形態において、仮想空間は、ユーザにVR(Virtual Reality)、AR(Argumented Reality)及びMR(Mixed Reality)といった、仮想体験を提供するために用いられる。仮想空間がVRを提供する場合、仮想空間の背景にはメモリに保存された背景データが使用される。仮想空間がAR又はMRを提供する場合、仮想空間の背景には現実空間が使用される。この場合、HMD110が透過型の表示装置(光学シースルーまたはビデオシースルー型の表示装置)を備えることにより、現実空間が仮想空間の背景として使用され得る。仮想空間がMRに適用される場合、オブジェクトは、現実空間によって影響を与えられてもよい。このように、仮想空間が背景や仮想オブジェクトといった仮想シーンを少なくとも一部に含むことにより、ユーザには当該仮想シーンとの相互作用が可能な仮想体験が提供され得る。また、仮想空間がAR又はMRに適用される場合、手オブジェクトの代わりにユーザの手が用いられてもよい。この場合、図8に示す左手オブジェクト5Lに代わりにユーザの左手が仮想空間200Aに配置されると共に、右手オブジェクト5Rの代わりにユーザの右手が仮想空間200Aに配置される。第2指示オブジェクト4は、第1連結オブジェクト12によってユーザの左手に視覚的に関連付けられると共に、第1連結オブジェクト13によってユーザの右手に視覚的に関連付けられる。