(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
[本発明の実施形態の詳細]
本発明の実施形態に係る仮想空間を提供する方法、および、プログラムの具体例を、以下に図面を参照しつつ説明する。本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
【0011】
(HMDシステム100の構成)
図1は、HMDシステム100の構成を示す図である。この図に示すように、HMDシステム100は、HMD110、HMDセンサ120、コントローラセンサ140、制御回路部200、およびコントローラ300を備えている。
【0012】
HMD110は、ユーザの頭部に装着される。HMD110は、非透過型の表示装置であるディスプレイ112、センサ114、および注視センサ130を備えている。HMD110は、右目用画像および左目用画像をディスプレイ112にそれぞれ表示することにより、ユーザの両目の視差に基づきユーザに立体的に視認される3次元画像を、ユーザに視認させる。これにより仮想空間をユーザに提供する。ディスプレイ112がユーザの眼前に配置されているので、ユーザは、ディスプレイ112に表示される画像を通じて仮想空間に没入できる。これにより、ユーザは仮想現実(Virtual Reality:VR)を体験することができる。仮想空間は、背景、ならびにユーザが操作可能な各種のオブジェクトおよびメニュー画像等を含み得る。
【0013】
ディスプレイ112は、右目用画像を表示する右目用サブディスプレイと、左目用画像を表示する左目用サブディスプレイとを含んでもよい。または、ディスプレイ112は、右目用画像および左目用画像を共通の画面に表示する1つの表示装置であってもよい。このような表示装置として、たとえば、表示画像が一方の目にしか認識できないようにするシャッターを高速に切り替えることにより、右目用画像および左目用画像を独立して交互に表示する表示装置が挙げられる。
【0014】
また、本実施形態において、HMD110には透過型ディスプレイが適用されてもよい。つまり、HMD110は、透過型HMDであってもよい。この場合、3次元画像を透過型ディスプレイに表示することによって、後述する仮想オブジェクトを現実空間に仮想的に配置することができる。これにより、ユーザは現実空間に仮想オブジェクトが配置された複合現実(Mixes Reality:MR)を体験することができる。本実施形態において、仮想現実や複合現実といった、ユーザが仮想オブジェクトと相互作用できる体験を仮想体験と称することがある。以下では、仮想現実を提供するための方法を一例として詳説する。
【0015】
(制御回路部200のハード構成)
図2は、制御回路部200のハード構成を示す図である。制御回路部200は、HMD110に仮想空間を提供させるためのコンピュータである。
図2に示すように、制御回路部200は、プロセッサ、メモリ、ストレージ、入出力インターフェース、および通信インターフェースを備えている。これらは、データ伝送路としてのバスを通じて、制御回路部200内において互いに接続されている。
【0016】
プロセッサは、CPU(Central Processing Unit)、MPU(Micro-processing unit)、またはGPU(Graphics Processing Unit)等を含んで構成され、制御回路部200およびHMDシステム100全体の動作を制御する。
【0017】
メモリは、主記憶として機能する。メモリには、プロセッサによって処理されるプログラムおよび制御用データ(演算パラメータなど)が記憶される。メモリは、ROM(Read Only Memory)またはRAM(Random Access Memory)等を含んで構成され得る。
【0018】
ストレージは、補助記憶として機能する。ストレージには、HMDシステム100全体の動作を制御するためのプログラム、各種のシミュレーションプログラム、ユーザ認証プログラム、および、仮想空間を規定するための各種のデータ(画像およびオブジェクト等)が格納されている。さらには、各種のデータを管理するためのテーブルを含むデータベースがストレージに構築されていてもよい。ストレージは、フラッシュメモリまたはHDD(Hard Disc Drive)等を含んで構成され得る。
【0019】
入出力インターフェースは、USB(Universal Serial Bus)端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High-Definition Multimedia Interface)端子等の各種の有線接続端子、および、無線接続のための各種の処理回路を含んで構成されている。入出力インターフェースは、HMD110と、HMDセンサ120およびコントローラセンサ140を含む各種のセンサと、コントローラ300とを互いに接続する。
【0020】
通信インターフェースは、ネットワークNWを介して外部装置と通信するための各種の有線接続端子、および、無線接続のための各種の処理回路を含んで構成される。通信インターフェースは、LAN(Local Area Network)またはインターネットを介して通信するための各種の通信規格およびプロトコルに適合するように、構成されている。
【0021】
制御回路部200は、ストレージに格納された所定のアプリケーションプログラムをメモリにロードして実行することによって、ユーザに仮想空間を提供する。プログラムの実行時に、メモリおよびストレージには、仮想空間内に配置される各種のオブジェクトを操作したり、各種のメニュー画像等を表示および制御したりするための各種のプログラムが格納される。
【0022】
制御回路部200は、HMD110に搭載されていてもよいし、されていなくてもよい。すなわち制御回路部200は、HMD110から独立した別のハードウェア(たとえば、パーソナルコンピュータ、またはネットワークを通じてHMD110と通信可能なサーバ装置)であってもよい。制御回路部200は、複数のハードウェアの協働によって1または複数の機能が実装される形態の装置であってもよい。または、制御回路部200が有する全機能のうち一部の機能のみがHMD110に実装され、残りの機能が別のハードウェアに実装されていてもよい。
【0023】
HMDシステム100を構成するHMD110等の各要素には、予め、グローバル座標系(基準座標系、xyz座標系)が設定されている。このグローバル座標系は、現実空間における、鉛直方向、鉛直方向と直交する横方向、ならびに、鉛直方向および横方向の双方と直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。本実施形態では、グローバル座標系は視点座標系の一種であるため、グローバル座標系における横方向、鉛直方向(上下方向)、および前後方向を、それぞれx軸、y軸、z軸とする。具体的には、グローバル座標系のx軸は現実空間の横方向に平行であり、y軸は現実空間の鉛直方向に平行であり、z軸は現実空間の前後方向に平行である。
【0024】
HMDセンサ120は、HMD110の動きを検出するためのポジション・トラッキング機能を有する。HMDセンサ120は、この機能によって、現実空間内におけるHMD110の位置および傾きを検出する。この検出を実現するために、HMD110は、図示しない複数の光源を備えている。各光源は、たとえば赤外線を発するLEDである。HMDセンサ120は、たとえば赤外線センサを含んで構成される。HMDセンサ120は、HMD110の光源から照射された赤外線を、赤外線センサによって検出することによって、HMD110の検出点を検出する。さらに、HMD110の検出点の検出値に基づき、ユーザの動きに応じたHMD110の現実空間内における位置および傾きを検出する。HMDセンサ120は、検出値の経時的変化に基づき、HMD110の位置および傾きの時間変化を決定することができる。
【0025】
HMDセンサ120は、光学カメラを含んで構成されてもよい。この場合、HMDセンサ120は、光学カメラによって得られたHMD110の画像情報に基づき、HMD110の位置および傾きを検出する。
【0026】
HMDセンサ120の代わりに、HMD110が、センサ114を用いて自身の位置および傾きを検出してもよい。この場合、センサ114は、たとえば角速度センサ、地磁気センサ、加速度センサ、またはジャイロセンサであればよい。HMD110は、これらのうち少なくとも1つを用いる。センサ114が角速度センサである場合、センサ114は、HMD110の動きに応じて、HMD110の現実空間における3軸回りの角速度を経時的に検出する。HMD110は、角速度の検出値に基づき、HMD110の3軸回りの角度の時間的変化を決定し、さらに、角度の時間的変化に基づきHMD110の傾きを検出することができる。
【0027】
HMD110がセンサ114による検出値に基づきHMD110の位置および傾きを自ら検出する場合、HMDシステム100にHMDセンサ120は不要である。逆に、HMD110から離れた位置に配置されるHMDセンサ120がHMD110の位置および傾きを検出する場合、HMD110にセンサ114は不要である。
【0028】
上述したように、グローバル座標系は現実空間の座標系と平行である。そのため、HMDセンサ120によって検出されたHMD110の各傾きは、グローバル座標系におけるHMD110の3軸周りの各傾きに相当する。HMDセンサ120は、グローバル座標系におけるHMDセンサ120の傾きの検出値に基づき、uvw視野座標系をHMD110に設定する。HMD110に設定されるuvw視野座標系は、HMD110を装着したユーザが物体を見る際の視点座標系に対応する。
【0029】
(uvw視野座標系)
図3は、HMD110に設定されるuvw視野座標系を例示する図である。HMDセンサ120は、HMD110の起動時に、グローバル座標系におけるHMD110の位置および傾きを検出する。そして、傾きの検出値に基づく3次元のuvw視野座標系を、HMD110に設定する。
図3に示すように、HMDセンサ120は、HMD110を装着したユーザの頭部を中心(原点)とした3次元のuvw視野座標系を、HMD110に設定する。具体的には、グローバル座標系を規定する横方向、鉛直方向、および前後方向(x軸、y軸、z軸)を、グローバル座標系内においてHMD110の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって得られる新たな3つの方向を、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、およびロール方向(w軸)として設定する。
【0030】
図3に示すように、HMDセンサ120は、HMD110を装着したユーザが直立しかつ正面を視認している場合、グローバル座標系に平行なuvw視野座標系をHMD110に設定する。この場合、グローバル座標系の横方向(x軸)、鉛直方向(y軸)、および前後方向(z軸)が、そのまま、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、およびロール方向(w軸)に一致する。
【0031】
HMDセンサ120は、HMD110にuvw視野座標系を設定した後、HMD110の動きに応じて、現在設定中のuvw視野座標系におけるHMD110の傾き(傾きの変化量)を検出することができる。この場合、HMDセンサ120は、HMD110の傾きとして、現在設定中のuvw視野座標系におけるHMD110のピッチ角(θu)、ヨー角(θv)、およびロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ方向周りのHMD110の傾き角度である。ヨー角(θv)は、uvw視野座標系におけるヨー方向周りのHMD110の傾き角度である。ロール角(θw)は、uvw視野座標系におけるロール方向周りのHMD110の傾き角度である。
【0032】
HMDセンサ120は、HMD110の傾きの検出値に基づき、動いた後のHMD110におけるuvw視野座標系を、新たにHMD110に設定する。HMD110と、HMD110のuvw視野座標系との関係は、HMD110の位置および傾きによらず常に一定である。HMD110の位置および傾きが変わると、それの変化に連動して、グローバル座標系におけるHMD110のuvw視野座標系の位置および傾きが同様に変化する。
【0033】
HMDセンサ120は、赤外線センサによって取得される赤外線の光強度および複数の検出点間の相対位置関係(検出点間の距離等)に基づき、HMD110の現実空間内における位置を、HMDセンサ120に対する相対位置として特定してもよい。また、特定した相対位置に基づき、現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の原点を決定してもよい。また、HMDセンサ120は、複数の検出点間の相対位置関係に基づきHMD110の現実空間内における傾きを検出し、さらに、その検出値に基づき現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の向きを決定してもよい。
【0034】
(仮想空間2の概要)
図4は、ユーザに提供される仮想空間2の概要を説明する図である。この図に示すように、仮想空間2は、中心21の360°方向全体を覆う全天球状の構造を有する。
図4には、仮想空間2の全体のうち上半分の天球のみを例示する。仮想空間2には、略正方形または略長方形の複数のメッシュが関連付けられている。仮想空間2における各メッシュの位置は、仮想空間2に規定される空間座標系(XYZ座標系)における座標として、予め規定されている。制御回路部200は、仮想空間2に展開可能なコンテンツ(静止画、動画等)を構成する各部分画像を、仮想空間2における対応する各メッシュに対応付けることによって、ユーザによって視認可能な仮想空間画像22が展開される仮想空間2をユーザに提供する。
【0035】
仮想空間2には、中心21を原点とするXYZ空間座標系が規定されている。XYZ座標系は、たとえばグローバル座標系に平行である。XYZ座標系は視点座標系の一種であるため、XYZ座標系における横方向、鉛直方向(上下方向)、および前後方向を、それぞれX軸、Y軸、Z軸とする。すなわち、XYZ座標系のX軸(横方向)がグローバル座標系のx軸と平行であり、XYZ座標系のY軸(上下方向)がグローバル座標系のy軸と平行であり、XYZ座標系のZ軸(前後方向)がグローバル座標系のz軸と平行である。
【0036】
HMD110の起動時(初期状態)において、仮想空間2の中心21に仮想カメラ1が配置されている。仮想カメラ1は、現実空間内におけるHMD110の動きに連動して、仮想空間2内において同様に動く。これにより、現実空間内におけるHMD110の位置および向きの変化が、仮想空間2内において同様に再現される。
【0037】
仮想カメラ1には、HMD110と同様にuvw視野座標系が規定される。仮想空間2内における仮想カメラ1のuvw視野座標系は、現実空間(グローバル座標系)内におけるHMD110のuvw視野座標系に変動するように規定されている。したがって、HMD110の傾きが変化すると、それに連動して仮想カメラ1の傾きも変化する。仮想カメラ1は、HMD110を装着したユーザの現実空間における移動に連動して、仮想空間2において移動することもできる。
【0038】
仮想空間2における仮想カメラ1の位置および傾きに応じて、仮想空間2における仮想カメラ1の向きが決まる。これにより、仮想空間2に展開される仮想空間画像22をユーザが視認する際の基準となる視線(基準視線5)が決まる。制御回路部200は、基準視線5に基づき、仮想空間2における視界領域23を決定する。視界領域23は、仮想空間2のうち、HMD110を装着したユーザの視界に対応する領域である。
【0039】
図5は、視界領域23の断面を示す図である。
図5の(a)に、仮想空間2において視界領域23をX方向から見たYZ断面を示す。
図5の(b)に、仮想空間2において視界領域23をY方向から見たXZ断面を示す。視界領域23は、基準視線5と仮想空間2のYZ断面とによって定義される範囲である第1領域24(
図5の(a)参照)と、基準視線5と仮想空間2のXZ断面とによって定義される範囲である第2領域25(
図5の(b)参照)とを有する。制御回路部200は、仮想空間2における基準視線5を中心として極角αを含む範囲を、第1領域24として設定する。また、仮想空間2における基準視線5を中心とした方位角βを含む範囲を、第2領域25として設定する。
【0040】
HMDシステム100は、仮想空間画像22のうち視界領域23に重畳する部分である視界画像26をHMD110のディスプレイ112に表示させることによって、ユーザに仮想空間2を提供する。ユーザがHMD110を動かせば、それに連動して仮想カメラ1も動き、その結果、仮想空間2における視界領域23の位置が変化する。これによりディスプレイ112に表示される視界画像26が、仮想空間画像22のうち、仮想空間2においてユーザが向いた箇所(=視界領域23)に重畳する画像に更新される。したがってユーザは、仮想空間2における所望の箇所を視認することができる。
【0041】
ユーザは、HMD110を装着している間、現実世界を目にすることなく、仮想空間2に展開される仮想空間画像22のみを視認する。そのためHMDシステム100は、仮想空間2への高い没入感をユーザに与えることができる。
【0042】
制御回路部200は、HMD110を装着したユーザの現実空間における移動に連動して、仮想カメラ1を仮想空間2内において移動させてもよい。この場合、制御回路部200は、仮想カメラ1の仮想空間2内における位置および向きに基づき、仮想空間2のうちHMD110のディスプレイ112に投影されることによってユーザが視認する視界領域23を特定する。
【0043】
仮想カメラ1は、右眼用画像を提供する右眼用仮想カメラと、左眼用画像を提供する左眼用仮想カメラとを含むことが好ましい。さらに、2つの仮想カメラには、ユーザが3次元の仮想空間2を認識できるように適切な視差が設定されていることが好ましい。本実施形態では、このような2つの仮想カメラのロール方向が合成されることによって生成されるロール方向(w)がHMD110のロール方向(w)に適合されるような仮想カメラ1のみを、代表して図示および説明するものとする。
【0044】
(視線方向の検出)
注視センサ130は、ユーザの右目および左目の視線が向けられる方向(視線方向)を検出するアイトラッキング機能を有する。注視センサ130として、アイトラッキング機能を有する公知のセンサを採用することができる。注視センサ130は、右目用センサおよび左目用センサを備えていることが好ましい。注視センサ130は、たとえば、ユーザの右目および左目に赤外光を照射すると共に、照射光に対する角膜および虹彩からの反射光を受光することによって、各眼球の回転角を検出するセンサでもよい。注視センサ130は、検出した各回転角に基づき、ユーザの視線方向を検知することができる。
【0045】
注視センサ130によって検出されるユーザの視線方向は、ユーザが物体を視認する際の視点座標系における方向である。上述したように、HMD110のuvw視野座標系は、ユーザがディスプレイ112を視認する際の視点座標系に等しい。また、仮想カメラ1のuvw視野座標系は、HMD110のuvw視野座標系に連動している。したがってHMDシステム100では、注視センサ130によって検出されたユーザの視線方向を、仮想カメラ1のuvw視野座標系におけるユーザの視線方向と見なすことができる。
【0046】
図6は、ユーザの視線方向を決定する方法を例示する図である。この図に示すように、注視センサ130は、ユーザUの右目および左目の視線を検出する。ユーザUが近くを見ている場合、注視センサ130は、ユーザUの視線R1およびL1を検出する。ユーザが遠くを見ている場合、注視センサ130は、ユーザの視線R1およびL1よりも、HMD110のロール方向(w)とのなす角が小さい視線R2およびL2を特定する。注視センサ130は、検出値を制御回路部200に送信する。
【0047】
制御回路部200は、視線の検出値として視線R1およびL1を受信した場合、両者の交点である注視点N1を特定する。また、視線R2およびL2を受信した場合も、両者の交点である注視点N2(不図示)を特定する。制御回路部200は、特定した注視点N1に基づき、ユーザUの視線方向N0を検出する。制御回路部200は、たとえば、ユーザUの右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の伸びる方向を、視線方向N0として検出する。視線方向N0は、ユーザUが両目により実際に視線を向けている方向である。視線方向N0はまた、視界領域23に対してユーザUが実際に視線を向けている方向でもある。
【0048】
HMDシステム100は、HMDシステム100を構成するいずれかの要素に、マイクおよびスピーカを備えていてもよい。これにより、ユーザは仮想空間2内に対して、音声による指示を与えることができる。また、仮想空間内の仮想テレビにテレビ番組の放送を受信するために、HMDシステム100はいずれかの要素にテレビジョン受像機を含んでいてもよい。また、ユーザが取得した電子メール等を表示させるための、通信機能等を含んでいてもよい。
【0049】
(コントローラ300)
図7は、コントローラ300の構成を表す図である。コントローラ300は、ユーザの身体の一部の動きを検知することにより、仮想オブジェクトの動きを制御するために用いる装置の一例である。
図1に示すように、コントローラ300は、ユーザが右手に持って使用する右コントローラ320と、ユーザが左手に持って使用する左コントローラ330とからなる。右コントローラ320および左コントローラ330は、それぞれ別体の装置として構成される。ユーザは、右コントローラ320を持った右手と、左コントローラ330を持った左手とを、動かすことにより、ユーザの手の動きに連動する仮想オブジェクト(以下、状況に応じて仮想手、仮想右手、仮想左手、などと称することがある。)を自由に動かすことができる。なお、ユーザの頭部以外である身体の一部の動きを検知するための方法は、当該身体の一部に装着されるセンサを含むコントローラを用いる例に限られず、画像認識、その他任意の物理的、光学的な手法等を適用できる。たとえば、外部カメラを用いてユーザの身体の一部の初期位置を特定し、継続的にユーザの身体の一部の位置を特定することにより、ユーザの頭部以外である身体の一部の動きを検知できる。以下の説明においては、コントローラ300を用いたユーザの頭部以外である身体の一部の動きの検知について詳述する。
【0050】
図1に示すように、右コントローラ320および左コントローラ330は、それぞれ、操作ボタン302、赤外線LED(Light Emitting Diode)304、センサ306、およびトランシーバ308を備えている。右コントローラ320および左コントローラ330は、赤外線LED304およびセンサ306のうちいずれか一方のみを備えていてもよい。以下の説明において、右コントローラ320および左コントローラ330は共通の構成を有するため、右コントローラ320の構成のみを説明する。
【0051】
コントローラセンサ140は、右コントローラ320の動きを検出するためのポジション・トラッキング機能を有する。コントローラセンサ140は、現実空間内における右コントローラ320の位置および傾きを検出する。コントローラセンサ140は、右コントローラ320の赤外線LED304から発せられた赤外光を、それぞれ検出する。コントローラセンサ140は、赤外波長領域において画像を撮像する赤外カメラを備えており、この赤外カメラによって撮像した画像のデータに基づき、右コントローラ320の位置および傾きを検出する。
【0052】
コントローラセンサ140の代わりに、右コントローラ320が、センサ306を用いて自身の位置および傾きを検出してもよい。この場合、右コントローラ320の三軸角速度センサ(センサ306)が、右コントローラ320の3つの直交する各軸回りの回転を検出する。右コントローラ320は、各検出値に基づき、右コントローラ320がどちらの方向にどれだけ回転したかを検出し、逐次検出した回転方向と回転量とを累積することによって、右コントローラ320の傾きを算出する。右コントローラ320は、三軸角速度センサの検出値に加えて、三軸磁気センサおよび/または三軸加速度センサからの検出値を併用してもよい。
【0053】
操作ボタン302は、コントローラ300に対するユーザからの操作入力を受け取るように構成された複数のボタン群である。本実施形態では、操作ボタン302は、プッシュ式ボタン、トリガー式ボタン、およびアナログスティックを含む。
【0054】
プッシュ式ボタンは、親指で下向きに押下する動作によって操作するように構成されたボタンである。右コントローラ320は、プッシュ式ボタンとして、天面322上に親指ボタン302aおよび302bを備えている。親指ボタン302aおよび302bは、いずれも右手の親指によって操作(押下)される。右手の親指によって親指ボタン302aおよび302bが押下され、または、天面322上に親指が配置されることにより、仮想右手の親指が伸ばした状態から曲げられた状態に変化される。
【0055】
トリガー式ボタンは、人差し指または中指で引き金を引くような動作によって操作するように構成されたボタンである。右コントローラ320は、トリガー式ボタンとして、グリップ324の前面部分に人差し指ボタン302eを備えている。右手の人差し指をおり、人差し指ボタン302eによって操作することにより、仮想右手の人差し指が伸ばした状態から曲げられた状態に変化される。また、グリップ324の側面部分に中指ボタン302fを備えている。中指ボタン302fを右手の中指によって操作することにより、仮想右手の中指、薬指、小指が伸ばした状態から曲げられた状態に変化される。
【0056】
右コントローラ320は、親指ボタン302aおよび302b、人差し指ボタン302e、ならびに中指ボタン302fの押下状態をそれぞれ検出し、これらの検出値を制御回路部200に出力する。
【0057】
本実施形態では、右コントローラ320の各ボタンの押下状態の検出値は、0から1のいずれかの値を取り得る。たとえば、ユーザが親指ボタン302aをまったく押下していない場合、親指ボタン302aの押下状態として「0」が検出される。一方、ユーザが親指ボタン302aを完全に(最も深く)押下している場合、親指ボタン302aの押下状態として「1」が検出される。これにより、仮想手における各指の曲がり具合を調整してもよい。たとえば、「0」の状態を指が伸びている状態として定義し、「1」の状態を指が曲げられている状態として定義することにより、ユーザは直感的な動作によって仮想手の指を制御することができる。
【0058】
アナログスティックは、所定のニュートラル位置から360°任意の方向へ傾けて操作することが可能なスティック型のボタンである。右コントローラ320の天面322上にアナログスティック302iが設けられる。アナログスティック302iは、右手の親指によって操作される。
【0059】
右コントローラ320は、グリップ324の両側面から天面322とは反対側の方向へ延びて半円状のリングを形成するフレーム326を備えている。フレーム326の外表面には、複数の赤外線LED304が埋め込まれている。
【0060】
赤外線LED304は、プレイ中に赤外線を発光する。赤外線LED304から発せられた赤外光は、右コントローラ320の位置および傾きを検出するために利用される。
【0061】
右コントローラ320は、赤外線LED304の代わりに、または赤外線LED304に加えて、さらにセンサ306を内蔵する。センサ306は、たとえば磁気センサ、角速度センサ、若しくは加速度センサのいずれか、またはこれらの組み合わせであってよい。センサ306によって、右コントローラ320の位置および傾きを検出することができる。
【0062】
トランシーバ308は、右コントローラ320と、制御回路部200との間でデータを送受信するように構成される。トランシーバ308は、ユーザが操作ボタン302を介して右コントローラ320に与えた操作入力に基づくデータを、制御回路部200へ送信する。また、トランシーバ308は、赤外線LED304の発光を右コントローラ320に指示する命令を、制御回路部200から受信する。さらに、トランシーバ308は、センサ306によって検出した各種の値に対応するデータを、制御回路部200へ送信する。
【0063】
右コントローラ320は、ユーザの手に振動による触覚フィードバックを伝えるためのバイブレータを備えていてもよい。この構成では、トランシーバ308は、上述した各データの送受信に加えて、バイブレータに触覚フィードバックを行わせるための命令を制御回路部200から受信することができる。
【0064】
(制御回路部200の機能的構成)
図8は、制御回路部200の機能的構成を示すブロック図である。制御回路部200は、HMDセンサ120、コントローラセンサ140、注視センサ130、およびコントローラ300から受信した各種のデータを用いることによって、ユーザに提供される仮想空間2を制御する。また、制御回路部200は、HMD110のディスプレイ112への画像表示を制御する。
図8に示すように、制御回路部200は、検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250を備えている。制御回路部200は、
図2に示す各ハードウェアの協働によって、検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250として機能する。検出部210、表示制御部220、および仮想空間制御部230は、主としてプロセッサおよびメモリの協働によってその機能が実現され得る。記憶部240は、主としてメモリおよびストレージの協働によってその機能が実現され得る。通信部250は、主としてプロセッサおよび通信インターフェースの協働によってその機能が実現され得る。
【0065】
検出部210は、制御回路部200に接続される各種のセンサ(HMDセンサ120等)から検出値を受信する。また、検出部210は、必要に応じて、受信した検出値を用いた所定の処理を実行する。検出部210は、HMD検出部211、視線検出部212、およびコントローラ検出部213を備えている。HMD検出部211は、HMD110およびHMDセンサ120から検出値をそれぞれ受信する。視線検出部212は、注視センサ130から検出値を受信する。コントローラ検出部213は、コントローラセンサ140、右コントローラ320、および左コントローラ330から、それぞれの検出値を受信する。
【0066】
表示制御部220は、HMD110のディスプレイ112への画像表示を制御する。表示制御部220は、仮想カメラ制御部221、視界領域決定部222、および視界画像生成部223を備えている。仮想カメラ制御部221は、仮想空間2内に仮想カメラ1を配置する。仮想カメラ制御部221は、仮想空間2内における仮想カメラ1の挙動を制御する。視界領域決定部222は、視界領域23を決定する。視界画像生成部223は、決定された視界領域23に基づき、ディスプレイ112に表示される視界画像26を生成する。
【0067】
仮想空間制御部230は、ユーザに提供される仮想空間2を制御する。仮想空間制御部230は、仮想空間規定部231、仮想手制御部232、入力制御部233、および入力決定部234を備えている。
【0068】
仮想空間規定部231は、ユーザに提供される仮想空間2を表す仮想空間データを生成することによって、HMDシステム100における仮想空間2を規定する。仮想手制御部232は、ユーザによる右コントローラ320および左コントローラ330の操作に応じたユーザの各仮想手(仮想右手および仮想左手)を仮想空間2内に配置する。仮想手制御部232は、仮想空間2内における各仮想手の挙動を制御する。入力制御部233は、入力に用いる仮想オブジェクトである入力オブジェクトを仮想空間2内に配置する。入力オブジェクトには入力内容が対応付けられている。入力制御部233は、入力の決定に用いる仮想オブジェクトである決定オブジェクトを仮想空間2内に配置する。入力決定部234は、入力オブジェクトと決定オブジェクトとの位置関係から入力内容を決定する。
【0069】
記憶部240は、制御回路部200が仮想空間2をユーザに提供するために用いる各種のデータを格納している。記憶部240は、雛形格納部241、コンテンツ格納部242、およびオブジェクト格納部243を備えている。雛形格納部241は、仮想空間2の雛形を表す各種の雛形データを格納している。コンテンツ格納部242は、仮想空間2において再生可能な各種のコンテンツを格納している。オブジェクト格納部243は、入力に用いられる入力オブジェクトおよび決定オブジェクトを格納している。
【0070】
雛形データは、仮想空間2の空間構造を規定する空間構造データを有する。空間構造データは、たとえば、中心21を中心とする360°の全天球の空間構造を規定するデータである。雛形データは、仮想空間2のXYZ座標系を規定するデータをさらに有する。雛形データは、天球を構成する各メッシュのXYZ座標系における位置を特定する座標データをさらに有する。また、雛形データは、仮想空間2内に仮想オブジェクトを配置可能であるか否かを示すフラグをさらに有する。
【0071】
コンテンツは、仮想空間2において再生可能なコンテンツである。本実施形態では、このコンテンツはゲームコンテンツである。コンテンツは、ゲームの背景画像、および、ゲームに登場する仮想オブジェクト(キャラクタ、アイテム等)を規定するデータを少なくとも有する。各コンテンツには、HMD110の初期状態(起動時)にユーザに見せる画像を向いた初期方向が、予め規定されている。
【0072】
通信部250は、ネットワークNWを介して外部機器400(たとえばゲームサーバ)との間でデータを送受信する。
【0073】
(仮想空間2の提供処理)
図9は、HMDシステム100が仮想空間2をユーザに提供する処理の流れを示すシーケンス図である。仮想空間2は、基本的に、HMD110および制御回路部200の協働によってユーザに提供される。
図9に示す処理が開始されると、まず、ステップS1において、仮想空間規定部231が、ユーザに提供される仮想空間2を表す仮想空間データを生成することによって、仮想空間2を規定する。生成の手順は次の通りである。まず仮想空間規定部231は、仮想空間2の雛形データを雛形格納部241から取得することによって、仮想空間2の原型を定義する。仮想空間規定部231は、さらに、仮想空間2において再生されるコンテンツを、コンテンツ格納部242から取得する。本実施形態では、このコンテンツはゲームコンテンツであってもよい。
【0074】
仮想空間規定部231は、取得した雛形データに、取得したコンテンツを適合することによって、仮想空間2を規定する仮想空間データを生成する。仮想空間規定部231は、仮想空間データにおいて、仮想空間2の天球を構成する各メッシュの管理データに、コンテンツに含まれる背景画像を構成する各部分画像を適宜関連付ける。仮想空間規定部231は、コンテンツに規定される初期方向を仮想空間2のXYZ座標系におけるZ方向に合致させるように、各部分画像と各メッシュとを関連付けることが好ましい。
【0075】
仮想空間規定部231は、さらに、必要に応じて、コンテンツに含まれる各仮想オブジェクトの管理データを、仮想空間データに追加する。その際、各管理データに、対応する仮想オブジェクトが仮想空間2において配置される位置を表す座標を、設定する。これにより各仮想オブジェクトが、仮想空間2における当該座標の位置にそれぞれ配置される。
【0076】
その後、ユーザによってHMD110が起動されると、ステップS2において、HMDセンサ120が、HMD110の初期状態における位置および傾きを検出する。ステップS3において、検出値を制御回路部200に出力する。HMD検出部211は、この検出値を受信する。この後、ステップS4において、仮想カメラ制御部221は、仮想空間2において仮想カメラ1を初期化する。
【0077】
初期化の手順は次の通りである。まず仮想カメラ制御部221は、仮想空間2内における初期位置(
図4における中心21等)に、仮想カメラ1を配置する。次に、仮想空間2における仮想カメラ1の向きを設定する。その際、仮想カメラ制御部221は、HMDセンサ120からの検出値に基づき初期状態のHMD110のuvw視野座標系を特定すると共に、HMD110のuvw視野座標系に一致するuvw視野座標系を仮想カメラ1に設定することによって、仮想カメラ1の向きを設定すればよい。仮想カメラ制御部221は、仮想カメラ1にuvw視野座標系を設定する際、仮想カメラ1のロール方向(w軸)をXYZ座標系のZ方向(Z軸)に適合させる。具体的には、仮想カメラ制御部221は、仮想カメラ1のロール方向をXZ平面に投影して得られる方向を、XYZ座標系のZ方向に一致させると共に、XZ平面に対する仮想カメラ1のロール方向の傾きを、水平面に対するHMD110のロール方向の傾きに一致させる。このような適合処理によって、初期状態の仮想カメラ1のロール方向がコンテンツの初期方向に適合されるので、コンテンツの再生開始後におけるユーザが最初に向く水平方向の向きを、コンテンツの初期方向に一致させることができる。
【0078】
仮想カメラ1の初期化処理が終わると、視界領域決定部222は、仮想カメラ1のuvw視野座標系に基づき、仮想空間2における視界領域23を決定する。具体的には、仮想カメラ1のuvw視野座標系のロール方向(w軸)をユーザの基準視線5として特定し、この基準視線5に基づき視界領域23を決定する。ステップS5において、視界画像生成部223は、仮想空間データを処理することによって、仮想空間2に展開される仮想空間画像22の全体のうち、仮想空間2における視界領域23に投影される部分に相当する視界画像26を生成(レンダリング)する。ステップS6において、視界画像生成部223は、生成した視界画像26を初期視界画像としてHMD110に出力する。ステップS7において、HMD110は、受信した初期視界画像をディスプレイ112に表示する。これによりユーザは初期視界画像を視認する。
【0079】
その後、ステップS8において、HMDセンサ120が、HMD110の現在の位置および傾きを検出して、ステップS9において、これらの検出値を制御回路部200に出力する。HMD検出部211は、各検出値を受信する。仮想カメラ制御部221は、HMD110の位置および傾きの検出値に基づき、HMD110における現在のuvw視野座標系を特定する。さらに、ステップS10において、仮想カメラ制御部221は、XYZ座標系におけるuvw視野座標系のロール方向(w軸)を、HMD110の視界方向として特定する。
【0080】
本実施形態では、ステップS11において、仮想カメラ制御部221が、特定したHMD110の視界方向を、仮想空間2におけるユーザの基準視線5として特定する。ステップS12において、仮想カメラ制御部221は、特定した基準視線5に基づき、仮想カメラ1を制御する。仮想カメラ制御部221は、基準視線5の位置(起点)および方向が仮想カメラ1の初期状態と同一であれば、仮想カメラ1の位置および方向をそのまま維持する。一方、基準視線5の位置(起点)および/または方向が、仮想カメラ1の初期状態から変化していれば、仮想空間2内における仮想カメラ1の位置および/または傾きを、変化後の基準視線5に応じた位置および/または傾きに変更する。また、制御後の仮想カメラ1に対してuvw視野座標系を再設定する。
【0081】
ステップS13において、視界領域決定部222は、特定した基準視線5に基づき、仮想空間2における視界領域23を決定する。その後、ステップS14において、視界画像生成部223は、仮想空間データを処理することによって、仮想空間2に展開される仮想空間画像22の全体のうち、仮想空間2における視界領域23に投影(重畳)される部分である視界画像26を生成(レンダリング)する。ステップS15において、視界画像生成部223は、生成した視界画像26を更新用の視界画像としてHMD110に出力する。ステップS16において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、ユーザがHMD110を動かせば、それに連動して視界画像26が更新される。
【0082】
(入力処理)
前述のように、入力制御部233は、入力オブジェクトおよび決定オブジェクトを生成する。ユーザは、入力オブジェクトを操作することにより入力操作を行うことができる。より詳細には、ユーザは、入力操作を行う場合、まず入力オブジェクトを仮想身体によって選択する。次に、ユーザは、選択した入力オブジェクトを決定領域に移動させる。決定領域は決定オブジェクトによって定義される領域である。入力決定部234は、入力オブジェクトが決定領域に移動させられたとき、入力内容を決定する。
【0083】
図10は、HMDシステム100が仮想空間2において、入力操作を受け付ける処理の流れを示すシーケンス図である。
【0084】
図10のステップS21において、入力制御部233は、入力オブジェクトおよび決定オブジェクトを含む入力受付画像を生成する。ステップS22において、視界画像生成部223は、入力オブジェクトおよび決定オブジェクトを含む視界画像をHMD110に出力する。ステップS23において、HMD110は、受信した視界画像をディスプレイ112に表示することによって、視界画像を更新する。
【0085】
ステップS24において、コントローラセンサ140は、右コントローラ320の位置および傾き、ならびに、左コントローラ330の位置および傾きをそれぞれ検出する。ステップS25において、コントローラセンサ140は、各検出値を制御回路部200に送信する。コントローラ検出部213は、これらの検出値を受信する。ステップS26において、コントローラ300が、各ボタンの押下状態を検出する。ステップS27において、右コントローラ320および左コントローラ330は、各検出値を制御回路部200に送信する。コントローラ検出部213は、これらの検出値を受信する。ステップS28において、仮想手制御部232が、コントローラ検出部213が受信した各検出値を用いて、ユーザの仮想手を、仮想空間2に生成する。ステップS29において、仮想手制御部232は、仮想手としての仮想右手HRおよび仮想左手HLを含む視界画像をHMD110に出力する。ステップS30において、HMD110は、受信した視界画像をディスプレイ112に表示することによって、視界画像を更新する。
【0086】
ステップS31において、入力制御部233および入力決定部234は、入力処理を実行する。入力処理の詳細は後述する。
【0087】
ステップS32において、視界画像生成部223は入力処理中の視界画像をHMD110に出力する。ステップS33において、HMD110は、受信した視界画像をディスプレイ112に表示することによって、視界画像を更新する。
【0088】
(入力処理の一例の流れ)
図11を参照して、ステップS31における入力処理の一例の流れについて説明する。
図11は、入力処理の一例の流れを示すシーケンス図である。
【0089】
ステップS101では、入力制御部233は、入力オブジェクトが移動したことを検出する。ステップS102では、入力制御部233は、入力オブジェクトが決定領域に移動したか否かを判定する。入力制御部233は、入力オブジェクトが決定領域に移動したと判定した場合(S102でYES)、ステップS103に進む。入力制御部233は、決定領域へ移動したか否かを、入力オブジェクトが決定オブジェクトと所定の位置関係となった否かにより判定してもよい。たとえば、入力制御部233は、入力オブジェクトが決定オブジェクトと接触したとき、所定の位置関係となったと判定してもよい。
【0090】
ステップS103では、入力決定部234は、決定領域に移動したときの入力オブジェクトに対応付けられた入力対象を入力する内容に決定する。仮想空間制御部230は、決定された入力内容を受け付ける。
【0091】
(入力処理の他の例の流れ)
図12を参照して、ステップS31における入力処理の他の例の流れについて説明する。
図12は、入力処理の他の例の流れを示すシーケンス図である。
【0092】
ステップS201では、入力制御部233は、入力オブジェクトが移動したことを検出する。ステップS202では、入力制御部233は、入力オブジェクトが決定領域に移動したか否かを判定する。入力オブジェクトが決定領域に移動したと判定した場合(S202でYES)、ステップS203に進む。ステップS203では、入力決定部234は、決定領域に移動したときの入力オブジェクトに対応付けられた入力対象を入力する内容に仮決定する。
【0093】
ステップS204では、入力決定部234は、仮決定された入力対象が所定数となったか否かを判定する。入力対象が所定数に達していない場合(S204でNO)、ステップS201に戻る。一方、所定数に達している場合(S204でYES)、ステップS205で、入力決定部234は、入力が完了したとして、仮決定した所定数の入力対象を入力する内容に決定する。これが最終入力決定となる。仮想空間制御部230は、決定された入力内容を受け付ける。
【0094】
(入力処理の例)
次に、
図13〜17を参照して、前述したステップS31における入力処理の例を説明する。
【0095】
(入力処理例A)
図13を参照して、入力処理例Aについて説明する。
図13は、入力処理例Aを示す図である。入力処理例Aでは、入力オブジェクトにおける第1面が決定オブジェクトと接触したとき、第1面と所定の位置関係にある第2面と対応付けられた入力対象が入力されたことを受け付ける処理の例を示す。
【0096】
入力処理例Aでは、入力オブジェクトとしてサイコロSK、決定オブジェクトとして台KRが設定されている。ユーザによる入力操作に従い、表示例1301から表示例1302へと進む。
【0097】
サイコロSKは、複数の面を含み、複数の面それぞれに異なる入力対象が関連付けられている。具体的には、入力対象として「和」、「洋」、「中」が対応付けられている。「和」は和食、「洋」は洋食、「中」は中華を示す。
【0098】
表示例1301に示すように、視界画像モニタMTに「今日のランチは何が食べたい?」と表示されている。ユーザは仮想右手HRにより、サイコロSKを移動させて、台KRに乗せることにより、入力操作を行う。
【0099】
表示例1302では、サイコロSKの下面が台KRと接触し、「洋」と記載されている面が上面となっている。このとき、サイコロSKの上面と対応付けられた「洋」が入力される内容となる。すなわち、「今日のランチは何が食べたい?」との問いに対し「洋食」と回答したことになる。表示例1302では、「洋食」との回答に対し、モニタMTに「今日のおススメの洋食屋はこちら」と表示している。これは、ユーザの回答に対し、次の段階の提案をしていることになる。
【0100】
なお、上記の例では、接触した面と所定の位置関係にある面と対応付けられた入力対象を受け付ける構成を挙げた。入力対象はこれに限られるものではなく、接触した面と対応付けられた入力対象を受け付ける構成としてもよい。
【0101】
また、入力オブジェクトの例としては、サイコロSKのような面を備えたものではなく、たとえば、入力対象が対応付けられたピンが球体に刺さった構造のものであってもよい。この場合、ピンが台KRと接触することにより、当該ピンと対応付けられた入力対象の入力を受け付けるものであってもよい。
【0102】
(入力処理例B)
図14〜16を参照して、入力処理例Bについて説明する。
図14〜16は、入力処理例Bを示す図である。入力処理例Bでは、仮想空間に規定される領域と複数の文字オブジェクトの少なくとも1つの位置とが特定の位置関係となったとき、複数の文字オブジェクトの少なくとも1つが決定領域に移動させられたことを検出し、文字オブジェクトに関連付けられた文字が入力されたことを受け付ける処理の例を示す。
【0103】
入力処理Bでは、入力オブジェクトとして文字オブジェクトCB、決定オブジェクトとしてモニタMTが設定されている。文字オブジェクトCBは複数存在し、それぞれが異なる文字と対応付けられている。
【0104】
入力処理例Bでは、ユーザによる入力操作に従い、表示例1401から表示例1402、表示例1403、…表示例1405へと進む。
【0105】
表示例1401に示すように、モニタMTに「これは何?」と表示されている。また、文字オブジェクトCBが表示されている。次に、表示例1402に示すように、モニタMTに魚の絵が表示される。その後、ユーザは仮想右手HRにより、文字オブジェクトCBをモニタMTに移動させることにより、それぞれの文字を入力する。
【0106】
表示例1403では、ユーザが仮想右手HRを用いて、「さ」、「か」、「な」と対応付けられた文字オブジェクトCBをこの順序でモニタMTに移動させている。これにより、表示例1404に示すように、「さ」、「か」、「な」が入力される。すなわち、モニタMTに「これは何?」と表示され、その後、魚の絵が表示されたことに対して「さかな」と回答したことになる。最後に、表示例1405に示すように、モニタMTに「正解」と表示される。
【0107】
なお、上記では、仮想右手HRを用いて、文字オブジェクトCBをモニタMTに移動させることによって、入力操作を行う例を説明したが、これに限られるものではない。仮想右手HRによって、文字オブジェクトCBを投げることによって、モニタMTに当てることにより、文字オブジェクトCBを移動させてもよい。また、決定オブジェクトはモニタMTではなく、穴のようなものであってもよい。当該穴に文字オブジェクトCBを落とすことにより入力操作を行ってもよい。
【0108】
(入力処理例C)
図17〜19を参照して、入力処理例Cについて説明する。
図17〜19は、入力処理例Cを示す図である。入力処理例Cでは、仮想空間に配置された入力空間である複数の区域に、所定数の文字オブジェクトが入れられたとき、区域に入れられた文字オブジェクトに関連付けられた入力対象が入力されたことを受け付ける処理の例を示す。
【0109】
入力処理例Cでは、入力オブジェクトとして文字オブジェクトCB、決定オブジェクトとして入力領域KLが設定されている。文字オブジェクトCBは複数存在し、それぞれが異なる文字と対応付けられている。入力領域KLには文字オブジェクトCBを配置可能な区域が複数存在している。
【0110】
入力処理例Cでは、ユーザによる入力操作に従い、表示例1701から表示例1702、表示例1703、…表示例1406へと進む。
【0111】
表示例1701に示すように、モニタMTに「これは何?」と表示されている。また、文字オブジェクトCBが表示されている。さらに、入力領域KLが表示されている。次に、表示例1702に示すように、モニタMTに魚の絵が表示される。その後、ユーザは仮想右手HRにより、文字オブジェクトCBを入力領域KLに移動させることにより、それぞれの文字を入力する。表示例1703では、ユーザが仮想右手HRを用いて、「さ」、「か」、「な」と対応付けられた文字オブジェクトCBを、入力領域KLにおけるそれぞれの区域に移動させている。ここでは、区域の左側から、「さ」、「か」、「な」に対応付けられた文字オブジェクトCBを入力領域KLにおけるそれぞれの区域に移動させている。これにより、表示例1704に示すように、入力領域KLの各区域に「さ」、「か」、「な」と入力される。これにより、表示例1705に示すように、「さかな」が入力される。すなわち、モニタMTに「これは何?」と表示され、その後、魚の絵が表示されたことに対して「さかな」と回答したことになる。最後に、表示例1706に示すように、モニタMTに「正解」と表示される。
【0112】
なお、仮想オブジェクトとの接触による操作をMR等に適用することによって仮想体験を提供する場合には、操作対象オブジェクトに換えてユーザの実際の頭部以外の身体の一部を物理的・光学的手法等によって検知し、当該身体の一部と仮想オブジェクトの位置関係に基づいて、当該身体の一部と仮想オブジェクトとの接触を判定してもよい。なお、透過型HMDを用いて仮想体験を提供する場合には、ユーザの基準視線は、非透過型HMDと同様に、HMDの動き、または、ユーザの視線を検知することによって特定してもよい。
【0113】
〔ソフトウェアによる実現例〕
制御回路部200の制御ブロック(検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
【0114】
後者の場合、制御ブロックは、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、前記プログラムおよび各種データがコンピュータ(又はCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、前記プログラムを展開するRAM(Random Access Memory)等を備えている。そして、コンピュータ(又はCPU)が前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記記録媒体としては、「一時的でない有形の媒体」、たとえば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して前記コンピュータに供給されてもよい。なお、本発明は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【0115】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【0116】
〔付記事項〕
本発明の一側面にかかる内容を列記すると以下の通りである。
【0117】
(項目1)頭部にヘッドマウントディスプレイ(以下、HMD)を装着したユーザに仮想空間を提供する方法であって、 前記ヘッドマウントディスプレイの動きに基づいて、前記仮想空間のうち前記ヘッドマウントディスプレイに出力される視界画像を生成するステップと、前記仮想空間に、入力対象が関連付けられた入力オブジェクトを生成するステップと、前記仮想空間に、前記ユーザの前記頭部以外の身体の一部の動きに連動する仮想身体を生成するステップと、前記仮想身体によって前記入力オブジェクトが前記仮想空間における決定領域に移動させられたことを検出するステップと、前記入力オブジェクトが前記決定領域に移動させられたことが検出された場合、前記入力オブジェクトに関連付けられた前記入力対象が入力されたことを受け付けるステップと、を含む、方法。入力対象オブジェクトが決定領域に移動されると、上記入力対象オブジェクトに関連付けられた入力を受け付けることができるので、仮想空間で容易に入力を受け付けることができる。これにより、仮想体験をさらに改善し得る。
【0118】
(項目2)前記入力オブジェクトは複数の部分を含み、前記複数の部分それぞれに異なる前記入力対象が関連付けられており、前記検出するステップでは、前記仮想空間に配置される決定オブジェクトに前記入力オブジェクトが接触したとき、前記入力オブジェクトが前記決定領域に移動させられたことを検出し、前記受け付けるステップでは、前記決定オブジェクトに前記入力オブジェクトが接触したことが検出されたときの前記入力オブジェクトの前記複数の部分のいずれかに関連付けられた前記入力対象が入力されたことを受け付ける、項目1に記載の方法。入力オブジェクトが決定オブジェクトに接触することにより、入力を受け付けることができるので、容易に入力を受け付けることができる。
【0119】
(項目3)前記複数の部分は、複数の面であり、前記受け付けるステップでは、前記入力オブジェクトにおける第1面が前記決定オブジェクトと接触したとき、前記第1面と所定の位置関係にある第2面と対応付けられた前記入力対象が入力されたことを受け付ける、項目2に記載の方法。接触面と所定の位置関係にある面と対応付けられた入力対象の入力を受け付けるので、入力対象をユーザに容易に認識させることができる。
【0120】
(項目4)前記複数の部分は、複数の面であり、前記受け付けるステップでは、前記入力オブジェクトにおける第1面が前記決定オブジェクトと接触したとき、前記第1面と対応付けられた前記入力対象が入力されたことを受け付ける、項目2に記載の方法。決定オブジェクトと接触した面と対応付けられた入力対象の入力を受け付けるので、入力対象をユーザに容易に認識させることができる。
【0121】
(項目5)前記入力オブジェクトは、前記入力対象として文字が関連付けられた複数の文字オブジェクトであり、前記検出するステップでは、前記仮想空間に規定される領域と前記複数の文字オブジェクトの少なくとも1つの位置とが特定の位置関係となったとき、前記複数の文字オブジェクトの少なくとも1つが前記決定領域に移動させられたことを検出し、前記受け付けるステップでは、前記位置関係となった複数の文字オブジェクトの少なくとも1つに関連付けられた前記文字が入力されたことを受け付ける、項目1に記載の方法。複数の文字オブジェクトの入力を容易に受け付けることができる。
【0122】
(項目6)前記入力オブジェクトは複数生成されるとともに、それぞれ複数の部分を含み、前記複数の部分それぞれに異なる前記入力対象が関連付けられており、前記検出するステップでは、前記仮想空間に配置された入力空間に前記入力オブジェクトの少なくとも1つが入れられたとき、当該少なくとも1つの入力オブジェクトが前記決定領域に移動させられたことを検出し、前記受け付けるステップでは、前記入力空間に前記少なくとも1つの入力オブジェクトが入れられたことが検出されたときの、前記入力空間に入れられた前記入力オブジェクトに関連付けられた前記入力対象が入力されたことを受け付ける、項目1に記載の方法。複数の入力オブジェクトによる入力を受け付けることができる。
【0123】
(項目7)前記複数の入力オブジェクトの移動を完了させるステップをさらに含み、前記受け付けるステップでは、前記複数の入力オブジェクトの移動が完了された後、前記入力空間に入れられている前記複数の入力オブジェクトの該入力空間における位置に基づき、前記複数の入力オブジェクトの所定の面に関連付けられたそれぞれの前記入力対象が入力されたことを受け付ける、項目6に記載の方法。複数の入力オブジェクトが存在する場合に、入力の完了を容易に認識することができる。
【0124】
(項目8)頭部にヘッドマウントディスプレイを装着したユーザに仮想体験を提供する方法であって、入力対象が関連付けられた入力オブジェクトを生成するステップと、前記ユーザの前記頭部以外の身体の一部によって前記入力オブジェクトが決定領域に移動させられたことを検出するステップと、前記入力オブジェクトが前記決定領域に移動させられたことが検出された場合、前記入力オブジェクトに関連付けられた前記入力対象が入力されたことを受け付けるステップと、を含む、方法。入力対象オブジェクトが決定領域に移動されると、上記入力対象オブジェクトに関連付けられた入力を受け付けることができるので、仮想空間で容易に入力を受け付けることができる。これにより、ユーザの仮想体験をさらに改善し得る。
【0125】
(項目9)項目1〜8のいずれか1項に記載の方法の各ステップを、コンピュータに実行させるプログラム。
【0126】
(項目10)項目9に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【解決手段】制御回路部は、仮想空間に生成された仮想身体によって入力オブジェクトが仮想空間における決定領域に移動させられたとき、入力オブジェクトに関連付けられた入力対象が入力されたことを受け付ける。