説明

画像処理プログラム、画像処理装置、画像処理方法および画像処理システム

【課題】 位置関係情報の報知を動的に行い、自由度を高める。
【解決手段】 画像処理装置(12)は、オブジェクト(Obi)が配置された仮想空間(IS)を仮想カメラICから撮影した仮想空間画像を出力領域(94)に書き込み(S3)、基準位置(P)とオブジェクトの配置位置(Pi)との位置関係を示すポインタPntの画像を出力領域に記憶された仮想空間画像上に描画する(S43)際、描画しようとするポインタPntの画像を仮想カメラICの高さ(H)やオブジェクトの属性といった条件に応じて変化させる(S29,S31,S41)。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムに関し、特にたとえば、オブジェクトが配置された仮想空間を仮想カメラから撮像した画像を表示する、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムに関する。
【背景技術】
【0002】
従来、オブジェクトが配置された仮想空間を仮想カメラから撮像した画像を表示する技術において、所定の位置からオブジェクトまでの距離や方向を報知するものが知られている。
【0003】
たとえば、特許文献1には、仮想空間においてユーザが操作するメインキャラクタの視点からの映像を含む主映像をディスプレイに表示し、主映像の視線方向を基準として、他のサブキャラクタが存在しているかを検出し、存在していることが検出された場合には、サブキャラクタの視点映像となる副映像を表示し、存在しないことが検出された場合には、ノイズ映像を副映像として表示することが開示されている。また、メインキャラクタとサブキャラクタの距離に応じて、副映像または音声に加工処理を施すことも開示されている。具体的には、距離が近いほど副映像の鮮明度を上げて、また音声を大きくし、距離が離れるほど副映像の鮮明度を下げて、また音声を小さくする。

