(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024178305
(43)【公開日】2024-12-24
(54)【発明の名称】情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法
(51)【国際特許分類】
G06T 19/00 20110101AFI20241217BHJP
G06F 3/04845 20220101ALI20241217BHJP
A63F 13/213 20140101ALI20241217BHJP
A63F 13/655 20140101ALI20241217BHJP
A63F 13/5255 20140101ALI20241217BHJP
A63F 13/56 20140101ALI20241217BHJP
A63F 13/5258 20140101ALI20241217BHJP
【FI】
G06T19/00 600
G06F3/04845
A63F13/213
A63F13/655
A63F13/5255
A63F13/56
A63F13/5258
【審査請求】有
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2024163363
(22)【出願日】2024-09-20
(62)【分割の表示】P 2020190521の分割
【原出願日】2020-11-16
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【弁理士】
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【弁理士】
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】堀田 順平
(72)【発明者】
【氏名】泉水 一慶
(72)【発明者】
【氏名】新田 昌弘
(72)【発明者】
【氏名】大田 康晴
(72)【発明者】
【氏名】魚澤 純樹
(57)【要約】
【課題】ユーザが意図する位置に仮想オブジェクトを配置することが可能な情報処理システムを提供する。
【解決手段】情報処理システムの一例は、カメラの撮像方向に応じて仮想カメラの撮像方向を設定し、カメラの撮像方向が所定の範囲内であれば、仮想カメラの撮像方向に応じて仮想ドアを仮想空間内で移動させる。カメラの撮像方向が第1閾値よりも上方向を向いている場合は、仮想ドアをさらに上方向に移動させない。また、カメラの撮像方向が第2閾値よりも下方向を向いている場合は、仮想ドアをさらに下方向に移動させない。
【選択図】
図5
【特許請求の範囲】
【請求項1】
撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理システムであって、
前記仮想カメラの撮像方向と当該仮想カメラから前記仮想オブジェクトへの方向である仮想オブジェクト方向とが第1連動度で連動するように、前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する制御手段、を備え、
前記制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向と前記仮想オブジェクト方向とが前記第1連動度よりも小さい第2連動度で連動するように、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する、情報処理システム。
【請求項2】
前記仮想カメラの位置と、前記仮想オブジェクトの位置とに関する位置条件が満たされる場合、前記仮想オブジェクトに関するイベント処理を実行するイベント処理実行手段をさらに備える、請求項1に記載の情報処理システム。
【請求項3】
前記仮想カメラが前記仮想オブジェクトに所定距離内に近づいた場合に、前記位置条件が満たされ、
前記仮想オブジェクトの位置を基準として第2仮想空間が設定され、
前記イベント処理は、前記第2仮想空間内に前記仮想カメラが進入したと判定される処理であり、
前記仮想カメラが前記第2仮想空間内に進入した場合、前記撮像装置の位置又は撮像方向に応じて、前記第2仮想空間内における前記仮想カメラの位置又は撮像方向が制御される、請求項2に記載の情報処理システム。
【請求項4】
前記制御手段は、前記撮像装置の撮像方向が上下方向に変化した場合、前記仮想オブジェクトの前記仮想空間内における垂直方向の姿勢を維持したまま、前記仮想オブジェクトを上下方向に移動させる、請求項1に記載の情報処理システム。
【請求項5】
前記制御手段は、前記撮像装置の撮像方向が前記第1閾値よりも上方向、または、前記第2閾値よりも下方向を向いている場合でも、前記仮想カメラの撮像方向と前記仮想オブジェクト方向とが前記第1連動度で連動するように、前記撮像装置の撮像方向の左右方向の変化に応じて、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する、請求項1から4の何れかに記載の情報処理システム。
【請求項6】
前記制御手段は、前記撮像装置が移動した場合、前記仮想カメラと前記仮想オブジェクトとが一定の距離を保つように、前記仮想カメラの位置および前記仮想オブジェクトの位置を制御する、請求項1から5の何れかに記載の情報処理システム。
【請求項7】
前記制御手段は、前記撮像装置の撮像方向に応じて前記仮想カメラの撮像方向を設定し、前記仮想カメラの撮像方向の変化に追従するように、前記仮想オブジェクトの位置を制御する、請求項1から6の何れかに記載の情報処理システム。
【請求項8】
前記制御手段は、前記撮像装置によって撮像された実画像に基づいて前記現実空間の所定面を検出することなく、前記仮想カメラの撮像方向の所定位置に前記仮想オブジェクトを配置する、請求項1から7の何れかに記載の情報処理システム。
【請求項9】
撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理装置のコンピュータによって実行される情報処理プログラムであって、前記コンピュータを、
前記仮想カメラの撮像方向と当該仮想カメラから前記仮想オブジェクトへの方向である仮想オブジェクト方向とが第1連動度で連動するように、前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する制御手段、として機能させ、
前記制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向と前記仮想オブジェクト方向とが前記第1連動度よりも小さい第2連動度で連動するように、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する、情報処理プログラム。
【請求項10】
撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理装置であって、
前記仮想カメラの撮像方向と当該仮想カメラから前記仮想オブジェクトへの方向である仮想オブジェクト方向とが第1連動度で連動するように、前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する制御手段、を備え、
前記制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向と前記仮想オブジェクト方向とが前記第1連動度よりも小さい第2連動度で連動するように、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する、情報処理装置。
【請求項11】
撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理システムにおいて実行される情報処理方法であって、
前記仮想カメラの撮像方向と当該仮想カメラから前記仮想オブジェクトへの方向である仮想オブジェクト方向とが第1連動度で連動するように、前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する制御ステップ、を含み、
前記制御ステップでは、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向と前記仮想オブジェクト方向とが前記第1連動度よりも小さい第2連動度で連動するように、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する、情報処理方法。
【請求項12】
撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理システムであって、
前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向を制御する仮想カメラ方向制御手段と、
前記仮想カメラの撮像方向に追従する態様で、前記仮想オブジェクトの位置を制御するオブジェクト位置制御手段と、を備え、
前記オブジェクト位置制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向に前記仮想オブジェクトが追従する度合いが減少するように、前記仮想オブジェクトの位置を制御する、情報処理システム。
【請求項13】
撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理装置のコンピュータによって実行される情報処理プログラムであって、前記コンピュータを、
前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向を制御する仮想カメラ方向制御手段、
前記仮想カメラの撮像方向に追従する態様で、前記仮想オブジェクトの位置を制御するオブジェクト位置制御手段、として機能させ、
前記オブジェクト位置制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向に前記仮想オブジェクトが追従する度合いが減少するように、前記仮想オブジェクトの位置を制御する、情報処理プログラム。
【請求項14】
撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理装置であって、
前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向を制御する仮想カメラ方向制御手段と、
前記仮想カメラの撮像方向に追従する態様で、前記仮想オブジェクトの位置を制御するオブジェクト位置制御手段と、を備え、
前記オブジェクト位置制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向に前記仮想オブジェクトが追従する度合いが減少するように、前記仮想オブジェクトの位置を制御する、情報処理装置。
【請求項15】
撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理システムにおいて実行される情報処理方法であって、
前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向を制御する仮想カメラ方向制御ステップと、
前記仮想カメラの撮像方向に追従する態様で、前記仮想オブジェクトの位置を制御するオブジェクト位置制御ステップと、を含み、
前記オブジェクト位置制御ステップでは、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向に前記仮想オブジェクトが追従する度合いが減少するように、前記仮想オブジェクトの位置を制御する、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、現実空間と仮想空間の画像とを合成することが可能な情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法に関する。
【背景技術】
【0002】
先行技術として、仮想空間に仮想オブジェクトを配置し、現実空間と仮想オブジェクトの画像とを合成して表示させる画像処理システムがある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、仮想オブジェクトを配置する際に、適切な位置に仮想オブジェクトを配置するためには改善の余地があった。
【0005】
それ故、本発明の目的は、適切な位置に仮想オブジェクトを配置することが可能な情報処理システム、情報処理プログラム、情報処理装置、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記の課題を解決すべく、本発明は、以下の構成を採用した。
【0007】
本発明の一例は、撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理システムであって、前記仮想カメラの撮像方向と当該仮想カメラから前記仮想オブジェクトへの方向である仮想オブジェクト方向とが第1連動度で連動するように、前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する制御手段、を備え、前記制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向と前記仮想オブジェクト方向とが前記第1連動度よりも小さい第2連動度で連動するように、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する。
本発明の別の一例は、撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理システムである。情報処理システムは、第1制御手段と、制御状態変更手段と、第2制御手段とを備える。第1制御手段は、第1制御状態において、前記仮想カメラの撮像方向と当該仮想カメラから前記仮想オブジェクトへの方向である仮想オブジェクト方向とが第1連動度で連動するように、前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する。制御状態変更手段は、ユーザ操作に基づいて、前記第1制御状態を第2制御状態に変更する。第2制御手段は、前記第2制御状態において、前記合成画像から視認される前記仮想オブジェクトが前記現実空間の位置に擬似的に固定されるように、前記撮像装置の位置又は撮像方向に応じて、前記仮想カメラの位置、撮像方向、及び、前記仮想オブジェクトの位置の少なくとも何れか1つを制御する。前記第1制御手段は、前記第1制御状態において、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向と前記仮想オブジェクト方向とが前記第1連動度よりも小さい第2連動度で連動するように、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御する。
【0008】
上記によれば、第1制御状態では、撮像装置の撮像方向の変化に応じて、仮想カメラの撮像方向と仮想オブジェクト方向とを連動させることができる。ユーザ操作に応じて第2制御状態に変更し、第2制御状態では、仮想オブジェクトが現実空間内で擬似的に固定される。これにより、仮想オブジェクトを現実空間の所望の位置に擬似的に固定することができる。また、第1制御状態では、撮像装置の撮像方向が第1閾値よりも上方向を向いている場合には、仮想カメラの撮像方向と仮想オブジェクト方向とが連動する度合いを、撮像装置の撮像方向が第1閾値よりも上方向を向いていない場合よりも、小さくすることができる。同様に、第1制御状態では、撮像装置の撮像方向が第2閾値よりも下方向を向いている場合には、仮想カメラの撮像方向と仮想オブジェクト方向とが連動する度合いを、撮像装置の撮像方向が第2閾値よりも下方向を向いていない場合よりも、小さくすることができる。これにより、適切でない位置に、仮想オブジェクトが配置されることを防止することができる。
【0009】
また、情報処理システムは、前記第2制御状態において、前記仮想カメラの位置と、前記仮想オブジェクトの位置とに関する位置条件が満たされる場合、前記仮想オブジェクトに関するイベント処理を実行するイベント処理実行手段をさらに備えてもよい。
【0010】
上記によれば、仮想カメラの位置と仮想オブジェクトの位置とに関する位置条件が満たされる場合に、仮想オブジェクトに関するイベント処理を実行することができる。
【0011】
また、前記仮想カメラが前記仮想オブジェクトに所定距離内に近づいた場合に、前記位置条件が満たされてもよい。また、前記仮想オブジェクトの位置を基準として第2仮想空間が設定されてもよい。前記イベント処理は、前記第2仮想空間内に前記仮想カメラが進入したと判定される処理であり、前記仮想カメラが前記第2仮想空間内に進入した場合、前記撮像装置の位置又は撮像方向に応じて、前記第2仮想空間内における前記仮想カメラの位置又は撮像方向が制御されてもよい。
【0012】
上記によれば、仮想カメラが仮想オブジェクトに近づいた場合に、仮想カメラが第2仮想空間内に進入したと判定される。仮想カメラが第2仮想空間内に進入した場合に、撮像装置の位置又は撮像方向の変化に応じて、第2仮想空間内において仮想カメラの位置又は撮像方向を変化させることができる。これにより、ユーザは、撮像装置を仮想オブジェクトに近づけ、第2仮想空間内に進入して、第2仮想空間内を見渡すことができる。
【0013】
また、前記第1制御手段は、前記第1制御状態において、前記撮像装置の撮像方向が上下方向に変化した場合、前記仮想オブジェクトの前記仮想空間内における垂直方向の姿勢を維持したまま、前記仮想オブジェクトを上下方向に移動させてもよい。
【0014】
上記によれば、第1制御状態において撮像装置の撮像方向が上下方向に変化した場合でも、仮想オブジェクトの垂直方向の姿勢を維持することができ、例えば、仮想オブジェクトの上方向を仮想空間の上方向と一致させた状態で、仮想オブジェクトを上下方向に移動させることができる。
【0015】
また、情報処理システムは、前記第2制御手段によって前記仮想オブジェクトが擬似的に固定された場合、ユーザ操作に基づいて前記仮想オブジェクトの状態を第1状態から第2状態に変化させる状態変化手段をさらに備えてもよい。前記仮想オブジェクトが前記第2状態に変化された場合、前記仮想空間に位置する前記仮想カメラから前記第2仮想空間を視認可能となってもよい。
【0016】
上記によれば、仮想オブジェクトが擬似的に固定された状態で、仮想オブジェクトを第2状態に変化させることができ、第2状態において第2仮想空間を視認可能とすることができる。
【0017】
また、前記第1制御手段は、前記撮像装置の撮像方向が前記第1閾値よりも上方向、または、前記第2閾値よりも下方向を向いている場合でも、前記仮想カメラの撮像方向と前記仮想オブジェクト方向とが前記第1連動度で連動するように、前記撮像装置の撮像方向の左右方向の変化に応じて、前記仮想カメラの撮像方向および前記仮想オブジェクトの位置の少なくとも何れか一方を制御してもよい。
【0018】
上記によれば、撮像装置の撮像方向が上方向を向き過ぎている場合や、下方向を向き過ぎている場合でも、撮像装置の撮像方向を左右方向に向けることで、例えば、仮想カメラを左右方向に向けることができ、撮像装置と仮想オブジェクトとを連動させることができる。これによりユーザビリティを向上させることができる。
【0019】
また、前記第1制御手段は、前記第1制御状態において、前記撮像装置が移動した場合、前記仮想カメラと前記仮想オブジェクトとが一定の距離を保つように、前記仮想カメラの位置および前記仮想オブジェクトの位置を制御してもよい。
【0020】
上記によれば、第1制御状態において、撮像装置が移動した場合でも、仮想カメラと仮想オブジェクトとの距離を一定に保つことができ、撮像装置と仮想オブジェクトとを連動させることができる。
【0021】
また、前記第1制御手段は、前記第1制御状態において、前記撮像装置の撮像方向に応じて前記仮想カメラの撮像方向を設定し、前記仮想カメラの撮像方向の変化に追従するように、前記仮想オブジェクトの位置を制御してもよい。
【0022】
上記によれば、撮像装置(仮想カメラ)の撮像方向が変化した場合に、当該撮像方向の変化に追従して、仮想オブジェクトの位置を制御することができ、撮像装置と仮想オブジェクトとを連動させることができる。
【0023】
また、情報処理システムは、前記仮想オブジェクトが前記現実空間に擬似的に固定された場合、前記仮想オブジェクトの表示態様を変化させる表示態様制御手段をさらに備えてもよい。
【0024】
上記によれば、仮想オブジェクトが現実空間に擬似的に固定されたことをユーザに認識させやすくすることができる。
【0025】
また、前記第1制御手段は、前記撮像装置によって撮像された実画像に基づいて前記現実空間の所定面を検出することなく、前記仮想カメラの撮像方向の所定位置に前記仮想オブジェクトを配置してもよい。
【0026】
上記によれば、現実空間の所定面を検出しなくても、仮想オブジェクトを仮想空間に配置することができる。
【0027】
本発明の他の例は、撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理システムであって、仮想カメラ方向制御手段と、オブジェクト位置制御手段と、を備える。仮想カメラ方向制御手段は、前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向を制御する。オブジェクト位置制御手段は、前記仮想カメラの撮像方向に追従する態様で、前記仮想オブジェクトの位置を制御する。前記オブジェクト位置制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向に前記仮想オブジェクトが追従する度合いが減少するように、前記仮想オブジェクトの位置を制御する。
本発明の他の例は、撮像装置によって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とを合成した合成画像を表示装置に出力する情報処理システムであって、仮想カメラ方向制御手段と、オブジェクト位置制御手段と、オブジェクト固定手段と、仮想カメラ位置制御手段とを備える。仮想カメラ方向制御手段は、前記撮像装置の撮像方向に応じて、前記仮想カメラの撮像方向を制御する。オブジェクト位置制御手段は、前記仮想カメラの撮像方向に追従する態様で、前記仮想オブジェクトの位置を制御する。オブジェクト固定手段は、ユーザ操作に基づいて、前記仮想オブジェクトの位置が前記現実空間の位置に擬似的に固定されるように、当該仮想オブジェクトの位置を制御する。仮想カメラ位置制御手段は、前記仮想オブジェクトの位置が固定された状態において、前記撮像装置の位置に応じて、前記仮想カメラの位置を制御する。前記オブジェクト位置制御手段は、前記撮像装置の撮像方向が、前記現実空間において第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、前記仮想カメラの撮像方向に前記仮想オブジェクトが追従する度合いが減少するように、前記仮想オブジェクトの位置を制御する。
【0028】
上記によれば、撮像装置の撮像方向の変化に応じて、仮想カメラの撮像方向を設定し、ユーザ操作に応じて、仮想オブジェクトを現実空間に擬似的に固定することができる。撮像装置の撮像方向が第1閾値よりも上方向を向いている場合、又は第2閾値よりも下方向を向いている場合には、仮想カメラの撮像方向に仮想オブジェクトが追従する度合いを、小さくすることができる。これにより、適切でない位置に、仮想オブジェクトが配置されることを防止することができる。
【0029】
また、他の発明は、上記情報処理システムに含まれる1又は複数のコンピュータにおいて実行される情報処理プログラムであってもよいし、情報処理装置であってもよい。また、他の発明は、上記情報処理システムにおいて行われる情報処理方法であってもよい。
【発明の効果】
【0030】
本発明によれば、仮想オブジェクトを所望の位置に配置するとともに、適切でない位置に、仮想オブジェクトが配置されることを防止することができる。
【図面の簡単な説明】
【0031】
【
図1】本実施形態のスマートフォン1の内部構成の一例を示す図
【
図3】スマートフォン1が位置P1に配置されたときの表示装置15に表示される画像の一例を示す図
【
図4】現実空間と仮想空間の各種オブジェクトとの位置関係の一例を示す図
【
図5】カメラ13の撮像方向を上向きに変化させるときの仮想空間の変化の一例を示す図
【
図6】カメラ13の撮像方向の角度θが「0」のときに表示装置15に表示される画像の一例を示す図
【
図7】カメラ13の撮像方向の角度θが第1閾値「a」のときに表示装置15に表示される画像の一例を示す図
【
図8】カメラ13の撮像方向の角度θが第1閾値「a」よりも大きいときに表示装置15に表示される画像の一例を示す図
【
図9】カメラ13の撮像方向を下向きに変化させるときの仮想空間の変化の一例を示す図
【
図10】-b<θ<0のときに表示装置15に表示される画像の一例を示す図
【
図11】θ=-bのときに表示装置15に表示される画像の一例を示す図
【
図12】θ<-bのときに表示装置15に表示される画像の一例を示す図
【
図13】仮想空間を上方から見た図であって、カメラ13の撮像方向を右方向に変化させたときの仮想カメラVC及び仮想ドアVDの動作の一例を示す図
【
図14】
図10の状態からスマートフォン1を右方向にc度だけ回転させたときに表示装置15に表示される画像の一例を示す図
【
図15】
図12の状態からスマートフォン1を右方向にc度だけ回転させたときに表示装置15に表示される画像の一例を示す図
【
図16】仮想ドアVDを現実空間に擬似的に固定した後の表示装置15に表示される画像の一例を示す図
【
図17】
図16の状態からカメラ13を左方向に平行移動させたときに表示される画像の一例を示す図
【
図18】仮想ドアVDを介して見える一部の第2仮想空間の一例を示す図
【
図19】仮想ドアVDと仮想カメラVCと第2仮想空間VS2との位置関係の一例を示す図
【
図20】
図19に示す位置P2に仮想カメラVCが配置される場合に表示される画像の一例を示す図
【
図21】制限を加えることなく仮想カメラVCの撮像方向に連動させて仮想ドアVDを移動させる場合の現実空間を横方向から見た図
【
図22】スマートフォン1のメモリ11において記憶されるデータの一例を示す図
【
図23】スマートフォン1のプロセッサ10において実行されるメイン処理の一例を示すフローチャート
【
図24】ステップS105の仮想ドア固定処理の詳細を示すフローチャート
【発明を実施するための形態】
【0032】
本実施形態の情報処理システムは、ユーザに現実空間の画像に仮想空間の画像を合成した合成画像を視認させるためのシステムであり、拡張現実(AR:Augmented Reality)をユーザに提供するためのシステムである。情報処理システムは、例えば、スマートフォン、タブレット端末、携帯型のゲーム装置、携帯型のパーソナルコンピュータ等であってもよい。また、情報処理システムは、携帯型の装置に限らず、据置型の装置であってもよい。本実施形態では、情報処理システムは、スマートフォンであるものとする。
【0033】
図1は、本実施形態のスマートフォン1の内部構成の一例を示す図である。
図1に示されるように、スマートフォン1は、例えば、プロセッサ10と、メモリ11と、入力装置12と、カメラ13と、姿勢検出センサ14と、表示装置15とを備える。また、スマートフォン1は、図示しない記憶装置(例えば、不揮発性メモリ)を備える。
【0034】
プロセッサ10は、メモリ11と協働して、入力装置12からの入力情報を処理したり、カメラ13からの実画像を処理したり、姿勢検出センサ14からのデータを処理してスマートフォン1(カメラ13)の姿勢を算出したりする。また、プロセッサ10は、後述する仮想空間内の各種オブジェクトに関する処理を行ったり、仮想カメラに基づいて仮想画像を生成し、実画像と仮想画像とを合成した合成画像を生成したりする。プロセッサ10は、生成した合成画像を表示装置15に出力する。なお、プロセッサ10は、画像処理を行うためのGPU(Graphics Processing Unit)を備えてもよい。
【0035】
入力装置12は、ユーザの入力を受け付ける。入力装置12は、例えば、タッチパネルやボタン等であってもよい。
【0036】
カメラ13(撮像装置)は、スマートフォン1の背面に設けられ、背面方向の現実空間を撮像する。
【0037】
姿勢検出センサ14は、スマートフォン1(カメラ13)の姿勢を検出するためのセンサであり、例えば、加速度センサ及び/又は角速度センサである。
【0038】
表示装置15は、スマートフォン1の前面に設けられ、カメラ13からの画像を表示したり、仮想空間の画像を表示したりする。表示装置15は、例えば液晶ディスプレイや有機ELディスプレイ等、任意の表示装置であってもよい。
【0039】
次に、スマートフォン1の表示装置15に表示される画像について説明する。
図2は、現実空間の一例を示す図である。
図3は、スマートフォン1が位置P1に配置されたときの表示装置15に表示される画像の一例を示す図である。
【0040】
図2に示されるように、現実空間には、例えば、床RFと、床RF上に配置された円柱状の実オブジェクトROと、壁RWとがある。
図2に示される現実空間の位置P1にスマートフォン1が配置された場合、
図3に示されるような画像が表示装置15に表示される。
【0041】
スマートフォン1の表示装置15には、カメラ13によって撮像された現実空間の画像(実画像)が表示される。例えば、表示装置15には、実画像として、床RFの画像と、実オブジェクトROの画像とが表示される。また、表示装置15には、仮想ドアVDが表示される。仮想ドアVDは、仮想空間に配置された仮想オブジェクトの一例であり、現実空間には存在しない。スマートフォン1の内部には仮想空間が定義され、仮想空間内に仮想ドアVDが配置される。仮想空間内には仮想カメラが配置され、当該仮想カメラを用いて仮想ドアVDを撮像することで仮想画像が生成される。生成された仮想画像が、カメラ13からの実画像に重畳されて合成画像が生成され、当該合成画像が表示装置15に出力される。これにより、
図3に示されるような合成画像が表示される。
【0042】
図4は、現実空間と仮想空間の各種オブジェクトとの位置関係の一例を示す図である。
図4では、
図3に示される画像が表示されるときの現実空間及び仮想空間を真横から見た図が示されている。
【0043】
図4に示されるように、スマートフォン1に固定のXYZ座標系が定義される。Z軸は、スマートフォン1の背面方向の軸であり、カメラ13の撮像方向を向く軸である。Y軸は、Z軸と垂直な軸であって、スマートフォン1(カメラ13)を基準として上方向の軸である。X軸は、Z軸及びY軸に垂直な軸であって、スマートフォン1(カメラ13)を基準として左方向の軸である。
【0044】
カメラ13の撮像方向(スマートフォン1の姿勢)は、姿勢検出センサ14からのデータに基づいて算出される。スマートフォン1にカメラ13が固定されているため、姿勢検出センサ14からのデータに基づいて算出される姿勢は、スマートフォン1の姿勢でもあり、カメラ13の姿勢でもある。例えば、スマートフォン1は、姿勢検出センサ14によって検出された重力Gに基づいて、水平面(床RF)に対するZ軸の角度(θ)を算出する。
【0045】
仮想空間VS内には、仮想カメラVCが配置される。仮想カメラVCには、xyz座標系が設定される。仮想カメラVCのz軸は、仮想カメラVCの撮像方向を向く軸である。仮想カメラVCのy軸は、z軸と垂直な軸であって、仮想カメラVCを基準として上方向の軸である。仮想カメラVCのx軸は、z軸及びy軸と垂直な軸であって、仮想カメラVCを基準として左方向の軸である。
【0046】
現実空間内のカメラ13の姿勢と仮想空間VS内の仮想カメラVCの姿勢とは連動する。具体的には、姿勢検出センサ14(例えば、加速度センサ及び/又は角速度センサ)からのデータに基づいて算出されるスマートフォン1の姿勢と一致するように、仮想カメラVCの姿勢が設定される。例えば、現実空間においてカメラ13が水平の状態から10度上向きの状態に変化した場合は、仮想カメラVCも仮想空間VSにおいて水平の状態から10度上向きの状態に変化する。
【0047】
仮想カメラVCの撮像方向に追従する態様で、仮想ドアVDの位置が制御される。具体的には、
図4に示されるように、仮想カメラVCの撮像方向(z軸方向)には仮想ドアVDが配置される。仮想ドアVDは、ドアを模した仮想オブジェクトであり、板状の仮想オブジェクトである。仮想ドアVDは、仮想カメラVCの位置から一定距離Dだけ離れた位置に配置される。例えば、仮想カメラVCからZ軸方向にDだけ離れた位置に仮想ドアVDの中心が設定されてもよい。
【0048】
カメラ13によって現実空間を撮像した実画像と、仮想カメラVCによって仮想ドアVDを撮像した仮想画像とを合成した合成画像がスマートフォン1の表示装置15に表示される。このため、ユーザが合成画像を見た場合に、現実空間に仮想ドアVDが存在するように見える。
【0049】
仮想ドアVDには、xd軸、yd軸、zd軸が設定される。xd軸は、仮想ドアVDに垂直な軸であり、yd軸は、仮想ドアVDに対して上向きの軸であり、xd軸は、仮想ドアVDに対して左向きの軸である。仮想ドアVDは、仮想空間VSの水平面(現実空間の水平面)に対して垂直になるように、仮想空間内に配置される。すなわち、仮想ドアVDの上向きのyd軸と、仮想空間の上向きの軸とが同じ方向を向くように、仮想ドアVDが仮想空間内に配置される。
【0050】
詳細は後述するが、仮想ドアVDは、仮想的な部屋(第2仮想空間)への入口となる仮想オブジェクトである。
【0051】
次に、
図3に示される状態からカメラ13(スマートフォン1)の姿勢が変化したときの表示装置15に表示される画像について説明する。
【0052】
図5は、カメラ13の撮像方向を上向きに変化させるときの仮想空間の変化の一例を示す図である。
【0053】
図5に示されるように、仮想カメラVC(カメラ13)のz軸と水平面との角度θが「0」度の場合、仮想カメラVC(カメラ13)のz軸から一定距離Dだけ離れた位置に、仮想ドアVDの中心が位置するように配置される。このとき、仮想ドアVDは、例えば、水平面(床RF)から高さH1の位置に存在しているように見える。なお、以下では、カメラ13(仮想カメラVC)が上向きのときは、角度θは正の値であり、カメラ13(仮想カメラVC)が下向きのときは、角度θは負の値であるものとする。
【0054】
角度θが0から第1閾値a(aは正の値)までなるようにカメラ13の撮像方向を上向きに変化させると、仮想ドアVDの位置は、カメラ13の撮像方向の変化に追従して変化する。すなわち、仮想カメラVCの撮像方向と、仮想カメラVCから仮想ドアVDへの方向である仮想オブジェクト方向とが連動するように、カメラ13の撮像方向に応じて、仮想カメラVCの撮像方向が変化するとともに仮想ドアVDの位置も変化する。このため、ユーザにはカメラ13と仮想ドアVDとが連動しているように見え、カメラ13の動きに追従して仮想ドアVDが動いているように見える。具体的には、仮想ドアVDは、水平面に対して垂直な状態を維持したまま、仮想空間の上方向に移動する。すなわち、仮想ドアVDの上方向のyd軸と、仮想空間の上方向の軸とが平行である状態を維持したまま、仮想ドアVDが上方向に移動する。例えば、θ=0の状態からθ=aの状態までは、仮想カメラVCのz軸に一定距離Dだけ離れた位置に仮想ドアVDの中心が位置するように、仮想ドアVDが仮想空間内に配置される。また、この間、仮想ドアVDの上方向のyd軸は、重力方向と反対方向(仮想空間の上方向)を向くように制御される。θ=aのときには、表示装置15を見た場合に、仮想ドアVDは、例えば水平面(床RF)から高さH2(>H1)の位置に存在しているように見える。
【0055】
θ=aの状態からさらにカメラ13の撮像方向を上向きに変化させると、仮想カメラVCの撮像方向はカメラ13の撮像方向と一致するように変化する。しかしながら、仮想ドアVDの位置は、カメラ13の撮像方向の変化に追従して変化しない。すなわち、θ>aの状態では、仮想ドアVDはさらに上方向に移動せず、仮想ドアVDの上方向への移動が制限される。
【0056】
このように、カメラ13の撮像方向の変化に応じて仮想カメラVCの撮像方向が変化することを前提として、0<θ<aの範囲では、仮想カメラVCの撮像方向の変化に連動して仮想ドアVDが上方向に移動する。一方、θ>aの場合、すなわち、仮想カメラVCの撮像方向が第1閾値aよりも上方向を向いている場合、仮想ドアVDの上方向の移動が制限される。
【0057】
カメラ13(スマートフォン1)が上下、左右、前後方向に平行移動する場合、仮想カメラVCと仮想ドアVDとの相対的な位置関係は変化しない。例えば、カメラ13が撮像方向を固定したまま、左右方向に平行移動した場合、仮想カメラVCも仮想空間内で左右方向に平行移動し、仮想ドアVDも仮想空間内で左右方向に平行移動する。カメラ13が撮像方向を固定したまま上下方向に平行移動した場合も同様である。
【0058】
なお、カメラ13が撮像方向を固定したまま上下、左右、前後方向に平行移動した場合、仮想カメラVC及び仮想ドアVDは、仮想空間内で移動しなくてもよい。この場合でも、仮想カメラVCと仮想ドアVDとの相対的な位置関係は変化しないため、仮想ドアVDは表示装置15のほぼ中央に表示されたままとなり、仮想ドアVDがカメラ13の移動に追従して移動するように見える。
【0059】
図6は、カメラ13の撮像方向の角度θが「0」のときに表示装置15に表示される画像の一例を示す図である。
図7は、カメラ13の撮像方向の角度θが第1閾値「a」のときに表示装置15に表示される画像の一例を示す図である。
図8は、カメラ13の撮像方向の角度θが第1閾値「a」よりも大きいときに表示装置15に表示される画像の一例を示す図である。
【0060】
図6では、
図3のときよりもカメラ13の撮像方向が上向きであるため、実オブジェクトROの画像は、
図3よりも画面の下側に表示されている。また、
図3では壁RWの画像は表示されていないが、
図6では壁RWの画像が表示される。また、
図6に示されるように、仮想カメラVCの正面に仮想ドアVDが位置し、表示装置15のほぼ中央に仮想ドアVDが表示される。
【0061】
図7に示されるように、θ=aの場合でも、仮想カメラVCの正面に仮想ドアVDが位置し、表示装置15のほぼ中央に仮想ドアVDが表示される。θが0からaまで変化する間、仮想ドアVDは、仮想カメラVC(カメラ13)の撮像方向の変化に追従して上方向に移動する。すなわち、表示装置15に表示された合成画像から視認される仮想ドアVDは、カメラ13の撮像方向の変化に連動するように上方向に移動する。一方、
図7に示されるように、実オブジェクトROの画像は、
図6よりもさらに下側に表示される。また、壁RWの画像の領域も
図6よりも大きくなっている。
【0062】
また、
図8に示されるように、θ>aの場合、すなわち、カメラ13が第1閾値よりも上方向を向いている場合、仮想ドアVDはカメラ13(仮想カメラVC)の撮像方向の変化に追従することなく、表示装置15の表示画面の下側に表示される。
図8では、仮想ドアVDの下側部分が仮想カメラVCの撮像範囲から外れており、当該下側部分は表示装置15に表示されていない。
図8のときよりもさらにカメラ13を上方向に向けると、仮想ドアVDは、仮想カメラVCの撮像範囲から外れ、画面に表示されなくなる。これに対して、
図8に示されるように、実画像は、
図7よりもさらに下側に移動する。実オブジェクトRO及び床RFの画像は、
図7よりもさらに下側に表示され、壁RWの画像の領域は
図7よりも大きくなる。
【0063】
次に、カメラ13を下方向に向ける場合について説明する。
図9は、カメラ13の撮像方向を下向きに変化させるときの仮想空間の変化の一例を示す図である。
【0064】
図9に示されるように、角度θが0よりも小さく(すなわち、カメラ13が下向き)、かつ、「-b(bは正の値)」度よりも大きい場合、仮想カメラVC(カメラ13)のz軸から一定距離Dだけ離れた位置に、仮想ドアVDの中心が位置するように配置される。このとき、表示装置15に表示される合成画像から視認される仮想ドアVDは、例えば、水平面(床RF)から高さH3(<H1)の位置に存在しているように見える。
【0065】
θを第2閾値「-b」まで変化させると(すなわち、カメラ13を下方向に角度bまで変化させると)、仮想ドアVDは、カメラ13の撮像方向の変化に追従して下方向に移動する。すなわち、仮想カメラVCの撮像方向と、仮想カメラVCから仮想ドアVDへの方向である仮想オブジェクト方向とが連動するように、カメラ13の撮像方向に応じて、仮想カメラVCの撮像方向が変化するとともに仮想ドアVDの位置も変化する。このため、ユーザにはカメラ13と仮想ドアVDとが連動しているように見え、カメラ13の動きに追従して仮想ドアVDが動いているように見える。具体的には、仮想ドアVDは、水平面に対して垂直な状態を維持したまま、仮想空間の下方向に移動する。この間、仮想ドアVDの上向きのyd軸は、重力方向と反対方向(仮想空間の上方向)を向くように制御される。θ=-bの状態では、仮想ドアVDは、例えば、水平面(床RF)から高さH4(<H3)の位置に存在しているように見える。
【0066】
θ=-bの状態からさらにカメラ13の撮像方向を下向きに変化させると、仮想カメラVCの撮像方向はカメラ13の撮像方向と一致するように変化する。しかしながら、仮想ドアVDの位置は、カメラ13の撮像方向の変化に追従して変化しない。すなわち、θ<-bの状態では、仮想ドアVDはさらに下方向に移動せず、仮想ドアVDの下方向への移動が制限される。
【0067】
このように、-b<θ<0の範囲では、仮想カメラVCの撮像方向の変化に連動して仮想ドアVDが下方向に移動する。一方、θ<-bの場合、すなわち、仮想カメラVCの撮像方向が第2閾値bよりも下方向を向いている場合、仮想ドアVDの下方向の移動が制限される。
【0068】
図10は、-b<θ<0のときに表示装置15に表示される画像の一例を示す図である。
図11は、θ=-bのときに表示装置15に表示される画像の一例を示す図である。
図12は、θ<-bのときに表示装置15に表示される画像の一例を示す図である。
【0069】
図10では、
図6のときよりもカメラ13の撮像方向が下向きであるため、実オブジェクトROの画像は、
図6よりも画面の上側に表示されており、実オブジェクトROの一部が表示されなくなっている。また、
図10では壁RWの画像は表示されなくなっている。また、
図10に示されるように、仮想カメラVCの正面に仮想ドアVDが位置し、表示装置15のほぼ中央に仮想ドアVDが表示される。
【0070】
図11に示されるように、θ=-bの場合、仮想カメラVCの正面に仮想ドアVDが位置し、表示装置15のほぼ中央に仮想ドアVDが表示される。θが0から-bまで変化する間、仮想ドアVDは、仮想カメラVC(カメラ13)の撮像方向の変化に追従して下方向に移動する。すなわち、表示装置15に表示された合成画像から視認される仮想ドアVDは、カメラ13の撮像方向の変化に連動するように下方向に移動する。一方、実オブジェクトROの画像は、
図10よりもさらに上側に移動し、ほぼ表示されなくなっている。
【0071】
また、
図12に示されるように、θ<-bの場合、すなわち、カメラ13が第2閾値よりも下方向を向いている場合、仮想ドアVDはカメラ13(仮想カメラVC)の撮像方向の変化に追従することなく、表示装置15の表示画面の上側に表示される。
図12では、仮想ドアVDの上側部分が仮想カメラVCの撮像範囲から外れており、当該上側部分は表示装置15に表示されていない。
図12よりもさらにカメラ13を下方向に向けると、仮想ドアVDは、仮想カメラVCの撮像範囲から外れ、画面に表示されなくなる。これに対して、
図12に示されるように、実画像は、
図11よりもさらに下側に移動する。
【0072】
次に、カメラ13の撮像方向を左右方向に変化させた場合について説明する。
図13は、仮想空間を上方から見た図であって、カメラ13の撮像方向を右方向に変化させたときの仮想カメラVC及び仮想ドアVDの動作の一例を示す図である。
【0073】
カメラ13の撮像方向が左右方向に変化する場合も、仮想カメラVCの撮像方向は左右方向に変化する。例えば、カメラ13(スマートフォン1)の右方向の回転角φが10度の場合は、仮想カメラVCも右方向に10度回転する。
図13に示されるように、仮想カメラVCの撮像方向の左右方向の回転に連動して、仮想ドアVDも左右方向に移動する。具体的には、仮想ドアVDは、仮想カメラVCを向くように姿勢を変化させながら左右方向に移動する。例えば、仮想カメラVCが右方向に所定の角度回転した場合(カメラ13が右方向に所定の角度回転した場合)、仮想ドアVDは、仮想カメラVCとの距離Dを維持したまま右方向に移動する。カメラ13の撮像方向の左右方向に変化に応じて仮想ドアVDが左右方向に移動するときも、仮想ドアVDは水平面に対して垂直の姿勢を維持する。すなわち、仮想ドアVDの上向きのyd軸と、仮想空間の上向きの軸とが平行である状態を維持したまま、仮想ドアVDが仮想空間内で左右方向に移動する。
【0074】
なお、カメラ13の撮像方向が左右方向に変化する場合は、左右方向への回転角φがどのような値でも、仮想カメラVCの撮像方向の左右方向の動きに連動して、仮想ドアVDは左右方向に移動する。
【0075】
図14は、
図10の状態からスマートフォン1を右方向にc度だけ回転させたときに表示装置15に表示される画像の一例を示す図である。
図15は、
図12の状態からスマートフォン1を右方向にc度だけ回転させたときに表示装置15に表示される画像の一例を示す図である。
【0076】
図14に示されるように、
図10の状態からスマートフォン1を右方向に向けた場合、実画像における実オブジェクトROは画面の左側に移動し、現実空間の右側の壁RWの一部が、画面に表示されるようになる。一方、仮想ドアVDは、仮想カメラVCの正面に位置し、表示装置15のほぼ中央に表示される。
【0077】
また、
図15に示されるように、
図12の状態からスマートフォン1を右方向に向けた場合、現実空間の右側の画像が画面に表示される。仮想ドアVDは、仮想カメラVCの正面に位置し、表示装置15のほぼ中央に表示される。このように、カメラ13が第2閾値よりも下方向を向いている状態でも、カメラ13を左右方向に向けることに応じて、仮想ドアVDも左右方向に移動する。カメラ13が第1閾値よりも上方向を向いている状態でも同様である。すなわち、カメラ13の撮像方向が第1閾値よりも上方向に向いている場合、又は、第2閾値よりも下方向に向いている場合でも、カメラ13の撮像方向が左右方向に変化した場合には、カメラ13(仮想カメラVC)の撮像方向の変化に応じて、仮想ドアVDの位置も左右方向に変化する。
【0078】
(仮想ドアVDの固定)
次に、仮想ドアVDを現実空間に擬似的に固定した後の処理について説明する。上述のように、仮想ドアVDが表示装置15に表示された状態でカメラ13の撮像方向を変化させると、それに追従して仮想ドアVDも仮想空間内で移動する。また、カメラ13の撮像方向を固定したまま、カメラ13を平行移動させた場合、仮想ドアVDもカメラ13に追従して移動する。これにより、仮想ドアVDがカメラ13と連動しているように見え、仮想ドアVDが現実空間内で移動しているように見える。この状態で、入力装置12に対して所定のユーザ操作が行われると、仮想ドアVDが現実空間において擬似的に固定される。
【0079】
図16は、仮想ドアVDを現実空間に擬似的に固定した後の表示装置15に表示される画像の一例を示す図である。
図16に示されるように、入力装置12に対して所定のユーザ操作(例えば、仮想ドアVDに対するタッチ入力)が行われた場合、仮想ドアVDが擬似的に固定されるとともに、仮想ドアVDの表示態様が変化する。所定のユーザ操作の前は、仮想ドアVDは第1表示態様(例えば、
図3に示されるように破線の態様)で表示され、この状態では、仮想ドアVDは、カメラ13の撮像方向の変化に応じて移動する。なお、所定のユーザ操作は、タッチ入力に限らず、ボタン入力、非タッチ入力(例えばジェスチャ入力)、音声による入力等であってもよい。
【0080】
所定のユーザ操作の後は、仮想ドアVDは第2表示態様(例えば、
図16に示されるように実線の態様)で表示される。この状態では、仮想ドアVDは現実空間に擬似的に固定される。仮想ドアVDが擬似的に固定された場合、カメラ13の撮像方向が変化しても、仮想ドアVDの位置は変化しない。また、カメラ13を平行移動させた場合、仮想ドアVDはカメラ13に追従して移動しない。
【0081】
図17は、
図16の状態からカメラ13を左方向に平行移動させたときに表示される画像の一例を示す図である。
図17に示されるように、仮想ドアVDが現実空間に擬似的に固定された場合、カメラ13が左方向に平行移動しても、仮想ドアVDは左方向に平行移動しない。具体的には、
図17では、カメラ13の左方向への平行移動に応じて、実オブジェクトROが画面の右方向に移動し、実オブジェクトROの一部が右端に表示されている。実オブジェクトROの画面内での移動に伴って、仮想ドアVDも画面内で右方向に移動している。画面内における実オブジェクトROの移動量と仮想ドアVDの移動量とは同じである。これにより、仮想ドアVDが、現実空間内で擬似的に固定されたように見える。
【0082】
具体的には、仮想空間に固定のvx-vy-vz直交座標系が設定され、所定のユーザ操作が行われた場合、仮想ドアVDのvx-vy-vz座標値が固定される。一方、仮想カメラVCは、カメラ13の移動に応じて仮想空間内を移動する。また、仮想カメラVCの撮像方向は、カメラ13の撮像方向と一致するように設定される。仮想カメラVCはカメラ13に追従して仮想空間内を移動したり、撮像方向を変化させたりする一方で、仮想ドアVDは、仮想空間内で固定される。このため、表示装置15に表示される仮想ドアVDは、現実空間内で擬似的に固定されるように見える。
【0083】
仮想カメラVCの位置は、所定の時間間隔(例えば、1/60秒間隔)で取得されるカメラ13からの実画像に基づいて算出される。逐次取得される実画像に基づいて、カメラ13の動き(移動)が算出され、カメラ13の動き(移動)と一致するように仮想カメラVCの位置が設定される。なお、カメラ13の動き(移動)は、カメラ13からの実画像に加えて(又は代えて)、姿勢検出センサ14からの出力に基づいて算出されてもよい。例えば、姿勢検出センサ14から出力される加速度に基づいてカメラ13の移動量および移動方向が算出されてもよい。そして、算出された移動量および移動方向に基づいて、仮想カメラVCが仮想空間内で移動されてもよい。仮想ドアVDが固定された場合、カメラ13(仮想カメラVC)を移動させることで、仮想カメラVCと仮想ドアVDとの相対的な位置関係が変化する。
【0084】
なお、仮想空間に固定のvx-vy-vz座標系は、仮想ドアVDが固定されたときに仮想ドアVDを基準として設定されてもよい。例えば、vx-vy-vz座標系の原点が、仮想ドアVDの位置に設定され、vy軸は重力方向と反対方向に設定され、vx軸は、仮想ドアVDのxd軸と平行に設定されてもよい。また、vx-vy-vz座標系は、仮想ドアVDが固定される前から仮想空間内に固定されてもよい。例えば、カメラ13から実画像が取得された場合に、当該実画像と重力方向とに基づいて現実空間内の平面が検出され、当該平面上にvx-vy-vz座標系の原点が設定されてもよい。重力方向と反対方向にvy軸が設定され、検出された平面がvx-vz平面として設定されてもよい。また、現実空間内にマーカが配置され、カメラ13からの実画像に含まれるマーカ画像に基づいて、vx-vy-vz座標系が設定されてもよい。
【0085】
(第2仮想空間)
上述のように、仮想ドアVDが現実空間内で擬似的に固定された場合(仮想ドアVDが仮想空間内で固定された場合)、仮想ドアVDを基準とした第2仮想空間が生成される。
【0086】
図18は、仮想ドアVDを介して見える一部の第2仮想空間の一例を示す図である。仮想ドアVDが固定された後、例えば、ユーザの入力装置12に対する入力に応じて、仮想ドアVDは、
図16に示す閉状態(第1状態)から、
図18に示す開状態(第2状態)に変化する。仮想ドアVDが開状態に変化した場合、第2仮想空間VS2内を視認可能となる。
図18に示されるように、現実空間の実画像と、仮想ドアVDの画像と、第2仮想空間VS2の画像とが合成された画像が表示される。具体的には、
図18に示されるように、仮想ドアVD以外の領域では、実空間の画像が表示され、実オブジェクトRO及び床RFの画像が表示される。仮想ドアVDの開口部には、第2仮想空間VS2を示す仮想的な部屋内の画像が表示される。第2仮想空間VS2には、仮想床VFの上に仮想テーブルVTと仮想キャラクタC1とが配置される。
【0087】
図19は、仮想ドアVDと仮想カメラVCと第2仮想空間VS2との位置関係の一例を示す図である。
図19では、第2仮想空間VS2を含む仮想空間全体を上方から見た図が示されている。
【0088】
図19に示されるように、仮想カメラVCが位置P1に配置される場合において、仮想ドアVDが開状態である場合、
図18に示す画像が表示される。この状態では、仮想カメラVCは第2仮想空間VS2の外にあり、第2仮想空間VS2内を自由に移動することはできない。
【0089】
第2仮想空間VS2は、仮想ドアVDの位置に応じて設定される。第2仮想空間VS2は、仮想床VF、4つの仮想壁VW、及び、仮想天井によって囲まれた仮想的な部屋である。第2仮想空間VS2の外側は、仮想空間VSであり、第2仮想空間VS2の内側と外側との間に、仮想ドアVDが位置する。第2仮想空間VS2は、現実空間の所定範囲に対応する。例えば、第2仮想空間VS2は、現実空間の数十cm~数m四方の範囲に対応し、当該範囲に第2仮想空間VS2が存在するような感覚をユーザに与える。
【0090】
第2仮想空間VS2内には、仮想テーブルVTと、仮想キャラクタC1と、仮想キャラクタC2とが配置される。これらの他にも、様々なオブジェクト(例えば、家具オブジェクト)が第2仮想空間VS2内に配置されてもよい。第2仮想空間VS2の仮想床VFは、仮想ドアVDに対して垂直に設定される。すなわち、仮想床VFと、仮想ドアVDのyd軸とは垂直に交わる。
【0091】
図16又は
図18に示されるように、仮想カメラVCと仮想ドアVDとが所定距離離れた状態から、カメラ13を撮像方向に移動させると、仮想カメラVCもz軸方向に移動し、仮想カメラVCが仮想ドアVDに近づく。仮想カメラVCと仮想ドアVDとが所定の位置条件を満たすと(仮想カメラVCが仮想ドアVDに所定距離内に近づくと)、仮想カメラVCは、第2仮想空間VS2内に進入可能となる。例えば、仮想カメラVCと仮想ドアVDとの距離が所定値未満であり、仮想カメラVCの左右方向の位置が仮想ドアVDの幅の範囲内であり、かつ、仮想カメラVCの上下方向の位置が仮想ドアVDの高さの範囲内である場合、仮想カメラVCと仮想ドアVDとの所定の位置条件が満たされる。すなわち、仮想カメラVC(カメラ13)が仮想ドアVDの位置まで近づき、かつ、仮想カメラVCが、上下方向にも左右方向にも仮想ドアVDの位置からずれていない場合は、所定の位置条件が満たされる。
【0092】
なお、仮想カメラVCが、仮想ドアVDとは異なる位置から第2仮想空間VS2に近づいても、第2仮想空間VS2内に進入することはできない。すなわち、仮想ドアVDの位置を通ってカメラ13を現実空間の所定範囲内に移動させた場合は、仮想カメラVCは第2仮想空間VS2内に進入し、第2仮想空間VS2内の画像が表示される。しかしながら、仮想ドアVD以外の位置を通ってカメラ13を現実空間の所定範囲内に移動させた場合は、仮想カメラVCは第2仮想空間VS2内に入らない。この場合、カメラ13からの実画像が表示される。
【0093】
仮想カメラVCが仮想ドアVDの位置まで到達し、さらに仮想カメラVC(カメラ13)が撮像方向に移動した場合、仮想カメラVCは、第2仮想空間VS2内の位置P2まで移動する。
図20は、
図19に示す位置P2に仮想カメラVCが配置される場合に表示される画像の一例を示す図である。
【0094】
図20に示されるように、仮想カメラVCが第2仮想空間VS2内に進入した場合、カメラ13からの実画像は表示されず、画面全体に仮想カメラVCに基づく第2仮想空間VS2内の仮想画像が表示される。
図20に示される例では、仮想テーブルVTと、仮想キャラクタC1とが表示されている。この状態でさらにカメラ13を移動させると、仮想カメラVCが第2仮想空間VS2内で移動する。カメラ13の移動は、カメラ13から逐次取得される実画像に基づいて検出される。すなわち、仮想カメラVCが第2仮想空間VS2内に進入している場合、実画像は画面には表示されないものの、カメラ13からは逐次実画像が取得され、取得された実画像に基づいてカメラ13(スマートフォン1)の移動が検出される。また、カメラ13の撮像方向が変化された場合、その変化に応じて仮想カメラVCの撮像方向も第2仮想空間VS2内で変化する。
【0095】
以上のように、本実施形態では、カメラ13の動きに応じて仮想カメラVCを仮想空間内で動作させ、カメラ13からの実画像に重畳して仮想空間内の仮想ドアVDを表示することで、仮想ドアVDが現実空間に存在するかのように表示することができる。ユーザは、所定のユーザ操作を行うことで、仮想ドアVDを仮想空間内で固定し、仮想ドアVDを現実空間に擬似的に固定することができる。また、ユーザは、仮想ドアVDを入り口として第2仮想空間VS2内に進入し、第2仮想空間VS2内を視認することができる。
【0096】
所定のユーザ操作が行われる前は、カメラ13を移動させたり、カメラ13の撮像方向を変化させたりすることで、仮想ドアVDを仮想空間内で移動させることができるため、ユーザは、現実空間内の所望の位置に第2仮想空間VS2内への入り口を配置することができる。
【0097】
ここで、例えば、カメラ13(仮想カメラVC)の撮像方向の所定位置に、常に仮想ドアVDを配置する場合、カメラ13を上方向に向けすぎた場合には、現実空間の高い位置に仮想ドアVDが位置することになる。
【0098】
図21は、制限を加えることなく仮想カメラVCの撮像方向に連動させて仮想ドアVDを移動させる場合の現実空間を横方向から見た図である。
【0099】
図21に示されるように、θ=0の場合には、仮想カメラVCの撮像方向の所定位置に仮想ドアVDが配置され、ユーザが表示装置15を見た場合に、現実空間の高さH1の位置に仮想ドアVDの底面が位置しているように見える。その位置で仮想ドアVDが固定された場合には、高さH1の位置に第2仮想空間VS2の仮想床VFが位置するように第2仮想空間VS2が設定される。ユーザが、カメラ13を現実空間に擬似的に固定された仮想ドアVDに近づけると、第2仮想空間VS2内に仮想カメラVCを進入させることができ、カメラ13を動かすことで第2仮想空間VS2内を見渡すことができる。
【0100】
一方、θが第1閾値aよりも大きい場合において、仮想ドアVDの上方向への移動が制限されない場合には、仮想ドアVDの底面の位置は、高さH5になる。この場合、ユーザは、現実空間を見上げる状態となる。この状態で仮想ドアVDが固定された場合には、現実空間の上方向の位置に第2仮想空間VS2の仮想床VFが固定されてしまう。第2仮想空間VS2の仮想床VFが、ユーザの届かない位置に固定された場合は、ユーザはカメラ13(スマートフォン1)を仮想ドアVDに近づけることが困難となり、第2仮想空間VS2内に仮想カメラVCを進入させることが困難となる。仮に、カメラ13を、仮想ドアVDを通過させることができても、高い位置で第2仮想空間VS2を見渡すようにカメラ13を移動させることは困難である。
【0101】
したがって、本実施形態では、θが第1閾値aよりも大きい場合には、すなわち、カメラ13の撮像方向が第1閾値aよりも上方向を向いている場合には、仮想ドアVDの上方向への移動を制限する。これにより、仮想ドアVDが現実空間の高すぎる位置に固定されることを防止することができ、仮想カメラVCを第2仮想空間VS2内に進入させ、第2仮想空間VS2を見渡しやすくすることができる。
【0102】
仮想ドアVDが制限なく下方向に移動する場合も同様である。仮に、カメラ13が下方向を向き過ぎている場合において、仮想ドアVDの下方向への移動が制限されない場合には、仮想ドアVDの底面は、現実空間の床よりも下側に位置してしまうことがある。この状態で仮想ドアVDが固定された場合には、現実空間の床よりも下の位置に第2仮想空間VS2の仮想床VFが固定されてしまう。このため、ユーザがカメラ13(スマートフォン1)を仮想ドアVDの位置に近づけることが不可能となり、第2仮想空間VS2内に入ることが不可能となる。
【0103】
したがって、本実施形態では、θが第2閾値-bよりも小さい場合には、すなわち、カメラ13の撮像方向が第2閾値bよりも下方向を向いている場合には、仮想ドアVDの下方向への移動を制限する。これにより、仮想ドアVDが現実空間の床よりも低い位置に配置されることを防止することができ、第2仮想空間VS2に進入可能とすることができる。
【0104】
(スマートフォンに記憶されるデータ)
次に、スマートフォン1において記憶されるデータについて説明する。
図22は、スマートフォン1のメモリ11において記憶されるデータの一例を示す図である。
【0105】
図22に示されるように、スマートフォン1には、後述するフローチャートによって示される情報処理を行うためのプログラムが記憶される。また、スマートフォン1には、実画像データと、姿勢データと、仮想カメラデータと、仮想画像データと、合成画像データと、仮想ドアデータと、仮想キャラクタデータと、他オブジェクトデータとが記憶される。
【0106】
実画像データは、カメラ13によって撮像された実画像を示すデータである。プロセッサ10は、所定の時間間隔(例えば、1/60秒間隔)でカメラ13から実画像を取得し、当該実画像を示す実画像データをメモリ11に記憶する。
【0107】
姿勢データは、現実空間におけるスマートフォン1の姿勢を表すデータであり、カメラ13の姿勢を表すデータである。姿勢データは、姿勢検出センサ14からの出力(例えば、加速度値及び/又は角速度値)に基づいて算出される。例えば、姿勢データは、カメラ13の撮像方向の上下方向の回転に関するデータ(角度θ)と、左右方向の回転に関するデータ(角度φ)とを含んでもよい。
【0108】
仮想カメラデータは、仮想カメラVCに関するデータであり、仮想カメラVCの姿勢(撮像方向)を表すデータと、仮想カメラVCの仮想空間内での位置を表すデータとを含む。
【0109】
仮想画像データは、仮想カメラVCによって撮像された仮想画像を示すデータである。仮想画像は、所定の時間間隔(例えば、1/60秒間隔)で繰り返し生成される。
【0110】
合成画像データは、実画像と仮想画像とを合成した合成画像を示すデータである。合成画像は、実画像に仮想画像を重畳することによって生成される。合成画像は、所定の時間間隔(例えば、1/60秒間隔)で繰り返し生成される。
【0111】
仮想ドアデータは、仮想ドアVDに関するデータである。仮想ドアデータは、仮想ドアVDの姿勢を表すデータと、位置を表すデータとを含む。
【0112】
仮想キャラクタデータは、第2仮想空間VS2内に配置される仮想キャラクタC1及びC2に関するデータである。仮想キャラクタデータは、各仮想キャラクタの位置及び姿勢を表すデータを含む。他オブジェクトデータは、第2仮想空間VS2内に配置される他の仮想オブジェクト(例えば、仮想テーブルVT)に関するデータであり、当該オブジェクトの位置及び姿勢を表すデータを含む。
【0113】
(スマートフォンにおける処理の詳細)
次に、スマートフォン1において行われる処理の詳細について説明する。
図23は、スマートフォン1のプロセッサ10において実行されるメイン処理の一例を示すフローチャートである。なお、
図23に示されるメイン処理は、所定の時間間隔(例えば、1/60秒間隔)で繰り返し実行される。
【0114】
図23に示されるように、プロセッサ10は、カメラ13から実画像を取得する(ステップS101)。取得された実画像は実画像データとしてメモリ11に記憶される。
【0115】
次にプロセッサ10は、カメラ13(スマートフォン1)の姿勢を取得する(ステップS102)。例えば、プロセッサ10は、姿勢検出センサ14が検出した加速度値及び/又は角速度値に基づいて、カメラ13(スマートフォン1)の姿勢を算出し、姿勢データとしてメモリ11に記憶する。
【0116】
続いて、プロセッサ10は、仮想カメラVCを仮想空間に設定する(ステップS103)。具体的には、プロセッサ10は、ステップS102で取得したカメラ13の姿勢を仮想カメラVCの姿勢として設定する。なお、仮想カメラVCの姿勢は、カメラ13の姿勢に追従すればよく、所定時間かけてカメラ13の姿勢に近づくように設定されてもよい。
【0117】
次に、プロセッサ10は、仮想ドアVDが固定されているか否かを判定する(ステップS104)。ステップS104では、仮想ドアVDが仮想空間内で固定されているか否か(すなわち、仮想ドアVDが現実空間内で擬似的に固定されているか否か)が判定される。後述するステップS205の処理が既に行われている場合は、ステップS104でYESと判定される。
【0118】
仮想ドアVDが固定されていない場合(ステップS104:NO)、プロセッサ10は、仮想ドア固定処理を行う(ステップS105)。ステップS105の処理は、仮想ドアVDが仮想空間内で固定される前の処理であり、仮想ドアVDを固定するための処理とを含む。以下、仮想ドア固定処理の詳細について説明する。
【0119】
(仮想ドア固定処理)
図24は、ステップS105の仮想ドア固定処理の詳細を示すフローチャートである。
図24に示されるように、プロセッサ10は、θが第1閾値「a」よりも大きいか、又は、θが第2閾値「-b」よりも小さいか否かを判定する(ステップS201)。ステップS201の処理は、カメラ13の撮像方向が第1閾値aよりも上方向を向いているか否か、又は、カメラ13の撮像方向が第2閾値bよりも下方向を向いているか否かを判定する処理である。
【0120】
ステップS201でNOと判定した場合、プロセッサ10は、カメラ13に追従するように仮想ドアVDを配置する(ステップS202)。例えば、プロセッサ10は、仮想カメラVCの位置から撮像方向に一定距離Dだけ離れた位置に、仮想ドアVDを配置する。これにより、カメラ13が上方向に向けられた場合は、仮想ドアVDは上方向に移動し、カメラ13が下方向に向けられた場合は、仮想ドアVDは下方向に移動する。また、カメラ13が左右方向に向けられた場合は、仮想ドアVDは左右方向に移動する。また、プロセッサ10は、仮想ドアVDの上方向のyd軸が重力方向と反対方向を向くように、仮想ドアVDを配置する。なお、ステップS202において、仮想カメラVCの位置から撮像方向に一定距離Dだけ離れた位置に所定時間かけて仮想ドアVDが移動するように、仮想ドアVDが配置されてもよい。
【0121】
一方、ステップS201でYESと判定した場合、プロセッサ10は、上下方向の位置を制限して仮想ドアVDを配置する(ステップS203)。例えば、θ>aの場合、すなわち、カメラ13の撮像方向が第1閾値aよりも上方向を向いている場合、プロセッサ10は、仮想カメラVCの位置から、θ=aであると仮定したときの撮像方向に一定距離Dだけ離れた位置を、仮想カメラVCの位置として算出する。また、θ<-bの場合、すなわち、カメラ13の撮像方向が第2閾値bよりも下方向を向いている場合、プロセッサ10は、仮想カメラVCの位置から、θ=-bであると仮定したときの撮像方向に一定距離Dだけ離れた位置を、仮想カメラVCの位置として算出する。なお、ステップS203において、このように算出された位置に所定時間かけて仮想ドアVDが移動するように、仮想ドアVDが配置されてもよい。
【0122】
ステップS202又はステップS203の処理を実行した場合、プロセッサ10は、仮想ドアVDを固定するための所定のユーザ操作が行われたか否かを判定する(ステップS204)。
【0123】
所定のユーザ操作が行われた場合(ステップS204:YES)、プロセッサ10は、仮想ドアVDを現実空間内で擬似的に固定する(ステップS205)。現実空間と仮想空間とが対応付けられ、仮想ドアVDが仮想空間内で固定されることで、仮想ドアVDが現実空間において擬似的に固定される。例えば、現実空間に対応して仮想空間に固定のvx-vy-vz座標系が設定されている場合、仮想ドアVDの位置は、vx-vy-vz座標系の座標値として表される。所定のユーザ操作が行われた時点の仮想ドアVDの座標値を記憶し、以後、当該座標値を更新しないようにすることで、仮想ドアVDが仮想空間内で固定される。また、所定のユーザ操作が行われた時点の仮想ドアVDの位置をvx-vy-vz座標系の原点として設定してもよい。その時点で、仮想カメラVCのvx-vy-vz座標系の座標値が定まる。以後、カメラ13が移動した場合は、その移動に応じて仮想カメラVCのvx-vy-vz座標系の座標値も変化されるが、vx-vy-vz座標系の原点(すなわち、仮想ドアVDの位置)は変化しない。
【0124】
また、ステップS205では、仮想ドアVDの位置を基準として、第2仮想空間VS2が設定される。具体的には、仮想ドアVDの底面と第2仮想空間VS2の仮想床VFとの高さ方向の位置が一致するように、仮想床VFが設定される。また、仮想床VFは、仮想ドアVDと垂直となるように(仮想床VFが重力と垂直になるように)設定される。また、第2仮想空間VS2内には、仮想キャラクタC1、C2、仮想テーブルVTとが配置される。なお、ステップS205において第2仮想空間VS2が設定されても、第2仮想空間VS2は透明に設定される。このため、ユーザは第2仮想空間VS2を視認することができない。
【0125】
次に、プロセッサ10は、仮想ドアVDの表示態様を第1表示態様から第2表示態様に変化させる(ステップS206)。例えば、仮想ドアVDを破線の態様から実線の態様に変化させてもよい。また、ステップS206において、仮想ドアVDの色を変化させてもよいし、仮想ドアVDを半透明の態様から不透明の態様に変化させてもよい。
【0126】
ステップS204でNOと判定した場合、又は、ステップS206の処理を行った場合、プロセッサ10は、
図24に示す処理を終了し、
図23に処理を戻す。
【0127】
図23に戻り、仮想ドアVDが固定されている場合(ステップS104:YES)、プロセッサ10は、仮想カメラVCの位置を算出する(ステップS106)。具体的には、プロセッサ10は、カメラ13からの実画像に基づいて、仮想カメラVCの仮想空間内での位置を算出する。プロセッサ10は、カメラ13から取得した実画像に基づいて、カメラ13(スマートフォン1)の移動方向及び移動量を算出し、算出した移動方向及び移動量に応じて仮想カメラVCの位置を算出して、仮想カメラデータとして記憶する。
【0128】
次に、プロセッサ10は、仮想ドア開閉処理を行う(ステップS107)。具体的には、プロセッサ10は、入力装置12からの入力に基づいて、ユーザによって仮想ドアVDの開閉操作が行われたか否かを判定する。例えば、プロセッサ10は、仮想ドアVDがタッチされたか否かを判定する。例えば、プロセッサ10は、仮想ドアVDが閉状態であるときに、仮想ドアVDの開閉操作が行われた場合、仮想ドアVDを開状態に変化させる。また、プロセッサ10は、仮想ドアVDが開状態である場合に、仮想ドアVDの開閉操作が行われた場合、仮想ドアVDを閉状態に変化させる。仮想ドアVDが開状態になった場合、仮想ドアVDの開口部に対応する第2仮想空間VS2が不透明となり、当該開口部を通して第2仮想空間VS2を視認可能となる。
【0129】
次に、プロセッサ10は、仮想カメラVCと仮想ドアVDとの位置条件が満たされているか否かを判定する。具体的には、仮想カメラVCと仮想ドアVDとの仮想空間における距離が所定値未満であり、仮想カメラVCの左右方向の位置が仮想ドアVDの幅の範囲内であり、かつ、仮想カメラVCの上下方向の位置が仮想ドアVDの高さの範囲内である場合、プロセッサ10は、位置条件が満たされたと判定する。
【0130】
位置条件が満たされている場合(ステップS108:YES)、プロセッサ10は、第2仮想空間への進入処理を行う(ステップS109)。具体的には、プロセッサ10は、仮想カメラVCが第2仮想空間VS2内に存在することを示すフラグをONに設定する。また、仮想カメラVCが第2仮想空間VS2内に配置される。また、第2仮想空間VS2内の各種仮想オブジェクト(仮想床VF、仮想壁VW、仮想天井、仮想キャラクタC1,C2、仮想テーブルVT等)が不透明に設定される。これにより、スマートフォン1の表示装置15には、仮想カメラVCから第2仮想空間VS2内を見た仮想画像が表示されることになる。仮想ドアVDは、第2仮想空間VS2と、外側の仮想空間VSとを繋ぐ仮想オブジェクトであり、第2仮想空間VS2内からも見える。仮想カメラVCが第2仮想空間VS2内に入った後、仮想カメラVCが仮想ドアVDを通って第2仮想空間VS2の外に出るまで、仮想カメラVCは第2仮想空間VS2内に留まる。また、第2仮想空間への進入処理が行われた場合、第2仮想空間VS2の内側と外側との間には、仮想的な境界が設定される。第2仮想空間VS2は、現実空間の所定範囲に対応付けられるが、仮想カメラVCが第2仮想空間VS2内に進入した後は、カメラ13が仮想ドアVD以外の位置から現実空間の所定範囲外に出ても、仮想カメラVCは、第2仮想空間VS2の外には出ず、仮想的な境界に留まる。このとき、仮想的な境界を撮像した仮想画像(例えば全体が黒い画像)が表示装置15に表示される。仮想カメラVCが第2仮想空間VS2内に進入する前は、カメラ13が仮想ドアVD以外の位置から現実空間の所定範囲内に入っても、カメラ13からの実画像と仮想カメラVCからの仮想画像とを合成した合成画像が引き続き表示される。すなわち、仮想カメラVCが第2仮想空間VS2内に進入したと判定された後は、仮想カメラVCが第2仮想空間VS2内に進入したと判定される前とは異なる処理が行われる。
【0131】
ステップS109の処理を行った場合、又は、ステップS108でNOと判定した場合、プロセッサ10は、仮想カメラVCが第2仮想空間内に存在するか否かを判定する(ステップS110)。
【0132】
仮想カメラVCが第2仮想空間内に存在する場合(ステップS110:YES)、プロセッサ10は、第2仮想空間内処理を行う(ステップS111)。ステップS111の処理は、仮想カメラVCが第2仮想空間VS2内に存在するときの処理であり、ステップS106で算出された仮想カメラVCの位置に基づいて、仮想カメラVCを第2仮想空間VS2内で制御する処理である。例えば、第2仮想空間VS2内において、仮想カメラVCが仮想ドアVDに近づいた場合(すなわち、仮想カメラVCと仮想ドアVDとが上記所定の位置条件を満たした場合)、仮想カメラVCを第2仮想空間VS2の外に出すための退去処理が行われる。退去処理では、仮想カメラVCが第2仮想空間VS2内に存在することを示すフラグが、OFFに設定される。退去処理が行われると、仮想カメラVCが第2仮想空間VS2の外に出る。仮想カメラVCが第2仮想空間VS2の外に出ると、仮想カメラVCが第2仮想空間VC2内に進入する前の状態に戻る。これにより、スマートフォン1の表示装置15には、カメラ13からの実画像と、仮想空間VSを仮想カメラVCから見た仮想画像とを合成した合成画像が表示される。一方、仮想カメラVCが、仮想ドアVD以外の第2仮想空間VS2の境界に移動した場合(カメラ13が現実空間の上記所定範囲の境界に移動した場合)、仮想カメラVCの移動が制限される。具体的には、カメラ13が現実空間の上記所定範囲を超えて移動しても、仮想カメラVCは第2仮想空間VS2の外に出ず、第2仮想空間VS2の内側と外側との間に設定された仮想的な境界に留められる。
【0133】
ステップS111の処理を行った場合、ステップS110でNOと判定した場合、又は、ステップS105の処理を行った場合、プロセッサ10は、画像出力処理を行う(ステップS112)。具体的には、仮想カメラVCが第2仮想空間VS2の外(すなわち、仮想空間VS)に存在する場合、プロセッサ10は、カメラ13によって撮像された実画像に、仮想カメラVCによって撮像された仮想画像を重畳して、合成画像を生成する。そして、プロセッサ10は、生成した合成画像を表示装置15に出力する。また、仮想カメラVCが第2仮想空間VS2内に存在する場合、プロセッサ10は、仮想カメラVCから第2仮想空間VS2を見た仮想画像を生成し、当該仮想画像を表示装置15に出力する。
【0134】
なお、上記ステップS205で仮想ドアVDが固定された後、ユーザによって所定の解除操作が行われた場合、仮想ドアVDの固定が解除されてもよい。この場合、仮想ドアVDは、再び仮想空間内で移動可能となる。以上でプロセッサ10は、
図23に示す処理を終了する。
【0135】
なお、上記フローチャートで示した処理は単なる例示に過ぎず、処理の順番や内容、判定に用いられて値等は適宜変更されてもよい。
【0136】
以上のように、本実施形態では、カメラ13が移動したり、カメラ13の撮像方向が変化したりすることに応じて、仮想空間内で仮想カメラVCが移動したり、仮想カメラVCの撮像方向が変化したりする。仮想カメラVCの移動や撮像方向の変化に応じて、仮想ドアVDが仮想空間内を移動し、所定のユーザ操作に応じて仮想ドアVDが固定される。
【0137】
具体的には、仮想ドアVDが固定される前は、カメラ13の撮像方向が上下方向に所定の範囲である場合(-b<θ<aである場合)、カメラ13(仮想カメラVC)の撮像方向に連動して仮想ドアVDが上下方向に移動する。また、カメラ13が前後、左右、上下方向に平行移動する場合は、仮想ドアVDも、仮想空間内で同じ方向に平行移動する。そして、所定のユーザ操作に応じて、仮想ドアVDが仮想空間内で固定される。一方、カメラ13の撮像方向が第1閾値aよりも上方向を向いている場合、又は、第2閾値bよりも下方向を向いている場合、仮想ドアVDは、カメラ13の撮像方向に連動して上下方向に移動しない。
【0138】
これにより、仮想ドアVDを移動させて現実空間の所望の位置に擬似的に固定することができるとともに、仮想ドアVDが、高すぎる位置や低すぎる位置に固定されることを防止することができる。ユーザは、仮想ドアVDを通って第2仮想空間VS2に進入することができ、第2仮想空間VS2に入りやすくすることができる。
【0139】
また、仮想ドアVDの底面は、第2仮想空間VS2の仮想床VFと一致し、仮想ドアVDと連続して第2仮想空間VS2が形成される。すなわち、仮想ドアVDは、仮想空間VSと第2仮想空間VS2との境界に位置し、仮想ドアVDの現実空間における高さと、第2仮想空間VS2の現実空間における高さとは一致する。これにより、仮想ドアVDを第2仮想空間VS2への入り口として構成することができ、ユーザは、仮想ドアVDを現実空間に擬似的に固定した後、仮想ドアVDから第2仮想空間VS2に違和感なく進入することができる。
【0140】
また、カメラ13を移動させることで仮想カメラVCを仮想ドアVDに近づけ、仮想カメラVCが、仮想ドアVDの位置に到達した場合に、仮想カメラVCが第2仮想空間VS2内に進入する。これにより、仮想ドアVDを通って第2仮想空間VS2内に進入することができ、現実空間にある仮想ドアVDから第2仮想空間VS2に入る感覚をユーザに与えることができる。
【0141】
また、仮想空間に3次元の仮想オブジェクトとしての仮想ドアVDが配置され、仮想ドアVDは、仮想空間の水平面に垂直な姿勢を維持した状態で仮想空間内で移動される。すなわち、仮想ドアVDは、垂直に立った状態を維持したまま仮想空間内を移動する。これにより、仮想ドアVDが固定された場合に、第2仮想空間VS2が斜めになることなく仮想床VFを水平にすることができる。
【0142】
また、本実施形態では、仮想カメラVCの撮像方向の所定位置に仮想ドアVDが配置される。これにより、例えば現実空間の所定面(床面やテーブル面などの水平面、マーカ等の面)を検出しなくても、仮想ドアVDを仮想空間に配置することができる。カメラ13が移動したり撮像方向が変化した場合でも、カメラ13に連動して仮想ドアVDの位置を制御することができ、当該仮想ドアVDを仮想カメラVCで撮像した仮想画像を表示することができる。
【0143】
(変形例)
以上、本実施形態について説明したが、上記実施形態は単なる一例であり、例えば以下のような変形が加えられてもよい。
【0144】
例えば、上記実施形態では、-b<θ<aの場合、すなわち、水平面に対するカメラ13の撮像方向の角度θが-bよりも大きく、かつ、aよりも小さい場合、仮想カメラVCの撮像方向と仮想カメラVCから仮想ドアVDへの方向である仮想オブジェクト方向とが一致するようにこれらを連動させた。具体的には、カメラ13の撮像方向に応じて、仮想カメラVCの撮像方向を設定するとともに、仮想ドアVDを上下方向に移動させた。他の実施形態では、-b<θ<aの場合、仮想カメラVCの撮像方向と上記仮想オブジェクト方向とが第1連動度で連動するように、カメラ13の撮像方向に応じて、仮想カメラVCの撮像方向と、仮想ドアVDの上下方向の位置とを設定してもよい。ここで、2つの方向が「第1連動度で連動する」とは、2つの方向が常に完全に一致する場合を含む。この場合、仮想カメラVCの撮像方向が変化した場合、その変化量と同じ量だけ上記仮想オブジェクト方向が変化する。また、2つの方向が「第1連動度で連動する」とは、2つの方向が常に完全には一致しないが、所定時間かけて2つの方向が一致する場合を含む。また、2つの方向が「第1連動度で連動する」とは、2つの方向が完全に一致しない場合も含んでもよい。また、2つの方向が「第1連動度で連動する」とは、仮想カメラVCの撮像方向と上記仮想オブジェクト方向とが全く変化しない場合も含む。
【0145】
また、上記実施形態では、θ<-b、又は、θ>aの場合、カメラ13の撮像方向の変化に応じて、仮想ドアVDを移動させないようにした。他の実施形態では、θ<-b、又は、θ>aの場合、仮想カメラVCの撮像方向と仮想カメラVCから仮想ドアVDへの方向である仮想オブジェクト方向とが、第1連動度よりも小さい第2連動度で連動するように、カメラ13の撮像方向に応じて、仮想カメラVCの撮像方向と、仮想ドアVDの上下方向の位置とを設定してもよい。例えば、θ<-b、又は、θ>aの場合でも、仮想ドアVDを移動させてもよい。ここで、「仮想カメラVCの撮像方向と仮想オブジェクト方向とが、第1連動度よりも小さい第2連動度で連動する」とは、-b<θ<aの場合と比較して、カメラ13の撮像方向が変化した場合に、表示装置15から視認される仮想ドアVDが現実空間内で全く動かないように見えること、仮想ドアVDの動く範囲が小さくなること、仮想ドアVDの動く速度が小さくなること等を含む。ここで、「仮想カメラVCの撮像方向と仮想カメラVCから仮想ドアVDへの方向である仮想オブジェクト方向とが、第1連動度よりも小さい第2連動度で連動する」とは、仮想カメラVCの撮像方向が変化した場合に、上記仮想オブジェクト方向が全く変化しないこと、すなわち、仮想カメラVCの撮像方向が変化しても、仮想ドアVDの位置が変化しないことを含む。また、「仮想カメラVCの撮像方向と上記仮想オブジェクト方向とが、第1連動度よりも小さい第2連動度で連動する」とは、仮想カメラVCの撮像方向が変化した場合に、-b<θ<aの場合と比較して、上記仮想オブジェクト方向の変化の度合いが小さくなる(仮想ドアVDの移動量が小さくなる)ことを含む。例えば、θ>aの場合において、カメラ13が上方向に10度変化した場合、仮想カメラVCの撮像方向も上方向に10度変化するが、上記仮想オブジェクト方向は、10度よりも小さい角度(例えば、5度)しか変化しなくてもよい(この場合、仮想ドアVDは、上方向に「5度」に相当する距離だけ移動する)。
【0146】
また、上記実施形態では、カメラ13の撮像方向と仮想カメラVCの撮像方向とを一致させることを前提として、カメラ13(仮想カメラVC)の撮像方向を示す角度θに応じて、仮想ドアVDの位置を仮想空間内で制御した。他の実施形態では、カメラ13の撮像方向を示す角度θが、-b<θ<aを満たす場合には、カメラ13の撮像方向に応じて、仮想カメラVCの撮像方向および仮想ドアVDの位置を変化させないようにしてもよい。また、θ<-b、又は、θ>aの場合には、カメラ13の撮像方向に応じて、仮想カメラVCの撮像方向および仮想ドアVDの位置の何れか一方のみを変化させてもよい。このように制御することで、カメラ13が上方向又は下方向を向き過ぎていない場合には(-b<θ<aの場合には)、仮想カメラVCの撮像方向と、仮想カメラVCから仮想ドアVDへの方向である仮想オブジェクト方向とが一致し、カメラ13の撮像方向の上下方向の変化に追従して仮想ドアVDが上下方向に動いているように見える。一方、カメラ13が上方向又は下方向を向き過ぎている場合には(θ<-b、又は、θ>aの場合には)、仮想カメラVCの撮像方向と仮想オブジェクト方向とが一致せず、カメラ13の撮像方向の上下方向の変化に追従せずに、仮想ドアVDが上下方向に動かないように見える。
【0147】
また、上記実施形態では、カメラ13の姿勢と仮想カメラVCの姿勢とが一致するように、仮想カメラVCの姿勢を設定した。-b<θ<aの場合には、カメラ13の撮像方向に応じて、仮想カメラVCの撮像方向を設定するとともに、仮想ドアVDを移動させることで、仮想カメラVCの撮像方向と仮想カメラVCから仮想ドアVDへの方向である仮想オブジェクト方向とが連動するようにした。他の実施形態では、-b<θ<aの場合において、カメラ13の撮像方向が変化した場合に、仮想ドアVDを移動させずに、仮想カメラVCの撮像方向を変化させるとともに、仮想カメラVCの位置を変化させてもよい。この場合、仮想カメラVCと仮想ドアVDとの相対的な位置関係は変化せず、仮想カメラVCの撮像方向と仮想オブジェクト方向とは変化しない。このため、カメラ13の撮像方向が変化した場合に、カメラ13の動きに追従して仮想ドアVDが動くように見える。また、-b<θ<aの場合において、カメラ13の撮像方向が変化した場合に、仮想カメラVCの撮像方向と仮想ドアVDの位置の両方を変化させてもよい。すなわち、-b<θ<aの場合において、カメラ13の撮像方向が変化した場合に、仮想カメラVCの撮像方向と仮想カメラVCから仮想ドアVDへの方向である仮想オブジェクト方向とが連動するように、仮想カメラVCの撮像方向及び仮想ドアVDの位置の少なくとも何れか一方を制御してもよい。
【0148】
また、上記実施形態では、仮想ドアVDが擬似的に固定されていない場合、現実空間におけるカメラ13の移動に応じて、仮想カメラVCを仮想空間内において移動させるとともに、仮想ドアVDを仮想空間内で移動させた。これにより、仮想ドアVDが擬似的に固定されていない場合、仮想カメラVCと仮想ドアVDとが一定距離Dを保つようにした。他の実施形態では、仮想ドアVDが擬似的に固定されていない場合、カメラ13が移動しても、仮想カメラVC及び仮想ドアVDを仮想空間内で移動させず、仮想カメラVCと仮想ドアVDとの距離を一定に保ってもよい。
【0149】
また、上記実施形態では、現実空間におけるカメラ13の移動に応じて、仮想カメラVCを仮想空間内において移動させることを前提として、仮想空間内で仮想ドアVDを固定することで、仮想ドアVDを現実空間において擬似的に固定した。他の実施形態では、カメラ13が移動した場合に、仮想空間内で仮想カメラVCを固定したまま仮想ドアVDを移動させることで、仮想ドアVDを現実空間において擬似的に固定してもよい。例えば、カメラ13が左方向に移動した場合、同じ移動量だけ仮想ドアVDを仮想空間内で右方向に移動させることで、仮想ドアVDを基準として仮想カメラVCが相対的に左方向に移動することになる。このとき、表示装置15に表示される合成画像における仮想ドアVDは、画面内で右方向に移動する。このように、カメラ13が移動した場合に仮想ドアVDを仮想空間内で移動させても、ユーザに、仮想ドアVDが現実空間の所定位置に固定されているように認識させることができる。また、カメラ13が移動した場合に、仮想カメラVC及び仮想ドアVDの両方を移動させてもよい。また、カメラ13の撮像方向が変化した場合、仮想ドアVDを移動させることで、仮想ドアVDが現実空間に固定されているように見せてもよい。例えば、カメラ13を正面から右方向に向けた場合、仮想空間内で仮想カメラVCから見て仮想ドアVDが左方向に移動するように、仮想ドアVDを左方向に移動させてもよい。また、カメラ13を正面から右方向に向けた場合、仮想空間内で仮想カメラVCから見て仮想ドアVDが左方向に移動するように、仮想ドアVDを固定したまま仮想カメラVCを右方向に向けてもよい。この場合、カメラ13の撮像方向の右方向への変化に応じて、表示装置15に表示される仮想ドアVDは左方向に移動するため、仮想ドアVDが現実空間に固定されているように見える。すなわち、表示装置15に表示される合成画像から視認される仮想ドアVDが、現実空間において擬似的に固定されるように、カメラ13の位置又は撮像方向に応じて、仮想カメラの位置、撮像方向、及び、仮想ドアVDの位置の少なくとも何れか1つを制御してもよい。
【0150】
なお、仮想ドアVDが現実空間において擬似的に固定された後であっても、仮想ドアVDは、多少仮想空間内で動いてもよい。例えば、仮想ドアVDが現実空間において擬似的に固定された後でも、カメラ13の手振れを補正するために、カメラ13の僅かな移動に応じて仮想ドアVDを仮想空間内で僅かに移動させてもよい。
【0151】
また、上記実施形態では、カメラ13の撮像方向が第1閾値よりも上方向を向いている場合と、カメラ13の撮像方向が第2閾値よりも下方向を向いている場合の両方で、上記制限(仮想ドアVDの上下方向への移動の制限)を行った。他の実施形態では、カメラ13の撮像方向が第1閾値よりも上方向を向いている場合と、カメラ13の撮像方向が第2閾値よりも下方向を向いている場合の少なくとも何れか一方の場合において、上記制限を行ってもよい。
【0152】
また、他の実施形態では、仮想ドアVDに限らず、任意の仮想オブジェクトが仮想空間内に配置され、当該仮想オブジェクトについて、上述した仮想ドアVDと同様の処理が行われてもよい。
【0153】
すなわち、情報処理システムは、カメラによって現実空間を逐次撮像した実画像と、仮想空間に配置された仮想カメラによって仮想オブジェクトを逐次撮像した仮想画像とが合成された合成画像を生成し、当該合成画像を表示装置に出力する。第1制御状態において、仮想カメラの撮像方向と当該仮想カメラから仮想オブジェクトへの方向である仮想オブジェクト方向とが第1連動度で連動するように、カメラの撮像方向に応じて、仮想カメラの撮像方向および仮想オブジェクトの位置の少なくとも何れか一方が制御されてもよい。また、ユーザ操作に基づいて、第1制御状態から第2制御状態に変更され、第2制御状態において、合成画像から視認される仮想オブジェクトが現実空間に擬似的に固定されるように、カメラの位置又は撮像方向に応じて、仮想カメラの位置、撮像方向、及び、仮想オブジェクトの位置の少なくとも何れか1つが制御されてもよい。そして、カメラの撮像方向が第1閾値よりも上方向、または、第2閾値よりも下方向を向いている場合には、仮想カメラの撮像方向と上記仮想オブジェクト方向とが第1連動度よりも小さい第2連動度で連動するように、仮想カメラおよび仮想オブジェクトの少なくとも何れか一方が制御されてもよい。
【0154】
また、上記実施形態では、仮想ドアVDが固定されている場合において、仮想カメラVCが仮想ドアVDの位置まで移動した場合に、進入処理を行った。他の実施形態では、仮想カメラVCの位置と、仮想オブジェクトの位置とに関する所定の位置条件が満たされる場合に、上記進入処理が行われてもよい。
【0155】
また、上記実施形態では、進入処理は、仮想カメラVCが仮想ドアVDを通って第2仮想空間VS2内に進入したと判定する処理であり、仮想カメラVCが第2仮想空間VS2内に存在することを示すフラグをONに設定する処理を含む。他の実施形態では、仮想カメラVCの位置と、仮想オブジェクトの位置とに関する所定の位置条件が満たされる場合に、上述した進入処理に限らず、仮想オブジェクトに関するイベント処理が行われてもよい。「仮想オブジェクトに関するイベント処理」は、上記フラグをONにする処理、仮想カメラVCを第2仮想空間VS2内に進入させて第2仮想空間VS2内を表示させる処理、第2仮想空間VS2の内側と外側との間に仮想的な境界を設定する処理、仮想オブジェクトを基準とした第2仮想空間VS2を生成する処理、仮想カメラVCが仮想オブジェクト以外の位置から第2仮想空間VS2の外に出ることを制限する処理等を含んでもよい。また、「仮想オブジェクトに関するイベント処理」は、仮想オブジェクトの表示態様が変化する処理、仮想オブジェクトと他のオブジェクトとが所定の位置関係となる処理(例えば、仮想オブジェクトに他のオブジェクトが接触する処理)等であってもよい。
【0156】
また、上記実施形態では、第2仮想空間VS2は、仮想ドアVDを通して進入可能な小さな部屋であり、当該第2仮想空間内に仮想キャラクタが存在するものとした。他の実施形態では、第2仮想空間VS2は、任意の空間でもよく、例えば、地球上の特定の場所や宇宙空間等を表す仮想空間であってもよい。
【0157】
また、上記実施形態では、加速度センサ及び/又は角速度センサを用いて、カメラ13(スマートフォン1)の姿勢を検出し、カメラ13からの実画像に基づいて、カメラ13の位置を検出した。そして、検出したカメラ13の位置および姿勢に応じて、仮想カメラVCの位置および姿勢を設定した。他の実施形態では、別の方法により、カメラ13(スマートフォン1)の位置および姿勢を検出してもよい。例えば、GPS(Global Positioning System)を用いてカメラ13の位置を検出し、地磁気センサを用いてカメラ13の姿勢(撮像方向)を検出してもよい。また、カメラ13によって撮像された実画像に基づいて、カメラ13の位置および姿勢を検出してもよい。例えば、カメラ13によって撮像された実画像からマーカを検出し、マーカの検出結果に基づいてカメラ13の位置および姿勢を検出してもよい。また、スマートフォン1に固定されたカメラ13に限らず、外部のカメラでスマートフォン1を撮像することで、スマートフォン1の位置や姿勢を検出してもよい。
【0158】
また、上記実施形態では、カメラ13で現実空間を逐次撮像した実画像と、仮想カメラVCで仮想空間を逐次撮像した仮想画像とを合成した合成画像を表示装置15に表示するものとした。他の実施形態では、表示装置はビデオシースルー型の表示装置であってもよい。ユーザは、透過型の表示装置を介して現実空間を視認するとともに、透過型の表示装置に表示された仮想画像を視認する。このように透過型の表示装置を用いて、ユーザに現実空間と仮想画像とを合成した合成画像を視認させてもよい。
【0159】
また、上記実施形態では、カメラと表示装置と上述した処理を行うプロセッサとが一体となったスマートフォン1が用いられた。スマートフォン1は、情報処理システムの単なる一例である。例えば、カメラと表示装置とプロセッサとがそれぞれ分離された情報処理システムが用いられてもよい。また、カメラ及びプロセッサが一体となった装置と、当該装置とは別体の表示装置とによって、情報処理システムが構成されてもよい。また、カメラ及び表示装置が一体となった装置と、当該装置とは別体のプロセッサを有する装置とによって、情報処理システムが構成されてもよい。また、カメラ、表示装置、プロセッサがネットワーク(LANやインターネット等)を介して接続されて、情報処理システムが構成されてもよい。
【0160】
また上記実施形態及びその変形例に係る構成は、互いに矛盾しない限り、任意に組み合わせることが可能である。また、上記は本発明の例示に過ぎず、上記以外にも種々の改良や変形が加えられてもよい。
【符号の説明】
【0161】
1 スマートフォン
10 プロセッサ
13 カメラ
14 姿勢検出センサ
15 表示装置
VC 仮想カメラ
VD 仮想ドア