JP2000268191A - 隠面処理方法 - Google Patents

隠面処理方法

Info

Publication number
JP2000268191A
JP2000268191A JP11072500A JP7250099A JP2000268191A JP 2000268191 A JP2000268191 A JP 2000268191A JP 11072500 A JP11072500 A JP 11072500A JP 7250099 A JP7250099 A JP 7250099A JP 2000268191 A JP2000268191 A JP 2000268191A
Authority
JP
Japan
Prior art keywords
buffer
surface processing
hidden surface
processing
application area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11072500A
Other languages
English (en)
Inventor
Junko Nakase
純子 中瀬
Hiromi Watanabe
浩已 渡辺
Takashi Nakamoto
貴士 中本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP11072500A priority Critical patent/JP2000268191A/ja
Publication of JP2000268191A publication Critical patent/JP2000268191A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

(57)【要約】 【課題】3次元グラフィックス処理において正確な隠面
処理を、少ない処理量で実行可能な隠面処理方法を提供
する。 【解決手段】オブジェクトを構成する複数のポリゴンの
頂点座標から、オブジェクトを代表するX、Y、Z座標
の代表値を求め(100)、得られた各オブジェクトの
X、Y、Z座標の代表値を比較することにより、各オブ
ジェクト間の位置関係を確定してZバッファ適用領域を
抽出する(102)。X、Y、Zの全3方向で座標の代
表値の重なりが検出された場合にZバッファ法により隠
面処理(210)を行い、検出されない場合に上書きに
よる隠面処理(202)を行う。 【効果】Zバッファを用いる領域を必要最小限にでき、
Zバッファを用いてのZ座標値比較及び更新処理を低減
できる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は3次元グラフィック
ス処理の隠面処理方法に係り、特に少ない処理量で効率
よく実現可能な隠面処理方法に関する。
【0002】
【従来の技術】従来、3次元グラフィックス処理におい
て、オブジェクトの可視面領域、不可視領域を判定し、
可視面領域のみを表示する隠面処理が行われている。こ
の隠面処理の方法としてはZバッファ法とZソート法が
知られている。なお、本明細書では、3次元の物体のこ
とをオブジェクト、オブジェクトを構成する多角形のこ
とをポリゴンとよぶ。
【0003】上記Zバッファ法は正確な隠面処理を行え
る反面、Zバッファ用のメモリ(以下、単にZバッファ
と称する)を必要とする上、Zバッファに対する書き込
み、読み出しを行うため処理時間が大きい。一方、Zソ
ート法は、Zバッファは不要であるが、ソート処理を行
うための処理量が膨大であり、複雑な位置関係にあるオ
ブジェクト間の隠面処理を正しく行えないという欠点が
ある。
【0004】これに対して、Zバッファ法とZソート法
を組み合わせることによって、正確な隠面処理を簡易に
行う方法が、例えば、特開平9−305792号公報に
開示されている。この隠面処理方法は、画面内の全ポリ
ゴンに対してポリゴン単位でZソートを行い、次に視点
に対して手前のポリゴンから順次所定量の範囲のポリゴ
ンについてZバッファ法を適用するものである。
【0005】
【発明が解決しようとする課題】しかしながら、前述し
た隠面処理を簡易に行う従来例によれば、Zバッファ法
を適用するポリゴンを選択するために、画面内の全ポリ
ゴンのZ座標値比較によりポリゴンのソート処理を行う
必要がある。このため、ポリゴン数が大きいときは処理
量が膨大となる。また、Zバッファ用のメモリが必要で
あり、メモリ量が大きいという問題がある。
【0006】そこで、本発明の目的は、正確な隠面処理
を少ない処理量で実行可能な隠面処理方法を提供するこ
とである。
【0007】また、本発明の他の目的は、少ないメモリ
量のZバッファで実現可能な隠面処理方法を提供するこ
とである。
【0008】また、上記隠面処理方法を用いた隠面処理
装置を提供することも目的とする。
【0009】
【課題を解決するための手段】上記目的を達成するため
に、本発明に係る隠面処理方法は、オブジェクトを構成
する複数のポリゴンの頂点の座標から、オブジェクトを
代表するX、Y、Z座標の代表値を求め、得られた各オ
ブジェクトの上記X、Y、Z座標の代表値を比較するこ
とによって、各オブジェクト間の位置関係を確定する。
そして、前記位置関係を確定することによりX、Y、Z
方向の全3方向で座標の代表値の重なりが検出された場
合にはZバッファ法を用いて隠面処理を行い、検出され
ない場合に上書きによる隠面処理を行うというものであ
る。
【0010】上記隠面処理方法により、Zバッファ法を
用いて隠面処理を行う領域(以下、Zバッファ適用領域
と呼ぶ)を必要最小限にすることが可能となる。この結
果、Zバッファへの書き込み、Zバッファからの読み出
し、Z座標値比較の処理を低減することができる。
【0011】したがって、上記隠面処理方法を用いた本
発明に係る隠面処理装置はオブジェクトを構成する複数
のポリゴンの頂点の座標から、オブジェクトを代表する
X、Y、Z座標の代表値を求める手段と、得られた各オ
ブジェクトの上記X、Y、Z座標の代表値を比較するこ
とによって、各オブジェクト間の位置関係を確定する手
段と、前記位置関係を確定する手段によりX、Y、Z方
向の全3方向で座標の代表値の重なりが検出された場合
にはZバッファ法を用いて隠面処理を行い、検出されな
い場合に上書きによる隠面処理を行う手段とを少なくと
も備えたことを特徴とするものである。
【0012】さらに、本発明に係る隠面処理方法はZバ
ッファ適用領域を小領域に分割し、各小領域内に全頂点
が含まれるポリゴンを新たに定義した後、この新たに定
義したポリゴンを用いて前記隠面処理を行うようにして
もよい。この隠面処理方法により、Zバッファのサイズ
が画面サイズより小さい場合でも、各小領域毎に隠面処
理を行うことが可能となる。
【0013】前記隠面処理装置に、Zバッファ適用領域
を小領域に分割する手段と、各小領域内に全頂点が含ま
れるポリゴンを新たに定義する手段とを設け、この新た
に定義したポリゴンを用いてZバッファ法による隠面処
理を各小領域ごとに行って、各小領域内の表示画像を形
成する手段をさらに備えれば好適である。
【0014】
【発明の実施の形態】次に、本発明に係る隠面処理方法
の実施の形態につき、具体的な実施例を用いて添付図面
を参照しながら以下詳細に説明する。なお、以下の説明
では、ポリゴンは三角形形状のものであるとする。ま
た、表示画像面の水平方向がX軸、垂直方向がY軸、奥
行きがZ軸であるとして説明を行う。
【0015】<実施例1>本実施例は、各オブジェクト
を包含する直方体を求め、得られた直方体間の位置関係
により処理を異ならせる隠面処理方法である。具体的に
は、各オブジェクトを包含する直方体同士が、X、Y、
Z方向の全3方向で重なりを持つ場合に、その重なりの
領域に含まれるポリゴンに対しZバッファ法を用いた隠
面処理を行う。それ以外の場合には、視点に対して遠い
オブジェクトから近いオブジェクトの順に描画し、近い
オブジェクトで遠いオブジェクトを上書きすることによ
って隠面処理を行う。なお、本実施例で扱うオブジェク
トは3次元凸形状のオブジェクトであるとする。
【0016】図1に、本実施例の隠面処理方法の処理フ
ローを示す。この処理フローを用いて、本隠面処理方法
の概要を説明する。ここでは一画面内に、n個のオブジ
ェクトがあるとする。
【0017】まず、ステップ100において、入力され
たn個のオブジェクトデータが図2で後述するようにメ
モリ10に格納される。ここで入力されるオブジェクト
のデータとは、各オブジェクトを構成するポリゴンのデ
ータが記述されているものであり、後述するポリゴンリ
スト(図6(c)参照)に相当する。
【0018】次に、ステップ101において、入力され
た各オブジェクトデータに対し、各オブジェクトの代表
値を求める。ここで代表値とは、各オブジェクト内X、
Y、Z座標のそれぞれの最小値、最大値である。
【0019】次に、ステップ102において、この得ら
れた代表値を用いて、Zバッファ法による処理が必要な
領域(Zバッファ適用領域)を抽出し、Zバッファ適用
領域リストに記述する。
【0020】さらに、ステップ103において、オブジ
ェクトソート処理を行い、各オブジェクトを視点から遠
い順に並べたオブジェクトリストを作成する。
【0021】次に、描画処理のルーチン200に移る
が、オブジェクトの描画処理は上記オブジェクトリスト
に記述された順で行う。すなわち、視点から最も遠いオ
ブジェクトから順に描画処理を開始する。
【0022】ステップ201において、先ず視点から最
も遠い、1番目に描画するオブジェクトにZバッファ適
用領域が有るか無いかを判定する。
【0023】オブジェクトにZバッファ適用領域が有る
場合にはステップ210に進み、Zバッファ法による隠
面処理を行い、Zバッファ適用領域がない場合にはステ
ップ202へ進み、上書きによる隠面処理を行い、オブ
ジェクトを描画する。
【0024】ステップ203において、次に描画処理す
るオブジェクトの有無を判定する。ここでは1画面にn
個のオブジェクトがあるとして説明しているので、ステ
ップ204へ進み、次の2番目に遠いオブジェクトの描
画処理に移り、上記と同様にステップ201と202又
はステップ201と210の処理を行い、ステップ20
3を経由してステップ204に進み、次の3番目に遠い
オブジェクトの描画処理に移る。このように描画処理ル
ーチンをn番目のオブジェクトまで繰り返し、ステップ
203において処理するオブジェクトが無いと判定した
ら描画処理を終了する。以上が、本実施例の隠面処理方
法の概略である。
【0025】なお、ステップ210のZバッファ法によ
る隠面処理は、詳細に示せば図12のように表される。
すなわち、ステップ201でオブジェクトがZバッファ
適用領域ありの場合は、ステップ211において、更に
オブジェクト内の処理中の画素がZバッファ適用領域外
が否かを判定する。その画素がZバッファ適用領域外で
はない場合、すなわち処理中の画素がZバッファ適用領
域内の場合は、ステップ212へ進み、Zバッファ12
を使用したZ値比較を行い、可視画素の場合のみフレー
ムメモリ11へ書き込み、ステップ214へ進む。ま
た、可視画素の場合は、更にZバッファ12のZ座標値
を、その処理中の画素のZ座標値に更新する。一方、ス
テップ211において、Zバッファ適用領域外の場合
は、ステップ213へ進みフレームメモリ11へ上書き
し、ステップ214へ進む。ステップ214において、
その処理中のオブジェクト内の画素全部の処理が終了し
たか否かを判定し、全画素の処理をしていない場合は、
ステップ211へ戻り、全画素の処理を終了した場合
は、図1のステップ203へ進む。
【0026】図2は、本隠面処理方法を実現する隠面処
理回路のブロック図である。本隠面処理回路15は、ポ
リゴンリスト、オブジェクトリスト、Zバッファ適用領
域リスト等を記憶するメモリ10と、表示画像データを
記憶するフレームメモリ11と、1画面分のZ座標値を
記憶するZバッファ12とを持つ。さらに、隠面処理部
20には、代表値算出部21、Zバッファ適用領域抽出
部22、オブジェクトソート部23、画素補間部24、
Zバッファ適用領域判定部25、及びZ座標値比較部2
6を持つ。更に、隠面処理部20と各メモリ10,1
1,12との間でデータのやり取りをするためのデータ
バスライン13を持つ。また、隠面処理部20の動作を
制御する制御部14を持つ。
【0027】以下、図2のブロック図を参照しながら説
明を行う。まず、入力されるオブジェクトのデータ(ポ
リゴンリスト)がメモリ10に記憶される。オブジェク
トのデータの内容は、オブジェクト番号、オブジェクト
を構成するポリゴン番号と、各ポリゴンの頂点座標
(X、Y、Z座標)、頂点におけるRGBの色輝度情報
等である(図6(c)ポリゴンリスト参照)。
【0028】次に、代表値算出部21はポリゴンリスト
を、データバスライン13を介してメモリ10から読み
出し、オブジェクトを代表するX、Y、Z座標を求め
る。本実施例では、オブジェクトを構成する全ポリゴン
の全頂点座標からX、Y、Z座標の最小値、最大値を求
め、これを代表値とする。ここで、オブジェクトの代表
値として求めたX座標の最小値、最大値をそれぞれxm
in、xmax、Y座標の最小値、最大値をそれぞれy
min、ymax、Z座標の最小値、最大値をそれぞれ
zmin、zmaxとする。
【0029】図3に、3次元空間におけるオブジェクト
とその代表値との関係を示す。X=xminを通るYZ
平面に平行な平面、X=xmaxを通るYZ平面に平行
な平面、Y=yminを通るXZ平面に平行な平面、Y
=ymaxを通るXZ平面に平行な平面、Z=zmin
を通るXY平面に平行な平面、Z=zmaxを通るXY
平面に平行な平面の6平面を面として持つ直方体30
は、すべての面がXY平面、YZ平面、XZ平面のいず
れかに平行な、オブジェクト31を包含する最小の直方
体となる。すなわち、xmin、xmax、ymin、
ymax、zmin、zmaxを求めることは、オブジ
ェクト31を包含する直方体30の位置を確定すること
に等しい。画面内に存在する全てのオブジェクトについ
て、同様にそのオブジェクトを含む直方体の位置を求め
る。なお、これらの最小値と最大値(xmin、xma
x、ymin、ymax、zmin、zmax)のこと
を以下直方体のパラメータとよぶ。
【0030】次に、Zバッファ適用領域抽出部22で
は、上記直方体のパラメータを用いて直方体間の位置関
係を確定し、以後の処理に使用するリストを作成する。
二つの直方体間の位置関係は、(1)3次元空間で重な
りを持つ場合と、(2)3次元空間で重なりを持たない
場合、の二通りに分類される。
【0031】(1)の場合、直方体に含まれるオブジェ
クト同士が3次元空間で重なりを有する可能性があるた
め、直方体の重なり部分のXY平面における投影面に対
し、Zバッファ12を用いてZバッファ法による隠面処
理を行う。
【0032】(2)の場合は、視点から遠い方のオブジ
ェクトを先にフレームメモリ11に描画した後、手前の
オブジェクトをフレームメモリ11に描画することによ
り、すなわち上書きすることにより隠面処理を行う。た
だし、ここで、オブジェクトの描画とは、オブジェクト
を構成する三角形ポリゴンのうち、面が視点に対して表
向きの有効なポリゴン(すなわち、視点から見える面)
を描画することを意味する。視点に対して面が裏向きの
ポリゴン(すなわち、視点から見えない面)は描画され
ない。
【0033】直方体間の位置関係の確定は、次のように
行われる。一例として、図4にオブジェクト1とオブジ
ェクト2をそれぞれ包含する直方体同士の位置関係を示
し、この重なりを調べる手順を説明する。なお、図4
(a)はXY平面における重なりを、(b)はYZ平面
における重なりを示している。
【0034】まず、オブジェクト1、オブジェクト2を
包含する直方体を、それぞれ直方体1、直方体2とす
る。また、直方体1のxmin、xmaxをそれぞれx
min1、xmax1とする。同様に直方体2のxmi
n、xmaxをそれぞれxmin2、xmax2とす
る。このとき、直方体1と直方体2がX方向で重なりを
持たない条件は、xmax1<xmin2またはxma
x2<xmin1である。したがって、この条件を満た
すときにはX方向で重なりが存在しない。この条件を満
たさないときは、X方向で重なりが存在するかもしれな
いといえる。
【0035】同様にY方向、Z方向についても直方体の
パラメータを用いて重なりの有無を調べる。X、Y、Z
の全3方向において重なりが存在するときには、上記
(1)の「3次元空間で重なりを持つ場合」に分類で
き、X、Y、Zの全3方向のうち少なくとも1方向で重
なりが存在しないときには、上記(2)の「3次元空間
で重なりを持たない場合」に分類できる。
【0036】上述したように直方体間の位置関係を分類
した結果、(1)の「3次元空間で重なりを持つ場合」
に分類された場合は、XY平面における重なりの領域を
Zバッファ適用領域Zbとし、領域を規定するパラメー
タを求める。このパラメータのことを領域パラメータと
呼ぶことにする。領域パラメータは、Zバッファ適用領
域Zbの4辺を規定する二つのX座標と二つのY座標で
ある。図4に示した例では、X=xmin2、xmax
1とY=ymin1、ymax2である。
【0037】3次元空間にオブジェクトが3個以上存在
する場合には、各オブジェクトを包含する直方体の全て
の組み合わせについて、上記の手順で位置関係を分類
し、Zバッファ適用領域Zbを求める。
【0038】上記(1)に分類された場合は、直方体の
領域のうちZバッファ適用領域Zbの部分に対してZバ
ッファ法を用いた隠面処理を行う。Zバッファ適用領域
Zb以外の部分については、Zバッファ法が不要な領域
であるため、視点から遠い順に直方体内のポリゴンを描
画し、上書きによる隠面処理を行う。
【0039】上記(2)に分類された直方体の領域は、
上記(1)の領域のうちZバッファ適用領域以外の領域
と同様に、Zバッファ法が不要な領域なので、上書きに
よる隠面処理を行う。この上書きによる隠面処理のた
め、オブジェクトソート部23では直方体を処理の順番
に並べるソート処理を行い、全ての直方体を視点に対し
て遠い順番で並べる。
【0040】次に、オブジェクトリストとZバッファ適
用領域リストの作成手順について説明する。一例として
4個のオブジェクト1〜4が3次元空間に存在する場合
を考える。図5に、オブジェクト1〜4をそれぞれ包含
する直方体1〜4の位置関係を示す。なお、図5におい
て、(a)はXY平面、(b)はYZ平面での重なりを
それぞれ示す。また、この場合のオブジェクトリスト、
Zバッファ適用リストを図6に示す。直方体間の位置関
係の確定処理は、次の6通りの直方体の組み合わせにつ
いて行う。6通りの組み合わせとは、すなわち、直方体
1と直方体2〜4との組み合わせ、直方体2と直方体
3、4との組み合わせ、直方体3と直方体4との組み合
わせである。
【0041】Zバッファ適用領域抽出部22による位置
関係の確定処理の結果、直方体2と3が上記(1)の
「3次元空間で重なりを持つ場合」に分類され、Zバッ
ファ適用領域Zbを共有することがわかる。このZバッ
ファ適用領域ZbをZバッファ適用領域1とし、Zバッ
ファ適用領域リストに領域番号と領域パラメータを記述
する(図6(b)参照)。
【0042】また、オブジェクトソート部23では、各
直方体のzmin(XY平面に平行な視点に近い面のZ
座標)により直方体1〜4のソート処理を行う。この結
果、直方体は視点から遠い順に3、2、4、1となる。
この結果をオブジェクトリストに記述する(図6(a)
参照)。オブジェクトリストには、オブジェクトの番号
(直方体の番号)と共に、Zバッファ適用領域Zbの有
無、Zバッファ適用領域が存在する場合にはその番号を
記述する。これらZバッファ適用領域リスト、オブジェ
クトリストはメモリ10に書き込まれる。
【0043】上述したように、オブジェクトリスト、Z
バッファ適用領域リストを作成した後、これらのリスト
を参照して、描画処理を行う。この処理の概要を以下に
説明する。
【0044】まず、オブジェクトリストを1行ずつ読み
出し、各行に記述されている番号のオブジェクトの処理
を行う。各オブジェクトについて、そのオブジェクトの
ポリゴンが記述されているポリゴンリストを読み出し、
記述されているポリゴンを一つずつ処理する。(ここ
で、ポリゴンリストとは図6(c)に例を示すように、
各オブジェクトを構成しているポリゴンについて頂点の
座標値、色輝度等が記述してあるリストであり、オブジ
ェクトのデータとして外部から入力されるものであ
る。)画素補間部24では、各ポリゴンについて、ポリ
ゴンの頂点の座標、色輝度からポリゴン内の画素の色輝
度を補間する画素補間処理を行い、フレームメモリ11
に書き込む。ただし、Zバッファ適用領域Zbを有する
オブジェクトを処理する場合、すなわち図1のステップ
201でZバッファ適用領域ありの場合には、Zバッフ
ァ適用領域判定部25において、処理中の画素のX、Y
座標がそのオブジェクトのZバッファ適用領域Zbに含
まれるか否かのチェックを行う(図12のステップ21
1)。すなわち、処理中の画素がZバッファ適用領域外
か否かを判定し、「否」の場合(すなわち、Zバッファ
適用領域内に含まれる場合)には、図12のステップ2
12に進み、その画素についてZバッファ12を用いて
処理を行う。ただし、Zバッファ12とは、画素のX、
Y座標に対するZ座標値を記憶しておくバッファメモリ
のことである。処理中の画素がZバッファ適用領域外で
あれば、ステップ213へ進みフレームメモリへ書き込
む(上書きする)。
【0045】ステップ212のZバッファ12を用いた
処理では、Z座標値比較部26において、Zバッファ1
2に記憶してあるZ座標値を読み出し、これと処理中の
画素のZ座標値を比較し、処理中の画素のZ座標値の方
が小さければその画素は可視、大きければ不可視である
と判定する。可視と判定した場合には、フレームメモリ
11にその画素の色輝度を書き込むと共に、Zバッファ
12のZ座標値をその画素のZ座標に更新する。なお、
Zバッファ12のZ座標値は初期状態では視点から十分
に遠いZ座標にしておく。このステップ211と212
またはステップ211と213の処理を、オブジェクト
内の全画素に対して行い(ステップ214と215)、
全画素終了したら図1のステップ203ヘ進み、次のオ
ブジェクトがあれば、ステップ201へ進み、無ければ
描画処理ルーチン200を終了する。
【0046】以下、図6(a)のオブジェクトリストを
用いて描画処理を行う場合を具体例にとり説明する。
【0047】まず、オブジェクトリストの一行目を読み
出す。この場合、オブジェクトの番号は3でZバッファ
適用領域Zbは1となっているので、オブジェクト3を
構成するポリゴンの記述を図6(c)のポリゴンリスト
から読み出し、画素補間部24でポリゴン毎に画素補間
処理を行う。この際に、処理画素のX、Y座標がZバッ
ファ適用領域1内である場合には、Zバッファ12を用
いて処理を行う。
【0048】オブジェクト3の処理が終了した時点で、
フレームメモリ11には、オブジェクト3のポリゴンの
画素データが書き込まれている。また、Zバッファ12
のZバッファ適用領域1の部分には、それぞれのX、Y
座標値におけるオブジェクト3のポリゴンのZ座標値が
書き込まれている。
【0049】次に、オブジェクトリストの2行目に記述
されているオブジェクト2に対する処理を行う。オブジ
ェクト2は、オブジェクト3と同様にZバッファ適用領
域1を持つ。したがって、オブジェクト2のポリゴン内
の画素のうち、Zバッファ適用領域1内に含まれる画素
についてはZバッファ12を用いて処理を行う。Zバッ
ファ12のZバッファ適用領域1の部分で、オブジェク
ト3のポリゴンの画素が存在する部分には、既にオブジ
ェクト3のZ座標値が書き込まれている。そのため、オ
ブジェクト3とオブジェクト2のポリゴンの画素がXY
平面で重なっている部分では、Zバッファ12を参照し
てZ座標値の比較を行うことはオブジェクト2とオブジ
ェクト3のZ座標値比較を行うことに等しい。
【0050】この比較の結果、オブジェクト2の画素の
方が視点に近い場合には、フレームメモリ11にオブジ
ェクト2の画素を書き込み、Zバッファ12のZ座標値
をオブジェクト2のZ座標値に書き換える。Zバッファ
適用領域1に含まれない画素の場合は、Zバッファ12
を参照することなしに、フレームメモリ11へ書き込
む。オブジェクト2の処理が完了した時点で、フレーム
メモリ11にはオブジェクト2とオブジェクト3の画素
が隠面処理を施された状態で書き込まれていることにな
る。
【0051】引き続きオブジェクトリストに従い、オブ
ジェクト4、オブジェクト1の処理を順番に行う。オブ
ジェクト4とオブジェクト1はどちらもZバッファ適用
領域Zbを持たないので、各オブジェクトを構成するポ
リゴンの画素を、Zバッファ12を参照することなしに
フレームメモリ11に書き込む。
【0052】以上述べたように、オブジェクトリストに
従いオブジェクト3、2、4、1の順で処理を行った結
果、フレームメモリ11には、オブジェクト1〜4の隠
面処理を施したデータが書き込まれる。このフレームメ
モリ11を読み出して表示することにより所望の表示画
像を得ることができる。
【0053】このように、本実施例では、3次元オブジ
ェクトを、そのオブジェクトを含む直方体で代表させ、
直方体間の位置関係を調べることによって隠面処理の順
番を決めている。このため、従来例のように、ポリゴン
単位でソート処理を行う場合に比べ、ソート処理の処理
量が少ない。また、Zバッファ法を適用する領域を最小
限にできるため、Zバッファ用のメモリに対する書き込
み、読み出しの処理量を低減できる。すなわち、Zバッ
ファを用いる領域を必要最小限にでき、Zバッファを用
いてのZ座標値比較及び更新処理を低減できる。
【0054】<実施例2>図7は、本発明の隠面処理方
法を実現する隠面処理回路の別の構成例を示すブロック
図である。本実施例は、Zバッファのサイズが画面のサ
イズよりも小さい場合に、一つのZバッファを複数の領
域に共用する隠面処理方法である。なお、図7におい
て、前記実施例の図2で示した部分と同じ構成部分に
は、同一の参照符号を付してその詳細な説明は省略す
る。すなわち、本実施例の構成は、図2で示した隠面処
理回路15の隠面処理部20に、Zバッファ適用領域分
割部71とポリゴン分割部72を付加している点、およ
びZバッファのサイズに関する点で前記実施例と相違す
る。図7に示した隠面処理回路70におけるZバッファ
73のサイズは、m画素×n画素である。ただし、ここ
で画面サイズは、M画素×N画素であり、mとM及びn
とNの関係は、m<M、n<Nであるとする。すなわ
ち、前記実施例と異なり、本実施例のZバッファ73
は、1画面分よりも少ないZ座標値を記憶するメモリ量
のZバッファである。
【0055】以下、本実施例の隠面処理方法について説
明する。前記実施例と同様に、代表値算出部21におい
て、メモリ10に入力されたオブジェクトデータに基づ
きオブジェクトを包含する直方体を求める。そして、Z
バッファ適用領域抽出部22において直方体間の位置関
係を確定し、オブジェクトソート部23ではオブジェク
トを視点から遠い順に並べたオブジェクトリストを作成
する。また、Zバッファ適用領域抽出部22は、直方体
間の位置関係を確定した結果3次元空間で重なりありと
分類された場合には、Zバッファ適用領域Zbの領域パ
ラメータを求める。
【0056】更に、Zバッファ適用領域分割部71で
は、そのZバッファ適用領域ZbをZバッファ73のサ
イズに含まれるように分割する。ここで、Zバッファ適
用領域の分割の一例を図8に示す。図8に示すように、
例えばZバッファ適用領域Zbの左上から右上、左下、
右下の順番にZバッファ73のサイズを当てはめ、Zバ
ッファ適用領域ZbをZバッファサブ領域S1〜S4に
分割する。なお、分割する順番は、この順に限るもので
はない。
【0057】次にポリゴン分割部72において、これら
Zバッファサブ領域S1〜S4に対して、それぞれのZ
バッファサブ領域Sk(k=正の整数、この例ではk=
1〜4)内に含まれるポリゴンのデータを抽出する。こ
こで、図9にZバッファサブ領域Skと抽出されるポリ
ゴンとの関係の一例を示す。
【0058】図9の例は、Zバッファサブ領域Skにポ
リゴンP1の一部が含まれている場合である。このと
き、Zバッファサブ領域Skに含まれている四角形の部
分を、ポリゴンP1−1とポリゴンP1−2の二つのポ
リゴンに分割する。ポリゴンP1−1とポリゴンP1−
2は、Zバッファサブ領域Skに全ての頂点が含まれる
ポリゴンである。Zバッファサブ領域のパラメータは、
図10(a)に示すような、Zバッファ適用領域番号、
Zバッファサブ領域数、サブ領域番号、座標値から構成
されるZバッファサブ領域リストに記述される。Zバッ
ファサブ領域に新たに定義されたポリゴンの頂点データ
と色輝度データは、図10(b)に示すような、Zバッ
ファサブ領域番号、サブポリゴン数、サブポリゴン番
号、頂点座標から構成されるサブポリゴンリストに記述
される。サブポリゴンリストは、一つのZバッファサブ
領域を共有する複数のオブジェクトについてまとめて記
述される。すなわち、Zバッファサブ領域内のポリゴン
データの情報は、まとめてサブポリゴンリストに記述さ
れることになる。これらのZバッファサブ領域リスト、
サブポリゴンリストはメモリ10に格納される。
【0059】上記リストを作成した後、次のように描画
処理を行う。ここで、図11に本実施例の隠面処理方法
における描画処理フローの概略を示す。前記実施例の図
2で示した描画処理フローと異なる点は、描画処理ルー
チン200において、図1のZバッファ法による隠面処
理部分210が、ステップ221〜ステップ224から
なるZバッファ適用領域外処理部分220と、Zバッフ
ァ適用領域未処理の有無を判定するステップ230と、
ステップ241〜ステップ243からなるZバッファ適
用領域内処理部分240とに置き換わっている点であ
る。
【0060】本実施例の描画処理は、前記実施例同様に
オブジェクトリストに従って視点から最も遠いオブジェ
クトから順に描画処理を開始し、オブジェクト毎に処理
を行う。
【0061】ステップ201において、描画するオブジ
ェクトにZバッファ適用領域が有るか否かをZバッファ
適用領域判定部25で判定し、Zバッファ適用領域が存
在するオブジェクトを処理する場合には、ステップ22
1において、Zバッファ適用領域リストを参照し、処理
中の画素がZバッファ適用領域外か否か、すなわちZバ
ッファ適用領域に含まれるか否かをチェックする。処理
中の画素がZバッファ適用領域外の場合(Zバッファ適
用領域に含まれない場合)は、ステップ222へ進み、
Zバッファ適用領域に含まれる場合はステップ224へ
進み、次の画素に対してステップ221からの処理を繰
り返す。すなわち、処理中の画素がZバッファ適用領域
に含まれない場合のみ、その画素をフレームメモリ11
に書き込み、上書きによる隠面処理をする。
【0062】次にステップ223へ進み、オブジェクト
内にあるZバッファ適用領域外の全画素の隠面処理が終
了したかを判定し、未だの場合は次の画素に対してステ
ップ221へ戻り同様の処理を繰り返す。Zバッファ適
用領域外の全画素の処理が終了した場合は、ステップ2
30へ進む。
【0063】ステップ230では、処理中のオブジェク
トにZバッファ適用領域の未処理部分があるかを判定
し、未処理部分がある場合にはZバッファ適用領域内処
理部分240へ進み、無い場合にはステップ203へ進
む。
【0064】ステップ203では描画処理をするオブジ
ェクトの有無を判定し、有りの場合はステップ204を
経由して次のオブジェクトに対してステップ201から
の同様の処理を繰り返す。
【0065】Zバッファ適用領域内処理部分240の画
素の処理は、Zバッファ適用領域外のポリゴンの画素処
理とは独立に次の手順で行う。なお、Zバッファ適用領
域がある場合には、前述したようにZバッファ適用領域
分割部71により、そのZバッファ適用領域はZバッフ
ァ73のサイズに含まれるようにZバッファサブ領域に
分割され、そのZバッファサブ領域のパラメータはZバ
ッファサブ領域リストに記述されている。そして、ポリ
ゴン分割部72により、各Zバッファサブ領域内に含ま
れるポリゴンのデータが抽出され、サブポリゴンリスト
に記述されている。これらのリストは、メモリ10に格
納されている。
【0066】描画処理は、Zバッファ適用領域内のZバ
ッファサブ領域(以下では、単にサブ領域と呼ぶ)毎に
行われる。
【0067】ステップ241において、サブ領域の一つ
をZバッファ法により隠面処理を行う。ここでは先ず、
Zバッファサブ領域リストを参照し、サブ領域の番号と
領域パラメータを求める。次に、サブポリゴンリストを
参照してそのサブ領域内に含まれるポリゴンデータを求
め、ポリゴン毎に処理を行う。画素補間部24により各
ポリゴンについて、ポリゴン内の画素を補間し、Zバッ
ファ73を用いた隠面処理、すなわちZバッファ法によ
る隠面処理を行うと共に、フレームメモリ11に書き込
む。そのサブ領域内の全ポリゴンの処理を終了したら、
次のステップ242に進み、処理すべき次のサブ領域が
有るかを判定する。次のサブ領域有りの場合はステップ
243へ進み、Zバッファ73を初期化して、ステップ
241へ戻り、次のサブ領域について同様の処理を行
う。
【0068】ステップ242の判定で、Zバッファ適用
領域内の全サブ領域について処理が終了すれば、処理中
のオブジェクトに対するZバッファ適用領域の描画処理
は終了となる。従って、ステップ203へ進み、描画処
理をする次のオブジェクトの有無を判定し、有りの場合
にはステップ204へ進み、更にステップ201へ戻
り、次のオブジェクトに対して同様の処理を行う。一
方、次のオブジェクト無しと判定した場合には、描画処
理を終了する。
【0069】なお、図11のフローチャートでは、ステ
ップ201でZバッファ適用領域有りの場合、Zバッフ
ァ適用領域外処理220の後にZバッファ適用領域内処
理240を行う場合を示したが、この順序は逆でもかま
わない。
【0070】また、本実施例では、オブジェクトリスト
に記述される順番でオブジェクトの処理を行うが、Zバ
ッファ適用領域に関しては、そのZバッファ適用領域を
共有する二つのオブジェクトのうち、オブジェクトリス
トで先に記述されているオブジェクトの処理の前か後に
行う。例えば、前記実施例1の説明で用いた4個のオブ
ジェクトの例(図5参照)では、オブジェクトリストに
オブジェクト3、2、4、1の順で記述されている。オ
ブジェクト3と2は、図6(a)に示したように、Zバ
ッファ適用領域1を共有する。この場合の処理の順番
は、オブジェクト3のZバッファ適用領域以外の部分、
Zバッファ適用領域1、オブジェクト2のZバッファ適
用領域以外の部分、オブジェクト4、オブジェクト1の
順となる。
【0071】上記したように、本実施例では、処理する
オブジェクトがZバッファ適用領域を持つ場合、そのオ
ブジェクトのZバッファ適用領域外とZバッファ適用領
域内とで画素の処理が異なる。すなわち、Zバッファ適
用領域外の画素はフレームメモリに上書きするが、Zバ
ッファ適用領域内の画素はZバッファサブ領域単位で処
理を行う。
【0072】また、各オブジェクトのZバッファ適用領
域は一度だけ処理されれば良い。例えば、あるZバッフ
ァ適用領域がオブジェクト1とオブジェクト2で共通に
参照される場合、オブジェクト1の処理のときにそのZ
バファ適用領域の処理を行えば、オブジェクト2の処理
時に、そのZバッファ適用領域は処理しなくてよいた
め、各オブジェクトの処理では、Zバッファ適用領域が
未処理の場合のみ、Zバッファサブ領域単位の処理を行
えばよい。Zバッファ適用領域が未処理か、処理済かの
判定を行うために、例えば、図6(b)に示したZバッフ
ァ適用領域リストの項目に、Zバッファ適用領域の処理
状態を示す1ビットのフラグを追加し、各Zバッファ適
用領域を一度処理した後、そのフラグを立てるなどの方
法が可能である。
【0073】本実施例では、Zバッファのメモリ量を一
画面分持つことなく少ないZバッファ量で隠面処理を実
現できるため、前記実施例の効果に加えて、更に隠面処
理回路のメモリ量を低減できるという効果がある。
【0074】なお、実施例1、2で述べた本発明の隠面
処理方法及び、この隠面処理方法を適用した隠面処理装
置は、3次元オブジェクトのデータ等を格納するメモ
リ、オブジェクトのZ座標値を記憶するZバッファ、C
RTなどのディスプレイ装置に表示する表示データを記
憶するフレームメモリを有し、オブジェクトデータ等の
画像データを演算処理する演算処理回路等を備えた3次
元グラフィックス描画装置や、パーソナルコンピュータ
等における演算処理によりグラフィックス画像を作成す
る装置であれば、画像データの演算処理機能を構成する
部分に、ハード的及び/又はソフト的に、図2及び図7
のブロック図の隠面処理部20で説明した演算処理機能
を持たせることにより実現することができる。
【0075】以上、本発明の好適な実施例について説明
したが、本発明は前記実施例に限定されることなく、本
発明の精神を逸脱しない範囲内において種々の設計変更
をなし得ることは勿論である。
【0076】例えば、上述した二つの実施例では、オブ
ジェクトを代表する値としてオブジェクトを包含する直
方体のパラメータを求めるとしたが、代わりに、オブジ
ェクトを構成するポリゴンのうち、面が視点に対して表
向きの有効なポリゴンを全て含む最小の直方体のパラメ
ータを求めてもよい。この場合は、直方体のパラメータ
を求めるための処理量をより低減できる。
【0077】また、上記の説明ではオブジェクトとして
3次元凸形状のオブジェクトを仮定して説明した。凹形
状のオブジェクトを扱う場合には、そのオブジェクトを
凸形状の複数のオブジェクトに分解して処理することに
より同様に処理可能である。この場合、分解により生成
される複数のオブジェクトを包含する複数の直方体のう
ち、隣接する直方体同士は3次元空間で重なりを持つ。
しかし、隣接する直方体に含まれるオブジェクトは交錯
することがないことが明らかである。すなわち、この場
合はZバッファが必要でなく、上書きによる隠面処理が
可能である。したがって、凹形状のオブジェクトを分解
して生成された凸形状のオブジェクトについては、その
分解情報を付加することによって、他の場合とは別に扱
い、すなわちZバッファ適用領域の除外領域として扱う
ことにより、処理量を低減することが可能である。
【0078】
【発明の効果】前述した実施例から明らかなように、本
発明の隠面処理方法によれば、3次元オブジェクトを、
そのオブジェクトを含む直方体で代表させ、オブジェク
ト同士の位置関係を調べることによって処理の順番を決
めるため、ポリゴン単位でソート処理を行う場合に比
べ、ソート処理の処理量が少ない。
【0079】また、Zバッファを用いる領域を必要最小
限にすることによって、Zバッファを用いてのZ座標値
比較および更新の処理を低減できる。この結果、正確な
隠面処理を少ない処理量で実行可能な隠面処理方法およ
び装置を提供できる。
【0080】さらに、Zバッファ量が少ない場合にも、
Zバッファを複数の領域に共用できるため、メモリ量の
少ない隠面処理装置を実現できる。
【図面の簡単な説明】
【図1】本発明に係る隠面処理方法の第1の実施例を示
す処理フロー図である。
【図2】第1の実施例の隠面処理方法を実現する隠面処
理回路のブロック図である。
【図3】本発明に係る隠面処理方法における、3次元空
間のオブジェクトとその代表値との関係を示す図であ
る。
【図4】オブジェクトを包含する二つの直方体における
Zバッファ適用領域を説明する図であり、同図(a)は
XY平面における重なりを、同図(b)はYZ平面にお
ける重なりの一例を示す図である。
【図5】オブジェクトを包含する四つの直方体における
Zバッファ適用領域を説明する図であり、同図(a)は
XY平面における重なりを、同図(b)はYZ平面にお
ける重なりの一例を示す図である。
【図6】本発明に係る隠面処理方法で用いるリストの一
例を示す図であり、同図(a)はオブジェクトリスト、
同図(b)はZバッファ適用領域リスト、同図(c)は
ポリゴンリストである。
【図7】第2の実施例の隠面処理方法を実現する隠面処
理回路のブロック図である。
【図8】第2の実施例におけるZバッファ適用領域の分
割の一例を説明する図である。
【図9】第2の実施例におけるポリゴンの分割の一例を
説明する図である。
【図10】第2の実施例で用いるサブリストの一例であ
り、同図(a)はZバッファサブ領域リスト、同図
(b)はサブポリゴンリストである。
【図11】第2の実施例における隠面処理のフロー図で
ある。
【図12】図1のステップ210を詳細に示したフロー
図である。
【符号の説明】
10…メモリ、11…フレームメモリ、12…Zバッフ
ァ、13…データバスライン、14…制御部、15…隠
面処理回路、20…隠面処理部、21…代表値算出部、
22…Zバッファ適用領域抽出部、23…オブジェクト
ソート部、24…画素補間部、25…Zバッファ適用領
域判定部、26…Z座標値比較部、30…オブジェクト
を包含する直方体、31…オブジェクト、70…隠面処
理回路、71…Zバッファ適用領域分割部、72…ポリ
ゴン分割部、73…Zバッファ。
フロントページの続き (72)発明者 中本 貴士 東京都小平市上水本町五丁目20番1号 株 式会社日立製作所システムLSI開発セン タ内 Fターム(参考) 5B080 AA13 GA02

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】X、Y、Zの3次元座標により表現した複
    数のオブジェクトの隠面処理方法であって、前記複数の
    オブジェクトを代表する3次元領域をそれぞれ求め、前
    記複数の3次元領域同士が3次元で重なりを有する場合
    に、その重なりに含まれる前記複数のオブジェクトの画
    素のZ座標値を比較して表示画像を形成することを特徴
    とする隠面処理方法。
  2. 【請求項2】上記3次元領域は、オブジェクトを構成す
    る複数のポリゴンのうち面が視点に対して表向きの有効
    なポリゴンを包含し、かつ、6面の全てがXY平面、Y
    Z平面、XZ平面のいずれかに平行な最小の直方体であ
    る請求項1記載の隠面処理方法。
  3. 【請求項3】上記最小の直方体は、オブジェクトのX、
    Y、Z座標の各座標における最大値と最小値で表される
    直方体である請求項2記載の隠面処理方法。
  4. 【請求項4】上記複数の3次元領域同士の3次元におけ
    る重なりの部分を複数の小領域に分割し、小領域毎にZ
    座標値の比較を行う請求項1〜3のいずれか1項に記載
    の隠面処理方法。
  5. 【請求項5】上記複数の小領域に含まれるポリゴンのデ
    ータに基づき、頂点が各小領域内に含まれるポリゴンを
    新たに定義したのち、その新たに定義したポリゴンを用
    いて小領域内の表示画像を形成する請求項4記載の隠面
    処理方法。
  6. 【請求項6】3次元オブジェクトのデータを格納するメ
    モリ、オブジェクトのZ座標値を記憶するZバッファ、
    ディスプレイ装置に表示する表示データを記憶するフレ
    ームメモリを有し、前記オブジェクトのデータの隠面処
    理をする処理回路と、この処理回路を制御する制御部と
    を備えた隠面処理装置において、オブジェクトを構成す
    る複数のポリゴンの頂点の座標から、オブジェクトを代
    表するX、Y、Z座標の代表値を求める手段と、得られ
    た各オブジェクトの上記X、Y、Z座標の代表値を比較
    することによって、各オブジェクト間の位置関係を確定
    する手段と、前記位置関係を確定する手段によりX、
    Y、Z方向の全3方向で座標の代表値の重なりが検出さ
    れた場合にはZバッファ法を用いて隠面処理を行い、検
    出されない場合に上書きによる隠面処理を行う手段とを
    前記処理回路に少なくとも備えたことを特徴とする隠面
    処理装置。
