(57)【特許請求の範囲】
【請求項１】
仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面の、当該仮想三次元空間に配置された仮想カメラから見た画像を描画する画像処理プログラムであって、当該画像処理プログラムは、コンピュータに、
前記仮想平面を、多角形からなる複数の領域に、前記仮想カメラからの距離が近い程、各領域の面積を小さくするべく分割する平面分割ステップ、
前記複数の領域にそれぞれ対応する多角形を構成する頂点毎に、前記仮想平面からの距離を示す距離情報を記憶手段から読み出す第１距離読出ステップ、
前記複数の領域にそれぞれ対応する多角形を構成する各頂点から、前記第１距離読出ステップにおいて読み出された距離情報が示す距離だけ、前記仮想平面に垂直な方向に離間した位置の座標を求める第１座標算出ステップ、
前記第１座標算出ステップにおいて求められた座標に対応する点を、ポリゴンを規定する頂点であるポリゴン頂点として、前記複数の領域毎に略同数のポリゴンを生成するポリゴン生成ステップ、及び、
前記ポリゴン生成ステップにおいて生成されたポリゴンを前記仮想カメラから見た画像を描画する描画ステップ、を実行させ、
前記平面分割ステップは、前記複数の領域毎の前記仮想カメラから見た画像の大きさを示すサイズ評価値をそれぞれ求めるサイズ評価値算出ステップを含み、
前記サイズ評価値算出ステップにおいて求められたサイズ評価値を、予め設定された閾値以下とするべく、前記仮想平面を分割する、画像処理プログラム。
【請求項２】
前記サイズ評価値算出ステップは、前記複数の領域にそれぞれ対応する多角形に内接又は外接する円を大円とする球の前記仮想カメラから見た画像の面積を、前記サイズ評価値として求める、請求項１に記載の画像処理プログラム。
【請求項３】
前記平面分割ステップは、
前記仮想平面を予め設定された第１所定数の領域に分割する第１分割ステップ、
前記第１分割ステップにおいて生成された領域毎に、前記サイズ評価値算出ステップにおいて求められたサイズ評価値が、それぞれ、前記閾値以下であるか否かを判定する分割要否判定ステップ、及び、
前記分割要否判定ステップにおいて前記閾値以下ではないと判定された領域を、更に前記第１所定数の領域に分割する第２分割ステップ、を更に含み、
前記分割要否判定ステップは、前記第２分割ステップにおいて新たに生成された各領域について、前記サイズ評価値算出ステップにおいて求められたサイズ評価値が、それぞれ、前記閾値以下であるか否かを判定し、
生成された全ての領域の前記サイズ評価値が予め設定された閾値以下となるまで、前記分割要否判定ステップ及び前記第２分割ステップを繰り返し実行する、請求項１に記載の画像処理プログラム。
【請求項４】
前記第１分割ステップは、前記仮想平面を前記第１所定数の領域に均等に分割し、
前記第２分割ステップは、前記分割要否判定ステップにおいて前記閾値以下ではないと判定された領域を、前記第１所定数の領域に均等に分割する、請求項３に記載の画像処理プログラム。
【請求項５】
前記仮想平面は、四角形の平面であり、
前記多角形は、四角形であって、
前記第１分割ステップは、前記四角形の仮想平面の互いに対向する２つの辺の中点を結ぶ２本の直線で、当該四角形の仮想平面を４等分し、
前記第２分割ステップは、前記分割要否判定ステップにおいて前記閾値以下ではないと判定された四角形の領域の互いに対向する２つの辺の中点を結ぶ２本の直線で、当該四角形の領域を４等分する、請求項４に記載の画像処理プログラム。
【請求項６】
前記画像処理プログラムは、前記平面分割ステップにおいて生成された複数の領域を、それぞれ、予め設定された第２所定数の四角形の領域である小領域に均等に分割する再分割ステップを、前記コンピュータに更に実行させ、
前記第１距離読出ステップは、前記再分割ステップにおいて生成された四角形の領域を構成する頂点毎に、前記距離情報を前記記憶手段から読み出し、
前記第１座標算出ステップは、前記再分割ステップにおいて生成された四角形の領域を構成する各頂点から、前記第１距離読出ステップにおいて読み出された距離情報が示す距離だけ、前記仮想平面に垂直な方向に離間した位置の座標を求め、
前記ポリゴン生成ステップは、前記第１座標算出ステップにおいて求められた座標に対応する点を、前記ポリゴン頂点とするポリゴンを生成する、請求項５に記載の画像処理プログラム。
【請求項７】
前記ポリゴン生成ステップは、
前記再分割ステップにおいて生成された四角形の小領域毎に、当該四角形の小領域を対角線で分割して得られる２つの三角形の領域にそれぞれ対応する２個の三角形ポリゴンを生成する三角形生成ステップ、を含む、請求項６に記載の画像処理プログラム。
【請求項８】
前記再分割ステップは、前記平面分割ステップにおいて生成された四角形の領域毎に、該四角形の各辺方向にそれぞれ偶数個の小領域に均等に分割し、
前記三角形生成ステップは、
前記第２所定数の小領域の内、前記平面分割ステップにおいて生成された各領域に対応する四角形を構成する辺の一部を、前記小領域に対応する四角形のいずれかの辺として含む小領域である外周小領域を抽出する外周抽出ステップ、及び、
前記外周抽出ステップにおいて抽出された外周小領域の内、
該外周小領域が前記平面分割ステップにおいて生成された領域に対応する四角形を構成する頂点を含む場合には、該外周小領域を構成する四角形をそれぞれ分割する対角線として、該頂点を含む対角線を選択し、
該外周小領域が前記平面分割ステップにおいて生成された領域に対応する四角形を構成する頂点を含まない場合には、該外周小領域を構成する四角形をそれぞれ分割する対角線として、隣接する外周小領域の対角線が互いに略直交するべく対角線を選択する対角線選択ステップ、を含む、請求項７に記載の画像処理プログラム。
【請求項９】
前記ポリゴン生成ステップは、前記平面分割ステップにおいて生成された四角形の領域毎に、当該四角形の領域を対角線で分割して得られる２つの三角領域にそれぞれ対応する２個の三角形ポリゴンを生成する三角形生成ステップを含む、請求項５に記載の画像処理プログラム。
【請求項１０】
前記画像処理プログラムは、前記平面分割ステップにおいて生成された各領域が、前記仮想カメラから見た画像に全く含まれない領域である視野外領域であるか否かを判定する視野判定ステップ、及び、
前記視野判定ステップにおいて視野外領域であると判定された領域については、前記第１距離読出ステップ、第１座標算出ステップ、及び、ポリゴン生成ステップの処理対象から除外する領域除外ステップを、前記コンピュータに更に実行させる、請求項１に記載の画像処理プログラム。
【請求項１１】
前記画像処理プログラムは、
法線ベクトル情報を生成する対象の点である基準点として、前記記憶手段に、前記距離情報が対応付けて格納された前記仮想平面上の点を順次設定する基準点設定ステップ、
前記仮想平面内において、前記基準点から予め設定された第１方向に予め設定された単位距離だけ離間した２つの点を設定し、前記基準点から前記第１方向と直交する方向である第２方向に前記単位距離だけ離間した２つの点を設定する外周点設定ステップ、
前記基準点設定ステップにおいて設定された基準点及び前記外周点設定ステップにおいて設定された４つの点に対応する前記距離情報を前記記憶手段から読み出す第２距離読出ステップ、
前記基準点及び４つの点から、それぞれ、前記第２距離読出ステップにおいて読み出された距離情報が示す距離だけ、前記仮想平面に垂直な方向に離間した位置の座標を求める第２座標算出ステップ、
前記第２座標算出ステップにおいて求められた座標に対応する５つの点の内、前記基準点に対応する点と、前記第１方向に離間した２つの点のいずれか一方に対応する点と、前記第２方向に離間した２つの点のいずれか一方に対応する点と、を頂点とする４つの三角形ポリゴンの法線ベクトルをそれぞれ求める法線ベクトル算出ステップ、及び、
前記法線ベクトル算出ステップにおいて算出された４つの法線ベクトルの平均値を算出し、前記記憶手段に、前記基準点の前記仮想平面上の位置を示す情報と対応付けて記録する平均算出ステップを、前記コンピュータに更に実行させ、
前記ポリゴン生成ステップは、前記ポリゴン頂点毎に、対応する法線ベクトルを前記記憶手段から読み出して設定する法線設定ステップを含む、請求項１に記載の画像処理プログラム。
【請求項１２】
前記画像処理プログラムは、前記第１座標算出ステップにおいて求められた座標に対応する点における、前記曲面の傾きを示す法線ベクトル情報を前記記憶手段から読み出す法線読出ステップを、前記コンピュータに更に実行させ、
前記ポリゴン生成ステップは、前記法線読出ステップにおいて読み出された法線ベクトル情報を、それぞれ、対応するポリゴン頂点の法線ベクトル情報として設定する法線設定ステップを含む、請求項１に記載の画像処理プログラム。
【請求項１３】
前記記憶手段には、画像を構成する各点の位置及び色が、それぞれ、前記曲面上の各点の位置及び法線ベクトルに対応するべく構成された画像情報として、前記法線ベクトル情報が格納されている、請求項１２に記載の画像処理プログラム。
【請求項１４】
前記記憶手段には、画像を構成する各点の位置及び色が、それぞれ、前記曲面上の各点の位置及び前記仮想平面からの距離に対応するべく構成された画像情報として、前記距離情報が格納されている、請求項１に記載の画像処理プログラム。
【請求項１５】
前記曲面は、前記仮想三次元空間に配置された地形である、請求項１に記載の画像処理プログラム。
【請求項１６】
仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面の、当該仮想三次元空間に配置された仮想カメラから見た画像を描画する画像処理装置であって、
前記仮想平面を、多角形からなる複数の領域に、前記仮想カメラからの距離が近い程、各領域の面積を小さくするべく分割する平面分割手段、
前記複数の領域にそれぞれ対応する多角形を構成する頂点毎に、前記仮想平面からの距離を示す距離情報を記憶手段から読み出す第１距離読出手段、
前記複数の領域にそれぞれ対応する多角形を構成する各頂点から、前記第１距離読出手段によって読み出された距離情報が示す距離だけ、前記仮想平面に垂直な方向に離間した位置の座標を求める第１座標算出手段、
前記第１座標算出手段によって求められた座標に対応する点を、ポリゴンを規定する頂点であるポリゴン頂点として、前記複数の領域毎に略同数のポリゴンを生成するポリゴン生成手段、及び、
前記ポリゴン生成手段によって生成されたポリゴンを前記仮想カメラから見た画像を描画する描画手段、を備え、
前記平面分割手段は、前記複数の領域毎の前記仮想カメラから見た画像の大きさを示すサイズ評価値をそれぞれ求めるサイズ評価値算出手段を含み、当該サイズ評価値算出手段によって求められたサイズ評価値を、予め設定された閾値以下とするべく、前記仮想平面を分割する、画像処理装置。
【請求項１７】
仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面の、当該仮想三次元空間に配置された仮想カメラから見た画像を描画する画像処理システムであって、
前記仮想平面を、多角形からなる複数の領域に、前記仮想カメラからの距離が近い程、各領域の面積を小さくするべく分割する平面分割手段、
前記複数の領域にそれぞれ対応する多角形を構成する頂点毎に、前記仮想平面からの距離を示す距離情報を記憶手段から読み出す第１距離読出手段、
前記複数の領域にそれぞれ対応する多角形を構成する各頂点から、前記第１距離読出手段によって読み出された距離情報が示す距離だけ、前記仮想平面に垂直な方向に離間した位置の座標を求める第１座標算出手段、
前記第１座標算出手段によって求められた座標に対応する点を、ポリゴンを規定する頂点であるポリゴン頂点として、前記複数の領域毎に略同数のポリゴンを生成するポリゴン生成手段、及び、
前記ポリゴン生成手段によって生成されたポリゴンを前記仮想カメラから見た画像を描画する描画手段、を備え、
前記平面分割手段は、前記複数の領域毎の前記仮想カメラから見た画像の大きさを示すサイズ評価値をそれぞれ求めるサイズ評価値算出手段を含み、当該サイズ評価値算出手段によって求められたサイズ評価値を、予め設定された閾値以下とするべく、前記仮想平面を分割する、画像処理システム。
【請求項１８】
仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面の、当該仮想三次元空間に配置された仮想カメラから見た画像を描画する画像処理システムのコンピュータによって実行される画像処理方法であって、
前記コンピュータが、前記仮想平面を、多角形からなる複数の領域に、前記仮想カメラからの距離が近い程、各領域の面積を小さくするべく分割する平面分割ステップ、
前記コンピュータが、前記複数の領域にそれぞれ対応する多角形を構成する頂点毎に、前記仮想平面からの距離を示す距離情報を記憶手段から読み出す第１距離読出ステップ、
前記コンピュータが、前記複数の領域にそれぞれ対応する多角形を構成する各頂点から、前記第１距離読出ステップにおいて読み出された距離情報が示す距離だけ、前記仮想平面に垂直な方向に離間した位置の座標を求める第１座標算出ステップ、
前記コンピュータが、前記第１座標算出ステップにおいて求められた座標に対応する点を、ポリゴンを規定する頂点であるポリゴン頂点として、前記複数の領域毎に略同数のポリゴンを生成するポリゴン生成ステップ、及び、
前記コンピュータが、前記ポリゴン生成ステップにおいて生成されたポリゴンを前記仮想カメラから見た画像を描画する描画ステップ、を含み、
前記平面分割ステップは、前記複数の領域毎の前記仮想カメラから見た画像の大きさを示すサイズ評価値をそれぞれ求めるサイズ評価値算出ステップを含み、
前記サイズ評価値算出ステップにおいて求められたサイズ評価値を、予め設定された閾値以下とするべく、前記仮想平面を分割する、画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理プログラム、画像処理装置、画像処理システム及び画像処理方法に関し、特に、仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面（例えば、地形を示す曲面）の、当該仮想三次元空間に配置された仮想カメラから見た画像を描画する画像処理プログラム、画像処理装置、画像処理システム及び画像処理方法に関する。
【背景技術】
【０００２】
従来、仮想三次元空間内に配置された三次元オブジェクトの仮想カメラから見た画像を描画する場合に、上記三次元オブジェクトを単純にポリゴンからなる画像情報で表現し、これらの三次元オブジェクトを仮想三次元空間内に配置して画像を描画していた。しかし、上記三次元オブジェクトを全て同レベルの精度で表現している（＝三次元オブジェクトを、同程度の大きさのポリゴンに分割してポリゴンモデルを構成している）ため、処理すべきデータ量が膨大になるという欠点があった。
【０００３】
上記課題を解消するために、種々の方法、装置等が提案されている。例えば、三次元オブジェクトを表す分割数の異なる複数種類の分割マップ情報が分割マップ情報記憶手段に記憶されており、仮想カメラと三次元オブジェクトとの距離を求め、この距離が遠くなる程、より少ない分割数の分割マップ情報を読み出す三次元ゲーム装置が開示されている（例えば、特許文献１参照）。
【特許文献１】特許第３２２７１５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記三次元ゲーム装置では、分割数の異なる複数種類の分割マップ情報（＝ポリゴン情報）を記憶手段に記憶しておく必要があるため、メモリ等の記憶手段に大きな容量を必要とするという課題がある。また、上記三次元ゲーム装置では、分割数の異なる分割マップ情報の種類が多い程、仮想カメラと三次元オブジェクトとの距離に応じて適正な分割マップを選択することができる（＝描画の品位を確保するために必要不可欠な分割数の分割マップを選択することができる）が、メモリ等の記憶手段に更に大きな容量を必要とする。
【０００５】
本発明は、上記課題に鑑みてなされたものであって、描画の品位を確保するべく適正なポリゴン情報を生成することが可能な画像処理プログラム、画像処理装置、画像処理システム及び画像処理方法を提供することを目的としている。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は以下のように構成される。なお、括弧内の参照符号及び図番号は、本発明の理解を助けるために図面との対応関係の一例を示したものであって、本発明の範囲を何ら限定するものではない。
【０００７】
本発明の画像処理プログラム（４０）は、仮想三次元空間に配置された仮想平面（ＰＬ）からの距離によって起伏が規定される曲面（ＳＦ：例えば、地形等）の、仮想三次元空間に配置された仮想カメラ（ＶＰ）から見た画像を描画する画像処理プログラムである。
【０００８】
第１の発明は、コンピュータ（１０，１１ｂ）に、平面分割ステップ、第１距離読出ステップ、第１座標算出ステップ、ポリゴン生成ステップ、及び、描画ステップを実行させる画像処理プログラムである。平面分割ステップは、仮想平面（ＰＬ）を、多角形からなる複数の領域に、仮想カメラ（ＶＰ）からの距離が近い程、各領域の面積を小さくするべく分割するステップ（Ｓ３０１、Ｓ３１１）である。第１距離読出ステップは、複数の領域にそれぞれ対応する多角形を構成する頂点毎に、仮想平面（ＰＬ）からの距離を示す距離情報（４１）を記憶手段（１１ｅ，１２）から読み出すステップ（Ｓ４０７）である。第１座標算出ステップは、複数の領域にそれぞれ対応する多角形を構成する各頂点から、第１距離読出ステップにおいて読み出された距離情報が示す距離だけ、仮想平面（ＰＬ）に垂直な方向に離間した位置の座標を求めるステップ（Ｓ４０９）である。ポリゴン生成ステップは、第１座標算出ステップにおいて求められた座標に対応する点を、ポリゴンを規定する頂点であるポリゴン頂点として、複数の領域毎に略同数のポリゴンを生成するステップ（Ｓ４１３）である。描画ステップは、ポリゴン生成ステップにおいて生成されたポリゴンを仮想カメラ（ＶＰ）から見た画像を描画するステップ（Ｓ１０９）である。
【０００９】
第２の発明に係る画像処理プログラムは、上記第１の発明に係る画像処理プログラムであって、平面分割ステップは、複数の領域毎の仮想カメラ（ＶＰ）から見た画像の大きさを示すサイズ評価値をそれぞれ求めるサイズ評価値算出ステップ（Ｓ３０７）を含み、サイズ評価値算出ステップにおいて求められたサイズ評価値を、予め設定された閾値以下とするべく分割する。そこで、仮想カメラ（ＶＰ）から見た画像の品位を確保する上で、必要且つ充分な分割を容易に行うことができる。
【００１０】
第３の発明に係る画像処理プログラムは、上記第２の発明に係る画像処理プログラムであって、サイズ評価値算出ステップは、複数の領域にそれぞれ対応する多角形に内接又は外接する円（ここでは、多角形に外接する円）を大円とする球（ＢＡ）の仮想カメラ（ＶＰ）から見た画像の面積を、サイズ評価値として求める。そこで、適正なサイズ評価値を容易に求めることができる。
【００１１】
第４の発明に係る画像処理プログラムは、上記第２の発明に係る画像処理プログラムであって、平面分割ステップが、第１分割ステップ、分割要否判定ステップ、及び、第２分割ステップ、を含む。第１分割ステップは、仮想平面（ＰＬ）を予め設定された第１所定数の領域に分割するステップ（Ｓ３０１）である。分割要否判定ステップは、第１分割ステップにおいて生成された領域毎に、サイズ評価値算出ステップにおいて求められたサイズ評価値が、それぞれ、閾値以下であるか否かを判定するステップ（Ｓ３０９）である。第２分割ステップは、分割要否判定ステップにおいて閾値以下ではないと判定された領域を、第１所定数の領域に分割するステップ（Ｓ３１１）である。ここで、分割要否判定ステップにおいて、第２分割ステップにおいて新たに生成された各領域について、サイズ評価値算出ステップにおいて求められたサイズ評価値が、それぞれ、閾値以下であるか否かを判定する。また、平面分割ステップは、生成された全ての領域のサイズ評価値が予め設定された閾値以下となるまで、分割要否判定ステップ及び第２分割ステップが繰り返し実行する。そこで、仮想カメラ（ＶＰ）から見た画像の品位を確保する上で、必要且つ充分な分割を容易に行うことができる。
【００１２】
第５の発明に係る画像処理プログラムは、上記第４の発明に係る画像処理プログラムであって、第１分割ステップ（Ｓ３０１）は、仮想平面（ＰＬ）を、第１所定数の領域に均等に分割し、第２分割ステップ（Ｓ３１１）は、分割要否判定ステップにおいて閾値以下ではないと判定された領域を、第１所定数の領域に均等に分割する。そこで、均等に分割されるため、分割を効率的に行うことができる。
【００１３】
第６の発明に係る画像処理プログラムは、上記第５の発明に係る画像処理プログラムであって、仮想平面（ＰＬ）は四角形の平面であり、多角形は四角形であって、第１分割ステップ（Ｓ３０１）は、四角形の仮想平面（ＰＬ）の互いに対向する２つの辺の中点を結ぶ２本の直線で、当該四角形の仮想平面（ＰＬ）を４等分し、第２分割ステップ（Ｓ３１１）は、分割要否判定ステップ（Ｓ３０９）において閾値以下ではないと判定された四角形の領域の互いに対向する２つの辺の中点を結ぶ２本の直線で、当該四角形の領域を４等分する。そこで、四角形が対向する２つの辺の中点を結ぶ２本の直線で均等に分割されるため、分割を更に効率的に行うことができる。
【００１４】
第７の発明に係る画像処理プログラムは、上記第６の発明に係る画像処理プログラムであって、平面分割ステップ（Ｓ３０１、Ｓ３１１）において生成された複数の領域を、それぞれ、予め設定された第２所定数の四角形の領域である小領域に均等に分割する再分割ステップ（Ｓ３１５）を、コンピュータ（１０，１１ｂ）に更に実行させ、第１距離読出ステップ（Ｓ４０７）は、再分割ステップ（Ｓ３１５）において生成された四角形の領域を構成する頂点毎に、距離情報（４１）を記憶手段（１１ｅ，１２）から読み出し、第１座標算出ステップ（Ｓ４０９）は、再分割ステップ（Ｓ３１５）において生成された四角形の領域を構成する各頂点から、第１距離読出ステップ（Ｓ４０７）において読み出された距離情報（４１）が示す距離だけ、仮想平面（ＰＬ）に垂直な方向に離間した位置の座標を求め、ポリゴン生成ステップ（Ｓ４１３）は、第１座標算出ステップ（Ｓ４０９）において求められた座標に対応する点を、ポリゴン頂点とするポリゴンを生成する。そこで、曲面（ＳＦ）を表す適正な大きさのポリゴンを効率的に生成することができる。
【００１５】
第８の発明に係る画像処理プログラムは、上記第７の発明に係る画像処理プログラムであって、ポリゴン生成ステップ（Ｓ４１３）は、再分割ステップ（Ｓ３１５）において生成された四角形の小領域毎に、当該四角形の小領域を対角線で分割して得られる２つの三角形の領域にそれぞれ対応する２個の三角形ポリゴンを生成する三角形生成ステップ（Ｓ４１３）、を含む。そこで、曲面（ＳＦ）を表す適正な大きさの三角形ポリゴンを効率的に生成することができる。
【００１６】
第９の発明に係る画像処理プログラムは、上記第８の発明に係る画像処理プログラムであって、再分割ステップ（Ｓ３１５）は、平面分割ステップ（Ｓ３０１、Ｓ３１１）において生成された四角形の領域毎に、該四角形の各辺方向にそれぞれ偶数個（ここでは、６個）の小領域に均等に分割し、三角形生成ステップ（Ｓ４１３）は、第２所定数（ここでは、３６個）の小領域の内、平面分割ステップ（Ｓ３０１、Ｓ３１１）において生成された各領域に対応する四角形を構成する辺の一部を、小領域に対応する四角形のいずれかの辺として含む小領域である外周小領域を抽出する外周抽出ステップ、及び、外周抽出ステップにおいて抽出された外周小領域の内、該外周小領域が平面分割ステップにおいて生成された領域に対応する四角形を構成する頂点を含む場合には、該外周小領域を構成する四角形をそれぞれ分割する対角線として、該頂点を含む対角線を選択し、該外周小領域が平面分割ステップにおいて生成された領域に対応する四角形を構成する頂点を含まない場合には、該外周小領域を構成する四角形をそれぞれ分割する対角線として、隣接する外周小領域の対角線が互いに略直交するべく対角線を選択する対角線選択ステップ、を含む（図１１（ｂ））。そこで、分割回数の相違する（＝大きさが相違する）ポリゴンをスムーズに接続することができる（図１２）。
【００１７】
第１０の発明に係る画像処理プログラムは、上記第６の発明に係る画像処理プログラムであって、ポリゴン生成ステップ（Ｓ４１３）は、平面分割ステップ（Ｓ３０１、Ｓ３１１）において生成された四角形の領域毎に、当該四角形の領域を対角線で分割して得られる２つの三角領域にそれぞれ対応する２個の三角形ポリゴンを生成する三角形生成ステップ（Ｓ４１３）を含む。そこで、曲面（ＳＦ）を表す適正な大きさの三角形ポリゴンを生成することができる。
【００１８】
第１１の発明に係る画像処理プログラムは、上記第１の発明に係る画像処理プログラムであって、画像処理プログラム（４０）は、平面分割ステップ（Ｓ３０１、Ｓ３１１）において生成された各領域が、仮想カメラ（ＶＰ）から見た画像に全く含まれない領域である視野外領域であるか否かを判定する視野判定ステップ（Ｓ３０３）、及び、視野判定ステップにおいて視野外領域であると判定された領域については、第１距離読出ステップ、第１座標算出ステップ、及び、ポリゴン生成ステップの処理対象から除外する領域除外ステップ（Ｓ３０５）を、コンピュータ（１０，１１ｂ）に更に実行させる。そこで、不要な処理が排除されるため、効率的にポリゴンを生成することができる。
【００１９】
第１２の発明に係る画像処理プログラムは、上記第１の発明に係る画像処理プログラムであって、画像処理プログラム（４０）は、基準点設定ステップ、外周点設定ステップ、第２距離読出ステップ、第２座標算出ステップ、法線ベクトル算出ステップ、及び、平均算出ステップ、をコンピュータ（１０，１１ｂ）に更に実行させる。基準点設定ステップは、法線ベクトル情報を生成する対象の点である基準点として、記憶手段（１１ｅ，１２）に、距離情報（４１）が対応付けて格納された仮想平面（ＰＬ）上の点を順次設定するステップ（Ｓ２０１）である。外周点設定ステップは、仮想平面（ＰＬ）内において、基準点から予め設定された第１方向（ここでは、Ｘ軸方向）に予め設定された単位距離ｄだけ離間した２つの点を設定し、基準点から第１方向と直交する方向である第２方向（ここでは、Ｚ軸方向）に単位距離ｄだけ離間した２つの点を設定するステップである（Ｓ２０３）。第２距離読出ステップは、基準点設定ステップにおいて設定された基準点及び外周点設定ステップにおいて設定された４つの点に対応する距離情報（４１）を記憶手段（１１ｅ，１２）から読み出すステップ（Ｓ２０５）である。法線ベクトル算出ステップは、基準点及び４つの点から、それぞれ、第２距離読出ステップにおいて読み出された距離情報（４１）が示す距離だけ、仮想平面（ＰＬ）に垂直な方向に離間した位置の座標を求めるステップ（Ｓ２０７）である。平均算出ステップは、第２座標算出ステップにおいて求められた座標に対応する５つの点（Ｎ０〜Ｎ４）の内、基準点に対応する点Ｎ０と、第１方向（Ｘ軸方向）に離間した２つの点Ｎ３、Ｎ４のいずれか一方に対応する点と、第２方向（Ｚ軸方向）に離間した２つの点Ｎ１、Ｎ２のいずれか一方に対応する点と、を頂点とする４つの三角形ポリゴンの法線ベクトルＶ１〜Ｖ４をそれぞれ求めるステップ（Ｓ２０７）である。平均算出ステップは、法線ベクトル算出ステップにおいて算出された４つの法線ベクトルＶ１〜Ｖ４の平均値を算出し、記憶手段（１１ｅ，１２）に、基準点の仮想平面（ＰＬ）上の位置を示す情報（ここでは、Ｘ座標、Ｚ座標）と対応付けて記録するステップ（Ｓ２１３）である。ここで、ポリゴン生成ステップは、ポリゴン頂点毎に、対応する法線ベクトルを記憶手段（１１ｅ，１２）から読み出して設定する法線設定ステップ（Ｓ４１１）を含む。そこで、仮想カメラ（ＶＰ）の移動等に伴い分割数が変化した場合であっても、ポリゴン頂点の法線ベクトルの変化を少なくすることができるので、違和感のない画像を表示することができる。
【００２０】
第１３の発明に係る画像処理プログラムは、上記第１の発明に係る画像処理プログラムであって、画像処理プログラム（４０）は、第１座標算出ステップにおいて求められた座標に対応する点における、曲面（ＳＦ）の傾きを示す法線ベクトル情報（４２）を記憶手段（１１ｅ，１２）から読み出す法線読出ステップ（Ｓ４１１）を、コンピュータ（１０，１１ｂ）に更に実行させ、ポリゴン生成ステップは、法線読出ステップにおいて読み出された法線ベクトル情報を、それぞれ、対応するポリゴン頂点の法線ベクトル情報として設定する法線設定ステップ（Ｓ４１１）を含む。そこで、法線ベクトル情報（４２）を生成する処理が不要となるので、違和感のない画像を効率的に表示することができる。
【００２１】
第１４の発明に係る画像処理プログラムは、上記第１３の発明に係る画像処理プログラムであって、記憶手段（１１ｅ，１２）には、画像を構成する各点の位置及び色が、それぞれ、曲面（ＳＦ）上の各点の位置及び法線ベクトルに対応するべく構成された画像情報として、法線ベクトル情報（４２）が格納されている。そこで、法線ベクトル情報（４２）を効率的に格納することができるため、法線ベクトル情報（４２）を格納するために必要な容量を削減することができると共に、法線ベクトル情報（４２）を効率的に読み出すことができる。
【００２２】
第１５の発明に係る画像処理プログラムは、上記第１の発明に係る画像処理プログラムであって、記憶手段（１１ｅ，１２）には、画像を構成する各点の位置及び色が、それぞれ、曲面（ＳＦ）上の各点の位置及び仮想平面（ＰＬ）からの距離に対応するべく構成された画像情報として、距離情報（４１）が格納されている（図１６（ｂ））。そこで、距離情報（４１）を効率的に格納することができるため、距離情報（４１）を格納するために必要な容量を削減することができると共に、距離情報（４１）を効率的に読み出すことができる。
【００２３】
第１６の発明に係る画像処理プログラムは、上記第１の発明に係る画像処理プログラムであって、曲面（ＳＦ）は、仮想三次元空間に配置された地形である。そこで、地形を表すポリゴンを適正に生成することができる。
【００２４】
本発明に係る画像処理装置は、仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面（例えば、地形等）の、当該仮想三次元空間に配置された仮想カメラから見た画像を描画する画像処理装置（３）であって、仮想平面（ＰＬ）を、多角形からなる複数の領域に、仮想カメラ（ＶＰ）からの距離が近い程、各領域の面積を小さくするべく分割する平面分割手段（１０，１１ｂ）、複数の領域にそれぞれ対応する多角形を構成する頂点毎に、仮想平面（ＰＬ）からの距離を示す距離情報（４１）を記憶手段（１１ｅ，１２）から読み出す第１距離読出手段（１０，１１ｂ）、複数の領域にそれぞれ対応する多角形を構成する各頂点から、第１距離読出手段によって読み出された距離情報が示す距離だけ、仮想平面（ＰＬ）に垂直な方向に離間した位置の座標を求める第１座標算出手段（１０，１１ｂ）、第１座標算出手段によって求められた座標に対応する点を、ポリゴンを規定する頂点であるポリゴン頂点として、複数の領域毎に略同数のポリゴンを生成するポリゴン生成手段（１０，１１ｂ）、及び、ポリゴン生成手段によって生成されたポリゴンを仮想カメラ（ＶＰ）から見た画像を描画する描画手段（１０，１１ｂ）、を備える。
【発明の効果】
【００２５】
本発明に係る画像処理プログラム（４０）及び画像処理装置（３）によれば、仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面（ＳＦ）の画像の生成において、仮想カメラ（ＶＰ）からの距離が近い程、領域の面積を小さくするべく分割され、領域毎に略同数のポリゴンがそれぞれ生成されるため、仮想カメラ（ＶＰ）から見た曲面（ＳＦ）の画像の品位を確保することが可能であって且つ格納するために必要な容量が小さい（＝適正な）曲面（ＳＦ）を表すポリゴン情報（４４）を生成することができる。
【発明を実施するための最良の形態】
【００２６】
（ゲームシステムの全体構成）
図１を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム１について説明する。図１は、ゲームシステム１の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置及びゲームプログラムについて説明する。図１において、ゲームシステム１は、テレビジョン受像器（以下、単に「テレビ」と記載する）２、ゲーム装置３、光ディスク４、マーカ部６、及びコントローラ７を含む。本システムは、コントローラ７を用いたゲーム操作に基づいてゲーム装置３でゲーム処理を実行するものである。
【００２７】
ゲーム装置３（画像処理装置に相当する）には、当該ゲーム装置３に対して交換可能に用いられる情報記憶媒体の一例である光ディスク４が脱着可能に挿入される。光ディスク４には、ゲーム装置３において実行されるためのゲームプログラムが記憶されている。ゲーム装置３の前面には光ディスク４の挿入口が設けられている。ゲーム装置３は、挿入口に挿入された光ディスク４に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【００２８】
ゲーム装置３には、表示装置の一例であるテレビ２が接続コードを介して接続される。テレビ２は、ゲーム装置３において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ２の画面の周辺（図１では画面の上側）には、マーカ部６が設置される。マーカ部６は、その両端に２つのマーカ６Ｒ及び６Ｌを備えている。マーカ６Ｒ（マーカ６Ｌも同様）は、具体的には１以上の赤外ＬＥＤであり、テレビ２の前方に向かって赤外光を出力する。マーカ部６はゲーム装置３に接続されており、ゲーム装置３はマーカ部６が備える各赤外ＬＥＤの点灯を制御することが可能である。
【００２９】
コントローラ７は、自機に対して行われた操作の内容を示す操作データをゲーム装置３に与える入力装置である。コントローラ７とゲーム装置３とは無線通信によって接続される。本実施形態では、コントローラ７とゲーム装置３との間の無線通信には例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース）（登録商標）の技術が用いられる。なお、他の実施形態においてはコントローラ７とゲーム装置３とは有線で接続されても良い。
【００３０】
（ゲーム装置３の内部構成）
次に、図２を参照して、ゲーム装置３の内部構成について説明する。図２は、ゲーム装置３の構成を示すブロック図である。ゲーム装置３は、ＣＰＵ１０、システムＬＳＩ１１、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４、及びＡＶ−ＩＣ１５等を有する。
【００３１】
ＣＰＵ１０は、光ディスク４に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。ＣＰＵ１０は、システムＬＳＩ１１に接続される。システムＬＳＩ１１には、ＣＰＵ１０の他、外部メインメモリ１２、ＲＯＭ／ＲＴＣ１３、ディスクドライブ１４及びＡＶ−ＩＣ１５が接続される。システムＬＳＩ１１は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムＬＳＩの内部構成について後述する。揮発性の外部メインメモリ１２は、光ディスク４から読み出されたゲームプログラムや、フラッシュメモリ１７から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、ＣＰＵ１０のワーク領域やバッファ領域として用いられる。ＲＯＭ／ＲＴＣ１３は、ゲーム装置３の起動用のプログラムが組み込まれるＲＯＭ（いわゆるブートＲＯＭ）と、時間をカウントするクロック回路（ＲＴＣ：Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）とを有する。ディスクドライブ１４は、光ディスク４からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ１１ｅ又は外部メインメモリ１２に読み出したデータを書き込む。
【００３２】
また、システムＬＳＩ１１には、入出力プロセッサ（Ｉ／Ｏプロセッサ）１１ａ、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）１１ｂ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）１１ｃ、ＶＲＡＭ１１ｄ、及び内部メインメモリ１１ｅが設けられる。図示は省略するが、これらの構成要素１１ａ〜１１ｅは内部バスによって互いに接続される。
【００３３】
ＧＰＵ１１ｂは、描画手段の一部を形成し、ＣＰＵ１０からのグラフィクスコマンド（作画命令）に従って画像を生成する。ＶＲＡＭ１１ｄは、ＧＰＵ１１ｂがグラフィクスコマンドを実行するために必要なデータ（ポリゴンデータやテクスチャデータ等のデータ）を記憶する。画像が生成される際には、ＧＰＵ１１ｂは、ＶＲＡＭ１１ｄに記憶されたデータを用いて画像データを作成する。
【００３４】
ＤＳＰ１１ｃは、オーディオプロセッサとして機能し、内部メインメモリ１１ｅや外部メインメモリ１２に記憶されるサウンドデータや音波形（音色）データを用いて、音声データを生成する。
【００３５】
上述のように生成された画像データ及び音声データは、ＡＶ−ＩＣ１５によって読み出される。ＡＶ−ＩＣ１５は、読み出した画像データをＡＶコネクタ１６を介してテレビ２に出力するとともに、読み出した音声データを、テレビ２に内蔵されるスピーカ２ａに出力する。これによって、画像がテレビ２に表示されるとともに音がスピーカ２ａから出力される。
【００３６】
入出力プロセッサ１１ａは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ１１ａは、フラッシュメモリ１７、無線通信モジュール１８、無線コントローラモジュール１９、拡張コネクタ２０、及びメモリカード用コネクタ２１に接続される。無線通信モジュール１８にはアンテナ２２が接続され、無線コントローラモジュール１９にはアンテナ２３が接続される。
【００３７】
入出力プロセッサ１１ａは、無線通信モジュール１８及びアンテナ２２を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ１１ａは、定期的にフラッシュメモリ１７にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール１８及びアンテナ２２を介してネットワークに送信する。また、入出力プロセッサ１１ａは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ２２及び無線通信モジュール１８を介して受信し、受信したデータをフラッシュメモリ１７に記憶する。ＣＰＵ１０はゲームプログラムを実行することにより、フラッシュメモリ１７に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ１７には、ゲーム装置３と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置３を利用してプレイしたゲームのセーブデータ（ゲームの結果データ又は途中データ）が記憶されても良い。
【００３８】
また、入出力プロセッサ１１ａは、コントローラ７から送信される操作データをアンテナ２３及び無線コントローラモジュール１９を介して受信し、内部メインメモリ１１ｅ又は外部メインメモリ１２のバッファ領域に記憶（一時記憶）する。
【００３９】
更に、入出力プロセッサ１１ａには、拡張コネクタ２０及びメモリカード用コネクタ２１が接続される。拡張コネクタ２０は、ＵＳＢやＳＣＳＩのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール１８に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ２１は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ１１ａは、拡張コネクタ２０やメモリカード用コネクタ２１を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【００４０】
ゲーム装置３には、電源ボタン２４、リセットボタン２５、及びイジェクトボタン２６が設けられる。電源ボタン２４及びリセットボタン２５は、システムＬＳＩ１１に接続される。電源ボタン２４がオンされると、ゲーム装置３の各構成要素に対して、図示しないＡＣアダプタを経て電源が供給される。リセットボタン２５が押されると、システムＬＳＩ１１は、ゲーム装置３の起動プログラムを再起動する。イジェクトボタン２６は、ディスクドライブ１４に接続される。イジェクトボタン２６が押されると、ディスクドライブ１４から光ディスク４が排出される。
【００４１】
図３及び図４を参照して、コントローラ７について説明する。なお、図３は、コントローラ７の上面後方から見た斜視図である。図４は、コントローラ７を下面前方から見た斜視図である。
【００４２】
図３及び図４において、コントローラ７は、例えばプラスチック成型によって形成されたハウジング７１を有しており、当該ハウジング７１に複数の操作部７２が設けられている。ハウジング７１は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【００４３】
ハウジング７１上面の中央前面側に、十字キー７２ａが設けられる。この十字キー７２ａは、十字型の４方向プッシュスイッチであり、４つの方向（前後左右）に対応する操作部分が十字の突出片にそれぞれ９０°間隔で配置される。プレイヤが十字キー７２ａのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー７２ａを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【００４４】
なお、十字キー７２ａは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でも構わない。例えば、十字方向に４つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けても構わない。更に、上記４つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、４つのプッシュスイッチとセンタスイッチとを複合した操作部を設けても構わない。また、ハウジング７１上面から突出した傾倒可能なスティック（いわゆる、ジョイスティック）を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー７２ａの代わりに設けても構わない。更に、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー７２ａの代わりに設けても構わない。また、タッチパッドを、上記十字キー７２ａの代わりに設けても構わない。
【００４５】
ハウジング７１上面の十字キー７２ａより後面側に、複数の操作ボタン７２ｂ〜７２ｇが設けられる。操作ボタン７２ｂ〜７２ｇは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン７２ｂ〜７２ｇに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン７２ｂ〜７２ｄには、１番ボタン、２番ボタン、及びＡボタン等としての機能が割り当てられる。また、操作ボタン７２ｅ〜７２ｇには、マイナスボタン、ホームボタン、及びプラスボタン等としての機能が割り当てられる。これら操作ボタン７２ａ〜７２ｇは、ゲーム装置３が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図３に示した配置例では、操作ボタン７２ｂ〜７２ｄは、ハウジング７１上面の中央前後方向に沿って並設されている。また、操作ボタン７２ｅ〜７２ｇは、ハウジング７１上面の左右方向に沿って操作ボタン７２ｂ及び７２ｄの間に並設されている。そして、操作ボタン７２ｆは、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００４６】
また、ハウジング７１上面の十字キー７２ａより前面側に、操作ボタン７２ｈが設けられる。操作ボタン７２ｈは、遠隔からゲーム装置３の電源をオン／オフする電源スイッチである。この操作ボタン７２ｈも、その上面がハウジング７１の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【００４７】
また、ハウジング７１上面の操作ボタン７２ｃより後面側に、複数のＬＥＤ７０２が設けられる。ここで、コントローラ７は、他のコントローラ７と区別するためにコントローラ種別（番号）が設けられている。例えば、ＬＥＤ７０２は、コントローラ７に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ７から無線通信モジュール１８へ送信データを送信する際、上記コントローラ種別に応じて複数のＬＥＤ７０２の内、種別に対応するＬＥＤが点灯する。
【００４８】
また、ハウジング７１上面には、操作ボタン７２ｂ及び操作ボタン７２ｅ〜７２ｇの間に後述するスピーカ（図５のスピーカ７０６）からの音を外部に放出するための音抜き孔が形成されている。
【００４９】
一方、ハウジング７１下面には、凹部が形成されている。ハウジング７１下面の凹部は、プレイヤがコントローラ７の前面をマーカ６Ｌ及び６Ｒに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン７２ｉが設けられる。操作ボタン７２ｉは、例えばＢボタンとして機能する操作部である。
【００５０】
また、ハウジング７１前面には、撮像情報演算部７４の一部を構成する撮像素子７４３が設けられる。ここで、撮像情報演算部７４は、コントローラ７が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大２００フレーム／秒程度のサンプリング周期であるため比較的高速なコントローラ７の動きでも追跡して解析することができる。この撮像情報演算部７４の詳細な構成については、後述する。また、ハウジング７１の後面には、コネクタ７３が設けられている。コネクタ７３は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【００５１】
ここで、以下の説明を具体的にするために、コントローラ７に対して設定する座標系について定義する。図３及び図４に示すように、互いに直交するＸＹＺ軸をコントローラ７に対して定義する。具体的には、コントローラ７の前後方向となるハウジング７１の長手方向をＺ軸とし、コントローラ７の前面（撮像情報演算部７４が設けられている面）方向をＺ軸正方向とする。また、コントローラ７の上下方向をＹ軸とし、ハウジング７１の下面（操作ボタン７２ｉが設けられた面）方向をＹ軸正方向とする。更に、コントローラ７の左右方向をＸ軸とし、ハウジング７１の左側面（図３では表されずに図４で表されている側面）方向をＸ軸正方向とする。
【００５２】
次に、図５及び図６を参照して、コントローラ７の内部構造について説明する。なお、図５は、コントローラ７の上筐体（ハウジング７１の一部）を外した状態を後面側から見た斜視図である。図６は、コントローラ７の下筐体（ハウジング７１の一部）を外した状態を前面側から見た斜視図である。ここで、図６に示す基板７００は、図５に示す基板７００の裏面から見た斜視図となっている。
【００５３】
図５において、ハウジング７１の内部には基板７００が固設されており、当該基板７００の上主面上に操作ボタン７２ａ〜７２ｈ、加速度センサ７０１、ＬＥＤ７０２、及びアンテナ７５４等が設けられる。そして、これらは、基板７００等に形成された配線（図示せず）によってマイコン７５１等（図６、図７参照）に接続される。また、無線モジュール７５３（図７参照）及びアンテナ７５４によって、コントローラ７がワイヤレスコントローラとして機能する。なお、ハウジング７１内部には図示しない水晶振動子７０３が設けられており、後述するマイコン７５１の基本クロックを生成する。また、基板７００の上主面上に、スピーカ７０６及びアンプ７０８が設けられる。また、加速度センサ７０１は、操作ボタン７２ｄの左側の基板７００上（つまり、基板７００の中央部ではなく周辺部）に設けられる。したがって、加速度センサ７０１は、コントローラ７の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ７の回転を良好な感度でゲーム装置３等が判定することができる。
【００５４】
一方、図６において、基板７００の下主面上の前端縁に撮像情報演算部７４が設けられる。撮像情報演算部７４は、コントローラ７の前方から順に赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、及び画像処理回路７４４によって構成されており、それぞれ基板７００の下主面に取り付けられる。また、基板７００の下主面上の後端縁にコネクタ７３が取り付けられる。更に、基板７００の下主面上にサウンドＩＣ７０７及びマイコン７５１が設けられている。サウンドＩＣ７０７は、基板７００等に形成された配線によってマイコン７５１及びアンプ７０８と接続され、ゲーム装置３から送信されたサウンドデータに応じてアンプ７０８を介してスピーカ７０６に音声信号を出力する。
【００５５】
そして、基板７００の下主面上には、バイブレータ７０４が取り付けられる。バイブレータ７０４は、例えば振動モータやソレノイドである。バイブレータ７０４は、基板７００等に形成された配線によってマイコン７５１と接続され、ゲーム装置３から送信された振動データに応じてその作動をオン／オフする。バイブレータ７０４が作動することによってコントローラ７に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ７０４は、ハウジング７１のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング７１が大きく振動することになり、振動を感じやすくなる。
【００５６】
次に、図７を参照して、コントローラ７の内部構成について説明する。なお、図７は、コントローラ７の構成を示すブロック図である。
【００５７】
図７において、コントローラ７は、上述した操作部７２、撮像情報演算部７４、加速度センサ７０１、バイブレータ７０４、スピーカ７０６、サウンドＩＣ７０７、及びアンプ７０８の他に、その内部に通信部７５を備えている。
【００５８】
撮像情報演算部７４は、赤外線フィルタ７４１、レンズ７４２、撮像素子７４３、及び画像処理回路７４４を含んでいる。赤外線フィルタ７４１は、コントローラ７の前方から入射する光から赤外線のみを通過させる。レンズ７４２は、赤外線フィルタ７４１を透過した赤外線を集光して撮像素子７４３へ出射する。撮像素子７４３は、例えばＣＭＯＳセンサやあるいはＣＣＤのような固体撮像素子であり、レンズ７４２が集光した赤外線を撮像する。したがって、撮像素子７４３は、赤外線フィルタ７４１を通過した赤外線だけを撮像して画像データを生成する。撮像素子７４３で生成された画像データは、画像処理回路７４４で処理される。具体的には、画像処理回路７４４は、撮像素子７４３から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部７５へ出力する。なお、これらの撮像情報演算部７４は、コントローラ７のハウジング７１に固設されており、ハウジング７１自体の方向を変えることによってその撮像方向を変更することができる。
【００５９】
コントローラ７は、３軸（Ｘ、Ｙ、Ｚ軸）の加速度センサ７０１を備えていることが好ましい。この３軸の加速度センサ７０１は、３方向、すなわち、上下方向（図３に示すＹ軸）、左右方向（図３に示すＸ軸）、及び前後方向（図３に示すＺ軸）で直線加速度を検知する。
【００６０】
通信部７５は、マイクロコンピュータ（Ｍｉｃｒｏ  Ｃｏｍｐｕｔｅｒ：マイコン）７５１、メモリ７５２、無線モジュール７５３、及びアンテナ７５４を含んでいる。マイコン７５１は、処理の際にメモリ７５２を記憶領域として用いながら、送信データを無線送信する無線モジュール７５３を制御する。また、マイコン７５１は、アンテナ７５４を介して無線モジュール７５３が受信したゲーム装置３からのデータに応じて、サウンドＩＣ７０７及びバイブレータ７０４の動作を制御する。サウンドＩＣ７０７は、通信部７５を介してゲーム装置３から送信されたサウンドデータ等を処理する。また、マイコン７５１は、通信部７５を介してゲーム装置３から送信された振動データ（例えば、バイブレータ７０４をＯＮ又はＯＦＦする信号）等に応じて、バイブレータ７０４を作動させる。
【００６１】
コントローラ７に設けられた操作部７２からの操作信号（キーデータ）、加速度センサ７０１からの３軸方向の加速度信号（Ｘ、Ｙ、及びＺ軸方向加速度データ）、及び撮像情報演算部７４からの処理結果データは、マイコン７５１に出力される。マイコン７５１は、入力した各データ（キーデータ、Ｘ、Ｙ、及びＺ軸方向加速度データ、処理結果データ）を無線通信モジュール１８へ送信する送信データとして一時的にメモリ７５２に格納する。ここで、通信部７５から無線通信モジュール１８への無線送信は、所定の周期毎に行われるが、ゲームの処理は１／６０秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は１６．７ｍｓ（１／６０秒）であり、ブルートゥース（登録商標）で構成される通信部７５の送信間隔は５ｍｓである。マイコン７５１は、無線通信モジュール１８への送信タイミングが到来すると、メモリ７５２に格納されている送信データを一連の操作情報として出力し、無線モジュール７５３へ出力する。そして、無線モジュール７５３は、例えばＢｌｕｅｔｏｏｔｈ（ブルートゥース；登録商標）の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ７５４から放射する。つまり、コントローラ７に設けられた操作部７２からのキーデータ、加速度センサ７０１からのＸ、Ｙ、及びＺ軸方向加速度データ、及び撮像情報演算部７４からの処理結果データがコントローラ７から送信される。そして、ゲーム装置３の無線通信モジュール１８でその電波信号を受信し、ゲーム装置３で当該電波信号を復調や復号することによって、一連の操作情報（キーデータ、Ｘ、Ｙ、及びＺ軸方向加速度データ、及び処理結果データ）を取得する。そして、ゲーム装置３のＣＰＵ１０は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Ｂｌｕｅｔｏｏｔｈ（登録商標）の技術を用いて通信部７５を構成する場合、通信部７５は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【００６２】
なお、上記のハードウェア構成は単なる一例に過ぎず、本発明は任意のコンピュータシステムに適用可能である。例えば、ゲーム装置３に換えてパーソナルコンピュータを含むコンピュータシステムにも適用可能である。
【００６３】
次に、ゲーム装置３が行う画像処理の概要について説明する。本発明は、仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面（本実施形態では、地形）の、当該仮想三次元空間に配置された仮想カメラから見た画像を描画することを特徴としている。もちろん、本発明を用いて描画できる曲面の種類は、地形に限らない。例えば、曲面が、仮想三次元空間に配置されたオブジェクト（例えば、建築物等）の一方側の面（上方側の面）である形態でも良い。
【００６４】
また、本実施形態では、地形を示すポリゴンモデルが生成されて、生成されたポリゴンモデルを介して図１に示すテレビ２に画像が描画されるが、ポリゴンモデルには、必要に応じて、例えば地面の模様などを示すテクスチャ画像がテクスチャマッピングされる。なお、以下の説明においては、テクスチャマッピング処理については、便宜上、その説明を省略している。
【００６５】
まず、図８〜図１２を用いて、平面分割処理（＝「平面分割ステップ」において実行される処理に相当し、且つ、「平面分割手段」によって実行される処理に相当する）の内容について説明する。平面分割処理は、仮想三次元空間に配置された仮想平面を、仮想三次元空間に配置された仮想カメラからの距離に基づいて、予め設定された３以上の所定数の頂点を有する多角形からなる複数の領域に分割する処理である。図８は、仮想平面ＰＬを予め設定された第１所定数（ここでは、４個）の領域に分割する処理（＝「第１分割ステップ」において実行される処理に相当する）の内容の一例を示す説明図である。図８（ａ）は、分割前の仮想平面を示す図であり、図８（ｂ）は分割後の仮想平面を示す図である。
【００６６】
図８（ａ）に示すように、仮想三次元空間には、Ｘ軸、Ｙ軸及びＺ軸が、それぞれ、図の左右方向、上下方向、及び、前後方向に規定されている。そして、Ｘ−Ｚ平面内に、四角形（ここでは、正方形）の仮想平面ＰＬが配置されている。なお、本実施形態においてテレビ２に画像を描画する対象の地形ＳＦ（図１４（ａ）参照）は、図８に示す仮想平面ＰＬからの距離（＝Ｙ座標に対応する距離）によってその起伏が規定される。また、仮想カメラＶＰは、例えば、図１に示すコントローラ７からの指示に基づいて、その位置及び向きが設定されるものであって、ここでは、仮想平面ＰＬの略中央部上方（ここでは、Ｙ軸の正方向）に、ほぼＺ軸の正方向に設定されている。
【００６７】
更に、仮想カメラＶＰには、予め所定の大きさ（例えば、１１０°）の視野角ＶＡ（＝仮想カメラＶＰによって仮想的に撮影される範囲を示す角度）が設定されている。図８（ｂ）に示すように、仮想平面ＰＬは、まず、互いに対向する２つの辺の中点を結ぶ２本の直線ＤＬ１１、ＤＬ１２で、予め設定された第１所定数（ここでは、４個）の領域ＰＬ１１〜ＰＬ１４に均等に分割される。
【００６８】
ここでは、仮想平面ＰＬが、正方形の領域である場合について説明するが、他の形状（例えば、長方形、円等）の領域である形態でも良い。また、仮想平面ＰＬを、４個の領域ＰＬ１１〜ＰＬ１４に均等に分割する場合について説明するが、４個に限らず、２以上の予め設定された第１所定数（例えば、１６個等）の領域に分割する形態であれば良い。第１所定数が大きい程、分割回数を削減することができる。
【００６９】
図９は、仮想カメラＶＰの視野外の領域を処理対象の領域から除外する処理（いわゆる、クリッピング処理）（＝「視野判定ステップ」及び「領域除外ステップ」において実行される処理に相当する）の一例を示す説明図である。図８（ｂ）に示す領域ＰＬ１１〜ＰＬ１４は、図９（ａ）に示すように、それぞれ、第１所定数（ここでは、４個）の領域に均等に分割される（＝合計１６個の領域が生成される）。例えば、図８（ｂ）に示す領域ＰＬ１１は、互いに対向する２つの辺の中点を結ぶ２本の直線ＤＬ２１、ＤＬ２２で、４個の領域ＰＬ２１〜ＰＬ２４に均等に分割される。生成された４個の領域ＰＬ２１〜ＰＬ２４の内、斜線で網掛けを施した３個の領域ＰＬ２１、ＰＬ２２、ＰＬ２４は、仮想カメラＶＰの視野外の領域（以下、視野外領域という）であるため、以降の処理を行う対象の領域から除外する処理が行われる。
【００７０】
図９（ａ）に示す１６個の領域の内、領域ＰＬ２１、ＰＬ２２、ＰＬ２４等の６個の視野外領域を除く領域（＝１０個の領域）は、図９（ｂ）に示すように、それぞれ、第１所定数（ここでは、４個）の領域に均等に分割される（＝合計４０個の領域が生成される）。例えば、図９（ａ）に示す領域ＰＬ２３は、互いに対向する２つの辺の中点を結ぶ２本の直線ＤＬ３１、ＤＬ３２で、４個の領域ＰＬ３１〜ＰＬ３４に均等に分割される。生成された４個の領域ＰＬ３１〜ＰＬ３４の内、斜線で網掛けを施した２個の領域ＰＬ３１、ＰＬ３４は、仮想カメラＶＰの視野外領域であるため、以降の処理を行う対象の領域から除外する処理が行われる。このように、互いに対向する２つの辺の中点を結ぶ２本の直線で４個の領域に均等に分割されるため、簡単な処理で効率的に仮想平面ＰＬを分割することができる。また、視野外領域が、以降の処理を行う対象の領域から除外されるため、処理の負荷が軽減される。
【００７１】
ここでは、領域を、順次４個の領域に均等に分割する場合について説明するが、４個に限らず、第１所定数（例えば、１６個等）の領域に分割する形態であれば良い。第１所定数が大きい程、分割回数を削減する（＝処理時間を削減する）ことができる。逆に、第１所定数が小さい程、均一な画質の画像を形成することが可能なポリゴンモデルを生成することができる。
【００７２】
図１０は、領域の分割要否の判定に用いるサイズ評価値の算出処理（＝「サイズ評価値算出ステップ」において実行される処理に相当する）の一例を示す説明図である。平面分割処理においては、仮想カメラＶＰからの距離が近い程、領域の面積を小さくするべく分割される。具体的には、領域毎の仮想カメラＶＰから見た画像の大きさを示すサイズ評価値がそれぞれ求められ、求められたサイズ評価値を、予め設定された閾値以下とするべく分割される。
【００７３】
図１０（ａ）に示すように、仮想平面ＰＬが分割されている場合に、領域ＰＬＡのサイズ評価値は、以下のようにして求められる。まず、領域ＰＬＡに対応する正方形に外接する円を大円とする球ＢＡが仮想的に設定される。そして、生成された球ＢＡを、仮想カメラＶＰから見た画像（＝図９（ｂ））の面積（図１にしめすテレビ２の画面上の画素数に対応する）が、領域ＰＬＡのサイズ評価値として求められる。
【００７４】
ここでは、サイズ評価値が、分割して生成された領域に対応する正方形に外接する円を大円とする球の仮想カメラＶＰから見た画像の面積である場合について説明するが、サイズ評価値が、領域に対応する正方形に内接する円を大円とする球の仮想カメラＶＰから見た画像の面積である形態でも良い。更に、サイズ評価値は、分割して生成された領域の仮想カメラＶＰから見た画像の大きさに対応する値であれば良い。例えば、サイズ評価値が、分割して生成された領域と仮想カメラＶＰとの距離である形態でも良い。
【００７５】
図１１は、再分割処理（＝「再分割ステップ」において実行される処理に相当する）及び三角形生成処理（＝「三角形生成ステップ」において実行される処理に相当する）の一例を示す説明図である。平面分割処理においては、全ての領域のサイズ評価値が、予め設定された閾値以下となるまで繰り返し分割された後に、再分割処理が実行される。再分割処理は、生成された領域を、それぞれ、予め設定された第２所定数（ここでは、３６個）の正方形の領域である小領域に均等に分割する処理である。図１１（ａ）は、全ての領域のサイズ評価値が、予め設定された閾値以下となるまで繰り返し分割された結果を示す図である。この図に示すように、平面分割処理によって、仮想カメラＶＰに近い領域ＰＬＮは、小さい領域に（＝細かく）分割され、仮想カメラＶＰから遠い領域ＰＬＡ、ＰＬＢは大きい領域に（＝粗く）分割されている。再分割処理は、図１１（ａ）に示す領域ＰＬＮ、ＰＬＡ、ＰＬＢ等を含む全ての領域を、それぞれ各辺の方向に６個ずつの小領域に分割することによって、３６個の正方形の領域（図１１（ｂ）参照）である小領域に均等に分割する処理である。
【００７６】
このように、再分割処理を行うことによって、曲面ＳＦを表す適正な大きさのポリゴンを効率的に生成することができる。すなわち、平面分割処理において、サイズ評価値に基づいて仮想平面ＰＬを適正な大きさの領域に分割しておき、再分割処理において、各領域を第２所定数（ここでは、３６個）の小領域に均等に分割することによって、適正な大きさのポリゴンを効率的に生成することができるのである。
【００７７】
ここでは、再分割処理において、３６個の小領域に均等に分割する場合について説明したが、領域の各辺方向に、それぞれ、偶数個（例えば、４個、８個等）の小領域に分割する形態であれば良い。領域の各辺方向に奇数個の小領域に分割する場合には、図１２に示すようにスムーズにポリゴンを接続することができないからである。
【００７８】
また、三角形生成処理は、再分割ステップにおいて生成された四角形の小領域毎に、当該四角形の小領域を対角線で分割して得られる２つの三角形の領域にそれぞれ対応する２個の三角形ポリゴンを生成する処理である。ただし、図１１（ａ）に示す領域ＰＬＡ、ＰＬＢのように、異なる大きさの領域が隣接している場合には、三角形生成処理において、スムーズにポリゴンを接続することができるように三角形の領域に分割する必要がある。
【００７９】
具体的には、図１１（ｂ）に示すように、三角形生成処理において、平面分割処理において生成された各領域に対応する正方形を構成する辺の一部を、小領域に対応する正方形のいずれかの辺として含む小領域である外周小領域（＝頂点Ｎ１１〜Ｎ１７、Ｎ２１〜Ｎ７１、Ｎ７２〜Ｎ７７、Ｎ２７〜Ｎ６７の少なくともいずれか１の頂点を含む小領域）が抽出される（＝「外周抽出ステップ」が実行される）。そして、抽出された外周小領域の内、該外周小領域が平面分割処理において生成された領域に対応する正方形を構成する頂点（ここでは、頂点Ｎ１１、Ｎ１７、Ｎ７１、Ｎ７７）を含む場合には、該外周小領域を構成する四角形をそれぞれ分割する対角線として、該頂点（ここでは、頂点Ｎ１１、Ｎ１７、Ｎ７１、Ｎ７７）を含む対角線を選択する。一方、該外周小領域が平面分割処理において生成された領域に対応する正方形を構成する頂点（ここでは、頂点Ｎ１１、Ｎ１７、Ｎ７１、Ｎ７７）を含まない場合には、該外周小領域を構成する正方形をそれぞれ分割する対角線として、隣接する外周小領域の対角線が互いに略直交するべく（＝対角線が連続した折れ線を描くように）対角線を選択する（＝「対角線選択ステップ」が実行される）。
【００８０】
なお、本実施形態では、平面分割処理において生成された全ての領域（図１１（ａ）参照）を、それぞれ、図１１（ｂ）に示すパターンで７２個の三角形領域を生成する場合について説明する。この場合には、上記「外周抽出ステップ」及び「対角線選択ステップ」を含む三角形生成ステップを各領域について実行する必要が無いため、処理が簡略化される。ただし、平面分割処理において生成された各領域について、上記「外周抽出ステップ」及び「対角線選択ステップ」を含む三角形生成ステップを実行して、三角形領域を生成する形態でも良い。
【００８１】
図１２は、異なる大きさの領域が隣接している場合のポリゴン接続状態の一例を示す図である。例えば、図１１（ａ）に示す領域ＰＬＡ、ＰＬＢの各領域において、図１１（ｂ）に示すように三角形生成処理を行った場合には、図１２に示すように、領域ＰＬＢの頂点Ｎ１２、Ｎ１４、Ｎ１６を削除する処理を行うことによって、簡単な処理でスムーズにポリゴンを接続することができるのである。
【００８２】
ここでは、三角形生成処理において、図１１（ｂ）に示すように各小領域を三角形領域に分割する場合について説明したが、外周小領域以外の小領域については、どのように分割しても良い。図１１（ｂ）では、外周小領域以外の小領域を、全て右下がりの対角線で分割しているが、例えば、全て右上がりの対角線で分割しても良い。
【００８３】
また、図１１においては、平面分割処理において生成された各領域に対して、それぞれ、外周小領域を抽出して対角線を選択する処理を実行する場合について説明したが、本実施形態では、平面分割処理において生成された各領域を、図１１（ｂ）に示す７２個の三角形領域に分割することによって、三角形生成処理を実行する形態について説明する。すなわち、本実施形態では、平面分割処理において生成された各領域は、それぞれ、予め設定された７２個の三角形領域（図１１（ｂ）参照）に分割される。このようにして、予め設定された三角形領域を生成することによって、処理が簡略化される。
【００８４】
次に、図１３、図１４を用いて、第１距離読出処理、第１座標算出処理、及び、ポリゴン生成処理について説明する。まず、図１３を用いて、第１距離読出処理について説明する。第１距離読出処理（＝「第１距離読出ステップ」において実行される処理に相当し、且つ、「第１距離読出手段」によって実行される処理に相当する）は、平面分割処理において生成された領域にそれぞれ対応する多角形（ここでは、図１１（ｂ）に示す三角形）を構成する頂点（図１１（ｂ）に示す頂点Ｎ１１〜Ｎ７７等）毎に、仮想平面ＰＬからの距離を示す距離情報を内部メインメモリ１１ｅから読み出す処理である。
【００８５】
図１３は、距離画像ＰＭと仮想平面ＰＬとの対応付けの一例を示す図である。図１３（ａ）は、距離画像を構成する各点の位置及び色が、それぞれ、曲面ＳＦ（図１４（ａ）参照）上の各点の位置及び仮想平面ＰＬからの距離に対応するべく構成された画像情報である距離画像ＰＭの一例を示す画像図である。図１３（ａ）に示す距離画像ＰＭを構成する各点の位置は、図８（ａ）に示す仮想平面ＰＬ内の位置に対応しており、各点の色（ここでは、画像情報のα値を使用して表された８ビット（＝２５６階調）で表現された明暗）が、距離情報に対応している。ここでは、曲面ＳＦが高い（＝仮想平面ＰＬからの距離が大きい）程、白い画像となっている。図１３（ａ）に示す距離画像ＰＭの示す地形ＳＦは、仮想平面ＰＬの略中央部にひょうたん形の山が有り、その山の奥に小さな山が２箇所有る地形を示している（図１４（ａ）参照）。
【００８６】
図１３（ｂ）は、図１３（ａ）に示す距離画像ＰＭ（ここでは、便宜上、距離画像ＰＭに対して半透明化処理を施した画像を記載している）と、仮想平面ＰＬ（図１１（ａ）に示す領域）との対応付けの一例を示す図である。図１３（ｂ）に示すように、第１距離読出処理においては、平面分割処理において仮想平面ＰＬを分割して生成された図１１（ａ）に示す領域が、再分割処理されて生成された三角形領域（図１１（ｂ）参照：便宜上、図１３では図示省略）を構成する頂点（図１１（ｂ）に示す頂点Ｎ１１〜Ｎ７７等）は、図１３（ａ）に示す距離画像ＰＭと対応付けられることによって、距離画像ＰＭのα値を介して、距離情報が読み出される。
【００８７】
すなわち、第１距離読出処理では、仮想平面ＰＬが分割されて生成された正方形領域（図１３（ｂ）参照）が再分割されて生成された図略の三角形領域を構成する各頂点について、Ｘ座標及びＺ座標が求められ、求められたＸ座標及びＺ座標に対応する距離画像ＰＭ（図１３（ｂ）参照）のα値が読み出され、読み出されたα値に対応する距離が算出されることによって距離情報が求められる。
【００８８】
このように、内部メインメモリ１１ｅに格納された距離画像ＰＭを構成する各点の位置が、仮想平面ＰＬ内の位置に対応しており、各点の色（ここでは、画像情報のα値を使用して表された８ビット（＝２５６階調）で表現された明暗）が、距離情報に対応しているため、曲面ＳＦを示す距離情報を効率的に格納することができるので、距離情報４１（図１７参照）を格納するために必要な容量を削減することができると共に、距離情報４１を効率的に読み出すことができる。
【００８９】
ここでは、距離情報が画像情報のα値として格納されている場合について説明するが、距離情報が、画像を構成する画素に対応付けられたその他の色情報（例えば、ＲＧＢのいずれかの色情報）として格納されている形態でも良い。更に、距離情報が画像情報以外の形態で（例えば、距離情報が頂点の位置情報に対応付けられたマトリクスとして）格納されている形態でも良い。また、ここでは、距離画像ＰＭが内部メインメモリ１１ｅに格納されている場合について説明するが、距離画像ＰＭがその他の記憶手段（例えば、フラッシュメモリ１７等）に格納されている形態でも良い。
【００９０】
次に、図１４を用いて、第１座標算出処理、ポリゴン生成処理について説明する。第１座標算出処理（＝「第１座標算出ステップ」において実行される処理に相当し、且つ、「第１座標算出手段」によって実行される処理に相当する）は、平面分割処理において生成された領域にそれぞれ対応する多角形（ここでは、図１１（ｂ）に示す三角形）を構成する各頂点（図１１（ｂ）に示す頂点Ｎ１１〜Ｎ７７等）を、第１距離読出処理において読み出された距離情報が示す距離だけ、仮想平面ＰＬに垂直な方向（ここでは、Ｙ軸方向）に平行移動した位置の座標を求める処理である。
【００９１】
ポリゴン生成処理（＝「ポリゴン生成ステップ」において実行される処理に相当し、且つ、「ポリゴン生成手段」によって実行される処理に相当する）は、第１座標算出処理において求められた座標に対応する点を、ポリゴンを規定する頂点であるポリゴン頂点として、曲面ＳＦに対応するポリゴンを生成する処理である。
【００９２】
図１４は、ポリゴンモデルとして表現された曲面ＳＦの、距離画像ＰＭ及び仮想平面ＰＬとの関係の一例を示す図である。図１４（ａ）は、全体図であり、図１４（ｂ）は、平面分割処理において生成された１の領域ＰＬＣの周辺を拡大した図である。なお、図１４では、明記されていないが、平面分割処理によって生成された正方形の各領域（例えば領域ＰＬＣ）は、７２個の三角形領域（図１１（ｂ）参照）に分割されている。
【００９３】
図１４に示すように、第１座標算出処理では、平面分割処理において生成された三角形領域を構成する各頂点が、図１３を用いて説明した第１距離読出処理において読み出された距離情報（＝距離画像ＰＭのα値に対応する距離情報）が示す距離だけ、仮想平面ＰＬに垂直な方向（ここでは、Ｙ軸方向）に平行移動した位置の座標が求められる。例えば、領域ＰＬＣに含まれる図略の７２個の三角形領域を構成する各頂点にそれぞれ対応する距離情報が示す距離だけ、Ｙ軸方向に平行移動した位置（図１４（ｂ）の白丸で示す位置）の座標（＝曲面ＳＦを表すポリゴンモデルを構成する７２個の三角形ポリゴンに含まれる各ポリゴン頂点の座標）が求められる。
【００９４】
そして、図１４に示すように、ポリゴン生成処理では、第１座標算出処理において求められた座標に対応する点（図１４（ｂ）の白丸で示す点）が、ポリゴンを規定する頂点であるポリゴン頂点として、曲面ＳＦに対応するポリゴンが生成される。例えば、領域ＰＬＣに含まれる図略の７２個の三角形領域に対応するポリゴンとして、７２個の三角形ポリゴンＳＦＣが生成される。
【００９５】
このようにして、平面分割処理において生成された各領域に対して、それぞれ、７２個の三角形領域に対応するポリゴンが生成されるため、曲面ＳＦを表す適正な大きさのポリゴンを効率的に生成することができる。すなわち、平面分割処理において、ポリゴンの大きさを規定する領域の大きさが決定され、ポリゴン生成処理において、各領域に対応する７２個（＝第２所定数（＝３６個）×２）の三角形ポリゴンがそれぞれ生成されるため、曲面ＳＦを表す適正な大きさのポリゴンを効率的に生成することができるのである。
【００９６】
次に、図１５、図１６を用いて、法線画像生成処理について説明する。図１５は、法線ベクトルとポリゴンとの関係の一例を示す図である。ポリゴン頂点の法線ベクトルは、該ポリゴン頂点が含まれるポリゴンの法線ベクトルの平均値として求められる。また、ポリゴン頂点の法線ベクトルは、ポリゴンによって表現される曲面ＳＦ（図１４参照）の画像を生成する際に、陰影の画像を生成するために使用される。
【００９７】
一方、図８〜図１２を用いて説明したように、本発明においては、仮想カメラＶＰからの距離に基づいて仮想平面ＰＬが分割されるため、仮想平面ＰＬに形成された領域の内、仮想カメラＶＰが接近した領域は、平面分割処理において分割される場合がある。そして、ある領域が平面分割処理において分割されると、該領域に含まれる三角形領域も分割され、その結果、該領域に対応する三角形ポリゴンがそれぞれ分割されることになる。
【００９８】
例えば、図１５（ａ）に示すように、曲面ＳＦ（図１４参照）のポリゴンモデルを構成するポリゴン頂点として、Ｘ軸方向に３個のポリゴン頂点ＮＡ１、ＮＡ３、ＮＡ５が配置されている場合に、ポリゴン頂点ＮＡ１、ＮＡ３、ＮＡ５が含まれる領域に仮想カメラＶＰが接近した結果、平面分割処理において該領域が分割されると、図１５（ｂ）に示すように、Ｘ軸方向に５個のポリゴン頂点ＮＢ１〜ＮＢ５が生成される。すなわち、ポリゴン頂点ＮＡ１、ＮＡ３、ＮＡ５が含まれる領域に仮想カメラＶＰが接近した結果、図１５（ａ）に示す法線ベクトルＶＡ１、ＶＡ３、ＶＡ５をそれぞれ有するポリゴン頂点ＮＡ１、ＮＡ３、ＮＡ５によって陰影が規定される面が、図１５（ｂ）に示す法線ベクトルＶＢ１〜ＶＢ５をそれぞれ有するポリゴン頂点ＮＢ〜ＮＢ５によって陰影が規定される面に変化する。
【００９９】
この場合には、例えば、ポリゴン頂点ＮＡ３に対応する法線ベクトルＶＡ３が、ポリゴン頂点ＮＢ３に対応する法線ベクトルＶＢ３に大きく変化するため、曲面ＳＦ（図１４参照）は固定されており、且つ、光源の位置に変化が無いにも拘わらず、ポリゴン頂点ＮＡ３（ポリゴン頂点ＮＢ３）近傍の陰影が大きく変化することになり、不自然な画像の変化が生じることになる。
【０１００】
この問題を解消するために、本実施形態では、図１６を用いて説明する法線画像を用いて図１３（ａ）に示す距離画像ＰＭの各画素に対応する法線ベクトルを生成する。図１６は、法線画像生成処理の一例を示す図である。法線画像生成処理（「基準点設定ステップ」、「外周点設定ステップ」、「第２距離読出ステップ」、「第２座標算出ステップ」、及び、「法線ベクトル算出ステップ」において実行される処理に相当する）は、図１３（ａ）に示す（＝図１６（ｂ）に再掲する）距離画像ＰＭから、図１６（ｃ）に示す法線画像ＶＭを生成する処理である。
【０１０１】
具体的には、まず、図１６（ａ）に示すように、法線ベクトル情報を生成する対象の点である基準点Ｑ０（後述する点Ｐ０と一致するため図示省略）として、内部メインメモリ１１ｅに距離情報が対応付けて格納された距離画像ＰＭ上の点（＝距離画像ＰＭのピクセルに相当する）が順次設定される。そして、距離画像ＰＭ（＝仮想平面ＰＬ）内において、基準点Ｑ０から予め設定された第１方向（ここでは、Ｚ軸方向）に予め設定された単位距離ｄ（ここでは、「単位距離ｄ」＝「距離画像ＰＭのピクセル間隔」）だけ離間した２つの外周点Ｑ１、Ｑ２（後述する点Ｐ１、Ｐ２と、それぞれ一致するため図示省略）が設定され、基準点Ｑ０から第１方向（ここでは、Ｚ軸方向）と直交する方向である第２方向（ここでは、Ｘ軸方向）に単位距離ｄだけ離間した２つの外周点Ｑ３、Ｑ４（後述する点Ｐ３、Ｐ４と、それぞれ一致するため図示省略）が設定される。ここでは、単位距離ｄが、距離画像ＰＭのピクセル間隔である場合について説明するが、単位距離ｄが、距離画像ＰＭのピクセル間隔の整数倍（例えば、４倍）である形態でも良い。
【０１０２】
次に、基準点Ｑ０及び４つの外周点Ｑ１〜Ｑ４にそれぞれ対応する距離情報が内部メインメモリ１１ｅ（＝図１６（ｂ）に示す距離画像ＰＭに対応する情報）から読み出される。次いで、基準点Ｑ０及び４つの外周点Ｑ１〜Ｑ４を、それぞれ、読み出された距離情報が示す距離だけ、仮想平面ＰＬ（＝距離画像ＰＭ）に垂直な方向（Ｙ軸方向）に平行移動した位置の座標が求められる。そして、求められた座標に対応する５つの点Ｐ０、Ｐ１〜Ｐ４の内、基準点Ｑ０に対応する点Ｐ０と、基準点Ｑ０から第１方向（ここでは、Ｚ軸方向）に離間した２つの外周点Ｑ１、Ｑ２のいずれか一方に対応する点と、基準点Ｑ０から第２方向（ここでは、Ｘ軸方向）に離間した２つの外周点Ｑ３、Ｑ４のいずれか一方に対応する点と、を頂点とする４つの三角形ポリゴン（図１６（ａ）の斜線部）の法線ベクトルＶ１〜Ｖ４がそれぞれ求められる。次に、法線ベクトルＶ１〜Ｖ４の平均値が算出され、内部メインメモリ１１ｅに、基準点Ｑ０の仮想平面ＰＬ上の位置を示す情報と対応付けて記録される。
【０１０３】
ただし、法線ベクトルＶ１〜Ｖ４の平均値（＝基準点Ｑ０に対応する法線ベクトル）は、図１３（ｃ）に示す法線画像ＶＭを構成する各点の位置及び色が、それぞれ、曲面ＳＦ（図１４参照）上の各点の位置及び法線ベクトルに対応するべく構成された画像情報として、内部メインメモリ１１ｅに格納される。すなわち、基準点Ｑ０の位置情報が図１３（ｃ）に示す法線画像ＶＭの位置情報として、内部メインメモリ１１ｅに格納され、基準点Ｑ０に対応する法線ベクトルのＸ成分、Ｙ成分、Ｚ成分が、それぞれ、図１３（ｃ）に示す法線画像ＶＭのＲ（＝赤）色、Ｇ（＝緑）色、Ｂ（＝青）色情報として、内部メインメモリ１１ｅに格納される。
【０１０４】
このようにして、法線ベクトル情報が、法線画像ＶＭとして格納されているため、法線ベクトル情報を効率的に格納することができるので、法線ベクトル情報を格納するために必要な容量を削減することができると共に、法線ベクトル情報を効率的に読み出すことができる。
【０１０５】
ここでは、法線ベクトル情報が、画像情報の色情報（ＲＧＢ色情報）として格納されている場合について説明したが、画像を構成する画素に対応付けられたその他の情報（例えば、透明度を示すα値等）として格納されている形態でも良い。更に、法線画像ＶＭが、内部メインメモリ１１ｅに格納されている場合について説明するが、法線画像ＶＭがその他の記憶手段（例えば、フラッシュメモリ１７等）に格納されている形態でも良い。
【０１０６】
また、ここでは、ゲーム開始時に、法線画像ＶＭが生成されて内部メインメモリ１１ｅに格納されており、陰影等を描画するために用いるポリゴン頂点に対応する法線ベクトルは、ポリゴン頂点毎に、対応する法線ベクトルを内部メインメモリ１１ｅに格納された法線画像ＶＭの対応する色情報（ＲＧＢ情報）として読み出して設定する。このようにして、法線画像ＶＭを介して法線ベクトルが設定されるため、仮想カメラＶＰの移動等に伴い分割数が変化した場合であっても、ポリゴン頂点の法線ベクトルの変化を少なくすることができるので、違和感のない画像を表示することができる。また、法線画像ＶＭが予め内部メインメモリ１１ｅに格納されているため、ポリゴン頂点に対応する法線ベクトルを効率的に求めることができる。
【０１０７】
ここでは、ゲーム開始時に、法線画像ＶＭが生成されて内部メインメモリ１１ｅに格納されている場合について説明するが、ゲーム中に、予め設定された複数の曲面ＳＦ（図１４参照）の中から１の曲面が選択可能に構成されている場合には、１の曲面ＳＦが選択された時点で、選択された曲面ＳＦに対応する距離画像ＰＭから、法線画像ＶＭを生成する形態でも良い。この場合には、法線画像ＶＭを予め格納する必要が無いため、法線画像ＶＭを格納するための容量を削減することができる。
【０１０８】
以下、図１７〜図２１を参照して、ゲーム装置３の動作を説明する。図１７は、内部メインメモリ１１ｅのメモリマップの一例である。ただし、本発明にとって重要ではないデータについては図示を省略している。なお、内部メインメモリ１１ｅに換えて外部メインメモリ１２、フラッシュメモリ１７等を利用しても構わない。内部メインメモリ１１ｅには、画像処理プログラム４０、距離データ４１、法線ベクトルデータ４２、ブロックデータ４３、及び、モデルデータ４４が格納される。
【０１０９】
画像処理プログラム４０は、後述する図１８〜図２１のフローチャートに示す処理をコンピュータ（ＣＰＵ１０又はＧＰＵ１１ｂ）に実行させるためのコンピュータプログラムであって、本実施形態では、光ディスク４から内部メインメモリ１１ｅにロードされる。ただし、画像処理プログラム４０は、光ディスク４に限らず他の任意の外部記録媒体を介して供給されても良いし、有線又は無線の通信回線を介して他のコンピュータシステムより供給されても良いし、ゲーム装置３の内部のフラッシュメモリ１７等の不揮発性の記憶装置に予め記録されていても良い。
【０１１０】
距離データ４１は、図１３（ａ）に示す距離画像ＰＭを構成するデータであって、位置情報に対応付けて距離情報を格納するものである。距離データ４１は、典型的には光ディスク４から内部メインメモリ１１ｅにロードされる。
【０１１１】
法線ベクトルデータ４２は、図１６（ｃ）に示す法線画像ＶＭを構成するデータであって、位置情報に対応付けて法線ベクトル情報を格納するものである。法線ベクトルデータ４２は、距離データ４１に基づいてＣＰＵ１０（又はＧＰＵ１１ｂ）によって生成され、内部メインメモリ１１ｅに格納される。
【０１１２】
なお、上述のように、距離情報をα値情報として格納し、法線ベクトル情報をＲＧＢ情報として格納する場合には、距離データ４１と法線ベクトルデータ４２とを１のデータとして格納することが好ましい。すなわち、図８に示す仮想平面ＰＬ上の画素（＝等間隔に配列された格子点）の位置を示す位置情報と対応付けて、α値情報として距離情報を格納し、ＲＧＢ情報として法線ベクトル情報を格納すれば、容量を削減することができるからである。
【０１１３】
ブロックデータ４３は、図８〜図１２を用いて説明した平面分割処理において生成された領域（以下、三角形領域と区別するため、便宜上「ブロック」という）毎に、そのブロックの中心点のＸ座標、Ｚ座標及び分割回数を格納するものである。ブロックデータ４３は、ＣＰＵ１０（又はＧＰＵ１１ｂ）によって生成され、格納される。
【０１１４】
モデルデータ４４は、図１３、図１４を用いて説明したポリゴン生成処理において生成されたポリゴンデータ（ポリゴン頂点の座標データ、法線ベクトルデータ等）を、ブロックデータ４３と対応付けて格納するものである。モデルデータ４４は、ＣＰＵ１０（又はＧＰＵ１１ｂ）によって生成され、内部メインメモリ１１ｅに格納される。
【０１１５】
次に、図１８〜図２１のフローチャートを参照して、画像処理プログラム４０に基づくＣＰＵ１０（又はＧＰＵ１１ｂ）の動作を説明する。なお、図１８〜図２１に示す各フローチャートの各ステップの処理は、ＣＰＵ１０とＧＰＵ１１ｂのどちらが実行しても構わず、各ステップについてＣＰＵ１０とＧＰＵ１１ｂのどちらか適切な方に実行させるようにすれば良い。図１８は、ＣＰＵ（又はＧＰＵ）の動作の一例を示すフローチャートである。以下の説明では、図１８に示すフローチャートのステップＳ１０１〜Ｓ１０７、及びステップＳ１１１の処理をＣＰＵ１０が、図１８に示すフローチャートのステップＳ１０９の処理をＧＰＵ１１ｂが実行するものとして説明する。
【０１１６】
画像処理プログラム４０の実行が開始されると、図１８のフローチャートに示す一連の処理が開始される。なお、図１８のフローチャートに、ユーザからの外部入力やその他の条件に応じて、表示される曲面等を選択させる処理を追加しても構わない。
【０１１７】
ステップＳ１０１では、ＣＰＵ１０は、距離データ４１に基づいて法線ベクトルデータ４２を生成し、内部メインメモリ１１ｅに記録する。ステップＳ１０１で実行される法線画像生成処理の詳細については、図１９を用いて後述する。ステップＳ１０３では、ＣＰＵ１０は、コントローラ７からの指示を受け付けて仮想カメラＶＰの位置を設定する。
【０１１８】
ステップＳ１０５では、ＣＰＵ１０は、ステップＳ１０３において設定された仮想カメラＶＰの位置に基づいて、ブロックデータ４３を生成し、内部メインメモリ１１ｅに記録する。ステップＳ１０５で実行されるブロック生成処理の詳細については、図２０を用いて後述する。
【０１１９】
ステップＳ１０７では、ＣＰＵ１０は、ステップＳ１０５において生成されたブロックデータ４３に基づいて、モデルデータ４４を生成し、内部メインメモリ１１ｅに記録する。ステップＳ１０７で実行されるポリゴン生成処理の詳細については、図２１を用いて後述する。
【０１２０】
ステップＳ１０９では、ＧＰＵ１１ｂは、ステップＳ１０７において生成されたモデルデータ４４に基づいて、曲面ＳＦを描画する。具体的には、内部メインメモリ１１ｅからモデルデータ４４を読み出して、ＶＲＡＭ１１ｄ内のフレームメモリへ描画する。ステップＳ１１１では、ＣＰＵ１０は、コントローラ７からの指示を受け付けて、画像処理を終了するか否かの判定を行う。画像処理を終了すると判定され場合（Ｓ１１１でＹＥＳ）には、ＣＰＵ１０は、画像処理を終了する。画像処理を終了しないと判定され場合（Ｓ１１１でＮＯ）には、ＣＰＵ１０は、処理をステップＳ１０３に戻し、ステップＳ１０３以降の処理を繰り返し実行する。
【０１２１】
上記のステップＳ１０３〜Ｓ１１１の処理は、１フレーム周期（例えば、６０分の１秒の周期）で繰り返され、その結果、テレビ２の画面には曲面ＳＦを示す動画像が表示される。
【０１２２】
ここでは、ステップＳ１０１において、距離データ４１に基づいて法線ベクトルデータ４２を生成し、内部メインメモリ１１ｅに記録する場合について説明したが、予め生成された法線ベクトルデータ４２を内部メインメモリ１１ｅ等に格納しておく形態でも良い。この場合には、法線ベクトルデータ４２を生成する処理が不要となるため、処理が簡略化される。
【０１２３】
図１９は、図１８に示すフローチャートのステップＳ１０１で実行される法線画像生成処理の一例を示す詳細フローチャートである。なお、ここでは、図１６を参照して、法線画像生成処理の説明を行う。ステップＳ２０１では、ＣＰＵ１０は、仮想平面ＰＬ上の点から、法線ベクトル情報を生成する対象の点である基準点Ｑ０を設定する（＝「基準点設定ステップ」を実行する）。ステップＳ２０３では、ＣＰＵ１０は、ステップＳ２０１において設定された基準点Ｍ０に基づいて、外周点Ｑ１〜Ｑ４を設定する（＝「外周点設定ステップ」を実行する）。
【０１２４】
ステップＳ２０５では、ＣＰＵ１０は、ステップＳ２０１、Ｓ２０３において設定された基準点Ｑ０及び外周点Ｑ１〜Ｑ４にそれぞれ対応する距離情報が内部メインメモリ１１ｅから読み出す（＝「第２距離読出ステップ」を実行する）。ステップＳ２０７では、ＣＰＵ１０は、基準点Ｑ０及び外周点Ｑ１〜Ｑ４に対応する曲面ＳＦ上の点Ｐ０〜Ｐ４を頂点とする４つの三角形ポリゴンを生成する（＝「第２座標算出ステップ」を実行する）。ステップＳ２０９では、ＣＰＵ１０は、ステップＳ２０７で生成された４つの三角形ポリゴンの法線ベクトルＶ１〜Ｖ４を求める（＝「法線ベクトル算出ステップ」を実行する）。ステップＳ２１１では、ＣＰＵ１０は、ステップＳ２０９で生成された４つの法線ベクトルＶ１〜Ｖ４の平均値を求める（＝「平均算出ステップ」を実行する）。ステップＳ２１３では、ＣＰＵ１０は、内部メインメモリ１１ｅに、基準点Ｑ０の仮想平面ＰＬ上の位置を示す情報と対応付けて記録する。
【０１２５】
ステップＳ２１５では、ＣＰＵ１０は、仮想平面ＰＬ上の全て点（＝距離画像ＰＭの全てのピクセル）が基準点Ｑ０として設定されたか否かの判定を行う。仮想平面ＰＬ上の全て点が設定されたと判定した場合（Ｓ２１５でＹＥＳ）には、ＣＰＵ１０は、処理をリターンする。仮想平面ＰＬ上の全て点が設定されてはいないと判定した場合（Ｓ２１５でＮＯ）には、ＣＰＵ１０は、処理をステップＳ２０１に戻し、ステップＳ２０１において未設定の点を基準点Ｍ０として設定し、ステップＳ２０１以降の処理を繰り返し実行する。
【０１２６】
図２０は、図１８に示すフローチャートのステップＳ１０５で実行されるブロック生成処理の一例を示す詳細フローチャートである。なお、ここでは、図８〜図１２を参照して、ブロック生成処理の説明を行う。ステップ３０１では、ＣＰＵ１０は、仮想平面ＰＬを、４個のブロックＰＬ１１〜ＰＬ１４に均等に分割する（＝「第１分割ステップ」を実行する：図８参照）。ステップ３０３では、ＣＰＵ１０は、ステップＳ３０１（又はステップＳ３１１において）生成されたブロックに視野外のブロックが有るか否かの判定を行う（＝「視野判定ステップ」を実行する：図９参照）。
【０１２７】
視野外のブロックが無いと判定した場合（ステップＳ３０３でＮＯ）には、ＣＰＵ１０は、処理をステップＳ３０７に進める。視野外のブロックが有ると判定した場合（ステップＳ３０３でＹＥＳ）には、ステップ３０５で、ＣＰＵ１０は、視野外のブロックを処理の対象から除外する（＝「領域除外ステップ」を実行する：図８参照）。ステップＳ３０３でＮＯの場合、又は、ステップＳ３０５の処理が終了した場合、ステップ３０７で、ＣＰＵ１０は、各ブロック（＝ステップＳ３０１又はステップＳ３１１において生成されたブロックの内、ステップＳ３０５で処理対象から除外されていないブロック）のサイズ評価値を算出する（＝「サイズ評価値算出ステップ」を実行する：図１０参照）。
【０１２８】
ステップＳ３０９では、ＣＰＵ１０は、ステップＳ３０７で算出されたサイズ評価値が予め設定された所定の閾値以上のブロック（＝分割の必要なブロック）が有るか否かの判定を行う（＝「分割要否判定ステップ」を実行する）。分割の必要なブロックが無いと判定した場合（Ｓ３０９でＮＯ）には、ＣＰＵ１０は、処理をステップＳ３１３に進める。分割の必要なブロックが有ると判定した場合（Ｓ３０９でＹＥＳ）には、ステップＳ３１１で、ＣＰＵ１０は、分割の必要なブロックをそれぞれ４個のブロックに均等に分割し（＝「第２分割ステップ」を実行し）、処理をステップＳ３０３に戻し、ステップＳ３０３以降の処理を、分割の必要なブロックが無い（ステップＳ３０９でＮＯ）と判定されるまで、繰り返し実行する。
【０１２９】
ステップＳ３０９でＮＯの場合、ステップＳ３１３で、ＣＰＵ１０は、ステップＳ３０１又はステップＳ３１１で生成された各ブロックの中心点のＸ座標、Ｚ座標及び分割回数を、ブロックデータ（図１７参照）として図２に示す内部メインメモリ１１ｅに一時的に記録する。ステップＳ３１５では、ＣＰＵ１０は、ステップＳ３０１又はステップＳ３１１で生成された各ブロックを、均等に分割して３６個の小ブロックを生成する（＝「再分割ステップ」を実行する：図１１参照）。ステップＳ３１７では、ＣＰＵ１０は、ステップＳ３１５で生成された小ブロックを三角形領域に分割し（＝「三角形生成ステップ」の一部を実行する：図１１参照）し、処理をリターンする。
【０１３０】
ここでは、ステップＳ３１３において、ＣＰＵ１０が、ブロックデータを内部メインメモリ１１ｅに記録する場合について説明したが、その他のメモリ（例えば、フラッシュメモリ１７等）に記録する形態でも良い。
【０１３１】
また、ここでは、ステップＳ３１５において、ステップＳ３０１又はステップＳ３１１で生成された各ブロックを、均等に分割して３６個の小ブロックを生成した後、ステップＳ３１７において、小ブロックを三角形領域に分割し、図２１に示すフローチャートのステップＳ４１３で、三角形領域に対応する三角形ポリゴンを生成する場合について説明するが、ステップＳ３０１又はステップＳ３１１で生成された各ブロックを三角形領域に分割し、図２１に示すフローチャートのステップＳ４１３で、三角形領域に対応する三角形ポリゴンを生成する形態（＝「再分割ステップ」を実行せずに三角形領域を生成する形態）でも良い。
【０１３２】
図２１は、図１８に示すフローチャートのステップＳ１０７で実行されるポリゴン生成処理の一例を示す詳細フローチャートである。ステップＳ４０１では、ＣＰＵ１０は、前回のポリゴン生成処理のステップＳ４１５において、内部メインメモリ１１ｅにモデルデータ４４と対応付けて格納されたブロックデータ４３を読み出す。ステップＳ４０３では、図２０に示すフローチャートのステップＳ３１３で内部メインメモリ１１ｅに格納されたブロックデータの中から１のブロックデータを選択して読み出す。
【０１３３】
ステップＳ４０５では、ＣＰＵ１０は、ステップＳ４０３で読み出したブロックデータと一致するブロックデータが、ステップＳ４０１で読み出したブロックデータ４３に含まれているか否か（＝既に、前回までのポリゴン生成処理において、ポリゴンが生成され、モデルデータ４４が内部メインメモリ１１ｅに格納されたブロックに対応するブロックデータ４３に含まれるか否か）の判定を行う。ブロックデータ４３に含まれていると判定された場合（Ｓ４０５でＹＥＳ）には、ＣＰＵ１０は、処理をステップＳ４１７に進める。ブロックデータ４３に含まれていないと判定された場合（Ｓ４０５でＮＯ）には、ステップＳ４０７で、ＣＰＵ１０は、ステップＳ４０３で読み出したブロックデータに含まれる小ブロックの各頂点に対応する距離情報を内部メインメモリ１１ｅに格納された距離データ４１から読み出す（＝「第１距離読出ステップ」を実行する）。
【０１３４】
ステップＳ４０９では、ＣＰＵ１０は、ステップＳ４０７で読み出した距離情報を用いて、ステップＳ４０３で読み出したブロックデータに含まれる小ブロックの各頂点に対応するポリゴン頂点の座標を算出する（＝「第１座標算出ステップ」を実行する）。ステップＳ４１１では、ＣＰＵ１０は、ステップＳ４０３で読み出したブロックデータ毎に、ステップＳ４０９で算出したポリゴン頂点の座標を用いて、７２個の三角形ポリゴン（図１１（ｂ）参照）を生成する（＝「三角形生成ステップ」を実行する）。ステップＳ４１３では、ＣＰＵ１０は、ステップＳ４１１で生成された三角形ポリゴンに含まれる画素に対応する法線ベクトル情報を、内部メインメモリ１１ｅに格納された法線ベクトルデータ４２から読み出す（＝「法線読出ステップ」及び「法線設定ステップ」を実行する）。
【０１３５】
ステップＳ４１５では、ＣＰＵ１０は、ステップＳ４１１、Ｓ４１３で生成されたポリゴンデータをモデルデータ４４として、ステップＳ４０３で読み出したブロックデータ４３と対応付けて、内部メインメモリ１１ｅに格納する。ステップＳ４１５の処理が終了された場合、又は、ステップＳ４０５でＹＥＳの場合、ステップＳ４１７で、ＣＰＵ１０は、内部メインメモリ１１ｅに格納された全てのブロックデータの選択が完了したか否かの判定を行う。全てのブロックデータの選択が完了したと判定した場合（Ｓ４１７でＹＥＳ）には、ＣＰＵ１０は、処理をリターンする。全てのブロックデータの選択が完了してはいないと判定した場合（Ｓ４１７でＮＯ）には、ＣＰＵ１０は、処理をステップＳ４０３に戻し、ステップＳ４０３において、未選択の１のブロックデータを選択し、ステップＳ４０３以降の処理を、ステップＳ４１７において全てのブロックデータの選択が完了したと判定されるまで繰り返し実行する。
【０１３６】
このようにして、図２１に示すポリゴン生成処理において、ブロックデータが、前回までのポリゴン生成処理において、ポリゴンが生成され、モデルデータ４４が内部メインメモリ１１ｅに格納されたブロックに対応するブロックデータ４３に含まれていない場合（＝今回のブロック生成処理において、新たに生成されたブロックに対応するブロックデータである場合）に限って、ポリゴンが生成されるため、処理を軽減することができる。
【０１３７】
すなわち、前回までのポリゴン生成処理において生成されたモデルデータ４４と、今回のポリゴン生成処理において生成するべきモデルデータとが一致する場合（＝今回のブロック生成処理（図２０参照）において生成され、内部メインメモリ１１ｅに格納されたブロックデータと一致するブロックデータが、既に、内部メインメモリ１１ｅに格納されている場合）には、今回のポリゴン生成処理においては、当該モデルデータが生成されない（＝前回までのポリゴン生成処理において生成されたモデルデータ４４が内部メインメモリ１１ｅから読み出されて使用される）ため、処理を軽減することができるのである。
【０１３８】
以上のように、本実施形態によれば、仮想カメラＶＰから見た画像の品位を確保することが可能であって且つ格納するために必要な容量が小さい（＝適正な）ポリゴン情報（＝モデルデータ４４）を生成することができる。
【産業上の利用可能性】
【０１３９】
本発明は、例えば、ゲーム装置等の画像処理プログラム及び画像処理装置に適用することができる。特に、仮想三次元空間に配置された仮想平面からの距離によって起伏が規定される曲面（例えば、地形を示す曲面）の、当該仮想三次元空間に配置された仮想カメラから見た画像を描画する画像処理プログラム及び画像処理装置に適用することができる。
【図面の簡単な説明】
【０１４０】
【図１】本発明の一実施形態に係るゲームシステムの外観図
【図２】ゲーム装置の構成を示すブロック図
【図３】コントローラの上面後方から見た斜視図
【図４】コントローラを下面後方から見た斜視図
【図５】コントローラの上筐体を外した状態を示す斜視図
【図６】コントローラの下筐体を外した状態を示す斜視図
【図７】コントローラの構成を示すブロック図
【図８】仮想平面を予め設定された４つの領域に分割する処理の内容の一例を示す説明図
【図９】仮想カメラの視野外の領域を処理対象の領域から除外する処理の一例を示す説明図
【図１０】領域の分割要否の判定に用いるサイズ評価値の算出処理の一例を示す説明図
【図１１】再分割処理及び三角形生成処理の一例を説明する説明図
【図１２】異なる大きさの領域が隣接している場合のポリゴン接続状態の一例を示す図
【図１３】距離画像と仮想平面との対応付けの一例を示す図
【図１４】ポリゴンモデルとして表現された曲面の、距離画像及び仮想平面との関係の一例を示す図
【図１５】法線ベクトルとポリゴンとの関係の一例を示す図
【図１６】法線画像生成処理の一例を示す図
【図１７】内部メインメモリのメモリマップ
【図１８】ＣＰＵ（又はＧＰＵ）の動作の一例を示すフローチャート
【図１９】図１８に示すフローチャートのステップＳ１０１で実行される法線画像生成処理の一例を示す詳細フローチャート
【図２０】図１８に示すフローチャートのステップＳ１０５で実行されるブロック生成処理の一例を示す詳細フローチャート
【図２１】図１８に示すフローチャートのステップＳ１０７で実行されるポリゴン生成処理の一例を示す詳細フローチャート
【符号の説明】
【０１４１】
１    ゲームシステム
２    テレビジョン受像器（テレビ）
２ａ    スピーカ
３    ゲーム装置
４    光ディスク
６    マーカ部
６Ｒ，６Ｌ    マーカ
７    コントローラ
１０    ＣＰＵ
１１    システムＬＳＩ
１１ａ    入出力プロセッサ
１１ｂ    ＧＰＵ
１１ｃ    ＤＳＰ
１１ｄ    ＶＲＡＭ
１１ｅ    内部メインメモリ
１２    外部メインメモリ
１３    ＲＯＭ／ＲＴＣ
１４    ディスクドライブ
１５    ＡＶ−ＩＣ
１６    ＡＶコネクタ
１７    フラッシュメモリ
１８    無線通信モジュール
１９    無線コントローラモジュール
２０    拡張コネクタ
２１    メモリカード用コネクタ
２２    アンテナ
２３    アンテナ
２４    電源ボタン
２５    リセットボタン
２６    イジェクトボタン
４０    画像処理プログラム
４１    距離データ
４２    法線ベクトルデータ
４３    ブロックデータ
４４    モデルデータ
７１    ハウジング
７２    操作部
７３    コネクタ
７４    撮像情報演算部
７５    通信部
７００    基板
７０１    加速度センサ
７０２    ＬＥＤ
７０３    水晶振動子
７０４    バイブレータ
７０５    電池
７０６    スピーカ
７０７    サウンドＩＣ
７０８    アンプ
７４１    赤外線フィルタ
７４２    レンズ
７４３    撮像素子
７４４    画像処理回路
７５１    マイコン
７５２    メモリ
７５３    無線モジュール
７５４    アンテナ
【図１】
0005078712.tif 000002
【図２】
0005078712.tif 000003
【図３】
0005078712.tif 000004
【図４】
0005078712.tif 000005
【図５】
0005078712.tif 000006
【図６】
0005078712.tif 000007
【図７】
0005078712.tif 000008
【図８】
0005078712.tif 000009
【図９】
0005078712.tif 000010
【図１０】
0005078712.tif 000011
【図１１】
0005078712.tif 000012
【図１２】
0005078712.tif 000013
【図１５】
0005078712.tif 000014
【図１７】
0005078712.tif 000015
【図１８】
0005078712.tif 000016
【図１９】
0005078712.tif 000017
【図２０】
0005078712.tif 000018
【図２１】
0005078712.tif 000019
【図１３】
0005078712.tif 000020
【図１４】
0005078712.tif 000021
【図１６】
0005078712.tif 000022