説明

画像処理プログラムおよび画像処理装置

【課題】3次元画像処理において、仮想空間に配置された積雪、土砂、レンガなどの立体オブジェクトを、その形状によらず簡単に描画することが可能な画像処理プログラムおよび画像処理装置を提供すること。
【解決手段】多層ポリゴンモデルを構成するための多層ポリゴンデータと、描画しようとする立体オブジェクトの各位置の高さを示す2次元配列の高さデータ値からなる高さマップとを記憶装置から読み出す。そして、多層ポリゴンモデルの各層について、層の高さと高さマップの各位置の高さデータ値とを比較することによって、多層ポリゴンモデルの各層における可視領域を決定する。そして、こうして決定された多層ポリゴンモデルの各層の可視領域を所定の色で描画する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理プログラムおよび画像処理装置に関し、特に、仮想空間に配置された積雪、土砂、レンガなどの立体オブジェクトの表面形状を描画するための画像処理プログラムおよび画像処理装置に関する。
【背景技術】
【0002】
従来、3次元画像処理において積雪を表現する方法として、積雪の雪面の形状に応じた形状のポリゴンモデルを仮想空間に配置する方法がある(例えば、特許文献1参照。)。
【特許文献1】特開2006−285510号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記のように雪面の形状に応じた形状のポリゴンモデルを仮想空間に配置する場合には、雪面の形状が複雑になるほどポリゴンモデルの形状が複雑となり、その結果、ポリゴンモデルを構成するポリゴンの数が非常に多くなり、コンピュータの処理負担が増えてしまうという問題がある。
【0004】
それゆえに本発明の目的は、3次元画像処理において、仮想空間に配置された積雪、土砂、レンガなどの立体オブジェクトの表面形状を、オブジェクトの形状によらず簡単に描画することが可能な画像処理プログラムおよび画像処理装置を提供することである。
【課題を解決するための手段】
【0005】
上記目的を達成するために、本発明は以下のように構成される。なお、括弧内の参照符号および図番号は、本発明の理解を助けるために図面との対応関係の一例を示したものであって、本発明の範囲を何ら限定するものではない。
【0006】
本発明の画像処理プログラム(40)は、仮想空間に配置された立体オブジェクト(例えば、積雪、土砂、レンガなど)を描画するための画像処理プログラムである。上記画像処理プログラムは、コンピュータ(10,11b)に、ポリゴンデータ読み出しステップ、高さマップ読み出しステップ、可視領域決定ステップ(S46)、および描画ステップ(S48)を実行させるためのコンピュータプログラムである。ポリゴンデータ読み出しステップは、層状に配置される複数のポリゴンモデルから成る多層ポリゴンモデルを構成するための多層ポリゴンデータ(43)を記憶手段(11e,12)から読み出すステップである。高さマップ読み出しステップは、描画しようとする上記立体オブジェクトの各位置の高さを示す2次元配列の高さデータ値からなり、各高さデータ値が上記多層ポリゴンモデルの各位置にそれぞれ対応している高さマップ(30)を記憶手段(11e,12)から読み出すステップである。可視領域決定ステップは、上記多層ポリゴンモデルの各層について、当該層の高さと上記高さマップの各位置の高さデータ値とを比較することによって、上記高さマップの各位置に対応する当該層の各位置を可視表示するかどうかを決定するステップである。描画ステップは、上記可視領域決定ステップにおいて可視表示すると決定された領域を所定の色で描画するステップである。
【0007】
なお、上記画像処理プログラムは、上記高さマップの少なくとも一部の位置の高さデータ値を変化させる高さ変化ステップ(S16,S18,S20)を上記コンピュータにさらに実行させてもよい。これにより、描画される立体オブジェクトの高さを変化させることができる。
【0008】
また、上記画像処理プログラムは、上記立体オブジェクトとは異なるオブジェクトである移動オブジェクト(31)を上記仮想空間に配置する移動オブジェクト配置ステップと、上記移動オブジェクトを移動させる移動制御ステップ(S10)とを上記コンピュータにさらに実行させてもよい。そして、上記高さ変化ステップは、上記高さマップにおける、上記移動オブジェクトの現在位置に対応する位置(Pc)の高さデータ値を変化させるオブジェクト干渉ステップ(S16)を含んでいてもよい。これにより、移動オブジェクトの現在位置に対応する立体オブジェクトの位置(または領域)の高さを変化させることができる。
【0009】
また、上記オブジェクト干渉ステップは、上記移動オブジェクトの現在位置に対応する上記多層ポリゴンモデル上の位置を求めるステップ(S12)と、多層ポリゴンモデルのどの位置が高さマップのどの位置に対応するかを示すマッピング情報(図16)に基づいて、上記多層ポリゴンモデル上の上記位置に対応する高さマップの位置を求めるステップ(S14)と、上記高さマップの上記位置の高さデータ値を変化させるステップ(S16)とを含んでいてもよい。
【0010】
また、上記オブジェクト干渉ステップは、上記高さマップにおける、上記移動オブジェクトの現在位置に対応する位置(Pc)を中心とした所定半径の円領域内の高さデータ値を減少させる円領域減少ステップ(S16)を含んでいてもよい(図17)。
【0011】
また、上記オブジェクト干渉ステップは、上記円領域減少ステップにおける高さデータ値の減少量に応じて、上記円領域の外側の所定領域の高さデータ値を増加させる外部領域増加ステップ(S18)をさらに含んでいてもよい(図20)。
【0012】
また、上記画像処理プログラムは、入力装置(7)から操作データを取得する操作データ取得ステップを上記コンピュータにさらに実行させてもよい。そして、上記移動ステップは、上記操作データに基づいて上記移動オブジェクトを移動させるオブジェクト操作ステップを含んでいてもよい。
【0013】
また、上記高さ変化ステップは、上記高さマップの各位置をランダムに選択して当該位置の高さデータ値を増加させるランダム増加ステップ(S20)を含んでいてもよい(図15)。
【0014】
また、上記画像処理プログラムは、上記描画ステップにおいて上記コンピュータに、上記多層ポリゴンモデルの上記可視領域決定ステップにおいて可視表示すると決定された領域を、予め層ごとに設定された色および透明度で描画させてもよい。
【0015】
また、上記画像処理プログラムは、テクスチャ画像を記憶手段から読み出すテクスチャ画像読み出しステップを上記コンピュータにさらに実行させてもよい。そして、上記描画ステップは、上記可視領域決定ステップで可視表示すると決定された領域に上記テクスチャ画像をマッピングして当該領域を描画するテクスチャ画像マッピングステップをさらに含んでいてもよい。
【0016】
また、上記画像処理プログラムは、上記多層ポリゴンモデルの基となるポリゴンモデルであるベースモデルを構成するためのベースモデルデータ(41)を記憶手段(11e,12)から読み出すステップと、当該読み出したベースモデルデータに基づいて上記多層ポリゴンデータを生成する多層モデル生成ステップとを上記コンピュータにさらに実行させてもよい。
【0017】
また、上記画像処理プログラムは、上記ベースモデルに、当該ベースモデル用に用意されたテクスチャ画像(42)をテクスチャマッピングするベースモデルマッピングステップを上記コンピュータにさらに実行させてもよい。
【0018】
また、上記画像処理プログラムは、上記多層モデル生成ステップにおいて生成される層の数を変更する層数変更ステップを上記コンピュータにさらに実行させてもよい。
【0019】
また、上記ポリゴンデータ読み出しステップにおいて読み出される多層ポリゴンデータは、予め用意されたポリゴンデータであってもよい。
【0020】
また、上記画像処理プログラムは、上記ポリゴンデータ読み出しステップにおいて読み出される多層ポリゴンデータに基づいて構成される多層ポリゴンモデルとは別個に、当該多層ポリゴンモデルの基となるポリゴンモデルであるベースモデルを構成するためのベースモデルデータ(41)を記憶手段(11e,12)から読み出すステップと、当該読み出したベースモデルデータに基づいて構成されるベースモデルに、当該ベースモデル用に用意されたテクスチャ画像をテクスチャマッピングするベースモデルマッピングステップとを上記コンピュータにさらに実行させてもよい。
【0021】
本発明の画像処理装置は、仮想空間に配置された立体オブジェクト(例えば、積雪、土砂、レンガなど)を描画するための画像処理装置(3)であって、
層状に配置される複数のポリゴンモデルから成る多層ポリゴンモデルを構成するための多層ポリゴンデータ(43)を記憶手段(11e,12)から読み出すポリゴンデータ読み出し手段(10,11b)、
描画しようとする上記立体オブジェクトの各位置の高さを示す2次元配列の高さデータ値からなり、各高さデータ値が上記多層ポリゴンモデルの各位置にそれぞれ対応している高さマップ(30)を記憶手段(11e,12)から読み出す高さマップ読み出し手段(10,11b)、
上記多層ポリゴンモデルの各層について、当該層の高さと上記高さマップの各位置(テクセル)の高さデータ値とを比較することによって、上記高さマップの各位置に対応する当該層の各位置を可視表示するかどうかを決定する可視領域決定手段(10,11b)、および、
上記可視領域決定手段によって可視表示すると決定された領域を所定の色で描画する描画手段(10,11b)、を備える画像処理装置。
【0022】
なお、上記画像処理装置は、上記高さマップの少なくとも一部の位置の高さデータ値を変化させる高さ変化手段(10,11b)をさらに備えていてもよい。
【0023】
また、上記画像処理装置は、上記立体オブジェクトとは異なるオブジェクトである移動オブジェクト(31)を上記仮想空間に配置する移動オブジェクト配置手段(10,11b)と、上記移動オブジェクトを移動させる移動制御手段(10,11b)とをさらに備えていてもよい。そして、上記高さ変化手段は、上記高さマップにおける、上記移動オブジェクトの現在位置に対応する位置(Pc)の高さデータ値を変化させるオブジェクト干渉手段を含んでいてもよい。
【発明の効果】
【0024】
本発明によれば、3次元画像処理において、仮想空間に配置された積雪、土砂、レンガなどの立体オブジェクトを、その形状に応じた形状のポリゴンモデルを用意することなく、多層ポリゴンモデルによって擬似的に表示することで、複雑な形状の立体オブジェクトでも少ないポリゴン数で描画することができる。
【発明を実施するための最良の形態】
【0025】
(ゲームシステムの全体構成)
図1を参照して、本発明の一実施形態に係るゲーム装置を含むゲームシステム1について説明する。図1は、ゲームシステム1の外観図である。以下、据置型のゲーム装置を一例にして、本実施形態のゲーム装置およびゲームプログラムについて説明する。図1において、ゲームシステム1は、テレビジョン受像器(以下、単に「テレビ」と記載する)2、ゲーム装置3、光ディスク4、マーカ部6、およびコントローラ7を含む。本システムは、コントローラ7を用いたゲーム操作に基づいてゲーム装置3でゲーム処理を実行するものである。
【0026】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるためのゲームプログラムが記憶されている。ゲーム装置3の前面には光ディスク4の挿入口が設けられている。ゲーム装置3は、挿入口に挿入された光ディスク4に記憶されたゲームプログラムを読み出して実行することによってゲーム処理を実行する。
【0027】
ゲーム装置3には、表示装置の一例であるテレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理の結果得られるゲーム画像を表示する。また、テレビ2の画面の周辺(図1では画面の上側)には、マーカ部6が設置される。マーカ部6は、その両端に2つのマーカ6Rおよび6Lを備えている。マーカ6R(マーカ6Lも同様)は、具体的には1以上の赤外LEDであり、テレビ2の前方に向かって赤外光を出力する。マーカ部6はゲーム装置3に接続されており、ゲーム装置3はマーカ部6が備える各赤外LEDの点灯を制御することが可能である。
【0028】
コントローラ7は、自機に対して行われた操作の内容を示す操作データをゲーム装置3に与える入力装置である。コントローラ7とゲーム装置3とは無線通信によって接続される。本実施形態では、コントローラ7とゲーム装置3との間の無線通信には例えばBluetooth(ブルートゥース)(登録商標)の技術が用いられる。なお、他の実施形態においてはコントローラ7とゲーム装置3とは有線で接続されてもよい。
【0029】
(ゲーム装置3の内部構成)
次に、図2を参照して、ゲーム装置3の内部構成について説明する。図2は、ゲーム装置3の構成を示すブロック図である。ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ROM/RTC13、ディスクドライブ14、およびAV−IC15等を有する。
【0030】
CPU10は、光ディスク4に記憶されたゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ROM/RTC13、ディスクドライブ14およびAV−IC15が接続される。システムLSI11は、それに接続される各構成要素間のデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。システムLSIの内部構成について後述する。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムや、フラッシュメモリ17から読み出されたゲームプログラム等のプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ROM/RTC13は、ゲーム装置3の起動用のプログラムが組み込まれるROM(いわゆるブートROM)と、時間をカウントするクロック回路(RTC:Real Time Clock)とを有する。ディスクドライブ14は、光ディスク4からプログラムデータやテクスチャデータ等を読み出し、後述する内部メインメモリ11eまたは外部メインメモリ12に読み出したデータを書き込む。
【0031】
また、システムLSI11には、入出力プロセッサ(I/Oプロセッサ)11a、GPU(Graphics Processor Unit)11b、DSP(Digital Signal Processor)11c、VRAM11d、および内部メインメモリ11eが設けられる。図示は省略するが、これらの構成要素11a〜11eは内部バスによって互いに接続される。
【0032】
GPU11bは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11dは、GPU11bがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。画像が生成される際には、GPU11bは、VRAM11dに記憶されたデータを用いて画像データを作成する。
【0033】
DSP11cは、オーディオプロセッサとして機能し、内部メインメモリ11eや外部メインメモリ12に記憶されるサウンドデータや音波形(音色)データを用いて、音声データを生成する。
【0034】
上述のように生成された画像データおよび音声データは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、画像がテレビ2に表示されるとともに音がスピーカ2aから出力される。
【0035】
入出力プロセッサ11aは、それに接続される構成要素との間でデータの送受信を実行したり、外部装置からのデータのダウンロードを実行したりする。入出力プロセッサ11aは、フラッシュメモリ17、無線通信モジュール18、無線コントローラモジュール19、拡張コネクタ20、およびメモリカード用コネクタ21に接続される。無線通信モジュール18にはアンテナ22が接続され、無線コントローラモジュール19にはアンテナ23が接続される。
【0036】
入出力プロセッサ11aは、無線通信モジュール18およびアンテナ22を介してネットワークに接続し、ネットワークに接続される他のゲーム装置や各種サーバと通信することができる。入出力プロセッサ11aは、定期的にフラッシュメモリ17にアクセスし、ネットワークへ送信する必要があるデータの有無を検出し、当該データが有る場合には、無線通信モジュール18およびアンテナ22を介してネットワークに送信する。また、入出力プロセッサ11aは、他のゲーム装置から送信されてくるデータやダウンロードサーバからダウンロードしたデータを、ネットワーク、アンテナ22および無線通信モジュール18を介して受信し、受信したデータをフラッシュメモリ17に記憶する。CPU10はゲームプログラムを実行することにより、フラッシュメモリ17に記憶されたデータを読み出してゲームプログラムで利用する。フラッシュメモリ17には、ゲーム装置3と他のゲーム装置や各種サーバとの間で送受信されるデータの他、ゲーム装置3を利用してプレイしたゲームのセーブデータ(ゲームの結果データまたは途中データ)が記憶されてもよい。
【0037】
また、入出力プロセッサ11aは、コントローラ7から送信される操作データをアンテナ23および無線コントローラモジュール19を介して受信し、内部メインメモリ11eまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0038】
さらに、入出力プロセッサ11aには、拡張コネクタ20およびメモリカード用コネクタ21が接続される。拡張コネクタ20は、USBやSCSIのようなインターフェースのためのコネクタであり、外部記憶媒体のようなメディアを接続したり、他のコントローラのような周辺機器を接続したり、有線の通信用コネクタを接続することによって無線通信モジュール18に替えてネットワークとの通信を行ったりすることができる。メモリカード用コネクタ21は、メモリカードのような外部記憶媒体を接続するためのコネクタである。例えば、入出力プロセッサ11aは、拡張コネクタ20やメモリカード用コネクタ21を介して、外部記憶媒体にアクセスし、データを保存したり、データを読み出したりすることができる。
【0039】
ゲーム装置3には、電源ボタン24、リセットボタン25、およびイジェクトボタン26が設けられる。電源ボタン24およびリセットボタン25は、システムLSI11に接続される。電源ボタン24がオンされると、ゲーム装置3の各構成要素に対して、図示しないACアダプタを経て電源が供給される。リセットボタン25が押されると、システムLSI11は、ゲーム装置3の起動プログラムを再起動する。イジェクトボタン26は、ディスクドライブ14に接続される。イジェクトボタン26が押されると、ディスクドライブ14から光ディスク4が排出される。
【0040】
図3および図4を参照して、コントローラ7について説明する。なお、図3は、コントローラ7の上面後方から見た斜視図である。図4は、コントローラ7を下面前方から見た斜視図である。
【0041】
図3および図4において、コントローラ7は、例えばプラスチック成型によって形成されたハウジング71を有しており、当該ハウジング71に複数の操作部72が設けられている。ハウジング71は、その前後方向を長手方向とした略直方体形状を有しており、全体として大人や子供の片手で把持可能な大きさである。
【0042】
ハウジング71上面の中央前面側に、十字キー72aが設けられる。この十字キー72aは、十字型の4方向プッシュスイッチであり、4つの方向(前後左右)に対応する操作部分が十字の突出片にそれぞれ90°間隔で配置される。プレイヤが十字キー72aのいずれかの操作部分を押下することによって前後左右いずれかの方向を選択される。例えばプレイヤが十字キー72aを操作することによって、仮想ゲーム世界に登場するプレイヤキャラクタ等の移動方向を指示したり、複数の選択肢から選択指示したりすることができる。
【0043】
なお、十字キー72aは、上述したプレイヤの方向入力操作に応じて操作信号を出力する操作部であるが、他の態様の操作部でもかまわない。例えば、十字方向に4つのプッシュスイッチを配設し、プレイヤによって押下されたプッシュスイッチに応じて操作信号を出力する操作部を設けてもかまわない。さらに、上記4つのプッシュスイッチとは別に、上記十字方向が交わる位置にセンタスイッチを配設し、4つのプッシュスイッチとセンタスイッチとを複合した操作部を設けてもかまわない。また、ハウジング71上面から突出した傾倒可能なスティック(いわゆる、ジョイスティック)を倒すことによって、傾倒方向に応じて操作信号を出力する操作部を上記十字キー72aの代わりに設けてもかまわない。さらに、水平移動可能な円盤状部材をスライドさせることによって、当該スライド方向に応じた操作信号を出力する操作部を、上記十字キー72aの代わりに設けてもかまわない。また、タッチパッドを、上記十字キー72aの代わりに設けてもかまわない。
【0044】
ハウジング71上面の十字キー72aより後面側に、複数の操作ボタン72b〜72gが設けられる。操作ボタン72b〜72gは、プレイヤがボタン頭部を押下することによって、それぞれの操作ボタン72b〜72gに割り当てられた操作信号を出力する操作部である。例えば、操作ボタン72b〜72dには、1番ボタン、2番ボタン、およびAボタン等としての機能が割り当てられる。また、操作ボタン72e〜72gには、マイナスボタン、ホームボタン、およびプラスボタン等としての機能が割り当てられる。これら操作ボタン72a〜72gは、ゲーム装置3が実行するゲームプログラムに応じてそれぞれの操作機能が割り当てられる。なお、図3に示した配置例では、操作ボタン72b〜72dは、ハウジング71上面の中央前後方向に沿って並設されている。また、操作ボタン72e〜72gは、ハウジング71上面の左右方向に沿って操作ボタン72bおよび72dの間に並設されている。そして、操作ボタン72fは、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0045】
また、ハウジング71上面の十字キー72aより前面側に、操作ボタン72hが設けられる。操作ボタン72hは、遠隔からゲーム装置3の電源をオン/オフする電源スイッチである。この操作ボタン72hも、その上面がハウジング71の上面に埋没しており、プレイヤが不意に誤って押下することのないタイプのボタンである。
【0046】
また、ハウジング71上面の操作ボタン72cより後面側に、複数のLED702が設けられる。ここで、コントローラ7は、他のコントローラ7と区別するためにコントローラ種別(番号)が設けられている。例えば、LED702は、コントローラ7に現在設定されている上記コントローラ種別をプレイヤに通知するために用いられる。具体的には、コントローラ7から無線通信モジュール18へ送信データを送信する際、上記コントローラ種別に応じて複数のLED702のうち、種別に対応するLEDが点灯する。
【0047】
また、ハウジング71上面には、操作ボタン72bおよび操作ボタン72e〜72gの間に後述するスピーカ(図5のスピーカ706)からの音を外部に放出するための音抜き孔が形成されている。
【0048】
一方、ハウジング71下面には、凹部が形成されている。ハウジング71下面の凹部は、プレイヤがコントローラ7の前面をマーカ6Lおよび6Rに向けて片手で把持したときに、当該プレイヤの人差し指や中指が位置するような位置に形成される。そして、上記凹部の後面側傾斜面には、操作ボタン72iが設けられる。操作ボタン72iは、例えばBボタンとして機能する操作部である。
【0049】
また、ハウジング71前面には、撮像情報演算部74の一部を構成する撮像素子743が設けられる。ここで、撮像情報演算部74は、コントローラ7が撮像した画像データを解析してその中で輝度が高い場所を判別してその場所の重心位置やサイズなどを検出するためのシステムであり、例えば、最大200フレーム/秒程度のサンプリング周期であるため比較的高速なコントローラ7の動きでも追跡して解析することができる。この撮像情報演算部74の詳細な構成については、後述する。また、ハウジング71の後面には、コネクタ73が設けられている。コネクタ73は、例えばエッジコネクタであり、例えば接続ケーブルと嵌合して接続するために利用される。
【0050】
ここで、以下の説明を具体的にするために、コントローラ7に対して設定する座標系について定義する。図3および図4に示すように、互いに直交するXYZ軸をコントローラ7に対して定義する。具体的には、コントローラ7の前後方向となるハウジング71の長手方向をZ軸とし、コントローラ7の前面(撮像情報演算部74が設けられている面)方向をZ軸正方向とする。また、コントローラ7の上下方向をY軸とし、ハウジング71の下面(操作ボタン72iが設けられた面)方向をY軸正方向とする。さらに、コントローラ7の左右方向をX軸とし、ハウジング71の左側面(図3では表されずに図4で表されている側面)方向をX軸正方向とする。
【0051】
次に、図5および図6を参照して、コントローラ7の内部構造について説明する。なお、図5は、コントローラ7の上筐体(ハウジング71の一部)を外した状態を後面側から見た斜視図である。図6は、コントローラ7の下筐体(ハウジング71の一部)を外した状態を前面側から見た斜視図である。ここで、図6に示す基板700は、図5に示す基板700の裏面から見た斜視図となっている。
【0052】
図5において、ハウジング71の内部には基板700が固設されており、当該基板700の上主面上に操作ボタン72a〜72h、加速度センサ701、LED702、およびアンテナ754等が設けられる。そして、これらは、基板700等に形成された配線(図示せず)によってマイコン751等(図6、図7参照)に接続される。また、無線モジュール753(図7参照)およびアンテナ754によって、コントローラ7がワイヤレスコントローラとして機能する。なお、ハウジング71内部には図示しない水晶振動子703が設けられており、後述するマイコン751の基本クロックを生成する。また、基板700の上主面上に、スピーカ706およびアンプ708が設けられる。また、加速度センサ701は、操作ボタン72dの左側の基板700上(つまり、基板700の中央部ではなく周辺部)に設けられる。したがって、加速度センサ701は、コントローラ7の長手方向を軸とした回転に応じて、重力加速度の方向変化に加え、遠心力による成分の含まれる加速度を検出することができるので、所定の演算により、検出される加速度データからコントローラ7の回転を良好な感度でゲーム装置3等が判定することができる。
【0053】
一方、図6において、基板700の下主面上の前端縁に撮像情報演算部74が設けられる。撮像情報演算部74は、コントローラ7の前方から順に赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744によって構成されており、それぞれ基板700の下主面に取り付けられる。また、基板700の下主面上の後端縁にコネクタ73が取り付けられる。さらに、基板700の下主面上にサウンドIC707およびマイコン751が設けられている。サウンドIC707は、基板700等に形成された配線によってマイコン751およびアンプ708と接続され、ゲーム装置3から送信されたサウンドデータに応じてアンプ708を介してスピーカ706に音声信号を出力する。
【0054】
そして、基板700の下主面上には、バイブレータ704が取り付けられる。バイブレータ704は、例えば振動モータやソレノイドである。バイブレータ704は、基板700等に形成された配線によってマイコン751と接続され、ゲーム装置3から送信された振動データに応じてその作動をオン/オフする。バイブレータ704が作動することによってコントローラ7に振動が発生するので、それを把持しているプレイヤの手にその振動が伝達され、いわゆる振動対応ゲームが実現できる。ここで、バイブレータ704は、ハウジング71のやや前方寄りに配置されるため、プレイヤが把持している状態において、ハウジング71が大きく振動することになり、振動を感じやすくなる。
【0055】
次に、図7を参照して、コントローラ7の内部構成について説明する。なお、図7は、コントローラ7の構成を示すブロック図である。
【0056】
図7において、コントローラ7は、上述した操作部72、撮像情報演算部74、加速度センサ701、バイブレータ704、スピーカ706、サウンドIC707、およびアンプ708の他に、その内部に通信部75を備えている。
【0057】
撮像情報演算部74は、赤外線フィルタ741、レンズ742、撮像素子743、および画像処理回路744を含んでいる。赤外線フィルタ741は、コントローラ7の前方から入射する光から赤外線のみを通過させる。レンズ742は、赤外線フィルタ741を透過した赤外線を集光して撮像素子743へ出射する。撮像素子743は、例えばCMOSセンサやあるいはCCDのような固体撮像素子であり、レンズ742が集光した赤外線を撮像する。したがって、撮像素子743は、赤外線フィルタ741を通過した赤外線だけを撮像して画像データを生成する。撮像素子743で生成された画像データは、画像処理回路744で処理される。具体的には、画像処理回路744は、撮像素子743から得られた画像データを処理して高輝度部分を検知し、それらの位置座標や面積を検出した結果を示す処理結果データを通信部75へ出力する。なお、これらの撮像情報演算部74は、コントローラ7のハウジング71に固設されており、ハウジング71自体の方向を変えることによってその撮像方向を変更することができる。
【0058】
コントローラ7は、3軸(X、Y、Z軸)の加速度センサ701を備えていることが好ましい。この3軸の加速度センサ701は、3方向、すなわち、上下方向(図3に示すY軸)、左右方向(図3に示すX軸)、および前後方向(図3に示すZ軸)で直線加速度を検知する。
【0059】
通信部75は、マイクロコンピュータ(Micro Computer:マイコン)751、メモリ752、無線モジュール753、およびアンテナ754を含んでいる。マイコン751は、処理の際にメモリ752を記憶領域として用いながら、送信データを無線送信する無線モジュール753を制御する。また、マイコン751は、アンテナ754を介して無線モジュール753が受信したゲーム装置3からのデータに応じて、サウンドIC707およびバイブレータ704の動作を制御する。サウンドIC707は、通信部75を介してゲーム装置3から送信されたサウンドデータ等を処理する。また、マイコン751は、通信部75を介してゲーム装置3から送信された振動データ(例えば、バイブレータ704をONまたはOFFする信号)等に応じて、バイブレータ704を作動させる。
【0060】
コントローラ7に設けられた操作部72からの操作信号(キーデータ)、加速度センサ701からの3軸方向の加速度信号(X、Y、およびZ軸方向加速度データ)、および撮像情報演算部74からの処理結果データは、マイコン751に出力される。マイコン751は、入力した各データ(キーデータ、X、Y、およびZ軸方向加速度データ、処理結果データ)を無線通信モジュール18へ送信する送信データとして一時的にメモリ752に格納する。ここで、通信部75から無線通信モジュール18への無線送信は、所定の周期毎に行われるが、ゲームの処理は1/60秒を単位として行われることが一般的であるので、それよりも短い周期で送信を行うことが必要となる。具体的には、ゲームの処理単位は16.7ms(1/60秒)であり、ブルートゥース(登録商標)で構成される通信部75の送信間隔は5msである。マイコン751は、無線通信モジュール18への送信タイミングが到来すると、メモリ752に格納されている送信データを一連の操作情報として出力し、無線モジュール753へ出力する。そして、無線モジュール753は、例えばBluetooth(ブルートゥース;登録商標)の技術を用いて、所定周波数の搬送波を用いて操作情報をその電波信号としてアンテナ754から放射する。つまり、コントローラ7に設けられた操作部72からのキーデータ、加速度センサ701からのX、Y、およびZ軸方向加速度データ、および撮像情報演算部74からの処理結果データがコントローラ7から送信される。そして、ゲーム装置3の無線通信モジュール18でその電波信号を受信し、ゲーム装置3で当該電波信号を復調や復号することによって、一連の操作情報(キーデータ、X、Y、およびZ軸方向加速度データ、および処理結果データ)を取得する。そして、ゲーム装置3のCPU10は、取得した操作情報とゲームプログラムとに基づいて、ゲーム処理を行う。なお、Bluetooth(登録商標)の技術を用いて通信部75を構成する場合、通信部75は、他のデバイスから無線送信された送信データを受信する機能も備えることができる。
【0061】
なお、上記のようなハードウェア構成は単なる一例に過ぎず、本発明は任意のコンピュータシステムに適用可能である。
【0062】
次に、ゲーム装置3が行う画像生成処理の概要について説明する。
【0063】
本発明は、仮想空間に配置された積雪、土砂、レンガなどの立体オブジェクトの表面形状を、多層ポリゴンモデルを用いて描画することを特徴としている。もちろん、本発明を用いて描画できる表面形状の種類は、積雪、土砂、レンガに限らない。
【0064】
本実施形態では図8に示すように、仮想空間において、地面などを表すベースモデルの上に、多層ポリゴンモデルとして複数のシェルモデルが層状に(すなわち略平行に)配置される。ベースモデルおよび各層のシェルモデルは、いずれも1つ以上のポリゴンによって構成される。本実施形態では、多層シェルモデルが4層のシェルモデルで構成される例を説明するが、多層シェルモデルの階層数はこれに限らない。階層数が増えるほど、より見栄え良く立体オブジェクトを表示することができる。なお、シェルモデルは等間隔となるように配置されてもよいし、そうでなくてもよい。また、図8の例ではベースモデルおよび各シェルモデルはいずれも板状であるが、本発明はこれに限らず、例えば円筒状など、任意の形状であってもよい。
【0065】
ベースモデルは、ベースモデルデータ(ベースモデルを構成する各ポリゴンの頂点座標などを含むデータ)に基づいて構成される。ベースモデルには、必要に応じて、例えば地面の模様などを示すテクスチャ画像がテクスチャマッピングされる。
【0066】
シェルモデルは、シェルモデルデータ(シェルモデルを構成する各ポリゴンの頂点座標などを含むデータ)に基づいて構成される。なお、本実施形態では、シェルモデルデータはベースモデルデータに基づいてゲーム装置3において自動生成されるものとする。具体的には、例えば、ベースモデルデータに基づいて、ベースモデルを構成するポリゴンの各頂点を法線ベクトル方向に所定幅だけずらした新たな頂点をそれぞれ生成し、生成された頂点群に基づいてシェルモデルを生成することができる。なお、シェルモデルデータをベースモデルデータに基づいて生成する代わりに、予め生成して光ディスク4に記憶されたシェルモデルデータを光ディスク4から外部メインメモリ12にロードするようにしてもよい。データ構造としては、たとえばシェルモデルデータは頂点の座標データのみとして、ポリゴンを構成する頂点やポリゴンの接続等の位相情報に関しては、ベースモデルデータと共有するようにしてもよいし、座標情報、位相情報を全て層ごとにシェルモデルデータとして記憶しておくようにしてもよい。なお、シェルモデルデータをベースモデルデータから自動的に生成する場合には、自動的に生成されるシェルモデルの階層数を、ユーザ入力またはその他の任意の条件(例えば仮想カメラとシェルモデル間の距離など)に応じて変更可能としてもよい。各層のシェルモデルには、描画しようとする立体オブジェクトに応じた色または模様が付けられる。ただし、シェルモデルの全ての領域に色や模様が付けられるのではなく、描画しようとする立体オブジェクトの高さに応じて、部分的に色や模様が付けられる。本実施形態では、描画しようとする立体オブジェクトの高さを示す情報として、高さマップが利用される。
【0067】
図9Aは、高さマップの一例である。図9Aに示すように、高さマップ30は、描画しようとする立体オブジェクトの各位置の高さを示す2次元配列の高さデータ値からなる。図9Aの例では高さマップ30の要素数(解像度)は8×8=64であるが、本発明はこれに限定されない。また、図9Aの例では高さデータ値の階調数が0〜4の5段階しかないが、本発明はこれに限定されない。例えば、高さマップ30の階調数が0〜255の256段階であってもよい。高さマップ30の解像度がより高くなるほど、また、高さマップ30の階調数とシェルモデルの層の数がより多くなるほど、より高精細に立体オブジェクトを描画することができる。
【0068】
なお、高さマップ30の高さデータ値を画素値として利用して高さマップ30を画面に表示すれば、図9Aの高さマップ30は図9Bのような画像として画面に表示される。したがって、テクスチャ画像と同様にして、高さマップ30も画像編集ソフトで作成・変更したり、画面上で確認したりすることができる。なお、図9Bの例では、便宜上、高さデータ値が大きいほど黒色に近づき、高さデータ値が小さいほど白色に近づくようにしているが、本発明はこれに限らない。なお、高さマップ30は、テクスチャ画像をポリゴンモデルにテクスチャマッピングするのと同様の手法により、各層のシェルモデルにマッピングされる。すなわち、高さマップ30を画像として扱い、当該画像に所定の演算を加えた結果を各層のシェルモデルにマッピングするという処理によって、通常のテクスチャマッピングと共通の処理によって表面形状の描画を実現することができる。高さマップ30とテクスチャ画像との間のこのような共通性から、高さマップ30の各要素をテクセルと称することとする。同様に、高さマップ30上の各位置の位置を示す座標をテクスチャ座標と称することとする。
【0069】
なお、高さマップ30の高さデータ値は、関数によって規定されていてもよい。例えば、高さマップ30の各位置の高さデータ値は、テクスチャ座標(u,v)を引数とした関数f(u,v)により規定されていてもよい。また、テクスチャ座標以外の変数(例えば時間変数t)を引数とした関数により規定されていてもよい。
【0070】
図10は、高さマップ30を用いて第1層のシェルモデルを描画する処理の詳細を示している。前述のように、高さマップ30は、テクスチャ画像をポリゴンモデルにテクスチャマッピングするのと同様の手法により第1層のシェルモデルにマッピングされる。ここで、マッピングとは、シェルモデル上の各位置に対応する高さマップ上の各位置を決定する処理を指すものとする。本実施形態では、UVマッピングにより高さマップ30が各シェルモデルにマッピングされるものとする。UVマッピングとは、ポリゴンの各頂点に、対応するテクスチャ座標がそれぞれ割り当てられており、ポリゴンの各頂点に割り当てられているテクスチャ座標を基に、ポリゴンの各位置(頂点および頂点以外の点)に対応するテクスチャ座標を決定して、ポリゴンにテクスチャ画像(ここでは高さマップ30)をマッピングする手法である。なおUVマッピングは単なる一例に過ぎず、他の任意のマッピング手法を利用してもよい。
【0071】
本実施形態では、高さマップの各位置の高さデータ値をシェルモデルの高さと比較して、高さマップの各位置が可視領域なのか不可視領域なのかを決定する。シェルモデルの高さは層毎に設定されている。
【0072】
例えば、第1層のシェルモデルの高さが“1”に設定されている場合には、図10の高さマップ30において、高さデータ値が1以上であるテクセルは可視領域として第1層のシェルモデルにマッピングされ、高さデータ値が1未満であるテクセルは不可視領域として第1層のシェルモデルにマッピングされる。第1層のシェルモデルは、マッピングされた可視領域については所定の色で描画され、不可視領域については描画されない(つまり透明となる)。高さマップ30を画像と考えれば、画素値を高さを条件として変換し、当該画素値でテクスチャマッピングを行うということになる。
【0073】
同様に、第2層のシェルモデルの高さが“2”に設定されている場合には、図11の高さマップ30において、高さデータ値が2以上であるテクセルは可視領域として第2層のシェルモデルにマッピングされ、高さデータ値が2未満であるテクセルは不可視領域として第2層のシェルモデルにマッピングされる。第2層のシェルモデルは、マッピングされた可視領域については所定の色で描画され、不可視領域については描画されない(つまり透明となる)。
【0074】
同様に、第3層のシェルモデルの高さが“3”に設定されている場合には、図12の高さマップ30において、高さデータ値が3以上であるテクセルは可視領域として第3層のシェルモデルにマッピングされ、高さデータ値が3未満であるテクセルは不可視領域として第3層のシェルモデルにマッピングされる。第3層のシェルモデルは、マッピングされた可視領域については所定の色で描画され、不可視領域については描画されない(つまり透明となる)。
【0075】
同様に、第4層のシェルモデルの高さが“4”に設定されている場合には、図13の高さマップ30において、高さデータ値が4以上であるテクセルは可視領域として第4層のシェルモデルにマッピングされ、高さデータ値が4未満であるテクセルは不可視領域として第4層のシェルモデルにマッピングされる。第4層のシェルモデルは、マッピングされた可視領域については所定の色で描画され、不可視領域については描画されない(つまり透明となる)。
【0076】
なお、上記の例では、各層のシェルモデルの高さが整数により表されている例を説明したが、本発明はこれに限らず、小数により表されていても良い。
【0077】
上記のようにして、第1層〜第4層の全てのシェルモデルの可視領域の描画が完了すると、図14に示すように、立体オブジェクトが立体的に表示される。なお、図14の例では、便宜上、より高い層ほど可視領域の色を濃くしているが、本発明はこれに限らず、シェルモデルの全ての層の可視領域の色を同一の色にしても構わない。また、シェルモデルの各層の可視領域は、不透明であってもよいし、半透明であってもよい。積雪等の表現の場合には、ある程度透明度があった方が、より自然な表現となる場合が多いが、例えばレンガの溝のような表現を行う場合には、不透明である方がよい場合もある。また、例えば、各層で透明度が異なっていても良い。積雪の表現を目的とする場合には、例えば外側の層ほど透明度を高くするようにしてもよい。
【0078】
このように、本発明によれば、複雑な形状の立体オブジェクトであっても、単純な形状のシェルモデルの層を用いて表面形状を表現することができる。
【0079】
なお、高さマップの各テクセルの値(高さデータ値)を動的に変化させることによって、立体オブジェクトの形状が動的に変化するような動画像を生成することもできる。以下、多層シェルモデルと高さマップを用いて積雪を表現する例を説明する。なお、ここでは、12層のシェルモデルを用い、各シェルモデルの可視領域を白色(または白色に近い灰色)で半透明で描画するものとする。なお、シェルモデルの階層に応じて色または透明度を徐々に変化させてもよい。例えば、ベースモデルに近いシェルモデルの可視領域については灰色でかつ高い透明度で描画し、ベースモデルから遠いシェルモデルの可視領域については、白色でかつ低い透明度で描画するようにしてもよい。
【0080】
図15は、ベースモデル上に雪が徐々に降り積もっていく様子を表現するときの高さマップの更新方法の一例を示している。この例では、高さマップを構成するテクセルの中から1つまたは複数のテクセルをランダムに選択し、こうしてランダムに選択されたテクセルの値を一定量だけ増加させるという処理を、所定の周期(例えば60分の1秒の周期)で繰り返し実行している。これにより、ベースモデル上に不規則かつ徐々に雪が降り積もっていく様子が画面上に表示される。なお、積雪の高さの上限は、多層シェルモデルの最上位層の高さに依存する。
【0081】
他の応用例として、移動オブジェクト(例えば、ユーザが入力装置を用いて移動制御することのできるキャラクタ)が積雪を掻き分けながら移動する様子を表現することもできる。これは、移動オブジェクトの現在位置に応じて、高さマップの値を更新することにより実現することができる。以下、図16を参照して具体的に説明する。
【0082】
図16は、仮想世界の様子を示しており、この仮想世界には、雪が降り積もっている降雪地帯が存在し、さらに移動オブジェクト31が存在する。降雪地帯は、前述のように多層シェルモデル(ここでは雪モデルとも称す)で構成される。移動オブジェクト31は、複数のポリゴンで構成される。雪モデルを構成するポリゴンの各頂点には、その頂点に対応する高さマップの位置の座標(テクスチャ座標系)が対応付けられている。したがって、移動オブジェクト31の現在位置(ワールド座標系)に対応する雪モデル上の位置の座標(ローカル座標系)を求め、さらに、この雪モデル上の位置に対応する高さマップ上の位置の座標(テクスチャ座標系)を求めることによって、移動オブジェクト31の現在位置に対応する高さマップ上の位置の座標(テクスチャ座標系)を求めることができる。
【0083】
図17は、積雪地帯に移動オブジェクト31が出現し、その後、移動オブジェクト31が積雪を掻き分けながら移動する様子を表現するときの高さマップの更新方法の一例を示している。図17において、位置Pcは、移動オブジェクト31の現在位置に対応する高さマップ上の位置を示している。位置Pcの求め方は前述の通りである。図17の例では、位置Pcを中心とした一定半径の円領域の高さデータ値が0に更新される。なお、必ずしも高さデータ値を0にする(つまり移動オブジェクト31の足下の雪を完全に除去する)必要はなく、位置Pcを中心とした一定半径の円領域の高さデータ値を0より大きな適当な値へと減少させる(つまり移動オブジェクト31の足下の雪を少し残す)ようにしてもよい。なお、一旦0になった高さデータ値は、以降ずっと0のままであってもよいし、図15に示したように徐々にランダムに増加させてもよい。なお、上記の円領域の半径は、移動オブジェクト31の大きさに応じて適当な値に設定すればよい。
【0084】
図18は、移動オブジェクト31が積雪を掻き分けながら移動するときの多層シェルモデルの様子を示す図である。上記のように、移動オブジェクト31の現在位置に対応する高さマップ上の位置Pcの周辺の高さデータ値が0に更新されることにより、移動オブジェクト31の現在位置の周辺領域において各層のシェルモデルが不可視となり、その結果として、図19に示すように、移動オブジェクト31の周辺だけ積雪が除去されたように表示される。
【0085】
なお、さらに現実的な表現を追求する場合には、移動オブジェクト31が積雪を掻き分けながら移動するときに、除去された雪が移動オブジェクト31の周囲に積み上げられる様子を表現することもできる(図22参照)。この場合には、図20に示すように、位置Pcを中心とした一定半径の円領域の高さデータ値を0に更新すると同時に、その円領域の周囲の高さデータ値を適当な値へと増加させる。なお、より現実的な表現を追求する場合には、除去された雪の量と周囲に積み上げられた雪の量とがほぼ一致していることが好ましいので、円領域の周囲の高さデータ値を増加するときの増加量は、円領域の面積や、円領域内の各テクセルの高さデータ値の減少量に応じて動的に決定すればよい。なお、移動オブジェクト31が積雪を掻き分けながら移動するとき、移動オブジェクト31の後方に雪が積み上がると不自然になってしまうので、移動オブジェクト31の移動方向を考慮して、移動オブジェクト31の前方および側方にのみ雪が積み上がるように高さデータ値を更新するのが好ましい。
【0086】
図21は、除去された雪が移動オブジェクト31の周囲に積み上げられるときの多層シェルモデルの様子を示す図である。図20で示したように高さデータ値が更新されることにより、移動オブジェクト31の現在位置の周辺領域(円領域)において各層のシェルモデルが不可視となり、さらにその円領域の周囲(円領域の外側)の領域において高階層のシェルモデルが不可視から可視に変わる。その結果として、図22に示すように、移動オブジェクト31の周辺だけ積雪が除去され、除去された雪が周囲に積み上げられたように表示される。
【0087】
なお、図17や図20に示したような高さマップの更新方法は、移動オブジェクト31が積雪を掻き分けながら移動する様子を表現するときに限らず、例えば、シャベルで地面に穴を掘ったり、レンガの一部が爆弾によって消滅したりする様子を表現するのにも利用できる。
【0088】
なお、上記の例では、多層シェルモデルで積雪を表現するために、多層シェルモデルの各層の可視領域を白色(または白色に近い灰色)で描画しているが、可視領域の色または模様は、描画しようとする立体オブジェクトに応じて変えればよい。例えば、多層シェルモデルで土を表現する場合には、多層シェルモデルの可視領域に土のテクスチャ画像を貼り付けてよりリアルに見えるようにしてもよいし、各層の色を異ならせて地層を表現してもよい。
【0089】
以下、図23〜図25を参照して、ゲーム装置3の動作をさらに詳細に説明する。
【0090】
図23は、外部メインメモリ12のメモリマップである。ただし、本発明にとって重要ではないデータについては図示を省略している。なお、外部メインメモリ12の代わりに内部メインメモリ11eを利用しても構わない。外部メインメモリ12には、画像処理プログラム40、ベースモデルデータ41、ベーステクスチャ画像42、シェルモデルデータ43、高さマップ30、および移動オブジェクトデータ44が格納される。
【0091】
画像処理プログラム40は、後述する図24および図25のフローチャートに示す処理をコンピュータ(CPU10またはGPU11b)に実行させるためのコンピュータプログラムであり、本実施形態では、光ディスク4から外部メインメモリ12にロードされる。ただし、画像処理プログラム40は、光ディスク4に限らず他の任意の外部記憶媒体を通じて供給されてもよいし、有線または無線の通信回線を通じて他のコンピュータシステムより供給されてもよいし、ゲーム装置3の内部のフラッシュメモリ17等の不揮発性の記憶装置に予め記録されていてもよい。
【0092】
ベースモデルデータ41は、図8に示すベースモデルを構成するためのデータであって、ポリゴンの頂点座標や法線ベクトル等の情報を含んでいる。ベースモデルデータ41は、典型的には光ディスク4から外部メインメモリ12にロードされる。
【0093】
ベーステクスチャ画像42は、ベースモデルの模様を示す画像データであって、典型的には光ディスク4から外部メインメモリ12にロードされる。
【0094】
シェルモデルデータ43は、図8に示す多層シェルモデルを構成するためのデータであって、本実施形態では、CPU10またはGPU11bがベースモデルデータ41に基づいてシェルモデルデータ43を自動生成して外部メインメモリ12に格納する。なお、シェルモデルデータ43には、各層の高さを示す情報も含まれている。
【0095】
高さマップ30は、典型的には光ディスク4から外部メインメモリ12にロードされ、その後、必要に応じて更新される。
【0096】
移動オブジェクトデータ44は、移動オブジェクト31に関するデータであって、ポリゴンデータやテクスチャ画像や現在位置などを含む。
【0097】
次に、図24および図25のフローチャートを参照して、画像処理プログラム40に基づくCPU10またはGPU11bの動作の流れを説明する。なお、図24および図25のフローチャートの各ステップの処理は、CPU10とGPU11bのどちらが実行しても構わず、各ステップについてCPU10とGPU11bのどちらか最適な方に実行させるようにすればよい。以下の説明では、図24のフローチャートのステップS10〜S20の処理をCPU10が、図25のフローチャートの各ステップの処理をGPU11bが実行するものとして説明する。
【0098】
画像処理プログラム40の実行が開始されると、図24のフローチャートに示す一連の処理が開始される。なお、図24のフローチャートに、ユーザ入力やその他の条件に応じて、シェルモデルの層の数や、シェルモデルの各層の高さなどを変化させる処理を追加しても構わない。
【0099】
ステップS10では、CPU10は、コントローラ7を通じて入力されるユーザの指示に応じて移動オブジェクト31の現在位置(ワールド座標系)を更新する。
【0100】
ステップS12では、CPU10は、移動オブジェクト31の現在位置(ワールド座標系)に対応する雪モデル(多層シェルモデル)上の位置の座標(ローカル座標系)を算出する(図16参照)。
【0101】
ステップS14では、CPU10は、ステップS12で算出した雪モデル上の位置の座標(ローカル座標系)に対応する高さマップ上の位置Pcの座標(テクスチャ座標系)を算出する(図16参照)。
【0102】
ステップS16では、CPU10は、高さマップ30において、ステップS14で算出した位置Pcを中心とした一定半径の円領域内の高さデータ値を減少させる(図20参照)。
【0103】
ステップS18では、CPU10は、上記円領域の周囲の領域の高さデータ値を増加させる(図20参照)。
【0104】
ステップS20では、高さマップ30においてランダムに位置(テクセル)を選択し、選択した位置の高さデータ値を増加させる(図15参照)。このステップは、徐々に雪を積もらせるための処理であるので、積もらせる必要がある場合に行われる。
【0105】
ステップS20の処理が完了すると、ステップS22の描画処理がGPU11bによって実行される。以下、図25のフローチャートを参照して、この描画処理の詳細を説明する。
【0106】
描画処理が開始されると、GPU11bは、まずベースモデルの描画から行う。なお、例えば、多層シェルモデルによって土を表現する場合には、ベースモデルを、土を表現するための多層シェルモデルの一つとして扱っても土の表現は可能である。このような場合には、ベースモデルを多層シェルモデルのうちの1つ(すなわち最下層のシェルモデル)とみなし、ベースモデルの描画処理をステップS32以降のシェルモデルに関する処理と共通化してもよい。
【0107】
ステップS30では、GPU11bは、ベースモデルデータ41およびベーステクスチャ画像42に基づいて、ベースモデルを描画する。具体的には、外部メインメモリ12からベーステクスチャ画像42を読み出してベースモデルにテクスチャマッピングし、テクスチャマッピングされたベースモデルをVRAM11d内のフレームメモリへ描画する。
【0108】
ステップS32では、GPU11bは、移動オブジェクトデータ44に基づいて、移動オブジェクトを描画する。
【0109】
この後のステップS34〜S48では、多層シェルモデル(雪モデル)が、内側の層から順番にVRAM11d内のフレームメモリへ描画される。
【0110】
ステップS34では、GPU11bは、全てのシェルモデルの描画が完了したか否かを判断し、まだ描画されていないシェルモデルが存在する場合にはステップS36に進み、全てのシェルモデルの描画が完了している場合にはステップS50に進む。
【0111】
ステップS36では、GPU11bは、まだ描画していないシェルモデルの中で、最も内側の(すなわちベースモデルに最も近い)シェルモデルを処理対象層として選択する。
【0112】
ステップS38では、GPU11bは、処理対象層の高さをシェルモデルデータ43から取得する。
【0113】
この後のステップS40〜S48では、高さマップ30のテクセルを順番に参照しながら、処理対象層の各位置が可視領域か否かを判断し、可視領域のみをVRAM11d内のフレームメモリへ描画していく処理が行われる。
【0114】
ステップS40では、GPU11bは、高さマップ30の全てのテクセルを参照し終えたか否かを判断し、まだ参照していないテクセルが存在する場合にはステップS42に進み、全てのテクセルの参照が完了している場合にはステップS34に戻る。
【0115】
ステップS42では、GPU11bは、まだ参照していないテクセルの中から1つのテクセルを処理対象テクセルとして選択する。
【0116】
ステップS44では、GPU11bは、高さマップ30から処理対象テクセルの高さデータ値を取得する。
【0117】
ステップS46では、GPU11bは、ステップS44で取得した処理対象テクセルの高さデータ値と、ステップS38で取得した処理対象層の高さとを比較し、処理対象テクセルの高さデータ値が処理対象層の高さ以上である場合にはステップS48に進み、処理対象テクセルの高さデータ値が処理対象層の高さ未満である場合にはステップS49に進む。
【0118】
ステップS48では、GPU11bは、処理対象テクセルに対応する処理対象層(シェルモデル)上の位置を可視領域として、所定の色でVRAM11d内のフレームメモリへ描画する。ただし、その処理対象層上の位置が移動オブジェクト31の背後に隠れている(つまり仮想カメラから見えない位置にある)場合には描画されない。なお、可視領域をVRAM11d内のフレームメモリへ描画するときには、処理対象層の高さに応じてその透明度を変更してもよい。例えば、外側の層(すなわちベースモデルからより遠い層)ほど高い透明度を自動的に設定するようにしてもよい。また、透明度だけでなく、処理対象層の高さに応じて色を変更してもよい。
【0119】
ステップS48の処理が完了すると、ステップS40に戻る。
【0120】
ステップS49では、処理対象テクセルに対応する処理対象層(シェルモデル)上の位置は不可視領域として決定されるので、当該位置がVRAM11d内のフレームメモリへ描画されることなく、ステップS40に戻る。
【0121】
ステップS34において全てのシェルモデルの描画が完了したと判断した場合には、GPU11bは、ステップS50において、上記のステップS30〜S48の処理の結果として生成された画像(例えば、図19に示すような画像)をテレビ2に出力する。つまり、VRAM11d内のフレームメモリに書き込まれている画像をAV−IC15、AVコネクタ16を介して出力する。
【0122】
ステップS50の処理が完了すると、図24のステップS10に戻る。
【0123】
上記のステップS10〜S22の処理は、1フレーム周期(例えば60分の1秒の周期)で繰り返され、その結果、テレビ2の画面には仮想空間の様子を示す動画像が表示される。
【0124】
なお、本実施形態では動画像を生成する例を説明したが、本発明はこれに限らない。静止画像を生成する目的の場合には、図25の描画処理は1回だけ実行されればよい。
【0125】
以上のように、本実施形態によれば、仮想空間に配置された積雪、土砂、レンガなどの立体オブジェクトの表面形状を、その形状に応じた形状のポリゴンモデルを用意することなく、多層ポリゴンモデルによって擬似的に表示することで、複雑な形状の立体オブジェクトでも少ないポリゴン数で描画することができる。
【0126】
また、高さマップ30の高さデータ値を変更するだけで、立体オブジェクトの形状を非常に容易に変形させることができる。
【図面の簡単な説明】
【0127】
【図1】本発明の一実施形態に係るゲームシステム1の外観図
【図2】ゲーム装置3の構成を示すブロック図
【図3】コントローラ7の上面後方から見た斜視図
【図4】コントローラ7を下面後方から見た斜視図
【図5】コントローラ7の上筐体を外した状態を示す斜視図
【図6】コントローラ7の下筐体を外した状態を示す斜視図
【図7】コントローラ7の構成を示すブロック図
【図8】ベースモデルと多層シェルモデルの位置関係を示す図
【図9A】高さマップ30の具体例
【図9B】画像として画面に表示された高さマップ30の具体例
【図10】第1層シェルモデルの描画方法を示す図
【図11】第2層シェルモデルの描画方法を示す図
【図12】第3層シェルモデルの描画方法を示す図
【図13】第4層シェルモデルの描画方法を示す図
【図14】多層シェルモデルによって表現される立体オブジェクトの様子を示す図
【図15】高さマップ30の更新方法の一例を示す図
【図16】移動オブジェクト31の現在位置と高さマップ30の各テクセルとの対応関係を示す図
【図17】高さマップ30の更新方法の一例を示す図
【図18】高さマップ30の更新に応じて多層シェルモデルの可視領域が変化する様子を示す図
【図19】最終的に生成される画像の一例
【図20】高さマップ30の更新方法の一例を示す図
【図21】高さマップ30の更新に応じて多層シェルモデルの可視領域が変化する様子を示す図
【図22】最終的に生成される画像の一例
【図23】外部メインメモリ12のメモリマップ
【図24】画像処理プログラム40に従って実行される処理の流れを示すフローチャート
【図25】描画処理の流れを示すフローチャート
【符号の説明】
【0128】
1 ゲームシステム
2 テレビジョン受像器(テレビ)
2a スピーカ
3 ゲーム装置
4 光ディスク
6 マーカ部
6R,6L マーカ
7 コントローラ
10 CPU
11 システムLSI
11a 入出力プロセッサ
11b GPU
11c DSP
11d VRAM
11e 内部メインメモリ
12 外部メインメモリ
13 ROM/RTC
14 ディスクドライブ
15 AV−IC
16 AVコネクタ
17 フラッシュメモリ
18 無線通信モジュール
19 無線コントローラモジュール
20 拡張コネクタ
21 メモリカード用コネクタ
22 アンテナ
23 アンテナ
24 電源ボタン
25 リセットボタン
26 イジェクトボタン
30 高さマップ
31 移動オブジェクト
40 画像処理プログラム
41 ベースモデルデータ
42 ベーステクスチャ画像
43 シェルモデルデータ
44 移動オブジェクトデータ
71 ハウジング
72 操作部
73 コネクタ
74 撮像情報演算部
75 通信部
700 基板
701 加速度センサ
702 LED
703 水晶振動子
704 バイブレータ
705 電池
706 スピーカ
707 サウンドIC
708 アンプ
741 赤外線フィルタ
742 レンズ
743 撮像素子
744 画像処理回路
751 マイコン
752 メモリ
753 無線モジュール
754 アンテナ