JP11072500A 1999-03-17 1999-03-17 隠面処理方法 Pending JP2000268191A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11072500A JP2000268191A (ja) 1999-03-17 1999-03-17 隠面処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11072500A JP2000268191A (ja) 1999-03-17 1999-03-17 隠面処理方法

Publications (1)

Publication Number Publication Date
JP2000268191A true JP2000268191A (ja) 2000-09-29

Family

ID=13491130

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11072500A Pending JP2000268191A (ja) 1999-03-17 1999-03-17 隠面処理方法

Country Status (1)

Country Link
JP (1) JP2000268191A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7218321B2 (en) 2003-03-31 2007-05-15 Fujitsu Limited Hidden line processing method for erasing hidden lines in projecting a three-dimensional model consisting of a plurality of polygons onto a two-dimensional plane
CN100378762C (zh) * 2003-08-25 2008-04-02 威盛电子股份有限公司 减少z缓冲区流量的三维图形处理装置
US7522166B2 (en) 2001-11-29 2009-04-21 Kabushiki Kaisha Square Enix Video game processing method, video game processing apparatus and computer readable recording medium storing video game program
JP2014216011A (ja) * 2013-04-22 2014-11-17 インテル・コーポレーション カラーバッファ圧縮

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7522166B2 (en) 2001-11-29 2009-04-21 Kabushiki Kaisha Square Enix Video game processing method, video game processing apparatus and computer readable recording medium storing video game program
US7218321B2 (en) 2003-03-31 2007-05-15 Fujitsu Limited Hidden line processing method for erasing hidden lines in projecting a three-dimensional model consisting of a plurality of polygons onto a two-dimensional plane
CN100378762C (zh) * 2003-08-25 2008-04-02 威盛电子股份有限公司 减少z缓冲区流量的三维图形处理装置
JP2014216011A (ja) * 2013-04-22 2014-11-17 インテル・コーポレーション カラーバッファ圧縮