【特許文献1】国際公開WO2004/110577号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1では、メインキャラクタとサブキャラクタとの間の距離や方向に基づいて副映像の表示態様や音声の大きさが一意的に決められているため、自由度が乏しいという問題があった。
【0005】
それゆえに、この発明の主たる目的は、新規な、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【0006】
この発明の他の目的は、自由度が高い、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【0007】
この発明のその他の目的は、所定位置とオブジェクト位置との関係を示す関係情報の報知を動的に行うことができる、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを提供することである。
【課題を解決するための手段】
【0008】
この発明は、上記の課題を解決するために、以下の構成を採用した。
【0009】
第1の発明は、画像処理プログラムであって、画像処理装置のコンピュータを、オブジェクトが配置された仮想空間を仮想カメラから撮影した仮想空間画像を出力する画像出力手段、所定の基準位置とオブジェクトの配置位置との位置関係を示す位置関係情報を出力する位置関係情報出力手段、および位置関係情報を条件に応じて変化させる位置関係情報変化手段として機能させる。
【0010】
第1の発明によれば、基準位置とオブジェクトの配置位置との位置関係を示す情報を条件に応じて変化させるので、位置関係情報の報知を基準位置の状況に応じて動的に行うことができる。したがって、自由度が高まる。
【0011】
第2の発明は、第1の発明に従属する画像処理プログラムであって、条件は基準位置に関連して設定されているパラメータである。
【0012】
第2の発明によれば、位置関係情報を基準位置に関連するパラメータを通じて変化させることができる。
【0013】
第3の発明は、第2の発明に従属する画像処理プログラムであって、パラメータは基準位置の基準面からの高さを規定する高さ情報である。
【0014】
第3の発明によれば、位置関係情報を基準位置の高さに応じて変化させることができる。
【0015】
第4の発明は、第3の発明に従属する画像処理プログラムであって、コンピュータを、基準位置に関連してオブジェクトの存在を検知可能な範囲を設定しかつ当該範囲を少なくとも高さ情報に応じて変化させる範囲制御手段としてさらに機能させ、位置関係情報はオブジェクトの配置位置が範囲内か否かを少なくとも示す情報である。
【0016】
第4の発明によれば、オブジェクトを検知可能な範囲を基準位置の高さ情報に応じて動的に変化させることができ、当該範囲内に位置するか否かを位置関係情報によってプレイヤに提示できる。
【0017】
第5の発明は、第4の発明に従属する画像処理プログラムであって、範囲制御手段は高さ情報の示す値が大きいほど範囲を拡大する。
【0018】
第5の発明によれば、基準位置の高さが高いほど検知可能な範囲が拡がるので、検知が容易になる。
【0019】
第6の発明は、第4の発明に従属する画像処理プログラムであって、範囲は基準位置からの距離と方向に基づいて設定される。
【0020】
第6の発明によれば、基準位置からの距離と方向に基づいて位置関係情報に関する範囲を設定できる。ある実施例では、範囲は、コーン型の領域として設定される。
【0021】
第7の発明は、第6の発明に従属する画像処理プログラムであって、位置関係情報はオブジェクトの検知の強さを示す情報を含み、範囲制御手段は範囲内で検知の強さが段階的に変化するように当該範囲を複数領域に分割する。
【0022】
第7の発明では、位置関係情報によって、範囲内か範囲外の区別に加えて、範囲内での検知の強さが段階的に表現される。したがって、位置関係を詳細に報知できる。
【0023】
第8の発明は、第6の発明に従属する画像処理プログラムであって、コンピュータを、基準位置からオブジェクトの配置位置までの距離と方向に基づいて検知の強さを計算する計算手段としてさらに機能させ、位置関係情報変化手段は、オブジェクトの配置位置が範囲内である場合には、計算手段の計算結果に基づいて位置関係情報を変化させる。
【0024】
第8の発明では、距離と方向に基づいて検知の強さが計算される。そして、位置関係情報によって、範囲内か範囲外の区別に加えて、範囲内での検知の強さが計算結果に基づいて表現されるので、位置関係をより詳細に報知できる。
【0025】
第9の発明は、第8の発明に従属する画像処理プログラムであって、計算手段は方向よりも距離を優先して計算を行う。
【0026】
ある実施例では、距離に基づいて計算を行い、距離が等しい場合に方向を考慮するが、他の実施例では、たとえば、方向よりも距離に重み付けをした計算式で計算を行ってもよい。
【0027】
第9の発明によれば、オブジェクトまでの距離感を表現できる。
【0028】
第10の発明は、第4の発明に従属する画像処理プログラムであって、コンピュータを、範囲内に複数のオブジェクトが存在する場合に基準位置から各オブジェクトまでの距離と方向に基づいて最優先オブジェクトを決定する最優先オブジェクト決定手段としてさらに機能させ、位置関係情報は最優先オブジェクトとの関係を示す。
【0029】
第10の発明では、範囲内にオブジェクトが複数存在する場合、距離と方向に基づいて最優先オブジェクトが決定され、位置関係情報を通じて最優先オブジェクとの関係が提示されるので、基準位置に最も近いオブジェクトを(近いオブジェクトから順番に)検知できる。
【0030】
第11の発明は、第10の発明に従属する画像処理プログラムであって、最優先オブジェクト決定手段は方向よりも距離を優先して決定を行う。
【0031】
ある実施例では、距離に基づいて決定を行い、距離が等しい場合に方向を考慮するが、他の実施例では、たとえば、方向よりも距離に重み付けをしたアルゴリズムに従って決定を行ってもよい。
【0032】
第11の発明によれば、直近のオブジェクトまでの距離感を表現できる。
【0033】
第12の発明は、第4の発明に従属する画像処理プログラムであって、条件は、オブジェクトに設定されている属性である。
【0034】
第12の発明では、位置関係情報を、オブジェクトの属性に応じて動的に変化させることができるので、自由度が高まる。
【0035】
第13の発明は、第12の発明に従属する画像処理プログラムであって、属性は、オブジェクトが可動オブジェクトか否かを示す情報を含み、コンピュータを、基準位置に関連してオブジェクトの存在を検知可能な範囲を設定しかつ当該範囲を少なくとも属性に応じて変化させる範囲制御手段としてさらに機能させる。好ましくは、動きが大きい(素早い)オブジェクトほど範囲を広くする。
【0036】
第13の発明によれば、動くオブジェクトについては、範囲を拡大することで、これを見つけ易くなる。
【0037】
変形例では、属性にサイズに関する情報を含め、オブジェクトのサイズが大きい場合に範囲を拡大して見つけ易くしてもよい。好ましくは、サイズが大きいオブジェクトほど範囲を広くする。他の変形例では、属性に希少性に関する情報を含め、オブジェクトの希少性が高い場合に範囲を縮小して見つけ難くしてもよい。好ましくは、希少性が高いオブジェクトほど範囲を狭くする。
【0038】
第14の発明は、第1の発明に従属する画像処理プログラムであって、基準位置は仮想カメラの位置であり、位置関係情報は、画像、音声、振動および発光の少なくとも1つで表現される。
【0039】
第14の発明によれば、視覚,聴覚および触覚の少なくとも1つを通じて、ユーザに位置関係を認識させることができる。
【0040】
第15の発明は、第14の発明に従属する画像処理プログラムであって、位置関係情報出力手段は画像で表現された位置関係情報を仮想空間画像上に描画する。
【0041】
第15の発明では、視覚による直感的な位置関係の認識が可能になる。
【0042】
第16の発明は、第14の発明に従属する画像処理プログラムであって、コンピュータを、仮想カメラの位置をポインティングデバイスからの入力に基づいて制御する仮想カメラ位置制御手段としてさらに機能させる。
【0043】
第17の発明は、第15の発明に従属する画像処理プログラムであって、位置関係情報出力手段は画像で表現された位置関係情報がオブジェクトを指向するように制御する。
【0044】
第16さらに第17の発明によれば、あたかもポインティングデバイスで仮想空間内のオブジェクトを探索しているかのような感覚が得られる。
【0045】
第18の発明は、画像処理装置であって、オブジェクトが配置された仮想空間を仮想カメラから撮影した仮想空間画像を出力する画像出力手段、所定の基準位置とオブジェクトの配置位置との位置関係を示す位置関係情報を出力する位置関係情報出力手段、および位置関係情報を条件に応じて変化させる位置関係情報変化手段を備える。
【0046】
第19の発明は、画像処理方法であって、画像処理装置によって実行される画像処理方法であって、オブジェクトが配置された仮想空間を仮想カメラから撮影した仮想空間画像を出力する画像出力ステップ、所定の基準位置とオブジェクトの配置位置との位置関係を示す位置関係情報を出力する位置関係情報出力ステップ、および位置関係情報を条件に応じて変化させる位置関係情報変化ステップを含む。
【0047】
第20の発明は、画像処理システムであって、オブジェクトが配置された仮想空間を仮想カメラから撮影した仮想空間画像を出力する画像出力手段、所定の基準位置とオブジェクトの配置位置との位置関係を示す位置関係情報を出力する位置関係情報出力手段、および位置関係情報を条件に応じて変化させる位置関係情報変化手段を備える。
【0048】
第18〜第20の各発明によっても、第1の発明と同様に、位置関係情報の報知を基準位置の状況に応じて動的に行うことができて、自由度が高まる。
【発明の効果】
【0049】
この発明によれば、位置関係情報の報知を行うことができて、自由度が高い、画像処理プログラム、画像処理装置、画像処理方法および画像処理システムを実現できる。
【0050】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0051】
【図1】この発明のゲームシステムの一実施例を示す図解図である。
【図2】ゲームシステムの電気的な構成を示すブロック図である。
【図3】第1コントローラの外観を説明するための図解図であり、(A)は上面側を、(B)は下面側をそれぞれ示す。
【図4】第2コントローラの外観を説明するための図解図であり、(A)は上面側を、(B)は下面側をそれぞれ示す。
【図5】コントローラ(第1コントローラおよび第2コントローラを互いに接続したもの)の電気的な構成を示すブロック図である。
【図6】コントローラを用いて仮想ゲーム(ダウジングゲーム)をプレイするときの状態を概説するための図解図である。
【図7】マーカおよびコントローラの視野角を説明するための図解図である。
【図8】コントローラによる撮像画像の一例を示す図解図である。
【図9】ゲーム画面の一例(対象選択時)を示す図解図である。
【図10】ゲーム画面の他の一例(ダウジング時:検知範囲外)を示す図解図である。
【図11】ゲーム画面のその他の一例(ダウジング時:検知範囲内で距離が大)を示す図解図である。
【図12】ゲーム画面のさらにその他の一例(ダウジング時:検知範囲内で距離が小)を示す図解図である。
【図13】メインメモリのメモリマップの一部を示す図解図である。
【図14】ダウジング画像処理のためのパラメータおよび変数を示す図解図であり、(A)は仮想空間の表面の高さを規定するパラメータを、(B)は仮想カメラの位置(基準位置)を記述する変数をそれぞれ示す。
【図15】仮想カメラの高さに応じて変化する検知範囲を示す図解図である。
【図16】最優先対象の決定方法を示す図解図であり、(A)は検知の強さの計算方法を、(B)は計算結果に基づく最優先対象の決定方法をそれぞれ示す。
【図17】仮想カメラと対象との間の位置関係をポインタ画像で表現した例を示す図解図である。
【図18】検知範囲の分割例を示す図解図である。
【図19】位置関係の他の表現例(振動および探査音で表現した場合)を示す図解図である。
【図20】CPU動作の一部(ゲーム画像処理)を示すフロー図である。
【図21】ゲーム画像処理に含まれるダウジング画像処理を示すフロー図である。
【図22】ダウジング画像処理に含まれる最優先対象決定処理を示すフロー図である。
【発明を実施するための形態】
【0052】
図1を参照して、この発明の一実施例であるゲームシステム10は、ゲーム装置12およびコントローラ14を含む。図示は省略するが、この実施例のゲーム装置12は、最大4つのコントローラ14と通信可能に設計されている。また、ゲーム装置12と各コントローラ14とは、無線によって接続される。たとえば、無線通信は、MP(Multilink Protocol)またはBluetooth(登録商標)規格に従って実行されるが、赤外線や無線LANなど他の規格に従って実行されてもよい。さらには、有線で接続されてもよい。
【0053】
ゲーム装置12は、略直方体のハウジング16を含み、ハウジング16の前面にはディスクスロット18が設けられる。ディスクスロット18から、ゲームプログラム等を記憶した情報記憶媒体の一例である光ディスク24が挿入されて、ハウジング16内のディスクドライブ54(図2参照)に装着される。図示は省略するが、ディスクスロット18の周囲には、LEDと導光板とが配置され、様々な処理に応答させて、ディスクスロット18を点灯または点滅させることが可能である。
【0054】
また、ゲーム装置12のハウジング16の前面の上部には、電源ボタン20aおよびリセットボタン20bが設けられ、その下部には、イジェクトボタン20cが設けられる。さらに、リセットボタン20bとイジェクトボタン20cとの間であり、ディスクスロット18の近傍には、外部メモリカード用コネクタカバー22が設けられる。この外部メモリカード用コネクタカバー22の内側には、外部メモリカード用コネクタ62(図2参照)が設けられ、外部メモリカード38(以下、単に「メモリカード38」という。)が挿入される。メモリカード38は、光ディスク24から読み出したゲームプログラム等をローディングして一時的に記憶したり、このゲームシステム10を利用してプレイしたゲームのゲームデータ(ゲームの結果データまたは途中データ、あるいは後述するリプレイデータ)を保存(セーブ)しておいたりするために利用される。ただし、上記のゲームデータの保存は、メモリカード38に対して行うことに代えて、たとえばゲーム装置12の内部に設けられるフラッシュメモリ44(図2参照)のような内部メモリに対して行うようにしてもよい。また、メモリカード38は、内部メモリのバックアップメモリとして用いるようにしてもよい。さらに、ゲーム装置12では、ゲーム以外の他のアプリケーションを実行することも可能であり、かかる場合には、メモリカード38には当該他のアプリケーションのデータを保存することができる。
【0055】
なお、メモリカード38としては、汎用のSDカードを用いることができるが、メモリスティックやマルチメディアカード(登録商標)のような他の汎用のメモリカードを用いることもできる。メモリカード38は、ゲーム装置12と同様の構成を有する他のゲーム装置でも利用することができるので、ゲームデータをメモリカード38を介して他のプレイヤに提供することもできる。
【0056】
図1では省略するが、ゲーム装置12のハウジング16の後面には、AVコネクタ58(図2参照)が設けられ、そのAVコネクタ58を用いて、AVケーブル26を通してゲーム装置12にモニタ28およびスピーカ30を接続する。このモニタ28およびスピーカ30は典型的にはカラーテレビジョン受像機であり、AVケーブル26によって、ゲーム装置12からの映像信号がカラーテレビのビデオ入力端子に入力され、ゲーム装置12からの音声信号が音声入力端子に入力される。したがって、カラーテレビ(モニタ)28の画面上にたとえば3次元(3D)ビデオゲームの仮想3次元ゲーム画像が表示され、左右のスピーカ30からゲーム音楽や効果音などのステレオゲーム音声が出力される。また、モニタ28の周辺(この実施例では、モニタ28の上側)には、2つの赤外LED(マーカ)32Aおよび32Bを備えるマーカ部32が設けられる。このマーカ部32は、電源線32cを通してゲーム装置12に接続される。したがって、マーカ部32には、ゲーム装置12から電源が供給される。これによって、マーカ32Aおよび32Bは発光し、それぞれモニタ28の前方に向けて赤外光を出力する。
【0057】
なお、ゲーム装置12の電源は、一般的なACアダプタ(図示せず)によって与えられる。ACアダプタは家庭用の標準的な壁ソケットに差し込まれ、ゲーム装置12は、家庭用電源(商用電源)を、駆動に適した低いDC電圧信号に変換する。他の実施例では、電源としてバッテリが用いられてもよい。
【0058】
コントローラ14は、詳細は後述されるが、第1の操作ユニットおよび第2の操作ユニットとして、それぞれが片手で把持可能な第1コントローラ34および第2コントローラ36を含む。第2コントローラ36の後端から延びるケーブル36aの先端にはコネクタ36bが設けられており、当該コネクタ36bは、第1コントローラ34の後端面に設けられるコネクタ34a(図3、図5)に接続される。第2コントローラ36において取得される入力データは、ケーブル36aを介して第1コントローラ34に与えられる。第1コントローラ34は、第1コントローラ34自身の入力データと第2コントローラ36の入力データとを含むコントローラデータをゲーム装置12に送信する。
【0059】
このゲームシステム10において、ユーザまたはプレイヤがゲーム(またはゲームに限らず、他のアプリケーション)をプレイするために、ユーザは電源スイッチ20aによってまずゲーム装置12の電源をオンし、次いで、ユーザはビデオゲーム(もしくはプレイしたいと思う他のアプリケーション)のプログラムを記録している適宜の光ディスク24を選択し、その光ディスク24をゲーム装置12のディスクドライブ54にローディングする。応じて、ゲーム装置12がその光ディスク24に記録されているプログラムに基づいてビデオゲームもしくは他のアプリケーションを実行し始める。ユーザはゲーム装置12に入力を与えるためにコントローラ14を操作する。たとえば操作部82のどれかの操作ボタンを操作することによって、ゲームもしくは他のアプリケーションをスタートさせる。また、操作部82に対する操作以外にも、コントローラ14自体を動かすことによって、動画オブジェクト(プレイヤオブジェクト)を異なる方向に移動させ、または3Dのゲーム世界におけるユーザの視点(仮想カメラの位置)を変化させることができる。
【0060】
ただし、ビデオゲームや他のアプリケーションのプログラムは、ゲーム装置12の内部メモリ(フラッシュメモリ44(図2参照))に記憶(インストール)しておき、当該内部メモリから実行するようにしてもよい。かかる場合には、光ディスク24のような記憶媒体に記憶されたプログラムを内部メモリにインストールしてもよいし、ダウンロードされたプログラムを内部メモリにインストールしてもよい。
【0061】
図2は図1実施例のゲームシステム10の電気的な構成を示すブロック図である。図示は省略するが、ハウジング16内の各コンポーネントは、プリント基板に実装される。図2に示すように、ゲーム装置12には、CPU40が設けられ、ゲームプロセッサとして機能する。また、CPU40には、システムLSI42が接続される。このシステムLSI42には、外部メインメモリ46、ROM/RTC48、ディスクドライブ54およびAV IC56が接続される。
【0062】
外部メインメモリ46は、ゲームプログラム等のプログラムを記憶したり、各種データを記憶したりして、CPU40のワーク領域やバッファ領域として用いられる。ROM/RTC48は、いわゆるブートROMであり、ゲーム装置12の起動用のプログラムが組み込まれるとともに、時間をカウントする時計回路が設けられる。ディスクドライブ54は、光ディスク24からプログラムやテクスチャデータ等を読み出し、CPU40の制御の下で、後述する内部メインメモリ42eまたは外部メインメモリ46に書き込む。
【0063】
システムLSI42には、入出力プロセッサ42a、GPU(Graphics Processor Unit)42b,DSP(Digital Signal Processor)42c,VRAM42dおよび内部メインメモリ42eが設けられ、図示は省略するが、これらは内部バスによって互いに接続される。入出力プロセッサ(I/Oプロセッサ)42aは、データの送受信を実行したり、データのダウンロードを実行したりする。GPU42bは、描画手段の一部を形成し、CPU40からのグラフィクスコマンド(作画命令)を受け、そのコマンドに従ってゲーム画像データを生成する。ただし、CPU40は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU42bに与える。
【0064】
図示は省略するが、上述したように、GPU42bにはVRAM42dが接続される。GPU42bが作画命令を実行するにあたって必要なデータ(画像データ:ポリゴンデータやテクスチャデータなどのデータ)は、GPU42bがVRAM42dにアクセスして取得する。ただし、CPU40は、描画に必要な画像データを、GPU42bを介してVRAM42dに書き込む。GPU42bは、VRAM42dにアクセスして描画のためのゲーム画像データを作成する。
【0065】
なお、この実施例では、GPU42bがゲーム画像データを生成する場合について説明するが、ゲームアプリケーション以外の任意のアプリケーションを実行する場合には、GPU42bは当該任意のアプリケーションについての画像データを生成する。
【0066】
また、DSP42cは、オーディオプロセッサとして機能し、内部メインメモリ42eや外部メインメモリ46に記憶されるサウンドデータや音波形(音色)データを用いて、スピーカ30から出力する音、音声或いは音楽に対応するオーディオデータを生成する。
【0067】
上述のように生成されたゲーム画像データおよびオーディオデータは、AV IC56によって読み出され、AVコネクタ58を介してモニタ28およびスピーカ30に出力される。したがって、ゲーム画面がモニタ28に表示され、ゲームに必要な音(音楽)がスピーカ30から出力される。
【0068】
また、入出力プロセッサ42aには、フラッシュメモリ44、無線通信モジュール50および無線コントローラモジュール52が接続されるとともに、拡張コネクタ60およびメモリカード用コネクタ62が接続される。また、無線通信モジュール50にはアンテナ50aが接続され、無線コントローラモジュール52にはアンテナ52aが接続される。
【0069】
入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークに接続された他のゲーム装置やサーバ(いずれも図示せず)と通信することができる。入出力プロセッサ42aは、定期的にフラッシュメモリ44にアクセスし、ネットワークへ送信する必要があるデータ(「送信データ」とする)の有無を検出し、当該送信データが有る場合には、無線通信モジュール50およびアンテナ50aを介してネットワークに送信する。また、入出力プロセッサ42aは、他のゲーム装置から送信されるデータ(「受信データ」とする)を、アンテナ50aおよび無線通信モジュール50を介して受信し、当該受信データをフラッシュメモリ44に記憶する。ただし、受信データが一定の条件を満たさない場合には、当該受信データはそのまま破棄される。さらに、入出力プロセッサ42aは、ネットワークに接続されたサーバからダウンロードしたデータ(ダウンロードデータとする)をネットワーク、アンテナ50aおよび無線通信モジュール50を介して受信し、そのダウンロードデータをフラッシュメモリ44に記憶することもできる。
【0070】
また、入出力プロセッサ42aは、コントローラ14から送信される入力データをアンテナ52aおよび無線コントローラモジュール52を介して受信し、内部メインメモリ42eまたは外部メインメモリ46のバッファ領域に記憶(一時記憶)する。入力データは、CPU40の処理(たとえば、ゲーム処理)によって利用された後、バッファ領域から消去される。
【0071】
ただし、入出力プロセッサ42aは、無線通信モジュール50を介して、ネットワークを通すことなく直接的に、他のゲーム装置と通信することも可能である。
【0072】
さらに、入出力プロセッサ42aには、拡張コネクタ60およびメモリカード用コネクタ62が接続される。拡張コネクタ60は、USBやSCSIのようなインタフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、コントローラ14とは異なる他のコントローラのような周辺機器を接続したりすることができる。また、拡張コネクタ60に有線LANアダプタを接続し、無線通信モジュール50に代えて当該有線LANを利用することもできる。メモリカード用コネクタ62には、メモリカード38のような外部記憶媒体を接続することができる。したがって、たとえば、入出力プロセッサ42aは、拡張コネクタ60やメモリカード用コネクタ62を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0073】
詳細な説明は省略するが、図1にも示したように、ゲーム装置12(ハウジング16)には、電源ボタン20a,リセットボタン20bおよびイジェクトボタン20cが設けられる。電源ボタン20aは、システムLSI42に接続される。この電源ボタン20aがオンされると、システムLSI42には、ゲーム装置12の各コンポーネントに図示しないACアダプタを経て電源が供給され、通常の通電状態となるモード(「通常モード」と呼ぶこととする)が設定される。一方、電源ボタン20aがオフされると、システムLSI42には、ゲーム装置12の一部のコンポーネントのみに電源が供給され、消費電力を必要最低限に抑えるモード(以下、「スタンバイモード」という)が設定される。
【0074】
この実施例では、スタンバイモードが設定された場合には、システムLSI42は、入出力プロセッサ42a、フラッシュメモリ44、外部メインメモリ46、ROM/RTC48および無線通信モジュール50、無線コントローラモジュール52以外のコンポーネントに対して、電源供給を停止する指示を行う。したがって、この実施例では、スタンバイモードにおいて、CPU40がアプリケーションを実行することはない。
【0075】
リセットボタン20bもまた、システムLSI42に接続される。リセットボタン20bが押されると、システムLSI42は、ゲーム装置12の起動プログラムを再起動する。イジェクトボタン20cは、ディスクドライブ54に接続される。イジェクトボタン20cが押されると、ディスクドライブ54から光ディスク24が排出される。
【0076】
図3には第1コントローラ34の外観の一例が示される。図3(A)は、第1コントローラ34を上面後方から見た斜視図であり、図3(B)は、第1コントローラ34を下面前方から見た斜視図である。第1コントローラ34は、たとえばプラスチック成型によって形成されたハウジング80を有している。ハウジング80は、その前後方向(図3に示すZ軸方向)を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。一例として、ハウジング80は人間の掌とほぼ同じ長さまたは幅を持つ大きさをしている。プレイヤは、第1コントローラ34を用いて、それに設けられたボタンを押下することと、第1コントローラ34自体を動かしてその位置や向きを変えることとによって、ゲーム操作を行うことができる。
【0077】
ハウジング80には、複数の操作ボタン(操作キー)が設けられる。すなわち、ハウジング80の上面には、十字キー82a、1ボタン82b、2ボタン82c、Aボタン82d、−ボタン82e、メニューボタン82f、および+ボタン82gが設けられる。一方、ハウジング80の下面には凹部が形成されており、当該凹部の後方側傾斜面にはBボタン82hが設けられる。これら各ボタン(スイッチ)82a〜82hには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。また、ハウジング80の上面には、遠隔からゲーム装置12本体の電源をオン/オフするための電源スイッチ82iが設けられる。第1コントローラ34に設けられる各ボタン(スイッチ)は、包括的に参照符号82を用いて示されることもある。
【0078】
また、ハウジング80の後面には、上述のコネクタ34aが設けられている。コネクタ34aは、たとえば32ピンのエッジコネクタであり、第1コントローラ34に他の機器を接続するために利用される。この実施例では、コネクタ34aには第2コントローラ36のコネクタ36bが接続される。また、ハウジング80上面の後端側には複数のLED84が設けられ、この複数のLED84によって当該コントローラ14のコントローラ番号(コントローラの識別番号)が示される。ゲーム装置12には、たとえば最大4つのコントローラ14が接続可能であり、ゲーム装置12に複数のコントローラ14が接続される場合には、各コントローラ14には、たとえば接続順にコントローラ番号が付与される。各LED84はコントローラ番号と対応付けられており、当該コントローラ番号に対応するLED84が点灯される。
【0079】
また、第1コントローラ34のハウジング80内には加速度センサ86(図5)が設けられている。加速度センサ86としては、典型的には静電容量式の加速度センサが用いられ得る。加速度センサ86は、当該加速度センサの検出部に加わっている加速度のうち、センシング軸ごとの直線成分の加速度や重力加速度を検出する。具体的には、この実施例では、3軸加速度センサが適用され、第1コントローラ34の上下方向(図3に示すY軸方向)、左右方向(図3に示すX軸方向)および前後方向(図3に示すZ軸方向)の3軸方向のそれぞれで加速度を検知する。
【0080】
なお、加速度センサ86としては、ハウジング80の形状または第1コントローラ34の持たせ方の限定等に応じて、上下方向、左右方向および前後方向のうちいずれか2方向の加速度を検出する2軸加速度センサが用いられてもよい。場合によっては1軸加速度センサが用いられてもよい。
【0081】
さらに、コントローラ22は、撮像情報演算部88(図5参照)を有している。図3(B)に示すように、ハウジング80の先端面には撮像情報演算部88の光入射口90が設けられ、光入射口90からはセンサバー44のマーカ44m、44nの発する赤外線が取り込まれる。
【0082】
図4には第2コントローラ36の外観の一例が示される。図4(A)は、第2コントローラ36を上面後方から見た斜視図であり、図4(B)は、第2コントローラ36を下面前方から見た斜視図である。なお、図4では、第2コントローラ36のケーブル36aは省略されている。
【0083】
第2コントローラ36は、たとえばプラスチック成型によって形成されたハウジング92を有している。ハウジング92は、平面視では、前後方向(図4のZ軸方向)に略細長い楕円形状を有し、後端側の左右方向(図4のX軸方向)の幅が先端側のそれよりも狭くされている。また、ハウジング92は、側面視では、全体として湾曲した形状を有しており、先端側の水平部分から後端側に向かって下がるように湾曲している。ハウジング92は、第1コントローラ34と同様に、全体として大人や子供の片手で把持可能な大きさであるが、長手方向(Z軸方向)の長さは、第1コントローラ34のハウジング80よりもやや短くされている。この第2コントローラ36でも、プレイヤは、ボタンやスティックを操作することと、コントローラ自体を動かしてその位置や向きを変えることとによって、ゲーム操作を行うことができる。
【0084】
ハウジング92の上面の先端側には、アナログジョイスティック94aが設けられる。ハウジング92の先端には、後方にやや傾斜する先端面が設けられており、この先端面には、上下方向(図4に示すY軸方向)に並べて、Cボタン94bおよびZボタン94cが設けられる。アナログジョイスティック94aおよび各ボタン94b,94cには、ゲーム装置12が実行するゲームプログラムに応じてそれぞれ適宜な機能が割り当てられる。第2コントローラ36に設けられるアナログジョイスティック94aおよび各ボタン94b,94cは、包括的に参照符号94を用いて示されることもある。
【0085】
また、第2コントローラ36のハウジング92内には加速度センサ96(図5)が設けられている。この加速度センサ96としては、第1コントローラ34の加速度センサ86と同様の加速度センサが適用される。具体的には、この実施例では3軸加速度センサが適用され、第2コントローラ36の上下方向(図4に示すY軸方向)、左右方向(図4に示すX軸方向)および前後方向(図4に示すZ軸方向)の3軸方向のそれぞれで加速度を検知する。
【0086】
なお、図3に示した第1コントローラ34および図4に示した第2コントローラ36の形状や、ボタン(スイッチまたはスティック等)の形状、数および設置位置等は一例であり、他の形状、数および設置位置等に適宜変更され得る。
【0087】
また、コントローラ14の電源は、第1コントローラ34内に取替可能に収容されるバッテリ(図示せず)によって与えられる。第2コントローラ36には、コネクタ34a、コネクタ36bおよびケーブル36aを介してこの電源が供給される。
【0088】
図5には、第1コントローラ34と第2コントローラ36とが接続されたときのコントローラ14の電気的構成の一例が示される。第1コントローラ34は、その内部に通信部98を備え、通信部98には、操作部82、加速度センサ86、撮像情報演算部88およびコネクタ34aが接続される。操作部82は、上述の操作ボタンないし操作スイッチ82a‐82iを示す。操作部82が操作されると、その操作信号(キー情報)が通信部98に与えられる。加速度センサ86が検出した加速度を示すデータは、通信部98へ出力される。加速度センサ86は、たとえば最大200フレーム/秒程度のサンプリング周期を有する。
【0089】
撮像情報演算部88が取得したデータもまた通信部98に出力される。撮像情報演算部88は、赤外線フィルタ100、レンズ102、撮像素子104および画像処理回路106によって構成される。赤外線フィルタ100は、第1コントローラ34の前方の光入射口90から入射する光から赤外線のみを通過させる。上述したように、モニタ30の表示面近傍(周辺)に配置されるセンサバー44のマーカ44mおよび44nは、モニタ30の前方に向かって赤外光を出力する赤外LEDである。したがって、赤外線フィルタ100を設けることによってマーカ44mおよび44nの画像をより正確に撮像することができる。レンズ102は、赤外線フィルタ100を透過した赤外線を集光して撮像素子104へ出射する。撮像素子104は、たとえばCMOSセンサあるいはCCDのような固体撮像素子であり、レンズ102によって集光された赤外線を撮像する。したがって、撮像素子104は、赤外線フィルタ100を通過した赤外線だけを撮像して画像データを生成する。以下では、撮像素子104によって撮像された画像を撮像画像と呼ぶ。撮像素子104によって生成された画像データは、画像処理回路106で処理される。画像処理回路106は、撮像画像内における撮像対象(マーカ44mおよび44n)の位置を算出し、所定時間(たとえば1フレーム)毎に、当該位置を示す各座標値を含むマーカ座標データを通信部98に出力する。なお、画像処理回路106における処理については後述する。
【0090】
コネクタ34aには、第2コントローラ36から延びるケーブル36aのコネクタ36bが接続される。コネクタ36bには、第2コントローラ36の操作部94および加速度センサ96が接続される。操作部94は、上述のアナログジョイスティック94aおよび操作ボタン94b、94cを示す。操作部94が操作されると、その操作信号がケーブル36a、コネクタ36bおよびコネクタ34a等を介して通信部98に与えられる。また、加速度センサ96も、加速度センサ86と同様のサンプリング周期を有しており、検出された加速度を示すデータを通信部98に与える。
【0091】
通信部98は、マイクロコンピュータ(マイコン)108、メモリ110、無線モジュール78およびアンテナ112を含む。マイコン108は、処理の際にメモリ110を記憶領域(作業領域やバッファ領域)として用いながら、無線モジュール78を制御して、取得したデータをゲーム装置12に送信したりゲーム装置12からのデータを受信したりする。
【0092】
第1コントローラ34の操作部82、加速度センサ86および撮像情報演算部88ならびに第2コントローラ36の操作部94および加速度センサ96からマイコン108へ出力されたデータは、一時的にメモリ110に格納される。通信部98からゲーム装置12のBluetooth通信ユニット76への無線送信は所定の周期毎に行われる。なお、ゲームの処理は1/60秒を単位として行われることが一般的であるので、第1コントローラ34からの送信はそれと同等かそれより短い周期で行うことが必要となる。マイコン108は、ゲーム装置12への送信タイミングが到来すると、メモリ110に格納されている操作部82および94の操作データ、加速度センサ86および96の加速度データならびに撮像情報演算部88のマーカ座標データを含むデータを、コントローラデータとして無線モジュール78へ出力する。無線モジュール78は、Bluetoothのような近距離無線通信技術を用いて、所定周波数の搬送波をコントローラデータで変調し、その微弱電波信号をアンテナ112から放射する。つまり、コントローラデータは、無線モジュール78で微弱電波信号に変調されて第1コントローラ34から送信される。微弱電波信号はゲーム装置12側のBluetooth通信ユニット76で受信される。受信された微弱電波信号について復調や復号を行うことによって、ゲーム装置12はコントローラデータを取得することができる。ゲーム装置12のCPU46は、コントローラ14から取得したコントローラデータに基づいてゲーム処理を行う。
【0093】
なお、加速度センサ86および96から出力される加速度の信号に基づいて、ゲーム装置12のプロセッサ(例えばCPU46)またはコントローラ14のプロセッサ(例えばマイコン108)などのコンピュータが処理を行うことによって、コントローラ14に関するさらなる情報を推測または算出(判定)することができることは、当業者であれば本明細書の説明から容易に理解できるであろう。例えば、加速度センサ86および96を搭載する第1コントローラ34および第2コントローラ36が静的な状態であることを前提としてコンピュータ側で処理する場合(すなわち、加速度センサ86および96によって検出される加速度が重力加速度のみであるとして処理する場合)、第1コントローラ34および第2コントローラ36が現実に静的な状態であれば、検出された加速度に基づいて第1コントローラ34および第2コントローラ36の姿勢が重力方向に対して傾いているか否か又はどの程度傾いているかをそれぞれ知ることができる。具体的には、加速度センサ86および96の検出軸が鉛直下方向を向いている状態を基準としたとき、1G(重力加速度)がかかっているか否かだけで、第1コントローラ34および第2コントローラ36がそれぞれ傾いているか否かを知ることができるし、その大きさによってどの程度傾いているかも知ることができる。また、多軸加速度センサが適用される場合には、さらに各軸の加速度の信号に対して処理を施すことによって、第1コントローラ34および第2コントローラ36がそれぞれ重力方向に対してどの程度傾いているかをより詳細に知ることができる。この場合において、加速度センサ86および96からの出力に基づいて、コンピュータが第1コントローラ34および第2コントローラ36の傾き角度のデータを算出する処理を行ってもよいが、当該傾き角度のデータを算出する処理を行うことなく、加速度センサ86および96からの出力に基づいて、おおよその傾き具合を推定するような処理としてもよい。このように、加速度センサ86および96をコンピュータと組み合わせて用いることによって、第1コントローラ34および第2コントローラ36の傾き、姿勢または位置を判定することができる。
【0094】
一方、加速度センサ86および96が動的な状態であることを前提とする場合には、重力加速度成分に加えて加速度センサ86および96の動きに応じた加速度を検出するので、重力加速度成分を所定の処理により除去すれば、動き方向などを知ることができる。具体的には、加速度センサ86および96を備える第1コントローラ34および第2コントローラ36がユーザの手で動的に加速されて動かされる場合に、加速度センサ86および96によって生成される加速度信号を上記コンピュータによって処理することによって、第1コントローラ34および第2コントローラ36のさまざまな動きおよび/または位置を算出することができる。なお、加速度センサ86および96が動的な状態であることを前提とする場合であっても、加速度センサ86および96の動きに応じた加速度を所定の処理により除去すれば、重力方向に対する傾きを知ることが可能である。他の実施例では、加速度センサ86および96は、信号をマイコン108に出力する前に内蔵の加速度検出手段から出力される加速度信号に対して所望の処理を行うための、組込み式の信号処理装置または他の種類の専用の処理装置を備えていてもよい。例えば、組込み式または専用の処理装置は、加速度センサ86および96が静的な加速度(例えば、重力加速度)を検出するためのものである場合、検知された加速度信号をそれに相当する傾斜角(あるいは、他の好ましいパラメータ)に変換するものであってもよい。
【0095】
このゲームシステム10では、ユーザがコントローラ14を動かすことによってゲームに対する操作または入力を行うことができる。ゲームをプレイする際には、たとえば図6に示すように、ユーザは、その右手で第1コントローラ34を持ち、その左手で第2コントローラ36を持つ。上述のように、この実施例では、第1コントローラ34には3軸方向の加速度を検出する加速度センサ86が内蔵され、第2コントローラ36にも同様の加速度センサ96が内蔵されている。第1コントローラ34および第2コントローラ36がそれぞれユーザによって動かされると、加速度センサ86および加速度センサ96によって、それぞれのコントローラ自身の動きを示す加速度値が検出される。ゲーム装置12では、当該検出された加速度値に応じてゲーム処理が実行され得る。
【0096】
また、第1コントローラ34には撮像情報演算部88が設けられるので、ユーザは第1コントローラ34をポインティングデバイスとして使用して操作を行うことができる。この場合、ユーザは、第1コントローラ34の先端面(光入射口90)がマーカ44mおよび44nの方を向く状態で第1コントローラ34を把持する。ただし、図1から分かるように、マーカ44mおよび44nは、モニタ30の画面の所定の1辺(上辺または下辺)の近傍に、当該所定の1辺に対して平行に配置されている。この状態で、ユーザは、第1コントローラ34自体を動かして、第1コントローラ34が指示する画面上の位置を変更したり、第1コントローラ34と各マーカ44mおよび44nとの距離を変更したりすることによって、ゲーム操作を行うことができる。
【0097】
図7は、マーカ44mおよび44nと第1コントローラ34の視野角を説明するための図である。図7に示すように、マーカ44mおよび44nは、それぞれ、視野角αの範囲で赤外光を放射する。また、撮像情報演算部88の撮像素子104は、第1コントローラ34の視線方向(図3に示すZ軸方向)を中心とした視野角βの範囲で入射する光を受光することができる。たとえば、マーカ44mおよび44nの視野角αは、共に34°(半値角)であり、一方、撮像素子104の視野角βは42°である。ユーザは、撮像素子104が2つのマーカ44mおよび44nからの赤外光を受光することが可能な位置および向きとなるように、第1コントローラ34を把持する。具体的には、撮像素子104の視野角βの中に少なくとも一方のマーカ44mまたは44nが存在し、かつ、マーカ44mおよび44nの少なくとも一方の視野角αの中に第1コントローラ34が存在する状態となるように、ユーザは第1コントローラ34を把持する。この状態にあるとき、第1コントローラ34は、マーカ44mおよび44nの少なくとも一方を検知することができる。ユーザは、この状態を満たす範囲で第1コントローラ34の位置および向きを変化させることによってゲーム操作を行うことができる。なお、マーカ44mおよび44nのいずれか一方のみが検出される場合には、たとえば、直前の2つのマーカ44mおよび44nを検出したデータを利用して、検出されない他方のマーカの代わりに仮のマーカ座標を設定することによって、第1コントローラ34の指示位置を算出することができる。
【0098】
なお、第1コントローラ34の位置および向きがこの範囲外となった場合、第1コントローラ34の位置および向きに基づいたゲーム操作を行うことができなくなる。したがって、上記範囲は「操作可能範囲」と呼ばれる。
【0099】
操作可能範囲内で第1コントローラ34が把持される場合、撮像情報演算部88によってマーカ44mおよび44nの画像が撮像される。すなわち、撮像素子104によって得られる撮像画像には、撮像対象であるマーカ44mおよび44nの画像(対象画像)が含まれる。図8は、対象画像を含む撮像画像の一例を示す図である。対象画像44m’および44n’を含む撮像画像の画像データを用いて、画像処理回路106は、各マーカ44mおよび44nの撮像画像における位置を表す座標(マーカ座標)を算出する。
【0100】
撮像画像の画像データにおいて対象画像44m’および44n’は高輝度部分として現れるため、画像処理回路106は、まず、この高輝度部分を対象画像の候補として検出する。次に、画像処理回路106は、検出された高輝度部分の大きさに基づいて、その高輝度部分が対象画像であるか否かを判定する。撮像画像には、2つの対象画像(マーカ画像)44m’および44n’だけではなく、窓からの太陽光や部屋の蛍光灯の光等のような他の画像が含まれていることがある。高輝度部分が対象画像であるか否かの判定処理は、マーカ44mおよび44nの画像44m’および44n’と、それ以外の画像とを区別し、対象画像を正確に検出するために実行される。撮像画像における対象画像44m’および44n’と他の画像との区別のために、撮像対象44mおよび44nは既知のものである必要があり、この実施例ではその大きさが予め決められるので、マーカ画像44m’および44n’の大きさを予測することができる。したがって、高輝度部分の大きさに基づいて、マーカ画像44m’および44n’の判定を行うことができる。具体的には、当該判定処理においては、検出された高輝度部分が、予め定められた所定範囲内の大きさであるか否かが判定される。そして、高輝度部分が所定範囲内の大きさである場合には、当該高輝度部分は対象画像を表すと判定される。逆に、高輝度部分が所定範囲内の大きさでない場合には、当該高輝度部分は対象画像以外の画像を表すと判定される。
【0101】
さらに、上記の判定処理の結果、対象画像を表すと判定された高輝度部分について、画像処理回路106は当該高輝度部分の位置を算出する。具体的には、当該高輝度部分の重心位置を算出する。ここでは、当該重心位置の座標をマーカ座標と呼ぶ。また、重心位置は撮像素子104の解像度よりも詳細なスケールで算出することが可能である。ここでは、撮像素子104によって撮像された撮像画像の解像度が126×96であるとし、重心位置は1024×768のスケールで算出されるものとする。つまり、マーカ座標は、(0,0)から(1024,768)までの整数値で表現される。
【0102】
なお、図8に示すように、撮像画像における位置は、撮像画像の左上を原点Oとし、下向きをY軸正方向とし、右向きをX軸正方向とする座標系(撮像画像のXY座標系)で表現されるものとする。
【0103】
また、対象画像44m’および44n’が正しく検出される場合には、判定処理によって2つの高輝度部分が対象画像として判定されるので、2箇所のマーカ座標が算出される。画像処理回路106は、算出された2箇所のマーカ座標を示すデータ、つまり、撮像対象の位置を示す撮像対象データを通信部98に出力する。出力された撮像対象データ(マーカ座標データ)は、上述したように、マイコン108によってコントローラデータに含められて、ゲーム装置12に送信される。
【0104】
ゲーム装置12(CPU46)は、受信したコントローラデータからマーカ座標データを取得すると、このマーカ座標データに基づいて、モニタ30の画面上における第1コントローラ34の指示位置(指示座標)と、第1コントローラ34からマーカ44mおよび44nまでの各距離とを算出することができる。なお、たとえば、第1コントローラ34がモニタ30の画面の左端を指示するとき、対象画像44m’および44n’は撮像画像の右側に検出され、第1コントローラ34が画面の下端を指示するとき、対象画像44m’および44n’は撮像画像の上側に検出され、つまり、画面上の第1コントローラ34の指示位置と逆側に撮像画像上のマーカ座標が検出される。したがって、第1コントローラ34の指示位置の座標をマーカ座標から算出する際には、座標系が図8の撮像画像の座標系から画面上の位置を表すための座標系に適宜に変換される。
【0105】
なお、この実施例では、第1コントローラ34で撮像データに所定の演算処理を行ってマーカ座標を検出して、そのマーカ座標データをゲーム装置12に送信するようにしている。しかし、他の実施例では、撮像データをコントローラデータとして第1コントローラ34からゲーム装置12に送信し、ゲーム装置12のCPU46が撮像データに所定の演算処理を行って、マーカ座標および指示位置の座標を検出するようにしてもよい。
【0106】
また、撮像画像における対象画像間の距離は、第1コントローラ34と、マーカ44mおよび44nとの距離に応じて変化する。マーカ44mおよび44n間の距離、撮像画像の幅、撮像素子104の視野角βが予め決まっているので、2つのマーカ座標間の距離を算出することによって、ゲーム装置12は第1コントローラ34とマーカ44mおよび44nとの間の現在の距離を算出することができる。
【0107】
なお、ゲームの操作の仕方は他の態様であってもよく、第1コントローラ34のみを使ってゲームをするようにしてもよい。例えば、第1コントローラ34を横向きに両手で持って操作するようなゲームであってもよい。
【0108】
以上のように構成されたゲームシステム10で、この実施例の「ダウジングゲーム」をプレイするとき、モニタ28には、たとえば図9〜図12に示すようなゲーム画面が表示される。図9のゲーム画面は、仮想空間ISに配置されたオブジェクト(Ob1,Ob2,…:1つ1つを区別する必要がない場合には単に“Ob”と記す場合もある)のうちダウジングによる探索の対象となるオブジェクト(以下“対象オブジェクト”または単に“対象”)Obiを選択する画面であり、図10〜図12のゲーム画面は、対象オブジェクトObiをダウジングによって探索している画面である。
【0109】
最初、概要を説明する。図9〜図12に共通して、ゲーム画面には、オブジェクトOb1,Ob2,…が配置された仮想空間ISを仮想カメラ(IC:図14(A)等を参照)から撮影した仮想空間画像が描画されている。仮想カメラICは、ダウジングによる探索を行うプレイヤキャラクタの視点(主観視点)に相当する。このため、プレイヤキャラクタ自身の画像は、ゲーム画面には表示されない。
【0110】
一般に、ダウジングとは、地下水や鉱脈といった地下の埋蔵物を、簡単な器具たとえば棒や振り子などの動きによって見つける手法をいう。
【0111】
このダウジングゲームでは、プレイヤキャラクタが剣Swを用いてダウジングを行い、オブジェクトObiを探索する。ゲーム画面には、剣Swと、剣Swによるダウジングの結果(強さおよび方向)を示すポインタPntとが表示される。ダウジングの強さおよび方向は、剣Swを持つプレイヤキャラクタつまり仮想カメラICとオブジェクトObiとの位置関係に応じて変化する。ポインタPntは、仮想カメラICとオブジェクトObiとの間の位置関係を、たとえば図17に示すような色および棘サイズの変化によって、視覚的に表現する。
【0112】
すなわち、この実施例の主要な特徴の1つは、仮想カメラICとオブジェクトObiとの間の位置関係に応じて態様ここでは色および棘サイズが変化するようなポインタPntの画像を生成して、そのポインタ画像をゲーム画像上に描画する、ダウジング画像処理(図21参照)にある。
【0113】
なお、オブジェクト(Ob1,Ob2,…)については、説明の便宜上、対象オブジェクトObiが図11および図12に点線で示されているが、地中に隠れたものを探すのがダウジングの目的なので、実際のゲーム画面では表示されない。
【0114】
ポインタPntは、剣Swを持つプレイヤキャラクタつまり仮想カメラICと対象オブジェクトObiとの位置関係に応じて、図10〜図12のように変化する。図10には、仮想カメラICがオブジェクトObiから距離的/角度的に遠い場合が示されており、この状態でポインタPntは単なる白い円である。
【0115】
ここで、“距離的に遠い”オブジェクトとは、たとえばたとえば図16(A)に示されたオブジェクトOb4のように、仮想カメラIC(視点)からの距離(d4)が閾値(dmax)よりも大きいオブジェクトをいい、“角度的に遠い”オブジェクトとは、オブジェクトOb5のように、仮想カメラICの光軸(視線)に対する角度(θ5)が閾値(θmax)よりも大きいオブジェクトをいう。
【0116】
その後、図11,図12に示されるように、仮想カメラICと対象オブジェクトObiとの間の位置関係が所定範囲内(di≦dmaxかつθi≦θmax)に入ると、ポインタPntには薄い青の着色および小さな棘が生じ、そして両者が距離的に接近して行くにつれて、青色の濃さが増しかつ棘のサイズが大きくなっていく。
【0117】
つまり、このダウジングゲームでは、剣Swは、仮想カメラICと対象オブジェクトObiとの間の位置関係が所定範囲内に入ったとき、当該対象オブジェクトObiを検知して、ポインタPntの態様を単なる白い円から棘付きの青い円へと変化させ、さらに、所定範囲内では位置関係に応じて青色の濃さおよび棘のサイズを変化させる、ダウジング能力を備えている。
【0118】
したがって、プレイヤは、このようなポインタPntの変化を見ながら、プレイヤキャラクタつまり仮想カメラICの位置を移動させたり、視線の向きつまり光軸方向を変えたりすることで、オブジェクトObiの凡その位置を推定することが可能になる。
【0119】
以下では、このような所定範囲、つまり剣Swによるダウジングで対象オブジェクトObiが検知される範囲(di≦dmax,θi≦θmax)を、“検知範囲DA”と呼ぶ(図16参照)。
【0120】
そして、この実施例の主要な特徴の他の1つは、検知範囲DAを、図14(A)および図15に示されるように、視点つまり仮想カメラICの高さH(=H1,H2,…)に応じて変化させる(設定する)点にある。
【0121】
次に、こうした特徴を中心に、詳細を説明する。仮想空間ISの地面は、図10に示されるように、平地LG、崖Clおよび谷Vlなどで構成され、平地LGの上には台Bsが設置されている。仮想カメラICつまりプレイヤキャラクタは、このような起伏のある地面さらには台Bsの上(以下“表面”)を移動しながら、地面に埋められた金貨などのオブジェクト(Ob1,Ob2,…)を剣Swでダウジングする。このとき、視点つまり仮想カメラICの高さは、たとえば図14(A)に示すように定義された表面Sfに沿って変化する。
【0122】
図14(A)を参照して、この表面Sfは、基準面RLとその上に配置されるタグTg1,Tg2,…によって、図10に示した仮想空間ISの表面を概略表現したものである。基準面RLは、たとえば平原LGに対応し、この高さを“0”とする。各タグTg1,Tg2,…には、中心,半径および高さが記述される。したがって、各タグTg1,Tg2,…は、崖Cl,谷Vlにそれぞれ対応する円形の領域A1,A2,…とその高さH1,H2,…を表現している。なお、表面Sfをこのように表現した情報が、図13に表面高さ情報78として示されている。
【0123】
一方、仮想カメラIC(プレイヤキャラクタ)の位置および光軸方向(視線の向き)は、コントローラ14(第1コントローラ34および第2コントローラ36)の操作に応じて制御される。ゲーム画面には、第1および第2コントローラのアイコン(34および36)ならびにそれぞれの機能を示すアイコンIc1およびIc2と、第2コントローラ34の“−”ボタンに設定された機能を示すアイコンShとが、仮想空間画像(IS)上に半透明表示される。
【0124】
アイコンIc1は、第1コントローラ34の向きに応じて仮想カメラICの光軸方向が変化することを示す。アイコンIc2は、第2コントローラ34の操作によって仮想カメラICの位置が変化することを示す。コントローラ34の“−”ボタンに関連付けられたアイコンShは、剣Swに特定種類のオブジェクトを検知するダウジング能力が与えられたことを示す。なお、このような第1コントローラ34および第2コントローラ36の間の機能分担は一例であり、適宜変更される。
【0125】
剣Swに与えるべきダウジング能力(検知可能なオブジェクトの種類)は、図9のゲーム画面を通じて任意に選択することができる。このゲーム画面では、金貨やアイテムといった各種のオブジェクトをそれぞれ示す8個のアイコンShが提示されており、プレイヤがそのうち1つ(たとえば金貨を示すアイコンSh)を選択すると、図10〜図12に示すように、その選択されたアイコンShがコントローラ34の“−”ボタンに関連付けられる。
【0126】
こうして、剣Swに金貨を検知するダウジング能力が与えられる。以降、プレイヤは、金貨を探したいとき“−”ボタンを押すことで、剣Swによるダウジングを行うことができる。なお、このようなボタン操作は一例であり、適宜変更される。
【0127】
ダウジング中、仮想カメラICは、図14(A)に示した表面Sfに沿って任意の方向に移動する。仮想カメラICの高さH(図14(B)参照)は、領域A0〜A2の間の境界を跨ぐタイミングで変化し、検知範囲DAは、現時点での仮想カメラICの高さHに応じて、たとえば図15に示すように変化する。
【0128】
すなわち、仮想カメラICが領域A0内に位置する(プレイヤキャラクタが平原LG上にいる)場合には、仮想カメラICの高さHは“0”であり、基準の検知範囲DAとして“normal”が用いられる。この後、仮想カメラICが領域A1内に入る(プレイヤキャラクタが崖Clに登る)と、仮想カメラICの高さHが“0”から“H1”に変化(増加)し、検知範囲DAは“nomal”から“long&wide”に拡大する。一方、仮想カメラICが領域A2内に入る(プレイヤキャラクタが谷Vlに降りる)と、仮想カメラICの高さHが“0”から“H2”に変化(減少)し、検知範囲DAは“nomal”から“short&narrow”に縮小する。このように、仮想カメラの高さが高いときには、周囲をよく見通せるので、検知範囲を大きく設定し、仮想カメラの高さが低いときには、見通しが悪いので、検知範囲を小さく設定するといったことが可能になり、リアリティのある探索をプレイヤに提供することができる。
【0129】
なお、検知範囲DAの初期値(これを“基本検知範囲”と呼ぶ)は、この実施例では“normal”であるが、変形例では、検知対象の属性に応じて“long&wide”や“short&narrow”に設定してもよい。たとえば、検知対象が“動物”のように動くオブジェクトの場合、検知が難しいので、“long&wide”を初期値とすることで、対象を検知し易くしてゲームの難易度を適切に設定することができる。また、検知対象が“ダイヤモンド”のように希少なオブジェクトの場合、“short&narrow”を初期値とすることで、対象を検知し難くすることにより、探索できたときの達成感をプレイヤに与えることができる。代表的な属性としては、動き,希少性のほかに、大きさも挙げられる。例えば、大きい対象物ほど見つけやすいので、検知範囲を大きく設定する。このような属性に基づく検知範囲DAの制御は、典型的には初期設定時に実行されるが、これ限らず、ダウジング中に適宜実行してもよい。
【0130】
また、検知範囲DAの変化は、この実施例では距離dおよび角度θの両方に及ぶが、どちらか一方だけを変化させてもよい。さらには、距離dおよび角度θの両方を変化させるか、距離dだけを変化させるか、あるいは角度θだけを変化させるかを、検知対象の属性に基づいて決定してもよい。
【0131】
検知範囲DA内に検知対象が複数存在する場合には、そのうち1つが、たとえば図16に示す手順に従って「最優先対象」に決定される。ここで最優先対象とは、ダウジングによる検知の強さが最大となる対象であり、剣Swは、最優先対象に反応する。したがって、ポインタPntは、仮想カメラICと最優先対象との間の位置関係を視覚的に示す位置関係情報である。
【0132】
検知の強さは、仮想カメラICと各対象との間の位置関係つまり距離dおよび角度θに基づいて計算される。計算にあたっては、角度θよりも距離dが優先される。検知範囲DA内の複数の対象のうち最優先対象がどれであるかは、当該対象間で、まず距離dについて大小を比較し、同一距離のものが存在する場合には、さらに角度θについて比較を行うことで、基本的には決定できる。ただし、2つの検知対象が光軸に対して線対称な位置にあるとき、例外的に同一距離かつ同一角度となるが、このような場合には、任意に一方を選択すればよい。
【0133】
たとえば、図16(A)に示されるように、仮想カメラICの光軸(視線)の周辺に5個の検知対象(オブジェクトOb1〜Ob5)が配置されている場合、まず、検知範囲DAの外部に位置するオブジェクトOb4,Ob5が候補から除外される(d4>dmax,θ5>θmax)。検知範囲DA内のオブジェクトOb1〜Ob3の間では、距離dの小さいオブジェクトOb1,Ob2が優先され(d1=d2<d3)、そして、同一距離であるオブジェクトOb1,Ob2の間では、角度θの小さいオブジェクトOb2が優先される(θ2<θ1)。
【0134】
したがって、オブジェクトOb2の検知の強さが最大なので、図16(B)に示すように、最優先対象はオブジェクトOb2に決定される。この決定結果は、ポインタPntを制御するための変数(対象Obi,距離di,角度θi)に反映される(Obi←Ob2,di←d2,θi←θ2)。
【0135】
ポインタPntの態様は、仮想カメラICと検知対象(Obi)との間の位置関係つまり距離diおよび/または角度θiに基づいて制御される。この実施例では、ポインタPntの色および棘サイズが、主として距離diに基づいて、たとえば図17に示すように制御される。色および棘サイズは、角度θiには依存しない(ただしθi≦θmaxの場合)。
【0136】
di>dmaxつまり仮想カメラICと対象オブジェクトObiが遠く離れている場合、ポインタPntは“白&棘なし”の状態に固定される。なお、θi>θmaxの場合にも、ポインタPntは“白&棘なし”の状態に固定される。
【0137】
両者が接近してdi=dmaxとなると、それまで単なる白い円であったポインタPntは、薄い青色に変色し、小さな棘が生じる。di<dmaxの範囲では、距離diが小さくなるにつれて青色の濃さが増し、棘サイズも大きくなる。そして、このような変化は、連続的であっても、段階的であってもよい。
【0138】
ポインタPntの態様(色および棘サイズ)を段階的に変化させる場合、検知範囲DAは、たとえば図18に示すように、距離diに沿って複数の領域(ここでは3つの区間0<di≦20,20<di≦50,50<di≦100にそれぞれ対応する3つの領域B1,B2,B3)に区切られる。
【0139】
なお、ここで示した区間数(3)や境界値(20,50,100)は一例であり、ゲームの場面やオブジェクトObiの属性などに応じて適宜変更されてよい。また、境界値は、検知範囲DAの広さが図15に示したようにshort&narrow,normalおよびlong&wideの間で変化するのに応じて、たとえば(10,25,50),(20,50,100)および(200,500,1000)の間で変化する。この変化率0.5:1:10もまた一例に過ぎず、適宜変更されてよい。また、検知範囲DAの広さによって区間数を変えてもよい。さらには、検知範囲DAを距離diおよび角度θiの双方に沿って2次元的に(メッシュ状に)区分してもよい。
【0140】
こうして、まず、検知範囲DAの内部(di≦dmaxかつθi≦θmax)と外部(di>dmaxまたはθi>θmax)とでポインタPntの色および棘の有無を異ならせ(“白&棘なし”と“色付&棘あり”)、さらに、検知範囲DAの内部においては、距離diに応じて色の濃さおよび棘サイズを連続的または段階的に変化させることで、プレイヤキャラクタつまり仮想カメラICと対象オブジェクトObiとの間の位置関係を視覚的に提示することができる。
【0141】
なお、位置関係は、ポインタPntを通じて視覚的に提示されるだけでなく、たとえば図19に示すように、コントローラ14本体の振動やスピーカ30からの探査音を通じて、触覚的および/または聴覚的に提示されてもよい。具体的には、検知範囲DAの外部では、振動は最弱に、探索音は遅い周期音「ピ・・・ピ・・・」に固定される。
【0142】
検知範囲DAの外部から内部に入ったとき、振動は最弱から弱,中または強に、探索音は遅い周期音「ピ・・・ピ・・・」からゆっくりした周期音「ピ・ピ・ピ・」,中位の周期音「ピッピッピッ」または速い周期音「ピピピピピ」に変化する。振動および探索音がどの程度の強さおよび速さに変化するかは、検知範囲DA内に入った時点の距離diによる。たとえば、角度θiがθmaxを跨いで減少したとき、di=50であれば、振動は最弱から中に、探索音は遅い周期音「ピ・・・ピ・・・」から中位の周期音「ピッピッピッ」に変化する。なお、上では説明を省略したが、このときポインタPntに生じる変化は、“白&棘なし”から“中位の青かつ中位の棘”への変化である。
【0143】
検知範囲DA内では、距離diが小さくなるにつれて、振動の強さ(振幅および/または周期)は弱→中→大のように増大し、探索音の周期は「ピ・ピ・ピ・」→「ピッピッピッ」→「ピピピピピ」のように速くなる。検知範囲DAの内部から外部に出たときや、検知範囲DA内で距離diが大きくなる場合には、これらとは逆向きの変化が生じる。
【0144】
なお、探索音の周期を変化させるのに代えて、またはこれに加えて、LED84の発光周期を変化させることも可能である。
【0145】
以上のような画像処理は、CPU40がシステムLSI42と協働して、メインメモリ42eおよび/または46に記憶された図13に示すようなプログラムおよび情報(各種のパラメータ,変数,入出力データ)に基づいて、図20〜図22に示すようなフローを実行することにより実現される。
【0146】
メインメモリ42eおよび/または46には、図13に示すように、プログラム領域70,パラメータ領域76,変数領域82,入力領域92および出力領域94が形成され、プログラム領域70には、ゲームプログラム72および入出力制御プログラム74などが格納される。
【0147】
ゲームプログラム72は、CPU40を介してゲーム装置12のハードウェア全体(図2参照)を制御することによりダウジングゲームを実現するメインのソフトウェアである。ゲームプログラム72には、図20〜図22のフローチャートに対応する画像処理プログラム72aがサブのソフトウェアとして含まれている。画像処理プログラム72aは、ゲームプログラム72の制御下で入出力制御プログラム74と協働して、上述したような画像処理を実現する。
【0148】
入出力制御プログラム74は、主として入出力プロセッサ42aを介して、(後述する出力領域94を経て)VRAM42dに描画されたゲーム画像のモニタ28への出力や、コントローラ14から(後述する入力領域92へ)のコントロールデータの入力を制御する。図示は省略するが、この入出力制御プログラム74による処理は、図20〜図22の画像処理と同時並列に実行されている。
【0149】
パラメータ領域76には、表面高さ情報78およびオブジェクト情報80が記憶される。表面高さ情報78は、仮想空間ISの表面(Sf:図14(A)参照)の高さを、基準面RL(高さ0)の上に配置されるタグTg1,Tg2,…を用いて表現した情報である。タグTg1には中心,半径および高さを示す情報が記述され、タグTg2にも同様の情報が記述される。このようなタグTg1,Tg2で定義される円形の領域A1およびA2は、図10の仮想空間ISでは崖Clおよび谷Vlに対応する。領域A0は、基準面RLから領域A1,A2,…を除いた残りの領域であり、図10の仮想空間ISでは平地LGに対応する。
【0150】
なお、タグによって定義される領域は、楕円形,多角形といった円形以外の形状でもよいし、異なる形状を示す複数のタグを組み合わせれば、より複雑な凹凸を有する表面Sfを表現することもできる。また、表面高さ情報78は、タグによらず、ポリゴンやテクスチャなどの画像データに付加されてもよい。
【0151】
オブジェクト情報80は、仮想空間IS内に配置される各オブジェクト(Ob1,Ob2,…)について、位置(P1,P2,…)および種類(金貨,アイテム,動物など)と、探索の対象であるか否かを示す対象フラグとを記述した情報である。対象フラグは、初期状態では全てOFFであり、図9に示した選択画面による操作に応じて、種類毎にON/OFFが切り替えられる。たとえば、仮想空間IS内に3枚の金貨(Ob1〜Ob3)が隠されている場合、選択画面で金貨が選択されると、金貨に該当するオブジェクトOb1〜Ob3それぞれの対象フラグがOFFからONに切り替わる。なお、検知対象の属性に応じて基本検知範囲を設定する場合には(図21のステップS20参照)、オブジェクトOb1,Ob2,…それぞれの属性(たとえば動く/動かない)も記述される。
【0152】
変数領域82には、基準位置情報84、検知範囲情報86、対象情報88および位置関係情報90が記憶される。基準位置情報84は、図14(B)に示したような、現時点での仮想カメラICの位置(P)および高さ(H)を示す情報である。仮想カメラICは、図14(A)に示したように、仮想空間ISの表面Sf(図14参照)に沿って移動するので、高さHは、位置Pが領域A0,A1,A2,…のどれに属するかに応じて、高さ0,H1,H2,…の間で変化する。
【0153】
検知範囲情報86は、現時点でダウジングによる検知が可能な範囲を示す情報であり、具体的には、図16(B)に示したような、仮想カメラICを基点とするコーン型の検知範囲DAを示す。検知範囲DAは、距離dに関する閾値dmaxおよび角度θに関する閾値θmaxで定義される。閾値dmaxおよびθmaxには、図15に示したように、仮想カメラICの高さH(=0,H1,H2)に応じた値がセットされる(ただし、H1は正の値、H2は負の値)。たとえば、H=0のときnormal用の値として100mおよび15度が、H=H1のときlong&wide用の値として1000mおよび20度が、そしてH=H2のときshort&narrow用の値として20mおよび10度がセットされる。なお、ここでは検知範囲DAの広さを3段階に変化させているが、段階数は2でも4以上でもよい。また、閾値dmaxおよびθmaxの値も一例に過ぎず、適宜変更される。
【0154】
対象情報88は、現時点でのダウジングの対象Obiつまり剣Swが反応しているオブジェクトを示す情報であり、当該対象Obiに関する距離(di)および方向(θi)もこの中に記述される。ダウジング中、対象Obiには、検知範囲DA内に検知対象がただ1つ存在する場合には当該単一の検知対象が、検知範囲DA内に検知対象が複数存在する場合には当該複数の検知対象の中から検知の強さに基づいて決定された最優先対象(図16参照)が、それぞれセットされる。なお、検知範囲DA内に検知対象が1つも存在しなければ、“該当なし”が記述される。
【0155】
位置関係情報90は、ポインタPntの態様、具体的には色および棘サイズを示す情報である。色および棘サイズは、図17に示したように、主として距離diに応じて変化する(詳細は先述)。なお、位置関係情報90には、ゲーム画面におけるポインタPntの位置および方向(図11,図12参照)を制御するための情報も付加される。
【0156】
入力領域92には、コントローラ14から入力されたコントローラデータが記憶される。出力領域94には、VRAM42dを経てモニタ28に出力されるべきゲーム画像データが記憶される。
【0157】
なお、上述したようなパラメータ領域76の記憶内容は、ダウジング開始時に設定される。変数領域82,入力領域92および出力領域94の記憶内容は、ダウジング開始時に初期化され、ダウジング中は1フレーム毎に(たとえば1/60秒周期で)更新される。
【0158】
ゲームプログラム72が起動されると、CPU40は、最初、ステップS1で初期処理を実行する。初期処理では、VRAM42dの初期化、初期ゲーム画像データの生成などが行われる。初期処理が完了すると、CPU40は、ステップS3からステップS5,S11,S15またはS17を経てステップS3に戻る4通りのループ処理のいずれかを、1フレーム毎に実行する。
【0159】
ステップS3では、出力領域94へのゲーム画像データの書き込みを行う。起動直後は、ステップS1で生成された初期ゲーム画像データが書き込まれる。出力領域94に書き込まれたゲーム画像データは、入出力制御プログラム74の制御下でVRAM42dに転送され、これに基づくゲーム画像がモニタ28に表示される。
【0160】
ステップS5では、入力領域92へのコントローラデータの入力があったか否かを判別し、NOであればステップS3に戻って、次フレームのタイミングでゲーム画像データの書き込みを行う。ステップS5でYESであれば、ステップS7に進み、コントローラデータに終了指示が含まれているか否かを判別する。ステップS7でYESであれば、このダウジングゲームを終了する。
【0161】
ステップS7でNOであれば、ステップS9に進んで、現在の場面がダウジング場面か否かを判別する。なお、現在の場面に関する情報は、ゲームプログラム72の管理下にあり、ステップS9の判別では、この情報が参照される。ステップS9でNO、つまり現在の場面がダウジング以外の場面であれば、ステップS11で他の画像処理を実行した後、ステップS3に戻って上記と同様の処理を繰り返す。今回のステップS3では、ステップS11の画像処理を経た後のゲーム画像データが出力領域94に書き込まれ、これに基づいて、VRAM42dの記憶内容ひいてはモニタ28の表示内容が更新される。
【0162】
ステップS9でYESつまり現在の場面がダウジング場面であれば、ステップS13に進んで検知対象は選択済みか否かを判別し、ここでNOであればステップS15に進む。ステップS15では、対象選択用画像を生成してゲーム画像上に描画する。これにより、モニタ28には、図9に示したような対象選択のためのゲーム画面が表示される。このゲーム画面には、金貨やアイテムといった各種のオブジェクトをそれぞれ示す8個のアイコンShが描画されている。その後、ステップS3に戻って上記と同様の処理を繰り返す。このような、ステップS3〜S9,S13およびS15からなるループ処理は、コントローラ14でいずれかのアイコンが選択されるまで繰り返し実行される。
【0163】
図9のゲーム画面でいずれかのアイコンShを選択する操作が行われると、その選択結果が入力領域92のコントローラデータに反映され、ステップS13の判別結果がNOからYESに変化する。ステップS13でYESであれば、現時点がダウジング場面の開始時点か否かの判別をステップS16aで行い、ここでNOであればステップS17に進む。
【0164】
ステップS16aでYESであれば、ステップS16bで、パラメータ設定および変数初期化を行い、結果を表面高さ情報78およびオブジェクト情報80としてパラメータ領域76に書き込む。オブジェクト情報80に含まれる対象フラグは、選択されたアイコンSh(たとえば金貨)に該当するオブジェクト(1つまたは複数)についてONされ、その他のオブジェクトについてはOFFされる。その後、ステップS17に進む。
【0165】
ステップS17では、ダウジング画像処理(図21および図22参照)を実行する。詳細は後述するが、ダウジング画像処理では、パラメータ領域76および変数領域82の記憶内容に基づいて、ダウジングの結果を示すポインタPntの画像を生成し、生成したポインタ画像(Pnt)をゲーム画像上に描画する、一連の処理が実行される。その後、ステップS3に戻って上記と同様の処理を繰り返す。
【0166】
これにより、図10〜図12に示したようなゲーム画面がモニタ28に表示される。このゲーム画面では、対象オブジェクトObiが地中に隠されており、剣Swでダウジングを行うプレイヤキャラクタ(仮想カメラIC)の位置Pは、コントローラ14の操作に応じて移動する。ゲーム画面上のポインタ画像(Pnt)は、このようなプレイヤキャラクタ(仮想カメラIC)と対象オブジェクトObiとの位置関係(図14(B)参照)を示している。
【0167】
このような、ステップS3〜S9,S13,S16a,S16bおよびS17からなるループ処理は、コントローラ14で終了処理が行われるまで(もしくはゲームオーバーなど図示しない終了イベントが発生するまで)、繰り返し実行される。
【0168】
上記ステップS17のダウジング画像処理は、詳しくは、図21および図22に示すフローに従って実行される。まず図21を参照して、最初、ステップS21で仮想カメラICが移動したか否かを入力領域92のコントローラデータに基づいて判別し、NOであればステップS29に進む。ステップS21でYESであれば、ステップS23で変数領域82の基準位置情報84を更新する。
【0169】
具体的には、まず位置P(図14(B)参照)を最新の値に更新し、次に、表面高さ情報78を参照して、更新後の位置Pが属する領域(A0,A1,A2,…のいずれか)を特定し、特定結果に対応する高さ(たとえばA1に対応するH1)を取得し、そして高さHを取得値により更新する。したがって、この実施例では、基準位置情報84に記述された高さHが変化するのは、仮想カメラICが領域A0,A1,A2,…の間の境界を跨いで移動した場合に限られる。その後、ステップS25に進む。
【0170】
ステップS25では、高さHは変化したか否かを判別し、NOであればステップS29に進む。ステップS25でYESであれば、ステップS27で変数領域82の検知範囲情報86を更新する。具体的には、図15に示したような3通りの組み合わせ(normal,long&wide,short&narrow)の中から、高さHに対応するdmaxおよびθmax(たとえばH1に対応するlong&wide)を選択して、検知範囲情報86に記述された前回の選択値を今回の選択値で更新する。その後、ステップS29に進む。
【0171】
なお、ステップS21の直前に、検知対象の属性に応じて基本検知範囲を設定するステップS20を追加してもよい。ステップS20は、ダウジング画像処理の開始直後に1回だけ実行される。その後に毎フレーム実行されるステップS27での高さHに応じた検知範囲DAの拡大/縮小は、ステップS20で設定した基本検知範囲を初期値として実行される。オブジェクト情報80(図13参照)には、オブジェクトOb1,Ob2,…それぞれの属性がさらに記述されており、設定にあたっては、このオブジェクト情報80に記述された属性が参照される。図13の例では、対象フラグがONであるオブジェクト(Ob1,Ob2)の属性は“動かない”なので、基本検知範囲はnomalに設定される。
【0172】
ステップS29では、検知範囲DA内に検知対象(対象フラグがONであるオブジェクト)が存在するか否かをオブジェクト情報80,基準位置情報84および検知範囲情報86に基づいて判別する。ここでNOであれば、ステップS31で位置関係情報90に“白&棘なし”を書き込んだ後、ステップS43に進む。
【0173】
ステップS29でYESであれば、ステップS33に移って、検知範囲DA内に存在する検知対象は単一か否かをさらに判別し、YESであればステップS37に進む。ステップS33でNOであれば、ステップS35で最優先対象を決定した後、ステップS37に進む。ステップS35の最優先対象決定処理は、たとえば図22のフローに従って実行される。
【0174】
ここで図22を参照して、最初、ステップS51で変数iに初期値“1”をセットし、複数の検知対象の中から一つの検知対象を選択する。次に、ステップS53で選択した検知対象との間の距離diは各検知対象との間の距離の中で最小値か否かを判別する。そして、ステップS53でYESであればステップS55に、NOであればステップS61にそれぞれ進む。
【0175】
ステップS55では、距離diと同じ値が他に存在するか否かをさらに判別する。ステップS55でYESであればステップS57に、NOであればステップS59にそれぞれ進む。
【0176】
ステップS57では、選択した検知対象の角度θiの方がステップS55で判別された他の検知対象の角度より大きいか否かをさらに判別する。ステップS57でYESであればステップS61に、NOであればステップS59にそれぞれ進む。
【0177】
ステップS59では、当該対象Obiを最優先対象に決定し、その後、上位のフロー(図21参照)に戻る。ステップS61では、変数iをインクリメントした後、ステップS53に戻って上記と同様の処理を繰り返す。すなわち、他の検知対象を選択して、最優先対象か否かを判別する処理を繰り返す。
【0178】
したがって、たとえば、図16に示したように、検知範囲DA内に3つの検知対象(Ob1〜Ob3)が存在する場合、ステップS51でi=1とした後、ステップS53で、距離d1はd1〜d3のうち最小値か否かが判別される。図16の例では、d1=d2<d3であり、距離d1は最小値なので、ステップS53の判別結果はYESとなる。よって、ステップS55に進み、d1と同じ値の有無が次に判別される。
【0179】
図16の例では、d1=d2なので、ステップS55の判別結果はYESとなる。よって、ステップS57に進み、θ1がθ2よりも大きいか否かがさらに判別される。図16の例では、θ1>θ2なので、ステップS57の判別結果はYESとなる。よって、ステップS61でi=2とした後、再びステップS53以下の処理が実行される。
【0180】
d2=d1<d3なので、ステップS53の判別結果は今回もYESとなり、ステップS55の判別結果もまたYESとなる。しかし、θ2<θ1なので、ステップS57の判別結果はNOとなり、当該対象Ob2が最優先対象に決定される。
【0181】
なお、図16の例において、仮にd1=d2<d3かつθ1=θ2であったとすると、i=1の段階でステップS57の判別結果がNOとなり、当該対象Ob1が最優先対象に決定される。つまり、先に検討された方が最優先対象となる。
【0182】
図21に戻って、ステップS37では、当該対象Obi(これは、検知範囲DA内にただ1つの検知対象しか存在しない場合にはその単一の対象であり、複数の検知対象が存在する場合にはステップS35で決定された最優先対象である)と、その距離diおよび方向θiとを対象情報88に書き込む。次のステップS39では、対象情報88に基づいて当該対象Obiに対する検知の強さを計算する。そしてステップS41で、検知の強さに応じた色および棘サイズを計算し、計算結果を位置関係情報90に書き込む。その後、ステップS43に進む。なお、検知の強さおよび検知の強さに応じた色および棘サイズの計算方法については、先に説明したので省略する。
【0183】
ステップS43では、位置関係情報90に基づいて、ポインタ画像(Pnt)をゲーム画像上に描画する。その際、ポインタ画像(Pnt)の描画位置(さらには仮想カメラICの位置)は、第1コントローラ34の方向に基づいて制御される。また、ポインタPntの方向についても、棘が当該対象Obiを指すように制御される。なお、これらの制御については、この実施例の主要な特徴ではないので、詳しい説明は省略する。その後、上位のフロー(図20参照)に戻る。こうしてポインタ画像(Pnt)の描画処理が施されたゲーム画像データは、次回のステップS3で出力領域94に書き込まれ、これに基づくゲーム画面がモニタ28に表示される。
【0184】
以上から明らかなように、この実施例のゲームシステム10では、ゲーム装置12のCPU40は、オブジェクト(対象Obi)が配置された仮想空間ISを仮想カメラICから撮影したゲーム画像をメインメモリ42e,46の出力領域94に書き込み(S3)、所定の基準位置たとえば仮想カメラICの位置(P)とオブジェクトの配置位置(Pi)との位置関係を示す位置関係情報(ポインタPntの画像)を、出力領域90に記憶されたゲーム画像上に描画する(S43)。そして、この位置関係情報(Pnt)を、仮想カメラICの基準面RLからの高さHや、オブジェクトに設定された属性(動く/動かない)といった条件に応じて変化させる(S29,S31,S41)。こうして、位置関係情報を条件に応じて変化させることで、位置関係情報の報知を、基準位置の状況やオブジェクトの属性に応じて動的に行うことができる。したがって、ゲーム設計の自由度が高まる。
【0185】
また、CPU40は、オブジェクトの存在を検知可能な検知範囲DA(θmax,dmax)を設定し、この検知範囲DAを少なくとも高さHに応じて変化させる(S20〜S27)。位置関係情報は、オブジェクトの配置位置が基準位置に対して範囲内か否かを少なくとも示す。
【0186】
また、検知範囲DAは、基準位置からの距離(dmax)と方向(θmax)に基づいて設定され、高さHの示す値が大きいほど拡大される(図15参照)。
【0187】
また、位置関係情報はオブジェクトの検知の強さを示し、検知範囲DAは、当該範囲内で検知の強さが段階的に変化するように複数領域(B1〜B3)に分割される。
【0188】
また、CPU40は、基準位置からオブジェクトの配置位置までの距離(di)と方向(θi)に基づいて検知の強さを計算し(S39)、オブジェクトの配置位置が基準位置に対して範囲内である場合には、計算結果に基づいて位置関係情報を変化させる。そして、計算は、方向よりも距離を優先して行う。具体的には、距離に基づいて計算を行い、距離が等しい場合に方向を考慮するが、これに限らず、たとえば、方向よりも距離に重み付けをした計算式で計算を行ってもよい。
【0189】
また、範囲内に複数のオブジェクト(Ob1,Ob2,…)が存在する場合、CPU40は、基準位置から各オブジェクトまでの距離(d1,d2,…)と方向(θ1,θ2,…)に基づいて最優先オブジェクト(Obi)を決定する(S35)。位置関係情報は、最優先オブジェクトとの関係を示す。この決定もまた、方向よりも距離を優先して行われる。具体的には、距離に基づいて決定を行い、距離が等しい場合に方向を考慮するが、これに限らず、たとえば、方向よりも距離に重み付けをしたアルゴリズムに従って決定を行ってもよい。
【0190】
また、検知範囲DAは、オブジェクトが動く場合にも拡大される(S20)。好ましくは、動きが大きい(素早い)オブジェクトほど広くする。属性にサイズに関する情報を含め、オブジェクトのサイズが大きい場合に検知範囲DAを拡大して見つけ易くしてもよい。好ましくは、サイズが大きいオブジェクトほど広くする。属性に希少性に関する情報を含め、オブジェクトの希少性が高い場合に検知範囲DAを縮小して見つけ難くしてもよい。好ましくは、希少性が高いオブジェクトほど狭くする。
【0191】
また、以下のような各変形例も可能である。
【0192】
検知範囲DAは、この実施例では、仮想カメラICの高さHつまり表面Sfの局所的な高さ(H1,H2,…)に応じて変化するが(図14(A)参照)、これに限らず、エリア(ステージ)全体で変化させてもよい。例えば、空や海のエリアでは、地上エリアよりも範囲が大きくなるように設定することによって、広大なエリアでもオブジェクトを探しやすくすることができる。
【0193】
検知範囲DAは、仮想カメラICを基準にしたが、剣Swを基準にしてもよい。
【0194】
仮想カメラICからオブジェクトObiまでの距離diは、光軸方向に沿う距離成分で表現したが、両者を結ぶ線分の長さで表現してもよい。
【0195】
表面Sfの局所的な高さH1,H2,…は、表面高さ情報78の中に、地図(基準面RL)上に配置されるタグTg1,Tg2,…(図13,図14(A)参照)と関連付けて記述したが、ゲーム画像データ(たとえばポリゴンやテクスチャのデータ)に埋め込んでもよい。または、地図を複数の領域に分割して、各領域に高さを設定してもよい。
【0196】
以上では、画像処理を実行するゲーム装置12およびこれを含むゲームシステム10について説明したが、この発明は、他のゲーム装置ないしゲームシステム、さらには、画像処理装置ないし画像処理システムにも適用できる。ゲームシステムないし画像処理システムでは、画像処理は、複数のコンピュータ等によって分散して実行されてよい。
【符号の説明】
【0197】
10 …ゲームシステム
12 …ゲーム装置
14 …コントローラ
28 …モニタ
34,36 …第1,第2コントローラ
40 …CPU
42a …入出力プロセッサ
42e …内部メインメモリ
42d …VRAM
46 …外部メインメモリ

