(57)【特許請求の範囲】
【請求項１】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想３次元空間を正射影で射影変換した画像を表示する画像処理装置のコンピュータに実行させる画像処理プログラムであって、
前記仮想３次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想３次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段として前記コンピュータを機能させる、画像処理プログラム。
【請求項２】
前記レイヤー移動速度算出手段は、前記所定の基準点の近くに配置されているレイヤーほど移動速度が速くなるように前記移動速度を算出する、請求項１に記載の画像処理プログラム。
【請求項３】
前記レイヤー移動速度算出手段は、レイヤーが前記所定の基準点の近くに配置されるほど移動速度が速くなるように算出し、前記所定の基準点から遠くに配置されるほど移動速度が遅くなるように算出する、請求項１に記載の画像処理プログラム。
【請求項４】
前記レイヤー拡大縮小割合算出手段は、前記所定の基準点の近くに配置されているレイヤーほど拡大する割合または縮小する割合が高くなるように前記各レイヤーを拡大あるいは縮小する、請求項１に記載の画像処理プログラム。
【請求項５】
前記レイヤー拡大縮小割合算出手段は、前記レイヤーが前記所定の基準点の近くに配置されるほど拡大するように割合を算出し、前記所定の基準点から遠くに配置されるほど縮小するように割合を算出する、請求項１に記載の画像処理プログラム。
【請求項６】
前記画像処理プログラムは、操作者の操作に基づいた所定条件が満たされたとき、前記所定の基準点を所定の１方向に移動する、または移動したと仮定する基準点移動手段として前記コンピュータを更に機能させ、
前記レイヤー拡大縮小割合算出手段は、前記基準点移動手段によって移動された前記所定の基準点の位置、または移動されたと仮定したときの当該所定の基準点の位置から前記各レイヤーまでの距離に基づいて前記拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記基準点移動手段によって移動された前記所定の基準点の位置、または移動したと仮定されたときの当該所定の基準点の位置から前記各レイヤーまでの距離に基づいて、前記各レイヤーの移動速度を算出する、請求項１〜５のいずれかに記載の画像処理プログラム。
【請求項７】
前記各レイヤーには前記仮想空間内における前記所定の基準点から所定の１方向軸上での位置を示す奥行き値がそれぞれ設定されており、
前記レイヤー拡大縮小割合算出手段は、前記奥行き値に基づいて前記オブジェクト画像または前記背景画像の拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記奥行き値に基づいて各レイヤーの移動速度を算出する、請求項１〜６のいずれかに記載の画像処理プログラム。
【請求項８】
前記画像処理装置で実行される画像処理は、画像が表示される領域である表示領域の端までオブジェクトを移動させることが可能な処理である、請求項１〜７のいずれかに記載の画像処理プログラム。
【請求項９】
前記所定の基準点には仮想カメラが配置され、
前記レイヤー拡大縮小割合算出手段は、前記仮想カメラから前記それぞれのレイヤーまでの距離に応じて前記拡大縮小の割合を算出し、
前記レイヤー移動速度算出手段は、前記仮想カメラから前記それぞれのレイヤーまでの距離に基づき、前記各レイヤーの移動速度を算出する、請求項１〜８のいずれかに記載の画像処理プログラム。
【請求項１０】
前記画像処理プログラムは、前記画像が表示される表示領域の端に前記レイヤーに属するオブジェクトが近づいたとき、当該オブジェクトの側面が表示されるように当該オブジェクトの画像を変更するオブジェクト側面生成手段として前記コンピュータを更に機能させる、請求項１〜９のいずれかに記載の画像処理プログラム。
【請求項１１】
前記レイヤーに属するオブジェクトは３Ｄモデルのオブジェクトであり、
前記オブジェクト側面生成手段は、前記オブジェクトの側面部が表示されるように当該オブジェクトを変形させる、あるいは前記レイヤーの移動方向に沿って当該オブジェクトを回転させることで当該オブジェクトの側面が表示されるようにする、請求項１０に記載の画像処理プログラム。
【請求項１２】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想３次元空間を正射影で射影変換した画像を表示する画像処理装置であって、
前記仮想３次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想３次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段とを備える、画像処理装置。
【請求項１３】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想３次元空間を正射影で射影変換した画像を表示する画像処理方法であって、
前記仮想３次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出ステップと、
前記仮想３次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出ステップと、
前記レイヤー拡大縮小割合算出ステップで算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出ステップで算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御ステップを含む、画像処理方法。
【請求項１４】
多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想３次元空間を正射影で射影変換した画像を表示する画像処理システムであって、
前記仮想３次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出するレイヤー拡大縮小割合算出手段と、
前記仮想３次元空間の所定の基準点から前記それぞれのレイヤーまでの距離に基づき、前記多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出するレイヤー移動速度算出手段と、
前記レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、前記各レイヤーの画像を拡大あるいは縮小すると共に、前記レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させるレイヤー制御手段とを備える、画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、正射影方式を用いた画像処理に関し、より特定的には、正射影方式を用いた画像処理における多重スクロール制御および拡大縮小処理に関する。
【背景技術】
【０００２】
従来から、奥行き感・遠近感を表現するために、いわゆる多重スクロールを行う表示方法が知られている（例えば特許文献１）。この表示方法は、２次元画像処理を想定した手法である。一方、近年では、ゲーム画面の３次元表示処理を行うゲームシステムが一般的となっている。このようなゲームシステムでは、仮想的な３次元空間に設定されたゲームフィールド内において、それぞれ所定の座標位置に配置されたキャラクタオブジェクトや各種構造物などを表示対象として、ゲーム画面の表示範囲の基準となる視点位置と注視点とが設定され、透視射影（透視投影）方式を用いて撮影したゲーム画像が表示されることが一般的である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−６２９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記特許文献１に開示の技術は、２次元での処理を想定した処理であり、仮想３次元空間を想定する技術ではなかった。一方、上記のような透視射影方式を用いる場合は、多重スクロールを用いるまでもなく奥行き感を表現可能である。そのため、いわゆる正射影方式を用いて多重スクロールを行う場合を予期・想定した技術は知られていなかった。特に、正射影方式を用いて、かつ、多重スクロールの制御を行い、更に、画面の拡大縮小を伴うような画像処理を予期・想定した技術は知られていなかった。
【０００５】
それ故に、本発明は、正射影方式、多重スクロール制御、及び、画面の拡大縮小処理を用いる画像処理において、違和感の少ない遠近感表現を演出することのできる画像処理プログラムを提供することである。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は以下のような構成を採用した。
【０００７】
本発明にかかる画像処理プログラムは、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定され配置された仮想３次元空間を正射影で射影変換した画像を表示する画像処理装置のコンピュータに実行させる画像処理プログラムである。当該画像処理プログラムは、コンピュータを、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段として機能させる。レイヤー拡大縮小割合算出手段は、仮想３次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想３次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【０００８】
上記構成により、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときに、不自然な表示を軽減し、疑似的な遠近感表現を行うことができる。
【０００９】
他の構成例として、レイヤー移動速度算出手段は、所定の基準点の近くに配置されているレイヤーほど移動速度が速くなるように移動速度を算出するようにしてもよい。
【００１０】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、レイヤーが所定の基準点の近くに配置されるほど拡大し、所定の基準点から遠くに配置されるほど縮小するようにしてもよい。
【００１１】
上記構成例によれば、遠近感をより強調することができる。
【００１２】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、所定の基準点の近くに配置されているレイヤーほど拡大する割合または縮小する割合が高くなるように各レイヤーを拡大あるいは縮小するようにしてもよい。
【００１３】
上記構成例によれば、疑似的ではあるものの、違和感の少ない遠近感の表現が可能となる。
【００１４】
更に他の構成例として、レイヤー拡大縮小割合算出手段は、レイヤーが所定の基準点の近くに配置されるほど拡大し、所定の基準点から遠くに配置されるほど縮小するようにしてもよい。
【００１５】
上記構成例によれば、違和感の少ない遠近感の表現が可能となる。
【００１６】
更に他の構成例として、画像処理プログラムは、操作者の操作に基づいた所定条件が満たされたとき、所定の基準点を所定の１方向に移動する、または移動したと仮定する基準点移動手段としてコンピュータを更に機能させ、レイヤー拡大縮小割合算出手段は、基準点移動手段によって移動された所定の基準点の位置、または移動されたと仮定したときの所定の基準点の位置から各レイヤーまでの距離に基づいて拡大縮小の割合を算出し、レイヤー移動速度算出手段は、基準点移動手段によって移動された所定の基準点の位置、または移動したと仮定されたときの所定の基準点の位置から各レイヤーまでの距離に基づいて各レイヤーの移動速度を算出するようにしてもよい。
【００１７】
上記構成例によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、違和感の少ない疑似的な遠近感表現を行うことができる。
【００１８】
更に他の構成例として、各レイヤーには仮想空間内における所定の基準点から所定の１方向軸上での位置を示す奥行き値がそれぞれ設定されており、レイヤー拡大縮小割合算出手段は、奥行き値に基づいてオブジェクト画像または背景画像の拡大縮小の割合を算出し、レイヤー移動速度算出手段は、奥行き値に基づいて各レイヤーの移動速度を算出してもよい。
【００１９】
上記構成例によれば、各レイヤーの移動速度の算出処理を容易な処理とすることができる。
【００２０】
更に他の構成例として、画像処理装置で実行される画像処理は、画像が表示される領域である表示領域の端までオブジェクトを移動させることが可能な処理であってもよい。
【００２１】
上記構成例によれば、正射影方式を用いて違和感の少ない遠近感表現を行いながら、繊細な操作感を有するゲームを提供することができる。
【００２２】
更に他の構成例として、所定の基準点には仮想カメラが配置され、レイヤー拡大縮小割合算出手段は、仮想カメラからそれぞれのレイヤーまでの距離に応じて拡大縮小の割合を算出し、レイヤー移動速度算出手段は、仮想カメラからそれぞれのレイヤーまでの距離に基づき、各レイヤーの移動速度を算出するようにしてもよい。
【００２３】
上記構成例によれば、正射影カメラを用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときに、不自然な表示を軽減し、疑似的な遠近感表現を行うことができる。
【００２４】
更に他の構成例として、画像処理プログラムは、画像が表示される表示領域の端にレイヤーに属するオブジェクトが近づいたとき、当該オブジェクトの側面が表示されるように当該オブジェクトの画像を変更するオブジェクト側面生成手段としてコンピュータを更に機能させてもよい。
【００２５】
上記構成例によれば、より違和感の少ない遠近感の表現が可能となる。
【００２６】
更に他の構成例として、レイヤーに属するオブジェクトは３Ｄモデルのオブジェクトであり、オブジェクト側面生成手段は、オブジェクトの側面部が表示されるように当該オブジェクトを変形させる、あるいはレイヤーの移動方向に沿って当該オブジェクトを回転させることで当該オブジェクトの側面が表示されるようにしてもよい。
【００２７】
上記構成例によれば、比較的簡易な処理でオブジェクトの側面を生成することができる。
【００２８】
本発明の画像処理装置は、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想３次元空間を正射影で射影変換した画像を表示する画像処理装置であり、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段とを備える。レイヤー拡大縮小割合算出手段は、仮想３次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想３次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【００２９】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【００３０】
本発明の画像処理方法は、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想３次元空間を正射影で射影変換した画像を表示する画像処理方法であり、レイヤー拡大縮小割合算出ステップと、レイヤー移動速度算出ステップと、レイヤー制御ステップとを備える。レイヤー拡大縮小率算出ステップは、仮想３次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出ステップは、仮想３次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御ステップは、レイヤー拡大縮小割合算出ステップで算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出ステップで算出された移動速度で各レイヤーを所定の方向に移動させる。
【００３１】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【００３２】
本発明の画像処理システムは、多重スクロールにおけるそれぞれのスクロール制御対象であるレイヤーが複数設定されて配置された仮想３次元空間を正射影で射影変換した画像を表示する画像処理システムであり、レイヤー拡大縮小割合算出手段と、レイヤー移動速度算出手段と、レイヤー制御手段とを備える。レイヤー拡大縮小割合算出手段は、仮想３次元空間の所定の基準点からそれぞれのレイヤーまでの距離に応じて、各レイヤーに属するオブジェクト画像または背景画像の拡大縮小の割合を各レイヤー毎に算出する。レイヤー移動速度算出手段は、仮想３次元空間の所定の基準点からそれぞれのレイヤーまでの距離に基づき、多重スクロールにおける各レイヤーの移動速度を各レイヤー毎に算出する。レイヤー制御手段は、レイヤー拡大縮小割合算出手段で算出された拡大縮小の割合に基づき、各レイヤーの画像を拡大あるいは縮小すると共に、レイヤー移動速度算出手段で算出された移動速度で各レイヤーを所定の方向に移動させる。
【００３３】
上記構成によれば、正射影方式を用いて画像処理を行うときであって、多重スクロールと画面の拡大縮小の双方を実現するときでも、疑似的な遠近感表現を行うことができる。
【発明の効果】
【００３４】
本発明によれば、正射影方式を用いた画像処理において、疑似的な遠近感表現を違和感の少ない形で演出することが可能となる。
【図面の簡単な説明】
【００３５】
【図１】ゲームシステム１の外観図
【図２】ゲーム装置３の構成を示すブロック図
【図３】コントローラ７の外観構成を示す斜視図
【図４】本実施形態で想定するゲーム画面の一例
【図５】ブロックの側面部を示す図
【図６】レイヤーについて説明するための図
【図７】拡大縮小について説明するための図
【図８】拡大縮小について説明するための図
【図９】拡大縮小について説明するための図
【図１０】拡大縮小について説明するための図
【図１１】多重スクロールの様子を模式的に示した図
【図１２】多重スクロールの様子を模式的に示した図
【図１３】描画用モデルの回転または変形の例
【図１４】描画用モデルの回転または変形の例
【図１５】描画用モデルの回転または変形の例
【図１６】ゲーム装置３の外部メインメモリ１２のメモリマップを示す図
【図１７】本実施形態における各レイヤーと仮想カメラとの位置関係を模式的に示す図
【図１８】本実施形態にかかるゲーム処理の詳細を示すフローチャート
【図１９】図１８のステップＳ６で示したレイヤー調整制御処理の詳細を示すフローチャート
【図２０】図１８のステップＳ８で示した側面生成処理の詳細を示すフローチャート
【発明を実施するための形態】
【００３６】
（ゲームシステムの全体構成）
図１を参照して、本発明の実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、およびコントローラ７を含む。本システムは、コントローラ７を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００３７】
ゲーム装置３には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００３８】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２には、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像が表示される。
【００３９】
コントローラ７は、当該コントローラ７自身に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ７とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ７とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ７とゲーム装置３とは有線で接続されてもよい。
【００４０】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４等を有する。
【００４１】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、およびディスクドライブ１４が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩ１１の内部構成については後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅまたは外部メインメモリ１２に読み出したデータを書き込む。
【００４２】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、および内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００４３】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。より具体的には、ＧＰＵ１１ｂは、当該グラフィクスコマンドに従って３Ｄグラフィックスの表示に必要な計算処理、例えば、レンダリングの前処理にあたる３Ｄ座標から２Ｄ座標への座標変換などの処理や、テクスチャの張り込みなどの最終的なレンダリング処理を行うことで、ゲーム画像データを生成する。ここで、ＣＰＵ１０は、グラフィクスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラムをＧＰＵ１１ｂに与える。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００４４】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。また、内部メインメモリ１１ｅは、外部メインメモリ１２と同様に、プログラムや各種データを記憶するものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。
【００４５】
上述のように生成された画像データおよび音声データは、図示しないＡＶ−ＩＣによって読み出される。ＡＶ−ＩＣは、読み出した画像データをテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００４６】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線コントローラモジュール１９に接続される。無線コントローラモジュール１９にはアンテナ２３が接続される。
【００４７】
入出力プロセッサ１１ａは、コントローラ７から送信される操作データをアンテナ２３および無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅまたは外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００４８】
次に、図３を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。
【００４９】
図３において、コントローラ７は、ハウジング７１と、当該ハウジング７１の表面に設けられた複数個の操作ボタンで構成される操作部７２とを備える。本実施例のハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさであり、例えばプラスチック成型によって形成されている。
【００５０】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００５１】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、およびＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。
【００５２】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３本体の電源をオン／オフする電源スイッチである。
【００５３】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７４ａ〜７４ｄが設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７４ａ〜７４ｄは、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７からゲーム装置３へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７４ａ〜７４ｄのうち、種別に対応するＬＥＤが点灯する。
【００５４】
また、ハウジング７１上面には、操作ボタン７２ｂおよび操作ボタン７２ｅ〜７２ｇの間にスピーカからの音を外部に放出するための音抜き孔が形成されている。
【００５５】
一方、ハウジング７１下面には、凹部が形成されている。ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をテレビ２に向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の傾斜面には、操作ボタン７２ｉが設けられる（図示は省略）。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００５６】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）は、無線コントローラモジュール１９へ送信される。コントローラ７から無線コントローラモジュール１９への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。そして、ゲーム装置３のＣＰＵ１０は、ゲーム装置３の無線コントローラモジュール１９を介して取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。
【００５７】
（ゲーム処理の概要）
次に、図４〜図１５を用いて、本実施形態が想定しているゲームの概要について説明する。本実施形態で想定するゲームは、いわゆるジャンプアクションゲームである。また、本ゲームは、多人数同時プレイが可能となっている。図４は、本実施形態が想定するゲームの画面の一例である。当該ゲーム画面は、３次元仮想ゲーム空間を正射影方式で射影した画像である（換言すれば、正射影カメラを用いて撮影した画像）。ゲーム画面には、複数のプレイヤキャラクタ１０１、敵キャラクタ１０２、ブロック１０３の他、樹木、山などの各種背景オブジェクトや、空と雲を示す背景画像も表示されている。以下では、これらゲーム中に登場する各種キャラクタ、オブジェクト、背景画像を総称して「描画用モデル」と呼ぶ。ゲーム中に登場する各描画用モデルは、３Ｄモデルでモデリングされたものである。また、本ゲームでは、各プレイヤキャラクタについては、画面の端まで移動させることが可能である。つまり、画面座標系におけるプレイヤキャラクタの移動範囲としては、表示範囲全域について移動することが可能となっている。
【００５８】
ここで、本願で想定するゲームが正射影方式を用いているのは、ジャンプアクションゲームである本ゲームにおいて、ドット単位の繊細な操作感をプレイヤに提供するためである。例えば、一般的な３Ｄゲームで用いられる透視斜影方式を用いると、上記ブロック１０３についていうと、３Ｄモデルであるブロックの側面部が表示されることがある（図５参照）。しかし、あるブロックから別のブロックにジャンプしようとする場合、このような側面部が見えている状態では、ジャンプのタイミングや着地地点までの距離感などがプレイヤにとって把握しにくいものとなる。その結果、操作性が低下してしまう。一方、正射影方式を用いれば、ブロックを正面からみた状態で表示されるため、ジャンプのタイミングや距離感などがプレイヤにとって把握しやすく、また、ジャンプするための踏切位置等についてドット単位の微調整を行うことも可能となる。その結果、繊細な操作感を提供するジャンプアクションゲームを提供することが可能となるためである。
【００５９】
このように、正射影方式を用いて繊細な操作感を提供する一方で、本ゲームでは、複数のレイヤを用いた多重スクロールを利用することで、疑似的な奥行き感を表現している。
ここで、本実施形態におけるレイヤーについて説明する。図６は、当該レイヤーについて説明するための図である。図６では、レイヤーＡ〜レイヤーＤが、正射影方式の仮想カメラの撮影方向に沿って並んで配置されている。レイヤーＡが仮想カメラに一番近い位置に配置されており、レイヤーＤが仮想カメラから一番遠い位置に配置されている。各レイヤーには、それぞれ複数の描画用モデルが属している（配置されている）。
【００６０】
レイヤーＡには、プレイヤキャラクタ１０１、敵キャラクタ１０２、ブロック１０３等が配置されている。いわば、直接ゲームプレイに関わるモデルが配置されている。また、レイヤーＡに配置されているモデルは、それぞれコリジョンを有している。以下では、当該プレイヤキャラクタが属しているレイヤーＡの事を、「基準レイヤー」と呼ぶこともある。レイヤーＡに属する各描画用モデルは、上記のように３Ｄモデルとしてモデリングされたものである。但し、上記のように正射影方式で射影変換されるため、常に一定の角度（正面）から見たような画像で表示される。
【００６１】
レイヤーＢは、仮想カメラから見て、レイヤーＡよりも遠く、レイヤーＣよりも近い距離のものとして定義されているレイヤーである。図６の例でいうと、レイヤーＢには樹木の背景オブジェクトが属している。レイヤーＣは、レイヤーＢよりも更に遠くに位置し、レイヤーＤよりは仮想カメラに近い距離のものとして定義されているレイヤーである。レイヤーＣには、山の背景オブジェクトが属している。レイヤーＢ，Ｃに属する各描画用モデルについても、３Ｄモデルとしてモデリングされ生成されてはいる。しかし、これらのモデルは単なる背景という扱いであるため、コリジョンは有していない。レイヤーＤは、仮想カメラから一番遠い距離のものとして定義されているレイヤーである。つまり、一番奥の画像であり、空の背景画像（板状の大きなポリゴンに空の風景のテクスチャを貼り付けた描画用モデル）が属している。
【００６２】
上記のような各レイヤーについて、レイヤー単位でスクロール制御が行われることで、多重スクロールが実現する。また、後述する、拡大縮小についてもレイヤー単位で行われる。
【００６３】
ここで、上記のように、本ゲームでは、プレイヤキャラクタ１０１を画面端まで移動させることが可能であり、また、多人数同時プレイも可能となっている。そのため、複数のプレイヤキャラクタ１０１のそれぞれが別々の画面端に向かって移動した場合、プレイヤキャラクタが操作しにくくなることがある。このような場合でも、快適なプレイ感覚を提供するために、本ゲームでは、操作プレイヤキャラクタ間の距離が大きくなったとき、本ゲームでは、縮小表示を行い、より広い範囲が表示されるようにしている（図７（Ａ）参照）。また、逆に、プレイヤキャラクタ同士がある程度近づいた場合（プレイヤキャラクタ間の距離がある程度小さくなった場合）は、画面拡大を行うことで、快適なプレイ感覚を提供している（図７（Ｂ）参照）。
【００６４】
ここで、本ゲームにおける拡大縮小の処理技法について説明する。本ゲームは、上述したように正射影方式を用いている。そのため、透視斜影方式で行われるような、仮想カメラを仮想空間内で移動（仮想カメラの位置を変更）させてゲーム画像を生成する手法は用いていない（正射影方式では、仮想カメラを移動したとしても、拡大縮小がなされないため）。本ゲームでは、仮想カメラの位置を変更する代わりに、各レイヤーを拡大あるいは縮小する（より正確には、各レイヤーに属する各描画用モデルを拡大または縮小する）ことによって、仮想カメラが移動したかのような、つまり、仮想カメラが寄った（ズームイン）、あるいは引いた（ズームアウト）かのような効果を出している。より具体的には、例えば、図８に示すような状態で拡大を行う場合は、まず、図９に示すように、仮想カメラが所定の距離まで寄った場合を仮定（シミュレーション）し、このシミュレーションにおける仮想カメラとレイヤーとの距離を算出する。次に、この距離に基づいて、レイヤーの拡大率を決定する。そして、図１０に示すように、仮想ゲーム空間内における仮想カメラの位置は実際には動かさずにレイヤーのほうを拡大する。これにより、仮想カメラが「寄った」（ズームインした）かのような表現を行っている。
【００６５】
このように、本ゲームでは、複数のレイヤを用いた多重スクロールを行うと共に、ゲーム処理中に適宜拡大縮小処理が行われることがある。このような処理を行う際に、多重スクロール制御用のパラメータ（具体的にはスクロール量あるいはスクロール速度）と、上記画面の拡大縮小用のパラメータとを、個別に管理するという方法が考えられる。例えば、拡大縮小率に関しては、プレイヤキャラクタ間の距離に応じて動的に変更するが、各レイヤのスクロール速度に関しては、予め定められた速度でスクロールする、等という場合である。
【００６６】
しかし、このように、スクロール用のパラメータと拡大縮小用のパラメータを個別に管理する場合、多重スクロールにおける遠景と近景との奥行き方向に沿った距離（つまり、奥行き方向における各レイヤ間の距離）を考慮した拡大縮小が行われないことがある。例えば、第１レイヤー（近景）と第２レイヤー（遠景）の２つのレイヤーがある場合を想定する。そして、このレイヤーのスクロール速度の比率について（第１レイヤー：第２レイヤー）＝（２：１）の速度比で制御されているとする。このような場合において、上記のような拡大が行われたとき、例えば、第１レイヤーについては４倍に拡大されるが、第２レイヤーについては、１．８倍で拡大される、ということがある。つまり、スクロール速度と関係なく拡大縮小率が算出された結果、近景と遠景のスクロール速度の比率と近景と遠景の拡大縮小率の比率が合わないということが起こり得る。このような場合、スクロール制御における計算誤差等の影響もあり、結果的に、多重スクロール動作が不安定な動作（１フレームあたりのレイヤーの移動量が一定しない）となることがある。
【００６７】
図１１は、拡大または縮小していない状態における第１レイヤーと第２レイヤーのスクロールの様子を模式的に示した図である。図１１では、１フレームから４フレーム目まで、第１レイヤーと第２レイヤーが、いうなれば「歩調を合わせて」移動している様子を示している。換言すれば、１フレーム当たりの移動量が一定である。
【００６８】
一方、図１２は、上述のように、スクロール速度の比率と拡大率とが不一致な状態で拡大したときのスクロールの様子を模式的に示した図である。この図１２では、第２レイヤーの、１フレーム当たりの移動量が一定とはなっておらず、３フレーム目や５フレームにおいて、第１レイヤーを少し追い越しているような状態となっている。つまり、第２レイヤーのスクロール速度（スクロール量）が不安定な状態となっている。その結果、拡大表示されているとき、滑らかな多重スクロールが表示されずに、不安定な動きの多重スクロールが表示されてしまうことがある。
【００６９】
そこで、本実施形態では、スクロール速度のパラメータとレイヤーの拡大縮小率のパラメータを一元管理する（つまり、両者を関連づけて制御する）ことで、正射影方式を用いたゲームにおいて、各レイヤーのスクロール量の比率と各レイヤーの拡大縮小の比率とでずれが生じないような処理を行い、拡大縮小、および、多重スクロール制御を行うものである。具体的には、本実施形態では、まず、各レイヤに個別に「レイヤー奥行き値」というパラメータを予め設定する。このレイヤー奥行き値が、各レイヤーの奥行き方向の並びの前後関係やレイヤー間の間隔を示す値となる。そして、このレイヤー奥行き値に基づいて、基本的な状態（ゲーム開始時の状態）における各レイヤーの拡大縮小率（以下、基本スケール値と呼ぶ）が決定される。また、このスケール値に基づいて、各レイヤの基本的なスクロール量（以下、基本スクロール量と呼ぶ）も決定される。次に、１フレーム毎の処理において、仮想カメラと各レイヤとの距離が算出される（この距離は、上記のように、仮想カメラが寄った、あるいは引いたことを想定したシミュレーション上での距離である）。次に、当該距離に基づいて、各レイヤーの上記基本スケールを調整する。更に、当該距離に基づいて、各レイヤーの基本スクロール速度を調整する。そして、この調整後のパラメータに基づいて各レイヤーを拡大縮小すると共に、多重スクロールの制御も行う。
【００７０】
このように、本実施形態では、仮想カメラと各レイヤとの距離に基づいて拡大縮小用パラメータとスクロール量の双方を決定する。つまり、拡大縮小用パラメータとスクロール量とを別々に分けて管理・設定するのではなく、両者を密接に関連づけて決定するようにしている。これにより、正射影方式を用いる場合であって、拡大縮小を伴った多重スクロールが行われる場合でも、滑らかな多重スクロールが実現でき、違和感の少ない疑似的な遠近感表現が可能となる。
【００７１】
更に、本実施形態では、疑似的な奥行き感を更に表現するために、次のような処理も行っている。すなわち、背景用の描画用モデル（上記のように、３Ｄモデルとしてモデリングされている）については、画面端に近づくにつれて、当該描画用モデルの側面部が見えるように、当該描画用モデルを回転あるいは変形させる（図１３〜図１５参照）。このような処理を行うことで、正射影方式を用いながらも、より奥行き感を表現しながら、違和感の無い滑らかな多重スクロールを実行することができる。
【００７２】
（ゲーム処理の詳細）
以下、ゲーム装置３によって実行されるゲーム処理の詳細を説明する。まず、ゲーム処理の際に外部メインメモリ１２に記憶されるデータについて説明する。図１６は、ゲーム装置３の外部メインメモリ１２のメモリマップを示す図である。図１６において、外部メインメモリ１２は、プログラム記憶領域１２１およびデータ記憶領域１２３を含む。プログラム記憶領域１２１およびデータ記憶領域１２３のデータは、光ディスク４に記憶され、ゲームプログラム実行時には外部メインメモリ１２に転送されて記憶される。
【００７３】
プログラム記憶領域１２１は、ＣＰＵ１０によって実行されるゲーム処理プログラム１２２を記憶する。ゲーム処理プログラム１２２は、後述する図１８のフローチャートの処理に対応するプログラムである。
【００７４】
データ記憶領域１２３には、操作データ１２４、描画用モデルデータ１２５、レイヤー定義データ１２８、シミュレーション用データ１３４などのデータが記憶されるとともに、各種フラグも適宜記憶される。
【００７５】
操作データ１２４は、コントローラ７からゲーム装置３へ送信されてくる操作データである。操作データ１２４には、操作ボタンデータ等が含まれる。操作ボタンデータは、各操作ボタン７２ａ〜７２ｉに対する入力状態を示すデータである。本実施形態では、コントローラ７からゲーム装置３へ１／２００秒に１回の割合で操作データが送信されるので、外部メインメモリ１２に記憶される操作データ１２４はこの割合で更新される。本実施形態においては、外部メインメモリ１２には、最新の（最後に取得された）操作データのみが記憶されればよい。
【００７６】
描画用モデルデータ１２５は、ゲーム中に登場する各種描画用モデルのデータである。描画用モデルデータ１２５には、キャラクタデータ１２６、背景モデルデータ１２７が含まれている。キャラクタデータ１２６は、プレイヤキャラクタ１０１や敵キャラクタ１０２の他、ブロック１０３等、コリジョンを有する各種オブジェクトであって、ゲームプレイの中核を成す各オブジェクトのデータである。本ゲームでは、上述したレイヤーＡに属する各種描画用モデルのデータに該当する。
【００７７】
キャラクタデータ１２６には、各キャラクタを一意に識別するＩＤや、各キャラクタの３Ｄモデルを生成するためのポリゴンデータ、当該３Ｄモデルに貼り付けるためのテクスチャデータ等が含まれている。
【００７８】
背景モデルデータ１２７は、上記キャラクタデータ１２６以外の描画用モデルのデータである。つまり、コリジョンを有しない背景用の描画用モデル（以下、背景用モデル）のデータである。当該背景モデルは、主に、上記レイヤーＢやレイヤーＣ、レイヤーＤのいずれかに属することになる。
【００７９】
レイヤー定義データ１２８は、各レイヤーに関するデータであり、各レイヤーの定義データが含まれる。各レイヤーの定義データは、レイヤーＩＤ１２９、レイヤー奥行き値１３０、基本スケール値１３１、基本スクロール量１３２、属する描画用モデルのＩＤ１３３等から構成される。
【００８０】
レイヤーＩＤ１２９は、各レイヤーを識別するためのＩＤである。レイヤー奥行き値１３０は、各レイヤーの奥行き値を定義したデータである。本実施形態では、奥行き値については、図１７に示すように設定されるものとする。図１７は、本実施形態における各レイヤーと仮想カメラとの位置関係を模式的に示す図である。本実施形態では、レイヤーＡの仮想奥行き値を”０”、レイヤーＢの仮想奥行き値を”５００”、レイヤーＣの仮想奥行き値を”１５００”、レイヤーＤの仮想奥行き値を”３５００”と設定する。なお、図１７における「寄りカメラ」「引きカメラ」等については後述する。
【００８１】
基本スケール値１３１は、拡大縮小が行われていないゲーム状態での各レイヤのスケールを示す値である。換言すれば、各レイヤーのデフォルトのスケール値である。
【００８２】
基本スクロール量１３２は、拡大縮小が行われていないゲーム状態での各レイヤの１フレームあたりのスクロール量である。
【００８３】
属する描画用モデルのＩＤ１３３は、各レイヤーに属する描画用モデルを示すためのデータであり、各描画用モデルの識別用のＩＤが含まれている。例えば、レイヤーＡの場合は、プレイヤキャラクタ１０１を示すＩＤや敵キャラクタ１０２、ブロック１０３等を示すＩＤが含まれる。
【００８４】
シミュレーション用データ１３４は、上述したようなレイヤーの拡大縮小を行うに際して用いられるデータである。上記のように、本実施形態では、拡大縮小率の算出に際して、「仮に仮想カメラがこの位置まで寄ったならば、レイヤーがどのような大きさで表示されるか」というように、仮想カメラの奥行き方向に沿った移動をシミュレーションしている。このシミュレーションにおいて用いられるデータである。シミュレーション用データ１３４には、カメラ仮想奥行き値１３５、仮想距離データ１３６等が含まれる。
【００８５】
カメラ仮想奥行き値１３５は、シミュレーション上で仮想カメラを移動させたときの移動後の仮想カメラの奥行き方向における位置を示すデータである。
【００８６】
仮想距離データ１３６は、上記カメラ仮想奥行き値で示される仮想カメラの位置（つまり、カメラを移動させたと仮定したときの位置）から、各レイヤーまでの距離を示すデータである。
【００８７】
次に、図１７〜図２０を参照して、ゲーム装置３によって実行されるゲーム処理について説明する。但し、以下の説明では、上述したようなレイヤーの拡大縮小処理と多重スクロールに関する処理を中心に説明し、その他のゲーム処理については、詳細な説明は省略する。
【００８８】
本実施形態にかかるゲーム処理では、まず、初期処理として、各レイヤーに予め設定されているレイヤー奥行き値１３０に基づいて、各レイヤーの上記基本スケール値が決定される。また、当該基本スケール値に基づき、基本スクロール量も決定される。つまり、レイヤーの基本状態が決定される。例えば、レイヤーＡは等倍で表示され、その奥に位置するレイヤーＢは０．５倍で表示された状態でゲームがスタートする。
【００８９】
そして、フレーム毎に実行される処理においては、拡大または縮小が行われる際に、仮想カメラのカメラ仮想奥行き値１３５を考慮して上記基本スケール値および基本スクロール量を適宜調整するという処理が実行される。以下、詳細に説明するが、以下の説明において、各レイヤーと仮想カメラの位置関係については、上記図１７で示したような関係である場合を例として説明する。ここで、図１７について補足説明する。図１７において、「寄りカメラ」と「引きカメラ」の２つのカメラが示されている。これは、仮想カメラの奥行き方向に沿った移動範囲の限界位置を示したものである。図１７においては、「寄りカメラ」（ズームインに相当）は、プレイヤキャラクタが属しているレイヤーＡから仮想距離５００の位置にあり、「引きカメラ」（ズームアウトに相当）はレイヤーＡから仮想距離１０００の位置にある。これは、本実施形態では、仮想カメラは、仮想距離５００〜１０００の間で移動する（但し、上記のようなシミュレーションにおいて）ことを示している。つまり、仮想カメラは、レイヤーＡから仮想距離５００未満の位置には近づけないことを前提としている。また、仮想カメラは、レイヤーＡから仮想距離１０００より遠い位置には移動させないことを前提としている。
【００９０】
以下、ゲーム処理の詳細な説明を行う。ゲーム装置３の電源が投入されると、ゲーム装置３のＣＰＵ１０は、ＲＯＭ／ＲＴＣ１３に記憶されている起動プログラムを実行し、これによって外部メインメモリ１２等の各ユニットが初期化される。そして、光ディスク４に記憶されたゲームプログラムが外部メインメモリ１２に読み込まれ、ＣＰＵ１０によって当該ゲームプログラムの実行が開始される。図１８に示すフローチャートは、以上の処理が完了した後に行われるゲーム処理を示すフローチャートである。また、図１８に示すステップＳ２〜ステップＳ１１の処理ループは、１フレーム毎に繰り返し実行される。
【００９１】
まず、ステップＳ１において、初期化処理が実行される。具体的には、まず、レイヤー定義データ１２８が外部メインメモリ１２から読み出され、各レイヤーのレイヤー奥行き値１３０が取得される。ここでは、図１７で示したように、レイヤーＡに”０”、レイヤーＢに”５００”、レイヤーＣに”１５００”、レイヤーＤに”３５００”という値が設定されているものとする。次に、当該レイヤー奥行き値１３０に基づいて、各レイヤの基本スケール値１３１が算出され、外部メインメモリ１２に記憶される。
基本スケール値は、例えば、以下の式で算出される。
基本スケール値  ＝
寄りカメラの仮想距離／（レイヤー奥行き値＋寄りカメラの仮想距離）  ・・・式１
この結果、上記の数値例でいうと、基本スケール値１３１としては、レイヤーＡは”１”、レイヤーＢは”０．５”、レイヤーＣは”０．２５”、レイヤーＤは”０．１２５”と算出される。
【００９２】
次に、各レイヤー毎に算出された基本スケール値１３１に基づき、それぞれのレイヤーが縮小される。そして、仮想ゲーム空間内に、各レイヤーが適宜配置される。続いて、仮想カメラが所定の位置（例えば、レイヤーＡから仮想距離７５０の位置）に配置される。そして、当該仮想カメラで正射影方式を用いて撮影された仮想ゲーム空間がゲーム画像として生成され、表示される。
【００９３】
更に、以下の処理において用いられる「調整用関数」が設定され、適宜外部メインメモリ１２に記憶される。この「調整用関数」とは、上記「寄りカメラ」〜「引きカメラ」間の距離と、各レイヤーの取り得るスケール値の最大値〜最小値との相関関係を示した関数となる。各レイヤーの取り得るスケール値の最大値は、仮想カメラが上記「寄りカメラ」の位置にあるときのレイヤーのスケール値である。また、各レイヤーのスケール値の最小値は、仮想カメラが上記「引きカメラ」の位置にあるときのレイヤーのスケール値である。この最大値および最小値は、例えば以下の式で求められる。
寄りカメラ時のレイヤースケール値  ＝
寄りカメラの距離／（レイヤー奥行き値＋寄りカメラの距離）  ・・・式２
引きカメラ時のレイヤースケール値  ＝
寄りカメラの距離／（レイヤー奥行き値＋引きカメラの距離）  ・・・式３
【００９４】
上記式によって、例えば、レイヤーＡについては、スケール値の幅は１〜０．５という値となる。そして、仮想距離と当該スケール値との相関関係を示す関数が適宜設定される（例えば、レイヤーＡについていうと、仮想距離５００という引数を与えると、スケール値”１”が返されるような関数）。
【００９５】
また、初期設定処理では、上記のようなレイヤーに関する初期設定の他、ゲーム処理に関する各種初期設定も適宜行われる。
【００９６】
上記のような初期設定処理が終われば、次に、ステップＳ２において、操作データ１２４が取得される。続くステップＳ３において、当該操作データ１２４に基づいて、プレイヤキャラクタ１０１の動作（移動等）が制御される。合わせて、敵キャラクタの動作も適宜制御される。
【００９７】
次に、ステップＳ４において、プレイヤキャラクタ１０１の移動の結果、拡大または縮小の条件が満たされたか否かが判定される。本実施形態では、例えば、複数のプレイヤキャラクタ間の距離が第１の距離以下になれば、その距離に応じてレイヤーの拡大処理を行う。また、複数のプレイヤキャラクタ間の距離が第２の距離以上になれば、その距離に応じてレイヤーの縮小処理を行う。
【００９８】
ステップＳ４の判定の結果、拡大または縮小の条件が満たされていないときは（ステップＳ４でＮＯ）、ステップＳ５において、基本スクロール量１３２がレイヤー毎に算出される。本実施形態では、プレイヤキャラクタ１０１の移動速度に応じて画面がスクロールするため、例えば、以下の式で基本スクロール量１３２が算出される。
基本スクロール量＝プレイヤキャラクタの移動速度×基本スケール値  ・・・式４
その後、後述するステップＳ７に処理が進められる。
【００９９】
一方、レイヤーの拡大または縮小の条件が満たされているときは（ステップＳ４でＹＥＳ）、次に、ステップＳ６において、レイヤー調整制御処理が実行される。図１９は、当該ステップＳ６で示したレイヤー調整制御処理の詳細を示すフローチャートである。図１９において、まず、ステップＳ２１で、仮想カメラの移動のシミュレーションが行われる。例えば、上記複数のプレイヤキャラクタ間の距離に応じた距離だけ仮想カメラを奥行き方向に沿って移動させ、このときの仮想カメラの位置をカメラ仮想奥行き値１３５として記憶する。そして、仮想カメラを移動前の位置に戻すことが考えられる。また、その他の処理例としては、まず、上記複数のプレイヤキャラクタ間の距離に基づいて、仮想カメラの奥行き方向に沿った移動量を算出する（移動量を算出するだけで、実際には仮想カメラは移動させない）。そして、仮想カメラの現在位置に当該算出された移動量を加味して、カメラ仮想奥行き値１３５を算出するようにしても良い。
【０１００】
次に、ステップＳ２２において、カメラ仮想奥行き値１３５（つまり、仮想的に移動させた後の仮想カメラの位置）と、各レイヤとの間の仮想距離がそれぞれ算出される。例えば、上記図１７の例でいうと、カメラ仮想奥行き値１３５がレイヤーＡから８００の距離を示すときは、レイヤーＡについては仮想距離が８００として算出され、レイヤーＢについては、仮想距離が１３００として算出される。
【０１０１】
次に、ステップＳ２３において、各レイヤについて算出された仮想距離とそれぞれ対応するレイヤの「調整用関数」とに基づいて、調整用スケール値がレイヤ毎に算出される。これにより、各レイヤの基本スケール値１３１にカメラの「寄り」「引き」の具合を考慮したスケール値である調整用スケール値が算出されることになる。例えば、レイヤーＡについては仮想距離８００に応じたスケール値が算出され、レイヤーＢについては、仮想距離１３００に対応したスケール値が算出される。
【０１０２】
次に、ステップＳ２４において、上記基本スケール値１３１に基づいて、各レイヤーの基本スクロール量が算出される。この処理は、上記ステップＳ５と同様の処理である。
【０１０３】
次に、ステップＳ２５において、上記基本スクロール量が上記調整用スケール値に基づいて調整される。これにより、仮想カメラの「寄り」「引き」の具合が考慮されたスクロール量（以下、調整後スクロール量と呼ぶ）が算出されることになる。
【０１０４】
次に、ステップＳ２６において、上記調整用スケール値に基づいて、各レイヤーに属する各描画用モデルが適宜拡大あるいは縮小される。以上で、レイヤー調整制御処理は終了する。
【０１０５】
図１８に戻り、次に、ステップＳ７において、各レイヤーの移動（スクロール）が行われる。レイヤの移動量（スクロール量）については、上記ステップＳ４でＮＯと判定されていたとき（すなわち、拡大・縮小が行われない状態）は、各レイヤーの基本スクロール量１３２に基づいて各レイヤーの移動が行われる。また、上記ステップＳ４でＹＥＳと判定されていたとき（すなわち、拡大・縮小が行われている状態）は、上記のように仮想カメラの「寄り」「引き」具合を考慮して調整された調整後スクロール量に基づいて各レイヤーの移動が行われる。
【０１０６】
次に、ステップＳ８において、側面生成処理が行われる。この処理は、上記レイヤーの移動の結果、画面の端に近づいた背景用モデルについて側面部分を見せるための処理である。図２０は、上記ステップＳ８で示した側面生成処理の詳細を示すフローチャートである。図２０において、まず、ステップＳ４１において、プレイヤキャラクタ１０１が属していないレイヤー（本実施形態では、レイヤーＢ〜Ｄ）のうちから、以下の処理の対象とするレイヤー（処理対象レイヤー）が一つ選択される。
【０１０７】
次に、ステップＳ４２において、当該処理対象レイヤーに属する描画用モデルのそれぞれについて、側面部の生成が行われる。例えば、次のような処理が行われる。まず、画面座標系のＸ軸における中心位置（つまり、表示領域の中央）から、描画用モデルまでの距離が算出される。次に、この距離に応じて、描画用モデルを回転させることで、当該描画用モデルの側面部が仮想カメラに映るようにする。また、中心位置からの距離が遠いほど画面の端に近いと考えられるため、中心位置からの距離が大きくなるにつれてより多く回転させるようにする。これにより、疑似的な遠近感が表現できる。
【０１０８】
次に、ステップＳ４３において、プレイヤキャラクタ１０１が属していないレイヤーの全てについて上記処理を実行下か否かが判定される。その結果、まだ未処理のレイヤーが残っているときは（ステップＳ４３でＮＯ）、上記ステップＳ４１に戻り、処理が繰り返される。全てのレイヤーを処理したときは（ステップＳ４３でＹＥＳ）、側面部生成処理は終了する。
【０１０９】
図１８に戻り、次に、ステップＳ９において、その他の各種ゲーム処理が実行される。例えば、コリジョン判定とその結果に伴う各種処理が実行される。
【０１１０】
次に、ステップＳ１０において、上記のような処理が反映された仮想ゲーム空間を正射影方式で撮影したゲーム画像が生成され、表示される。
【０１１１】
次に、ステップＳ１１において、ゲーム終了のための条件が満たされたか否かが判定され、満たされていないときは（ステップＳ１１でＮＯ）、上記ステップＳ２に戻り処理が繰り返される。一方、満たされたときは（ステップＳ１１でＹＥＳ）、当該ゲーム処理を終了する。以上で、本実施形態にかかるゲーム処理の説明を終了する。
【０１１２】
このように、本実施形態では、拡大縮小時の仮想カメラの位置と各レイヤーとの距離（上記実施形態では、シミュレーションすることで算出）に基づいて、各レイヤーのスケール（拡大縮小率）とスクロール量の双方を決定している。これにより、正射影方式と多重スクロールを用いたゲームであって、画面の拡大縮小処理を伴うような場合であっても、滑らかなズームイン、ズームアウトの演出と違和感の無い多重スクロールとを実現でき、且つ、疑似的な遠近感を表現することが可能となる。
【０１１３】
なお、上記実施形態では、レイヤー奥行き値に沿った順番で各レイヤーを仮想空間に配置した例を示したが、配置位置については、必ずしもこの順番通りに配置しなくてもよい。例えば、レイヤー奥行き値に基づいて各レイヤーの描画順序を制御するようにしてもよい。つまり、レイヤー奥行き値が最も大きいレイヤーを最初に描画し、レイヤー奥行き値が最も小さいレイヤーの描画順序が一番最後になるように制御してもよい。
【０１１４】
また、上記実施形態では、仮想３次元空間内に仮想カメラを配置した場合を例に挙げたが、必ずしも仮想カメラを用いなくても良く、仮想３次元空間内に設定される所定の基準点から上記レイヤー等を正射影して得られる画像を生成する処理を行っても良い。
【０１１５】
また、上述したような実施形態にかかる処理を実行するためのプログラムは、任意のコンピュータ読み取り可能な記憶媒体（例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、半導体メモリカード、ＲＯＭ、ＲＡＭなど）に格納され得る。
【０１１６】
また、上記実施形態においては、拡大縮小時の仮想カメラの位置と各レイヤーとの距離に応じて各レイヤーのスケール（拡大縮小率）とスクロール量の双方を決定するための一連の処理が単一の装置（ゲーム装置３）において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。さらには、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【産業上の利用可能性】
【０１１７】
本発明にかかる画像処理プログラム、画像処理装置、画像処理方法および画像処理システムは、正射影方式を用いた画像であって多重スクロールと画面の拡大縮小を行う場合に、違和感の少ない遠近感表現を行うことができ、ゲーム装置やゲーム処理が実行される各種情報処理端末等に有用である。
【符号の説明】
【０１１８】
１…ゲームシステム
２…モニタ
２ａ…スピーカ
３…ゲーム装置
４…光ディスク
７…コントローラ
１０…ＣＰＵ
１１…システムＬＳＩ
１１ａ…入出力プロセッサ
１１ｂ…ＧＰＵ
１１ｃ…ＤＳＰ
１１ｄ…ＶＲＡＭ
１１ｅ…内部メインメモリ
１２…外部メインメモリ
１３…ＲＯＭ／ＲＴＣ
１４…ディスクドライブ
１７…フラッシュメモリ
１９…無線コントローラモジュール
２３…アンテナ
【図１】
0005643617.tif 000002
【図２】
0005643617.tif 000003
【図３】
0005643617.tif 000004
【図４】
0005643617.tif 000005
【図５】
0005643617.tif 000006
【図６】
0005643617.tif 000007
【図７】
0005643617.tif 000008
【図８】
0005643617.tif 000009
【図９】
0005643617.tif 000010
【図１０】
0005643617.tif 000011
【図１１】
0005643617.tif 000012
【図１２】
0005643617.tif 000013
【図１３】
0005643617.tif 000014
【図１４】
0005643617.tif 000015
【図１５】
0005643617.tif 000016
【図１６】
0005643617.tif 000017
【図１７】
0005643617.tif 000018
【図１８】
0005643617.tif 000019
【図１９】
0005643617.tif 000020
【図２０】
0005643617.tif 000021