図1を参照して、この発明の一実施例であるゲームシステム10は、画像処理装置としても機能するビデオゲーム装置(以下、単に「ゲーム装置」という。)12および第1コントローラ22を含む。なお、図示は省略するが、この実施例のゲーム装置12は、最大4つの第1コントローラ22と通信可能に設計されている。また、ゲーム装置12と各第1コントローラ22とは、無線によって接続される。たとえば、無線通信は、Bluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。また、この実施例では、第1コントローラ22には、ジャイロユニット24が接続(連結)され、このジャイロセンサ24に差し込みプラグ36aおよびケーブル36bを介して第2コントローラ36が接続されている。
なお、図示等は省略するが、ジャイロユニット24を第1コントローラ22に装着しない場合には、差し込みプラグ36aおよびケーブル36bを介して第2コントローラ36を第1コントローラ22に接続することもできる。
ジャイロユニット24は、第1コントローラ22に接続されることで、第1コントローラ22と物理的および電気的に結合される。したがって、第1コントローラ22に装着(一体化)されたジャイロユニット24からは、第1コントローラ22の角速度を示す角速度データが出力され、第1コントローラ22に与えられる。
また、第2コントローラ36の操作データないし入力データは、ケーブル36b、差し込みプラグ26bおよびジャイロユニット24を介して第1コントローラ22に与えられる。
したがって、第1コントローラ22は、第1コントローラ22自身の操作データないし入力データのみならず、ジャイロユニット24からの角速度データおよび第2コントローラ36からの操作データないし入力データをゲーム装置12に送信する。
なお、ジャイロユニット24を第1コントローラ22に装着しない場合には、第2コントローラ36の操作データないし入力データはケーブル36b、差し込みプラグ36aを介して第1コントローラ22に与えられる。
図1に戻って、ゲーム装置12は、略直方体のハウジング14を含み、ハウジング14の前面にはディスクスロット16が設けられる。ディスクスロット16から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク18が挿入されて、ハウジング14内のディスクドライブ54(図2参照)に装着される。図示は省略するが、ディスクスロット16の周囲には、LEDと導光板とが配置され、様々な処理に応答させて、ディスクスロット16を点灯または点滅させることが可能である。
また、ゲーム装置12のハウジング14の前面であり、その上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット16の近傍には、外部メモリカード用コネクタカバー28が設けられる。この外部メモリカード用コネクタカバー28の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、図示しない外部メモリカード(以下、単に「メモリカード」という。)が挿入される。メモリカードは、光ディスク18から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカードに対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカードは、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置12では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカードには当該他のアプリケーションのデータを保存することができる。
なお、メモリカードとしては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。
図1では省略するが、ゲーム装置12のハウジング14の後面には、AVケーブルコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル32aを通してゲーム装置12にモニタ34およびスピーカ34aを接続する。このモニタ34およびスピーカ34aは典型的にはカラーテレビジョン受像機であり、AVケーブル32aによって、ゲーム装置12からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置12からの音声信号が音声入力端子に入力される。したがって、カラーテレビ(モニタ)34の画面上にたとえば3次元(3D)ビデオゲームのゲーム画像が表示され、左右のスピーカ34aからゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ34の周辺(この実施例では、モニタ34の上側)には、2つの赤外LED(マーカ)340m,340nを備えるマーカ部34bが設けられる。このマーカ部34bは、電源ケーブル32bを通してゲーム装置12に接続される。したがって、マーカ部34bには、ゲーム装置12から電源が供給される。これによって、マーカ340m,340nは発光し、それぞれモニタ34の前方に向けて赤外光を出力する。
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザはまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク18を選択し、その光ディスク18をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク18に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始めるようにする。ユーザはゲーム装置12に入力を与えるために第1コントローラ22を操作する。たとえば、入力手段26のどれかを操作することによってゲームもしくは他のアプリケーションをスタートさせる。また、入力手段26に対する操作以外にも、第1コントローラ22自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(カメラ位置)を変化させることができる。
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置12の内部メモリ(フラッシュメモリ44(図2参照))に記憶(インストール)しておき、当該内部メモリから実行するようにしてもよい。かかる場合には,光ディスク18のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
図2は図1実施例のビデオゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング14内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられ、ゲームプロセッサとして機能する。また、CPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク18からプログラム,画像データや音声データ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。データの送受信やダウンロードについては後述する。
GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画コマンドを実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。ただし、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ34aから出力する音、音声或いは音楽に対応するオーディオデータを生成する。
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ34およびスピーカ34aに出力される。したがって、ゲーム画面がモニタ34に表示され、ゲームに必要な音(音楽)がスピーカ34aから出力される。
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60およびメモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
図示は省略するが、入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。ただし、ネットワークを介さずに、直接的に他のゲーム装置と通信することもできる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(「送信データ」とする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(「受信データ」とする)を、ネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、当該受信データをフラッシュメモリ44に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ42aは、ダウンロードサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、そのダウンロードデータをフラッシュメモリ44に記憶する。
また、入出力プロセッサ42aは、第1コントローラ22から送信されるコントローラデータをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。コントローラデータは、CPU40の処理(たとえば、ゲーム処理)によって利用された後、バッファ領域から消去される。
なお、この実施例では、上述したように、無線コントローラモジュール52は、Bluetooth規格に従って第1コントローラ22との間で通信を行う。また、図2では、簡単のため、ジャイロユニット24および第2コントローラ36は省略してある。
さらに、入出力プロセッサ42aには、拡張コネクタ60およびメモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインターフェイスのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、第1コントローラ22および第2コントローラ36とは異なるコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。メモリカード用コネクタ62には、メモリカードのような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60やメモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング14)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、システムLSI42には、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、通常の通電状態となるモード(「通常モード」と呼ぶこととする)が設定される。一方、電源ボタン20aがオフされると、システムLSI42には、ゲーム装置12の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という)が設定される。
この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、CPU40がアプリケーションを実行することはない。
なお、システムLSI42には、スタンバイモードにおいても電源が供給されるが、GPU42b、DSP42cおよびVRAM42dへのクロックの供給を停止することにより、これらを駆動しないようにして、消費電力を低減するようにしてある。
また、図示は省略するが、ゲーム装置12のハウジング14内部には、CPU40やシステムLSI42などのICの熱を外部に排出するためのファンが設けられる。スタンバイモードでは、このファンも停止される。
ただし、スタンバイモードを利用したくない場合には、スタンバイモードを利用しない設定にしておくことにより、電源ボタン20aがオフされたときに、すべての回路コンポーネントへの電源供給が完全に停止される。
また、通常モードとスタンバイモードとの切り替えは、第1コントローラ22の電源スイッチ26h(図3(B)参照)のオン/オフの切り替えによって、遠隔操作によって行うことが可能である。当該遠隔操作を行わない場合には、スタンバイモードにおいて無線コントローラモジュール52aへの電源供給を行わない設定にしてもよい。
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク18が排出される。
図3(A)ないし図3(E)は、第1コントローラ22の外観の一例を示す。図3(A)は第1コントローラ22の先端面を示し、図3(B)は第1コントローラ22の上面を示し、図3(C)は第1コントローラ22の右側面を示し、図3(D)は第1コントローラ22の下面を示し、そして、図3(E)は第1コントローラ22の後端面を示す。
図3(A)ないし図3(E)を参照して、第1コントローラ22は、たとえばプラスチック成型によって形成されたハウジング22aを有している。ハウジング22aは、略直方体形状であり、ユーザが片手で把持可能な大きさである。ハウジング22a(第1コントローラ22)には、入力手段(複数のボタンないしスイッチ)26が設けられる。具体的には、図3(B)に示すように、ハウジング22aの上面には、十字キー26a,1ボタン26b,2ボタン26c,Aボタン26d,−ボタン26e,HOMEボタン26f,+ボタン26gおよび電源スイッチ26hが設けられる。また、図3(C)および図3(D)に示すように、ハウジング22aの下面に傾斜面が形成されており、この傾斜面に、Bトリガースイッチ26iが設けられる。
十字キー26aは、4方向プッシュスイッチであり、矢印で示す4つの方向、前(または上)、後ろ(または下)、右および左の操作部を含む。この操作部のいずれか1つを操作することによって、プレイヤによって操作可能なキャラクタまたはオブジェクト(プレイヤキャラクタまたはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したり、単に方向を指示したりすることができる。
1ボタン26bおよび2ボタン26cは、それぞれ、押しボタンスイッチである。たとえば3次元ゲーム画像を表示する際の視点位置や視点方向、すなわち仮想カメラの位置や画角を調整する等のゲームの操作に使用される。または、1ボタン26bおよび2ボタン26cは、Aボタン26dおよびBトリガースイッチ26iと同じ操作或いは補助的な操作をする場合に用いるようにしてもよい。
Aボタンスイッチ26dは、押しボタンスイッチであり、プレイヤキャラクタまたはプレイヤオブジェクトに、方向指示以外の動作、すなわち、打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせるために使用される。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かすなどを指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。また、Aボタンスイッチ26dは、第1コントローラ22をポインティングデバイスとして用いる場合に、ゲーム画面上でポインタ(指示画像)が指示するアイコンないしボタン画像の決定を指示するために使用される。たとえば、アイコンやボタン画像が決定されると、これらに対応して予め設定されている指示ないし命令(コマンド)を入力することができる。
−ボタン26e、HOMEボタン26f、+ボタン26gおよび電源スイッチ26hもまた、押しボタンスイッチである。−ボタン26eは、ゲームモードを選択するために使用される。HOMEボタン26fは、ゲームメニュー(メニュー画面)を表示するために使用される。+ボタン26gは、ゲームを開始(再開)したり、一時停止したりするなどのために使用される。電源スイッチ26hは、ゲーム装置12の電源を遠隔操作によってオン/オフするために使用される。
なお、この実施例では、第1コントローラ22自体をオン/オフするための電源スイッチは設けておらず、第1コントローラ22の入力手段26のいずれかを操作することによって第1コントローラ22はオンとなり、一定時間(たとえば、30秒)以上操作しなければ自動的にオフとなるようにしてある。
Bトリガースイッチ26iもまた、押しボタンスイッチであり、主として、弾を撃つなどのトリガを模した入力を行ったり、第1コントローラ22で選択した位置を指定したりするために使用される。また、Bトリガースイッチ26iを押し続けると、プレイヤオブジェクトの動作やパラメータを一定の状態に維持することもできる。また、一定の場合には、Bトリガースイッチ26iは、通常のBボタンと同様に機能し、Aボタン26dによって決定したアクションやコマンドなどを取り消すなどのために使用される。
また、図3(E)に示すように、ハウジング22aの後端面にコネクタ22bが設けられ、また、図3(B)に示すように、ハウジング22aの上面であり、後端面側にはインジケータ22cが設けられる。この実施例では、コネクタ22bは、主として、ジャイロユニット24を接続するために設けられる。インジケータ22cは、たとえば、4つのLEDで構成される。たとえば、インジケータ22cでは、4つのうちのいずれか1つを点灯させることにより、点灯したLEDに応じて、第1コントローラ22の識別情報(コントローラ番号)を示すことができる。また、インジケータ22cでは、点灯させるLEDの個数によって第1コントローラ22の電池残量を示すこともできる。
さらに、第1コントローラ22は、撮像情報演算部80(図7参照)を有しており、図3(A)に示すように、ハウジング22aの先端面には撮像情報演算部80の光入射口22dが設けられる。また、第1コントローラ22は、スピーカ86(図7参照)を有しており、このスピーカ86は、図3(B)に示すように、ハウジング22aの上面であり、1ボタン26bとHOMEボタン26fとの間に設けられる音抜き孔22eに対応して、ハウジング22a内部に設けられる。
なお、図3(A)ないし図3(E)に示した第1コントローラ22の形状や、各入力手段26の形状、数および設置位置等は単なる一例に過ぎず、それらが適宜改変された場合であっても、本発明を実現できることは言うまでもない。
図4(A)は、図1に示したように、第1コントローラ22にジャイロユニット24を接続した状態を示す図解図である。ジャイロユニット24は、第1コントローラ22の後端面側(インジケータ22c側)に接続される。図4(B)に示すように、ジャイロユニット24は、第1コントローラ22と同様に、プラスチック成型によって形成されたハウジング24aを有している。ハウジング24aは、略立方体形状であり、第1コントローラ22に接続される側の面に、第1コントローラ22のコネクタ22bに連結される差し込みプラグ24bが設けられる。また、図4(C)に示すように、この差し込みプラグ24が設けられる面の反対側の面には、コネクタ24cが設けられる。詳細な説明は省略するが、ジャイロユニット24が第1コントローラ22に連結させると、ロック機構によって、その連結状態が維持される。この連結状態は、ジャイロユニット24の両側面に設けられた解除ボタン24dが押されると、解除される。したがって、第1コントローラ22にジャイロユニット24を着脱することが可能である。
図5には第2コントローラ36の本体の外観の一例が示される。図5(A)は、第2コントローラ36を上面後方から見た斜視図であり、図5(B)は、第2コントローラ36を下面前方から見た斜視図である。なお、図5では、第2コントローラ36の差し込みプラグ36aおよびケーブル36bは省略されている。この第2コントローラ36は、たとえばプラスチック成型によって形成されたハウジング36cを有している。図5(A)および(B)に示すように、ハウジング36cは、平面視では、前後方向(Z軸方向)に略細長い楕円形状を有し、後端側の左右方向(X軸方向)の幅が先端側のそれよりも狭くされている。また、ハウジング36cは、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している。ハウジング36cは、第1コントローラ22と同様に、片手で把持可能な大きさであるが、長手方向(Z軸方向)の長さは、第1コントローラ22のハウジング22aよりもやや短くされている。この第2コントローラ36でも、プレイヤは、ボタンやスティックを操作することと、第2コントローラ36自体の位置や向きを変えることとによって、ゲーム操作を行うことができる。
ハウジング36cの上面の先端側には、アナログジョイスティック100aが設けられる。ハウジング36cの先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向(図5に示すY軸方向)に並べて、Cボタン100bおよびZボタン100cが設けられる。アナログジョイスティック10aおよび各ボタン100b,100cには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第2コントローラ36に設けられるアナログジョイスティック100aおよび各ボタン100b,100cは、包括的に入力手段100として示されることもある。
このゲームシステム10では、ボタン操作だけでなく、第1コントローラ22自体や第2コントローラ36自体を動かすことによっても、ゲームなどのアプリケーションに対する入力を行うことができる。ゲームをプレイする際には、たとえば図6に示すように、プレイヤは、その右手で第1コントローラ22を持ち、その左手で第2コントローラ36を持つ。また、図面では分かりにくいが、第1コントローラ22の後端面側には、ストラップ38が装着されており、このストラップ38がプレイヤの右手の手首に掛けられる。したがって、プレイ中に第1コントローラ22が離脱するのが防止される。
上述したように、第1コントローラ22には3軸方向の加速度を検出する加速度センサ74が内蔵され、第2コントローラ36にも同様の加速度センサ102が内蔵されている。第1コントローラ22および第2コントローラ36がそれぞれプレイヤによって動かされると、加速度センサ84および加速度センサ90によって、それぞれのコントローラ自身の動きを示す3軸方向(図4、図5参照)の加速度値が検出される。また、この実施例では、第1コントローラ22には、ジャイロユニット24が装着されているため、第1コントローラ22自身の動きを示す3軸周り(図4参照)の角速度値がさらに検出される。
これらの検出値に対応するデータは、上述のコントローラデータに含まれてゲーム装置12に送信される。ゲーム装置12では、コントローラ14からのコントローラデータは、アンテナ52aおよび無線コントローラモジュール52を介して受信され、受信されたコントローラデータは、入出力プロセッサ42aによって、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に書き込まれる。CPU40は、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に格納されたコントローラデータを読み出し、このコントローラデータから検出値つまりコントローラ14によって検出された加速度および/または角速度の値を復元する。
CPU44はまた、このような復元処理と並行して、復元された加速度から第1コントローラ22や第2コントローラ36の速度を計算する処理を実行してもよい。さらに並行して、計算された速度から第1コントローラ22や第2コントローラ36の移動距離ないし位置を求めることもできる。一方、復元された角速度からは、第1コントローラ22の回転角が求まる。
なお、加速度を積算して速度を求めたり、角速度を積算して回転角を求めたりする際の初期値(積分定数)は、たとえば、後述する撮像情報演算部80のからの位置座標データに基づいて計算できる。位置座標データはまた、積算によって蓄積されていく誤差の修正にも用いることができる。
ゲーム処理は、こうして求められた加速度、速度、移動距離、角速度および回転角などの変数に基づいて実行される。したがって、上記の処理は全てを行わなくともよく、ゲーム処理に必要な変数を適宜算出すればよい。なお、角速度や回転角も、原理的には加速度から計算し得るが、そのためには、ゲームプログラムに複雑なルーチンが必要で、CPU44にも重い処理負荷がかかる。ジャイロユニット24を利用することで、プログラム開発が容易になり、CPU40の処理負荷も軽減される。
図7は、第1コントローラ22、ジャイロユニット24および第2コントローラ36の電気的な構成を示すブロック図である。この図7を参照して、第1コントローラ22はプロセッサ70を含み、このプロセッサ70には、内部バス(図示せず)によって、コネクタ22b、入力手段26、メモリ72、加速度センサ74、無線モジュール76、撮像情報演算部80、LED82(インジケータ22c)、バイブレータ84、スピーカ86および電源回路88が接続される。また、無線モジュール76には、アンテナ78が接続される。
なお、簡単のため、図7では省略するが、上述したように、インジケータ22cは4つのLED82によって構成される。
プロセッサ70は、第1コントローラ22の全体制御を司り、入力手段26、加速度センサ74および撮像情報演算部80によって入力された情報(入力情報)を、コントローラデータとして無線モジュール76およびアンテナ78を介してゲーム装置12に送信(入力)する。このとき、プロセッサ70は、メモリ72を作業領域ないしバッファ領域として用いる。また、上述した入力手段26(26a−26i)からの操作信号(操作データ)は、プロセッサ70に入力され、プロセッサ70は操作データを一旦メモリ72に記憶する。
加速度センサ74は、図4に示すように、第1コントローラ22の縦方向(Y軸方向)、横方向(X軸方向)および前後方向(Z軸方向)の3軸で各々の加速度を検出する。この加速度センサ74は、典型的には、静電容量式の加速度センサであるが、他の方式のものを用いるようにしてもよい。
たとえば、加速度センサ74は、X軸,Y軸,Z軸の各々についての加速度(ax,ay,az)を検出し、検出した加速度のデータ(加速度データ)をプロセッサ70に入力する。たとえば、加速度センサ74は、各軸方向の加速度を、−2.0g〜2.0g(gは重力加速度である。以下、同じ。)の範囲で検出する。プロセッサ70は、加速度センサ74から与えられる加速度データを検出し、一旦メモリ72に記憶する。したがって、検出された加速度に適宜な演算処理を施すことによって、第1コントローラ22の傾きや回転、重力方向に対する加速度センサ74の姿勢などを算出することができる。また、振り等によって第1コントローラ22に加えられた動きについても同様に算出することができる。
プロセッサ70は、第1コントローラ22の操作データ、第1コントローラ22の加速度データ、後述するマーカ座標データ、後述する角速度データ、後述する第2コントローラの操作データおよび後述する第2コントローラの加速度データの少なくとも1つを含むコントローラデータを作成し、作成したコントローラデータを、ゲーム装置12に送信する。
なお、図3(A)−図3(E)では省略したが、この実施例では、加速度センサ74は、ハウジング22a内部の基板上の十字キー26aが配置される付近に設けられる。
無線モジュール76は、たとえばBluetooth(登録商標)の技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ78から放射する。つまり、コントローラデータは、無線モジュール76によって微弱電波信号に変調されてアンテナ78(第1コントローラ22)から送信される。この微弱電波信号が上述したゲーム装置12に設けられた無線コントローラモジュール52によって受信される。受信された微弱電波は、復調および復号の処理を施され、したがって、ゲーム装置12(CPU40)は、第1コントローラ22からのコントローラデータを取得することができる。そして、CPU40は、取得したコントローラデータとアプリケーションプログラム(ゲームプログラム)とに従ってアプリケーションの処理(ゲーム処理)を行う。
さらに、上述したように、第1コントローラ22には、撮像情報演算部80が設けられる。この撮像情報演算部80は、赤外線フィルタ80a、レンズ80b、撮像素子80cおよび画像処理回路80dによって構成される。赤外線フィルタ80aは、第1コントローラ22の前方から入射する光から赤外線のみを通過させる。上述したように、モニタ34の表示画面近傍(周辺)に配置されるマーカ340mおよび340nは、モニタ34の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ80aを設けることによってマーカ340mおよび340nの画像をより正確に撮像することができる。レンズ80bは、赤外線フィルタ80aを透過した赤外線を集光して撮像素子80cへ出射する。撮像素子80cは、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ80bによって集光された赤外線を撮像する。したがって、撮像素子80cは、赤外線フィルタ80aを通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子80cによって撮像された画像を撮像画像と呼ぶ。撮像素子80cによって生成された画像データは、画像処理回路80dで処理される。画像処理回路80dは、撮像画像内における撮像対象(マーカ340mおよび340n)の位置を算出し、当該位置を示す各座標値を撮像データ(後述するマーカ座標データ)としてプロセッサ70に出力する。なお、画像処理回路80dにおける処理については後述する。
また、第1コントローラ22には、ジャイロユニット24が接続される。図5からも分かるように、差し込みプラグ24bは、コネクタ22bに接続される。差し込みプラグ24bは信号線によって、マイコン90に接続される。マイコン90には、ジャイロセンサ92が接続されるとともに、信号線によってコネクタ24cが接続される。
ジャイロセンサ92は、図4に示すように、第1コントローラ22の縦方向の軸回り(Y軸回り)、横方向の軸回り(X軸回り)および前後方向の軸回り(Z軸回り)の3軸回りについての各々の角速度を検出する。ただし、Y軸の回転はヨー角で表わされ、X軸の回転はピッチ角で表わされ、そして、Z軸の回転はロール角で表わされる。このジャイロセンサ92は、典型的には、圧電振動型のものを用いることができるが、他の方式のものを用いるようにしてもよい。
たとえば、ジャイロセンサ92は、X軸,Y軸,Z軸の各々の軸周りについての角速度(ωx,ωy,ωz)を検出し、検出した角速度をマイコン90に入力する。ただし、角速度は、マイコン90に入力されるときに、アナログ信号からディジタルのデータに変換される。この実施例で使用するジャイロセンサ92は、各軸についての角速度を0〜1500dps(degree percent second)の範囲で計測可能である。ただし、後述するこの実施例の仮想ゲームにおいては、ヨー角については、900dps〜1500dpsの範囲を計測範囲とし、ピッチ角とロール角とについては、0〜1500dpsの範囲を計測範囲としてある。
なお、センサは、好ましい実施例ではジャイロセンサ(角速度センサ)であるが、たとえば加速度センサ、速度センサ、変位センサ、回転角センサなど、他のモーションセンサでもよい。モーションセンサ以外にも、傾斜センサ、イメージセンサ、光センサ、圧力センサ、磁気センサ、温度センサなどがあり、いずれのセンサを追加する場合でも、センサの検出対象を利用した操作が可能となる。いずれのセンサを用いた場合でも、従来操作装置に接続されていた他の装置をそのまま使用しながら、操作装置に当該センサを追加することができる。
マイコン90は、ジャイロセンサ92から与えられる角速度を検出し、検出した角速度に対応する角速度データをマイコン90に内蔵されるメモリ(図示せず)に一時記憶する。そして、マイコン90は、メモリに一時記憶された角速度データを第1コントローラ22(プロセッサ70)に送信する。したがって、コントローラデータには、角速度データが含まれる場合がある。
なお、この実施例では、マイコン90は、角速度データをメモリに一時記憶し、或る程度まとめてプロセッサ70に送信するようにしてあるが、メモリに一時記憶せずに、そのままプロセッサ70に送信するようにしてもよい。
また、第2コントローラ36のハウジング36c内には加速度センサ102(図7)が設けられている。この加速度センサ102としては、第1コントローラ22の加速度センサ74と同様の加速度センサが適用される。具体的には、この実施例では3軸加速度センサが適用され、第2コントローラ36の上下方向(Y軸方向)、左右方向(X軸方向)および前後方向(Z軸方向)の3軸方向のそれぞれで加速度を検知する。したがって、第1コントローラ22の場合と同様に、検出された加速度に適宜な演算処理を施すことによって、第2コントローラ36の傾きや回転、重力方向に対する加速度センサ102の姿勢などを算出することができる。また、振り等によって第2コントローラ36に加えられた動きについても同様に算出することができる。
また、第1コントローラ22内に取替可能に収容されるバッテリ(図示せず)によって、電源が与えられる。ジャイロユニット24には、コネクタ22bおよび差し込みプラグ24bを介してこの電源が供給される。さらに、第1コントローラ22からジャイロユニット24に供給された電源の一部が、コネクタ24c、差し込みプラグ36aおよびケーブル36bを介して第2コントローラ36に与えられる。
上述したように、ビデオゲームシステム10で第1コントローラ22および第2コントローラ36を用いてゲームをプレイする際、プレイヤは、一方の手(右手)で第1コントローラ22を把持し、他方の手(左手)で第2コントローラ36を把持する。ただし、ジャイロユニット24は、第1コントローラ22に装着されている。たとえば、ポインティングデバイスとして第1コントローラ22を使用する場合には、プレイヤは、第1コントローラ22の先端面(撮像情報演算部80が撮像する光の入射口22d側)がマーカ340mおよび340nの方を向く状態で第1コントローラ22を把持する。ただし、図1からも分かるように、マーカ340mおよび340nは、モニタ34の画面の横方向と平行に配置されている。この状態で、プレイヤは、第1コントローラ22が指示する画面上の位置を変更したり、第1コントローラ22と各マーカ340mおよび340nとの距離を変更したりすることによってゲーム操作を行う。
図8は、マーカ340mおよび340nと、第1コントローラ22との視野角を説明するための図である。ただし、簡単のため、図8では、ジャイロユニット24および第2コントローラ36は省略してある。図8に示すように、マーカ340mおよび340nは、それぞれ、視野角θ1の範囲で赤外光を放射する。また、撮像情報演算部80の撮像素子80cは、第1コントローラ22の視線方向を中心とした視野角θ2の範囲で入射する光を受光することができる。たとえば、マーカ340mおよび340nの視野角θ1は、共に34°(半値角)であり、一方、撮像素子80cの視野角θ2は41°である。プレイヤは、撮像素子80cが2つのマーカ340mおよび340nからの赤外光を受光することが可能な位置および向きとなるように、第1コントローラ22を把持する。具体的には、撮像素子80cの視野角θ2の中にマーカ340mおよび340nの少なくとも一方が存在し、かつ、マーカ340mまたは340nの少なくとも一方の視野角θ1の中に第1コントローラ22が存在する状態となるように、プレイヤは第1コントローラ22を把持する。この状態にあるとき、第1コントローラ22は、マーカ340mおよび340nの少なくとも一方を検知することができる。プレイヤは、この状態を満たす範囲で第1コントローラ22の位置および向きを変化させることによってゲーム操作を行うことができる。
なお、第1コントローラ22の位置および向きがこの範囲外となった場合、ジャイロユニット24で検出される角速度に基づいて第1コントローラ22の位置および向きに基づいたゲーム操作を行う。したがって、以下では、上記範囲を「ポインティング操作可能範囲」と呼ぶ。
ポインティング操作可能範囲内で第1コントローラ22が把持される場合、撮像情報演算部80によって各マーカ340mおよび340nの画像が撮像される。すなわち、撮像素子80cによって得られる撮像画像には、撮像対象である各マーカ340mおよび340nの画像(対象画像)が含まれる。図9は、対象画像を含む撮像画像の一例を示す図である。対象画像を含む撮像画像の画像データを用いて、画像処理回路80dは、各マーカ340mおよび340nの撮像画像における位置を表す座標(マーカ座標)を算出する。
撮像画像の画像データにおいて対象画像は高輝度部分として現れるため、画像処理回路80dは、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路80dは、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、対象画像である2つのマーカ340mおよび340nに対応する画像340m’および340n’のみならず、窓からの太陽光や部屋の蛍光灯の光によって対象画像以外の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、対象画像である画像340m’および340n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路80dは当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子80cの解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子80cによって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
なお、撮像画像における位置は、撮像画像の左上を原点とし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(XY座標系)で表現されるものとする。
また、対象画像が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路80dは、算出された2箇所のマーカ座標を示すデータを出力する。出力されたマーカ座標のデータ(マーカ座標データ)は、上述したように、プロセッサ70によってコントローラデータに含まれ、ゲーム装置12に送信される。
ゲーム装置12(CPU40)は、受信したコントローラデータからマーカ座標データを検出すると、このマーカ座標データに基づいて、モニタ34の画面上における第1コントローラ22の指示位置(指示座標)と、第1コントローラ22からマーカ340mおよび340nまでの各距離とを算出することができる。具体的には、2つのマーカ座標の中点の位置から、第1コントローラ22の向いている位置すなわち指示位置が算出される。また、撮像画像における対象画像間の距離が、第1コントローラ22と、マーカ340mおよび340nとの距離に応じて変化するので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12は第1コントローラ22と、マーカ340mおよび340nとの間の距離を把握できる。
なお、上述したプロセッサ70への各出力は、たとえば1/200秒周期で実行される。したがって、任意の1/200秒間に、入力手段26からの操作データと、撮像情報演算部80のからの位置座標データと、加速度センサ74からの加速度データと、ジャイロセンサ92からの角速度データと、入力手段100からの操作データと、加速度センサ102からの加速度データとが、1回ずつプロセッサ70に出力される。また、コントローラデータは、たとえば、1/200秒毎に、ゲーム装置12に送信される。無線コントローラモジュール52は、コントローラ22から所定周期(たとえば、1/200秒)で送信されるコントローラデータを受信し、当該無線コントローラモジュール52が備える図示しないバッファに蓄積する。その後、ゲーム装置12では、CPU40の指示の下、入力プロセッサ42aによって、1フレーム(画面更新単位時間:1/60秒)毎に、当該期間中に蓄積されたコントローラデータが読み出され、操作データバッファ702a(図20参照)に記憶される。CPU40は、操作データバッファ702aを参照して、コントローラデータに従ってゲーム処理を実行する。
上述したようなゲームシステム10では、仮想ゲームをプレイすることができる。図10(A)には、この実施例の仮想ゲームにおいて、モニタ34に表示されるゲーム画面200の一例が表示される。詳細な説明は省略するが、仮想ゲーム空間(仮想3次元空間)500(図13参照)内に、地面オブジェクト、建物オブジェクトおよび地形オブジェクトのような背景オブジェクトが設けられるとともに、プレイヤオブジェクト202が配置される。また、アイテムオブジェクト(以下、単に「アイテム」という)や敵オブジェクト210なども必要に応じて仮想3次元空間500に配置される。このような仮想3次元空間500を仮想カメラ502(図13参照)で撮影した画像がゲーム画面としてモニタ34に表示される。以下、画面を表示する場合について同様である。
図10(A)に示すように、ゲーム画面200には、プレイヤオブジェクト202が画面中央からやや右下寄りに表示される。この実施例のプレイヤオブジェクト202は、右手で剣オブジェクト204を持ち、左手で盾オブジェクト206を持っている。また、ゲーム画面200には、複数(ここでは、4体)の敵オブジェクト210が画面中央からやや上寄りに横一列に並んで表示される。このゲーム画面200では、敵オブジェクト210が矢オブジェクトを放ち、それをプレイヤオブジェクト202が盾オブジェクト206で防御している様子が示される。
図面では、分かり難いが、プレイヤオブジェクト202や敵オブジェクト210が存在する場所が背景として表示される。
さらに、ゲーム画面200の左上部には、プレイヤオブジェクト202の生命力(ライフ)を示す画像220、盾オブジェクト206の防御力を示す画像222および所定のアイテムの所持数を示す画像224が表示される。また、ゲーム画面200の左下部には、第2コントローラ36の操作方法を示す画像230が表示される。そして、ゲーム画面200の右端部に、第1コントローラ22の操作方法を示す画像(方法指示画像)240が表示される。
簡単に説明すると、第1コントローラ22では、+ボタン26gを操作すると、地図(ゲームマップ)がモニタ34に表示される。また、第1コントローラ22では、Bトリガースイッチ26iを操作すると、アイテムを選択および使用する画面がモニタ34に表示される。
また、ゲーム画面200には表示されていないが、ジャイロユニット24が接続された第1コントローラ22は、プレイヤオブジェククト202が持っている剣オブジェクト204に対応しており、第1コントローラ22を振ると、その動きに連動して、剣オブジェクト204が動く。これによって、敵オブジェクト210や他のオブジェクト(図示せず)を切ることができる。詳細な説明は省略するが、剣オブジェクト204を用いて、敵オブジェクト210や他のオブジェクトを切る以外の動作を行うこともできる。
また、第2コントローラ36は、プレイヤオブジェクト202が持っている盾オブジェクト206に対応しており、Cボタン100bをオンした状態で第2コントローラ36を静止させると、その位置および向きで、盾オブジェクト206が静止される。
図10(B)に示すように、剣オブジェクト204および盾オブジェクト206の各々には、ローカル座標が設定されている。剣オブジェクト204のローカル座標は第1コントローラ22に設定された座標と対応し、盾オブジェクト206のローカル座標は第2コントローラ36に設定された座標と対応する。ただし、この実施例では、剣オブジェクト204に設定されたローカル座標の各軸(X軸、Y軸、Z軸)と、第1コントローラ22に設定された各軸(X軸、Y軸、Z軸)とは一致される。同様に、盾オブジェクト206に設定されたローカル座標の各軸と、第2コントローラ36に設定された各軸とは一致される。
したがって、図6に示したように、プレイヤが、ジャイロユニット24が接続された第1コントローラ22および第2コントローラ36を持って仮想ゲームをプレイする場合には、第1コントローラ22の姿勢(位置および向き)および動きが、仮想3次元空間500内のプレイヤオブジェクト202が持つ剣オブジェクト204の姿勢および動きに反映(連動)される。同様に、第2コントローラ36の姿勢(位置および向き)および動きが、仮想3次元空間500内のプレイヤオブジェクト202が持つ盾オブジェクト206の姿勢および動きに連動される。
なお、ジャイロユニット24が接続された第1コントローラ22の動きに連動して剣オブジェクト204が動くことについては、本願発明の本質的な内容でないため、その詳細な説明については省略する。たとえば、本件出願人が先に出願し、既に出願公開された特開2010−142561号公報に開示された技術を用いることができる。
また、第2コントローラ36では、Cボタン100bを操作すると、プレイヤオブジェクト202に盾オブジェクト206で弾く動作をさせることができる。したがって、敵オブジェクト210が放った矢を盾オブジェクト206で弾くことがきる。また、Zボタン100cを操作すると、プレイヤオブジェクト202に敵オブジェクト210を注目させることができる。たとえば、プレイヤオブジェクト202に敵オブジェクト210を注目させておけば、戦闘中に、プレイヤオブジェクト202が敵オブジェクト210を見失うことがない。
なお、ゲーム画面200に表示されていないが、第2コントローラ36を振ることによっても、敵オブジェクト210や他のオブジェクトを切ることができる。詳細な説明は省略するが、第1コントローラ22を振る場合と第2コントローラ36を振る場合とでは、切り方(切る技)が異なる。
この仮想ゲームでは、プレイヤの操作に従って、プレイヤオブジェクト202を移動させたり、剣オブジェクト204を振る動作や盾オブジェクト206で防御する動作などの所定の動作をさせたりする。これによって、プレイヤオブジェクト202は、敵オブジェクト210と闘ったり、敵オブジェクト210を倒したり、アイテムを取得したり、所定の場所に行ったりすることにより、予め用意されたステージをクリア(ステージクリア)し、最終的な目的を達成すると、ゲームクリアとなる。ただし、プレイヤオブジェクト202が、敵オブジェクト210に倒されると、ゲームオーバとなる。
たとえば、プレイヤが第2コントローラ36のアナログジョイスティック100aのレバーを倒すと、レバーを倒した方向に、レバーを倒した量(角度)に応じた速度で、プレイヤオブジェクト202は仮想3次元空間500内を移動する。図11には、プレイヤオブジェクト202が或る場所(位置)ないし領域(この実施例では、描画領域)510(図13参照)に存在する場合のゲーム画面250が示される。プレイヤオブジェクト202が描画領域510に存在するかどうかを判断するために、この描画領域510の範囲は予め設定されている。
図11に示すゲーム画面250では、画面中央下部に、プレイヤオブジェクト202が表示され、上述したように、プレイヤオブジェクト202は、剣オブジェクト204および盾オブジェクト206を持っている。また、ゲーム画面250の中央上端部には、現在プレイヤオブジェクト202が存在する場所が、描画領域であることを示す指示画像252が背景として表示される。この実施例では、指示画像252には、下向きの矢印が表示されているが、これに限定される必要はなく、他の図柄や記号が表示されてもよい。さらに、ゲーム画面250の右端部には、上述した方法指示画像240が表示される。この方法指示画像240では、第1コントローラ22の先端面が上方を向くように、当該第1コントローラ22を縦にすることにより、プレイヤオブジェクト202に構える動作をさせることが示される。
たとえば、図11に示すゲーム画面250がモニタ34に表示されている場合に、所定の条件が満たされると、図12に示すようなゲーム画面300がモニタ34に表示される。ここで、所定の条件は、プレイヤが所定のキーまたはスイッチないしはボタンを操作したり、プレイヤオブジェクト202が所定のアイテムを使用したり、プレイヤオブジェクト202が剣オブジェクト204で所定の壁面を叩いたり、プレイヤオブジェクト202が所定の動作を行ったりすることを意味する。これらは、ゲームプログラムや開発者等が適宜設定する事項であり、任意の条件を設定することができる。
図12に示すように、このゲーム画面300では、2次元の描画面(2次元面)302がその表示領域の全体に表示される。この2次元面302は、プレイヤないしプレイヤオブジェクト202が、2次元の画像ないし図形(以下、「2次元画像」という)を描画するための仮想の面(描画面)である。また、ゲーム画面300の中央下部には、2次元画像を描画する場合の操作方法を指示する画像(操作指示画像)304が2次元面302の前面に表示される。この操作指示画像304では、コントローラ22を上下左右(斜めも含む)に移動させながら、Aボタン206dを押すと、2次元画像を描くことができることが示される。また、プレイヤオブジェクト202が持っている剣オブジェクト204の一部が、2次元面302の前面に表示される。
このように、図11に示したゲーム画面250がモニタ34に表示されている場合に、第1コントローラ22の先端面を上に向けた後に、前方に向けるような所定の操作を行うと、図12に示すゲーム画面300がモニタ34に表示され、2次元画像を描画できる状態となる。
なお、所定の操作は、上記の操作に限定される必要はなく、第1コントローラ22のいずれか1つまたは2つ以上の入力手段26が操作されてもよい。または、第2コントローラ36が操作されてもよい。
また、所定の操作を行わずに、プレイヤオブジェクト202が描画領域510に到達したときに、図12に示したゲーム画面300がモニタ34に表示されるようにしてもよい。
ここで、図12に示すゲーム画面300が表示される場合の仮想3次元空間500の様子について説明する。上述したように、所定の操作が行われると、仮想3次元空間500では、仮想カメラ502がプレイヤオブジェクト202の頭部の位置に移動される。したがって、図12に示すように、プレイヤオブジェクト202の主観的な視点によるゲーム画面300がモニタ34に表示される。
詳細な説明は省略するが、図10(A)に示したゲーム画面200および図11に示したゲーム画面250からも分かるように、通常、仮想カメラ502は、プレイヤオブジェクト202の後方に配置され、当該プレイヤオブジェクト202に追従する。つまり、通常では、プレイヤオブジェクト202を客観的な視点で見たゲーム画面(200、250など)がモニタ34に表示される。
また、仮想カメラ502がプレイヤオブジェクト202の頭部の位置に移動されるときに、仮想3次元空間500内に、2次元面302が生成(配置)される。この実施例では、2次元面302は、指示画像252が表示された壁面の少し前方に配置される。ただし、図14に示すように、仮想カメラ502の正面であり、2次元面302の位置と仮想カメラ502の位置との距離が所定距離dとなるように、2次元面302は配置される。この実施例では、仮想カメラ502の正面であり、2次元面302の中心302aの位置と仮想カメラ502の中心(視点)502aの位置(カメラ位置)との距離が所定距離dとなるように、所定の大きさの2次元面302が配置される。
なお、この実施例では、所定の操作が行われたときに、2次元面302を配置するとともに、仮想カメラ502をプレイヤオブジェクト202の頭部の位置に移動させて、図12に示すゲーム画面300をモニタ34に表示するようにしてあるが、これに限定される必要はない。たとえば、所定の操作が行われたときに、2次元面302を配置し、その後、2次元画像の描画を開始したとき、すなわちAボタン26dが押されたときに、仮想カメラ502をプレイヤオブジェクト202の頭部の位置に移動させて、図12に示すゲーム画面300をモニタ34に表示するようにしてもよい。
図12に戻って、上述したように、プレイヤが第1コントローラ22を上下左右に移動させると、第1コントローラ22の移動に従って、剣オブジェクト204が移動される。そこで、Aボタン26dを押すと、2次元面302上であり、剣オブジェクト204の剣先が指示する位置に、連続的に(順次)2次元の点が描画される。つまり、線(2次元画像)が描画される。この実施例では、視点502aから延びる線が2次元面302と交差する点(交点)に点が描画される。具体的に説明すると、図15に示すように、仮想カメラ502の視点502aと剣オブジェクト204の剣先の点204aとを通る線520と、2次元面302との交点に点304が描画される。
ただし、分かり易く示すために、図15では、プレイヤオブジェクト202および背景オブジェクトを省略してある。
また、この実施例では、2次元画像を描画する際には、剣オブジェクト204の持ち手(剣元)を固定しているため、第1コントローラ22の移動に従って、剣オブジェクト204の剣先は球面状に移動する。したがって、剣先が指示する位置に点304を描画するようにすると、球面(曲面)状に点304が描画されることになる。したがって、この実施例では、剣先を2次元面302に投影するように、点304が描画される。こうすることによって、仮想3次元空間500内のプレイヤオブジェクト202が、剣オブジェクト204などのアイテムを使って描画を行う場合に、球面(曲面)ではなく、平面に描くことが可能になる。
図16には、プレイヤまたはプレイヤオブジェクト202が2次元画像352を描画している途中のゲーム画面350が示される。図16に示すゲーム画面350は、2次元面302に、描画中の2次元画像352が表示される以外は、図12に示したゲーム画面300と同じであるため、重複した説明は省略する。
そして、プレイヤがAボタン26dを離すと、2次元画像352の描画が終了される。すると、図示は省略するが、仮想カメラ502は元の位置に戻される。つまり、図13の点線で示したように、仮想カメラ502は、プレイヤオブジェクト202の後方に移動される。したがって、図17に示すように、プイヤオブジェクト202を客観的な視点で見た場合のゲーム画面400がモニタ34に表示される。
ゲーム画面400では、プレイヤオブジェクト202、剣オブジェクト204、盾オブジェクト206および指示画像252に加えて、仮想3次元空間500に設定された2次元面302およびこの2次元面302に描画された2次元画像352が表示される。
また、2次元画像352の描画が終了されると、描画された2次元画像352の認識処理が開始される。この実施例では、プレイヤまたはプレイヤオブジェクト202が描画した2次元画像352が所定の画像であることが認識された場合には、認識された所定の画像に対応する3次元オブジェクトが出現される。たとえば、所定の画像は、ハートの画像や円(丸)の画像などであり、ハートの画像に対応してハートの3次元オブジェクトが設定(用意)されており、円の画像に対応して爆弾の3次元オブジェクトが設定されている。したがって、ハートの画像であることが認識されると、対応するハートの3次元オブジェクトが出現される。また、円の画像であることが認識されると、対応する爆弾の3次元オブジェクトが出現される。
したがって、図17のゲーム画面400に表示されている2次元画像352がハートの画像として認識されると、図18に示すようなゲーム画面450がモニタ34に表示される。図18に示すゲーム画面450では、2次元面302および2次元画像352に代えて、ハートの3次元オブジェクト452が表示される。図示は省略するが、仮想3次元空間500においては、ハートの3次元オブジェクト452が出現され、2次元面302および2次元画像352は消去される。また、図示は省略するが、ハートの3次元オブジェクト452は、出現された後、地面に落下するため、その様子を示すゲーム画面が表示される。その後、プレイヤオブジェクト202は、ハートの3次元オブジェクト452を取得することができる。たとえば、プレイヤオブジェクト202がハートの3次元オブジェクト452を取得すると、当該プレイヤオブジェクト202のライフが増加される。
図示は省略するが、円の画像が認識され、爆弾の3次元オブジェクト(爆弾オブジェクト)が出現され、これをプレイヤオブジェクト202が取得すると、所持アイテムに爆弾オブジェクトが追加される、または所持している爆弾オブジェクトの個数が増加される。
ここで、描画された2次元画像352が所定の画像であるかどうかを認識(判別)する方法について説明する。図19(A)を参照して、描画された2次元画像352がハートの画像であるかどうかを判別する場合について説明する。この実施例においては、下記の各項目について点数が計算され、その合計点が算出される。
なお、図19(A)では、整った形状の2次元画像352が描画されているように記載してあるが、第1コントローラ22を現実空間内で動かして2次元画像352を描画するため、実際には、図16および図17に示したように、或る程度崩れた形状の2次元画像352が描画される。このことは、図19(B)に示す円の画像についても同様である。
ただし、以下に示す「角」は、連結された2つの線分のなす角度が所定角度(たとえば、140°)以下であり、当該2つの線分のそれぞれが所定の長さ以上である場合の当該2つの線分が連結された部分を意味する。たとえば、点線の丸で示す部分600、602、604、606が「角」に相当する。また、詳細な説明は省略するが、描画された2次元画像352を認識する際には、そのすべての点を用いるのではなく、時系列に従って所定距離毎に抽出した点が用いられる。これは、2次元画像352を構成するすべての点を用いた場合には、形状(図形)を認識するための処理の負担が大きいためである。このことは、後述する円の画像を認識する場合も同様である。
また、「下V字」は、「角」のうち、2つの線分が下側で連結されている形状(谷型)であり、当該2つの線分が連結された部分を意味する。図19(A)では、部分604および部分606が該当する。「上V字」は、「角」のうち、2つの線分が上側で連結されている形状(山型)であり、当該2つの線分が連結された部分を意味する。図19(A)では、部分600および部分602が該当する。
ただし、図19(A)(図19(B)も同じ)に示すように、描画した2次元画像352を、その最上点、最下点、左端点および右端点を通る直線で形成される四角形で囲むことにより、角などの位置または範囲を判断し、点数が決定される。
(1)下1/4の範囲内に、角が1つまたは下V字が1つ以上ある。(2)角が上半分に2個以上ある。(3)角の重心が上半分にある。(4)角の重心が上1/4から上1/2の間にある。(5)角が下1/6の範囲に1つある。または、角が下1/2(半分)の範囲に1つある。(6)下V字が下1/4の範囲に1つある。(7)下V字が上1/2の範囲に1つある。(8)上V字が上1/3の範囲に2つある。(9)上V字が上1/3の範囲に1つある。
条件(1)〜(3)は、それぞれ、満たすか満たさないかで点数が決定される。条件(1)を満たす場合には、点数は10点であり、満たさない場合には、点数は0点である。このことは、条件(2)および条件(3)についても同様である。ただし、条件(1)〜(3)のすべてを満たす場合には、合計点に20点加算される。
条件(4)については、点数が0点〜40点の間で設定される。角の重心が上から1/4の位置に近い程、点数が高く設定され、角の重心が上から1/2の位置に近い程、点数が低く設定される。点数は、線形的に変化させてもよい、段階的に変化させてもよい。また、角の重心が上から1/4の位置に近い程、より点数が増大されるように、放物線状(累乗)に点数が変化されてもよい。角の重心が条件(4)の範囲外である場合には、点数は0点である。これらのことは、条件(5)についても同様である。
また、条件(5)については、点数が0点〜30点の間で設定される。1つの角が下1/6の範囲内にあれば、30点であり、その位置が上昇するにつれて点数が小さくされる。ただし、複数の角が下1/6の範囲内にある場合には、点数は0点である。または、角の数が大きくなるについて点数が低くなるように設定されてもよい。
条件(6)を満たす場合には、点数は20点であり、満たさない場合には、点数は0点である。条件(7)を満たす場合には、点数は20点であり、満たさない場合には、点数は0点である。ただし、条件(6)および条件(7)の両方を満たす場合には、合計点に50点加算される。
条件(8)を満たす場合には、点数は20点であり、満たさない場合には、点数は0である。条件(9)を満たす場合には、点数は10点であり、満たさない場合には、点数は0点である。ただし、上V字が下1/2の範囲にある場合には、その上V字の個数×30点が合計点から減算される。
このようにして各条件について算出された点数の合計が算出され、算出された合計点が所定の点数を超える場合に、ハートの画像であると判断される。たとえば、上記の条件(1)−(9)をすべて満たす場合の最大の合計点は230点であり、100点を超えると、ハートの画像であると判断される。
なお、ここでは、ハートの画像を認識(判別)する手法について説明したが、同様の手法を用いることにより、ハートの画像と同程度の複雑さを有する画像、たとえば、三角形、平行四辺形、ひし形、星形およびスペードなどの他の画像を認識することも可能である。ただし、認識する画像(図形)によって特徴が異なるため、2次元画像352に含まれる角の数、角の向き、および角の位置ないし範囲などの上記の条件が異なる。
また、図19(B)を参照して、描画された2次元画像352が円(丸)の画像であるかどうかを認識(判別)する方法について説明する。この方法では、以下に示す各条件を満足するかどうかが判断され、すべての条件((ア)−(カ))を満たす場合に、描画された2次元画像352が円の画像であると認識(判別)される。
(ア)上下左右で均等に分割(4分割)したときに、すべての範囲(領域(I)、(II)、(III)、(IV))の点の数が3つ以上である。ただし、描画された2次元画像352から抽出した点の数である。(イ)縦横比が、2:3から3:2の間である。ただし、縦の長さLは、2次元画像352から抽出された点のうち、最上点と最下点とで決定される。また、横の長さWは、2次元画像352から抽出された点のうち、左端点と右端点とで決定される。(ウ)角が全部で5つ以内である。ただし、「角」であるかどうかは上述した場合と同じである。(エ)線(2次元画像352)の書き始めすなわち前半の1/3の線、または線の書き終わりすなわち後半の1/3にしか角が無い。(オ)始点と終点との間の距離が、縦の長さLの1/2以内であり、かつ横の長さWの1/3以内である。(カ)すべての点の重心が下1/3の範囲よりも上方にある。
なお、ここでは、円の画像を認識(判別)する手法について説明したが、同様の手法を用いることにより、円の画像と同様に上下および左右で対称となる画像、たとえば、長方形、ひし形、楕円形、正多角形などの他の画像を認識することも可能である。ただし、認識する画像(図形)によって特徴が異なるため、各領域に含まれる2次元画像352から抽出した点の数、2次元画像352に縦横比、2次元画像352に含まれる角の個数などの上記の条件が異なる。
また、描画された2次元画像352が所定の画像として認識されない場合には、何ら3次元オブジェクトは出現されない。ただし、単なる石のオブジェクトのように、描画ないし認識を失敗したことが分かる3次元オブジェクトを出現させるようにしてもよい。
さらに、描画された2次元画像352から抽出した点が10個以下である場合には、認識処理を実行せずに、描画された2次元画像352を消去して、プレイヤに描画をやり直させるようにしてある。
さらにまた、上記の画像の認識(判別)方法は一例であり、他の認識方法が採用されてもよい。たとえば、本件出願人が先に出願し既に出願公開された特開2006−204344号に開示される方法を採用することもできる。
また、この実施例では、2次元画像が所定の図形である場合について説明してあるが、図形に限定される必要はなく、文字などの記号であってもよい。かかる場合にも、記号の種類に応じて、上記のいずれかの認識(判別)方法を使い分けることにより、描画された2次元画像を認識することが可能である。
図20は、図2に示したメインメモリ(42eまたは46)のメモリマップの一例を示す図解図である。図20に示すように、メインメモリ(42e,46)は、プログラム記憶領域700およびデータ記憶領域702を含む。プログラム記憶領域700には、画像処理プログラムを含むゲームプログラムが記憶される。ゲームプログラムは、ゲームメイン処理プログラム700a、画像生成プログラム700b、画像表示プログラム700c、操作入力検出プログラム700d、オブジェクト制御プログラム700e、描画制御プログラム700fおよび画像認識プログラム700gなどを含む。たとえば、画像処理プログラムは、画像生成プログラム700b、画像表示プログラム700c、操作入力検出プログラム700d、オブジェクト制御プログラム700e、描画制御プログラム700fおよび画像認識プログラム700gによって構成される。
ゲームメイン処理プログラム700aは、この実施例の仮想ゲームのメインルーチンを処理するためのプログラムである。画像生成プログラム700bは、後述する画像データ702bを用いて、モニタ34に表示する画面(200、300など)に対応するゲーム画像データを生成するためのプログラムである。画面表示プログラム700cは、画像生成プログラム700bに従って生成されたゲーム画像データをモニタ34に出力(表示・更新)するためのプログラムである。
操作入力検出プログラム700dは、第1コントローラ22から送信されるコントローラデータを検出するためのプログラムである。オブジェクト制御プログラム700eは、コントローラデータに従ってプレイヤオブジェクト202を移動等させたり、コントローラデータに従わないで敵オブジェクト210等のノンプレイヤオブジェクトを配置したり(出現させたり)移動等させたりするためのプログラムである。
描画制御プログラム700fは、仮想3次元空間500に2次元面302を配置したり、2次元面352に対する描画位置を検出したり、2次元面302および2次元画像352を消去したりするためのプログラムである。画像認識プログラム700gは、描画された2次元画像352が所定の画像(この実施例では、ハートの画像または円の画像)であるかどうかを認識(判別)するためのプログラムである。また、画像認識プログラム700gは、2次元画像352が所定の画像であることを認識すると、所定の画像に対応する3次元オブジェクトを出現(発生)させる。
なお、図示は省略するが、プログラム記憶領域700には、音出力プログラムやバックアッププログラムも記憶される。音出力プログラムは、プレイヤオブジェクト202および敵オブジェクト210の音声(擬声音)、効果音、音楽(BGM)などのゲームに必要な音を生成および出力するためのプログラムである。バックアッププログラムは、プレイヤの指示や所定のゲームイベントに従って、ゲームデータ(途中データ、結果データ)を、フラッシュメモリ44やメモリカードに記憶するためのプログラムである。
データ記憶領域702には、操作データバッファ702aが設けられる。また、データ記憶領域702には、画像データ702b、プレイヤオブジェクトデータ702c、カメラ位置データ702d、剣先位置データ702eおよび抽出データ702fを記憶する。
操作データバッファ702aは、アンテナ52aを介して無線コントローラモジュール52で受信された、第1コントローラ22からのコントローラデータを、記憶(一時記憶)するためのバッファである。操作データバッファ702aに記憶されたコントローラデータは、CPU40によって使用された後、削除(消去)される。
画像データ702bは、ポリゴンデータ、テクスチャデータ、およびオブジェクトデータなどのデータである。プレイヤオブジェクトデータ702cは、プレイヤオブジェクト202についてのデータである。たとえば、プレイヤオブジェクトデータ702cは、現在位置データ7020、生命力データ7022、アイテムデータ7024などを含む。現在位置データ7020は、プレイヤオブジェクト202の現在位置の3次元座標のデータである。生命力データ7022は、プレイヤオブジェクト202の生命力(ライフ)の数値についてのデータである。アイテムデータ7024は、プレイヤオブジェクト202の所持アイテムの種類および個数についてデータである。
なお、図示は省略するが、プレイヤオブジェクトデータ702cには、プレイヤオブジェクト202のレベル、装備している武器(剣オブジェクト204、盾オブジェクト206)の種類や属性(攻撃力や防御力)などのデータも含まれる。
カメラ位置データ702dは、仮想カメラ502の視点502aの現在の位置(カメラ位置)についての3次元座標のデータである。剣先位置データ702eは、剣オブジェクト204の剣先の現在の位置についての3次元座標のデータである。ただし、剣先位置データ702eは、2次元画像352を描画するときだけ検出および更新される。抽出データ702fは、2次元画像352を描画するための2次元面352に描画される点を、時系列に従う順序で、所定距離毎に抽出した点の座標(3次元座標)についてのデータである。ただし、2次元画像352は2次元面302に描画され、カメラ座標系においては、奥行き値(Z値)を考慮しなくてよいため、抽出データ702fとして、2次元座標についてのデータを記憶するようにしてもよい。
図示は省略するが、データ記憶領域702には、サウンドデータなども記憶され、ゲーム処理に必要な、フラグやカウンタ(タイマ)も設けられる。
具体的には、図2に示したCPU40は、図21に示すゲーム全体処理を実行する。図示は省略するが、このゲーム全体処理と並行して、コントローラ22から送信されるコントローラデータの検出処理が実行されている。つまり、CPU40は、アンテナ52aおよび無線コントローラ52を介して受信されたコントローラデータを、1フレーム毎に、メインメモリ(42e,46)内の操作データバッファ702aに記憶する。
CPU40は、ゲーム全体処理を開始すると、ステップS1で、ゲーム画面を表示する。ここでは、CPU40は、仮想ゲームを最初から開始する場合には、当該仮想ゲームの初期のゲーム画面をモニタ34に表示する。また、CPU40は、仮想ゲームを前回の続きから開始する場合には、前回の続きから開始するためのゲーム画面をモニタ34に表示する。
次のステップS3では、プレイヤオブジェクト202を制御する。ここでは、CPU40は、操作データバッファ702aに記憶されたコントローラデータに従って、プレイヤオブジェクト202を移動させたり、プレイヤオブジェクト202に所定の動作をさせたりする。ただし、CPU40は、プレイヤオブジェクト202を移動させる場合には、移動後の現在位置の3次元座標のデータを現在位置データ7020としてデータ記憶領域702に記憶する。つまり、現在位置データ7020が更新される。ただし、コントローラデータにプレイヤオブジェクト202の制御についてのデータが含まれていない場合には、ステップS3の処理は実行されずに、そのままステップS5に進む。
続いて、ステップS5では、描画領域かどうかを判断する。つまり、プレイヤオブジェクト202が、指示画像252の表示された描画領域510に存在する(到達した)かどうかを判断する。ステップS5で“YES”であれば、つまり描画領域510であれば、図22に示すステップS25に進む。一方、ステップS5で“NO”であれば、つまり描画領域510でなければ、ステップS7で、敵オブジェクト210を制御する。ここでは、CPU40は、敵オブジェクト210を配置する(出現させる)。また、CPU40は、ゲームプログラムに従って、敵オブジェクト210を移動させたり、敵オブジェクト210に所定の動作をさせたりする。
詳細な説明は省略するが、ステップS3およびS7の処理によって、プレイヤオブジェクト202と敵オブジェクト210とが遭遇したり、闘ったりする。また、これらの処理によって、ゲーム画面が更新される。さらに、図示は省略するが、ステップS3の処理によって、プレイヤオブジェクト202が、爆弾の3次元オブジェクトなどのアイテムを取得すれば、当該アイテムが所持アイテムとして追加され、アイテムを使用すると、当該アイテムが所持アイテムから消去される。
次のステップS9では、各種パラメータを更新する。ここでは、CPU40は、プレイヤオブジェクト202や敵オブジェクト210のライフを変化(低減または増加)させたり、プレイヤオブジェクト202のレベルを変化(増加)させたり、プレイヤオブジェクト202の攻撃力や防御力を変化(低減または増加)させたりする。
なお、ステップS3の処理によって、プレイヤオブジェクト202がハートの3次元オブジェクトを取得した場合には、ステップS9の処理によって、プレイヤオブジェクト202のライフが増加される。
続いて、ステップS11では、ゲームクリアかどうかを判断する。たとえば、CPU40は、プレイヤないしプレイヤオブジェクト202が全ステージをクリアしたかどうかを判断する。ステップS11で“YES”であれば、つまりゲームクリアであれば、ステップS13で、ゲームクリア処理を実行して、ゲーム全体処理を終了する。たとえば、ステップS13では、CPU40は、ゲームクリアであることを表現するゲーム画面をモニタ34に表示したり、そのことを表現する音ないし音楽をスピーカ34aから出力したりする。
一方、ステップS11で“NO”であれば、つまりゲームクリアでなければ、ステップS15で、ゲームオーバかどうかを判断する。たとえば、CPU40は、プレイヤオブジェクト202のライフが0以下となり、当該プレイヤオブジェクト202が倒されたかどうかを判断する。ステップS15で“YES”であれば、つまりゲームオーバであれば、ステップS17で、ゲームオーバ処理を実行して、ゲーム全体処理を終了する。たとえば、ステップS17では、CPU40は、ゲームオーバであることを表現するゲーム画面をモニタ34に表示したり、そのことを表現する音ないし音楽をスピーカ34aから出力したりする。
なお、ゲームクリアまたはゲームオーバの場合に、ゲーム全体処理を終了するようにしてあるが、プレイヤの操作に従って、ゲーム全体処理を終了することもある。また、図示は省略するが、プレイヤの操作や所定のゲームイベントに従って、ゲームデータのバックアップ処理が実行されることもある。
また、ステップS15で“NO”であれば、つまりゲームオーバでなければ、ステップS19で、ステージクリアかどうかを判断する。たとえば、CPU40は、現在のステージにおいて、プレイヤオブジェクト202がボスの敵オブジェクト202を倒したかどうかを判断する。
ステップS19で“NO”であれば、つまりステージクリアでなければ、そのままステップS3に戻る。一方、ステップS19で“YES”であれば、つまりステージクリアであれば、ステップS21で、ステージクリア処理を実行する。ここでは、CPU40は、ステージクリアであることを表現するゲーム画面をモニタ34に表示したり、そのことを表現する音ないし音楽をスピーカ34aから出力したりする。
次のステップS23では、次のステージに進み、ステップS3に戻る。たとえば、ステップS23では、CPU40は、プレイヤオブジェクト202を、次のステージの初期位置(スタート地点)に移動させる。
図22に示すように、ステップS25では、2次元画面302を表示するための操作方法を表示する。つまり、図11に示したようなゲーム画面250が表示される。続くステップS27では、所定の条件を満たしたかどうかを判断する。ここでは、CPU40は、上述したように、プレイヤが所定のキーまたはスイッチないしはボタンを操作したり、プレイヤオブジェクト202が所定のアイテムを使用したり、プレイヤオブジェクト202が剣オブジェクト204で所定の壁面を叩いたり、プレイヤオブジェクト202が所定の動作を行ったりしたかどうかを判断する。
ステップS27で“NO”であれば、つまり所定の条件を満たしていなければ、図21に示したステップS7に移行する。一方、ステップS27で“YES”であれば、つまり所定の条件を満たせば、ステップS29で、仮想カメラ502の位置を主観的な視点位置に移動する。つまり、仮想カメラ502をプレイヤオブジェクト202の頭部の位置に移動する。次のステップS31では、仮想カメラ502の位置に応じて2次元面302を、仮想3次元空間500内に配置する。つまり、仮想カメラ502の前方であり、視点502aの位置と2次元面302の中心302aの位置との距離が所定距離dになるように、2次元面302が配置される。そして、ステップS33で、描画方法を表示する。つまり、図12に示したようなゲーム画面300がモニタ34に表示される。
続いてステップ37では、Aボタン26dがオンであるかどうかを判断する。つまり、CPU40は、操作データバッファ702aのコントローラデータを参照して、Aボタン26dがオンされているかどうかを判断することにより、描画を開始することが指示されたかどうかを判断する。ステップS35で“NO”であれば、つまりAボタン26dがオフであれば、同じステップS35に戻って、Aボタン26dがオンされるのを待機する。
一方、ステップS35で“YES”であれば、つまりAボタン26dがオンされれば、描画を開始すると判断して、図23に示すステップS37で、操作に従って描画する。上述したように、仮想カメラ502の視点502aの位置と剣オブジェクト204の剣先の点204aとを通る線520と、2次元面302との交点に2次元の点304を表示(描画)する。ただし、CPU40は、操作データバッファ702aに記憶されたコントローラデータに含まれる角速度データに基づいてヨー角、ロール角およびピッチ角が算出され、すなわち第1コントローラ22の姿勢が検出され、これに応じて剣オブジェクト204を移動等させ、このとき剣先の点204aの位置が更新される。つまり、剣先位置データ702eが更新される。続くステップS39では、所定距離毎に点304を抽出する。ただし、抽出された点304の3次元座標のデータがデータ領域702に記憶(追加)される。つまり、抽出データ702fが更新される。
続くステップS41では、Aボタン26dがオフであるかどうかを判断する。ステップS41で“NO”であれば、つまりAボタン26dがオンであれば、描画中であると判断して、ステップS37に戻る。一方、ステップS41で“YES”であれば、つまりAボタン26dがオフであれば、ステップS43で、抽出した点304の数が所定数(たとえば、10)を超えているかどうかを判断する。ステップS43で“NO”であれば、つまり抽出した描画点304の数が所定数以下であれば、ステップS45で、描画内容すなわち2次元画像352を消去して、図22に示したステップS35に戻る。ただし、ステップS45では、抽出された点304もすべて消去される。
一方、ステップS43で“YES”であれば、つまり抽出した点304の数が所定数を超えていれば、ステップS47で、仮想カメラ502(視点502a)の位置を客観的な視点位置に戻す。つまり、プレイヤオブジェクト202の後方の位置に、仮想カメラ502の位置が移動される。したがって、図17に示したようなゲーム画面400がモニタ34に表示される。
続いて、ステップS49では、画像の認識処理を実行する。ここでは、上述したような、ハートの画像の認識処理(判別処理)および円の画像の判別処理が実行される。次のステップS51では、認識を成功したかどうかを判断する。つまり、描画された2次元画像352が、ハートの画像または円の画像であることが判別されたかどうかを判断する。
ステップS51で“NO”であれば、つまり認識を失敗すれば、そのままステップS55に進む。一方、ステップS51で“YES”であれば、つまり認識を成功すれば、ステップS53で、認識した画像に対応する所定の3次元オブジェクト(452)を出現および落下させる。つまり、図18に示したようなゲーム画面450がモニタ34に表示され、その後、ハートの3次元オブジェクト452が地面に落下される。そして、ステップS55で、2次元面302およびその描画内容を消去して、図21に示したステップS3に戻る。つまり、ステップS53およびS55の処理によって、描画された2次元画像(352)が、これに対応する3次元オブジェクト(452)に変換される。
この実施例によれば、所定の条件を満たすときに、仮想3次元空間に2次元面を表示し、この2次元面に描画した2次元画像を3次元オブジェクトに変換するので、2次元画像を描画するための難易度を上げることができ、面白味を増大させることができる。
なお、この実施例では、2次元画像の描画を開始した後も、描画方法の操作指示画像を表示し続けるようにしたが、描画を開始した後に消去するようにしてもよい。また、描画方法の操作指示画像は、2次元画像を描画するのが所定回数(2回目)以降である場合、仮想ゲームを或る程度進行させている場合、ゲームレベル(プレイヤオブジェクトのレベル)が所定値以上である場合には、表示しないようにしてもよい。
同様に、この実施例では、プレイヤオブジェクトが描画領域に存在する(到達した)とき、2次元面を表示するための操作方法の操作指示画像を表示するようにしたが、描画領域に到達するのが所定回数(2回目)以降である場合、仮想ゲームを或る程度進行させている場合、ゲームレベル(プレイヤオブジェクトのレベル)が所定値以上である場合には、表示しないようにしてもよい。
さらに、この実施例では、2次元面に描画した2次元の点に基づく2次元画像が所定の画像か否かを認識して、所定の画像である場合に、所定の3次元オブジェクトに変換するようにしたが、これに限定される必要はない。たとえば、図24に示すように、2次元面に2次元画像を描画する際に、3次元の点(球)を配置(表示)することにより、2次元で描画した内容を3次元のオブジェクトで表示するようにしてもよい。
さらに、この実施例では、プレイヤオブジェクトが持っている剣オブジェクトを第1コントローラから送信されるコントローラデータに含まれる角速度データに基づいて動かすことにより、2次元面に2次元画像を描画するようにしたが、これに限定される必要はない。たとえば、剣オブジェクトは、第1コントローラから送信されるコントローラデータに含まれる加速度データに基づいて動かすこともできる。また、剣オブジェクトの剣先の点を、第1コントローラから送信されるコントローラデータに含まれるマーカ座標データに基づいて移動させることもできる。つまり、ポインティングデバイスを用いて2次元画像を描画することもできる。また、ポインティングデバイスとしては、タッチパネルやコンピュータマウスなども用いることができる。
さらにまた、この発明は、画像処理のための各処理(プログラム700b−700g)が複数のコンピュータ等によって分散処理されるような画像処理システムにも適用可能である。