(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024027905
(43)【公開日】2024-03-01
(54)【発明の名称】情報処理装置および情報処理方法
(51)【国際特許分類】
G06T 19/00 20110101AFI20240222BHJP
G06F 3/0481 20220101ALI20240222BHJP
G06F 3/01 20060101ALI20240222BHJP
【FI】
G06T19/00 600
G06F3/0481
G06F3/01 510
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022131085
(22)【出願日】2022-08-19
(71)【出願人】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(74)【代理人】
【識別番号】100109047
【弁理士】
【氏名又は名称】村田 雄祐
(74)【代理人】
【識別番号】100109081
【弁理士】
【氏名又は名称】三木 友由
(74)【代理人】
【識別番号】100134256
【弁理士】
【氏名又は名称】青木 武司
(72)【発明者】
【氏名】早川 雄登
(72)【発明者】
【氏名】南野 孝範
【テーマコード(参考)】
5B050
5E555
【Fターム(参考)】
5B050AA03
5B050BA06
5B050BA09
5B050BA11
5B050BA13
5B050CA07
5B050CA08
5B050DA07
5B050EA04
5B050EA19
5B050EA26
5B050FA02
5B050FA05
5B050FA13
5B050FA15
5B050FA16
5E555AA76
5E555BA04
5E555BA38
5E555BB04
5E555BB38
5E555BC13
5E555CA42
5E555CB66
5E555CC11
5E555DA08
5E555DA09
5E555DB56
5E555DC63
5E555DD06
5E555EA14
5E555FA00
(57)【要約】
【課題】ヘッドマウントディスプレイを装着したユーザが移動可能なプレイエリアを、容易かつ適切に設定する。
【解決手段】画像生成装置のプレイエリア検出部は、ヘッドマウントディスプレイのステレオカメラが撮影する画像に基づきプレイエリア420を検出し、ユーザに確認させる。プレイエリア編集部は、プレイエリアの新たな境界線424を描く編集操作を受け付け、編集後のプレイエリア426を検出する。その外接矩形428のサイズが上限を超えていたら、プレイエリア編集部は、調整軸xに垂直な切り取り線430でプレイエリア426を切り取り、最終的なプレイエリア432を決定する。
【選択図】
図12
【特許請求の範囲】
【請求項1】
ヘッドマウントディスプレイを装着したユーザの周囲空間においてアプリケーションのプレイ中にユーザが移動可能なプレイエリアのデータを記憶する記憶部と、
前記記憶部に記憶されたプレイエリアを示す画像を前記ヘッドマウントディスプレイに表示させる表示制御部と、
前記プレイエリアを編集するユーザの操作を受け付けたうえ、当該プレイエリアのサイズの上限超過を検出し、一部を切り取ることでサイズを調整するプレイエリア編集部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記プレイエリア編集部は、編集後のプレイエリアに外接する矩形の辺の長さが上限を超えたとき、当該辺に垂直な切り取り線で前記編集後のプレイエリアを切り取ることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記プレイエリア編集部は、ユーザが編集後のプレイエリアの中にいるとき、前記上限を超えた辺に平行な調整軸において、ユーザからの距離が所定値以上の位置に前記切り取り線を設定することを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記プレイエリア編集部は、前記調整軸の2箇所に前記切り取り線を設定することを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記表示制御部は、切り取り後の前記プレイエリアを示す画像を、切り取った箇所を明示して前記ヘッドマウントディスプレイに表示させることを特徴とする請求項1から4のいずれかに記載の情報処理装置。
【請求項6】
前記表示制御部は、前記プレイエリアの一部が切り取られていく様子を表すアニメーションを、前記ヘッドマウントディスプレイに表示させることを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記表示制御部は、ユーザが前記プレイエリアを編集する際、前記ヘッドマウントディスプレイのカメラが撮影している実空間の画像に、ユーザによって移動可能なカーソルとその移動軌跡を表すオブジェクトを重畳して前記ヘッドマウントディスプレイに表示させ、
前記プレイエリア編集部は、前記移動軌跡を前記プレイエリアの新たな境界線として受け付けるとともに、編集前のプレイエリアと前記境界線に外接する矩形の辺の長さが上限を超えたとき、ユーザにその旨を通知することを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記プレイエリア編集部は、編集後のプレイエリアの形状、および当該プレイエリア内の実物体の存在、の少なくともいずれかに基づき、当該編集後のプレイエリアから優先して切り取る領域を決定することを特徴とする請求項1から4のいずれかに記載の情報処理装置。
【請求項9】
前記プレイエリア編集部は、ユーザが編集後のプレイエリアの外にいるとき、当該編集後のプレイエリアのうち、前記上限を超えた辺に平行な調整軸において、ユーザから遠い側の領域を切り取ることを特徴とする請求項2に記載の情報処理装置。
【請求項10】
ヘッドマウントディスプレイを装着したユーザの周囲空間においてアプリケーションのプレイ中にユーザが移動可能なプレイエリアのデータをメモリから読み出すステップと、
前記プレイエリアを示す画像を前記ヘッドマウントディスプレイに表示させるステップと、
前記プレイエリアを編集するユーザの操作を受け付けたうえ、当該プレイエリアのサイズの上限超過を検出し、一部を切り取ることでサイズを調整するステップと、
を含むことを特徴とする情報処理方法。
【請求項11】
ヘッドマウントディスプレイを装着したユーザの周囲空間においてアプリケーションのプレイ中にユーザが移動可能なプレイエリアのデータをメモリから読み出す機能と、
前記プレイエリアを示す画像を前記ヘッドマウントディスプレイに表示させる機能と、
前記プレイエリアを編集するユーザの操作を受け付けたうえ、当該プレイエリアのサイズの上限超過を検出し、一部を切り取ることでサイズを調整する機能と、
をコンピュータに実現させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ヘッドマウントディスプレイに係るデータを処理する情報処理装置および情報処理方法に関する。
【背景技術】
【0002】
ヘッドマウントディスプレイを装着したユーザが対象空間を自由な視点から鑑賞できる画像表示システムが普及している。例えば仮想3次元空間を表示対象とし、ユーザの視線方向に応じた画像がヘッドマウントディスプレイに表示されるようにすることで仮想現実(Virtual Reality:VR)を実現する電子コンテンツが知られている。ヘッドマウントディスプレイを利用することで、映像への没入感を高めたり、ゲーム等のアプリケーションの操作性を向上させたりすることもできる。また、ヘッドマウントディスプレイを装着したユーザが物理的に移動することで、映像として表示された空間内を仮想的に歩き回ることのできるウォークスルーシステムも開発されている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
ヘッドマウントディスプレイを装着したユーザがアプリケーションのプレイ中に移動可能な範囲は、ユーザの部屋のサイズや、ユーザの部屋に設置された家具や荷物等の環境に応じて制限される必要がある。しかしながらそのようなユーザ個々の事情を考慮したうえ、安全性と娯楽性を両立できるようにプレイエリアを設定するのは難しい。
【0004】
本発明はこうした課題に鑑みてなされたものであり、その目的は、ヘッドマウントディスプレイを装着したユーザが移動可能なプレイエリアを、容易かつ適切に設定できる技術を提供することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明のある態様は情報処理装置に関する。この情報処理装置は、ヘッドマウントディスプレイを装着したユーザの周囲空間においてアプリケーションのプレイ中にユーザが移動可能なプレイエリアのデータを記憶する記憶部と、記憶部に記憶されたプレイエリアを示す画像をヘッドマウントディスプレイに表示させる表示制御部と、プレイエリアを編集するユーザの操作を受け付たうえ、当該プレイエリアのサイズの上限超過を検出し、一部を切り取ることでサイズを調整するプレイエリア編集部と、を備えることを特徴とする。
【0006】
本発明の別の態様は情報処理方法に関する。この情報処理方法は、ヘッドマウントディスプレイを装着したユーザの周囲空間においてアプリケーションのプレイ中にユーザが移動可能なプレイエリアのデータをメモリから読み出すステップと、プレイエリアを示す画像をヘッドマウントディスプレイに表示させるステップと、プレイエリアを編集するユーザの操作を受け付たうえ、当該プレイエリアのサイズの上限超過を検出し、一部を切り取ることでサイズを調整するステップと、を含むことを特徴とする。
【0007】
なお、以上の構成要素の任意の組合せ、本発明の表現をシステム、コンピュータプログラム、コンピュータプログラムを読み取り可能に記録した記録媒体、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【0008】
本発明によれば、ヘッドマウントディスプレイを装着したユーザが移動可能なプレイエリアを、容易かつ適切に設定できる。
【図面の簡単な説明】
【0009】
【
図1】本実施の形態におけるヘッドマウントディスプレイの外観例を示す図である。
【
図2】本実施の形態における画像表示システムの構成例を示す図である。
【
図3】本実施の形態において画像生成装置がヘッドマウントディスプレイに表示させる画像世界の例を説明するための図である。
【
図4】本実施の形態における画像生成装置の内部回路構成を示す図である。
【
図5】本実施の形態におけるヘッドマウントディスプレイの内部回路構成を示す図である。
【
図6】本実施の形態における画像生成装置の機能ブロックを示すブロック図である。
【
図7】本実施の形態においてプレイエリアを設定する際の画像生成装置の動作を示すフローチャートである。
【
図8】本実施の形態のプレイエリア検出部によるプレイエリアの検出手法を説明するための図である。
【
図9】
図7のS20で表示されるプレイエリアの画像を示す図である。
【
図10】本実施の形態においてユーザがプレイエリアを編集する様子を模式的に示す図である。
【
図11】本実施の形態におけるコントローラカーソルの動きとプレイエリアの変化を例示する図である。
【
図12】本実施の形態においてプレイエリア編集部が、ユーザによる編集後のプレイエリアのサイズを調整する手法を例示する図である。
【
図13】本実施の形態のプレイエリアの編集期間において、プレイエリア編集部がヘッドマウントディスプレイに表示させる画像を例示する図である。
【
図14】本実施の形態においてユーザがプレイエリアの境界線を描いている期間に、プレイエリア編集部がプレイエリアサイズの超過を監視する態様を説明するための図である。
【
図15】本実施の形態においてプレイエリア編集部が、新たなプレイエリアのうちユーザが追加した領域以外の領域を切り取る態様を説明するための図である。
【
図16】本実施の形態においてユーザがプレイエリア外からプレイエリアを編集する場合の、切り取り線の決定方針を説明するための図である。
【
図17】本実施の形態においてプレイエリア編集部が、プレイエリアの形状や存在する実物体によって切り取り線を決定する態様を説明するための図である。
【
図18】本実施の形態においてプレイエリア編集部が、ユーザによる編集操作に応じてプレイエリアのデータを更新する処理手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
本実施の形態は、ユーザの頭部に装着されたヘッドマウントディスプレイにアプリケーションの画像を表示する画像表示システムに関する。
図1は、ヘッドマウントディスプレイ100の外観例を示す。本実施の形態のヘッドマウントディスプレイ100は、出力機構部102および装着機構部104で構成される。装着機構部104は、ユーザが被ることにより頭部を一周し装置の固定を実現する装着バンド106を含む。
【0011】
出力機構部102は、ヘッドマウントディスプレイ100をユーザが装着した状態において左右の目を覆うような形状の筐体108を含み、内部には装着時に目に正対するように表示パネルを備える。本実施の形態のヘッドマウントディスプレイ100の表示パネルは、透過性がないものとする。すなわちヘッドマウントディスプレイ100は、光不透過型のヘッドマウントディスプレイである。
【0012】
筐体108内部にはさらに、ヘッドマウントディスプレイ100の装着時に表示パネルとユーザの目との間に位置し、ユーザの視野角を拡大する接眼レンズを備えてよい。ヘッドマウントディスプレイ100はさらに、装着時にユーザの耳に対応する位置にスピーカーやイヤホンを備えてよい。また、ヘッドマウントディスプレイ100は、モーションセンサを内蔵し、ヘッドマウントディスプレイ100を装着したユーザの頭部の並進運動や回転運動、ひいては各時刻の位置や姿勢を検出する。
【0013】
また、ヘッドマウントディスプレイ100は、筐体108の前面にステレオカメラ110を備える。ステレオカメラ110は、ユーザの視線に対応する視野で周囲の実空間を動画撮影する。撮影した画像を即時に表示させれば、ユーザが向いた方向の実空間の様子がそのまま見える、いわゆるビデオシースルーを実現できる。さらに撮影画像に映っている実物体の像上に仮想オブジェクトを描画すれば拡張現実(Augmented Reality:AR)を実現できる。
【0014】
図2は、本実施の形態の画像表示システムの構成例を示す。画像表示システムは、ヘッドマウントディスプレイ100、画像生成装置200、コントローラ140を備える。ヘッドマウントディスプレイ100は、無線通信により画像生成装置200に接続される。画像生成装置200は、さらにネットワークを介してサーバに接続されてもよい。その場合、サーバは、複数のユーザがネットワークを介して参加できるゲームなどのオンラインアプリケーションのデータを画像生成装置200に提供してもよい。
【0015】
画像生成装置200は、ヘッドマウントディスプレイ100を装着したユーザの頭部の位置や姿勢に基づき視点の位置や視線の方向を特定し、それに応じた視野となるように表示画像を生成してヘッドマウントディスプレイ100に出力する情報処理装置である。例えば、画像生成装置200は、電子ゲームを進捗させつつゲームの舞台である仮想世界を表示画像として生成してもよいし、仮想世界か実世界かに関わらず観賞や情報提供のために動画像を表示させてもよい。また、ユーザの視点を中心に広い画角のパノラマ画像をヘッドマウントディスプレイ100に表示させることによって、表示世界への深い没入感をユーザに与えることができる。なお、画像生成装置200は、据置型ゲーム機であってもよく、PCであってもよい。
【0016】
コントローラ140は、ユーザの手に把持され、画像生成装置200における画像生成や、ヘッドマウントディスプレイ100における画像表示を制御するためのユーザの操作が入力されるコントローラ(例えばゲームコントローラ)である。コントローラ140は、無線通信により画像生成装置200に接続される。変形例として、ヘッドマウントディスプレイ100とコントローラ140の一方、または両方は、信号ケーブル等を介した有線通信により画像生成装置200に接続されてもよい。
【0017】
図3は、画像生成装置200がヘッドマウントディスプレイ100に表示させる画像世界の例を説明するための図である。この例では、ユーザ12が仮想空間である部屋にいる状態を作り出している。仮想空間を定義するワールド座標系には、図示するように、壁、床、窓、テーブル、テーブル上の物などのオブジェクトを配置している。画像生成装置200は、当該ワールド座標系に、ユーザ12の視点の位置や視線の方向に応じてビュースクリーン14を定義し、そこにオブジェクトの像を表すことで表示画像を描画する。
【0018】
画像生成装置200は、ユーザ12の視点の位置や視線の方向(以後、これらを包括的に「視点」と呼ぶ場合がある)を所定のレートでヘッドマウントディスプレイ100から取得し、これに応じてビュースクリーン14の位置や方向を変化させる。これにより、ユーザの視点に対応する視野で画像をヘッドマウントディスプレイ100に表示させることができる。また、画像生成装置200は、視差を有するステレオ画像を生成し、ヘッドマウントディスプレイ100の表示パネルの左右の領域にステレオ画像を表示させれば、仮想空間をユーザ12に立体視させることもできる。これにより、ユーザ12は、あたかも表示世界の部屋の中にいるような仮想現実を体験することができる。
【0019】
図4は、画像生成装置200の内部回路構成を示す。画像生成装置200は、CPU(Central Processing Unit)222、GPU(Graphics Processing Unit)224、メインメモリ226を含む。これらの各部は、バス230を介して相互に接続される。バス230にはさらに入出力インターフェース228が接続される。入出力インターフェース228には、通信部232、記憶部234、出力部236、入力部238、記録媒体駆動部240が接続される。
【0020】
通信部232は、USBやIEEE1394などの周辺機器インターフェースや、有線LANまたは無線LAN等のネットワークインターフェースを含む。記憶部234は、ハードディスクドライブや不揮発性メモリ等を含む。出力部236は、ヘッドマウントディスプレイ100へのデータを出力する。入力部238は、ヘッドマウントディスプレイ100からのデータ入力を受け付け、また、コントローラ140からのデータ入力を受け付ける。記録媒体駆動部240は、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する。
【0021】
CPU222は、記憶部234に記憶されているオペレーティングシステムを実行することにより画像生成装置200の全体を制御する。また、CPU222は、記憶部234またはリムーバブル記録媒体から読み出されてメインメモリ226にロードされた、あるいは通信部232を介してダウンロードされた各種プログラム(例えばVRゲームアプリケーション等)を実行する。GPU224は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、CPU222からの描画命令にしたがって描画処理を行い、描画結果を出力部236に出力する。メインメモリ226は、RAM(Random Access Memory)により構成され、処理に必要なプログラムやデータを記憶する。
【0022】
図5は、ヘッドマウントディスプレイ100の内部回路構成を示す。ヘッドマウントディスプレイ100は、CPU120、メインメモリ122、表示部124、音声出力部126を含む。これらの各部はバス128を介して相互に接続されている。バス128にはさらに入出力インターフェース130が接続されている。入出力インターフェース130には、無線通信のインターフェースを含む通信部132、モーションセンサ134、およびステレオカメラ110が接続される。
【0023】
CPU120は、バス128を介してヘッドマウントディスプレイ100の各部から取得した情報を処理するとともに、画像生成装置200から取得した表示画像や音声のデータを表示部124や音声出力部126に供給する。メインメモリ122は、CPU120における処理に必要なプログラムやデータを格納する。
【0024】
表示部124は、液晶パネルや有機ELパネルなどの表示パネルを含み、ヘッドマウントディスプレイ100を装着したユーザの眼前に画像を表示する。表示部124は、左右の目に対応する領域に一対のステレオ画像を表示することにより立体視を実現してもよい。表示部124はさらに、ヘッドマウントディスプレイ100装着時に表示パネルとユーザの目との間に位置し、ユーザの視野角を拡大する一対のレンズを含んでもよい。
【0025】
音声出力部126は、ヘッドマウントディスプレイ100の装着時にユーザの耳に対応する位置に設けたスピーカーやイヤホンで構成され、ユーザに音声を聞かせる。通信部132は、画像生成装置200との間でデータを送受するためのインターフェースであり、Bluetooth(登録商標)などの既知の無線通信技術により通信を実現する。モーションセンサ134はジャイロセンサおよび加速度センサを含み、ヘッドマウントディスプレイ100の角速度や加速度を取得する。
【0026】
ステレオカメラ110は、
図1で示したとおり、ユーザの視点に対応する視野で周囲の実空間を左右の視点から撮影するビデオカメラの対である。ステレオカメラ110により撮像された画像であり、ユーザの周囲空間を映した画像を以下「カメラ画像」とも呼ぶ。カメラ画像は、ユーザの視線方向(典型的にはユーザの正面)に存在する物体が映る画像とも言える。モーションセンサ134による計測値や、ステレオカメラ110による撮影画像(カメラ画像)のデータは、必要に応じて、通信部132を介して画像生成装置200へ送信される。
【0027】
本実施の形態の画像表示システムでは、ヘッドマウントディスプレイ100を装着したユーザがアプリケーションのプレイ中に移動可能な実世界の範囲を規定したプレイエリアが設定される。プレイエリアは、ユーザの周囲空間(ユーザの周囲に広がる実世界の空間)のうち、ユーザが仮想現実の画像(以下「VR画像」とも呼ぶ。)を視聴中に動き回ることが許可されたエリアまたは範囲と言える。アプリケーションのプレイ中にユーザがプレイエリアを逸脱しようとする場合や逸脱した場合、画像表示システムは、注意を促す内容、または、プレイエリアへの復帰を促す内容の警告をユーザに提供する。
【0028】
上記のアプリケーションは、VR画像をヘッドマウントディスプレイ100に表示させるゲームアプリケーションであることとし、以下「VRゲーム」とも呼ぶ。例えば、VRゲームは、仮想世界のテニスコートを示すVR画像を表示させ、実世界でのユーザの移動(歩行等)に伴って、仮想世界のテニスコートにおけるキャラクタの位置を変化させるテニスゲームであってもよい。
【0029】
本実施の形態において画像生成装置200は、プレイエリアを自動検出する。この際、画像生成装置200は、ヘッドマウントディスプレイ100のステレオカメラ110が撮影した実空間における周囲の物の位置や形状を特定することで、ユーザがそれらの物に衝突することなく移動できる範囲を決定する。画像生成装置200はさらに、自動検出されたプレイエリアを編集するユーザの操作を受け付け、その操作に応じてプレイエリアの形状を変更する。これにより、ユーザが任意形状のプレイエリアを効率的に設定できる。
【0030】
図6は、画像生成装置の機能ブロックを示すブロック図である。上述したように、画像生成装置200は、VRゲームの進行やサーバとの通信等、一般的な情報処理を実行するが、
図6では特に、プレイエリアの設定に関する機能ブロックを詳細に示している。なお、
図6に示す画像生成装置200の機能のうち少なくとも一部は、ネットワークを介して画像生成装置200に接続されたサーバに実装されてもよいし、ヘッドマウントディスプレイ100に実装されてもよい。
【0031】
また、
図6に示す複数の機能ブロックは、ハードウェア的には、
図4に示したCPU222、GPU224、メインメモリ226、記憶部234等の構成で実現でき、ソフトウェア的には、複数の機能ブロックの機能を実装したコンピュータプログラムにより実現できる。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
【0032】
画像生成装置200は、データ処理部250とデータ記憶部252を備える。データ処理部250は、各種のデータ処理を実行する。データ処理部250は、
図4に示した通信部232、出力部236、入力部238を介して、ヘッドマウントディスプレイ100およびコントローラ140とデータを送受信する。データ記憶部252は、データ処理部250により参照または更新されるデータを記憶する。
【0033】
データ記憶部252は、App記憶部254、プレイエリア記憶部256、マップ記憶部258を備える。App記憶部254は、VR画像を生成するアプリケーション(実施形態ではVRゲーム)のデータを記憶する。プレイエリア記憶部256は、プレイエリアに関するデータを記憶する。プレイエリアに関するデータは、プレイエリアの境界を構成する点群の位置を示すデータ(例えばワールド座標系における各点の座標値)を含む。
【0034】
マップ記憶部258は、ヘッドマウントディスプレイ100の位置(すなわちヘッドマウントディスプレイ100を装着したユーザの位置)を推定するためのマップデータを記憶する。本実施の形態のマップデータは、ユーザがVRゲームをプレイする部屋が映る画像(当該画像に映る特徴点)であり、位置関係(位置および方向)が判明している画像(当該画像に映る特徴点)の集合を含む。具体的には、マップデータは、ヘッドマウントディスプレイ100の位置、視線方向、およびキーフレームを対応付けた組を複数組含む。なお、マップデータは、いわゆる自己位置推定に必要な他の項目を含んでもよい。
【0035】
或る組のキーフレームは、同じ組の位置および視線方向で見える像の特徴を示すデータである。キーフレームは、ヘッドマウントディスプレイ100のステレオカメラ110により撮像されたカメラ画像をもとに生成された画像であり、かつ、所定個数以上の特徴点を含む画像である。キーフレームに含まれるべき特徴点の個数は24個以上であってもよい。特徴点は、公知のコーナー検出法により検出されたコーナーを含んでもよく、また、輝度の勾配に基づいて検出されてもよい。キーフレームは、カメラ画像から切り出された部分画像の集合とも言える。
【0036】
データ処理部250は、システム部260、App実行部290、表示制御部292を備える。これら複数の機能ブロックの機能は、コンピュータプログラムに実装されてもよい。画像生成装置200のCPU222とGPU224は、上記コンピュータプログラムを記憶部234や記録媒体からメインメモリ226に読み出して実行することにより上記複数の機能ブロックの機能を発揮してもよい。
【0037】
App実行部290は、ユーザにより選択されたアプリケーション(実施形態ではVRゲーム)のデータをApp記憶部254から読み出し、ユーザにより選択されたアプリケーションを実行する。表示制御部292は、システム部260およびApp実行部290により生成された様々な画像(例えばVR画像やAR画像)のデータをヘッドマウントディスプレイ100へ送信し、それらの画像をヘッドマウントディスプレイ100の表示部124(表示パネル)に表示させる。なお表示制御部292は、音声のデータをヘッドマウントディスプレイ100に送信し、ヘッドマウントディスプレイ100の音声出力部126から出力させてもよい。
【0038】
システム部260は、ヘッドマウントディスプレイ100に関するシステムの処理を実行する。システム部260は、ヘッドマウントディスプレイ100用の複数のアプリケーション(例えばVRゲーム)に対して共通のサービスを提供する。システム部260は、カメラ画像取得部262、プレイエリア設定部264、マップ生成部274、通知部278、位置推定部280、警告処理部282を含む。
【0039】
カメラ画像取得部262は、ヘッドマウントディスプレイ100から送信された、ヘッドマウントディスプレイ100のステレオカメラ110により撮像されたカメラ画像を取得する。プレイエリア設定部264は、プレイエリアの設定に係る各種処理を実行する。具体的にはプレイエリア設定部264は、カメラ画像取得部262により取得されたカメラ画像と、コントローラ140を介して入力されたユーザの操作とに基づいて、プレイエリアを設定する。プレイエリア設定部264は、プレイエリア検出部266、床面設定部268、プレイエリア編集部270を含む。
【0040】
プレイエリア検出部266は、カメラ画像取得部262により取得されたカメラ画像に基づいて、ヘッドマウントディスプレイ100を装着したユーザの周囲空間からプレイエリアを自動検出する。床面設定部268は、プレイエリア検出部266によりプレイエリアとして検出された床面の高さを編集するユーザの操作を受け付け、その操作に応じて床面の高さを変更する。
【0041】
プレイエリア編集部270は、プレイエリア検出部266により自動検出されたプレイエリアを編集するユーザの操作を受け付け、その操作に応じてプレイエリアの形状を変更する。例えば、プレイエリア編集部270は、プレイエリア検出部266により自動検出されたプレイエリアを、ユーザの操作に応じて縮小したり拡張したりする。
【0042】
マップ生成部274は、プレイエリア検出部266がプレイエリアを検出することと並行して、カメラ画像取得部262により取得されたカメラ画像に基づいて、ユーザの位置を推定するためのマップを生成する。マップ生成部274は、生成したマップデータをマップ記憶部258に格納する。マップ生成部274は、ユーザの周囲空間を複数の方向から映した複数枚のカメラ画像であって、予め定められた枚数以上のカメラ画像が入力された場合、マップの生成を終了する。
【0043】
通知部278は、App実行部290によるVRゲームの実行に必要な情報をApp実行部290へ通知する。位置推定部280は、マップ記憶部258に記憶されたマップデータと、カメラ画像取得部262により取得されたカメラ画像とに基づいて、実世界におけるユーザの位置を推定し、言い換えれば、プレイエリアにおけるユーザの位置を推定する。
【0044】
例えば、位置推定部280は、マップデータに含まれる複数のキーフレームとカメラ画像とを照合し、その照合結果と、各キーフレームに対応付けられたヘッドマウントディスプレイ100の位置および視線方向とに基づいて、ユーザの位置を推定してもよい。また、位置推定部280は、SLAM(Simultaneous Localization and Mapping)等、公知の自己位置推定技術を用いてユーザの位置を推定してもよい。警告処理部282は、プレイエリアの境界と、ユーザの位置との関係に応じて、ユーザに対する警告処理を実行する。
【0045】
次に、以上の構成によって実現される画像表示システムの動作を説明する。
図7は、プレイエリアを設定する際の画像生成装置200の動作を示すフローチャートである。ユーザは、ヘッドマウントディスプレイ100のシステムの設定メニューの中で、プレイエリアの初期設定または再設定を選択可能である。プレイエリアの初期設定または再設定が選択された場合、画像生成装置200のプレイエリア設定部264は、表示制御部292を介して、周囲を見回すよう促す内容のメッセージをヘッドマウントディスプレイ100に表示させる。
【0046】
これに応じてユーザが、ヘッドマウントディスプレイ100を頭部に装着して周囲を見回しつつ移動すると、ヘッドマウントディスプレイ100は、複数のカメラ画像のデータを画像生成装置200へ逐次送信する。複数のカメラ画像のデータのそれぞれは、各カメラ画像生成時のセンサデータを含む。センサデータは、モーションセンサ134による計測値を含み、例えば、ヘッドマウントディスプレイ100の角速度や加速度を含む。画像生成装置200のカメラ画像取得部262は、ヘッドマウントディスプレイ100から送信されたカメラ画像のデータを取得する(S10)。
【0047】
画像生成装置200のプレイエリア検出部266は、S10で取得されたカメラ画像に基づいて、ユーザの周囲空間におけるプレイエリアを自動検出する(S12)。具体的には、プレイエリア検出部266は、カメラ画像と、そのカメラ画像に対応するセンサデータとに基づいて、公知の手法によりユーザの部屋の3次元形状を推定してもよい。プレイエリア検出部266は、推定した部屋の3次元形状をもとに、センサデータが示す重力方向に対して垂直な平面(典型的には床面)を検出し、検出した同じ高さの複数の平面を合成した結果をプレイエリアとして検出してもよい。プレイエリア検出部266は、プレイエリアの境界を構成する点群の座標値を含むプレイエリアデータをプレイエリア記憶部256に格納する。
【0048】
プレイエリア検出部266は、プレイエリア検出時、プレイエリアとしての床面の高さを検出する。床面の高さは、例えば、重力方向における床面とヘッドマウントディスプレイ100との距離であってもよい。プレイエリア検出部266は、床面の高さを示すデータをプレイエリア記憶部256に格納する。ヘッドマウントディスプレイ100の位置が原点の場合、床面の高さはマイナス1メートル等であってもよい。
【0049】
画像生成装置200のマップ生成部274は、S12の処理と並行して、S10で取得されたカメラ画像に基づいて、ユーザの位置を推定するためのマップを生成する(S14)。ユーザの位置を推定するのに十分なマップデータが得られたことを示す所定条件が満たされるまで、プレイエリア検出部266およびマップ生成部274は、新たなカメラ画像を用いてS12、S14の処理を繰り返す(S16のN)。十分なマップデータが得られたら、プレイエリア検出部266は、プレイエリアの検出処理を終了し、マップ生成部274は、マップの生成処理を終了する(S16のY)。
【0050】
次に、画像生成装置200の床面設定部268は、プレイエリア記憶部256に記憶された床面の高さを示すデータに基づいて、床面調整画面を生成する。床面調整画面は、カメラ画像取得部262により取得されたカメラ画像に床面を示すオブジェクト(例えば半透明の格子状のオブジェクト)を重畳したAR画像を含んでもよい。床面設定部268は、表示制御部292を介して、ヘッドマウントディスプレイ100の表示パネルに床面調整画面を表示させる。床面設定部268は、床面調整画面に入力された床面の高さを調整するユーザの操作を受け付け、ユーザの操作にしたがって床面の高さを変更する。床面設定部268は、変更後の床面の高さを示すデータをプレイエリア記憶部256に格納する(S18)。
【0051】
続いて画像生成装置200のプレイエリア編集部270は、プレイエリア検出部266により自動検出されたプレイエリアを示す画像を生成する。具体的には、プレイエリア編集部270は、プレイエリア記憶部256に格納されたプレイエリアデータに基づいて、プレイエリア編集画面を生成する。プレイエリア編集画面は、カメラ画像取得部262により取得されたカメラ画像の上にプレイエリアを示すオブジェクトを重畳したAR画像を含む。画像生成装置200の表示制御部292は、プレイエリア編集画面をヘッドマウントディスプレイ100の表示パネルに表示させる(S20)。
【0052】
プレイエリア編集部270は、プレイエリア編集画面に入力されたプレイエリアを編集するユーザの操作を受け付ける(S22)。具体的にはプレイエリア編集部270は、ユーザの操作に応じてプレイエリアの形状を変更し、すなわち、ユーザの操作に応じてプレイエリアを拡張または縮小する。プレイエリア編集部270は、形状変更後のプレイエリアのデータ(例えば境界を構成する点群の座標値)をプレイエリア記憶部256に格納することにより、プレイエリア記憶部256に記憶されたプレイエリアデータを更新する。
【0053】
図8は、プレイエリア検出部266によるプレイエリアの検出手法を説明するための図である。プレイエリア検出部266は基本的に、マップ生成部274が生成しているマップにおいて、床面に対し略垂直方向の面を検出することで、そこに物があることを特定する。図の例では、ヘッドマウントディスプレイ100を装着したユーザが周囲を見回すにつれ、その視線方向(例えば方向S、S’)で撮影された障害物(例えば障害物70a、70b)の特徴点の3次元位置座標が徐々に特定される。
【0054】
その結果、障害物の存在が判明した実空間の領域が広がっていき、それとともにプレイエリア検出部266は、検出された障害物の手前などにプレイエリアの境界72を設定していく。
図7のS16において十分なマップデータが得られたことを判定するまでは、プレイエリア検出部266は、障害物の新規検出に応じてプレイエリアの境界72を適宜更新する。一周分の見回しが完了するなどして、十分なマップデータが得られたことを判定したら、プレイエリア検出部266はその時点でのプレイエリアを、暫定的なプレイエリアとして決定する。
【0055】
図9は、
図7のS20で表示されるプレイエリアの画像を示す。プレイエリア画像60は、プレイエリア部62と境界部64を含む。プレイエリア部62は、プレイエリア(典型的には障害物のない床面)を示す画像であり、例えば半透明の格子状のオブジェクトを示す画像であってもよい。境界部64は、プレイエリアの境界面を示す画像であり、プレイエリアの境界においてプレイエリアに垂直に交わる面を表す画像である。境界部64も、例えば半透明の格子状のオブジェクトであってもよい。
【0056】
図10は、ユーザがプレイエリアを編集する様子を模式的に示している。プレイエリア編集部270は、
図9で示したプレイエリア部62など、プレイエリアを示すオブジェクトをカメラ画像に重畳させたAR画像を、ヘッドマウントディスプレイ100に表示させる。すなわちユーザ400には、実物体(例えば実物体402)に囲まれた床面上に、プレイエリア検出部266が暫定的に決定したプレイエリアのオブジェクト404が見えている。
【0057】
ユーザ400はコントローラ140を用い、床面上に仮想的な新たな線406を描くことで、元のプレイエリアの境界線を任意に修正する。そのためプレイエリア編集部270は例えば、コントローラ140から仮想的なビーム408を出射させ、その到達先の床面に、コントローラカーソル410のオブジェクトを表したAR画像を表示させる。ユーザがレーザーポインタのようにコントローラ140を動かすのに合わせて、プレイエリア編集部270はコントローラカーソル410を移動させ、移動軌跡を線406として表す。これによりユーザには、床に線を描いている感覚が得られる。
【0058】
図11は、コントローラカーソルの動きとプレイエリアの変化を例示している。同図は編集期間の各段階におけるプレイエリア部62の俯瞰図を示している。(a)~(c)に示すように、ユーザは、床面上でコントローラカーソル410を移動させ、その移動軌跡を示す線として、例えばプレイエリア部62の内から外に出て、再びプレイエリア部62の内に入る線を描く。この場合、(d)に示すように、プレイエリア編集部270は、描かれた線により囲まれた領域をプレイエリア部62に追加する。この場合、ユーザは、コントローラカーソル410を床面上で移動させることにより、プレイエリアの新たな境界線を描いていることになる。
【0059】
これに応じてプレイエリア編集部270は、追加された領域を含む新たなプレイエリアのデータを生成し、プレイエリア記憶部256に記憶された元のデータを更新する。なおプレイエリアを縮小する場合、プレイエリア編集部270は、元のプレイエリア部62を分断するような線を描く操作を受け付ける。この場合、プレイエリア編集部270は、例えば分断されたプレイエリア部62のうち、ユーザが存在する側を新たなプレイエリアとする。
【0060】
プレイエリア編集部270は、図示するようなプレイエリアの編集操作を、プレイエリア検出部266がプレイエリアを自動検出した際のみならず、編集操作を経て一旦、確定させたプレイエリアを、後のタイミングで変更する際にも受け付ける。これにより、プレイエリアの設定の自由度を高められる。
【0061】
一方、周囲に障害物がない広大な場所において、プレイエリアを無限に拡張可能とすると、次のような問題が生じ得る。すなわち、画像生成装置200とヘッドマウントディスプレイ100をケーブルで接続した場合、長いケーブルが必要になりユーザの動きの妨げになる。場合によっては、ケーブルが身体に巻き付いたり躓きの原因になったりする危険がある。画像生成装置200とヘッドマウントディスプレイ100を無線接続した場合も、ユーザの位置によって通信状態が安定しなくなることが考えられる。
【0062】
またユーザの動きを追跡する計算量が膨大になったり追跡精度が悪くなったりし、表示の遅延やコンテンツ処理精度の劣化などが起こりやすくなる。そこで本実施の形態では、プレイエリアのサイズに上限を設ける。プレイエリアの上限は例えば5×5mの矩形とする。ユーザがプレイエリアの編集操作により上限を超えるプレイエリアを設定した場合、プレイエリア編集部270はそれを検出し、編集後のプレイエリアを切り取ることで上限に収まるようにサイズを調整する。これにより、編集操作を最初からやり直す手間が省けるようにする。
【0063】
図12は、プレイエリア編集部270が、ユーザによる編集後のプレイエリアのサイズを調整する手法を例示している。同図は編集期間の各段階におけるプレイエリア(あるいはそのオブジェクト)の俯瞰図を示している。このうち(a)は初期状態であり、プレイエリア420の外接矩形422は、両辺とも上限内にある。(b)は、ユーザが編集操作中の状態であり、元のプレイエリア420に対し、コントローラカーソルの移動により新たな境界線424が描かれている。
【0064】
(c)は、コントローラカーソルが、元のプレイエリア420の内に入った状態を示している。これによりプレイエリア編集部270は、描かれた境界線の内側の領域を含む新たなプレイエリア426を認識する。なおプレイエリア編集部270は、ユーザがコントローラ140のトリガーボタンの押下を開始および終了させたタイミングを、境界線の描画開始および描画終了として認識してもよい。すなわちプレイエリア編集部270は、トリガーボタンが押下されている状態において境界線の描画を有効としてもよい。
【0065】
(c)においてユーザが描画を終えると、プレイエリア編集部270は、新たなプレイエリア426に対し外接矩形428を仮想的に生成し、そのサイズが上限を超えているか否かを判定する。外接矩形428のサイズが上限を超えているとき、すなわち辺の長さの少なくとも一方が上限を超えているとき、プレイエリア編集部270は、超えている部分を切り取る切り取り線430を設定して、新たなプレイエリア426を切り取る。
【0066】
ここで切り取り線430は、外接矩形428のうち上限を超えている辺(対向する2辺)に垂直な線である。なお以後の説明では、外接矩形428のうち上限を超えている辺に平行な軸xを「調整軸」と呼ぶ。図では調整軸を1方向のみとしているが、外接矩形428のうち隣り合う辺がどちらも上限を超えている場合、調整軸は互いに垂直な2軸となる。(d)は、切り取り線430で切り取られた後のプレイエリア432を示しており、切り取り線430を適切に設定することにより、外接矩形434を上限に収められる。
【0067】
外接矩形434のうち調整軸方向の辺の長さが上限xuとなるように切り取り線430を設定すれば、ユーザが拡張させたい方向に最大限のプレイエリアを設けることができる。なおプレイエリアのサイズは、外接矩形のほか、外接する多角形や円、楕円などを用いて確認してもよい。また切り取り線は調整軸に対し任意の方向としてもよく、切り取り線を折れ線や曲線としてもよい。ただし図示するような設定によれば、容易な計算で即座にプレイエリアを調整できる。
【0068】
図13は、プレイエリアの編集期間において、プレイエリア編集部270がヘッドマウントディスプレイ100に表示させる画像を例示している。(a)は、ユーザがコントローラ140により新たなプレイエリアの境界線を描いた直後の画像の例であり、プレイエリアのオブジェクト440が表されている。プレイエリアのオブジェクト440は実際には、カメラ画像における、対応する床面領域の像に重畳される。
【0069】
例えばユーザは、ヘッドマウントディスプレイ100に表示されたカメラ画像とコントローラカーソルを見ながら、コントローラ140を用いて手前左側から奥側へ移動させたコントローラカーソルを、手前右側に移動させる。プレイエリア編集部270はその移動軌跡をプレイエリアの新たな境界線と認識し、一旦、その内側をプレイエリアのオブジェクトで埋めることにより、図示するようなオブジェクト440が表される。
【0070】
ユーザがコントローラ140のトリガーボタンを離すなど、描画を終了させたことを認識したら、プレイエリア編集部270は
図12の(c)に示すように、外接矩形のサイズを確認する。上限を超えていたら、プレイエリア編集部270は、調整軸に垂直な切り取り線を設定してプレイエリアを切り取る。図では説明のため、設定された切り取り線442を、プレイエリアのオブジェクト440に合わせて示しているが、実際には表示しなくてよい。
【0071】
そしてプレイエリア編集部270は、(b)に示すように、切り取り線442の外側を切り取った残りのプレイエリアとその境界面を、プレイエリア部444、境界部446のオブジェクトとして表す。プレイエリア部444、境界部446も実際には、カメラ画像に重畳して表す。図示するような画像の変化により、ユーザは自分が描いた境界線がプレイエリアの上限サイズを超えていたことを認識できる。
【0072】
一方、プレイエリア編集部270は、プレイエリアを切り取ったことを、より明確に示してもよい。例えばプレイエリア編集部270は、プレイエリア部444のうち切り取り線と重なる部分448、あるいはその上の境界部446の色を他と異ならせてもよい。あるいはプレイエリア編集部270は、(a)から(b)への遷移過程において、プレイエリアの一部が切り取られていく様子を表すアニメーションを表示させてもよいし、(b)の画像において、切り取られた部分を、プレイエリア部444より透明度の高いオブジェクトとして残しておいてもよい。
【0073】
またプレイエリア編集部270はプレイエリアを切り取ったタイミングで、表示制御部292およびヘッドマウントディスプレイ100を介して、ユーザに所定の警告音を聴かせてもよい。いずれにしろこれらの明示により、ユーザは、当初描いた境界線が上限を超えていたため、サイズが調整されたことを容易に認識できる。あるいはプレイエリア編集部270は、ユーザが境界線を描いている段階で、プレイエリアサイズの超過を常時監視し、超過したタイミングでユーザに通知してもよい。
【0074】
図14は、ユーザがプレイエリアの境界線を描いている期間に、プレイエリア編集部270がプレイエリアサイズの超過を監視する態様を説明するための図である。ユーザはコントローラ140を用いて、元のプレイエリア450に対し新たな境界線452を描いているとする。このときプレイエリア編集部270は、元のプレイエリア450と境界線452に対し外接矩形454を所定のレートで生成する。つまり境界線452が延びれば、それに合わせて外接矩形454も更新され得る。
【0075】
そしてプレイエリア編集部270は、外接矩形454のサイズが上限を超えたとき、すなわち辺の長さの少なくとも一方が上限を超えたとき、ユーザにその旨を通知する。例えばプレイエリア編集部270は、表示制御部292およびヘッドマウントディスプレイ100を介して、ユーザに所定の警告音を聴かせてもよい。あるいはプレイエリア編集部270は、上限を超えている部分の境界線の色を他と異ならせてもよいし、コントローラ140を振動させてもよい。これらの通知によりユーザは、描画中の境界線の方向を変化させるなどの対応を容易にとることができる。
【0076】
図12の例では専ら、ユーザが境界線の描画により追加した領域を切り取り対象としていた。このようにすると
図13で示したように、ユーザが主に見ている方向において、一部のプレイエリアが切り取られたことを表せるため、ユーザは直感的な把握が可能になる。一方、元のプレイエリアのサイズが上限に近い場合などは、ユーザが追加したい方向にプレイエリアの拡張の余地がないことが考えられる。この場合、ユーザが追加した領域のみを切り取り対象とすると、追加した領域が全て切り取られ、結局はプレイエリアが変化しない状況に陥ることもあり得る。そのような場合も考慮し、プレイエリア編集部270が切り取る対象は、ユーザが追加した領域に限定しなくてよい。
【0077】
図15は、プレイエリア編集部270が、新たなプレイエリアのうちユーザが追加した領域以外の領域を切り取る態様を説明するための図である。(a)は
図12と同様、元のプレイエリア420に対しユーザが境界線を描き、プレイエリア編集部270が新たなプレイエリア426に対し外接矩形428を生成した状態を示している。なおユーザは、プレイエリア内の位置460にいるとする。この例ではプレイエリア編集部270は、調整軸xに対し、ユーザが領域を追加したのと逆側のプレイエリアを切り取るように切り取り線464を設定している。
【0078】
このようにすると、プレイエリアのサイズが上限に近くても、ユーザが追加したい方向にプレイエリアが移動することになり、ユーザの意図を反映させやすくなる。一方でこの場合は、切り取られる領域がユーザの視野から外れている可能性が高くなる。その結果、ユーザは、いつの間にかプレイエリアの端にいたり、プレイエリアからはみ出していたりする状況が発生し得る。
【0079】
そこでプレイエリア編集部270は、(b)に示すように、ユーザの位置460とプレイエリアの境界線との間隔が所定値以上を保つように切り取り線を決定してもよい。すなわちプレイエリア編集部270は、調整軸xにおいて、ユーザの位置460との間隔x1、x2が所定値以上となる位置に切り取り線を設定する。図の例では、調整軸xに対しプレイエリアの両側に、2つの切り取り線466a、466bを設定している。
【0080】
なお間隔x1、x2に与える下限は、ユーザが領域を追加した側と逆側で異なっていてもよい。また(a)に示すように、ユーザが領域を追加していない側を優先して切り取り、その切り取り線とユーザとの間隔x1が下限を下回る場合に、切り取るべき残りの分を、ユーザが領域を追加した側で切り取ってもよい。あるいはその優先順位を逆にしてもよい。このようにすることで、調整軸に対しどちらの領域を優先して切り取るかに関わらず、ユーザはプレイエリアの中にいることが保証される。
【0081】
図16は、ユーザがプレイエリア外からプレイエリアを編集する場合の、切り取り線の決定方針を説明するための図である。
図12と同様、元のプレイエリア420に対し、ユーザが境界線を描き、プレイエリア編集部270が新たなプレイエリア426に対し外接矩形428を生成する。ただしこの例では、ユーザは元々、プレイエリア420の外の位置470にいるとする。この場合、プレイエリア編集部270は、調整軸xに対し、ユーザの位置470から遠い側のプレイエリアを切り取るように切り取り線472を決定する。
【0082】
すなわちプレイエリア編集部270は、切り取りによって、ユーザからプレイエリアまでの距離Dが変化しないようにする。このようにすることで、ユーザが、自分から遠い方向にプレイエリアの範囲を拡張しようとするほど、プレイエリア全体が自分から遠ざかっていくような状況が発生しないようにできる。
【0083】
図17は、プレイエリア編集部270が、プレイエリアの形状や存在する実物体によって切り取り線を決定する態様を説明するための図である。(a)、(b)はいずれも、
図12と同様、元のプレイエリア420に対し、ユーザが境界線を描き、プレイエリア編集部270が新たなプレイエリア426に対し外接矩形428を生成した状態を示している。(a)においてプレイエリア編集部270は、新たなプレイエリア426において所定幅より小さい部分を優先して切り取るように切り取り線480a、480bを決定している。
【0084】
プレイエリア編集部270は例えば、外接矩形428の縦方向、横方向に境界線を走査し、対向する境界線の距離(例えば距離d1、d2)がしきい値より小さい箇所を検出する。そして当該箇所を除外するような切り取り線480bを優先して決定する。これにより、ユーザが通ることができず実質的に意味をなさないプレイエリアを除外する。この目的において対向する境界線の距離に与えるしきい値は、人の肩幅程度であり、例えば30~40cmなどとする。
【0085】
(b)においてはプレイエリア編集部270は、新たなプレイエリア426内に実物体482がある場合、その部分を優先して切り取るように切り取り線484a、484bを決定している。この場合、プレイエリア編集部270は、マップ記憶部258に格納されたマップを参照し、新たなプレイエリア426の内側に一部でも入っている実物体482の存在を検出する。これにより、衝突の危険性がある領域を確実に排除し、安全なプレイエリアを設定できる。
【0086】
なお(a)、(b)はいずれも、優先して切り出すべき部分が、ユーザが追加した領域に存在するが、調整軸xの逆側に同様の箇所がある場合は当然、それを切り取り対象としてよい。また(a)、(b)のケースが同時に発生する場合は、双方を切り取り対象としてよい。それらのケースの少なくともいずれかで切り取り線を決定し、必要に応じて、さらに
図12、15、16に示した方針のいずれかで切り取り線を決定してもよい。図の例では、ユーザがプレイエリア内にいることを想定し、調整軸に対し逆側にも切り取り線480a、484aを設けることにより、ユーザが拡張したい方向のプレイエリアをできるだけ残すようにしている。
【0087】
図18は、プレイエリア編集部270が、ユーザによる編集操作に応じてプレイエリアのデータを更新する処理手順を示すフローチャートである。この処理は、
図7で示したフローチャートのS20、S22に対応する。まずプレイエリア編集部270は、プレイエリア検出部266が検出したプレイエリアを、
図9で示したようなオブジェクトとして表し、カメラ画像に重畳させるなどしてヘッドマウントディスプレイ100に表示させる(S30)。
【0088】
ユーザがコントローラ140を用い、床に線を描く動作をしたら、プレイエリア編集部270はそれを検知し、新規の境界線を示すオブジェクトを該当箇所に描画する(S32)。例えばユーザが、トリガーボタンを押下した状態でコントローラ140の指示方向を変化させると、プレイエリア編集部270はその変化に応じてコントローラカーソルのオブジェクトを移動させるとともに、その移動軌跡を延伸させていく。コントローラカーソルが元のプレイエリアから出て再び元のプレイエリアに戻ったあと、トリガーボタンが離されたら、プレイエリア編集部270は、その時点での移動軌跡を新たな境界線として認識する
【0089】
そしてプレイエリア編集部270は、新たな境界線により追加された領域を含む新たなプレイエリアのサイズが上限を超えるか否かを判定する(S34)。具体的にはプレイエリア編集部270は、新たなプレイエリアに対し外接矩形を生成し、その辺の長さが上限を超えるか否かを判定する。少なくともどちらかの辺の長さが上限を超える場合(S34のY)、プレイエリア編集部270は、プレイエリアの切り取り線を決定する。
【0090】
具体的にはプレイエリア編集部270は、
図17で示したように、プレイエリアの形状やプレイエリア内の実物体の存在により、優先的に切り取るべき領域があるか否かを確認する(S36)。そのような領域が存在する場合(S36のY)、プレイエリア編集部270は、当該領域を除外するような切り取り線を設定する(S38)。例えばプレイエリア編集部270は、幅がしきい値より小さい箇所や実物体が存在する領域から、調整軸において所定間隔離れた位置に切り取り線を設定する。
【0091】
なおプレイエリア内に実物体がある場合、プレイエリア編集部270は、S34でプレイエリアのサイズを確認する前に、該当領域を除外する切り取り線を設定してもよい。S38で切り取り線を設定したあと、あるいは優先的に切り取るべき領域がなかった場合(S36のN)、プレイエリア編集部270は、あらかじめ定められた優先順に切り取り線を設定する(S40)。ここで優先順には、
図12のようにユーザが新たに追加した領域から切り取ることを優先するか、
図15の(a)のように逆側の領域から切り取ることを優先するか、
図16のようにユーザがプレイエリアの外にいる場合に、ユーザから離れた領域から切り取ることを優先するか、といった選択肢が考えられる。
【0092】
ユーザがプレイエリアの中にいる場合、好適には、
図15の(b)に示すように、調整軸における切り取り線とユーザの距離を所定値以上にする、という拘束条件を設ける。なおS38において優先して切り取るべき領域を除外する切り取り線を設定したことにより、新しいプレエイリアのサイズが上限以内に収まることが見込まれる場合は、S40の処理を省略できる。
【0093】
プレイエリア編集部270は、S38、S40で設定した切り取り線でプレイエリアを切り取り、元のプレイエリアのデータを更新する(S42)。S34において新たなプレイエリアのサイズが上限を超えなかった場合も(S34のN)、当該新たなプレイエリアでデータを更新する(S42)。そしてプレイエリア編集部270は、新たに決定したプレイエリアをオブジェクトとして表し、カメラ画像に重畳させるなどしてヘッドマウントディスプレイ100に表示させる(S44)。
【0094】
S38、S40において切り取り線を設定し、ユーザ操作により生成されたプレイエリアを切り取った場合、プレイエリア編集部270は、
図13の(b)に示したように、切り取った箇所を明示する画像を表示させてもよい。またS32において、ユーザが境界線を描いている段階においても、サイズが上限を超えたときに画像や音でユーザに知らせてもよい。
【0095】
以上述べた本実施の形態によれば、画像処理装置は、ヘッドマウントディスプレイを装着したユーザが安全に動き回ることのできるプレイエリアを自動で検出したうえ、ユーザによる編集操作を受け付ける。画像処理装置は、そのようにして生成された新たなプレイエリアのサイズが、あらかじめ定められた上限以内か否かを確認し、上限を超えていた場合、自動で適切な切り取り線を設定し切り取ることでプレイエリアのサイズを適正値に収める。これにより、ユーザが有効なプレイエリアのサイズ感を把握しきれず編集を失敗し、何度も編集作業を強いられるような状況の発生を抑えられる。
【0096】
また画像処理装置は、ユーザが領域を追加したい方向やユーザの位置などに応じて、好適な位置でプレイエリアを切り取る。これにより、ユーザの意図を汲み取りつつ、編集操作による不具合が起こりにくいプレイエリアを決定できる。したがってユーザが比較的粗くかつ自由にプレイエリアを編集しても、最終的には適正なプレイエリアとして受け入れられる可能性が高くなり、編集操作への心的障壁を低くできる。
【0097】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【符号の説明】
【0098】
100 ヘッドマウントディスプレイ、 200 画像生成装置、 256 プレイエリア記憶部、 264 プレイエリア設定部、 266 プレイエリア検出部、 268 床面設定部、 270 プレイエリア編集部、 274 マップ生成部、 280 位置推定部、 282 警告処理部、 292 表示制御部。