説明

プログラム、情報記憶媒体及び電子機器

【課題】拡張現実空間を利用したマルチプレイ型のゲームにおいて手振れなどのプレーヤ視点の不安定に対する耐性を向上させる。
【解決手段】CCDカメラモジュール1516でARマーカ10を撮影した画像から、プレーヤ視点の相対位置と相対姿勢を算出し、所定算出回数分だけキューに格納する。
キューに格納した過去から現在までの相対位置及び相対姿勢それぞれを加重平均して現在位置及び現在姿勢を算出する。仮想カメラは、現在位置及び現在姿勢に従って仮想3次元空間内に配置され、当該仮想カメラで撮影した仮想3次元空間内のCGを、CCDカメラモジュール1516で撮影した画像に合成して、ゲーム画面を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータに拡張現実技術を利用したゲームを実行させるためのプログラム等に関する。
【背景技術】
【0002】
拡張現実(AR:Augmented Reality)技術の一つとして、ビデオカメラで撮影した画像を解析して現実空間とCG空間との座標合わせを行い、ビデオ撮影した画像(いわゆるライブビュー)上にCGを合成表示することでAR空間を表示する技術が知られるところである。
【0003】
近年では、ビデオゲームにおいてもAR技術を用いたものが登場するようになってきている。こうしたAR技術を利用したゲームでは、ゲームキャラクタのオブジェクトを配置するCG空間(コンピュータグラフィックス空間)を、如何にカメラで撮影されている現実空間とマッチさせるかが鍵となる。これに関連する公知技術としては、固定位置のカメラで撮影した拡張現実マーカ(ARマーカ)の画像を解析し、当該拡張現実マーカが配置されている現実の平面とマッチするように仮想マップを生成する技術が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−49690号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
さて、特許文献1で示されるように、ARマーカを撮影するカメラ(すなわちプレーヤ視点位置)が固定であればカメラで撮影した画像も安定となる。しかし、CCDカメラを搭載した携帯型ゲーム装置などは手に持ってプレイされるため、手振れなどが発生するおそれがある。手振れが生じると、現実空間とCG空間との座標合わせも安定せず、時にCGが小刻みに震える事象、いわゆるジッターが生じる場合がある。マルチプレイの場合では、ゲーム参加機の何れかにNPC(ノンプレーヤキャラクタ)の制御を行わせて、制御結果を配信する形態が多く見られるが、こうしたマルチプレイの場合に、NPCを制御する機体でジッターを起こすと、他の機体でのゲーム画面でも、その機体では手振れを起こしていないにもかかわらず、NPCが震えて見えるといった不具合が生じる。
【0006】
本発明は、こうした事情を鑑みて考えられたものであり、拡張現実空間を利用したマルチプレイ型のゲームの品質向上を目的とする。より具体的には、手振れなどのプレーヤ視点の不安定性に対する耐性を上げることを目指すものである。
【課題を解決するための手段】
【0007】
上述の課題を解決するための第1の形態は、撮影手段及び表示手段を備えたコンピュータに、基準方向が表されたマーカが写るように前記撮影手段により撮影されたライブビューにオブジェクトを合成表示させてゲームを実行させるためのプログラムであって、
前記ライブビュー内における前記マーカの位置を基準とした仮想3次元空間における前記コンピュータの位置を周期的に算出する位置算出手段(例えば、図1の制御基板1550、図11の処理部200、ゲーム演算部202、図12の自機情報算出部206、相対位置算出部207、図19のステップS68)、
現在から遡って所与の時間分、或いは、所与の回数分の前記位置算出手段により算出された複数の算出位置を用いて、前記コンピュータの現在位置を決定する現在位置決定手段(例えば、図1の制御基板1550、図11の処理部200、ゲーム演算部202、図12の現在位置決定部209、図19のステップS80)、
前記仮想3次元空間中の所与の位置にオブジェクトを配置するオブジェクト配置手段(例えば、図1の制御基板1550、図11の処理部200、ゲーム演算部202、図12のキャラクタ表示制御部230、図21のステップS222)、
前記現在位置決定手段により決定された現在位置から前記オブジェクトを見た画像を、前記ライブビューに合成する合成手段(例えば、図1の制御基板1550、図11の処理部200、画像生成部260、CG合成部264、図17のステップS312〜S314)、として前記コンピュータを機能させるためのプログラムである。
【0008】
また、別形態として、撮影手段及び表示手段を備え、基準方向が表されたマーカが写るように前記撮影手段により撮影されたライブビューにオブジェクトを合成表示する電子機器であって、前記ライブビュー内における前記マーカの位置を基準とした仮想3次元空間における前記コンピュータの位置を周期的に算出する位置算出手段と、現在から遡って所与の時間分、或いは、所与の回数分の前記位置算出手段により算出された複数の算出位置を用いて、前記コンピュータの現在位置を決定する現在位置決定手段と、前記仮想3次元空間中の所与の位置にオブジェクトを配置するオブジェクト配置手段と、前記現在位置決定手段により決定された現在位置から前記オブジェクトを見た画像を、前記ライブビューに合成する合成手段と、を備えた電子機器を構成することができる。
【0009】
第1の形態によれば、マーカに対するコンピュータの位置を周期的に算出しつつ、最新の位置から所与の時間分或いは所与の回数分の過去の位置を元にして、コンピュータの現在位置を算出できる。そして、この現在位置から仮想3次元空間に配置されたオブジェクトの画像(CG:コンピュータグラフィックス)を生成することができる。つまり、手ブレや急激な撮影方向の変化があったとしても、AR空間で表示されるオブジェクトの移動は実際の変化よりも抑制される。よって、安定した見やすいゲーム画面となる。
【0010】
第2の形態は、前記現在位置決定手段が、前記複数の算出位置を加重平均することで前記コンピュータの現在位置を決定する手段である第1の形態のプログラムである。
【0011】
第2の形態によれば、第1の形態と同様の効果が得られるとともに、複数の算出位置を加重平均することで、マーカに対するコンピュータの位置の変化をどの程度実際のオブジェクトの動きに影響させるかを重み付けの調整により最適化することが可能となる。
【0012】
第3の形態は、前記現在位置決定手段が、前記加重平均に用いる前記算出位置それぞれの重みを、前記位置算出手段による算出時期に応じて変更する第1の重み変更手段(例えば、図12の現在位置決定部209、図19のステップS78)を有する、第2の形態のプログラムである。
【0013】
第3の形態によれば、第2の形態と同様の効果が得られるとともに、算出時期別に重み付けを行うことができる。
【0014】
第4の形態は、前記現在位置決定手段が、前記加重平均に用いる前記算出位置それぞれの重みを、当該算出位置と前記マーカ間の距離に応じて変更する第2の重み変更手段(例えば、図12の現在位置決定部209、図19のステップS78)を有する第2又は第3の形態のプログラムである。
【0015】
第4の形態によれば、第3の形態と同様の効果が得られるとともに、算出位置とマーカとの距離に応じて重み付けを調整することができる。
【0016】
第5の形態は、前記コンピュータの位置及び/又は姿勢の所与の単位時間当たりの変化量を計測する変化量計測手段(例えば、図1の制御基板1550、3軸ジャイロ1556、3軸加速度センサ1557、図25のゲーム演算部202、変化量算出部213F、図26のステップS26F)、
前記変化量計測手段の計測結果を用いて、前記位置算出手段の算出間隔を変更する算出間隔変更手段(例えば、図1の制御基板1550、図25のゲーム演算部202、算出間隔設定部214F、図26のステップS27F)、として前記コンピュータを更に機能させるための第1〜第4の何れか一の形態のプログラムである。
【0017】
第5の形態によれば、第1〜第4の形態の何れかと同様の効果が得られるとともに、更に算出間隔を調整し、より効果を高めることができる。
この場合、第6の形態として、前記算出間隔変更手段が、更に、前記位置算出手段により算出された算出位置と前記マーカ間の距離に応じて前記算出間隔の変更量を変更する、第5の形態のプログラムを構成してもよい。
【0018】
第7の形態は、前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段(例えば、図1の制御基板1550、図11の処理部200、ゲーム演算部202、図12の認識状態判定部222、図19のステップS60〜S64)、
前記認識不能状態が検出されている間、前記コンピュータの姿勢変化に応じて前記オブジェクトの表示向きを制御する認識不能時向き制御手段(例えば、図1の制御基板1550、図11の処理部200、ゲーム演算部202、図12の位置変化抑制制御部208、図19のステップS72)、
として前記コンピュータを更に機能させるための第1〜第6の何れかの形態のプログラムである。
【0019】
第7の形態によれば、第1〜第6の形態と同様の効果が得られるとともに、マーカが認識不能であるので現実空間とCG空間との座標合わせを正確に行えなくなっているが、コンピュータの姿勢変化に応じて暫定的にオブジェクトの表示向きを制御することで、見かけ上、マーカが認識不能であることが分かり難くなる。マーカが認識不能になったら即ゲーム中断といったことを回避できる。
【0020】
第8の形態は、前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段(例えば、図1の制御基板1550、図11の処理部200、ゲーム演算部202、図12の認識状態判定部222、図19のステップS60〜S64)、
前記認識不能状態から前記マーカが再び認識できるようになった認識復帰状態を検出する認識復帰状態検出手段(例えば、図1の制御基板1550、図11の処理部200、ゲーム演算部202、図12の認識状態判定部222、図19のステップS60〜S64)、
前記認識不能状態が検出されている間、前記ライブビュー内における前記オブジェクトの表示位置の変化を抑制するオブジェクト位置変化抑制制御手段(例えば、図1の制御基板1550、図12の位置変化抑制制御部208、図19のステップS72)、
として前記コンピュータを更に機能させるための第1〜第6の形態の何れかのプログラムである。
【0021】
第8の形態によれば、第1〜第6の形態の何れかと同様の効果が得られるとともに、マーカが認識不能になっている間、オブジェクトの表示位置変化を抑制することができる。
【0022】
第8の形態は、前記認識不能状態が検出されている間、前記コンピュータの姿勢変化に応じて前記オブジェクトの表示向きを制御する認識不能時向き制御手段(例えば、図1の制御基板1550、図11の処理部200、ゲーム演算部202、図12の位置変化抑制制御部208、図19のステップS72)として前記コンピュータを更に機能させるための第7の形態のプログラムである。
【0023】
第8の形態によれば、第7の形態と同様の効果が得られるとともに、マーカが認識不能であるので現実空間とCG空間との座標合わせを正確に行えなくなっているが、コンピュータの姿勢変化に応じて暫定的にオブジェクトの表示向きを制御することで、見かけ上、マーカが認識不能であることが分かり難くなる。マーカが認識不能になったら即ゲーム中断といったことを回避できる。
【0024】
第9の形態は、第1〜第8の何れかの形態のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体である。
【0025】
ここで言う「情報記憶媒体」とは、例えば磁気ディスクや光学ディスク、ICメモリなどを含む。第9の形態によれば、第1〜第8の形態の何れかのプログラムをコンピュータに読み取らせて実行させることによって、コンピュータに第1〜第8の形態の何れかと同様の効果を発揮させることができる。
【図面の簡単な説明】
【0026】
【図1】第1実施形態においてゲームプレイために使用されるコンピュータに相当するゲーム装置の構成例を示す図。
【図2】第1実施形態におけるプレイスタイルを説明するための概念図。
【図3】ゲーム画面及びライブビューの一例を示す図。
【図4】敵キャラクタを配置制御するために設定される領域の概念図。
【図5】基本領域の概念図。
【図6】要素領域の設定方法を示す概念図。
【図7】要素領域の奥行の考え方を示す概念図。
【図8】ARマーカに対するプレーヤ視点の相対位置と相対姿勢の利用形態について説明するための概念図。
【図9】ARマーカをロストした場合における相対位置と相対姿勢の利用形態を説明する原理図。
【図10】ホスト機能発現機の切り換えの仕組みを説明するための概念図。
【図11】第1実施形態における機能構成例を示す機能ブロック図。
【図12】第1実施形態におけるゲーム演算部の機能構例を示す機能ブロック図。
【図13】ARマーカ登録データのデータ構成例を示す図。
【図14】ゲーム参加機登録データのデータ構成例を示す図。
【図15】自機情報キューのデータ構成例を示す図。
【図16】敵キャラクタ配置情報キューのデータ構成例を示す図。
【図17】第1実施形態における主たる処理の流れを説明するためのフローチャート。
【図18】ゲーム前準備処理流れを説明するためのフローチャート。
【図19】自機情報算出処理流れを説明するためのフローチャート。
【図20】ホスト機能発現機設定処理流れを説明するためのフローチャート。
【図21】ホスト機能実行処理流れを説明するためのフローチャート。
【図22】基本領域設定処理の流れを説明するためのフローチャート。
【図23】要素領域設定処理流れを説明するためのフローチャート。
【図24】ホスト機能実行処理流れを説明するためのフローチャート。
【図25】第2実施形態におけるゲーム演算部の機能構成の一例を示す機能ブロック図。
【図26】第2実施形態における主たる処理の流れを説明するためのフローチャート。
【図27】仮想カメラとプレーヤ視点とプレーヤキャラクタの相対位置関係のありようの変形例を示す概念図。
【発明を実施するための形態】
【0027】
〔第1実施形態〕
本発明を適用した実施形態として、マーカ方式ARを用いて実現される拡張現実空間内でマルチプレイ型シューティングゲームを実行する例を挙げて説明する。
【0028】
図1は、本実施形態においてゲームプレイのために使用されるコンピュータであり、電子機器の一種であるゲーム装置1500の構成例を示す図であって、(1)正面外観図、(2)背面外観図である。ゲーム装置1500は、方向入力キー1502と、ホームキー1504と、タッチパネル1506と、スピーカ1510と、マイク1512と、GPS(Global Positioning System)アンテナ1514と、CCDカメラモジュール1516と、制御基板1550と、コンピュータ読み出し可能な情報記憶媒体であるメモリカード1540からデータを読み書きできるメモリカード読取装置1542と、を備える。その他、図示されていない内蔵バッテリーや電源ボタン、音量調節ボタン等が設けられている。
【0029】
CCDカメラモジュール1516は、オートフォーカス機構と、CCDイメージセンサと、イメージ信号生成チップとを搭載したモジュールであって、ゲーム装置1500の背面方向を撮影できるように配置されている。尚、イメージセンサ素子はCCDに限らず、CMOSなどその他の方式の素子でも良い。
【0030】
制御基板1550は、CPU(Central Processing Unit))1551やGPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などの各種マイクロプロセッサ、ASIC(Application Specific Integrated Circuit)、VRAMやRAM,ROM等の各種ICメモリ1552を適宜搭載する。
【0031】
そして、制御基板1550には、携帯電話や無線LANなどの無線基地局と無線接続するための無線通信モジュール1553と、GPSモジュール1554と、電子コンパス1555と、3軸ジャイロ1556と、3軸加速度センサ1557とが搭載されている。
その他、タッチパネル1506のドライバ回路、方向入力キー1502及びホームキー1504からの信号を受信する回路、スピーカ1510へ音声信号を出力する出力アンプ回路、マイク1512から入力された音声の信号を生成する入力信号生成回路、メモリカード読取装置1542への信号入出力回路といった所謂I/F回路(インターフェース回路)、が搭載されている。これら制御基板1550に搭載されている各要素は、それぞれバス回路などを介して電気的に接続され、データの読み書きや信号の送受信が可能に接続されている。
【0032】
GPSモジュール1554は、GPSアンテナ1514とともにGPSを利用した位置情報を取得する手段を構成する。GPSモジュール1554は、GPSアンテナ1514で受信したGPS衛星3からの信号に基づいて、所定時間毎(例えば、1秒毎)に、位置情報(例えば、緯度・経度)及びその他の情報(絶対時間)を、制御基板1550で演算処理可能なデータとして出力する。尚、測位に利用するシステムはGPSに限らない。その他の衛星測位システムでも良いし、衛星を用いない測位システムを用いることもできる。後者の例としては、例えば、無線通信モジュール1553が無線接続できる無線基地局から当該基地局に予め設定されている位置情報を取得したり、3つの無線基地局からの信号到達時間差を利用した三角測量方式により位置情報を算出するとしても良い。
【0033】
制御基板1550は、ゲーム実行に必要なゲームプログラムやデータをメモリカード1540から読み出してICメモリ1552に一時記憶する。そして、ゲームプログラムを実行して演算処理を実行し、方向入力キー1502やホームキー1504、タッチパネル1506からの操作入力、3軸ジャイロ1556や3軸加速度センサ1557で検出される姿勢変化や加速度変化に応じてゲーム装置1500の各部を制御してビデオゲームを実行する。尚、本実施形態では、ゲーム装置1500は必要なプログラムや各種設定データをメモリカード1540から読み出す構成としているが、サーバ装置等から通信回線1を介してダウンロードする構成としても良い。
尚、ゲーム装置1500はコンピュータであるから本明細書で言う「自機」は「自コンピュータ」と読み替えることができる。同様に「他機」は「他コンピュータ」と読み替えることができる。
【0034】
[ゲームの概要]
次に、本実施形態におけるゲームの概要を説明する。
図2は、本実施形態におけるプレイスタイルを説明するための概念図であって、(1)現実空間における様子を示す斜視図、(2)ゲーム装置1500のCCDカメラモジュール1516と、ARマーカ10との関係を示す図、(3)ゲームに登場するオブジェクトを配置する仮想3次元空間における様子を示す斜視図である。
【0035】
本実施形態におけるビデオゲームは、ARマーカ10を利用して実現されるAR空間を舞台としたゲーム、いわゆるARゲームに属するマルチプレイシューティングゲームに属する。図2(1)に示すように、プレーヤPL1〜PL3は、それぞれゲーム装置1500を手に持って、テーブル9等に置かれたARマーカ10をCCDカメラモジュール1516で撮影しながらプレイする。図中のプレーヤPL1のゲーム装置1500が当初のホスト機であって、ゲームに参加するクライアント機の受付処理を行ったり、敵キャラクタ7などのNPCの制御を受け持つ。プレーヤPL2,PL3のゲーム装置1500がゲスト機であり、NPCの制御データをホスト機から取得して利用する。尚、プレーヤの数は図に示すような3名に限らないのは勿論である。
【0036】
本実施形態におけるARマーカ10は、少なくとも一面に基準方向が表されるとともに、当該マーカの種類を識別するためのデザインが施された規定形状のカードであり、複数種類存在する。
本実施形態のゲーム装置1500では、CCDカメラモジュール1516は装置本体の背面方向を撮影するように、装置本体の背面側に固定されている。よって、本実施形態では、プレーヤの視点位置は、ゲーム装置1500の位置であり、CCDカメラモジュール1516の視点位置と同じに扱うことができる。同様に、プレーヤの視点姿勢は、ゲーム装置1500の姿勢であり、CCDカメラモジュール1516の姿勢と同じ扱いとなる。
【0037】
図2(2)に示すように、ゲーム装置1500は、CCDカメラモジュール1516で撮影した画像からARマーカ10を検出するとともにその種類を認識する。また、認識したARマーカ10までの3次元の相対位置(Xc,Yc,Zc)や相対姿勢(ωp,ωy,ωr)を計測する。例えば、ARマーカ10(カード)の実サイズが規定されているので、CCDカメラモジュール1516の撮影画像中のARマーカ10が占める画素サイズから現実空間における尺度を基準とした相対位置を求めることができる。
【0038】
そして、計測した相対位置や相対姿勢に基づいて、ARマーカ10を配置した面(例えば、テーブル面)が仮想3次元空間内の基準面(例えば、ゲーム世界における地面、仮想マップなどとも呼ぶ)と一致するように、ゲーム空間を形成する。ゲーム空間は仮想3次元空間の座標系(Xw,Yw,Zw)で表され、ARマーカ10を基準とした実空間の座標系(Xm,Ym,Zm)に合致させる。
【0039】
図2(3)に示すように、仮想3次元空間は所謂CG空間である。仮想3次元空間には、標的となる敵キャラクタ7や背景物などのオブジェクトが配置されてゲーム空間が形成される。そして、仮想3次元空間には、プレーヤPL1〜PL3それぞれのプレーヤキャラクタPC1〜PC3の他、敵キャラクタ7や、各キャラクタから発射される飛翔体6(図2では非図示;図3にて図示)などのオブジェクトも配置される。
【0040】
各ゲーム装置1500における仮想3次元空間は、ARマーカ10が基準とされるため、原則として共通の座標軸として定義される。仮想3次元空間には、各ゲーム装置1500の仮想カメラCM1〜CM3が設定される。各ゲーム装置1500に対応するプレーヤキャラクタPC1〜PC3は、対応するゲーム装置の仮想カメラCM1〜CM3に対して、所定の相対位置(Xp,Yp,Zp)に配置される。具体的には、本実施形態では、三人称視点に相当するように、プレーヤキャラクタPC1〜PC3は仮想カメラCM1〜CM3の斜め下前方に配置される。尚、プレーヤキャラクタと仮想カメラとの相対位置関係は、予め決定されているとは言っても絶対的な固定値を意味するものでは無く、適当なズレや揺らぎを含むことができる。
【0041】
図3は、本実施形態におけるゲーム画面及びライブビューの一例を示す図であって、(1)プレーヤPL1が所持するゲーム装置1500におけるゲーム画面の例、(2)CCDカメラモジュール1516により撮影されるライブビューの例である。
【0042】
各ゲーム装置1500では、それぞれが対応する仮想カメラCM1〜CM3から見たCG(コンピュータグラフィックス)画像を生成し、それをCCDカメラモジュール1516で撮影したライブビューに合成表示する。
ちなみに、図3(1)の例では、プレーヤPL1のプレーヤキャラクタPC1と、ARマーカ10の周りにいる敵キャラクタ7と、テーブル9脇の他のプレーヤPL2と、対応するプレーヤキャラクタPC2とが画面に映っている。また、画面中央には、プレーヤPL1がゲーム中に使用する射撃用の照準8が表示されている。このように現実空間の映像にゲームキャラクタ等のCGが合成されてプレーヤに認識される仮想世界が、ゲームの舞台となる「拡張現実空間」である。
【0043】
本実施形態では、CCDカメラモジュール1516の撮影画角と仮想カメラCM1〜CM3の画と角は異なる。
CCDカメラモジュール1516は、撮影範囲が広い事に意味があるので、撮影画角は広角に設定されている。例えば、35mmフィルム用レンズ換算で焦点距離15mm〜24mm、公称対角画角90°前後などとする。一方、仮想カメラCM1〜CM3の撮影画角は、ゲーム装置1500のタッチパネル1506越しに現実空間を透かし見るようにしながらARゲームをプレイすることを考えて、CCDカメラモジュール1516の画角の概ね50%程度となるように狭く設定されている。プレイスタイルを考慮して、プレーヤが軽くひじを曲げた状態でゲーム装置1500を前方にかざした時に、あたかもタッチパネル1506の表示部分から現実世界を透かし見ているように錯覚させる撮影画角とすると好適である。例えば、35mmフィルム用レンズ換算で40mm〜55mm、公称対角画角45°前後などとする。
従って、図3(1)で示したゲーム画面の背景は、図3(2)で示すCCDカメラモジュール1516で撮影したライブビューそのままではなく、仮想カメラCM1〜CM3の撮影画角に合致するようにクロップ(画像の端をカットして使用)されて得られたものである。
【0044】
[敵キャラクタの配置について]
さて、前述のように本実施形態のゲームはマーカ方式のARゲームであるので、現実空間と仮想3次元空間の座標系を適切にマッチングさせるためには、ARマーカ10を常にCCDカメラモジュール1516の撮影範囲に含まれるようにプレイするのが望ましい。
【0045】
シューティングゲームとしての特性上、プレーヤは照準8を敵キャラクタ7に合わせるようにゲーム装置1500の位置や姿勢を変化させながらプレイすることになる。よって、敵キャラクタ7がARマーカ10からあまり離れると、敵キャラクタ7を狙う行為自体がARマーカ10のロスト(撮影範囲に写らなくなる状態)を誘発することになる。しかし、プレーヤは照準8が敵キャラクタ7から外れないようにゲーム装置1500の位置や姿勢を保とうとする。そのため、上手く敵キャラクタ7の位置をコントロールするならば、ARマーカ10が撮影範囲内に含まれるように(換言するとARマーカ10が撮影範囲外とならないように)仕向けることもできる。
【0046】
そこで本実施形態では、図4に示すように、ゲームに参加するゲーム装置の位置や姿勢に応じてARマーカ10をロストし難いように敵キャラクタ7を配置できる配置領域12(図中、網掛け表示された範囲)を設定し、敵キャラクタ7をこの配置領域12内に留まるように配置制御する。この配置領域12は、本実施形態では基本領域13と、ゲーム参加機毎(つまりはプレーヤ視点毎)に求められる要素領域14との重合領域として設定される。尚、図の例では、理解を容易にするためにゲーム装置1500を二つのみ表示している。
【0047】
図5は、基本領域13の設定方法を示す概念図である。
基本領域13は、ARマーカ10を中心とし、基本長さLbで規定される所定形状の範囲である。そして、基本長さLbは、ゲーム参加機のARマーカ10からの相対距離Lc(図2(2)参照)を変数とした関数f(Lc)で記述される。
【0048】
基本領域13の形状は、ARマーカ10の種類によって予め設定されている。図5の例では、基本長さLbが半径の球形を例示しているが、例えば、立方体形状の範囲として、基本長さLbを立方体中心から8つの頂点までの距離としても良い。形状と基準長Lbを形状のどこの寸法に割り当てるかは適宜変更できる。
【0049】
関数f(Lc)の変数となる相対距離Lcは、ゲーム参加機それぞれのARマーカ10に対する個別の相対距離Lcの内、最小の相対距離Lcを採用する。但し、関数f(Lc)の大きさに最小値が設定されている。この最小値は、敵キャラクタ7の行動範囲が小さくなり過ぎないように考慮して予め設定されている。尚、関数f(Lc)の変数として採用される相対距離Lcは、ゲーム参加機別の相対距離Lcのうちの最小値に限らず、最大値や平均値、中央値などとしても良い。
【0050】
図6は、要素領域14の設定方法を示す概念図である。要素領域14は、ゲーム装置1500(つまりプレーヤ視点)を基準として、ARマーカ10がCCDカメラモジュール1516の撮影範囲から外れない程度の姿勢変化を許容できる撮影範囲として定められる。
【0051】
具体的には、今現在、CCDカメラモジュール1516によるライブビューに、図6(1)に示すようにARマーカ10が写っていると仮定する。尚、外側矩形枠が撮影枠でありライブビューの輪郭を示している。対する内側の矩形枠が、クロップされてゲーム画面の背景として使用される輪郭を示している。
【0052】
「ARマーカ10がCCDカメラモジュール1516の撮影範囲から外れない程度の姿勢変化を許容できる撮影範囲」を求めるために、本実施形態では先ずゲーム装置1500の位置が固定されている前提で、どこまでCCDカメラモジュール1516の撮影方向の変化を許容できるかを考える。
【0053】
具体的には、図6(2)に示すように、現在の写っているARマーカ10のサイズをそのままに、ARマーカ10の右端と撮影枠の右端が所定条件を満たして近接し、且つARマーカ10の下端と撮影枠の下端とが近接する条件を満たす「第1姿勢」を求めるとともに、当該姿勢におけるCCDカメラモジュール1516の光軸AL1を求める。そして、第1姿勢から対角方向に撮影方向を振ったと仮定し、ARマーカ10の左端が撮影枠の左端とが近接し、且つARマーカ10の上端と撮影枠の上端とが近接する「第2姿勢」を求めるとともに、当該姿勢におけるCCDカメラモジュール1516の光軸AL2を求める。
【0054】
次いで、図6(3)に示すように、ARマーカ10の左端と撮影枠の左端が所定条件を満たして近接し、且つARマーカ10の下端と撮影枠の下端とが近接する条件を満たす「第3姿勢」を求めるとともに、当該姿勢におけるCCDカメラモジュール1516の光軸AL3を求める。そして、第3姿勢から対角方向に撮影方向を振ったと仮定し、ARマーカ10の右端が撮影枠の右端とが近接し、且つARマーカ10の上端と撮影枠の上端とが近接する「第4姿勢」を求めるとともに、当該姿勢におけるCCDカメラモジュール1516の光軸AL4を求める。
【0055】
そして、図6(4)に示すように、要素領域14をCCDカメラモジュール1516の視点位置から4本の光軸AL1〜AL4に囲まれた四角錐形領域とする。
【0056】
この四角錐形領域の高さに相当する要素領域14の奥行Dbは、プレーヤ視点から見たARマーカ10の平面方向に対する俯角θcに基づいて設定される(図7参照)。
【0057】
図7は、要素領域14の奥行の考え方を示す概念図である。
図7(1)に示すように、要素領域14の奥行Dbを、ARマーカ10を適正に認識できる視点からの最大距離と考える。図7(2)に示すように、ARマーカ10の認識性能はCCDカメラモジュール1516がARマーカ10を真正面から撮影する状態(俯角θc=π(90°))が最も高くなり、奥行Dbが最大となる(Db1)。そして、ARマーカ10の平面(デザイン面)に対して俯角θcが浅くなる(小さくなる)につれて認識性能は低下し(Db2)、やがて認識性能が実用的でないレベルに達する(θmin)と考える事ができる。
【0058】
俯角θcと奥行Dbとの関係は、CCDカメラモジュール1516の撮像素子や光学系の仕様に基づく解像力や、ARマーカ10の大きさなどにより決まる。また、本実施形態では、大きさの異なるARマーカ10を利用可能になっていて、マーカのサイズにより予めカテゴリ分けされている。どのカテゴリに属するかはARマーカ10のデザイン認識により識別できるようになっている。そこで、図7(3)に示すように、俯角θcを変数として奥行Dbを算出する関数g(θc)を、ARマーカ10のカテゴリ毎に設定しておいて、認識されたARマーカ10のカテゴリに応じた関数g(θc)を選択し、そのときの俯角θcを用いて奥行Dbを求める。
【0059】
CCDカメラモジュール1516の撮影画角よりも仮想カメラCM1〜MC3の撮影画角が狭いこと、そして照準8がゲーム画面中央に表示されることを考慮すると、要素領域14で示される撮影範囲内であればプレーヤがゲーム装置1500の位置や姿勢を多少変化させたとしても、照準8で敵キャラクタ7を狙っているのであれば、CCDカメラモジュール1516の撮影範囲内にARマーカ10が写るようにすることができる。
【0060】
さて、図4に示すように、配置領域12は、基本領域13とゲーム装置毎(つまりはプレーヤ視点毎)に求めた各要素領域14(14a,14b)との4つの領域の重合部分として設定される。
【0061】
前述のように、本実施形態ではCCDカメラモジュール1516の撮影画角に対する仮想カメラCM1〜CM3の撮影画角との関係、及び照準8がゲーム画面中央に表示されることを合わせると、配置領域12の中に敵キャラクタ7が配置される限りにおいては、ARマーカ10が常に正しく認識され、ゲームキャラクタの表示位置が現実空間とずれるなどの不自然な表示は起こらない。
【0062】
また、タッチパネル1506に表示されるゲーム画面上には、ARマーカ10の姿が映っていなくとも、CCDカメラモジュール1516としてはちゃんとARマーカ10を撮影し続けることができる。つまり、ゲーム画面内に常にARマーカ10が写っていない状態でもARゲームは正常に継続され続け、例えば、敵キャラクタ7はARマーカ10を置いていたテーブル面に沿って歩行するように見える。
プレイ中にARマーカ10がゲーム画面内に写っていない状態でも、実空間との齟齬のない敵キャラクタ7が表示されることで、プレーヤにとってみればARマーカ10から離れた場所ではプレイできないのではないかという閉塞感が低減され、今自分が居るその広い空間全てを使ってゲームが行われてしているかのような開放的な感覚が得られることとなり、ARゲームとしての興趣が高まる。
【0063】
また、こうして設定された配置領域12は、その時々に応じて変形する複数の要素領域14の影響により基本領域13とは異なる形状をなすことになるので、敵キャラクタ7の行動範囲が不規則となりゲームの興趣を高める効果が得られる。
【0064】
加えて、配置領域12の設定に基本領域13を含めることで、全てのゲーム装置1500でARマーカ10を認識できない状態となり要素領域14が得られない事態となっても、敵キャラクタ7の配置位置を適切に保つことができる。
【0065】
[ARマーカのロストを想定した補助機能:その1]
これまで述べたようにして配置領域12を設定したとしても、必ずしも常にARマーカ10を撮影し続けることができるとは限らない。例えば、プレイに興奮してゲーム装置1500を敵キャラクタ7に向ける動作が過大となり、意図せずにARマーカ10がCCDカメラモジュール1516の撮影範囲から外れることも想定される。そこで本実施形態では、ARマーカ10をロストした場合でもゲーム進行に不都合が起きないように二つの補助機能を設けている。
【0066】
先ず、第1の補助機能について説明する。
図8は、第1の補助機能の前提となるARマーカ10に対するプレーヤ視点の相対位置と相対姿勢の利用形態について説明するための概念図である。
本実施形態におけるゲーム装置1500は、所定サイクルで時刻t1,t2,…,tm(mは自然数:算出タイミングの識別数)におけるARマーカ10に対する自身(CCDカメラモジュール1516)の相対位置(Xcn,Ycn,Zcn)及び相対姿勢(ωpn,ωyn,ωrn)を算出する。そして、算出した相対位置及び相対姿勢をキュー(queue:待ち行列)に先入れ先出し方式で所定数だけ格納・管理する。キューに格納されている相対位置及び相対姿勢はそれぞれ加重平均され、加重平均された値が現在の位置であり現在の姿勢とみなされ、CG空間における仮想カメラCMの位置及び姿勢として用いられる。図8の例では、キューに4セットの相対位置及び相対姿勢が格納されているように例示しているが、格納数は適宜設定することができる。
【0067】
加重平均における重み付けwn(nは自然数:算出タイミングの識別数)は、算出順nと、ARマーカ10からプレーヤ視点までの相対距離Lを変数とする重み付け関数h(n,Lc)によって決定される。
【0068】
重み付け関数h(n,Lc)は適宜設定可能であるが、本実施形態では、算出順nについては、最も新しい相対位置及び相対姿勢に付与される重み付けwnが最も大きく、それ以外が相対的に小さくなるように設定されている。また、相対距離Lcについては、相対距離Lcが大きくなるほど算出順n違いによる重み付けwnの差が小さくなり、過去の相対位置及び相対姿勢にも重きがおかれるように設定されている。
【0069】
ARの表示制御に関わる仮想カメラCMの制御に、相対位置及び相対姿勢を均した値(現在位置、現在姿勢と呼ぶ)を用いることによって、ゲーム装置1500をかざす手の揺れによる所謂手ブレによるジッター(ゲームキャラクタなどのAR表示体の細かな不快な振動)や、ゲーム装置1500を急激に移動させたり姿勢変化させた場合であって、プレーヤキャラクタ等が瞬間移動すると言った不自然表示を抑制することができる。
【0070】
また、ゲーム装置1500がARマーカ10を遠くから撮影しているほど手ブレ等の影響は大きくなるところであるが、重み付け関数h(n,Lc)の相対距離Lcについての特性は、相対距離Lcが大きいほど過去値に対する重み付けwnが相対的に大きくなるように設定されているので、その影響を軽減できる。加えて、重み付け関数h(n,Lc)の相対距離Lcの特性によれば、ARマーカ10を近くから撮影している場合には、過去値への重み付けwnが相対的に小さくなる。相対的に手ブレの影響が大きくなることになるが、この場合のブレは近接戦闘の緊迫感や臨場感を演出する視覚効果を生み出すので有益となる。
【0071】
そして、本実施形態ではこうした加重平均を用いた制御を前提として、ARマーカ10をロストした場合には、ロストしている間、ARマーカ10に対する相対位置を固定と仮想し、姿勢変化のみ起きるものと見なして制御する。
【0072】
図9は、ARマーカ10をロストした場合における相対位置と相対姿勢の利用形態を説明する原理図である。
本実施形態では、ARマーカ10をロストした場合、相対位置はARマーカ10をロストしてから認識が再開されるまでの間、ロストする直前の値に固定される。図9の例では、t4まではARマーカ10がCCDカメラモジュール1516の撮影範囲にあって、正しく認識されて正しくマーカ基準の相対位置が求められていたが、t5のタイミングでARマーカ10はカメラで写されない「ロスト」した状態になっている。そこで、キューに格納されたタイミングt5〜t7の間の相対位置の値は、ロスト直前のt4のタイミングにおける値に固定する。一方、姿勢については加重平均を行う。つまり、タイミングt5〜t7の間ゲーム装置1500は位置移動せずに姿勢変化していると見なす。
【0073】
実際のゲーム装置1500はロスト中でも位置移動しているかもしれないが、一時的に相対位置を固定扱いにして処理を継続することで、ゲーム画面の表示が変わる状態を維持できる。相対位置が正しく算出できていない可能性があったとしてもゲームを中断させずに継続させることができる。
【0074】
また、「プレーヤ視点の移動が無い前提」の制御に切り換わったとしても、相対位置(仮想カメラの位置)が固定とされてAR表示の制御が継続されるので、プレーヤキャラクタ等の不自然な瞬間移動や、ギクシャクした動きなどを効果的に抑制できる。
【0075】
[ARマーカのロストを想定した補助機能:その2]
また、本実施形態では、ARマーカ10をロストした場合を想定した第2の補助機能として、ゲスト機がホスト機能を代行することができる。換言すると、ホスト機能をマーカの認識状態に応じてゲーム参加機内で継承させることができる。
【0076】
図10は、ホスト機能発現機の切り換えの仕組みを説明するための概念図であって、ゲームに参加するゲーム装置1500が3台と仮定した場合の、各ゲーム装置のARマーカ10の認識状態の組み合わせと、その組み合わせにおいてどのゲーム装置1500がホスト機能を発現するかの例を示している。尚、マーカ認識状態の欄の「In Sight」はARマーカ10を認識できている状態を意味し、「LOST」はARマーカ10が撮影範囲から外れて認識できない状態(認識不能状態)にあることを意味している。
【0077】
本実施形態では、当初からのホスト機であるゲーム装置1500aは、ゲームへの参加の受付処理を行う。受付されたゲーム装置1500b,1500cはゲスト機となる。
ホスト機であるゲーム装置1500aは、受付処理に伴って、自身を発現優先順位第1位に設定するとともに、ゲスト機に対しては発現優先順位第2位以降を受付順に付与する。図中では、ゲーム装置のイラストに付与された白数字がそれぞれの発現優先順位を表している。
【0078】
また、本実施形態のゲーム装置1500a,1500b,1500cは、ARマーカ10をロストした場合に所定の認識不能信号を他機に送信することができる。つまり、各ゲーム装置は、他機からの認識不能信号を受信したか否かによって他機のマーカ認識状態を知ることができる。
【0079】
図10(1)の組み合わせで示すように、ゲームに参加している全てのゲーム装置がARマーカ10を認識できている間は、当初からのホスト機であるゲーム装置1500aが、ホスト機としての機能を発現する。
すなわち、自プレーヤのプレーヤキャラクタPC1に加えて、敵キャラクタ7などのNPC(ノンプレーヤキャラクタ)、背景物などのオブジェクトの制御、飛び交う銃弾などのエフェクトオブジェクトの制御を行い、それらの配置位置情報等をゲスト機へ配信する。勿論、敵キャラクタ7に係る制御には、配置領域12の設定処理が含まれる。
【0080】
一方、ゲスト機であるゲーム装置1500b,1500cでは、操作入力や装置の移動によって各々のプレーヤのプレーヤキャラクタPC2,PC3の動作や仮想3次元空間内における位置が制御されるが、敵キャラクタ7等についてはホスト機から得た情報に基づいて仮想3次元空間内での配置を制御する。つまり、オブジェクトの制御に関しては、ホスト機とゲスト機は、クライアント/サーバ型の関係を成している。
【0081】
ここで、もし当初からのホスト機であるゲーム装置1500aがARマーカ10を認識できない状態が発生すると、実空間と仮想3次元空間との位置合わせにズレが発生し、敵キャラクタ7が傾いて配置されるなどの不具合が生じる可能性が高くなる。ホスト機から敵キャラクタ7の配置位置情報を取得しているゲスト機では、ARマーカ10をロストしていないにも係わらず敵キャラクタ7が不自然に表示されることになってしまう。
【0082】
そこで、本実施形態のゲーム装置1500は、ARマーカ10のロストした状態を検出して所定の「認識不能信号」を他機へ発信する。もし、ホスト機がARマーカ10をロストした場合には、認識不能信号の送信とともにホスト機能を停止する。
一方で、それまでゲスト機であったゲーム装置は、それぞれ、受信した認識不能信号に基づいて自身に付与された発現優先順位より上位の他機全てが認識不能信号を出している場合には、ホスト機能を発現させるべきと判断して、ホスト機能を発現させる。
【0083】
具体的には、図10(2)の組み合わせで示すように、当初からのホスト機(ゲーム装置1500a)が認識不能状態となった場合、認識不能信号を発信して、ゲーム装置1500aはホスト機としての機能を停止しゲスト機として機能し始める。即ち、敵キャラクタ7に係る制御及び制御結果の配信は中断する。
【0084】
一方、発現優先順位第2位のゲスト機(ゲーム装置1500b)は、自身より発現優先順位が上位の機体全てから認識不能信号を受信したのでホスト機能を発現させ、敵キャラクタ7等の制御と制御結果の配信を開始する。つまり、ホスト機能が継承されたことになる。尚、発現優先順位が第3位のゲスト機(ゲーム装置1500c)はそのままゲスト機として機能する。
【0085】
図10(3)の組み合わせで示すように、ホスト機能を発現しているゲーム装置1500bもまたARマーカ10をロストした場合、発現優先順位第2位のゲスト機(ゲーム装置1500b)は、ホスト機能を停止しゲスト機として機能し始める。それに代わって、発現優先順位第3位のゲスト機(ゲーム装置1500c)は、自身より上位の機体全てから認識不能信号を受信したことになるので、ホスト機能を発現すべきと判断してホスト機能を発現させる。
【0086】
図10(3)の組み合わせ状態から、当初のホスト機であるゲーム装置1500aにてARマーカ10の認識が再開されると、ゲーム装置1500aは、ホスト機能を再開させるとともに認識不能通知の発信を停止する。ホスト機能を代行してきたゲーム装置1500cは、ゲーム装置1500aからの認識不能信号を受信しなくなるので、ホスト機能を停止し、再びゲスト機としての機能のみ発現するようになる。
【0087】
このように、本実施形態によれば、ARマーカ10を認識している何れかの機体が、常にARマーカ10を基準としたオブジェクトの位置決め処理を担うように構成できる。よって、もしホスト機であるゲーム装置がARマーカを認識できない状態になると現実空間と仮想3次元空間(CG空間)との位置合わせにズレが発生し、敵キャラクタ7が傾いて配置されるなどの不具合が生じる可能性が高くなるが、本実施形態ではゲスト機によるホスト代行機能によってそうした事態を防ぐことができる。
【0088】
[機能ブロックの説明]
次に、本実施形態を実現するための機能構成について説明する。
図11は、本実施形態におけるゲーム装置1500の機能構成の一例を示す機能ブロック図である。ゲーム装置1500は、操作入力部100と、撮像部104と、姿勢検出部108と、加速度検出部110と、処理部200と、音出力部350と、画像表示部360と、通信部370と、測位信号受信部380と、記憶部500とを備える。
【0089】
操作入力部100は、プレーヤによって為された各種の操作入力に応じて操作入力信号を処理部200に出力する。例えば、ボタンスイッチや、ジョイスティック、タッチパッド、トラックボールといった直接プレーヤが指で操作する素子はもちろん、加速度センサや角速度センサ、傾斜センサ、地磁気センサなど、運動や姿勢を検知する素子などによっても実現できる。図1の方向入力キー1502、ホームキー1504がこれに該当する。3軸ジャイロ1556、3軸加速度センサ1557の検出値を操作入力に利用する場合には、それらも該当することとなる。また、本実施形態の操作入力部100はタッチ操作入力部102を備え、表示画面へ指などで触れることによる操作入力を可能としている。図1のタッチパネル1506がこれに該当する。
【0090】
撮像部104は、撮影対象からの光を受光して電気信号に変換し、デジタル画像データを生成し、処理部200へ出力する。例えば、レンズ、メカシャッター、シャッタードライバ、CCDイメージセンサモジュールやCMOSイメージセンサモジュールといった光電変換素子、光電変換素子から電荷量を読み出し画像データを生成するデジタルシグナルプロセッサ(DSP)、ICメモリなどで実現される。図1ではCCDカメラモジュール1516がこれに該当する。
【0091】
姿勢検出部108は、ゲーム装置1500の姿勢変化を検出し検出信号を処理部200へ出力する。電子コンパスやジャイロスコープなどで実現できる。図1の電子コンパス1555や3軸ジャイロ1556がこれに該当する。姿勢検出は、直交3軸とし、そのうち何れかの軸を撮像部104が撮影する光軸方向に合わせてロール、ピッチ、ヨーの3成分について算出すると好適である。尚、本実施形態では、ゲーム装置1500にCCDカメラモジュール1516が固定されているので、姿勢検出部108は、プレーヤ視点の姿勢変化を検出しているとも言える。
【0092】
加速度検出部110は、ゲーム装置1500に作用している加速度を検出することができる。図1の3軸加速度センサ1557がこれに該当する。尚、本実施形態では、ゲーム装置1500にCCDカメラモジュール1516が固定されているので、加速度検出部110は、プレーヤ視点の移動に伴う加速度を検出しているとも言える。
【0093】
処理部200は、例えばCPUやGPU等のマイクロプロセッサや、ASIC、ICメモリなどの電子部品の適当な組み合わせによって実現される。処理部200は、各機能部との間でデータの入出力制御を行い、所定のプログラムやデータ、操作入力部100からの操作入力信号等に基づいて各種の演算処理を実行して、ゲーム装置1500の動作を制御する。図1では制御基板1550がこれに該当する。
そして、処理部200は、ゲーム演算部202と、音生成部250と、画像生成部260と、通信制御部270と、測位制御部280とを備える。
【0094】
ゲーム演算部202は、本実施形態のゲームを実行するために必要な各種制御を実行する。また、システムクロックを用いた制限時間などの計時処理、フラグ管理処理、などを適宜実行することができる。
【0095】
図12は、本実施形態におけるゲーム演算部202の構成例を示す部分機能ブロック図である。本実施形態のゲーム演算部202は、ゲーム参加管理制御部204と、自機情報算出部206と、自機情報送信制御部220と、他機情報受信制御部221と、認識状態判定部222と、認識不能信号送信制御部223と、ホスト機能発現判断部224と、キャラクタ表示制御部230と、NPC情報送信制御部240と、を含む。
【0096】
ゲーム参加管理制御部204は、マルチプレイのためのゲーム参加関連の処理を実行する。例えば、自機をホスト機/ゲスト機とするかをプレーヤに選択させる処理を実行する。そして、この選択処理にてホスト機に選択された場合には、他機をゲーム参加機として受付・登録する処理と、ゲーム参加機の登録情報の配信に関する処理を実行する。また、ホスト機/ゲスト機に係わらず、自プレーヤにプレーヤキャラクタの種類を選択させるなどのプレーヤキャラクタ設定処理をする。そして、プレーヤキャラクタの設定情報を他機に配信する処理を行う。
【0097】
また、本実施形態のゲーム参加管理制御部204は、発現優先順位設定部205を備える。発現優先順設定部205は、自機がホスト機能を発現している場合に、参加受付に伴って発現優先順位を設定し他機へ配信制御する。
【0098】
自機情報算出部206は、ARマーカ10に対する自機のプレーヤ視点の位置関係に関する情報を算出する。本実施形態では、相対位置算出部207と、現在位置決定部209と、相対姿勢算出部210と、現在姿勢決定部211と、重み付け設定部212とを含む。
【0099】
相対位置算出部207は、ARマーカ10の撮影画像を用いて、当該マーカに対する自機の相対的な位置関係を示す情報を周期的に算出する。つまり、その時点におけるプレーヤ視点の最新の相対位置を計測・算出する。
算出される相対位置の情報の内容は適宜設定可能であるが、例えばARマーカ10の所定位置(例えば、カードの中心や隅の何れか)を基準点とし、ARマーカ10の示す基準方向に基づく3軸直交座標(Xm,Ym,Zm)を求める。そして、当該座標系における相対位置(Xc,Yc,Zc)及び相対距離Lcを算出する。具体的には、撮像部104で撮影した画像を解析してARマーカ10を検出し、当該ARマーカ10の種類と向きとを判定して、マーカ基準の相対位置を算出する。これらの処理は、公知のAR技術を適宜流用することにより実現できる。また、ARマーカ10の種類に対応して予め設定されているカードサイズ(実寸;例えば5cm×7cmなど)と、撮影画像内におけるARマーカ10のドット数とに基づいて相対距離Lcを実寸単位で算出する。
【0100】
そして、本実施形態では、相対位置算出部207は、位置変化抑制制御部208としての機能を有する。
位置変化抑制制御部208は、ARマーカ10を認識できない認識不能状態のときに、ゲーム空間のオブジェクトの位置移動を抑制する処理を行う。具体的には、認識不能となってから認識状態に復帰するまでの間、ゲーム装置の位置の移動を無し(プレーヤ視点の位置移動を無し)と仮定して相対位置を決定する。より具体的には、認識不能以降に新たに算出する相対位置を認識不能になる直前に算出した相対位置に固定し、認識復帰とともにその固定を解除する(図9参照)。換言すると、認識不能状態が検出されている間、コンピュータの姿勢変化に応じてオブジェクトの表示向きを制御する認識不能時向き制御部として機能する。
【0101】
現在位置決定部209は、相対位置算出部207により算出された所定分過去の相対位置情報から最新の相対位置までを、重み付け設定部212によって設定された重み付けWnを用いた加重平均によって、仮想カメラCMの制御に適用される位置情報を算出する(図8参照)。
【0102】
相対姿勢算出部210は、姿勢検出部108による検出結果に基づいて、自機の姿勢情報を周期的に算出する。例えば、撮像部104による光軸方向を基準として、ピッチ、ヨー、ロールの各成分を、ARマーカ10の所定位置(例えば、カードの中心や隅の何れか)を基準点とマーカの示す基準方向に基づく3軸直交座標(Xm,Ym,Zm)に対する相対姿勢(ωp,ωy,ωr)を算出する。
【0103】
現在姿勢決定部211は、所定分過去の姿勢情報から最新の姿勢情報までを重み付け設定部212によって設定された重み付けを用いた加重平均によって、仮想カメラCMの制御に適用される姿勢情報を算出する(図8参照)。
【0104】
重み付け設定部212は、加重平均に処せられる算出時期が異なる情報毎の重み付けWn(図8参照)を、最新の相対距離Lcと対応づけられる算出時期に応じて所定関数又は所定のテーブルデータを参照して決定する。換言すると、加重平均に処せられる自機位置情報や自機姿勢の算出時期に応じて重み付けする第1の重み付け変更機能と、自機位置情報や自機姿勢の算出時におけるARマーカ10との距離Lとに応じて重み付けする第2の重み付け変更機能とを実現する。
【0105】
自機情報送信制御部220は、自機に係る各種情報をゲームに参加する他機へ送信させる処理を行う。例えば、操作入力部100による操作入力情報、現在位置、現在姿勢、相対距離Lc、要素領域14の定義情報などがこれに含まれる。
これに対して、他機情報受信制御部221は、他機に係る情報(他機における操作入力部100による操作入力情報、現在位置、現在姿勢、相対距離Lc、要素領域14の定義情報など)を受信制御する。
【0106】
認識状態判定部222は、ARマーカ10の認識状態を検出することができる。具体的には、撮像部104で撮影した画像内にARマーカ10が検出できない場合や、当該マーカのデザインを認識できなかった場合に認識不能状態を検出し、再び認識できるようになると認識復帰状態を検出する。
尚、認識不能状態は、例えばARマーカ10が遠くに有って撮像部104の解像能力との関係からデザイン識別に十分な情報が得られないケースや、ARマーカ10のカード面に対してCCDカメラモジュール1516の光軸方向が浅いために同じくデザイン識別に十分な情報が得られないケース、ARマーカ10の一部が撮影範囲外に残ってデザイン識別に十分な情報が得られないケースなどが考えられる。
【0107】
認識不能信号送信制御部223は、認識状態判定部222により認識不能状態が検出された場合に、他のゲーム参加機へ所定の「認識不能信号」を送信させるための処理を実行する。他機に対してホスト機能の発現を要求する継承信号を送信する継承信号送信制御部として機能するとも言える。
【0108】
ホスト機能発現判断部224は、ゲームの参加機それぞれの認識不能状態の有無に基づいて自機がホスト機として機能すべきか否かを判断する。本実施形態では、自機に設定された発現優先順位と、自機及び他機の認識不能状態の監視結果とに基づいて、自機の発現優先順位よりも上位にある全ての他機が認識不能状態のとき、ホスト機として機能すべきと判断する。
【0109】
キャラクタ表示制御部230は、ゲーム参加機のARマーカ10に対する位置関係に基づいて仮想3次元空間(CG空間)中のキャラクタ等のオブジェクトの配置を制御する。換言すると、プレーヤキャラクPC1〜PC3や敵キャラクタ7といったキャラクタの拡張現実空間内における表示位置を制御する。そして、本実施形態のキャラクタ表示制御部230は、領域設定部231と、NPC制御部235とを有する。
【0110】
領域設定部231は、所定オブジェクト(本実施形態では敵キャラクタ7)を表示させる拡張現実空間中の領域を設定する。具体的には、基本領域設定部232と、要素領域設定部233と、配置領域設定部234とを有する。
【0111】
基本領域設定部232は、ARマーカ10から各プレーヤ視点までの相対距離Lcに基づいて基本領域13を設定する。つまり、配置領域12の基本となるサイズを設定する。具体的には、ゲーム参加機別の相対位置Lcのうち最小値を変数として所定の関数f(Lc)で基本領域13の基本長さLbを求める。そして、ARマーカ10の種類に応じて予め設定されている基本形状を、所定寸法が基本長さLbとなるように拡大/縮小してサイズを変更して基本領域13を設定する。
【0112】
要素領域設定部233は、各プレーヤの視点位置でARマーカ10を撮影した場合の自機撮影範囲及び他機撮影範囲を用いて、各プレーヤの視点から見てARマーカ10がロストし難いようにしながら敵キャラクタ7を配置できる要素領域14を設定する。また、プレーヤ視点から見たARマーカの平面方向に対する俯角θcを用いて自機撮影範囲及び他機撮影範囲の奥行を変更する奥行変更部としての機能を果たす。
【0113】
配置領域設定部234は、基本領域13と要素領域14とを用いて、何れのゲーム参加機についてもARマーカ10がロストし難いようにしながら敵キャラクタ7を配置できる配置領域12を設定する。本実施形態では、基本領域13及び各要素領域14の重合部分を求め、これを配置領域12とする。
【0114】
NPC制御部235は、敵キャラクタ7などのNPC(ノンプレーヤキャラクタ)や、飛翔体6などのエフェクトオブジェクト、ゲーム空間の背景を形成する背景オブジェクトの配置制御を行う。いわゆる「AI制御」を行う。NPC等のオブジェクトの制御情報(位置座標、姿勢、モーション制御データなど)は、オブジェクト毎に対応づけて所定期間分(例えば、ゲーム画像の数フレーム分)の履歴情報が、記憶部500のプレイデータ541の敵キャラクタ配置情報キュー544に格納される(図11参照)。そして、本実施形態におけるNPC制御部235は、制御開始時特殊制御部236と、移動方向制御部237とを有する。
【0115】
制御開始時特殊制御部236は、制御開始から所定期間(例えば、ゲーム画像の数フレーム分)、制御対象とするオブジェクトの移動速度及び/又は動作速度を低減させるように制御する。具体的には、敵キャラクタ配置情報キュー544に格納されている分の過去の制御情報と新たに算出した制御情報とを均して実際の制御情報とする。
例えば、ホスト機能を担うゲーム装置が切り換ったタイミングでは、切り換り前後で制御情報値のジャンプが生じる場合があるが、過去値と最新値との均し値を実際の制御に用いることで、切り換えタイミングにおけるオブジェクトの瞬間移動やズレ・ブレなどの不自然な表示を抑制することができる。特に、オブジェクトの表示位置の変化(ズレ・ブレ)に対して効果的である。
【0116】
移動方向制御部237は、制御対象とするオブジェクトの移動方向を撮像部104による撮影画像(ライブビュー)中のARマーカ10の画像位置に基づいて決定する処理と、配置領域12内におけるオブジェクトの相対位置に基づいて移動方向を決定する処理とを行う。
【0117】
前者の処理では、ホスト機能発現機のライブビュー中のARマーカ10の画像位置が、画像中心から離れている程、敵キャラクタ7のオブジェクトがARマーカ10の画像位置に高確率で近づくように移動制御する。換言すると、ホスト機能発現機のプレーヤ視点方向(CCDカメラモジュール1516の光軸方向、仮想カメラの視線方向に同じ)がARマーカ10から離れているほど、敵キャラクタ7がよりARマーカ10に近づくように動作制御する。具体的には、プレーヤ(ゲーム装置)からARマーカ10への方向とプレーヤ視点方向とのなす角度が大きいほど、敵キャラクタ7がARマーカ10に近づくように、敵キャラクタ7の移動方向を決定する。移動方向や移動目標地点を抽選処理で決定する場合、抽選確率を一時的に変更したり、抽選結果がARマーカ10に近づかない場合に再抽選を実行するなどにより実現できる。
【0118】
例えば、敵キャラクタ7が最新の配置領域12内に有れば、領域外に出ないように移動方向を選択する処理、または、配置領域12の輪郭との距離を算出して所定の接近条件を満たす状態を検出した場合には次の移動量を一時的に低減させる処理を行う。また、もし敵キャラクタ7が領域外に有るのであれば、領域内に戻るように移動方向を選択する処理や、できるだけ速やかに戻れるように移動量を一時的に増加させる処理なども適用可能である。
【0119】
NPC情報送信制御部240は、NPC制御部235により求められたNPCの制御情報を他機へ送信制御する。
【0120】
尚、領域設定部231と、NPC制御部235と、NPC情報送信制御部240は、自機がホスト機として機能すべきときにのみ発現する機能部であって、これらはホスト機能実行制御部249を構成する。
【0121】
図11に戻り、音生成部250は、例えばデジタルシグナルプロセッサ(DSP)や、音声合成ICなどのプロセッサ、音声ファイル再生可能なオーディオコーデック等によって実現され、ゲーム演算部202による処理結果に基づいてゲームに係る効果音やBGM、各種操作音の音信号を生成し、音出力部350に出力する。
【0122】
音出力部350は、音生成部250から入力される音信号に基づいてゲームに関する効果音やBGM、電話通信音声等を音出力する装置によって実現される。図1ではスピーカ1510がこれに該当する。
【0123】
画像生成部260は、例えば、GPU、デジタルシグナルプロセッサ(DSP)などのプロセッサ、ビデオ信号IC、ビデオコーデックなどのプログラム、フレームバッファ等の描画フレーム用ICメモリ、テクスチャデータの展開用に使用されるICメモリ等によって実現される。画像生成部260は、ゲーム演算部202による処理結果に基づいて1フレーム時間(例えば1/60秒)で1枚のゲーム画面を生成し、生成したゲーム画面の画像信号を画像表示部360に出力する。
【0124】
画像表示部360は、画像生成部260から入力される画像信号に基づいて各種ゲーム画像を表示する。例えば、フラットパネルディスプレイ、ブラウン管(CRT)、プロジェクター、ヘッドマウントディスプレイといった画像表示装置によって実現できる。本実施形態では、図1のタッチパネル1506がこれに該当する。
【0125】
通信制御部270は、データ通信に係るデータ処理を実行し、通信部370を介して外部装置とのデータのやりとりを実現する。
これに関連する通信部370は、通信回線1と接続して通信を実現する。例えば、無線通信機、モデム、TA(ターミナルアダプタ)、有線用の通信ケーブルのジャックや制御回路等によって実現され、図1の無線通信モジュール1553がこれに該当する。
【0126】
測位制御部280は、測位信号受信部380を介して測位システムから得られた信号から位置情報を算出するための制御、つまり測位計算とその結果の管理を行う。例えば、図1のGPSモジュール1554がこれに該当する。測位計算に携帯電話基地局の既知の位置情報を利用する場合には、基地局と無線通信するための無線通信モジュール1553も該当することになる。
【0127】
記憶部500は、処理部200にゲーム装置1500を統合的に制御させるための諸機能を実現するためのプログラムや各種データ等を記憶する。また、処理部200の作業領域として用いられ、処理部200が各種プログラムに従って実行した演算結果や操作入力部100から入力される入力データ等を一時的に記憶する。こうした機能は、例えばRAMやROMなどのICメモリ、ハードディスク等の磁気ディスク、CD−ROMやDVDなどの光学ディスクなどによって実現される。図1では制御基板1550が搭載するICメモリ1552やメモリカード1540がこれに該当する。
【0128】
本実施形態の記憶部500は、ゲーム装置1500をシステムプログラム502と、ゲームプログラム504とを記憶している。
システムプログラム502は、ゲーム装置1500のコンピュータとしての基本機能を実現するためのプログラムである。
【0129】
ゲームクログラム504は、処理部200にゲーム演算部202としての機能を実現させせるためのプログラムである。メモリカード1540に予め記憶されているものとするが、本実施形態では、ゲーム開始前に所定のサーバからダウンロードする構成であっても良い。
【0130】
また、記憶部500には、予めゲーム空間初期設定データ510と、キャラクタ初期設定データ511と、ARマーカ登録データ512と、奥行関数設定データ514とが記憶されている。これらもメモリカード1540に予め記憶されているものとするが、ゲーム開始前に所定のサーバからダウンロードする構成であっても良い。
また、記憶部500には、ゲーム進行に応じて生成され随時更新されるデータとして、ゲーム参加機登録データ520と、自機情報キュー530と、現在位置537と、現在姿勢538と、プレイデータ541と、仮想3次元空間データ560と、ホスト機能継承タイミング562と、が記憶される。その他、各種処理を実行するにあたり必要となるデータ(例えば、圧縮解凍されたテクスチャデータ、経過時間、各種タイマー値、カウンタ、フラグ)なども適宜記憶されるものとする。
【0131】
ゲーム空間初期設定データ510は、ゲームの舞台を作るための背景オブジェクトを定義する初期設定データである。背景オブジェクトのモデルデータ、テクスチャデータ、配置位置データなどが含まれる。
【0132】
キャラクタ初期設定データ511は、プレーヤキャラクタPC1〜PC3や、敵キャラクタ7などのゲームキャラクタの初期設定データを格納する。各キャラクタ毎に、モデルデータ、テクスチャデータ、モーションデータ、能力パラメータ(攻撃力、防御力、HPなど)の初期値をキャラクタ毎に格納している。
【0133】
ARマーカ登録データ512は、ゲームで使用できるARマーカを登録するデータであって使用できる種類毎に記憶されている。そして、図13に示すように、マーカ種類と、対応マーカカテゴリと、デザインパターンデータと、カード寸法と、基本領域13の雛形となる基本領域モデルと、基本長さLbとする寸法を指定する基本長さ適用寸法と、を格納する。
【0134】
奥行関数設定データ514は、要素領域14の奥行Dbを算出するための関数を設定するデータであって、ARマーカ10のマーカカテゴリ別に用意されている(図7参照)。
【0135】
ゲーム参加機登録データ520は、ゲームに参加するゲーム装置の登録に関するデータ群であって参加処理により生成される。例えば図14に示すように、ゲーム機ID521と対応づけて、通信接続で相手先を特定するためのアドレス情報522と、発現優先順位523と、プレーヤキャラクタ種類524と、マーカ認識状態525と、ホスト機能を発現する機体であるかを示すホスト機能発現フラグ526とを格納する。
ゲーム参加機登録データ520は、ゲームの参加処理に関連してホスト機にてオリジナルが生成されたのちに各ゲスト機へ配信される。
【0136】
自機情報キュー530は、ARマーカ10を基準とした自機の位置や姿勢等の情報を所定算出回数分格納する。例えば図15に示すように、算出時刻532と対応づけて、相対位置533、相対姿勢534、相対距離535を格納する。
【0137】
現在位置537及び現在姿勢538は、それぞれ自機情報キュー530に格納されている相対位置533の加重平均値、相対姿勢534の加重平均値が格納される。
【0138】
プレイデータ541は、ホスト機能の実行により生成・管理されるデータ群であって、ゲーム進行状況を記述する各種データを格納する。本実施形態では、プレーヤキャラクタ状態データ542と、敵キャラクタ状態データ543と、敵キャラクタ配置情報キュー544と、飛翔体配置データ545と、基本領域設定データ550と、要素領域設定データ552と、配置領域設定データ554と、を含む。
【0139】
プレーヤキャラクタ状態データ542は、プレーヤキャラクタPC1〜PC3それぞれの状態を記述するデータ、例えばHP(ヒットポイント)などの能力値の現在値、適用されているモーションデータの識別情報やモーション制御データなど、を格納する。
【0140】
敵キャラクタ状態データ543は、敵キャラクタ7の状態を記述するデータが格納される。例えば、敵キャラクタのHPなどの能力値の現在値、適用されるモーションデータの識別情報やモーション制御データなどを格納する。
敵キャラクタ配置情報キュー544は、算出時刻と対応づけられた敵キャラクタ7のCG空間における位置や姿勢を、所定算出回数分だけ格納する。
飛翔体配置データ545は、発射された飛翔体6毎の位置や姿勢、速度、加速度など飛翔の状態を記述する情報を格納する。
【0141】
基本領域設定データ550は、基本領域13の最新の定義データを格納する。
要素領域設定データ552は、ゲーム参加機毎つまりはプレーヤ視点位置毎に求めた要素領域14の最新の定義データを格納する。
配置領域設定データ554は、配置領域12の最新情報を格納する。
【0142】
仮想3次元空間データ560は、仮想3次元空間に配置されるプレーヤキャラクタPC1〜PC3、敵キャラクタ7、飛翔体6、背景物などの各種オブジェクトの配置情報を格納する。
【0143】
ホスト機能継承タイミング562は、ホスト機能を発現する機体が変化したタイミング情報(例えば、システム時刻)を格納する。換言すると、ホスト機能の実行役が別の機体に継承されたタイミングを格納する。
【0144】
[処理の流れの説明]
次に図17〜図24を参照しながら、本実施形態における各種処理の流れについて説明する。ここで説明する一連の処理は、ゲーム装置1500が、システムプログラム502及びゲームプログラム504や各種設定データを読み出し実行することにより実現される。尚、テーブル9などの上に予めARマーカ10が配置されていて、プレーヤは各ゲーム装置1500を手に持ってCCDカメラモジュール1516でARマーカ10を撮影する姿勢にあるものとする。
【0145】
図17は、本実施形態における主たる処理の流れを説明するためのフローチャートである。ゲーム装置1500の処理部200は、先ず他のゲーム装置とのアドホックモードによる通信接続を確立する(ステップS2)。以降、ゲーム装置同士の間ではピア・ツー・ピア(P2P)のローカルネットワークが形成された状態となる。
【0146】
次に、処理部200は、ゲーム前準備処理を実行する(ステップS4)。
図18は、本実施形態におけるゲーム前準備処理の流れを説明するためのフローチャートである。同処理において、処理部200は先ず、自機をホスト機とするかゲスト機とするかの選択画面を表示してプレーヤに何れかを選択させるホスト/ゲスト選択処理を実行する(ステップS6)。
【0147】
もし、ホスト機が選択された場合には(ステップS8の「ホスト」)、ゲーム参加機登録データ520を生成して自機を登録する(ステップS10)。すなわち、最初のゲーム機ID521を発行するとともに、先に確立したローカルエリアネットワークにおけるアドレス情報522を格納する。発現優先順位523は第1順位に設定し、マーカ認識状態525は認識状態を示す情報(図14の例では「1」)に初期化する。
【0148】
そして、ホスト機の処理部200は、自プレーヤキャラクタの選択処理(ステップS12)と、ゲーム空間の初期化処理を実行する(ステップS14)。
自プレーヤキャラクタの選択結果は、ゲーム参加機登録データ520のプレーヤキャラクタ種類524に格納される。
ゲーム空間の初期化処理では、ゲーム空間初期設定データ510及びキャラクタ初期設定データ511を参照して、仮想3次元空間に背景オブジェクトを配置してゲーム空間を配置するとともに、自プレーヤキャラクタPC1と敵キャラクタ7とを配置する。ゲーム空間にキャラクタが配置されるのに伴って、プレーヤキャラクタ状態データ542と、敵キャラクタ状態データ543とが生成・初期化される。そして、ゲーム空間の初期化処理を実行したならば、ホスト機の処理部200はホスト機としての参加処理を時限実行する(ステップS16)。
【0149】
一方、ホスト/ゲストの選択処理にてゲストが選択された場合には(ステップS6の「ゲスト」)、ゲスト機とされたゲーム装置1500の処理部200は、自プレーヤキャラクタの選択処理を実行し(ステップS18)、ホスト機へゲーム参加リクエスト信号を送信してゲスト機としての参加処理を行う(ステップS22)。
【0150】
参加処理において、ホスト機の処理部200は、ゲーム参加リクエストしたゲスト機と適宜情報の送受を行って参加機として登録する。即ち、ゲーム参加機登録データ520に新たに付与したゲーム機ID521を設定し、これに対応付けて当該ゲスト機のアドレス情報522を登録し、発現優先順位523をゲスト機の登録順+1(よって、最初のゲスト機の発現優先順位は2位となる)を設定する。プレーヤキャラクタ種類524は当該ゲスト機から取得し、マーカ認識状態525は認識状態を示す値とする。そして、参加処理開始から所定受付時間が終了すると、ホスト機からゲーム参加機登録データ520がゲスト機に配信される。ゲスト機では、受信したゲーム参加機登録データ520を記憶部500に記憶させる。
【0151】
参加処理を終了したならば、図17のフローチャートに戻る。
ゲームを開始させたならば(ステップS24)、処理部200はステップS32〜S320をゲーム終了条件が満たされるまで所定サイクルで繰り返し実行する。
【0152】
一回の制御サイクル内において、処理部200は、先ず自動情報算出処理を実行する(ステップS32)。
図19は、自機情報算出処理の流れを説明するためのフローチャートである。同処理において、処理部200は先ず撮像部104による撮影映像をキャプチャし(ステップS60)、キャプチャした画像に写っているARマーカ10を検出する(ステップS62)。
【0153】
もし、ARマーカ10を検出できたならば(ステップS64のYES)、処理部200はARマーカ10の認識と種類の判別をする(ステップS66)。すなわち、公知のマーカ方式AR技術と同様にして、ARマーカが写っている部分を検出して、当該部分をARマーカ登録データ512(図13参照)に登録されているデザインパターンと照合することで、ARマーカ10を認識するとともにマーカの向きやマーカの種類、マーカのカテゴリを判定する。
【0154】
次いで、処理部200は、ARマーカ10に対する相対位置(Xc,Yc,Zc)と相対姿勢(ωp,ωy,ωr)と相対距離Lとを計測・算出する(ステップS68)。これらの算出結果は、自機情報キュー530に格納される。
【0155】
もし、ARマーカ10が検出されなかった場合には(ステップS64のNO)、処理部200は相対位置及び相対姿勢等の算出は行わず、自機情報キュー530の直近過去の相対位置533及び相対距離535を参照する。
【0156】
もし、自機情報キュー530に直近過去のそれらの値が格納されていれば(ステップS70のYES)、それらをコピーして、そのまま今回の相対位置、相対距離として新たに自機情報キュー530に格納する(ステップS72)。もし、直近過去のそれらの値が格納されていなければ(ステップS70のNO)、所定の初期値を今回の相対位置及び相対距離として自機情報キュー530に格納する(ステップS74)。
相対姿勢については、自機情報キュー530に直近過去のそれらの値が格納されているか否かに関わらず、姿勢検出部108の検出結果に基づいて計測した結果を、新たに自機情報キュー530に格納する(ステップS76)。
【0157】
今回分の相対位置及び相対姿勢を決定したならば、処理部200は次に、重み付けwn(n:自機情報キュー530に記憶されているデータの記憶順番)を算出し(ステップS78)、算出した重み付けwnを用いて自機情報キュー530に記憶されている分の相対位置533を加重平均して現在位置537を求める(ステップS80)。
更に、自機情報キュー530に記憶されている分の相対姿勢534を加重平均して現在姿勢538を求める(ステップS82)。尚、加重平均に係る重み付けwnは、所定の関数h(n,Lc)に最新の自機の相対距離Lcを用いて算出する。そして、重み付けwnの算出を実行したならば、自機情報算出処理を終了する。
【0158】
図17のフローチャートに戻って、処理部200は次にホスト機能発現機設定処理を実行する(ステップS110)。
【0159】
図20は、本実施形態におけるホスト機能発現機設定処理の流れを説明するためのフローチャートである。
同処理において、処理部200は先ず各ゲーム装置におけるARマーカ10の認識状態の監視処理を行う(ステップS112〜S122)。
具体的には、処理部200は、自機情報算出処理にてARマーカ10の認識ができなかった場合(ステップS112のYES)、ゲーム参加機登録データ520の自機のマーカ認識状態525(図14参照)を「認識不能(LOST)」に変更し(ステップS114)、所定の認識不能信号を他機へ送信する(ステップS116)。ARマーカ10が認識できているならば(ステップS112のNO)、自機のマーカ認識状態525を「識別中(In Sight)」に設定する(ステップS118)。
【0160】
他機からの認識不能信号については、処理部200は認識不能信号の送信元である他機のマーカ認識状態525を「認識不能(LOST)」に変更する(ステップS120)。認識不能信号を受信しなかった他機については「識別中(In Sight)」に設定(ステップS122)する。これでゲーム参加機それぞれにおけるマーカの識別状態が更新されたことになる。
【0161】
次に、処理部200は、マーカ認識状態の監視結果に基づいてホスト機能を発現するゲーム装置すなわち「ホスト機能発現機」を選出する(ステップS140)。
具体的には、ゲーム参加機登録データ520のマーカ認識状態525を参照し、発現優先順位が当該ゲーム装置よりも上位にあたる全他機のマーカ認識状態が「認識不能(LOST)」になっているゲーム参加機を、ホスト機能を発現するべき機体として選出する。
【0162】
そして、処理部200は、当該選出機のホスト機能発現フラグ526を参照する。同フラグが「0」であれば(ステップS142の「0」)、それ以外のゲーム機の同フラグを「0」に設定し(ステップS144)、ホスト機能継承タイミング562に現在のシステム時刻を格納し更新して(ステップS146)、ホスト機能発現機設定処理を終了する。もし、選出機のホスト機能発現フラグ526がすでに「1」の場合には(ステップS142の「1」)、フラグ操作やホスト機能継承タイミング562の更新は行わずに、ホスト機能発現機設定処理を終了する。
【0163】
図17のフローチャートに戻って、自機がホスト機能発現機に設定されている場合(ステップS150のYES)、処理部200は自機がホスト機能を発現するべきであると判断してホスト機能実行処理を行う(ステップS152)。
【0164】
図21は、本実施形態におけるホスト機能実行処理の流れを説明するためのフローチャートである。同処理において、処理部200は先ず、全他機からそれぞれの他機情報として、現在位置537と、現在姿勢538と操作入力データ(本実施形態では射撃操作入力の有無)を取得する(ステップS160)。そして、基本領域設定処理を実行する(ステップS162)。
【0165】
図22は、本実施形態における基本領域設定処理の流れを説明するためのフローチャートである。同処理において、処理部200は先ずゲーム参加機毎つまりはプレーヤ視点毎にARマーカ10までの相対距離Lcを算出又は他機から送信してもらって取得し(ステップS170)、算出又は取得した相対距離Lcに基づいて基本長さLbを算出する(ステップS172)。本実施形態では、ゲーム参加機別に算出した相対距離Lcのうち最小値を用いて所定関数f(Lc)を用いて基本長さLbを求める。
【0166】
次で、処理部200は、算出した基本長さLbを所定の最小値と比較し、最小値を下回っていれば(ステップS174のYES)、基本長さLbをこの最小値で置き換える(ステップS176)。そして、認識されたARマーカの種類・カテゴリ(図19のステップS66参照)に対応するARマーカ登録カード512(図13参照)から基本領域モデルを読み出し、先に設定した基本長さLbを基本長さ適用寸法に割り当てた基本領域13を設定する(ステップS178)。求めた基本領域13を定義する情報(例えば、頂点座標、輪郭線を記述する関数など)は、プレイデータ541に基本領域設定データ550として格納される。そして、基本領域設定処理を終了する。
【0167】
図21のフローチャートに戻って、処理部200は次に、ゲーム参加機毎に要素領域設定処理を実行して、プレーヤ視点毎の要素領域14を設定する(ステップS180)。
【0168】
図23は、要素領域設定処理の流れを説明するためのフローチャートである。同処理において、処理部200は先ず、キャプチャした画像に写っているARマーカ10の四隅の頂点位置を求め(ステップS190)、ゲーム装置1500の位置及びロール、即ちCCDカメラモジュール1516の位置及びロール(光軸周りの回転)を固定と見なして、ARマーカ10の四隅のうち右端が、CCDカメラモジュール1516の撮影範囲の右端に近接し、且つARマーカ10の四隅のうち下端が同撮影範囲の下端に近接する第1姿勢を求めるとともに、当該姿勢におけるCCDカメラモジュール1516の光軸AL1を求める(ステップS192;図6参照)。
【0169】
同様にして、処理部200はARマーカ10と撮影範囲とで左端同士・上端同士が近接する第2姿勢を求めて光軸AL2を求め(ステップS194)、ARマーカ10と撮影範囲とで左端同士・下端同士が近接する第3姿勢を求めて光軸AL3を求め(ステップS196)、ARマーカ10と撮影範囲とで右端同士・上端同士が近接する第4姿勢を求めて光軸AL4を求める(ステップS198)。
【0170】
次に、処理部200はARマーカ10のデザイン面(マーカ平面)に対するCCDカメラモジュール1516の光軸角度つまり俯角θcを算出し、ARマーカ10のカテゴリに応じた奥行関数設定データ514を選択・参照して、算出した俯角θcに基づく奥行Dbを算出する(ステップS200)。
【0171】
そして、CCDカメラモジュール1516のカメラ視点位置から現在の光軸方向に奥行Dbだけ離れたクリップ面と、先に求めた光軸AL1〜AL4それぞれとの交点を求め、求めた4つの交点とカメラ視点位置とを頂点として囲まれるボリュームを、対象としているゲーム装置1500(対象としているプレーヤ視点)における要素領域14として設定する(ステップS202)。求めた要素領域14を定義する情報(例えば、頂点座標、輪郭線を記述する関数など)は、プレイデータ541に要素領域設定データ552として格納される。そして、要素領域設定処理を終了する。
【0172】
図21のフローチャートに戻って、処理部200は次に、基本領域13及び要素領域14の重合領域を求めこれを配置領域12とする(ステップS220)。求めた重合領域を定義する情報(例えば、頂点座標、輪郭線を記述する関数など)は、プレイデータ541に配置領域設定データ554として格納される。
【0173】
次に、処理部200は敵キャラクタ7を最新の配置領域12の範囲内に存在するよう動作制御する(ステップS222)。
【0174】
ここでの動作制御には、移動と攻撃の二つの動作が含まれる。
移動の制御については、例えば、敵キャラクタ7が最新の配置領域12内に有れば、領域外に出ないように移動方向を選択する処理や、領域の輪郭との距離を算出して所定の接近条件を満たす状態を検出した場合には次の移動量を一時的に低減させる処理などを実行して、新たな配置位置を決定する。また、もし敵キャラクタ7が領域外に有るのであれば、領域内に戻るように移動方向を選択する処理や、できるだけ速やかに戻れるように移動量(移動速度)を一時的に増加させる処理などを実行して新たな配置位置を決定する。
【0175】
更には、撮像部104による撮影画像(ライブビュー)中のARマーカ10の画像位置が、画像中心から離れている程、敵キャラクタ7がARマーカ10の画像位置に高確率で近づくように移動制御する。換言すると、プレーヤ視点方向(CCDカメラモジュール1516の光軸方向、仮想カメラの視線方向に同じ)がARマーカ10から離れているほど、敵キャラクタ7がよりARマーカ10に近づくように動作制御する。
【0176】
具体的には、例えば敵キャラクタ7の移動方向を抽選処理で決定する場合、現在のARマーカ10向きの移動方向がより高確率で選出されるように抽選確率を一時的に変更したり、抽選結果が視線方向に沿わない場合に再抽選を実行するなどにより実現できる。
尚、新たに決定された敵キャラクタ7の位置及び姿勢は敵キャラクタ配置情報キュー544に格納される。移動制御に伴い、仮想3次元空間データ560のうち、敵キャラクタ7に係るオブジェクトの制御データが適宜書き換えられる。
攻撃の制御については、所定のアルゴリズム(いわゆるAI制御)によって、適当なタイミングで適当なプレーヤキャラクタPC1〜PC3に向けて、射撃するように制御する。
【0177】
ここで、処理部200は、現在のシステム時刻とホスト機能継承タイミング562に格納されているシステム時刻(すなわちホスト機能の制御開始タイミング)とを比較して、ホスト機能の制御開始タイミングから所定時間が経過したかを判定する。
【0178】
そして、もし経過していない場合には(ステップS224のNO)、処理部200は敵キャラクタ7の移動量及び/又は移動速度が低減されるように調整する制御開始時特殊制御を行う(ステップS226)。
具体的には、例えば敵キャラクタ配置情報キュー544に格納されている位置及び姿勢の各加重平均値(重み付けは過去値ほど低い)を求め、敵キャラクタ配置情報キュー544の最新値を加重平均された位置及び姿勢に更新する。これにより、ホスト機能を担う機体が代わったことに起因する敵キャラクタ7の位置や姿勢が大きく変化したとしてもその影響を低減できる。敵キャラクタ7の見かけの移動量や移動速度が低減され、瞬時的に移動量や移動速度が増したような不自然な動きとならないようにできる。
尚、ホスト機能の制御開始タイミングから所定時間が経過していなければ(ステップS224のYES)、こうした制御開始時特殊制御はスキップされる。
【0179】
次に、処理部200は各プレーヤキャラクタPC1〜PC3の配置位置を更新する(ステップS228)。これに伴い、仮想3次元空間データ560のうち、プレーヤキャラクタPC1〜PC3に係るオブジェクトの制御データが適宜書き換えられる。
【0180】
次に、処理部200は飛翔体6の管理をする(ステップS240)。例えば、敵キャラクタ7による攻撃動作が行われた場合や、各ゲーム装置にて攻撃操作入力が検出された場合に、対応するプレーヤキャラクタから発射される新たな飛翔体6を仮想3次元空間に配置する。また、配置済の飛翔体6については移動をさせる。これに伴い、プレイデータ541の飛翔体配置データ545が適宜書き換えられ、また仮想3次元空間データ560のうち飛翔体6に係るオブジェクトの制御データが適宜書き換えられる。
【0181】
次に、処理部200は、飛翔体6の移動後の位置と、更新されたプレーヤキャラクPC1〜PC3の位置、及び敵キャラクタ7の位置とに基づいて攻撃のヒット判定と、攻撃ヒットにともなうダメージ判定及びダメージ反映処理を行う(ステップS242)。もし、飛翔体6がヒットしたと判定された場合には、当該飛翔体6は仮想3次元空間から消去するのは勿論である。ダメージ反映処理により、プレイデータ541のプレーヤキャラクタ状態データ542及び敵キャラクタ状態データ543が更新される。
【0182】
ホスト機能実行処理によるこれまでの処理により、1制御サイクルでのゲームが進行したことになるので、処理部200は最新のプレイデータ541を他機へ配信し(ステップS244)、ホスト機能実行処理を終了する。
【0183】
図17のフローチャートに戻って、自機がホスト機能を発現するべきと判断されなかった場合(ステップS150のNO)、処理部200はゲスト機として振る舞うように制御することとなる。つまり、ゲスト機の処理部200は、全ての他機から現在位置537と、現在姿勢538と操作入力情報とを取得し(ステップS300)、ホスト機からプレイデータを取得する(ステップS302)。そして、取得した他機の現在位置537および現在姿勢538と、自機の現在位置537および現在姿勢538と、取得したプレイデータとに基づいて仮想3次元空間内のオブジェクトの配置位置を更新する(ステップS304)。
【0184】
ここまでの流れによって、ゲーム進行制御とその結果に応じた仮想3次元空間(CG空間)内のオブジェクトの再配置が完了したことになる。
そこで、処理部200は次に、ゲーム画面の生成及び表示に関する処理を実行する。すなわち、キャプチャされた撮像部104で撮影した画像をクロップ処理して背景画像を生成し(ステップS310)、自機の現在位置537および現在姿勢538に基づいて仮想カメラCMを仮想3次元空間内に配置して、当該仮想カメラで撮影した仮想3次元空間の様子をレンダリングする(ステップS312)。そして、背景画像の上にレンダリングされたCGを合成し、さらにその上に画面中央に照準8などの情報表示体を合成してゲーム画面を完成させ(ステップS314)、これを画像表示部360で表示させる(ステップS316;図3参照)。
【0185】
次に、処理部200はゲーム終了条件を満たすか否かを判定する(ステップS320)。もしゲーム終了条件を満たしていなければ(ステップS320のNO)、次の制御サイクルに移行する。もし満たしていれば(ステップS320のYES)、エンディング画面を表示させるなどのゲーム終了処理を実行して(ステップS322)、一連の処理を終了する。
【0186】
以上、本実施形態によれば、ARマーカ10に対するプレーヤ視点別の相対位置(本実施形態で言うところのARマーカ10の基準点に対するCCDカメラモジュール1516の視点の相対位置で代表されるゲーム参加機の相対位置)を用いて、拡張現実空間中のキャラクタの表示位置をマルチプレイに都合良く適切に制御できる。
具体的には、注目キャラクタ(敵キャラクタ7)を追跡するように、それぞれのゲーム装置1500の視点位置、視線方向が変えられたとしても、ARマーカ10がCCDカメラモジュール1516の撮影範囲外にならないように、この注目キャラクタの配置を調整することができる。すなわち、拡張現実空間を利用したマルチプレイ型のゲームの品質を向上させ、キャラクタの配置制御に伴うさまざまな不都合を回避・低減することができる。
【0187】
また、本実施形態では、現在から遡って所与の時間分(或いは所与の回数分)の相対位置を用いて、実際に仮想カメラを制御するための現在位置を決定することができるので、手ブレを抑制することができる。更には、ARマーカ10が認識不能な間、一時的に位置座標をマーカロスト直前値に固定する一方で、姿勢については現在置を算出し続ける。これにより、ARマーカ10が認識できているときよりも、現実空間とCG空間との座標合わせの精度が低下するが、ゲームを中断しなければならないほどのキャラクタ等の表示ズレを抑制できる。つまり、ARマーカのロストに起因するゲームの中断への耐性を高める事ができる。
【0188】
また、敵キャラクタ7などのNPCの制御などホスト機能を担っていたゲーム参加機において、ARマーカ10を認識できない状態に陥ったとしても、別のゲーム参加機がホスト機能を代行することで、マーカのロストに起因するNPCなどの表示位置ズレなどを抑制し、ゲームを継続させることができる。
【0189】
尚、本実施形態では、構成要素を適宜変更・追加・省略することができる。
例えば、ホスト機能発現機の切り換えに関連して、ARマーカ10を認識できなくなった時に「認識不能信号」を発信し、認識不能信号の有無によってマーカ認識状態を管理する構成であったが、反対にARマーカ10を認識できている時に「認識信号」を送信する構成としても良い。そして「認識信号」が受信されている間は、送信元のマーカ認識状態525を「In Sight(認識中)」とし、「認識信号」が送信されていない機体のマーカ認識状態525を「LOST(認識不能)」に設定すると良い。
【0190】
また、発現優先順位は、ゲーム前準備処理で設定した初期値をゲームプレイ中に適宜変更することも可能である。例えば図24に示すように、ホスト機能実行処理にて、処理部200は、他機全てから最新のARマーカ10に対する相対距離Lcを取得し(ステップS250)、取得した相対距離Lcに自機の最新の相対距離Lcを含めて、距離の大きい順にソートして、ソートされた順番に発現優先順位523を再設定し配信する(ステップS254)。尚、ホスト機能を発現していないゲーム装置1500の処理部200は、例えば、図17のステップS304に次いで、新しい発現優先順位523を受信した場合には、自機の記憶部500に記憶されているゲーム参加機登録データ520の発現優先順位523を更新することとする(図17参照)。
【0191】
ARマーカ10から離れているゲーム装置1500ほど、より広い範囲を撮影できるのでARマーカ10がロストし難くなる効果が期待される。よって、相対距離Lcの大きい順に発現優先順位523を再設定することで、ホスト機能の発現する機体の切り換え頻度を下げることができる。
【0192】
〔第2実施形態〕
次に、本発明を適用した第2実施形態について説明する。本実施形態は、基本的には第1実施形態と同様に実現されるが、現在位置537の算出タイミングを調整可能にした点が異なる。尚、第1実施形態と同様の構成要素については同じ符号を付与して説明は省略し、第1実施形態との差異について主に述べることとする。
【0193】
図25は、本実施形態におけるゲーム演算部202の機能構成例を示す部分機能ブロック図である。本実施形態の自機情報算出部206は、変化量算出部213F、算出間隔設定部214Fを含む。
【0194】
変化量算出部213Fは、姿勢検出部108や加速度検出部110、測位制御部280で算出される位置情報などを用いて、プレーヤ視点の位置や姿勢(即ち、ゲーム装置1500、CCDカメラモジュール1516の視点位置のARマーカ10に対する位置や姿勢)の所与の単位時間当たりの変化量を算出する。位置と姿勢両方の変化量を求めるとしても良いし、何れか一方でも良い。尚、変化量は撮像部104で撮影した画像中から特徴点を抽出し、抽出された特徴点の単位時間当たりの移動量を用いるとしても良い。
【0195】
算出間隔設定部214Fは、変化量算出部213Fによる算出結果を用いて、最新の自機位置情報及び自機姿勢の算出間隔を新たに設定・変更することができる。算出間隔の設定値は適宜記憶部500に記憶させるものとする。
【0196】
図26は、本実施形態における主たる処理の流れを説明するためのフローチャートである。基本的には第1実施形態と同様であるが、処理部200は、制御サイクルの最初において、姿勢変化・加速度・測位結果の何れかの所定時間当たりの変化量を算出する(ステップS26F)。
【0197】
次いで、算出された変化量と、前回の算出タイミングで算出された相対距離Lcとに応じて算出間隔を設定する(ステップS27F)。具体的には、算出された変化量が所定の変化量基準値を超えて急激に変化したと判断される場合には算出間隔を標準値より短くする。また、直近過去の相対距離Lcが所定の距離基準値を超えて遠いと判断される場合にも算出間隔を標準値より短くする。
【0198】
そして、前回の算出タイミングから、ステップS27Fで設定された算出間隔が経過していれば(ステップS28FのYES)、自機情報算出処理を実行する(ステップS32)。
【0199】
〔変形例〕
以上、本発明を適用した実施形態について説明したが、本発明の形態がこれらに限定されるものではなく、適宜構成要素の追加・省略・変更などを施すことができる。
【0200】
例えば、第1実施形態においてゲーム装置1500としたコンピュータは、プレーヤ視点となる撮像素子と、姿勢変化を検出するジャイロや加速度センサとを搭載し、ゲームプログラムを実行可能であれば、携帯型ゲーム装置などの他、例えばスマートフォンやパソコン、携帯電話機などの電子機器を「ゲーム装置」としても良い。
【0201】
また、ゲームのジャンルはシューティングゲームに限らず、適宜設定することができるのは勿論である。
【0202】
また、上記実施形態では、仮想カメラCMとプレーヤキャラクタPCとの仮想3次元空間における相対位置関係はほぼ固定として説明したがこれに限らない。例えば、図27に示すように、仮想カメラCM1〜CM3は、対応するゲーム装置1500a〜1500cのARマーカ10に対する相対位置(つまりはプレーヤ視点の相対位置)に基づいて配置されるが、プレーヤキャラクタPC1〜PC3は別途ゲーム装置1500の方向入力キー1502などによる操作入力によって移動制御されることとし、結果として仮想カメラとプレーヤキャラクタとの相対位置関係が可変であっても良い。この場合、プレーヤはゲーム装置1500を動かすことで仮想カメラの位置を変える一方で、プレーヤキャラクタを別途の操作入力で制御することとなる。従って、ゲーム空間を箱庭的にイメージし、ゲーム空間内の様子をゲーム装置を通じて好きな角度から見ながら、プレーヤキャラクタを自在に操作してゲームプレイすることが可能となる。
【0203】
また、ゲーム装置1500の画像表示部360を裸眼立体視可能な表示装置(例えばパララックスバリア方式やレンチキュラ方式など)で構成し、ARマーカ10に対するゲーム装置1500の相対位置・相対姿勢に応じて、立体的な画像を表示制御することとしてもよい。その場合、CCDカメラモジュール1516で撮影されたライブビューの画像を最遠景に設定し、ゲーム空間(仮想三次元空間)の座標系上に配置されるキャラクタ等(オブジェクト)を立体的に表示制御するとしてもよい。このようにすることで、例えば、ARマーカ10に対して回り込むようにゲーム装置を移動させると、ARマーカ10を基準に出現するオブジェクト(上記実施形態の場合は敵キャラクタ)を、回り込んで立体視し、奥行き感を得ることが可能となる。
【符号の説明】
【0204】
10…ARマーカ
12…配置領域
13…基本領域
14…要素領域
104…撮像部
108…姿勢検出部
110…加速度検出部
200…処理部
202…ゲーム演算部
204…ゲーム参加管理制御部
205…発現優先順設定部
206…自機情報算出部
206B…位置関係算出部
207…相対位置算出部
208…位置変化抑制制御部
209…現在位置決定部
210…相対姿勢算出部
211…現在姿勢決定部
212…重み付け設定部
220…自機情報送信制御部
221…他機情報受信制御部
222…認識状態判定部
223…認識不能信号送信制御部
224…ホスト機能発現判断部
230…キャラクタ表示制御部
231…領域設定部
232…基本領域設定部
233…要素領域設定部
234…配置領域設定部
235…NPC制御部
236…制御開始時特殊制御部
237…移動方向制御部
249…ホスト機能実行制御部
500…記憶部
504…ゲームクログラム
512…ARマーカ登録データ
514…奥行関数設定データ
520…ゲーム参加機登録データ
523…発現優先順位
524…プレーヤキャラクタ種類
525…マーカ認識状態
526…ホスト機能発現フラグ
530…自機情報キュー
533…相対位置
534…相対姿勢
535…相対距離
537…現在位置
538…現在姿勢
541…プレイデータ
544…敵キャラクタ配置情報キュー
550…基本領域設定データ
552…要素領域設定データ
554…配置領域設定データ
560…仮想3次元空間データ
562…ホスト機能継承タイミング
1500…ゲーム装置
1506…タッチパネル
1516…CCDカメラモジュール
1550…制御基板
1556…3軸ジャイロ
1557…3軸加速度センサ
CM、CM1〜CM3…仮想カメラ
Db…奥行
PL、PL1〜PL3…プレーヤPL
PC、PC1〜PC2…プレーヤキャラクタ
AL1〜AL4…光軸

