(58)【調査した分野】(Int.Cl.,DB名)
前記仮想カメラの向きを設定するステップにおいて、水平方向に対する前記HMDの傾きが前記傾き補正値に一致する場合、前記仮想カメラの向きを、前記仮想空間におけるXZ平面に対して平行に設定する、請求項2または3に記載の方法。
【発明を実施するための形態】
【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を備えている。仮想空間規定部231は、ユーザに提供される仮想空間2を表す仮想空間データを生成することによって、HMDシステム100における仮想空間2を規定する。視線管理部232は、仮想空間2におけるユーザの視線を管理する。コンテンツ特定部233は、仮想空間2における再生対象のコンテンツを特定する。傾き補正値特定部234は、仮想空間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】
各コンテンツには、所定の傾き補正値が必要に応じて予め規定されている。傾き補正値は、コンテンツをユーザが視聴する際に前提とする姿勢に応じて、当該コンテンツに対して規定される。たとえば、ユーザが座位姿勢で視聴することを前提としたコンテンツには、座位姿勢に応じた傾き補正値が規定される。一方、ユーザが仰臥姿勢で視聴することを前提としたコンテンツには、仰臥姿勢に応じた傾き補正値が規定される。傾き補正値は、グローバル座標系におけるHMD110に対する仮想カメラ1の傾きを補正するために用いられる。あるいは、グローバル座標系に対する仮想空間2のXYZ座標系の傾きを補正するために用いられる。
【0060】
たとえば、コンテンツが、ユーザが座位姿勢または立位姿勢で視聴することを前提としたものであれば、当該コンテンツに規定される傾き補正値は0°である。多くのコンテンツは、ユーザが座位姿勢で視聴することを前提としたものである。ユーザは、この種のコンテンツが再生される仮想空間2における現実感を高めるために、実際に座ったまたは立った状態でこの種のコンテンツを視聴する。
【0061】
一方、コンテンツが、ユーザが鉛直斜め上を向いて寝た状態(仰臥姿勢)で視聴することが適したものであれば、コンテンツに規定される傾き補正値はたとえば60°である。この種のコンテンツとして、たとえば、ユーザ自身が他の人物に膝枕してもらったときにユーザが視認する映像をユーザに提示する動画コンテンツがある。このような動画コンテンツに予め規定される初期方向は、全天球画像のうちユーザが寝ころんだ状態で視認する箇所を向いている。ユーザは、この種の動画コンテンツが再生される仮想空間2における現実感を高めるために、実際に床に寝ころんだ状態でこの種の動画コンテンツを視聴する。
【0062】
上述した傾き補正値は、単なる例示に過ぎない。コンテンツを視聴する際に前提とするユーザの姿勢に応じた任意の値が、傾き補正値としてコンテンツに設定され得る。たとえばコンテンツが、ユーザが鉛直真上を向いた状態で視聴することを前提としたものであれば、傾き補正値として90°がコンテンツに規定される。一方、コンテンツが、ユーザが鉛直真下を向いて視聴することを前提としたものであれば、傾き補正値として−90°がコンテンツに規定される。
【0063】
多くのコンテンツは、ユーザが座位姿勢または立位姿勢で視聴することを前提とするので、このようなコンテンツには傾き補正値を予め規定しなくてもよい。コンテンツに傾き補正値が規定されていない場合、傾き補正値特定部234は、このコンテンツに値が0°の傾き補正値が規定されているものと見なす。
【0064】
通信部250は、ネットワークNWを介して外部機器400(たとえばサーバ)との間でデータを送受信する。
【0065】
(仮想空間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方向に合致させるように、各部分画像と各メッシュとを関連付けることが好ましい。
【0066】
仮想空間規定部231は、さらに、必要に応じて、コンテンツに含まれる各オブジェクトの管理データを、仮想空間データに追加する。その際、各管理データに、対応するオブジェクトが仮想空間2において配置される位置を表す座標を、設定する。これにより各オブジェクトが、仮想空間2における当該座標の位置にそれぞれ配置される。
【0067】
その後、ユーザによってHMD110が起動されると、S2において、HMDセンサ120が、HMD110の初期状態における位置および傾きを検出して、S3において、検出値を制御回路部200に出力する。HMD検出部211は、この検出値を受信する。この後、S4において、仮想カメラ制御部221は、仮想空間2において仮想カメラ1を初期化する。
【0068】
初期化の手順は次の通りである。まず仮想カメラ制御部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のロール方向がコンテンツの初期方向に適合されるので、コンテンツの再生開始後におけるユーザが最初に向く水平方向の向きを、コンテンツの初期方向に一致させることができる。
【0069】
仮想カメラ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に表示する。これによりユーザは初期視界画像を視認する。
【0070】
その後、S8において、HMDセンサ120が、HMD110の現在の位置および傾きを検出して、S9において、これらの検出値を制御回路部200に出力する。HMD検出部211は、各検出値を受信する。仮想カメラ制御部221は、HMD110の位置および傾きの検出値に基づき、HMD110における現在のuvw視野座標系を特定する。さらに、S10において、仮想カメラ制御部221は、XYZ座標系におけるuvw視野座標系のロール方向(w軸)を、HMD110の視界方向として特定する。
【0071】
本実施形態では、S11において、仮想カメラ制御部221が、特定したHMD110の視界方向を、仮想空間2におけるユーザの基準視線5として特定する。S12において、仮想カメラ制御部221は、特定した基準視線5に基づき、仮想カメラ1を制御する。仮想カメラ制御部221は、基準視線5の位置(起点)および方向が仮想カメラ1の初期状態と同一であれば、仮想カメラ1の位置および方向をそのまま維持する。一方、基準視線5の位置(起点)および/または方向が、仮想カメラ1の初期状態から変化していれば、仮想空間2内における仮想カメラ1の位置および/または傾きを、変化後の基準視線5に応じた位置および/または傾きに変更する。また、制御後の仮想カメラ1に対してuvw視野座標系を再設定する。
【0072】
S13において、視界領域決定部222は、特定した基準視線5に基づき、仮想空間2における視界領域23を決定する。その後、S14において、視界画像生成部223は、仮想空間データを処理することによって、仮想空間2に展開される仮想空間画像22の全体のうち、仮想空間2における視界領域23に投影(重畳)される部分である視界画像26を生成(レンダリング)する。S15において、視界画像生成部223は、生成した視界画像26を更新用の視界画像としてHMD110に出力する。S16において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより、ユーザがHMD110を動かせば、それに連動して視界画像26が更新される。
【0073】
(プラットフォームの提供およびコンテンツの再生処理)
本実施形態では、HMDシステム100は、仮想空間2においてユーザが視聴したいコンテンツを仮想空間2においてユーザに選択するための環境(プラットフォーム)を、ユーザに提供する。ユーザが、仮想空間2に展開されるプラットフォームを通じて、視聴したいコンテンツを選択すれば、制御回路部200は、選択されたコンテンツの仮想空間2における再生を開始する。以下に、プラットフォームの提供およびコンテンツの再生処理の詳細について、説明する。
【0074】
図9は、HMDシステム100が、仮想空間2内のプラットフォームを通じてユーザが選択した動画コンテンツを仮想空間2において再生する処理の流れを示すシーケンス図である。
図10は、仮想空間2内のプラットフォームを通じた動画コンテンツの選択および再生を説明する図である。
図9に示す処理が開始されると、まず、S21において、仮想空間規定部231が、プラットフォーム提供用の仮想空間2を表す仮想空間データを生成することによって、プラットフォーム提供用の仮想空間2を規定する。生成の手順は次の通りである。まず仮想空間規定部231は、プラットフォームに対応した仮想空間2の雛形データを、雛形格納部241から取得する。ここでは、オブジェクトが使用可能な仮想空間2の雛形データが取得される。
【0075】
仮想空間規定部231は、さらに、仮想空間2において提供されるプラットフォームに関するプラットフォームコンテンツを、コンテンツ格納部242から取得する。仮想空間規定部231は、取得した雛形データに、取得したプラットフォームコンテンツを適合することによって、プラットフォームを提供するための仮想空間2を規定する仮想空間データを生成する。仮想空間規定部231は、仮想空間データにおいて、仮想空間2の天球を構成する各メッシュの管理データに、プラットフォームコンテンツに含まれる背景画像を構成する各部分画像を適宜関連付ける。
【0076】
仮想空間規定部231は、さらに、プラットフォームコンテンツに含まれる各オブジェクトの管理データを、仮想空間データに追加する。これにより各オブジェクトが、プラットフォームを提供する仮想空間2における所定の位置にそれぞれ配置される。仮想空間規定部231は、次に、コンテンツ格納部242に格納される一定数の視聴用コンテンツ(ここでは動画コンテンツ)の概要画像(サムネイル)を、それぞれ取得する。仮想空間規定部231は、取得した各サムネイルを、仮想空間データ内のいずれかのオブジェクトの管理データに関連付ける。これにより、仮想空間2に配置される各オブジェクトに、サムネイルが関連付けられる。以下では、説明の便宜のために、仮想空間2に配置される、サムネイルが関連付けられたオブジェクトのことを、単にサムネイルと表記する場合がある。
【0077】
対応するサムネイルがオブジェクトに関連付けられた各視聴用コンテンツは、ユーザが仮想空間2において再生させるために選択可能な動画コンテンツの候補(候補動画コンテンツ)である。ユーザは、サムネイルの選択を通じて、対応する候補動画コンテンツを選択することができる。制御回路部200は、プラットフォームにおいてユーザによって選択された候補動画コンテンツを、仮想空間2において再生させる動画コンテンツとして特定する。
【0078】
図10の(a)に、プラットフォーム提供用の仮想空間2の一例を示す。この図には、4つのサムネイルSN1〜SN4が配置される、プラットフォーム提供用の仮想空間2を示す。これらのサムネイルSN1〜SN4は、いずれも、対応する動画コンテンツの概要画像(サムネイル)が関連付けられたオブジェクトである。
【0079】
図10の(a)に示す仮想空間2を表す仮想空間データの生成後、S22において、視界画像生成部223は、ユーザの基準視線5に基づき視界画像26を生成する。この生成方法は
図8を参照して説明した方法と同一である。ここでは、プラットフォームに対応した視界画像26が生成される。
図10の(a)では、サムネイルSN1〜N4のうち、ユーザの基準視線5によって規定される視界領域23の内部に、サムネイルSN1およびSN2が配置されている。一方、サムネイルSN3およびSN4は、視界領域23の外部に配置されている。そのため視界画像生成部223は、サムネイルSN1およびSN2を含む視界画像26を生成する。
【0080】
S23において、視界画像生成部223は、生成した視界画像26をHMD110に出力する。S24においてHMD110は、受信した視界画像26をディスプレイ112に表示する。ユーザは、プラットフォームの視界画像26を視認する。サムネイルが関連付けられたオブジェクトが視界画像26に含まれる場合、視界画像26の表示時、当該オブジェクトに関連付けられたサムネイルがディスプレイ112に表示される。これによりユーザは、サムネイルを含む視界画像26を視認する。
図10の(b)に、プラットフォームの視界画像26の一例を示す。この図に示す視界画像26は、サムネイルSN1およびN2を含むので、ユーザは、仮想空間2において、サムネイルSN1およびSN2を視認する。
【0081】
図9には示さないが、この後、ユーザがHMD110を動かせば、その動きに連動して視界画像26が更新される。たとえば、ユーザがHMD110を動かすことによって、視界領域23の位置が、サムネイルSN1およびSN3を含む位置に変化すれば、サムネイルSN1およびSN3を含む視界画像26がディスプレイ112に表示される。したがってユーザは、HMD110を適宜動かすことによって、視聴したい動画コンテンツのサムネイルを、自身の視界のうちに収めることができる。
【0082】
プラットフォームの視界画像26が表示された後、S25において、注視センサ130は、ユーザの右目の視線および左目の視線をそれぞれ検出し、S26において、各検出値を制御回路部200に送信する。視線検出部212が、この検出値を受信する。S27において、視線検出部212は、受信した検出値を用いて、仮想カメラ1のuvw視野座標系におけるユーザの視線方向N0を特定する。
【0083】
S28において、視線管理部232は、視線方向N0と、視界領域23に含まれる各サムネイルとに基づき、視界画像26に含まれる特定のサムネイルに規定時間以上ユーザの視線が当たったか否かを判定する。より詳細には、視線管理部232は、視界領域23における視線方向N0が交わる点が、視界領域23に含まれる特定のサムネイルの表示範囲(配置範囲)に含まれているか否かを判定する。この判定結果がYESであれば、視界画像26に含まれる特定のサムネイルに視線が当たったと判定し、NOであれば、視線は特定のサムネイルに当たっていないと判定する。
【0084】
S28がNoの場合、
図9の処理はS25の直前に戻る。この後、S28がYESになるまで、S25〜S28の処理が繰り返される。一方、S28がYESの場合、S29において、コンテンツ特定部233は、規定時間以上視線が当たったと判定されたサムネイルに対応するコンテンツを特定する。たとえば、ユーザがサムネイルSN1に規定時間以上視線を当てれば、サムネイルSN1に対応するコンテンツとして、サムネイルSN1の管理データに関連付けられる動画コンテンツを特定する。
【0085】
この後、S30において、仮想空間規定部231は、特定された動画コンテンツを再生するための仮想空間データを生成することによって、動画コンテンツ再生用の仮想空間2を規定する。生成の手順は次の通りである。まず仮想空間規定部231は、動画コンテンツに対応した仮想空間2の雛形データを、雛形格納部241から取得する。
【0086】
仮想空間規定部231は、コンテンツ特定部233によって特定された動画コンテンツを、コンテンツ格納部242から取得する。仮想空間規定部231は、取得した雛形データに、取得した動画コンテンツを適合することによって、動画コンテンツ再生用の仮想空間2を規定する仮想空間データを生成する。仮想空間規定部231は、仮想空間データにおいて、仮想空間2の天球を構成する各メッシュの管理データに、動画コンテンツに含まれる最初のフレームの画像を構成する各部分画像を適宜関連付ける。
【0087】
ここで生成される仮想空間データによって規定される仮想空間2においては、オブジェクトを配置することが想定されていない。さらに、動画コンテンツには、オブジェクトを規定する管理データが含まれない。そのためS30において、仮想空間規定部231は、オブジェクトの管理データを含まない仮想空間データを生成する。
【0088】
動画コンテンツ再生用の仮想空間2を表す仮想空間データの生成後、S31において、視界画像生成部223は、ユーザの基準視線5に基づき視界画像26を生成する。この生成方法は
図8を参照して説明した方法と同一である。ここでは、動画コンテンツの視界画像26が生成される。S32において、視界画像生成部223は、生成した視界画像26をHMD110に出力する。S33においてHMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。これにより仮想空間2における動画コンテンツの再生が開始され、ユーザは動画コンテンツの視界画像26を視認する。
【0089】
図9には示さないが、この後、ユーザがHMD110を動かせば、その動きに連動して視界画像26が更新される。したがってユーザは、HMD110を適宜動かすことによって、動画コンテンツを構成する各フレームの全天球画像における所望の位置の部分画像(視界画像26)を、視認することができる。
【0090】
図10の(c)に、動画コンテンツの視界画像26の一例を示す。この図に示す視界画像26は、ユーザによって選択されたサムネイルSN1に対応する動画コンテンツの視界画像26である。このように、ユーザが、
図10の(b)に示すプラットフォームの視界画像26を視認中にサムネイルSN1を視線によって選択すると、ディスプレイ112に表示されるプラットフォームの視界画像26が、
図10の(c)に示す動画コンテンツの視界画像26に更新される。すなわちユーザは、仮想空間2において視線移動によってサムネイルSN1を選択することによって、これに対応した動画コンテンツを仮想空間2において視聴することができる。
【0091】
以上のように、ユーザは、仮想空間2において視聴したい動画コンテンツを、仮想空間2における動画コンテンツ選択用のプラットフォームを通じて選択することができる。したがってユーザは、HMD110を装着する前に、制御回路部200に接続される他の一般的なディスプレイを現実空間において視認しながら、仮想空間2において視聴したい動画コンテンツを選択する必要がない。これにより、仮想空間2に対するユーザの没入感をより一層高めることができる。
【0092】
また、制御回路部200は、動画コンテンツの再生中にユーザが所定の操作をHMDシステム100に対して(たとえばコントローラ300を通じて)行えば、動画コンテンツが再生される仮想空間2をユーザに提供することを終了し、それから再び、動画コンテンツ選択用のプラットフォームが展開される仮想空間2をユーザに提供する。これによりユーザは、他のサムネイルを選択することによって、他の動画コンテンツを仮想空間2において視聴することができる。ユーザは、視聴したい動画コンテンツを切り替える際にHMD110を外す必要がないので、仮想空間2に対するユーザの没入感をより一層高めることができる。
【0093】
(仮想カメラ1の傾き補正)
仮想空間2において再生可能な各コンテンツには、その内容に応じた傾き補正値が予め規定されている。制御回路部200は、コンテンツの再生開始時に、この傾き補正値に応じて仮想カメラ1の傾きを適宜補正する。これにより、異なる姿勢で見ることを前提とした様々なコンテンツを、ユーザの姿勢に応じて仮想空間2において好適に再生することができるので、コンテンツに応じた姿勢でユーザがコンテンツを視聴した際にユーザが自然な映像を視認することができる。以下に、制御回路部200がコンテンツの傾き補正値に応じて仮想カメラ1の傾きを補正する際の詳細を説明する。
【0094】
図11は、HMDシステム100が、仮想カメラ1の傾きが補正された仮想空間2をユーザに提供する処理の流れを示すシーケンス図である。この図に示す処理は、プラットフォームを通じてユーザがいずれかのサムネイルを選択した後における、対応する動画コンテンツの再生開始時の処理である。ユーザが選択したサムネイルに対応する動画コンテンツが特定された後、S41において、仮想空間規定部231は、動画コンテンツ再生用の仮想空間データを生成する。この詳細は、
図9のS21の詳細と同一である。したがって、仮想空間規定部231は、再生対象の動画コンテンツに規定される傾き補正値を何ら考慮することなく、仮想空間データを生成する。すなわち、
図10の例では、生成される仮想空間データによって規定される仮想空間2のXYZ座標系は、コンテンツに規定される傾き補正値によって補正されていないため、常にグローバル座標系と平行である。
【0095】
仮想空間データの生成後、仮想カメラ制御部221は、仮想空間2において仮想カメラ1を初期化する。このとき行われる初期化の手順には、
図8を参照して説明した初期化の手順と異なり、コンテンツの傾き補正値が考慮される。初期化の手順は次の通りである。まず、S42において、仮想カメラ制御部221は、仮想空間2における初期位置(
図4における中心21等)に、仮想カメラ1を配置する。次に、S43において、HMDセンサ120が、HMD110の現在の位置および傾きを検出して、S44において、これらの検出値を制御回路部200に出力する。HMD検出部211は、各検出値を受信する。
【0096】
次に、傾き補正値特定部234が、S45において、再生対象の動画コンテンツ(コンテンツ特定部233によって特定された動画コンテンツ)に規定される傾き補正値を、当該動画コンテンツから特定する。もし動画コンテンツに傾き補正値が規定されていない場合、傾き補正値特定部234は、傾き補正値として0°を特定する。
【0097】
次にS46において、仮想カメラ制御部221は、仮想カメラ1をグローバル座標系においてHMD110に対して傾き補正値だけ傾けることによって、仮想空間2における仮想カメラ1の向きを設定する。この詳細は次の通りである。まず仮想カメラ制御部221は、HMD110の位置および傾きの検出値に基づき、HMD110における現在のuvw視野座標系を特定する。さらに、HMD110のuvw視野座標系をグローバル座標系において傾き補正値だけ傾けたuvw視野座標系を算出し、これを仮想カメラ1に設定する。たとえば仮想カメラ制御部221は、グローバル座標系における水平方向に対するHMD110の傾きが、動画コンテンツに規定される傾き補正値に一致する場合、仮想カメラ1の向きを、仮想空間2におけるXY平面に対して平行に設定する。仮想カメラ制御部221は、仮想カメラ1に設定したuvw視野座標系のロール方向(w軸)をユーザの基準視線5として特定する。
【0098】
その後、S47において、視界画像生成部223は、仮想カメラ1の向きに基づく視界画像26を生成し、S48においてHMD110に出力する。S49において、HMD110は、受信した視界画像26をディスプレイ112に表示することによって、視界画像26を更新する。
【0099】
(仮想カメラ1の傾き補正例)
図12は、コンテンツに応じてHMD110に対する仮想カメラ1の傾きが異なることを説明する図である。
図12の(a)に、ユーザが座位姿勢で見ることを前提とした動画コンテンツが再生される仮想空間2を示す。一方、
図12の(b)に、ユーザが仰臥姿勢で見ることを前提としたコンテンツが再生される仮想空間2を示す。
【0100】
図12の(a)では、仮想空間2において再生される動画コンテンツに規定される傾き補正値は、0°である。したがって、仮想空間2が規定された後、仮想カメラ1の傾きは補正されない。すなわち、グローバル座標系における仮想カメラ1の傾きは、グローバル座標系におけるHMD110の傾きに一致する。仮想空間2のXYZ座標系はグローバル座標系と平行であるため、XYZ座標系における仮想カメラ1の傾きは、グローバル座標系におけるHMD110の傾きに一致する。すなわち、HMD110の傾きに連動して仮想カメラ1が傾くように、仮想空間2における仮想カメラ1の向きが設定される。
【0101】
たとえば
図12の(a)に示すように、ユーザが座位姿勢で水平方向を視認している場合、グローバル座標系における水平面に対するHMD110の傾きは0°(水平面と平行)である。このとき同様に、XYZ座標系におけるXY平面に対する仮想カメラ1の傾きも0°(XZ平面と平行)である。したがって、ユーザが座位姿勢で見ることを前提としたコンテンツの再生を、ユーザが水平方向を視認した状態で開始すると、この動画コンテンツに規定される初期方向に対応した視界画像26が、ディスプレイ112に表示される。これによりユーザは、座位姿勢で視認する場合に自然に見える映像を、座位姿勢で実際に視認することができる。
【0102】
一方、
図12の(b)では、仮想空間2において再生される動画コンテンツに規定される傾き補正値は、60°である。したがって、仮想空間2が規定された後、仮想カメラ1の傾きは傾き補正値に基づき補正される。具体的には、グローバル座標系において仮想カメラ1はHMD110に対して相対的に60°傾いている。仮想空間2のXYZ座標系はグローバル座標系と平行であるため、XYZ座標系におけるXZ平面に対する仮想カメラ1の傾きは、グローバル座標系における水平面に対するHMD110の傾きを60°だけ補正した傾きである。すなわち、HMD110の傾きを60°補正した傾きで仮想カメラ1を傾けることによって、仮想空間2における仮想カメラ1の向きが設定される。
【0103】
たとえば
図12の(b)に示すように、ユーザが寝た状態で鉛直60°斜め上を視認している場合、グローバル座標系におけるHMD110の傾きは60°(水平面に対して60°傾く)である。このとき、XYZ座標系における仮想カメラ1の傾きは、HMD110の傾きである60°を傾き補正値で補正した値である0°である。すなわち仮想カメラ1のロール方向(w軸)は、XY平面に対して平行である。
【0104】
したがって、ユーザが仰臥姿勢で見ることを前提としたコンテンツの再生を、ユーザが実際に寝た状態で開始すると、この動画コンテンツに規定される初期方向に対応した視界画像26が、ディスプレイ112に表示される。これによりユーザは、仰臥姿勢で視認する場合に自然に見える映像を、仰臥姿勢で実際に視認することができる。
【0105】
(機能区画の統一)
HMDシステム100は、動画コンテンツに規定される傾き補正値に基づき仮想カメラ1の傾きを補正することによって、再生される動画コンテンツの内容によらず、動画コンテンツに含まれる広告の表示位置に対する機能区画の位置を統一化することができる。この点について、以下に説明する。
【0106】
図13は、ユーザが座位姿勢で見ることを前提としたコンテンツが再生される際の機能区画の位置を説明する図である。
図13の(a)に、機能区画27が規定される仮想空間2を示す。この図の例では、仮想空間2を構成する天球面におけるZ軸の正方向(図中右方向)と交わる位置の近辺に、機能区画27が予め規定されている。機能区画27は、所定の機能を割り当てることができる領域である。本実施形態では、機能区画27には、ユーザの視線(視界方向または視線方向N0)が機能区画27に当たったか否かを検出する機能が割り当てられている。さらに、機能区画27には、ユーザの視線が機能区画27に当たった時間を検出する機能も割り当てられている。
【0107】
図13の(a)に示す仮想空間2において再生される、ユーザが座位姿勢で見ることを前提とした動画コンテンツには、広告が含まれている。広告はあくまでも動画コンテンツを構成する各フレームの画像の一部であり、動画コンテンツが別途広告データをさらに有する訳ではない。仮想空間2において動画コンテンツが再生される際、動画コンテンツに含まれる広告が仮想空間2内の機能区画27の位置に配置されるように、動画コンテンツ内の広告の位置が予め規定されている。具体的には、動画コンテンツの初期方向を仮想空間2のXYZ座標系における方向に一致させるように動画コンテンツの各部分画像と仮想空間2の各メッシュとを関連付けた際、仮想空間2における機能区画27の位置に対応するメッシュに広告を含む部分画像が関連付けられるようになっている。
【0108】
図13の(a)では、初期状態(ユーザが動画コンテンツを選択した直後)に規定される仮想空間2を示す。この例では、ユーザは水平方向を向いており、そのため仮想カメラ1はXZ平面に対して平行に配置されている。したがって、基準視線5はZ方向(動画コンテンツの初期方向)に一致するため、機能区画27を含む視界領域23が決定される。これにより、機能区画27に重畳する部分画像(すなわち広告の表示箇所)を含む視界画像26が生成される。
【0109】
図13の(b)に、広告A1を含む視界画像26の一例を示す。この例では、ユーザが座位姿勢で見ることを前提とした動画コンテンツの再生開始時、初期の視界画像26として、広告A1を含む視界画像26がディスプレイ112表示される。仮想空間2における広告A1の位置は、天球面における機能区画27に重畳している。したがって、視線管理部232は、機能区画27に対して視線が当たったことを検出することによって、ユーザが広告A1に視線を当てたことを検出することができる。これによりHMDシステム100は、動画コンテンツ視聴時の広告A1に対するユーザの関心の度合いを測ることができる。
【0110】
図14は、ユーザが仰臥姿勢で見ることを前提としたコンテンツが再生される際の機能区画の位置を説明する図である。
図14の(a)に、機能区画27が規定される仮想空間2を示す。この図の例でも、
図14の(a)と同様に、仮想空間2を構成する天球面におけるZ軸の正方向(図中右方向)と交わる位置の近辺に、機能区画27が予め規定されている。すなわち、仮想空間2における機能区画27の位置は、
図13の(b)の場合と統一されている。これにより、
図14の(a)に示す仮想空間2を規定する場合と、
図13の(a)に示す仮想空間2を規定する場合とで、同一の雛形データを用いることができる。
【0111】
図14の(a)に示す仮想空間2において再生される、ユーザが仰臥姿勢で見ることを前提とした動画コンテンツにも、広告が含まれている。この動画コンテンツが再生される際、動画コンテンツに含まれる広告が仮想空間2内の機能区画27の位置に配置されるように、動画コンテンツ内の広告の位置が予め規定されている。
【0112】
図14の(a)では、初期状態、すなわちユーザが動画コンテンツを選択した直後、に規定される仮想空間2を示す。この例では、ユーザは鉛直斜め60°上を向いて寝ており、そのため仮想カメラ1は60°の傾き傾き補正値によって補正されてXZ平面に対して平行に配置されている。したがって、基準視線5はZ方向(動画コンテンツの初期方向)に一致するため、機能区画27を含む視界領域23が決定される。これにより、機能区画27に重畳する部分画像(すなわち広告の表示箇所)を含む視界画像26が生成される。
【0113】
図14の(b)に、広告A2を含む視界画像26の一例を示す。この例では、ユーザが仰臥姿勢で見ることを前提とした動画コンテンツの再生開始時、初期の視界画像26として、広告A2を含む視界画像26がディスプレイ112表示される。仮想空間2における広告A2の位置は、天球面における機能区画27に重畳している。したがって、視線管理部232は、機能区画27に対して視線が当たったことを検出することによって、ユーザが広告A2に視線を当てたことを検出することができる。これによりHMDシステム100は、広告A2に対するユーザの関心の度合いを測ることができる。
【0114】
図13および
図14に示すように、各コンテンツに規定される傾き補正値を用いて仮想カメラ1の傾きを補正することによって、コンテンツごとの広告に対する機能区画27の位置を、容易に統一化することができる。これにより、コンテンツごとに、機能区画27の機能を規定するプログラムを変更する必要がなくなる。すなわち、共通のプログラムを用いて、各コンテンツ内の広告へのユーザの視線に関する視線情報を収集することができる。その結果、プラットフォームを用いた動画コンテンツの再生を効率よく運営することができる。
【0115】
(XYZ座標系を傾ける例)
制御回路部200は、コンテンツに規定される傾き補正値を用いて、仮想カメラ1の傾きではなく、仮想空間2のXYZ座標系の傾きを補正してもよい。以下、この例について説明する。
【0116】
本例では、仮想空間規定部231が仮想空間2を規定する際、グローバル座標系に対するXYZ座標系の傾きを、コンテンツに規定される傾き補正値を用いて補正する。具体的には、仮想空間規定部231は、傾き補正値特定部234によって特定された傾き補正値だけ、XYZ座標系をグローバル座標系に対して相対的に傾ける。たとえば傾き補正値が60°であれば、仮想空間規定部231は、XYZ座標系のXZ平面とグローバル座標系の水平面とのなす角度が60°になるように、XYZ座標系をグローバル座標系に対して傾ける。
【0117】
仮想空間規定部231は、雛形データに含まれる仮想空間2のXYZ座標系を規定するデータを傾き補正値を用いて処理することによって、傾き補正後のXYZ座標系を規定するデータを生成し、仮想空間データに追加する。仮想空間2における各メッシュの位置はXYZ座標系における座標として各メッシュの管理データに規定されているので、XYZ座標系がグローバル座標系に対して傾くことによって、各メッシュもグローバル座標系に対して同様に傾く。一方、仮想カメラ制御部221は、仮想カメラ1を仮想空間2に配置した後、グローバル座標系における仮想カメラ1の傾きをHMD110の傾きに一致させることによって、仮想空間2における仮想カメラ1の向きを設定する。すなわちHMD110に対する仮想カメラ1の傾きは補正しない。たとえば仮想カメラ制御部221は、グローバル座標系における水平方向に対するHMD110の傾きが、動画コンテンツに規定される傾き補正値に一致する場合、仮想カメラ1の向きを、仮想空間2におけるXY平面に対して平行に設定する。
【0118】
本例では、ユーザが座位姿勢で見ることを前提としたコンテンツが仮想空間2において再生される場合、XYZ座標系はグローバル座標系に平行であり、仮想カメラ1の傾きはHMD110の傾きに連動する。したがって、ユーザが座位姿勢で水平方向を視認している(HMD110が水平方向を向いている)場合、仮想カメラ1の向きは仮想空間2のXZ平面に平行である。これによりXZ平面に平行な基準視線5に応じた視界画像26がディスプレイ112に表示されるので、ユーザは、自然な映像を座位姿勢で視認することができる。
【0119】
一方、本例では、ユーザが仰臥姿勢で見ることを前提としたコンテンツが仮想空間2において再生される場合、仮想空間2のXYZ座標系はグローバル座標系に対して60°傾いており、かつ、グローバル座標系における仮想カメラ1の傾きはHMD110の傾きに連動する。したがって、ユーザが寝た状態で鉛直60°斜め上を視認している(HMD110が水平方向から60°傾いている)場合、仮想カメラ1の向きは仮想空間2のXZ平面に平行である。これによりXZ平面に平行な基準視線5に応じた視界画像26がディスプレイ112に表示される。その結果、ユーザは、自然な映像を寝た状態で視認することができる。
【0120】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態も、本発明の技術的範囲に含まれる。各実施形態にそれぞれ開示された技術的手段を組み合わせることによって、新しい技術的特徴を形成することもできる。
【0121】
〔ソフトウェアによる実現例〕
制御回路部200の制御ブロック(検出部210、表示制御部220、仮想空間制御部230、記憶部240、および通信部250)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、CPU(Central Processing Unit)を用いてソフトウェアによって実現してもよい。
【0122】
後者の場合、制御ブロックは、各機能を実現するソフトウェアであるプログラムの命令を実行するCPU、前記プログラムおよび各種データがコンピュータ(又はCPU)で読み取り可能に記録されたROM(Read Only Memory)または記憶装置(これらを「記録媒体」と称する)、前記プログラムを展開するRAM(Random Access Memory)等を備えている。そして、コンピュータ(又はCPU)が前記プログラムを前記記録媒体から読み取って実行することにより、本発明の目的が達成される。前記記録媒体としては、「一時的でない有形の媒体」、たとえば、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路等を用いることができる。また、前記プログラムは、該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して前記コンピュータに供給されてもよい。なお、本発明は、前記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【0123】
〔付記事項〕
本発明の一側面に係る内容を列記すると以下の通りである。
【0124】
(項目1)ヘッドマウントディスプレイ(以下、HMD)を装着したユーザに仮想空間を提供する方法であって、前記仮想空間において再生されるコンテンツに応じて、前記基準座標系における前記HMDに対する仮想カメラの相対的な傾きまたは基準座標系に対する前記仮想空間の空間座標系の相対的な傾きを異ならせた状態で、前記仮想空間における前記仮想カメラの向きに応じた視界画像を生成するステップと、前記視界画像を前記HMDに表示させるステップとを有する、方法。異なる姿勢で見ることを前提とした様々なコンテンツを、ユーザの姿勢に応じて仮想空間において好適に再生することができる。
【0125】
(項目2)前記基準座標系に平行な前記空間座標系を有する前記仮想空間を規定するステップと、前記仮想空間に前記仮想カメラを配置するステップと、前記コンテンツに予め規定される傾き補正値に基づき、前記仮想カメラを前記基準座標系において前記HMDに対して相対的に傾けることによって、前記仮想空間における前記仮想カメラの向きを設定するステップとを有する、項目1の方法。仮想空間の空間座標系を基準座標系に対して傾ける必要がない。
【0126】
(項目3)前記コンテンツに予め規定される傾き補正値に基づき、前記基準座標系に対して相対的に傾いた前記空間座標系を有する前記仮想空間を規定するステップと、前記仮想空間に前記仮想カメラを配置するステップと、前記基準座標系における前記仮想カメラの傾きを前記HMDの傾きに一致させることによって、前記仮想空間における前記仮想カメラの向きを設定するステップとを有する、項目1の方法。仮想カメラをHMDに対して傾ける必要がない。
【0127】
(項目4)前記仮想カメラの向きを設定するステップにおいて、水平方向に対する前記HMDの傾きが前記傾き補正値に一致する場合、前記仮想カメラの向きを、前記仮想空間におけるXZ平面に対して平行に設定する、項目2または3の方法。異なる姿勢で見ることを前提とした様々なコンテンツを、ユーザの姿勢に応じて仮想空間において最も好適に再生することができる。
【0128】
(項目5)前記ユーザの基準視線を特定するステップと、前記基準視線に基づいて、前記仮想カメラの向きを更新すると共に、視界領域を特定するステップと、前記視界領域に基づいて、前記視界画像を更新するステップとをさらに有する、項目1〜4のいずれか1つの方法。HMDの動きに連動して視界画像を適切に更新することができる。
【0129】
(項目6)項目1〜5のいずれか1つの方法の各ステップを、コンピュータに実行させるプログラム。
【0130】
(項目7)項目6のプログラムを記録したコンピュータ読み取り可能な記録媒体。