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