(57)【特許請求の範囲】
【請求項１】
Ｚバッファ法を用いて３次元形状を描画する３次元形状描画装置であって、
描画すべき画素の奥行き値を計算する奥行き値計算部と、
前記奥行き値計算部によって計算された奥行き値のうち、最も前面に表示すべき画素の奥行き値の上位ビットを保持する上位Ｚバッファメモリと、
前記奥行き値計算部によって計算された奥行き値のうち、最も前面に表示すべき画素の奥行き値の下位ビットを保持する下位Ｚバッファメモリと、
前記上位Ｚバッファメモリが保持する上位ビットを読み出し、前記奥行き値計算部によって計算された奥行き値の上位ビットと比較する上位ビット比較部と、
前記上位ビット比較部による比較の結果、前記奥行き値計算部によって計算された奥行き値の上位ビットが、前記上位Ｚバッファメモリが保持する奥行き値の上位ビットと等しい値である場合、前記下位Ｚバッファメモリが保持する奥行き値の下位ビットを読み出し、前記奥行き値計算部によって計算された奥行き値の下位ビットと比較する下位ビット比較部と、
前記上位ビット比較部による比較の結果、前記奥行き値計算部によって計算された奥行き値の上位ビットが示す深度が、前記上位Ｚバッファメモリが保持する奥行き値の上位ビットが示す深度よりも浅い場合、前記奥行き値計算部によって計算された奥行き値によって、前記上位Ｚバッファメモリが保持する奥行き値の上位ビット及び前記下位Ｚバッファメモリが保持する下位ビットを更新し、前記下位ビット比較部による比較の結果、前記奥行き値計算部によって計算された奥行き値の下位ビットが示す深度が、前記下位Ｚバッファメモリが保持する奥行き値の下位ビットが示す深度よりも浅い場合、前記奥行き値計算部によって計算された奥行き値によって、前記下位Ｚバッファメモリが保持する下位ビットを更新する記録更新部と、
前記上位Ｚバッファメモリが保持する奥行き値を、最も浅い深度を示す値、または最も深い深度を示す値で初期化する上位Ｚバッファクリア部と、
前記下位Ｚバッファメモリが保持する奥行き値を初期化する下位Ｚバッファクリア部とを備える、３次元形状描画装置。
【請求項２】
さらに、描画すべき画素に関する情報である画素値を計算する画素値計算部と、
前記画素値計算部によって計算された画素値を保持する画像メモリとを備える、請求項１に記載の３次元形状描画装置。
【請求項３】
前記画素値計算部は、前記上位ビット比較部による比較の結果、前記奥行き値計算部によって計算された奥行き値の上位ビットが示す深度が、前記上位Ｚバッファメモリが保持する奥行き値の上位ビットが示す深度よりも浅い場合、及び前記下位ビット比較部による比較の結果、前記奥行き値計算部によって計算された奥行き値の下位ビットが、前記下位Ｚバッファメモリが保持する奥行き値の下位ビットと等しい値である場合に、前記画素値を計算する、請求項２に記載の３次元形状描画装置。
【請求項４】
前記下位ビット比較部は、前記奥行き値計算部によって計算された下位ビットが、前記下位Ｚバッファメモリが保持する下位ビットと等しい値である場合、当該下位Ｚバッファメモリが保持する下位ビットを更新する、請求項１に記載の３次元形状描画装置。
【請求項５】
前記上位ビット比較部は、前記下位ビット比較部による前記比較の結果、前記奥行き値計算部によって計算された下位ビットが、前記下位Ｚバッファメモリが保持する下位ビットと等しい値である場合、次の画素の奥行き値の上位ビットを比較する、請求項１に記載の３次元形状描画装置。
【請求項６】
前記上位ビット比較部は、前記奥行き値計算部によって計算された奥行き値の上位ビットが示す深度が、前記上位Ｚバッファメモリが保持する奥行き値の上位ビットが示す深度よりも浅いと判断した場合、前記奥行き値計算部によって計算された奥行き値の上位ビットにフラグを付与し、
前記下位ビット比較部は、前記奥行き値計算部によって計算された奥行き値の下位ビットが示す深度が、前記下位Ｚバッファメモリが保持する奥行き値の下位ビットが示す深度よりも浅いと判断した場合、前記奥行き値計算部によって計算された奥行き値の下位ビットにフラグを付与し、
前記記録更新部は、前記上位ビットに前記フラグが付与されている場合に、前記上位Ｚバッファメモリが保持する奥行き値の上位ビット及び前記下位Ｚバッファメモリが保持する奥行き値の下位ビットを更新し、前記下位ビットに前記フラグが付与されている場合に、前記上位Ｚバッファメモリが保持する奥行き値の上位ビット及び前記下位Ｚバッファメモリが保持する下位ビットのうち、少なくとも下位ビットを更新する、請求項１に記載の３次元描画装置。
【請求項７】
上位Ｚバッファメモリと下位Ｚバッファメモリとは物理的に分離可能であることを特徴とする、請求項１に記載の３次元形状描画装置。
【請求項８】
下位Ｚバッファメモリは、前記３次元形状描画装置と物理的に分離可能であることを特徴とする、請求項７に記載の３次元形状描画装置。
【請求項９】
請求項１に記載の３次元形状描画装置に用いられるメモリであって、
別のビット列として分離された上位ビット及び下位ビットの少なくとも一方を格納する、メモリ。
【請求項１０】
Ｚバッファ法を用いた３次元形状の描画をＣＰＵが実行する方法であって、
描画すべき画素の奥行き値を計算するステップと、
前記奥行き値を計算するステップにおいて計算された奥行き値のうち、最も前面に表示すべき画素の奥行き値の上位ビットを保持する上位Ｚバッファメモリから上位ビットを読み出し、前記奥行き値を計算するステップにおいて計算された奥行き値の上位ビットと比較するステップと、
前記上位ビットを比較するステップにおいて、前記奥行き値を計算するステップにおいて計算された奥行き値の上位ビットが、前記上位Ｚバッファメモリが保持する奥行き値の上位ビットと等しい値であると判断された場合、前記奥行き値を計算するステップにおいて計算された奥行き値のうち、最も前面に表示すべき画素の奥行き値の下位ビットを保持する下位Ｚバッファメモリから下位ビットを読み出し、前記奥行き値を計算するステップにおいて計算された奥行き値の下位ビットと比較するステップと、
前記上位ビットを比較するステップにおいて、前記奥行き値を計算するステップにおいて計算された奥行き値の上位ビットが示す深度が、前記上位Ｚバッファメモリが保持する奥行き値の上位ビットが示す深度よりも浅いと判断された場合、前記奥行き値を計算するステップにおいて計算された奥行き値によって、前記上位Ｚバッファメモリが保持する奥行き値の上位ビット及び前記下位Ｚバッファメモリが保持する下位ビットを更新し、前記下位ビットを比較するステップにおいて、前記奥行き値を計算するステップにおいて計算された奥行き値の下位ビットが示す深度が、前記下位Ｚバッファメモリが保持する奥行き値の下位ビットが示す深度よりも浅いと判断された場合、前記奥行き値を計算するステップにおいて計算された奥行き値によって、前記下位Ｚバッファメモリが保持する下位ビットを更新するステップと、
前記上位Ｚバッファメモリが保持する奥行き値を、最も浅い深度を示す値、または最も深い深度を示す値で初期化するステップと、
前記下位Ｚバッファメモリが保持する奥行き値を初期化するステップとを備える、３次元形状描画方法。
【請求項１１】
前記下位ビットを比較するステップにおいて、前記奥行き値を計算するステップにおいて計算された下位ビットが、前記下位Ｚバッファメモリが保持する下位ビットと等しい値であると判断された場合、当該下位Ｚバッファメモリが保持する下位ビットを更新する、請求項１０に記載の３次元形状描画方法。
【請求項１２】
前記下位ビットを比較するステップにおいて、前記奥行き値を計算するステップにおいて計算された下位ビットが、前記下位Ｚバッファメモリが保持する下位ビットと等しい値であると判断された場合、次の画素の奥行き値の上位ビットを比較する、請求項１０に記載の３次元形状描画方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元形状描画装置及び３次元形状描画方法に関し、より特定的には、視点からの奥行き値を利用するＺバッファ法を用いて３次元形状を描画する３次元形状描画装置及び３次元形状描画方法に関する。
【背景技術】
【０００２】
従来から、隠れ面除去方式としてＺバッファ法を用いて３次元形状を描画する３次元形状表示装置がある。このような３次元形状表示装置による描画処理を高速化する技術として、画素ごとに１ビットのフラグメモリを持つ方法（例えば、特許文献１）や、複数の画素の一番遠い奥行き値と一番近い奥行き値を持つ縮退したＺバッファを持つ方法（例えば、特許文献２）などがある。
【０００３】
図７は、特許文献２に記載の３次元形状描画装置２００の構成を示すブロック図である。また、図８は、図７に示す３次元形状描画装置２００によって描画された３次元形状が表示される画面２１４と、ＺＲバッファ２０５の構成とを模式的に示す図である。
【０００４】
図７において、画像供給部２０８は、描画すべきポリゴンのデータ（以下、ポリゴンデータと呼ぶ）を画像合成部２０１のピクセル描画部２０９及び描画判断部２１０の双方に供給する。画像合成部２０１は、ポリゴンデータをピクセルデータに変換する。
【０００５】
図８に示すように、画面２１４は、Ｍ×Ｎのブロックに分割されている。分割された画像信号を構成するブロック２１３は、Ｋ×Ｌの画素で構成される。ＺＲバッファ２０５は、各々のブロックにおけるＭＡＸＺと、ＭＩＮＺとを保持している。
【０００６】
Ｚメインバッファ２０６は、全てのＺ値（奥行き値）を格納する。ＺＲバッファ２０５は、図８に示す各ブロックにおける最大のＺ値（ＭＡＸＺ）２１１と、最小のＺ値（ＭＩＮＺ）２１２とを保持する。
【０００７】
ピクセル描画部２０９は、描画する画素のＺ値と、当該画素の位置を示すＸ座標及びＹ座標を描画判断部２１０へ出力する。描画判断部２１０は、ＺＲバッファ２０５及びＺメインバッファ２０６のうち、少なくともＺＲバッファ２０５が保持するＺ値に基づき、画素を描画すべか否かを判断する。
【０００８】
フレームバッファ２０３は、描画判断部２１０によって描画すべきと判断された画素を保持する。パレット回路２０４は、フレームバッファ２０３の画素データを実際の輝度データに変換する。パレット回路２０４は、表示部２０７に表示すべき画像を供給する。
【０００９】
特許文献２に記載の従来の３次元形状描画装置は、新たに３次元形状を描画する際、画面２１４におけるブロック２１３のＭＡＸＺ２１１、及びＭＩＮＺ２１２と、これから描画しようとする画素のＺ値とを比較する。これから描画しようとする画素のＺ値がＭＡＸＺ２１１より大きい場合、３次元形状描画装置２００は、その画素の描画を取りやめる。
【００１０】
一方、これから描画しようとする画素のＺ値がＭＩＮＺ２１２より小さい場合、３次元形状描画装置２００は、Ｚメインバッファ２０６に新たなＺ値を書き込み、フレームバッファ２０３に新たな画素値を書き込む。さらに、３次元形状描画装置２００は、ＭＩＮＺ２１２を新たなＺ値に書き換える。
【００１１】
また、これから描画しようとする画素のＺ値がＭＩＮＺ２１２とＭＡＸＺ２１１の間である場合、３次元形状描画装置２００は、Ｚメインバッファ２０６を参照し、これから描画しようとする画素のＺ値と、Ｚメインバッファ２０６が保持するＺ値と比較する。
【００１２】
そして、これから描画しようとしている画素のＺ値が、Ｚメインバッファ２０６が保持するＺ値よりも小さい場合、３次元形状描画装置２００は、Ｚメインバッファ２０６が保持するＺ値を新たなＺ値に書き換える。そして、３次元形状描画装置２００は、Ｚメインバッファ２０６が保持するＺ値のうち、ブロック２１３に属する全てのＺ値を調べ、その中で一番大きなＺ値をＭＡＸＺ２１１とする。
【００１３】
以上のように、特許文献２に記載の従来の３次元形状描画装置は、これから描画しようとする画素のＺ値が、当該画素が位置するブロックにおける最大のＺ値と最小のＺ値との間にある場合にのみ、Ｚメインバッファ２０６へアクセスする。これにより、アクセス量を低減することができる。
【特許文献１】特開昭６２−４２２８１号公報
【特許文献２】特開平８−１６１５２６号公報（第５−７頁、図１、図４）
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、特許文献２に記載の従来の３次元形状描画装置は、画素ごとにＺメインバッファを参照する必要をなくすことができるものの、ＺＲバッファが保持する最大のＺ値を更新する際、最大のＺ値を決定するために、ブロック内のＺ値を全て読み出さなければならない。また、この最大のＺ値の計算をしている最中は、次の画素の処理を続行することができないため、描画処理が中断してしまう。したがって、３次元形状を高速に描画することができない。
【００１５】
それゆえに、本発明の目的は、３次元形状を高速に描画することができる３次元形状描画装置及び３次元形状描画方法を提供することである。
【課題を解決するための手段】
【００１６】
本発明は、Ｚバッファ法を用いて３次元形状を描画する３次元形状描画装置であって、描画すべき画素の奥行き値を計算する奥行き値計算部と、奥行き値計算部によって計算された奥行き値のうち、最も前面に表示すべき画素の奥行き値の上位ビットを保持する上位Ｚバッファメモリと、奥行き値計算部によって計算された奥行き値のうち、最も前面に表示すべき画素の奥行き値の下位ビットを保持する下位Ｚバッファメモリと、上位Ｚバッファメモリが保持する上位ビットを読み出し、奥行き値計算部によって計算された奥行き値の上位ビットと比較する上位ビット比較部と、上位ビット比較部による比較の結果、奥行き値計算部によって計算された奥行き値の上位ビットが、上位Ｚバッファメモリが保持する奥行き値の上位ビットと等しい値である場合、下位Ｚバッファメモリが保持する奥行き値の下位ビットを読み出し、奥行き値計算部によって計算された奥行き値の下位ビットと比較する下位ビット比較部と、上位ビット比較部による比較の結果、奥行き値計算部によって計算された奥行き値の上位ビットが示す深度が、上位Ｚバッファメモリが保持する奥行き値の上位ビットが示す深度よりも浅い場合、奥行き値計算部によって計算された奥行き値によって、上位Ｚバッファメモリが保持する奥行き値の上位ビット及び下位Ｚバッファメモリが保持する下位ビットを更新し、下位ビット比較部による比較の結果、奥行き値計算部によって計算された奥行き値の下位ビットが示す深度が、下位Ｚバッファメモリが保持する奥行き値の下位ビットが示す深度よりも浅い場合、奥行き値計算部によって計算された奥行き値によって、下位Ｚバッファメモリが保持する下位ビットを更新する記録更新部とを備える。
【００１７】
また、Ｚバッファ法を用いて３次元形状を描画するための方法であって、描画すべき画素の奥行き値を計算するステップと、奥行き値を計算するステップにおいて計算された奥行き値のうち、最も前面に表示すべき画素の奥行き値の上位ビットを保持する上位Ｚバッファメモリから上位ビットを読み出し、奥行き値を計算するステップにおいて計算された奥行き値の上位ビットと比較するステップと、上位ビットを比較するステップにおいて、奥行き値を計算するステップにおいて計算された奥行き値の上位ビットが、上位Ｚバッファメモリが保持する奥行き値の上位ビットと等しい値であると判断された場合、奥行き値を計算するステップにおいて計算された奥行き値のうち、最も前面に表示すべき画素の奥行き値の下位ビットを保持する下位Ｚバッファメモリから下位ビットを読み出し、、奥行き値を計算するステップにおいて計算された奥行き値の下位ビットと比較するステップと、上位ビットを比較するステップにおいて、、奥行き値を計算するステップにおいて計算された奥行き値の上位ビットが示す深度が、上位Ｚバッファメモリが保持する奥行き値の上位ビットが示す深度よりも浅いと判断された場合、奥行き値を計算するステップにおいて計算された奥行き値によって、上位Ｚバッファメモリが保持する奥行き値の上位ビット及び下位Ｚバッファメモリが保持する下位ビットを更新し、下位ビットを比較するステップにおいて、奥行き値を計算するステップにおいて計算された奥行き値の下位ビットが示す深度が、下位Ｚバッファメモリが保持する奥行き値の下位ビットが示す深度よりも浅いと判断された場合、奥行き値を計算するステップにおいて計算された奥行き値によって、下位Ｚバッファメモリが保持する下位ビットを更新するステップとを備える。
【発明の効果】
【００１８】
本発明によれば、３次元形状を高速に描画することができる３次元形状描画装置及び３次元形状描画方法が提供される。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施形態について、図面を参照しながら説明する。
【００２０】
図１は、本発明の一実施形態に係る３次元形状描画装置１０の構成を示す機能ブロック図である。図１において、３次元形状描画装置１０は、描画部１０１と、上位Ｚバッファメモリ１０２と、画像メモリ１０３と、下位Ｚバッファメモリ１０４と、上位ビット比較部１０５と、下位ビット比較部１０６と、上位Ｚバッファクリア部１０７と、下位Ｚバッファクリア部１０８とを備える。
【００２１】
画像メモリ１０３は、描画部１０１で描画され、隠れ面除去された画像のデータを格納する。上位Ｚバッファメモリ１０２は、最も前面に表示すべき画素の奥行き値、つまり、画像メモリ１０３に格納されている各画素の奥行き値の上位ビットを格納する。下位Ｚバッファメモリ１０４は、最も前面に表示すべき画素の奥行き値、つまり、画像メモリ１０３に格納されている各画素の奥行き値の下位ビットを格納する。例えば、奥行き値が２４ビットで表される場合、上位Ｚバッファメモリ１０２は、奥行き値の上位８ビットを保持し、下位Ｚバッファメモリ１０４は、奥行き値の下位１６ビットを保持する。
【００２２】
タイミング制御部１０９は、前画面の表示が終了し、次画面を表示するための図形を描画するタイミングを制御する。具体的には、タイミング制御部１０９は、次画面に図形を描写すべきタイミングになると、画像メモリ１０３、上位Ｚバッファメモリ１０２及び下位Ｚバッファメモリ１０４を初期化するよう、上位Ｚバッファクリア部１０７及び下位Ｚバッファクリア部１０８へ指示する。また、タイミング制御部１０９は、次画面に図形を描写すべきタイミングになると、図形の描画を開始するよう描画部１０１へ指示する。
【００２３】
上位Ｚバッファクリア部１０７は、タイミング制御部１０９の指示に応じて、上位Ｚバッファメモリ１０２及び画像メモリ１０３を初期化する。下位Ｚバッファクリア部１０８は、タイミング制御部１０９の指示に応じて、下位Ｚバッファメモリ１０４を初期化する。
【００２４】
上位ビット比較部１０５は、後述する奥行き値計算部１１０から受け取った奥行き値の上位ビットと、上位Ｚバッファメモリ１０２から読み出した奥行き値の上位ビットとを比較する。上位ビット比較部１０５が上位Ｚバッファメモリ１０２から読み出す上位ビットは、奥行き値計算部１１０が計算に用いた画素と同じ位置にある画素の奥行き値の上位ビットである。そして、上位ビット比較部１０５は、上位ビットの比較結果を後述する読み出し制御部１１２へ通知する。
【００２５】
下位ビット比較部１０６は、後述する奥行き値計算部１１０から受け取った奥行き値の下位ビットと、下位Ｚバッファメモリ１０４から読み出した奥行き値の下位ビットとを比較する。下位ビット比較部１０６が下位Ｚバッファメモリ１０４から読み出す下位ビットは、奥行き値計算部１１０が計算に用いた画素と同じ位置にある画素の奥行き値の下位ビットである。そして、下位ビット比較部１０６は、下位ビットの比較結果を後述する読み出し制御部１１２へ通知する。
【００２６】
描画部１０１は、奥行き値計算部１１０と、輝度・マテリアル計算部１１１と、読み出し制御部１１２と、書き込み制御部１１３とを含み、ポリゴンデータをピクセルデータに変換する。
【００２７】
奥行き値計算部１１０は、画素の奥行き値を計算する。そして、奥行き値計算部１１０は、計算した奥行き値を、上位ビット比較部１０５、下位ビット比較部１０６及び書き込み制御部１１３に渡す。また、奥行き値計算部１１０は、奥行き値を算出したことを示す算出通知信号を生成し、読み出し制御部１１２に渡す。なお、各上位ビット及び下位ビットは、奥行き値の位置を示す位置情報と共に、それぞれ上位ビット比較部１０５及び下位ビット比較部１０６へ渡される。位置情報は、例えば、座標である。以下、本実施形態では、特に断らない限り、奥行き値計算部１１０は、位置情報と共に、奥行き値を上位ビット比較部１０５、下位ビット比較部１０６及び書き込み制御部１１３へ渡すものとする。
【００２８】
読み出し制御部１１２は、算出通知信号を受け取ると、奥行き値計算部１１０によって計算された奥行き値の上位ビットと、上位Ｚバッファメモリ１０２が保持する奥行き値の上位ビットとを比較するよう、上位ビット比較部１０５に指示する。読み出し制御部１１２は、上位ビット比較部１０５による比較の結果、奥行き値計算部１１０によって計算された奥行き値の上位ビットと、上位Ｚバッファメモリ１０２が保持する奥行き値の上位ビットとが一致する場合、奥行き値計算部１１０によって計算された奥行き値の下位ビットと、下位Ｚバッファメモリ１０４が保持する奥行き値の下位ビットとを比較するよう、下位ビット比較部１０６に指示する。
【００２９】
そして、読み出し制御部１１２は、上位ビット比較部１０５及び下位ビット比較部１０６からの通知に基づき、上位Ｚバッファメモリ１０２及び下位Ｚバッファメモリ１０４が保持する奥行き値を更新すべきか否かを判断する。上位ビット比較部１０５による比較の結果、奥行き値計算部１１０によって計算された奥行き値の上位ビットが示す深度が、上位Ｚバッファメモリ１０２が保持する奥行き値の上位ビットが示す深度よりも浅い場合、読み出し制御部１１２は、奥行き値計算部１１０によって計算された奥行き値によって、上位Ｚバッファメモリ１０２が保持する奥行き値の上位ビット及び下位Ｚバッファメモリ１０４が保持する下位ビットを更新するよう、書き込み制御部１１３に指示する。
【００３０】
また、下位ビット比較部１０６による比較の結果、奥行き値計算部１１０によって計算された奥行き値の下位ビットが示す深度が、下位Ｚバッファメモリ１０４が保持する奥行き値の下位ビットが示す深度よりも浅い場合、奥行き値計算部１１０によって計算された奥行き値によって、下位Ｚバッファメモリ１０４が保持する下位ビットを更新するよう、書き込み制御部１１３に指示する。
【００３１】
書き込み制御部１１３は、読み出し制御部１１２からの指示に応じて、上位Ｚバッファメモリ１０２が保持する上位ビット、及び下位Ｚバッファメモリ１０４が保持する下位ビットのうち、少なくとも下位ビットを更新する。また、書き込み制御部１１３は、上位Ｚバッファメモリ１０２または下位Ｚバッファメモリ１０４の記録を更新する際、輝度値及びマテリアル値を計算して画像メモリ１０３へ書き込むよう、輝度・マテリアル計算部１１１に指示する。
【００３２】
輝度・マテリアル計算部１１１は、書き込み制御部１１３の指示に応じて、画素の明るさである輝度値や、表面の質感であるマテリアル値を計算する。そして、輝度・マテリアル計算部１１１は、計算した輝度値及びマテリアル値を画像メモリ１０３に書き込む。
【００３３】
図２及び図３は、図１に示す３次元形状描画装置１０の動作を示すフローチャートである。まず、前画面の表示処理が完了すると、タイミング制御部１０９は、画像メモリ１０３及び上位Ｚバッファメモリ１０２を初期化するよう上位Ｚバッファクリア部１０７へ指示する。上位Ｚバッファクリア部１０７は、上位Ｚバッファメモリ１０２及び画像メモリ１０３を初期化するし、上位Ｚバッファメモリ１０２が保持する値、及び画像メモリが保持する値を初期値で塗りつぶす（ステップＳ１１）。初期値とは、例えば、視点から見たときの最遠の値である。以下、奥行き値が十六進数で表され、最遠の値が００００００Ｈの２４ビットからなる場合を例に説明する。例えば、上位ビットが８ビットである場合、ステップＳ１１において、上位Ｚバッファクリア部１０７は、上位Ｚバッファメモリ１０２を００Ｈで初期化する。
【００３４】
次に、タイミング制御部１０９は、下位Ｚバッファメモリ１０４を初期化するよう下位Ｚバッファクリア部１０８へ指示する。下位Ｚバッファクリア部１０８は、下位Ｚバッファメモリ１０４を初期化し、下位Ｚバッファメモリ１０４が保持する値を初期値で塗りつぶす（ステップＳ１２）。例えば、下位ビットが１６ビットである場合、ステップＳ１２において、下位Ｚバッファクリア部１０８は、下位Ｚバッファメモリ１０４を００００Ｈで初期化する。
【００３５】
奥行き値計算部１１０は、図示しない画像供給部から出力される３次元形状の各々の画素の奥行き値Ｚｎｏｗを計算し、上位ビット比較部１０５、下位ビット比較部１０６及び書き込み制御部１１３に渡す。また、奥行き値計算部１１０は、算出通知信号を読み出し制御部１１２に渡す。読み出し制御部１１２は、奥行き値計算部１１０によって計算された奥行き値の上位ビットと、上位Ｚバッファメモリ１０２が保持する奥行き値の上位ビットとを比較するよう、上位ビット比較部１０５に指示する。
【００３６】
上位ビット比較部１０５は、上位Ｚバッファメモリ１０２から奥行き値の上位ビットＺｏｌｄＨＩを読み出して（ステップＳ１３）、奥行き値計算部１１０から受け取った上位ビットＺｎｏｗＨＩと比較し（ステップＳ１４）、その比較結果を読み出し制御部１１２に通知する。
【００３７】
読み出し制御部１１２は、受け取った比較結果に基づき、上位ビット比較部１０５による比較の結果、奥行き値計算部１１０によって計算された奥行き値の上位ビットと、上位Ｚバッファメモリ１０２が保持する奥行き値の上位ビットとが一致するか否かを判断する（ステップＳ１５）。上位ビットが一致する場合、つまり、ＺｎｏｗＨＩ＝ＺｏｌｄＨＩである場合、上位ビットの比較だけでは画素の位置関係を判断できない。したがって、読み出し制御部１１２は、奥行き値計算部１１０で計算された奥行き値の下位ビットＺｎｏｗＬＯと、下位Ｚバッファメモリ１０４が保持する奥行き値の下位ビットとを比較するよう下位ビット比較部１０６に指示する。
【００３８】
下位ビット比較部１０６は、下位Ｚバッファメモリ１０４から奥行き値の下位ビットＺｏｌｄＬＯを読み出して（ステップＳ１６）、奥行き値計算部１１０から受け取った下位ビットＺｎｏｗＬＯと比較し（ステップＳ１７）、その比較結果を読み出し制御部１１２に通知する。
【００３９】
読み出し制御部１１２は、これから描画しようとしている奥行き値の下位ビットが示す深度が、下位Ｚバッファメモリ１０４が保持する下位ビットが示す深度よりも浅いか否かを判断する（ステップＳ１８）。ＺｎｏｗＬＯ＞ＺｏｌｄＬＯである場合、つまり、これから描画しようとする画素が、既に描画されている画素の前面にある場合、読み出し制御部１１２は、図３のステップＳ２１の処理へ進む。一方、ＺｎｏｗＬＯ≦ＺｏｌｄＬＯである場合、輝度・マテリアル計算部１１１での処理は行わずに次の画素の処理を行う。つまり、読み出し制御部１１２はステップＳ１３の処理へ進む。
【００４０】
図３に示すステップＳ２１において、書き込み制御部１１３は、下位ビットＺｎｏｗＬＯを下位Ｚバッファメモリ１０４へ書き込む。
【００４１】
そして、書き込み制御部１１３は、輝度値及びマテリアル値を計算するよう、輝度・マテリアル計算部１１１へ指示する。輝度・マテリアル計算部１１１は、画素の輝度値等Ｉｎｏｗを計算して画像メモリ１０３へ書き込む（ステップＳ２２）。
【００４２】
読み出し制御部１１２は、画面に描画すべきポリゴンの描画が全て終了したか否かを判断する（ステップＳ２３）。ポリゴンの描画が全て終了していない場合、読み出し制御部１１２は、ステップＳ１３の処理に戻る。一方、ポリゴンの描画が全て終了した場合、つまり、画像供給部から出力される画像データがなくなった場合、読み出し制御部１１２は、処理を終了する。
【００４３】
一方、ステップＳ１５において、上位ビットが一致していない場合、読み出し制御部１１２は、これから描画しようとしている奥行き値の上位ビットが示す深度が、上位Ｚバッファメモリ１０２が保持する上位ビットが示す深度よりも浅いか否かを判断する（ステップＳ１９）。ＺｎｏｗＨＩ＜ＺｏｌｄＨＩである場合、つまり、これから描画しようとする画素が、既に描画されている画素の背面にある場合、輝度・マテリアル計算部１１１での処理は行わずに次の画素の処理を行う。この場合、読み出し制御部１１２はステップＳ１３の処理へ進む。
【００４４】
一方、ＺｎｏｗＨＩ＞ＺｏｌｄＨＩである場合、つまり、これから描画しようとする画素が、既に描画されている画素の前面にある場合、読み出し制御部１１２は、上位Ｚバッファメモリ１０２及び下位Ｚバッファメモリ１０４が保持する奥行き値を更新するよう書き込み制御部１１３に指示する。書き込み制御部１１３は、図３に示すステップＳ２０の処理へ進み、上位ビットＺｎｏｗＨＩを上位Ｚバッファメモリ１０２へ書き込む。ステップＳ２１以降の処理は、前述の通りであるため、説明を省略する。
【００４５】
図４は、上位Ｚバッファメモリ１０２、及び下位Ｚバッファメモリ１０４が保持する図形４０１及び図形４０２の奥行き値を模式的に示す図である。画素４０３は、上位Ｚバッファメモリ１０２と、下位Ｚバッファメモリ１０４とにおいて、同一座標に位置する画素である。なお、説明の簡単のために、図４において、画像メモリ１０３の構成の図示を省略している。
【００４６】
図４に示す例において、上位Ｚバッファメモリ１０２は上位８ビットを保持し、下位Ｚバッファメモリ１０４は下位１６ビットを保持する。したがって、上位Ｚバッファクリア部１０７は、上位Ｚバッファメモリ１０２が保持する値を００Ｈで初期化し、下位Ｚバッファクリア部１０８は、下位Ｚバッファメモリ１０４が保持する値を００００Ｈで初期化する。なお、上位Ｚバッファメモリ１０２及び下位Ｚバッファメモリ１０４を初期化するための専用の上位Ｚバッファクリア部１０７や下位Ｚバッファクリア部１０８を持たずに、描画部１０１が最遠値００００００Ｈで値を埋めることとしてもよい。
【００４７】
次に、図４に示す画素４０３を例に説明する。はじめに、上位Ｚバッファクリア部１０７、及び下位Ｚバッファクリア部１０８は、それぞれ、上位Ｚバッファメモリ１０２及び下位Ｚバッファメモリ１０４を、各々の初期値００Ｈ、００００Ｈで初期化する。次に、図形４０１を描画する際に、上位ビット比較部１０５は、図形４０１における画素４０３の位置の奥行き値の上位８ビットＺ４０１ＨＩと、上位Ｚバッファメモリ１０２が保持する初期値００Ｈとを比較する。その結果、Ｚ４０１ＨＩの方が初期値よりも大きく、手前に位置するため、書き込み制御部１１３は、上位Ｚバッファメモリ１０２にＺ４０１ＨＩを書き込み、下位Ｚバッファメモリ１０４にＺ４０１ＬＯを書き込む。また輝度・マテリアル計算部１１１は、画素４０３の輝度値及びマテリアル値を算出して画像メモリ１０３に書き込む。
【００４８】
次に、図形４０２を描画する際に、上位ビット比較部１０５は、図形４０２における画素４０３の位置の奥行き値の上位８ビットＺ４０２ＨＩと、上位Ｚバッファメモリ１０２が保持する図形４０１における画素４０３の奥行き値Ｚ４０１ＨＩとを比較する。この奥行き値が一致した場合、読み出し制御部１１２は、下位ビット比較部１０６に下位ビットを比較するよう指示する。下位ビット比較部１０６は、図形４０２における画素４０３の位置の奥行き値の下位１６ビットＺ４０２ＬＯと、下位Ｚバッファメモリ１０４が保持するＺ４０１ＬＯとを比較する。この結果、Ｚ４０１ＬＯ＞Ｚ４０２ＬＯであるため、上位Ｚバッファメモリ１０２、下位Ｚバッファメモリ１０４、画像メモリ１０３が保持する画素４０３の値は更新されない。そして、処理は、次の画素の描画へと進む。
【００４９】
以上のように、本実施形態によれば、ピクセルデータを描画する際、まず、奥行き値の上位ビットのみを比較し、上位ビットが一致したときにのみ、下位ビットを比較する。これにより、奥行き値の上位ビットを先行的に比較するため、バスアクセス量を低減することができる。したがって、３次元形状を高速に描画することができる。なお、アクセス量は、メモリへのアクセス回数×バス幅で表される。
【００５０】
また、本実施形態によれば、バス帯域を低減することができるため、限られたバス幅でも高速に３次元形状を描画することができる。また、隠れ面除去を行った後の画素のみ描画計算を行うことで、低い演算性能でも多くの描画を行うことができる。
【００５１】
なお、本実施形態では、輝度・マテリアル計算部１１１は、奥行き値の比較が終わって必要なときのみ計算する場合を例に説明した。ここで、奥行き値計算部１１０での計算と同時に行ってもよい。また、奥行き値計算部１１０での処理、上位ビット比較部１０５での処理、下位ビット比較部１０６での処理、輝度・マテリアル計算部１１１での処理をパイプライン的に処理してもよい。
【００５２】
また、本実施形態では、画素の奥行き値が１６進数で表される２４ビットからなり、００００００Ｈが初期値であるものとして説明したが、初期値はこれに限られず、例えば、０１００００Ｈを一番奥の値として上位Ｚバッファメモリ及び下位Ｚバッファメモリを初期化してもよい。
【００５３】
また、本実施形態では、次画面の描画を開始する際、上位Ｚバッファメモリ及び下位Ｚバッファメモリの双方を初期化するものとして説明した。ここで、初期化の値を所定の値、例えば、００Ｈや１１Ｈとし、上位Ｚバッファメモリのみを初期化することとしてもよい。この場合、最初に上位ビット比較部で比較される奥行き値の上位ビットは、必ず上位Ｚバッファメモリに書き込まれ、それと共に、当該奥行き値の下位ビットは、下位Ｚバッファメモリに書き込まれる。したがって、下位Ｚバッファクリア部による下位Ｚバッファメモリのクリアを省くことができる。これにより、メモリアクセス量を減らすことができ、低い演算性能でも多くの描画を行うことができる。
【００５４】
なお、本実施形態では、一例として上位の奥行き値を８ビット、下位の奥行き値を１６ビットの合計２４ビットであるものとして説明したが、合計のビット数ならびに、上位、下位の分け方は任意でよい。しかしながら、上位Ｚバッファメモリからの読み出し量を低減させるために、上位ビットは、下位ビットと同数、または下位ビットよりも少ないビット数であることが好ましい。
【００５５】
また、本実施形態では、比較した下位ビットが一致した場合、下位Ｚバッファが保持する下位ビットは更新されなかった。ここで、比較した下位ビットが一致した場合、下位Ｚバッファが保持する下位ビット及び画像メモリが保持する輝度値やマテリアル値を更新することとしてもよい。
【００５６】
また、本実施形態では、上位Ｚバッファメモリ及び下位Ｚバッファメモリは、物理的に分離可能な２つのメモリであるものとして説明したが、上位Ｚバッファメモリ及び下位Ｚバッファメモリは同一のメモリであってもよい。その場合、上位ビットと、下位ビットとは、同一のメモリの異なるアドレス上に記録される。
【００５７】
また、上位ビット比較部は、奥行き値計算部によって計算された奥行き値の上位ビットが示す深度が、上位Ｚバッファメモリが保持する奥行き値の上位ビットが示す深度よりも浅いと判断した場合、奥行き値計算部によって計算された奥行き値の上位ビットにフラグを付与し、下位ビット比較部は、奥行き値計算部によって計算された奥行き値の下位ビットが示す深度が、下位Ｚバッファメモリが保持する奥行き値の下位ビットが示す深度よりも浅いと判断した場合、奥行き値計算部によって計算された奥行き値の下位ビットにフラグを付与することとしてもよい。この場合、書き込み制御部は、上位ビットにフラグが付与されている場合に、上位Ｚバッファメモリが保持する奥行き値の上位ビット及び下位Ｚバッファメモリが保持する奥行き値の下位ビットを更新し、下位ビットにフラグが付与されている場合に、上位Ｚバッファメモリが保持する奥行き値の上位ビット及び下位Ｚバッファメモリが保持する下位ビットのうち、少なくとも下位ビットを更新するとよい。
【００５８】
（実施例）
次に、本発明の実施例について説明する。図５は、３次元形状描画装置１０のハードウエア構成を示すブロック図である。３次元形状描画装置１０は、描画部１０１を構成するＣＰＵ１２１と、高速グラフィックメモリ１２２と、低速グラフィックメモリ１２３とを備える。なお、上位ビット比較部１０５、下位ビット比較部１０６、上位Ｚバッファクリア部１０７、下位Ｚバッファクリア部１０８、及びタイミング制御部１０９もＣＰＵで構成されるが、図５では、代表して描画部１０１のみを図示している。
【００５９】
図５に示す３次元形状描画装置１０の機能ブロック図は、上述した実施形態と同様であるため、図１を援用する。また、図５に示す３次元形状描画装置１０の動作は、上述した実施形態と同様であるため、図２を援用する。
【００６０】
高速グラフィックスメモリ１２２は、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＡＳＩＣ内蔵メモリであり、上位Ｚバッファメモリ１０２を含む。低速グラフィックスメモリ１２３は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、画像メモリ１０３と下位Ｚバッファメモリ１０４とを含む。
【００６１】
これにより、下位Ｚバッファメモリや画像メモリに比べてアクセスの頻度が高い上位Ｚバッファメモリとして、処理が高速な高速グラフィックメモリを用いることにより、処理を迅速に行うことができる。また、上位Ｚバッファメモリは、奥行き値のうちの上位８ビットのみを保持すればよいため、必要な高速グラフィックメモリの容量を抑制することができる。また、上位Ｚバッファメモリに比べてアクセスの頻度が低い下位Ｚバッファメモリや画像メモリを、大容量だが低速な低速グラフィックスメモリに割り当てることにより、コストアップを最低限に押さえつつ、３次元形状描画装置の処理を高速化することができる。
【００６２】
また、ＤＳＰのような演算器を用いて３次元形状を描画する場合、上位Ｚバッファメモリまたは下位Ｚバッファメモリの記録を更新する場合に輝度等の計算を行うため、同一の演算性能であっても、従来の３次元形状描画装置と同じ時間でより多くの３次元形状を描画することができる。
【００６３】
また、本実施例では、描画部、上位ビット比較部、下位ビット比較部、上位Ｚバッファクリア部、下位Ｚバッファクリア部、及びタイミング制御部はＣＰＵで構成されるものとして説明したが、これらは、必ずしもＣＰＵで構成される必要はなく、それぞれの機能を有するプログラムがマスクされたＬＳＩ等であってもよい。
【００６４】
なお、本実施例において、画像メモリ及び下位Ｚバッファメモリは、３次元形状描画装置に内蔵されているものとして説明したが、これらのメモリは、必ずしも３次元形状描画装置に内蔵されている必要はない。
【００６５】
図６は、画像メモリ１０３及び下位Ｚバッファメモリ１０４が外付けのメモリである場合における、３次元形状描画装置１０のハードウェア構成を示すブロック図である。図６において、３次元形状描画装置は、描画部１０１を構成するＣＰＵ１２１と、内蔵メモリ１２４と、メモリＩ／Ｆ１２５とを備える。
【００６６】
メモリＩ／Ｆ１２５は、外付けメモリ１２６である画像メモリ１０３及び下位Ｚバッファメモリ１０４への描画部１０１からのアクセスを制御する。
【００６７】
このように、画像メモリ及び下位Ｚバッファメモリへのアクセス量は、上位Ｚバッファメモリへのアクセス量に比べて頻度が低いため、画像メモリ及び下位Ｚバッファメモリを外付けメモリとすることも可能である。これにより、３次元形状描画装置が内蔵すべきメモリの容量を低減することができる。
【産業上の利用可能性】
【００６８】
本発明は、３次元形状を高速に描画することができる３次元形状描画装置及び３次元形状描画方法等として有用である。
【図面の簡単な説明】
【００６９】
【図１】本発明の一実施形態に係る３次元形状描画装置の構成を示す機能ブロック図
【図２】図１に示す３次元形状描画装置の動作を示すフローチャート
【図３】図２に示すサブルーチンステップＳ１９における処理の詳細を示すフローチャート
【図４】上位Ｚバッファメモリ１０２、及び下位Ｚバッファメモリ１０４が保持する奥行き値を模式的に示す図
【図５】３次元形状描画装置のハードウエア構成の一例を示すブロック図
【図６】３次元形状描画装置のハードウェア構成の一例を示すブロック図
【図７】特許文献２に記載の３次元形状描画装置２００の構成を示すブロック図
【図８】図７に示す３次元形状描画装置によって描画された３次元形状が表示される画面２１４と、ＺＲバッファ２０５の構成とを模式的に示す図
【符号の説明】
【００７０】
１０１  描画部
１０２  上位Ｚバッファメモリ
１０３  画像メモリ
１０４  下位Ｚバッファメモリ
１０５  上位ビット比較部
１０６  下位ビット比較部
１０７  上位Ｚバッファクリア部
１０８  下位Ｚバッファクリア部
１１０  奥行き値計算部
１１１  輝度・マテリアル計算部
１２１  ＣＰＵ
１２２  高速グラフィックメモリ
１２３  低速グラフィックメモリ
２０１  画像合成部
２０２  描画処理部
２０３  フレームバッファ
２０４  パレット回路
２０５  ＺＲバッファ
２０６  Ｚメインバッファ
２０７  表示部
２０８  画像供給部
２０９  ピクセル描画部
２１０  描画判断部
２１１  ブロック内の最大のＺ値
２１２  ブロック内の最小のＺ値
２１３  画面を分割したブロックの一例
２１４  画面
４０１，４０２  図形
４０３  図形を構成する１画素
【図１】
0004696067.tif 000002
【図２】
0004696067.tif 000003
【図３】
0004696067.tif 000004
【図４】
0004696067.tif 000005
【図５】
0004696067.tif 000006
【図６】
0004696067.tif 000007
【図７】
0004696067.tif 000008
【図８】
0004696067.tif 000009