(57)【要約】【課題】表示品質の高い等高線状の線ポリゴンの描画方法を提供する。【解決手段】まず、所定の平面との交差する頂点である交点を求める。次に、この交点を集めた後で、交点を距離によりソートを行う。次に、ソートされた座標情報のうち、１つの座標情報と近接する他の座標情報との中点をとって座標情報を更新する。次に、ソートした交点の座標に、視点又はカメラ方向のベクトルの座標を加算する。そして、ソートされ、ベクトルの座標が加算された交点の座標を基に、接続した線分を情報処理装置を用いて３次元ＣＧとして描画する。【選択図】  図３
2010134872.tif 000002
【特許請求の範囲】
【請求項１】
仮想３次元空間に複数のポリゴンから形成されるオブジェクトと仮想視点を配置し、前記仮想視点から見た前記オブジェクトの画像を生成する画像処理方法であって、
各ポリゴンの頂点座標を取得し、該頂点座標に基づき、前記各ポリゴンの辺を求め、前記各ポリゴンの辺ごとに、所定の高さ情報を備えた複数の点の座標情報を求める工程と、
所定の座標情報を基準として前記座標情報をソートする工程と、
ソートされた座標情報のうち、１の座標情報と該１の座標情報と近接する他の座標情報との中点をとって座標情報を更新する工程と、
更新された座標情報に、前記仮想視点又は前記仮想視点の座標情報に基づく方向ベクトル座標を加える工程と、
方向ベクトル座標が加えられた座標情報から線を描画する工程と
をコンピュータの制御手段に実行させることを特徴とする画像処理方法。
【請求項２】
前記座標情報を求める工程は、
前記各ポリゴンのそれぞれの辺において、高さ情報を備えたポリゴンとの交差点である座標情報を求める工程
をコンピュータの制御手段に実行させることを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記座標情報を更新する工程は、
前記ソートされた座標情報のうち、ソートを開始した座標情報とソートを終了した座標情報とが所定距離内に位置するとき、前記各座標情報間の距離を小さくする工程
を更にコンピュータの制御手段に実行させることを特徴とする請求項１又は請求項２に記載の画像処理方法。
【請求項４】
前記方向ベクトル座標を加える工程は、
前記更新された座標情報に方向ベクトルを加える工程
をコンピュータの制御手段に実行させることを特徴とする請求項１乃至３のいずれかに記載の画像処理方法。
【請求項５】
前記線を描画する工程は、
前記方向ベクトル座標を加えられた座標情報の３点ごとに線を描画する工程
をコンピュータの制御手段に実行させることを特徴とする請求項１乃至４のいずれかに記載の画像処理方法。
【請求項６】
前記線を描画する工程は、
線の描画を開始した座標情報と描画を終了した座標情報とが所定距離内に位置するとき、
前記線の描画を開始した座標情報と前記描画を終了した座標情報を更新し、該更新された各座標情報間を直線で描画する工程
を更にコンピュータの制御手段に実行させることを特徴とする請求項１乃至５のいずれかに記載の画像処理方法。
【請求項７】
前記線を描画する工程は、
前記仮想３次元空間内に設定される所定の座標情報との距離に応じて前記線の色相、明度、彩度のいずれか１つを変化させる工程
を更にコンピュータの制御手段に実行させることを特徴とする請求項１乃至６のいずれかに記載の画像処理方法。
【請求項８】
仮想３次元空間に複数のポリゴンから形成されるオブジェクトと仮想視点を配置し、前記仮想視点から見た前記オブジェクトの画像を生成する画像処理装置であって、
前記画像処理装置は、
各ポリゴンの頂点座標を取得し、該頂点座標に基づき、前記各ポリゴンの辺を求め、前記各ポリゴンの辺ごとに高さ情報を有する複数の点の座標情報を求める手段と、
所定の座標情報を基準として前記座標情報をソートする手段と、
ソートされた座標情報のうち、１の座標情報と該１の座標情報と近接する他の座標情報との中点をとって座標情報を更新する手段と、
更新された座標情報に、前記仮想視点又は前記仮想視点の座標情報に基づく方向ベクトル座標を加える手段と、
方向ベクトル座標が加えられた座標情報から線を描画する手段と、
を備えることを特徴とする画像処理装置。
【請求項９】
仮想３次元空間に複数のポリゴンから形成されるオブジェクトと仮想視点を配置し、前記仮想視点から見た前記オブジェクトの画像を生成する画像処理プログラムであって、
各ポリゴンの頂点座標を取得し、該頂点座標に基づき、前記各ポリゴンの辺を求め、前記各ポリゴンの辺ごとに所定の高さ情報を有する複数の点の座標情報を求める手順と、
所定の座標情報を基準として前記座標情報をソートする手順と、
ソートされた座標情報のうち、１の座標情報と該１の座標情報と近接する他の座標情報との中点をとって座標情報を更新する手順と、
更新された座標情報に、前記仮想視点又は前記仮想視点の座標情報に基づく方向ベクトル座標を加える手順と、
方向ベクトルの座標が加えられた座標情報から線を描画する手順と
をコンピュータの制御手段に実行させる画像処理プログラム。
【請求項１０】
請求項９記載の画像処理プログラムをコンピュータに実行させるためのプログラムをコンピュータ読取可能に構成された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想３次元空間の画像処理方法、画像処理装置、画像処理プログラム、及び記憶媒体において、特に描画品質が高い接続した線分を描画する画像処理方法、画像処理装置、画像処理プログラム、及び記憶媒体に関する。
【背景技術】
【０００２】
従来、高度なＣＧ（コンピュータ・グラフィックス）を描画するための機器は、業務用ＣＧ製作機器や、通常「ゲームセンター」と呼ばれる遊戯施設等にある高価な遊技機器にのみ搭載されていた。
しかし、近年のコンピュータの演算能力のめざましい進歩により、高度なＣＧが一般化している。実際に、実写と見間違うほどの精緻な物体や風景を、３次元コンピュータ・グラフィックスを描画するグラフィックプロセッサが、比較的安価に販売されている。
【０００３】
このようなグラフィックプロセッサでは、数万〜数百万もの多数の「ポリゴン」と呼ばれる多面体に、テクスチャと呼ばれる画像を貼り付け、明度や影の表現を行い、秒速数十回〜数百回という単位でリアルタイム（実速度）でレンダリング（描画）して、立体的な物体や風景を描画する。さらに、近年の高度なグラフィックプロセッサでは、光源追跡（レイ・トレーシング）やラジオシティといった、より演算能力が必要なＣＧ表現を可能としたものも実現されつつある。
そして、このようなグラフィックプロセッサは、通常のＰＣ（パーソナル・コンピュータ）の高価な外付けグラフィック・ボードのみならず、一般（コンシューマ）向けのビデオゲーム機、携帯電話等の携帯端末にも内蔵されてきている。
【０００４】
しかしながら、従来の３次元コンピュータ・グラフィックス（仮想３次元空間の描画方法）の場合には、実際には複数のポリゴンによって構成されたオブジェクトなどが２次元の液晶ディスプレイ等にアフィン変換等されて投影される。
このため、写実的な表現はできても、高さ等の立体的な感覚を読み取ることが難しいことがあった。
【０００５】
そこで、描画表現を用いて表現される複数のポリゴンからなるオブジェクトなどの「高さ」を示す技術が必要とされていた。
ところが、近年、グラフィックプロセッサの描画するポリゴン数が多くなりすぎたため、仮想３次元空間内における、オブジェクトを構成するそれぞれのポリゴンからポリゴンの「高さ」を求めること、つまり、仮想空間内におけるオブジェクトの高さや高度などを求めることは難しかった。
また、単に各ポリゴンの所定の高さ位置同士を「直線」でつないで表現すると、直線のギザギザが目立つという問題があった。すなわち、レンダリングにより明度や影がなめらかに表現されているものと対比すると、線分の直線性に違和感が生じるという問題があった。
【０００６】
このため、頂点を直線でつなぐのではなく、頂点を曲線で描画することが考えられる。このような曲線の描画方法としては、ベジェ曲線やＢ−スプライン曲線が用いられている（特許文献１の従来技術を参照）。しかしながら、従来の曲線描画方法では、非常に多くの演算が必要であるという問題があった。
そこで、特許文献１を参照すると、複数の座標データによって指定された各線分の中点を演算して曲線補間によって近似曲線を生成する近似曲線演算手段と、該近似曲線演算手段によって演算された曲線の誤差に関する閾値を設定する閾値設定手段と、該閾値設定手段によって設定された閾値と前記近似曲線演算手段によって演算された曲線の誤差とを比較して誤差の有無を判別する誤差判別手段と、該誤差判別手段によって誤差があると判断されたとき、当該線分の中点で分割された各線分について、前記近似曲線演算手段により、曲線補間によって近似曲線を生成し、前記誤差判別手段によって誤差がないと判断されたとき、当該座標データを記憶するメモリ手段とを備え、該メモリ手段に記憶された座標データによってアウトラインフオント等の文字や図形等を描画することを特徴とする情報処理装置が記載されている（以下、従来技術１とする。）。
【０００７】
従来技術１の情報処理装置は、頂点の中点をとって頂点を複数回更新して更新前後の誤差が所定以下となると曲線を描画するために、曲線の描画演算に際して、曲線の座標を乗算することなしに、簡単かつ迅速に実行可能な加算や除算だけで、直線による曲線近似ができるので、高速度の曲線補間処理を行うことができる。
【０００８】
【特許文献１】特許第３０５９７３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ベジェ曲線、Ｂ−スプライン曲線、及び従来技術１の情報処理装置による従来の描画方法は、頂点を更新してそのまま曲線で補間するので、頂点を更新したときに元の頂点の位置情報とのずれが大きいまま曲線補間を行うが、これを仮想３次元空間上での描画方法に用いると、頂点が他のポリゴンの背後に埋もれてしまい、補間された曲線を表示できなくなったり、描画精度が落ちるという問題があった。
【００１０】
本発明は、このような状況に鑑みてなされたものであり、上述の課題を解消することを課題とする。
【課題を解決するための手段】
【００１１】
本発明の画像処理方法は、仮想３次元空間に複数のポリゴンから形成されるオブジェクトと仮想視点を配置し、前記仮想視点から見た前記オブジェクトの画像を生成する画像処理方法であって、各ポリゴンの頂点座標を取得し、該頂点座標に基づき、前記各ポリゴンの辺を求め、前記各ポリゴンの辺ごとに、所定の高さ情報を備えた複数の点の座標情報を求める工程と、所定の座標情報を基準として前記座標情報をソートする工程と、前記ソートされた座標情報のうち、１の座標情報と該１の座標情報と近接する他の座標情報との中点をとって座標情報を更新する工程と、更新された座標情報に、前記仮想視点又は前記仮想視点の座標情報に基づく方向ベクトル座標を加える工程と、方向ベクトル座標が加えられた座標情報から線を描画する工程とをコンピュータの制御手段に実行させることを特徴とする。
本発明の画像処理方法は、前記座標情報を求める工程は、前記各ポリゴンのそれぞれの辺において、高さ情報を備えたポリゴンとの交差点である座標情報を求める工程をコンピュータの制御手段に実行させることを特徴とする。
本発明の画像処理方法は、前記座標情報を更新する工程は、前記ソートされた座標情報のうち、ソートを開始した座標情報とソートを終了した座標情報とが所定距離内に位置するとき、前記各座標情報間の距離を小さくする工程を更にコンピュータの制御手段に実行させることを特徴とする。
本発明の画像処理方法は、前記方向ベクトル座標を加える工程は、前記更新された座標情報に方向ベクトルを加える工程をコンピュータの制御手段に実行させることを特徴とする。
本発明の画像処理方法は、前記線を描画する工程は、前記方向ベクトル座標を加えられた座標情報の３点ごとに線を描画する工程を更にコンピュータの制御手段に実行させることを特徴とする。
本発明の画像処理方法は、前記線を描画する工程は、線の描画を開始した座標情報と描画を終了した座標情報とが所定距離内に位置するとき、前記線の描画を開始した座標情報と前記描画を終了した座標情報を更新し、該更新された各座標情報間を直線で描画する工程を更にコンピュータの制御手段に実行させることを特徴とする。
本発明の画像処理方法は、前記線を描画する工程は、前記仮想３次元空間内に設定される所定の座標情報との距離に応じて前記線の色相、明度、彩度のいずれか１つを変化させる工程を更にコンピュータの制御手段に実行させることを特徴とする。
本発明の画像処理装置は、仮想３次元空間に複数のポリゴンから形成されるオブジェクトと仮想視点を配置し、前記仮想視点から見た前記オブジェクトの画像を生成する画像処理装置であって、前記画像処理装置は、各ポリゴンの頂点座標を取得し、該頂点座標に基づき、前記各ポリゴンの辺を求め、前記各ポリゴンの辺ごとに高さ情報を有する複数の点の座標情報を求める手段と、所定の座標情報を基準として前記座標情報をソートする手段と、前記ソートされた座標情報のうち、１の座標情報と該１の座標情報と近接する他の座標情報との中点をとって座標情報を更新する手段と、更新された座標情報に、前記仮想視点又は前記仮想視点の座標情報に基づく方向ベクトル座標を加える手段と、方向ベクトルの座標が加えられた座標情報から線を描画する手段とを備えることを特徴とする。
本発明の画像処理プログラムは、仮想３次元空間に複数のポリゴンから形成されるオブジェクトと仮想視点を配置し、前記仮想視点から見た前記オブジェクトの画像を生成する画像処理プログラムであって、各ポリゴンの頂点座標を取得し、該頂点座標に基づき、前記各ポリゴンの辺を求め、前記各ポリゴンの辺ごとに所定の高さ情報を有する複数の点の座標情報を求める手順と、所定の座標情報を基準として前記座標情報をソートする手順と、前記ソートされた座標情報のうち、１の座標情報と該１の座標情報と近接する他の座標情報との中点をとって座標情報を更新する手順と、更新された座標情報に、前記仮想視点又は前記仮想視点の座標情報に基づく方向ベクトル座標を加える手順と、方向ベクトルの座標が加えられた座標情報から線を描画する手順とをコンピュータの制御手段に実行させることを特徴とする。
本発明の記録媒体は、前記画像処理プログラムをコンピュータに実行させるためのプログラムをコンピュータ読取可能に構成されたことを特徴とする。
【発明の効果】
【００１２】
本発明によれば、頂点座標間の中点をとって頂点座標を更新後に、仮想視点又は仮想カメラ方向に更新した頂点座標を移動させるので、更新後の頂点が埋まってしまい上手く線描画できなくなることを防止できる描画方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
＜第１の実施の形態＞
〔ゲーム装置１０の制御構成〕
本発明の第１の実施の形態に係るゲーム装置１０（情報処理装置）は、ＰＣ／ＡＴ互換機等のＰＣ（パーソナル・コンピュータ）、業務用機器、遊技機器、一般向け（コンシューマ）ゲーム機器、携帯端末等であり、高度なＣＧの描画機能を備えている。
図１を参照して説明すると、ゲーム装置１０は、ＣＰＵ１００（制御手段）と、主記憶部１１０（主記憶手段）と、補助記憶部１２０（補助記憶手段）と、ブートＲＯＭ１３０と、ペリフェラルＩ／Ｆ１４０と、バスアービタ１５０と、グラフィックプロセッサ１６０（描画手段）と、グラフィックメモリ１７０と、オーディオプロセッサ１８０と、オーディオメモリ１９０と、通信Ｉ／Ｆ２００とを含んで構成される。
【００１４】
ＣＰＵ１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇａｎｌ  Ｐｒｏｃｅｓｓｏｒ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｐｒｏｃｅｓｓｏｒ、特定用途向けプロセッサー）等である演算・制御能力を備えた制御手段である。また、ＣＰＵ１００に、主記憶部１１０や補助記憶部１２０やグラフィックプロセッサ１６０やオーディオプロセッサ１８０等の機能を備えることも可能である。
【００１５】
主記憶部１１０は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の主記憶用に使われる高速な記憶手段である。
主記憶部１１０には、後述するように、主に後述する地面オブジェクト４００のポリゴン数を少なくして、他のオブジェクトとの衝突を検出するために使われるコリジョンオブジェクト４５０を備えている。
なお、このコリジョンオブジェクト４５０は、グラフィックメモリ１７０上に備えることも可能である。また、地面オブジェクト４００から、グラフィックプロセッサのアダプティブ・メッシュ機能等を用いて動的に生成することも可能である。
【００１６】
補助記憶部１２０は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリ、ＳＲＡＭ（スタティックＲＡＭ）、磁気テープ装置、光ディスク装置等の補助記憶手段である。補助記憶部１２０には、ゲーム装置１０をコンピュータとして機能させるためのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ、図示せず）が備えられており、各アプリケーションプログラムが各種ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）により、ゲーム装置１０の各機能にアクセス可能である。
このアプリケーションプログラムとして、本発明の第１の実施の形態に係るゲーム装置１０では、コリジョンオブジェクト４５０をいくつかの高さで輪切り状態にして等高線状の線ポリゴン（接続した線分）である「高さポリゴン」を求める高さポリゴン作成部１２５を備えている。この高さポリゴン作成部１２５は、他の、例えばゴルフゲームのプログラムに用いるためのクラスやサブルーチン等の単位として備えることができる。また、高さポリゴン作成部１２５を、他のプログラムから汎用的に呼び出すＤＬＬ（ダイナミック・リンキング・ライブラリー）や共通クラスとして備えることも可能である。
【００１７】
詳細に説明すると、高さポリゴン作成部１２５は、メインプログラムと、交点取得部３１０（交点取得手段）、交点ソート部３２０（交点ソート手段）、色決定部３２５（色決定手段）、視点方向移動部３３０（視点方向移動手段）、曲線作成部３４０（曲線作成手段）、及び終点処理部３５０（終点処理手段）のような、各種クラスや付随するデータを含んで構成される。
交点取得部３１０は、横をｘ座標、縦をｙ座標、奥行きをｚ座標とする左手座標系（本発明の第１の実施の形態に係る描画方法において、以下、左手座標系を用いて説明する。）における、例えば、コリジョンオブジェクト４５０を構成する複数のポリゴンと、所定の高さ（ｙ座標）をもったｘ−ｚ平面とが交差するときの座標情報（以下、交点）を取得する。なお、この交点については、平面ではない交点を求めることも可能である。
交点ソート部３２０は、交点取得部３１０により取得された交点の情報を、例えば、所定の座標情報（点）からの距離を基準としてソートする（並び換える）。この所定の座標情報（点）としては、例えば、高さポリゴン作成部１２５をゴルフゲームに用いる場合は、ゴルフにおけるグリーン上のカップが設定されている位置の位置座標を用いることが好適である。なお、この位置座標としては、カップが設定されている位置の仮想３次元空間での点の座標や、カップが設定されている位置のｘ−ｙ軸の線がｘ−ｚ平面と交差した点の座標等を用いることができる。また、所定の座標情報からの距離として、単純に、仮想視点が設定されている位置の位置座標からの距離を用いることも可能である。さらに、ワールド座標からビュー座標に変換した後のｚ軸の座標値等を用いることもできる。また、交点ソート部３２０は、ソートした交点の情報から、曲線描画のために、中点を取得する処理についても行う。
色決定部３２５は、等高線状の線ポリゴンの色を決める。この等高線状の線ポリゴンの色としては、例えば、高さポリゴン作成部１２５をゴルフゲームに用いる場合は、ゴルフにおけるグリーンの所定の座標情報（カップが設定されている位置や、グリーン上のゴルフボールが配置されている位置）からの高さの値に従って、寒色〜暖色のグラデーションのような色を選択して表現することができる。
視点方向移動部３３０は、各交点について、視線方向のベクトルを加えて移動する処理を行う。これにより、粗いコリジョンオブジェクト４５０から作成された曲線が、コリジョンオブジェクト４５０の中に埋もれて描画されないことを防ぐことができる。
曲線作成部３４０は、ソートされて中点を取得した頂点について、更に中点を取得する等の処理を行って、なめらかな曲線の頂点を作成する。この曲線の頂点を作成する処理については、後述する。この曲線の頂点を作成する処理により、誤差を少なくして、少ない交点から曲線を描画することができる。
終点処理部３５０は、曲線の端と端が接続される場合に、直線的に接続されることを防ぐための処理を行う。これにより、例えば、ゴルフゲームのカップ付近のように、等高線状の曲線が円を描いた際にも、なめらかな曲線を描画することができる。
【００１８】
ブートＲＯＭ１３０は、ＲＯＭやＮＯＲ型フラッシュメモリやＳＲＡＭ等の不揮発性記憶媒体である。ブートＲＯＭ１３０は、ゲーム装置１０が起動する際に、ＣＰＵ１００のマイクロコードの設定を行ったり、各部の初期化を行ったり、補助記憶部１２０からＯＳ等が起動するような指示を行ったりする。
【００１９】
ペリフェラルＩ／Ｆ１４０は、各種周辺機器（ペリフェラル）に接続するための、ＵＳＢ、ＩＥＥＥ１３９４、シリアル、パラレル、赤外線、無線等のインターフェイスを提供する部位である。各種周辺機器としては、ゲームパッド、スティック型コントローラー、加速度検出器、振動装置等のフォースフィードバック装置、足踏み／手押し式のスイッチ、ディスプレイモニタの画面上の位置を検出する位置検出器、ＣＣＤ／ＣＭＯＳカメラ、タッチパッド、タッチパネル、キーボード、マウスやトラックボール等のポインティングデバイス、ライトの点灯用コントローラー等を用いることができる。
【００２０】
バスアービタ１５０は、いわゆる「チップセット」等の、各部を接続するためのバスインターフェイスを提供する集積回路である。このバスアービタ１５０で接続される各部のバスのスピードは異なっていてもよく、上り／下りで非対称であってもよい。また、例えば、ＣＰＵ１００と、主記憶部１１０と、バスアービタ１５０の間はＦＳＢやＨＴといった高速なバスで接続され、グラフィックプロセッサ１６０とバスアービタ１５０の間も広帯域なバスで接続されるのが好適である。さらに、ＣＰＵ１００にＤＤＲ２／３  ＳＤＲＡＭやＸＤＲ  ＤＲＡＭ等のバスインターフェイスが内蔵されて、主記憶部１１０を直接読み書きするように構成されていてもよい。
【００２１】
グラフィックプロセッサ１６０は、高度な３次元ＣＧを描画する機能をもつグラフィックプロセッサである。グラフィックプロセッサ１６０は、ポリゴンのジオメトリ（座標）の計算を行うジオメトリ部１６２と、ジオメトリ計算が行われたポリゴンをラスタライズ／レンダリング（描画）するレンダリング部１６４とを含んで構成される。また、グラフィックプロセッサ１６０は、液晶ディスプレイやＰＤＰ（プラズマ・ディスプレイ・パネル）やＨＭＤ（ヘッドマウントディスプレイ）やプロジェクター等であるディスプレイモニタに描画された画像を出力するために、ＲＡＭＤＡＣ（ＲＡＭ  Ｄ／Ａコンバーター）やＨＤＭＩインターフェイス等を備えている。
ジオメトリ部１６２は、ポリゴンの３次元空間での座標（ワールド座標）について、行列の回転や拡大等を行って、アフィン変換等を行い、ポリゴンの２次元空間での座標を求める部位である。また、ジオメトリ部１６２は、ポリゴンの分割やスプライン補完等のテッセレーションを行う、「ジオメトリシェーダ」（又はバーテックスシェーダ）を備えることもできる。
レンダリング部１６４は、座標計算されたポリゴンについて、テクスチャと呼ばれる画像データを貼り付け、各種効果を加えてグラフィックメモリ１７０に描画する部位である。この各種効果としては、プログラマブル・シェーダ等を用いて、光点・影（シェーディング）計算、明暗の表現、半透明、ぶれ、霧、ぼかし、ＨＤＲ（ハイダイナミックレンジ合成）等の計算を行うことができる。また、レンダリング部１６４が描画するポリゴンの種類としては、点ポリゴン（ポイント）、線ポリゴン（ラインリスト）、三角形や四角形といった面ポリゴン、面ポリゴンの集合体等がある。加えて、レンダリング部１６４がレイ・トレーシング等を用いて描画を行う際には、円、楕円、球、メタボール等の領域で定義される物体を描画することも可能である。
なお、ジオメトリ部１６２を、ＣＰＵ１００にて処理するように構成することも可能である。この場合は主記憶部１１０に記憶するプログラムをＣＰＵ１００が実行して作成したポリゴンの座標を、グラフィックメモリ１７０に転送等を行う。レンダリング部１６４は、このポリゴンの座標に従って、ポリゴンを描画する。
【００２２】
グラフィックメモリ１７０は、グラフィックプロセッサ１６０が描画するために高速に読み書きができる記憶媒体である。たとえば、このグラフィックメモリとして、ＧＤＤＲ（Ｇｒａｐｈｉｃｓ  Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ（グラフィックス・ダブル・データレート））等の広帯域なメモリを高レベルのインターリーブ等を用いて接続することができる。また、システムＬＳＩのようにグラフィックメモリをグラフィックプロセッサ１６０に内蔵する構成も可能である。また、グラフィックプロセッサ１６０が描画している間に、ディスプレイモニタに表示するためのデュアルポート構成をとることも可能である。
本発明の第１の実施の形態に係るグラフィックメモリ１７０には、例えばゴルフゲーム用のポリゴンの情報として、多数のポリゴンで構成されている、地面オブジェクト４００と、物体オブジェクト４１０とを備えることができる。なお、このポリゴンの情報としては、ポリゴンの３次元の座標、テクスチャ、色、光源の位置等を記憶することができる。
地面オブジェクト４００は、地形を描画するための多数のポリゴンの情報を記憶したポリゴンの集合体のオブジェクトである。この地面オブジェクト４００は、数万〜数十万単位の多数のポリゴンを備えていたり、ポリゴンをテッセレーションにより補完して描画するためのデータを備えているため、例えば、ゴルフ場の風景をフォト・リアリスティック（写実的）に描画することができる。地面オブジェクトには、芝目等や草等の「ファー（毛皮）・シェーディング」で自然に表現するためのオブジェクトも含まれる。地面オブジェクト４００は、このように多数のポリゴンを含んでいるために、地面オブジェクト４００とボール等のオブジェクトとの衝突・交差計算を行うのは容易ではない。このために、本発明の第１の実施の形態に係る描画方法では、地面オブジェクト４００のポリゴン数を少なくしたコリジョンオブジェクト４５０を用いる。
物体オブジェクト４１０は、木や建物などの風景に関する物体のポリゴンの情報を記憶したポリゴンの集合体のオブジェクトである。実際に、ボール等の衝突計算を行うときには、コリジョンオブジェクト４５０と、この物体オブジェクト４１０とを合わせたポリゴンの集合体を用いて衝突計算を行うことが好適である。また、この物体オブジェクト４１０と、地面オブジェクト４００とは、一体的なデータとして構成することも、分離された状態で構成することもできる。
【００２３】
オーディオプロセッサ１８０は、音楽や音声や効果音を出力するためのＰＣＭ（Ｗａｖｅ）音源等を備えたＤＳＰ（デジタル・シグナル・プロセッサ）等である。オーディオプロセッサ１８０は、物理演算音源、ＦＭ音源等の計算を行い、残響や反射等の各種音声効果を計算することもできる。オーディオプロセッサ１８０の出力は、Ｄ／Ａ（デジタル・アナログ）変換され、デジタルアンプ等に接続されて、実際にスピーカーで音楽や音声や効果音として再生される。また、オーディオプロセッサ１８０は、マイクから入力した音声の音声認識等にも対応している。
オーディオメモリ１９０は、音楽や音声や効果音のためのデジタル変換されたデータを記憶している記憶媒体である。オーディオプロセッサ１８０とオーディオメモリ１９０とを一体的に構成することも当然可能である。
【００２４】
通信Ｉ／Ｆ２００は、ＬＡＮ（ローカル・エリア・ネットワーク）、ＷＡＮ（ワイド・エリア・ネットワーク）等のネットワークに接続するための（例えば、有線／無線ＬＡＮ、ＷｉＭａｘ（登録商標）、電話線、携帯電話網、ＰＨＳ網、電灯線ネットワーク、ｃＬｉｎｋ、ＨＤＭＩ、ＩＥＥＥ１３９４等）インターフェイスである。通信Ｉ／Ｆ２００を介して、他のゲーム装置やサーバ装置へと通信可能に接続することができる。これにより、例えば、ゴルフゲームの場合には、通信可能に接続されている他のゲーム装置のプレイヤーと共同で遊んだり、複数のゲーム装置が通信可能に接続されたサーバ装置がスコアの集計等を行ったりすることなどが可能である。
【００２５】
〔本発明の第１の実施の形態に係る描画処理〕
ここで、図２〜図１１を更に参照して、ゲーム装置１０を用いて、本発明の第１の実施の形態に係る描画処理を行う際に、ゴルフゲームのグリーン部分の等高線状の線ポリゴンの描画の例について説明する。
上述したように、近年のグラフィックプロセッサのように描画するポリゴンが多い場合には、地面や人物等のポリゴンの集合体であるオブジェクトと、他のオブジェクトとの衝突等の座標計算（以下、衝突演算という。）のために、膨大な演算能力が必要であるという問題があった。
このために、本発明の第１の実施の形態に係るゲーム装置１０では、衝突演算のために、「コリジョンオブジェクト」と呼ばれる少ないポリゴン数（粗い）オブジェクトであるコリジョンオブジェクト４５０を用いる。このコリジョンオブジェクト４５０により、専用の「物理演算」ハードウェアを用いなくても、物体オブジェクト４１０のような人物や物体のオブジェクトと地面との接触・衝突する場合に、十分な精度で高速に計算することができる。
さらに、本発明の第１の実施の形態に係る描画方法では、このコリジョンオブジェクトを用いて、複雑で多数のポリゴンのデータである地面オブジェクト４００の上に、等高線状の線ポリゴン（高さポリゴン）を描画することができる。
これにより、地面オブジェクト４００のような多数のポリゴンを用いて重い（複雑な）計算をする必要がなく、リアルタイムで等高線状の線ポリゴンを描画できるという効果が得られる。
また、なめらかな地面オブジェクト４００のような多数のポリゴンの上に線ポリゴンを描くことで、ポリゴン及びそのポリゴンの集合体であるオブジェクトの立体的な情報をユーザーが得やすくするという効果が得られる。
以下で、図２のデータ構成の概念図と、図３のフローチャートを参照して、本発明の第１の実施の形態に係る描画処理について詳しく説明する。
【００２６】
〔高さポリゴン作成部１２５のデータ構成〕
まず、図２を参照して、高さポリゴン作成部１２５が用いるデータ構成について説明する。
高さポリゴン作成部１２５が用いるデータとしては、例えば、図２の表に示すような、コリジョンオブジェクトＤ１０１、交点座標Ｄ１０２（頂点座標、座標情報）、等高線下端高さＤ１０３、等高線上端高さＤ１０４、等高線間隔Ｄ１０５、といった配列（配列変数）や変数を用いることができる。
【００２７】
コリジョンオブジェクトＤ１０１は、コリジョンオブジェクト４５０の三角、四角ポリゴンのリストに対して、各ポリゴンの各頂点の３次元座標を抽出して記憶する。
具体例を挙げて説明すると、コリジョンオブジェクトＤ１０１は、３次元座標を示すｘ軸、ｙ軸、ｚ軸の値と行列計算のためのｗ値の４つの単精度の浮動小数点の実数のデータを備えたベクトル（ｖｅｃ４ｆ）型の配列（例えば、ｔｒｉｓ［］）を用いることができる。ここでは、頂点数を増減させることを容易にするため、リジョンオブジェクトＤ１０１を構造体のリンクリストのようなデータ形式で構成して、「．ｐｏｓ１」、「．ｐｏｓ２」、「．ｐｏｓ３」といった３角形の各頂点の座標と、「．ｎｅｘｔ」というコリジョンオブジェクトＤ１０１の次の構造体を示すポインタを、リンクリストの要素として記憶することもできる。この場合は、ｔｒｉｓ［］の終点（端点）にあたるｔｒｉｓ［頂点数］．ｎｅｘｔの最後には、リンクリストの最後を示すＮＵＬＬ（ＮｉＬ、空、０）等の値を記憶する。
なお、以下において、［］は、配列であることを示す。この配列としては、構造体の配列のように、ベクトルや行列の集合を用いることができる。また、本発明の実施の形態においては、「配列」には、リンクリスト（リスト）のようなデータ形式も含むものとする。
また、これらの配列や変数に用いる値としては、単精度の浮動小数点実数ではなく、倍精度や倍々精度のような浮動小数点の実数のデータ、固定小数点の実数のデータ、整数データ等を用いることも当然可能である。
【００２８】
交点座標Ｄ１０２は、コリジョンオブジェクトＤ１０１の各三角、四角ポリゴンの各頂点を結んだ線と、ｘ座標とｚ座標に平行なｘ−ｚ平面とが交わった点である「交点」の座標、及びこの交点から中間点等を求めて作成する曲線の頂点の座標を記憶する。
具体例を挙げて説明すると、上述の「交点」の座標、及びこの交点から中間点等を求めて作成する曲線の頂点の座標を記憶する配列（例えば、配列ｈｌｉｎｅ＿ｌｉｓｔ［］［］）を用いることができる。
また、この配列は、等高線状の線ポリゴンを描画する数×各曲線の座標数の領域を確保して用いることができる。
【００２９】
等高線下端高さＤ１０３は、ｘ−ｚ平面の高さを示す値の最小値である。
具体例を挙げて説明すると、等高線下端高さＤ１０３は、等高線状の線ポリゴンを描画する最低の高さを示している変数（例えば、変数ｈｌｉｎｅ＿ｍｉｎ）を用いることができる。
また、この変数に代入する等高線下端高さＤ１０３の値としては、例えば、ゴルフゲームの場合には、グリーンの部分の高さの最小値を用いることができる。
また、後述するように本発明の第１の実施の形態に係る描画方法において、高さポリゴン作成部１２５を投射影表現に用いる場合には、仮想空間内で人物や物体等を構成するオブジェクトの周囲の地面の高さの最小値を用いることができる。
さらに、地面オブジェクトのｙ座標の最小値／最大値といった値を単純に用いることも可能である。
【００３０】
等高線上端高さＤ１０４は、ｘ−ｚ平面の高さを示す値の最大値である。
具体例を挙げて説明すると、等高線上端高さＤ１０４は、等高線状の線ポリゴンを描画する最大の高さを示している変数（例えば、変数ｈｌｉｎｅ＿ｍａｘ）を用いることができる。
この変数に代入する等高線上端高さＤ１０４の値としては、例えば、ゴルフゲームの場合には、グリーンの部分の高さの最大値等を用いることができる。
【００３１】
等高線間隔Ｄ１０５は、等高線状の線ポリゴンを描画するｘ−ｚ平面の高さの間隔（等高線の間隔）を示す値である。
具体例を挙げて説明すると、等高線間隔Ｄ１０５は、等高線状の線ポリゴンを描画する間隔を示している変数（例えば、変数ｈｌｉｎｅ＿ｗｉｄｔｈ）を用いることができる。
この変数に代入する等高線間隔Ｄ１０５の値は、例えばゴルフゲームの場合は、等高線上端高さＤ１０４の値から、等高線下端高さＤ１０３の値を引いて、等高線状の線ポリゴンを描画する数（等高線の本数）で割ることで求められるが、これに限られない。
【００３２】
なお、この他にも、それぞれの等高線状の線ポリゴンに係る値を用いることができる。
具体的には、それぞれの等高線状の線ポリゴンに係る値を示す変数ｈは、整数の変数として、初期値を０とし、下記の高さポリゴン作成部１２５のメインプログラムのループ内を実行後にインクリメント（１足す）され、等高線の本数が最大値となる。
【００３３】
また、交点座標Ｄ１０２の配列に記憶される交点や曲線の頂点の数に係る値として、頂点数（初期値は０）を備えることができる。
具体例を挙げて説明すると、交点座標Ｄ１０２の配列ｈｌｉｎｅ＿ｌｉｓｔ［］［］に記憶する交点や曲線の頂点の数である変数として、頂点数ｎｕｍを備える。この頂点数ｎｕｍには、変数ｈの各値における交点座標Ｄ１０２の要素数（例えば、ｈｌｉｎｅ＿ｌｉｓｔ［変数ｈ］［］の要素数）を、必要なときに代入して使用する。
【００３４】
加えて、最終的に曲線描画のための新たな線ポリゴン用のリンクリストや配列（例えば、ｐ［］［］）も、等高線の本数分だけ用意することが可能である。
【００３５】
以下で、図３のフローチャートを参照して、高さポリゴン作成部１２５のメインプログラムの処理について、各ステップを追いながら説明する。
高さポリゴン作成部１２５においては、図３のループで示したように、等高線の本数だけ各処理（関数）を呼び出していることが分かる。
なお、以下の描画処理は、ＣＰＵ１００が、補助記憶部１２０に記憶された高さポリゴン作成部１２５のプログラムやクラスを、ハードウェア資源を用いて演算制御して実行することで実現することができる。
【００３６】
（ステップＳ１０１）
まず、高さポリゴン作成部１２５は、頂点取得処理を行う。
高さポリゴン作成部１２５は、この頂点取得処理においては、等高線状の線ポリゴンを作成したい部分、すなわち等高線を引きたい部分のコリジョンオブジェクト４５０の三角形、四角形ポリゴンの頂点座標を取得する。
具体的には、高さポリゴン作成部１２５は、この取得した頂点座標を、主記憶部１１０や補助記憶部１２０に、上述したコリジョンオブジェクトＤ１０１の配列のリンクリストとして記憶し、配列の最後を示すポインタをＮＵＬＬとする。
また、この処理において、高さポリゴン作成部１２５は、等高線状の線ポリゴンを描画する本数（以下、等高線の本数と呼ぶ。）を求める。この等高線の本数は、例えば５０本等の所定の値を設定することもできるし、等高線下端高さＤ１０３の値と等高線上端高さＤ１０４の値との差から好適な本数を決定することもできる。またビューポイント内のポリゴンの数等を用いて、最適な値を求めることもできる。
【００３７】
（ステップＳ１０２）
ここで、高さポリゴン作成部１２５は、すべての等高線を処理しているか判定する。
具体的には、高さポリゴン作成部１２５は、図３のループのループ内で、すべての等高線状の線ポリゴンを作成する処理を終了したか判定する。
このループとしては、例えばｆｏｒ（）ループのようなループ構造を用いることができる。ここでは、高さポリゴン作成部１２５は、処理する等高線状の線ポリゴンの本数を示す整数の変数ｈの初期値を０と設定し、その後、高さポリゴン作成部１２５は、変数ｈが描画する等高線の本数を超えているかを判定する。
（ステップＳ１０２がＹｅｓの場合）
変数ｈが描画する等高線の本数と同じか超えていると判断した場合には、すべての等高線を処理しているものとして、本発明の第１の実施の形態に係る描画処理を終了する。
（ステップＳ１０２がＮｏの場合）
変数ｈが描画する等高線の本数より少ないと判断した場合には、ループ内の各処理を実行する。高さポリゴン作成部１２５は、ループ内の各処理の実行後に、変数ｈに１を足すなど、変数ｈに対してインクリメントを行い、また判定を行う。
【００３８】
（ステップＳ１０３）
ここで、高さポリゴン作成部１２５の交点取得部３１０は、交点計算処理を行う。
すなわち、交点取得部３１０は、コリジョンオブジェクト４５０とｘ−ｚ平面との交点を求めて、交点座標Ｄ１０２に記憶する。
具体例を挙げて説明すると、この交点計算処理においては、ステップＳ１０１で得られた三角形、四角形のポリゴンのリストであるコリジョンオブジェクトＤ１０１のリンクリストに対して、すべての交点を計算する。つまり、この交点の計算では、Ｔｒｉａｎｇｌｅという、３角形ポリゴンのポインタを示す型の変数ｔｒｉを定義し、この変数ｔｒｉに配列（ｔｒｉｓ［］）のアドレスを渡す。すなわち、変数ｔｒｉは、各ポリゴンを示すことができる。この上で、配列（ｔｒｉｓ［］）の各要素を示すｔｒｉ．ｎｅｘｔがＮＵＬＬになるまで、すなわち、すべてのポリゴンを処理するまで、ｆｏｒ（）やｕｎｔｉｌ（）のようなループとして各ポリゴンと変数ｈに係るｘ−ｚ平面の高さでの交点計算を行う。
以下で、図４のフローチャートを参照して、このステップＳ１０３の交点計算処理の具体的な処理の流れについて更に詳しく説明する。
【００３９】
（ステップＳ１０３１）
まず、交点取得部３１０は、ポリゴン３次元座標取得処理を行う。言い換えれば、交点を計算する三角形ポリゴンの各頂点を取得する。
具体的には、例えば、上述の３次元の座標を示すｖｅｃ４ｆ型の変数であるｐ１、ｐ２、ｐ３に、ｔｒｉの各頂点の座標、ｔｒｉ．ｐｏｓ１、ｔｒｉ．ｐｏｓ２、ｔｒｉ．ｐｏｓ３をそれぞれ代入して記憶する。
【００４０】
（ステップＳ１０３２）
次に、交点取得部３１０は、等高線の高さ取得処理を行う。
この処理においては、等高線下端高さＤ１０３の値に等高線間隔Ｄ１０５の値×変数ｈを計算した値を足して、上述のｘ−ｚ平面の高さ、すなわち「等高線の高さ」を計算する。
具体例を挙げて説明すると、等高線の高さを示す変数（変数ｈｌｉｎｅ＿ｐｏｉｎｔ）を用意して、以下の式（１）を計算して、「等高線の高さ」を求める。
ｈｌｉｎｅ＿ｐｏｉｎｔ  ＝  ｈｌｉｎｅ＿ｍｉｎ  ＋  ｈｌｉｎｅ＿ｗｉｄｔｈ×ｈ  ……  式（１）
【００４１】
（ステップＳ１０３３）
次に、交点取得部３１０は、線分ｐ１、ｐ２にｘ−ｚ平面との交点があるかを判定する。
つまり、この判定では、頂点ｐ１とｐ２とを結ぶ線分に、等高線の高さに応じたｘ−ｚ平面に平行な面との交点があるかどうかを判定する。
具体的に記載すると、左手座標系におけるｙ＝ｈｌｉｎｅ＿ｐｏｉｎｔの面と、線分ｐ１、ｐ２との交点があるかを判定する。
【００４２】
（ステップＳ１０３４）
ステップＳ１０３３の判定がＹＥＳの場合、交点取得部３１０は、交点の座標を交点座標Ｄ１０２に追加する処理を行う。
具体例を挙げて説明すると、交点取得部３１０は、交点があった場合には、交点座標Ｄ１０２に（例えばｈｌｉｎｅ＿ｌｉｓｔ［変数ｈ］［頂点数ｎｕｍ］として）記憶する。そして、ここでは、さらに交点の数（本実施の形態では頂点数ｎｕｍの値）をインクリメントする。
【００４３】
（ステップＳ１０３５）
ステップＳ１０３３の判断がＮＯの場合、又はステップＳ１０３４の処理が行われた後、交点取得部３１０は、線分ｐ２、ｐ３にｘ−ｚ平面との交点があるかを判定する。
つまり、この判定では、頂点ｐ２とｐ３とを結ぶ線分に、等高線の高さに応じたｘ−ｚ平面に平行な面との交点があるかどうかを判定する。
具体的に記載すると、左手座標系におけるｙ＝ｈｌｉｎｅ＿ｐｏｉｎｔの面と、線分ｐ２、ｐ３との交点があるかを判定する。
【００４４】
（ステップＳ１０３６）
ステップＳ１０３５の判断がＹＥＳの場合、交点取得部３１０は、交点の座標を交点座標Ｄ１０２に追加する処理を行う。
具体的に記すと、この処理は、ステップＳ１０３４と同様に、交点取得部３１０が、交点があった場合に、交点座標Ｄ１０２に（例えば配列ｈｌｉｎｅ＿ｌｉｓｔ［変数ｈ］［頂点数ｎｕｍ］として）記憶する。そして、交点の数（ここでは頂点数ｎｕｍの値）をインクリメントする。
【００４５】
（ステップＳ１０３７）
ステップＳ１０３５の判断がＮＯの場合、または、ステップＳ１０３６の処理が行われた後、交点取得部３１０は、線分ｐ３、ｐ１にｘ−ｚ平面との交点があるかを判定する。
つまり、この判定では、頂点ｐ３とｐ１とを結ぶ線分に、等高線の高さに応じたｘ−ｚ平面に平行な面との交点があるかどうかを判定する。
具体的に記載すると、左手座標系におけるｙ＝ｈｌｉｎｅ＿ｐｏｉｎｔの面と、線分ｐ３、ｐ１との交点があるかを判定する。
【００４６】
（ステップＳ１０３８）
ステップＳ１０３７の判断がＹＥＳの場合、交点取得部３１０は、交点の座標をＤ１０２に追加する処理を行う。
具体的には、この処理もステップＳ１０３４と同様に、交点取得部３１０が、交点があった場合に交点座標Ｄ１０２に（例えばｈｌｉｎｅ＿ｌｉｓｔ［変数ｈ］［頂点数ｎｕｍ］として）記憶する。そして、交点の数（ここでは頂点数ｎｕｍの値）をインクリメントする。
【００４７】
（ステップＳ１０３９）
ステップＳ１０３７の判断がＮＯの場合、又はステップＳ１０３８の処理が行われた後、交点取得部３１０は、すべてのポリゴンを処理しているか判定する。
具体例を挙げて説明すると、配列（ｔｒｉｓ［］）に設定されている変数ｔｒｉ「．ｎｅｘｔ」がＮＵＬＬになっているか等について判定を行う。
ステップＳ１０３９の判断がＮｏの場合は、次のポリゴンについて、ループ内の処理を繰り返す。具体的には、配列（ｔｒｉｓ［］）に設定される変数ｔｒｉがｔｒｉ「．ｎｅｘｔ」として設定され、上述のステップＳ１０３１〜Ｓ１０３８の処理を行う。
逆にステップＳ１０３９の判断がＹｅｓの場合は、交点計算処理を終了する。
以上の交点計算処理により、交点取得部３１０は、変数ｈに係る所定の高さ毎に、等高線状の線ポリゴンの交点座標を記憶することができる。
【００４８】
図５を参照すると、このステップＳ１０３の状態で、交点座標Ｄ１０２の各交点（頂点）をコリジョンオブジェクト４５０と一緒に点ポリゴンのように描画した例である。
ここで、変数ｈが所定の値における交点座標Ｄ１０２の各交点を描画した各交点群を、交点１０００として示す。
交点１０００の頂点の状態では、点の数が少なく、このまま各点を結んで線を引くと、ギザギザした直線の集まりとして描画されることが推測できる。
【００４９】
（ステップＳ１０４）
ここでまた図３を参照して説明すると、高さポリゴン作成部１２５の交点ソート部３２０は、交点ソート・中点補完処理を行う。
この交点ソート・中点補完処理は、主に交点ソート処理と中点補完処理を含んでおり、上述の交点の座標から、より曲線に近い等高線状の頂点の集合を得ることができる。
以下で、図６のフローチャートと、図７Ａ〜図７Ｅの概念図を参照して、ステップ１０４の交点ソート・中点補完処理の具体的な処理の内容について具体例を挙げて説明する。なお、以下の説明において、図７Ａを参照し、変数ｈの値における交点座標Ｄ１０２に記憶されている交点の数が４つある場合について説明する。
【００５０】
（ステップＳ１０４１）
まず、交点ソート部３２０は、距離取得初期値設定処理を行う。
図７Ｂを参照し、具体例を挙げて説明すると、まず、交点ソート部３２０は、３次元空間の座標を示す上述のｖｅｃ４ｆ型の変数Ｘと変数ｓｔａｒｔ＿ｐｏｓを用意する。
交点ソート部３２０は、各交点との距離を計算するための座標を変数Ｘに代入する。すなわち、例えば、ゴルフゲームの場合は、仮想空間内のグリーンに設定されるカップの３次元空間の座標情報などを変数Ｘに代入する。
なお、変数Ｘには所定の座標（例えば仮想視点（ビューポイント）の位置）から一番遠い座標を入力し、変数ｓｔａｒｔ＿ｐｏｓに所定の座標を代入することも可能である。
【００５１】
その後、交点ソート部３２０は、変数Ｘの座標から一番距離が大きい（遠い）最遠点の交点を、変数ｈの値における交点座標Ｄ１０２から検索して、変数ｓｔａｒｔ＿ｐｏｓにその交点の座標を代入する。
図７Ｂの例においては、この最遠点の交点が、始点Ｓとなり、変数ｓｔａｒｔ＿ｐｏｓには、始点Ｓの座標が代入される。
【００５２】
（ステップＳ１０４２）
次に、交点ソート部３２０は、交点ソート処理を行う。
図７Ｃを参照すると、交点ソート部３２０は、例えば、変数ｈの値における交点座標Ｄ１０２の交点が、変数Ｘの座標を基準として遠い点から近い点にするようにソートを行う。
すなわち、ある座標から一番離れた頂点である交点を始点として、そこから一番近い交点を次の頂点とし、これらの交点を並べるようにソートする。この例では、交点ソート部３２０は、始点Ｓから、頂点Ｐ１、頂点Ｐ２、終点Ｇの順になるようにソートする。
【００５３】
（ステップＳ１０４３）
次に、交点ソート部３２０は、全ての交点を処理したか判定する。すなわち、変数ｈの値における交点座標Ｄ１０２の配列のすべての交点についてのソートを終えたかについて、判定を行う。
Ｙｅｓの場合、交点ソート部３２０は、処理をステップＳ１０４４に進める。
Ｎｏの場合、交点ソート部３２０は、処理をステップＳ１０４２に戻してソートを続ける。
【００５４】
図７Ｃの例においては、ソートを終えた時点で、交点ソート部３２０は、変数ｈの値における交点座標Ｄ１０２について、始点Ｓ、頂点Ｐ１、頂点Ｐ２、終点Ｇのような順番になるようにソートする。
【００５５】
なお、ここでは、説明を容易にするために、選択ソートのようなアルゴリズムを用いて交点をソートする例について示している。しかし、このソートに関しては、バブルソートやクイックソート等のソート手法をすべて用いることができる。
本発明の第１の実施の形態に係る描画方法では、コリジョンオブジェクト４５０を用いるので、交点が少ないため、選択ソートやバブルソートを用いても、処理時間は殆ど問題にならない。
【００５６】
また、上述の交点ソート・中点補完処理においては、所定の点からの距離を基にソートを行う例について示しているが、これに限られるものではない。
また、交点ソート処理については、コリジョンオブジェクト４５０からコリジョンオブジェクトＤ１０１を取得するときに、所定の座標からの距離でソートして、変数ｈの値における交点座標Ｄ１０２を選択する際に自動的に所定の座標を基準として、その所定の座標の近くから遠くの座標の順番、又は所定の座標の遠くから近くの座標の順番で取得するようにすることもできる。
また、交点ソート処理に代えて、変数ｈの値における交点座標Ｄ１０２の最短距離の交点同士を、ダイクストラ法のような手法を用いて接続することもできる。
また、交点ソート処理や上述のダイクストラ法の処理により、所定の距離以上離れた頂点があった場合には、変数ｈの値における交点座標Ｄ１０２を基にして、等高線状の線ポリゴンを分割することもできる。この分割は、各交点を結んだ線分の交差判定を行って、交差する線が出る箇所で分割することも可能である。これにより、例えば、ゴルフゲームの場合は、仮想空間に設定されるグリーンに隆起が２カ所以上あるような場合にも対応可能である。
また、ソートにより一番近い交点同士を結んでも、交点の数が多い場合には、間違った点を選択することもあり得る。このため、交点を結んだ線分の交差判定を行って、例えば、正しいと思われる交点を順にたどるといった所定のルールを用いて（ヒューリスティック） に処理することも可能である。
また、そもそも交点を判定するのではなく、コリジョンオブジェクト４５０と交差する線分を取得して、これらの線分の情報を備えたまま、線分同士の頂点を接続するようにすることも可能である。
【００５７】
（ステップＳ１０４４）
ステップＳ１０４３でＹＥＳと判定されたとき、又は、後述するＳ１０４５の判定でＮＯと判定されたとき、交点ソート部３２０は、中点補完処理を行う。
図７Ｄを参照して説明すると、この中点補完処理は、ソートした頂点を、平均をとってならす（均す）処理である。
すなわち、変数ｈにおける交点座標Ｄ１０２の配列に各交点の１つ前の交点の座標と足して２で割る中点を求めて、それぞれの配列に代入（更新）する。
【００５８】
（ステップＳ１０４５）
次に、交点ソート部３２０は、全ての交点を処理したか判定する。
具体的には、変数ｈの各値における交点座標Ｄ１０２（配列ｈｌｉｎｅ＿ｌｉｓｔ［変数ｈ］［］）のすべての交点についての中点に更新したかについて、判定を行う。
Ｙｅｓの場合、交点ソート部３２０は、交点ソート・中点補完処理を終了する。また、終点を、変数ｈにおける交点座標Ｄ１０２の配列に追加する。
Ｎｏの場合、交点ソート部３２０は、処理をステップＳ１０４４に戻して中点補完処理を続ける。
【００５９】
図７Ｅを参照すると、実際に変数ｈの値における交点座標Ｄ１０２について、中点補完処理を行った後の各頂点の様子を示している。変数ｈにおける交点座標Ｄ１０２の配列は、最終的に、始点Ｓ、中点になった頂点Ｐ１、中点になった頂点Ｐ２、中点Ｐ３、新たな終点Ｇのような状態で記憶される。
【００６０】
図８を参照して説明すると、中点補完処理を行った後に、交点座標Ｄ１０２の各頂点を図５と同様に、点ポリゴンのように描画した例である。また、変数ｈの値における交点座標Ｄ１０２の各交点を描画したものを、中点補完後の頂点１０１０として示す。
図８の中点補完後の頂点１０１０の状態では、図５の交点１０００と比べて、かなりなめらかな曲線に近づいており、また、中点を計算して新たな頂点として更新することで、各頂点間の距離のばらつきが抑えられるため、曲線にしやすくなるという効果が得られる。
【００６１】
（ステップＳ１０５）
ここで、また図３を参照して説明すると、色決定部３２５は、色決定処理を行う。
すなわち、この色決定処理においては、例えばゴルフゲームの場合、所定の頂点であるグリーン上のカップの座標と、等高線状の線ポリゴンの高さ（軸方向の距離）との差の値を用いて、等高線状の線ポリゴンの色を決める。
ここで図９（ａ）を参照して具体例を挙げて説明すると、ここでは、変数ｈの値における交点座標Ｄ１０２の各交点に設定するための色を計算する。つまり、色の計算については、等高線の高さ（等高線の高さを示す変数である変数ｈｌｉｎｅ＿ｐｏｉｎｔ）の値を用いて計算を行う。高さポリゴン作成部１２５は、この等高線の高さを示すｈｌｉｎｅ＿ｐｏｉｎｔと、上述の変数Ｘに入れたのと同様の所定の座標のｙ座標とを比較して、変数ｈの値における交点座標Ｄ１０２の各要素（各交点）に対する色を計算する。たとえば、ゴルフゲームの場合は、所定の座標をカップの座標（水準原点）として、この座標との高さの違いを、「ｃｍ」のような所定単位で所定の計算式から計算する。そして、カップの座標との差により、カップの座標と差がない場合は薄い色で表現し、高い場合は赤色を濃くして表現し、低い場合は青色を濃くして表現する。
なお、色の選択方法として、例えば、予め記憶部に上述の等高線の高さの値に対応したインデックス番号と、そのインデックス番号に対応した画像情報（Ｒ成分、Ｇ成分、Ｂ成分、α（透明度）成分）とを対応づける色情報テーブルを格納しておくとともに、その色情報テーブルを参照して、等高線状の線ポリゴンの色を選択して表現することもできる。また、上述の画像情報のＲＧＢ各成分及びα成分の代わりに色相、彩度、明度、輝度の値を成分として設定することもできる。
【００６２】
図９（ｂ）を参照すると、ゴルフゲームのグリーンに実際に等高線状の線ポリゴンを描画した例を示している。
この図９（ｂ）では、カップの近くの線が薄くなっており、グリーンの内側に描かれている等高線状の線ポリゴンが色が濃くなり、実際には赤く表示されており、高さが高くなっていることが容易に判断できる。
なお、等高線の高さはｘ−ｚ平面の高さには限られない。すなわち、軸方向の距離としては、任意の座標系の一次元の距離を用いることが可能である。また、等高線状の線ポリゴンの色としては、等高線の高さや仮想視点との距離を用いて、より単純に濃淡で表現することもできる。また、地面オブジェクト４００の色を参照して、これを高さにより所定の割合で反転したり、色成分を高さにより加算や減算する等の画像処理を行って、等高線状の線ポリゴンを描画することも可能である。
【００６３】
（ステップＳ１０６）
ふたたび図３を参照して説明すると、高さポリゴン作成部１２５の視点方向移動部３３０は、視点方向移動処理を行う。
この視点方向移動処理においては、等高線状の線ポリゴンが潜ってしまわないようにするために、仮想視点（ビューポイント）方向に、交点座標Ｄ１０２の各頂点の座標を移動する処理を行う。
以下で、図１０のフローチャートを参照して、ステップＳ１０６の視点方向移動処理の具体的な処理の流れについて説明する。
【００６４】
（ステップＳ１０６１）
まず、視点方向移動部３３０は、座標初期設定処理を行う。
つまり、視点方向移動部３３０は交点座標の各頂点の座標として、３つの座標を設定する。
具体例を挙げて説明すると、視点方向移動部３３０は、変数ｈの値における交点座標Ｄ１０２の各頂点の座標として、座標１、座標２、座標３として、上述のｖｅｃ４ｆ型の変数ｆｉｒｓｔ＿ｐｏｓ、ｓｅｃｏｎｄ＿ｐｏｓ、ｔｈｉｒｄ＿ｐｏｓを設定する。
そして、ループのカウンタ用の変数ｉを設定し、以下の、ループ内の処理を実行する。
【００６５】
（ステップＳ１０６２）
ここで、視点方向移動部３３０は、座標１、２、３設定処理を行う。
すなわち、この処理においては、視点方向移動部３３０は、座標１、座標２、座標３として設定した値のうち、３つ連続する座標の値を選択する処理を行う。
具体例を挙げて説明すると、視点方向移動部３３０は、この座標１、座標２、座標３として、変数ｆｉｒｓｔ＿ｐｏｓ、ｓｅｃｏｎｄ＿ｐｏｓ、ｔｈｉｒｄ＿ｐｏｓに、変数ｉに係る３つ連続する変数ｈの値における交点座標Ｄ１０２の要素のアドレス（番地）を選択して割り当てる。
【００６６】
（ステップＳ１０６３）
次に、視点方向移動部３３０は、座標１、２、３移動処理を行う。
この座標１、２、３移動処理においては、視点方向移動部３３０は、まずは、選択した３点の真ん中の頂点（上述の具体例では、変数ｓｅｃｏｎｄ＿ｐｏｓ）に合わせて３点を仮想視点、又はビュー座標系のビューポイント等であるカメラの座標の方向に所定の値（方向ベクトル座標）だけ移動させる。
この視点又はカメラの方向に移動させるための所定の値としては、コリジョンオブジェクト４５０又は地面オブジェクト４００のポリゴンの大きさの最大値、コリジョンオブジェクト４５０又は地面オブジェクト４００の視点方向の高さの差の最大値等を基に、等高線状の線ポリゴンが潜ってしまわないようにするための値を計算することができる。
【００６７】
（ステップＳ１０６４）
次に、視点方向移動部３３０は、すべての頂点を処理し終えたかについて判定する。
具体的には、ｆｏｒ（）やｕｎｔｉｌ（）ループにおいて、変数ｉが変数ｈにおける交点座標Ｄ１０２の頂点数ｎｕｍと同じか大きくなったについて、判定を行う。
Ｙｅｓの場合、視点方向移動部３３０は、視点方向移動処理を終了する。
Ｎｏの場合、視点方向移動部３３０は、変数ｉをインクリメントし、処理をステップＳ１０６２に戻してステップＳ１０６２〜ステップＳ１０６４のループの処理を続ける。
【００６８】
以上のような視点方向移動処理により、ステップＳ１０５で中点での更新をしたため、頂点が地面オブジェクト４００やコリジョンオブジェクト４５０に潜って描画されなくなることを防ぐことが可能になる。
また、３点の真ん中の頂点を基準として仮想視点の方向に移動するため、描画時の誤差が少なく、地面オブジェクト４００やコリジョンオブジェクト４５０から離れて浮き上がっているように見えることもなく、真実の等高線のようにぴったりと地面上に描画されているようなレンダリング結果を得ることができる。なお、視点方向移動処理は３点ごとに実行するものに限らず、２点以上の複数の頂点であれば、視点方向移動処理を実行することができる。また、必ずしも真ん中の頂点を基準としなくても、各頂点について仮想視点の方向に移動するような処理を行うことも可能である。
【００６９】
なお、この視点方向移動処理を行わない場合は、地面オブジェクト４００と物体オブジェクト４１０が分離して備えられているようなデータ構造の場合、描画順の変更により対応可能である。たとえば、（１）地面オブジェクト４００を描画、（２）等高線状の線ポリゴンを描画、（３）物体オブジェクト４１０を描画、というような手段も考えられる。
しかしながら、ポリゴンをｚバッファ等を用いて描画する近年のグラフィックプロセッサの描画方法においては、描画順を分けて描画を行うのは現実的ではなく、後述するように高さポリゴン作成部１２５を影の作成に用いた場合等にはｚバッファの誤差のせいで表示品質が著しく落ちる。
すなわち、本発明の第１の実施の形態に係る描画方法のように、視点方向移動処理を用いることで、複数のオブジェクトの描画順を考慮せず、ｚバッファの誤差も気にせずに、描画品質を保ったポリゴン上への輪郭線の描画が可能になるという顕著な効果が得られる。
また、このような表示品質は、特に画像表現の高品質さが求められるゲーム装置の分野では非常に有効である。
【００７０】
（ステップＳ１０７）
また図３に戻って説明すると、次に、曲線作成部３４０は、曲線作成処理を実行する。
ここで、図１１の概念図を参照して、曲線作成処理について、より具体的に説明する。
【００７１】
図１１のように、変数ｈの値における交点座標Ｄ１０２の各頂点として、頂点ａ、頂点ｂ、頂点ｃ、頂点ｄが記憶されているとする。
この上で、まず、頂点ａ、頂点ｂ、頂点ｃの３点に対して曲線にする曲線作成処理を行う例について説明する。
最初に、曲線作成部３４０は、頂点ａと頂点ｂの中点である頂点ｓの座標を計算する。
次に、曲線作成部３４０は、頂点ｂと頂点ｃの中点である頂点ｔの座標を計算する。
次に、曲線作成部３４０は、頂点ｓと頂点ｔの中点である頂点ｉの座標を計算する。
そして、次に、曲線作成部３４０は、頂点ａの座標を曲線描画のための新たな線ポリゴン用のリンクリストｐ［変数ｈ］［］に頂点ａ、頂点ｓ、頂点ｉの座標をそれぞれ代入してゆく。
【００７２】
この上で、曲線作成部３４０は、次の連続する３点を頂点ｉ、頂点ｃ、頂点ｄの３点に対して、上述の処理を繰り返すことができる。
このような処理により、通常のベジェ曲線の計算よりもより高速に、曲線の計算が可能になる。
【００７３】
なお、曲線作成処理を別のクラスやルーチンにて実行することもできる。この場合は、頂点ａ〜ｉを示す変数は、スコープが可視である、グローバル変数等を用いることができる。
また、この曲線描画処理については、計算スピードを厭わなければ、３点を用いて曲線に均してゆく手法以外にも、Ｂ−スプライン曲線や、ベジェ曲線の計算を行う等の処理を用いることも可能である。
【００７４】
（ステップＳ１０８）
ここで再び図３を参照して説明すると、次に、終点処理部３５０は、終点処理を行う。
この終点処理において、終点処理部３５０は、例えばゴルフゲームの場合、グリーンの山の頂上付近で等高線が環状（円状態）になる場合についての処理を行う。すなわち、上述の曲線作成処理では、端の点から連続する３点について近づける（平均する、丸める）処理を行っているために、端同士をつなげた部分の線ポリゴンの描画になめらかさが欠けるという問題に対応する。具体的に説明すると、線ポリゴン用の端の頂点（リンクリストｐ［変数ｈ］［０］）と、もう一方の端の頂点（線ポリゴン用のリンクリストｐ［変数ｈ］［曲線の頂点数］）をつなぐと、直線上に見えてしまうという問題の処理を行うものである。
ここでは、線ポリゴン用のもう一方の端の頂点（線ポリゴン用のリンクリストｐ［変数ｈ］［曲線の頂点数］）と、線ポリゴン用の端の頂点（線ポリゴン用のリンクリストｐ［変数ｈ］［０］）と、線ポリゴン用の端の頂点に隣接する頂点（線ポリゴン用のリンクリストｐ［変数ｈ］［１］）とを連続する３点として、曲線作成処理の３点を近づける処理を行うことで対処可能である。また、この３点だけではまだ直線に見える場合には、さらに周囲の頂点を用いて３点を近づける処理を行うことができる。
【００７５】
以上のように、高さポリゴン作成部１２５は、ステップＳ１０２〜Ｓ１０８を実行することで、等高線状の線ポリゴンを一本作成することが可能である。上述したように、このループを繰り返すことで、等高線の本数分だけ、等高線状の線ポリゴンを作成できる。
すべての等高線状の線ポリゴンを作成した後、高さポリゴン作成部１２５は、グラフィックプロセッサ１６０を用いて、グラフィックメモリ１７０上に、この等高線状の線ポリゴンを描画する。
これにより、本発明の第１の実施の形態に係る描画処理を終了する。
【００７６】
図１２を参照して説明すると、各頂点間を線分で結んだ曲線１０２０である、等高線状の線ポリゴンを描画した例を示す。
このように、図５の単にｘ−ｚ平面の交点を取得しただけの場合や、図８の単に中点で補完しただけの場合に比べて、非常になめらかな曲線を描画できることが分かる。
なお、ステップＳ１０４の中点補完処理と、ステップＳ１０７の曲線に均す「中点で更新する処理」を繰り返すことにより、さらに曲線に近い線ポリゴンを描画することが可能である。
【００７７】
以上のように構成することで、以下のような効果を得ることができる。
まず、ベジェ曲線、Ｂ−スプライン曲線、及び従来技術１を用いた描画方法においては、頂点を更新してそのまま曲線で補間するように構成されている。
このため、頂点を更新したときに元の頂点の位置情報とのずれが大きいまま曲線補間をするため、正確な描画ができないという問題があった。
これにより、特にベジェ曲線、Ｂ−スプライン曲線、及び従来技術１の描画方法を仮想３次元空間における画像処理方法として用いようとすると、更新後に頂点が他のポリゴンに埋もれてしまうという問題があった。このため、描画の精度やクォリティが落ちるという問題があった。
【００７８】
これに対して、本発明の第１の実施の形態に係る描画方法では、頂点間の中点をとって頂点を更新した後で、仮想視点又はカメラ方向に所定のベクトル座標（方向ベクトル座標）を頂点に加えてから曲線を補間する。
これにより、更新後の頂点が地面オブジェクト等に埋まってしまい描画できなくなったり、浮き上がりすぎて見えることを防止できる。
また、更新後の頂点をカメラ方向に向かせてから曲線を描画するので、複雑な処理なく精度良く曲線を描画できるという効果が得られる。
また、ポリゴンの交点の頂点をソートしてから、一筆書きのように描画を行うことで、等高線状の線ポリゴンを、容易な処理で作成可能であるという効果が得られる。このために、３次元空間の平面との交差の計算の後、内外判定等を行って、輪郭線を抽出するなどの複雑な処理を行う場合に比べて、演算コストを抑えることが可能になる。
このため、高度な描画能力をもつ、近年のグラフィックプロセッサで、細かいポリゴンの地面オブジェクト４００の上に、容易に等高線状の線ポリゴンを描画することができる。
加えて、上述の第１の実施の形態においては、コリジョンオブジェクト４５０をトライアングルストリップのように面を構成する情報もあるものとして説明した。しかし、実際には、本発明の第１の実施の形態に係る描画方法では、交点を求めるポリゴンの集合体であるオブジェクトについて、頂点によりどうポリゴンの面を構成するかという情報がない、頂点のみの集合を用いても、等高線状の線ポリゴンを描画できるという効果が得られる。
【００７９】
また、従来技術１では、ポリゴン描画のための精度が低いために、従来技術１を用いて等高線を描画して、単純にｙ座標を足したり引いたりして浮かせた場合には、地面オブジェクト４００から浮き上がって見えたり、ところどころ埋もれるという描画品質（クォリティ）の低下が起こるという問題があった。
これに対して、本発明の第１の実施の形態に係る描画方法は、中点を求めた後の頂点を、視点又はカメラ方向のベクトルを加算して、視点方向に移動してから曲線を描画するために、描画の破綻が非常に少ないという効果が得られる。
【００８０】
なお、上述の第１の実施の形態においては、高さポリゴン作成部１２５を等高線状の線ポリゴンを作成する例について説明したが、これに限られない。
本発明の第１の実施の形態の描画方法は、例えば、投影シャドウのように、ポリゴンと交点を求めて、その輪郭線を描画するような仮想３次元空間における画像処理方法にすべて応用可能である。投影シャドウを描画する場合は、影内部をトライアングルファン等のように分割して、暗く描画することで実現可能である。
また、本発明の第１の実施の形態の描画方法は、例えば、トゥーンシェーダのような写実的ではない輪郭線を強調したようなポリゴン描画においても用いることができる。たとえば、輪郭線にポリゴンの縁のギザギザが出ることを抑えることが可能である。
また、本発明の第１の実施の形態の描画方法は、ゲームに限られず、各種シミュレーション、医療画像から腫瘍の輪郭の推定、動画像の各フレームの差分から物体の形状を割り出すといった処理にも応用して用いることが可能である。
【００８１】
また、本発明の第１の実施の形態の描画方法での描画については、等高線状の線ポリゴンの描画について説明した。しかし、描画するポリゴンは、線ポリゴンには限られず、トライアングルストリップや柱状の厚みのある形状のポリゴンのオブジェクトであってもよい。
【００８２】
＜第２の実施の形態＞
次に、本発明の第２の実施の形態に係るゲーム装置１０を用いた描画処理について説明する。
本発明の第２の実施の形態に係る描画処理では、始点・終点に係る処理を更に加えることにより、例えば、ゴルフゲームの場合は、カップの近くで等高線が環状になる場合に、よりなめらかな等高線状の線ポリゴンを得ることができる。
【００８３】
〔本発明の第２の実施の形態におけるゲーム装置１０の制御構成〕
本発明の第２の実施の形態に係る描画処理では、高さポリゴン作成部１２５は、本発明の第１の実施の形態に係るゲーム装置１０の高さポリゴン作成部１２５の交点ソート部３２０、視点方向移動部３３０、終点処理部３５０について、さらなる処理を行わせることができる。
交点ソート部３２０は、図１３のステップＳ２０５の始点・終点移動処理を行い、ソート後の交点の始点と終点をより近づけることで、等高線状の線ポリゴンをなめらかにする。
視点方向移動部３３０は、図１３のステップＳ２０７の始点方向カメラ移動処理を行う。視点方向移動部３３０は、始点方向カメラ移動処理により、曲線のなめらかさに合わせた等高線状の線ポリゴンの視点方向への移動が可能になる。
終点処理部３５０は、後述するステップＳ２０９の始点・終点曲線化処理を行う。この始点・終点曲線化処理により、特に等高線状の線ポリゴンが環状になっている場合に、特に始点と終点とを結ぶ等高線状の線ポリゴンを、よりなめらかに描画することができる。
【００８４】
また、高さポリゴン作成部１２５のデータ構成としては、本発明の第１の実施の形態と同様のデータ構成を用いることができる。
以下で、図１３のフローチャートを参照して、本発明の第２の実施の形態に係る高さポリゴン作成部１２５の描画処理の流れについて詳しく説明する。
【００８５】
〔本発明の第２の実施の形態に係る描画処理〕
図１３を参照すると、ゲーム装置１０は、本発明の第２の実施の形態に係る描画処理であるステップＳ２０１〜Ｓ２０９の処理を実行する。
ここで、図３をもう一度参照すると、ステップＳ２０１はステップＳ１０１と、ステップＳ２０２はステップＳ１０２と、ステップＳ２０３はステップＳ１０３と、ステップＳ２０４はステップＳ１０４と、ステップＳ２０６はステップＳ１０５と、ステップＳ２０８はステップＳ１０７と同様な処理を行うことができる。
本発明の第２の実施の形態に係る描画処理においては、この上で、ステップＳ２０５、ステップＳ２０７、ステップＳ２０９の処理を行うことで、なめらかな等高線状の線ポリゴンを描画する。
以下で、ステップＳ２０５、ステップＳ２０７、ステップＳ２０９の各処理について詳しく説明する。
【００８６】
（ステップＳ２０５）
交点ソート部３２０は、ステップＳ２０５において、始点・終点移動処理を行う。
図１４Ａ〜図１４Ｂを参照して説明すると、交点ソート部３２０は、上述の図７Ｅの交点ソート・中点補完処理後の状態と同様に、始点Ｓ、頂点Ｐ１、Ｐ２、Ｐ３、終点Ｇのような状態になった場合に、最終的な処理として始点・終点移動処理を行う。
交点ソート部３２０は、まず、始点Ｓと終点Ｇが近いかどうかについて判定する。この近いかどうかについては、始点Ｓと終点Ｇの距離が所定の距離以下であった場合や、各頂点間の距離の平均距離の数倍といった値以下であるような条件を用いて判定を行う。
始点Ｓと終点Ｇが近くなかった場合は、交点ソート部３２０は処理を次のステップＳ２０６に進める。
始点Ｓと終点Ｇが近かった場合は、交点ソート部３２０は、以下で説明する実際の始点・終点移動処理を行う。
【００８７】
図１４Ａを参照すると、実際の始点・終点移動処理においては：
交点ソート部３２０は、まず、始点Ｓと終点Ｇの中点Ｔを計算する。
次に、交点ソート部３２０は、始点Ｓと中点Ｔとの中点Ｓ’を計算する。
次に、交点ソート部３２０は、終点Ｇと中点Ｔとの中点Ｇ’を計算する。
この上で、図１４Ｂを参照すると、
交点ソート部３２０は、始点Ｓの座標を、中点Ｓ'の座標に移動する。
また、交点ソート部３２０は、終点Ｇの座標を、中点Ｇ’の座標に移動する。
【００８８】
このように、始点Ｓと終点Ｇを移動して、ソート後の交点の始点と終点をより近づけることで、等高線状の線ポリゴンが環状である場合に、よりなめらかに描画することができる。
また、始点Ｓと終点Ｇについても座標を移動するために、それ以外の等高線状の線ポリゴンの部位についても、なめらかに描画することができる。
【００８９】
（ステップＳ２０７）
視点方向移動部３３０は、ステップＳ２０７において、視点方向カメラ移動処理を行う。
この視点方向カメラ移動処理においては、上述の第１の実施の形態におけるステップＳ１０６の視点方向移動処理と同様の処理に加えて、カメラ方向への移動量を設定して、視点方向への等高線状の線ポリゴンの移動を行う。
このカメラ方向への移動量としては、視点方向移動部３３０は、上述の中点で更新する処理の回数を考慮した上で移動量を設定することができる。
以下で、この視点方向カメラ移動処理について、より詳しく説明する。
【００９０】
視点方向移動部３３０は、まず、頂点ＡをカメラＣに移動させる例について説明する。カメラＣは、上述のビューポイント（仮想視点）のような座標である。以下において、具体例を挙げて説明する。
頂点Ａの座標を、例えば上述のｖｅｃ４ｆ型の変数Ａｐｏｓに代入する。また、カメラＣの座標を、例えば上述のｖｅｃ４ｆ型の変数Ｃｐｏｓに代入する。
この上で、カメラＣから頂点ＡへのベクトルＣＡを、同様に上述のｖｅｃ４ｆ型の変数ＣＡｖｅｃとして、このＣＡｖｅｃの値を以下の式（２）で求める。
ＣＡｖｅｃ  ＝  Ｃｐｏｓ  −  Ａｐｏｓ  ……  式（２）
【００９１】
ベクトルＣＡの単位ベクトルを上述のｖｅｃ４ｆ型の変数ＣＡｖｅｃ＿Ｅとし、このＣＡｖｅｃ＿Ｅの値を以下の式（３）で求める。
ＣＡｖｅｃ＿Ｅ  ＝  ＣＡｖｅｃ  ÷  ｜ＣＡｖｅｃ｜  ……  式（３）
【００９２】
ここで、視点方向移動部３３０は、カメラ方向への移動量を計算し、例えば上述のｖｅｃ４ｆ型の変数（例えば、変数ｔｒａｎｓｆｅｒ）に代入する。
このカメラ方向への移動量の値（方向ベクトル座標）としては、等高線状の線ポリゴンが浮き上がらないよう、また、他のポリゴンに埋没しないように微調整した値として、概ねベクトルの大きさが０．２５のような所定の値を設定することができる。
さらに、視点方向移動部３３０は、中点で更新する処理回数と３点で曲線にする回数に比例して、カメラ方向への移動量の値を大きくする。例えば、概ね１．５倍のような比率で、移動量の値を大きくすることができる。
また、コリジョンオブジェクト４５０と、地面オブジェクト４００のポリゴンのなめらかさの差、具体的にはポリゴン数の比率等を用いて計算することもできる。
【００９３】
次に、視点方向移動部３３０は、頂点Ａの移動後の座標の値をＡ’とすると、以下の式（４）を用いて、Ａ’の値を求める。
Ａ’  ＝  Ａｐｏｓ  ＋  （ＣＡｖｅｃ＿Ｅ  ×  ｔｒａｎｓｆｅｒ）  ……  式（４）
この上で、視点方向移動部３３０は、Ａ’の値を、変数Ａｐｏｓに代入する。
この処理を、頂点毎に繰り返して、視点方向移動部３３０は、視点方向カメラ移動処理を終了する。
【００９４】
この視点方向カメラ移動処理により、コリジョンオブジェクト４５０がより荒くても、等高線状の線ポリゴンが地面オブジェクト４００等に埋まったり上空に飛び出て見えるようにすることなく、確実に描画することができる。また、中点で更新する処理を複数回行って、地面オブジェクト４００と等高線状の線ポリゴンとの誤差が生じた場合でも、等高線状の線ポリゴンを地面オブジェクト４００に埋もれたり飛び出て見えることなく描画可能である。
すなわち、線のなめらかさに合わせた等高線状の線ポリゴンの視点方向への移動が可能になる。
【００９５】
（ステップＳ２０９）
終点処理部３５０は、ステップＳ２０９において、始点・終点曲線化処理を行う。
この始点・終点曲線化処理については、始点と終点が近く、始点と終点とを結ぶ場合に、よりなめらかに等高線状の線ポリゴンを描画する。
以下で、図１５のフローチャートと、図１６Ａ〜図１６Ｃを参照して、ステップＳ２０９の始点・終点曲線化処理についてより詳しく説明する。
【００９６】
（ステップＳ２０９１）
まず、終点処理部３５０は、始点と終点が近いかどうかについて判定する。この判定は、ステップＳ２０５の判定と同様に行う。すなわち、等高線状の線ポリゴンが環状になっているか否かの判定を行い、その結果に応じて、異なった処理に移行する。
つまり、上述の判定がＹｅｓの場合、等高線状の線ポリゴンが環状なので、終点処理部３５０は、処理をステップＳ２０９２に進める。逆に上述の判定がＮｏの場合、環状ではないので、終点処理部３５０は、処理をステップＳ２０９６に進める。
【００９７】
（ステップＳ２０９２）
終点処理部３５０は、等高線状の線ポリゴンが環状の場合は、まず、始点再移動処理を行う。
図１６Ａを参照して、上述の例のように始点Ｓ、頂点Ｐ１、頂点Ｐ２、頂点Ｐ３、終点Ｇがある場合について、始点再移動処理の計算を説明する。
終点処理部３５０は、まず、終点Ｇ、始点Ｓ、頂点Ｐ１を用いて、終点Ｇと始点Ｓとの中点を求め、始点Ｓと頂点Ｐ１との中点を求め、この２つの中点の中点Ｓ’を求める。
この上で、終点処理部３５０は、始点Ｓの座標を、中点Ｓ’の座標に移動する。
【００９８】
（ステップＳ２０９３）
次に、曲線作成部３４０は、上述の実施の形態１に係る図３のステップＳ１０７と同様に、曲線作成処理を行う。
図１６Ｂを参照して説明すると、実際には、曲線作成部３４０は、移動された始点Ｓから、終点Ｇの手前の頂点まで、曲線作成処理を行う。すなわち、図１６Ｂの中点Ｔと終点Ｇとは、線分で結ばない。
【００９９】
（ステップＳ２０９４）
次に、終点処理部３５０は、曲線端点・始点曲線化処理を行う。
図１６Ｃを参照して説明すると、終点処理部３５０は、中点Ｔ、終点Ｇ、始点Ｓの３つの頂点を用いて、曲線を作成する。
【０１００】
（ステップＳ２０９５）
次に、終点処理部３５０は、曲線端点・始点結合処理を行う。
ここでは、終点処理部３５０は、上述のステップＳ２０９４で作成された最後の頂点と、始点Ｓとを接続する。これにより、なめらかな環状に接続された等高線状の線ポリゴンを作成することができる。
以上により、始点・終点曲線化処理を終了する。
【０１０１】
（ステップＳ２０９６）
曲線作成部３４０は、始点Ｓと終点Ｇが近くない場合、すなわち等高線状の線ポリゴンが環状でない場合には、ステップＳ１０７と同様に、曲線作成処理を行う。
図１７を参照すると、上述のステップＳ２０９３とは異なり始点Ｓは移動されない状態で、曲線作成部３４０は、通常の曲線作成処理を行う。
【０１０２】
（ステップＳ２０９７）
次に、終点処理部３５０は、曲線端点・終点結合処理を行う。
すなわち、図１７を参照すると、上述のステップＳ２０９６で作成された最後の頂点と、終点Ｇとを接続する。
これにより、環がつながっていない、線状の等高線状の線ポリゴンが作成できる。
以上により、始点・終点曲線化処理を終了する。
【０１０３】
図１８を参照すると、本発明の第２の実施の形態に係る描画処理により描画した等高線状の線ポリゴンを示す。
環状になった等高線状の線ポリゴンについても、かなり円に近いようになめらかに描画されていることが分かる。
このように、本発明の第２の実施の形態に係る描画処理により、上述のように、例えばゴルフゲームの場合、カップの側等で等高線状の線ポリゴンが環状になっていても、破綻が少なく表示することができる。
【０１０４】
なお、本発明の第２の実施の形態に係る描画処理においても、コリジョンオブジェクト４５０のポリゴンが粗い場合には、中点での更新を繰り返すことで、より滑らかな等高線を描画することができる。すなわち、ステップＳ２０４の中点補完処理と〜ステップＳ２０９の始点・終点曲線化処理を繰り返して、なめらかな等高線状の線ポリゴンを描画することが可能である。
また、ステップＳ２０４の中点補完処理と、ステップＳ２０５の始点・終点移動処理とは、実行する順番を変えることもできる。
【０１０５】
なお、上記実施の形態の構成及び動作は例であって、本発明の趣旨を逸脱しない範囲で適宜変更して実行することができることは言うまでもない。
【図面の簡単な説明】
【０１０６】
【図１】本発明の第１の実施の形態に係るゲーム装置１０の制御構成を示すブロック図である。
【図２】本発明の第１の実施の形態に係るデータ構成を示す概念図である。
【図３】本発明の第１の実施の形態に係る描画方法の各処理を示すフローチャートである。
【図４】本発明の第１の実施の形態に係る交点計算処理の各処理を示すフローチャートである。
【図５】本発明の第１の実施の形態に係る交点を点ポリゴンとして描画した画面例である。
【図６】本発明の第１の実施の形態に係る交点ソート・中点補完処理の各処理を示すフローチャートである。
【図７Ａ】本発明の第１の実施の形態に係る変数ｈの値における交点座標Ｄ１０２の頂点の例である。
【図７Ｂ】本発明の第１の実施の形態に係る所定の座標から頂点までの距離を示す概念図である。
【図７Ｃ】本発明の第１の実施の形態に係る所定の座標から頂点までの距離による各頂点のソートを示す概念図である。
【図７Ｄ】本発明の第１の実施の形態に係る中点補完処理の概念図である。
【図７Ｅ】本発明の第１の実施の形態に係る中点補完処理を行った後の各頂点の様子を示す概念図である。
【図８】本発明の第１の実施の形態に係る中点補完処理後の頂点を点ポリゴンとして描画した画面例である。
【図９】本発明の第１の実施の形態に係る等高線状の線ポリゴンの色の計算方法を示す概念図である。
【図１０】本発明の第１の実施の形態に係る視点方向移動処理の各処理を示すフローチャートである。
【図１１】本発明の第１の実施の形態に係る曲線作成処理を説明する概念図である。
【図１２】本発明の第１の実施の形態に係る等高線状の線ポリゴンを描画した画面例である。
【図１３】本発明の第２の実施の形態に係る描画方法の各処理を示すフローチャートである。
【図１４Ａ】本発明の第２の実施の形態に係る始点・終点移動処理を説明する概念図である。
【図１４Ｂ】本発明の第２の実施の形態に係る始点・終点移動処理を行った後の各頂点の様子を示す概念図である。
【図１５】本発明の第２の実施の形態に係る始点・終点曲線化処理の各処理を示すフローチャートである。
【図１６Ａ】本発明の第２の実施の形態に係る始点・終点曲線化処理の始点再移動処理を説明する概念図である。
【図１６Ｂ】本発明の第２の実施の形態に係る始点再移動処理後の曲線作成処理を説明する概念図である。
【図１６Ｃ】本発明の第２の実施の形態に係る曲線端点・始点曲線化処理を説明する概念図である。
【図１７】本発明の第２の実施の形態に係る始点・終点曲線化処理の始点Ｓと終点Ｇが近くない場合の処理の概念図である。
【図１８】本発明の第２の実施の形態に係る等高線状の等高線状の線ポリゴンを描画した画面例である。
【符号の説明】
【０１０７】
１０  ゲーム装置
１００  ＣＰＵ
１１０  主記憶部
１２０  補助記憶部
１２５  高さポリゴン作成部
１３０  ブートＲＯＭ
１４０  ペリフェラルＩ／Ｆ
１５０  バスアービタ
１６０  グラフィックプロセッサ
１６２  ジオメトリ部
１６４  レンダリング部
１７０  グラフィックメモリ
１８０  オーディオプロセッサ
１９０  オーディオメモリ
２００  通信Ｉ／Ｆ
３１０  交点取得部
３２０  交点ソート部
３２５  色決定部
３３０  視点方向移動部
３４０  曲線作成部
３５０  終点処理部
４００  地面オブジェクト
４１０  物体オブジェクト
４５０  コリジョンオブジェクト
１０００  交点
１０１０  中点補完後の頂点
１０２０  曲線
【図１】
2010134872.tif 000003
【図２】
2010134872.tif 000004
【図３】
2010134872.tif 000005
【図４】
2010134872.tif 000006
【図５】
2010134872.tif 000007
【図６】
2010134872.tif 000008
【図７Ａ】
2010134872.tif 000009
【図７Ｂ】
2010134872.tif 000010
【図７Ｃ】
2010134872.tif 000011
【図７Ｄ】
2010134872.tif 000012
【図７Ｅ】
2010134872.tif 000013
【図８】
2010134872.tif 000014
【図９】
2010134872.tif 000015
【図１０】
2010134872.tif 000016
【図１１】
2010134872.tif 000017
【図１２】
2010134872.tif 000018
【図１３】
2010134872.tif 000019
【図１４Ａ】
2010134872.tif 000020
【図１４Ｂ】
2010134872.tif 000021
【図１５】
2010134872.tif 000022
【図１６Ａ】
2010134872.tif 000023
【図１６Ｂ】
2010134872.tif 000024
【図１６Ｃ】
2010134872.tif 000025
【図１７】
2010134872.tif 000026
【図１８】
2010134872.tif 000027