【文献】
NABI, Michael,Exclusive Interview With Oculus on the Future of the Samsung Gear VR,Heavy.com [online],2015年 6月30日,[2016年11月15日検索],URL,http://heavy.com/tech/2015/06/exclusive-interview-with-oculus-on-the-future-of-the-samusung-gear-vr/
(58)【調査した分野】(Int.Cl.,DB名)
前記所定方向の指定が解除されたことを検出するステップにおいて、前記仮想カメラまたは仮想空間の回転が開始された後の前記HMDの傾きが、前記操作オブジェクトが選択されたことが検出された時点の前記HMDの傾きに一致した場合、前記所定方向の指定が解除されたことを検出する、請求項4に記載の方法。
前記第2のモードにおいて、前記操作オブジェクトが選択されたことが検出された後、前記ユーザによって前記操作オブジェクトに指定された所定量を特定するステップと、
前記第2のモードにおいて、前記所定量に基づき、前記仮想カメラまたは前記仮想空間を回転させる際の回転速度を特定するステップとをさらに有し、
前記操作オブジェクトを弾性変形させるステップにおいて、前記操作オブジェクトを前記所定量だけ伸張させ、
前記視界画像を更新するステップにおいて、前記仮想カメラまたは仮想空間を前記回転速度で回転させ続ける、請求項1に記載の方法。
【発明を実施するための形態】
【0009】
[本発明の実施形態の詳細]
本発明の実施形態に係る仮想空間を提供する方法、および、プログラムの具体例を、以下に図面を参照しつつ説明する。本発明はこれらの例示に限定されるものではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が本発明に含まれることが意図される。以下の説明では、図面の説明において同一の要素には同一の符号を付し、重複する説明を繰り返さない。
【0010】
(HMDシステム100の構成)
図1は、HMDシステム100の構成を示す図である。この図に示すように、HMDシステム100は、HMD110、HMDセンサ120、制御回路部200、およびコントローラ300を備えている。
【0011】
HMD110は、ユーザの頭部に装着される。HMD110は、非透過型の表示装置であるディスプレイ112、センサ114、および注視センサ130を備えている。HMD110は、右目用画像および左目用画像をディスプレイ112にそれぞれ表示することにより、ユーザの両目の視差に基づきユーザに立体的に視認される3次元画像を、ユーザに視認させる。これにより仮想空間をユーザに提供する。ディスプレイ112がユーザの眼前に配置されているので、ユーザは、ディスプレイ112に表示される画像を通じて仮想空間に没入できる。仮想空間は、背景、ならびにユーザが操作可能な各種のオブジェクトおよびメニュー画像等を含み得る。
【0012】
ディスプレイ112は、右目用画像を表示する右目用サブディスプレイと、左目用画像を表示する左目用サブディスプレイとを含んでもよい。または、ディスプレイ112は、右目用画像および左目用画像を共通の画面に表示する1つの表示装置であってもよい。このような表示装置として、たとえば、表示画像が一方の目にしか認識できないようにするシャッターを高速に切り替えることにより、右目用画像および左目用画像を独立して交互に表示する表示装置が挙げられる。
【0013】
(制御回路部200のハード構成)
図2は、制御回路部200のハード構成を示す図である。制御回路部200は、HMD110に仮想空間を提供させるためのコンピュータである。
図2に示すように、制御回路部200は、プロセッサ、メモリ、ストレージ、入出力インターフェース、および通信インターフェースを備えている。これらは、データ伝送路としてのバスを通じて、制御回路部200内において互いに接続されている。
【0014】
プロセッサは、CPU(Central Processing Unit)、MPU(Micro-processing unit)、またはGPU(Graphics Processing Unit)等を含んで構成され、制御回路部200およびHMDシステム100全体の動作を制御する。
【0015】
メモリは、主記憶として機能する。メモリには、プロセッサによって処理されるプログラムおよび制御用データ(演算パラメータなど)が記憶される。メモリは、ROM(Read Only Memory)またはRAM(Random Access Memory)等を含んで構成され得る。
【0016】
ストレージは、補助記憶として機能する。ストレージには、HMDシステム100全体の動作を制御するためのプログラム、各種のシミュレーションプログラム、ユーザ認証プログラム、および、仮想空間を規定するための各種のデータ(画像およびオブジェクト等)が格納されている。さらには、各種のデータを管理するためのテーブルを含むデータベースがストレージに構築されていてもよい。ストレージは、フラッシュメモリまたはHDD(Hard Disc Drive)等を含んで構成され得る。
【0017】
入出力インターフェースは、USB(Universal Serial Bus)端子、DVI(Digital Visual Interface)端子、HDMI(登録商標)(High-Definition Multimedia Interface)端子等の各種の有線接続端子、および、無線接続のための各種の処理回路を含んで構成されている。入出力インターフェースは、HMD110と、HMDセンサ120を含む各種のセンサと、コントローラ300とを互いに接続する。
【0018】
通信インターフェースは、ネットワークNWを介して外部装置と通信するための各種の有線接続端子、および、無線接続のための各種の処理回路を含んで構成される。通信インターフェースは、LAN(Local Area Network)またはインターネットを介して通信するための各種の通信規格およびプロトコルに適合するように、構成されている。
【0019】
制御回路部200は、ストレージに格納された所定のアプリケーションプログラムをメモリにロードして実行することによって、ユーザに仮想空間を提供する。プログラムの実行時に、メモリおよびストレージには、仮想空間内に配置される各種のオブジェクトを操作したり、各種のメニュー画像等を表示および制御したりするための各種のプログラムが格納される。
【0020】
制御回路部200は、HMD110に搭載されていてもよいし、されていなくてもよい。すなわち制御回路部200は、HMD110から独立した別のハードウェア(たとえば、パーソナルコンピュータ、またはネットワークを通じてHMD110と通信可能なサーバ装置)であってもよい。制御回路部200は、複数のハードウェアの協働によって1または複数の機能が実装される形態の装置であってもよい。または、制御回路部200が有する全機能のうち一部の機能のみがHMD110に実装され、残りの機能が別のハードウェアに実装されていてもよい。
【0021】
HMDシステム100を構成するHMD110等の各要素には、予め、グローバル座標系(基準座標系、xyz座標系)が設定されている。このグローバル座標系は、現実空間における、鉛直方向、鉛直方向と直交する横方向、ならびに、鉛直方向および横方向の双方と直交する前後方向にそれぞれ平行な、3つの基準方向(軸)を有する。本実施形態では、グローバル座標系は視点座標系の一種であるため、グローバル座標系における横方向、鉛直方向(上下方向)、および前後方向を、それぞれx軸、y軸、z軸とする。具体的には、グローバル座標系のx軸は現実空間の横方向に平行であり、y軸は現実空間の鉛直方向に平行であり、z軸は現実空間の前後方向に平行である。
【0022】
HMDセンサ120は、HMD110の動きを検出するためのポジション・トラッキング機能を有する。HMDセンサ120は、この機能によって、現実空間内におけるHMD110の位置および傾きを検出する。この検出を実現するために、HMD110は、図示しない複数の光源を備えている。各光源は、たとえば赤外線を発するLEDである。HMDセンサ120は、たとえば赤外線センサを含んで構成される。HMDセンサ120は、HMD110の光源から照射された赤外線を、赤外線センサによって検出することによって、HMD110の検出点を検出する。さらに、HMD110の検出点の検出値に基づき、ユーザの動きに応じたHMD110の現実空間内における位置および傾きを検出する。HMDセンサ120は、検出値の経時的変化に基づき、HMD110の位置および傾きの時間変化を決定することができる。
【0023】
HMDセンサ120は、光学カメラを含んで構成されてもよい。この場合、HMDセンサ120は、光学カメラによって得られたHMD110の画像情報に基づき、HMD110の位置および傾きを検出する。
【0024】
HMDセンサ120の代わりに、HMD110が、センサ114を用いて自身の位置および傾きを検出してもよい。この場合、センサ114は、たとえば角速度センサ、地磁気センサ、加速度センサ、またはジャイロセンサであればよい。HMD110は、これらのうち少なくとも1つを用いる。センサ114が角速度センサである場合、センサ114は、HMD110の動きに応じて、HMD110の現実空間における3軸回りの角速度を経時的に検出する。HMD110は、角速度の検出値に基づき、HMD110の3軸回りの角度の時間的変化を決定し、さらに、角度の時間的変化に基づきHMD110の傾きを検出することができる。
【0025】
HMD110がセンサ114による検出値に基づきHMD110の位置および傾きを自ら検出する場合、HMDシステム100にHMDセンサ120は不要である。逆に、HMD110から離れた位置に配置されるHMDセンサ120がHMD110の位置および傾きを検出する場合、HMD110にセンサ114は不要である。
【0026】
上述したように、グローバル座標系は現実空間の座標系と平行である。そのため、HMDセンサ120によって検出されたHMD110の各傾きは、グローバル座標系におけるHMD110の3軸周りの各傾きに相当する。HMDセンサ120は、グローバル座標系におけるHMDセンサ120の傾きの検出値に基づき、uvw視野座標系をHMD110に設定する。HMD110に設定されるuvw視野座標系は、HMD110を装着したユーザが物体を見る際の視点座標系に対応する。
【0027】
(uwv視野座標系)
図3は、HMD110に設定されるuwv視野座標系を例示する図である。HMDセンサ120は、HMD110の起動時に、グローバル座標系におけるHMD110の位置および傾きを検出する。そして、傾きの検出値に基づく3次元のuvw視野座標系を、HMD110に設定する。
図3に示すように、HMDセンサ120は、HMD110を装着したユーザの頭部を中心(原点)とした3次元のuvw視野座標系を、HMD110に設定する。具体的には、グローバル座標系を規定する横方向、鉛直方向、および前後方向(x軸、y軸、z軸)を、グローバル座標系内においてHMD110の各軸周りの傾きだけ各軸周りにそれぞれ傾けることによって得られる新たな3つの方向を、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、およびロール方向(w軸)として設定する。
【0028】
図3に示すように、HMDセンサ120は、HMD110を装着したユーザが直立しかつ正面を視認している場合、グローバル座標系に平行なuvw視野座標系をHMD110に設定する。この場合、グローバル座標系の横方向(x軸)、鉛直方向(y軸)、および前後方向(z軸)が、そのまま、HMD110におけるuvw視野座標系のピッチ方向(u軸)、ヨー方向(v軸)、およびロール方向(w軸)に一致する。
【0029】
HMDセンサ120は、HMD110にuvw視野座標系を設定した後、HMD110の動きに応じて、現在設定中のuvw視野座標系におけるHMD110の傾き(傾きの変化量)を検出することができる。この場合、HMDセンサ120は、HMD110の傾きとして、現在設定中のuvw視野座標系におけるHMD110のピッチ角(θu)、ヨー角(θv)、およびロール角(θw)をそれぞれ検出する。ピッチ角(θu)は、uvw視野座標系におけるピッチ方向周りのHMD110の傾き角度である。ヨー角(θv)は、uvw視野座標系におけるヨー方向周りのHMD110の傾き角度である。ロール角(θw)は、uvw視野座標系におけるロール方向周りのHMD110の傾き角度である。
【0030】
HMDセンサ120は、HMD110の傾きの検出値に基づき、動いた後のHMD110におけるuvw視野座標系を、新たにHMD110に設定する。HMD110と、HMD110のuvw視野座標系との関係は、HMD110の位置および傾きによらず常に一定である。HMD110の位置および傾きが変わると、それの変化に連動して、グローバル座標系におけるHMD110のuvw視野座標系の位置および傾きが同様に変化する。
【0031】
HMDセンサ120は、赤外線センサによって取得される赤外線の光強度および複数の検出点間の相対位置関係(検出点間の距離等)に基づき、HMD110の現実空間内における位置を、HMDセンサ120に対する相対位置として特定してもよい。また、特定した相対位置に基づき、現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の原点を決定してもよい。また、HMDセンサ120は、複数の検出点間の相対位置関係に基づきHMD110の現実空間内における傾きを検出し、さらに、その検出値に基づき現実空間内(グローバル座標系)におけるHMD110のuvw視野座標系の向きを決定してもよい。
【0032】
(仮想空間2の概要)
図4は、ユーザに提供される仮想空間2の概要を説明する図である。この図に示すように、仮想空間2は、中心21の360°方向全体を覆う全天球状の構造を有する。
図4には、仮想空間2の全体のうち上半分の天球のみを例示する。仮想空間2には、略正方形または略長方形の複数のメッシュが関連付けられている。仮想空間2における各メッシュの位置は、仮想空間2に規定される空間座標系(XYZ座標系)における座標として、予め規定されている。制御回路部200は、仮想空間2に展開可能なコンテンツ(静止画、動画等)を構成する各部分画像を、仮想空間2における対応する各メッシュに対応付けることによって、ユーザによって視認可能な仮想空間画像22が展開される仮想空間2をユーザに提供する。
【0033】
仮想空間2には、中心21を原点とするXYZ空間座標系が規定されている。XYZ座標系は、たとえばグローバル座標系に平行である。XYZ座標系は視点座標系の一種であるため、XYZ座標系における横方向、鉛直方向(上下方向)、および前後方向を、それぞれX軸、Y軸、Z軸とする。すなわち、XYZ座標系のX軸(横方向)がグローバル座標系のx軸と平行であり、XYZ座標系のY軸(上下方向)がグローバル座標系のy軸と平行であり、XYZ座標系のZ軸(前後方向)がグローバル座標系のz軸と平行である。
【0034】
HMD110の起動時(初期状態)において、仮想空間2の中心21に仮想カメラ1が配置されている。仮想カメラ1は、現実空間内におけるHMD110の動きに連動して、仮想空間2内において同様に動く。これにより、現実空間内におけるHMD110の位置および向きの変化が、仮想空間2内において同様に再現される。
【0035】
仮想カメラ1には、HMD110と同様にuvw視野座標系が規定される。仮想空間2内における仮想カメラ1のuvw視野座標系は、現実空間(グローバル座標系)内におけるHMD110のuvw視野座標系に変動するように規定されている。したがって、HMD110の傾きが変化すると、それに連動して仮想カメラ1の傾きも変化する。仮想カメラ1は、HMD110を装着したユーザの現実空間における移動に連動して、仮想空間2において移動することもできる。
【0036】
仮想空間2における仮想カメラ1の位置および傾きに応じて、仮想空間2における仮想カメラ1の向きが決まる。これにより、仮想空間2に展開される仮想空間画像22をユーザが視認する際の基準となる視線(基準視線5)が決まる。制御回路部200は、基準視線5に基づき、仮想空間2における視界領域23を決定する。視界領域23は、仮想空間2のうち、HMD110を装着したユーザの視界に対応する領域である。
【0037】
図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として設定する。
【0038】
HMDシステム100は、仮想空間画像22のうち視界領域23に重畳する部分である視界画像26をHMD110のディスプレイ112に表示させることによって、ユーザに仮想空間2を提供する。ユーザがHMD110を動かせば、それに連動して仮想カメラ1も動き、その結果、仮想空間2における視界領域23の位置が変化する。これによりディスプレイ112に表示される視界画像26が、仮想空間画像22のうち、仮想空間2においてユーザが向いた箇所(=視界領域23)に重畳する画像に更新される。したがってユーザは、仮想空間2における所望の箇所を視認することができる。
【0039】
ユーザは、HMD110を装着している間、現実世界を目にすることなく、仮想空間2に展開される仮想空間画像22のみを視認する。そのためHMDシステム100は、仮想空間2への高い没入感をユーザに与えることができる。
【0040】
制御回路部200は、HMD110を装着したユーザの現実空間における移動に連動して、仮想カメラ1を仮想空間2内において移動させてもよい。この場合、制御回路部200は、仮想カメラ1の仮想空間2内における位置および向きに基づき、仮想空間2のうちHMD110のディスプレイ112に投影されることによってユーザが視認する視界領域23を特定する。
【0041】
仮想カメラ1は、右眼用画像を提供する右眼用仮想カメラと、左眼用画像を提供する左眼用仮想カメラとを含むことが好ましい。さらに、2つの仮想カメラには、ユーザが3次元の仮想空間2を認識できるように適切な視差が設定されていることが好ましい。本実施形態では、このような2つの仮想カメラのロール方向が合成されることによって生成されるロール方向(w)がHMD110のロール方向(w)に適合されるような仮想カメラ1のみを、代表して図示および説明するものとする。
【0042】
(視線方向の検出)
注視センサ130は、ユーザの右目および左目の視線が向けられる方向(視線方向)を検出するアイトラッキング機能を有する。注視センサ130として、アイトラッキング機能を有する公知のセンサを採用することができる。注視センサ130は、右目用センサおよび左目用センサを備えていることが好ましい。注視センサ130は、たとえば、ユーザの右目および左目に赤外光を照射すると共に、照射光に対する角膜および虹彩からの反射光を受光することによって、各眼球の回転角を検出するセンサでもよい。注視センサ130は、検出した各回転角に基づき、ユーザの視線方向を検知することができる。
【0043】
注視センサ130によって検出されるユーザの視線方向は、ユーザが物体を視認する際の視点座標系における方向である。上述したように、HMD110のuvw視野座標系は、ユーザがディスプレイ112を視認する際の視点座標系に等しい。また、仮想カメラ1のuvw視野座標系は、HMD110のuvw視野座標系に連動している。したがってHMDシステム100では、注視センサ130によって検出されたユーザの視線方向を、仮想カメラ1のuvw視野座標系におけるユーザの視線方向と見なすことができる。
【0044】
図6は、ユーザの視線方向を決定する方法を例示する図である。この図に示すように、注視センサ130は、ユーザUの右目および左目の視線を検出する。ユーザUが近くを見ている場合、注視センサ130は、ユーザUの視線R1およびL1を検出する。ユーザが遠くを見ている場合、注視センサ130は、ユーザの視線R1およびL1よりも、HMD110のロール方向(w)とのなす角が小さい視線R2およびL2を特定する。注視センサ130は、検出値を制御回路部200に送信する。
【0045】
制御回路部200は、視線の検出値として視線R1およびL1を受信した場合、両者の交点である注視点N1を特定する。一方、視線R2およびL2を受信した場合も、両者の交点である注視点N1(不図示)を特定する。制御回路部200は、特定した注視点N1に基づき、ユーザUの視線方向N0を検出する。制御回路部200は、たとえば、ユーザUの右目Rと左目Lとを結ぶ直線の中点と、注視点N1とを通る直線の伸びる方向を、視線方向N0として検出する。視線方向N0は、ユーザUが両目により実際に視線を向けている方向である。視線方向N0はまた、視界領域23に対してユーザUが実際に視線を向けている方向でもある。
【0046】
HMDシステム100は、HMDシステム100を構成するいずれかの要素に、マイクおよびスピーカを備えていてもよい。これにより、ユーザは仮想空間2内に対して、音声による指示を与えることができる。また、仮想空間内の仮想テレビにテレビ番組の放送を受信するために、HMDシステム100はいずれかの要素にテレビジョン受像機を含んでいてもよい。また、ユーザが取得した電子メール等を表示させるための、通信機能等を含んでいてもよい。
【0047】
(コントローラ300)
コントローラ300は、ユーザの操作に基づく各種の指令を制御回路部200に対して送信ことができるデバイスである。コントローラ300は、有線または無線通信が可能な携帯端末であり得る。コントローラ300は、たとえば、スマートフォン、PDA(Personal Digital Assistant)、タブレット型コンピュータ、ゲーム用コンソール、汎用のPC(Personal Computer)等であればよい。コントローラ300は、タッチパネルを備えるデバイスであることが好ましく、互いにバス接続されたプロセッサ、メモリ、ストレージ、通信部、表示部と入力部が一体として構成されたタッチパネル、を備える任意の端末が採用され得る。ユーザは、コントローラ300のタッチパネルに対し、タップ、スワイプ、およびホールドを含む各種のタッチ動作を入力することによって、仮想空間2に配置される各種のオブジェクトおよびUI(User Interface)に対して影響を及ぼすことができる。
【0048】
(制御回路部200の機能的構成)
図7は、制御回路部200の機能的構成を示すブロック図である。制御回路部200は、HMDセンサ120、注視センサ130、およびコントローラ300から受信した各種のデータを用いることによって、ユーザに提供される仮想空間2を制御すると共に、HMD110のディスプレイ112への画像表示を制御する。
図7に示すように、制御回路部200は、検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250を備えている。制御回路部200は、
図2に示す各ハードウェアの協働によって、検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250として機能する。検出部210、表示制御部220、および仮想空間制御部230は、主としてプロセッサおよびメモリの協働によってその機能が実現され得る。記憶部240は、主としてメモリおよびストレージの協働によってその機能が実現され得る。通信部250は、主としてプロセッサおよび通信インターフェースの協働によってその機能が実現され得る。
【0049】
検出部210は、制御回路部200に接続される各種のセンサ(HMDセンサ120等)から検出値を受信する。また、必要に応じて、受信した検出値を用いた所定の処理を実行する。検出部210は、HMD検出部211、視線検出部212、および操作受付部213を備えている。HMD検出部211は、HMD110およびHMDセンサ120から検出値をそれぞれ受信する。視線検出部212は、注視センサ130から検出値を受信する。操作受付部213は、コントローラ300に対するユーザの操作に応じて送信された指令を受信することによって、当該操作を受け付ける。
【0050】
表示制御部220は、HMD110のディスプレイ112への画像表示を制御する。表示制御部220は、仮想カメラ制御部221、視界領域決定部222、および視界画像生成部223を備えている。仮想カメラ制御部221は、仮想空間2内に仮想カメラ1を配置すると共に、仮想空間2内における仮想カメラ1の挙動を制御する。視界領域決定部222は、視界領域23を決定する。視界画像生成部223は、決定された視界領域23に基づき、ディスプレイ112に表示される視界画像26を生成する。
【0051】
仮想空間制御部230は、ユーザに提供される仮想空間2を制御する。仮想空間制御部230は、仮想空間規定部231、視線管理部232、コンテンツ特定部233、操作オブジェクト制御部234、および回転制御部235を備えている。仮想空間規定部231は、ユーザに提供される仮想空間2を表す仮想空間データを生成することによって、HMDシステム100における仮想空間2を規定する。視線管理部232は、仮想空間2におけるユーザの視線を管理する。コンテンツ特定部233は、仮想空間2における再生対象のコンテンツを特定する。操作オブジェクト制御部234は、仮想空間2における操作オブジェクト27を制御する。回転制御部235は、操作オブジェクト27への操作に基づく仮想カメラ1または仮想空間2の回転を制御する。
【0052】
記憶部240は、制御回路部200が仮想空間2をユーザに提供するために用いる各種のデータを格納している。記憶部240は、雛形格納部241およびコンテンツ格納部242を備えている。雛形格納部241は、各種の雛形データを格納している。コンテンツ格納部242は、各種のコンテンツを格納している。
【0053】
雛形データは、仮想空間2の雛形を表すデータである。雛形データは、仮想空間2の空間構造を規定する空間構造データを有する。空間構造データは、たとえば、中心21を中心とする360°の全天球の空間構造を規定するデータである。雛形データは、仮想空間2のXYZ座標系を規定するデータをさらに有する。雛形データは、天球を構成する各メッシュのXYZ座標系における位置を特定する座標データをさらに有する。また、雛形データは、仮想空間2内にオブジェクトを配置可能であるか否かを示すフラグをさらに有する。
【0054】
コンテンツは、仮想空間2において再生可能なコンテンツである。コンテンツの例として、たとえば、プラットフォームコンテンツおよび視聴用コンテンツが挙げられる。
【0055】
プラットフォームコンテンツは、ユーザが視聴したい視聴用コンテンツを仮想空間2においてユーザに選択させるための環境(プラットフォーム)に関するコンテンツである。このプラットフォームコンテンツが仮想空間2において再生されることによって、コンテンツ選択用のプラットフォームがユーザに提供される。プラットフォームコンテンツは、背景画像、および、オブジェクトを規定するデータを少なくとも有する。
【0056】
視聴用コンテンツは、たとえば静止画コンテンツまたは動画コンテンツである。静止画コンテンツは、背景画像を有する。動画コンテンツは、各フレームの画像(静止画)を少なくとも有する。動画コンテンツは、さらに音声データを有してもよい。
【0057】
動画コンテンツは、たとえば、全天球カメラによって生成されるコンテンツである。全天球カメラは、当該カメラのレンズを中心とした現実空間の全方向を一度に撮影することによって、全方向の画像を一度に生成することができるカメラである。全天球カメラによって得られる動画コンテンツを構成する各画像は歪んでいるが、動画コンテンツが仮想空間2において再生されるとき、各画像の歪みは、HMD110のディスプレイ112を構成するレンズによってキャンセルされることによって解消される。したがって動画コンテンツの再生時、ユーザは仮想空間2内において歪みのない自然な画像を視認することができる。
【0058】
各コンテンツには、HMD110の初期状態(起動時)にユーザに見せる画像を向いた初期方向が、予め規定されている。全天球カメラによって生成される動画コンテンツに規定される初期方向は、通常、動画コンテンツの撮影に用いた全天球カメラに規定される所定の撮影方向に一致する。この初期方向を、撮影方向とは異なる方向に変更することもできる。具体的には、全天球カメラによる撮影後、得られた動画コンテンツを適宜編集することによって、撮影方向からずれた方向を初期方向として動画コンテンツに規定することができる。
【0059】
通信部250は、ネットワークNWを介して外部機器400(たとえばサーバ)との間でデータを送受信する。
【0060】
(仮想空間2の提供処理)
図8は、HMDシステム100が仮想空間2をユーザに提供する処理の流れを示すシーケンス図である。仮想空間2は、基本的に、HMD110および制御回路部200の協働によってユーザに提供される。
図8に示す処理が開始されると、まず、S1において、仮想空間規定部231が、ユーザに提供される仮想空間2を表す仮想空間データを生成することによって、仮想空間2を規定する。生成の手順は次の通りである。まず仮想空間規定部231は、仮想空間2の雛形データを雛形格納部241から取得することによって、仮想空間2の原型を定義する。仮想空間規定部231は、さらに、仮想空間2において再生されるコンテンツを、コンテンツ格納部242から取得する。仮想空間規定部231は、取得した雛形データに、取得したコンテンツを適合することによって、仮想空間2を規定する仮想空間データを生成する。仮想空間規定部231は、仮想空間データにおいて、仮想空間2の天球を構成する各メッシュの管理データに、コンテンツに含まれる背景画像を構成する各部分画像を適宜関連付ける。仮想空間規定部231は、コンテンツに規定される初期方向を仮想空間2のXYZ座標系におけるZ方向に合致させるように、各部分画像と各メッシュとを関連付けることが好ましい。
【0061】
仮想空間規定部231は、さらに、必要に応じて、コンテンツに含まれる各オブジェクトの管理データを、仮想空間データに追加する。その際、各管理データに、対応するオブジェクトが仮想空間2において配置される位置を表す座標を、設定する。これにより各オブジェクトが、仮想空間2における当該座標の位置にそれぞれ配置される。
【0062】
その後、ユーザによってHMD110が起動されると、S2において、HMDセンサ120が、HMD110の初期状態における位置および傾きを検出して、S3において、検出値を制御回路部200に出力する。HMD検出部211は、この検出値を受信する。この後、S4において、仮想カメラ制御部221は、仮想空間2において仮想カメラ1を初期化する。
【0063】
初期化の手順は次の通りである。まず仮想カメラ制御部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のロール方向の傾きに一致させる。このような適合処理によって、初期状態の仮想カメラ2のロール方向がコンテンツの初期方向に適合されるので、コンテンツの再生開始後におけるユーザが最初に向く水平方向の向きを、コンテンツの初期方向に一致させることができる。
【0064】
仮想カメラ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に表示する。これによりユーザは初期視界画像を視認する。
【0065】
その後、S8において、HMDセンサ120が、HMD110の現在の位置および傾きを検出して、S9において、これらの検出値を制御回路部200に出力する。HMD検出部211は、各検出値を受信する。仮想カメラ制御部221は、HMD110の位置および傾きの検出値に基づき、HMD110における現在のuvw視野座標系を特定する。さらに、S10において、仮想カメラ制御部221は、XYZ座標系におけるuvw視野座標系のロール方向(w軸)を、HMD110の視界方向として特定する。
【0066】
本実施形態では、S11において、仮想カメラ制御部221が、特定したHMD110の視界方向を、仮想空間2におけるユーザの基準視線5として特定する。S12において、仮想カメラ制御部221は、特定した基準視線5に基づき、仮想カメラ1を制御する。仮想カメラ制御部221は、基準視線5の位置(起点)および方向が仮想カメラ1の初期状態と同一であれば、仮想カメラ1の位置および方向をそのまま維持する。一方、基準視線5の位置(起点)および/または方向が、仮想カメラ1の初期状態から変化していれば、仮想空間2内における仮想カメラ1の位置および/または傾きを、変化後の基準視線5に応じた位置および/または傾きに変更する。また、制御後の仮想カメラ1に対してuvw視野座標系を再設定する。
【0067】
S13において、視界領域決定部222は、特定した基準視線5に基づき、仮想空間2における視界領域23を決定する。その後、S14において、視界画像生成部223は、仮想空間データを処理することによって、仮想空間2に展開される仮想空間画像22の全体のうち、仮想空間2における視界領域23に投影(重畳)される部分である視界画像26を生成(レンダリング)する。S15において、視界画像生成部223は、生成した視界画像26を更新用の視界画像としてHMD110に出力する。S16において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、ユーザがHMD110を動かせば、それに連動して視界画像26が更新される。
【0068】
(プラットフォームの提供およびコンテンツの再生処理)
本実施形態では、HMDシステム100は、仮想空間2においてユーザが視聴したいコンテンツを仮想空間2においてユーザに選択するための環境(プラットフォーム)を、ユーザに提供する。ユーザが、仮想空間2に展開されるプラットフォームを通じて、視聴したいコンテンツを選択すれば、制御回路部200は、選択されたコンテンツの仮想空間2における再生を開始する。以下に、プラットフォームの提供およびコンテンツの再生処理の詳細について、説明する。
【0069】
図9は、HMDシステム100が、仮想空間2内のプラットフォームを通じてユーザが選択した動画コンテンツを仮想空間2において再生する処理の流れを示すシーケンス図である。
図10は、仮想空間2内のプラットフォームを通じた動画コンテンツの選択および再生を説明する図である。
図9に示す処理が開始されると、まず、S21において、仮想空間規定部231が、プラットフォーム提供用の仮想空間2を表す仮想空間データを生成することによって、プラットフォーム提供用の仮想空間2を規定する。生成の手順は次の通りである。まず仮想空間規定部231は、プラットフォームに対応した仮想空間2の雛形データを、雛形格納部241から取得する。ここでは、オブジェクトが使用可能な仮想空間2の雛形データが取得される。
【0070】
仮想空間規定部231は、さらに、仮想空間2において提供されるプラットフォームに関するプラットフォームコンテンツを、コンテンツ格納部242から取得する。仮想空間規定部231は、取得した雛形データに、取得したプラットフォームコンテンツを適合することによって、プラットフォームを提供するための仮想空間2を規定する仮想空間データを生成する。仮想空間規定部231は、仮想空間データにおいて、仮想空間2の天球を構成する各メッシュの管理データに、プラットフォームコンテンツに含まれる背景画像を構成する各部分画像を適宜関連付ける。
【0071】
仮想空間規定部231は、さらに、プラットフォームコンテンツに含まれる各オブジェクトの管理データを、仮想空間データに追加する。これにより各オブジェクトが、プラットフォームを提供する仮想空間2における所定の位置にそれぞれ配置される。各オブジェクトのうち1つは、ユーザによって操作される操作オブジェクトである。詳しくは後述するが、操作オブジェクト27は、仮想カメラ1または仮想空間2を回転させるために用いられる。残りは、視聴用コンテンツの概要画像(サムネイル)を表示するために用いられるサムネイルオブジェクトである。仮想空間規定部231は、次に、コンテンツ格納部242に格納される一定数の視聴用コンテンツ(ここでは動画コンテンツ)のサムネイルを、それぞれ取得する。仮想空間規定部231は、取得した各サムネイルを、仮想空間データ内のいずれかのサムネイルオブジェクトの管理データに関連付ける。これにより、仮想空間2に配置される各サムネイルオブジェクトに、サムネイルが関連付けられる。以下では、説明の便宜のために、仮想空間2に配置される、サムネイルが関連付けられたサムネイルオブジェクトのことを、単にサムネイルと表記する場合がある。
【0072】
対応するサムネイルがオブジェクトに関連付けられた各視聴用コンテンツは、ユーザが仮想空間2において再生させるために選択可能な動画コンテンツの候補(候補動画コンテンツ)である。ユーザは、サムネイルをの選択を通じて、対応する候補動画コンテンツを選択することができる。制御回路部200は、プラットフォームにおいてユーザによって選択された候補動画コンテンツを、仮想空間2において再生させる動画コンテンツとして特定する。
【0073】
図10の(a)に、プラットフォーム提供用の仮想空間2の一例を示す。この図には、1つの操作オブジェクト27および4つのサムネイルSN1〜SN4が配置される、プラットフォーム提供用の仮想空間2を示す。これらのサムネイルSN1〜SN4は、いずれも、対応する動画コンテンツの概要画像(サムネイル)が関連付けられたオブジェクトである。操作オブジェクト27の形状は、基本的に円形である。詳しくは後述するが、操作オブジェクト27は、ユーザによる操作オブジェクト27への操作に応じて弾性変形(伸張)する。
【0074】
図10の(a)に示す仮想空間2を表す仮想空間データの生成後、S22において、視界画像生成部223は、ユーザの基準視線5に基づき視界画像26を生成する。この生成方法は
図8を参照して説明した方法と同一である。ここでは、プラットフォームに対応した視界画像26が生成される。
図10の(a)では、サムネイルSN1〜N4のうち、ユーザの基準視線5によって規定される視界領域23の内部に、操作オブジェクト27、サムネイルSN1、およびSN2が配置されている。一方、サムネイルSN3およびSN4は、視界領域23の外部に配置されている。そのため視界画像生成部223は、操作オブジェクト27、サムネイルSN1、SN2を含む視界画像26を生成する。詳しくは後述するが、視界画像生成部223は、さらに注視点28を含む視界画像26を生成する。注視点28は、ユーザが視界画像26におけるどの位置に視線を当てているのかを示す情報である。
【0075】
S23において、視界画像生成部223は、生成した視界画像26をHMD110に出力する。S24においてHMD110は、受信した視界画像26をディスプレイ112に表示する。ユーザは、プラットフォームの視界画像26を視認する。サムネイルが関連付けられたオブジェクトが視界画像26に含まれる場合、視界画像26の表示時、当該オブジェクトに関連付けられたサムネイルがディスプレイ112に表示される。これによりユーザは、サムネイルを含む視界画像26を視認する。また、操作オブジェクト27が視界画像26に含まれる場合、視界画像26の表示時、操作オブジェクト27がディスプレイ112に表示される。これによりユーザは、操作オブジェクト27を含む視界画像26を視認する。
【0076】
図10の(b)に、プラットフォームの視界画像26の一例を示す。この図に示す視界画像26は、操作オブジェクト27、注視点28、サムネイルSN1、およびサムネイルSN2を含む。したがってユーザは、仮想空間2において、操作オブジェクト27、注視点28、サムネイルSN1、およびサムネイルSN2を視認する。
【0077】
視界画像生成部223は、基準視線5および視線方向N0に基づき視界画像26における注視点28の位置を決定する。ユーザが正面を視認している場合、すなわち、基準視線5が視線方向N0に一致する場合、視界画像生成部223は、視界画像26の生成時に、基準視線5に基づき視界画像26の中央に注視点28を配置する。ユーザが正面を視認したまま視線を変えない場合、基準視線5は視線方向N0に一致するので、注視点28は常に視界画像26の中央に配置される。
【0078】
一方、視界画像生成部223は、ユーザが視線を動かしたために視線方向N0が基準視線5からずれた場合、現在の視線方向N0に基づき、視界画像26における注視点28の位置を決定する。具体的には、視界領域23における視線方向N0が交わる交点を特定し、次に、視界画像26におけるこの交点に対応する位置に注視点28が当てられた視界画像26を生成する。
【0079】
ユーザがHMD110を動かさずに(基準視線5が固定されたまま)視線だけを動かすと、その視線の動きに追随して、視界画像26における注視点28の位置が変更される。これにより、視界画像26においてユーザが視線を当てた位置に注視点28が表示されるように、視界画像26が更新される。言い換えると、ユーザは、視線の動きによって、視界画像26内において注視点28を自在に動かすことができる。したがってユーザは、注視点28を確認することによって、視界画像26におけるどの箇所に視線を当てているのかを正確に把握することができる。
【0080】
図9には示さないが、この後、ユーザがHMD110を動かせば、その動きに連動して視界画像26が更新される。たとえば、ユーザがHMD110を動かすことによって、視界領域23の位置が、サムネイルSN1およびSN3を含む位置に変化すれば、サムネイルSN1およびSN3を含む視界画像26がディスプレイ112に表示される。したがってユーザは、HMD110を適宜動かすことによって、視聴したい動画コンテンツのサムネイルを、自身の視界のうちに収めることができる。
【0081】
プラットフォームの視界画像26が表示された後、S25において、注視センサ130は、ユーザの右目の視線および左目の視線をそれぞれ検出し、S26において、各検出値を制御回路部200に送信する。視線検出部212が、この検出値を受信する。S27において、視線検出部212は、受信した検出値を用いて、仮想カメラ1のuvw視野座標系におけるユーザの視線方向N0を特定する。
【0082】
S28において、視線管理部232は、視線方向N0と、視界領域23に含まれる各サムネイルとに基づき、視界画像26に含まれる特定のサムネイルに規定時間以上ユーザの視線(注視点28)が当たったか否かを判定する。より詳細には、視線管理部232は、視界領域23における視線方向N0が交わる点が、視界領域23に含まれる特定のサムネイルの表示範囲(配置範囲)に含まれているか否かを判定する。この判定結果がYESであれば、視界画像26に含まれる特定のサムネイルに視線が当たったと判定し、NOであれば、視線は特定のサムネイルに当たっていないと判定する。
【0083】
S28がNoの場合、
図9の処理はS25の直前に戻る。この後、S28がYESになるまで、S25〜S28の処理が繰り返される。一方、S28がYESの場合、S29において、コンテンツ特定部233は、規定時間以上視線が当たったと判定されたサムネイルに対応するコンテンツを特定する。たとえばユーザがサムネイルSN1に視線を当てれば、視界画像26においてサムネイルSN1に注視点28が重畳される。さらに、ユーザがサムネイルSN1に規定時間以上視線を当てれば、サムネイルSN1に対応するコンテンツとして、サムネイルSN1の管理データに関連付けられる動画コンテンツを特定する。
【0084】
この後、S30において、仮想空間規定部231は、特定された動画コンテンツを再生するための仮想空間データを生成することによって、動画コンテンツ再生用の仮想空間2を規定する。生成の手順は次の通りである。まず仮想空間規定部231は、動画コンテンツに対応した仮想空間2の雛形データを、雛形格納部241から取得する。
【0085】
仮想空間規定部231は、コンテンツ特定部233によって特定された動画コンテンツを、コンテンツ格納部242から取得する。仮想空間規定部231は、取得した雛形データに、取得した動画コンテンツを適合することによって、動画コンテンツ再生用の仮想空間2を規定する仮想空間データを生成する。仮想空間規定部231は、仮想空間データにおいて、仮想空間2の天球を構成する各メッシュの管理データに、動画コンテンツに含まれる最初のフレームの画像を構成する各部分画像を適宜関連付ける。
【0086】
ここで生成される仮想空間データによって規定される仮想空間2においては、オブジェクトを配置することが想定されていない。さらに、動画コンテンツには、オブジェクトを規定する管理データが含まれない。そのためS30において、仮想空間規定部231は、オブジェクトの管理データを含まない仮想空間データを生成する。
【0087】
動画コンテンツ再生用の仮想空間2を表す仮想空間データの生成後、S31において、視界画像生成部223は、ユーザの基準視線5に基づき視界画像26を生成する。この生成方法は
図8を参照して説明した方法と同一である。ここでは、動画コンテンツの視界画像26が生成される。S32において、視界画像生成部223は、生成した視界画像26をHMD110に出力する。S33においてHMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより仮想空間2における動画コンテンツの再生が開始され、ユーザは動画コンテンツの視界画像26を視認する。
【0088】
図9には示さないが、この後、ユーザがHMD110を動かせば、その動きに連動して視界画像26が更新される。したがってユーザは、HMD110を適宜動かすことによって、動画コンテンツを構成する各フレームの全天球画像における所望の位置の部分画像(視界画像26)を、視認することができる。
【0089】
図10の(c)に、動画コンテンツの視界画像26の一例を示す。この図に示す視界画像26は、ユーザによって選択されたサムネイルSN1に対応する動画コンテンツの視界画像26である。このように、ユーザが、
図10の(b)に示すプラットフォームの視界画像26を視認中にサムネイルSN1を視線によって選択すると、ディスプレイ112に表示されるプラットフォームの視界画像26が、
図10の(c)に示す動画コンテンツの視界画像26に更新される。すなわちユーザは、仮想空間2において視線移動によってサムネイルSN1を選択することによって、これに対応した動画コンテンツを仮想空間2において視聴することができる。
【0090】
以上のように、ユーザは、仮想空間2において視聴したい動画コンテンツを、仮想空間2における動画コンテンツ選択用のプラットフォームを通じて選択することができる。したがってユーザは、HMD110を装着する前に、制御回路部200に接続される他の一般的なディスプレイを現実空間において視認しながら、仮想空間2において視聴したい動画コンテンツを選択する必要がない。これにより、仮想空間2に対するユーザの没入感をより一層高めることができる。
【0091】
また、制御回路部200は、動画コンテンツの再生中にユーザが所定の操作をHMDシステム100に対して(たとえばコントローラ300を通じて)行えば、動画コンテンツが再生される仮想空間2をユーザに提供することを終了し、それから再び、動画コンテンツ選択用のプラットフォームが展開される仮想空間2をユーザに提供する。これによりユーザは、他のサムネイルを選択することによって、他の動画コンテンツを仮想空間2において視聴することができる。ユーザは、視聴したい動画コンテンツを切り替える際にHMD110を外す必要がないので、仮想空間2に対するユーザの没入感をより一層高めることができる。
【0092】
(仮想カメラ1の回転制御)
本実施形態に係る制御回路部200は、通常モード(第1のモード)または回転モード(第2のモード)において動作する。通常モードと回転モードとでは、制御回路部200による仮想カメラ1の制御方法が相違する。通常モードにおいて、制御回路部200は、HMD110の傾きに連動させて仮想空間2における仮想カメラ1の傾きを制御する。したがって、通常モードにおいてユーザがHMD110を傾けると、それに連動して仮想カメラ1も傾き、その傾きに応じた視界画像26がHMD110に表示される。
【0093】
回転モードにおいて、制御回路部200は、仮想空間2における仮想カメラ1の傾きを、HMD110の傾きに連動させて制御しない。したがって、回転モードにおいてユーザがHMD110を傾けても、それに連動して仮想カメラ1は傾かない。その代わりに、制御回路部200は、ユーザによる操作オブジェクト27の操作に応じて、仮想空間2において仮想カメラ1を回転させる。本実施形態ではユーザはHMD110の動きによって操作オブジェクト27を操作することができる。したがって、制御回路部200は、回転モードおいて、HMD110の傾きに応じて仮想カメラ1を回転させる。
【0094】
通常モードでは、ユーザがHMD110の動きを止めると、仮想カメラ1の動きも止まる。したがって、視界画像26の更新も止まる。一方、回転モードでは、ユーザがHMD110の動きを止めても、仮想カメラ1の回転は止まらない。すなわち、ユーザがHMD110を回転開始時の状態からさらに傾けた状態を維持し続ける限り、仮想カメラ1は回転し続ける。これにより、視界画像26も更新され続ける。
【0095】
図11は、HMDシステム100が回転モードに移行する際の処理の流れを示すシーケンス図である。以下では、プラットフォームが再生される仮想空間2がユーザに提供されている場合を例に挙げて説明する。
【0096】
プラットフォームの視界画像26が表示された後、S41において、HMDセンサ120が、HMD110の位置および傾きを検出して、S42において、検出値を制御回路部200に出力する。HMD検出部211は、この検出値を受信する。仮想カメラ制御部221は、HMD110の位置および傾きの検出値に基づき、上述した手順によって基準視線5を特定する。仮想カメラ制御部221は、特定した基準視線5に基づき、仮想カメラ1を制御する。
【0097】
次に、S43において、操作オブジェクト制御部234は、仮想空間2において操作オブジェクト27に基準視線5が規定時間以上当たったか否かを判定する。S43においてNOの場合、視界領域決定部222は、特定した基準視線5に基づき、仮想空間2における視界領域23を決定する。その後、S44において、視界画像生成部223は、視界画像26を生成し、S45においてHMD110に出力する。S46において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、通常モードにおいてユーザがHMD110を動かせば、それに連動して視界画像26が更新される。
【0098】
ユーザがHMD110を動かした場合、操作オブジェクト27が視界領域23に含まれていれば、操作オブジェクト27は他のオブジェクトと同様に動かない。一方、ユーザがHMD110を動かすことによって、操作オブジェクト27が視界領域23から外れた場合、操作オブジェクト27は視界領域23内に戻るように動く。
【0099】
これを実現する手順は次の通りである。まず操作オブジェクト制御部234は、操作オブジェクト27の少なくとも一部が視界領域23の外に位置することを検出する。次に操作オブジェクト制御部234は、操作オブジェクト27の少なくとも一部が視界領域23の外に位置することを検出した場合、操作オブジェクト27を視界領域23の中に移動させる。具体的には、操作オブジェクト27を規定するデータにおける、操作オブジェクト27の位置(座標)を、現在の視界領域23内のいずれかの座標に更新する。
【0100】
操作オブジェクト27が視界領域23に戻る位置は、視界領域23内の任意の位置であればよい。操作オブジェクト27が移動する際に移動量が最も少なくなる位置であることが好ましい。たとえば、操作オブジェクト27が視界領域23の右側に位置するようになった場合、操作オブジェクト制御部234は、操作オブジェクト27を視界領域23の右端に移動させることが好ましい。
【0101】
これにより、通常モードおいて、視界領域23に常に操作オブジェクト27が含まれるので、視界領域23に基づき生成される視界画像26にも、常に操作オブジェクト27が含まれる。したがってユーザは、操作オブジェクト27を選択したい場合、操作オブジェクト27を容易に見つけ出すことができる。また、後述するように基準視線5によって操作オブジェクト27を選択する場合、基準視線5を操作オブジェクト27に当てるためのHMD110の移動制御を、最小限にすることができる。
【0102】
一方、S43においてYESの場合、操作オブジェクト制御部234は、S47において、ユーザによって操作オブジェクト27が選択されたことを検出する。このように、ユーザは、視線を操作オブジェクト27に当てることによって、操作オブジェクト27を選択することができる。操作オブジェクト27の選択をトリガとして、S48において、制御回路部200は回転モードに移行する。これにより、ユーザは自らの意思で制御回路部200を回転モードに移行させることができる。回転モードへの移行後、操作オブジェクト27へのユーザの操作に応じて、仮想カメラ1の回転が開始される。
【0103】
図12は、制御回路部200が回転モードにおいて仮想カメラ1の回転を開始する際の処理の流れを示すシーケンス図である。
【0104】
回転モードへの移行後、S51において、HMDセンサ120が、HMD110の位置および傾きを検出して、S52において、検出値を制御回路部200に出力する。HMD検出部211は、この検出値を受信する。S53において、操作オブジェクト制御部234は、HMD110の傾きが変化したか否かを判定する。S53においてNOの場合、
図12の処理はS51の前に戻る。したがって、操作オブジェクト27の選択後、ユーザがHMD110をさらに傾けるまで、S51〜S53の工程が繰り返される。
【0105】
一方、S53においてYESの場合、S54において、操作オブジェクト制御部234は、HMD110の傾きの変化量を特定する。S55において、操作オブジェクト制御部234は、特定した傾きの変化量に基づき、ユーザによって指定された操作オブジェクト27の伸張方向(所定方向)および伸張量(所定量)を特定する。S56において、操作オブジェクト制御部234は、操作オブジェクト27を、特定した伸張方向に、特定した伸張量だけ伸張させる。その際、操作オブジェクト制御部234は、操作オブジェクト27の根本から伸張方向の終端部に向かって徐々に操作オブジェクト27が細くなるように、操作オブジェクト27を伸張する。また、操作オブジェクト27の伸張方向の終端部に基準視線5が重畳するように、操作オブジェクト27の表示状態を変更する。
【0106】
その後、S57において、回転制御部235は、操作オブジェクト27の伸張方向に基づき仮想カメラ1の回転方向を決定すると共に、操作オブジェクト27の伸張量に基づき仮想カメラ1の回転速度を決定する。その際、操作オブジェクト制御部234は、伸張方向における水平方向の成分に平行な方向を、仮想カメラ1の回転方向として特定することが好ましい。これにより、仮想カメラ1は仮想空間2におけるY軸周りにのみ回転する。また、仮想カメラ1が仮想空間2におけるZ軸周りに回転することを防止することができる。これにより、視界画像26の更新時に仮想空間2の地面が上下に移動するユーザが視認することを防止できるので、仮想空間2におけるユーザの酔い発生を防止することができる。
【0107】
S58において、仮想カメラ制御部221は、決定された回転方向に決定された回転速度で仮想カメラ1の回転を開始する。仮想カメラ1が回転すると、仮想空間2における仮想カメラ1のロール方向が変わるので、視界領域23が変更される。操作オブジェクト制御部234は、仮想カメラ1の回転時に操作オブジェクト27が常に視界領域23の中央に配置されるように、操作オブジェクト27を制御する。具体的には、操作オブジェクト27の管理データにおいて、操作オブジェクト27の座標を視界領域23の中央の座標に更新する。これにより仮想カメラ1のuvw視野座標系における操作オブジェクト27の位置が固定された状態で、仮想カメラ1および操作オブジェクト27がいずれも仮想空間2において回転する。
【0108】
視界領域決定部222は、一定時間回転後の仮想カメラ1の向き(ロール方向)に基づき視界領域23を決定する。そして、S59において、視界画像生成部223は、決定された視界領域23に基づき視界画像26を生成し、S60においてHMD110に送信する。S61おいて、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、仮想カメラ1の回転前の視界画像26が、仮想カメラ1の回転後の視界画像26に更新される。
【0109】
図13は、仮想カメラ1が回転した後の仮想空間2および視界画像26を示す図である。
図13の(a)に仮想空間2を示し、
図13の(b)に視界画像26を示す。以下では、操作オブジェクト27の選択後、ユーザが首を左側にねじることによって、操作オブジェクト27を左側に伸張させる操作を操作オブジェクト27に対して行った例を説明する。この場合、操作オブジェクト27の伸張方向はユーザから見て左側の方向なので、仮想カメラ1の回転方向として、Y軸を自転軸とした左回りの回転方向が決定される。したがって仮想カメラ1は、Y軸を自転軸として左回りに回転する。
【0110】
仮想カメラ1が左回りに回転することによって、視界領域23の位置が、仮想空間2において左回りにずれる。これにより、
図13の(a)に示すように、視界領域23におけるサムネイルSN1およびサムネイルSN2の位置が、回転開始前の位置よりも相対的に右側にずれるようになる。仮想カメラ1は回転中であるので、操作オブジェクト27は伸張している。
【0111】
図13の(b)に示すように、仮想カメラ1が回転した後の視界領域23に基づく視界画像26には、サムネイルSN1およびサムネイルSN2が含まれる。視界領域23におけるサムネイルSN1およびサムネイルSN2の位置が仮想カメラ1の回転開始前よりも右側にずれていることから、これに対応して、視界画像26におけるサムネイルSN1およびサムネイルSN2の位置も、仮想カメラ1の回転開始前よりも右側にずれている。したがってユーザは、仮想カメラ1が左回りの回転を開始したことを把握することができる。
【0112】
仮想カメラ1の回転開始後、ユーザが左側に首をねじり続けている間、仮想カメラ1は左回りに回転し続ける。一方、ユーザが、首をねじることを止めて、顔を正面に向けると、仮想カメラ1の回転は停止される。以下では、これらの処理の流れを説明する。
【0113】
図14は、制御回路部200が回転モードにおいて仮想カメラ1をさらに回転させるかまたは仮想カメラ1の回転を停止させる際の処理の流れを示すシーケンス図である。
【0114】
仮想カメラ1の回転中に、S71において、HMDセンサ120が、HMD110の位置および傾きを検出して、S72において、検出値を制御回路部200に出力する。HMD検出部211は、この検出値を受信する。S73において、操作オブジェクト制御部234は、HMD110の現在の傾きが、操作オブジェクト27の選択時のHMD110の傾き一致するか否かを判定する。S73においてNOの場合、S74において、仮想カメラ制御部221は、仮想カメラ1をさらに回転させる。
【0115】
その後、視界領域決定部222は、一定時間回転後の仮想カメラ1の向き(ロール方向)に基づき視界領域23を決定する。そして、S75において、視界画像生成部223は、決定された視界領域23に基づき視界画像26を生成し、S76においてHMD110に送信する。S77において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、仮想カメラ1を一定時間回転した後の視界画像26が、仮想カメラ1をさらに回転した後の視界画像26に更新される。
【0116】
S77の後、
図14に示す処理はS71の前に戻る。したがって、仮想カメラ1の回転開始後、ユーザがHMD110の傾きを元に戻す(操作オブジェクト27の選択時の傾きに戻す)まで、S71〜S77の工程が繰り返される。すなわち、操作オブジェクト27に対するユーザの操作が検出され続ける限り、仮想カメラ制御部221は仮想カメラ1を回転させ続ける。
【0117】
図15は、仮想カメラ1がさらに回転した後の仮想空間2および視界画像26を示す図である。
図15の(a)に仮想空間2を示し、
図15の(b)に視界画像26を示す。仮想カメラ1が左回りにさらに回転することによって、視界領域23の位置も、仮想空間2においてさらに左回りにずれる。これにより視界領域23は、仮想空間2におけるサムネイルSN1、サムネイルSN3、およびサムネイルSN4を含む位置に配置されるようになる。仮想カメラ1が回転中であるので、操作オブジェクト27も依然として伸張したままである。
【0118】
図15の(b)に示すように、仮想カメラ1がさらに回転した後の視界領域23に基づく視界画像26には、サムネイルSN1、サムネイルSN3、およびサムネイルSN4が含まれる。したがってユーザは、仮想カメラ1の回転中に、サムネイルSN4が新たに自身の視界に入ったことを把握する。以下では、この時点で仮想カメラ1の回転を停止させるための操作を操作オブジェクト27に対して行う例を説明する。
【0119】
S73においてYESの場合、S78において、操作オブジェクト制御部234は、ユーザによる操作オブジェクト27への伸張方向および伸張量の指定が解除されたことを検出する。これにより操作オブジェクト制御部234は、S79において、操作オブジェクト27の形状を元の円形に戻す。次にS80において、操作オブジェクト制御部234は、操作オブジェクト27の選択を解除する。次にS81において、仮想カメラ制御部221は、仮想カメラ1の回転を停止させる。
【0120】
仮想カメラ1の回転停止後、S82において、制御回路部200は、通常モードに移行する。これにより視界領域決定部222は、仮想カメラ1の回転が停止した時点での仮想カメラ1の向きに基づき視界領域23を特定する。視界画像生成部223は、S83において、視界領域23に基づき視界画像26を生成し、S84において視界画像26をHMD110に出力する。HMD110は、S85において、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。
【0121】
図16は、仮想カメラ1の回転が停止した後の仮想空間2および視界画像26を示す図である。
図16の(a)に仮想空間2を示し、
図16の(b)に視界画像26を示す。
図16には、
図15に示す状態まで仮想カメラ1が回転した直後に、仮想カメラ1の回転が停止した場合の例を示す。仮想カメラ1の回転停止後、仮想空間2における操作オブジェクト27の形状は元の円形に戻っている。これに対応して、視界画像26に含まれる操作オブジェクト27の形状も、元の円形に戻っている。操作オブジェクト27は選択されておらず、さらに制御回路部200は通常モードで動作している。したがってユーザは、通常通り、視線を動かすことによって視界画像26内の所望のサムネイルを選択することができる。
【0122】
図16の(b)に示す視界画像26には、仮想空間2においてサムネイルSN1から離れた位置にあるサムネイルSN4が含まれる。したがってユーザは、仮想カメラ1の回転前には視認できなかったサムネイルSN4を、簡単な操作によって容易に自身の視野に収めることができる。また、ユーザは、サムネイルSN4に視線を当てることによって、サムネイルSN4に対応した動画コンテンツの視聴を開始することができる。
【0123】
以上のように、本発明に係るHMDシステム100は、通常モードでは仮想空間2に対するユーザの没入感を高めることができる。さらに、回転モードでは、ユーザは、通常モードに比べてより簡単な操作で、仮想空間2における所望の箇所を視認することができる。HMDシステム100が通常モードおよび回転モードの両方に対応していることによって、仮想空間2におけるユーザの没入間を高めつつ、仮想空間2における操作性をより高めることができる。また、各サムネイルを仮想空間2における幅広い範囲にそれぞれ配置することができるので、仮想空間2をより有効に活用することができる。
【0124】
制御回路部200は、回転モードにおいて、操作オブジェクト27の伸張量が閾値を超えた場合、仮想カメラ1の回転を停止してもよい。具体的には、操作オブジェクト制御部234は、第2のモードにおいて、操作オブジェクト27の伸張量が閾値を超えた場合、操作オブジェクトを元の形状に戻し、かつ、操作オブジェクトの選択を解除する。操作オブジェクト制御部234は、操作オブジェクト27を元の形状に戻す前に、伸張した操作オブジェクト27を切るように操作オブジェクト27の表示状態を変更してもよい。仮想カメラ制御部221は、操作オブジェクト27の伸張量が閾値を超えた場合、仮想カメラ1の回転を停止する。この後、制御回路部200は、通常モードに移行する。この場合も、ユーザは簡単な操作で仮想カメラ1の停止させることができる。
【0125】
(仮想空間2を回転させる例)
制御回路部200は、回転モードにおいて、操作オブジェクト27に対するユーザの操作に基づき、仮想カメラ1ではなく仮想空間2を回転させてもよい。この場合、回転制御部235は、特定した回転方向および回転速度を、仮想空間規定部231に通知する。仮想空間規定部231は、通知された回転方向および回転速度で仮想空間2を回転させる。ここでいう「回転」とは、仮想空間2の中心21を通る軸を自転軸とした仮想空間2の自転を意味する。
【0126】
仮想空間規定部231は、仮想空間2のXYZ座標系をグローバル座標系において回転させることによって、仮想空間2を回転させる。このとき、仮想空間データに含まれるXYZ座標系を規定するデータを処理することによって、回転後のXYZ座標系を規定するデータに更新する。仮想空間2における各メッシュの位置はXYZ座標系における座標として各メッシュの管理データに規定されているので、XYZ座標系がグローバル座標系において回転することによって、各メッシュもグローバル座標系において同様に回転する。同様に、仮想空間2に配置されるサムネイルSN1〜SN4の位置も、XYZ座標系における座標として各サムネイルの管理データに規定されているので、XYZ座標系がグローバル座標系において回転することによって、サムネイルSN1〜SN4もグローバル座標系において同様に回転する。
【0127】
仮想空間規定部231は、仮想空間2を回転させる際、仮想カメラ1を仮想空間2と共に回転させない。すなわち、グローバル座標系における仮想カメラ1の位置および傾きを固定したまま、仮想空間2を回転させる。したがって、仮想空間2が回転すると、仮想空間2における仮想カメラ1のロール方向が相対的に変化する(仮想空間2に対して相対的に回転する)。その結果、視界領域23の位置も相対的に変化するので、その変化に追随して視界領域23に基づく視界画像26も変化する。
【0128】
仮想空間2が鉛直方向を自転軸として左回りに回転すると、仮想空間2における視界領域23の位置は、仮想空間2において相対的に右回りの方向に移動する。これにより視界画像26は、ユーザから見て右から左に流れるように更新される。逆に、仮想空間2が鉛直方向を自転軸として右回りに回転すると、仮想空間2における視界領域23の位置は、仮想空間2において相対的に左回りの方向に移動する。これにより視界画像26は、ユーザから見て左から右に流れるように更新される。
【0129】
仮想空間規定部231は、仮想空間2を回転させる際、操作オブジェクト27は仮想空間2と共に回転させないように制御する。具体的には、仮想カメラ1のuvw視野座標系における基準視線5と操作オブジェクトとの位置関係を維持したまま、仮想空間2を回転させる。言い換えると、仮想空間2の回転時、視界領域23において基準視線5が交わる点に操作オブジェクト27が常に配置されるように、仮想空間2における操作オブジェクト27の位置を更新する。この結果、回転モードにおいて仮想空間2がどれだけ回転しても、視界画像26には必ず操作オブジェクト27が含まれる。ユーザは、仮想空間2の回転中において、伸張した操作オブジェクト27を常に視認することによって、現在、操作オブジェクト27に対する操作に基づき仮想空間2が回転していることを認識することができる。
【0130】
ユーザによって指定された操作オブジェクト27の伸張方向に基づく仮想空間2の回転方向は、同じ伸張方向が指定された場合の仮想カメラ1の回転方向と逆であることが好ましい。これにより、視界画像26が流れる方向を、仮想カメラ1の回転時と仮想空間2の回転時とで一致させることができる。したがって、仮想カメラ1または仮想空間2のいずれを回転させる場合でも、操作オブジェクト27に対するユーザの同一の操作に基づく視界画像26の流れる方向に一貫性を持たせることができる。
【0131】
(視線による操作オブジェクト27の操作)
通常モードにおいて、ユーザは、HMD110ではなく視線を動かすことによって、操作オブジェクト27を選択したり操作したりしてもよい。この場合、ユーザは、視界画像26に含まれる操作オブジェクト27に視線を向けることによって、視界画像26において注視点28を操作オブジェクト27に当てる。視線管理部232は、注視点28が操作オブジェクト27に規定時間以上当たった否かを判定する。この判定結果が真である場合、操作オブジェクト制御部234は、操作オブジェクト27がユーザによって選択されたことを検出する。これにより、制御回路部200は回転モードに移行する。
【0132】
視線による操作オブジェクト27の選択後、ユーザは、視線移動によって操作オブジェクト27を操作することができる。この場合、ユーザは、操作オブジェクト27が選択されているときに、視線をいずれかの方向に変化させる。視線管理部232は、視線変化前後の各視線方向N0に基づき、視線方向N0の移動方向および移動量を特定する。操作オブジェクト制御部234は、視線方向N0の移動方向に基づき操作オブジェクト27の伸張方向を決定し、さらに、視線方向N0の移動量に基づき操作オブジェクト27の伸張量を決定する。伸張方向および伸張量の決定後の操作オブジェクト27の伸張および仮想カメラ1(または仮想空間2)の回転方法は、上述した例と同一である。
【0133】
以上の例では、ユーザは、HMD110を動かすことなく、視線を変化させる(眼球を動かす)ことによって、仮想カメラ1または仮想空間2を所望の方向に回転させることができる。たとえば、回転モードにおいてユーザが正面右側に視線を移せば、仮想カメラ1を右回り(仮想空間2を左回り)に回転させることができる。一方、回転モードにおいてユーザが正面左側に視線を移せば、仮想カメラ1を左回り(仮想空間2を右回り)に回転させることができる。これらのようにユーザは、より簡単な操作で、仮想空間2における所望の箇所を自身の視界に収めることができる。
【0134】
(コントローラ300による回転制御)
ユーザは、コントローラ300を操作することによって、操作オブジェクト27を選択したり操作したりこともできる。この場合、通常モードにおいて、操作オブジェクト制御部234は、ユーザがコントローラ300に対して操作オブジェクト27を選択するための操作を行った場合、ユーザによって操作オブジェクト27が選択されたことを検出する。また、回転モードにおいて、操作オブジェクト制御部234は、ユーザがコントローラ300を操作することによって操作オブジェクト27の伸張方向および伸張量を操作オブジェクト27に指定する操作を行った場合、これらの伸張方向および伸張量を特定する。伸張方向および伸張量の決定後の操作オブジェクト27の伸張および仮想カメラ1(または仮想空間2)の回転方法は、上述した例と同一である。
【0135】
以上の例では、ユーザは、HMD110を動かすことなく、かつ視線を変化させることなく、コントローラ300を操作することによって、仮想カメラ1または仮想空間2を所望の方向に回転させることができる。たとえば、回転モードにおいてユーザが操作オブジェクト27を右側に伸張させるための操作をコントローラ300に対して行えば、仮想カメラ1を右回り(仮想空間2を左回り)に回転させることができる。一方、回転モードにおいてユーザが操作オブジェクト27を左側に伸張するための操作をコントローラ300に対して行えば、仮想カメラ1を左回り(仮想空間2を右回り)に回転させることができる。
【0136】
コントローラ300は、ユーザが右手で持つ右コントローラと、ユーザが左手で持つ左コントローラとからなるものであってもよい。この場合、制御回路部200は、右コントローラの位置および傾きの検知値、ならびに、右コントローラが備える各ボタンへのユーザの押下操作の検出結果に基づき、ユーザの仮想右手を仮想空間2に生成することができる。同様に、制御回路部200は、左コントローラの位置および傾きの検知値、ならびに、左コントローラが備える各ボタンへのユーザの押下操作の検出結果に基づき、ユーザの仮想左手を仮想空間2に生成することができる。仮想右手および仮想左手は、いずれもオブジェクトである。
【0137】
この態様では、ユーザは、仮想右手または仮想左手によって操作オブジェクト27に作用を与えることによって、操作オブジェクト27を選択したり操作したりすることができる。たとえばユーザが、仮想右手を操作オブジェクト27に接触させるように右手を動かした場合、操作オブジェクト制御部234は、操作オブジェクト27がユーザによって選択されたことを検出する。この後、ユーザが、仮想右手で操作オブジェクト27をつまむための操作をコントローラ300に対して行う(たとえば右コントローラのいずれかのボタンを押下する)と共に、仮想右手によって操作オブジェクト27を所定方向にドラッグするように右手を動かした場合、操作オブジェクト制御部234は、右手を動かす前後の右コントローラの位置の各検知値に基づき、操作オブジェクト27の伸張方向および伸張量を特定する。伸張方向および伸張量の決定後の操作オブジェクト27の伸張および仮想カメラ1(または仮想空間2)の回転方法は、上述した例と同一である。
【0138】
以上の例では、ユーザは、HMD110を動かすことなく、かつ視線を変化させることなく、右コントローラを操作することによって、仮想カメラ1または仮想空間2を所望の方向に回転させることができる。たとえば、回転モードにおいて、ユーザが、仮想右手によって操作オブジェクト27を右方向にドラッグするように右コントローラを操作すれば、仮想カメラ1を右回り(仮想空間2を左回り)に回転させることができる。一方、回転モードにおいて、ユーザが、仮想右手によって操作オブジェクト27を左側にドラッグするように右コントローラを操作すれば、仮想カメラ1を左回り(仮想空間2を右回り)に回転させることができる。これらの場合、ユーザは、より直感的に、仮想カメラ1または仮想空間2を回転させることができる。
【0139】
(機能区画による回転制御)
プラットフォームが展開される仮想空間2を構成する天球面におけるいずれかの位置に、機能区画が規定されていてもよい。機能区画は、所定の機能を割り当てることができる領域である。以下では、機能区画をユーザが選択した場合に、制御回路部200が回転モードに移行する例を説明する。以下の例では、機能区画には、ユーザの視線(視界方向または視線方向N0)が機能区画に当たったか否かを検出する機能が割り当てられている。さらに、機能区画には、ユーザの視線が機能区画に当たった時間を検出する機能も割り当てられている。
【0140】
視線管理部232は、通常モードにおいて機能区画に対してユーザの視線(基準視線5または視線方向N0)が規定時間以上当たったことを検出した場合、機能区画をユーザが選択したことを検出する。これにより制御回路部200は、回転モードに移行する。この後、ユーザによる何らかの操作に基づき、制御回路部200は仮想カメラ1または仮想空間2の回転を開始する。たとえば制御回路部200は、規定時間以上の注視によってユーザが選択した機能区画からユーザの視線が外れたか否かを判定する。制御回路部200は、ユーザの視線が機能区画から外れたと判定した場合、視線が外れた方向を特定する。そして、視線が外れた方向を視線の移動方向として特定し、さらに、特定した視線の移動方向に基づく回転方向に仮想カメラ1または仮想空間2を回転させる。本例のように機能区画を活用すれば、操作オブジェクト27を規定することができない仮想空間2がユーザに提供される場合も、ユーザの操作に基づき仮想カメラ1または仮想空間2を回転させることができる。
【0141】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態も、本発明の技術的範囲に含まれる。各実施形態にそれぞれ開示された技術的手段を組み合わせることによって、新しい技術的特徴を形成することもできる。
【0142】
〔ソフトウェアによる実現例〕
制御回路部200の制御ブロック(検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
【0143】
後者の場合、制御ブロックは、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、前記プログラムおよび各種データがコンピュータ(又はCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、前記プログラムを展開するRAM(Random Access Memory)等を備えている。そして、コンピュータ(又はCPU)が前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記記録媒体としては、「一時的でない有形の媒体」、たとえば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して前記コンピュータに供給されてもよい。なお、本発明は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【0144】
〔付記事項〕
(項目1)ヘッドマウントディスプレイ(以下、HMD)を装着したユーザに仮想空間を提供する方法であって、第1のモードにおいて、前記仮想空間内に配置されかつ前記HMDに連動する仮想カメラのロール方向に基づく視界画像を前記HMDに表示させるステップと、第2のモードにおいて、前記ユーザの操作に基づき少なくとも回転方向を特定すると共に、前記操作が検出され続ける間、前記仮想カメラまたは前記仮想空間を前記回転方向に回転させ続けながら、前記HMDに表示させる前記視界画像を更新するステップとを有する、方法。仮想空間における操作性を高めることができる。
【0145】
(項目2)
前記視界画像を前記HMDに表示させるステップにおいて、前記仮想空間に配置される操作オブジェクトを含む前記視界画像を前記HMDに表示させ、前記第1のモードにおいて、前記操作オブジェクトが前記ユーザによって選択されたことを検出するステップと、前記第1のモードにおいて、前記操作オブジェクトが選択されたことが検出された後、前記第2のモードに移行するステップとをさらに有する、項目1の方法。ユーザの意思により、第2のモードに移行することができる。
【0146】
(項目3)前記第2のモードにおいて、前記操作オブジェクトが選択されたことが検出された後、前記ユーザによって前記操作オブジェクトに指定された所定方向を特定するステップと、前記第2のモードにおいて、前記操作オブジェクトを前記所定方向に弾性変形させるステップとをさらに有し、前記回転方向を決定するステップにおいて、前記所定方向に基づき前記回転方向を決定する、項目2の方法。操作オブジェクトに対するユーザの操作に基づき、仮想カメラまたは仮想空間を回転させることができる。
【0147】
(項目4)
前記回転方向を決定するステップにおいて、前記所定方向における水平方向の成分に基づき前記回転方向を決定する、項目3の方法。ユーザが仮想空間において酔うことを防止できる。
【0148】
(項目5)
前記第2のモードにおいて、前記操作オブジェクトへの前記所定方向の指定が解除されたことを検出するステップと、前記第2のモードにおいて、前記所定方向の指定が解除されたことが検出された場合、前記操作オブジェクトを元の形状に戻すと共に、前記操作オブジェクトの選択を解除する変更するステップと、前記第2のモードにおいて、前記所定方向の指定が解除されたことが検出された場合、前記仮想カメラまたは前記仮想空間の回転を停止させると共に、前記第1のモードに移行するステップとをさらに有する、項目4の方法。ユーザは簡単な操作で仮想カメラまたは仮想空間の回転を停止させることができる。
【0149】
(項目6)
前記第2のモードにおいて、前記操作オブジェクトが選択されたことが検出された後、基準座標系における前記HMDの傾きの変化量を特定するステップと、前記所定方向を特定するステップにおいて、前記傾きの変化量に基づき前記所定方向を特定する、項目3〜5のいずれかの方法。ユーザはHMDを傾ける方向を変えることによって仮想カメラまたは仮想空間の回転速方法を調整することができる。
【0150】
(項目7)
前記所定方向の指定が解除されたことを検出するステップにおいて、前記仮想カメラまたは仮想空間の回転が開始された後の前記HMDの傾きが、前記操作オブジェクトが選択されたことが検出された時点の前記HMDの傾きに一致した場合、前記所定方向の指定が解除されたことを検出する、項目6の方法。ユーザは簡単な操作によって仮想カメラまたは仮想空間の回転を停止させることができる。
【0151】
(項目8)
前記第2のモードにおいて、前記操作オブジェクトが選択されたことが検出された後、前記ユーザによって前記操作オブジェクトに指定された所定量を特定するステップと、前記第2のモードにおいて、前記所定量に基づき、前記仮想カメラまたは前記仮想空間を回転させる際の回転速度を決定するステップとをさらに有し、前記操作オブジェクトを弾性変形させるステップにおいて、前記操作オブジェクトを前記所定量だけ伸張させ、前記視界画像を更新するステップにおいて、前記仮想カメラまたは仮想空間を前記回転速度で回転させ続ける、項目3〜7のいずれかの方法。ユーザは所望の回転速度で仮想カメラまたは仮想空間を回転させることができる。
【0152】
(項目9)
前記第2のモードにおいて、前記所定量が閾値を超えた場合、前記操作オブジェクトを元の形状に戻し、かつ、前記操作オブジェクトの選択を解除するステップと、前記第2のモードにおいて、前記所定量が閾値を超えた場合、前記仮想カメラまたは前記仮想空間の回転を停止させるステップと、前記第2のモードにおいて、前記仮想カメラまたは前記仮想空間の回転が停止した後、前記第1のモードに移行するステップとをさらに有する、項目8の方法。ユーザは簡単な操作で仮想カメラまたは仮想空間の回転を停止させることができる。
【0153】
(項目10)
前記第2のモードにおいて、前記操作オブジェクトが選択されたことが検出された後、基準座標系における前記HMDの傾きの変化量を特定するステップをさらに備えており、、前記所定量を特定するステップにおいて、前記傾きの変化量に基づき前記所定量を特定する、項目8または9の方法。ユーザはHMDを傾ける度合いを変えることによって仮想カメラまたは仮想空間の回転速方法を調整することができる。
【0154】
(項目11)
前記第1のモードにおいて、前記操作オブジェクトの少なくとも一部が、前記仮想カメラの視界領域の外に位置することを検出するステップと、前記第1のモードにおいて、前記操作オブジェクトの少なくとも一部が、前記視界領域の外に位置することが検出された場合、前記操作オブジェクトを前記視界領域の中に移動させるステップとをさらに有する、項目2〜10のいずれかの1つの方法。ユーザがオブジェクトを見つけ出しやすくなる。
【0155】
(項目12)
前記第1のモードにおいて、前記仮想空間に規定される機能区画をユーザが選択したことを検出するステップと、前記第1のモードにおいて、前記仮想空間に規定される機能区画をユーザが選択したことが検出された場合、前記第2のモードに移行するステップをさらに有する、項目1の方法。オブジェクトを用いることができない仮想空間が提供される場合も、ユーザの操作に基づき仮想カメラまたは仮想空間を回転させることができる。
【0156】
(項目13)
項目1〜12のいずれかの方法の各ステップを、コンピュータに実行させるプログラム。
【0157】
(項目14)
項目13のプログラムを記録したコンピュータ読み取り可能な記録媒体。