(57)【特許請求の範囲】
【請求項１】
複数の多角形で構成される所望の立体形状を表示するための画像データを出力する画像処理装置であって、
空間上の任意の点を重心とし、各面が複数の多角形に分割された正多面体を規定し、当該重心から当該複数の多角形の各頂点に向かう方向を示すベクトルデータおよび当該重心と前記所望の立体形状の複数の多角形の各頂点との距離を設定するための距離データを記憶する記憶部、
前記記憶部からベクトルデータおよび距離データを読み出す読出部、および
前記重心から、前記読出部によって読み出された前記ベクトルデータに基づく方向で、前記距離データに基づく距離にある点を、前記所望の立体形状の複数の多角形の各頂点として、前記所望の立体形状を画像表示するための画像データを出力する画像データ出力部を備える、画像処理装置。
【請求項２】
前記正多面体の各面を分割している複数の多角形は、それぞれ大きさおよび形状が同じであることを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
前記正多面体が、正八面体であることを特徴とする、請求項１または２に記載の画像処理装置。
【請求項４】
他の物体の前記重心からの距離と、前記所望の立体形状上の接触処理対象となる多角形の前記重心からの距離とに基づいて、当該所望の立体形状と当該他の物体との接触判定を行う接触判定部をさらに備える、請求項１〜３のいずれかに記載の画像処理装置。
【請求項５】
複数の多角形で構成される所望の立体形状を表示するための画像データを出力するために、空間上の任意の点を重心とし、各面が複数の多角形に分割された正多面体を規定し、重心から複数の多角形の各頂点に向かう方向を示すベクトルデータおよび重心と所望の立体形状の複数の多角形の各頂点との距離を設定するための距離データを記憶する記憶部からデータ読み出し可能なコンピュータ装置によって実行されるプログラムであって、
前記記憶部から前記ベクトルデータおよび前記距離データを読み出すステップ、および
前記重心から、読み出された前記ベクトルデータに基づく方向で、前記距離データに基づく距離にある点を、前記所望の立体形状の複数の多角形の各頂点として、前記所望の立体形状を画像表示するための画像データを出力するステップを含む、プログラム。
【請求項６】
前記正多面体の各面を分割している複数の多角形は、それぞれ大きさおよび形状が同じであることを特徴とする、請求項５に記載のプログラム。
【請求項７】
前記正多面体が、正八面体であることを特徴とする、請求項５または６に記載のプログラム。
【請求項８】
他の物体の前記重心からの距離と、前記所望の立体形状上の接触処理対象となる多角形の前記重心からの距離とに基づいて、当該所望の立体形状と当該他の物体との接触判定を行うステップをさらに含む、請求項５〜７のいずれかに記載のプログラム。
【請求項９】
前記接触判定を行うステップは、
前記他の物体の空間座標値の符号に基づいて、接触処理対象となる多角形が含まれる前記正多面体の面領域を選択するステップ、
前記距離データから得られる平面方程式を用いて、選択された前記面領域の中から前記接触処理対象となる多角形を特定するステップ、および
前記特定された多角形の前記重心からの距離と、前記他の物体の前記重心からの距離とを比較し、当該他の物体と前記所望の立体形状との接触を判断するステップからなる、請求項８に記載のプログラム。
【請求項１０】
コンピュータ装置によって実行され、複数の多角形で構成される所望の立体形状を表示するためのプログラムおよびデータを記録する記録媒体であって、
空間上の任意の点を重心とし、各面が複数の多角形に分割された正多面体を規定し、重心から当該複数の多角形の各頂点に向かう方向を示すベクトルデータ、
前記重心と前記所望の立体形状の複数の多角形の各頂点との距離を設定するための距離データ、
前記記憶部から前記ベクトルデータおよび前記距離データを読み出すためのプログラム、および
前記重心から、読み出された前記ベクトルデータに基づく方向で、前記距離データに基づく距離にある点を、前記所望の立体形状の複数の多角形の各頂点として、前記所望の立体形状を画像表示するための画像データを出力するためのプログラムを記録する、記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理装置および立体形状表示プログラムに関し、より特定的には、特徴的なデータ構造を用いて立体形状を表示する画像処理装置、および当該装置で実行されるプログラムに関する。
【０００２】
【従来の技術】
周知のように、グラフィック分野においては、物体の移動や回転等の様々な表現が容易に可能になってきている。その中でも、ゲームの分野においては、キャラクタがゲーム実行のために移動可能な領域（以下、ゲームフィールドという）を、自由に移動できる表現が用いられてきている。
一般に、このゲームフィールドは、二次元平面で表され、平面上に形成される突起物等の物体は、平面座標の属性データとして高さ情報が与えられることによって表示される。キャラクタがゲームフィールドを移動する場合、移動先の平面座標の属性データを参照してキャラクタの高さ位置を制御することで、キャラクタが物体の表面に沿って移動できるようにしている。
【０００３】
【発明が解決しようとする課題】
ところで近年、ゲームフィールドを、例えば地球のような閉曲面の立体で表示して、キャラクタがこの立体表面上を縦横無尽に移動できるように表現することが望まれている。すなわち、ある地点から真っ直ぐに進み続けると、同一地点に再び戻ってくるようなゲームフィールド表現を可能にすることである。
しかしながら、上述した従来の画像処理技術では、ゲームフィールドを二次元平面で表示するため、三次元の立体を直接的に表示することができない。なお、簡単な立体（六面体等）については、複数の二次元平面を繋ぎ合わせて擬似的に表示する方法も考えられるが、この方法の場合、キャラクタが移動するたびに全ての二次元平面の各データを対象に処理しなくてはならない。このため、結果を得るまでの処理時間が増大することに加え、処理時間にばらつきが生じるので、この方法は現実的ではない。
【０００４】
それ故に、本発明の目的は、特徴的なデータ構造を用いて複雑な三次元の立体（ゲームフィールド、キャラクタ（敵キャラクタや建物等））を表示できると共に、キャラクタ等の特定点と立体面との位置関係を容易に把握することが可能な画像処理装置および当該装置で実行される立体形状表示プログラムを提供することである。
【０００５】
【課題を解決するための手段および発明の効果】
第１の発明は、複数の多角形で構成される所望の立体形状を表示するための画像データを出力する画像処理装置であって、
空間上の任意の点を重心とし、各面が複数の多角形に分割された正多面体を規定し、当該重心から当該複数の多角形の各頂点に向かう方向を示すベクトルデータおよび当該重心と所望の立体形状の複数の多角形の各頂点との距離を設定するための距離データを記憶する記憶部、
記憶部からベクトルデータおよび距離データを読み出す読出部、および
重心から、読出部によって読み出されたベクトルデータに基づく方向で、距離データに基づく距離にある点を、所望の立体形状の複数の多角形の各頂点として、所望の立体形状を画像表示するための画像データを出力する画像データ出力部を備える。
【０００６】
上記のように、第１の発明によれば、正多面体の複数の多角形の頂点毎にベクトルデータおよび距離データを持たせ、その距離データを任意に変更させることで、様々な立体形状を簡単に表示することができる。
【０００７】
第２の発明は、第１の発明に従属する発明であって、
正多面体の各面を分割している複数の多角形は、それぞれ大きさおよび形状が同じであることを特徴とする。
【０００８】
この第２の発明のように、複数の多角形の大きさおよび形状を全て同じにすることで、データ管理が容易になる。
【０００９】
第３の発明は、第１および第２の発明に従属する発明であって、
正多面体が、正八面体であることを特徴とする
【００１０】
この第３の発明のように、正多面体を正八面体にすれば、正多面体を展開させたときに正方形を形成することができるので、データ管理が容易になる。
【００１１】
第４の発明は、第１〜第３の発明に従属する発明であって、
他の物体の重心からの距離と、所望の立体形状上の接触処理対象となる多角形の重心からの距離とに基づいて、当該所望の立体形状と当該他の物体との接触判定を行う接触判定部をさらに備える。
【００１２】
上記のように、第４の発明によれば、どんな複雑な立体形状であっても、特定の計算によってある空間座標値から処理対象となる多角形のデータを得ることができる。従って、ある空間座標に存在する物体と処理対象となる多角形との接触判定を容易に行うことが可能となる。
【００１３】
第５の発明は、複数の多角形で構成される所望の立体形状を表示するための画像データを出力するために、空間上の任意の点を重心とし、各面が複数の多角形に分割された正多面体を規定し、重心から複数の多角形の各頂点に向かう方向を示すベクトルデータおよび重心と所望の立体形状の複数の多角形の各頂点との距離を設定するための距離データを記憶する記憶部からデータ読み出し可能なコンピュータ装置によって実行されるプログラムであって、
記憶部からベクトルデータおよび距離データを読み出すステップ、および
重心から、読み出されたベクトルデータに基づく方向で、距離データに基づく距離にある点を、所望の立体形状の複数の多角形の各頂点として、所望の立体形状を画像表示するための画像データを出力するステップを含む。
【００１４】
上記のように、第５の発明によれば、正多面体の複数の多角形の頂点毎にベクトルデータおよび距離データを持たせ、その距離データを任意に変更させることで、様々な立体形状を簡単に表示することができる。
【００１５】
第６の発明は、第５の発明に従属する発明であって、
正多面体の各面を分割している複数の多角形は、それぞれ大きさおよび形状が同じであることを特徴とする。
【００１６】
この第６の発明のように、複数の多角形の大きさおよび形状を全て同じにすることで、データ管理が容易になる。
【００１７】
第７の発明は、第５および第６の発明に従属する発明であって、
正多面体が、正八面体であることを特徴とする。
【００１８】
この第７の発明のように、正多面体を正八面体にすれば、正多面体を展開させたときに正方形を形成することができるので、データ管理が容易になる。
【００１９】
第８の発明は、第５〜第７の発明に従属する発明であって、
他の物体の重心からの距離と、所望の立体形状上の接触処理対象となる多角形の重心からの距離とに基づいて、当該所望の立体形状と当該他の物体との接触判定を行うステップをさらに含む。
【００２０】
第９の発明は、第８の発明に従属する発明であって、
接触判定を行うステップは、
他の物体の空間座標値の符号に基づいて、接触処理対象となる多角形が含まれる正多面体の面領域を選択するステップ、
距離データから得られる平面方程式を用いて、選択された面領域の中から接触処理対象となる多角形を特定するステップ、および
特定された多角形の重心からの距離と、他の物体の重心からの距離とを比較し、当該他の物体と所望の立体形状との接触を判断するステップからなる。
【００２１】
上記のように、第８および第９の発明によれば、どんな複雑な立体形状であっても、特定の計算によってある空間座標値から処理対象となる多角形のデータを得ることができる。従って、ある空間座標に存在する物体と処理対象となる多角形との接触判定を容易に行うことが可能となる。これにより、キャラクタが立体表面を連続して移動する等の場合であっても、高速に安定した処理を行うことが可能となる。また、複雑な形状との接触判定を行うソフトウエアの開発が容易に実現できる。
【００２２】
第１０の発明は、コンピュータ装置によって実行され、複数の多角形で構成される所望の立体形状を表示するためのプログラムおよびデータを記録する記録媒体であって、
空間上の任意の点を重心とし、各面が複数の多角形に分割された正多面体を規定し、重心から当該複数の多角形の各頂点に向かう方向を示すベクトルデータ、
重心と所望の立体形状の複数の多角形の各頂点との距離を設定するための距離データ、
記憶部からベクトルデータおよび距離データを読み出すためのプログラム、および
重心から、読み出されたベクトルデータに基づく方向で、距離データに基づく距離にある点を、所望の立体形状の複数の多角形の各頂点として、所望の立体形状を画像表示するための画像データを出力するためのプログラムを記録する。
【００２３】
【発明の実施の形態】
本発明が提供する画像処理装置は、ポリゴンによる画像表示を必要とするグラフィックシステムやゲーム機器等に用いられ、それらを構成するＣＰＵやメモリ等と協働して特徴的な処理を行うことで実現される。以下、本発明が提供する画像処理装置および当該装置で実行される立体形状表示プログラムを、図１〜図１４を参照して説明する。
【００２４】
（本発明を実現させるためのシステム環境）
図１に、本発明の立体形状表示プログラムを実行する画像処理装置を含むビデオゲームシステムの構成例を示す。図１において、ビデオゲームシステムは、メインプロセッサ４１、コプロセッサ４２、メモリ４３およびドライブユニット４４を備えるメインユニットと、ゲームコントローラ４６と、表示部４５と、ゲームディスク４７とで構成される。
【００２５】
コプロセッサ４２は、バス制御を行うためのバス制御回路と、ポリゴンの座標変換や陰影処理等を行うための信号プロセッサと、ポリゴンデータを表示すべき画像にラスタライズしかつフレームメモリに記憶可能なデータ形式（ドットデータ）に変換するための描画プロセッサとを含む（いずれも図示せず）。コプロセッサ４２には、ゲームディスク４７を駆動させるドライブユニット４４とメモリ４３とが接続される。また、コプロセッサ４２には、メインプロセッサ４１によって処理された音声信号および映像信号をそれぞれ出力するためのデジタル／アナログ変換器（図示せず）を介して、表示部４５が接続される。また、コプロセッサ４２には、ゲームコントローラ４６が接続される。
バス制御回路は、バスを介してメインプロセッサ４１からパラレル信号で与えられたコマンドをシリアル信号に変換して、ゲームコントローラ４６に供給する。また、バス制御回路は、ゲームコントローラ４６からシリアル信号で与えられたコマンドをパラレル信号に変換して、メインプロセッサ４１へ出力する。ゲームコントローラ４６から入力される操作状態を示すデータは、メインプロセッサ４１によって処理されたり、メモリ４３に一時記憶される等の処理が行われる。ゲームディスク４７に格納されているプログラムおよびメモリ４３に格納されているプログラムは、ゲームコントローラ４６から入力される操作に応じて、メインプロセッサ４１およびコプロセッサ４２で実行処理される。実行された結果は、コプロセッサ４２によって表示部４５の画面上に表示される。
【００２６】
図１において、本発明の立体形状表示プログラムは、メモリ４３およびゲームディスク４７に格納され、コプロセッサ４２内で実行される。メモリ４３には、図２のメモリマップで示されるプログラムおよびデータが格納される。また、ゲームディスク４７は、ＤＶＤ等の記録媒体であって、図３のメモリマップで示されるプログラムおよびデータが格納される。
【００２７】
メモリ４３において、プログラム領域には、ビデオゲームメインユニットを動作させるための基本的なシステムプログラムが格納されている。正八面体データ記憶領域には、後述する基本立体形状である正八面体のデータが格納される。計算用バッファは、各種計算に用いられるバッファである。ポリゴンデータ領域には、１枚のフレーム画像を構成するために必要なポリゴンデータの情報が格納される。フレームバッファには、１フレームの画像が格納される。
ゲームディスク４７において、メインプログラム領域には、ゲームを動作させる基本的なプログラムが格納されている。正八面体処理プログラム領域には、後述する正八面体を基本立体形状とする各処理を実行させるためのプログラムが格納されている。その他のプログラム領域には、メインプログラム以外のプログラムが格納されている。画像データ領域には、正八面体のデータや、ゲームのグラフィック表示に必要なポリゴンおよびテクスチャ等に関する様々なデータが格納されている。音データ領域には、ゲームの音表現に関する様々なデータが格納されている。
【００２８】
（格納される立体形状データの構造）
次に、図４〜図７を用いて、本発明の一実施形態に係る立体形状表示プログラムで用いられるデータ構造を説明する。
【００２９】
本発明では、三次元空間の任意の点を原点とする特定の座標系において、重心Ｇを原点とする正八面体を、様々な立体形状を表示するための基本立体形状として用いる（図４（ａ））。この特定の座標系は、原点（重心Ｇ）から正八面体の各頂点に向かって放射される放射線（原点から各頂点方向を示すベクトル）が座標軸として設定されており、この各々の座標軸は、その軸上にある正八面体の頂点の移動にそれぞれ用いられる。また、この正八面体の８つの平面は、それぞれ予め複数の三角形の領域に細分化されている。正八面体では、細分化される三角形が正三角形となる。この三角形の各頂点も、原点（重心Ｇ）から放射されるそれぞれの放射線（座標軸）上に位置するように設定されている。なお、図４の例では、１つの平面の各辺をそれぞれ４等分する１６個の三角形に分割しているが、他の数に分割してもかまわない。
なお、特定の座標系の原点がゲームフィールド（直交座標系）の原点と異なる場合、特定の座標系の原点をゲームフィールドの原点から相対的に判断する必要がある。
【００３０】
正八面体の各平面を分割している三角形には、それぞれ固有の識別番号が設定される。この識別番号は、次のようにして設定される。
まず、正八面体のＹ座標が負値である４つの平面を正値側へそれぞれ展開し（図４（ｂ）の実線矢印）、正八面体の８つの平面を上方向（同図の白抜き矢印方向）から見た二次元平面（図５（ａ））で表す。そして、この二次元平面で表された各三角形（直角二等辺三角形となる）に対して、図５（ｂ）のように左上から右下に向かって順番に識別番号（０〜１２７）を与える。この識別番号は、メモリ等の記憶装置内のアドレスを特定できる情報である。この二次元平面では、縦横の線で囲まれるマス目がＸＺ座標の値によって区切られ、マス目内の斜線がＹ座標の値によって区切られていることが分かる。一方、メモリ内には、予め識別番号毎にデータ格納領域が確保されており（図６（ａ））、そこには原点（重心Ｇ）から三角形の各頂点までの距離ｄ（図６（ｂ））、三角形の平面方程式および表面の模様等のデータが格納されている。なお、三角形の平面方程式は、距離ｄから求めることも可能である。距離ｄから三角形の平面方程式を求めるようにすれば、格納するデータ量が少なくて済み、距離ｄの大きさを自在に変化させる場合に有利となる。
これにより、正八面体を構成する各三角形に関するメモリ内のデータを、識別番号を介して参照することが可能となる。
【００３１】
このように、本発明では、基本となる正八面体を構成する三角形毎に、その三角形を表示するためのデータがそれぞれ格納されているので、このデータを任意に変更することで様々な形状の立体を簡単に表示することができる。すなわち、本発明では、平面の各頂点が重心からの距離ｄで与えられる特定の座標系を用いて、立体形状を表示している。このため、正八面体を構成する三角形の各頂点を、座標軸上を距離ｄに従ってそれぞれ移動させるだけで、正八面体を簡単に変形することができるので、様々な立体表示が容易に可能になるのである。例えば、原点から全ての三角形の各頂点までの距離を同じにすれば、球体に近い立体を表示することができる（図７）。
【００３２】
（立体形状表示プログラムの実行手順）
次に、図８を参照して、上述したデータ構造を用いた立体形状表示プログラムが、図１に示すビデオゲームシステム上でどのように実行され、作成する立体（作成立体）がディスプレイの画面に表示されるのかを説明する。
【００３３】
始めに、電源投入時に動作するプログラムによって初期設定が行われる（ステップＳ１１）。この初期設定では、ゲームディスク４７がセットされているか否かやゲームコントローラ４６が接続されているか否か等が検出される。初期設定が完了すると、ゲームディスク４７からメモリ４３へ必要なデータが転送される（ステップＳ１２）。次に、メインプロセッサ４１が、メモリ４３のプログラム領域に記憶されている立体作成プログラムの実行を開始する（ステップＳ１３）。続いて、メインプロセッサ４１が、メモリ４３の正八面体データ記憶領域から、基本立体の重心座標、基本三角形の各頂点座標および距離データを読み出し（ステップＳ１４）、これらの座標およびデータから作成立体の各頂点座標を計算する（ステップＳ１５）。そして、メインプロセッサ４１が、作成立体の各頂点座標を、メモリ４３のポリゴンデータ領域に転送する（ステップＳ１６）。
この後、ゲームシステムでは、作成立体以外のその他のキャラクタの表示処理や（ステップＳ１７）、後述する作成立体とその他のキャラクタとの接触判定処理や（ステップＳ１８）、キャラクタの移動や攻撃処理等のその他のゲームに関する処理が（ステップＳ１９）、必要に応じて行われる。
次に、コプロセッサ４２が、メモリ４３に記憶された各頂点座標に基づいてポリゴンを作成し、そのポリゴンにテクスチャーを貼り付けることにより表示部４５に表示するための画像データを作成し、その画像データをメモリ４３のフレームバッファに記憶させる（ステップＳ２０）。最後に、コプロセッサ４２が、フレームバッファの画像データに基づいて、表示部４５に画像信号を出力する（ステップＳ２１）。上記ステップＳ１３〜Ｓ２１の処理は、ゲームが終了するまで繰り返して行われる（ステップＳ２２）。
【００３４】
（任意の点と立体形状との位置関係判断）
次に、図９〜図１４を用いて、上述した立体形状データで表示される立体Ｍと空間のある任意の点Ｐ（ｐｘ，ｐｙ，ｐｚ）との、位置関係を判断する手法を説明する。この立体Ｍと点Ｐの関係としては、例えば、立体Ｍ＝地面，点Ｐ＝キャラクタの足の裏、立体Ｍ＝ビル，点Ｐ＝キャラクタのお腹、立体Ｍ＝サーカスのオートバイがその中を走行する球体，点Ｐ＝オートバイ、等が考えられる。
【００３５】
上述した立体Ｍ平面上の細分化された三角形の内、空間の点Ｐと位置関係を判断すべき三角形は、点Ｐを原点に向かって正八面体上に投影した点Ｑの位置から特定される（図９）。そして、その特定された三角形の現在の位置データから、立体Ｍ表面の平面方程式を求めることができる。そこで、本発明では、以下のように位置関係の判断を行う。
【００３６】
最初に、基本立体形状である正八面体の８つの平面のどの平面において、点Ｐとの位置関係判断処理を行うべきかを決定する。
この決定は、次のようにして行われる。まず、正八面体の８つの平面には、図１０に示すようにエリア番号（０〜７）がそれぞれ設定される。図１０の例では、Ｘ座標値の正負でエリア番号の値が１つ、Ｙ座標値の正負でエリア番号の値が２つ、およびＺ座標値の正負でエリア番号の値が４つ変化するルールで各エリア番号が付されている。従って、図１１に示す判定フローを実行し、点ＰのＸＹＺ座標値の各符号を用いて処理対象平面のエリア番号ａｒを決定する。例えば（ｐｘ，ｐｙ，ｐｚ）＝（１０，１５，−８）のようにＺ値だけが負である点Ｐの場合には、まずｐｘ＜０を満たさないので（ステップＳ７１，Ｎｏ）ステップＳ７２が実行されてａｒ＝１となり、次にｐｙ＜０を満たさないので（ステップＳ７４，Ｎｏ）ステップＳ７５が実行されてａｒ＝３（＝１＋２）となり、最後にｐｚ＜０を満たすので（ステップＳ７７，Ｙｅｓ）ステップＳ７９が実行されて、エリア番号ａｒ＝３が決定される。なお、この判定フローと同時に、点Ｐ（ｐｘ，ｐｙ，ｐｚ）の絶対値（ａｘ，ａｙ，ａｚ）が求められる。
【００３７】
次に、この決定されたエリア番号ａｒに従って、処理対象平面のデータ格納メモリ先頭位置ｍｓ（エリア内でＹ軸に接する三角形の識別番号）、点ＱのＸ座標変化に対するメモリ上での位置変化割合ｖｘ（エリア内で先頭位置ｍｓのマス目がＸ軸方向に１つ移動したときの識別番号の変化量）、点ＱのＺ座標変化に対するメモリ上での位置変化割合ｖｚ（エリア内で先頭位置ｍｓのマス目がＺ軸方向に１つ移動したときの識別番号の変化量）、およびＹ座標によるマス目内の三角形選択ベクトルｖｙ（マス目内の三角形を移動したときの識別番号の変化量）が決定される。これらの値は、設定された識別番号およびエリア番号ａｒに基づいて定義される対応表を参照して決定される。
例えば、図５（ｂ）および図１０に示した例の場合には、図１２の対応表が定義されることとなる。図１２のエリア番号３で説明すると、メモリ先頭位置ｍｓは、Ｙ軸に接する三角形の識別番号「５６」となる。位置変化割合ｖｘは、マス目をＸ軸の右方向（プラス方向）に１つ移動したとき変化量「２（＝５８−５６）」となる。位置変化割合ｖｚは、マス目をＺ軸の上方向（マイナス方向）に１つ移動したとき変化量「−１６（＝４０−５６）」となる。三角形選択ベクトルｖｙは、マス目内の三角形を移動する変化量「１（＝５７−５６）」となる。なお、この対応表の内、エリア番号０，１，４および５関する値は、図５（ａ）のように二次元平面の展開した際に、Ｘ軸およびＺ軸の向きが入れ替わっているため、位置変化割合がｖｘとｖｚとで逆になっている。また、後述する計算処理では座標の絶対値が使用されるため、図１２に対応表の各符号は、求められる点Ｑの座標値が絶対値であることを前提に設定されている。
【００３８】
次に、点Ｑの座標（ｑｘ，ｑｙ，ｑｚ）を求める。
点Ｑの座標は、点Ｐと原点とを結ぶ直線と、正八面体の処理対象平面との、交点の方程式を解くことで求めることができる。なお、点Ｐの座標値は、その符号によって対象となる平面（エリア番号ａｒ）が決定されているので、下記の計算には絶対値（ａｘ，ａｙ，ａｚ）を用いればよい。従って、点Ｑの座標は、上記直線と処理対象平面との交点座標の絶対値で与えられることとなる。また、結果としてマス目単位での値を必要とするので、小数点以下は切り捨てる。この処理をフローで表すと、図１３のようになる。なお、変数ｎは、平面の各辺を等分する数であり、この例では「４」となる。
例えば、絶対値（ａｘ，ａｙ，ａｚ）＝（１０，２０，１５）である場合、
ｆ＝４／（１０＋２０＋１５）＝４／４５
となる。従って、点Ｑの各座標値は、
ｑｘ＝ｒｄ［ｆ＊１０］＝ｒｄ［０．８８…］＝０
ｑｙ＝ｒｄ［ｆ＊２０］＝ｒｄ［１．７７…］＝１
ｑｚ＝ｒｄ［ｆ＊１５］＝ｒｄ［１．３３…］＝１
となる。なお、ｒｄ［Ｘ］は、Ｘの小数点以下を切り捨てる関数である。
【００３９】
最後に、求められたメモリ先頭位置ｍｓ、Ｘ座標位置変化割合ｖｘ、Ｚ座標位置変化割合ｖｚ、三角形選択ベクトルｖｙ、および点Ｑの座標から、点Ｐが投影される三角形の識別番号、すなわち三角形のデータが格納されたメモリ位置ｍｍを次のように計算する。
図１４を参照して、まず、点ＱのＸＺ座標にＸ座標位置変化割合ｖｘおよびＺ座標位置変化割合ｖｚをそれぞれ掛けた値を、メモリ先頭位置ｍｓに足し合わせることで、マス目単位での目的のメモリ位置が求められる（ステップＳ１０１）。そして、所定の条件に従って（ステップＳ１０２）、マス目内のどちらの三角形が該当するかが選択されて、メモリ位置ｍｍが決定される（ステップＳ１０３）。
例えば、上述した例の変数を全て適応させると、
ｍｍ＝５６＋０＊２＋１＊（−１６）＝４０
ｑｘ＋ｑｙ＋ｑｚ≠ｎ−１
ｍｍ＝４０＋１＝４１
となり、メモリ位置ｍｍ＝４１を求めることができる。
【００４０】
そして、メモリ位置ｍｍが求まると、そこから三角形に関するデータを取得して、点Ｐとの位置関係や接触判定を行うことができる。例えば、取得した三角形の表面方程式と、キャラクタの基準点（足の裏等）の座標と原点座標とを結ぶ直線との交点を、数学的に求めて接触判定を行うことができる。原点から交点までの距離が、原点から足下の座標までの距離より長ければ、キャラクタが立体Ｍと接触していると判断できる。また、取得した三角形に関するデータを書き換えて、立体Ｍの形状を自由に変化させることができる。
【００４１】
以上のように、本発明の一実施形態に係る画像処理装置および立体形状表示プログラムによれば、立体の形状がどんなに複雑になろうとも、特定の計算により空間の座標値から参照すべき立体の表面データが得られる。これにより、キャラクタが立体表面を連続して移動する等の場合であっても、高速に安定した処理を行うことが可能となる。また、複雑な形状との接触判定を行うソフトウエアの開発が容易に実現できる。
【００４２】
なお、上記実施形態では、基本立体形状が正八面体である場合を説明したが、計算処理がやや複雑になっても構わなければ、他の正多面体を用いて同様に実現することは可能である。
また、上述した基本立体形状やそれを変形させた立体形状は、計算に用いられるためだけの図形であって、実際にポリゴンで形作られない。画面表示されるのは、これらの立体形状に基づいて生成されるポリゴンにテクスチャが貼り付けられた画像である。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る立体形状表示プログラムを実行する画像処理装置を含むビデオゲームシステムの構成例を示すブロック図である。
【図２】図１におけるメモリ４３のメモリマップの一例を示す図である。
【図３】図１におけるゲームディスク４７のメモリマップの一例を示す図である。
【図４】本発明の一実施形態に係る立体形状表示プログラムで用いられる基本立体形状を示す図である。
【図５】本発明の一実施形態に係る立体形状表示プログラムで用いられるデータ構造を説明するための図である。
【図６】本発明の一実施形態に係る立体形状表示プログラムで用いられるデータ構造および距離ｄの概念を説明するための図である。
【図７】本発明の一実施形態に係る立体形状表示プログラムによって表示可能な立体形状例を示す図である。
【図８】本発明の一実施形態に係る立体形状表示プログラムが、図１に示すビデオゲームシステム上で実行される手順を説明するためのフローチャートである。
【図９】任意の点と立体形状との位置関係を判断する場合の概念を説明する図である。
【図１０】予め設定されるエリア番号の一例を説明する図である。
【図１１】エリア番号を特定するための判断フローの一例を示す図である。
【図１２】メモリ位置を特定するために予め有している対応表の一例を示す図である。
【図１３】メモリ位置を特定するための処理フローの一例を示す図である。
【図１４】メモリ位置を特定するための処理フローの一例を示す図である。
【符号の説明】
４１…メインプロセッサ
４２…コプロセッサ
４３…メモリ
４４…ドライブユニット
４５…表示部
４６…ゲームコントローラ
４７…ゲームディスク
【図１】
0004636741.tif 000002
【図２】
0004636741.tif 000003
【図３】
0004636741.tif 000004
【図４】
0004636741.tif 000005
【図５】
0004636741.tif 000006
【図６】
0004636741.tif 000007
【図７】
0004636741.tif 000008
【図８】
0004636741.tif 000009
【図９】
0004636741.tif 000010
【図１０】
0004636741.tif 000011
【図１１】
0004636741.tif 000012
【図１２】
0004636741.tif 000013
【図１３】
0004636741.tif 000014
【図１４】
0004636741.tif 000015