【特許請求の範囲】
【請求項1】
仮想空間に配置された立体オブジェクトを描画するための画像処理プログラムであって、コンピュータに、
層状に配置される複数のポリゴンモデルから成る多層ポリゴンモデルを構成するための多層ポリゴンデータを記憶手段から読み出すポリゴンデータ読み出しステップ、
描画しようとする前記立体オブジェクトの各位置の高さを示す2次元配列の高さデータ値からなり、各高さデータ値が前記多層ポリゴンモデルの各位置にそれぞれ対応している高さマップを記憶手段から読み出す高さマップ読み出しステップ、
前記多層ポリゴンモデルの各層について、当該層の高さと前記高さマップの各位置の高さデータ値とを比較することによって、前記高さマップの各位置に対応する当該層の各位置を可視表示するかどうかを決定する可視領域決定ステップ、および、
前記可視領域決定ステップにおいて可視表示すると決定された領域を所定の色で描画する描画ステップ、を実行させる画像処理プログラム。
【請求項2】
前記高さマップの少なくとも一部の位置の高さデータ値を変化させる高さ変化ステップを前記コンピュータにさらに実行させる、請求項1に記載の画像処理プログラム。
【請求項3】
前記画像処理プログラムは、前記立体オブジェクトとは異なるオブジェクトである移動オブジェクトを前記仮想空間に配置する移動オブジェクト配置ステップと、前記移動オブジェクトを移動させる移動制御ステップとを前記コンピュータにさらに実行させ、
前記高さ変化ステップは、前記高さマップにおける、前記移動オブジェクトの現在位置に対応する位置の高さデータ値を変化させるオブジェクト干渉ステップを含む、請求項2に記載の画像処理プログラム。
【請求項4】
前記オブジェクト干渉ステップは、前記移動オブジェクトの現在位置に対応する前記多層ポリゴンモデル上の位置を求めるステップと、多層ポリゴンモデルのどの位置が高さマップのどの位置に対応するかを示すマッピング情報に基づいて、前記多層ポリゴンモデル上の前記位置に対応する高さマップの位置を求めるステップと、前記高さマップの前記位置の高さデータ値を変化させるステップとを含む、請求項3に記載の画像処理プログラム。
【請求項5】
前記オブジェクト干渉ステップは、前記高さマップにおける、前記移動オブジェクトの現在位置に対応する位置を中心とした所定半径の円領域内の高さデータ値を減少させる円領域減少ステップを含む、請求項3に記載の画像処理プログラム。
【請求項6】
前記オブジェクト干渉ステップは、前記円領域減少ステップにおける高さデータ値の減少量に応じて、前記円領域の外側の所定領域の高さデータ値を増加させる外部領域増加ステップをさらに含む、請求項5に記載の画像処理プログラム。
【請求項7】
前記画像処理プログラムは、入力装置から操作データを取得する操作データ取得ステップを前記コンピュータにさらに実行させ、
前記移動ステップは、前記操作データに基づいて前記移動オブジェクトを移動させるオブジェクト操作ステップを含む、請求項3に記載の画像処理プログラム。
【請求項8】
前記高さ変化ステップは、前記高さマップの各位置をランダムに選択して当該位置の高さデータ値を増加させるランダム増加ステップを含む、請求項2に記載の画像処理プログラム。
【請求項9】
前記描画ステップにおいて前記コンピュータに、前記多層ポリゴンモデルの前記可視領域決定ステップにおいて可視表示すると決定された領域を、予め層ごとに設定された色および透明度で描画させる、請求項1に記載の画像処理プログラム。
【請求項10】
前記画像処理プログラムは、テクスチャ画像を記憶手段から読み出すテクスチャ画像読み出しステップを前記コンピュータにさらに実行させ、
前記描画ステップは、前記可視領域決定ステップで可視表示すると決定された領域に前記テクスチャ画像をマッピングして当該領域を描画するテクスチャ画像マッピングステップをさらに含む、請求項1に記載の画像処理プログラム。
【請求項11】
前記多層ポリゴンモデルの基となるポリゴンモデルであるベースモデルを構成するためのベースモデルデータを記憶手段から読み出すステップと、当該読み出したベースモデルデータに基づいて前記多層ポリゴンデータを生成する多層モデル生成ステップとを前記コンピュータにさらに実行させる、請求項1に記載の画像処理プログラム。
【請求項12】
前記ベースモデルに、当該ベースモデル用に用意されたテクスチャ画像をテクスチャマッピングするベースモデルマッピングステップを前記コンピュータにさらに実行させる、請求項11に記載の画像処理プログラム。
【請求項13】
前記多層モデル生成ステップにおいて生成される層の数を変更する層数変更ステップを前記コンピュータにさらに実行させる、請求項11に記載の画像処理プログラム。
【請求項14】
前記ポリゴンデータ読み出しステップにおいて読み出される多層ポリゴンデータは、予め用意されたポリゴンデータである、請求項1に記載の画像処理プログラム。
【請求項15】
前記ポリゴンデータ読み出しステップにおいて読み出される多層ポリゴンデータに基づいて構成される多層ポリゴンモデルとは別個に、当該多層ポリゴンモデルの基となるポリゴンモデルであるベースモデルを構成するためのベースモデルデータを記憶手段から読み出すステップと、当該読み出したベースモデルデータに基づいて構成されるベースモデルに、当該ベースモデル用に用意されたテクスチャ画像をテクスチャマッピングするベースモデルマッピングステップとを前記コンピュータにさらに実行させる、請求項14に記載の画像処理プログラム。
【請求項16】
仮想空間に配置された立体オブジェクトを描画するための画像処理装置であって、
層状に配置される複数のポリゴンモデルから成る多層ポリゴンモデルを構成するための多層ポリゴンデータを記憶手段から読み出すポリゴンデータ読み出し手段、
描画しようとする前記立体オブジェクトの各位置の高さを示す2次元配列の高さデータ値からなり、各高さデータ値が前記多層ポリゴンモデルの各位置にそれぞれ対応している高さマップを記憶手段から読み出す高さマップ読み出し手段、
前記多層ポリゴンモデルの各層について、当該層の高さと前記高さマップの各位置の高さデータ値とを比較することによって、前記高さマップの各位置に対応する当該層の各位置を可視表示するかどうかを決定する可視領域決定手段、および、
前記可視領域決定手段によって可視表示すると決定された領域を所定の色で描画する描画手段、を備える画像処理装置。
【請求項17】
前記高さマップの少なくとも一部の位置の高さデータ値を変化させる高さ変化手段をさらに備える、請求項16に記載の画像処理装置。
【請求項18】
前記画像処理装置は、前記立体オブジェクトとは異なるオブジェクトである移動オブジェクトを前記仮想空間に配置する移動オブジェクト配置手段と、前記移動オブジェクトを移動させる移動制御手段とをさらに備え、
前記高さ変化手段は、前記高さマップにおける、前記移動オブジェクトの現在位置に対応する位置の高さデータ値を変化させるオブジェクト干渉手段を含む、請求項17に記載の画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9A】
image rotate

【図9B】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2009−15792(P2009−15792A)
【公開日】平成21年1月22日(2009.1.22)
【国際特許分類】
【出願番号】特願2007−180293(P2007−180293)
【出願日】平成19年7月9日(2007.7.9)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】