Similar Documents

Publication Publication Date Title
US7145565B2 (en) Depth bounds testing
US7876332B1 (en) Shader that conditionally updates a framebuffer in a computer graphics system
US6693637B2 (en) Method and apparatus for determining bins to be updated for polygons, including lines
US5249264A (en) Image display method and apparatus
US8547395B1 (en) Writing coverage information to a framebuffer in a computer graphics system
US7817165B1 (en) Selecting real sample locations for ownership of virtual sample locations in a computer graphics system
TW201539374A (zh) 用於高解析度顯示緩衝器之有效構造之方法
KR20050030595A (ko) 화상 처리 장치 및 그 방법
US11790480B2 (en) Tiling a primitive in a graphics processing system by edge-specific testing of a subset of tiles in a rendering space
JPH08161526A (ja) 画像合成装置及び画像合成方法
US10242482B2 (en) Tiling a primitive in a graphics processing system
US7898549B1 (en) Faster clears for three-dimensional modeling applications
US7825928B2 (en) Image processing device and image processing method for rendering three-dimensional objects
JP4122573B2 (ja) 画像処理方法及び画像処理プログラムを記録した記録媒体
JPH1166340A (ja) 画像処理装置、画像処理方法及び画像処理プログラムを記録した記録媒体
JP3191159B2 (ja) 図形情報を処理する装置
JP3756888B2 (ja) グラフィックスプロセッサ、グラフィックスカード及びグラフィックス処理システム
JP2000268191A (ja) 隠面処理方法
US20030122850A1 (en) Method and apparatus for determining bins to be updated for polygons, including triangles
JPH0714029A (ja) 線描画装置及び方法
US7196706B2 (en) Method and apparatus for rendering a quadrangle primitive
JPH087715B2 (ja) データ処理装置及びアクセス制御方法
KR100269118B1 (ko) 사각형을이용한래스터화방법
JP4042377B2 (ja) 画像処理装置、および画像処理方法、並びにコンピュータ・プログラム
JPH02132572A (ja) 画像表示装置