(57)【要約】【課題】領域ＤＤＡを用いず、表示画像データ保存領域としてラインバッファの利用を可能にしてメモリ領域を節約でき、かつ精度をできるだけ落とさずにポリゴン辺に適合した計算で計算時間の増加を抑えて良好にアンチエイリアシングを行う。【解決手段】  ３次元図形描画処理装置１において、ポリゴン辺の始頂点・終頂点の情報とスキャンラインの情報のみからポリゴン辺とスキャンラインとの交点座標をポリゴン辺の特性に従って計算方法を変化させながら求め、さらにピクセルにおけるポリゴン内部領域の占める面積率を計算することによりアンチエイリアシングのためのブレンディング係数も得る。【選択図】  図１
2006139727.tif 000002
【特許請求の範囲】
【請求項１】
３次元ポリゴンを構成する各ポリゴン辺であって左辺・右辺に分けられたポリゴン辺を、さらに２次元ＸＹ座標上での該ポリゴン辺の傾きの大きさにより分類するポリゴン辺分類手段と、
該ポリゴン辺分類手段で分類された該ポリゴン辺の隣接スキャンラインとの各交点に対応した各描画点において、少なくともＸ座標が最も小さい描画点とＸ座標が最も大きい描画点の各座標値を求める座標計算手段と、
該座標計算手段で求めた描画点の各座標値から、該各交点に対応する所定単位領域のピクセル内にポリゴン内部領域が占める面積率を求める面積率計算手段とを有する３次元図形描画処理装置。
【請求項２】
前記ポリゴン辺分類手段は、
前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いたＸ座標の差分値を求めるＸ軸方向差分演算手段と、
該ポリゴン辺の終頂点および始頂点の一方のＹ座標の値から他方のＹ座標の値を引いたＹ座標の差分値を求めるＹ軸方向差分演算手段と、
該Ｘ座標の差分値と該Ｙ座標の差分値との大小関係を比較して、該ポリゴン辺の傾きの大きさを判定することにより該ポリゴン辺を分類する比較判定手段とを有する請求項１に記載の３次元図形描画処理装置。
【請求項３】
前記比較判定手段は、前記ポリゴン辺の傾きの大きさが１を超える場合に、該ポリゴン辺が左辺であれば「左」、該ポリゴン辺が右辺であれば「右」のように該ポリゴン辺を分類する請求項２に記載の３次元図形描画処理装置。
【請求項４】
前記比較判定手段は、前記ポリゴン辺の傾きの大きさが１以下の場合に、前記Ｘ座標の差分値が負の値になる左辺であれば「上」、該Ｘ座標の差分値が負の値になる右辺であれば「下」、該Ｘ座標の差分値が正の値になる左辺であれば「下」、該Ｘ座標の差分値が正の値になる右辺であれば「上」のように該ポリゴン辺を分類する請求項２または３に記載の３次元図形描画処理装置。
【請求項５】
前記座標計算手段は、
前記ポリゴン辺分類手段で得られたポリゴン辺の傾き情報に基づいて、前記始頂点からスキャンラインとの交点までのＸ軸方向の距離に０．５を加算して、小数点以下を切捨てることにより四捨五入を行うかまたは、該始頂点から該スキャンラインとの交点までのＸ軸方向の距離は小数点以下を切り捨てて切り下げとするかを判定して、該始頂点から現スキャンラインまたは次のスキャンラインとの交点までの整数化されたＸ軸方向の距離を求めるＸ軸方向距離獲得手段を有する請求項１に記載の３次元図形描画処理装置。
【請求項６】
前記Ｘ軸方向距離獲得手段は、
前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いたＸ座標の差分値を求めるＸ軸方向差分演算手段と、
該ポリゴン辺の終頂点および始頂点の一方のＹ座標の値から他方のＹ座標の値を引いたＹ座標の差分値を求めるＹ軸方向差分演算手段と、
該Ｙ座標の差分値で該Ｘ座標の差分値を割ることにより該ポリゴン辺上でのＹ軸方向に対するＸ軸方向の増加率を求めるＸＹ除算手段と、
該始頂点から現スキャンラインの間にスキャンしたスキャンラインの本数を計算するスキャンライン増分値計算手段と、
該ＸＹ除算手段で得たＹ軸方向に対するＸ軸方向の増加率に、該スキャンライン増分値計算手段で得た始頂点から現スキャンラインまでのスキャンラインの本数を乗算することにより、始頂点から現スキャンラインまでの間のＸ軸方向の距離を求める乗算手段と、
該ポリゴン辺の傾き情報に基づいて、該乗算手段で求めたＸ軸方向の距離に０．５を加算するかどうかを判断し、得られた値の小数点以下を切り捨てることにより整数化したＸ軸方向の距離を求める四捨五入手段とを有する請求項５に記載の３次元図形描画処理装置。
【請求項７】
前記座標計算手段は、
前記ポリゴン辺分類手段によって得られたポリゴン辺の傾き情報および、前記Ｘ軸方向距離獲得手段により求めたＸ軸方向の距離、前記始頂点のＸ座標の値により、該ポリゴン辺の隣接スキャンラインとの交点間にある各描画点においてＸ座標が最も小さい描画点からＸ座標が最も大きい描画点までのＸ座標値を求める交点Ｘ座標計算手段を有する請求項５に記載の３次元図形描画処理装置。
【請求項８】
前記面積率計算手段は、前記ピクセルにポリゴン内部領域が占める面積率を求める際に、前記ポリゴン辺分類手段で得られたポリゴン辺の情報と、前記座標計算手段で得られたＸ座標が最も小さい描画点およびＸ座標が最も大きい描画点のＸ座標情報とに基づいて、該ピクセルの左右上下端いずれの側から占める面積率を使うかを判別して面積率の計算を行う請求項１に記載の３次元図形描画処理装置。
【請求項９】
前記面積率計算手段は、前記ポリゴン辺が前記ポリゴン辺分類手段により、該ポリゴン辺の傾きの大きさが１を超える場合に、「左」または「右」と分類されたポリゴン辺であって、かつ現スキャンラインと交差してから次のスキャンラインと交差するまでの間に二つの前記ピクセル間に跨るかどうかによって、一定の面積率とするか詳細な計算を行うかを決定する計算方法決定手段を有する請求項８に記載の３次元図形描画処理装置。
【請求項１０】
３次元ポリゴンを構成する各ポリゴン辺であって左辺・右辺に分けられたポリゴン辺を、さらに２次元ＸＹ座標上での該ポリゴン辺の傾きの大きさにより分類するポリゴン辺分類ステップと、
該ポリゴン辺分類ステップで分類された該ポリゴン辺の隣接スキャンラインとの各交点に対応した各描画点において、少なくともＸ座標が最も小さい描画点とＸ座標が最も大きい描画点の各座標値を求める座標計算ステップと、
該座標計算ステップで求めた描画点の各座標値から、該各交点に対応する所定単位領域のピクセル内にポリゴン内部領域が占める面積率を求める面積率計算ステップとを有する３次元図形描画処理方法。
【請求項１１】
前記ポリゴン辺分類ステップは、
前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いた差分値を求めるステップと、
該ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＹ座標の値を引いた差分値を求めるステップと、
該Ｘ座標の差分値と該Ｙ座標の差分値の大小関係を比較して、該ポリゴン辺の傾きの大きさを判定することにより該ポリゴン辺を分類する比較判定ステップとを有する請求項１０に記載の３次元図形描画処理方法。
【請求項１２】
前記座標計算ステップは、
前記ポリゴン辺分類ステップで得られたポリゴン辺の傾き情報に基づいて、前記始頂点からスキャンラインとの交点までのＸ軸方向の距離に０．５を加算して、小数点以下を切捨てることにより四捨五入を行うかまたは、該始頂点から該スキャンラインとの交点までのＸ軸方向の距離は小数点以下を切り捨てて切り下げとするかを判定して、該始頂点から現スキャンラインまたは次のスキャンラインとの交点までの整数化されたＸ軸方向の距離を求めるＸ軸方向距離獲得ステップと、
該ポリゴン辺の傾き情報および、該Ｘ軸方向距離獲得ステップにより求めたＸ軸方向の距離、前記始頂点のＸ座標の値により、該ポリゴン辺のスキャンラインとの交点である描画点においてＸ座標が最も小さい描画点とＸ座標が最も大きい描画点の各座標値を求める交点Ｘ座標計算ステップとを有する請求項１０に記載の３次元図形描画処理方法。
【請求項１３】
前記Ｘ軸方向距離獲得ステップは、
前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いた差分値を求めるステップと、
該ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＹ座標の値を引いた差分値を求めるステップと、
前記Ｙ座標の差分値で前記Ｘ座標の差分値を割ることにより該ポリゴン辺上でのＹ軸方向に対するＸ軸方向の増加率を求めるＸＹ除算ステップと、
該始頂点から現スキャンラインの間にスキャンしてきたスキャンラインの本数を計算するスキャンライン増分値計算ステップと、
該ＸＹ除算ステップで得たＹ軸方向に対するＸ軸方向の増加率に、該スキャンライン増分値計算ステップで得た始頂点から現スキャンラインまでのスキャンラインの本数を乗算することにより、該始頂点から現スキャンラインまでの間のＸ軸方向の距離を求める乗算ステップと、
前記ポリゴン辺の傾き情報に基づいて、該乗算ステップで求めたＸ軸方向の距離に０．５を加算するかどうかを判断し、得られた値の小数点以下を切り捨てることにより整数化したＸ軸方向の距離を求める四捨五入ステップとを有する請求項１２に記載の３次元図形描画処理方法。
【請求項１４】
前記面積率計算ステップは、
前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いた差分値を求めるステップと、
該ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＹ座標の値を引いた差分値を求めるステップと、
該Ｙ座標の差分値で該Ｘ座標の差分値を割ることにより該ポリゴン辺上でのＸ軸方向に対するＹ軸方向の増加率を求めるＹＸ除算ステップと、
スキャンラインとポリゴン辺が交差するピクセルにおいて、前記座標計算ステップにより求めた各座標値と、前記ＹＸ除算ステップにより求めたＹ軸方向の増加率とにより、該ピクセルに占めるポリゴン内部領域の面積率を求めるに際し、該ポリゴン辺の傾きの大きさおよび該Ｘ座標の差分値の符号に応じて、該ピクセルの左右上下どの端から見た場合の該ポリゴン辺までの距離を面積率とするかを選択して計算する面積率選択計算ステップとを有する請求項１０に記載の３次元図形描画処理方法。
【請求項１５】
前記面積率選択計算ステップは、前記ポリゴン辺の傾きの大きさが１を超え、該ポリゴン辺が現スキャンラインと次のスキャンラインとの間にピクセル境界を跨ぐ場合に一定の面積率を適用し、そうでない場合は計算により面積率を求める請求項１４に記載の３次元図形描画処理方法。
【請求項１６】
請求項１０〜１５のいずれかに記載の３次元図形描画処理方法の各処理ステップをコンピュータに実行させるための制御プログラム。
【請求項１７】
請求項１６に記載の制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体。
【請求項１８】
請求項１〜９のいずれかに記載の３次元図形描画処理装置を用いて表示画面を表示可能とする画像表示装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばコンピュータグラフィックス（ＣＧ）を表示可能なゲーム装置の表示部などに用いられ、限られた演算器を効率よく利用することが可能であり、精度を落とさずかつ高速に整合性の高いポリゴンエッジ描画とアンチエイリアシングを容易にする３次元図形描画処理装置、これを用いた画像表示装置、この３次元図形描画処理装置を用いた３次元図形描画処理方法、これをコンピュータに実行させるための制御プログラムおよび、これを記録したコンピュータ読み取り可能な可読記録媒体に関する。
【背景技術】
【０００２】
従来、コンピュータグラフィックス（ＣＧ）における３次元図形描画時のアンチエイリアシング手段（ぎざぎざを目立たなくする処理手段）としてフィルタリング法が知られている。このフィルタリング法とは、生成した画像データを各描画点に対して、重み付けした係数値を元に周囲の描画点の色データとブレンディングした結果を表示画面とする方法である。
【０００３】
このフィルタリング法では、品位は比較的低いが計算量が少なくて済むことと、スキャンライン毎に独立してライン上の描画点のブレンディング結果を求めることもできるため、他のフレームバッファを必要とする描画方法に比べて回路構成をより簡単にすることができ、リソースの節約が可能である。
【０００４】
また、フィルタリング法の中でも従来技術としてポリゴン（多角形面）辺から描画点までの変位を基に描画点の色を変える方法がある。この方法によれば、ポリゴン辺の描画に際してポリゴン辺から各描画点までの変位を求め、この変位に基づき、ポリゴン辺の近辺と判定された描画点について、この変位の大きさにより色を変えることでアンチエイリアシングされたポリゴン辺を描くことができる。
【０００５】
これが例えば特許文献１の「イメージ処理装置」に開示されており、多角形の各辺（ポリゴン辺）に対応して２次元座標系の１次式を順次計算し、描画点の多角形に対する相対位置関係を判定し、各描画点の多角形の辺からの変位を求める計算手段と、この計算手段で求められた変位に基づき、多角形の辺の近辺の描画点の色または色調を変える変換手段とを有し、ビットマップメモリ上で多角形の内部を塗りつぶす、または陰影付けを行うものである。
【特許文献１】特開平６−４６７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来のアンチエイリアシング手段では、ポリゴン辺から各描画点までの変位を求める際に、ポリゴン辺を直線式
f (x, y) = a×x + b×y + c
で表し、この直線式f (x, y)を領域ＤＤＡ（Ｄｉｇｉｔａｌ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ａｎａｌｙｚｅｒ；直線補間回路）を用いて計算して、ポリゴン辺から各描画点までの変位を求めている。このポリゴン辺から各描画点までの変位およびポリゴン辺の傾きの値からテーブルを引いて各描画点での色の値を決定し、これを実際の画面分の表示画像データ保存領域であるフレームバッファに書き込んでいる。
【０００７】
ところが、この方法では、領域ＤＤＡを用いているため、表示画像データ保存領域として少なくとも１フレーム分以上のフレームバッファが必要になり、ドット数が増えると多くのメモリ領域を必要とすること、および計算方法がポリゴン辺の特性（左辺・右辺の区分、Ｘ軸方向の増分の正・負、傾きの大きさ）に関わらず同じであるため、ポリゴン辺の特性によらず一定の計算量が発生するので計算時間が長くなるなどの問題がある。
【０００８】
本発明は、上記従来の問題を解決するもので、領域ＤＤＡおよびこれに用いるフレームバッファを用いることなく、表示画像データ保存領域としてラインバッファの利用を可能にしてメモリ領域を節約でき、かつ精度をできるだけ落とさずにポリゴン辺に適合した計算で計算時間の増加を抑えて良好にアンチエイリアシングができる３次元図形描画装置、これを用いた画像表示装置、この３次元図形描画処理装置を用いた３次元図形描画処理方法、これをコンピュータに実行させるための制御プログラムおよび、これを記録したコンピュータ読み取り可能な可読記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の３次元図形描画装置は、３次元ポリゴンを構成する各ポリゴン辺であって左辺・右辺に分けられたポリゴン辺を、さらに２次元ＸＹ座標上での該ポリゴン辺の傾きの大きさにより分類するポリゴン辺分類手段と、該ポリゴン辺分類手段で分類された該ポリゴン辺の隣接スキャンラインとの各交点に対応した各描画点において、少なくともＸ座標が最も小さい描画点とＸ座標が最も大きい描画点の各座標値を求める座標計算手段と、該座標計算手段で求めた描画点の各座標値から、該各交点に対応する所定単位領域のピクセル内にポリゴン内部領域が占める面積率を求める面積率計算手段とを有するものであり、そのことにより上記目的が達成される。
【００１０】
また、本発明の３次元図形描画装置におけるポリゴン辺分類手段は、前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いたＸ座標の差分値を求めるＸ軸方向差分演算手段と、該ポリゴン辺の終頂点および始頂点の一方のＹ座標の値から他方のＹ座標の値を引いたＹ座標の差分値を求めるＹ軸方向差分演算手段と、該Ｘ座標の差分値と該Ｙ座標の差分値との大小関係を比較して、該ポリゴン辺の傾きの大きさを判定することにより該ポリゴン辺を分類する比較判定手段とを有する。
【００１１】
さらに、本発明の３次元図形描画装置における比較判定手段は、前記ポリゴン辺の傾きの大きさが１を超える場合に、該ポリゴン辺が左辺であれば「左」、該ポリゴン辺が右辺であれば「右」のように該ポリゴン辺を分類する。
【００１２】
さらに、本発明の３次元図形描画装置における比較判定手段は、前記ポリゴン辺の傾きの大きさが１以下の場合に、前記Ｘ座標の差分値が負の値になる左辺であれば「上」、該Ｘ座標の差分値が負の値になる右辺であれば「下」、該Ｘ座標の差分値が正の値になる左辺であれば「下」、該Ｘ座標の差分値が正の値になる右辺であれば「上」のように該ポリゴン辺を分類する。
【００１３】
さらに、本発明の３次元図形描画装置における座標計算手段は、前記ポリゴン辺分類手段で得られたポリゴン辺の傾き情報に基づいて、前記始頂点からスキャンラインとの交点までのＸ軸方向の距離に０．５を加算して、小数点以下を切捨てることにより四捨五入を行うかまたは、該始頂点から該スキャンラインとの交点までのＸ軸方向の距離は小数点以下を切り捨てて切り下げとするかを判定して、該始頂点から現スキャンラインまたは次のスキャンラインとの交点までの整数化されたＸ軸方向の距離を求めるＸ軸方向距離獲得手段を有する。
【００１４】
さらに、本発明の３次元図形描画装置におけるＸ軸方向距離獲得手段は、前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いたＸ座標の差分値を求めるＸ軸方向差分演算手段と、該ポリゴン辺の終頂点および始頂点の一方のＹ座標の値から他方のＹ座標の値を引いたＹ座標の差分値を求めるＹ軸方向差分演算手段と、  該Ｙ座標の差分値で該Ｘ座標の差分値を割ることにより該ポリゴン辺上でのＹ軸方向に対するＸ軸方向の増加率を求めるＸＹ除算手段と、該始頂点から現スキャンラインの間にスキャンしたスキャンラインの本数を計算するスキャンライン増分値計算手段と、該ＸＹ除算手段で得たＹ軸方向に対するＸ軸方向の増加率に、該スキャンライン増分値計算手段で得た始頂点から現スキャンラインまでのスキャンラインの本数を乗算することにより、始頂点から現スキャンラインまでの間のＸ軸方向の距離を求める乗算手段と、該ポリゴン辺の傾き情報に基づいて、該乗算手段で求めたＸ軸方向の距離に０．５を加算するかどうかを判断し、得られた値の小数点以下を切り捨てることにより整数化したＸ軸方向の距離を求める四捨五入手段とを有する。
【００１５】
さらに、本発明の３次元図形描画装置における座標計算手段は、前記ポリゴン辺分類手段によって得られたポリゴン辺の傾き情報および、前記Ｘ軸方向距離獲得手段により求めたＸ軸方向の距離、前記始頂点のＸ座標の値により、該ポリゴン辺の隣接スキャンラインとの交点間にある各描画点においてＸ座標が最も小さい描画点からＸ座標が最も大きい描画点までのＸ座標値を求める交点Ｘ座標計算手段を有する。
【００１６】
さらに、本発明の３次元図形描画装置における面積率計算手段は、前記ピクセルにポリゴン内部領域が占める面積率を求める際に、前記ポリゴン辺分類手段で得られたポリゴン辺の情報と、前記座標計算手段で得られたＸ座標が最も小さい描画点およびＸ座標が最も大きい描画点のＸ座標情報とに基づいて、該ピクセルの左右上下端いずれの側から占める面積率を使うかを判別して面積率の計算を行う。
【００１７】
さらに、本発明の３次元図形描画装置における面積率計算手段は、前記ポリゴン辺が前記ポリゴン辺分類手段により、該ポリゴン辺の傾きの大きさが１を超える場合に、「左」または「右」と分類されたポリゴン辺であって、かつ現スキャンラインと交差してから次のスキャンラインと交差するまでの間に二つの前記ピクセル間に跨るかどうかによって、一定の面積率とするか詳細な計算を行うかを決定する計算方法決定手段を有する。
【００１８】
本発明の３次元図形描画方法は、３次元ポリゴンを構成する各ポリゴン辺であって左辺・右辺に分けられたポリゴン辺を、さらに２次元ＸＹ座標上での該ポリゴン辺の傾きの大きさにより分類するポリゴン辺分類ステップと、該ポリゴン辺分類ステップで分類された該ポリゴン辺の隣接スキャンラインとの各交点に対応した各描画点において、少なくともＸ座標が最も小さい描画点とＸ座標が最も大きい描画点の各座標値を求める座標計算ステップと、該座標計算ステップで求めた描画点の各座標値から、該各交点に対応する所定単位領域のピクセル内にポリゴン内部領域が占める面積率を求める面積率計算ステップとを有するものであり、そのことにより上記目的が達成される。
【００１９】
また、本発明の３次元図形描画方法におけるポリゴン辺分類ステップは、前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いた差分値を求めるステップと、該ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＹ座標の値を引いた差分値を求めるステップと、該Ｘ座標の差分値と該Ｙ座標の差分値の大小関係を比較して、該ポリゴン辺の傾きの大きさを判定することにより該ポリゴン辺を分類する比較判定ステップとを有する。
【００２０】
さらに、本発明の３次元図形描画方法における座標計算ステップは、前記ポリゴン辺分類ステップで得られたポリゴン辺の傾き情報に基づいて、前記始頂点からスキャンラインとの交点までのＸ軸方向の距離に０．５を加算して、小数点以下を切捨てることにより四捨五入を行うかまたは、該始頂点から該スキャンラインとの交点までのＸ軸方向の距離は小数点以下を切り捨てて切り下げとするかを判定して、該始頂点から現スキャンラインまたは次のスキャンラインとの交点までの整数化されたＸ軸方向の距離を求めるＸ軸方向距離獲得ステップと、該ポリゴン辺の傾き情報および、該Ｘ軸方向距離獲得ステップにより求めたＸ軸方向の距離、前記始頂点のＸ座標の値により、該ポリゴン辺のスキャンラインとの交点である描画点においてＸ座標が最も小さい描画点とＸ座標が最も大きい描画点の各座標値を求める交点Ｘ座標計算ステップとを有する。
【００２１】
さらに、本発明の３次元図形描画方法におけるＸ軸方向距離獲得ステップは、前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いた差分値を求めるステップと、該ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＹ座標の値を引いた差分値を求めるステップと、前記Ｙ座標の差分値で前記Ｘ座標の差分値を割ることにより該ポリゴン辺上でのＹ軸方向に対するＸ軸方向の増加率を求めるＸＹ除算ステップと、該始頂点から現スキャンラインの間にスキャンしてきたスキャンラインの本数を計算するスキャンライン増分値計算ステップと、該ＸＹ除算ステップで得たＹ軸方向に対するＸ軸方向の増加率に、該スキャンライン増分値計算ステップで得た始頂点から現スキャンラインまでのスキャンラインの本数を乗算することにより、該始頂点から現スキャンラインまでの間のＸ軸方向の距離を求める乗算ステップと、前記ポリゴン辺の傾き情報に基づいて、該乗算ステップで求めたＸ軸方向の距離に０．５を加算するかどうかを判断し、得られた値の小数点以下を切り捨てることにより整数化したＸ軸方向の距離を求める四捨五入ステップとを有する。
【００２２】
さらに、本発明の３次元図形描画方法における面積率計算ステップは、前記ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＸ座標の値を引いた差分値を求めるステップと、該ポリゴン辺の終頂点および始頂点の一方のＸ座標の値から他方のＹ座標の値を引いた差分値を求めるステップと、該Ｙ座標の差分値で該Ｘ座標の差分値を割ることにより該ポリゴン辺上でのＸ軸方向に対するＹ軸方向の増加率を求めるＹＸ除算ステップと、スキャンラインとポリゴン辺が交差するピクセルにおいて、前記座標計算ステップにより求めた各座標値と、前記ＹＸ除算ステップにより求めたＹ軸方向の増加率とにより、該ピクセルに占めるポリゴン内部領域の面積率を求めるに際し、該ポリゴン辺の傾きの大きさおよび該Ｘ座標の差分値の符号に応じて、該ピクセルの左右上下どの端から見た場合の該ポリゴン辺までの距離を面積率とするかを選択して計算する面積率選択計算ステップとを有する。
【００２３】
さらに、本発明の３次元図形描画方法における面積率選択計算ステップは、前記ポリゴン辺の傾きの大きさが１を超え、該ポリゴン辺が現スキャンラインと次のスキャンラインとの間にピクセル境界を跨ぐ場合に一定の面積率を適用し、そうでない場合は計算により面積率を求める。
【００２４】
本発明の制御プログラムは、請求項１０〜１５のいずれかに記載の３次元図形描画処理方法の各処理ステップをコンピュータに実行させるためのものであり、そのことにより上記目的が達成される。
【００２５】
本発明の可読記録媒体は、請求項１６に記載の制御プログラムが記録されたコンピュータ読み取り可能なものであり、そのことにより上記目的が達成される。
【００２６】
本発明の画像表示装置は、請求項１〜９のいずれかに記載の３次元図形描画処理装置を用いて表示画面を表示可能とするものであり、そのことにより上記目的が達成される。
【００２７】
上記構成により、以下、本発明の作用を説明する。
【００２８】
本発明においては、ポリゴン辺の始頂点・終頂点の情報とスキャンラインの情報のみからポリゴン辺とスキャンラインとの交点座標をポリゴン辺の特性に従って計算方法を変化させながら求め、さらに、ポリゴン辺とスキャンラインとの交点に対応する所定単位領域のピクセルにおけるポリゴン内部領域の占める面積率を計算することによりアンチエイリアシングのためのブレンディング係数も得る事が可能となる。これによって、従来のように領域ＤＤＡおよびこれに用いるフレームバッファを用いることなく、表示画像データ保存領域としてラインバッファの利用を可能にしてメモリ領域を節約でき、かつ精度をできるだけ落とさずにポリゴン辺に適合した計算で計算時間の増加を抑えて良好なアンチエイリアシングを可能とする。
【発明の効果】
【００２９】
以上により、本発明のよれば、ポリゴン辺の始頂点・終頂点の情報とスキャンラインの情報のみからポリゴン辺とスキャンラインの交点座標を求める際に、ポリゴン辺の傾きの大小および始頂点と終頂点のＸ座標値の大小により場合分けを行いそれぞれに最も適した計算方法を適用することで、より高速でかつ精度を保った描画点の特定が可能になるとともに、上下の描画点の情報に依存しないためラインバッファなどの保存領域の非常に少ない描画方法の使用ができる。
【００３０】
さらに、ポリゴン辺が他のポリゴンとの共有辺である場合にも２つのポリゴンの境界が一意に決定される。また各描画点におけるピクセルに占めるポリゴン内部領域の面積率を求める際にも同様の分類を行うことに加えて、ポリゴン辺とピクセル境界との関係によっても計算方法を変えることにより精度を損なわず高速に面積率の決定が行われ、アンチエイリアシングにおいてもラインバッファ方式を対応させることができる。その結果、従来技術のように大量の記憶領域や処理時間を必要とすることなく、より良好なアンチエイリアシングを行うことができる。
【発明を実施するための最良の形態】
【００３１】
以下に、本発明の３次元図形描画装置および３次元図形描画方法の実施形態について図面を参照しながら説明する。
【００３２】
図１は、本発明の３次元描画処理装置の一実施形態における構成例を示すブロック図である。
【００３３】
図１において、本実施形態の３次元描画処理装置１は、ポリゴン辺頂点座標保持メモリ２と、Ｘ軸方向差分演算手段としてのＸ軸方向差分演算器３と、Ｙ軸方向差分演算手段としてのＹ軸方向差分演算器４と、ＸＹ除算手段としてのＸＹ除算器５と、スキャンラインカウンタ手段としてのスキャンラインカウンタ６と、スキャンライン増分値計算手段としてのスキャンライン増分値計算器７と、乗算手段としての乗算器８と、比較判定手段としての比較器９と、四捨五入手段としての四捨五入回路１０と、交点Ｘ座標計算手段としての交点Ｘ座標計算回路１１と、ＹＸ除算手段としてのＹＸ除算器１２と、面積率初期値計算手段としての面積率初期値計算回路１３と、Ｘカウンタ手段としてのＸカウンタ１４と、選択加算手段としての選択加算回路１５とを有している。
【００３４】
ポリゴン辺頂点座標保持メモリ２は、各ポリゴン（多角形面）辺について左辺・右辺別に始頂点・終頂点のＸＹ座標値が格納されており、この座標値は以下のＸ軸方向差分演算器３と、Ｙ軸方向差分演算器４との入力になる。また、ポリゴン辺頂点座標保持メモリ２から得られるＸ座標値は交点Ｘ座標計算回路１１に入力されて使用され、また、ポリゴン辺頂点座標保持メモリ２から得られるＹ座標値はスキャンライン増分値計算器７に入力されて使用される。この場合に、各ポリゴン（多角形面）辺について左辺・右辺とは、ポリゴンをスキャンラインが横切る場合に二つのポリゴン辺を横切るが、スキャンラインが横切った二つのポリゴン辺の左側を左辺とし、右側を右辺とする。
【００３５】
Ｘ軸方向差分演算器３は、左辺・右辺に分けられたポリゴン辺（多角形辺）についてポリゴン辺の終頂点のＸ座標の値から始頂点のＸ座標の値を引いたＸ座標の差分値を求める。
【００３６】
Ｙ軸方向差分演算器４は、左辺・右辺に分けられたポリゴン辺（多角形辺）についてポリゴン辺の終頂点のＹ座標の値から始頂点のＹ座標の値を引いたＹ座標の差分値を求める。
【００３７】
ＸＹ除算器５は、Ｙ座標の差分値でＸ座標の差分値を割ることでポリゴン辺上でのＹ軸方向に対するＸ軸方向の増加率を求める。
【００３８】
スキャンラインカウンタ６は、スキャンラインをカウントしており、次のスキャンラインの描画に移る時にカウントアップする。
【００３９】
スキャンライン増分値計算器７は、この現スキャンライン値ScanYから始頂点のＹ座標値sy_leftを引いて始頂点から現スキャンラインの間にスキャンしてきたスキャンラインの本数を計算する。
【００４０】
乗算器８は、ＸＹ除算器５で得たＹ軸方向に対するＸ軸方向の増加率に、スキャンライン増分値計算器７で得た始頂点から現スキャンラインまでのスキャンラインの本数を乗算することにより、始頂点から現スキャンラインまでの間のＸ軸方向の距離を求める。
【００４１】
比較器９は、Ｘ軸方向差分演算器３からのＸ座標の差分値における絶対値と、Ｙ軸方向差分演算器４からのＹ座標の差分値との大小関係を比較して、即ちポリゴン辺の傾きの大きさを判定する。このポリゴン辺の傾きの大きさの判定として、ポリゴン辺のＹ軸方向の傾きの大きさが１を超える場合にポリゴン辺が左辺であれば「左」、ポリゴン辺が右辺であれば「右」とポリゴン辺を分類する。また、図４に示すように、ポリゴン辺の傾きの大きさの判定として、ポリゴン辺のＹ軸方向の傾きの大きさが１以下の場合に、Ｘ座標の差分値が負の値になる左辺であれば「上」、Ｘ座標の差分値が負の値になる右辺であれば「下」、Ｘ座標の差分値が正の値になる左辺であれば「下」、Ｘ座標の差分値が正の値になる右辺であれば「上」とポリゴン辺を分類する。これらのポリゴン辺頂点座標保持メモリ２、Ｘ軸方向差分演算器３、Ｙ軸方向差分演算器４および比較器９によりポリゴン辺分類手段が構成され、このポリゴン辺分類手段は、３次元ポリゴンを構成する各ポリゴン辺であって左辺・右辺に分けられたポリゴン辺を、さらに２次元ＸＹ座標上でのポリゴン辺の傾きの大きさに応じて分類する。
【００４２】
四捨五入回路１０は、比較器９からの比較結果、即ちポリゴン辺の傾きの大きさに応じて、始頂点から現スキャンライン上のポリゴン辺との交点までの間のＸ軸方向の距離（乗算器８からの出力値）に０．５を加算するかどうかを判断し、得られた値の小数点以下を切り捨てることにより整数化したＸ軸方向距離を求める。即ち、以上のポリゴン辺頂点座標保持メモリ２、Ｘ軸方向差分演算器３、Ｙ軸方向差分演算器４、ＸＹ除算器５、スキャンラインカウンタ６、スキャンライン増分値計算器７、乗算器８および四捨五入回路１０によりＸ軸方向距離獲得手段が構成されている。このＸ軸方向距離獲得手段は、ポリゴン辺分類手段で得られたポリゴン辺の傾き情報に基づいて、始頂点からスキャンラインとの交点までのＸ軸方向の距離に０．５を加算して、小数点以下を切捨てることで四捨五入を行うかまたは、該始頂点からスキャンラインとの交点までのＸ軸方向の距離は小数点以下を切り捨てて切り下げとするかを判定して、該始頂点から現スキャンラインまたは次のスキャンラインとの交点までの整数化されたＸ軸方向の距離を求める。
【００４３】
交点Ｘ座標計算回路１１は、現スキャンラインと次のスキャンラインまでの間にポリゴン辺が交差する所定単位領域のピクセルにおける各描画点のうちＸ座標が最も小さい描画点からＸ座標が最も大きい描画点までのＸ座標値を、Ｘ軸方向差分演算器３からのＸ座標の差分値の符号に従って四捨五入回路１０によって求められた整数化したＸ軸方向の距離を用いて選択的に計算する。
【００４４】
ＹＸ除算器１２は、Ｘ座標の差分値でＹ座標の差分値の絶対値を割ることでポリゴン辺上でのＸ軸方向に対するＹ軸方向の増加率を求める。
【００４５】
面積率初期値計算回路１３は、スキャンラインとポリゴン辺が交差するピクセルにおいて、交点Ｘ座標計算回路１１による描画点Ｘ座標値と、ＹＸ除算器１２によるＹ軸方向の増加率とにより、ピクセルに占めるポリゴン内部領域の面積率を求めるに際し、ポリゴン辺の傾きの大きさと、Ｘ座標の差分値の符号とに従って、ピクセルの左右上下どの端から見た場合のポリゴン辺までの距離を面積率とするかを選択してＸ座標が最も小さい描画点でのピクセルにおける面積率を計算する。
【００４６】
Ｘカウンタ１４は、スキャンラインに沿って次のピクセルに進むときの描画点Ｘ座標をカウントする。
【００４７】
選択加算回路１５は、このカウントされた描画点Ｘ座標を用いて、図１０（ｂ）のエッジタイプ「上」での例のように左隣のピクセルにおける面積率の値にＸ座標＋１当たりのＹ座標増加分IdLを加算する。このようにして順次Ｘ座標が最も大きい描画点までの面積率を求める。
【００４８】
以上のＹＸ除算器１２、面積率初期値計算回路１３、Ｘカウンタ１４および選択加算回路１５により面積率計算手段が構成され、面積率計算手段は、座標計算手段で求めた描画点の各座標値から、ポリゴン辺の隣接スキャンラインとの各交点に対応する所定単位領域のピクセル内にポリゴン内部領域が占める面積率を求める。この面積率計算手段は、このピクセルにポリゴン内部領域が占める面積率を求める際に、ポリゴン辺分類時に得られたポリゴン辺の情報と、座標計算時に得られたＸ座標が最も小さい描画点およびＸ座標が最も大きい描画点のＸ座標情報とに基づいて、ピクセルの左右上下端いずれの側から占める面積率を使うかを判別して面積率の計算を行う。さらに、この面積率計算手段は、ポリゴン辺が「左」または「右」と分類されたポリゴン辺であって、かつ現スキャンラインと交差してから次のスキャンラインと交差するまでの間に二つのピクセル間に跨るかどうかによって、一定の面積率とするか詳細な計算を行うかを決定する計算方法決定手段を有する。
【００４９】
以下、上記構成を更に詳細に説明すると共に、その動作を説明する。
【００５０】
まず、Ｘ軸方向差分演算器３では、ポリゴン辺頂点座標保持メモリ２にアクセスして得たポリゴン辺終頂点Ｘ座標値からポリゴン辺始頂点Ｘ座標値を引いた差を符号付きで求める。このとき求まったＸ軸方向差分値の最上位ビットmは符号を表し、それ以下のビットは差分値の絶対値となっている。左辺の場合のＸ軸方向差分値をdx_left、右辺の場合のＸ軸方向差分値をdx_rightとすると、
左辺の場合、
Ｘ軸方向差分値（符号付き）：       dx_left = ex_left - sx_left
Ｘ軸方向差分値（絶対値）：  d_left = dx_left [m-1:0]
Ｘ軸方向差分値（符号）：    dx_left [m] （１：負  ０：正）
右辺の場合、
Ｘ軸方向差分値（符号付き）：       dx_right = ex_right - sx_right
Ｘ軸方向差分値（絶対値）：  d_right = dy_right [m-1:0]
Ｘ軸方向差分値（符号）：    dx_right [m]       （１：負  ０：正）
となる。
【００５１】
また、Ｙ軸方向差分演算器４でも、ポリゴン辺頂点座標保持メモリ２にアクセスして得たポリゴン辺終頂点Ｙ座標値からポリゴン辺始頂点Ｙ座標値を引いた差を求める。この場合には、ポリゴン辺の始頂点は、図２のように、常に、Ｙ座標の小さい方の頂点を始頂点と決めてあるため、始頂点のＹ座標値は、常に、終頂点のＹ座標値よりも小さくなるので、このＹ座標値の差分値は常に正の値である。左辺の場合のＹ軸方向差分値をdy_left、右辺の場合のＹ軸方向差分値をdy_rightとすると、
Ｙ軸方向差分値（正の値）：  dy_left = ey_left - sy_left
Ｙ軸方向差分値（正の値）：  dy_right = ey_right - sy_right
となる。
【００５２】
このようにして得られたＸ軸方向差分値の絶対値およびＹ軸方向差分値を元に、ＸＹ除算器５により、ポリゴン辺上で始頂点から終頂点の方向に、Ｙ軸方向に対するＸ軸方向の増加率を符号なしで求める。
【００５３】
次に、図３を用いて左辺の場合を例に挙げて、ポリゴン辺とスキャンラインとの交点にある描画点のうちＸ座標が最も小さい描画点（以下、交差開始描画点と表記）Ｘ座標整数値sxLと、Ｘ座標が最も大きい描画点（以下、交差終了描画点と表記）Ｘ座標整数値exLとを求める方法について説明する。なお、右辺の場合においても同様の手順で求めることができる。
【００５４】
スキャンラインカウンタ６では、現在の現スキャンライン値ScanYを示しており、次のスキャンラインの描画に移る時にカウントアップされる。
【００５５】
スキャンライン増分値計算器７により、この現スキャンライン値ScanYから始頂点のＹ座標値sy_leftを引いて始頂点から現スキャンラインの間にスキャンしてきたスキャンラインの本数を計算する。これは始頂点から現スキャンラインまでのＹ軸方向の増分値に対応している。
【００５６】
乗算器８では、ＸＹ除算器５の出力値にスキャンライン増分値計算器７からの出力値を乗じて（掛け算して）、始頂点からポリゴン辺の現スキャンラインとの交点までのＸ軸方向を増分値sL_tmpを、小数点以下を含めて求める。また、次のスキャンラインのＹ座標値までのＹ座標の増分値eL_tmpも同時に求めておく。
【００５７】
次に、ポリゴン辺と隣接スキャンラインとの各交点となる描画点のＸ座標を求める処理に入る。ここでは、図４（左辺の場合の例、右辺の場合は図５参照）に示すように比較器９のＸ軸方向差分値の絶対値d_leftとＹ軸方向差分値dy_leftとの比較結果（大小関係）および、Ｘ軸方向差分演算器３の符号出力dx_left [m]によりポリゴン辺の分類を行う。即ち、Ｘ軸方向差分値の絶対値d_leftがＹ軸方向差分値dy_leftよりも小さければ（d_left < dy_left）、エッジタイプ「左」と分類し、そうでない場合（d_left ≧dy_left）さらに符号出力dx_left [m] = 1であればエッジタイプ「上」、符号出力dx_left [m] = 0であればエッジタイプ「下」と分類する。
【００５８】
エッジタイプ「左」のようにＸ軸に対するＹ軸方向の傾きが１を超えるような立っているポリゴン辺については（d_left < dy_left）、現スキャンラインから次のスキャンラインまで一つ進んでもＸ軸方向への変化は±１未満であるため、この間の描画点は一つだけであるが、エッジタイプ「上」または「下」のようにＸ軸に対するＹ軸方向の傾きが１以下の寝ているポリゴン辺では（d_left ≧dy_left）、スキャンラインが１進むとＸ軸方向への変化が２以上になり得るため、この二つの場合に分けて計算処理する。
【００５９】
実際の計算処理の流れは以下のようになる。
【００６０】
四捨五入回路１０では、比較器９からの識別信号により、図６に示すフローチャートに従って、まず、ステップＳ１でエッジタイプの判定を行い、ステップＳ１でエッジタイプ「左」または「右」でない場合（Ｎｏ）には、ステップＳ２でsL_tmp（左辺の場合、右辺ではsR_tmp、以下同様）に０．５を加算しsL'とする。また、ステップＳ１でエッジタイプ「左」または「右」の場合には、ステップＳ３でそのままのsL_tmpをsL'とする。
【００６１】
さらに、四捨五入回路１０では、ステップＳ４で、得られた値の小数点以下を切捨てして整数値化し、これを始頂点からスキャンラインとポリゴン辺の交差開始描画点までのＸ軸方向距離sLとする。これにより、エッジタイプ「上」または「下」のポリゴン辺についてはsL_tmpの値が四捨五入されたことになる。またエッジタイプ「左」または「右」については前述のように１スキャンライン間に１描画点しかないため、見た目に大差ないのでこのような四捨五入処理を行わない。始頂点からスキャンラインとポリゴン辺の交差終了描画点までのＸ軸方向距離eLについても同様の手順でeL_tmpより算出する。
【００６２】
次に、交点Ｘ座標計算回路１１では、最終的なsxL、exLを求めるために、比較器９からの識別信号と、Ｘ軸方向差分演算器３からの符号出力dx_left [m]とにより、図７に示すフローチャートに従って、四捨五入回路１０からのsLとeLおよびポリゴン辺頂点座標保持メモリ２からの始頂点Ｘ座標値sx_leftを使って描画点Ｘ座標整数値sxLおよびexLを求める。
【００６３】
図７に示すように、交点Ｘ座標計算回路１１により、ステップＳ１１で、まず、エッジタイプ「左」または「右」の判定を行い、ステップＳ１２で始頂点からスキャンラインとポリゴン辺の交差開始描画点までのＸ軸方向距離補正値sxL'、始頂点からスキャンラインとポリゴン辺の交差終了描画点までのＸ軸方向距離補正値exL'を求めるために、エッジタイプで場合分けを行う。
【００６４】
即ち、ステップＳ１１でエッジタイプが「左」または「右」の場合（Ｙｅｓ）には、ステップＳ１２でsLのみを使い、Ｘ軸方向差分演算器３からの符号出力dx_left [m]が１、即ち、負ならば（Ｙｅｓ）、ステップＳ１３でsxL'、exL'の両方とも-sL - 1とし、ステップＳ１２でＸ軸方向差分演算器３からの符号出力dx_left [m]が０、即ち正ならば（Ｎｏ）、ステップＳ１４でsxL'とexL'の両方ともsLとする。前述のようにエッジタイプが「左」または「右」については、１スキャンライン間に１描画点しかないため、sxL'とexL'はsLがわかった時点で両方とも同じ値で即座に求まる。
【００６５】
また、ステップＳ１１でエッジタイプが「左」または「右」ではないと判定された場合（Ｎｏ）には、ステップＳ１５でＸ軸方向差分演算器３からの符号出力dx_left [m]が１、即ち負ならば（Ｙｅｓ）、ステップＳ１６でsxL'を-eLとし、exL'を-sL - 1とし、ステップＳ１５でＸ軸方向差分演算器３からの符号出力dx_left [m]が０、即ち正ならば（Ｎｏ）、ステップＳ１７でsxL'をsLとし、exL'をeL - 1とする。
【００６６】
最後に、ステップＳ１８で、このsxL'、exL'にsx_leftを足してスキャンラインとポリゴン辺の交差開始描画点Ｘ座標sxLと交差終了描画点Ｘ座標exLが求まる。また、sxLとexLの間の描画点はsxLからexLまでのＸ座標が整数の点である。このように、sxL'とexL'を計算することによって、仮に、あるポリゴン辺が隣接するポリゴン辺との共有辺であった場合にも、図８のように両方のポリゴン辺について描画点が揃い矛盾なく描画できる。
【００６７】
上記で説明した処理方法の図解例として図３の丸で囲んだ部分の拡大図を図９に示している。この図９の図解例では、左辺でエッジタイプが「下」の場合における実際の値の変化を図解している。
【００６８】
ここまでで、ポリゴン辺が現スキャンラインから次のスキャンラインとの間に交わる部分の描画点Ｘ座標が求まったことになり、ポリゴンエッジの描画を効率よく行うことができる。
【００６９】
次に、上記処理過程で作成されたsxL、exLの値を用いてスキャンラインとポリゴン辺が交差する描画点におけるピクセルに占めるポリゴン内部領域の面積を求める。
【００７０】
図１０（ａ）および図１０（ｂ）は、左辺の場合についてのスキャンラインとポリゴン辺が交差する描画点において、この描画点に対応する描画すべき所定単位領域（ピクセル）内に占めるポリゴン内部領域の面積を求める例を示している。ここで、描画点としてＸ座標値１×Ｙ座標値１のピクセル（１画素に対応）の左上角（整数値）を例示しているが、描画点は正方形四隅の４点ある。
【００７１】
ＹＸ除算器１２により、Ｘ軸方向差分演算器３からのＸ軸方向差分値の絶対値d_leftおよびＹ軸方向差分演算器４からのＹ軸方向差分値dy_leftを元に、ポリゴン辺上で始頂点から終頂点の方向にＸ軸方向の値に対するＹ軸方向の値の増加割合IdLを求める。図２のように始頂点と終頂点を決めてあるため、この増加割合IdLは常に正の値である。
【００７２】
面積率初期値計算回路１３において、Ｘ軸方向差分演算器３からの符号出力dx_left [m]と、比較器９の識別信号により判定を行った上で、ＹＸ除算器１２の出力IdLと交点Ｘ座標計算回路１１で発生する交点情報sL'、eL'、sL、eLとから中間変数aLを求めた後、スキャンラインとポリゴン辺の交差開始描画点および交差終了描画点におけるピクセルに占めるポリゴン内部領域の面積a_leftを求める。
【００７３】
以下、図１１のフローチャートにより、面積率計算のアルゴリズムについて詳細に説明する。
【００７４】
最初にポリゴンエッジの傾きの大きさが１を超える場合、ステップＳ２１でエッジタイプを判断し、エッジタイプが「左」または「右」の場合（Ｙｅｓ）については、さらにステップＳ２２でsL < eLであるかどうか、即ちポリゴン辺が現スキャンラインと次のスキャンラインとの間に二つのピクセル間に跨るかどうかにより場合分けを行い、ステップＳ２２で跨る時（Ｙｅｓ）は、ステップＳ２３で中間変数aLに最大値を代入する。ここで最大値とは面積率１００％、即ちピクセルがポリゴン内部に含まれた状態に相当するaLの値であり、sL'などの小数点以下有効桁の最大値に等しいものとする。
【００７５】
また、ステップＳ２２で、ポリゴン辺が現スキャンラインと次のスキャンラインとの間に二つのピクセル間に跨らない場合（Ｎｏ）は、ステップＳ２４で中間変数aLをsL'とeL'の小数部分の平均値とする。これは図１０（ａ）のエッジタイプ「左」の例のようにピクセルＹ中心における始頂点側ピクセル端からのポリゴン辺までの距離を表す。
【００７６】
さらに、ステップＳ２５では、始頂点と終頂点とのＸ座標の大小に従って、ステップＳ２６で最大値から中間変数aLを引くかまたは、ステップＳ２７で中間変数aLそのままとするかを選択、計算しその値をsxLのピクセルにおけるポリゴン内部領域の面積率a_leftとする。この選択は、常に、ポリゴン内部側のピクセル端からの距離によって面積率を求めるための処理である。以上のようにポリゴン辺の傾きが１を超える場合、ポリゴン辺がピクセル間に跨るかどうかでさらに計算方法を変えることにより精度を落とさずに計算を簡略化している。
【００７７】
次に、ポリゴンエッジの傾きの大きさが１以下の場合、ステップＳ２１でエッジタイプ「左」または「右」ではないと判断された場合（Ｎｏ）には、まず、ステップＳ２８でＸ軸方向差分演算器３の符号出力dx_left [m]により場合分けして、その符号出力dx_left [m]が１ではない場合（Ｎｏ）、ステップＳ２９で始頂点から描画点sxLまでのＹ幅IdL×eLに描画点sxLからピクセルＸ中心までのＹ幅分IdL÷2を加算して中間変数aLを求める。また、ステップＳ２８でその符号出力dx_left [m]が１の場合（Ｙｅｓ）、ステップＳ３０で始頂点から描画点sxLまでのＹ幅IdL×eLに描画点sxLからピクセルＸ中心までのＹ幅分IdL÷2を減算して中間変数aLを求める。
【００７８】
この中間変数aLの小数部分は図１０（ｂ）のエッジタイプ「上」の例のようにピクセルのＸ中心における始頂点側ピクセル端からのポリゴン辺までの距離を表す。前述のエッジタイプ「左」または「右」の場合と同様にステップＳ３１〜ステップＳ３３で始頂点と終頂点とのＸ座標の大小によりポリゴンの内部側のピクセル端からの距離となるようにしてsxLのピクセルにおけるポリゴン内部領域の面積率a_leftを算出する。結果的に図４および図５のエッジタイプ「上」に相当する場合はピクセルの下端からの面積率を、エッジタイプ「下」に相当する場合はピクセルの上端からの面積率を求めるようにする。
【００７９】
これでポリゴン辺がスキャンラインと交わる描画点のうち交差開始描画点sxLのピクセル内でのポリゴン内部領域の面積率a_leftの値が求まったことになる。エッジタイプ「上」または「下」の場合にはさらに残りの交点の描画点、即ちＸ座標がsxL＋１からexLまでの描画点のピクセルについて面積率を求めなければならない。
【００８０】
その計算法は、図１０（ｂ）のエッジタイプ「上」での例のように左隣のピクセルにおける面積率の値にＸ座標＋１当たりのＹ座標増加分IdLを加算することにより求まる。エッジタイプ「上」または「下」の場合にはＹ方向の面積率を計算するため、このようにIdLの加算で順次面積率を計算することができる。この処理は図１のＸカウンタ１４の示す描画点Ｘ座標を使って選択加算回路１５において行われる。
【００８１】
このようにして、ポリゴン辺とスキャンラインの交点での全ての描画点においてピクセル内部領域におけるポリゴン内部の面積率が得られる。
【００８２】
以上により、本実施形態によれば、３次元図形描画装置１によれば、ポリゴンを構成する各辺について左辺・右辺に分けられたポリゴン辺をそのＹ軸方向の傾きの大きさによって、また、各辺の始頂点・終頂点のＸ座標の大小関係によってそれぞれ最適な計算方法を選択することができ、そのため精度の低下をできるだけ抑えた上でハードウェアリソースを増やすことなくポリゴンとスキャンライン交点の描画点座標計算を実現することができる。
【００８３】
さらに、アンチエイリアシングに必要なピクセルに占めるポリゴン内部領域の面積率を同時に求めることができる。この場合にも、また同様の場合分けを行うことにより計算時間の増加を抑えるようになっている。
【００８４】
なお、本実施形態では、３次元図形描画処理装置１をハードウェア構成で説明したが、これに限らず、ソフトウェア構成でもよい。
【００８５】
この場合、上記３次元図形描画処理方法は、例えば光ディスク（ＣＤ）、ハードディスクおよび磁気ディスク（ＦＤ）などのコンピュータ読み出し可能な可読記録媒体として、ＲＯＭ（記憶手段）からワークメモリのＲＡＭ内に読み出された３次元図形描画処理用の制御プログラムおよびその各種データにしたがって、制御手段としてのＣＰＵ（中央演算処理装置）が、
左辺・右辺に分けられたポリゴン辺についてポリゴン辺の終頂点のＸ座標の値から始頂点のＸ座標の値を引いた差分値を求めるステップと、
左辺・右辺に分けられたポリゴン辺についてポリゴン辺の終頂点のＸ座標の値から始頂点のＹ座標の値を引いた差分値を求めるステップと、
左辺・右辺の終頂点のＹ座標の値から始頂点のＹ座標の値を引いた差分値でＸ座標の差分値の絶対値を割ることでポリゴン辺上でのＹ軸方向に対するＸ軸方向の増加率を求めるステップと、
Ｙ軸方向に対するＸ軸方向の増加率に始頂点から現スキャンラインまでのスキャンラインの本数を掛けて始頂点から現スキャンラインまでの間のＸ軸方向の距離を求めるステップと、
Ｘ座標の差分値の絶対値とＹ座標の差分値との大小関係、即ちポリゴン辺の傾きの大きさを求めるステップと、
このポリゴン辺の傾きの大きさに従って、始頂点から現スキャンライン上のポリゴン辺との交点までの間のＸ軸方向の距離に０．５を加算するかどうかを判断し、得られた値の小数点以下を切り捨てることにより整数化したＸ軸方向の距離を求め、また、次のスキャンラインに対しても同様の処理を行うＸ軸方向距離獲得ステップと、
現スキャンラインと次のスキャンラインまでの間にポリゴン辺が交差するピクセルの描画点のうちＸ座標が最も小さい描画点からＸ座標が最も大きい描画点までのＸ座標値を、Ｘ座標の差分値の符号に従ってＸ軸方向距離獲得ステップで求められたＸ軸方向の距離を用いて選択的に計算する交点Ｘ座標計算ステップと、
Ｙ座標の差分値でＸ座標の差分値の絶対値を割ることでポリゴン辺上でのＸ軸方向に対するＹ軸方向の増加率を求めるＹ軸方向増加率獲得ステップと、
スキャンラインとポリゴン辺が交差するピクセルにおいて、交点Ｘ座標計算ステップによる描画点Ｘ座標値と、Ｙ軸方向増加率獲得ステップによるＹ軸方向の増加率とにより、ピクセルに占めるポリゴン内部領域の面積率を求めるに際し、ポリゴン辺の傾きの大きさ及びＸ座標の差分値の符号に従ってピクセルの左右上下どの端から見た場合のポリゴン辺までの距離を面積率とするかを選択し計算するステップと、
当該ステップにおいて、さらにポリゴン辺の傾きの大きさが１を超える時はポリゴン辺が現スキャンラインと次のスキャンラインとの間にピクセル境界を跨ぐ場合には一定の面積率を適用し、そうでない場合には計算により面積率を求めるステップとの各ステップ（機能手段）の処理手順を順次実行する。これによって、領域ＤＤＡおよびこれに用いるフレームバッファを用いることなく、表示画像データ保存領域としてラインバッファの利用を可能にしてメモリ領域を節約でき、かつ精度をできるだけ落とさずにポリゴン辺に適合した計算で計算時間の増加を抑えて良好にアンチエイリアシングができる本発明の効果を奏する。
【００８６】
以上の本発明の３次元図形描画処理装置を、コンピュータグラフィックスを表示可能な３Ｄのゲーム装置などの画像表示装置に用いることができて上記本発明の効果を奏する。
【００８７】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【００８８】
本発明は、例えばコンピュータグラフィックス（ＣＧ）を表示可能なゲーム装置の表示部などに用いられ、限られた演算器を効率よく利用することが可能であり、精度を落とさずかつ高速に整合性の高いポリゴンエッジ描画とアンチエイリアシングを容易にする３次元図形描画処理装置、これを用いた画像表示装置、この３次元図形描画処理装置を用いた３次元図形描画処理方法、これをコンピュータに実行させるための制御プログラムおよび、これを記録したコンピュータ読み取り可能な可読記録媒体の分野において、ポリゴン辺の始頂点・終頂点の情報とスキャンラインの情報のみからポリゴン辺とスキャンラインの交点座標を求める際に、ポリゴン辺の傾きの大小および始頂点と終頂点のＸ座標値の大小により場合分けを行いそれぞれに最も適した計算方法を適用することでより高速でかつ精度を保った描画点の特定が可能になるとともに、上下の描画点の情報に依存しないためラインバッファ等の保存領域の非常に少ない描画方法の使用が可能である。さらにポリゴン辺が他のポリゴンとの共有辺である場合にも２つのポリゴンの境界が一意に決定される。また各描画点におけるピクセルに占めるポリゴン内部領域の面積率を求める際にも同様の分類を行うことに加えて、ポリゴン辺とピクセル境界との関係によっても計算方法を変えることにより精度を損なわず高速に面積率の決定が行われ、アンチエイリアシングにおいてもラインバッファ方式に対応可能となる。その結果、従来技術のように大量の記憶領域や処理時間を必要とすることなくアンチエイリアシングを行うことができる。
【図面の簡単な説明】
【００８９】
【図１】本発明の３次元描画処理装置の一実施形態における構成例を示すブロック図である。
【図２】本発明においてポリゴン辺の始頂点・終頂点の決め方を示す図である。
【図３】本発明においてポリゴン辺とスキャンラインの関係の一例を示す図である。
【図４】本発明の左辺のポリゴン辺分類方法を示す図である。
【図５】本発明の右辺のポリゴン辺分類方法を示す図である。
【図６】図１の四捨五入回路の処理動作を示すフローチャートである。
【図７】図１の交点Ｘ座標計算回路の処理動作を示すフローチャートである。
【図８】本発明において、隣接する二つのポリゴン境界となっているポリゴン辺の場合の描画点計算結果の一例を示す図である。
【図９】図３のポリゴン辺とスキャンラインの交点付近の始頂点からの距離の関係を詳細に示す図である。
【図１０】（ａ）および（ｂ）は、本発明のピクセルにおけるポリゴン内部領域の面積率をエッジタイプにより異なる計算で求める方法の一例を示す図である。
【図１１】図１の面積率初期値計算回路の処理動作を示すフローチャートである。
【符号の説明】
【００９０】
１  ３次元図形描画処理装置
２  ポリゴン辺頂点座標保持メモリ
３  Ｘ軸方向差分演算器
４  Ｙ軸方向差分演算器
５  ＸＹ除算器
６  スキャンラインカウンタ
７  スキャンライン増分値計算器
８  乗算器
９  比較器
１０  四捨五入回路
１１  交点Ｘ座標計算回路
１２  ＹＸ除算器
１３  面積率初期値計算回路
１４  Ｘカウンタ
１５  選択加算回路
【図１】
2006139727.tif 000003
【図２】
2006139727.tif 000004
【図３】
2006139727.tif 000005
【図４】
2006139727.tif 000006
【図５】
2006139727.tif 000007
【図６】
2006139727.tif 000008
【図７】
2006139727.tif 000009
【図８】
2006139727.tif 000010
【図９】
2006139727.tif 000011
【図１０】
2006139727.tif 000012
【図１１】
2006139727.tif 000013