(57)【要約】【課題】複数のオブジェクトの奥行き方向の位置関係を把握して、隠面消去処理を行うには計算コストがかかる。【解決手段】複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングを行う描画処理装置を提供する。オブジェクト入力部１４２は、複数のオブジェクトをオブジェクト記憶部１５２に記憶する。内包ボリューム生成部１４８は、オブジェクトに包含される内包ボリュームを生成する。縮小Ｚバッファ更新部１５０は、内包ボリュームにもとづいて、縮小Ｚバッファを更新する。外包ボリューム生成部１４４は、カリング判定対象のオブジェクトを包含する外包ボリュームを生成する。カリング判定部１４６は、縮小Ｚバッファを参照し、外包ボリュームにもとづいてオブジェクトに対してＺカリング判定を行う。【選択図】図１６
2007310798.tif 000002
【特許請求の範囲】
【請求項１】
複数のオブジェクトまたは前記複数のオブジェクトを構成するフラグメントの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Ｚ値を格納した縮小Ｚバッファを設け、
前記オブジェクトまたは前記フラグメントが描画される画素ブロック内の画素単位のＺ値を前記縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較し、当該画素ブロック内の画素単位のＺ値の内、視点から最も遠方にあることを示す最遠方Ｚ値が当該画素ブロックの代表Ｚ値よりも視点に近いことを示す場合に、当該画素ブロックの代表Ｚ値を前記最遠方Ｚ値により更新することを特徴とする縮小Ｚバッファ生成方法。
【請求項２】
前記縮小Ｚバッファの画素ブロックの代表Ｚ値の更新は、前記オブジェクトまたは前記フラグメントが画素ブロック内の全画素に描画される場合に限り、実行されることを特徴とする請求項１に記載の縮小Ｚバッファ生成方法。
【請求項３】
前記オブジェクトまたは前記フラグメントが描画される画素ブロック内の画素単位のＺ値を前記縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較する際、当該画素ブロック内にある前記オブジェクトまたは前記フラグメントのポリゴンの頂点に位置する画素のＺ値、前記ポリゴンの辺と当該画素ブロックの境界線の交点に位置する画素のＺ値、および当該画素ブロックの四隅点に位置する画素のＺ値を前記代表Ｚ値との比較対象とすることを特徴とする請求項２に記載の縮小Ｚバッファ生成方法。
【請求項４】
複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリング方法であって、
前記複数のオブジェクトの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Ｚ値を格納した縮小Ｚバッファを設け、
前記オブジェクトが描画される画素ブロック内の画素単位のＺ値を前記縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較し、当該画素ブロック内の画素単位のＺ値の内、視点から最も遠方にあることを示す最遠方Ｚ値が当該画素ブロックの代表Ｚ値よりも視点に近いことを示す場合に、当該画素ブロックの代表Ｚ値を前記最遠方Ｚ値により更新し、
前記オブジェクトが描画される少なくとも１つの画素ブロックについて、当該画素ブロック内の画素単位のＺ値の中で、前記縮小Ｚバッファに格納された対応する画素ブロック単位の代表Ｚ値よりも視点に近いことを示すものが１つでも存在することが判明した場合には、当該オブジェクトは描画される可能性があると判定することを特徴とするオクルージョンカリング方法。
【請求項５】
前記オブジェクトが描画されるすべての画素ブロックについて、当該画素ブロック内の画素単位のＺ値の内、視点に対して最も手前にあることを示すＺ値が前記縮小Ｚバッファに格納された対応する画素ブロック単位の代表Ｚ値よりも視点から遠いことを示す場合に、当該オブジェクトを描画対象から外すことを特徴とする請求項４に記載のオクルージョンカリング方法。
【請求項６】
前記オブジェクトが描画される画素ブロック内の画素単位のＺ値を前記縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較する際、当該画素ブロック内にある前記オブジェクトのポリゴンの頂点に位置する画素のＺ値、前記ポリゴンの辺と当該画素ブロックの境界線の交点に位置する画素のＺ値、および当該画素ブロックの四隅点の内、当該ポリゴンに内包される隅点に位置する画素のＺ値を前記代表Ｚ値との比較対象とすることを特徴とする請求項５に記載のオクルージョンカリング方法。
【請求項７】
複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えない面を消去する隠面消去方法であって、
前記複数のオブジェクトを構成するフラグメントの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Ｚ値を格納した縮小Ｚバッファを設け、
前記フラグメントが描画される画素ブロック内の画素単位のＺ値を前記縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較し、当該画素ブロック内の画素単位のＺ値の内、視点から最も遠方にあることを示す最遠方Ｚ値が当該画素ブロックの代表Ｚ値よりも視点に近いことを示す場合に、当該画素ブロックの代表Ｚ値を前記最遠方Ｚ値により更新し、
前記フラグメントが描画される少なくとも１つの画素ブロックについて、当該画素ブロック内の画素単位のＺ値の中で、前記縮小Ｚバッファに格納された対応する画素ブロック単位の代表Ｚ値よりも視点に近いことを示すものが１つでも存在することが判明した場合には、当該フラグメントは描画される可能性があると判定することを特徴とする隠面消去方法。
【請求項８】
前記フラグメントが描画されるすべての画素ブロックについて、当該画素ブロック内の画素単位のＺ値の内、視点に対して最も手前にあることを示すＺ値が前記縮小Ｚバッファに格納された対応する画素ブロック単位の代表Ｚ値よりも視点から遠いことを示す場合に、当該フラグメントを描画対象から外すことを特徴とする請求項７に記載の隠面消去方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータグラフィックスにおける縮小Ｚバッファ生成技術、隠面消去技術、オクルージョンカリング技術、および描画処理技術に関する。
【背景技術】
【０００２】
３次元コンピュータグラフィックスにおいて３次元オブジェクトを描画する際、他のオブジェクトに隠れて見えない面を消去する隠面消去処理がなされる。代表的な隠面消去処理の一つにＺバッファ法がある。Ｚバッファ法では、画面のピクセル毎に奥行き情報であるＺ値を格納したＺバッファから各ピクセルのＺ値を取り出し、その後処理するピクセルがこのＺ値より手前であれば描画し、後方であれば描画処理をキャンセルすることで隠面消去処理を行う。
【０００３】
Ｚバッファ法ではピクセルのカラー値を格納するフレームバッファと同じメモリ容量が必要となる。また、フレームバッファの場合、隠面消去されるピクセルに対してはピクセル値を書き込む必要がないため、フレームバッファがアクセスされることがないが、Ｚバッファの場合は、結果的に隠面消去されることになるピクセルに対しても、ＺバッファのＺ値が参照されＺ判定がなされるため、処理コストが高い。
【０００４】
このように、Ｚバッファ法は必要なメモリ容量が大きくなり、処理コストも高いことから、最近では、できるだけ隠面消去処理にかかるコストを下げる工夫がなされている。たとえば、他のオブジェクトに隠れて見えないオブジェクトをあらかじめ選んで描画対象から外すオクルージョンカリングが行われる。オクルージョンカリングでは、ラスタライズ処理される前に、オブジェクトもしくはポリゴンの単位で早期に描画対象を選別し、リダクションすることができる。
【０００５】
また、ピクセル処理に入る前のフラグメント生成の段階において、隠れて見えないフラグメントを除外する早期Ｚカリング（Early Z Culling）や、解像度の異なるＺバッファを階層的に積み上げた階層的Ｚバッファを用いたＺカリング（「階層的Ｚカリング」（Hierarchical Z Culling）と呼ばれる）により、隠面消去処理の効率化が図られる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
オクルージョンカリングの一つの方法は、オブジェクトの周囲にそのオブジェクトを内包するようなバウンディングボリュームを形成し、このバウンディングボリュームが他のオブジェクトのバウンディングボリュームにより完全に隠れる場合は、そのオブジェクトを描画対象から外すことである。これには、ラスタライズ処理の前に、あるバウンディングボリュームがスクリーン座標上で他のバウンディングボリュームにより完全に隠蔽されるかどうかを検出する計算処理が必要となり、最近の３次元グラフィックスのように描画対象となるオブジェクトの数が莫大になり、オブジェクト間の前後関係が複雑になってくると、オクルージョンカリング処理は困難になってくる。
【０００７】
また、階層的Ｚバッファを用いてＺカリングする場合でも、階層的Ｚバッファを生成するためにはピクセル単位のＺバッファを求めて、それを段階的に解像度を下げていくことで各解像度のＺバッファを生成する処理が必要となり、計算コストがかかる。
【０００８】
本発明はこうした課題に鑑みてなされたものであり、その目的は、複数の３次元オブジェクトの奥行き方向の位置関係を考慮して描画処理する際の処理効率を高めることのできる描画処理技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明のある態様の縮小Ｚバッファ生成方法は、複数のオブジェクトまたは前記複数のオブジェクトを構成するフラグメントの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Ｚ値を格納した縮小Ｚバッファを設け、前記オブジェクトまたは前記フラグメントが描画される画素ブロック内の画素単位のＺ値を前記縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較し、当該画素ブロック内の画素単位のＺ値の内、視点から最も遠方にあることを示す最遠方Ｚ値が当該画素ブロックの代表Ｚ値よりも視点に近いことを示す場合に、当該画素ブロックの代表Ｚ値を前記最遠方Ｚ値により更新する。
【００１０】
本発明の別の態様は、オクルージョンカリング方法である。この方法は、複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリング方法であって、前記複数のオブジェクトの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Ｚ値を格納した縮小Ｚバッファを設け、前記オブジェクトが描画される画素ブロック内の画素単位のＺ値を前記縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較し、当該画素ブロック内の画素単位のＺ値の内、視点から最も遠方にあることを示す最遠方Ｚ値が当該画素ブロックの代表Ｚ値よりも視点に近いことを示す場合に、当該画素ブロックの代表Ｚ値を前記最遠方Ｚ値により更新し、前記オブジェクトが描画される少なくとも１つの画素ブロックについて、当該画素ブロック内の画素単位のＺ値の中で、前記縮小Ｚバッファに格納された対応する画素ブロック単位の代表Ｚ値よりも視点に近いことを示すものが１つでも存在することが判明した場合には、当該オブジェクトは描画される可能性があると判定する。
【００１１】
本発明のさらに別の態様は、隠面消去方法である。この方法は、複数のオブジェクトが与えられた場合に、視点から見て他のオブジェクトの背後に隠れて見えない面を消去する隠面消去方法であって、前記複数のオブジェクトを構成するフラグメントの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた所定の画素ブロックの単位で視点からの奥行きを示す代表Ｚ値を格納した縮小Ｚバッファを設け、前記フラグメントが描画される画素ブロック内の画素単位のＺ値を前記縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較し、当該画素ブロック内の画素単位のＺ値の内、視点から最も遠方にあることを示す最遠方Ｚ値が当該画素ブロックの代表Ｚ値よりも視点に近いことを示す場合に、当該画素ブロックの代表Ｚ値を前記最遠方Ｚ値により更新し、前記フラグメントが描画される少なくとも１つの画素ブロックについて、当該画素ブロック内の画素単位のＺ値の中で、前記縮小Ｚバッファに格納された対応する画素ブロック単位の代表Ｚ値よりも視点に近いことを示すものが１つでも存在することが判明した場合には、当該フラグメントは描画される可能性があると判定する。
【００１２】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、データ構造などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１３】
本発明によれば、複数の３次元オブジェクトの奥行き方向の位置関係を考慮して描画処理する際の処理効率を高めることができる。
【発明を実施するための最良の形態】
【００１４】
本発明の実施の形態の概要を説明する。実施の形態では、描画すべきオブジェクトの集合が与えられると、視点から見て他のオブジェクトの背後に隠れて見えないオブジェクトを描画対象から外すオクルージョンカリングの方法を提供する。実施の形態のオクルージョンカリングのために以下の手段を用いる。
【００１５】
（１）オブジェクトの奥行き方向の位置関係を判定するために、複数の隣接画素をまとめた画素ブロックの単位で視点からの奥行きを示す代表Ｚ値を格納した縮小Ｚバッファ。
（２）実際に描画される可能性があるかどうかを判定すべきオブジェクトを内側に包含する外包ボリュームと、当該オブジェクトの内側に包含される内包ボリューム。
【００１６】
縮小Ｚバッファの代表Ｚ値は内包ボリュームを用いて次のように更新する。内包ボリュームが描画される画素ブロック内の画素単位のＺ値を縮小Ｚバッファに格納された対応する画素ブロックの代表Ｚ値と比較し、当該画素ブロック内の画素単位のＺ値の最大値が当該画素ブロックの代表Ｚ値よりも小さい場合に、当該画素ブロックの代表Ｚ値を当該画素ブロック内の画素単位のＺ値の最大値により更新する。
【００１７】
外包ボリュームを基準として縮小Ｚバッファを用いて次のようにオブジェクトのカリング判定を行う。外包ボリュームが描画される少なくとも１つの画素ブロックについて、当該画素ブロック内の画素単位のＺ値の中で、縮小Ｚバッファに格納された対応する画素ブロック単位の代表Ｚ値よりも小さいものが１つでも存在することが判明した場合には、当該オブジェクトは描画される可能性があると判定する。外包ボリュームが描画されるすべての画素ブロックについて、当該画素ブロック内の画素単位のＺ値の最小値が縮小Ｚバッファに格納された対応する画素ブロック単位の代表Ｚ値よりも大きい場合に、当該オブジェクトを描画対象から外してカリングする。
【００１８】
このように、描画判定対象となるオブジェクトに対して外包ボリュームと内包ボリュームという２つのバウンディングボリュームを設定し、それらのボリュームのピクセルのＺ値と縮小Ｚバッファの代表Ｚ値を比較して隠面消去処理する。これにより、描画されることがないオブジェクトをあらかじめ選別し、描画される可能性のあるオブジェクトのみをラスタライズして描画処理に進めることで、描画処理全体の高速化を図る。
【００１９】
以下、外包ボリュームと内包ボリュームの設定、外包ボリュームと縮小Ｚバッファを用いたＺカリング、および内包ボリュームを用いた縮小Ｚバッファの更新について詳しく説明する。
【００２０】
［１］外包ボリュームと内包ボリューム
図１（ａ）は、描画対象として与えられるオブジェクト２００の一例を示す図であり、図１（ｂ）は、オブジェクト２００に対して設けられる外包ボリューム４００と内包ボリューム３００の一例を示す図である。外包ボリューム４００は、内部にオブジェクト２００を完全に包含するように設けられる。内包ボリューム３００は、オブジェクト２００の内部に完全に包含されるように設けられる。
【００２１】
一例として、外包ボリューム４００はオブジェクト２００を包含する最小サイズの直方体、内包ボリューム３００はオブジェクト２００に包含される最大サイズの直方体であってもよい。外包ボリューム４００および内包ボリューム３００は、直方体以外の形状の立体、たとえば、球体であってもよい。外包ボリューム４００、内包ボリューム３００は、それぞれ外包ボリューム属性、内包ボリューム属性が付いたポリゴンで囲まれた閉空間であってもよい。
【００２２】
外包ボリューム４００は、オブジェクト２００を包含することからインクルージョンボリューム（Inclusion Volume）と呼ぶこともでき、内包ボリューム３００は、オブジェクト２００の表面を外部に締め出すことからエクスクルージョン（Exclusion Volume）と呼ぶこともできる。外包ボリューム４００はオブジェクト２００が空間で占める領域を外側から制限しており、一方、内包ボリューム３００はオブジェクト２００が空間で占める領域を内側から制限している。その意味で外包ボリューム４００と内包ボリューム３００は、オブジェクト２００の形状を外面と内面の両方から規定する「二重バウンディングボリューム」であるということができる。
【００２３】
外包ボリューム４００は、それに内包されるオブジェクト２００が描画される可能性があるかどうか、すなわち描画対象から外す（カリングする）べきかどうかを、縮小Ｚバッファを参照してＺ判定することにより決定するために用いられる。外包ボリューム４００は、縮小ＺバッファのＺ値の更新には用いられない。一方、内包ボリューム３００は縮小Ｚバッファの代表Ｚ値の更新に用いられるが、オブジェクト２００のカリング判定には用いられない。
【００２４】
外包ボリューム４００と内包ボリューム３００は、ラスタライズできる形状であれば形状や複雑さは問わない。これら２つのバウンディングボリュームを設定したのは、オブジェクト２００のポリゴン数を削減することで、メモリ容量を抑え、また、Ｚカリング判定や縮小Ｚバッファの更新を高速化するためである。後述するように、内包ボリューム３００を基準として縮小Ｚバッファの代表Ｚ値を更新しながら、外包ボリューム４００を基準としてＺカリングしても、誤ってオブジェクト２００をカリングしてしまうことがないことが保証される。
【００２５】
なお、外包ボリューム４００と内包ボリューム３００のいずれか一方あるいは両方がオブジェクト２００と完全に一致していてもよい。すなわちオブジェクト２００の形状をそのまま外包ボリューム４００や内包ボリューム３００として用いてＺカリング判定や縮小Ｚバッファ更新を行ってもよい。もっとも、この場合はオブジェクト２００と同じ形状であるため、ポリゴン数が多くなるため、メモリ容量も計算量も増えるが、描画される可能性のないオブジェクトをより正確に判定してカリングすることが可能となる。
【００２６】
外包ボリューム４００と内包ボリューム３００の形状をオブジェクト２００の形状に近づければ近づけるほど、カリングできるオブジェクトの数を増やすことができるが、メモリ量と計算量が増える。一方、外包ボリューム４００と内包ボリューム３００の形状をより簡素なものにすればするほど、メモリ量と計算量を減らすことができるが、カリングできるオブジェクトの数は少なくなる。カリングできるオブジェクトの数と、メモリ量や計算量との間にはトレードオフがあるため、外包ボリューム４００と内包ボリューム３００の形状は、カリング効率と、計算機のメモリ容量や処理性能の制限とのバランスを考慮して適宜決めればよい。
【００２７】
図２は、オブジェクト２００に対して設けられる別の外包ボリューム４１０と内包ボリューム３１０を示す図である。外包ボリューム４１０は、オブジェクト２００を内部に包含する円柱である。内包ボリューム３１０は、オブジェクト２００の内部に包含される、直交する２枚の板である。内包ボリューム３１０は、体積のあるオブジェクトでなくてもよく、このように厚さがゼロの板から構成されるものであってもよい。なお、厚さがゼロの板の場合も便宜上「ボリューム」という表現を用いることにする。
【００２８】
ここでは、内包ボリューム３１０は、上から見た場合に十字形状をなす２枚の板であるが、３枚以上の板で構成されてもよく、あるいは１枚の板であってもよい。ただし、１枚の板の場合、視点の位置によっては内包ボリューム３１０が細長く見えたり、完全に見えなくなることがあるため、投影変換後の内包ボリューム３１０の占める領域が小さくなり、縮小Ｚバッファの更新が十分に行えなくなる。その点、２枚の板を直交させておけば、視点の位置が変わっても内包ボリューム３１０が見えなくなることがなく、また、３枚以上の板にした場合に比べて、計算量も少なくすることができるから、直交する２枚の板で内包ボリューム３１０を構成することがより好適である。
【００２９】
［２］Ｚテスト
オブジェクト２００に対して設定された外包ボリューム４００と内包ボリューム３００のそれぞれを構成するポリゴンを、オブジェクト２００を描画するスクリーン座標に投影変換し、縮小Ｚバッファに対応したラスタライズ処理を行う。外包ボリューム４００のラスタライズ処理の際、縮小ＺバッファによるＺカリング判定が行われ、内包ボリューム３００のラスタライズ処理の際、縮小Ｚバッファの代表Ｚ値の更新が行われる。
【００３０】
［２．１］縮小Ｚバッファ
図３は、縮小Ｚバッファ５００を示す図である。縮小Ｚバッファ５００は、描画時に用いるＺバッファのタイル状の複数の画素を１つの画素ブロックにまとめ、解像度を低くしたバッファである。外包ボリューム４００と内包ボリューム３００の２つのバウンディングボリュームを縮小Ｚバッファ５００に対応させてラスタライズ処理することで、より少ない処理量で隠面消去処理を行うことができる。
【００３１】
図３の例では、縮小Ｚバッファ５００は、縦４画素、横４画素からなる画素ブロックを１単位としてＺ値を格納する。最小画素を点線で図示しており、画素ブロックを実線で図示している。１画素ブロックには、１６個の画素が含まれる。画素ブロック単位のＺ値を「代表Ｚ値」と呼ぶ。Ｚ値は、視点から見た場合の奥行きの値を示し、視点に近いほど小さく、視点から遠ざかるほど大きい。
【００３２】
縮小Ｚバッファ５００の各画素ブロックの代表Ｚ値は、当該画素ブロック内に描画される内包ボリューム３００のポリゴンの頂点に位置する画素のＺ値、当該画素ブロック内に描画される内包ボリューム３００のポリゴンの辺と当該画素ブロックの境界線の交点に位置する画素のＺ値、および当該画素ブロックの四隅点に位置する画素のＺ値により決定される。各画素ブロックの代表Ｚ値は、画素ブロック内の各画素のＺ値の最大値、すなわち画素ブロック内の画素の内、視点からもっとも遠い画素のＺ値であることが保証される。縮小Ｚバッファ５００の代表Ｚ値の更新方法は後述する。
【００３３】
［２．２］外包ボリュームを基準とした縮小ＺバッファによるＺカリング判定
外包ボリューム４００は、オブジェクト２００が描画される可能性のある領域を検出し、オブジェクト２００をカリングすべきかどうかを判定するために設けられている。わずかでも描画される可能性のある部分があれば、オブジェクト２００をカリングすることがあってはならない。判定もれの箇所がないことを保証するため、外包ボリューム４００は、オブジェクト２００を完全に包含する必要がある。オブジェクト２００が空間上で占めない余分な部分を外包ボリューム４００が含んでいても、その分、処理効率が落ちるが、カリング判定は破綻することがない。
【００３４】
外包ボリューム４００のラスタライズ処理において、次のようなＺカリング判定を行う。外包ボリューム４００が描画される少なくとも１つの画素ブロックにおいて、当該画素ブロック内の複数の画素のＺ値の内、縮小Ｚバッファ５００の当該画素ブロックの代表Ｚ値よりも小さいものが１つでも存在することが判明した場合には、オブジェクト２００は描画される可能性があると判定する。そして、外包ボリューム４００が描画されるすべての画素ブロックについて、当該画素ブロック内の複数の画素のＺ値の最小値が縮小Ｚバッファ５００の当該画素ブロックの代表Ｚ値よりも大きい場合に、オブジェクト２００をカリングする。
【００３５】
このように各画素ブロックにおいて最も手前にある画素のＺ値を縮小Ｚバッファ５００の代表Ｚ値と比較することにより、描画される可能性のあるオブジェクト２００を確実に描画対象と判定することができ、描画される可能性のあるオブジェクト２００を誤ってカリングすることがないことを保証することができる。外包ボリューム４００のラスタライズ処理ではＺカリング判定のみを行い、縮小Ｚバッファ５００の代表Ｚ値を参照して画素単位のＺ値と比較するが、縮小Ｚバッファ５００に直接、代表Ｚ値を書き込むことはない。以下、Ｚカリング判定処理の手順を具体的な例を挙げながら説明する。
【００３６】
図４は、オブジェクト２００の外包ボリューム４００のポリゴン４０２と縮小Ｚバッファ５００の関係を示す図である。同図ではポリゴン４０２が描画面に投影された状態を示しており、ポリゴン４０２は縮小Ｚバッファ５００の斜線で示した画素ブロック（符号５０２、５０４など）の位置に描画される。ポリゴン４０２をラスタライズして各画素のＺ値を算出し、各画素ブロックの代表Ｚ値と比較してＺ判定を行う。
【００３７】
図５は、図４の縮小Ｚバッファ５００の画素ブロック５０２において代表Ｚ値と画素単位のＺ値の関係を示す図である。画素ブロック５０２の代表Ｚ値Ｚｒは１５であり、ポリゴン４０２の頂点ＢのＺ値ｂは２０であり、ポリゴン４０２の各辺と画素ブロック５０２の境界の交点Ｃ１、Ｃ２のＺ値ｃ１、ｃ２はそれぞれ２５、２４である。また、画素ブロック５０２の四隅点の内、ポリゴン４０２の内部に含まれる点ＤのＺ値ｄは２６である。
【００３８】
図５の場合、ポリゴン４０２のラスタライズして得られる画素ブロック５０２内の各画素のＺ値は、縮小Ｚバッファ５００の当該画素ブロック５０２の代表Ｚ値より大きい。したがって、ポリゴン４０２は、画素ブロック５０２については縮小Ｚバッファ５００より後方にあることが確実である。なぜなら、縮小Ｚバッファ５００の画素ブロック５０２の代表Ｚ値Ｚｂは１５であるが、縮小Ｚバッファ５００の性質上、この代表Ｚ値は、画素ブロック５０２を最小画素単位で見た場合のＺ値の最大値であることが保証されている。したがって、画素ブロック５０２の最小画素単位で見たＺ値が１５よりも大きくなることはないから、画素ブロック５０２内でサンプリングされたポリゴン４０２上の各点Ｂ、Ｃ１、Ｃ２、Ｄは確実に後方にあることがわかる。
【００３９】
このようなＺ判定を図４の斜線で示した、ポリゴン４０２が描画されるすべての画素ブロックについて行い、すべての画素ブロックにおいて各画素のＺ値が縮小Ｚバッファ５００の代表Ｚ値よりも大きい場合、ポリゴン４０２は隠面消去されるべきものであることが判明する。外包ボリューム４００の描画対象のすべてのポリゴンについてこのＺ判定を行い、すべてのポリゴンが隠面消去されるべきであることがわかると、外包ボリューム４００は視点から見えないことが最終的に判定されたことになる。この場合、外包ボリューム４００で内包されるオブジェクト２００をカリングする。
【００４０】
図６（ａ）は、図４の縮小Ｚバッファ５００の画素ブロック５０２において代表Ｚ値と画素単位のＺ値の関係を別の例で示す図である。この例では、画素ブロック５０２の代表Ｚ値Ｚｒは１５で、ポリゴン４０２の頂点ＢのＺ値は１０であり、ポリゴン４０２の２つの辺と画素ブロック５０２の境界線の交点Ｃ１、Ｃ２のＺ値ｃ１、ｃ２はそれぞれ４０、３０であり、ポリゴン４０２内にある画素ブロック５０２の隅点ＤのＺ値は３４である。
【００４１】
図６（ａ）の場合、頂点ＢのＺ値ｂは、縮小Ｚバッファ５００の画素ブロック５０２の代表Ｚ値Ｚｒ＝１５よりも小さく、交点Ｃ１、Ｃ２のＺ値ｃ１、ｃ２、およびポリゴン４０２内にある画素ブロック５０２の隅点ＤのＺ値ｄは、画素ブロック５０２の代表Ｚ値よりも大きい。このとき、ポリゴン４０２が画素ブロック５０２内で前方にあるか、後方にあるかは、最小画素単位でＺ値を比較しなければ、正確なところはわからない。そこで、図６（ｂ）と図６（ｃ）を参照して、画素ブロック５０２の画素単位のＺ値の分布例を示し、各分布例において、ポリゴン４０２が画素ブロック５０２内で前方にあるか、後方にあるかを考える。
【００４２】
図６（ｂ）は、画素ブロック５０２内における各画素のＺ値の分布の一例を示す図である。頂点ＢのＺ値ｂ＝１０はその位置の画素単位のＺ値である８よりも大きいから、後方にある。この場合、頂点Ｂ、交点Ｃ１、Ｃ２、隅点Ｄのいずれもが後方にあるから、このポリゴン４０２は画素ブロック５０２に関する限り、後方にあることがわかる。
【００４３】
図６（ｃ）は、画素ブロック５０２内における各画素のＺ値の分布の別の例を示す図である。頂点ＢのＺ値ｂ＝１０はその位置の最小画素のＺ値である１５よりも小さいから、頂点ｂは前方にあることになる。したがって、ポリゴン４０２の少なくとも頂点Ｂは、前方にあるから描画対象とすべきであり、オブジェクト２００はカリングしてはならない。
【００４４】
図５および図６（ａ）〜（ｃ）の考察から、ポリゴン４０２が描画される可能性があると判定する際、「疑わしきは描画する」ように緩やかな条件で判定する必要があること、一方、ポリゴン４０２を描画対象から外してカリングする際、「疑わしきはカリングしない」ように厳しい条件で判定しなければならないことがわかる。
【００４５】
描画される可能性が少しでもあるオブジェクトを誤ってカリングすることがないことを保証するために、厳格なカリング判定条件を以下のように定める。
【００４６】
［厳格なカリング判定条件Ｂ］
外包ボリューム４００が描画されるすべての画素ブロックについて、
当該画素ブロック内の描画対象のすべての画素のＺ値が縮小Ｚバッファ５００の当該画素ブロックの代表Ｚ値よりも大きい場合、言い換えれば、
当該画素ブロック内の描画対象の画素のＺ値の最小値が縮小Ｚバッファ５００の当該画素ブロックの代表Ｚ値よりも大きい場合、当該オブジェクト２００をカリングする。
【００４７】
外包ボリューム４００のポリゴン４０２が描画される画素ブロック５０２内の画素単位のＺ値を縮小Ｚバッファ５００の画素ブロック５０２の代表Ｚ値と比較する際、ポリゴン４０２をラスタライズして得られるすべての画素を画素ブロック５０２の代表Ｚ値との比較対象とする必要はなく、ポリゴン４０２が平面であることから、ポリゴン４０２の端点のＺ値だけを評価すれば十分である。すなわち、図５および図６（ａ）で説明したように、画素ブロック５０２内にある外包ボリューム４００のポリゴン４０２の頂点Ｂに位置する画素のＺ値ｂ、ポリゴン４０２の辺と画素ブロック５０２の境界線の交点Ｃ１、Ｃ２に位置する画素のＺ値ｃ１、ｃ２、およびポリゴン４０２に内包される画素ブロック５０２の隅点Ｄに位置する画素のＺ値ｄを、画素ブロック５０２の代表Ｚ値Ｚｒと比較すればよい。したがって、厳格なカリング判定条件Ｂは、次のように簡単にすることができる。
【００４８】
［厳格なカリング判定条件Ｂ’］
外包ボリューム４００が描画されるすべての画素ブロックについて、
ｂ＞Ｚｒかつｃ＞Ｚｒかつｄ＞Ｚｒならば、言い換えれば、
ｍｉｎ（ｂ，ｃ，ｄ）＞Ｚｒならば、オブジェクト２００をカリングする。
ここで、ｂは当該画素ブロック内にある外包ボリューム４００のポリゴンの頂点ＢのＺ値、ｃは当該ポリゴンの辺と当該画素ブロックの境界線の交点ＣのＺ値、ｄは当該ポリゴンに内包される当該画素ブロックの隅点ＤのＺ値であり、頂点Ｂ、交点Ｃ、隅点Ｄが複数ある場合はすべてのサンプリングポイントを評価する。
【００４９】
厳格なカリング判定条件Ｂ’は、外包ボリューム４００が描画されるすべての画素ブロックについて、頂点Ｂ、交点Ｃ、隅点Ｄのうちもっとも手前にあるものが縮小Ｚバッファ５００の代表Ｚ値Ｚｒよりも遠方にあるなら、カリングするというものである。縮小Ｚバッファ５００の定義から、最小画素単位のＺ値は縮小Ｚバッファ５００の代表Ｚ値Ｚｒよりも大きくなることはないから、この条件でカリングしている限り、描画すべきものを誤ってカリングすることは決してないことが保証される。
【００５０】
上記の厳格なカリング判定条件Ｂの論理的な否定を取ることにより、「疑わしきは描画する」緩やかな描画判定条件を得ることができる。
【００５１】
［緩やかな描画判定条件Ａ］
外包ボリューム４００が描画される少なくとも１つの画素ブロックについて、当該画素ブロック内の画素単位のＺ値の中に、縮小Ｚバッファ５００の当該画素ブロックの代表Ｚ値よりも小さいものが１つでも存在することが判明した場合、オブジェクト２００は描画される可能性があると判定する。
【００５２】
外包ボリューム４００のポリゴン４０２が平面であることから、［緩やかな描画判定条件Ａ］は次のように簡単にすることができる。
【００５３】
［緩やかな描画判定条件Ａ’］
外包ボリューム４００が描画される少なくとも１つの画素ブロックについて、
ｂ＜Ｚｒまたはｃ＜Ｚｒまたはｄ＜Ｚｒならば、オブジェクト２００を描画される可能性があると判定する。
ここで、ｂは当該画素ブロック内にある外包ボリューム４００のポリゴンの頂点ＢのＺ値、ｃは当該ポリゴンの辺と当該画素ブロックの境界線の交点ＣのＺ値、ｄは当該ポリゴンに内包される当該画素ブロックの隅点ＤのＺ値であり、頂点Ｂ、交点Ｃ、隅点Ｄが複数ある場合はすべてのサンプリングポイントを評価する。
【００５４】
処理の高速化のために、オブジェクト２００の外包ボリューム４００をラスタライズ処理してＺ判定する過程で、ある画素ブロックについて緩やかな描画判定条件Ａ’が満たされると、ただちにそのオブジェクト２００は描画される可能性があると判定し、次のオブジェクトについてのＺカリング判定に進む。オブジェクト２００について、外包ボリューム４００が描画されるいずれの画素ブロックについても緩やかな描画判定条件Ａ’が満たされない場合は、結果的に厳格なカリング判定条件Ｂ’が満たされることになり、そのオブジェクト２００はカリングする。
【００５５】
図７は、図４の縮小Ｚバッファ５００の２つの画素ブロック５０２、５０４について順にラスタライズ処理がなされ、Ｚ判定がなされる過程を説明する図である。まず、縮小Ｚバッファ５００の左の画素ブロック５０２においてラスタライス処理がなされる。ポリゴン４０２の頂点ＢのＺ値ｂは２０、交点Ｃ１、Ｃ２のＺ値ｃ１、ｃ２はそれぞれ１８、１６、隅点Ｄ１のＺ値ｄ１は１４であり、左の画素ブロック５０２の代表Ｚ値Ｚｒは７である。左の画素ブロック５０２において、ポリゴン４０２内のサンプリング点Ｂ、Ｃ１、Ｃ２、Ｄ１のＺ値はいずれも代表Ｚ値よりも大きく、後方にあるから、左の画素ブロック５０２についてラスタライズ処理がなされる段階では、オブジェクト２００はまだ描画される可能性があるとは判定されない。
【００５６】
次に、右の画素ブロック５０４についてラスタライズ処理が進められる。右の画素ブロック５０４において、ポリゴン４０２の交点Ｃ１、Ｃ３のＺ値ｃ１、ｃ３はそれぞれ１８、１６、隅点Ｄ１、Ｄ２のＺ値ｄ１、ｄ２は１４、１２であり、右の画素ブロック５０２の代表Ｚ値Ｚｒは１５である。交点Ｃ１、Ｃ３については、ｃ１＞Ｚｒ、ｃ２＞Ｚｒであるが、隅点Ｄ１、Ｄ２については、ｄ１＜Ｚｒ、ｄ１＜Ｚｒであるから、緩やかな描画判定条件Ａ’を満たしており、オブジェクト２００は描画される可能性があると判定し、それ以降は、外包ボリューム４００のラスタライズ処理を打ち切る。
【００５７】
このように、外包ボリューム４００を走査ラインに沿ってラスタライズしながら各画素ブロックにおいて描画判定を行い、ある画素ブロックについて緩やかな描画判定条件Ａ’を満たした段階でオブジェクト２００は描画される可能性があると判定し、以降のラスタライズ処理を打ち切り、すべての画素ブロックについて緩やかな描画判定条件Ａ’を満たしていない、すなわち厳格なカリング条件Ｂ’を満たしていることが判明すると、オブジェクト２００をカリングする。
【００５８】
図８は、外包ボリューム４００のポリゴン４０２のラスタライズ処理においてＺ判定されるサンプリングポイントを示す図である。外包ボリューム４００のポリゴン４０２内で斜線で示した画素ブロックに含まれる頂点、交点、隅点をＺ判定すればよいから、白丸で示した点がサンプリングポイントとなる。画素ブロックの境界線上のサンプリングポイントについては、境界線において隣接するすべての画素ブロックの代表Ｚ値との間でＺ判定されることになる。
【００５９】
［２．３］内包ボリュームによる縮小Ｚバッファの代表Ｚ値の更新
内包ボリューム３００は、オブジェクト２００が存在することにより、これよりも後方にある他のオブジェクトが隠れて描画されることがない領域を検出し、縮小Ｚバッファ５００を更新するために設けられている。描画されることのない領域を正しく検出するためには次の条件をすべて満たす必要がある。
【００６０】
１．内包ボリューム３００が描画される画素ブロック内の全画素が内包ボリューム３００の描画データにより覆われていること。ここで、画素ブロックは内包ボリューム３００の１つのポリゴンだけで覆われている必要はなく、複数のポリゴンで覆われていてもよい。画素ブロック内で少しでも隙間があると、その隙間から他のオブジェクトが見える可能性があるため、代表Ｚ値を内包ボリューム３００のＺ値で更新することはできない。
【００６１】
２．内包ボリューム３００が描画される画素ブロック内のすべての画素の中でＺ値が最も大きいものを選択し、当該画素ブロックの代表Ｚ値を当該画素ブロック内の画素単位のＺ値の最大値により更新すること。
【００６２】
上記１．の条件に関して、縮小Ｚバッファ５００は、複数の画素をまとめた画素ブロック単位で１つのＺ値をもたせたものであり、画素単位で見た場合に隙間が生じるかどうかを判定するのは難しい。そこで、本実施の形態におけるＺ判定は隠面消去処理の効率化のためであり、Ｚ判定が困難である場合はとりあえず描画対象と判断しておけばよい点を考慮し、内包ボリューム３００が縮小Ｚバッファ５００の画素ブロック内の全画素を描画する場合に限り、画素ブロックの代表Ｚ値を更新することにする。そのため、下記の判定手順で縮小Ｚバッファ５００の画素ブロック内の全画素が複数のポリゴンにより覆われているかどうかを判定する。
【００６３】
（１）内包ボリューム３００を構成する各ポリゴンの各辺に０または１の値を取る判定フラグを設け、各辺の判定フラグを０に初期化する。
【００６４】
（２）内包ボリューム３００の端部の辺を見つけてその辺の判定フラグを１に設定する。これは、内包ボリューム３００の各ポリゴンの各辺において、その辺に隣接する他のポリゴンがあるかどうかを判定し、隣接する他のポリゴンがない辺を検出することにより行われる。隣接する他のポリゴンがない辺は端部であり、その辺の判定フラグは１に設定される。この処理は、内包ボリューム３００を作成する段階で行うことができる。
【００６５】
なお、内包ボリューム３００が立体である場合は、隣接する他のポリゴンが存在しない端部の辺は存在しないため、（２）の端部の辺の検出処理は省略してもよい。内包ボリューム３００が板のような形状の場合は、隣接する他のポリゴンが存在しない端部の辺が存在するため、（２）の端部の辺の検出処理が必要となる。
【００６６】
（３）次に、内包ボリューム３００をスクリーン座標に投影して描画する際のエッジとなる辺を見つけて判定フラグを１に設定する。これは、内包ボリューム３００の各ポリゴンをスクリーン座標に投影変換する際、各ポリゴンの法線ベクトルを取得し、ポリゴンの法線ベクトルの向きが、投影面の裏から表へ貫く方向から投影面の表から裏へ貫く方向へ変化する辺を検出することで行われる。視点から見える表側のポリゴンの場合、法線ベクトルは投影面の裏から表へ貫く方向を向いているが、視点から見えない裏側のポリゴンの場合、法線ベクトルは投影面の表から裏へ貫く方向を向いている。したがって、法線ベクトルの変化から内包ボリューム３００が描画される際にエッジとなるポリゴンの辺を検出することができる。エッジとして検出された辺の判定フラグは１に設定される。
【００６７】
（４）上記（２）および（３）において検出された判定フラグが１である辺が通る縮小Ｚバッファ５００の画素ブロックについては、その画素ブロック内の全画素が描画されるとは限らないため、隙間が生じる可能性がある。そこで、判定フラグが１である辺が１つでも存在する画素ブロックについては、代表Ｚ値の更新対象から外す。画素ブロック内を通るすべての辺の判定フラグが０である画素ブロックについては、代表Ｚ値の更新対象とする。
【００６８】
図９、図１０、および図１１（ａ）〜（ｃ）を参照して、上記の（１）〜（４）の判定手順を説明する。図９は、投影変換された内包ボリューム３００のポリゴンと縮小Ｚバッファ５００の関係を示す図である。内包ボリューム３００のポリゴンの辺が通る縮小Ｚバッファ５００の画素ブロックの内、斜線を付した画素ブロックだけが代表Ｚ値の更新対象となることを図１０と図１１（ａ）〜（ｃ）を用いて説明する。
【００６９】
図１０は、図９の内包ボリューム３００のポリゴンの各辺に設定される判定フラグの値を示す図である。判定フラグが１である辺は、内包ボリューム３００のエッジである。図１１（ａ）〜（ｃ）は、図９の縮小Ｚバッファ５００の画素ブロック５１０、５１２、５１４内を通るポリゴンの辺を図１０の判定フラグの値とともに示す図である。
【００７０】
図１１（ａ）に示すように、画素ブロック５１０には判定フラグが１の辺３０２と判定フラグが０の辺３０４が通っており、判定フラグが１の辺３０２はエッジであるため、画素ブロック５１０内の４つの画素６０１、６０２、６０３、６０４についてはポリゴンが描画されないため、隙間が生じ、後方のオブジェクトが見える可能性がある。したがって、この画素ブロック５１０については代表Ｚ値の更新を行わない。
【００７１】
図１１（ｂ）に示すように、画素ブロック５１２には、判定フラグが０の３つの辺３０６、３０８、３１０が通っており、画素ブロック５１２の全画素は３つのポリゴンによって完全に覆われており、隙間がない。したがって、この画素ブロック５１２については代表Ｚ値の更新を行う。
【００７２】
図１１（ｃ）に示すように、画素ブロック５１４には、判定フラグが０の２つの辺３１６、３１８と、判定フラグが１の２つの辺３１２、３１４が通っており、２つの画素６０５、６０６についてはポリゴンが描画されないため、隙間が生じ、後方のオブジェクトが見える可能性がある。したがって、この画素ブロック５１４については代表Ｚ値の更新を行わない。
【００７３】
このように、図１０で示したポリゴンの各辺の判定フラグを参照して、代表Ｚ値の更新を行う画素ブロックを特定すると、図９の斜線で示した画素ブロックだけが代表Ｚ値の更新対象となる。次に、代表Ｚ値の更新方法を説明する。
【００７４】
［Ｚ値更新条件Ｃ］
内包ボリューム３００により完全に覆われた縮小Ｚバッファ５００の画素ブロックについて、
当該画素ブロック内の内包ボリューム３００の描画対象のすべての画素のＺ値が縮小Ｚバッファ５００の当該画素ブロックの代表Ｚ値よりも小さい場合、言い換えれば、
当該画素ブロック内の内包ボリューム３００の描画対象の画素のＺ値の最大値が縮小Ｚバッファ５００の当該画素ブロックの代表Ｚ値よりも小さい場合、当該画素ブロックの代表Ｚ値を当該画素ブロック内の画素単位のＺ値の最大値により更新する。
【００７５】
内包ボリューム３００のポリゴン面が平面であることより、ポリゴンの頂点Ｂに位置する画素のＺ値、ポリゴンの辺と当該画素ブロックの境界線の交点Ｃに位置する画素のＺ値、および当該画素ブロックの四隅点Ｄ１〜Ｄ４に位置する画素のＺ値を縮小Ｚバッファ５００の代表Ｚ値Ｚｒと比較すれば十分である。よって、Ｚ値更新条件Ｃは次のように簡単にできる。
【００７６】
［Ｚ値更新条件Ｃ’］
内包ボリューム３００により完全に覆われた縮小Ｚバッファ５００の画素ブロックについて、
ｍａｘ（ｂ，ｃ，ｄ１，ｄ２，ｄ３，ｄ４）＜Ｚｒならば、縮小ＺバッファのＺ値をｍａｘ（ｂ，ｃ，ｄ１，ｄ２，ｄ３，ｄ４）の値で更新する。
ここで、ｂは当該画素ブロック内にある内包ボリューム３００のポリゴンの頂点ＢのＺ値、ｃは当該ポリゴンの辺と当該画素ブロックの境界線の交点ＣのＺ値、ｄは当該画素ブロックの四隅点Ｄ１〜Ｄ４のＺ値であり、頂点Ｂ、交点Ｃが複数ある場合はすべてのサンプリングポイントを評価する。
【００７７】
このＺ値更新条件Ｃ’は、頂点Ｂ、交点Ｃ、および四隅点Ｄ１〜Ｄ４のうち最も遠方にあるものが縮小Ｚバッファの現在の代表Ｚ値Ｚｒよりも手前にあるなら、代表Ｚ値Ｚｒをその最も遠方にあるＺ値で更新するというものである。確実にポリゴンが前方にある場合のみ、代表Ｚ値を更新し、疑わしきは更新しない。このようにして代表Ｚ値が更新された縮小Ｚバッファ５００を参照して、前述のＺカリング判定を行えば、描画される可能性のあるオブジェクトが誤ってカリングされることは絶対にないことが保証される。
【００７８】
図１２は、縮小Ｚバッファ５００の画素ブロック５１２の代表Ｚ値の更新を説明する図である。画素ブロック５１２は、内包ボリューム３００のポリゴンで完全に覆われているから、代表Ｚ値は更新の対象となる。ポリゴンの頂点ＢのＺ値ｂは１０、交点Ｃ１〜Ｃ３のＺ値ｃ１〜ｃ３はそれぞれ４０、３０、３０、四隅の点Ｄ１〜Ｄ４のＺ値ｄ１〜ｄ４はそれぞれ４３，４２，３５，３４であり、画素ブロック５１２の代表Ｚ値はＺｒ＝４８であるから、Ｚ値更新条件Ｃ’を満たす。代表Ｚ値Ｚｒは、Ｚ値が最大である隅点Ｄ１のＺ値ｄ１＝４３によって更新される。
【００７９】
図１３は、内包ボリューム３００のポリゴンのラスタライズ処理においてＺ判定されるサンプリングポイントを示す図である。斜線で示された代表Ｚ値の更新対象となる画素ブロックにおいて白丸で示したサンプリングポイントのＺ値が各画素ブロックの代表Ｚ値と比較され、Ｚ値更新条件Ｃ’を満たした場合に、その画素ブロックの代表Ｚ値が更新される。
【００８０】
［３］実施の形態の効果と変形例
以上、述べたように本実施の形態によれば、オブジェクト２００に対して外包ボリューム４００と内包ボリューム３００を設定し、縮小Ｚバッファ５００を用いて、それぞれのボリュームで異なる種類のＺ判定を行うことにより、描画される可能性のないオブジェクト２００をカリングし、隠面消去処理の効率化を図ることができる。
【００８１】
また、オブジェクト２００を外包ボリューム４００と内包ボリューム３００という二重バウンディングボリュームで挟み込み、二重バウンディングボリュームがオブジェクト２００の形状を近似する精度を調整することでカリング効率を必要に応じて任意に変えることができる。
【００８２】
また、従来は、縮小Ｚバッファを生成するために、通常の画素単位のＺバッファを求め、複数の画素のＺ値を段階的にまとめることで、解像度を段階的に縮小した階層Ｚバッファを生成する方法が取られていたが、本実施の形態では、通常の画素単位のＺバッファを利用せずに、画素ブロック単位の縮小Ｚバッファを直接求めることができるため、処理効率が良い。縮小Ｚバッファの代表Ｚ値の更新は、オブジェクトのポリゴンが画素ブロックを完全に覆っており、ポリゴンが確実に前方にあることを確認してから注意深く行われる。これにより、縮小Ｚバッファを、画素単位のＺバッファを用いることなく、破綻なく求めることができる。
【００８３】
上述の実施の形態に対して、いくつかの変形例があり、以下、説明する。
【００８４】
［３．１］前面板と背面板
上記の説明では、オブジェクト２００に対して二重バウンディングボリュームである外包ボリューム４００と内包ボリューム３００を設定し、外包ボリューム４００によるＺカリング判定と、内包ボリューム３００による縮小Ｚバッファの代表Ｚ値更新を行った。別の実施例として、視点から見てオブジェクト２００を奥行き方向に前後に挟む前面板と背面板からなる二重バウンディングボードを設定し、前面板を用いて同様のＺカリング判定を行い、背面板を用いて縮小Ｚバッファの代表Ｚ値を行ってもよい。
【００８５】
図１４（ａ）、（ｂ）は、オブジェクト２００に対して設定される前面板４２０と背面板３２０を示す図である。図１４（ａ）に示すように、視点Ｖから見て、オブジェクト２００の前方に位置してオブジェクト２００を背後に隠す前面板４２０と、オブジェクト２００の背面に位置してオブジェクト２００の背後に隠れる背面板３２０を設ける。視点Ｖから見た場合、オブジェクト２００は前面板４２０の背後に隠れて全く見えず、背面板３２０はオブジェクト２００の背後に隠れて全く見えない。図１４（ｂ）は、視点Ｖに対して、オブジェクト２００と前面板４２０と背面板３２０の位置関係を上方から見た図である。
【００８６】
前面板４２０は視点Ｖから見てオブジェクト２００を完全に隠すものであるから、Ｚカリング判定において外包ボリューム４００と同じ効果を奏する。したがって、前面板４２０に対して、既に述べたＺカリング判定方法がそのまま利用できる。背面板３２０は視点から見てオブジェクト２００に完全に隠れるものであるから、縮小Ｚバッファ５００の更新において内包ボリューム３００と同じ効果を奏する。したがって、背面板３２０に対して、既に述べた縮小Ｚバッファ５００の代表Ｚ値の更新方法がそのまま利用できる。
【００８７】
一例として、前面板４２０は、オブジェクト２００を描画面に投影したシルエットを完全に囲む最小サイズの長方形、背面板３２０は、オブジェクト２００のシルエットに完全に囲まれる最大サイズの長方形であってもよい。あるいは、前面板４２０および背面板３２０を任意形状とし、オブジェクト２００のシルエットの形状に近づけてもよい。前面板４２０および背面板３２０の形状がオブジェクト２００のシルエットの形状に近づけるほど、カリング効率を高めることができる。また、前面板４２０、背面板３２０がオブジェクト２００のそれぞれ前面および背面に置かれる位置についても、オブジェクト２００の位置に近づけるほど、カリング効率を高めることができる。
【００８８】
オブジェクト２００に対して外包ボリューム４００や内包ボリューム３００を生成するための処理コストに比べると、オブジェクト２００に対して前面板４２０と背面板３２０を生成することははるかに容易である。また、前面板４２０と背面板３２０はラスタライズ処理も容易であるから、Ｚカリング判定や縮小Ｚバッファ５００の代表Ｚ値の更新を高速に行うことができる。
【００８９】
視点が移動すると、オブジェクト２００が前面板４２０の背後に完全に隠れることがなくなったり、背面板３２０がオブジェクト２００の背後に見えるようになるため、視点位置が変わると、前面板４２０と背面板３２０を設定し直す必要がある。この点、外包ボリューム４００と内包ボリューム３００は、どの視点位置から見てもオブジェクト２００を外側と内側から制限する二重バウンディングボリュームであることに変わりがないから、視点位置が変わっても再設定する必要がない。視点の位置が変化する場合は、外包ボリューム４００と内包ボリューム３００を用いるのがより好適である。
【００９０】
オブジェクト２００が動く場合、外包ボリューム４００と内包ボリューム３００をラスタライズし直すことになるため、処理が重くなる。それに対して、前面板４２０と背面板３２０はオブジェクト２００が動いても再設定することが容易であるため、処理負荷が大きくならなくて済む。オブジェクト２００が頻繁に動く場合は、前面板４２０と背面板３２０を用いるのがより好適である。
【００９１】
［３．２］構成要件の一部省略
上記の実施の形態では、オブジェクト２００に対して外包ボリューム４００と内包ボリューム３００という二重バウンディングボリュームを設けて、オブジェクト２００を奥行き方向で近似し、縮小Ｚバッファ５００を更新しながら、Ｚカリング判定を行う方法を説明した。オブジェクト２００に完全に内包される内包ボリューム３００で縮小Ｚバッファ５００を生成し、オブジェクト２００を完全に内包する外包ボリューム４００を基準として縮小Ｚバッファ５００を用いてカリング判定を行うことで、描画すべきオブジェクト２００を誤ってカリングすることが絶対にないことを保証した。
【００９２】
縮小Ｚバッファ５００と二重バウンディングボリュームを用いたオクルージョンカリング方法には、メモリ容量と処理負荷の面で次の利点がある。
（Ａ）実際のオブジェクト２００よりも複雑度の低いバウンディングボリュームを用いるため、ポリゴンモデルを記憶するメモリ容量が少なくて済み、ポリゴンモデルのラスタライズ処理も高速に行える。
（Ｂ）縮小Ｚバッファ５００を用いて画素ブロック単位のＺ判定をするため、通常のＺバッファを用いた画素単位のＺ判定に比べて、必要とされるメモリ容量が少なく、演算回数も少なくて済む。
【００９３】
実施の形態の変形として、
（１）縮小Ｚバッファ５００を用いないで、二重バウンディングボリュームを通常のＺバッファに対してラスタライズしてオクルージョンカリングする方法、または、
（２）二重バウンディングボリュームを用いないで、オブジェクト２００を縮小Ｚバッファ５００に対して直接ラスタライズしてオクルージョンカリングする方法
を採用することもできる。すなわち縮小Ｚバッファ５００、二重バウンディングボリュームのいずれか一方を構成要件から外しても、本発明を実施することができる。
【００９４】
縮小Ｚバッファ５００を構成要件から外すと、縮小Ｚバッファ５００を採用することによる上記（Ｂ）のメリットが失われるが、二重バウンディングボリュームを採用することによる上記（Ａ）のメリットは保たれる。二重バウンディングボリュームを構成要件から外した場合、二重バウンディングボリュームを採用することによる上記（Ａ）のメリットが失われるが、縮小Ｚバッファ５００を採用することによる上記（Ｂ）のメリットは保たれる。いずれの場合も、メリットの一部が失われるが、オクルージョンカリングの目的は同様に達することができる。
【００９５】
同様に、前面板４２０と背面板３２０という二重バウンディングボードを用いる場合でも、縮小Ｚバッファを構成要件から外しても、オクルージョンカリングの目的を達することができる。
【００９６】
また、実施の形態では、オブジェクト単位でカリングする方法を説明したが、オブジェクトを構成するポリゴンなどのフラグメントの単位でカリングする場合にも本発明を適用することができる。実施の形態の縮小Ｚバッファを用いたＺカリングは、オブジェクト単位に限らず、プリミティブ単位でのＺカリングにも適用できる。実施の形態では、視点の手前にある他のオブジェクトに隠れて見えないオブジェクトを選り抜き、あらかじめ描画対象から外すことを目的とするオクルージョンカリングを説明したが、実施の形態の縮小Ｚバッファは、他のオブジェクトに隠れて見えない物体の面すなわち隠面を検出して消去する隠面消去法に用いてもよい。このように実施の形態の縮小Ｚバッファは、オブジェクト単位のオクルージョンカリングだけでなく、オブジェクトの隠面を消去する隠面消去にも適用して、Ｚカリングの処理効率を上げることができる。
【００９７】
また階層的Ｚバッファを利用する各種の描画処理において、階層的Ｚバッファの代わりに実施の形態の縮小Ｚバッファを用いることにより、画素単位のＺバッファを前提としないで、解像度を落とした縮小Ｚバッファを生成できるため、計算量やメモリ容量の点で有利な構成にすることができる。
【００９８】
［４］描画処理装置の構成
以下、上記の実施の形態およびその変形例に係るオクルージョンカリング方法を利用した描画処理装置１００の構成と動作を説明する。図１５から図１７を参照して描画処理装置１００の構成を説明するが、これらの図は機能に着目したブロック図を描いており、これらの機能ブロックはハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現することができる。
【００９９】
図１５は、実施の形態に係る描画処理装置１００の構成図である。描画処理装置１００は、３次元モデル情報にもとづいて２次元画面に表示するための描画データを生成するレンダリング処理を行う。描画処理装置１００は、メインプロセッサ１３０と、グラフィックスプロセッサ１１０が入出力インタフェース１６０を介して相互接続されて構成される。メインプロセッサ１３０はメインメモリ１７０を記憶領域として用いて、ジオメトリ演算などの演算処理を実行し、グラフィックスプロセッサ１１０は、フレームバッファ５０を記憶領域として用いて、ラスタライズ処理やシェーディングアルゴリズムなどの描画演算処理を実行する。
【０１００】
メインプロセッサ１３０はＺカリング処理部１４０を含み、グラフィックスプロセッサ１１０は描画処理部１２０を含む。メインプロセッサ１３０は描画すべき複数のオブジェクトのデータを外部記憶装置などから読み取り、メインメモリ１７０に記憶する。Ｚカリング処理部１４０は、縮小Ｚバッファを用いて、複数のオブジェクトの内、他のオブジェクトに隠れて見えないオブジェクトを描画対象から外すＺカリング処理を行う。グラフィックスプロセッサ１１０には、描画される可能性のあるオブジェクトだけが入出力インタフェース１６０を介して供給され、描画処理部１２０により描画される可能性のあるオブジェクトがラスタライズされ、フレームバッファ５０に描画される。
【０１０１】
図１６は、Ｚカリング処理部１４０の構成図である。オブジェクト入力部１４２は、描画すべき複数のオブジェクトを入力し、オブジェクト集合としてオブジェクト記憶部１５２に記憶する。
【０１０２】
内包ボリューム生成部１４８は、入力されたオブジェクト２００に包含される内包ボリューム３００を生成し、縮小Ｚバッファ更新部１５０に与える。縮小Ｚバッファ更新部１５０は、内包ボリューム３００にもとづいて、縮小Ｚバッファ記憶部１５４に記憶される縮小Ｚバッファ５００を更新する。縮小Ｚバッファ更新部１５０による縮小Ｚバッファ５００の代表Ｚ値の更新処理は、［２．３］節で述べた通りである。縮小Ｚバッファ更新部１５０は更新後の縮小Ｚバッファ５００を縮小Ｚバッファ記憶部１５４に記憶する。
【０１０３】
外包ボリューム生成部１４４は、カリング判定対象のオブジェクト２００を包含する外包ボリューム４００を生成し、カリング判定部１４６に与える。カリング判定部１４６は、縮小Ｚバッファ記憶部１５４に格納された縮小Ｚバッファ５００を参照し、外包ボリューム４００にもとづいてオブジェクト２００のＺカリング判定を行う。カリング判定部１４６によるＺカリング判定処理は、［２．２］節で述べた通りである。カリング判定部１４６は、Ｚカリング判定により描画対象から外されたオブジェクトをオブジェクト記憶部１５２に記憶されたオブジェクト集合から除去する。Ｚカリング処理部１４０は、オブジェクト記憶部１５２に記憶された、描画される可能性のあるオブジェクトのみからなるオブジェクト集合を描画処理部１２０に供給する。
【０１０４】
図１７は、描画処理装置１００の構成図である。描画処理装置１００は、ラスタライザ１０とシェーダ２０を含む。ラスタライザ１０には、描画される可能性のあるオブジェクトだけが入力される。ラスタライザ１０は、プリミティブ生成部３０と、セットアップ処理部３２と、ＤＤＡ３４とを含む。
【０１０５】
プリミティブ生成部３０は、入力されたオブジェクトのポリゴン情報をもとに、オブジェクトを構成する１つ以上のプリミティブの頂点座標とパラメータを含むストリームを生成し、セットアップ処理部３２に与える。プリミティブは、３次元オブジェクトをポリゴンモデルで表した場合の点、線、三角形、四角形などの幾何学図形の描画単位である。
【０１０６】
セットアップ処理部３２は、プリミティブのストリームをデジタル微分解析器（Digital Differential Analyzer；ＤＤＡ）により処理するための各種パラメータのセットアップを行う。具体的には、プリミティブを含む空間を区切るバウンディングボックスの設定や、エッジ係数などＤＤＡ処理の各種パラメータの設定を行う。
【０１０７】
セットアップ処理部３２は、セットアップ後のプリミティブデータをＤＤＡ３４に供給する。ＤＤＡ３４は、セットアップ処理部３２から与えられるプリミティブを、セットアップ処理部３２により設定された各種パラメータにもとづいてＤＤＡ処理して、描画スクリーンに対応したピクセルデータに変換する。
【０１０８】
プリミティブは一例として三角形の形状であり、ＤＤＡ３４は、３次元空間上の三角形を投影変換により描画平面上の三角形に変換するビュー変換を行い、さらに、描画平面上の三角形を描画平面の水平方向に沿ってスキャンしながら、ラスタライン毎に量子化されたピクセルに変換する。ＤＤＡ３４により、プリミティブがピクセル展開され、各ピクセルについて、ＲＧＢ３原色で表されるカラー値、透明度を示すアルファ値、奥行きを示すＺ値、テクスチャ属性を参照するためのパラメータ座標であるＵＶ座標値などを含むピクセルデータが算出される。
【０１０９】
シェーダ２０は、ラスタライザ１０により算出されたピクセルデータをもとに、シェーディング処理を行ってピクセルのカラー値を求め、さらに、テクスチャマッピングを行う場合は、テクスチャのカラー値を合成して最終的なピクセルのカラー値を算出し、フレームバッファ５０にピクセルデータを書き込む。
【０１１０】
シェーダ２０は、さらに、フレームバッファ５０に保持された描画データに対して、フォギング、アルファブレンディング等の処理を行い、最終的なピクセルのカラー値を求め、フレームバッファ５０のピクセルデータを更新する。
【０１１１】
フレームバッファ５０は、シェーダ２０により生成されたピクセルデータをスクリーン座標で格納するバッファであり、格納されたピクセルデータは、最終描画画像であることも、シェーディング処理過程にある中間画像であることもある。フレームバッファ５０に記憶されたピクセルデータは、表示装置に出力されて表示される。
【０１１２】
上記の説明では、Ｚカリング処理部１４０をメインプロセッサ１３０に設けたが、Ｚカリング処理部１４０の外包ボリューム生成部１４４と内包ボリューム生成部１４８は、それぞれ外包ボリューム４００と内包ボリューム３００をラスタライズするため、描画処理部１２０のラスタライザ１０を利用して実行することができる。そのため、Ｚカリング処理部１４０をグラフィックスプロセッサ１１０に設け、Ｚカリング処理部１４０の各構成を描画処理部１２０のラスタライザ１０やシェーダ２０の演算機能を用いて実行するように構成してもよい。この場合、マルチパスレンダリングに手法を用いて、最初の演算パスで描画されることのないオブジェクトをカリングし、次の演算パスで描画される可能性のあるオブジェクトのみを投入して描画するように構成してもよい。
【０１１３】
図１８は、Ｚカリング処理部１４０によるＺカリング処理の手順を説明するフローチャートである。オブジェクト入力部１４２は、Ｎ個のオブジェクトを入力し（Ｓ１０）、オブジェクト入力部１４２は、処理済みのオブジェクトをカウントするための変数ｉを０に初期化する（Ｓ１２）。オブジェクト入力部は、変数ｉを１だけインクリメントし（Ｓ１４）、第ｉ番目のオブジェクトを外包ボリューム生成部１４４と内包ボリューム生成部１４８に与える。
【０１１４】
外包ボリューム生成部１４４は第ｉ番目のオブジェクトを包含する外包ボリュームを生成し、内包ボリューム生成部１４８は第ｉ番目のオブジェクトに包含される内包ボリュームを生成する（Ｓ１６）。
【０１１５】
カリング判定部１４６は、第ｉ番目のオブジェクトを包含する外包ボリュームにもとづいて縮小Ｚバッファ５００を用いたＺカリング判定を行う（Ｓ１８）。内包ボリューム生成部１４８は、第ｉ番目のオブジェクトに包含される内包ボリュームにもとづいて縮小Ｚバッファ５００を更新する（Ｓ２０）。
【０１１６】
変数ｉがオブジェクトの総数Ｎより小さい場合（Ｓ２２のＹ）、ステップＳ１４に戻り、変数ｉがオブジェクトの総数Ｎに達した場合（Ｓ２２のＮ）、終了する。
【０１１７】
上記の手順では、ｉ番目のオブジェクトを包含する外包ボリュームを用いてＺカリング判定がなされた後、ｉ番目のオブジェクトに包含される内包ボリュームを用いて縮小Ｚバッファ５００の更新がなされたが、カリング判定と縮小Ｚバッファ５００の更新は独立して行うことができるので、この順に行わなくてもよい。また、すべてのオブジェクトに対して、Ｚカリング判定と縮小Ｚバッファ５００の更新の両方を実行する必要はなく、縮小Ｚバッファ５００の更新に利用されるオブジェクトの集合と、Ｚカリング判定されるオブジェクトの集合が異なっていてもよい。
【０１１８】
たとえば、縮小Ｚバッファ５００の更新は、サイズの大きなオブジェクトや、前方に位置することがあらかじめわかっているオブジェクトについて行い、サイズの小さなオブジェクトや、後方に位置することがあらかじめわかっているオブジェクトについては適宜省略することで処理コストを下げることができる。
【０１１９】
また、Ｚカリング判定されるオブジェクトについても、後方に位置することがあらかじめわかっているオブジェクトを優先して判定したり、演算処理が重たいオブジェクトを中心にカリング判定するなど、適宜、判定対象のオブジェクトを選択してもよい。
【０１２０】
図１９は、カリング判定部１４６によるステップＳ１８のカリング判定の手順を示すフローチャートである。カリング判定部１４６は、オブジェクトの外包ボリュームをラスタライズし（Ｓ３０）、外包ボリュームが描画されるＭ個の画素ブロックを特定する（Ｓ３２）。処理済みの画素ブロックをカウントするための変数ｊを０に初期化する（Ｓ３４）。
【０１２１】
変数ｊを１だけインクリメントする（Ｓ３６）。カリング判定部１４６は、ｊ番目の画素ブロックにおいて、外包ボリュームのある１つの画素のＺ値がこの画素ブロックの代表Ｚ値よりも小さいことが判明した場合（Ｓ３８のＹ）、このオブジェクトは描画される可能性があるため、カリングしないことに決定する（Ｓ４０）。
【０１２２】
カリング判定部１４６は、ｊ番目の画素ブロックにおいて、外包ボリュームのいずれの画素のＺ値も画素ブロックの代表Ｚ値以上である場合（Ｓ３８のＮ）、この画素ブロックについては、オブジェクトは描画対象とは判定せず、変数ｊが画素ブロックの総数Ｍよりも小さい限り（Ｓ４２のＹ）、ステップＳ３６に戻り、他の画素ブロックについてもＺ判定を継続する。その結果、Ｍ個の画素ブロックのすべてについて、外包ボリュームのいずれの画素のＺ値も画素ブロックの代表Ｚ値以上であることが判明した場合（Ｓ３８のＮかつＳ４２のＮ）、カリング判定部１４６は、このオブジェクトは描画される可能性がないため、カリングする（Ｓ４４）。
【０１２３】
オブジェクトをカリングすべきかどうかが決定されると（Ｓ４０またはＳ４４）、カリング判定は終了する。
【０１２４】
図２０は、縮小Ｚバッファ更新部１５０によるステップＳ２０の縮小Ｚバッファ５００の更新の手順を示すフローチャートである。縮小Ｚバッファ更新部１５０は、オブジェクトの内包ボリュームをラスタライズし（Ｓ５０）、内包ボリュームのポリゴンで覆われるＬ個の画素ブロックを特定する（Ｓ５２）。処理済みの画素ブロックをカウントするための変数ｋを０に初期化する（Ｓ５４）。
【０１２５】
変数ｋを１だけインクリメントする（Ｓ５６）。縮小Ｚバッファ更新部１５０は、ｋ番目の画素ブロックにおいて、画素単位のＺ値の最大値がこの画素ブロックの代表Ｚ値よりも小さい場合（Ｓ５８のＹ）、代表Ｚ値をその画素単位のＺ値の最大値により更新する（Ｓ６０）。変数ｋが画素ブロックの総数Ｌより小さい場合（Ｓ６２のＹ）、ステップＳ５６に戻り、他の画素ブロックについてもＺ判定を行い、変数ｋが画素ブロックの総数Ｌに達した場合（Ｓ６２のＮ）、終了する。
【０１２６】
縮小Ｚバッファ更新部１５０は、ｋ番目の画素ブロックにおいて、画素単位のＺ値の最大値がこの画素ブロックの代表Ｚ値以上である場合（Ｓ５８のＮ）、代表Ｚ値を更新することなくステップＳ６２に進む。
【０１２７】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【０１２８】
【図１】図１（ａ）は、描画対象として与えられるオブジェクトの一例を示す図であり、図１（ｂ）は、オブジェクトに対して設けられる外包ボリュームと内包ボリュームの一例を示す図である。
【図２】オブジェクトに対して設けられる別の外包ボリュームと内包ボリュームを示す図である。
【図３】縮小Ｚバッファを示す図である。
【図４】オブジェクトの外包ボリュームのポリゴンと縮小Ｚバッファの関係を示す図である。
【図５】図４の縮小Ｚバッファのある画素ブロックにおいて代表Ｚ値と画素単位のＺ値の関係を示す図である。
【図６】図６（ａ）は、図４の縮小Ｚバッファのある画素ブロックにおいて代表Ｚ値と画素単位のＺ値の関係を別の例で示す図であり、図６（ｂ）および図６（ｃ）は、画素ブロック内における各画素のＺ値の分布の一例を示す図である。
【図７】図４の縮小Ｚバッファの二つの画素ブロックについて順にラスタライズ処理がなされ、Ｚ判定がなされる過程を説明する図である。
【図８】外包ボリュームのポリゴンのラスタライズ処理においてＺ判定されるサンプリングポイントを示す図である。
【図９】投影変換された内包ボリュームのポリゴンと縮小Ｚバッファの関係を示す図である。
【図１０】図９の内包ボリュームのポリゴンの各辺に設定される判定フラグの値を示す図である。
【図１１】図１１（ａ）〜（ｃ）は、図９の縮小Ｚバッファの三つの画素ブロック内を通るポリゴンの辺を図１０の判定フラグの値とともに示す図である。
【図１２】縮小Ｚバッファの画素ブロックの代表Ｚ値の更新を説明する図である。
【図１３】内包ボリュームのポリゴンのラスタライズ処理においてＺ判定されるサンプリングポイントを示す図である。
【図１４】図１４（ａ）および図１４（ｂ）は、オブジェクトに対して設定される前面板と背面板を示す図である。
【図１５】実施の形態に係る描画処理装置の構成図である。
【図１６】図１５のＺカリング処理部の構成図である。
【図１７】図１５の描画処理装置の構成図である。
【図１８】図１６のＺカリング処理部によるＺカリング処理の手順を説明するフローチャートである。
【図１９】図１６のカリング判定部によるカリング判定の手順を示すフローチャートである。
【図２０】図１６の縮小Ｚバッファ更新部による縮小Ｚバッファの更新の手順を示すフローチャートである。
【符号の説明】
【０１２９】
１０  ラスタライザ、  ２０  シェーダ、  ３０  プリミティブ生成部、  ３２  セットアップ処理部、  ３４  ＤＤＡ、  ５０  フレームバッファ、  １００  描画処理装置、  １１０  グラフィックスプロセッサ、  １２０  描画処理部、  １３０  メインプロセッサ、  １４０  Ｚカリング処理部、  １４２  オブジェクト入力部、  １４４  外包ボリューム生成部、  １４６  カリング判定部、  １４８  内包ボリューム生成部、  １５０  縮小Ｚバッファ更新部、  １５２  オブジェクト記憶部、  １５４  縮小Ｚバッファ記憶部、  ２００  オブジェクト、  ３００  内包ボリューム、  ４００  外包ボリューム、  ５００  縮小Ｚバッファ。
【図１】
2007310798.tif 000003
【図２】
2007310798.tif 000004
【図３】
2007310798.tif 000005
【図４】
2007310798.tif 000006
【図５】
2007310798.tif 000007
【図６】
2007310798.tif 000008
【図７】
2007310798.tif 000009
【図８】
2007310798.tif 000010
【図９】
2007310798.tif 000011
【図１０】
2007310798.tif 000012
【図１１】
2007310798.tif 000013
【図１２】
2007310798.tif 000014
【図１３】
2007310798.tif 000015
【図１４】
2007310798.tif 000016
【図１５】
2007310798.tif 000017
【図１６】
2007310798.tif 000018
【図１７】
2007310798.tif 000019
【図１８】
2007310798.tif 000020
【図１９】
2007310798.tif 000021
【図２０】
2007310798.tif 000022