以下、本発明の一実施形態について、図面を参照しながら説明する。
図1は、本発明の一実施形態に係るエンタテインメントシステム10の全体構成の一例を示す図である。図2Aは、本実施形態に係るヘッドマウントディスプレイ(HMD)12の構成の一例を示す図である。図2Bは、本実施形態に係るエンタテインメント装置14の構成の一例を示す図である。
図1に示すように、本実施形態に係るエンタテインメントシステム10は、HMD12とエンタテインメント装置14と中継装置16とディスプレイ18とカメラマイクユニット20とコントローラ22とを含んでいる。
本実施形態に係るHMD12には、例えば図2Aに示すように、プロセッサ30、記憶部32、通信部34、入出力部36、表示部38、センサ部40、が含まれる。
プロセッサ30は、例えばHMD12にインストールされるプログラムに従って動作するマイクロプロセッサ等のプログラム制御デバイスである。
記憶部32は、例えばROMやRAM等の記憶素子などである。記憶部32には、プロセッサ30によって実行されるプログラムなどが記憶される。
通信部34は、例えば無線LANモジュールなどの通信インタフェースである。
入出力部36は、例えばHDMI(登録商標)(High-Definition Multimedia Interface)ポートやUSBポートなどの入出力ポートである。
表示部38は、例えば液晶ディスプレイや有機ELディスプレイ等のディスプレイであり、エンタテインメント装置14が生成する映像などを表示させる。図1に示すように、表示部38は、HMD12をユーザが装着した際に当該ユーザの眼前に配置される。表示部38は、例えばエンタテインメント装置14が出力して中継装置16で中継される映像信号を受信して、当該映像信号が表す映像を出力するようにしてもよい。本実施形態に係る表示部38は、例えば左目用の画像と右目用の画像を表示することによって三次元画像を表示させることができるようになっている。なお表示部38は三次元画像の表示ができず二次元画像の表示のみができるものであっても構わない。
センサ部40は、例えば、加速度センサやモーションセンサなどのセンサである。センサ部40は、HMD12の姿勢、回転量、移動量などの計測結果を所定のサンプリングレートで、プロセッサ30に出力してもよい。
本実施形態に係るエンタテインメント装置14は、例えばゲームコンソール、DVDプレイヤ、Blu-ray(登録商標)プレイヤなどといったコンピュータである。本実施形態に係るエンタテインメント装置14は、例えば記憶されている、あるいは、光ディスクに記録された、ゲームプログラムの実行やコンテンツの再生などによって映像や音声を生成する。そして本実施形態に係るエンタテインメント装置14は、生成される映像を表す映像信号や生成される音声を表す音声信号を、中継装置16を経由してディスプレイ18に出力する。
本実施形態に係るエンタテインメント装置14には、例えば図2Bに示すように、プロセッサ50、記憶部52、通信部54、入出力部56が含まれる。
プロセッサ50は、例えばエンタテインメント装置14にインストールされるプログラムに従って動作するCPU等のプログラム制御デバイスである。本実施形態に係るプロセッサ50には、CPUから供給されるグラフィックスコマンドやデータに基づいてフレームバッファに画像を描画するGPU(Graphics Processing Unit)も含まれている。
記憶部52は、例えばROMやRAM等の記憶素子やハードディスクドライブなどである。記憶部52には、プロセッサ50によって実行されるプログラムなどが記憶される。また、本実施形態に係る記憶部52には、GPUにより画像が描画されるフレームバッファの領域が確保されている。
通信部54は、例えば無線LANモジュールなどの通信インタフェースである。
入出力部56は、HDMI(登録商標)(High-Definition Multimedia Interface)ポート、USBポートなどの入出力ポートである。
本実施形態に係る中継装置16は、例えば制御回路、画像処理回路、音声処理回路等の制御部、メモリ等の記憶部、などを備えたコンピュータである。中継装置16は、エンタテインメント装置14から出力される映像信号や音声信号を中継してHMD12やディスプレイ18に出力する。
本実施形態に係るディスプレイ18は、例えば液晶ディスプレイ等であり、エンタテインメント装置14から出力される映像信号が表す映像などを表示させる。
本実施形態に係るカメラマイクユニット20は、例えば被写体を撮影した画像をエンタテインメント装置14に出力するカメラ20a及び周囲の音声を取得して当該音声を音声データに変換してエンタテインメント装置14に出力するマイク20bを含んでいる。また本実施形態に係るカメラ20aはステレオカメラである。
HMD12と中継装置16とは、例えば、無線によるデータの送受信が互いに可能になっている。なおHMD12と中継装置16とが、HDMIケーブルやUSBケーブルなどの有線を介して接続されていてもよい。エンタテインメント装置14と中継装置16とは、例えば、HDMIケーブルやUSBケーブルなどを介して接続されている。中継装置16とディスプレイ18とは、例えば、HDMIケーブルなどを介して接続されている。エンタテインメント装置14とカメラマイクユニット20とは、例えば、AUXケーブルなどを介して接続されている。
本実施形態に係るコントローラ22は、エンタテインメント装置14に対する操作入力を行うための操作入力装置である。本実施形態に係るエンタテインメントシステム10には、2つのコントローラ22が含まれている。また、コントローラ22には、複数のボタンが設けられている。ユーザは、左右の手のそれぞれにコントローラ22を持った状態で、コントローラ22に設けられたボタンを押下したり、コントローラ22の位置や姿勢を変えたりすることで、コントローラ22を用いて各種の操作入力を行うことができる。
そして本実施形態では、コントローラ22は、操作入力に対応付けられる入力データをエンタテインメント装置14に出力する。本実施形態に係るコントローラ22は、無線通信モジュール等を備えており、無線で入力データをエンタテインメント装置14の通信部54に送信できるようになっている。
また本実施形態に係るコントローラ22が、例えば、加速度センサやモーションセンサなどのセンサを備えていてもよい。そして当該センサが、コントローラ22の姿勢、回転量、移動量などの計測結果を示す入力データを、所定のサンプリングレートで、エンタテインメント装置14、もしくは、HMD12に出力してもよい。HMD12が受け付けた入力データは、HMD12のプロセッサ30で実行される処理に用いられてもよい。また、HMD12が受け付けた入力データがHMD12のセンサ部40から出力された計測結果を示すデータとともにエンタテインメント装置14に送信されてもよい。そしてエンタテインメント装置14のプロセッサ50が、当該入力データ及び当該計測結果を示すデータを用いた処理を実行してもよい。
本実施形態では、コントローラ22の位置の特定が行われる。ここで本実施形態において、いわゆるアウトサイドイン方式でのトラッキングによって、コントローラ22の位置が特定されてもよい。例えば、カメラマイクユニット20が備えるカメラ20aが、所定のサンプリングレートで、コントローラ22を撮影した画像をエンタテインメント装置14に出力してもよい。そしてエンタテインメント装置14が、コントローラ22を撮影した当該画像に基づいて、コントローラ22の位置を特定してもよい。
また本実施形態において、いわゆるインサイドアウト方式でのトラッキングによって、コントローラ22の位置が特定されてもよい。ここで例えば、HMD12のセンサ部40に、さらに、複数のカメラが含まれていてもよい。そして、当該複数のカメラが、所定のサンプリングレートで、ユーザによって操作されるコントローラ22を撮影した画像を生成してもよい。そしてコントローラ22を撮影した画像から、HMD12に対するコントローラ22の相対位置が算出されてもよい。そして、エンタテインメント装置14が、センサ部40により計測されるHMD12の位置や向きと、算出された相対位置とに基づいて、コントローラ22の絶対位置を特定してもよい。
なお、コントローラ22の位置の特定が、エンタテインメント装置14ではなくHMD12あるいは中継装置16で行われるようにしてもよい。
また、コントローラ22がLEDなどの発光部材を備えていてもよい。そして、カメラ20aやHMD12が備えるカメラが当該発光部材を撮影した画像に基づいて、コントローラ22の位置及び向きが特定されるようにしてもよい。
本実施形態では例えば、図3に示す仮想空間60に配置されている視点62から視線方向64を見た様子を表す動画像が生成される。ここでは例えば、所定のフレームレートでフレーム画像が生成される。また図3に示す仮想空間60は、仮想三次元空間である。なお、当該動画像は、例えば、エンタテインメント装置14におけるバーチャルリアリティ(VR)技術を用いた一人称視点のゲームのプログラムの実行に応じて生成されてもよい。また本実施形態におけるVR技術は、HMD12を装着した状態でユーザが歩き回ることで仮想空間60の中をあたかも移動しているかのような体験ができる、ルームスケールのVR技術であってもよい。
視点62の位置や視線方向64は、例えばユーザによるコントローラ22の操作やゲームにおいて発生するイベントなどといったゲームのプレイ状況に応じて変化する。また例えばHMD12の位置や姿勢の変化に応じて視点62の位置や視線方向64は変化する。そして視点62の位置や視線方向64の変化に応じて、HMD12の表示部38に表示されるコンテンツは変化する。視点62の位置や視線方向64の更新、フレーム画像の生成、及び、フレーム画像の表示を含む、ゲームのプレイ状況に応じた処理が、上述の所定のフレームレートで実行されてもよい。
また、ユーザの左手の位置に対応付けられる左手対応点66の位置は、ユーザが左手に持つコントローラ22の操作、あるいは、当該コントローラ22の位置や姿勢の変化に応じて変化する。また、ユーザの右手の位置に対応付けられる右手対応点68の位置は、ユーザが右手に持つコントローラ22の操作、あるいは、当該コントローラ22の位置や姿勢の変化に応じて変化する。
図4は、図3に示す仮想空間60に対応付けられる実空間70の一例を模式的に示す図である。本実施形態では、図3に示す仮想空間60における位置は、図4に示す実空間70における位置と1対1で対応付けられている。
HMD12を装着したユーザの頭部の実空間70内における位置は、仮想空間60内における視点62の位置に対応付けられる。またHMD12を装着したユーザの頭部の実空間70内における向きは、仮想空間60内における視線方向64に対応付けられる。またHMD12を装着したユーザが左手に持つコントローラ22の実空間70内における位置は、仮想空間60内における左手対応点66の位置に対応付けられる。また、HMD12を装着したユーザが右手に持つコントローラ22の実空間70内における位置は、仮想空間60内における右手対応点68の位置に対応付けられる。
ここでHMD12を装着したユーザの頭部の実空間70内における位置や向きは、例えば、センサ部40による計測結果に基づいて特定されてもよい。またコントローラ22の実空間70内における位置は、当該コントローラ22が備えるセンサによる計測結果に基づいて特定されてもよい。
またHMD12を装着したユーザの頭部の実空間70内における位置や向き、並びに、コントローラ22の位置は、例えば、カメラマイクユニット20が備えるカメラ20aが撮影した画像に基づいて特定されてもよい。あるいは、HMD12のセンサ部40に含まれる複数のカメラが撮像した画像に基づいて、ユーザの頭部の実空間内における位置や向き、並びに、コントローラ22の位置が特定されるようにしてもよい。この場合、コントローラ22の位置の特定が、HMD12、エンタテインメント装置14、あるいは、中継装置16で実行される物体認識アルゴリズムを使って行われてもよい。
VRの技術において仮想空間60の様子が表示部38に表示されている際には、一般的に、HMD12を装着しているユーザは実空間70の様子を視認できない。そのため仮想空間60の様子が表示部38に表示されているHMD12を装着しているユーザの没入感を維持しつつ、当該ユーザが、床に配置された机72やキャビネット74、あるいは、壁、などといった実空間70の物体と接触することを防ぐ技術が重要となる。
このことを踏まえ、本実施形態では、ユーザが存在することが許容される実空間70内の領域と許容されない実空間70内の領域とを区画する境界面76を設定できるようにした。以下、ユーザが存在することが許容される実空間70内の領域を許容領域と呼ぶこととする。また、ユーザが存在することが許容されない実空間70内の領域を不許容領域と呼ぶこととする。ユーザは、例えば一人称視点のゲームを、許容領域内においてプレイすることとなる。
そして本実施形態では、実空間70に設定される境界面76を表す仮想オブジェクトが、図3に示すように仮想空間60内に配置される。以下、当該仮想オブジェクトを、境界面オブジェクト78と呼ぶこととする。本実施形態では例えば、実空間70において境界面76が設定された位置に対応付けられる仮想空間60内における位置に、境界面オブジェクト78が配置される。境界面オブジェクト78に含まれるポリゴンの内側には、例えば高さ方向に延伸する複数の線と水平方向に延伸する複数の線から構成される格子状のテクスチャが貼られていてもよい。
そして、HMD12を装着しているユーザが設定された境界面76に接近すると、HMD12が備える表示部38に境界面オブジェクト78の一部又は全部が表示される。ここで例えば、視点62、左手対応点66、又は、右手対応点68のいずれかについて、境界面オブジェクト78からの距離が所定の距離以下である場合に、境界面オブジェクト78の一部又は全部が表示されるようにしてもよい。
このようにすることで、本実施形態に係るエンタテインメントシステム10によれば、HMD12を装着しているユーザが境界面76に接近していることを当該ユーザに通知することができ、その結果、ユーザが許容領域から外れることを防ぐことができる。
ここで物体が配置されていない領域を許容領域に設定するようにすると、HMD12を装着しているユーザが実空間70の物体と接触することを防ぐことができる。
また本実施形態では図4に示すように、高さによって境界線が異なる境界面76が設定できるようになっている。図4の例では、床からの高さがh1より低い範囲については、机72を避けて境界面76が設定されている。そして、床からの高さがh1より高くh2より低い範囲については、床からの高さがh1より低い範囲よりも許容領域が広い境界面76が設定されている。
図5には、第1の比較例における境界面176が設定された、机172及びキャビネット174が配置された実空間170の一例が示されている。図6には、第2の比較例における境界面276が設定された、机272及びキャビネット274が配置された実空間270の一例が示されている。
図5の例では、図4に示されている、床からの高さがh1より高くh2より低い範囲における境界面76と同様の境界面176が、高さによらず設定されている。そのため、床からの高さがh1より低い範囲については、許容領域に机172が含まれてしまう。ここで許容領域に机172が含まれないようにするためには、机172を許容領域の外に移動させる必要がある。
図6の例では、図4に示されている、床からの高さがh1より低い範囲における境界面76と同様の境界面276が、高さによらず設定されている。この場合は、許容領域に机272が含まれてはいないが、床からの高さがh1より高くh2より低い範囲については、図4の例よりも許容領域が狭くなってしまう。
本実施形態では、図4に示すように、図5及び図6の例よりも境界面76を柔軟に設定できる。そのため本実施形態によれば、物体が許容領域に入らないようにしつつ、ある程度の広さの許容領域を確保することができる。
以下、境界面76の設定を中心に、本実施形態に係るエンタテインメント装置14で実装される機能、及び、本実施形態に係るエンタテインメント装置14で行われる処理について、さらに説明する。
図7は、本実施形態に係るエンタテインメント装置14で実装される機能の一例を示す機能ブロック図である。なお、本実施形態に係るエンタテインメント装置14で、図7に示す機能のすべてが実装される必要はなく、また、図7に示す機能以外の機能が実装されていても構わない。
図7に示すように、本実施形態に係るエンタテインメント装置14には、機能的には例えば、境界面設定部80、境界面オブジェクト配置部82、プログラム実行部84、接近判定部86、境界面オブジェクト更新部88、動画像生成部90、表示制御部92、が含まれる。
境界面設定部80、プログラム実行部84は、プロセッサ50及び通信部54を主として実装される。境界面オブジェクト配置部82、接近判定部86、境界面オブジェクト更新部88、動画像生成部90は、プロセッサ50を主として実装される。表示制御部92は、プロセッサ50及び入出力部56を主として実装される。
そして以上の機能は、コンピュータであるエンタテインメント装置14にインストールされた、以上の機能に対応する指令を含むプログラムをプロセッサ50で実行することにより実装されている。このプログラムは、例えば、光ディスク、磁気ディスク、磁気テープ、光磁気ディスク、フラッシュメモリ等のコンピュータ読み取り可能な情報記憶媒体を介して、あるいは、インターネットなどを介してエンタテインメント装置14に供給される。
境界面設定部80は、本実施形態では例えば、上述の許容領域と上述の不許容領域とを区画する境界面76を設定する。ここで上述のように、境界面設定部80は、第1の高さの第1の境界線と第2の高さの第2の境界線とを含む境界面76を設定してもよい。ここで第1の境界線の一部又は全部は、第2の境界線と異なっていてもよい。
また、境界面設定部80は、HMD12を装着しているユーザの操作(例えば、ユーザによるコントローラ22の操作)に応じて、境界面76を設定してもよい。以下、当該操作を境界面設定操作と呼ぶ。
例えばユーザが、コントローラ22が備えるボタンを指で押した状態で、コントローラ22を動かす操作を行い、その後、ユーザがボタンから指を離したとする。なおボタンが押下されている期間にわたって、所定のサンプリングレートでコントローラ22の位置がn回特定されることとする。例えば、実空間70における三次元座標値(x1,y1,z1)、(x2,y2,z2)、・・・(xn,yn,zn)が特定されるとする。ここでZ座標値の平均値、すなわち、(z1+z2+・・・+zn)/nを、zmと表現する。この場合、(x1,y1,zm)、(x2,y2,zm)、・・・(xn,yn,zm)、(x1,y1,zm)をつなぐ線が設定されてもよい。
図8には境界面設定操作によって設定される線l1及び線l2が示されている。ここで線l1が設定されている床からの高さはh3であり、線l2が設定されている床からの高さはh4であることとする。また上述のように、線l1、及び、線l2が、実空間70内においてユーザが動かすコントローラ22に搭載されたセンサの軌跡に基づいて設定されてもよい。ここで線l1を設定する操作と線l2を設定する操作の順序は問わない。また、線l1や線l2の設定方法は上述の方法に限定されない。
そしてこの場合に、境界面設定部80は、線l1及び線l2を含む境界面76を設定してもよい。
例えば、図9に示すように、境界面設定部80は、床からの高さがh3より低い範囲については、線l1を高さ方向に沿って平行移動させた線を含む境界面76を設定してもよい。またこの場合に、境界面設定部80は、床からの高さがh3より高い範囲については、線l2を高さ方向に沿って平行移動させた線を含む境界面76を設定してもよい。
あるいは、図10に示すように、境界面設定部80は、床からの高さがh4より低い範囲については、線l1を高さ方向に沿って平行移動させた線を含む境界面76を設定してもよい。またこの場合に、境界面設定部80は、床からの高さがh4より高い範囲については、線l2を高さ方向に沿って平行移動させた線を含む境界面76を設定してもよい。
あるいは、図11に示すように、境界面設定部80は、床からの高さがh3より低い範囲については、線l1を高さ方向に沿って平行移動させた線を含む境界面76を設定してもよい。またこの場合に、境界面設定部80は、床からの高さがh4より高い範囲については、線l2を高さ方向に沿って平行移動させた線を含む境界面76を設定してもよい。またこの場合に、境界面設定部80は、床からの高さがh3より高くh4より低い範囲については、線l1と線l2とを補間することにより形成される線を含む境界面76を設定してもよい。
図9~図11のいずれの例においても、高さh3より低い高さについては線l1を平行移動させた境界線を含み、高さh4より高い高さについては線l2を平行移動させた境界線を含む境界面76が設定されることとなる。
また、境界面設定操作は、上述のように水平面(XY平面)に平行な線を設定する操作には限定されない。例えば、境界面設定操作が、高さ方向(Z軸方向)に沿った線を設定する操作でも構わない。この場合に、境界面設定部80は、このようにして設定される高さ方向に沿った複数の線を含む境界面76を設定してもよい。
また、境界面設定部80は、実空間70内の点を設定する操作に応じて、当該点を中心とする球面である境界面76を設定してもよい。また、境界面設定部80は、実空間70内の点、及び、長さを設定する操作に応じて、当該点を中心とする当該長さに応じた半径の球面である境界面76を設定してもよい。
例えば、図12に示すように、ユーザが点P1の位置においてコントローラ22のボタンを指で押下し、当該ボタンが押下された状態でユーザがコントローラ22を点P2の位置まで移動させ、ユーザが当該ボタンから指を離す操作を行ったとする。この場合に、図13に示すように、点P1が中心であり、点P1と点P2との間の長さLを半径とする球面である境界面76が設定されてもよい。当該境界面76は、点P2を通る面となる。
なお、点P1や長さLを設定する操作はこの操作には限定されない。また、半径ではなく直径を設定する操作が行われてもよい。そして、点P1を中心とする当該直径の球面である境界面76が設定されてもよい。この場合は、当該球面の半径は、設定された直径の半分の長さである。
また、境界面設定部80は、実空間70内においてユーザが動かすセンサの軌跡に外接する境界面76を設定してもよい。例えばユーザがコントローラ22のボタンを指で押下した状態で実空間70内を自由に動かし、その後、ユーザがボタンから指を離したとする。この場合、所定のサンプリングレートで特定されるコントローラ22の位置をつないだコントローラ22の軌跡に外接する境界面76(例えば当該軌跡の凸包である境界面76)が設定されてもよい。
また、境界面設定部80は、実空間70に配置されたカメラの視野範囲である領域と視野範囲ではない領域とを区画する境界面76を設定してもよい。例えばカメラ20aの視野範囲である領域と視野範囲ではない領域とを区画する境界が、境界面76として設定されてもよい。
また、境界面設定部80は、実空間70に配置されたカメラが撮影する画像に対する画像認識処理(物体認識処理)の結果に基づいて、実空間70内に配置された物体を特定してもよい。ここで、カメラ20aや、HMD12のセンサ部40に含まれるカメラを用いて、実空間70内に配置された物体が特定されるようにしてもよい。そして境界面設定部80は、当該物体が占める領域が不許容領域に含まれるよう境界面76を設定してもよい。具体的には例えば、カメラ20aが撮影する画像に基づいて、机72やキャビネット74が実空間70において占める領域を特定してもよい。そして、図4に示すように、特定される領域が不許容領域に含まれるよう境界面76が設定されてもよい。
また、境界面設定部80は、ユーザによる境界面76よりも内側の領域を設定する操作に応じて、当該領域が不許容領域に含まれるよう境界面76を変更してもよい。ここで、境界面76に接する領域である、境界面76よりも内側の領域を設定する操作に応じて、当該領域が不許容領域に含まれるよう境界面76が変更されてもよい。例えば図14に示すような境界面76が設定されている状態で、ユーザが床からの高さがh5である線l3を設定する操作を行ったとする。この場合、図15に示すように、床からの高さがl3より低い範囲については、線l3を高さ方向に沿って平行移動させた線を含むよう、境界面76が変更されてもよい。この場合は、線l3を設定する操作が、境界面76に接する領域である、境界面76よりも内側の領域を設定する操作に相当する。なお、境界面76よりも内側の領域を設定する操作は、この操作には限定されない。
また、境界面設定部80は、ユーザによる境界面76よりも外側の領域を設定する操作に応じて、当該領域が許容領域に含まれるよう境界面76を変更してもよい。ここで、境界面76に接する領域である、境界面76よりも外側の領域を設定する操作に応じて、当該領域が許容領域に含まれるよう境界面76が変更されてもよい。例えば、図16に示すような境界面76が設定されている状態で、ユーザが床からの高さがh6である線l4を設定する操作を行ったとする。この場合、図17に示すように、床からの高さがh6より高い範囲については、線l4を高さ方向に沿って平行移動させた線を含むよう、境界面76が変更されてもよい。この場合は、線l4を設定する操作が、境界面76に接する領域である、境界面76よりも外側の領域を設定する操作に相当する。なお、境界面76よりも外側の領域を設定する操作は、この操作には限定されない。
また、境界面設定部80は、境界面76を表す境界面データを生成してもよい。境界面データは、例えば、境界面76上の複数の点のそれぞれについての実空間70内における三次元座標値を含んでいてもよい。また境界面データのデータ構造は、ポリゴンモデルのデータ構造であってもよい。
また、境界面設定部80は、ユーザが境界面設定操作を行っている際に、境界面76やユーザによって設定される線などがディスプレイ18に表示されるようにしてもよい。ここで例えば、境界面設定部80は、カメラ20aが撮影する実空間70の画像に、図8に示す線l1や線l2などといった、ユーザによって設定される線の画像や、設定される境界面76の画像を重畳させるAR(Augmented Reality)表示を実行してもよい。
また、境界面設定部80は、ユーザの操作に応じて、表示されている上述の線の画像や境界面76の画像を移動させたり回転させたりする表示制御を実行してもよい。
また、境界面設定部80は、画像認識処理(物体認識処理)の結果に基づいて、初期設定における境界面76を設定してもよい。そして、境界面設定部80は、初期設定における境界面76をユーザに提示してもよい。例えば、境界面設定部80は、初期設定における境界面76がディスプレイ18に表示されるようにしてもよい。そして、その後、HMD12を装着しているユーザの操作(例えば、ユーザによるコントローラ22の操作)に応じて、初期設定における境界面76が変更されるようにしてもよい。このようにすれば、ユーザは、初期設定における境界面76を自由にカスタマイズできることとなる。
なお、ユーザによる境界面76の変更が行われず、初期設定における境界面76がそのまま用いられるようにしてもよい。物体認識の精度が向上した際にはこのようなことも可能であると思われる。
境界面オブジェクト配置部82は、本実施形態では例えば、境界面設定部80が設定する境界面76に対応付けられる境界面オブジェクト78を、仮想空間60内に配置する。ここで境界面オブジェクト78は、例えば境界面76に対応付けられるポリゴンモデルであってもよい。また上述のように境界面オブジェクト78に含まれるポリゴンの内側には、格子状のテクスチャが貼られていてもよい。
プログラム実行部84は、本実施形態では例えば、一人称視点のゲームのプログラムなどのプログラムを実行する。またプログラム実行部84は、所定のサンプリングレートで、センサ部40により計測されるHMD12の位置や向きに基づいて視点62の位置及び視線方向64を決定してもよい。またプログラム実行部84は、所定のサンプリングレートで、コントローラ22が備えるセンサにより計測されるコントローラ22の位置に基づいて左手対応点66及び右手対応点68の位置を決定してもよい。
接近判定部86は、本実施形態では例えば、ユーザの境界面76への接近を判定する。接近判定部86は、ユーザが境界面76に接近したか否かを、例えば、HMD12のセンサ部40やコントローラ22が備えるセンサから境界面76までの距離に基づいて判定してもよい。例えば上述のように、視点62、左手対応点66、又は、右手対応点68のいずれかについて、境界面オブジェクト78からの距離が所定の距離以下である場合に、ユーザが境界面76に接近したと判定されてもよい。
なお、ユーザの境界面76への接近の判定はこの方法に限定されない。例えば、視点62、左手対応点66、又は、右手対応点68のうちの複数(例えば2つ)について、境界面オブジェクト78からの距離が所定の距離以下である場合に、ユーザが境界面76に接近したと判定されてもよい。
また例えば、接近判定部86が、カメラ20aが撮影する画像に対する画像認識処理の結果に基づいて、実空間70内においてユーザの体が占める領域を特定してもよい。そして接近判定部86が、ユーザの体が占める領域の輪郭と境界面76との間の距離に基づいて、ユーザが境界面76に接近したか否かを判定してもよい。
境界面オブジェクト更新部88は、本実施形態では例えば、境界面オブジェクト78の不透明度(アルファ値)を設定する。ここで接近判定部86により判定されるユーザの境界面76への接近に応じて、境界面オブジェクト78の不透明度が設定されてもよい。例えば、境界面オブジェクト78が不透明(可視)であって、ユーザが境界面76に接近したと判定されなかった場合に、透明(不可視)になるよう境界面オブジェクト78が更新されてもよい。また例えば、境界面オブジェクト78が透明(不可視)であってユーザが境界面76に接近したと判定された場合に、不透明(可視)になるよう境界面オブジェクト78が更新されてもよい。
また、接近判定部86が、HMD12のセンサ部40やコントローラ22が備えるセンサから境界面76までの距離を特定してもよい。そして、境界面オブジェクト更新部88は、特定される距離に基づいて、不透明度を決定してもよい。例えば特定される距離が短いほどアルファ値が大きくなるよう、アルファ値が決定されてもよい。そして境界面オブジェクト更新部88は、決定されるアルファ値となるよう境界面オブジェクト78を更新してもよい。
動画像生成部90は、本実施形態では例えば、ゲームのプレイ状況に応じた動画像などといった、プログラム実行部84によるプログラムの実行結果に応じた動画像を生成する。また動画像生成部90は、仮想空間60内に配置された視点62から視線方向64を見た様子を表す動画像を生成してもよい。ここで例えば、所定のフレームレートでフレーム画像が生成されてもよい。また動画像生成部90は、境界面オブジェクト78の一部又は全部が透明(不可視)でない場合に、視点62から視線方向64に向かって仮想空間60を見た様子の画像に、境界面オブジェクト78の一部又は全部の画像が重畳されたフレーム画像を生成してもよい。
表示制御部92は、本実施形態では例えば、仮想空間60内に配置された視点62から視線方向64を見た様子を表す動画像を表示部38に表示させる。ここで例えば、表示制御部92は、中継装置16を経由してHMD12に当該動画像を送信してもよい。そしてHMD12が受信した動画像を表示部38に表示させてもよい。
ここで表示制御部92は、境界面76を表す仮想オブジェクトである境界面オブジェクト78の一部又は全部をHMD12の表示部38に表示させてもよい。例えば表示制御部92は、接近判定部86によってユーザが境界面76に接近したと判定される際に、境界面76を表す仮想オブジェクトである境界面オブジェクト78の一部又は全部をHMD12の表示部38に表示させてもよい。表示制御部92は、例えば、動画像生成部90が生成する動画像を表示部38に表示させる。表示制御部92は、動画像生成部90が生成するフレーム画像を所定のフレームレートで表示部38に表示させてもよい。
ここで、本実施形態に係るエンタテインメント装置14において行われる処理の流れの一例を、図18に例示するフロー図を参照しながら説明する。図18に示すS101~S105に示す処理は、所定のフレームレートで繰り返し実行される。本処理例に示す処理が開始される際には、境界面設定部80による境界面76の設定、及び、境界面オブジェクト配置部82による境界面オブジェクト78の配置が既に実行されていることとする。
まず、プログラム実行部84が、上述したように、本フレームにおける、視点62の位置、視線方向64、左手対応点66の位置、及び、右手対応点68の位置を決定する(S101)。S101に示す処理における決定は、例えば、HMD12のセンサ部40により計測されるHMD12の位置及び向き、並びに、コントローラ22が備えるセンサにより計測されるコントローラ22の位置に基づいて実行されてもよい。
そして、接近判定部86が、上述したように、S101に示す処理で決定された、視点62の位置、左手対応点66の位置、及び、右手対応点68の位置に基づいて、ユーザの境界面76への接近を判定する(S102)。
そして、境界面オブジェクト更新部88が、S102に示す処理での判定結果に基づいて、境界面オブジェクト78の不透明度(アルファ値)を設定する(S103)。なおS103に示す処理で境界面オブジェクト78の不透明度(アルファ値)が必ずしも更新される必要はない。
そして、動画像生成部90が、本フレームにおけるフレーム画像を生成する(S104)。ここでは例えば、S101に示す処理で決定された視点62の位置から視線方向64に向かって仮想空間60を見た様子を表すフレーム画像が生成される。境界面オブジェクト78が透明(不可視)ではない場合には、当該フレーム画像には、境界面オブジェクト78の像が含まれることとなる。
そして、表示制御部92が、S104に示す処理で生成されたフレーム画像をHMD12の表示部38に表示させて(S105)、S101に示す処理に戻る。
なお、本発明は上述の実施形態に限定されるものではない。
また、HMD12のセンサ部40がカメラを備えており、ユーザがHMD12を装着した状態で境界面設定操作を行う場合に、境界面76やユーザによって設定される線などがHMD12の表示部38に表示されるようにしてもよい。またこの場合に、HMD12が備えるカメラが撮影する実空間70の画像に、図8に示す線l1や線l2などといった、ユーザによって設定される線の画像や、設定される境界面76の画像を重畳させるAR(Augmented Reality)表示が実行されてもよい。
また接近判定部86が、ユーザが境界面76に過度に接近したこと、あるいは、ユーザが境界面76の外である不許容領域に移動したことを判定してもよい。そしてこのような判定がされた際に、HMD12が備えるカメラが撮影する画像がHMD12の表示部38に表示され、ゲームのプログラムの実行がサスペンドされてもよい。
また境界面設定部80は、HMD12が備えるカメラの視野範囲である領域と視野範囲ではない領域とを区画する境界面76を設定してもよい。例えばHMD12が備えるカメラの視野範囲である領域と視野範囲ではない領域とを区画する境界が、境界面76として設定されてもよい。
また、HMD12のセンサ部40がカメラを備える場合に、ユーザがぐるりと360度回転している際に当該カメラが撮影した画像に基づいて、最適な許容領域が算出されるようにしてもよい。ここで、HMD12、エンタテインメント装置14、あるいは、中継装置16で実行される物体認識アルゴリズムを使って、最適な許容領域の算出が実行されてもよい。またこのようにして算出された許容領域が、ユーザが動かすコントローラ22に搭載されたセンサの軌跡やユーザによるコントローラ22が備えたボタンの操作などに応じて調整されるようにすることで、所望の許容領域が設定されるようにしてもよい。
また、例えばゲームのプレイ中に境界面76が設定されてもよい。例えば、ゲームのプレイ中に、実空間70に配置されたカメラが撮影する画像に対する画像認識処理(物体認識処理)の結果に基づいて特定される物体が占める領域が不許容領域に含まれるよう境界面76が設定されてもよい。このようにすれば、ゲームのプレイ前に境界面76の設定を予め行っておく必要がなくなる。
ここで、ユーザが境界面76に接近した際には、不透明(可視)になるよう境界面オブジェクト78が更新されてもよい。また、ユーザが境界面76に接近した際には、警告がユーザに通知されるようにしてもよい。例えば、警告を表す画像が表示部38に表示されるようにしてもよい。また、所定の警告音あるいは、「境界に接近していますので注意してください。」などといった具体的な音声による警告音がHMD12から補助的に出力されるようにしてもよい。
また、ユーザが境界面オブジェクト78に接近している際に、「境界に接近していますので注意してください。」などの警告を表す文字列がHMD12の表示部38に補助的に表示されるようにしてもよい。
また、ユーザが境界面オブジェクト78に接近している際に、警告を表す文字列がHMD12の表示部38から表示されるとともに、警告音などの音声がHMD12から出力されるようにしてもよい。
このようにすることで、ユーザはゲームのプレイ中に設定された境界面76に気づくことができる。ここで、ゲームのプレイ中に自動で設定された境界面76を必要に応じてユーザが変更できるようにしてもよい。
なお、画像認識処理(物体認識処理)の結果に基づいて設定される境界面76をユーザが気にいらないことがある。このことに備え、ユーザによる所定の操作に応じて、実空間70に配置されたカメラが撮影する画像に対する画像認識処理(物体認識処理)の結果に基づく境界面76の設定機能がオフにできるようにしてもよい。
また、本実施形態において、カメラ20aが撮影する画像に対する画像認識処理の結果に基づいて、実空間70内におけるユーザの手や足の位置がトラッキングされるようにしてもよい。そしてトラッキングされる手や足が境界面76に接近した際にHMD12が備える表示部38に境界面オブジェクト78の一部又は全部が表示されるようにしてもよい。また、トラッキングされる手や足が境界面76に接近した際に上述したような警告を表す画像の表示や警告音の出力が行われるようにしてもよい。このようにすることで、例えば、ユーザの足だけが境界面76に接近した際にもこのことをユーザに知らせることができる。また、手をトラッキングすることで、コントローラ22を用いることなく、ユーザが上述の境界面設定操作を行えるようにしてもよい。例えば、ユーザが人差し指を突き出す動作などを行うことで上述の境界面設定操作を行えるようにしてもよい。
また、実行されるゲームプログラムやアプリケーションプログラム等のプログラムごと、あるいは、プログラムの種類ごとに、境界面76の設定が可能であってもよい。また、プログラムごとあるいはプログラムの種類ごとに、予め、当該プログラムに対応する境界面76が設定されていてもよい。そして、設定された境界面76を示す境界面データが、プログラムの名称や種類に関連付けて記憶されてもよい。境界面データは、エンタテインメント装置14の記憶部52にローカルで記憶されてもよいし、ネットワーク上のサーバに記憶されるようにしてもよい。
そして、プログラムが実行される際に当該プログラムに関連付けて記憶されている境界面データをロードすることで、実行されるプログラムに応じた境界面76が設定されるようにしてもよい。このようにすれば、ゲームプログラム等のプログラムにおいて推奨される境界面76が設定されるようにすることが可能となる。また、このようにして設定される境界面76をユーザが変更できるようにしてもよい。
また例えばHMD12、エンタテインメント装置14、中継装置16の役割分担は上述のものに限定されない。例えば図7に示す機能の一部又は全部がHMD12によって実装されてもよい。
また、上記の具体的な文字列や数値及び図面中の具体的な文字列や数値は例示であり、これらの文字列や数値には限定されない。