【特許請求の範囲】
【請求項1】
画像処理装置のコンピュータを、
オブジェクトが配置された仮想空間を仮想カメラから撮影した仮想空間画像を出力する画像出力手段、
所定の基準位置と前記オブジェクトの配置位置との位置関係を示す位置関係情報を出力する位置関係情報出力手段、および
前記位置関係情報を条件に応じて変化させる位置関係情報変化手段として機能させる、画像処理プログラム。
【請求項2】
前記条件は前記基準位置に関連して設定されているパラメータである、請求項1記載の画像処理プログラム。
【請求項3】
前記パラメータは前記基準位置の基準面からの高さを規定する高さ情報である、請求項2記載の画像処理プログラム。
【請求項4】
前記コンピュータを、前記基準位置に関連して前記オブジェクトの存在を検知可能な範囲を設定しかつ当該範囲を少なくとも前記高さ情報に応じて変化させる範囲制御手段としてさらに機能させ、
前記位置関係情報は前記オブジェクトの配置位置が前記範囲内か否かを少なくとも示す情報である、請求項3記載の画像処理プログラム。
【請求項5】
前記範囲制御手段は前記高さ情報の示す値が大きいほど前記範囲を拡大する、請求項4記載の画像処理プログラム。
【請求項6】
前記範囲は、前記基準位置からの距離と方向に基づいて設定される、請求項4記載の画像処理プログラム。
【請求項7】
前記位置関係情報は前記オブジェクトの検知の強さを示す情報を含み、
前記範囲制御手段は前記範囲内で検知の強さが段階的に変化するように当該範囲を複数領域に分割する、請求項6記載の画像処理プログラム。
【請求項8】
前記コンピュータを、前記基準位置から前記オブジェクトの配置位置までの距離と方向に基づいて前記検知の強さを計算する計算手段としてさらに機能させ、
前記位置関係情報変化手段は、前記オブジェクトの配置位置が前記範囲内である場合には、前記計算手段の計算結果に基づいて前記位置関係情報を変化させる、請求項6記載の画像処理プログラム。
【請求項9】
前記計算手段は方向よりも距離を優先して計算を行う、請求項8記載の画像処理プログラム。
【請求項10】
前記コンピュータを、前記範囲内に複数のオブジェクトが存在する場合に前記基準位置から各オブジェクトまでの距離と方向に基づいて最優先オブジェクトを決定する最優先オブジェクト決定手段としてさらに機能させ、
前記オブジェクトは前記最優先オブジェクトである、請求項4記載の画像処理プログラム。
【請求項11】
前記最優先オブジェクト決定手段は方向よりも距離を優先して決定を行う、請求項10記載の画像処理プログラム。
【請求項12】
前記条件は、前記オブジェクトに設定されている属性である、請求項4記載の画像処理プログラム。
【請求項13】
前記属性は、前記オブジェクトが可動オブジェクトか否かを示す情報を含み、
前記コンピュータを、前記基準位置に関連して前記オブジェクトの存在を検知可能な範囲を設定しかつ当該範囲を少なくとも前記属性に応じて変化させる範囲制御手段としてさらに機能させる、請求項12記載の画像処理プログラム。
【請求項14】
前記基準位置は前記仮想カメラの位置であり、
前記位置関係情報は、画像、音声、振動および発光の少なくとも1つで表現される、請求項1記載の画像処理プログラム。
【請求項15】
前記位置関係情報出力手段は画像で表現された位置関係情報を前記仮想空間画像上に描画する、請求項14記載の画像処理プログラム。
【請求項16】
前記コンピュータを、前記仮想カメラの位置をポインティングデバイスからの入力に基づいて制御する仮想カメラ位置制御手段としてさらに機能させる、請求項14記載の画像処理プログラム。
【請求項17】
前記位置関係情報出力手段は前記画像で表現された位置関係情報が前記オブジェクトを指向するように制御する、請求項15記載の画像処理プログラム。
【請求項18】
オブジェクトが配置された仮想空間を仮想カメラから撮影した仮想空間画像を出力する画像出力手段、
所定の基準位置と前記オブジェクトの配置位置との位置関係を示す位置関係情報を出力する位置関係情報出力手段、および
前記位置関係情報を条件に応じて変化させる位置関係情報変化手段を備える、画像処理装置。
【請求項19】
画像処理装置によって実行される画像処理方法であって、
オブジェクトが配置された仮想空間を仮想カメラから撮影した仮想空間画像を出力する画像出力ステップ、
所定の基準位置と前記オブジェクトの配置位置との位置関係を示す位置関係情報を出力する位置関係情報出力ステップ、および
前記位置関係情報を条件に応じて変化させる位置関係情報変化ステップを含む、画像処理方法。
【請求項20】
オブジェクトが配置された仮想空間を仮想カメラから撮影した仮想空間画像を出力する画像出力手段、
所定の基準位置と前記オブジェクトの配置位置との位置関係を示す位置関係情報を出力する位置関係情報出力手段、および
前記位置関係情報を条件に応じて変化させる位置関係情報変化手段を備える、画像処理システム。

【図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


【公開番号】特開2012−252511(P2012−252511A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−124530(P2011−124530)
【出願日】平成23年6月2日(2011.6.2)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】