以下、本発明に係る画像表示システム、記録媒体及びプログラムをビデオゲームシステムに適用した実施の形態例を図1〜図44を参照しながら説明する。
本実施の形態に係るビデオゲームシステム10は、図1に示すように、ビデオゲーム機12と各種外部機器14とを有する。
ビデオゲーム機12は、各種プログラムを実行するCPU16と、各種プログラムやデータが格納されるメインメモリ18と、画像データが記録(描画)される画像メモリ20と、各種外部機器14とのデータのやりとりを行うための入出力ポート22とを有する。
入出力ポート22に接続される各種外部機器14は、表示用インターフェース(I/F)28を介して接続されるモニタ30と、光ディスク(DVD−ROM、DVD−RW、DVD−RAM、CD−ROM等)32に対して再生/記録を行う光ディスクドライブ34と、メモリカード用インターフェース(I/F)36を介して接続されるメモリカード38と、撮像用インターフェース(I/F)40を介して接続されるCCDカメラ42と、ハードディスク44に対して再生/記録を行うハードディスクドライブ(HDD)46と、音声用インターフェース48を介して接続されるスピーカ50とを有する。もちろん、入出力ポート22から図示しないルータを介してインターネット(図示せず)に接続される場合もある。
これら外部機器14に対するデータの入出力並びにビデオゲーム機12内でのデータの加工等はCPU16とメインメモリ18を通じて行われ、特に、撮像データや画像データは画像メモリ20に記録(描画)される。
次に、この実施の形態に係るビデオゲームシステム10が有する特徴的な機能、即ち、例えば光ディスク32、メモリカード38やハードディスク44のようなランダムアクセス可能な記録媒体、さらにはインターネットやイントラネットのようなネットワークによってビデオゲーム機12に提供されるプログラムによって実現される機能について図2〜図44を参照しながら説明する。
まず、このビデオゲームシステム10にて使用されるカード54について説明する。このカード54は、一般にカードゲームで使用されるカードと同じ大きさ厚みを有し、表面には、図2Aに示すように、カード54に対応したキャラクタを示す絵柄が印刷され、裏面には、図2Bに示すように、識別画像56が印刷されている。もちろん、透明性のカードでもかまわない。この場合、識別画像56だけが印刷されることになる。
識別画像56は、図2Bに示すような二次元バーコード(以下、2Dコードと略記する)のパターンにて構成されている。識別画像56は、1ブロックを1単位とし、縦方向が9.5ブロック分の長さで、横方向が7ブロック分の長さの長方形の範囲内に、ロゴ部58とコード部60が1ブロック分離して配置されている。ロゴ部58は、コード部60の基準位置とカード54の方向を知らせるための2Dコードであって、縦方向が1.5ブロック分の長さで、横方向が7ブロック分の長さの大きな長方形の黒色の基準セル62が配置されている。なお、このロゴ部58には、例えば、キャラクタの名称、あるいは宣伝のためのマーク(ロゴ)等が印刷される場合もある。
コード部60は、縦方向と横方向が共に7ブロック分の長さの正方形の範囲のうち、各コーナー部に対応して識別情報認識用の例えば黒色の方形のコーナーセル64が配置され、さらに、4つのコーナーセル64で囲まれた領域に識別情報を認識するための例えば黒色の方形の識別セル66が二次元的にパターン化され配置されている。
撮像画像データから識別画像56の位置を検出する手法、コーナーセル64の画像を検出する手法並びに識別セル66の二次元パターンを検出する手法は、例えば先に述べた特許文献1(特開2000−82108号公報)に詳しく説明してあるため、該特許文献1を参照されたい。
また、本実施の形態では、識別セル66の二次元パターンの各種パターンと各パターンに対応する識別番号との対応テーブルが例えばデータベース68(2Dコードのデータベース:図6や図7参照)としてハードディスク44や光ディスク32等に登録されている。従って、検出した識別セル66の二次元パターンをデータベース68内の前記対応テーブルで照合することによって、カード54の識別番号を容易に検出することができる。
そして、ビデオゲームシステムで実現される機能は、図3A及び図3Bに示すように、机やテーブル52等に置かれた例えば6つのカード541、542、543、544、545及び546をCCDカメラ42で撮像してモニタ30の画面に表示すると共に、モニタ30の画面に表示されたカード541、542、543、544、545及び546の各画像、例えば各カード541、542、543、544、545及び546に貼付された識別画像561、562、563、564、565及び566の上に、各カード541〜546の識別画像561〜566等に対応するオブジェクト(キャラクタ)の画像701、702、703、704、705及び706を重畳して表示することで、ゲームとビデオゲームとを融合したゲームを実現させるというものである。なお、図3Aの例は、一方のユーザ74Aが机やテーブル52等に3つのカード541〜543を横方向に並べて配置し、他方のユーザ74Bが同じく机やテーブル52等に3つのカード544〜546を横方向に並べて配置した場合を示す。また、キャラクタとは、オブジェクトのうち、人間や動物、あるいはテレビ番組やアニメーション映画等で登場する主人公等を指す。
また、CCDカメラ42は、図3Aに示すように、机やテーブル52上に固定されたスタンド72に取り付けられるが、このとき、例えばユーザ74A及び74Bによって、CCDカメラ42の撮像面がカード541〜546の置かれた部分に向くように調整される。もちろん、図4Aに示すように、ユーザ74が例えば1つのカード542を持っている姿を撮像してモニタ30に映し出すことによって、モニタ30の画面には、図4Bに示すように、ユーザ74の画像とカード542の識別画像562とキャラクタの画像702が表示され、ユーザ74が持っているカード542上にキャラクタが乗っているようなシーンを表示させることもできる。
そして、本実施の形態の上述した機能は、例えばハードディスク44にインストールされた各種プログラムのうち、前記機能を実現するためのアプリケーションプログラムがCPU16で実行されることによって達成される。
このアプリケーションプログラム80は、図5に示すように、カード認識プログラム82、キャラクタ出現表示プログラム84、キャラクタ動作表示プログラム86、フィールド表示プログラム88、カード位置予測プログラム90、組合せ動作表示プログラム92、第1のキャラクタ移動表示プログラム94、第2のキャラクタ移動表示プログラム96、キャラクタ無効化プログラム98、浮遊画像表示プログラム100、着地表示プログラム102を有する。
ここで、前記アプリケーションプログラム80の機能について図6〜図44を参照しながら説明する。
まず、カード認識プログラム82は、机やテーブル52等の上に置かれたカード(例えば図3Aにおけるカード541)の識別画像561を認識して、識別画像561上に表示させるべきキャラクタの画像(例えば図3Bにおける画像701)を特定する処理を行うもので、図6に示すように、撮像画像描画機能103と、基準セル探知機能104と、識別情報検出機能106と、カメラ座標検出機能108と、キャラクタ画像検索機能110とを有する。ここで、「認識」とは、画像メモリ20に描画された撮像画像データから検出されたカード541の識別画像561から当該カード541の識別番号や方向を検出することを示す。
撮像画像描画機能103は、撮像した被写体の映像を画像メモリ20に背景画像として設定し描画する。背景画像として設定する処理の1つとしては、ZバッファリングへのZ値の設定等が挙げられる。
基準セル探知機能104は、上述したように、画像メモリ20に描画された画像データ(撮像画像データ)からロゴ部58の基準セル62の画像データを探知して、基準セル62の画像データの位置を検出する。基準セル62の画像データの位置は、スクリーン座標として検出される。
識別情報検出機能106は、図7に示すように、検出した基準セル62の画像データの位置に基づいてコーナーセル64の画像データを検出し、これら基準セル62及びコーナーセル64によって形成される領域112の画像データをアフィン変換して、カード541の識別画像561を上面から見た画像114と等価な画像データとし、該画像データからコード部60の二次元パターン、すなわち、コーナーセル64と識別セル66の二次元パターンからなるコード116を抽出し、該コード116から識別番号等を検出する。識別番号の検出は、上述したように、抽出したコード116を2Dコードのデータベース68と照合することによって行われる。この照合によって、識別番号がキャラクタではなく、背景画像を決定付けるフィールドに関するものであれば、後述するフィールド表示プログラム88を起動する。また、照合の結果、識別番号が存在してない場合は、後述する浮遊画像表示プログラム100を起動する。
カメラ座標検出機能108は、図8に示すように、検出したスクリーン座標並びにCCDカメラ42の焦点距離に基づいてカメラ視点C0を原点とするカメラ座標系(6軸の方向:x、y、z、θx、θy及びθz)を求め、カード541における識別画像561のカメラ座標を求める。このとき、カード541におけるロゴ部58の中心のカメラ座標とコード部60の中心のカメラ座標が求められる。得られたロゴ部58の中心のカメラ座標とコード部60の中心のカメラ座標は、図9に示す現在位置情報テーブル117に登録される。この現在位置情報テーブル117は、カードのロゴ部58の中心のカメラ座標、コード部60の中心のカメラ座標及び後述するキャラクタの画像のカメラ座標を当該カードの識別番号と対応付けて記憶しておくための情報テーブルである。この現在位置情報テーブル117への登録は、このカード認識プログラム82のほか、カード位置予測プログラム90にて行われる。このことについては後述する。
なお、画像メモリ20に描画された画像のスクリーン座標から該画像のカメラ座標を求める手法、並びにある画像のカメラ座標から画像メモリ20上のスクリーン座標を求める手法については、先に述べた特許文献2(特開2000−322602号公報)に詳しく説明してあるため、該特許文献2を参照されたい。
キャラクタ画像検索機能110は、検出した識別番号に基づくキャラクタの画像(例えば図3Bに示すキャラクタの画像701)をオブジェクト情報テーブル118から検索する。
オブジェクト情報テーブル118の内訳は、例えば図10に示すように、多数のレコードが配列されて構成され、1つのレコードに、識別番号、キャラクタの画像データの格納先頭アドレス、各種パラメータ(体力、攻撃力、レベル等)、有効/無効ビットが登録されている。
有効/無効ビットは、そのレコードが有効であるかどうかを判別するためのビットである。「無効」が設定される場合は、例えば現段階ではキャラクタの画像が設定されていない場合や、例えばキャラクタがビデオゲームで設定された戦闘で負け、死亡した場合等である。
そして、このキャラクタ画像検索機能110は、オブジェクト情報テーブル118から当該識別番号に対応するレコードを検索し、検索したレコードが「有効」であれば、該レコードに登録された格納先頭アドレスから画像データ120を読み出す。例えばハードディスク44や光ディスク32等に記録され、かつ、多数の画像データ120が登録されたデータファイル122のうち、前記格納先頭アドレスから当該キャラクタに対応する画像データ120を読み出す。「無効」の場合は、画像データ120を読み出さない。
従って、机やテーブル52等に1つのカード541を置いたとき、前記カード認識プログラム82が起動されて、置かれたカード541の識別画像561で特定される識別番号に対応するキャラクタの画像701が特定されることになる。また、キャラクタ画像検索機能110は、キャラクタの画像701を特定した段階で、現在位置情報テーブル117のうち、カード541の識別番号に対応するレコードにおけるキャラクタの画像のカメラ座標として、カード541のコード部60の中心のカメラ座標を登録する。
このカード認識プログラム82により、実空間と仮想空間を融合した視覚効果を表現することが可能となる。そして、このカード認識プログラム82から様々なアプリケーションプログラム(キャラクタ出現表示プログラム84、キャラクタ動作表示プログラム86、フィールド表示プログラム88、カード位置予測プログラム90等)に制御が移されることになる。
次に、キャラクタ出現表示プログラム84は、検出したカード(例えばカード541)の識別画像561で特定される識別番号等に対応するキャラクタの画像701をカード541の識別画像561に重畳させて登場させる表示を行うもので、図11に示すように、動作データ列検索機能124、登場姿勢設定機能126、三次元画像設定機能128、画像描画機能130、画像表示機能132及び繰返し機能134とを有する。
動作データ列検索機能124は、キャラクタが登場するシーンを表示するための動作データ列を識別番号等に基づいて登場動作情報テーブル136から検索する。具体的には、まず、例えばハードディスク44や光ディスク32等に記録され、かつ、各レコードに動作データ列の格納先頭アドレスが登録された登場動作情報テーブル136から識別番号等に対応するレコードを検索する。そして、例えばハードディスク44や光ディスク32等に記録され、かつ、多数の動作データ列138が登録されたデータファイル140のうち、前記検索したレコードに登録された格納先頭アドレスから当該キャラクタの画像701が登場する動作を示す動作データ列138を読み出す。
登場姿勢設定機能126は、キャラクタの画像701が登場する過程の1つの姿勢を設定する。例えば読み出された動作データ列138のiフレーム目(i=1,2,3・・・)の動作データに基づいてキャラクタの画像701の頂点データをカメラ座標系で移動して1つの姿勢を設定する。
三次元画像設定機能128は、検出したカード541の識別画像561のカメラ座標に基づいて該カード541の識別画像561の上に前記キャラクタの画像701が登場する過程の1つの姿勢の三次元画像を設定する。
画像描画機能130は、キャラクタの画像701が登場する過程の1つの姿勢の三次元画像をスクリーン座標系の画像に透視変換して画像メモリ20に描画(隠面処理を含む)する。このとき、Zバッファリングのうち、キャラクタの画像701のZ値をフレーム単位に設定し直すことで、カード541の識別画像561の下からキャラクタの画像701が徐々に出現するようなシーンを表現することができる。
画像表示機能132は、画像メモリ20に描画された画像を1フレーム単位に入出力ポート22を介してモニタ30に出力し、モニタ30の画面に前記画像を表示する。
繰返し機能134は、登場姿勢設定機能126による処理→三次元画像設定機能128による処理→画像描画機能130による処理→画像表示機能132による処理を順次繰り返す。これによって、カード541の識別画像561の上に、該カード541の識別番号等に対応するキャラクタの画像701が登場するシーンが表示されることになる。
次に、キャラクタ動作表示プログラム86は、キャラクタが待機しているシーンや攻撃しているシーン、魔法をかけるシーン、他のキャラクタを庇うシーン等を表示するもので、図12に示すように、上述したキャラクタ出現表示プログラム84とほぼ同様に、動作データ列検索機能142、姿勢設定機能144、三次元画像設定機能146、画像描画機能148、画像表示機能150及び繰返し機能152とを有する。
動作データ列検索機能142は、キャラクタが待機するシーン、攻撃するシーン、魔法をかけるシーン、他のキャラクタを庇うシーンを表示するための動作データ列をシーンに応じた各種動作情報テーブル154から検索する。具体的には、まず、例えばハードディスク44や光ディスク32等に記録され、かつ、各レコードに動作データ列の格納先頭アドレスが登録された各種動作情報テーブル154から表示すべき動作に対応する動作情報テーブル154を特定し、さらに、特定された動作情報テーブル154から当該識別番号等に対応するレコードを検索する。そして、例えばハードディスク44や光ディスク32等に記録され、かつ、多数の動作データ列156が登録されたデータファイル158のうち、前記検索したレコードに登録された先頭アドレスから今回表示すべき動作(キャラクタが待機する動作、攻撃する動作、魔法をかける動作、他のキャラクタを庇う動作等)に対応した動作データ列156を読み出す。
姿勢設定機能144は、例えばカード541に関するキャラクタであれば、キャラクタの画像701が待機する過程の1つの姿勢、攻撃する過程の1つの姿勢、魔法をかける過程の1つの姿勢、他のキャラクタを庇う過程の1つの姿勢を設定する。例えば読み出された動作データ列156のiフレーム目(i=1,2,3・・・)の動作データに基づいてキャラクタの画像701の頂点データをカメラ座標系で移動して1つの姿勢を設定する。
三次元画像設定機能146は、検出したカード541の識別画像561のカメラ座標に基づいて該カード541の識別画像561の上に前記キャラクタの画像701が待機する過程の1つの姿勢、攻撃する過程の1つの姿勢、魔法をかける過程の1つの姿勢、他のキャラクタを庇う過程の1つの姿勢の三次元画像を設定する。
画像描画機能148は、キャラクタの画像701が待機する過程の1つの姿勢、攻撃する過程の1つの姿勢、魔法をかける過程の1つの姿勢、他のキャラクタを庇う過程の1つの姿勢の三次元画像をスクリーン座標系の画像に透視変換して画像メモリ20に描画(隠面処理を含む)する。
画像表示機能150は、画像メモリ20に描画された画像を1フレーム単位に入出力ポート22を介してモニタ30に出力し、モニタ30の画面に前記画像を表示する。
繰返し機能152は、姿勢設定機能144による処理→三次元画像設定機能146による処理→画像描画機能148による処理→画像表示機能150による処理を順次繰り返す。これによって、キャラクタの画像701が待機するシーン、攻撃するシーン、魔法をかけるシーン、他のキャラクタを庇うシーンが表示されることになる。
これらカード認識プログラム82、キャラクタ出現表示プログラム84及びキャラクタ動作表示プログラム86によって、カードゲームのキャラクタをビデオゲームのシナリオ中に出現させて様々な動作を行わせることができる。つまり、実空間でしか楽しめなかったカードゲームを仮想空間にまで広げることができ、カードゲームとビデオゲームとが融合した新規なゲームを提供することができる。
次に、フィールド表示プログラム88について説明する。このプログラム88は、図13Aに示すように、机やテーブル52等に置かれた1枚目のカードがフィールドに関するカード(以下、フィールドカード54Fと記す)の場合に、カード認識プログラム82によって起動されるもので、図13Bに示すように、モニタ30の画面に該フィールドカード54Fの識別画像56Fで特定される識別番号に対応した背景画像160と対戦用のカードを置くべき位置を示す複数の升目の画像601〜606を表示する。
このフィールド表示プログラム88は、図14に示すように、背景画像検索機能164、三次元画像設定機能166、背景画像描画機能168、カード配置位置予測機能170、升目領域設定機能172、背景画像表示機能174、繰返し機能176、基準セル探知機能178、識別情報検出機能180、キャラクタ画像検索機能182を有する。
背景画像検索機能162は、フィールドカード54Fの識別番号に対応する背景画像160を背景画像情報テーブル184から検索する。背景画像情報テーブル184には、例えば図15に示すように、多数のレコードが配列されて構成され、1つのレコードに、識別番号と背景画像データの格納先頭アドレスとアニメーションデータ列の格納先頭アドレスとが登録されている。
そして、この背景画像検索機能164は、例えばハードディスク44や光ディスク32等に記録された前記背景画像情報テーブル184から識別番号に対応するレコードを検索する。そして、例えばハードディスク44や光ディスク32等に記録され、かつ、多数の背景画像データ186が登録されたデータファイル188のうち、前記検索したレコードに登録された格納先頭アドレスから当該フィールドカード54Fの識別番号に対応する背景画像データ186を読み出す。さらに、多数のアニメーションデータ列190が登録されたデータファイル192のうち、前記検索したレコードに登録された格納先頭アドレスから当該フィールドカード54Fの識別番号に対応するアニメーションデータ列190を読み出す。
三次元画像設定機能166は、動きのある背景画像の1つの場面(過程)を設定する。例えば読み出されたアニメーションデータ列190のiフレーム目(i=1,2,3・・・)のアニメーションデータに基づいて背景画像データ186の頂点データをカメラ座標上で移動して1つの場面を設定する。
背景画像描画機能168は、動きのある背景画像の1つの場面の三次元画像をスクリーン座標系の画像に透視変換して画像メモリ20に描画(隠面処理を含む)する。このとき、Zバッファリングのうち、背景画像160のZ値を撮像画像のZ値よりも低い値(撮像画像よりもカメラ視点に近い値)に設定して、背景画像160を撮像画像よりも優先して表示させるようにする。
カード配置位置予測機能170は、検出したフィールドカード54Fのカメラ座標に基づいて複数の升目(図13Bでは6つの升目601〜606)のカメラ座標を予測する。このとき、升目情報テーブル194が使用される。この升目情報テーブル194は、図16に示すように、フィールドカード54Fが置かれる位置を基準位置としたときの相対座標がそれぞれ登録されている。具体的には、例えば図17に示すように、フィールドカード54Fが置かれる位置をxz平面上での原点(0,0)としたとき、第1〜第6の升目の相対座標として、(dx,−dz)、(dx,0)、(dx,dz)、(−dx,dz)、(−dx,0)、(−dx,−dz)が登録される。dx及びdzの長さは、実際のカードの大きさから決定され、隣接して配置されるカードが重ならないような値に設定される。
従って、基準位置(原点)のカメラ座標が決定されれば、升目情報テーブルから6つの升目601〜606の各カメラ座標が容易に求められる。これら6つの升目601〜606のカメラ座標が、フィールドカード54F以外の複数のカード(以下、対戦カード541〜546と記す)が置かれる位置のカメラ座標を示すことになる。
升目領域設定機能172は、得られた6つのカメラ座標にそれぞれ対戦カード541〜546を置くべき6つの升目601〜606を設定する。具体的には、撮像画像のZ値のうち、例えば対戦カード541〜546の大きさよりも1回り大きい長方形状の升目601〜606をスクリーン座標系に透視変換した領域に対応するZ値を背景画像160のZ値よりも低い値(背景画像160よりもカメラ視点に近い値)に設定して、背景画像160のうち、6つの升目601〜606に対応する部分に撮像画像が表示されるようにする。
背景画像表示機能174は、画像メモリ20に描画された画像を1フレーム単位に入出力ポート22を介してモニタ30に出力し、モニタ30の画面に背景画像160を表示すると共に、背景画像160のうち、6つの升目601〜606に対応した部分に撮像画像を表示する。
繰返し機能176は、三次元画像設定機能166による処理→背景画像描画機能168による処理→カード配置位置予測機能170による処理→升目領域設定機能172による処理→背景画像表示機能174による処理を順次繰り返す。これによって、図12Bに示すように、モニタ30の画面に動きのある背景画像160が表示されると共に、この背景画像160のうち、6つの升目601〜606に対応した部分に撮像画像が映し出されるという表示が行われる。すなわち、ユーザが机やテーブル52等のうち、6つの升目601〜606に対応した部分に対戦カード541〜546を置くことによって、背景画像160の中から対戦カード541〜546の識別画像561〜566が鮮明に映し出されることから、ユーザは6つの升目601〜606に合わせて対戦カード541〜546を置くことが可能となる。
一方、基準セル探知機能178は、動きのある背景画像160が表示されている間において、6つの升目601〜606のカメラ座標から画像メモリ20上での6つの描画範囲を求め、各描画範囲に対戦カード541〜546の識別画像561〜566、特に、ロゴ部58の基準セル62が存在するかどうかを探知する。例えば図18Aに示すように、モニタ30に表示された6つの升目601〜606(図13B参照)に合わせて6つの対戦カード541〜546が机やテーブル52等に置かれた場合、6つの対戦カード541〜546の各基準セル62の位置が検出されることになる。
識別情報検出機能180は、上述したカード認識プログラムにおける識別情報検出機能106と同様の処理を行って、置かれた例えば6つのカード541〜546の各識別画像561〜566から特定される6つのカードの各識別番号を検出する。なお、照合の結果、識別番号が存在していない場合は、後述する浮遊画像表示プログラム100を起動する。
キャラクタ画像検索機能182は、6つの升目601〜606に対応して置かれた対戦カード541〜546の識別番号に対応するキャラクタの画像データ120をオブジェクト情報テーブル118から検索する。例えば、オブジェクト情報テーブル118からそれぞれ識別番号に対応するレコードを検索し、検索したレコードが「有効」であれば、これらレコードに登録された格納先頭アドレスからそれぞれ画像データ120を読み出す。この時点で、6つの升目601〜606に対応して置かれた対戦カード541〜546のキャラクタの画像701〜706が決定されることになる。
このあと、例えばキャラクタ出現表示プログラム84が起動されることによって、図18Bに示すように、各対戦カード541〜546の識別画像561〜566上にそれぞれ対戦カード541〜546の識別番号に対応するキャラクタの画像701〜706が登場するシーンが表示されることになる。
このフィールド表示プログラム88では、ユーザがどの位置に対戦カード541〜546を置いたかどうかを画像メモリ20全体にわたって探知していくのではなく、対戦カード541〜546を置くべき位置を6つの升目601〜606として指し示し、6つの升目601〜606の位置を中心に探知して対戦カード541〜546を認識することができるため、対戦カードの認識のたびに画像メモリ20全体を探知する必要がなくなり、6つのカード541〜546に対する認識処理の負荷を軽減することができる。これは、処理スピードの高速化につながる。
次に、カード位置予測プログラム90について説明する。このプログラム90は、例えば6人対戦や2人対戦等に好適であり、基準となる画像(基準画像)の位置を検出し、該基準画像の位置に基づいて対戦カードが配置される位置を予測するものである。
基準画像としては、例えば図19Aに示すように、対戦カード541〜546の配置に先立って机やテーブル52等に配置されるフィールドカード54Fの識別画像56Fや、例えば図20Aに示すように、2人対戦であって、対戦用の矩形マット196を机やテーブル52等に敷き、マット196に描かれた6つの升目(1人につき3つの升目が横方向に配置:第1〜第6の升目801〜806)にそれぞれ対戦カード541〜546を置く場合であれば、マット196の例えば中心位置に描かれた「+」の画像198や、図21Aに示すように、例えば6人対戦であって、対戦用の円形マット200を机やテーブル52等に敷き、マット200に描かれた6つの升目(円陣に配置:第1〜第6の升目901〜906)にそれぞれ対戦カード541〜546を置く場合であれば、マット200の例えば中心位置に描かれた画像202である。また、上述したマット196及び200を置かずに、対戦領域の例えば中央やコーナー部にアイテムを置く場合は、該アイテムの画像等が基準画像となる。以下の説明では、基準画像として候補に挙げられるこれらの画像を「基準画像201」と記す。なお、基準画像201としては、方向がはっきりわかるような画像を用いることが好ましい。
そして、このカード位置予測プログラム90は、図22に示すように、基準画像検出機能204と、カメラ座標検出機能206と、探知領域設定機能208と、基準セル探知機能210と、識別情報検出機能212と、キャラクタ画像検索機能214とを有する。
ここで、カード位置予測プログラム90の処理動作について図22〜図25Bを参照しながら説明する。
まず、図23のステップS1において、基準画像検出機能204は、画像メモリ20に描画された撮像画像データから基準画像201の位置を検出する。この位置検出においては、予め決められた基準画像201を様々な角度から撮像した複数の画像をそれぞれ参照画像として登録しておき、これら参照画像によるパターンマッチング等の手法によって、撮像画像データから容易に基準画像201を検出することができる。もちろん、他のパターン認識にて基準画像201を検出するようにしてもよい。基準画像201の位置は、スクリーン座標として検出される。
その後、ステップS2において、カメラ座標検出機能206は、検出した基準画像201のスクリーン座標並びにCCDカメラ42の焦点距離に基づいてカメラ視点を原点とするカメラ座標系(6軸の方向:x、y、z、θx、θy及びθz)を求め、検出した基準画像201のカメラ座標を求める。このとき、基準画像201の中心のカメラ座標が求められる。この基準画像201のカメラ座標はレジスタ216に登録される。このレジスタ216に登録された基準画像201のカメラ座標は、このカード位置予測プログラム90のほか、第1のキャラクタ移動表示プログラム94においても利用される。このことについては後述する。
その後、ステップS3において、探知領域設定機能208は、基準画像201のカメラ座標に基づいて、該基準画像201を含み、かつ、基準セル探知機能210にて探知すべき領域のカメラ座標を求める。この探知すべき領域は、例えば図25Aに示すように、2人対戦でそれぞれ複数のカードを横方向に配置する場合であれば、基準画像201を中心とした矩形の領域218であり、例えば図25Aに示すように、3人以上の対戦で複数のカードを円陣に配置するのであれば、基準画像201を中心とした円形の領域220である。以下、矩形の領域218及び円形の領域220を探知領域222と記す。
その後、図23のステップS4において、基準セル探知機能210は、得られた探知領域222のカメラ座標から画像メモリ20上での前記探知領域222の描画範囲224を求める(図24B及び図25B参照)。その後、ステップS5において、探知領域222の描画範囲224に対戦カード541〜546の識別画像561〜566、特に、ロゴ部58の基準セル62が存在するかどうかを探知する。例えば図19Bに示すように、フィールドカード54Fを中心にして6つの対戦カード541〜546が置かれた場合や、図20Aに示すように、マット196の第1〜第6の升目801〜806に合わせて6つの対戦カード541〜546が置かれた場合や、図21Aに示すように、マット200の第1〜第6の升目901〜906に合わせて6つの対戦カード541〜546が置かれた場合等においては、6つの対戦カード541〜546の各基準セル62の位置が検出されることになる。
対戦カード541〜546の識別画像561〜566が存在している場合は、ステップS6に進み、識別情報検出機能212は、前記描画範囲224の画像データをアフィン変換して、描画範囲224の画像データを上面から見た画像と等価な画像データとし、該画像データから6つのカード541〜546の識別画像561〜566、特に、各識別画像561〜566のコード部60の二次元パターン(コード116)から6つのカード541〜546の識別番号を検出する。識別番号の検出は、上述したように、コード116を2Dコードのデータベース68と照合することによって行われる。
その後、ステップS7において、識別情報検出機能212は、6つのカード541〜546における識別画像561〜566のカメラ座標を求め、6つのカード541〜546における各ロゴ部58の中心のカメラ座標と各コード部60の中心のカメラ座標を、図9に示す現在位置情報テーブル117に登録する。なお、識別番号が検出できなかった場合は、後述する浮遊画像表示プログラム100が起動される。
その後、ステップS8において、キャラクタ画像検索機能214は、対戦カード541〜546の各識別番号に基づくキャラクタの画像701〜706の画像データ120をオブジェクト情報テーブル118から検索する。例えばオブジェクト情報テーブル118からそれぞれ識別番号に対応するレコードを検索し、検索したレコードが「有効」であれば、各レコードに登録された画像データの格納先頭アドレスから各キャラクタの画像データ120を読み出す。
その後、ステップS9において、キャラクタ画像検索機能214は、キャラクタの画像701〜706を特定した段階で、現在位置情報テーブル117のうち、カード541〜546の識別番号に対応する各レコードにおけるキャラクタの画像のカメラ座標として、カード541〜546の各コード部60の中心のカメラ座標を登録する。
一方、前記ステップS5において、対戦カード541〜546の識別画像561〜566が存在していないと判別された場合は、基準セル探知機能210は、ステップS10に進み、モニタ30の画面に全てのカード541〜546を置くように促すエラーメッセージを出力する。その後、ステップS11において、所定時間(例えば3秒間)だけ待機した後、ステップS5に戻り、処理を繰り返す。
そして、探知領域222に存在する全てのカード541〜546についてキャラクタの画像701〜706を決定した段階で、上述した処理動作が終了する。
この場合も、例えばキャラクタ出現表示プログラム84が起動されることによって、図18C、図19B及び図20Bに示すように、各対戦カード541の識別画像561〜566上にそれぞれカード541〜546の識別番号に対応するキャラクタの画像701〜706が登場するシーンが表示されることになる。
このカード位置予測プログラム90では、6つのカード541〜546に対する認識を、基準画像201に基づいて設定された探知領域222に対して行うようにしたので、6つのカード541〜546を認識するために、再度、画像メモリ20全体を探知する必要がなくなり、6つのカード541〜546に対する認識処理の負荷を軽減することができる。
次に、組合せ動作表示プログラム92について説明する。このプログラム92は、図3Aに示すように、一方のユーザ74Aが机やテーブル52等に3つのカード541〜543を横方向に並べて配置し、他方のユーザ74Bが同じく机やテーブル52等に3つのカード544〜546を横方向に並べて配置した場合を想定したものである。このプログラム92は、検出された3つのカード(例えばカード541〜543)の配置方向の組み合わせから1つの処理手順を特定するものである。例えば、3つのカード541〜543のうち、左側のカード541の配置方向によって動作を行うキャラクタを特定し、中央のカード542の配置方向によって動作によって影響を与えるべき相手のキャラクタを特定し、右側のカードの配置方向によって動作を特定する。
そして、この組合せ表示プログラムは、図26に示すように、カード方向検出機能226と、動作対象特定機能228と、相手特定機能230と、動作特定機能232とを有する。
ここで、全てのカード541〜546の識別画像561〜566のカメラ座標が検出された後の各機能の処理について図3A、図3B、図26及び図27〜図29を参照しながら説明する。
まず、カード方向検出機能226は、現在位置情報テーブル117に登録されている情報、すなわち、置かれた全てのカード541〜546の識別画像561〜566のカメラ座標(ロゴ部58のカメラ座標及びコード部60のカメラ座標)から、それぞれユーザ74A及び74Bの左側、中央及び右側に位置する各カード541〜546の識別画像561〜566が、それぞれ対応するユーザ74A及び74Bから見てどの方向を向いているかを検出する。また、攻撃又は防御がターン制であれば、これから攻撃を行う側のユーザ74A又は74Bのカード(カード541〜543又はカード544〜546)についてだけカードの方向を検出するようにしてもよい。
以下の説明では、説明を簡単にするために、ユーザ74Aの3つのカード541〜543による処理について説明する。
そして、カード方向検出機能226は、図26に示すように、ユーザ74Aによって左側に置かれたカード541の識別画像561の方向の情報を動作対象特定機能228に渡し、中央に置かれたカード542の識別画像562の方向の情報を相手特定機能230に渡し、右側に置かれたカード543の識別画像563の方向の情報を動作特定機能232に渡す。
動作対象特定機能228は、3つのカード541〜543の識別画像561〜563上に重畳して表示されている3つのキャラクタの画像701〜703のうち、前記カード方向検出機能226から供給されたカード541の方向の情報に基づいて、1つのキャラクタ又は全キャラクタを選択する。
具体的には、例えば図27に示すように、左側のカード541の方向が左であれば、左側のカード541のキャラクタの画像701(実際には識別画像561で特定される識別番号)が選択され、カード541の方向が上であれば、中央のカード542のキャラクタの画像702(実際には識別画像562で特定される識別番号)が選択され、カード541の方向が右であれば、右側のカード543のキャラクタの画像703(実際には識別画像563で特定される識別番号)が選択され、カード541の方向が下であれば、左、中央及び右の3つのカード541〜543のキャラクタの画像701〜703(実際には識別画像561〜563で特定される識別番号)が選択される。選択された識別番号は、第1のレジスタ234に登録される。
相手特定機能230は、敵対する相手(ユーザ74B)に関するそれぞれ3つのカード544〜546の識別画像564〜566上に重畳して表示されている3つのキャラクタの画像704〜706のうち、前記カード方向検出機能226から供給されたカード542の方向に基づいて、相手となる1つのキャラクタ又は全キャラクタを選択する。
具体的には、例えば図28に示すように、中央のカード542の方向が左であれば、ユーザ74Bから見て左側のカード54dのキャラクタの画像704(実際には識別画像564で特定される識別番号)が選択され、カード542の方向が上であれば、ユーザ74Bから見て中央のカード545のキャラクタの画像705(実際には識別画像565で特定される識別番号)が選択され、カード542の方向が右であれば、ユーザ74Bから見て右側のカード546のキャラクタの画像706(実際には識別画像566で特定される識別番号)が選択され、カード542の方向が下であれば、前記動作対象特定機能228にて選択された識別番号が選択される。選択された識別番号は、第2のレジスタ236に登録される。
動作特定機能232は、前記動作対象特定機能228にて選択された識別番号(第1のレジスタ234に登録された識別番号)に対応するキャラクタの動作を、前記カード方向検出機能226から供給されたカード543の方向に基づいて選択する。例えば図29に示すように、カード543の方向が左であれば、「攻撃する」が選択され、カード543の方向が上であれば、「魔法をかける」が選択され、カード543の方向が右であれば、「防御する」が選択され、カード543の方向が下であれば、「庇う」が選択される。
前記動作特定機能232は、動作が選択された段階で、キャラクタ動作表示プログラム86を起動して選択した動作に応じたシーンを表示させる。
この組合せ動作表示プログラム92によれば、操作装置(キー操作によってコマンド入力を行うための装置)を使用しなくても、3つのカード541〜543の向きの組み合わせによって様々な処理を指示することができる。
次に、第1のキャラクタ移動表示プログラム94について説明する。このプログラム94は、図30に示すように、例えばカード545の識別画像565上に重畳して表示されたキャラクタの画像705が、撮像画像上の目的位置240まで移動する表示を行う。目的位置240としては、基準画像201の位置、複数のカード541〜546の向きによって決定される位置、あるいは上述した組合せ動作表示プログラム92で選択された相手となるキャラクタの画像の位置等である。
そして、この第1のキャラクタ移動表示プログラム94は、図31に示すように、第1の目的位置設定機能242、第2の目的位置設定機能244、第3の目的位置設定機能246、動作データ列検索機能248、移動姿勢設定機能250、三次元画像設定機能252、画像描画機能254、画像表示機能256、テーブル書換え機能258、距離演算機能260、繰返し機能262を有する。なお、第1〜第3の目的位置設定機能242、244及び246による処理は、ビデオゲームのシナリオの進行に応じて選択的に行われる。
第1の目的位置設定機能242は、基準画像201の位置を目的位置として設定する。具体的には、カード位置予測プログラム90においてレジスタ216(図22参照)に登録された基準画像201のカメラ座標を読み出し、このカメラ座標を目的位置のカメラ座標とする。
第2の目的位置設定機能244は、机やテーブル52等に置かれた全てのカード541〜546の方向に基づいて決定される位置を目的位置として設定する。例えば図32に示すように、6つのカード541〜546が円陣に配置された場合、各カード541〜546の中心線m1〜m6が交差する複数の点で形成される多角形264の例えば内心位置や重心位置266を目的位置とする。これは、3つ以上のカードが円陣に配置される場合に適用することができる。具体的な処理としては、現在位置情報テーブル117に登録されている情報、すなわち、置かれた全てのカード541〜546の識別画像561〜566のカメラ座標(ロゴ部58のカメラ座標及びコード部60のカメラ座標)から全てのカード541〜546の中心線m1〜m6のベクトルを求め、得られた中心線m1〜m6が交差する複数の点のカメラ座標を抽出し、抽出された複数の点にて構成される多角形264の内心位置あるいは重心位置266のカメラ座標を目的位置のカメラ座標とする。
第3の目的位置設定機能246は、組合せ動作表示プログラム92で選択された相手となるキャラクタの画像の位置を目的位置として設定する。具体的には、組合せ動作表示プログラム92において第2のレジスタ236(図26参照)に登録された識別番号を読み出し、現在位置情報テーブル117に登録された情報のうち、前記読み出された識別番号に対応するカメラ座標(例えばキャラクタの画像のカメラ座標)を目的位置のカメラ座標とする。
動作データ列検索機能248は、例えば図30に示すように、キャラクタの画像705がカード545の識別画像565の上から目的位置240まで移動するシーンを表示するための動作データ列を第1の移動動作情報テーブル268から検索する。具体的には、まず、例えばハードディスク44や光ディスク32等に記録された第1の移動動作情報テーブル268から当該カード545の識別番号に対応するレコードを検索する。そして、例えばハードディスク44や光ディスク32等に記録され、多数の動作データ列270が登録されたデータファイル272のうち、前記検索したレコードに登録された格納先頭アドレスから当該キャラクタの画像705が目的位置240まで移動する動作を示す動作データ列270を読み出す。
移動姿勢設定機能250は、現在位置情報テーブル117のうち、当該識別番号に対応するレコードから当該キャラクタの画像705のカメラ座標を読み出して、該カメラ座標に当該キャラクタの画像705が目的位置240まで移動する過程の1つの姿勢を設定する。例えば読み出された動作データ列270のiフレーム目(i=1,2,3・・・)の動作データに基づいてキャラクタの画像705の頂点データをカメラ座標上で移動して1つの姿勢を設定する。
三次元画像設定機能252は、例えばカード認識プログラム82等によって検出した撮像画像のカメラ座標系に基づいて該カード545の識別画像565上からキャラクタの画像705が目的位置240まで移動する過程の1つの姿勢の三次元画像を設定する。
画像描画機能254は、キャラクタの画像705が目的位置240まで移動する過程の1つの姿勢の三次元画像をスクリーン座標系の画像に透視変換して画像メモリ20に描画(隠面処理を含む)する。
画像表示機能256は、画像メモリ20に描画された画像を1フレーム単位に入出力ポート22を介してモニタ30に出力し、モニタ30の画面に前記画像を表示する。
テーブル書換え機能258は、1フレーム間に前記キャラクタの画像705が移動した後の該キャラクタの画像705のカメラ座標を、現在位置情報テーブル117のうち、当該識別番号に対応するレコードのキャラクタの画像705のカメラ座標として書き換える。
距離演算機能260は、1フレーム間にキャラクタの画像705が移動した後の該キャラクタの画像705のカメラ座標と目的位置240のカメラ座標とからキャラクタの画像705の位置と目的位置240との間の最短距離(直線距離)を演算する。
繰返し機能262は、距離演算機能260で演算した距離が所定の範囲(例えば実空間で換算したときの0mm〜10mm)になるまで、移動姿勢設定機能250による処理→三次元画像設定機能252による処理→画像描画機能254による処理→画像表示機能256による処理→テーブル書換え機能258による処理→距離演算機能260による処理を順次繰り返す。これによって、図30に示すように、カード545の識別画像565上から、該カード545の識別番号に対応するキャラクタの画像705が目的位置240まで移動するシーンが表示されることになる。
この第1のキャラクタ移動表示プログラム94によれば、例えばビデオゲームに適用した場合に、図30に示すように、例えばカード545から登場したキャラクタの画像705が目的位置に移動して戦闘を行う等の表示を行うことができ、対戦ゲーム等に好適である。例えば図33に示す6人対戦であれば、6つのキャラクタの画像701〜706がそれぞれ対応するカード541〜546の識別画像561〜566上から円陣の中心に向かって移動し、該円陣の中心において戦闘を繰り広げるというシーンを表示させることができる。また、例えば図34に示す2人対戦であれば、例えば2つのキャラクタの画像703及び705がそれぞれ対応するカード543及び545の識別画像563及び565上から対戦領域の目的位置(例えば中央の位置)240まで移動して戦闘を行うというシーンや、図35に示すように、攻撃側のキャラクタの画像705が対応するカード545の識別画像565上から攻撃相手であるキャラクタの画像703の位置まで移動して戦闘を行うというシーンを表示させることができる。
次に、第2のキャラクタ移動表示プログラム96について説明する。このプログラム96は、例えば上述した第1のキャラクタ移動表示プログラム94によって、図36に示すように、例えばカード545の識別画像565上から目的位置240に移動したキャラクタの画像705を元のカード545の識別画像564上に移動させるという表示を行う。キャラクタの画像705がどの位置に移動したかの情報は、上述した現在位置情報テーブル117に登録されている。
この第2のキャラクタ移動表示プログラム96は、図37に示すように、動作データ列検索機能274、移動姿勢設定機能276、三次元画像設定機能278、画像描画機能280、画像表示機能282、テーブル書換え機能284、距離演算機能286、繰返し機能288を有する。
動作データ列検索機能274は、例えば図36に示すキャラクタの画像705が現在の位置(例えば上述した目的位置240)から対応するカード545の画像705上に移動する(戻る)シーンを表示するための動作データ列を第2の移動動作情報テーブル290から検索する。具体的には、まず、例えばハードディスク44や光ディスク32等に記録された第2の移動動作情報テーブル290から当該識別番号に対応するレコードを検索する。そして、例えばハードディスク44や光ディスク32等に記録され、かつ、多数の動作データ列292が登録されたデータファイル294のうち、前記検索したレコードに登録された格納先頭アドレスから当該キャラクタの画像705がカード545の識別画像565上まで移動する動作を示す動作データ列292を読み出す。
移動姿勢設定機能276は、現在位置情報テーブル117のうち、当該識別番号に対応するレコードから当該キャラクタの画像705のカメラ座標を読み出して、該キャラクタの画像705が対応するカード545の識別画像565上まで移動する過程の1つの姿勢を設定する。例えば読み出された動作データ列292のiフレーム目(i=1,2,3・・・)の動作データに基づいてキャラクタの画像705の頂点データをカメラ座標上で移動して1つの姿勢を設定する。
三次元画像設定機能278は、例えばカード認識プログラム82等によって検出した撮像画像のカメラ座標系に基づいてキャラクタの画像705が現在の位置から対応するカード545の識別画像565上まで移動する過程の1つの姿勢の三次元画像を設定する。
画像描画機能280は、キャラクタの画像705が対応するカード545の識別画像565上まで移動する過程の1つの姿勢の三次元画像をスクリーン座標系の画像に透視変換して画像メモリ20に描画(隠面処理を含む)する。
画像表示機能282は、画像メモリ20に描画された画像を1フレーム単位に入出力ポート22を介してモニタ30に出力し、モニタ30の画面に前記画像を表示する。
テーブル書換え機能284は、1フレーム間に前記キャラクタの画像705が移動した後の該キャラクタの画像705のカメラ座標を、現在位置情報テーブル117のうち、当該識別番号に対応するレコードのキャラクタの画像705のカメラ座標として書き換える。
距離演算機能286は、当該識別番号に対応するカード545の識別画像565のカメラ座標と現在位置情報テーブル117に格納された前記識別番号に対応するキャラクタの現在位置(カメラ座標)との間の距離を演算する。
繰返し機能288は、距離演算機能286で演算した距離が0になるまで、移動姿勢設定機能276による処理→三次元画像設定機能278による処理→画像描画機能280による処理→画像表示機能282による処理→テーブル書換え機能284による処理→距離演算機能286による処理を順次繰り返す。これによって、例えば図36に示すように、キャラクタの画像705が、対応するカード545の識別画像565上に移動するシーンが表示される。
この第2のキャラクタ移動表示プログラム96によれば、例えばビデオゲームに適用した場合に、カード545から登場したキャラクタの画像705が目的位置240に移動して戦闘を行い、その戦闘で勝った場合に、元のカード545まで戻る等の表示を行うことができ、対戦ゲーム等に好適である。例えば図33に示す6人対戦であれば、6つのキャラクタの画像701〜706が円陣の中心において戦闘を繰り広げた後、図38に示すように、戦闘に勝ったキャラクタの画像701、702及び704がそれぞれ対応するカード541、542及び544の識別画像561、562及び564上まで戻るというシーンを表示させることができる。また、例えば図34に示す2人対戦であれば、図39に示すように、攻撃に向かった2つのキャラクタの画像703及び705のうち、戦闘で勝ったキャラクタの画像703のみが、元のカード543の識別画像563に戻るというシーンを表示させることができる。
次に、キャラクタ無効化プログラム98について説明する。このプログラム98は、キャラクタが戦闘で負けたとき、当該キャラクタがある動作を行いながら徐々に消えていくシーンを表示し、さらに、その後の当該キャラクタの出現を無効にする。
このキャラクタ無効化プログラム98は、図40に示すように、動作データ列検索機能296、消滅姿勢設定機能298、三次元画像設定機能300、画像描画機能302、画像表示機能304、繰返し機能306、無効ビット設定機能308を有する。
動作データ列検索機能296は、キャラクタの画像がある動作を行いながら徐々に消えていくシーンを表示するための動作データ列を消滅表示情報テーブル310から検索する。具体的には、まず、例えばハードディスク44や光ディスク32等に記録された消滅表示情報テーブル310から識別番号に対応するレコードを検索する。そして、例えばハードディスク44や光ディスク32等に記録され、かつ、多数の動作データ列312が登録されたデータファイル314のうち、前記検索したレコードに登録された格納先頭アドレスから当該キャラクタの画像が徐々に消えていく動作を示す動作データ列312を読み出す。
消滅姿勢設定機能298は、キャラクタの画像が消えていく過程の1つの姿勢を設定を設定する。例えば読み出された動作データ列312のiフレーム目(i=1,2,3・・・)の動作データに基づいて当該キャラクタの画像の頂点データをカメラ座標上で移動して1つの姿勢を設定する。
三次元画像設定機能300は、例えばカード認識プログラム82等によって検出した撮像画像のカメラ座標系に基づいてカードの識別画像上や目的位置240等においてキャラクタの画像が消えていく過程の1つの姿勢の三次元画像を設定する。
画像描画機能302は、当該キャラクタの画像が消えていく過程の1つの姿勢の三次元画像をスクリーン座標系の画像に透視変換して画像メモリ20に描画(隠面処理を含む)する。
画像表示機能304は、画像メモリ20に描画された画像を1フレーム単位に入出力ポート22を介してモニタ30に出力し、モニタ30の画面に前記画像を表示する。
繰返し機能306は、消滅姿勢設定機能298による処理→三次元画像設定機能300による処理→画像描画機能302による処理→画像表示機能304による処理を順次繰り返す。これによって、当該キャラクタに対応するカードの識別画像上や目的位置240等で当該キャラクタの画像がある動作を行いながら徐々に消えていくシーンが表示される。
無効ビット設定機能308は、オブジェクト情報テーブル118のうち、当該キャラクタに対応するレコード(すなわち、当該識別番号に対応するレコード)の有効/無効(1/0)ビットを「無効」にする。
このキャラクタ無効化プログラム98によれば、例えばビデオゲームに適用した場合に、カードから登場したキャラクタが所定位置に移動して戦闘を行い、その戦闘で負けて死亡した場合に、徐々に消滅していく等の表示を行うことができ、対戦ゲーム等に好適である。
ところで、ビデオゲームの進行に伴って、机やテーブル52等に置かれたカードがユーザの手で動かされる場合がある。例えば1以上のカードの位置がずれたり、カードの配置の入れ替えや新たなカードとの交換等である。このようにカードに動きがあった場合、動きのあったカードについて再度認識する必要がある。
これを解決するには、カード認識プログラム82やカード位置予測プログラム90を、数フレーム単位あるいは数10フレーム単位に起動すればよい。もちろん、新たなカードを認識した場合は、キャラクタ出現表示プログラム84を起動して新たなカードの識別画像上に、該新たなカードの識別番号等に応じたキャラクタの画像を登場させればよい。また、カードの位置がずれたり、配置が入れ替わる程度であれば、キャラクタ動作表示プログラム86を起動して、例えば「待機」の動作を表示すればよい。
しかし、このカードの再認識が失敗する場合もある。例えば一旦、カードを置いて対応するキャラクタを登場させた後、該カードを引っ込めてそのままにしたり、別の物体(ユーザの手等)でカードの面が隠れたり、CCDカメラ42の撮像面がずれてカードの表面を撮像できなくなったりした場合等においては、カードの再認識ができなくなるおそれがある。このような場合の処理を行うアプリケーションプログラムについて以下に説明する。
まず、浮遊画像表示プログラム100について説明する。このプログラム100は、カードの再認識が失敗した場合に、例えば図41に示すように、楕円形の中に「1」と「0」の任意の組み合わせからなるデータ列が記述された画像(浮遊画像316)を所定時間にわたって浮遊させる表示を行う。図41では、カード546の認識が失敗した例(分かりやすく「×」で示す)を示す。
この浮遊画像表示プログラム100は、識別情報の検出ができなかった場合に、カード認識プログラム82、あるいはフィールド表示プログラム88、あるいはカード位置予測プログラム90から起動されるもので、図42に示すように、計時機能318と、浮遊画像読出し機能320と、動作データ列読出し機能322、浮遊姿勢設定機能324、三次元画像設定機能326、画像描画機能328、画像表示機能330、繰返し機能332と、浮遊画像消去機能334とを有する。
計時機能318は、このプログラム100が起動された時点で、クロックパルスPcの計数を開始し、所定時間(例えば1分、2分、3分等)が計時された時点でタイムアップ信号Stを出力して、計時データをリセットする。
特定画像読出し機能320は、図41に示す浮遊画像316の画像データ(浮遊画像データ)336を例えばハードディスク44や光ディスク32等から読み出す。
動作データ列読出し機能322は、浮遊画像316が浮遊して動くシーンを表示するための動作データ列338を例えばハードディスク44や光ディスク32等から読み出す。
浮遊姿勢設定機能324は、浮遊画像316が浮遊して動く過程の1つの姿勢を設定する。例えば読み出された動作データ列338のiフレーム目(i=1,2,3・・・)の動作データに基づいて浮遊画像データ336の頂点データをカメラ座標上で移動して1つの姿勢を設定する。
三次元画像設定機能326は、例えばカード認識プログラム82等によって検出した撮像画像のカメラ座標系に基づいて浮遊画像316が浮遊して動く過程の1つの姿勢の三次元画像を設定する。
画像描画機能328は、浮遊画像316が浮遊して動く過程の1つの姿勢の三次元画像をスクリーン座標系の画像に透視変換して画像メモリ20に描画(隠面処理を含む)する。
画像表示機能330は、画像メモリ20に描画された画像を1フレーム単位に入出力ポート22を介してモニタ30に出力し、モニタ30の画面に前記画像を表示する。
繰返し機能332は、計時機能318からタイムアップ信号Stが出力されるまで、浮遊姿勢設定機能324による処理→三次元画像設定機能326による処理→画像描画機能328による処理→画像表示機能330による処理を順次繰り返す。これによって、図41に示すように、モニタ30の画面に浮遊画像316が浮遊しながら動くというシーンが表示されることになる。
この浮遊画像表示プログラム100は、浮遊画像316を表示させることで、ユーザに対して、現在、一部のカード(図41の例ではカード546)あるは全部のカードについて認識ができなくなっていることを示すことができる。
次に、着地表示プログラム102について説明する。このプログラム102は、図43に示すように、浮遊画像316を浮遊させた表示が行われた後において、カード546の再認識が成功した場合に、該カード546の識別番号に対応するキャラクタの画像706を当該カード546の識別画像566上に着地させる表示を行う。
この着地表示プログラム102は、浮遊画像316を浮遊させた表示が行われた後において、カードの識別情報が正しく検出された場合に、カード認識プログラム82やフィールド表示プログラム88、あるいはカード位置予測プログラム90から起動されるもので、図44に示すように、動作データ列検索機能340、着地姿勢設定機能342、三次元画像設定機能344、画像描画機能346、画像表示機能348、距離演算機能350、繰返し機能352を有する。上述したカード認識プログラム82、あるいはフィールド表示プログラム88、あるいはカード位置予測プログラム90からは、再認識が成功したカードの識別番号と、対応するカードの識別画像のカメラ座標が供給される。
動作データ列検索機能340は、例えば図43に示すように、浮遊画像316の位置からキャラクタの画像706が飛び出て対応するカード546の識別画像566上に着地するシーンを表示するための動作データ列を着地動作情報テーブル354から検索する。具体的には、まず、例えばハードディスク44や光ディスク32等に記録された着地動作情報テーブル354から当該識別番号に対応するレコードを検索する。そして、例えばハードディスク44や光ディスク32等に記録され、多数の動作データ列356が登録されたデータファイル358のうち、前記検索したレコードに登録された格納先頭アドレスから、当該キャラクタの画像706が、対応するカード546の識別画像566上に着地する動作を示す動作データ列356を読み出す。
着地姿勢設定機能342は、キャラクタの画像706が、対応するカード546の識別画像566上に着地する過程の1つの姿勢を設定する。例えば読み出された動作データ列356のiフレーム目(i=1,2,3・・・)の動作データに基づいてキャラクタの画像706の頂点データをカメラ座標上で移動して1つの姿勢を設定する。
三次元画像設定機能344は、例えばカード認識プログラム82等によって検出した撮像画像のカメラ座標系に基づいて、キャラクタの画像706が、浮遊画像316の位置から対応するカード546の識別画像566上に着地する過程の1つの姿勢の三次元画像を設定する。
画像描画機能346は、キャラクタの画像706が対応するカード546の識別画像566上に着地する過程の1つの姿勢の三次元画像をスクリーン座標系の画像に透視変換して画像メモリ20に描画(隠面処理を含む)する。
画像表示機能348は、画像メモリ20に描画された画像を1フレーム単位に入出力ポート22を介してモニタ30に出力し、モニタ30の画面に前記画像を表示する。
距離演算機能350は、1フレーム間に移動したキャラクタの画像706のカメラ座標と当該識別番号に対応するカード546の識別画像566のカメラ座標との間の距離を演算する。
繰返し機能352は、距離演算機能350で演算した距離が0になるまで、着地姿勢設定機能342による処理→三次元画像設定機能344による処理→画像描画機能346による処理→画像表示機能348による処理→距離演算機能350による処理を順次繰り返す。これによって、例えば図43に示すように、キャラクタの画像706が、対応するカード546の識別画像566上に着地するシーンが表示される。
この着地表示プログラム102においては、浮遊画像316から例えばキャラクタの画像706が飛び出て、対応するカード546の識別画像566上に着地する表示を行うことができることから、そのカード546のキャラクタが未知の世界からこのビデオゲームの仮想空間に戻って着地したような雰囲気を持たせることができ、ビデオゲームに面白みを加えることができる。
上述の例では、主に、2人対戦や6人対戦の場合を示したが、その他、3人対戦や4人対戦、5人対戦、並びに7人対戦以上の人数の対戦でも簡単に適用させることができる。
なお、本発明に係る画像表示システム、記録媒体及びプログラムは、上述の実施の形態に限らず、本発明の要旨を逸脱することなく、種々の構成を採り得ることはもちろんである。