【特許請求の範囲】
【請求項1】
撮影手段及び表示手段を備えたコンピュータに、基準方向が表されたマーカが写るように前記撮影手段により撮影されたライブビューにオブジェクトを合成表示させてゲームを実行させるためのプログラムであって、
前記ライブビュー内における前記マーカの位置を基準とした仮想3次元空間における前記コンピュータの位置を周期的に算出する位置算出手段、
現在から遡って所与の時間分、或いは、所与の回数分の前記位置算出手段により算出された複数の算出位置を用いて、前記コンピュータの現在位置を決定する現在位置決定手段、
前記仮想3次元空間中の所与の位置にオブジェクトを配置するオブジェクト配置手段、
前記現在位置決定手段により決定された現在位置から前記オブジェクトを見た画像を、前記ライブビューに合成する合成手段、
として前記コンピュータを機能させるためのプログラム。
【請求項2】
前記現在位置決定手段は、前記複数の算出位置を加重平均することで前記コンピュータの現在位置を決定する手段である、
請求項1に記載のプログラム。
【請求項3】
前記現在位置決定手段は、前記加重平均に用いる前記算出位置それぞれの重みを、前記位置算出手段による算出時期に応じて変更する第1の重み変更手段を有する、
請求項2に記載のプログラム。
【請求項4】
前記現在位置決定手段は、前記加重平均に用いる前記算出位置それぞれの重みを、当該算出位置と前記マーカ間の距離に応じて変更する第2の重み変更手段を有する、
請求項2又は3に記載のプログラム。
【請求項5】
前記コンピュータの位置及び/又は姿勢の所与の単位時間当たりの変化量を計測する変化量計測手段、
前記変化量計測手段の計測結果を用いて、前記位置算出手段の算出間隔を変更する算出間隔変更手段、
として前記コンピュータを更に機能させるための請求項1〜4の何れか一項に記載のプログラム。
【請求項6】
前記算出間隔変更手段は、更に、前記位置算出手段により算出された算出位置と前記マーカ間の距離に応じて前記算出間隔の変更量を変更する、
請求項5に記載のプログラム。
【請求項7】
前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段、
前記認識不能状態が検出されている間、前記コンピュータの姿勢変化に応じて前記オブジェクトの表示向きを制御する認識不能時向き制御手段、
として前記コンピュータを更に機能させるための請求項1〜6の何れか一項に記載のプログラム。
【請求項8】
前記ライブビューから前記マーカを認識できない認識不能状態であることを検出する認識不能状態検出手段、
前記認識不能状態から前記マーカが再び認識できるようになった認識復帰状態を検出する認識復帰状態検出手段、
前記認識不能状態が検出されている間、前記ライブビュー内における前記オブジェクトの表示位置の変化を抑制するオブジェクト位置変化抑制制御手段、
として前記コンピュータを更に機能させるための請求項1〜6の何れか一項に記載のプログラム。
【請求項9】
請求項1〜8の何れか一項に記載のプログラムを記憶したコンピュータ読取り可能な情報記憶媒体。
【請求項10】
撮影手段及び表示手段を備え、基準方向が表されたマーカが写るように前記撮影手段により撮影されたライブビューにオブジェクトを合成表示する電子機器であって、
前記ライブビュー内における前記マーカの位置を基準とした仮想3次元空間における前記コンピュータの位置を周期的に算出する位置算出手段と、
現在から遡って所与の時間分、或いは、所与の回数分の前記位置算出手段により算出された複数の算出位置を用いて、前記コンピュータの現在位置を決定する現在位置決定手段と、
前記仮想3次元空間中の所与の位置にオブジェクトを配置するオブジェクト配置手段と、
前記現在位置決定手段により決定された現在位置から前記オブジェクトを見た画像を、前記ライブビューに合成する合成手段と、
を備えた電子機器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公開番号】特開2013−61870(P2013−61870A)
【公開日】平成25年4月4日(2013.4.4)
【国際特許分類】
【出願番号】特願2011−200842(P2011−200842)
【出願日】平成23年9月14日(2011.9.14)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【出願人】(511103177)株式会社B.B.スタジオ (1)
【Fターム(参考)】