IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 任天堂株式会社の特許一覧

特許7257370情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
<>
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図1
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図2
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図3
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図4
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図5
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図6
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図7
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図8
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図9
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図10
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図11
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図12
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図13
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図14
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図15
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図16
  • 特許-情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-04-05
(45)【発行日】2023-04-13
(54)【発明の名称】情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
(51)【国際特許分類】
   G06T 19/00 20110101AFI20230406BHJP
   A63F 13/655 20140101ALI20230406BHJP
   A63F 13/428 20140101ALI20230406BHJP
   A63F 13/525 20140101ALI20230406BHJP
   G06F 3/04845 20220101ALI20230406BHJP
【FI】
G06T19/00 600
A63F13/655
A63F13/428
A63F13/525
G06F3/04845
【請求項の数】 14
(21)【出願番号】P 2020191511
(22)【出願日】2020-11-18
(65)【公開番号】P2022080441
(43)【公開日】2022-05-30
【審査請求日】2021-07-19
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】100158780
【弁理士】
【氏名又は名称】寺本 亮
(74)【代理人】
【識別番号】100121359
【弁理士】
【氏名又は名称】小沢 昌弘
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】堀田 順平
(72)【発明者】
【氏名】新田 昌弘
(72)【発明者】
【氏名】泉水 一慶
(72)【発明者】
【氏名】大田 康晴
(72)【発明者】
【氏名】魚澤 純樹
【審査官】橘 高志
(56)【参考文献】
【文献】米国特許出願公開第2019/0197779(US,A1)
【文献】米国特許出願公開第2020/0302681(US,A1)
【文献】米国特許出願公開第2020/0265638(US,A1)
【文献】米国特許第10475248(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
A63F 13/655
A63F 13/428
A63F 13/525
G06F 3/04845
(57)【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記コンピュータを、
更新間隔毎に現実空間を撮影して撮影画像を生成する撮影装置の位置および姿勢を含む撮影状態を検出する撮影状態検出手段と、
前記撮影画像において、少なくとも1つの平面、マーカ、立体形状、および文字のうちいずれかの特徴部分が検出されたことに基づき、仮想空間における仮想基準面仮想カメラ相対位置および相対姿勢を少なくとも更新する第1更新手段と、
少なくとも前記撮影状態に基づき、前記仮想空間における仮想オブジェクト前記仮想カメラ相対位置および相対姿勢を少なくとも更新する第2更新手段と、
前記仮想オブジェクトが前記仮想カメラの視野範囲に含まれる場合に、前記撮影画像に当該仮想カメラから見た当該仮想オブジェクトの画像を重畳した重畳画像を生成する画像生成手段と、
前記重畳画像を表示装置に出力する画像出力手段として機能させ、
前記第2更新手段は、
前記特徴部分が検出される前は、前記仮想オブジェクトが前記仮想カメラの視野範囲内に入るように、前記仮想カメラおよび前記仮想オブジェクトの少なくとも1つについて位置および姿勢を制御し、
前記特徴部分が検出された後は、前記撮影状態に基づき、前記仮想オブジェクトが前記仮想基準面に沿うように、前記仮想オブジェクト、前記仮想基準面、および前記仮想カメラの少なくとも1つについて位置を更新し、
前記特徴部分が検出されたか否かにかかわらず、配置固定条件が満たされた場合、前記仮想カメラと前記仮想オブジェクトとの相対姿勢および相対位置に基づく当該仮想オブジェクトの当該仮想カメラからの見え方が前記撮影状態と連動するように、前記仮想オブジェクト、前記仮想基準面、および前記仮想カメラの少なくとも1つについて位置および姿勢を更新する、情報処理プログラム。
【請求項2】
前記第1更新手段は、前記撮影画像において現実空間における平面を示す前記特徴部分が検出されたことに基づき、前記平面の位置および姿勢と、前記仮想基準面の位置および姿勢が前記重畳画像において一致するように、前記仮想基準面および前記仮想カメラの少なくとも1つについて位置及び姿勢を更新する、請求項1に記載の情報処理プログラム。
【請求項3】
前記第2更新手段は、前記特徴部分が検出される前は、前記撮影装置の姿勢に応じて、前記仮想オブジェクトおよび前記仮想カメラの少なくとも1つについて姿勢を更新する、請求項1または2に記載の情報処理プログラム。
【請求項4】
前記第2更新手段は、前記特徴部分が検出された後は、前記仮想基準面に前記仮想オブジェクトの影を示す影オブジェクトを配置する、請求項1乃至3の何れか1つに記載の情報処理プログラム。
【請求項5】
前記第2更新手段は、前記特徴部分が検出されたか否かにかかわらず、前記配置固定条件が満たされた場合、前記撮影装置の位置が第1変化量だけ変化したことに応じて、当該第1変化量に比例する第2変化量だけ、前記仮想カメラと前記仮想オブジェクトとの相対位置が変化するように、前記仮想オブジェクトおよび前記仮想カメラの少なくとも1つについて位置を更新する、請求項1乃至4の何れか1つに記載の情報処理プログラム。
【請求項6】
前記第2更新手段は、前記特徴部分が検出されたか否かにかかわらず、前記配置固定条件が満たされた場合、前記撮影装置の姿勢が第3の変化量だけ変化したことに応じて、前記仮想カメラの姿勢の方向と当該仮想カメラから前記仮想オブジェクトへの方向との相対方向が当該第3の変化量だけ変化するように、前記仮想オブジェクトの姿勢および前記仮想カメラの姿勢の少なくとも1つを更新する、請求項1乃至5の何れか1つに記載の情報処理プログラム。
【請求項7】
前記第2更新手段は、前記配置固定条件が満たされる前と後とで、前記仮想オブジェクトの表示態様を変化させる、請求項1乃至6の何れか1つに記載の情報処理プログラム。
【請求項8】
前記第2更新手段は、前記特徴部分が検出される前と後とで、前記仮想オブジェクトの表示態様を変化させる、請求項1乃至7の何れかに記載の情報処理プログラム。
【請求項9】
ユーザの第1指示入力に応じて、前記仮想オブジェクトのアクションを変更するアクション変更手段として、さらに前記コンピュータを機能させる、請求項1乃至8の何れかに記載の情報処理プログラム。
【請求項10】
前記第2更新手段は、前記配置固定条件が満たされた後に、ユーザの第2指示入力に応じて、前記仮想オブジェクトを前記仮想基準面に垂直な軸周りに回転させる、または前記仮想カメラを前記仮想オブジェクトの位置を中心として当該仮想基準面に垂直な軸周りに回転させる、請求項1乃至9の何れかに記載の情報処理プログラム。
【請求項11】
前記第1更新手段は、前記撮影画像において特徴部分が検出されたことに基づき、前記仮想カメラの位置および姿勢を更新し、
前記第2更新手段は、前記特徴部分が検出されたか否かにかかわらず、前記配置固定条件が満たされた場合、前記仮想カメラの位置および姿勢が前記撮影状態と連動するように、前記仮想カメラの位置および姿勢を更新する、請求項1乃至10の何れか1つに記載の情報処理プログラム。
【請求項12】
更新間隔毎に現実空間を撮影して撮影画像を生成する撮影装置の位置および姿勢を含む撮影状態を検出する撮影状態検出手段と、
前記撮影画像において、少なくとも1つの平面、マーカ、立体形状、および文字のうちいずれかの特徴部分が検出されたことに基づき、仮想空間における仮想基準面仮想カメラ相対位置および相対姿勢を少なくとも更新する第1更新手段と、
少なくとも前記撮影状態に基づき、前記仮想空間における仮想オブジェクト前記仮想カメラ相対位置および相対姿勢を少なくとも更新する第2更新手段と、
前記仮想オブジェクトが前記仮想カメラの視野範囲に含まれる場合に、前記撮影画像に当該仮想カメラから見た当該仮想オブジェクトの画像を重畳した重畳画像を生成する画像生成手段と、
前記重畳画像を表示装置に出力する画像出力手段とを備え、
前記第2更新手段は、
前記特徴部分が検出される前は、前記仮想オブジェクトが前記仮想カメラの視野範囲内に入るように、前記仮想カメラおよび前記仮想オブジェクトの少なくとも1つについて位置および姿勢を制御し、
前記特徴部分が検出された後は、前記撮影状態に基づき、前記仮想オブジェクトが前記仮想基準面に沿うように、前記仮想オブジェクト、前記仮想基準面、および前記仮想カメラの少なくとも1つについて位置を更新し、
前記特徴部分が検出されたか否かにかかわらず、配置固定条件が満たされた場合、前記仮想カメラと前記仮想オブジェクトとの相対姿勢および相対位置に基づく当該仮想オブジェクトの当該仮想カメラからの見え方が前記撮影状態と連動するように、前記仮想オブジェクト、前記仮想基準面、および前記仮想カメラの少なくとも1つについて位置および姿勢を更新する、情報処理装置。
【請求項13】
更新間隔毎に現実空間を撮影して撮影画像を生成する撮影装置の位置および姿勢を含む撮影状態を検出する撮影状態検出手段と、
前記撮影画像において、少なくとも1つの平面、マーカ、立体形状、および文字のうちいずれかの特徴部分が検出されたことに基づき、仮想空間における仮想基準面仮想カメラ相対位置および相対姿勢を少なくとも更新する第1更新手段と、
少なくとも前記撮影状態に基づき、前記仮想空間における仮想オブジェクト前記仮想カメラ相対位置および相対姿勢を少なくとも更新する第2更新手段と、
前記仮想オブジェクトが前記仮想カメラの視野範囲に含まれる場合に、前記撮影画像に当該仮想カメラから見た当該仮想オブジェクトの画像を重畳した重畳画像を生成する画像生成手段と、
前記重畳画像を表示装置に出力する画像出力手段とを備え、
前記第2更新手段は、
前記特徴部分が検出される前は、前記仮想オブジェクトが前記仮想カメラの視野範囲内に入るように、前記仮想カメラおよび前記仮想オブジェクトの少なくとも1つについて位置および姿勢を制御し、
前記特徴部分が検出された後は、前記撮影状態に基づき、前記仮想オブジェクトが前記仮想基準面に沿うように、前記仮想オブジェクト、前記仮想基準面、および前記仮想カメラの少なくとも1つについて位置を更新し、
前記特徴部分が検出されたか否かにかかわらず、配置固定条件が満たされた場合、前記仮想カメラと前記仮想オブジェクトとの相対姿勢および相対位置に基づく当該仮想オブジェクトの当該仮想カメラからの見え方が前記撮影状態と連動するように、前記仮想オブジェクト、前記仮想基準面、および前記仮想カメラの少なくとも1つについて位置および姿勢を更新する、情報処理システム。
【請求項14】
更新間隔毎に現実空間を撮影して撮影画像を生成する撮影装置の位置および姿勢を含む撮影状態を検出する撮影状態検出ステップと、
前記撮影画像において、少なくとも1つの平面、マーカ、立体形状、および文字のうちいずれかの特徴部分が検出されたことに基づき、仮想空間における仮想基準面仮想カメラ相対位置および相対姿勢を少なくとも更新する第1更新ステップと、
少なくとも前記撮影状態に基づき、前記仮想空間における仮想オブジェクト前記仮想カメラ相対位置および相対姿勢を少なくとも更新する第2更新ステップと、
前記仮想オブジェクトが前記仮想カメラの視野範囲に含まれる場合に、前記撮影画像に当該仮想カメラから見た当該仮想オブジェクトの画像を重畳した重畳画像を生成する画像生成ステップと、
前記重畳画像を表示装置に出力する画像出力ステップとを含み、
前記第2更新ステップでは、
前記特徴部分が検出される前は、前記仮想オブジェクトが前記仮想カメラの視野範囲内に入るように、前記仮想カメラおよび前記仮想オブジェクトの少なくとも1つについて位置および姿勢が制御され、
前記特徴部分が検出された後は、前記撮影状態に基づき、前記仮想オブジェクトが前記仮想基準面に沿うように、前記仮想オブジェクト、前記仮想基準面、および前記仮想カメラの少なくとも1つについて位置が更新され、
前記特徴部分が検出されたか否かにかかわらず、配置固定条件が満たされた場合、前記仮想カメラと前記仮想オブジェクトとの相対姿勢および相対位置に基づく当該仮想オブジェクトの当該仮想カメラからの見え方が前記撮影状態と連動するように、前記仮想オブジェクト、前記仮想基準面、および前記仮想カメラの少なくとも1つについて位置および姿勢が更新される、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関し、特に例えば、現実空間を撮影した画像に仮想オブジェクトの画像を重畳させて表示する処理を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【0002】
従来、現実空間を撮影した撮影画像において、当該現実空間に配置されたマーカーを検出した後、当該マーカーに応じた表示基準情報に基づいて仮想オブジェクトを重畳表示する画像処理装置がある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2014-71877号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載された画像処理装置は、撮影画像内の特徴部分(マーカー)が検出されるまでの間、仮想オブジェクトを仮想空間内に配置して重畳表示することができなかった。
【0005】
それ故に、本発明の目的は、現実空間を撮影した撮影画像に仮想オブジェクトを重畳表示するまでのレスポンスを向上させることを可能とする情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は例えば以下のような構成を採用し得る。
【0007】
本発明の情報処理プログラムの一構成例は、情報処理装置のコンピュータにおいて実行される。情報処理プログラムは、撮影状態検出手段、第1更新手段、第2更新手段、画像生成手段、および画像出力手段として、コンピュータを機能させる。撮影状態検出手段は、更新間隔毎に現実空間を撮影して撮影画像を生成する撮影装置の位置および姿勢を含む撮影状態を検出する。第1更新手段は、撮影画像において特徴部分が検出されたことに基づき、仮想空間における仮想基準面および仮想カメラの少なくとも1つについて位置および姿勢を更新する。第2更新手段は、撮影状態に基づき、仮想空間における仮想オブジェクトおよび仮想カメラの少なくとも1つについて位置および姿勢を更新する。画像生成手段は、仮想オブジェクトが仮想カメラの視野範囲に含まれる場合に、撮影画像に当該仮想カメラから見た当該仮想オブジェクトの画像を重畳した重畳画像を生成する。画像出力手段は、重畳画像を表示装置に出力する。第2更新手段は、特徴部分が検出される前は、仮想オブジェクトが仮想カメラの視野範囲内に入るように、仮想カメラおよび仮想オブジェクトの少なくとも1つについて位置および姿勢を制御し、特徴部分が検出された後は、撮影状態に基づき、仮想オブジェクトが仮想基準面に沿うように、仮想オブジェクト、仮想基準面、および仮想カメラの少なくとも1つについて位置を更新し、特徴部分が検出されたか否かにかかわらず、配置固定条件が満たされた場合、仮想カメラと仮想オブジェクトとの相対姿勢および相対位置に基づく当該仮想オブジェクトの当該仮想カメラからの見え方が撮影状態と連動するように、仮想オブジェクト、仮想基準面、および仮想カメラの少なくとも1つについて位置および姿勢を更新する。
【0008】
上記によれば、撮影画像において特徴部分が検出される前であっても、当該撮影画像に仮想オブジェクトを重畳して表示することができるため、仮想オブジェクトを重畳表示するまでのレスポンスを向上させることができる。
【0009】
また、上記第1更新手段は、撮影画像において現実空間における平面を示す特徴部分が検出されたことに基づき、平面の位置および姿勢と、仮想基準面の位置および姿勢が重畳画像において一致するように、仮想基準面および仮想カメラの少なくとも1つについて位置及び姿勢を更新してもよい。
【0010】
上記によれば、撮影画像に撮影されている平面を用いて、仮想オブジェクトを重畳表示することができる。
【0011】
また、上記第2更新手段は、特徴部分が検出される前は、撮影装置の姿勢に応じて、仮想オブジェクトおよび仮想カメラの少なくとも1つについて姿勢を更新してもよい。
【0012】
上記によれば、撮影画像において特徴部分が検出される前であっても、撮影装置を動かすことによって仮想オブジェクトの見え方を変化させることができる。
【0013】
また、上記第2更新手段は、特徴部分が検出された後は、仮想基準面に仮想オブジェクトの影を示す影オブジェクトを配置してもよい。
【0014】
上記によれば、影オブジェクトを重畳表示することによって、特徴部分に基づいて設定された仮想基準面の存在をユーザに示すことができる。また、影オブジェクトを重畳表示することによって、仮想オブジェクトが仮想基準面に沿って配置されたことをユーザに示すことができる。
【0015】
また、上記第2更新手段は、特徴部分が検出されたか否かにかかわらず、配置固定条件が満たされた場合、撮影装置の位置が第1変化量だけ変化したことに応じて、当該第1変化量に比例する第2変化量だけ、仮想カメラと仮想オブジェクトとの相対位置が変化するように、仮想オブジェクトおよび仮想カメラの少なくとも1つについて位置を更新してもよい。
【0016】
上記によれば、現実空間と仮想空間とのスケール比に応じて位置が変化するため、現実空間における撮影装置の動きと同様に仮想空間の仮想オブジェクトや仮想カメラを移動させた様子を重畳画像で表現することができる。
【0017】
また、上記第2更新手段は、特徴部分が検出されたか否かにかかわらず、配置固定条件が満たされた場合、撮影装置の姿勢が第3の変化量だけ変化したことに応じて、仮想カメラの姿勢の方向と当該仮想カメラから仮想オブジェクトへの方向との相対方向が当該第3の変化量だけ変化するように、仮想オブジェクトの姿勢および仮想カメラの姿勢の少なくとも1つを更新してもよい。
【0018】
上記によれば、現実空間における撮影装置の姿勢変化量と同じ量だけ仮想空間の仮想オブジェクトや仮想カメラの姿勢を変化させる様子を、重畳画像で表現することができる。
【0019】
また、上記第2更新手段は、配置固定条件が満たされる前と後とで、仮想オブジェクトの表示態様を変化させてもよい。
【0020】
上記によれば、配置固定条件が満たされているか否かを、ユーザに示すことができる。
【0021】
また、上記第2更新手段は、特徴部分が検出される前と後とで、仮想オブジェクトの表示態様を変化させてもよい。
【0022】
上記によれば、撮影画像から特徴部分が検出されたか否かを、ユーザに示すことができる。
【0023】
また、上記情報処理プログラムは、アクション変更手段として、さらにコンピュータを機能させてもよい。アクション変更手段は、ユーザの第1指示入力に応じて、仮想オブジェクトのアクションを変更する。
【0024】
上記によれば、ユーザが可能な操作のバリエーションを増やすことができる。
【0025】
また、上記第2更新手段は、配置固定条件が満たされた後に、ユーザの第2指示入力に応じて、仮想オブジェクトを仮想基準面に垂直な軸周りに回転させる、または仮想カメラを仮想オブジェクトの位置を中心として当該仮想基準面に垂直な軸周りに回転させてもよい。
【0026】
上記によれば、ユーザ操作に応じて、さらに重畳表示される仮想オブジェクトの姿勢を変化させることができる。
【0027】
また、上記第1更新手段は、撮影画像において特徴部分が検出されたことに基づき、仮想カメラの位置および姿勢を更新してもよい。上記第2更新手段は、特徴部分が検出されたか否かにかかわらず、配置固定条件が満たされた場合、仮想カメラの位置および姿勢が撮影状態と連動するように、仮想カメラの位置および姿勢を更新してもよい。
【0028】
上記によれば、現実空間の撮影装置の動きと連動するように仮想空間の仮想カメラが動くため、あたかも現実空間内に仮想オブジェクトが存在するような感覚を、さらにユーザに与えることができるとともに、仮想カメラの制御が容易となる。
【0029】
また、本発明は、情報処理装置、情報処理システム、および情報処理方法の形態で実施されてもよい。
【発明の効果】
【0030】
本発明によれば、仮想オブジェクトを撮影画像に重畳表示するまでのレスポンスを向上させることができる。
【図面の簡単な説明】
【0031】
図1】本発明の一実施例に係る情報処理システム1の一例を示す図
図2】情報処理装置3の構成の一例を示すブロック図
図3】サーバ200の構成の一例を示すブロック図
図4】撮影画像における平面検出前に、ユーザが把持する情報処理装置3の表示部35に表示されるゲーム画像例を示す図
図5】撮影画像における平面検出後に、ユーザが把持する情報処理装置3の表示部35に表示されるゲーム画像例を示す図
図6】仮想基準面上にプレイヤオブジェクトPOを設定して撮影画像に重畳したゲーム画像例を示す図
図7】仮想基準面上にプレイヤオブジェクトPOを配置固定して撮影画像に重畳表示したゲーム画像例を示す図
図8】仮想基準面上にプレイヤオブジェクトPOを配置固定した状態で情報処理装置3の位置を動かした場合のゲーム画像例を示す図
図9】仮想基準面上にプレイヤオブジェクトPOを配置固定した状態でプレイヤオブジェクトPOを回転させる操作を行った場合のゲーム画像例を示す図
図10】仮想空間におけるプレイヤオブジェクトPOと仮想カメラとの位置関係の例を示す図
図11】仮想基準面上とは異なる位置にプレイヤオブジェクトPOを配置固定して撮影画像に重畳表示したゲーム画像例を示す図
図12】撮影画像における平面検出前に、ユーザが把持する情報処理装置3の表示部35に表示されるゲーム画像の他の例を示す図
図13】情報処理装置3の記憶部32に記憶される主なデータおよびプログラムの一例を示す図
図14】情報処理装置3において実行される処理の一例を示すフローチャート
図15図14のステップS108における第1画像生成処理の詳細な一例を示すサブルーチン
図16図14のステップS109における第2画像生成処理の詳細な一例を示すサブルーチン
図17図14のステップS110における第3画像生成処理の詳細な一例を示すサブルーチン
【発明を実施するための形態】
【0032】
図1を参照して、本発明の一実施例に係る情報処理システムについて説明する。図1に示すように、当該情報処理システムの一例である情報処理システム1は、情報処理装置3およびサーバ200が、ネットワーク100を介して接続されて構築される。なお、図1においては、情報処理装置3が複数台図示されているが、情報処理システム1を構成する情報処理装置3は、1台であってもよい。
【0033】
情報処理装置3は、無線または有線通信を用いて、ネットワーク100に接続可能に構成され、サーバ200との間でクライアント-サーバシステムを構成している。例えば、情報処理装置3は、所定のアプリケーション(例えば、ゲームアプリケーション)の実行が可能である。また、情報処理装置3は、上記所定のアプリケーションを実行することによって、ネットワーク100を介して、サーバ200と接続を確立して、サーバ200との通信が可能となる。例えば、情報処理装置3は、交換可能なメモリカードや光ディスク等の記憶媒体内に記憶され、または、他の装置から受信した情報処理プログラムを実行可能である。情報処理装置3は、一般的なパーソナルコンピュータ、据置型ゲーム機、携帯電話機(スマートフォン)、携帯ゲーム機、PDA(Personal Digital Assistant)等のデバイスでもよく、少なくとも1つの入力装置や表示装置が本体とは別に設けられていてもよい。
【0034】
次に、図2を参照して、情報処理装置3について説明する。なお、図2は、情報処理装置3の構成の一例を示すブロック図である。図2において、情報処理装置3は、制御部31、記憶部32、プログラム格納部33、入力部34、表示部35、通信部36、慣性センサ37、および撮影部38を備える。なお、情報処理装置3は、制御部31を少なくとも含む情報処理装置と他の装置とを含む1以上の装置によって構成されてもよい。
【0035】
制御部31は、各種の情報処理を実行するための情報処理手段(コンピュータ)であり、例えばCPUである。例えば、制御部31は、各種の情報処理として、上記アプリケーションを実行して、後述するゲーム処理やサーバ200を介したデータ送受信処理等を実行する機能を有し、CPUが所定のプログラムを実行することによって、制御部31における各機能が実現される。
【0036】
記憶部32は、制御部31が上記情報処理を実行する際に用いる各種のデータを記憶する。記憶部32は、例えばCPU(制御部31)がアクセス可能なメモリである。
【0037】
プログラム格納部33は、プログラムを記憶(格納)する。プログラム格納部33は、制御部31がアクセス可能な記憶装置(記憶媒体)であればどのようなものであってもよい。例えば、プログラム格納部33は、制御部31を含む情報処理装置内に設けられる記憶装置であってもよいし、制御部31を含む情報処理装置に着脱自在に装着される記憶媒体であってもよい。また、プログラム格納部33は、制御部31とネットワークを介して接続される記憶装置(サーバ等)であってもよい。制御部31(CPU)は、ゲームプログラムの一部または全部を適宜のタイミングで記憶部32に読み出し、読み出されたプログラムを実行するようにしてもよい。
【0038】
入力部34は、ユーザによって操作可能な入力装置である。入力部34はどのような入力装置であってもよい。一例として、入力部34は、表示部35の画面上に設けられるタッチパネルでもよい。例えば、タッチパネルは、任意の種類のものであってよく、マルチタッチ入力が可能な方式(例えば、静電容量方式)のものやシングルタッチ入力が可能な方式(例えば、抵抗膜方式)のものであってもよい。
【0039】
表示部35は、制御部31の指示にしたがって画像を表示する。なお、情報処理装置3が据置型のゲーム装置やパーソナルコンピュータで構成される場合、表示部35が情報処理装置3と別体で構成されることもあり得る。本実施例においては、表示部35は、その表面にタッチパネル(入力部34)が設けられたタッチスクリーンで構成され、第1辺が第2辺より長い矩形の表示領域およびタッチ領域を有している。
【0040】
通信部36は、所定の通信モジュールによって構成され、ネットワーク100を介して他の機器(例えば、サーバ200)との間でデータを送受信したり、他の情報処理装置3との間でデータを送受信したりする。
【0041】
慣性センサ37は、情報処理装置3本体の姿勢や動きを検出するものであり、一例として加速度センサおよび/または角速度センサによって構成される。例えば、加速度センサは、情報処理装置3(表示部35)における互いに直交する3軸方向に沿った加速度の大きさを検出する。なお、加速度センサは、1軸方向あるいは2軸方向の加速度を検出するものであってもよい。また、角速度センサは、上記3軸回りの角速度を検出する。なお、角速度センサは、1軸回りあるいは2軸回りの角速度を検出するものであってもよい。慣性センサ37は、制御部31に接続され、加速度センサおよび/または角速度センサの検出結果が制御部31へ出力される。制御部31は、上記の慣性センサ37の検出結果に基づいて、情報処理装置3(表示部35、撮影部38)の動きおよび/または姿勢に関する情報を算出することが可能であり、一例として実空間における重力方向に対する情報処理装置3(表示部35、撮影部38)の姿勢を算出することが可能である。
【0042】
撮影部38は、表示部35の裏面(表示部35が設けられた面とは反対側の面)に少なくとも1つ設けられ、情報処理装置3に内蔵される撮影装置(カメラ)として機能する。撮影部38の撮影方向は、表示部35の表示画面の奥行方向である。撮影部38は、所定の解像度を有する撮像素子(例えば、CCDイメージセンサやCMOSイメージセンサ等)と、レンズとを含む。レンズは、ズーム機構を有するものでもよい。撮影部38は、制御部31に接続され、制御部31の指示にしたがって上記撮影方向の現実空間を撮影し、撮影した撮影画像データを制御部31に出力する。そして、制御部31は、撮影部38から取得した撮影画像を即時に表示部35に表示させることができる。
【0043】
次に、図3を参照して、サーバ200について説明する。なお、図3は、サーバ200の構成の一例を示すブロック図である。
【0044】
サーバ200は、通信部201、制御部202、および記憶部203を有している。通信部201は、通信パケットの送受信を行うことで、ネットワーク100を介して情報処理装置3等と通信を行う。一例として、制御部202は、情報処理装置3との間で行われるゲーム進行の管理、ユーザが購入するゲーム内通貨、ゲームアイテム(例えば、コイン)、ゲームオブジェクト(例えば、ゲームに登場するキャラクタやゲーム内で使用される装備)等を管理する処理、課金に関する情報を管理する処理のほか、通信部201を介して情報処理装置3等との通信リンクを確立し、ネットワーク100におけるデータ搬送制御や経路選択を行う。また、制御部202は、複数の情報処理装置3との間でゲームを行う場合、当該ゲームを行う情報処理装置3の組み合わせや当該情報処理装置3の間のデータ通信の管理を行う。記憶部203は、制御部202で実行されるプログラム、上記処理に必要な各種データ、情報処理装置3との通信に必要な各種データ等が記憶される。なお、ネットワーク100を用いたデータ送受信に所定のログイン処理が必要なシステムである場合、当該ログインしようとしているユーザが正規のユーザか否かを判別する認証処理をサーバ200において行ってもかまわない。また、サーバ200は、単一のサーバマシンから構成されてもいいし、複数のサーバマシンによって構成されてもよい。
【0045】
次に、情報処理装置3やサーバ200が行う具体的な処理を説明する前に、図4図12を用いて情報処理システム1において行われるゲーム処理例の概要について説明する。なお、図4は、撮影画像における平面検出前に、ユーザが把持する情報処理装置3の表示部35に表示されるゲーム画像例を示す図である。図5は、撮影画像における平面検出後に、ユーザが把持する情報処理装置3の表示部35に表示されるゲーム画像例を示す図である。図6は、仮想基準面上にプレイヤオブジェクトPOを設定して撮影画像に重畳したゲーム画像例を示す図である。図7は、仮想基準面上にプレイヤオブジェクトPOを配置固定して撮影画像に重畳表示したゲーム画像例を示す図である。図8は、仮想基準面上にプレイヤオブジェクトPOを配置固定した状態で情報処理装置3の位置を動かした場合のゲーム画像例を示す図である。図9は、仮想基準面上にプレイヤオブジェクトPOを配置固定した状態でプレイヤオブジェクトPOを回転させる操作を行った場合のゲーム画像例を示す図である。図10は、仮想空間におけるプレイヤオブジェクトPOと仮想カメラとの位置関係の例を示す図である。図11は、仮想基準面上とは異なる位置にプレイヤオブジェクトPOを配置固定して撮影画像に重畳表示したゲーム画像例を示す図である。図12は、撮影画像における平面検出前に、ユーザが把持する情報処理装置3の表示部35に表示されるゲーム画像の他の例を示す図である。なお、以下の説明では、情報処理装置3において実行するアプリケーションの一例としてゲームを用いているが、情報処理装置3において他のアプリケーションを実行してもかまわない。
【0046】
図4において、本実施例におけるゲーム処理では、撮影部38によって現在撮影されている現実世界の画像と、3次元の仮想空間に存在するプレイヤオブジェクトPOの画像(仮想空間画像)とを重畳した重畳画像が、表示部35の表示画面に表示される。後述により明らかとなるが、本実施例では、撮影部38によって撮影された撮影画像において検出される現実世界における平面(例えば、現実世界の水平面であり、図4の例では、床面や机面)上に配置されているようにプレイヤオブジェクトPOの画像を重畳して、表示部35に表示することが可能である。しかしながら、上記撮影画像において上記平面が検出されるまでの間においては、本実施例では、プレイヤオブジェクトPOが表示部35の表示画面内に表示されるように、上記撮影画像に重畳されて表示部35に表示される。例えば、図4に示すように、プレイヤオブジェクトPOが正面を向けた姿勢で表示部35の表示画面の中央に表示されるように、上記撮影画像に重畳されて表示部35に表示される。
【0047】
図5に示すように、撮影部38によって撮影された撮影画像において現実世界における平面(例えば、床面)が検出された場合、当該平面上にプレイヤオブジェクトPOの影を示す影オブジェクトSを配置して、当該撮影画像に重畳して表示する。具体的には、上記撮影画像において上記平面が検出された場合、当該撮影画像における当該平面の位置、および姿勢と、当該撮影画像に重畳される仮想空間画像における仮想基準面の位置、および姿勢とが重畳画像(合成画像)において一致するように、当該仮想基準面が設定される。そして、上記仮想空間画像において、プレイヤオブジェクトPOの真下となる上記仮想基準面上の位置に当該仮想基準面に沿ってプレイヤオブジェクトPOの影を示す影オブジェクトSが貼り付けられ、上記撮影画像に当該仮想空間画像が重畳されて表示される。このように撮影画像において平面が検出されたことに応じて、影オブジェクトSを表示することによって、情報処理装置3のユーザに当該平面が検出されたことを通知できるとともに、撮影画像において検出された平面の位置をユーザに認識させることができる。なお、影オブジェクトSは、プレイヤオブジェクトPOのサイズや形状に基づいた形状の影を示すものであってもよいし、固定サイズの円形や楕円形の影を示すものであってもよい。また、撮影画像において平面を検出する方法については、既存の平面検出機能を用いればよい。一例として、撮影画像における特徴点を、撮影部38を動かして異なるタイミングで撮影することによって得た視点が異なる複数の撮影画像間で対応させ、当該対応付けた特徴点において幾何学的な計算(例えば、射影変換)を用いることによって、撮影画像内において平面および当該平面の境界を検出してもよい。
【0048】
図6に示すように、表示部35に表示されているプレイヤオブジェクトPOを影オブジェクトS上、すなわち仮想空間画像に設定されている仮想基準面上に配置して、上記撮影画像に重畳して表示することができる。例えば、表示部35の表示画面の中央にプレイヤオブジェクトPOが表示されるようにプレイヤオブジェクトPOの表示位置が固定されている場合、現実世界において検出されている平面(例えば、床面)に撮影部38の撮影方向が向くように、情報処理装置3の位置および/または姿勢を変化させることによって、プレイヤオブジェクトPOを撮影画像における上記平面上となる位置に表示させることができる。このとき、当該撮影画像に重畳される仮想空間画像では、仮想空間におけるプレイヤオブジェクトPOが仮想基準面に貼り付けられている影オブジェクトS上に配置されるように移動していることになり、当該仮想基準面より下方(すなわち、影オブジェクトSの下方)にはプレイヤオブジェクトPOが進入しないように制御される。このように撮影画像において検出された平面上に影オブジェクトSを表示することによって、プレイヤオブジェクトPOが平面上に配置された場合に影オブジェクトS上に配置されるため、プレイヤオブジェクトPOが当該平面上に配置されていることを情報処理装置3のユーザにわかりやすく示すことができる。
【0049】
ここで、仮想基準面上にプレイヤオブジェクトPOが配置されたとしても、当該配置位置にプレイヤオブジェクトPOが固定された状態ではなく、表示部35の表示画面中央付近に正面を向いた姿勢でプレイヤオブジェクトPOが表示される。したがって、現実空間において撮影部38の撮影位置および/または姿勢が変化した場合、当該変化に応じて撮影画像内をプレイヤオブジェクトPOが仮想基準面に沿って移動するように表示される。また、現実空間において撮影部38の撮影方向が変化した場合、プレイヤオブジェクトPOが正面を向いて(すなわち、撮影部38に正面を向けて)表示される状態が継続するため、結果的に当該撮影方向の変化に応じて撮影画像で撮像されている現実空間においてプレイヤオブジェクトPOの向きが変化するように表示されることになる。なお、撮影方向の変化によるプレイヤオブジェクトPOの向きは、撮影方向が変化する方向によって異なる制御が行われてもよい。例えば、撮影方向が変化する方向が現実空間における左右方向である場合、表示されるプレイヤオブジェクトPOの姿勢や向きを変化させず、撮影方向が変化する方向が現実空間における上下方向である場合、表示されるプレイヤオブジェクトPOの姿勢や向きを当該撮影方向の変化と連動させて変化させてもよい。
【0050】
なお、本実施例においては、仮想空間におけるプレイヤオブジェクトPOと仮想基準面との距離が所定の閾値未満である場合、当該仮想基準面と接触して当該仮想基準面上にプレイヤオブジェクトPOが配置されるように、プレイヤオブジェクトPOの配置位置を制御してもよい。これによって、プレイヤオブジェクトPOが上記閾値未満となる距離まで仮想基準面に近づいた場合、当該仮想基準面に引き寄せられるように移動してプレイヤオブジェクトPOが当該仮想基準面上に配置される。また、撮影部38の位置や姿勢によって決定されるプレイヤオブジェクトPOの位置が仮想基準面から離れて閾値未満の距離にあるとき、当該仮想基準面上の位置が維持される。すなわち、仮想基準面上に配置されたプレイヤオブジェクトPOは、撮影部38の位置や姿勢によって決定されるプレイヤオブジェクトPOの位置が当該仮想基準面から上記閾値の距離以上離れない限り、当該仮想基準面上の位置が維持されることになる。したがって、プレイヤオブジェクトPOは、仮想基準面上に配置されやすくなるとともに、仮想基準面上の位置に安定して配置することが可能となり、結果的に撮影画像における検出平面上にプレイヤオブジェクトPOが配置されやすくなり、当該検出平面上にプレイヤオブジェクトPOを安定して配置して表示することができる。なお、プレイヤオブジェクトPOが仮想基準面上へ移動する際の上記閾値と、プレイヤオブジェクトPOが仮想基準面上から離れる際の上記閾値とは、同じ大きさの閾値でもよいし、異なる大きさの閾値でもよい。
【0051】
また、上記閾値を用いたプレイヤオブジェクトPOの配置位置制御において、時間的な条件をさらに加えてもよい。例えば、プレイヤオブジェクトPOが仮想基準面上へ移動する際には、上記閾値未満の距離となる位置に第1の時間以上継続して配置された場合に、プレイヤオブジェクトPOを仮想基準面上に移動させてもよい。また、プレイヤオブジェクトPOが仮想基準面上から離れる際には、上記閾値以上の距離となる位置に第2の時間以上継続して配置された場合に、プレイヤオブジェクトPOを仮想基準面上から離してもよい。なお、上記第1の時間と上記第2の時間とは、同じ時間でもよいし、異なる時間でもよい。
【0052】
図7に示すように、ユーザ操作に応じて、仮想基準面に配置された状態でプレイヤオブジェクトPOを配置固定して表示することも可能である。ここで、配置固定とは、撮影部38の位置や姿勢が変化しても、プレイヤオブジェクトPOが現実空間の固定位置に配置されているかのように見えるように制御することを示している。当該配置固定を実現する方法の一例として、本実施例では、プレイヤオブジェクトPOの仮想空間内(後述されているように、仮想基準面上とは限らない)の位置を固定して、撮影部38の動きに合わせて仮想カメラを動かしている。本実施例では、配置固定の具体例として仮想空間においてプレイヤオブジェクトPOが配置されている仮想基準面上の位置を固定して撮影画像に重畳表示しており、これによって、当該仮想基準面上の位置に対応する現実空間内の位置に固定して配置されているようにプレイヤオブジェクトPOが表示されることになる。
【0053】
例えば、図4図6に示すように、プレイヤオブジェクトPOが配置固定される前のゲーム画像には、プレイヤオブジェクトPOを配置固定するためのユーザ操作を受け付けるためのボタン画像B1が表示されており、ボタン画像B1が表示されている位置がタッチ操作されることによって、当該配置固定が指示される。そして、図7に示すように、プレイヤオブジェクトPOが配置固定状態となって表示された場合、ボタン画像B1が消去されて、ボタン画像B2およびB3が表示される。ここで、ボタン画像B2は、上記配置固定状態を解除するためのユーザ操作を受け付ける。また、ボタン画像B3は、表示部35に表示されているゲーム画像を静止画像として保存する静止画取得処理を行うためのユーザ操作を受け付ける。なお、上記配置固定状態とするためのユーザ操作は、プレイヤオブジェクトPOがタッチ操作される等、他のユーザ操作によって可能にしてもよい。また、上記配置固定状態を解除するためのユーザ操作は、ボタン画像B2およびB3の表示位置以外のゲーム画像がタップ操作される等、他のユーザ操作によって可能としてもよい。
【0054】
プレイヤオブジェクトPOが撮影画像内に配置固定される前と後とで、プレイヤオブジェクトPOの表示態様を変化させている。例えば、図4図6図7とを比較すると明らかなように、配置固定される前のプレイヤオブジェクトPOは、標識画像Mが付与された表示態様で表示されている。一方、配置固定された後のプレイヤオブジェクトPOは、標識画像Mが付与されていない表示態様で表示されている。このように、配置固定される前と後とで、異なる表示態様でプレイヤオブジェクトPOを表示することによって、プレイヤオブジェクトPOが配置固定されている状態であるのか否かをユーザに示すことができる。なお、配置固定前後の表示態様の変化は、標識画像Mの有無に限らず、他の表示態様の変化であってもよい。例えば、他の画像を付与することによる表示態様の変化でもよいし、プレイヤオブジェクトPOの色や明度が変化する表示態様の変化でもよいし、プレイヤオブジェクトPOの表情、姿勢、アクション等が変化する表示態様の変化でもよい。なお、標識画像Mは、配置固定条件が満たされる前と後とで変化する仮想オブジェクトの表示態様の一例に相当する。
【0055】
図8に示すように、プレイヤオブジェクトPOが配置固定されて撮影画像内に表示されている場合、プレイヤオブジェクトPOの見え方が現実空間における撮影部38の位置および姿勢(撮影状態)と連動して表示部35に表示される。例えば、現実空間における撮影部38の位置が変化したことに応じて、当該位置変化に応じた変化量だけ、プレイヤオブジェクトPOを見る位置が変化するようにプレイヤオブジェクトPOが表示される。また、撮影部38の撮影方向(撮影部38の姿勢)が変化したことに応じて、プレイヤオブジェクトPOを見る方向が同じ変化角度だけ、プレイヤオブジェクトPOを見る角度が変化するようにプレイヤオブジェクトPOが表示される。これによって、現実空間において撮影部38の位置や姿勢が変化した場合に、あたかも現実空間にプレイヤオブジェクトPOが固定して配置されているような重畳画像を表示部35に表示することができる。
【0056】
また、図9に示すように、本実施例では、ユーザ操作に応じて、配置固定されているプレイヤオブジェクトPOを仮想基準面に垂直な軸周りに回転させることができる。例えば、入力部34が表示部35の画面上に設けられるタッチパネルを有している場合、当該タッチパネルを右へスワイプする(スライドする)タッチ操作が行われた場合、プレイヤオブジェクトPOが仮想基準面に垂直な軸周りに左回りに回転する。また、上記タッチパネルを左へスワイプするタッチ操作が行われた場合、プレイヤオブジェクトPOが仮想基準面に垂直な軸周りに右回りに回転する。なお、プレイヤオブジェクトPOが回転する角度は、スワイプ操作された長さに応じて変化してもかまわないし、スワイプ操作される毎に所定角度だけ回転してもよい。
【0057】
また、上述したように、本実施例では、プレイヤオブジェクトPOが配置固定状態において表示されるボタン画像B3(図7図9参照)がタッチ操作されることによって、表示部35に表示されているゲーム画像を静止画像として保存することができる。配置固定状態で重畳表示されたプレイヤオブジェクトPOは、あたかも現実空間に固定して配置されているように表示されるため、現実空間にプレイヤオブジェクトPOが存在するような静止画像を得ることができ、現実空間においてプレイヤオブジェクトPOをカメラで撮影しているような仮想体験を実現することができる。
【0058】
図10に示すように、上述したプレイヤオブジェクトPOの表示制御は、仮想空間に設置された仮想カメラの移動や姿勢変化を用いて実現することができる。例えば、仮想空間には、プレイヤオブジェクトPOと仮想カメラとを配置する。
【0059】
プレイヤオブジェクトPOが配置固定状態でない、かつ、撮影画像において平面が検出されていない場合(第1状態)、仮想カメラの視野範囲内に入るように当該仮想カメラおよびプレイヤオブジェクトPOを仮想空間に配置する。例えば、仮想カメラの視野範囲の中央に正面を仮想カメラに向けた姿勢で所定の距離を維持してプレイヤオブジェクトPOが配置され続けるように制御する。そして、仮想空間における重力方向と一致するようにプレイヤオブジェクトPOの上下方向が決定され、現実空間の撮影部38に作用している重力方向と仮想カメラに作用する仮想空間の重力方向とが一致するように仮想カメラの上下方向が決定される。これによって、現実空間において撮影部38が移動したり左右方向に回転したりしたとしても、仮想カメラとプレイヤオブジェクトPOとの相対的な位置関係や方向が変化しない。また、現実空間において撮影部38が上下方向に回転すると、仮想カメラが撮影部38と同様に姿勢変化してプレイヤオブジェクトPOとの相対的な位置関係を維持した状態で相対方向が変化する。なお、第1状態では、仮想カメラとプレイヤオブジェクトPOとの相対的な位置関係および方向が固定されてもよい。この場合、仮想カメラの撮影方向とプレイヤオブジェクトPOの正面方向とが平行となるように、仮想カメラとプレイヤオブジェクトPOとの相対的な位置関係および方向が固定されてもよい。
【0060】
プレイヤオブジェクトPOが配置固定状態でない、かつ、撮影画像において平面が検出されている場合(第2状態)、仮想空間に当該平面に対応する仮想基準面が設定される。また、プレイヤオブジェクトPOの真下方向(仮想空間の鉛直方向)と仮想基準面とが交差する位置を中心とする当該仮想基準面に沿った所定の範囲に影オブジェクトSが配置される。このような仮想空間において、現実空間における撮影部38の移動および姿勢変化(撮影状態)と同様に仮想カメラを移動および姿勢変化させるとともに、所定の距離を維持して当該仮想カメラの視野範囲内に入るように(例えば、所定の距離だけ仮想カメラから離れた仮想カメラの注視点に)プレイヤオブジェクトPOを配置する。また、プレイヤオブジェクトPOの上下方向が仮想空間の重力方向となり、プレイヤオブジェクトPOの正面に仮想カメラが配置されるように、プレイヤオブジェクトPOの姿勢が制御される。
【0061】
ここで、現実空間における撮影部38の姿勢変化と同様に仮想空間の仮想カメラを姿勢変化させることは、撮影部38の姿勢が現実空間において変化したことに応じて、仮想空間における仮想カメラの姿勢を撮影部38の姿勢変化と同じ方向に同じ変化量だけ変化するように、仮想カメラの姿勢を制御することを示している。また、現実空間における撮影部38の移動と同様に仮想空間の仮想カメラを移動させることは、撮影部38の位置が現実空間において変化したことに応じて、仮想空間における仮想カメラの位置を撮影部38の移動と同じ方向に、現実空間の移動距離に対応する仮想空間における距離だけ変化する(すなわち、撮影部38の位置が現実空間における第1変化量だけ移動したことに応じて、当該第1変化量に比例する仮想空間における第2変化量だけ仮想カメラの位置が変化(現実空間と仮想空間との間のスケール比に応じて変化)する)ように、仮想カメラの位置を制御することを示している。
【0062】
上記第2状態において、プレイヤオブジェクトPOと仮想基準面との距離が所定の閾値未満となった場合、当該仮想基準面と接触して当該仮想基準面上にプレイヤオブジェクトPOが配置されるように、プレイヤオブジェクトPOを移動させる。また、仮想基準面上に配置されたプレイヤオブジェクトPOは、仮想カメラの移動や姿勢変化によって当該仮想基準面から上記閾値の距離以上離れる制御(例えば、仮想カメラから所定の距離だけ離れた注視点が仮想基準面から上記閾値の距離以上離れる位置となる制御)が行われない限り、当該仮想基準面と接触した状態を維持しながら移動したり回転したりする。そして、仮想カメラの移動や姿勢変化によって仮想基準面から上記閾値の距離以上離れる制御が行われた時点で、仮想基準面上から当該閾値以上の距離となる位置までプレイヤオブジェクトPOを浮き上がらせる。これによって、現実空間において撮影部38が左右方向に移動したり左右方向に回転したりしたとしても、仮想カメラとプレイヤオブジェクトPOとの相対的な位置関係が変化しない。一方、現実空間において撮影部38が上下方向に回転すると、仮想空間における仮想カメラが撮影部38と同様に姿勢変化してプレイヤオブジェクトPOとの相対的な位置関係が変化する。また、現実空間において撮影部38が上下方向に移動したり上下方向に回転したりすることにより、プレイヤオブジェクトPOが仮想基準面(撮影画像において検出された平面)と近づくと、当該仮想基準面にプレイヤオブジェクトPOが吸い寄せされるような動きが表現される
【0063】
上記第2状態においてプレイヤオブジェクトPOが仮想基準面上に配置された状態で配置固定された場合(第3状態)、プレイヤオブジェクトPOおよび影オブジェクトSを仮想空間において固定された状態として、現実空間における撮影部38の移動および姿勢変化(撮影状態)と同様に仮想カメラを仮想空間において移動および姿勢変化させる。そして、プレイヤオブジェクトPOを回転させるユーザ操作(タッチパネルを左右にスワイプするタッチ操作)が行われた場合、プレイヤオブジェクトPOを仮想基準面に垂直な軸周りに操作方向に応じた方向および変化角度だけ回転させる。また、プレイヤオブジェクトPOの配置固定状態が解除される操作が行われた場合、撮影画像における平面検出有無に応じて、上記第1状態または上記第2状態に戻って仮想空間における仮想カメラおよびプレイヤオブジェクトPOの位置および姿勢制御が行われる。
【0064】
なお、上述した説明において、仮想カメラの位置および/または姿勢を変化させる制御を行っているが、仮想空間における仮想カメラとプレイヤオブジェクトPOとの相対位置や相対方向が同様に変化するように、プレイヤオブジェクトPOの位置および/または姿勢を変化させてもかまわないし、仮想カメラおよびプレイヤオブジェクトPOの両方の位置および/または姿勢を変化させてもかまわない。また、上述した説明において、プレイヤオブジェクトPOの位置および/または姿勢を変化させる制御を行っているが、仮想空間における仮想カメラとプレイヤオブジェクトPOとの相対位置や相対方向が同様に変化するように、仮想カメラの位置および/または姿勢を変化させてもかまわないし、仮想カメラおよびプレイヤオブジェクトPOの両方の位置および/または姿勢を変化させてもかまわない。上述した説明における仮想カメラとプレイヤオブジェクトPOとの位置関係や方向の制御において、仮想空間における仮想カメラとプレイヤオブジェクトPOとの相対位置や相対方向が同様に変化するのであれば、どのような制御が行われてもよいことは言うまでもない。
【0065】
また、上述した説明において、仮想カメラの位置および/または姿勢を変化させる制御を行っているが、仮想空間における仮想カメラと仮想基準面との相対位置や相対方向が同様に変化するように、仮想基準面の位置および/または姿勢を変化させてもかまわないし、仮想カメラおよび仮想基準面の両方の位置および/または姿勢を変化させてもかまわない。上述した説明における仮想カメラと仮想基準面との位置関係や方向の制御において、仮想空間における仮想カメラと仮想基準面との相対位置や相対方向が同様に変化するのであれば、どのような制御が行われてもよいことは言うまでもない。
【0066】
また、本実施例においては、プレイヤオブジェクトPOが仮想基準面上に配置されていない状態や撮影画像において平面が検出されていない状態であっても、プレイヤオブジェクトPOを配置固定することを可能にしてもよい。例えば、図11に示すように、プレイヤオブジェクトPOが仮想基準面上に配置されていない状態で配置固定するユーザ操作が行われた場合、当該位置、すなわち仮想基準面から離れた位置で固定されて撮影画像に重畳表示される。これによって、当該仮想空間の位置に対応する現実空間内の位置に固定してプレイヤオブジェクトPOが表示されることになるが、当該撮影画像において検出されている平面から離れた現実空間内の位置にプレイヤオブジェクトPOが固定されているような画像が表示される。
【0067】
例えば、撮影画像において平面が検出された後にプレイヤオブジェクトPOが仮想基準面上に配置されていない状態でプレイヤオブジェクトPOを配置固定するユーザ操作が行われた場合、仮想基準面上に配置されていた影オブジェクトS(図11に示す破線領域)がプレイヤオブジェクトPOの下面と接触する位置(図11に示す影オブジェクトSの位置)まで移動して、プレイヤオブジェクトPOが配置固定状態となって表示される。そして、仮想基準面から離れた位置で配置固定されてプレイヤオブジェクトPOが撮影画像に重畳表示されている場合、プレイヤオブジェクトPOの見え方が現実空間における撮影部38の位置および姿勢(撮影状態)と連動して表示部35に表示される。例えば、仮想基準面上に配置されている状態と同様に、現実空間における撮影部38の位置が変化したことに応じて、当該位置変化に応じた変化量だけ、プレイヤオブジェクトPOを見る位置が変化するようにプレイヤオブジェクトPOが表示される。また、撮影部38の撮影方向(撮影部38の姿勢)が変化したことに応じて、プレイヤオブジェクトPOを見る方向が同じ変化角度だけ、プレイヤオブジェクトPOを見る角度が変化するようにプレイヤオブジェクトPOが表示される。これによって、仮想基準面から離れた位置で配置固定されている場合であっても、現実空間において撮影部38の位置や姿勢が変化した場合に、あたかも現実空間にプレイヤオブジェクトPOが当該位置に固定して配置されているような重畳画像を表示部35に表示することができる。
【0068】
なお、仮想基準面上に配置されていない状態でプレイヤオブジェクトPOを配置固定される場合であっても、当該配置固定される前と後とで、プレイヤオブジェクトPOの表示態様を変化させてもよい。また、仮想基準面上に配置されていない状態でプレイヤオブジェクトPOを配置固定される場合であっても、ユーザ操作に応じて、当該配置固定されているプレイヤオブジェクトPOを仮想基準面に垂直な軸周りに回転可能にしてもよい。
【0069】
また、このようなプレイヤオブジェクトPOの配置固定は、仮想基準面が不要となるため、撮影画像において平面が検出されていない状態であっても同様に可能としてもよい。ただし、撮影画像において平面が検出されておらず、影オブジェクトSが設定前となるため、影オブジェクトSは、重畳画像に表示されなくてもよい。
【0070】
また、撮影画像において平面が検出される前と後や、プレイヤオブジェクトPOが仮想基準面上に配置されているか否かによって、プレイヤオブジェクトPOの表示態様を変化させてもかまわない。例えば、図12に示すように、撮影画像において平面が検出される前や、当該平面検出後であってもプレイヤオブジェクトPOが仮想基準面上に配置されていない場合は、プレイヤオブジェクトPOの全身を上下に伸ばした姿勢で足をばたつかせるような動作をさせてもよい。この場合、図5図6に示すように、撮影画像において平面が検出された後や、プレイヤオブジェクトPOが仮想基準面上に配置されている場合は、プレイヤオブジェクトPOが足をばたつかせずにお座りした姿勢で表示してもよい。このように、プレイヤオブジェクトPOの動作や姿勢を上記平面検出前後や仮想基準面上に配置されているか否かによって変化させることによって、ユーザに平面が検出されていないことや平面上にプレイヤオブジェクトPOが配置されていないことを示すことができるとともに、当該状況を示す画像のリアリティをさらに向上させることができる。
【0071】
また、ユーザ操作に応じて、撮影画像に重畳表示されるプレイヤオブジェクトPOのアクションが変更可能であってもよい。例えば、プレイヤオブジェクトPOが取り得るアクションの選択肢から1つのアクションを選択するユーザ操作に応じて、プレイヤオブジェクトPOがアクションを変更して撮影画像に重畳表示されてもよい。プレイヤオブジェクトPOが取り得るアクションの選択肢は、姿勢変化、動作変化、および喜怒哀楽等の表情変化等でもよい。また、上記プレイヤオブジェクトPOのアクション変更は、特定の状態において可能にしてもよい。例えば、プレイヤオブジェクトPOが配置固定状態であるときだけ、ユーザ操作に応じて上記プレイヤオブジェクトPOのアクションが変更可能に構成されてもよい。
【0072】
また、上述した実施例では、表示部35および撮影部38を内蔵する情報処理装置3を用いているが、重畳画像を表示する表示部および/または撮影画像を取得する撮影部が、制御部31を有する装置の外部に設けられてもよい。
【0073】
このように、本実施例によれば、現実空間を撮影した撮影画像において平面がゲーム処理開始から最初に検出される前であっても、当該撮影画像にプレイヤオブジェクトPOを重畳して表示することができるため、プレイヤオブジェクトPOを重畳表示するまでのレスポンスを向上させることができる。また、本実施例によれば、上記平面がゲーム処理開始から最初に検出される前であっても、当該撮影画像にプレイヤオブジェクトPOを配置固定して表示することも可能であるため、プレイヤオブジェクトPOを撮影画像内に配置固定して表示するまでのレスポンスも向上させることができる。
【0074】
なお、上述した実施例では、撮影画像にプレイヤオブジェクトPOを重畳表示する例を用いたが、撮影画像に重畳表示する画像は、他の仮想オブジェクトでもよい。例えば、ノンプレイヤオブジェクト、家具、建具、器具、乗り物のような仮想オブジェクトを撮影画像に重畳表示してもよい。
【0075】
次に、情報処理装置3において行われる処理の詳細を説明する。まず、図13を参照して、情報処理装置3において行われる処理において用いられる主なデータについて説明する。なお、図13は、情報処理装置3の記憶部32に記憶される主なデータおよびプログラムの一例を示す図である。
【0076】
図13に示すように、記憶部32のデータ記憶領域には、操作データDa、撮影画像データDb、仮想基準面データDc、プレイヤオブジェクトデータDd、影オブジェクトデータDe、仮想カメラデータDf、仮想空間画像データDg、重畳画像データDh、配置固定フラグデータDi、および画像データDj等が記憶される。なお、記憶部32には、図13に示すデータの他、実行するアプリケーションで用いるデータ等、処理に必要なデータが記憶される。また、記憶部32のプログラム記憶領域には、情報処理プログラム(ゲームプログラム)等を構成する各種プログラム群Paが記憶される。
【0077】
操作データDaは、ユーザが情報処理装置3を操作した操作情報を示すデータである。例えば、タッチパネルを含む入力部34を操作したことを示す操作データは、情報処理装置3が処理する時間単位(例えば、1/60秒)毎に取得され、当該取得に応じて操作データDaに格納されて更新される。また、情報処理装置3(表示部35)を動かす操作によって慣性センサ37が検出した操作データも、情報処理装置3が処理する時間単位毎に取得され、当該取得に応じて操作データDaに格納されて更新される。なお、操作データDaは、入力部34を用いて操作した最新のユーザ入力を示すデータの他に、所定時間前までのユーザ入力の履歴(例えば、タッチパネルがタッチ操作されたタッチ位置の履歴)を少なくとも含んでいる。
【0078】
撮影画像データDbは、撮影部38によって撮影された現実空間の撮影画像を示すデータである。なお、撮影部38が撮影した撮影画像を用いて撮影画像データDbを更新する周期は、情報処理装置3が処理する時間単位(例えば、1/60秒)と同じでもよいし、当該時間単位より短い時間でもかまわない。情報処理装置3が処理する周期より撮影画像データDbを更新する周期が短い場合、後述する処理とは独立して撮影画像データDbを適宜更新してもかまわない。この場合、後述する撮影画像を取得するステップにおいて、撮影画像データDbが示す最新の撮影画像を常に用いて処理すればよい。
【0079】
仮想基準面データDcは、仮想空間に設定される仮想基準面を示すデータである。
【0080】
プレイヤオブジェクトデータDdは、プレイヤオブジェクトPOの位置、姿勢、動作、表示態様等を示すデータである。影オブジェクトデータDeは、影オブジェクトSの位置、形状、表示態様等を示すデータである。
【0081】
仮想カメラデータDfは、仮想カメラの位置および姿勢等を示すデータである。
【0082】
仮想空間画像データDgは、仮想カメラから見た仮想空間画像を示すデータである。重畳画像データDhは、撮影画像に仮想空間画像を重畳して生成された重畳画像を示すデータである。
【0083】
配置固定フラグデータDiは、プレイヤオブジェクトPOが配置固定状態である場合にオンに設定される配置固定フラグを示すデータである。
【0084】
画像データDjは、仮想空間画像(例えば、プレイヤオブジェクトPOの画像、影オブジェクトSの画像等)を表示部35に表示するためのデータである。
【0085】
次に、図14図17を参照して、情報処理装置3において行われる処理の詳細を説明する。なお、図14は、情報処理装置3において実行される処理の一例を示すフローチャートである。図15は、図14のステップS108における第1画像生成処理の詳細な一例を示すサブルーチンである。図16は、図14のステップS109における第2画像生成処理の詳細な一例を示すサブルーチンである。図17は、図14のステップS110における第3画像生成処理の詳細な一例を示すサブルーチンである。ここで、図14図17に示すフローチャートにおいては、情報処理システム1における処理のうち、一例としてプレイヤオブジェクトPOに対する表示制御に関連するゲーム処理について主に説明し、これらの処理と直接関連しない他の処理については詳細な説明を省略する。また、図14図17では、制御部31が実行する各ステップを「S」と略称する。
【0086】
本実施例においては、図14図17に示す一連の処理は、制御部31(CPU)が、プログラム記憶部33に記憶されるゲームプログラム等を実行することによって行われる。なお、図14図17に示す処理が開始されるタイミングは任意である。このとき、ゲームプログラムは、適宜のタイミングでその一部または全部が記憶部32に読み出され、制御部31によって実行される。これによって、図14図17に示す一連の処理が開始される。なお、ゲームプログラムは、プログラム記憶部33に予め記憶されているものとする。ただし、他の実施例においては、情報処理装置3に着脱可能な記憶媒体から取得されて記憶部32に記憶されてもよいし、インターネット等のネットワークを介して他の装置から取得されて記憶部32に記憶されてもよい。
【0087】
また、図14図17に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよいし、各ステップの処理に加えておよび/または代えて別の処理が実行されてもよい。また、本実施例では、上記フローチャートの各ステップの処理を制御部31が実行するものとして説明するが、上記フローチャートにおける一部または全部のステップの処理を、上記制御部31のCPU以外のプロセッサや専用回路が実行するようにしてもよい。
【0088】
図14において、制御部31は、初期設定を行い(ステップS101)、次のステップに処理を進める。例えば、制御部31は、以降の処理に用いる各パラメータを初期化する。例えば、制御部31は、撮影画像に重畳表示するプレイヤオブジェクトPOを設定するとともに、その動作/表示態様を初期設定して、プレイヤオブジェクトデータDdを更新する。
【0089】
次に、制御部31は、入力部34および慣性センサ37から操作データを取得して操作データDaの最新データを更新するとともに操作データの履歴を更新し(ステップS102)、次のステップに処理を進める。なお、撮影状態検出手段は、更新間隔毎に現実空間を撮影して撮影画像を生成する撮影装置の位置および姿勢を含む撮影状態を検出する処理を行うものであり、一例として上記ステップS102における処理を行う制御部31に相当する。
【0090】
次に、制御部31は、撮影画像を取得して(ステップS103)、次のステップに処理を進める。例えば、制御部31は、撮影部38によって撮影された撮影画像を示すデータを用いて、撮影画像データDbを更新する。
【0091】
次に、制御部31は、撮影画像から平面を検出する処理を行って(ステップS104)、次のステップに処理を進める。例えば、制御部31は、既存の平面検出機能を用いて、上記ステップS103において取得した撮影画像から平面を検出する。
【0092】
次に、制御部31は、配置固定設定処理を行い(ステップS105)、次のステップに処理を進める。例えば、制御部31は、上記ステップS102において取得した操作データを参照して、プレイヤオブジェクトPOを配置固定状態にするユーザ操作が行われた場合、配置固定フラグをオンに設定して配置固定フラグデータDiを更新する。また、制御部31は、プレイヤオブジェクトPOの配置固定状態を解除するユーザ操作が行われた場合、配置固定フラグをオフに設定して配置固定フラグデータDiを更新する。
【0093】
次に、制御部31は、プレイヤオブジェクトPOが配置固定状態であるか否かを判定する(ステップS106)。例えば、制御部31は、配置固定フラグデータDiが示す配置固定フラグがオンに設定されている場合、上記ステップS106において肯定判定する。そして、制御部31は、プレイヤオブジェクトPOが配置固定状態でない場合、ステップS107に処理を進める。一方、制御部31は、プレイヤオブジェクトPOが配置固定状態である場合、ステップS110に処理を進める。
【0094】
ステップS107において、制御部31は、撮影画像において平面が検出されているか否かを判定する。例えば、制御部31は、ステップS104の処理において、撮影画像から平面が検出されている場合、上記ステップS107において肯定判定する。そして、制御部31は、撮影画像において平面が検出されていない場合、ステップS108に処理を進める。一方、制御部31は、撮影画像において平面が検出されている場合、ステップS109に処理を進める。
【0095】
ステップS108において、制御部31は、第1画像生成処理を行い、ステップS111に処理を進める。以下、図15を参照して、上記ステップS108において行われる第1画像生成処理について説明する。
【0096】
図15において、制御部31は、仮想空間における仮想カメラを設定して(ステップS121)、次のステップに処理を進める。例えば、制御部31は、表示画像を生成するための仮想カメラの位置を仮想空間における所定の位置(初期位置)とする。また、制御部31は、操作データDaにおける慣性センサ37から取得したデータに基づいて、現実空間の撮影部38(情報処理装置3)に作用している重力方向と仮想カメラに作用する仮想空間の重力方向とが一致するように仮想カメラの姿勢を設定して、仮想カメラデータDfを更新する。
【0097】
次に、制御部31は、仮想空間におけるプレイヤオブジェクトPOを設定して(ステップS122)、次のステップに処理を進める。例えば、制御部31は、仮想空間において、仮想カメラから所定距離離れた視野範囲の中央にプレイヤオブジェクトPOの位置を設定する。また、制御部31は、仮想空間において、プレイヤオブジェクトPOの上下方向を仮想空間の重力方向と一致させ、プレイヤオブジェクトPOの正面が仮想カメラ側となるようにプレイヤオブジェクトPOの姿勢を設定する。また、制御部31は、プレイヤオブジェクトPOを、配置固定状態ではないことを示す表示態様(例えば、標識画像Mが付与された表示態様)に設定して、プレイヤオブジェクトデータDdを更新する。
【0098】
次に、制御部31は、画像重畳処理を行い(ステップS123)、当該サブルーチンによる処理を終了する。例えば、制御部31は、仮想カメラから見た仮想空間を仮想空間画像として生成し、当該仮想空間画像を示すデータを用いて仮想空間画像データDgを更新する。そして、制御部31は、撮影画像データDbが示す撮影画像に仮想空間画像データDgが示す仮想空間画像を重畳した重畳画像を生成し、当該重畳画像を示すデータを用いて重畳画像データDhを更新する。
【0099】
図14に戻り、上記ステップS107において肯定判定された場合、制御部31は、第2画像生成処理を行い(ステップS109)、ステップS111に処理を進める。以下、図16を参照して、上記ステップS109において行われる第2画像生成処理について説明する。なお、第1更新手段は、撮影画像において特徴部分が検出されたことに基づき、仮想空間における仮想基準面および仮想カメラの少なくとも1つについて位置および姿勢を更新する処理を行うものであり、一例として上記ステップS109における処理を行う制御部31に相当する。
【0100】
図16において、制御部31は、仮想空間における仮想カメラを設定して(ステップS131)、次のステップに処理を進める。例えば、制御部31は、仮想カメラデータDfが示す仮想空間における仮想カメラの位置および姿勢を、操作データDaにおける慣性センサ37から取得したデータに基づいて、現実空間の撮影部38(情報処理装置3)の動き(移動および姿勢変化)と一致するように変化させ、変化後の位置および姿勢を用いて仮想カメラデータDfを更新する。
【0101】
次に、制御部31は、仮想空間に仮想基準面を設定する処理を行い(ステップS132)、次のステップに処理を進める。制御部31は、上記ステップS104において検出された平面と重畳画像において一致するように、仮想空間に仮想基準面を設定する。例えば、制御部31は、上記ステップS131において設定された仮想カメラから見た仮想空間画像(すなわち、撮影画像に重畳される仮想空間画像)における仮想基準面の位置、および姿勢が、重畳された場合に撮影画像における上記平面の位置、および姿勢と一致するように、当該仮想基準面を仮想空間に設定して、当該仮想基準面を示すデータを用いて仮想基準面データDcを更新する。これによって、仮想空間に設定される仮想基準面は、撮影画像に重畳された重畳画像(合成画像)において、当該撮影画像で検出された平面と一致することになる。
【0102】
次に、制御部31は、仮想空間におけるプレイヤオブジェクトPOを設定して(ステップS133)、次のステップに処理を進める。例えば、制御部31は、仮想空間において、仮想カメラから所定距離離れた視野範囲の中央にプレイヤオブジェクトPOの位置を設定する。なお、本実施例では、仮想空間における仮想基準面の真下となる空間にはプレイヤオブジェクトPOを配置しない。したがって、制御部31は、プレイヤオブジェクトPOの位置が当該空間となる場合、当該位置の直上方向であって、プレイヤオブジェクトPOが仮想基準面と接する当該仮想基準面上となる位置にプレイヤオブジェクトPOの位置を設定する。また、制御部31は、仮想空間において、プレイヤオブジェクトPOの上下方向を仮想空間の重力方向と一致させ、プレイヤオブジェクトPOの正面が仮想カメラ側となるようにプレイヤオブジェクトPOの姿勢を設定する。また、制御部31は、プレイヤオブジェクトPOを、配置固定状態ではないことを示す表示態様(例えば、標識画像Mが付与された表示態様)に設定して、プレイヤオブジェクトデータDdを更新する。
【0103】
次に、制御部31は、仮想空間における影オブジェクトSを設定して(ステップS134)、次のステップに処理を進める。例えば、制御部31は、仮想空間において、プレイヤオブジェクトPOの真下となる仮想基準面上の位置に当該仮想基準面に沿ってプレイヤオブジェクトPOの影を示す影オブジェクトSを貼り付け、当該影オブジェクトSを示すデータを用いて影オブジェクトデータDeを更新する。
【0104】
次に、制御部31は、仮想空間におけるプレイヤオブジェクトPOと仮想基準面との距離が、所定の閾値未満であるか否かを判定する(ステップS135)。そして、制御部31は、プレイヤオブジェクトPOと仮想基準面との距離が所定の閾値未満である場合、ステップS136に処理を進める。一方、制御部31は、プレイヤオブジェクトPOと仮想基準面との距離が所定の閾値以上である場合、ステップS137に処理を進める。
【0105】
ステップS136において、制御部31は、プレイヤオブジェクトPOの位置を仮想基準面上に設定して、ステップS137に処理を進める。例えば、制御部31は、プレイヤオブジェクトPOが仮想基準面と接する当該仮想基準面上となる位置となるように、プレイヤオブジェクトPOの位置を仮想空間の鉛直方向に移動させ、当該位置を用いてプレイヤオブジェクトデータDdを更新する。
【0106】
ステップS137において、制御部31は、画像重畳処理を行い、当該サブルーチンによる処理を終了する。なお、上記ステップS137における画像重畳処理は、上述したステップS123における処理と同様であるため、ここでは詳細な説明を省略する。
【0107】
図14に戻り、上記ステップS106において肯定判定された場合、制御部31は、第3画像生成処理を行い(ステップS110)、ステップS111に処理を進める。以下、図17を参照して、上記ステップS110において行われる第3画像生成処理について説明する。なお、第2更新手段は、撮影状態に基づき、仮想空間における仮想オブジェクトおよび仮想カメラの少なくとも1つについて位置および姿勢を更新する処理を行うものであり、一例として上記ステップS108~S110における処理を行う制御部31に相当する。
【0108】
図17において、制御部31は、仮想空間におけるプレイヤオブジェクトPOを設定して(ステップS141)、次のステップに処理を進める。例えば、制御部31は、仮想空間におけるプレイヤオブジェクトPOの現時点の位置を維持する。また、制御部31は、操作データDaにおける入力部34から取得したデータを参照して、プレイヤオブジェクトPOを回転させるユーザ操作が行われている場合、仮想基準面に垂直な軸周りにプレイヤオブジェクトPOを当該ユーザ操作に応じた回転角度だけ回転させてプレイヤオブジェクトPOの姿勢を設定する。また、制御部31は、プレイヤオブジェクトPOを、配置固定状態であることを示す表示態様(例えば、標識画像Mを外した表示態様)に設定して、プレイヤオブジェクトデータDdを更新する。なお、アクション変更手段は、ユーザの第1指示入力に応じて、仮想オブジェクトのアクションを変更する処理を行うものであり、一例として上記ステップS122、S133、およびS141における処理を行う制御部31に相当する。
【0109】
次に、制御部31は、撮影画像において平面が検出されているか否かを判定する(ステップS142)。例えば、制御部31は、ステップS104の処理において、撮影画像から平面が検出されている場合、上記ステップS142において肯定判定する。そして、制御部31は、撮影画像において平面が検出されている場合、ステップS143に処理を進める。一方、制御部31は、撮影画像において平面が検出されていない場合、ステップS145に処理を進める。
【0110】
ステップS143において、仮想空間に仮想基準面を設定する処理を行い、次のステップに処理を進める。なお、上記ステップS143における処理は、上述したステップS132の処理と同様であるため、ここでは詳細な説明を省略する。
【0111】
次に、制御部31は、仮想空間における影オブジェクトSを設定して(ステップS144)、ステップS145に処理を進める。例えば、制御部31は、仮想空間において、プレイヤオブジェクトPOの真下となる仮想基準面上の位置に当該仮想基準面に沿ってプレイヤオブジェクトPOの影を示す影オブジェクトSを貼り付け、当該影オブジェクトSを示すデータを用いて影オブジェクトデータDeを更新する。
【0112】
ステップS145において、制御部31は、仮想空間における仮想カメラを設定して、次のステップに処理を進める。例えば、制御部31は、仮想カメラデータDfが示す仮想空間における仮想カメラの位置および姿勢を、操作データDaにおける慣性センサ37から取得したデータに基づいて、現実空間の撮影部38(情報処理装置3)の動き(移動および姿勢変化)と一致するように変化させ、変化後の位置および姿勢を用いて仮想カメラデータDfを更新する。
【0113】
次に、制御部31は、画像重畳処理を行い(ステップS146)、次のステップに処理を進める。なお、上記ステップS146における画像重畳処理は、上述したステップS123における処理と同様であるため、ここでは詳細な説明を省略する。なお、画像生成手段は、仮想オブジェクトが仮想カメラの視野範囲に含まれる場合に、撮影画像に当該仮想カメラから見た当該仮想オブジェクトの画像を重畳した重畳画像を生成する処理を行うものであり、一例として上記ステップS123、S137、およびS146における処理を行う制御部31に相当する。
【0114】
次に、制御部31は、静止画像を取得するか否かを判定する(ステップS147)。例えば、制御部31は、操作データDaにおける入力部34から取得したデータに基づいて、静止画像を取得するユーザ操作が行われた場合、上記ステップS147において肯定判定する。そして、制御部31は、静止画像を取得する場合、ステップS148に処理を進める。一方、制御部31は、静止画像を取得しない場合、当該サブルーチンによる処理を終了する。
【0115】
ステップS148において、制御部31は、静止画像を取得する処理を行い、当該サブルーチンによる処理を終了する。例えば、制御部31は、表示部35に表示されている画像、すなわち重畳画像データDhが示す重畳画像を一時的に静止画像にして表示部35に表示するとともに、当該静止画像を記憶部32に格納する。
【0116】
図14に戻り、ステップS111において、制御部31は、表示画像を生成して表示部35に表示する表示制御処理を行い、次のステップに処理を進める。例えば、制御部31は、重畳画像データDhが示す重畳画像に、現時点の状態に応じた操作ボタン画像を加えることによって表示画像を生成して、当該表示画像を表示部35に表示する処理を行う。なお、画像出力手段は、重畳画像を表示装置に出力する処理を行うものであり、一例として上記ステップS111における処理を行う制御部31に相当する。
【0117】
次に、制御部31は、ゲーム処理を終了するか否かを判断する(ステップS112)。ゲーム処理を終了する条件としては、例えば、ゲーム処理を終了させる条件が満たされたことや、ユーザがゲーム処理を終了する操作を行ったこと等がある。制御部31は、ゲーム処理を継続する場合に上記ステップS102に戻って処理を繰り返し、ゲーム処理を終了する場合に当該フローチャートによる処理を終了する。
【0118】
このように、上記ゲーム処理を行う情報処理装置3によれば、現実空間を撮影した撮影画像において平面が検出される前であっても、当該撮影画像にプレイヤオブジェクトPOを重畳して表示することができるため、プレイヤオブジェクトPOを重畳表示するまでのレスポンスを向上させることができる。
【0119】
なお、上述した実施例では、タッチ操作を検出する入力部34の一例として、表示部35の表示画面を覆うタッチパネルを用いたが、タッチパッド等の他のデバイスであってもよい。一例として、据置型モニターに表示されたゲーム画像を見ながら別体のコントローラを用いて操作するゲームシステムを用いる場合、当該コントローラに備えられたカメラおよびタッチパッドを用いる態様であってもよい。
【0120】
また、上述した説明では、現実空間を撮影した撮影画像において検出される平面を用いてプレイヤオブジェクトPOを重畳表示する例を用いたが、撮影画像において他の特徴部分を検出して、当該特徴部分に基づいてプレイヤオブジェクトPOが重畳表示されるものであってもよい。例えば、現実空間に載置された所定のマーカー(例えば、平面に載置されたマーカー)を撮影対象として、撮影画像に対してパターンマッチング等の画像処理を行うことによって、撮影画像から当該マーカーが検出されてもよい。この場合、撮影画像に重畳されるプレイヤオブジェクトPOの位置がマーカーを基準として制御され、一例として、マーカー上にプレイヤオブジェクトPOが配置されて重畳表示されたり、マーカー位置を基準とするマーカーから離れた位置に重畳表示されたりする。本実施例では、検出されたマーカーを用いてプレイヤオブジェクトPOを表示する場合であっても、撮影画像からマーカーが検出される前からプレイヤオブジェクトPOを当該撮影画像に重畳表示することができる。なお、撮影画像から検出されたマーカーの種類に応じたプレイヤオブジェクトが重畳表示されてもよく、マーカーの方向に応じてプレイヤオブジェクトの表示方向が制御されてもよい。
【0121】
また、本実施例では、1つの撮影画像から複数の平面を検出してもよい。上記複数の平面は、現実空間において、高さが同じであっても異なっていてもよく、矩形以外の形状であってもよい。何れの場合であっても、本実施例では、検出された平面毎に仮想基準面を仮想空間にそれぞれ設定すればよく、何れの平面上でもプレイヤオブジェクトPOを配置して重畳表示することができる。また、撮影画像から検出される平面は、現実空間における水平面だけでなく、斜面や鉛直面でもよい。何れの平面が検出される場合であっても、当該平面の傾きに応じた仮想基準面を仮想空間に設定することによって、プレイヤオブジェクトPOを平面に沿って配置することができる。また、撮影画像において他の立体形状や文字等を特徴部分として検出して、当該立体形状や文字等に基づいてプレイヤオブジェクトPOが重畳表示されるものであってもよい。
【0122】
また、上述した説明では、仮想空間の仮想基準面を示す仮想オブジェクトを設定していないため、仮想空間画像が重畳された重畳画像においても平面に対応する仮想オブジェクトが表示されていない。本実施例では、仮想基準面上に影オブジェクトSを配置することにより、重畳画像においても検出されている平面の位置をユーザに報知することができるが、仮想基準面全体を示す平面オブジェクトを設定して重畳表示してもよい。この場合、撮影画像において検出された平面全体を示す平面オブジェクトが重畳表示されることになる。
【0123】
また、撮影部38(情報処理装置3)の動きや姿勢を算出する方法は任意であり、撮影部38(情報処理装置3)の動きや姿勢を算出するためのセンサとして、磁気センサや重力センサを備えていてもよい。また、他の実施例においては、他の装置が情報処理装置3を撮影装置(例えば、天井に取り付けられたカメラ)によって撮影し、撮影された画像を用いて情報処理装置3の動きや姿勢を算出してもよい。
【0124】
また、上述した情報処理システム1は、情報処理装置3と通信可能なサーバ200が含まれているが、サーバ200と接続されることなく情報処理装置3単独でゲーム処理を行ってもかまわない。特に、ユーザがプレイヤオブジェクトPOを操作してゲームを行う処理では、サーバ200が介在することなく実行可能であるため、情報処理装置3の内部処理だけで実現することができる。また、複数の情報処理装置3が参加するゲームを行う場合であっても、サーバ200を介さずに情報処理装置3同士や他の装置と通信が行われて上記ゲーム処理が実現されてもよい。また、ユーザがプレイヤオブジェクトPOを操作してゲームを行う処理の一部をサーバ200が実行してもかまわない。これにより、複数の情報処理装置3における処理をサーバ200において集中して管理することができる。
【0125】
また、上述した説明では情報処理を情報処理装置3で行う例を用いたが、上記処理における処理ステップの少なくとも一部を他の装置で行ってもかまわない。例えば、情報処理装置3と通信可能なサーバ200や他の装置(例えば、別のサーバ、他のゲーム装置、他の携帯端末)が協働することによって、上記処理における処理ステップが実行されてもよい。このように、上記処理における処理ステップの少なくとも一部をサーバ200や他の装置で行うことによって、上述した処理と同様の処理が可能となる。また、上述した処理は、少なくとも1つの情報処理装置により構成される情報処理システムに含まれる1つのプロセッサまたは複数のプロセッサ間の協働により実行されることが可能である。また、上記実施例においては、情報処理装置3の制御部31が所定のプログラムを実行することによって、上述したフローチャートによる処理が行われたが、情報処理装置3が備える専用回路によって上記処理の一部または全部が行われてもよい。
【0126】
ここで、上述した変形例によれば、いわゆるクラウドコンピューティングのシステム形態や分散型の広域ネットワークおよびローカルネットワークのシステム形態でも本発明を実現することが可能となる。例えば、分散型のローカルネットワークのシステム形態では、据置型の情報処理装置(据置型のゲーム装置)と携帯型の情報処理装置(携帯型のゲーム装置)との間で上記処理を協働により実行することも可能となる。なお、これらのシステム形態では、上述した処理の各ステップの処理をどの装置で行うかについては特に限定されず、どのような処理分担をしたとしても本発明を実現できることは言うまでもない。
【0127】
また、上述した情報処理で用いられる処理順序、設定値、判定に用いられる条件等は、単なる一例に過ぎず他の順序、値、条件であっても、本実施例を実現できることは言うまでもない。
【0128】
また、上記各プログラムは、外部メモリ等の外部記憶媒体を通じて情報処理装置3に供給されるだけでなく、有線または無線の通信回線を通じて情報処理装置3に供給されてもよい。また、上記プログラムは、情報処理装置3内部の不揮発性記憶装置に予め記録されていてもよい。なお、上記プログラムを記憶する情報記憶媒体としては、不揮発性メモリの他に、CD-ROM、DVD、あるいはそれらに類する光学式ディスク状記憶媒体、フレキシブルディスク、ハードディスク、光磁気ディスク、磁気テープ、などでもよい。また、上記プログラムを記憶する情報記憶媒体としては、上記プログラムを記憶する揮発性メモリでもよい。このような記憶媒体は、コンピュータ等が読み取り可能な記録媒体ということができる。例えば、コンピュータ等に、これらの記録媒体のプログラムを読み込ませて実行させることにより、上述で説明した各種機能を提供させることができる。
【0129】
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。また、当業者は、本発明の具体的な実施例の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。また、本明細書において使用される用語は、特に言及しない限り、当該分野で通常用いられる意味で用いられることが理解されるべきである。したがって、他に定義されない限り、本明細書中で使用される全ての専門用語および技術用語は、本発明の属する分野の当業者によって一般的に理解されるのと同じ意味を有する。矛盾する場合、本明細書(定義を含めて)が優先する。
【産業上の利用可能性】
【0130】
以上のように、本発明は、現実空間を撮影した撮影画像に仮想オブジェクトを重畳表示するまでのレスポンスを向上させることを可能とする等を目的として、例えば情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法等として有用である。
【符号の説明】
【0131】
1…情報処理システム
3…情報処理装置
31、202…制御部
32、203…記憶部
33…プログラム格納部
34…入力部
35…表示部
36、201…通信部
37…慣性センサ
38…撮影部
200…サーバ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17