(57)【特許請求の範囲】
【請求項１】
コンピュータを用いて２以上の３次元図形を同一平面上に重ねて２次元描画するコンピュータグラフィックス描画方法であって、
描画しようとする２以上の図形について、これらの図形が含まれる１つの平面を基準平面として指定し、
その後、前記基準平面に含まれる前記２以上の図形の各点について、前記指定した基準平面上の所定の基準点のＺ値と、前記基準平面上でのＸ方向のＺ値変化量とＹ方向のＺ値変化量とに基づいて、一意に３次元座標のＺ値を決定してＺバッファに格納し、
前記Ｚバッファに格納したＺ値を用いて、前記２以上の図形間の重なり部分について陰面消去を行い、
１つの平面を設定する３つ以上の頂点から成る複数の頂点列では、前記各頂点列の各頂点は、パラメータとして同一の平面番号を持ち、
前記平面番号を指定することにより、その同一の平面番号を持つ複数の頂点を一括して指定して、複数の基準平面を同時に設定する
ことを特徴とするコンピュータグラフィックス描画方法。
【請求項２】
コンピュータを用いて２以上の３次元図形を同一平面上に重ねて２次元描画するコンピュータグラフィックス描画装置であって、
描画しようとする２以上の図形について、これらの図形が含まれる１つの平面を基準平面として指定する制御部と、
前記基準平面に含まれる前記２以上の図形の各点について、前記指定した基準平面上の所定の基準点のＺ値と、前記基準平面上でのＸ方向のＺ値変化量とＹ方向のＺ値変化量とに基づいて、一意に３次元座標のＺ値を決定してＺバッファに格納するＤＤＡ部と、
前記Ｚバッファに格納したＺ値を用いて、前記２以上の図形間の重なり部分について陰面消去を行う描画出力部とを備え、
１つの平面を設定する３つ以上の頂点から成る複数の頂点列では、前記各頂点列の各頂点は、パラメータとして同一の平面番号を持ち、
前記制御部は、
前記平面番号を指定することにより、その同一の平面番号を持つ複数の頂点を一括して指定して、複数の基準平面を同時に設定する
ことを特徴とするコンピュータグラフィックス描画装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックス描画方法及び描画装置に関する。
【背景技術】
【０００２】
近年、テレビゲームやカーナビゲーションシステム等において、コンピュータグラフィックス描画が広く利用されている。テレビゲームにおいては、登場する人物や自動車、背景物等の描画対象を現実感のある描写で美しく描画することが望まれる。また、カーナビゲーションシステムにおいては、道路や建物、地形等の描画対象を利用者に分かり易く描画することが望まれる。描画結果が一層に現実感があり、又は一層分かり易く見えるようにするためには、高精度で所望の位置に対象物が描画されることが望まれる。
【０００３】
３次元（３Ｄ）画像表示では、視点に応じて、図形の見える部分を描画し、見えない部分を描画しない陰面消去が必要となる。その陰面消去方法として、従来、Ｚバッファ法という方法が存在する。Ｚバッファ法とは、表示画面上の全てのピクセルに対して、"Ｚ値"と呼ばれる奥行きを表す値を格納しておくＺバッファを用意しておく。
【０００４】
そして、描画しようとする各図形の全てのピクセルにＺ値を持たせておき、描画する際には、描画する図形のＺ値と、Ｚバッファの同一ピクセルのＺ値とを比較して、Ｚ値の数が小さい（手前にある）ピクセルを表示することにより、陰面消去を行っている。
【０００５】
以下、従来の線分を描画する具体的な方法を説明する。線分を描画する方法としては、従来、ＤＤＡ（Digital Differential Analyzer）と呼ばれる方法が一般的である。
【０００６】
図６において、線分の始点座標Ｐｓ＝（Ｘｓ、Ｙｓ、Ｚｓ）と、終点座標Ｐｅ＝（Ｘｅ、Ｙｅ、Ｚｅ）とが与えられたとき、｜Ｘｅ−Ｘｓ｜≧｜Ｙｅ−Ｙｓ｜の場合をＸ方向のＤＤＡ、｜Ｘｅ−Ｘｓ｜＜｜Ｙｅ−Ｙｓ｜の場合をＹ方向のＤＤＡという。
【０００７】
Ｘ方向のＤＤＡでは、Ｌ＝｜Ｘｅ−Ｘｓ｜とし、傾きｄＹｄＸ＝（Ｙｅ−Ｙｓ）／｜Ｘｅ−Ｘｓ｜、ｄＺｄＸ＝（Ｚｅ−Ｚｓ）／｜Ｘｅ−Ｘｓ｜を計算によって求め、始点Ｐｓの次の描画点Ｐ１を、Ｐ１＝（Ｘ１、Ｙ１、Ｚ１）＝（Ｘｓ＋｜Ｘｅ−Ｘｓ｜／（Ｘｅ−Ｘｓ）、Ｙｓ＋ｄＹｄＸ、Ｚｓ＋ｄＺｄＸ）とする。これ以降は、描画点Ｐｉの次の描画点Ｐｊを、Ｐｊ＝（Ｘｊ、Ｙｊ、Ｚｊ）＝（Ｘｉ＋｜Ｘｅ−Ｘｓ｜／（Ｘｅ−Ｘｓ）、Ｙｉ＋ｄＹｄＸ、Ｚｉ＋ｄＺｄＸ）として、Ｘ座標Ｘｊ＝Ｘｅになるまで繰り返す。
【０００８】
一方、Ｙ方向のＤＤＡでは、Ｌ＝｜Ｙｅ−Ｙｓ｜とし、傾きｄＸｄＹ＝（Ｘｅ−Ｘｓ）／｜Ｙｅ−Ｙｓ｜、ｄＺｄＹ＝（Ｚｅ−Ｚｓ）／｜Ｙｅ−Ｙｓ｜を計算によって求め、始点Ｐｓの次の描画点Ｐ１を、Ｐ１＝（Ｘ１、Ｙ１、Ｚ１）＝（Ｘｓ＋ｄＸｄＹ、Ｙｓ＋｜Ｙｅ−Ｙｓ｜／（Ｙｅ−Ｙｓ）、Ｚｓ＋ｄＺｄＹ）とする。それ以降では、描画点Ｐｉの次の描画点Ｐｊを、Ｐｊ＝（Ｘｊ、Ｙｊ、Ｚｊ）＝（Ｘｉ＋ｄＸｄＹ、Ｙｉ＋｜Ｙｅ−Ｙｓ｜／（Ｙｅ−Ｙｓ）、Ｚｉ＋ｄＺｄＹ）として、Ｙ座標Ｙｊ＝Ｙｅになるまで繰り返す。尚、図６中の各マスの中に書かれている数値は、各点のＺ値の計算結果の例である。
【０００９】
また、矩形又は三角形の場合も含む台形を描画する方法として、以下のＤＤＡ法と呼ばれる描画方法が一般的である。
【００１０】
図７において、台形の左側始点座標Ｐｌｓ＝（Ｘｌｓ、Ｙｓ、Ｚｌｓ）と、右側始点座標Ｐｒｓ＝（Ｘｒｓ、Ｙｓ、Ｚｒｓ）と、左側終点座標Ｐｌｅ＝（Ｘｌｅ、Ｙｅ、Ｚｌｅ）と、右側終点座標Ｐｒｅ＝（Ｘｒｅ、Ｙｅ、Ｚｒｅ）とが与えられた場合に、ＤＤＡでは、傾きｄＸｌｄＹ＝（Ｘｌｅ−Ｘｌｓ）／｜Ｙｅ−Ｙｓ｜、ｄＸｒｄＹ＝（Ｘｒｅ−Ｘｒｓ）／｜Ｙｅ−Ｙｓ｜、ｄＺｌｄＹ＝（Ｚｌｅ−Ｚｌｓ）／｜Ｙｅ−Ｙｓ｜、ｄＺｄＸ＝（Ｚｒｓ−Ｚｌｓ）／（Ｘｒｓ−Ｘｌｓ）を計算によって求める。先ず、Ｙ＝Ｙｓの水平な部分について描画を行う。この部分の左端の点をＰｌ（Ｘｌ、Ｙ、Ｚｌ）、右端の点を（Ｘｒ、Ｙ、Ｚｒ）とする。先ず始めに、Ｘｌ＝Ｘｌｓ、Ｘｒ＝Ｘｒｓ、Ｙ＝Ｙｓ、Ｚｌ＝Ｚｌｓとし、左端の点を描画する。次の描画点Ｐ１を、Ｐ１＝（Ｘ、Ｙ、Ｚ）＝（Ｘｌｓ＋１、Ｙｓ、Ｚｌｓ＋ｄＺｄＸ）とする。これ以降では、描画点Ｐｉの次の描画点Ｐｊを、Ｐｊ＝（Ｘｊ、Ｙｊ）＝（Ｘｉ＋１、Ｙｓ、Ｚｉ＋ｄＺｄＸ）として、Ｘ座標Ｘｊ＝Ｘｒになるまで繰り返す。その後、Ｙに１を加算して１つ下の部分の処理に移る。左端の点をＰｌ（Ｘｌ、Ｙ、Ｚｌ）としたとき、Ｘｌ＝Ｘｌ＋ｄＸｌｄＹ、Ｙ＝Ｙ＋１、Ｚ＝Ｚｌ＋ｄＺｌｄＹ、Ｘｒ＝Ｘｒ＋ｄＸｒｄＹとし、前記と同様にＸ方向に１及びｄＺｄＸの加算を繰り返して、Ｘ値が右端の値Ｘｒに到達するまで描画を繰り返す。これらの一連の処理をＹ＝Ｙｅとなるまで繰り返すことにより、四角形が描画される。尚、図７中の各マスの中に書かれている数値は、各点のＺ値の計算結果の例である。
【００１１】
しかし、前記従来の描画方法において、Ｚ値を参照した陰面消去を行いつつ、四角形の描画後に線を上書きしようとした場合には、線を構成する各点において、四角形として描画したときと、線として描画したときとで、Ｚ値に差が生じ、このため、線分と四角形とは同一平面上の図形であるにも拘わらず、良好に上書きできないことが多い。例えば、Ｚ値が前回にその位置に書き込まれたＺ値より小さいか等しい場合にその点を書き換える設定とすると、前記図６及び図７の例で台形の上に線を上書きすると、図８のようになり、線が良好に上書き描画できていないことが判る。
【００１２】
このように、同一平面上にある図形と他の図形とが同一ピクセルとして重なる場合に、理論上では同じＺ値を持つはずであるが、Ｚ値の演算結果では理論上同じであるはずの図形と他の図形との同一ピクセルのＺ値に大小の差が生じ、同一平面上の描画図形の一部がピクセル単位で表示されたり、表示されなかったりする現象が生じる。
【００１３】
その対策として、従来、例えば特許文献１では、同一平面上にある２以上の図形のうち、最も手前に描画したい図形のＺ値に定数のオフセットＺ値を加減算する方法を採用している。
【特許文献１】特開２００１−１６７２９１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、前記特許文献１記載の方法では、線分や四角形の描画方法で得られた各Ｚ値と、定数のオフセットＺ値との大小関係によっては、描画後の２つの図形の前後関係に矛盾が生じる場合がある欠点がある。
【００１５】
本願発明は、前記の欠点に着目し、従来の描画方法では、線分のＤＤＡ方法と四角形のＤＤＡ方法とが相互に異なる描画アルゴリズムであって、この描画アルゴリズムの相違に起因してＺ値の演算誤差が発生することに着目したものであり、この描画アルゴリズムの相違は、複数の図形の重ね描きについてのＺ値の演算誤差に限らず、例えば同一平面上の複数の図形について、各図形の色を徐々に変化させて奥行き感を表現しようとする場合などにも、各図形間での色の変化を不均一にさせる。
【００１６】
本願発明の目的は、コンピュータグラフィック描画において、Ｚバッファ法でのＺ値の演算や、同一平面上の複数の図形について各図形の色を徐々に変化させて奥行き感を表現する場合での各図形間での色の値の演算などについて、対象物の描画を高精度に且つ現実感があって判り易く行うようにすることにある。
【課題を解決するための手段】
【００１７】
以上の目的を達成するため、本発明では、Ｚ値の演算や複数点での色の値の演算などについて、その演算アルゴリズムを統一することとする。
【００１８】
すなわち、請求項１に記載のコンピュータグラフィックス描画方法は、コンピュータを用いて２以上の３次元図形を同一平面上に重ねて２次元描画するコンピュータグラフィックス描画方法であって、描画しようとする２以上の図形について、これらの図形が含まれる１つの平面を基準平面として指定し、その後、前記基準平面に含まれる前記２以上の図形の各点について、前記指定した基準平面上の所定の基準点のＺ値と、前記基準平面上でのＸ方向のＺ値変化量とＹ方向のＺ値変化量とに基づいて、一意に３次元座標のＺ値を決定してＺバッファに格納し、前記Ｚバッファに格納したＺ値を用いて、前記２以上の図形間の重なり部分について陰面消去を行い、１つの平面を設定する３つ以上の頂点から成る複数の頂点列では、前記各頂点列の各頂点は、パラメータとして同一の平面番号を持ち、前記平面番号を指定することにより、その同一の平面番号を持つ複数の頂点を一括して指定して、複数の基準平面を同時に設定することを特徴とする。
【００１９】
請求項２記載の発明は、コンピュータを用いて２以上の３次元図形を同一平面上に重ねて２次元描画するコンピュータグラフィックス描画装置であって、描画しようとする２以上の図形について、これらの図形が含まれる１つの平面を基準平面として指定する制御部と、前記基準平面に含まれる前記２以上の図形の各点について、前記指定した基準平面上の所定の基準点のＺ値と、前記基準平面上でのＸ方向のＺ値変化量とＹ方向のＺ値変化量とに基づいて、一意に３次元座標のＺ値を決定してＺバッファに格納するＤＤＡ部と、前記Ｚバッファに格納したＺ値を用いて、前記２以上の図形間の重なり部分について陰面消去を行う描画出力部とを備え、１つの平面を設定する３つ以上の頂点から成る複数の頂点列では、前記各頂点列の各頂点は、パラメータとして同一の平面番号を持ち、前記制御部は、前記平面番号を指定することにより、その同一の平面番号を持つ複数の頂点を一括して指定して、複数の基準平面を同時に設定することを特徴とする。
【００２０】
以上により、請求項１及び２記載の発明では、基準平面を決め、その基準平面について統一されたパラメータを用いて図形を描画する。例えば、Ｚバッファ法に基づくＺ値によって陰面消去を行う場合において、指定された平面を基準とし、その基準点のＺ値と、そのＺ値のＸ方向への傾きとＹ方向への傾きとを計算し、描画する図形に拘わらず、これらの基準平面から求めたＺ値に関する３つのパラメータを用いて描画されるので、複数の図形での同一点のＺ値が同一値に演算される。従って、正確な上書き描画が可能になる。
【００２１】
また、例えば、図形の各点に透過率を持たせて「フォグ」などの処理を行って奥行き感を表現する場合には、指定された平面を基準とし、その平面上の基準点の透過率の値と、その透過率の値のＸ方向への傾きとＹ方向への傾きとを計算し、描画する図形に拘わらず、これらの基準平面から求めた透過率の値に関する３つのパラメータを用いて描画されるので、透過率の変化を各図形上の各点で揃えつつ、描画を行うことができる。尚、基準平面上において、各点の透過率の値自体は統一する必要がなくて、透過率の変化の度合いのみを揃えたい場合は、基準点の透過率の値は使用しなくても良い。
【００２２】
更に、ある基準平面上の各点の色を徐々に変化させて奥行き感を表現する処理を行う場合には、指定された平面を基準とし、色のＸ方向への変化量とＹ方向への変化量とを計算し、描画する図形に拘わらず、これらの基準平面から求めた色の関する２つのパラメータを用いて描画されるので、色の変化を各図形上の各点で揃えつつ、描画を行うことができる。
【発明の効果】
【００２３】
以上説明したように、請求項１及び２記載の発明のコンピュータグラフィックス描画方法及び描画装置によれば、複数の図形を重ね描きする場合に最も前面に位置する図形の全部を一番前に正確に上書きできたり、同一平面上の複数の図形の各点の透過率、又は色や透過率の値の変化の度合いを揃えて、各図形の奥行き感を揃えて良好に表現することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態のコンピュータグラフィックス描画装置及び描画方法について図面を参照して説明する。
【００２５】
（第１の実施形態）
図１は、本発明のコンピュータグラフィックス描画装置の全体構成を示す。
【００２６】
制御部１００のＣＰＵ１０１は、メモリ１０２に記憶された描画すべき図形のデータを参照し、これ等の図形のデータからそれ等の図形が含まれる基準平面を指定し、この指定した基準平面上の所定の基準点のＺ値Ｚｓｔａｒｔと、この基準平面上でＸ方向に＋１進む時のＺ値の変化量ｄＺｄＸと、Ｙ方向に＋１進む時のＺ値の変化量ｄＺｄＹとをパラメータとして求めて、描画部１１０のパラメータ入力部１１１に設定する。
【００２７】
ここで、前記基準平面上の基準点は、例えば（Ｘ、Ｙ）＝（０、０）の点を基準点とする場合には、図２に示すように、Ｚ軸と基準平面との交点が基準点となる。以下、この場合を例として説明する。
【００２８】
この基準平面の設定方法としては、３点以上の頂点を持つ多角形（各頂点が同一平面上のものに限る）を指定しても良いし、Ｘ値、Ｙ値又はＺ値が所定値で一定の平面としても良い。また、これらの平面を座標変換して求めた平面を基準としても良い。
【００２９】
次に、描画部１１０内のＤＤＡ部１１２において、各点のＸ、Ｙ、Ｚ値の計算を行う。どのような図形の描画の場合においても、各点のＺ値は、毎回、
Ｚ＝Ｚｓｔａｒｔ＋ｄＺｄＸ×（Ｘの整数部）
＋ｄＺｄＹ×（Ｙの整数部）
の式から一意に計算、決定される。
【００３０】
尚、前記の計算式を用いる方法では、図形を構成する各点の描画の毎に２度の掛け算と足し算とを繰り返す必要がある。このため、計算処理量が増大し、描画速度の低下や、消費電力の増大などの不都合が生じる場合には、前記計算式に基づくＺ値の計算に代えて、次の処理を行う。
【００３１】
すなわち、線や、矩形又は三角形の場合も含む台形を描画する場合において、以下に説明するＤＤＡ方法で各点のＺ値の計算を行う。これにより、Ｚ値の計算における計算処理量を削減でき、描画の高速化や消費電力の削減が可能となる。
【００３２】
以下、図３を用いて、本実施形態でのＤＤＡ方法を用いて、高速に線を描画する方法を説明する。線分の始点座標Ｐｓ＝（Ｘｓ、Ｙｓ）と、終点座標Ｐｅ＝（Ｘｅ、Ｙｅ）とが与えられたものとする。線を描画するときには、先ず、前記の式を用いて、線分の始点のＺ値Ｚｓを計算により求める。
【００３３】
Ｚｓ＝Ｚｓｔａｒｔ＋ｄＺｄＸ×（Ｘｓの整数部）
＋ｄＺｄＹ×（Ｙｓの整数部）
ここで、｜Ｘｅ−Ｘｓ｜≧｜Ｙｅ−Ｙｓ｜の場合をＸ方向のＤＤＡ、｜Ｘｅ−Ｘｓ｜＜｜Ｙｅ−Ｙｓ｜の場合をＹ方向のＤＤＡという。
【００３４】
Ｘ方向のＤＤＡでは、傾きｄＹｄＸ＝（Ｙｅ−Ｙｓ）／｜Ｘｅ−Ｘｓ｜を計算によって求めておく。以降、描画点Ｐｉの次の描画点Ｐｊを
Ｐｊ＝（Ｘｊ、Ｙｊ）＝
（Ｘｉ＋｜Ｘｅ−Ｘｓ｜／（Ｘｅ−Ｘｓ）、Ｙｉ＋ｄＹｄＸ）
とする。
【００３５】
描画点ＰｊのＺ値Ｚｊは、Ｘの整数部の値が１増加した場合は、ＺｉにｄＺｄＸを足した値をＺｊとし、１減少した場合は、ＺｉからｄＺｄＸを引いた値をＺｊとする。更にＹの整数部の値が１増加した場合は、ＺｊにｄＺｄＹを足し、１減少した場合は更にＺｊからｄＺｄＹを引く。このようにして求めたＺ値をＺｊする。このようにして求められたＺ値は、図１のＺ値比較部１１５において、Ｚバッファ１１７上のＸとＹが同じ位置の描画点のＺ値と比較され、予め指定された描画条件に合致した場合は、描画出力部１１４から描画フレームメモリ１１６に描画点の書き込みと、Ｚバッファ１１７上のＺ値の更新を行う。これらの計算をＸ座標Ｘｊ＝Ｘｅになるまで繰り返す。
【００３６】
一方、Ｙ方向のＤＤＡでは、傾きｄＸｄＹ＝（Ｘｅ−Ｘｓ）／｜Ｙｅ−Ｙｓ｜を計算によって求めておく。以降Ｐｉの次の描画点Ｐｊを
Ｐｊ＝（Ｘｊ、Ｙｊ）＝
（Ｘｉ＋ｄＸｄＹ、Ｙｉ＋｜Ｙｅ−Ｙｓ｜／（Ｙｅ−Ｙｓ））
とする。
【００３７】
描画点ＰｊのＺ値Ｚｊは、Ｘの整数部の値が１増加した場合は、ＺｉにｄＺｄＸを足した値をＺｊとし、１減少した場合はＺｉからｄＺｄＸを引いた値をＺｊとする。更にＹの整数部の値が１増加した場合は、ＺｊにｄＺｄＹを足し、１減少した場合は更にＺｊからｄＺｄＹを引く。このようにして求めた値をＺｊする。このようにして求めたＺ値は、Ｚ値比較部１１５において、Ｚバッファ１１７上のＸとＹが同じ位置の描画点のＺ値と比較され、予め指定された描画条件に合致した場合は、描画出力部１１４から描画フレームメモリ１１６に描画点の書き込みと、Ｚバッファ１１７上のＺ値の更新とを行う。これらの処理をＹ座標Ｙｊ＝Ｙｅになるまで繰り返す。
【００３８】
図３は、以上のようにして求めた各描画点のＺ値を示す。各マスの中に書かれている数値は、Ｚｓｔａｒｔ＝１、ｄＺｄＸ＝１、ｄＺｄＹ＝２の場合の各点のＺ値の計算結果の例である。左上の始点ＰｓのＺ値は、前述の式から、Ｚｓｔａｒｔ＋ｄＺｄＸ×３＋ｄＺｄＹ×０＝１＋１×３＋２×０＝４と求まる。次の描画点は、Ｘ方向及びＹ方向共に＋１進んでいるので、この点のＺ値は、Ｚｉ＋ｄＺｄＸ＋ｄＺｄＹ＝４＋１＋２＝７となる。その次の描画点は、Ｘ方向にのみ＋１進んでいるので、この点のＺ値は、Ｚｉ＋ｄＺｄＸ＝７＋１＝８となる。このような計算を線分の終点Ｐｅ＝（８、３）に到達するまで繰り返すと、図３のようなＺ値の計算結果となる。
【００３９】
尚、ｄＺｄＸ＝ｄＺｄＹの場合には、Ｘ及びＹの整数部の値が共に１増加、又は１減少するときに、ｄＺｄＸ（＝ｄＺｄＹ）を１左シフトした値を加算又は減算することにより、加減算回数を１回減らすことができる。更に、Ｘの整数部の値が１増加し且つＹの整数部の値が１減少するとき、又は、Ｘの整数部の値が１減少し且つＹの整数部の値が１増加するときは、ｄＺｄＸ及びｄＺｄＹの加減算をキャンセルすることにより、加減算回数を２回減らすことができるので、更に高速な処理が可能となる。
【００４０】
続いて、図４を用いて、本実施形態のＤＤＡ方法で高速に台形を描画する方法を説明する。
【００４１】
同図において、台形の左側始点座標Ｐｌｓ＝（Ｘｌｓ、Ｙｓ）と、右側始点座標Ｐｒｓ＝（Ｘｒｓ、Ｙｓ）と、左側終点座標Ｐｌｅ＝（Ｘｌｅ、Ｙｅ）と、右側終点座標Ｐｒｅ＝（Ｘｒｅ、Ｙｅ）とが与えられたものとする。台形を描画するときには、先ず、前記の式を用いて、台形の左上の頂点である左側の始点ＰｌｓのＺ値Ｚｌｓを次の計算により求める。
【００４２】
Ｚｌｓ＝Ｚｓｔａｒｔ＋ｄＺｄＸ×（Ｘｌｓの整数部）
＋ｄＺｄＹ×（Ｙｌｓの整数部）
次に、傾きｄＸｌｄＹ＝（Ｘｌｅ−Ｘｌｓ）／（Ｙｅ−Ｙｓ）、ｄＸｒｄＹ＝（Ｘｒｅ−Ｘｒｓ）／（Ｙｅ−Ｙｓ）を計算によって求める。先ず、Ｙ＝Ｙｓの水平な部分について描画を行う。この部分の左端の点をＰｌｉ（Ｘｌｉ、Ｙｉ、Ｚｌｉ）、右端の点を（Ｘｒｉ、Ｙｉ）とする。先ず始めに、Ｘｌｉ＝Ｘｌｓ、Ｘｒｉ＝Ｘｒｓ、Ｙｉ＝Ｙｓ、Ｚｌｉ＝Ｚｌｓとする。以降、描画点Ｐｉの次の描画点Ｐｊを、
Ｐｊ＝（Ｘｊ、Ｙｊ、Ｚｊ）＝（Ｘｉ＋１、Ｙ、Ｚｉ ＋ｄＺｄＸ）
として、求められたＺ値を、図１のＺ値比較部１１５において、Ｚバッファ１１７上のＸとＹが同じ位置の描画点のＺ値と比較し、予め指定された描画条件に合致した場合は、描画出力部１１４から描画フレームメモリ１１６に点の書き込みと、Ｚバッファ１１７上のＺ値の更新と行う。これらの処理を、Ｘ座標Ｘｊ＝Ｘｒになるまで繰り返す。
【００４３】
その後、Ｙに１を加算して、１つ下の部分の処理に移る。この処理では、新たな左端の点をＰｌｊ（Ｘｌｊ、Ｙｊ、Ｚｌｊ）としたとき、Ｘｌｊ＝Ｘｌｉ＋ｄＸｌｄＹ、Ｙｊ＝Ｙｉ＋１、Ｘｒｊ＝Ｘｒｉ＋ｄＸｒｄＹとし、点ＰｌｊのＺ値Ｚｌｊは、Ｙの整数部の値が１増加したので、ＺｌｉにｄＺｄＹを足した値をＺｌｊとする。次に、Ｘｌの整数部の値がｎ増加した場合は、Ｚｌｊに更にｄＺｄＸ×ｎを足した値をＺｌｊとし、ｎ減少した場合はＺｌｊから更にｄＺｄＸ×ｎを引いた値をＺｌｊとする。尚、これ等の処理に代えて、前記の計算式
Ｚｌｊ＝Ｚｓｔａｒｔ＋ｄＺｄＸ×（Ｘｌｊの整数部）
＋ｄＺｄＹ×（Ｙｊの整数部）
からＺｌｊを求めても良い。
【００４４】
その後、前記と同様に、Ｘに１の加算と、ＺにｄＺｄＸの加算とを繰り返して、Ｘ値が右端の値Ｘｒｊに到達するまで描画を繰り返す。これらの一連の処理をＹ＝Ｙｅとなるまで繰り返すことにより、台形が描画される。
【００４５】
尚、図４は、以上のようにして求めた各描画点のＺ値を示し、Ｚｓｔａｒｔ＝１、ｄＺｄＸ＝１、ｄＺｄＹ＝２の場合の各点のＺ値の計算結果の例である。同図において、左上の始点ＰｌｓのＺ値は、前述の式から、Ｚｓｔａｒｔ＋ｄＺｄＸ×５＋ｄＺｄＹ×０＝１＋１×５＋２×０＝６と求まる。その次に、この図形内のＹ座標が同じＹ＝０の点を図形の右端の点までＸ方向に＋１移動する毎に、左隣の点のＺ値にｄＺｄＸ（＝１）を足しながら描画すると、今回の右端の点はＸ方向に＋３進んでいるので、Ｚ値は９となる。次に、Ｙに１を足したその下の段の処理に移る。この図形のＹ＝１の部分の左端の点は、前回の左端の点からＸ方向に−２、Ｙ方向に＋１進んでいるので、この点のＺ値はＺｌｉ＋ｄＺｄＸ×（−２）＋ｄＺｄＹ＝６＋１×（−２）＋２＝６となる。その次に、この図形内のＹ座標が同じＹ＝０の点を図形の右端の点までＸ方向に＋１移動する毎に、左隣の点のＺ値にｄＺｄＸ（＝１）を足しながら、描画していくと、今回の右端の点はＸ方向に＋６進んでいるので、Ｚ値は１２となる。このような計算を台形の下端のＹ＝３の部分に到達するまで繰り返すと、図４のようなＺ値の計算結果となる。
【００４６】
以上説明したように、本実施形態の描画方法を用いて線や台形の描画を行うと、何れの図形の場合でも、同一平面上の図形については、各点のＺ値を同一値に揃えることができる。
【００４７】
従って、Ｚ値を利用した陰面消去の処理において、Ｚ値比較部１１５において既にＺバッファ１１７に書き込まれているＺ値との比較を行う際に、Ｚ値が等しい場合も図形の書き換えを行う設定としておけば、同一平面上の図形を構成する各点において、必ず後から描画する図形が描かれる。例えば、図４の台形を描画した後に、図３の線を上書きすると、図５のような描画結果となり、正しい上書き描画が行われていることが判る。尚、図５では、背景が右下がりの広い間隔の線で埋められているマスが、上書きした線の描画時に描かれた点であり、それ以外のマスが、上書きされた台形の描画時に描かれた点である。このようにして、描画フレームメモリ１１６に描画された画像は、表示部１２１によって読み出され、画面１２２に表示される。
【００４８】
次に、基準平面を利用した描画について説明を加える。３次元の立体的な物体を描画するために、属する基準平面の異なる複数の図形をつなぎ合わせて、その表面に後から他の図形を上書きを行うような場合において、同時に使用できる基準平面が１つのときには、この物体を各平面毎に分割し、各平面毎にこの物体の一部の描画と一部の上書き描画とを繰り返せば、３次元の物体の描画についても、以上で説明した基準平面を利用した描画を行える。しかし、この物体を各平面毎の図形に分割し、個別の図形について描画命令を発行すると、処理量が多くなるために、物体毎に１回でまとめて描画できることが望ましい。
【００４９】
そこで、一連の複数の三角形を指定する頂点列内の各頂点に関するパラメータに平面番号を加え、同一の平面番号を持つ３つ以上の頂点を同一の平面上の点とみなすと、複数の基準平面を１回の描画処理で指定することができる。既に指定済みの基準平面に基づいて描画することを指示する場合は、同一の平面番号を持つ頂点は１つ以上で良い。また、１つの頂点が２つ以上の基準平面に属する場合は、１つの頂点に２つ以上の平面番号を持たせても良い。
【００５０】
このようにすると、基準平面を指定する際に、３次元の物体１つにつき多数の描画命令を発行するのではなく、１つの描画命令で連続的に複数の基準平面を設定しつつ３次元の物体を描画し、続く１つの描画命令で連続的に複数の基準平面を参照しつつ３次元の物体に上書き描画を行うことができる。この頂点のパラメータとして平面番号を加える方法を用いると、３次元の物体に対する上書き描画において、物体を各平面毎に分割する処理を省略できるので、高速で効率的な上書き描画が可能となる。尚、一度計算された基準とする平面に対するパラメータは、後に続く同一平面上の図形の描画時に再利用することが望ましい。
【００５１】
（第２の実施形態）
次に、本発明の第２の実施形態を説明する。
【００５２】
前記実施形態では、３次元の画像表示の影面消去に使用されるＺ値について、描画する図形の種類に拘わらず、統一された１つの計算アルゴリズムを用いて算出したが、本実施形態では、前記第１の実施形態でのＺ値に代えて、図形の各点の透過率や色について、統一された１つの計算アルゴリズムで算出し、これにより、複数の図形間での透過率の変化や色の変化を揃えて、奥行き感を良好に表現するものである。
【００５３】
本実施形態では、先ず、前記第１の実施形態におけるＺｓｔａｒｔ、ｄＺｄＸ、ｄＺｄＹの代わりに、与えられた基準平面の基準点（以下（Ｘ、Ｙ）＝（０、０）の点を基準点とした場合を例として説明する）の透過率の値αｓｔａｒｔと、透過率の値の基準平面上をＸ方向に＋１進む時の透過率の変化量ｄαｄＸと、色の値の基準平面上をＸ方向に＋１進む時の色の変化量ｄＲｄＸ、ｄＧｄＸ、ｄＢｄＸと、基準平面上をＹ方向に＋１進む時の透過率の変化量ｄαｄＹと、基準平面上をＹ方向に＋１進む時の色の変化量ｄＲｄＹ、ｄＧｄＹ、ｄＢｄＹとを各々求める。
【００５４】
ある線分について、始点座標Ｐｓ＝（Ｘｓ、Ｙｓ）と、終点座標Ｐｅ＝（Ｘｅ、Ｙｅ）とが与えられたものとする。線を描画する際には、先ず、前記第１の実施形態における始点座標のＺ値Ｚｓの代わりに、始点における透過率の値αｓや、始点の色の値Ｒｓ、Ｇｓ、Ｂｓを任意の値に設定する。各点の透過率の値を揃えたい場合は、前記第１の実施形態における始点座標のＺ値Ｚｓの計算と同様に、以下の式を用いて、始点の透過率の値αｓを決めても良い。
【００５５】
αｓ＝αｓｔａｒｔ＋ｄαｄＸ×（Ｘｓの整数部）
＋ｄαｄＹ×（Ｙｓの整数部）
以後、前記第１の実施形態におけるＺ値及びその傾きｄＺｄＸ、ｄＺｄＹを、透過率αと、その透過率及び色の傾きｄαｄＸ、ｄＲｄＸ、ｄＧｄＸ、ｄＢｄＸ、ｄαｄＹ、ｄＲｄＹ、ｄＧｄＹ、ｄＢｄＹに置き換え、その上で、前記第１の実施形態と同様の方法で線の描画を行う。
【００５６】
次に、台形の左側始点座標Ｐｌｓ＝（Ｘｌｓ、Ｙｓ）と、右側始点座標Ｐｒｓ＝（Ｘｒｓ、Ｙｓ）と、左側終点座標Ｐｌｅ＝（Ｘｌｅ、Ｙｅ）と、右側終点座標Ｐｒｅ＝（Ｘｒｅ、Ｙｅ）とが与えられたとする。
【００５７】
台形を描画する際にも、先ず、前記第１の実施形態での左側始点座標のＺ値Ｚｌｓの代わりに、左側始点座標の透過率の値αｌｓや、左側始点座標の色の値Ｒｌｓ、Ｇｌｓ、Ｂｌｓを任意の値に設定する。各点の透過率の値を揃えたい場合は、前記第１の実施形態での左側始点座標のＺ値Ｚｌｓの計算と同様に、以下の式を用いて、始点の透過率の値αｌｓを決めても良い。
【００５８】
αｌｓ＝αｓｔａｒｔ＋ｄαｄＸ×（Ｘｌｓの整数部）
＋ｄαｄＹ×（Ｙｌｓの整数部）
以後は、前記第１の実施形態におけるＺ値及びその傾きｄＺｄＸ、ｄＺｄＹを、透過率αと、その透過率及び色の傾きα、ｄαｄＸ、ｄＲｄＸ、ｄＧｄＸ、ｄＢｄＸ、ｄαｄＹ、ｄＲｄＹ、ｄＧｄＹ、ｄＢｄＹに置き換え、その上で、前記第１の実施形態と同様の方法で台形の描画を行う。
【００５９】
以上の方法を用いて線分及び台形の描画を行うと、その何れの図形の場合であっても、同一平面上の複数の図形については、各点の透過率の値、又は色の変化や透過率の変化の仕方を揃えることができ、徐々に色を変化させて奥行き感を表現すような場合に、色の変化を揃える効果を得ることができる。
【産業上の利用可能性】
【００６０】
以上説明したように、本発明は、同一平面上の図形について正確又は効率的な上書き描画や、色の変化の揃った描画を行うことができるので、グラフィックスにおける描画品質の向上を図るコンピュータグラフィックス描画方法及び描画装置して有用である。
【図面の簡単な説明】
【００６１】
【図１】本発明の第１の実施形態の描画装置を示すブロック図である。
【図２】同描画装置の描画における基準平面の説明図である。
【図３】同描画装置によって描画された線分の一例を示す図である。
【図４】同描画装置によって描画された台形の一例を示す図である。
【図５】同描画装置を用いて台形の上に線分を上書き描画した一例を示す図である。
【図６】従来の描画方法によって描画された線分の一例を示す図である。
【図７】同従来の描画方法によって描画された台形の一例を示す図である。
【図８】同従来の描画方法によって台形の上に線分を上書き描画した一例を示す図である。
【符号の説明】
【００６２】
１１              ディスプレイ
１２              定数オフセットＺ値
Ｐｓ              線分の始点
Ｐｅ              線分の終点
Ｐｌｓ            台形の左側の辺の始点
Ｐｌｅ            台形の左側の辺の終点
Ｐｒｓ            台形の右側の辺の始点
Ｐｒｅ            台形の右側の辺の終点
１００            制御部
１０１            ＣＰＵ
１０２            メモリ
１１０            描画部
１１１            パラメータ入力部
１１２            ＤＤＡ部
１１３            色比較部
１１４            描画出力部
１１５            Ｚ値比較部
１１６            描画フレームメモリ
１１７            Ｚバッファ
１２１            表示部
１２２            画面
【図１】
0004646712.tif 000002
【図２】
0004646712.tif 000003
【図３】
0004646712.tif 000004
【図４】
0004646712.tif 000005
【図５】
0004646712.tif 000006
【図６】
0004646712.tif 000007
【図７】
0004646712.tif 000008
【図８】
0004646712.tif 000009