画像処理プログラム、画像処理装置、画像処理方法、画像処理システム
【課題】正射影方式、多重スクロール制御、及び、画面の拡大縮小処理を用いる画像処理において、違和感の少ない遠近感表現を演出することのできる画像処理プログラムを提供すること。
【解決手段】仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小割合を各レイヤー毎に算出する。更に、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。そして、当該算出された拡大縮小割合に基づいて各レイヤーの画像を拡大あるいは縮小すると共に、当該算出された移動速度で各レイヤーを所定の方向に移動させる。
【解決手段】仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小割合を各レイヤー毎に算出する。更に、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。そして、当該算出された拡大縮小割合に基づいて各レイヤーの画像を拡大あるいは縮小すると共に、当該算出された移動速度で各レイヤーを所定の方向に移動させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、正射影方式を用いた画像処理に関し、より特定的には、正射影方式を用いた画像処理における多重スクロール制御および拡大縮小処理に関する。
【背景技術】
【0002】
従来から、奥行き感・遠近感を表現するために、いわゆる多重スクロールを行う表示方法が知られている(例えば特許文献1)。この表示方法は、2次元画像処理を想定した手法である。一方、近年では、ゲーム画面の3次元表示処理を行うゲームシステムが一般的となっている。このようなゲームシステムでは、仮想的な3次元空間に設定されたゲームフィールド内において、それぞれ所定の座標位置に配置されたキャラクタオブジェクトや各種構造物などを表示対象として、ゲーム画面の表示範囲の基準となる視点位置と注視点とが設定され、透視射影(透視投影)方式を用いて撮影したゲーム画像が表示されることが一般的である。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平9−6296号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記特許文献1に開示の技術は、2次元での処理を想定した処理であり、仮想3次元空間を想定する技術ではなかった。一方、上記のような透視射影方式を用いる場合は、多重スクロールを用いるまでもなく奥行き感を表現可能である。そのため、いわゆる正射影方式を用いて多重スクロールを行う場合を予期・想定した技術は知られていなかった。特に、正射影方式を用いて、かつ、多重スクロールの制御を行い、更に、画面の拡大縮小を伴うような画像処理を予期・想定した技術は知られていなかった。
【0005】
それ故に、本発明は、正射影方式、多重スクロール制御、及び、画面の拡大縮小処理を用いる画像処理において、違和感の少ない遠近感表現を演出することのできる画像処理プログラムを提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は以下のような構成を採用した。
【0007】
本発明にかかる画像処理プログラムは、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定され配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理装置のコンピュータに実行させる画像処理プログラムである。当該画像処理プログラムは、コンピュータを、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段として機能させる。レイヤー拡大縮小割合算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【0008】
上記構成により、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときに、不自然な表示を軽減し、疑似的な遠近感表現を行うことができる。
【0009】
他の構成例として、レイヤー移動速度算出手段は、所定の基準点の近くに配置されているレイヤーほど移動速度が速くなるように移動速度を算出するようにしてもよい。
【0010】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、レイヤーが所定の基準点の近くに配置されるほど拡大し、所定の基準点から遠くに配置されるほど縮小するようにしてもよい。
【0011】
上記構成例によれば、遠近感をより強調することができる。
【0012】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、所定の基準点の近くに配置されているレイヤーほど拡大する割合または縮小する割合が高くなるように各レイヤーを拡大あるいは縮小するようにしてもよい。
【0013】
上記構成例によれば、疑似的ではあるものの、違和感の少ない遠近感の表現が可能となる。
【0014】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、レイヤーが所定の基準点の近くに配置されるほど拡大し、所定の基準点から遠くに配置されるほど縮小するようにしてもよい。
【0015】
上記構成例によれば、違和感の少ない遠近感の表現が可能となる。
【0016】
更に他の構成例として、画像処理プログラムは、操作者の操作に基づいた所定条件が満たされたとき、所定の基準点を所定の1方向に移動する、または移動したと仮定する基準点移動手段としてコンピュータを更に機能させ、レイヤー拡大縮小割合算出手段は、基準点移動手段によって移動された所定の基準点の位置、または移動されたと仮定したときの所定の基準点の位置から各レイヤーまでの距離に基づいて拡大縮小の割合を算出し、レイヤー移動速度算出手段は、基準点移動手段によって移動された所定の基準点の位置、または移動したと仮定されたときの所定の基準点の位置から各レイヤーまでの距離に基づいて各レイヤーの移動速度を算出するようにしてもよい。
【0017】
上記構成例によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、違和感の少ない疑似的な遠近感表現を行うことができる。
【0018】
更に他の構成例として、各レイヤーには仮想空間内における所定の基準点から所定の1方向軸上での位置を示す奥行き値がそれぞれ設定されており、レイヤー拡大縮小割合算出手段は、奥行き値に基づいてオブジェクト画像または背景画像の拡大縮小の割合を算出し、レイヤー移動速度算出手段は、奥行き値に基づいて各レイヤーの移動速度を算出してもよい。
【0019】
上記構成例によれば、各レイヤーの移動速度の算出処理を容易な処理とすることができる。
【0020】
更に他の構成例として、画像処理装置で実行される画像処理は、画像が表示される領域である表示領域の端までオブジェクトを移動させることが可能な処理であってもよい。
【0021】
上記構成例によれば、正射影方式を用いて違和感の少ない遠近感表現を行いながら、繊細な操作感を有するゲームを提供することができる。
【0022】
更に他の構成例として、所定の基準点には仮想カメラが配置され、レイヤー拡大縮小割合算出手段は、仮想カメラからそれぞれのレイヤーまでの距離に応じて拡大縮小の割合を算出し、レイヤー移動速度算出手段は、仮想カメラからそれぞれのレイヤーまでの距離に基づき、各レイヤーの移動速度を算出するようにしてもよい。
【0023】
上記構成例によれば、正射影カメラを用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときに、不自然な表示を軽減し、疑似的な遠近感表現を行うことができる。
【0024】
更に他の構成例として、画像処理プログラムは、画像が表示される表示領域の端にレイヤーに属するオブジェクトが近づいたとき、当該オブジェクトの側面が表示されるように当該オブジェクトの画像を変更するオブジェクト側面生成手段としてコンピュータを更に機能させてもよい。
【0025】
上記構成例によれば、より違和感の少ない遠近感の表現が可能となる。
【0026】
更に他の構成例として、レイヤーに属するオブジェクトは3Dモデルのオブジェクトであり、オブジェクト側面生成手段は、オブジェクトの側面部が表示されるように当該オブジェクトを変形させる、あるいはレイヤーの移動方向に沿って当該オブジェクトを回転させることで当該オブジェクトの側面が表示されるようにしてもよい。
【0027】
上記構成例によれば、比較的簡易な処理でオブジェクトの側面を生成することができる。
【0028】
本発明の画像処理装置は、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理装置であり、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段とを備える。レイヤー拡大縮小割合算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【0029】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【0030】
本発明の画像処理方法は、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理方法であり、レイヤー拡大縮小割合算出ステップと、レイヤー移動速度算出ステップと、レイヤー制御ステップとを備える。レイヤー拡大縮小率算出ステップは、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出ステップは、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御ステップは、レイヤー拡大縮小割合算出ステップで算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出ステップで算出された移動速度で各レイヤーを所定の方向に移動させる。
【0031】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【0032】
本発明の画像処理システムは、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理システムであり、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段とを備える。レイヤー拡大縮小割合算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【0033】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【発明の効果】
【0034】
本発明によれば、正射影方式を用いた画像処理において、疑似的な遠近感表現を違和感の少ない形で演出することが可能となる。
【図面の簡単な説明】
【0035】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】コントローラ7の外観構成を示す斜視図
【図4】本実施形態で想定するゲーム画面の一例
【図5】ブロックの側面部を示す図
【図6】レイヤーについて説明するための図
【図7】拡大縮小について説明するための図
【図8】拡大縮小について説明するための図
【図9】拡大縮小について説明するための図
【図10】拡大縮小について説明するための図
【図11】多重スクロールの様子を模式的に示した図
【図12】多重スクロールの様子を模式的に示した図
【図13】描画用モデルの回転または変形の例
【図14】描画用モデルの回転または変形の例
【図15】描画用モデルの回転または変形の例
【図16】ゲーム装置3の外部メインメモリ12のメモリマップを示す図
【図17】本実施形態における各レイヤーと仮想カメラとの位置関係を模式的に示す図
【図18】本実施形態にかかるゲーム処理の詳細を示すフローチャート
【図19】図18のステップS6で示したレイヤー調整制御処理の詳細を示すフローチャート
【図20】図18のステップS8で示した側面生成処理の詳細を示すフローチャート
【発明を実施するための形態】
【0036】
(ゲームシステムの全体構成)
図1を参照して、本発明の実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、およびコントローラ7を含む。本システムは、コントローラ7を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0037】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0038】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2には、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像が表示される。
【0039】
コントローラ7は、当該コントローラ7自身に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ7とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ7とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ7とゲーム装置3とは有線で接続されてもよい。
【0040】
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14等を有する。
【0041】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、およびディスクドライブ14が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0042】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0043】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。より具体的には、GPU11bは、当該グラフィクスコマンドに従って3Dグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる3D座標から2D座標への座標変換などの処理や、テクスチャの張り込みなどの最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、CPU10は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU11bに与える。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0044】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。また、内部メインメモリ11eは、外部メインメモリ12と同様に、プログラムや各種データを記憶するものであり、CPU10のワーク領域やバッファ領域として用いられる。
【0045】
上述のように生成された画像データおよび音声データは、図示しないAV−ICによって読み出される。AV−ICは、読み出した画像データをテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0046】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線コントローラモジュール19に接続される。無線コントローラモジュール19にはアンテナ23が接続される。
【0047】
入出力プロセッサ11aは、コントローラ7から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0048】
次に、図3を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。
【0049】
図3において、コントローラ7は、ハウジング71と、当該ハウジング71の表面に設けられた複数個の操作ボタンで構成される操作部72とを備える。本実施例のハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【0050】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0051】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。
【0052】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。
【0053】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED74a〜74dが設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED74a〜74dは、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ送信データを送信する際、上記コントローラ種別に応じて複数のLED74a〜74dのうち、種別に対応するLEDが点灯する。
【0054】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間にスピーカからの音を外部に放出するための音抜き孔が形成されている。
【0055】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をテレビ2に向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる(図示は省略)。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0056】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)は、無線コントローラモジュール19へ送信される。コントローラ7から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。そして、ゲーム装置3のCPU10は、ゲーム装置3の無線コントローラモジュール19を介して取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。
【0057】
(ゲーム処理の概要)
次に、図4〜図15を用いて、本実施形態が想定しているゲームの概要について説明する。本実施形態で想定するゲームは、いわゆるジャンプアクションゲームである。また、本ゲームは、多人数同時プレイが可能となっている。図4は、本実施形態が想定するゲームの画面の一例である。当該ゲーム画面は、3次元仮想ゲーム空間を正射影方式で射影した画像である(換言すれば、正射影カメラを用いて撮影した画像)。ゲーム画面には、複数のプレイヤキャラクタ101、敵キャラクタ102、ブロック103の他、樹木、山などの各種背景オブジェクトや、空と雲を示す背景画像も表示されている。以下では、これらゲーム中に登場する各種キャラクタ、オブジェクト、背景画像を総称して「描画用モデル」と呼ぶ。ゲーム中に登場する各描画用モデルは、3Dモデルでモデリングされたものである。また、本ゲームでは、各プレイヤキャラクタについては、画面の端まで移動させることが可能である。つまり、画面座標系におけるプレイヤキャラクタの移動範囲としては、表示範囲全域について移動することが可能となっている。
【0058】
ここで、本願で想定するゲームが正射影方式を用いているのは、ジャンプアクションゲームである本ゲームにおいて、ドット単位の繊細な操作感をプレイヤに提供するためである。例えば、一般的な3Dゲームで用いられる透視斜影方式を用いると、上記ブロック103についていうと、3Dモデルであるブロックの側面部が表示されることがある(図5参照)。しかし、あるブロックから別のブロックにジャンプしようとする場合、このような側面部が見えている状態では、ジャンプのタイミングや着地地点までの距離感などがプレイヤにとって把握しにくいものとなる。その結果、操作性が低下してしまう。一方、正射影方式を用いれば、ブロックを正面からみた状態で表示されるため、ジャンプのタイミングや距離感などがプレイヤにとって把握しやすく、また、ジャンプするための踏切位置等についてドット単位の微調整を行うことも可能となる。その結果、繊細な操作感を提供するジャンプアクションゲームを提供することが可能となるためである。
【0059】
このように、正射影方式を用いて繊細な操作感を提供する一方で、本ゲームでは、複数のレイヤを用いた多重スクロールを利用することで、疑似的な奥行き感を表現している。
ここで、本実施形態におけるレイヤーについて説明する。図6は、当該レイヤーについて説明するための図である。図6では、レイヤーA〜レイヤーDが、正射影方式の仮想カメラの撮影方向に沿って並んで配置されている。レイヤーAが仮想カメラに一番近い位置に配置されており、レイヤーDが仮想カメラから一番遠い位置に配置されている。各レイヤーには、それぞれ複数の描画用モデルが属している(配置されている)。
【0060】
レイヤーAには、プレイヤキャラクタ101、敵キャラクタ102、ブロック103等が配置されている。いわば、直接ゲームプレイに関わるモデルが配置されている。また、レイヤーAに配置されているモデルは、それぞれコリジョンを有している。以下では、当該プレイヤキャラクタが属しているレイヤーAの事を、「基準レイヤー」と呼ぶこともある。レイヤーAに属する各描画用モデルは、上記のように3Dモデルとしてモデリングされたものである。但し、上記のように正射影方式で射影変換されるため、常に一定の角度(正面)から見たような画像で表示される。
【0061】
レイヤーBは、仮想カメラから見て、レイヤーAよりも遠く、レイヤーCよりも近い距離のものとして定義されているレイヤーである。図6の例でいうと、レイヤーBには樹木の背景オブジェクトが属している。レイヤーCは、レイヤーBよりも更に遠くに位置し、レイヤーDよりは仮想カメラに近い距離のものとして定義されているレイヤーである。レイヤーCには、山の背景オブジェクトが属している。レイヤーB,Cに属する各描画用モデルについても、3Dモデルとしてモデリングされ生成されてはいる。しかし、これらのモデルは単なる背景という扱いであるため、コリジョンは有していない。レイヤーDは、仮想カメラから一番遠い距離のものとして定義されているレイヤーである。つまり、一番奥の画像であり、空の背景画像(板状の大きなポリゴンに空の風景のテクスチャを貼り付けた描画用モデル)が属している。
【0062】
上記のような各レイヤーについて、レイヤー単位でスクロール制御が行われることで、多重スクロールが実現する。また、後述する、拡大縮小についてもレイヤー単位で行われる。
【0063】
ここで、上記のように、本ゲームでは、プレイヤキャラクタ101を画面端まで移動させることが可能であり、また、多人数同時プレイも可能となっている。そのため、複数のプレイヤキャラクタ101のそれぞれが別々の画面端に向かって移動した場合、プレイヤキャラクタが操作しにくくなることがある。このような場合でも、快適なプレイ感覚を提供するために、本ゲームでは、操作プレイヤキャラクタ間の距離が大きくなったとき、本ゲームでは、縮小表示を行い、より広い範囲が表示されるようにしている(図7(A)参照)。また、逆に、プレイヤキャラクタ同士がある程度近づいた場合(プレイヤキャラクタ間の距離がある程度小さくなった場合)は、画面拡大を行うことで、快適なプレイ感覚を提供している(図7(B)参照)。
【0064】
ここで、本ゲームにおける拡大縮小の処理技法について説明する。本ゲームは、上述したように正射影方式を用いている。そのため、透視斜影方式で行われるような、仮想カメラを仮想空間内で移動(仮想カメラの位置を変更)させてゲーム画像を生成する手法は用いていない(正射影方式では、仮想カメラを移動したとしても、拡大縮小がなされないため)。本ゲームでは、仮想カメラの位置を変更する代わりに、各レイヤーを拡大あるいは縮小する(より正確には、各レイヤーに属する各描画用モデルを拡大または縮小する)ことによって、仮想カメラが移動したかのような、つまり、仮想カメラが寄った(ズームイン)、あるいは引いた(ズームアウト)かのような効果を出している。より具体的には、例えば、図8に示すような状態で拡大を行う場合は、まず、図9に示すように、仮想カメラが所定の距離まで寄った場合を仮定(シミュレーション)し、このシミュレーションにおける仮想カメラとレイヤーとの距離を算出する。次に、この距離に基づいて、レイヤーの拡大率を決定する。そして、図10に示すように、仮想ゲーム空間内における仮想カメラの位置は実際には動かさずにレイヤーのほうを拡大する。これにより、仮想カメラが「寄った」(ズームインした)かのような表現を行っている。
【0065】
このように、本ゲームでは、複数のレイヤを用いた多重スクロールを行うと共に、ゲーム処理中に適宜拡大縮小処理が行われることがある。このような処理を行う際に、多重スクロール制御用のパラメータ(具体的にはスクロール量あるいはスクロール速度)と、上記画面の拡大縮小用のパラメータとを、個別に管理するという方法が考えられる。例えば、拡大縮小率に関しては、プレイヤキャラクタ間の距離に応じて動的に変更するが、各レイヤのスクロール速度に関しては、予め定められた速度でスクロールする、等という場合である。
【0066】
しかし、このように、スクロール用のパラメータと拡大縮小用のパラメータを個別に管理する場合、多重スクロールにおける遠景と近景との奥行き方向に沿った距離(つまり、奥行き方向における各レイヤ間の距離)を考慮した拡大縮小が行われないことがある。例えば、第1レイヤー(近景)と第2レイヤー(遠景)の2つのレイヤーがある場合を想定する。そして、このレイヤーのスクロール速度の比率について(第1レイヤー:第2レイヤー)=(2:1)の速度比で制御されているとする。このような場合において、上記のような拡大が行われたとき、例えば、第1レイヤーについては4倍に拡大されるが、第2レイヤーについては、1.8倍で拡大される、ということがある。つまり、スクロール速度と関係なく拡大縮小率が算出された結果、近景と遠景のスクロール速度の比率と近景と遠景の拡大縮小率の比率が合わないということが起こり得る。このような場合、スクロール制御における計算誤差等の影響もあり、結果的に、多重スクロール動作が不安定な動作(1フレームあたりのレイヤーの移動量が一定しない)となることがある。
【0067】
図11は、拡大または縮小していない状態における第1レイヤーと第2レイヤーのスクロールの様子を模式的に示した図である。図11では、1フレームから4フレーム目まで、第1レイヤーと第2レイヤーが、いうなれば「歩調を合わせて」移動している様子を示している。換言すれば、1フレーム当たりの移動量が一定である。
【0068】
一方、図12は、上述のように、スクロール速度の比率と拡大率とが不一致な状態で拡大したときのスクロールの様子を模式的に示した図である。この図12では、第2レイヤーの、1フレーム当たりの移動量が一定とはなっておらず、3フレーム目や5フレームにおいて、第1レイヤーを少し追い越しているような状態となっている。つまり、第2レイヤーのスクロール速度(スクロール量)が不安定な状態となっている。その結果、拡大表示されているとき、滑らかな多重スクロールが表示されずに、不安定な動きの多重スクロールが表示されてしまうことがある。
【0069】
そこで、本実施形態では、スクロール速度のパラメータとレイヤーの拡大縮小率のパラメータを一元管理する(つまり、両者を関連づけて制御する)ことで、正射影方式を用いたゲームにおいて、各レイヤーのスクロール量の比率と各レイヤーの拡大縮小の比率とでずれが生じないような処理を行い、拡大縮小、および、多重スクロール制御を行うものである。具体的には、本実施形態では、まず、各レイヤに個別に「レイヤー奥行き値」というパラメータを予め設定する。このレイヤー奥行き値が、各レイヤーの奥行き方向の並びの前後関係やレイヤー間の間隔を示す値となる。そして、このレイヤー奥行き値に基づいて、基本的な状態(ゲーム開始時の状態)における各レイヤーの拡大縮小率(以下、基本スケール値と呼ぶ)が決定される。また、このスケール値に基づいて、各レイヤの基本的なスクロール量(以下、基本スクロール量と呼ぶ)も決定される。次に、1フレーム毎の処理において、仮想カメラと各レイヤとの距離が算出される(この距離は、上記のように、仮想カメラが寄った、あるいは引いたことを想定したシミュレーション上での距離である)。次に、当該距離に基づいて、各レイヤーの上記基本スケールを調整する。更に、当該距離に基づいて、各レイヤーの基本スクロール速度を調整する。そして、この調整後のパラメータに基づいて各レイヤーを拡大縮小すると共に、多重スクロールの制御も行う。
【0070】
このように、本実施形態では、仮想カメラと各レイヤとの距離に基づいて拡大縮小用パラメータとスクロール量の双方を決定する。つまり、拡大縮小用パラメータとスクロール量とを別々に分けて管理・設定するのではなく、両者を密接に関連づけて決定するようにしている。これにより、正射影方式を用いる場合であって、拡大縮小を伴った多重スクロールが行われる場合でも、滑らかな多重スクロールが実現でき、違和感の少ない疑似的な遠近感表現が可能となる。
【0071】
更に、本実施形態では、疑似的な奥行き感を更に表現するために、次のような処理も行っている。すなわち、背景用の描画用モデル(上記のように、3Dモデルとしてモデリングされている)については、画面端に近づくにつれて、当該描画用モデルの側面部が見えるように、当該描画用モデルを回転あるいは変形させる(図13〜図15参照)。このような処理を行うことで、正射影方式を用いながらも、より奥行き感を表現しながら、違和感の無い滑らかな多重スクロールを実行することができる。
【0072】
(ゲーム処理の詳細)
以下、ゲーム装置3によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ12に記憶されるデータについて説明する。図16は、ゲーム装置3の外部メインメモリ12のメモリマップを示す図である。図16において、外部メインメモリ12は、プログラム記憶領域121およびデータ記憶領域123を含む。プログラム記憶領域121およびデータ記憶領域123のデータは、光ディスク4に記憶され、ゲームプログラム実行時には外部メインメモリ12に転送されて記憶される。
【0073】
プログラム記憶領域121は、CPU10によって実行されるゲーム処理プログラム122を記憶する。ゲーム処理プログラム122は、後述する図18のフローチャートの処理に対応するプログラムである。
【0074】
データ記憶領域123には、操作データ124、描画用モデルデータ125、レイヤー定義データ128、シミュレーション用データ134などのデータが記憶されるとともに、各種フラグも適宜記憶される。
【0075】
操作データ124は、コントローラ7からゲーム装置3へ送信されてくる操作データである。操作データ124には、操作ボタンデータ等が含まれる。操作ボタンデータは、各操作ボタン72a〜72iに対する入力状態を示すデータである。本実施形態では、コントローラ7からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、外部メインメモリ12に記憶される操作データ124はこの割合で更新される。本実施形態においては、外部メインメモリ12には、最新の(最後に取得された)操作データのみが記憶されればよい。
【0076】
描画用モデルデータ125は、ゲーム中に登場する各種描画用モデルのデータである。描画用モデルデータ125には、キャラクタデータ126、背景モデルデータ127が含まれている。キャラクタデータ126は、プレイヤキャラクタ101や敵キャラクタ102の他、ブロック103等、コリジョンを有する各種オブジェクトであって、ゲームプレイの中核を成す各オブジェクトのデータである。本ゲームでは、上述したレイヤーAに属する各種描画用モデルのデータに該当する。
【0077】
キャラクタデータ126には、各キャラクタを一意に識別するIDや、各キャラクタの3Dモデルを生成するためのポリゴンデータ、当該3Dモデルに貼り付けるためのテクスチャデータ等が含まれている。
【0078】
背景モデルデータ127は、上記キャラクタデータ126以外の描画用モデルのデータである。つまり、コリジョンを有しない背景用の描画用モデル(以下、背景用モデル)のデータである。当該背景モデルは、主に、上記レイヤーBやレイヤーC、レイヤーDのいずれかに属することになる。
【0079】
レイヤー定義データ128は、各レイヤーに関するデータであり、各レイヤーの定義データが含まれる。各レイヤーの定義データは、レイヤーID129、レイヤー奥行き値130、基本スケール値131、基本スクロール量132、属する描画用モデルのID133等から構成される。
【0080】
レイヤーID129は、各レイヤーを識別するためのIDである。レイヤー奥行き値130は、各レイヤーの奥行き値を定義したデータである。本実施形態では、奥行き値については、図17に示すように設定されるものとする。図17は、本実施形態における各レイヤーと仮想カメラとの位置関係を模式的に示す図である。本実施形態では、レイヤーAの仮想奥行き値を”0”、レイヤーBの仮想奥行き値を”500”、レイヤーCの仮想奥行き値を”1500”、レイヤーDの仮想奥行き値を”3500”と設定する。なお、図17における「寄りカメラ」「引きカメラ」等については後述する。
【0081】
基本スケール値131は、拡大縮小が行われていないゲーム状態での各レイヤのスケールを示す値である。換言すれば、各レイヤーのデフォルトのスケール値である。
【0082】
基本スクロール量132は、拡大縮小が行われていないゲーム状態での各レイヤの1フレームあたりのスクロール量である。
【0083】
属する描画用モデルのID133は、各レイヤーに属する描画用モデルを示すためのデータであり、各描画用モデルの識別用のIDが含まれている。例えば、レイヤーAの場合は、プレイヤキャラクタ101を示すIDや敵キャラクタ102、ブロック103等を示すIDが含まれる。
【0084】
シミュレーション用データ134は、上述したようなレイヤーの拡大縮小を行うに際して用いられるデータである。上記のように、本実施形態では、拡大縮小率の算出に際して、「仮に仮想カメラがこの位置まで寄ったならば、レイヤーがどのような大きさで表示されるか」というように、仮想カメラの奥行き方向に沿った移動をシミュレーションしている。このシミュレーションにおいて用いられるデータである。シミュレーション用データ134には、カメラ仮想奥行き値135、仮想距離データ136等が含まれる。
【0085】
カメラ仮想奥行き値135は、シミュレーション上で仮想カメラを移動させたときの移動後の仮想カメラの奥行き方向における位置を示すデータである。
【0086】
仮想距離データ136は、上記カメラ仮想奥行き値で示される仮想カメラの位置(つまり、カメラを移動させたと仮定したときの位置)から、各レイヤーまでの距離を示すデータである。
【0087】
次に、図17〜図20を参照して、ゲーム装置3によって実行されるゲーム処理について説明する。但し、以下の説明では、上述したようなレイヤーの拡大縮小処理と多重スクロールに関する処理を中心に説明し、その他のゲーム処理については、詳細な説明は省略する。
【0088】
本実施形態にかかるゲーム処理では、まず、初期処理として、各レイヤーに予め設定されているレイヤー奥行き値130に基づいて、各レイヤーの上記基本スケール値が決定される。また、当該基本スケール値に基づき、基本スクロール量も決定される。つまり、レイヤーの基本状態が決定される。例えば、レイヤーAは等倍で表示され、その奥に位置するレイヤーBは0.5倍で表示された状態でゲームがスタートする。
【0089】
そして、フレーム毎に実行される処理においては、拡大または縮小が行われる際に、仮想カメラのカメラ仮想奥行き値135を考慮して上記基本スケール値および基本スクロール量を適宜調整するという処理が実行される。以下、詳細に説明するが、以下の説明において、各レイヤーと仮想カメラの位置関係については、上記図17で示したような関係である場合を例として説明する。ここで、図17について補足説明する。図17において、「寄りカメラ」と「引きカメラ」の2つのカメラが示されている。これは、仮想カメラの奥行き方向に沿った移動範囲の限界位置を示したものである。図17においては、「寄りカメラ」(ズームインに相当)は、プレイヤキャラクタが属しているレイヤーAから仮想距離500の位置にあり、「引きカメラ」(ズームアウトに相当)はレイヤーAから仮想距離1000の位置にある。これは、本実施形態では、仮想カメラは、仮想距離500〜1000の間で移動する(但し、上記のようなシミュレーションにおいて)ことを示している。つまり、仮想カメラは、レイヤーAから仮想距離500未満の位置には近づけないことを前提としている。また、仮想カメラは、レイヤーAから仮想距離1000より遠い位置には移動させないことを前提としている。
【0090】
以下、ゲーム処理の詳細な説明を行う。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、ROM/RTC13に記憶されている起動プログラムを実行し、これによって外部メインメモリ12等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムが外部メインメモリ12に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図18に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。また、図18に示すステップS2〜ステップS11の処理ループは、1フレーム毎に繰り返し実行される。
【0091】
まず、ステップS1において、初期化処理が実行される。具体的には、まず、レイヤー定義データ128が外部メインメモリ12から読み出され、各レイヤーのレイヤー奥行き値130が取得される。ここでは、図17で示したように、レイヤーAに”0”、レイヤーBに”500”、レイヤーCに”1500”、レイヤーDに”3500”という値が設定されているものとする。次に、当該レイヤー奥行き値130に基づいて、各レイヤの基本スケール値131が算出され、外部メインメモリ12に記憶される。
基本スケール値は、例えば、以下の式で算出される。
基本スケール値 =
寄りカメラの仮想距離/(レイヤー奥行き値+寄りカメラの仮想距離) ・・・式1
この結果、上記の数値例でいうと、基本スケール値131としては、レイヤーAは”1”、レイヤーBは”0.5”、レイヤーCは”0.25”、レイヤーDは”0.125”と算出される。
【0092】
次に、各レイヤー毎に算出された基本スケール値131に基づき、それぞれのレイヤーが縮小される。そして、仮想ゲーム空間内に、各レイヤーが適宜配置される。続いて、仮想カメラが所定の位置(例えば、レイヤーAから仮想距離750の位置)に配置される。そして、当該仮想カメラで正射影方式を用いて撮影された仮想ゲーム空間がゲーム画像として生成され、表示される。
【0093】
更に、以下の処理において用いられる「調整用関数」が設定され、適宜外部メインメモリ12に記憶される。この「調整用関数」とは、上記「寄りカメラ」〜「引きカメラ」間の距離と、各レイヤーの取り得るスケール値の最大値〜最小値との相関関係を示した関数となる。各レイヤーの取り得るスケール値の最大値は、仮想カメラが上記「寄りカメラ」の位置にあるときのレイヤーのスケール値である。また、各レイヤーのスケール値の最小値は、仮想カメラが上記「引きカメラ」の位置にあるときのレイヤーのスケール値である。この最大値および最小値は、例えば以下の式で求められる。
寄りカメラ時のレイヤースケール値 =
寄りカメラの距離/(レイヤー奥行き値+寄りカメラの距離) ・・・式2
引きカメラ時のレイヤースケール値 =
寄りカメラの距離/(レイヤー奥行き値+引きカメラの距離) ・・・式3
【0094】
上記式によって、例えば、レイヤーAについては、スケール値の幅は1〜0.5という値となる。そして、仮想距離と当該スケール値との相関関係を示す関数が適宜設定される(例えば、レイヤーAについていうと、仮想距離500という引数を与えると、スケール値”1”が返されるような関数)。
【0095】
また、初期設定処理では、上記のようなレイヤーに関する初期設定の他、ゲーム処理に関する各種初期設定も適宜行われる。
【0096】
上記のような初期設定処理が終われば、次に、ステップS2において、操作データ124が取得される。続くステップS3において、当該操作データ124に基づいて、プレイヤキャラクタ101の動作(移動等)が制御される。合わせて、敵キャラクタの動作も適宜制御される。
【0097】
次に、ステップS4において、プレイヤキャラクタ101の移動の結果、拡大または縮小の条件が満たされたか否かが判定される。本実施形態では、例えば、複数のプレイヤキャラクタ間の距離が第1の距離以下になれば、その距離に応じてレイヤーの拡大処理を行う。また、複数のプレイヤキャラクタ間の距離が第2の距離以上になれば、その距離に応じてレイヤーの縮小処理を行う。
【0098】
ステップS4の判定の結果、拡大または縮小の条件が満たされていないときは(ステップS4でNO)、ステップS5において、基本スクロール量132がレイヤー毎に算出される。本実施形態では、プレイヤキャラクタ101の移動速度に応じて画面がスクロールするため、例えば、以下の式で基本スクロール量132が算出される。
基本スクロール量=プレイヤキャラクタの移動速度×基本スケール値 ・・・式4
その後、後述するステップS7に処理が進められる。
【0099】
一方、レイヤーの拡大または縮小の条件が満たされているときは(ステップS4でYES)、次に、ステップS6において、レイヤー調整制御処理が実行される。図19は、当該ステップS6で示したレイヤー調整制御処理の詳細を示すフローチャートである。図19において、まず、ステップS21で、仮想カメラの移動のシミュレーションが行われる。例えば、上記複数のプレイヤキャラクタ間の距離に応じた距離だけ仮想カメラを奥行き方向に沿って移動させ、このときの仮想カメラの位置をカメラ仮想奥行き値135として記憶する。そして、仮想カメラを移動前の位置に戻すことが考えられる。また、その他の処理例としては、まず、上記複数のプレイヤキャラクタ間の距離に基づいて、仮想カメラの奥行き方向に沿った移動量を算出する(移動量を算出するだけで、実際には仮想カメラは移動させない)。そして、仮想カメラの現在位置に当該算出された移動量を加味して、カメラ仮想奥行き値135を算出するようにしても良い。
【0100】
次に、ステップS22において、カメラ仮想奥行き値135(つまり、仮想的に移動させた後の仮想カメラの位置)と、各レイヤとの間の仮想距離がそれぞれ算出される。例えば、上記図17の例でいうと、カメラ仮想奥行き値135がレイヤーAから800の距離を示すときは、レイヤーAについては仮想距離が800として算出され、レイヤーBについては、仮想距離が1300として算出される。
【0101】
次に、ステップS23において、各レイヤについて算出された仮想距離とそれぞれ対応するレイヤの「調整用関数」とに基づいて、調整用スケール値がレイヤ毎に算出される。これにより、各レイヤの基本スケール値131にカメラの「寄り」「引き」の具合を考慮したスケール値である調整用スケール値が算出されることになる。例えば、レイヤーAについては仮想距離800に応じたスケール値が算出され、レイヤーBについては、仮想距離1300に対応したスケール値が算出される。
【0102】
次に、ステップS24において、上記基本スケール値131に基づいて、各レイヤーの基本スクロール量が算出される。この処理は、上記ステップS5と同様の処理である。
【0103】
次に、ステップS25において、上記基本スクロール量が上記調整用スケール値に基づいて調整される。これにより、仮想カメラの「寄り」「引き」の具合が考慮されたスクロール量(以下、調整後スクロール量と呼ぶ)が算出されることになる。
【0104】
次に、ステップS26において、上記調整用スケール値に基づいて、各レイヤーに属する各描画用モデルが適宜拡大あるいは縮小される。以上で、レイヤー調整制御処理処理は終了する。
【0105】
図18に戻り、次に、ステップS7において、各レイヤーの移動(スクロール)が行われる。レイヤの移動量(スクロール量)については、上記ステップS4でNOと判定されていたとき(すなわち、拡大・縮小が行われない状態)は、各レイヤーの基本スクロール量132に基づいて各レイヤーの移動が行われる。また、上記ステップS4でYESと判定されていたとき(すなわち、拡大・縮小が行われている状態)は、上記のように仮想カメラの「寄り」「引き」具合を考慮して調整された調整後スクロール量に基づいて各レイヤーの移動が行われる。
【0106】
次に、ステップS8において、側面生成処理が行われる。この処理は、上記レイヤーの移動の結果、画面の端に近づいた背景用モデルについて側面部分を見せるための処理である。図20は、上記ステップS8で示した側面生成処理の詳細を示すフローチャートである。図20において、まず、ステップS41において、プレイヤキャラクタ101が属していないレイヤー(本実施形態では、レイヤーB〜D)のうちから、以下の処理の対象とするレイヤー(処理対象レイヤー)が一つ選択される。
【0107】
次に、ステップS42において、当該処理対象レイヤーに属する描画用モデルのそれぞれについて、側面部の生成が行われる。例えば、次のような処理が行われる。まず、画面座標系のX軸における中心位置(つまり、表示領域の中央)から、描画用モデルまでの距離が算出される。次に、この距離に応じて、描画用モデルを回転させることで、当該描画用モデルの側面部が仮想カメラに映るようにする。また、中心位置からの距離が遠いほど画面の端に近いと考えられるため、中心位置からの距離が大きくなるにつれてより多く回転させるようにする。これにより、疑似的な遠近感が表現できる。
【0108】
次に、ステップS43において、プレイヤキャラクタ101が属していないレイヤーの全てについて上記処理を実行下か否かが判定される。その結果、まだ未処理のレイヤーが残っているときは(ステップS43でNO)、上記ステップS41に戻り、処理が繰り返される。全てのレイヤーを処理したときは(ステップS43でYES)、側面部生成処理は終了する。
【0109】
図18に戻り、次に、ステップS9において、その他の各種ゲーム処理が実行される。例えば、コリジョン判定とその結果に伴う各種処理が実行される。
【0110】
次に、ステップS10において、上記のような処理が反映された仮想ゲーム空間を正射影方式で撮影したゲーム画像が生成され、表示される。
【0111】
次に、ステップS11において、ゲーム終了のための条件が満たされたか否かが判定され、満たされていないときは(ステップS11でNO)、上記ステップS2に戻り処理が繰り返される。一方、満たされたときは(ステップS11でYES)、当該ゲーム処理を終了する。以上で、本実施形態にかかるゲーム処理の説明を終了する。
【0112】
このように、本実施形態では、拡大縮小時の仮想カメラの位置と各レイヤーとの距離(上記実施形態では、シミュレーションすることで算出)に基づいて、各レイヤーのスケール(拡大縮小率)とスクロール量の双方を決定している。これにより、正射影方式と多重スクロールを用いたゲームであって、画面の拡大縮小処理を伴うような場合であっても、滑らかなズームイン、ズームアウトの演出と違和感の無い多重スクロールとを実現でき、且つ、疑似的な遠近感を表現することが可能となる。
【0113】
なお、上記実施形態では、レイヤー奥行き値に沿った順番で各レイヤーを仮想空間に配置した例を示したが、配置位置については、必ずしもこの順番通りに配置しなくてもよい。例えば、レイヤー奥行き値に基づいて各レイヤーの描画順序を制御するようにしてもよい。つまり、レイヤー奥行き値が最も大きいレイヤーを最初に描画し、レイヤー奥行き値が最も小さいレイヤーの描画順序が一番最後になるように制御してもよい。
【0114】
また、上記実施形態では、仮想3次元空間内に仮想カメラを配置した場合を例に挙げたが、必ずしも仮想カメラを用いなくても良く、仮想3次元空間内に設定される所定の基準点から上記レイヤー等を正射影して得られる画像を生成する処理を行っても良い。
【0115】
また、上述したような実施形態にかかる処理を実行するためのプログラムは、任意のコンピュータ読み取り可能な記憶媒体(例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、半導体メモリカード、ROM、RAMなど)に格納され得る。
【0116】
また、上記実施形態においては、拡大縮小時の仮想カメラの位置と各レイヤーとの距離に応じて各レイヤーのスケール(拡大縮小率)とスクロール量の双方を決定するための一連の処理が単一の装置(ゲーム装置3)において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【産業上の利用可能性】
【0117】
本発明にかかる画像処理プログラム、画像処理装置、画像処理方法および画像処理システムは、正射影方式を用いた画像であって多重スクロールと画面の拡大縮小を行う場合に、違和感の少ない遠近感表現を行うことができ、ゲーム装置やゲーム処理が実行される各種情報処理端末等に有用である。
【符号の説明】
【0118】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
4…光ディスク
7…コントローラ
10…CPU
11…システムLSI
11a…入出力プロセッサ
11b…GPU
11c…DSP
11d…VRAM
11e…内部メインメモリ
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
17…フラッシュメモリ
19…無線コントローラモジュール
23…アンテナ
【技術分野】
【0001】
本発明は、正射影方式を用いた画像処理に関し、より特定的には、正射影方式を用いた画像処理における多重スクロール制御および拡大縮小処理に関する。
【背景技術】
【0002】
従来から、奥行き感・遠近感を表現するために、いわゆる多重スクロールを行う表示方法が知られている(例えば特許文献1)。この表示方法は、2次元画像処理を想定した手法である。一方、近年では、ゲーム画面の3次元表示処理を行うゲームシステムが一般的となっている。このようなゲームシステムでは、仮想的な3次元空間に設定されたゲームフィールド内において、それぞれ所定の座標位置に配置されたキャラクタオブジェクトや各種構造物などを表示対象として、ゲーム画面の表示範囲の基準となる視点位置と注視点とが設定され、透視射影(透視投影)方式を用いて撮影したゲーム画像が表示されることが一般的である。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平9−6296号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記特許文献1に開示の技術は、2次元での処理を想定した処理であり、仮想3次元空間を想定する技術ではなかった。一方、上記のような透視射影方式を用いる場合は、多重スクロールを用いるまでもなく奥行き感を表現可能である。そのため、いわゆる正射影方式を用いて多重スクロールを行う場合を予期・想定した技術は知られていなかった。特に、正射影方式を用いて、かつ、多重スクロールの制御を行い、更に、画面の拡大縮小を伴うような画像処理を予期・想定した技術は知られていなかった。
【0005】
それ故に、本発明は、正射影方式、多重スクロール制御、及び、画面の拡大縮小処理を用いる画像処理において、違和感の少ない遠近感表現を演出することのできる画像処理プログラムを提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、本発明は以下のような構成を採用した。
【0007】
本発明にかかる画像処理プログラムは、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定され配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理装置のコンピュータに実行させる画像処理プログラムである。当該画像処理プログラムは、コンピュータを、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段として機能させる。レイヤー拡大縮小割合算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【0008】
上記構成により、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときに、不自然な表示を軽減し、疑似的な遠近感表現を行うことができる。
【0009】
他の構成例として、レイヤー移動速度算出手段は、所定の基準点の近くに配置されているレイヤーほど移動速度が速くなるように移動速度を算出するようにしてもよい。
【0010】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、レイヤーが所定の基準点の近くに配置されるほど拡大し、所定の基準点から遠くに配置されるほど縮小するようにしてもよい。
【0011】
上記構成例によれば、遠近感をより強調することができる。
【0012】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、所定の基準点の近くに配置されているレイヤーほど拡大する割合または縮小する割合が高くなるように各レイヤーを拡大あるいは縮小するようにしてもよい。
【0013】
上記構成例によれば、疑似的ではあるものの、違和感の少ない遠近感の表現が可能となる。
【0014】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、レイヤーが所定の基準点の近くに配置されるほど拡大し、所定の基準点から遠くに配置されるほど縮小するようにしてもよい。
【0015】
上記構成例によれば、違和感の少ない遠近感の表現が可能となる。
【0016】
更に他の構成例として、画像処理プログラムは、操作者の操作に基づいた所定条件が満たされたとき、所定の基準点を所定の1方向に移動する、または移動したと仮定する基準点移動手段としてコンピュータを更に機能させ、レイヤー拡大縮小割合算出手段は、基準点移動手段によって移動された所定の基準点の位置、または移動されたと仮定したときの所定の基準点の位置から各レイヤーまでの距離に基づいて拡大縮小の割合を算出し、レイヤー移動速度算出手段は、基準点移動手段によって移動された所定の基準点の位置、または移動したと仮定されたときの所定の基準点の位置から各レイヤーまでの距離に基づいて各レイヤーの移動速度を算出するようにしてもよい。
【0017】
上記構成例によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、違和感の少ない疑似的な遠近感表現を行うことができる。
【0018】
更に他の構成例として、各レイヤーには仮想空間内における所定の基準点から所定の1方向軸上での位置を示す奥行き値がそれぞれ設定されており、レイヤー拡大縮小割合算出手段は、奥行き値に基づいてオブジェクト画像または背景画像の拡大縮小の割合を算出し、レイヤー移動速度算出手段は、奥行き値に基づいて各レイヤーの移動速度を算出してもよい。
【0019】
上記構成例によれば、各レイヤーの移動速度の算出処理を容易な処理とすることができる。
【0020】
更に他の構成例として、画像処理装置で実行される画像処理は、画像が表示される領域である表示領域の端までオブジェクトを移動させることが可能な処理であってもよい。
【0021】
上記構成例によれば、正射影方式を用いて違和感の少ない遠近感表現を行いながら、繊細な操作感を有するゲームを提供することができる。
【0022】
更に他の構成例として、所定の基準点には仮想カメラが配置され、レイヤー拡大縮小割合算出手段は、仮想カメラからそれぞれのレイヤーまでの距離に応じて拡大縮小の割合を算出し、レイヤー移動速度算出手段は、仮想カメラからそれぞれのレイヤーまでの距離に基づき、各レイヤーの移動速度を算出するようにしてもよい。
【0023】
上記構成例によれば、正射影カメラを用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときに、不自然な表示を軽減し、疑似的な遠近感表現を行うことができる。
【0024】
更に他の構成例として、画像処理プログラムは、画像が表示される表示領域の端にレイヤーに属するオブジェクトが近づいたとき、当該オブジェクトの側面が表示されるように当該オブジェクトの画像を変更するオブジェクト側面生成手段としてコンピュータを更に機能させてもよい。
【0025】
上記構成例によれば、より違和感の少ない遠近感の表現が可能となる。
【0026】
更に他の構成例として、レイヤーに属するオブジェクトは3Dモデルのオブジェクトであり、オブジェクト側面生成手段は、オブジェクトの側面部が表示されるように当該オブジェクトを変形させる、あるいはレイヤーの移動方向に沿って当該オブジェクトを回転させることで当該オブジェクトの側面が表示されるようにしてもよい。
【0027】
上記構成例によれば、比較的簡易な処理でオブジェクトの側面を生成することができる。
【0028】
本発明の画像処理装置は、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理装置であり、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段とを備える。レイヤー拡大縮小割合算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【0029】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【0030】
本発明の画像処理方法は、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理方法であり、レイヤー拡大縮小割合算出ステップと、レイヤー移動速度算出ステップと、レイヤー制御ステップとを備える。レイヤー拡大縮小率算出ステップは、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出ステップは、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御ステップは、レイヤー拡大縮小割合算出ステップで算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出ステップで算出された移動速度で各レイヤーを所定の方向に移動させる。
【0031】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【0032】
本発明の画像処理システムは、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理システムであり、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段とを備える。レイヤー拡大縮小割合算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想3次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【0033】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【発明の効果】
【0034】
本発明によれば、正射影方式を用いた画像処理において、疑似的な遠近感表現を違和感の少ない形で演出することが可能となる。
【図面の簡単な説明】
【0035】
【図1】ゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】コントローラ7の外観構成を示す斜視図
【図4】本実施形態で想定するゲーム画面の一例
【図5】ブロックの側面部を示す図
【図6】レイヤーについて説明するための図
【図7】拡大縮小について説明するための図
【図8】拡大縮小について説明するための図
【図9】拡大縮小について説明するための図
【図10】拡大縮小について説明するための図
【図11】多重スクロールの様子を模式的に示した図
【図12】多重スクロールの様子を模式的に示した図
【図13】描画用モデルの回転または変形の例
【図14】描画用モデルの回転または変形の例
【図15】描画用モデルの回転または変形の例
【図16】ゲーム装置3の外部メインメモリ12のメモリマップを示す図
【図17】本実施形態における各レイヤーと仮想カメラとの位置関係を模式的に示す図
【図18】本実施形態にかかるゲーム処理の詳細を示すフローチャート
【図19】図18のステップS6で示したレイヤー調整制御処理の詳細を示すフローチャート
【図20】図18のステップS8で示した側面生成処理の詳細を示すフローチャート
【発明を実施するための形態】
【0036】
(ゲームシステムの全体構成)
図1を参照して、本発明の実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、およびコントローラ7を含む。本システムは、コントローラ7を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0037】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0038】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2には、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像が表示される。
【0039】
コントローラ7は、当該コントローラ7自身に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ7とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ7とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ7とゲーム装置3とは有線で接続されてもよい。
【0040】
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14等を有する。
【0041】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、およびディスクドライブ14が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSI11の内部構成については後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0042】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0043】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。より具体的には、GPU11bは、当該グラフィクスコマンドに従って3Dグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる3D座標から2D座標への座標変換などの処理や、テクスチャの張り込みなどの最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、CPU10は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをGPU11bに与える。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0044】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。また、内部メインメモリ11eは、外部メインメモリ12と同様に、プログラムや各種データを記憶するものであり、CPU10のワーク領域やバッファ領域として用いられる。
【0045】
上述のように生成された画像データおよび音声データは、図示しないAV−ICによって読み出される。AV−ICは、読み出した画像データをテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0046】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線コントローラモジュール19に接続される。無線コントローラモジュール19にはアンテナ23が接続される。
【0047】
入出力プロセッサ11aは、コントローラ7から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0048】
次に、図3を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。
【0049】
図3において、コントローラ7は、ハウジング71と、当該ハウジング71の表面に設けられた複数個の操作ボタンで構成される操作部72とを備える。本実施例のハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【0050】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0051】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。
【0052】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3本体の電源をオン/オフする電源スイッチである。
【0053】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED74a〜74dが設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED74a〜74dは、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7からゲーム装置3へ送信データを送信する際、上記コントローラ種別に応じて複数のLED74a〜74dのうち、種別に対応するLEDが点灯する。
【0054】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間にスピーカからの音を外部に放出するための音抜き孔が形成されている。
【0055】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をテレビ2に向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン72iが設けられる(図示は省略)。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0056】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)は、無線コントローラモジュール19へ送信される。コントローラ7から無線コントローラモジュール19への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。そして、ゲーム装置3のCPU10は、ゲーム装置3の無線コントローラモジュール19を介して取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。
【0057】
(ゲーム処理の概要)
次に、図4〜図15を用いて、本実施形態が想定しているゲームの概要について説明する。本実施形態で想定するゲームは、いわゆるジャンプアクションゲームである。また、本ゲームは、多人数同時プレイが可能となっている。図4は、本実施形態が想定するゲームの画面の一例である。当該ゲーム画面は、3次元仮想ゲーム空間を正射影方式で射影した画像である(換言すれば、正射影カメラを用いて撮影した画像)。ゲーム画面には、複数のプレイヤキャラクタ101、敵キャラクタ102、ブロック103の他、樹木、山などの各種背景オブジェクトや、空と雲を示す背景画像も表示されている。以下では、これらゲーム中に登場する各種キャラクタ、オブジェクト、背景画像を総称して「描画用モデル」と呼ぶ。ゲーム中に登場する各描画用モデルは、3Dモデルでモデリングされたものである。また、本ゲームでは、各プレイヤキャラクタについては、画面の端まで移動させることが可能である。つまり、画面座標系におけるプレイヤキャラクタの移動範囲としては、表示範囲全域について移動することが可能となっている。
【0058】
ここで、本願で想定するゲームが正射影方式を用いているのは、ジャンプアクションゲームである本ゲームにおいて、ドット単位の繊細な操作感をプレイヤに提供するためである。例えば、一般的な3Dゲームで用いられる透視斜影方式を用いると、上記ブロック103についていうと、3Dモデルであるブロックの側面部が表示されることがある(図5参照)。しかし、あるブロックから別のブロックにジャンプしようとする場合、このような側面部が見えている状態では、ジャンプのタイミングや着地地点までの距離感などがプレイヤにとって把握しにくいものとなる。その結果、操作性が低下してしまう。一方、正射影方式を用いれば、ブロックを正面からみた状態で表示されるため、ジャンプのタイミングや距離感などがプレイヤにとって把握しやすく、また、ジャンプするための踏切位置等についてドット単位の微調整を行うことも可能となる。その結果、繊細な操作感を提供するジャンプアクションゲームを提供することが可能となるためである。
【0059】
このように、正射影方式を用いて繊細な操作感を提供する一方で、本ゲームでは、複数のレイヤを用いた多重スクロールを利用することで、疑似的な奥行き感を表現している。
ここで、本実施形態におけるレイヤーについて説明する。図6は、当該レイヤーについて説明するための図である。図6では、レイヤーA〜レイヤーDが、正射影方式の仮想カメラの撮影方向に沿って並んで配置されている。レイヤーAが仮想カメラに一番近い位置に配置されており、レイヤーDが仮想カメラから一番遠い位置に配置されている。各レイヤーには、それぞれ複数の描画用モデルが属している(配置されている)。
【0060】
レイヤーAには、プレイヤキャラクタ101、敵キャラクタ102、ブロック103等が配置されている。いわば、直接ゲームプレイに関わるモデルが配置されている。また、レイヤーAに配置されているモデルは、それぞれコリジョンを有している。以下では、当該プレイヤキャラクタが属しているレイヤーAの事を、「基準レイヤー」と呼ぶこともある。レイヤーAに属する各描画用モデルは、上記のように3Dモデルとしてモデリングされたものである。但し、上記のように正射影方式で射影変換されるため、常に一定の角度(正面)から見たような画像で表示される。
【0061】
レイヤーBは、仮想カメラから見て、レイヤーAよりも遠く、レイヤーCよりも近い距離のものとして定義されているレイヤーである。図6の例でいうと、レイヤーBには樹木の背景オブジェクトが属している。レイヤーCは、レイヤーBよりも更に遠くに位置し、レイヤーDよりは仮想カメラに近い距離のものとして定義されているレイヤーである。レイヤーCには、山の背景オブジェクトが属している。レイヤーB,Cに属する各描画用モデルについても、3Dモデルとしてモデリングされ生成されてはいる。しかし、これらのモデルは単なる背景という扱いであるため、コリジョンは有していない。レイヤーDは、仮想カメラから一番遠い距離のものとして定義されているレイヤーである。つまり、一番奥の画像であり、空の背景画像(板状の大きなポリゴンに空の風景のテクスチャを貼り付けた描画用モデル)が属している。
【0062】
上記のような各レイヤーについて、レイヤー単位でスクロール制御が行われることで、多重スクロールが実現する。また、後述する、拡大縮小についてもレイヤー単位で行われる。
【0063】
ここで、上記のように、本ゲームでは、プレイヤキャラクタ101を画面端まで移動させることが可能であり、また、多人数同時プレイも可能となっている。そのため、複数のプレイヤキャラクタ101のそれぞれが別々の画面端に向かって移動した場合、プレイヤキャラクタが操作しにくくなることがある。このような場合でも、快適なプレイ感覚を提供するために、本ゲームでは、操作プレイヤキャラクタ間の距離が大きくなったとき、本ゲームでは、縮小表示を行い、より広い範囲が表示されるようにしている(図7(A)参照)。また、逆に、プレイヤキャラクタ同士がある程度近づいた場合(プレイヤキャラクタ間の距離がある程度小さくなった場合)は、画面拡大を行うことで、快適なプレイ感覚を提供している(図7(B)参照)。
【0064】
ここで、本ゲームにおける拡大縮小の処理技法について説明する。本ゲームは、上述したように正射影方式を用いている。そのため、透視斜影方式で行われるような、仮想カメラを仮想空間内で移動(仮想カメラの位置を変更)させてゲーム画像を生成する手法は用いていない(正射影方式では、仮想カメラを移動したとしても、拡大縮小がなされないため)。本ゲームでは、仮想カメラの位置を変更する代わりに、各レイヤーを拡大あるいは縮小する(より正確には、各レイヤーに属する各描画用モデルを拡大または縮小する)ことによって、仮想カメラが移動したかのような、つまり、仮想カメラが寄った(ズームイン)、あるいは引いた(ズームアウト)かのような効果を出している。より具体的には、例えば、図8に示すような状態で拡大を行う場合は、まず、図9に示すように、仮想カメラが所定の距離まで寄った場合を仮定(シミュレーション)し、このシミュレーションにおける仮想カメラとレイヤーとの距離を算出する。次に、この距離に基づいて、レイヤーの拡大率を決定する。そして、図10に示すように、仮想ゲーム空間内における仮想カメラの位置は実際には動かさずにレイヤーのほうを拡大する。これにより、仮想カメラが「寄った」(ズームインした)かのような表現を行っている。
【0065】
このように、本ゲームでは、複数のレイヤを用いた多重スクロールを行うと共に、ゲーム処理中に適宜拡大縮小処理が行われることがある。このような処理を行う際に、多重スクロール制御用のパラメータ(具体的にはスクロール量あるいはスクロール速度)と、上記画面の拡大縮小用のパラメータとを、個別に管理するという方法が考えられる。例えば、拡大縮小率に関しては、プレイヤキャラクタ間の距離に応じて動的に変更するが、各レイヤのスクロール速度に関しては、予め定められた速度でスクロールする、等という場合である。
【0066】
しかし、このように、スクロール用のパラメータと拡大縮小用のパラメータを個別に管理する場合、多重スクロールにおける遠景と近景との奥行き方向に沿った距離(つまり、奥行き方向における各レイヤ間の距離)を考慮した拡大縮小が行われないことがある。例えば、第1レイヤー(近景)と第2レイヤー(遠景)の2つのレイヤーがある場合を想定する。そして、このレイヤーのスクロール速度の比率について(第1レイヤー:第2レイヤー)=(2:1)の速度比で制御されているとする。このような場合において、上記のような拡大が行われたとき、例えば、第1レイヤーについては4倍に拡大されるが、第2レイヤーについては、1.8倍で拡大される、ということがある。つまり、スクロール速度と関係なく拡大縮小率が算出された結果、近景と遠景のスクロール速度の比率と近景と遠景の拡大縮小率の比率が合わないということが起こり得る。このような場合、スクロール制御における計算誤差等の影響もあり、結果的に、多重スクロール動作が不安定な動作(1フレームあたりのレイヤーの移動量が一定しない)となることがある。
【0067】
図11は、拡大または縮小していない状態における第1レイヤーと第2レイヤーのスクロールの様子を模式的に示した図である。図11では、1フレームから4フレーム目まで、第1レイヤーと第2レイヤーが、いうなれば「歩調を合わせて」移動している様子を示している。換言すれば、1フレーム当たりの移動量が一定である。
【0068】
一方、図12は、上述のように、スクロール速度の比率と拡大率とが不一致な状態で拡大したときのスクロールの様子を模式的に示した図である。この図12では、第2レイヤーの、1フレーム当たりの移動量が一定とはなっておらず、3フレーム目や5フレームにおいて、第1レイヤーを少し追い越しているような状態となっている。つまり、第2レイヤーのスクロール速度(スクロール量)が不安定な状態となっている。その結果、拡大表示されているとき、滑らかな多重スクロールが表示されずに、不安定な動きの多重スクロールが表示されてしまうことがある。
【0069】
そこで、本実施形態では、スクロール速度のパラメータとレイヤーの拡大縮小率のパラメータを一元管理する(つまり、両者を関連づけて制御する)ことで、正射影方式を用いたゲームにおいて、各レイヤーのスクロール量の比率と各レイヤーの拡大縮小の比率とでずれが生じないような処理を行い、拡大縮小、および、多重スクロール制御を行うものである。具体的には、本実施形態では、まず、各レイヤに個別に「レイヤー奥行き値」というパラメータを予め設定する。このレイヤー奥行き値が、各レイヤーの奥行き方向の並びの前後関係やレイヤー間の間隔を示す値となる。そして、このレイヤー奥行き値に基づいて、基本的な状態(ゲーム開始時の状態)における各レイヤーの拡大縮小率(以下、基本スケール値と呼ぶ)が決定される。また、このスケール値に基づいて、各レイヤの基本的なスクロール量(以下、基本スクロール量と呼ぶ)も決定される。次に、1フレーム毎の処理において、仮想カメラと各レイヤとの距離が算出される(この距離は、上記のように、仮想カメラが寄った、あるいは引いたことを想定したシミュレーション上での距離である)。次に、当該距離に基づいて、各レイヤーの上記基本スケールを調整する。更に、当該距離に基づいて、各レイヤーの基本スクロール速度を調整する。そして、この調整後のパラメータに基づいて各レイヤーを拡大縮小すると共に、多重スクロールの制御も行う。
【0070】
このように、本実施形態では、仮想カメラと各レイヤとの距離に基づいて拡大縮小用パラメータとスクロール量の双方を決定する。つまり、拡大縮小用パラメータとスクロール量とを別々に分けて管理・設定するのではなく、両者を密接に関連づけて決定するようにしている。これにより、正射影方式を用いる場合であって、拡大縮小を伴った多重スクロールが行われる場合でも、滑らかな多重スクロールが実現でき、違和感の少ない疑似的な遠近感表現が可能となる。
【0071】
更に、本実施形態では、疑似的な奥行き感を更に表現するために、次のような処理も行っている。すなわち、背景用の描画用モデル(上記のように、3Dモデルとしてモデリングされている)については、画面端に近づくにつれて、当該描画用モデルの側面部が見えるように、当該描画用モデルを回転あるいは変形させる(図13〜図15参照)。このような処理を行うことで、正射影方式を用いながらも、より奥行き感を表現しながら、違和感の無い滑らかな多重スクロールを実行することができる。
【0072】
(ゲーム処理の詳細)
以下、ゲーム装置3によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ12に記憶されるデータについて説明する。図16は、ゲーム装置3の外部メインメモリ12のメモリマップを示す図である。図16において、外部メインメモリ12は、プログラム記憶領域121およびデータ記憶領域123を含む。プログラム記憶領域121およびデータ記憶領域123のデータは、光ディスク4に記憶され、ゲームプログラム実行時には外部メインメモリ12に転送されて記憶される。
【0073】
プログラム記憶領域121は、CPU10によって実行されるゲーム処理プログラム122を記憶する。ゲーム処理プログラム122は、後述する図18のフローチャートの処理に対応するプログラムである。
【0074】
データ記憶領域123には、操作データ124、描画用モデルデータ125、レイヤー定義データ128、シミュレーション用データ134などのデータが記憶されるとともに、各種フラグも適宜記憶される。
【0075】
操作データ124は、コントローラ7からゲーム装置3へ送信されてくる操作データである。操作データ124には、操作ボタンデータ等が含まれる。操作ボタンデータは、各操作ボタン72a〜72iに対する入力状態を示すデータである。本実施形態では、コントローラ7からゲーム装置3へ1/200秒に1回の割合で操作データが送信されるので、外部メインメモリ12に記憶される操作データ124はこの割合で更新される。本実施形態においては、外部メインメモリ12には、最新の(最後に取得された)操作データのみが記憶されればよい。
【0076】
描画用モデルデータ125は、ゲーム中に登場する各種描画用モデルのデータである。描画用モデルデータ125には、キャラクタデータ126、背景モデルデータ127が含まれている。キャラクタデータ126は、プレイヤキャラクタ101や敵キャラクタ102の他、ブロック103等、コリジョンを有する各種オブジェクトであって、ゲームプレイの中核を成す各オブジェクトのデータである。本ゲームでは、上述したレイヤーAに属する各種描画用モデルのデータに該当する。
【0077】
キャラクタデータ126には、各キャラクタを一意に識別するIDや、各キャラクタの3Dモデルを生成するためのポリゴンデータ、当該3Dモデルに貼り付けるためのテクスチャデータ等が含まれている。
【0078】
背景モデルデータ127は、上記キャラクタデータ126以外の描画用モデルのデータである。つまり、コリジョンを有しない背景用の描画用モデル(以下、背景用モデル)のデータである。当該背景モデルは、主に、上記レイヤーBやレイヤーC、レイヤーDのいずれかに属することになる。
【0079】
レイヤー定義データ128は、各レイヤーに関するデータであり、各レイヤーの定義データが含まれる。各レイヤーの定義データは、レイヤーID129、レイヤー奥行き値130、基本スケール値131、基本スクロール量132、属する描画用モデルのID133等から構成される。
【0080】
レイヤーID129は、各レイヤーを識別するためのIDである。レイヤー奥行き値130は、各レイヤーの奥行き値を定義したデータである。本実施形態では、奥行き値については、図17に示すように設定されるものとする。図17は、本実施形態における各レイヤーと仮想カメラとの位置関係を模式的に示す図である。本実施形態では、レイヤーAの仮想奥行き値を”0”、レイヤーBの仮想奥行き値を”500”、レイヤーCの仮想奥行き値を”1500”、レイヤーDの仮想奥行き値を”3500”と設定する。なお、図17における「寄りカメラ」「引きカメラ」等については後述する。
【0081】
基本スケール値131は、拡大縮小が行われていないゲーム状態での各レイヤのスケールを示す値である。換言すれば、各レイヤーのデフォルトのスケール値である。
【0082】
基本スクロール量132は、拡大縮小が行われていないゲーム状態での各レイヤの1フレームあたりのスクロール量である。
【0083】
属する描画用モデルのID133は、各レイヤーに属する描画用モデルを示すためのデータであり、各描画用モデルの識別用のIDが含まれている。例えば、レイヤーAの場合は、プレイヤキャラクタ101を示すIDや敵キャラクタ102、ブロック103等を示すIDが含まれる。
【0084】
シミュレーション用データ134は、上述したようなレイヤーの拡大縮小を行うに際して用いられるデータである。上記のように、本実施形態では、拡大縮小率の算出に際して、「仮に仮想カメラがこの位置まで寄ったならば、レイヤーがどのような大きさで表示されるか」というように、仮想カメラの奥行き方向に沿った移動をシミュレーションしている。このシミュレーションにおいて用いられるデータである。シミュレーション用データ134には、カメラ仮想奥行き値135、仮想距離データ136等が含まれる。
【0085】
カメラ仮想奥行き値135は、シミュレーション上で仮想カメラを移動させたときの移動後の仮想カメラの奥行き方向における位置を示すデータである。
【0086】
仮想距離データ136は、上記カメラ仮想奥行き値で示される仮想カメラの位置(つまり、カメラを移動させたと仮定したときの位置)から、各レイヤーまでの距離を示すデータである。
【0087】
次に、図17〜図20を参照して、ゲーム装置3によって実行されるゲーム処理について説明する。但し、以下の説明では、上述したようなレイヤーの拡大縮小処理と多重スクロールに関する処理を中心に説明し、その他のゲーム処理については、詳細な説明は省略する。
【0088】
本実施形態にかかるゲーム処理では、まず、初期処理として、各レイヤーに予め設定されているレイヤー奥行き値130に基づいて、各レイヤーの上記基本スケール値が決定される。また、当該基本スケール値に基づき、基本スクロール量も決定される。つまり、レイヤーの基本状態が決定される。例えば、レイヤーAは等倍で表示され、その奥に位置するレイヤーBは0.5倍で表示された状態でゲームがスタートする。
【0089】
そして、フレーム毎に実行される処理においては、拡大または縮小が行われる際に、仮想カメラのカメラ仮想奥行き値135を考慮して上記基本スケール値および基本スクロール量を適宜調整するという処理が実行される。以下、詳細に説明するが、以下の説明において、各レイヤーと仮想カメラの位置関係については、上記図17で示したような関係である場合を例として説明する。ここで、図17について補足説明する。図17において、「寄りカメラ」と「引きカメラ」の2つのカメラが示されている。これは、仮想カメラの奥行き方向に沿った移動範囲の限界位置を示したものである。図17においては、「寄りカメラ」(ズームインに相当)は、プレイヤキャラクタが属しているレイヤーAから仮想距離500の位置にあり、「引きカメラ」(ズームアウトに相当)はレイヤーAから仮想距離1000の位置にある。これは、本実施形態では、仮想カメラは、仮想距離500〜1000の間で移動する(但し、上記のようなシミュレーションにおいて)ことを示している。つまり、仮想カメラは、レイヤーAから仮想距離500未満の位置には近づけないことを前提としている。また、仮想カメラは、レイヤーAから仮想距離1000より遠い位置には移動させないことを前提としている。
【0090】
以下、ゲーム処理の詳細な説明を行う。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、ROM/RTC13に記憶されている起動プログラムを実行し、これによって外部メインメモリ12等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムが外部メインメモリ12に読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。図18に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。また、図18に示すステップS2〜ステップS11の処理ループは、1フレーム毎に繰り返し実行される。
【0091】
まず、ステップS1において、初期化処理が実行される。具体的には、まず、レイヤー定義データ128が外部メインメモリ12から読み出され、各レイヤーのレイヤー奥行き値130が取得される。ここでは、図17で示したように、レイヤーAに”0”、レイヤーBに”500”、レイヤーCに”1500”、レイヤーDに”3500”という値が設定されているものとする。次に、当該レイヤー奥行き値130に基づいて、各レイヤの基本スケール値131が算出され、外部メインメモリ12に記憶される。
基本スケール値は、例えば、以下の式で算出される。
基本スケール値 =
寄りカメラの仮想距離/(レイヤー奥行き値+寄りカメラの仮想距離) ・・・式1
この結果、上記の数値例でいうと、基本スケール値131としては、レイヤーAは”1”、レイヤーBは”0.5”、レイヤーCは”0.25”、レイヤーDは”0.125”と算出される。
【0092】
次に、各レイヤー毎に算出された基本スケール値131に基づき、それぞれのレイヤーが縮小される。そして、仮想ゲーム空間内に、各レイヤーが適宜配置される。続いて、仮想カメラが所定の位置(例えば、レイヤーAから仮想距離750の位置)に配置される。そして、当該仮想カメラで正射影方式を用いて撮影された仮想ゲーム空間がゲーム画像として生成され、表示される。
【0093】
更に、以下の処理において用いられる「調整用関数」が設定され、適宜外部メインメモリ12に記憶される。この「調整用関数」とは、上記「寄りカメラ」〜「引きカメラ」間の距離と、各レイヤーの取り得るスケール値の最大値〜最小値との相関関係を示した関数となる。各レイヤーの取り得るスケール値の最大値は、仮想カメラが上記「寄りカメラ」の位置にあるときのレイヤーのスケール値である。また、各レイヤーのスケール値の最小値は、仮想カメラが上記「引きカメラ」の位置にあるときのレイヤーのスケール値である。この最大値および最小値は、例えば以下の式で求められる。
寄りカメラ時のレイヤースケール値 =
寄りカメラの距離/(レイヤー奥行き値+寄りカメラの距離) ・・・式2
引きカメラ時のレイヤースケール値 =
寄りカメラの距離/(レイヤー奥行き値+引きカメラの距離) ・・・式3
【0094】
上記式によって、例えば、レイヤーAについては、スケール値の幅は1〜0.5という値となる。そして、仮想距離と当該スケール値との相関関係を示す関数が適宜設定される(例えば、レイヤーAについていうと、仮想距離500という引数を与えると、スケール値”1”が返されるような関数)。
【0095】
また、初期設定処理では、上記のようなレイヤーに関する初期設定の他、ゲーム処理に関する各種初期設定も適宜行われる。
【0096】
上記のような初期設定処理が終われば、次に、ステップS2において、操作データ124が取得される。続くステップS3において、当該操作データ124に基づいて、プレイヤキャラクタ101の動作(移動等)が制御される。合わせて、敵キャラクタの動作も適宜制御される。
【0097】
次に、ステップS4において、プレイヤキャラクタ101の移動の結果、拡大または縮小の条件が満たされたか否かが判定される。本実施形態では、例えば、複数のプレイヤキャラクタ間の距離が第1の距離以下になれば、その距離に応じてレイヤーの拡大処理を行う。また、複数のプレイヤキャラクタ間の距離が第2の距離以上になれば、その距離に応じてレイヤーの縮小処理を行う。
【0098】
ステップS4の判定の結果、拡大または縮小の条件が満たされていないときは(ステップS4でNO)、ステップS5において、基本スクロール量132がレイヤー毎に算出される。本実施形態では、プレイヤキャラクタ101の移動速度に応じて画面がスクロールするため、例えば、以下の式で基本スクロール量132が算出される。
基本スクロール量=プレイヤキャラクタの移動速度×基本スケール値 ・・・式4
その後、後述するステップS7に処理が進められる。
【0099】
一方、レイヤーの拡大または縮小の条件が満たされているときは(ステップS4でYES)、次に、ステップS6において、レイヤー調整制御処理が実行される。図19は、当該ステップS6で示したレイヤー調整制御処理の詳細を示すフローチャートである。図19において、まず、ステップS21で、仮想カメラの移動のシミュレーションが行われる。例えば、上記複数のプレイヤキャラクタ間の距離に応じた距離だけ仮想カメラを奥行き方向に沿って移動させ、このときの仮想カメラの位置をカメラ仮想奥行き値135として記憶する。そして、仮想カメラを移動前の位置に戻すことが考えられる。また、その他の処理例としては、まず、上記複数のプレイヤキャラクタ間の距離に基づいて、仮想カメラの奥行き方向に沿った移動量を算出する(移動量を算出するだけで、実際には仮想カメラは移動させない)。そして、仮想カメラの現在位置に当該算出された移動量を加味して、カメラ仮想奥行き値135を算出するようにしても良い。
【0100】
次に、ステップS22において、カメラ仮想奥行き値135(つまり、仮想的に移動させた後の仮想カメラの位置)と、各レイヤとの間の仮想距離がそれぞれ算出される。例えば、上記図17の例でいうと、カメラ仮想奥行き値135がレイヤーAから800の距離を示すときは、レイヤーAについては仮想距離が800として算出され、レイヤーBについては、仮想距離が1300として算出される。
【0101】
次に、ステップS23において、各レイヤについて算出された仮想距離とそれぞれ対応するレイヤの「調整用関数」とに基づいて、調整用スケール値がレイヤ毎に算出される。これにより、各レイヤの基本スケール値131にカメラの「寄り」「引き」の具合を考慮したスケール値である調整用スケール値が算出されることになる。例えば、レイヤーAについては仮想距離800に応じたスケール値が算出され、レイヤーBについては、仮想距離1300に対応したスケール値が算出される。
【0102】
次に、ステップS24において、上記基本スケール値131に基づいて、各レイヤーの基本スクロール量が算出される。この処理は、上記ステップS5と同様の処理である。
【0103】
次に、ステップS25において、上記基本スクロール量が上記調整用スケール値に基づいて調整される。これにより、仮想カメラの「寄り」「引き」の具合が考慮されたスクロール量(以下、調整後スクロール量と呼ぶ)が算出されることになる。
【0104】
次に、ステップS26において、上記調整用スケール値に基づいて、各レイヤーに属する各描画用モデルが適宜拡大あるいは縮小される。以上で、レイヤー調整制御処理処理は終了する。
【0105】
図18に戻り、次に、ステップS7において、各レイヤーの移動(スクロール)が行われる。レイヤの移動量(スクロール量)については、上記ステップS4でNOと判定されていたとき(すなわち、拡大・縮小が行われない状態)は、各レイヤーの基本スクロール量132に基づいて各レイヤーの移動が行われる。また、上記ステップS4でYESと判定されていたとき(すなわち、拡大・縮小が行われている状態)は、上記のように仮想カメラの「寄り」「引き」具合を考慮して調整された調整後スクロール量に基づいて各レイヤーの移動が行われる。
【0106】
次に、ステップS8において、側面生成処理が行われる。この処理は、上記レイヤーの移動の結果、画面の端に近づいた背景用モデルについて側面部分を見せるための処理である。図20は、上記ステップS8で示した側面生成処理の詳細を示すフローチャートである。図20において、まず、ステップS41において、プレイヤキャラクタ101が属していないレイヤー(本実施形態では、レイヤーB〜D)のうちから、以下の処理の対象とするレイヤー(処理対象レイヤー)が一つ選択される。
【0107】
次に、ステップS42において、当該処理対象レイヤーに属する描画用モデルのそれぞれについて、側面部の生成が行われる。例えば、次のような処理が行われる。まず、画面座標系のX軸における中心位置(つまり、表示領域の中央)から、描画用モデルまでの距離が算出される。次に、この距離に応じて、描画用モデルを回転させることで、当該描画用モデルの側面部が仮想カメラに映るようにする。また、中心位置からの距離が遠いほど画面の端に近いと考えられるため、中心位置からの距離が大きくなるにつれてより多く回転させるようにする。これにより、疑似的な遠近感が表現できる。
【0108】
次に、ステップS43において、プレイヤキャラクタ101が属していないレイヤーの全てについて上記処理を実行下か否かが判定される。その結果、まだ未処理のレイヤーが残っているときは(ステップS43でNO)、上記ステップS41に戻り、処理が繰り返される。全てのレイヤーを処理したときは(ステップS43でYES)、側面部生成処理は終了する。
【0109】
図18に戻り、次に、ステップS9において、その他の各種ゲーム処理が実行される。例えば、コリジョン判定とその結果に伴う各種処理が実行される。
【0110】
次に、ステップS10において、上記のような処理が反映された仮想ゲーム空間を正射影方式で撮影したゲーム画像が生成され、表示される。
【0111】
次に、ステップS11において、ゲーム終了のための条件が満たされたか否かが判定され、満たされていないときは(ステップS11でNO)、上記ステップS2に戻り処理が繰り返される。一方、満たされたときは(ステップS11でYES)、当該ゲーム処理を終了する。以上で、本実施形態にかかるゲーム処理の説明を終了する。
【0112】
このように、本実施形態では、拡大縮小時の仮想カメラの位置と各レイヤーとの距離(上記実施形態では、シミュレーションすることで算出)に基づいて、各レイヤーのスケール(拡大縮小率)とスクロール量の双方を決定している。これにより、正射影方式と多重スクロールを用いたゲームであって、画面の拡大縮小処理を伴うような場合であっても、滑らかなズームイン、ズームアウトの演出と違和感の無い多重スクロールとを実現でき、且つ、疑似的な遠近感を表現することが可能となる。
【0113】
なお、上記実施形態では、レイヤー奥行き値に沿った順番で各レイヤーを仮想空間に配置した例を示したが、配置位置については、必ずしもこの順番通りに配置しなくてもよい。例えば、レイヤー奥行き値に基づいて各レイヤーの描画順序を制御するようにしてもよい。つまり、レイヤー奥行き値が最も大きいレイヤーを最初に描画し、レイヤー奥行き値が最も小さいレイヤーの描画順序が一番最後になるように制御してもよい。
【0114】
また、上記実施形態では、仮想3次元空間内に仮想カメラを配置した場合を例に挙げたが、必ずしも仮想カメラを用いなくても良く、仮想3次元空間内に設定される所定の基準点から上記レイヤー等を正射影して得られる画像を生成する処理を行っても良い。
【0115】
また、上述したような実施形態にかかる処理を実行するためのプログラムは、任意のコンピュータ読み取り可能な記憶媒体(例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、半導体メモリカード、ROM、RAMなど)に格納され得る。
【0116】
また、上記実施形態においては、拡大縮小時の仮想カメラの位置と各レイヤーとの距離に応じて各レイヤーのスケール(拡大縮小率)とスクロール量の双方を決定するための一連の処理が単一の装置(ゲーム装置3)において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【産業上の利用可能性】
【0117】
本発明にかかる画像処理プログラム、画像処理装置、画像処理方法および画像処理システムは、正射影方式を用いた画像であって多重スクロールと画面の拡大縮小を行う場合に、違和感の少ない遠近感表現を行うことができ、ゲーム装置やゲーム処理が実行される各種情報処理端末等に有用である。
【符号の説明】
【0118】
1…ゲームシステム
2…モニタ
2a…スピーカ
3…ゲーム装置
4…光ディスク
7…コントローラ
10…CPU
11…システムLSI
11a…入出力プロセッサ
11b…GPU
11c…DSP
11d…VRAM
11e…内部メインメモリ
12…外部メインメモリ
13…ROM/RTC
14…ディスクドライブ
17…フラッシュメモリ
19…無線コントローラモジュール
23…アンテナ
【特許請求の範囲】
【請求項1】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理装置のコンピュータに実行させる画像処理プログラムであって、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段として前記コンピュータを機能させる、画像処理プログラム。
【請求項2】
前記レイヤー移動速度算出手段は、前記所定の基準点の近くに配置されているレイヤーほど移動速度が速くなるように前記移動速度を算出する、請求項1に記載の画像処理プログラム。
【請求項3】
前記レイヤー拡大縮小割合算出手段は、前記レイヤーが前記所定の基準点の近くに配置されるほど拡大し、前記所定の基準点から遠くに配置されるほど縮小する、請求項1に記載の画像処理プログラム。
【請求項4】
前記レイヤー拡大縮小割合算出手段は、前記所定の基準点の近くに配置されているレイヤーほど拡大する割合または縮小する割合が高くなるように前記各レイヤーを拡大あるいは縮小する、請求項1に記載の画像処理プログラム。
【請求項5】
前記レイヤー拡大縮小割合算出手段は、前記レイヤーが前記所定の基準点の近くに配置されるほど拡大し、前記所定の基準点から遠くに配置されるほど縮小する、請求項1に記載の画像処理プログラム。
【請求項6】
前記画像処理プログラムは、操作者の操作に基づいた所定条件が満たされたとき、前記所定の基準点を所定の1方向に移動する、または移動したと仮定する基準点移動手段として前記コンピュータを更に機能させ、
前記レイヤー拡大縮小割合算出手段は、前記基準点移動手段によって移動された前記所定の基準点の位置、または移動されたと仮定したときの当該所定の基準点の位置から前記各レイヤーまでの距離に基づいて前記拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記基準点移動手段によって移動された前記所定の基準点の位置、または移動したと仮定されたときの当該所定の基準点の位置から前記各レイヤーまでの距離に基づいて、前記各レイヤーの移動速度を算出する、請求項1〜5のいずれかに記載の画像処理プログラム。
【請求項7】
前記各レイヤーには前記仮想空間内における前記所定の基準点から所定の1方向軸上での位置を示す奥行き値がそれぞれ設定されており、
前記レイヤー拡大縮小割合算出手段は、前記奥行き値に基づいて前記オブジェクト画像または前記背景画像の拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記奥行き値に基づいて各レイヤーの移動速度を算出する、請求項1〜6のいずれかに記載の画像処理プログラム。
【請求項8】
前記画像処理装置で実行される画像処理は、画像が表示される領域である表示領域の端までオブジェクトを移動させることが可能な処理である、請求項1〜7のいずれかに記載の画像処理プログラム。
【請求項9】
前記所定の基準点には仮想カメラが配置され、
前記レイヤー拡大縮小割合算出手段は、前記仮想カメラから前記それぞれのレイヤーまでの距離に応じて前記拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記仮想カメラから前記それぞれのレイヤーまでの距離に基づき、前記各レイヤーの移動速度を算出する、請求項1〜8のいずれかに記載の画像処理プログラム。
【請求項10】
前記画像処理プログラムは、前記画像が表示される表示領域の端に前記レイヤーに属するオブジェクトが近づいたとき、当該オブジェクトの側面が表示されるように当該オブジェクトの画像を変更するオブジェクト側面生成手段として前記コンピュータを更に機能させる、請求項1〜9のいずれかに記載の画像処理プログラム。
【請求項11】
前記レイヤーに属するオブジェクトは3Dモデルのオブジェクトであり、
前記オブジェクト側面生成手段は、前記オブジェクトの側面部が表示されるように当該オブジェクトを変形させる、あるいは前記レイヤーの移動方向に沿って当該オブジェクトを回転させることで当該オブジェクトの側面が表示されるようにする、請求項10に記載の画像処理プログラム。
【請求項12】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理装置であって、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段とを備える、画像処理装置。
【請求項13】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理方法であって、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出ステップと、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出ステップと、
前記レイヤー拡大縮小割合算出ステップで算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出ステップで算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御ステップを含む、画像処理方法。
【請求項14】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理システムであって、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段とを備える、画像処理システム。
【請求項1】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理装置のコンピュータに実行させる画像処理プログラムであって、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段として前記コンピュータを機能させる、画像処理プログラム。
【請求項2】
前記レイヤー移動速度算出手段は、前記所定の基準点の近くに配置されているレイヤーほど移動速度が速くなるように前記移動速度を算出する、請求項1に記載の画像処理プログラム。
【請求項3】
前記レイヤー拡大縮小割合算出手段は、前記レイヤーが前記所定の基準点の近くに配置されるほど拡大し、前記所定の基準点から遠くに配置されるほど縮小する、請求項1に記載の画像処理プログラム。
【請求項4】
前記レイヤー拡大縮小割合算出手段は、前記所定の基準点の近くに配置されているレイヤーほど拡大する割合または縮小する割合が高くなるように前記各レイヤーを拡大あるいは縮小する、請求項1に記載の画像処理プログラム。
【請求項5】
前記レイヤー拡大縮小割合算出手段は、前記レイヤーが前記所定の基準点の近くに配置されるほど拡大し、前記所定の基準点から遠くに配置されるほど縮小する、請求項1に記載の画像処理プログラム。
【請求項6】
前記画像処理プログラムは、操作者の操作に基づいた所定条件が満たされたとき、前記所定の基準点を所定の1方向に移動する、または移動したと仮定する基準点移動手段として前記コンピュータを更に機能させ、
前記レイヤー拡大縮小割合算出手段は、前記基準点移動手段によって移動された前記所定の基準点の位置、または移動されたと仮定したときの当該所定の基準点の位置から前記各レイヤーまでの距離に基づいて前記拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記基準点移動手段によって移動された前記所定の基準点の位置、または移動したと仮定されたときの当該所定の基準点の位置から前記各レイヤーまでの距離に基づいて、前記各レイヤーの移動速度を算出する、請求項1〜5のいずれかに記載の画像処理プログラム。
【請求項7】
前記各レイヤーには前記仮想空間内における前記所定の基準点から所定の1方向軸上での位置を示す奥行き値がそれぞれ設定されており、
前記レイヤー拡大縮小割合算出手段は、前記奥行き値に基づいて前記オブジェクト画像または前記背景画像の拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記奥行き値に基づいて各レイヤーの移動速度を算出する、請求項1〜6のいずれかに記載の画像処理プログラム。
【請求項8】
前記画像処理装置で実行される画像処理は、画像が表示される領域である表示領域の端までオブジェクトを移動させることが可能な処理である、請求項1〜7のいずれかに記載の画像処理プログラム。
【請求項9】
前記所定の基準点には仮想カメラが配置され、
前記レイヤー拡大縮小割合算出手段は、前記仮想カメラから前記それぞれのレイヤーまでの距離に応じて前記拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記仮想カメラから前記それぞれのレイヤーまでの距離に基づき、前記各レイヤーの移動速度を算出する、請求項1〜8のいずれかに記載の画像処理プログラム。
【請求項10】
前記画像処理プログラムは、前記画像が表示される表示領域の端に前記レイヤーに属するオブジェクトが近づいたとき、当該オブジェクトの側面が表示されるように当該オブジェクトの画像を変更するオブジェクト側面生成手段として前記コンピュータを更に機能させる、請求項1〜9のいずれかに記載の画像処理プログラム。
【請求項11】
前記レイヤーに属するオブジェクトは3Dモデルのオブジェクトであり、
前記オブジェクト側面生成手段は、前記オブジェクトの側面部が表示されるように当該オブジェクトを変形させる、あるいは前記レイヤーの移動方向に沿って当該オブジェクトを回転させることで当該オブジェクトの側面が表示されるようにする、請求項10に記載の画像処理プログラム。
【請求項12】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理装置であって、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段とを備える、画像処理装置。
【請求項13】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理方法であって、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出ステップと、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出ステップと、
前記レイヤー拡大縮小割合算出ステップで算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出ステップで算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御ステップを含む、画像処理方法。
【請求項14】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想3次元空間を正射影で射影変換した画像を表示する画像処理システムであって、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想3次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段とを備える、画像処理システム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2012−108790(P2012−108790A)
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願番号】特願2010−258090(P2010−258090)
【出願日】平成22年11月18日(2010.11.18)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願日】平成22年11月18日(2010.11.18)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]