(57)【要約】【課題】陰面処理の効率を向上させることができる画像処理装置を提供すること。【解決手段】３次元コンピュータグラフィックスを描画した画像の描画領域を分割したブロックごとに、階層Ｚ値を記憶する階層Ｚバッファ１６０と、ポリゴンの頂点のピクセルのうち最も手前に存在するピクセルのＺ値であるポリゴンＺ値を選択するポリゴンＺ値選択部１３２ｂと、ポリゴンのなす平面に含まれるピクセルのうちブロックにおいて最も手前に存在するピクセルのＺ値であるブロックＺ値を算出するブロックＺ値算出部１３２ｄと、ポリゴンＺ値とブロックＺ値とを比較し、もっとも視点に近い値を推定Ｚ値として選択するＺ値選択部１３２ｅと、推定Ｚ値が階層Ｚ値より奥に存在する値である場合に、ポリゴンのブロックにおける描画処理を取り消す陰面消去部１３２ｆと、を備えた。【選択図】        図１
2006235926.tif 000002
【特許請求の範囲】
【請求項１】
３次元コンピュータグラフィックスを描画した画像の描画領域を分割した部分領域であるブロックごとに、前記ブロック内で既に描画されたピクセルのうち視点に対し最も奥に存在するピクセルの奥行き方向の座標値である階層Ｚ値を記憶する階層Ｚ値記憶手段と、
描画の単位となる多角形であるポリゴンの頂点のピクセルのうち視点に対し最も手前に存在するピクセルの奥行き方向の座標値であるポリゴンＺ値を算出する第１のＺ値算出手段と、
前記ポリゴンのなす平面に含まれるピクセルのうち前記ブロックにおいて視点に対し最も手前に存在するピクセルの奥行き方向の座標値であるブロックＺ値を算出する第２のＺ値算出手段と、
前記第１のＺ値算出手段が算出した前記ポリゴンＺ値と、前記第２のＺ値算出手段が算出した前記ブロックＺ値とを比較し、最も視点に近い値を、前記ブロックにおいて視点に対し最も手前に存在する前記ポリゴンのピクセルの奥行き方向の座標値の推定値である推定Ｚ値として選択するＺ値選択手段と、
前記Ｚ値選択手段が選択した前記推定Ｚ値と、前記階層Ｚ値記憶手段に記憶されている前記階層Ｚ値とを比較し、前記推定Ｚ値が前記階層Ｚ値より視点に対し奥に存在する値である場合に、前記ポリゴンの前記ブロックにおける描画処理を取り消す陰面消去手段と、
を備えたことを特徴とする画像処理装置。
【請求項２】
前記第１のＺ値算出手段は、
前記ポリゴンの各頂点のピクセルの奥行き方向の座標値である頂点Ｚ値を算出する頂点Ｚ値算出手段と、
前記頂点Ｚ値算出手段が算出した前記頂点Ｚ値のうち、視点に対し最も手前に存在する頂点のピクセルの前記頂点Ｚ値を前記ポリゴンＺ値として選択するポリゴンＺ値選択手段と、
を備えたことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第２のＺ値算出手段は、
前記ポリゴンのなす平面を表す平面方程式のＸ，Ｙ方向の係数を算出する平面方程式係数算出手段と、
前記平面方程式係数算出手段が算出した前記Ｘ，Ｙ方向の係数の正負の組み合わせに基づき、前記ポリゴンのなす平面に含まれるピクセルのうち前記ブロックにおいて視点に対し最も手前に存在するピクセルの奥行き方向の座標値を前記ブロックＺ値として算出するブロックＺ値算出手段と、
を備えたことを特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記描画の単位となる多角形は三角形であることを特徴とする請求項１〜３のいずれか１つに記載の画像処理装置。
【請求項５】
描画の単位となる多角形であるポリゴンの頂点のピクセルのうち視点に対し最も手前に存在するピクセルの奥行き方向の座標値であるポリゴンＺ値を算出する第１のＺ値算出ステップと、
前記ポリゴンのなす平面に含まれるピクセルのうち、３次元コンピュータグラフィックスを描画した画像の描画領域を分割した部分領域であるブロックにおいて視点に対し最も手前に存在するピクセルの奥行き方向の座標値であるブロックＺ値を算出する第２のＺ値算出ステップと、
前記第１のＺ値算出ステップが算出した前記ポリゴンＺ値と、前記第２のＺ値算出ステップが算出した前記ブロックＺ値とを比較し、最も視点に近い値を、前記ブロックにおいて視点に対し最も手前に存在する前記ポリゴンのピクセルの奥行き方向の座標値の推定値である推定Ｚ値として選択するＺ値選択ステップと、
前記Ｚ値選択ステップが選択した前記推定Ｚ値と、記憶手段に記憶されている前記ブロック内で既に描画されたピクセルのうち視点に対し最も奥に存在するピクセルの奥行き方向の座標値である階層Ｚ値とを比較し、前記推定Ｚ値が前記階層Ｚ値より視点に対し奥に存在する値である場合に、前記ポリゴンの前記ブロックにおける描画処理を取り消す陰面消去ステップと、
を備えたことを特徴とする画像処理方法。
【請求項６】
描画の単位となる多角形であるポリゴンの頂点のピクセルのうち視点に対し最も手前に存在するピクセルの奥行き方向の座標値であるポリゴンＺ値を算出する第１のＺ値算出手順と、
前記ポリゴンのなす平面に含まれるピクセルのうち、３次元コンピュータグラフィックスを描画した画像の描画領域を分割した部分領域であるブロックにおいて視点に対し最も手前に存在するピクセルの奥行き方向の座標値であるブロックＺ値を算出する第２のＺ値算出手順と、
前記第１のＺ値算出手順が算出した前記ポリゴンＺ値と、前記第２のＺ値算出手順が算出した前記ブロックＺ値とを比較し、最も視点に近い値を、前記ブロックにおいて視点に対し最も手前に存在する前記ポリゴンのピクセルの奥行き方向の座標値の推定値である推定Ｚ値として選択するＺ値選択手順と、
前記Ｚ値選択手順が選択した前記推定Ｚ値と、記憶手段に記憶されている前記ブロック内で既に描画されたピクセルのうち視点に対し最も奥に存在するピクセルの奥行き方向の座標値である階層Ｚ値とを比較し、前記推定Ｚ値が前記階層Ｚ値より視点に対し奥に存在する値である場合に、前記ポリゴンの前記ブロックにおける描画処理を取り消す陰面消去手順と、
をコンピュータに実行させる画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、３次元コンピュータグラフィックスの描画処理を実行する画像処理装置、画像処理方法および画像処理プログラムに関するものである。
【背景技術】
【０００２】
３次元コンピュータグラフィックスの描画処理においては、視点から見た場合に重なり合う描画対象オブジェクトが存在する場合、ピクセルごとの奥行き方向の座標値であるＺ値を比較して、最も手前の描画対象オブジェクトを描画し、それより奥に存在する描画対象の描画をキャンセルする陰面処理が行われる。
【０００３】
陰面処理を行うためには１画面分のピクセルのＺ値を保持するＺバッファと、Ｚバッファに保持されているＺ値と描画対象オブジェクトのＺ値を比較する処理が必要である。通常、Ｚバッファのデータはアクセスの遅いＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などのメモリに置かれることが多く、Ｚバッファのデータを読み書きするためのメモリアクセス処理が３次元コンピュータグラフィックスの描画処理のボトルネックになっており、Ｚバッファへのアクセス頻度は性能に大きな影響を与える要因となっている。
【０００４】
Ｚバッファへのアクセス頻度を減らして処理性能を向上させるため、ピクセル単位の陰面処理を行う前に、描画領域を区分けしたブロックと呼ばれる矩形領域内のピクセルのうち、最も奥に存在するピクセルのＺ値を記憶した階層Ｚバッファを用いてブロック単位の陰面処理を行う方法が提案されている。
【０００５】
このような方法では、描画するポリゴンがブロックにおいて占めるピクセルのうち最も手前のピクセルのＺ値（Ｚｎｅａｒ値）を求め、階層Ｚバッファに記憶されているブロック内に存在する描画済みポリゴンの最も奥のピクセルのＺ値と比較し、Ｚｎｅａｒ値に対応するピクセルが階層Ｚバッファ内のＺ値に対応するピクセルよりも奥に存在するときは、描画するポリゴンの当該ブロック内のすべてのピクセルの描画を一括してキャンセルすることができる。このため、ピクセル単位の陰面処理に比べてメモリアクセス頻度が減少し、処理性能が向上する。
【０００６】
この際、Ｚｎｅａｒ値の生成に時間を要すると、かえって性能の低下を招きかねず、ブロック単位の陰面処理を実行する意味がなくなるため、Ｚｎｅａｒ値を高速に生成することが重要となる。ところが、Ｚｎｅａｒ値を正確に求めるためにはブロック領域とポリゴン領域との交差判定が必要であり、この計算には非常に大きな計算コストを要するため、Ｚｎｅａｒ値を高速に生成できない場合が生じうる。
【０００７】
このため、Ｚｎｅａｒ値を正確に求める代わりに、正確なＺｎｅａｒ値よりも手前のＺ値であり、かつ高速に求めることができるＺ値で代用して陰面処理を行う方法が提案されている。
【０００８】
正確なＺｎｅａｒ値よりも手前のＺ値であれば、描画するポリゴンのピクセルはこの値に対応するピクセルより奥に存在することが保証されるため、描画済みポリゴンより手前に存在するはずのピクセルが陰面処理において誤ってキャンセルされることはない。さらに、正確なＺｎｅａｒ値により近いＺ値を求めることができれば、陰面処理の精度を高く保つことができる。
【０００９】
例えば、特許文献１においては、描画するポリゴンのなす平面がブロック領域においてとりうる最も手前のピクセルのＺ値（ブロックＺ値）でＺｎｅａｒ値を代用する方法が提案されている。この方法においては、最も手前のピクセルは、描画するポリゴンのなす平面の傾き情報を用いて、ブロックの４隅のうちの一点が選択される。この方法によれば、ポリゴン領域とブロック領域の交差判定が不要なため、高速な陰面処理が可能となる。
【００１０】
【特許文献１】ＵＳ  ６，６４６，６３９  Ｂ１
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１の技術においては、ブロックの４隅から選択されたピクセルがポリゴンの占める領域の外に存在する場合に、ブロックＺ値とＺｎｅａｒ値とに大きな誤差が生じ、陰面処理の効率低下を引き起こす可能性があるという問題があった。
【００１２】
データを構成するポリゴンが大きく、ブロックの４隅から選択されたピクセルがポリゴンの領域内に存在する確率が高い場合には大きな効率低下にはならない。しかし、近年のように高精細の傾向にある３次元コンピュータグラフィックスを描画した画像においては、ポリゴンが小さくなり、ブロックの４隅から選択されたピクセルがポリゴンの領域外に存在する確率が高くなっているため、陰面処理の効率低下が生じる可能性が大きくなるという問題があった。
【００１３】
本発明は、上記に鑑みてなされたものであって、小さなポリゴンが多い高精細データに対しても陰面処理の効率を向上させることができる画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決し、目的を達成するために、本発明は、画像処理装置において、３次元コンピュータグラフィックスを描画した画像の描画領域を分割した部分領域であるブロックごとに、前記ブロック内で既に描画されたピクセルのうち視点に対し最も奥に存在するピクセルの奥行き方向の座標値である階層Ｚ値を記憶する階層Ｚ値記憶手段と、描画の単位となる多角形であるポリゴンの頂点のピクセルのうち視点に対し最も手前に存在するピクセルの奥行き方向の座標値であるポリゴンＺ値を算出する第１のＺ値算出手段と、前記ポリゴンのなす平面に含まれるピクセルのうち前記ブロックにおいて視点に対し最も手前に存在するピクセルの奥行き方向の座標値であるブロックＺ値を算出する第２のＺ値算出手段と、前記第１のＺ値算出手段が算出した前記ポリゴンＺ値と、前記第２のＺ値算出手段が算出した前記ブロックＺ値とを比較し、最も視点に近い値を、前記ブロックにおいて視点に対し最も手前に存在する前記ポリゴンのピクセルの奥行き方向の座標値の推定値である推定Ｚ値として選択するＺ値選択手段と、前記Ｚ値選択手段が選択した前記推定Ｚ値と、前記階層Ｚ値記憶手段に記憶されている前記階層Ｚ値とを比較し、前記推定Ｚ値が前記階層Ｚ値より視点に対し奥に存在する値である場合に、前記ポリゴンの前記ブロックにおける描画処理を取り消す陰面消去手段と、を備えたことを特徴とする。
【００１５】
また、本発明は、上記装置を実行することができる画像処理方法および画像処理プログラムである。
【発明の効果】
【００１６】
本発明によれば、ブロックの４隅から選択されるブロックＺ値に加え、描画するポリゴンの３頂点からＺ値を算出し、双方のうちより奥に存在するピクセルに対応するＺ値を、Ｚｎｅａｒ値の推定値として使用し、陰面処理を実行することができる。このため、ブロックＺ値だけでは小さなポリゴンが多い高精細データに対して推定値の誤差が生じる可能性が高かったのに対し、推定値の誤差発生の可能性が低下し、陰面処理の効率を向上させることができるという効果を奏する。
【発明を実施するための最良の形態】
【００１７】
以下に添付図面を参照して、この発明にかかる画像処理装置、画像処理方法、画像処理プログラムの最良な実施の形態を詳細に説明する。
【００１８】
本実施の形態にかかる画像処理装置は、ブロックの４隅から選択されるブロックＺ値と、描画するポリゴンの３頂点から選択されるポリゴンＺ値とのうち、より奥に存在するピクセルに対応する値を、Ｚｎｅａｒ値の推定値である推定Ｚ値として使用し、階層Ｚバッファに記憶された階層Ｚ値と推定Ｚ値とを比較することにより陰面処理を実行するものである。
【００１９】
ここで、ブロックとは、３次元コンピュータグラフィックスを描画した画像の描画領域を分割した部分領域をいい、隠面処理を行う単位となる。本実施の形態においては、矩形により描画領域を分割した部分領域をブロックとする。なお、ブロック内における奥行きを考えるときは、上記部分領域を視線方向に延長した立体をブロックとする。すなわち、２次元である描画領域においてはその部分領域であるブロックも２次元であるが、奥行きなどの３次元情報を扱うときにはブロックは３次元の領域として考える。
【００２０】
階層Ｚ値とは、ブロック内で既に描画されたピクセルのうち視点に対し最も奥に存在するピクセルのＺ値をいい、階層Ｚ値を記憶する階層Ｚバッファにブロックごとに記憶されている。ここで、Ｚ値とは、ピクセルの視点に対する奥行き方向の座標値のことをいう。階層Ｚ値を利用することにより、ブロック単位の隠面処理が可能となる。
【００２１】
ポリゴンとは、３次元コンピュータグラフィックスを描画した画像の描画対象となる立体の形状を表するため描画対象の表面を分割した、描画の単位となる多角形をいう。一般的に三角形がポリゴンとして使用される。描画処理においては、ポリゴンを描画の単位とし、各ポリゴンに対しブロックごとに陰面処理を実行する。
【００２２】
ポリゴンＺ値とは、描画しているポリゴンの頂点のピクセルのうち視点に対し最も手前に存在するピクセルのＺ値をいう。ポリゴンＺ値は、陰面処理を行っているブロックに関わらず、そのポリゴンの頂点のうちの１つから定められる。
【００２３】
ブロックＺ値とは、ポリゴンのなす平面に含まれるピクセルのうち、陰面処理を行っているブロックにおいて視点に対し最も手前に存在するピクセルのＺ値をいう。
【００２４】
Ｚｎｅａｒ値とは、描画しているポリゴンのピクセルのうち、陰面処理を行っているブロックにおいて視点に対し最も手前に存在するピクセルのＺ値をいう。Ｚｎｅａｒ値を正確に算出するには、計算コストの非常に大きいポリゴンとブロックの交差判定が必要であるため、一般に計算コストの小さい方法により推定した値が使用される。
【００２５】
推定Ｚ値とは、Ｚｎｅａｒ値の代用のために用いるＺｎｅａｒ値の推定値をいう。すなわち、正確なＺｎｅａｒ値ではなく、正確なＺｎｅａｒ値により近似した値を求める各種方法によって算出されたＺｎｅａｒ値であることを意味する。
【００２６】
図１は、本実施の形態にかかる画像処理装置１００の構成を示すブロック図である。同図に示すように、画像処理装置１００は、頂点入力部１１０と、頂点処理部１２０と、ラスタライズ部１３０と、ピクセル処理部１４０と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に確保された頂点データバッファ１５０と、階層Ｚバッファ１６０と、Ｚバッファ１７０と、描画バッファ１８０とを備えている。階層Ｚバッファ１６０が、本発明における階層Ｚ値記憶手段に相当する。
【００２７】
頂点入力部１１０は、描画する三角形の頂点データを入力するものである。ここで、頂点データは、頂点の座標と、カラー、フォグ、テクスチャ座標、法線ベクトルなどの頂点パラメータとから構成される。
【００２８】
頂点処理部１２０は、頂点入力部１１０から入力された頂点データに対する演算を行うものである。
【００２９】
ラスタライズ部１３０は、頂点処理部１２０によって演算処理された頂点データから描画するポリゴンのピクセルデータを生成するものであり、セットアップ部１３１と、陰面処理部１３２と、トラバース部１３３とを備えている。
【００３０】
ピクセル処理部１４０は、ラスタライズ部１３０によって生成されたピクセルデータに対し、ピクセル単位で陰面処理、描画処理などの演算を行うものである。
【００３１】
セットアップ部１３１は、頂点データを記憶する頂点データバッファ１５０から、描画するポリゴンの頂点データを取得し、ラスタライズに必要なセットアップデータを生成するものである。
【００３２】
陰面処理部１３２は、ピクセル処理部１４０がピクセル単位の陰面処理を行う前に、階層Ｚバッファ１６０に記憶された階層Ｚ値を利用してブロック単位の陰面処理を行い、陰面となるブロックにおけるポリゴンの描画処理をキャンセルするものである。
【００３３】
トラバース部１３３は、陰面処理部１３２でキャンセルされなかったブロックについて、セットアップ部１３１が生成したセットアップデータを用いてピクセルデータを生成するものである。なお、画像処理装置１００を、セットアップ部１３１から渡されるセットアップデータを用いて、陰面処理部１３２とトラバース部１３３とが並列に処理を実行し、トラバース部１３３で生成されたピクセルデータを陰面処理部１３２の結果によりブロック単位でキャンセルし、ピクセル処理部１４０に出力するように構成してもよい。
【００３４】
同図に示すように、陰面処理部１３２は、頂点Ｚ値算出部１３２ａと、ポリゴンＺ値選択部１３２ｂと、平面方程式係数算出部１３２ｃと、ブロックＺ値算出部１３２ｄと、Ｚ値選択部１３２ｅと、陰面消去部１３２ｆとを備えている。
【００３５】
頂点Ｚ値算出部１３２ａは、描画するポリゴンの各頂点のＺ値を算出するものである。ポリゴンＺ値選択部１３２ｂは、頂点Ｚ値算出部１３２ａが算出した各頂点のＺ値のうち、値が最小のＺ値をポリゴンＺ値として選択するものである。本実施の形態においては、特に説明がある場合を除き、Ｚ値が小さいほど対応するピクセルが視点に対し手前に存在するような座標系を前提とする。なお、Ｚ値が大きいほど対応するピクセルが視点に対し手前に存在するような座標系を取るように構成してもよい。
【００３６】
平面方程式係数算出部１３２ｃは、描画するポリゴンの各頂点の座標を用いて、入力ポリゴンのなす平面をあらわす平面方程式の係数を算出するものである。ブロックＺ値算出部１３２ｄは、平面方程式係数算出部１３２ｃにより算出された平面方程式の係数の正負の組み合わせにより、ブロックＺ値を算出するものである。
【００３７】
Ｚ値選択部１３２ｅは、描画するポリゴンが存在するブロック毎に、ポリゴンＺ値選択部１３２ｂが選択したポリゴンＺ値と、ブロックＺ値算出部１３２ｄが算出したブロックＺ値とを比較して、より大きい値、すなわち視点に対しより奥に存在するピクセルに対応するＺ値を、Ｚｎｅａｒ値の推定値である推定Ｚ値として選択するものである。
【００３８】
陰面消去部１３２ｆは、Ｚ値選択部１３２ｅにより選択された推定Ｚ値と階層Ｚバッファ１６０に記憶されている階層Ｚ値とを比較し、推定Ｚ値が階層Ｚ値より大きいとき、すなわち推定Ｚ値に対応するピクセルが階層Ｚ値に対応するピクセルより奥に存在するときは、ブロック単位でポリゴンの描画処理をキャンセルするものである。
【００３９】
頂点データバッファ１５０は、頂点処理部１２０から入力される頂点データを記憶するものである。階層Ｚバッファ１６０は、既に描画されたピクセルのうち視点に対し最も奥に存在するピクセルのＺ値である階層Ｚ値をブロックごとに記憶するものである。Ｚバッファ１７０は、ピクセル処理部１４０において加工されたピクセルデータのＺ値をピクセルごとに記憶するものである。描画バッファ１８０は、ピクセル処理部１４０において加工されたピクセルデータの色情報を記憶するものである。
【００４０】
次に、このように構成された本実施の形態にかかる画像処理装置１００による描画処理について説明する。図２は、本実施の形態における描画処理の全体の流れを示すフローチャートである。
【００４１】
まず、頂点入力部１１０が、描画するポリゴンの頂点データを入力する（ステップＳ２０１）。次に、頂点処理部１２０が、頂点入力部１１０により入力された頂点データに対し、ラスタライズ部１３０がラスタライズ処理を実行するために必要な演算処理を実行する（ステップＳ２０２）。
【００４２】
次に、セットアップ部１３１が、頂点処理部１２０が演算処理を行った頂点データを頂点データバッファ１５０から取得し、取得した頂点データからラスタライズ処理に必要なセットアップデータを生成する（ステップＳ２０３）。
【００４３】
次に、陰面処理部１３２が、描画するポリゴンに対し、ブロックごとに陰面処理を実行する（ステップＳ２０４）。陰面処理については後述する。
【００４４】
陰面処理部１３２により隠面処理が実行された後、トラバース部１３３が、陰面処理によりキャンセルされなかったブロックについて、セットアップ部１３１が生成したセットアップデータを用いてピクセルデータを生成する（ステップＳ２０５）。
【００４５】
次に、ピクセル処理部１４０が、トラバース部１３３により生成されたピクセルデータに対し、ピクセル単位で描画処理を実行し（ステップＳ２０６）、描画処理が終了する。なお、上述の描画処理は１つのポリゴンに対する処理であり、この処理を描画対象となる立体を構成するすべてのポリゴンについて繰り返すことにより、当該描画対象全体の描画処理を実行することができる。
【００４６】
次に、このように構成された本実施の形態にかかる画像処理装置１００によるステップＳ２０４に示した陰面処理の概要について説明する。図３はブロックごとの陰面処理におけるポリゴンとＺ値に対応するピクセルとの関係の一例を示す説明図である。
【００４７】
同図に示すように、同図の上部に示す矢印の方向（垂直方向）が視線方向であり、上方向が視点に近く、下方向が視点から遠い座標系を前提とする。また、隠面処理を行っているブロック３０１において既に描画されたポリゴン３０２のピクセルのうち、最も奥に存在するピクセルをピクセル３０４とする。このピクセルのＺ値が階層Ｚ値として階層Ｚバッファ１６０に記憶されている。
【００４８】
描画するポリゴン３０３のピクセルのうち、最も手前に存在するピクセルがピクセル３０５であり、このピクセルがピクセル３０４より奥に存在するとき、ブロック３０１における描画するポリゴン３０３の全ピクセルは、既に描画されたピクセルより奥に存在することになるため、以降の処理をキャンセル（陰面消去）することができる。
【００４９】
なお、同図においては、ブロック３０１内で既に描画されたポリゴンが１つだけであるが、ブロック３０１内に描画済みポリゴンが複数ある場合はそのうち最も奥のピクセルのＺ値が階層Ｚバッファ１６０に記憶される。
【００５０】
このような階層Ｚバッファ１６０を用いたブロック単位の陰面処理により、ピクセル処理部１４０におけるＺバッファ１７０および描画バッファ１８０へのメモリアクセスなどのスループットのボトルネックになる処理の回数が減少し、処理性能が向上する。
【００５１】
次に、このように構成された本実施の形態にかかる画像処理装置１００によるステップＳ２０４に示した陰面処理の詳細について説明する。図４は、本実施の形態における陰面処理の全体の流れを示すフローチャートである。
【００５２】
まず、頂点Ｚ値算出部１３２ａが、ポリゴンの各頂点のＺ値である頂点Ｚ値を算出する（ステップＳ４０１）。具体的には、頂点Ｚ値算出部１３２ａは、以下の手順により頂点Ｚ値を算出する。
【００５３】
まず、頂点Ｚ値算出部１３２ａは、セットアップ部１３１が生成したセットアップデータから、視点位置を原点とし視線方向をＺ方向とした座標系における描画するポリゴンの位置座標を取得する。
【００５４】
位置座標は、３次元空間座標を用いた(ｘ、ｙ、ｚ)という３次元ベクトル、あるいは同次座標系を用いた（ｘ、ｙ、ｚ、ｗ）という４次元ベクトルで表現される。なお、同次座標系は３次元空間座標にもう１つの要素ｗを加えて次元を１あげた座標系であり、同次座標における４次元ベクトル（ｘ、ｙ、ｚ、ｗ）は、３次元空間座標における３次元ベクトル(ｘ／ｗ、ｙ／ｗ、ｚ／ｗ)に対応する。
【００５５】
取得した位置座標が３次元ベクトル(ｘ、ｙ、ｚ)の場合、頂点Ｚ値算出部１３２ａは、n番目の頂点のＺ値データＺ＿Ｖｎを以下の（１）式により算出する。ここで、ｚｎはn番目の頂点の位置を表す３次元ベクトルのz成分である。
Ｚ＿Ｖｎ＝ｚｎ（ｎ＝０，１，２，・・・）  ・・・（１）
【００５６】
取得した位置座標が同次座標系の４次元ベクトル（ｘ、ｙ、ｚ、ｗ）の場合、頂点Ｚ値算出部１３２ａは、ｎ番目の頂点のＺ値データＺ＿Ｖｎを以下の（２）式により算出する。ここで、ｚｎ、ｗｎはそれぞれｎ番目の頂点の位置を表す３次元ベクトルのｚ成分、ｗ成分である。
Ｚ＿Ｖｎ＝ｚｎ／ｗｎ（ｎ＝０，１，２，・・・）  ・・・（２）
【００５７】
なお、これらの方法は一例であり、ポリゴンの各頂点のＺ値を算出するものであればあらゆる方法を適用することができる。
【００５８】
ステップＳ４０１において、頂点Ｚ値算出部１３２ａが頂点Ｚ値を算出した後、ポリゴンＺ値選択部１３２ｂが、算出した頂点Ｚ値の最小値を、ポリゴンＺ値として選択する（ステップＳ４０２）。
【００５９】
具体的には、ポリゴンＺ値Ｚ＿ｐｏｌｙは、以下の（３）式により選択することができる。ここでｍｉｎ（Ａ，Ｂ，Ｃ）はＡ，Ｂ，Ｃのうち最小の値を求める演算を表す。
Ｚ＿ｐｏｌｙ＝ｍｉｎ（Ｚ＿Ｖ０，Ｚ＿Ｖ１，・・・，Ｚ＿Ｖｎ）・・・（３）
【００６０】
Ｚ値が大きいほど対応するピクセルが視点に対し手前に存在するような座標系の場合、ポリゴンＺ値Ｚ＿ｐｏｌｙは、以下の（４）式により選択することができる。ここでｍａｘ（Ａ，Ｂ，Ｃ）はＡ，Ｂ，Ｃのうち最大の値を求める演算を表す。
Ｚ＿ｐｏｌｙ＝ｍａｘ（Ｚ＿Ｖ０，Ｚ＿Ｖ１，・・・，Ｚ＿Ｖｎ）・・・（４）
【００６１】
なお、ポリゴンＺ値は、ポリゴン単位で算出される値であるため、ブロックの描画処理ごとに計算する必要はなく、描画するポリゴンが切り替わった際に算出した値を記憶し、同じポリゴンを処理している間はこの値を使用することができる。
【００６２】
ポリゴン内の全てのピクセルは、このようにして算出したポリゴンＺ値に対応するピクセルより奥に存在することが保証されるため、ポリゴンＺ値を陰面消去の際に比較対象とするＺ値として用いることができる。
【００６３】
ステップＳ４０２において、ポリゴンＺ値選択部１３２ｂがポリゴンＺ値を選択した後、平面方程式係数算出部１３２ｃが、描画するポリゴンのなす平面の平面方程式の係数を算出する（ステップＳ４０３）。平面方程式を以下の（５）式で表すとすると、この式にポリゴンの頂点のうち３点の座標の値を代入し、連立方程式の解を求める処理を実行することにより、平面方程式の係数ａ、ｂを算出することができる。
ｚ＝ａｘ＋ｂｙ＋ｃ  ・・・（５）
【００６４】
次に、ブロックＺ値算出部１３２ｄが、平面方程式係数算出部１３２ｃにより算出された平面方程式のＸ，Ｙ方向の係数の正負を判定し、陰面処理を行っているブロック内における、当該平面方程式で表される平面の最も手前に存在するピクセルのＺ値を、ブロックＺ値として算出する（ステップＳ４０４）。具体的には、ブロックＺ値算出部１３２ｄは、平面方程式で表される平面がブロック内において形成する矩形（四角形）の頂点のうち最も手前に存在する頂点のピクセルのＺ値をブロックＺ値として算出する。
【００６５】
例えば、視線方向をＺ軸、水平右方向にＸ軸、垂直上方向にＹ軸をとるような座標系において、各辺がＸ軸またはＹ軸と平行な四角形をブロックとした場合、（５）式で表される平面方程式のＸ，Ｙ方向の係数ａ，ｂの符号が共に正なら、平面がブロック内で形成する四角形の左下の頂点のＺ値がブロックＺ値となる。同様に、ａが正、ｂが負なら左上、ａが負、ｂが正なら右下、ａ，ｂ共に負なら右上の頂点のＺ値がブロックＺ値となる。
【００６６】
なお、以上の説明においては、ステップＳ４０１〜ステップＳ４０２のポリゴンＺ値選択処理を実行したあとに、ステップＳ４０３〜ステップＳ４０４のブロックＺ値算出処理を実行するように構成しているが、ブロックＺ値算出処理を先に実行するように構成してもよいし、両処理を並行して実行するように構成してもよい。
【００６７】
次にＺ値選択部１３２ｅが、ポリゴンＺ値選択部１３２ｂにより選択されたポリゴンＺ値と、ブロックＺ値算出部１３２ｄが算出したブロックＺ値とを比較し、より大きい値を推定Ｚ値として選択する（ステップＳ４０５）。
【００６８】
具体的には、推定Ｚ値Ｚ＿ｅｓｉｍａｔｅは、以下の（６）式により選択することができる。ここでＺ＿ｂｌｏｃｋはブロックＺ値を表す。
Ｚ＿ｅｓｔｉｍａｔｅ＝ｍａｘ（Ｚ＿ｂｌｏｃｋ，  Ｚ＿ｐｏｌｙ）・・・（６）
【００６９】
Ｚ値が大きいほど対応するピクセルが視点に対し手前に存在するような座標系の場合、推定Ｚ値Ｚ＿ｅｓｉｍａｔｅは、以下の（７）式により選択することができる。
Ｚ＿ｅｓｔｉｍａｔｅ＝ｍｉｎ（Ｚ＿ｂｌｏｃｋ，  Ｚ＿ｐｏｌｙ）・・・（７）
【００７０】
次に、陰面消去部１３２ｆが、Ｚ値選択部１３２ｅにより選択された推定Ｚ値と、階層Ｚバッファ１６０に記憶されている階層Ｚ値とを比較し（ステップＳ４０６）、推定Ｚ値が階層Ｚ値より大きいか否かを判断する（ステップＳ４０７）。なお、Ｚ値が小さいほど対応するピクセルが視点に対し手前に存在するような座標系を用いることを前提としているため、推定Ｚ値が階層Ｚ値より大きいか否かを判断するとは、推定Ｚ値に対応するピクセルが階層Ｚ値に対応するピクセルより奥に存在するか否かを判断することを意味する。
【００７１】
Ｚ値が大きいほど対応するピクセルが視点に対し手前に存在するような座標系の場合は、推定Ｚ値が階層Ｚ値より小さいか否かを判断することにより、推定Ｚ値に対応するピクセルが階層Ｚ値に対応するピクセルより奥に存在するか否かを判断する。
【００７２】
ステップＳ４０７において、推定Ｚ値が階層Ｚ値より大きいと判断された場合は（ステップＳ４０７：ＹＥＳ）、陰面消去部１３２ｆは、描画するポリゴンの、現在陰面処理を行っているブロックにおける描画処理をキャンセルする（ステップＳ４０８）。この後、次のブロックの描画処理を実行するため、ステップＳ４０４に戻り処理を繰り返す。
【００７３】
ステップＳ４０７において、推定Ｚ値が階層Ｚ値より小さいと判断された場合は（ステップＳ４０７：ＮＯ）、陰面消去部１３２ｆは、描画処理のキャンセルは行わず、陰面処理が終了する。この後、トラバース部１３３によるピクセルデータの生成処理（ステップＳ２０５）、ピクセル処理部１４０によるピクセル単位の描画処理（ステップＳ２０６）が実行される。
【００７４】
図５は、上述した陰面処理において算出される推定Ｚ値と、ブロックおよびポリゴンとの関係の一例を示す説明図である。同図においては、ブロックは８ピクセル×８ピクセルの矩形領域であり、視線方向にＺ軸をとった座標系を前提とする。同図には、この座標系において、ポリゴン５０１をブロック５０２およびブロック５０３において陰面処理したときに算出されるブロックＺ値に対応するピクセル５０４、ピクセル５０５、ポリゴンＺ値に対応するピクセル５０６が示されている。
【００７５】
ポリゴンＺ値選択部１３２ｂにおいて選択されるポリゴンＺ値は（ステップＳ４０２）、例えばピクセル５０６のようなポリゴンのある１頂点のＺ値となる。この例では、ポリゴン５０１は、右上側が手前にくるように傾いていると仮定している。
【００７６】
一方、ポリゴン５０１のなす平面の右上側が手前にくるように傾いている場合、平面方程式係数算出部１３２ｃにより求められるポリゴン５０１のなす平面の平面方程式（上述の（５）式）のＸ，Ｙ方向の傾き係数ａ，ｂは共に負となる（ステップＳ４０３）。従って、ブロックＺ値算出部１３２ｄは、ブロック５０２においてはブロック５０２の右上隅のピクセル５０４のＺ値を、ブロック５０３においてはブロック５０３の右上隅のピクセル５０５のＺ値を、ブロックＺ値として算出する（ステップＳ４０４）。
【００７７】
Ｚ値選択部１３２ｅは、ブロック毎にブロックＺ値とポリゴンＺ値を比較し、大きいほうを推定Ｚ値として選択する（ステップＳ４０５）。例えば、ブロック５０３においては、ブロックＺ値に対応するピクセル５０５がポリゴン領域内に存在するため、ブロックＺ値とポリゴンＺ値を比較した場合、必ずブロックＺ値がポリゴンＺ値以上の値となり、ピクセル５０５のＺ値であるブロックＺ値が推定Ｚ値として選択される。このときの推定Ｚ値は、Ｚｎｅａｒ値と同じ値であるため、正しく陰面処理が実行され効率低下は発生しない。
【００７８】
一方、ブロック５０２においては、ブロックＺ値に対応するピクセル５０４がポリゴン領域外に存在するため、ブロックＺ値とポリゴンＺ値を比較し、より大きい値が推定Ｚ値として選択される。また、このときのＺｎｅａｒ値は、例えば、ブロック５０２とポリゴン５０１の交点であるピクセル５０７のＺ値である。
【００７９】
従って、この場合の推定Ｚ値は、Ｚｎｅａｒ値以下の値になり、陰面処理の効率低下が生じうる。しかし、ブロックＺ値とポリゴンＺ値という２つの推定値からＺｎｅａｒ値に近い値を選択することができるため、効率低下の発生頻度を減少させることが可能となる。
【００８０】
図６は、図５と同じポリゴンに対して、特許文献１において提案されている方法により陰面処理を実行した場合に算出されるブロックＺ値と、ブロックおよびポリゴンとの関係の一例を示す説明図である。
【００８１】
特許文献１の方法では、本発明におけるブロックＺ値算出部１３２ｄに相当する手段のみによりＺ値（ブロックＺ値）を算出し、この値を陰面処理に使用する。すなわち、図６に示すように、ブロックの右上のピクセルのＺ値がブロックＺ値であり、この値が必ず陰面処理において使用される。例えば、ブロック５０２においては、ピクセル５０４のＺ値がブロックＺ値として算出され陰面処理において使用される。ポリゴン５０１とブロック５０２との共有領域６０１は考慮しないため、従来のようにピクセル５０７に対応する正確なＺｎｅａｒ値を算出する必要がなく、陰面処理が高速化される。しかし、ブロックＺ値とＺｎｅａｒ値の誤差が大きくなる可能性があり、その場合は陰面処理の効率が低下する。
【００８２】
特に、図６に示す例のように、データの高精細化などのためブロックに対するポリゴンの大きさが相対的に小さい場合、算出されるブロックＺ値に対応するピクセルがポリゴンの領域外に存在する確率が高くなっているため、陰面処理の効率が低下する可能性が高くなる。
【００８３】
これに対し、本発明は、ブロックＺ値だけでなく、ポリゴンの各頂点のＺ値から求めたポリゴンＺ値も使用して、より適切な値を選択して陰面処理を実行することができるため、小さいポリゴンの多い高精細データに対しても陰面処理の効率低下を防止することが可能となる。
【００８４】
図７は、本実施の形態の方法により従来の方法に比べて陰面処理の効率が向上する場合の各Ｚ値と、ブロックおよびポリゴンとの関係の一例を示す説明図である。同図においては、図５、図６と異なり、視線方向であるＺ軸を横から観察した状態が図示されている。同図のブロック７１０において、ブロック７１０内のポリゴン７０１の最も手前の点のＺ値がＺｎｅａｒ値７０３である。また、階層Ｚ値７２０は、同図の点線で示す位置に対応するＺ値である。
【００８５】
従来の方法では、ポリゴンのなす平面の延長７０２とブロック７１０が交差する点のうち最も手前の点のＺ値であるブロックＺ値７０４のみからＺｎｅａｒ値の推定値が算出される。この値が階層Ｚ値７２０と比較されるため、推定値（ブロックＺ値７０４）に対応するピクセルは、階層Ｚ値７２０に対応するピクセルより手前に存在すると判断される。このため、陰面処理によりブロック単位の描画が正しくキャンセルされなくなる。
【００８６】
しかし、本実施の形態の方法では、ブロックＺ値７０４と、全ポリゴン領域７０５の最も手前の点のＺ値であるポリゴンＺ値７０６とを比較し、より大きい値であるポリゴンＺ値７０６がＺｎｅａｒ値の推定値として算出される。この値が階層Ｚ値７２０と比較されるため、推定値（ポリゴンＺ値７０６）に対応するピクセルは、階層Ｚ値７２０に対応するピクセルより奥に存在すると判断される。このため、陰面処理によりブロック単位で描画が正しくキャンセルされる。
【００８７】
このように、本実施の形態にかかる画像処理装置１００においては、ブロックの４隅から選択されるブロックＺ値と、描画するポリゴンの３頂点から選択されるポリゴンＺ値とを比較し、より大きい値を、Ｚｎｅａｒ値の推定値である推定Ｚ値として使用し、陰面処理を実行することができる。このため、小さいポリゴンの多い高精細データに対しても陰面処理の効率低下を防止し、ピクセル処理部１４０におけるＺバッファ１７０および描画バッファ１８０へのメモリアクセスなどのボトルネックになる処理の回数が減少し、３次元コンピュータグラフィックスの描画処理の性能を向上させることができる。
【００８８】
本実施の形態にかかる画像処理装置は、ＣＰＵなどの制御装置と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００８９】
本実施の形態にかかる画像処理装置で実行される画像処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００９０】
また、本実施の形態にかかる画像処理装置で実行される画像処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施の形態にかかる画像処理装置で実行される画像処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００９１】
また、本実施の形態の画像処理プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００９２】
本実施の形態にかかる画像処理装置で実行される画像処理プログラムは、上述した各部（頂点入力部、頂点処理部、セットアップ部、頂点Ｚ値算出部、ポリゴンＺ値選択部、平面方程式係数算出部、ブロックＺ値算出部、Ｚ値選択部、陰面消去部、トラバース部、ピクセル処理部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から画像処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、部が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【００９３】
以上のように、本発明にかかる画像処理装置、画像処理方法および画像処理プログラムは、３次元コンピュータグラフィックスの描画処理を実行するコンピュータ、携帯電話等の携帯端末、ナビゲーション装置などの画像処理装置に適している。
【図面の簡単な説明】
【００９４】
【図１】本実施の形態にかかる画像処理装置の構成を示すブロック図である。
【図２】本実施の形態にかかる画像処理装置おける描画処理の全体の流れを示すフローチャートである。
【図３】ポリゴンとＺ値との関係の一例を示す説明図である。
【図４】本実施の形態にかかる画像処理装置おける陰面処理の全体の流れを示すフローチャートである。
【図５】推定Ｚ値とブロックおよびポリゴンとの関係の一例を示す説明図である。
【図６】ブロックＺ値とブロックおよびポリゴンとの関係の一例を示す説明図である。
【図７】Ｚ値とブロックおよびポリゴンとの関係の一例を示す説明図である。
【符号の説明】
【００９５】
１００  画像処理装置
１１０  頂点入力部
１２０  頂点処理部
１３０  ラスタライズ部
１３１  セットアップ部
１３２  陰面処理部
１３２ａ  頂点Ｚ値算出部
１３２ｂ  ポリゴンＺ値選択部
１３２ｃ  平面方程式係数算出部
１３２ｄ  ブロックＺ値算出部
１３２ｅ  Ｚ値選択部
１３２ｆ  陰面消去部
１３３  トラバース部
１４０  ピクセル処理部
１５０  頂点データバッファ
１６０  階層Ｚバッファ
１７０  Ｚバッファ
１８０  描画バッファ
３０１  ブロック
３０２、３０３  ポリゴン
３０４、３０５  ピクセル
５０１  ポリゴン
５０２、５０３  ブロック
５０４、５０５、５０６、５０７  ピクセル
６０１  共有領域
７０１  ポリゴン
７０２  ポリゴンのなす平面の延長
７０３  Ｚｎｅａｒ値
７０４  ブロックＺ値
７０５  全ポリゴン領域
７０６  ポリゴンＺ値
７１０  ブロック
７２０  階層Ｚ値
【図１】
2006235926.tif 000003
【図２】
2006235926.tif 000004
【図３】
2006235926.tif 000005
【図４】
2006235926.tif 000006
【図５】
2006235926.tif 000007
【図６】
2006235926.tif 000008
【図７】
2006235926.tif 000009