JP5120174B2 - 描画装置 - Google Patents

描画装置 Download PDF

Info

Publication number
JP5120174B2
JP5120174B2 JP2008239269A JP2008239269A JP5120174B2 JP 5120174 B2 JP5120174 B2 JP 5120174B2 JP 2008239269 A JP2008239269 A JP 2008239269A JP 2008239269 A JP2008239269 A JP 2008239269A JP 5120174 B2 JP5120174 B2 JP 5120174B2
Authority
JP
Japan
Prior art keywords
rectangular area
overlap
rectangular
area
gon
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.)
Expired - Fee Related
Application number
JP2008239269A
Other languages
English (en)
Other versions
JP2010072917A (ja
Inventor
隆弘 野津
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008239269A priority Critical patent/JP5120174B2/ja
Publication of JP2010072917A publication Critical patent/JP2010072917A/ja
Application granted granted Critical
Publication of JP5120174B2 publication Critical patent/JP5120174B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Generation (AREA)

Description

本発明は、描画装置に関する。
現在の3次元グラフィックスの描画処理は立体オブジェクトを細かな三角形により表している。三角形の描画処理を高速化するひとつの手段として、ある矩形領域上に配置されたピクセルを並列に描画する方法がある。
図14は、三角形による描画処理を説明する図である。
三角形と重なるハッチされた矩形領域が描画処理の対象となり、その矩形領域内部にある一つ一つのピクセルが同時の処理されることになる。このような描画を行う場合、矩形領域と描画対象の三角形との重なりを判定する必要がある。三角形と矩形領域との重なりの判定は、図形の描画処理に限らず様々な処理で利用される。
特許文献1〜3に三角形と矩形領域の従来の判定方法が示されている。
特許文献1〜3はすべて、「矩形領域の4隅の点」が描画対象となる三角形の内部に入るか否かを判定し、その結果を用いて矩形領域と三角形との重なりを判定している。
1.4隅の点すべてが三角形内部にある場合は、三角形と完全に重なると判定する。
2.4隅の点すべてが三角形のひとつの辺から見て外側にある場合は、三角形と重ならないと判定する。
3.1,2が成立せず、矩形領域が三角形のバウンディング領域(境界領域)の外部にあれば三角形と重ならないと判定する。
4.1,2が成立せず、矩形領域が三角形のバウンディング領域(境界領域)の内部にあれば三角形と重なると判定する。
ある1点が三角形の内部に入るか外部に出るかを判定するためにはエッジ関数と呼ばれる式を用いる。この式は2変数の一次式であり、次の形をしている。
f(x, y) = ax + by + c
このエッジ関数を三角形のそれぞれの辺に対して用意し、次の条件を満たすように係数を調節する。
・ひとつの辺の上で関数の値が0 になる
・関数の勾配が三角形の内部を向く
以上のように関数を定義すると、点が三角形の内部に存在するときのみ3つのエッジ関数の値が全て正の値となる。このようにしてある1点が三角形の内部にあるか外部にあるかを判定することが可能である。
図15は、エッジ関数による判定方法の様子を示す図である。
図中には3 本の直線があり、それぞれの方程式はf0(x, y) = 0, f1(x, y) = 0, f2(x, y) = 0 という形で表されている。そして、f0(x, y), f1(x, y), f2(x, y)の勾配が3 本の直線で形成される三角形の内部を向いているため、この三角形の内部では3 つの関数の値がすべて正の値となり、外部では少なくとも一つの関数の値が負となる。
特開2000−149055号公報 特表2002−529865号公報 特開2008−77627号公報
一つ一つの矩形領域の大きさが小さい場合、ひとつの三角形の描画に関わる矩形領域の数が多くなり。従来のように矩形領域の4 隅の点と三角形との位置関係を用いた判定方法では、エッジ関数を評価する回数が多くなる。その結果、三角形との重なりを判定するコストが大きくなり、計算負荷が大きくなる。
本発明の課題は、計算負荷を小さくすることのできる描画装置を提供することである。
本発明の第1の描画装置は、矩形領域と図形との重なった部分を描画する描画装置であって、a、b、cを定数として、該図形を表現する、変数(x、y)についての1以上の直線の式f(x, y) = ax + by + c = 0を設定する図形設定手段と、該図形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定する矩形領域設定手段と、D[f] = |a|w + |b|hとして、−D[f] < f(xd, yd) < D[f] ならば、該図形と該矩形領域が重なり、f(xd, yd) ≦ −D[f]、もしくは、D[f] ≦ f(xd, yd) ならば重ならないと判定する判定手段と、該図形と該矩形領域が重なる場合に、該矩形領域を描画する描画手段とを備える。
本発明の第2の描画装置は、矩形領域と凸n角形との重なった部分を描画する描画装置であって、ai、bi、ci(iは整数)を定数として、該凸n角形を表現する、変数(x、y)についての1以上のエッジ関数の式fi(x, y) = aix + biy + ci= 0を設定する凸n角形設定手段と、該凸n角形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定する矩形領域設定手段と、該凸n角形に外接する四角形領域であるバウンディング領域を設定するバウンディング領域設定手段と、D[fi] = |ai|w + |bi|hとして、該矩形領域がバウンディング領域の外部に存在すれば重ならないとし、少なくとも一つのfiについて、fi(xd, yd) < −D[fi]となれば重ならないと判定し、矩形領域と凸n 角形の境界領域が重なり、すべてのエッジ関数についてfi(xd, yd) ≧ −D[fi] となれば、重なると判定し、すべてのエッジ関数についてfi(xd, yd) ≧ D[fi] となれば、矩形領域内のすべての点は対象の凸n 角形に含まれると判定する判定手段と、該凸n角形と該矩形領域が重なる、あるいは、該矩形領域が該凸n角形に含まれる場合に、該矩形領域を描画する描画手段とを備える。
本発明によれば、計算負荷を小さくした描画装置を提供できる。
以下に、本発明の実施形態に従った矩形領域と三角形との重なりを判定する方法を示す。それに先立って、矩形領域と直線との重なりを判定する方法を示す。
<矩形領域と直線との重なりの判定>
判定対象の矩形領域の中心点を(xd, yd) とし、幅と高さを2w, 2h とする。そして、直線の方程式をf(x, y) = 0 とする。ただし、f(x, y) はエッジ関数であり、f(x, y) = ax+by +c であるとする。このとき、エッジ関数に対してD[f] = |a|w + |b|h なる量を定義する。D[f] のa, b はそれぞれエッジ関数f のx とy の係数である。
矩形領域と直線との重なりの判定は、矩形領域の中心点(xd, yd) におけるエッジ関数の値f(xd, yd)を用いて以下のように判定する。
・−D[f] ≦ f(xd, yd) ≦ D[f] の場合、矩形領域と直線は重なる。
・f(xd, yd) ≦ −D[f] またはD[f] ≦ f(xd, yd) の場合、矩形領域と直線は重ならない。
以下に証明を記す。
初めに、(x, y) が(xd, yd) から(xd+Δx, yd+Δy) に変化したときのエッジ関数の変化を求める。
f(xd + Δx, yd + Δy) = a(xd + Δx) + b(yd+ Δy) + c
= axd + byd + c + aΔx + bΔy
= f(xd, yd) + aΔx + bΔy
これより、エッジ関数の変化の絶対値は以下の通りとなる。
|f(xd + Δx, yd + Δy) − f(xd, yd)| = |aΔx + bΔy|
≦ |aΔx| + |bΔy|
= |a||Δx| + |b||Δy|
(xd + Δx, yd + Δy) が矩形領域内にあるならば、
|Δx| ≦ w
|Δy| ≦ h
であることから、エッジ関数の変化の絶対値は以下のように押さえられる。
|f(xd + Δx, yd + Δy) − f(xd, yd)| ≦ |a||Δx| + |b||Δy|≦ |a|w + |b|h= D[f]
よって、
−D[f] ≦ f(xd + Δx, yd + Δy) − f(xd, yd ) ≦D[f]
この式より、次のことが言える。
・f(xd, yd) < −D[f] ならば、矩形領域内のすべての点(x, y) でf(x, y) < 0 である。・f(xd, yd) > D[f] ならば、矩形領域内のすべての点(x, y) でf(x, y) > 0 である。
さらに、Δx = w もしくは−w、Δy = h もしくは−h とすることにより、aΔx + bΔy
= |a|w +|b|h = D[f] とすることができる。したがって、次のことも言える。
・−D[f] ≦ f(xd, yd) ≦ D[f] ならば、矩形領域内のある点(x, y) でf(x, y) = 0 となる。すなわち、矩形領域内のある点で、エッジ関数と交差する。
以上の議論で矩形領域と直線(エッジ関数)との重なりの条件が正しいことが示された。
<矩形領域と三角形との重なりの判定>
「判定方法」
矩形領域と直線の重なりの判定方法を示したので、次に矩形領域と三角形との重なりの判定を示す。
三角形を構成するエッジ関数を次のように定義する。
f0(x, y) = a0x + b0y + c0
f1(x, y) = a1x + b1y + c1
f2(x, y) = a2x + b2y + c2
また、それぞれのエッジ関数についてD[f0],D[f1],D[f2] を前述と同様に定義する。
以上の式を用いて矩形領域と三角形との重なりの判定を次のように行う。
1.矩形領域が三角形の境界領域(バウンディング領域)外部に存在すれば三角形と重ならないと判定する。
2.3つのエッジ関数のうち、fi(xd, yd) < −D[fi] となるものがあれば矩形領域は三角形と重ならないと判定する。
3.矩形領域と三角形の境界領域(バウンディング領域:三角形に外接する、辺が座標軸に平行な矩形領域)が重なり、3つのエッジ関数すべてが、fi(xd, yd) ≧ −D[fi] となれば、矩形領域は三角形と重なると判定する。
4.3つのエッジ関数すべてが、fi(xd, yd) ≧ D[fi] を満たせば矩形領域は三角形の内部に含まれる、つまり、矩形領域内のすべての点が三角形の内部に含まれる、と判定する。
「判定方法の例」
図1を使って、本発明の実施形態に従った、矩形領域が三角形と重なるか否かの判定の例を示す。
この例では、ひとつの三角形と3 つの領域がある。三角形のエッジ関数は以下の通りとなっている。
f0(x, y) = 2x − y
f1(x, y) = − x + 2y
f2(x, y) = − x − y + 6
また、それぞれの領域のパラメータは表1の 通りとなっている。
領域1 については2w = 2, 2h = 2 となり、f0(x, y) が−D[f0]以下の値となるため、矩形領域は三角形と重ならないと判定する。
f0(−1/2,5/2) = −7/2 < −(|a0|w + |b0|h) = −3
領域2 も2w = 2, 2h = 2 である。さらに、以下に示すようにエッジ関数がすべて−D[f0],−D[f1],−D[f2]より大きくなり、なおかつ、三角形の境界領域と重なるため、矩形領域は三角形と重なると判定する。
f0(4, 1) = 7 > −(|a0|w + |b0|h) = −3
f1(4, 1) = −2 > −(|a1|w + |b1|h) = −3
f2(4, 1) = 1 > −(|a2|w + |b2|h) = −2
領域3 は2w = 10, 2h = 2 となる。エッジ関数の値はすべてすべて−D[f0],−D[f1],−D[f2] より大きいが、三角形の境界領域と重ならないため、矩形領域は三角形と重ならないと判断する。
f0(5,11/2) =9/2 > −(|a0|w + |b0|h) = −11
f1(5,11/2) = 6 > −(|a1|w + |b1|h) = −7
f2(5,11/2) = −9/2 > −(|a2|w + |b2|h) = −6
「判定方法の証明」
次に、上述の判定方法が正しいということの証明を示す。
1 の場合は、矩形領域が三角形の外部にあるので、重ならないのは自明である。2 の場合、<矩形領域と直線との重なりの判定>での議論から、矩形領域内のすべての点(x, y) で、あるエッジ関数がfi(x, y) < 0 となる。これは、矩形領域の全体が三角形の外にあることを意味する。
同様に4 の場合も、矩形領域内のすべての点(x, y) で、すべてのエッジ関数がfi(x, y) ≧ 0 となる。これは、矩形領域の全体が三角形の内部にあることを意味する。
3 の証明は若干の手順を必要とする。
まず、「矩形領域と三角形の境界領域が重なる」という命題をA、「3つのエッジ関数すべてが、fi(xd, yd) ≧ −D[fi]」という命題をB、「矩形領域は三角形が重なる」という命題をC とする。最終的に示したい命題は以下のものである。
A ∧ B → C
この命題を直接証明することは難しいため、命題の対偶をとり、論理式の演算により若干の変形を加える。
¬C → ¬A ∨ ¬B
≡ C ∨ ¬A ∨ ¬B
≡ ¬(¬C ∧ A) ∨ ¬B
≡ (¬C ∧ A) → ¬B
つまり、「矩形領域が三角形と重ならず、境界領域と重なっているならば、あるエッジ関数が存在し、fi(xd, yd) < −D[fi]、すなわち、あるエッジ関数が存在し、領域内のすべての点(x, y) で、fi(x, y) < 0 」という命題が得られる。この命題を証明することにより、3 の証明とすることができる。
まず、矩形領域が三角形と重ならず、境界領域と重なっているならば、矩形領域の4 隅の点のうち、少なくとも一つが境界領域内に含まれる。仮に、この点を(xd − w, yd − h) = (XL, YB) であるとする。
点(XL, YB) が境界領域内に含まれることにより、直線y = YB およびx = XL は三角形と重なる。直線y = YB が三角形と重なる点の一つを(X, YB) とし、直線x = XL が三角形と重なる点の一つを(XL, Y ) と表すことにする。
ここで、直線y = YB に着目する。この直線と三角形が交わる点は、矩形領域との位置関係からX < XL となっている。そして、矩形領域は三角形に含まれていないという仮定からX < x < XLのどこかの点X′で、fi(X′, YB) = 0 となるエッジ関数が存在しなければならない。
この状態を図2に示す。
今までの議論からエッジ関数fi(x, y) に関する性質が明らかとなる。
1.fi(x, y) のx の係数ai は負の値である。
2.直線fi(x, y) = 0 はy 軸に平行ではない。
1であるが、X < X′ となる点でfi(X, YB) > fi(X′, YB) = 0 となることから示せる。また、
2であるが、もし、y 軸に平行であるとすると、1 の性質から、直線x = XL 上の点はすべてfi(XL, y) < 0 となる。これは、直線x = XL 上に三角形と重なる点があるという仮定に矛盾する。
したがって、直線fi(x, y) = 0 はy 軸に平行でなく、y の係数biも0 ではない。
今までの性質をまとめると次の通りとなる。
fi(X, YB) = aiX + biYB + ci > 0 (1)
fi(XL, Y ) = aiXL+ biY + ci > 0 (2)
fi(X′, YB) = aiX′ + biYB + ci = 0 (3)
fi(XL, Y′) = aiXL + biY′ + ci = 0 (4)
X < X′ < XL (5)
Y < YB (6)
ai < 0 (7)
まず、(3), (4) より、
X′ = − 1/ai・(biYB + ci)
XL = − 1/ai・(biY′ + ci)
これと(5), (7) から以下の式を得る。
biYB < biY′ (8)
つぎに、(2), (4) より、以下の式を得る。
biY > biY′ (9)
得られた(8), (9) より、以下の式を得る。
biYB < biY (10)
ここで、(6) より、
bi < 0
でなければならないことがわかり、
Y < Y′< YB
を得る。
以上の結果より、fi(x, y) は矩形領域全体で負の値をとることがわかる。矩形領域の他の点が三角形の境界領域と重なるときでも同様の議論を行うことにより矩形領域全体で負の値をとるエッジ関数の存在を示すことができる。したがって、命題「矩形領域が三角形と重ならず、境界領域と重なっているならば、あるエッジ関数が存在し、fi(xd, yd) <
−D[fi]、すなわち、あるエッジ関数が存在し、領域内のすべての点(x, y) で、fi(x, y) < 0 」が真であることを証明することができた。
ゆえに、矩形領域と三角形との重なりの条件3 も正しいことを示すことができた。
<座標軸に対して傾いた矩形領域と直線との判定>
これまでに示した、直線や三角形と矩形領域の重なりの判定では、矩形領域は座標軸に平行な辺をもっていた。ところが、座標軸に対し傾いた辺をもつ矩形領域と直線との重なりの判定を必要とする場合がある。
図3に、x−y 座標に対して傾いた矩形領域と直線を示す。
この矩形領域と直線との重なりを判定するために、座標系x−y を、原点を維持したまま座標軸が矩形領域と平行になるように回転させる。回転して得られた座標系をx′ − y′ とする。そして、変換した座標系の上で矩形領域と直線との重なりの判定を行う。
座標系の変換により影響を受けるものは次のものである。
・矩形領域の中心座標
・エッジ関数の係数
また、以下の量は不変である。
・矩形の幅と高さ
・同じ点に対するエッジ関数の値
特に、同じ点に対するエッジ関数の値が座標変換に対して不変であることから、重なりの判定の為にはD[f] = |a|w + |b|h という量の変化が分かればよい。座標系の変換を表す行列をM とする。変換前の矩形領域の中心座標を(xd, yd)、変換前のエッジ関数をf(x,
y) = ax + by + c とし、変換後の矩形領域の中心座標を(x′d, y′d)、エッジ関数をf′(x′, y′) = a′x′ + b′y′ + c′ とする。それぞれの変換は以下のようにあらわされる。
ここで求めたa′, b′ の値を用いてD[f] の座標変換後の値を求めれば直線と矩形領域との重なりの判定が可能である。
図4は、本実施形態の描画装置のブロック構成図である。
三角形の頂点データは、バウンディング領域作成部10とエッジ作成部13に入力される。バウンディング領域作成部10では、頂点データで示される三角形に外接する、画面
の座標軸と平行な辺を持つ矩形領域を作成する。エッジ作成部13では、頂点データから、三角形のエッジ関数を作成する。バウンディング領域作成部10で作成されたバウンディング領域(矩形領域)の情報は、矩形領域選択部11に渡される。矩形領域選択部11では、バウンディング領域に含まれる、描画単位の矩形を特定し、その領域のパラメータを算出する。描画単位の矩形の中心座標は、矩形領域評価部12に入力される。矩形領域評価部12には、エッジ作成部13からエッジのパラメータが入力され、描画単位の矩形領域が三角形と重なるか否かの判定が行われる。描画処理部14には、矩形領域選択部11から領域のパラメータが、矩形領域評価部12からは、三角形と描画単位の矩形領域が重なるか否かの評価結果が、エッジ作成部13からはエッジのパラメータが入力され、描画単位の矩形領域を描画する処理が行われる。
図5に三角形描画処理全体のフローを示す。
初めに三角形のデータを受け取り、その三角形のバウンディング領域(境界領域)をえる。つぎに、境界領域内の一つの矩形領域を選択して、それが描画対象となる三角形と重なるならばその矩形領域に対して処理を行う。矩形領域が三角形と重ならない場合は次の矩形領域を選択する。すべての矩形領域を処理し終えたら描画処理の終了とする。
図5に沿って説明すると、ステップS10において、三角形のバウンディング領域を得る。ステップS11において、バウンディング領域内のすべての矩形領域を処理したか否かを判断する。ステップS11の判断がYesの場合には、描画処理を終了する。ステップS11の判断がNoの場合には、ステップS12において、矩形領域を選択し、ステップS13において、三角形との重なりの判定を行い、ステップS14において、三角形と重なるか否かの判断を行う。ステップS14の判断がNoの場合には、ステップS11に戻り、ステップS14の判断がYesの場合には、ステップS15において、矩形領域に対して描画を行い、ステップS11に戻る。
矩形領域と三角形との重なりの判定は図6に示したフローに沿って行う。
初めに三角形のエッジ関数の係数を得る。そして、それぞれのエッジ関数についてfi(C) ≧ −D[fi] = −|ai|w −|bi|hとなるかを確認する。ここで、C は矩形領域の中心の点とする。すべてのエッジ関数について不等式が成り立てば、矩形領域は三角形と重なると判定する。そうでない場合、つまり、少なくとも一つのエッジ関数について不等式が成り立たなければ、矩形領域と三角形は重ならないと判定する。
図6に沿って説明すると、ステップ20において、エッジ関数f、f、fをロードする。ステップS21において、f0(C)>=−|a0|w−|bo|hか否かを判断する。ステップS21の判断がNoの場合には、処理対象の矩形領域は三角形の外であると判断する。ステップS21の判断がYesの場合には、ステップS22に進む。ステップS22において、f(C)>=−|a|w−|b|hか否かを判断する。ステップS22の判断がNoの場合には、処理対象の矩形領域は三角形の外であると判断する。ステップS22の判断がYesの場合には、ステップS23に進む。ステップS23において、f(C)>=−|a|w−|b|hか否かを判断する。ステップS23の判断がNoの場合には、処理対象の矩形領域は三角形の外であると判断する。ステップS23の判断がYesの場合には、領域は三角形と重なると判断する。
「線分の描画」
本節では、矩形領域と直線との重なりの判定を用いたOpenGL での線分の描画を実施した例を示す。OpenGL での描画において、あるピクセルが線分により描画されるか否かを判定するためにはDiamond−Exit ルールと呼ばれる判定を行う。この判定では描画対象の線分がピクセルのダイヤモンド領域を交差するか否かを判定する。ただし、ダイヤモンド領域内に線分の終点が含まれている場合は、その線分は描画しない。
ここで、ピクセルの中心の座標を(xd, yd) としたとき、ダイヤモンド領域RD は以下のように定義する。
RD = {(x, y) | |x − xd| + |y − yd| <1/2}
ピクセルとダイヤモンド領域の関係を図7に示す。
ピクセルのダイヤモンド領域は正方形であるが、辺が座標軸に対して45 °傾いている。そのため、<座標軸に対して傾いた矩形領域と直線との判定>で示した方法で判定を行う。
傾いた矩形領域と直線との重なりの判定を行うためには、座標軸を矩形領域の辺に対して平行になるように変換し、その座標軸におけるエッジ関数の係数a′, b′ を求めて、D[f] = |a′|w +|b′|h との比較を行う。ここで座標系の変換の行列M は、
また、エッジ関数の係数に対する変換行列M−1 は次の通りである。
したがって、係数の変換は次の通りとなる。
a′ =√2/2・(a − b)
b′ =√2/2・(a + b)
矩形の幅と高さがそれぞれ
√2/4 であることからD[f] の変換であるD[f′] は以下のように表すことができる。
D[f′] = |a′|w + |b′|h
=√2/2・|a − b|√2/4+√2/2・|a + b|√2/4
=1/4・(|a −b| + |a + b|)
これより、中心座標が(xd, yd)であるピクセルと直線f(x, y) = 0とがダイヤモンド領域で重なるか否かの判定を次のように表すことができる。
・f(xd, yd) ≦ −D[f'] もしくは f(xd, yd) ≧ D[f'] の場合、直線はダイヤモンド領域と交差しない
・−D[f'] < f(xd, yd) < D[f'] の場合、直線はダイヤモンド領域と交差する
この判定と端点に対する判定処理を加えれば線分の描画を行うことができる。
図8に本発明の実施形態に従った描画装置全体のブロック図を示す。
描画装置は、入力から描画コマンドを得て、そのコマンドの内容に従って三次元プリミティブを描画し、その結果を画像イメージとして出力する。
入力インターフェース20では、外部から与えられる描画コマンドを描画装置に受け渡す。描画コマンドは動作指定部とデータ部からなり、データ部では下記に示す種類のデータが指定可能である。
・頂点データ
・描画装置の状態
頂点データとは、描画するオブジェクトの個々の頂点の座標と属性をまとめたものである。頂点の属性には、色、テクスチャ座標、法線ベクトルなどを指定することができる。頂点データは次のブロックの頂点処理部23に渡される。
描画装置の状態とは、描画装置の処理の方法を決定するものである。これには、座標変換に用いる行列の値や、光源の位置、ピクセル変換時のアルファブレンディング(AとBのアルファブレンディングとは、0以上1以下のパラメータをαとして、A・α+B・(1−α)とすることである)のオン、オフの設定、テクスチャデータなどが含まれる。描画装置の状態はすべて、制御装置21を介して描画装置の内部メモリ22に格納される。描画装置の状態とは、描画装置の「設定」と考えてもよい。
頂点処理部23では、入力インターフェース20で与えられたそれぞれの頂点に対し、予め描画装置に与えられている状態に基づいて座標変換を行い、出力先であるディスプレイ上での頂点の位置と深度を算出する。また、特別な用途の為に属性値を用いた計算を行うことがある。たとえば、照光処理では、描画装置の状態として設定された光源の位置と、頂点の属性として設定された法線ベクトルから、その頂点での光の反射率を計算する。この反射率を用いて光の陰影を表現することが可能となる。
ラスタライズ処理24では、前ブロックの頂点処理で得られた頂点の情報をもとに、描画すべきプリミティブが覆う画像メモリの画素、すなわち描画すべき画素の位置と、その描画すべき画素を塗りつぶすパラメータを求める。ラスタライズ処理は描画するプリミティブの種類により処理内容が異なる。プリミティブが三角形であれば三角形の描画処理を行い、凸n角形であれば、凸n角形の描画処理を行う。画素を塗りつぶすパラメータとは、一般には色であるが、その他にもテクスチャ座標を与えることもある。それぞれの描画すべき画素に塗りつぶされる色は次のブロックのピクセル処理で決定される。
ピクセル処理部25では、前のブロックの処理で、それぞれの描画すべき画素に与えられるパラメータをもとに、実際に描画する色を決定する。パラメータとして色が与えられている場合は、その色を出力するが、テクスチャ座標とテクスチャデータが与えられている場合は、対応するテクセル(テクスチャの値)を読みだして出力する。また、アルファブレンディングが
有効であれば、出力先の色と出力する色との混合処理も行う。
ピクセル処理された画像は、画像メモリ26に格納される。
<凸n角形の描画>
凸n角形は三角形と同様に、すべてのエッジ関数の値が正になる領域として指定することができ、凸n角形の内部の点はすべてのエッジ関数の値が正になる点である、とすることができる。三角形との違いは、評価すべきエッジ関数の数が3からnに増えたことである。
したがって、矩形領域と凸n角形との重なりの判定方法は、以下のステップを踏む。
(1)凸n角形のバウンディング領域を算出し、その内部にある矩形領域を得る
(2)(1)で得られた矩形領域に対し、凸n角形を定義するn個のエッジ関数fi (i = 0,
1, ..., n−1) に対し、fi[D] >= − w|ai| − h|bi| ならば、矩形領域は凸n角形と重なると判定する。そうでないならば、矩形領域と重ならないと判定する。
図9は、凸n角形を描画する本実施形態の描画装置のブロック構成図である。
凸n角形の頂点データは、バウンディング領域作成部10aとエッジ作成部13aに入力される。バウンディング領域作成部10aでは、頂点データで示される凸n角形に外接する、画面の座標軸と平行な辺を持つ矩形領域を作成する。エッジ作成部13aでは、頂
点データから、凸n角形のエッジ関数を作成する。バウンディング領域作成部10aで作成されたバウンディング領域(矩形領域)の情報は、矩形領域選択部11aに渡される。矩形領域選択部11aでは、バウンディング領域に含まれる、描画単位の矩形を特定し、その領域のパラメータを算出する。描画単位の矩形の中心座標は、矩形領域評価部12aに入力される。矩形領域評価部12aには、エッジ作成部13aからエッジのパラメータが入力され、描画単位の矩形領域が凸n角形と重なるか否かの判定が行われる。描画処理部14aには、矩形領域選択部11aから領域のパラメータが、矩形領域評価部12aからは、凸n角形と描画単位の矩形領域が重なるか否かの評価結果が、エッジ作成部13aからはエッジのパラメータが入力され、描画単位の矩形領域を描画する処理が行われる。
図10に凸n角形の描画処理全体のフローを示す。
ステップS30において、凸n角形のバウンディング領域を得る。ステップS31において、バウンディング領域内のすべての矩形領域を処理したか否かを判断する。ステップS31の判断がYesの場合には、描画処理を終了する。ステップS31の判断がNoの場合には、ステップS32において、矩形領域を選択し、ステップS33において、凸n角形との重なりの判定を行い、ステップS34において、凸n角形と重なるか否かの判断を行う。ステップS34の判断がNoの場合には、ステップS31に戻り、ステップS34の判断がYesの場合には、ステップS35において、矩形領域に対して描画を行い、ステップS31に戻る。
矩形領域と凸n角形との重なりの判定は図11に示したフローに沿って行う。
ステップS41において、あるエッジについてエッジ関数fiをロードし、ステップS42において、処理中のエッジについて、fi(C)>=−|ai|w−|bi|hが成り立つか否かを判断する。ステップS42の判断がNoの場合には、矩形領域は凸n角形の外であると判断する。ステップS42の判断がYesの場合には、ステップS40において、すべてのエッジについて判定したか否かが判断され、Noの場合には、ステップS41に進み、Yesの場合には、矩形領域は、凸n角形と重なると判断する。
<線分の描画>
線分の描画も、三角形や凸n角形の描画と同様に、初めにバウンディング領域を得てから、その内部に含まれる描画可能なピクセルについて線分とピクセルとの重なりの判定を行う。
線分とピクセルのダイヤモンド領域との判定方法が、三角形や凸n角形とは異なる定数D[f']を用いるため、その計算も行う必要がある。
本実施形態のピクセルと線分との交わりの判定方法を用いて、線分を描画する場合、次のような手順を踏めば良い。
(1)線分のバウンディング領域を得る。線分の端点が(x1, y1), (x2, y2)であれば、バウンディング領域は、(min(x1, x2), min(y1, y2), max(x1, x2), max(y1, y2))となる。(2)バウンディング領域内から描画可能なピクセルを選択し、ピクセルと線分との重なりの判定を行う。ピクセルと線分が重なるのであれば描画処理を行う。
(3)(2)の処理を描画可能なピクセルが存在しなくなるまで続ける。
図12は、線分を描画する本実施形態の描画装置のブロック構成図である。
線分の頂点データは、バウンディング領域作成部10bとエッジ作成部13bに入力される。バウンディング領域作成部10bでは、頂点データで示される線分に外接する、画面の座標軸と平行な辺を持つ矩形領域を作成する。エッジ作成部13bでは、頂点データから、線分のエッジ関数と前述のD[f']を作成する。バウンディング領域作成部10bで作成されたバウンディング領域(矩形領域)の情報は、矩形領域選択部11bに渡される。矩形領域選択部11bでは、バウンディング領域に含まれる、描画単位の矩形を特定し、その領域のパラメータを算出する。描画単位の矩形の中心座標は、矩形領域評価部12bに入力される。矩形領域評価部12bには、エッジ作成部13bからエッジのパラメータが入力され、描画単位の矩形領域が線分と重なるか否かの判定が行われる。描画処理部14bには、矩形領域選択部11bから領域のパラメータが、矩形領域評価部12bからは、線分と描画単位の矩形領域が重なるか否かの評価結果が、エッジ作成部13bからはエッジのパラメータが入力され、描画単位の矩形領域を描画する処理が行われる。
図13に線分の描画処理全体のフローを示す。
ステップS50において、線分のバウンディング領域を得る。ステップS51において、バウンディング領域内の描画可能なすべてのピクセルを処理したか否かを判断する。ステップS51の判断がYesの場合には、描画処理を終了する。ステップS51の判断がNoの場合には、ステップS52において、ピクセルを選択し、ステップS53において、線分との重なりの判定を行い、ステップS54において、線分と重なるか否かの判断を行う。ステップS54の判断がNoの場合には、ステップS51に戻り、ステップS54の判断がYesの場合には、ステップS55において、ピクセルの描画を行い、ステップS51に戻る。
以上の実施形態によれば、矩形領域の中心の点のエッジ関数のみで、矩形領域と直線や三角形との判定が可能となるため、判定に要する時間やコストが従来行われてきた手法に比較しての4 分の1 となることがわかった。
以上の実施形態のほかに、以下の付記を開示する。
(付記1)
矩形領域と図形との重なった部分を描画する描画装置であって、
a、b、cを定数として、該図形を表現する、変数(x、y)についての1以上の直線の式f(x, y) = ax + by + c = 0を設定する図形設定手段と、
該図形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定する矩形領域設定手段と、
D[f] = |a|w + |b|hとして、−D[f] < f(xd, yd) < D[f] ならば、該図形と該矩形領域が重なり、f(xd, yd) ≦ −D[f]、もしくは、D[f] ≦ f(xd, yd) ならば重ならないと判定する判定手段と、
該図形と該矩形領域が重なる場合に、該矩形領域を描画する描画手段と、
を備えることを特徴とする描画装置。
(付記2)
前記矩形領域の辺が座標軸と平行でない場合に、座標軸を、該矩形領域の辺が座標軸に平行となるように回転変換する回転変換手段を更に備えることを特徴とする付記1に記載の描画装置。
(付記3)
前記図形は、直線であることを特徴とする付記1に記載の描画装置。
(付記4)
前記図形は、三角形であることを特徴とする付記1に記載の描画装置。
(付記5)
矩形領域と凸n角形との重なった部分を描画する描画装置であって、
i、bi、ci(iは整数)を定数として、該凸n角形を表現する、変数(x、y)についての1以上のエッジ関数の式fi(x, y) = aix + biy + ci= 0を設定する凸n角形設定手段と、
該凸n角形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定する矩形領域設定手段と、
該凸n角形に外接する四角形領域であるバウンディング領域を設定するバウンディング領域設定手段と、
D[fi] = |ai|w + |bi|hとして、該矩形領域がバウンディング領域の外部に存在すれば重ならないとし、少なくとも一つのfiについて、fi(xd, yd) < −D[fi]となれば重ならないと判定し、矩形領域と凸n 角形の境界領域が重なり、すべてのエッジ関数についてfi(xd, yd) ≧ −D[fi] となれば、重なると判定し、すべてのエッジ関数についてfi(xd, yd)
≧ D[fi] となれば、矩形領域内のすべての点は対象の凸n 角形に含まれると判定する判定手段と、
該凸n角形と該矩形領域が重なる、あるいは、該矩形領域が該凸n角形に含まれる場合に、該矩形領域を描画する描画手段と、
を備えることを特徴とする描画装置。
(付記6)
矩形領域と図形との重なった部分を描画する描画方法であって、
a、b、cを定数として、該図形を表現する、変数(x、y)についての1以上の直線の式f(x, y) = ax + by + c = 0を設定し、
該図形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定し、
D[f] = |a|w + |b|hとして、−D[f] < f(xd, yd) < D[f] ならば、該図形と該矩形領域が重なり、f(xd, yd) ≦ −D[f]、もしくは、D[f] ≦ f(xd, yd) ならば重ならないと判定し、
該図形と該矩形領域が重なる場合に、該矩形領域を描画する、
ことを特徴とする描画方法。
(付記7)
矩形領域と凸n角形との重なった部分を描画する描画方法であって、
i、bi、ci(iは整数)を定数として、該凸n角形を表現する、変数(x、y)についての1以上のエッジ関数の式fi(x, y) = aix + biy + ci= 0を設定し、
該凸n角形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定し、
該凸n角形に外接する四角形領域であるバウンディング領域を設定し、
D[fi] = |ai|w + |bi|hとして、該矩形領域がバウンディング領域の外部に存在すれば重ならないとし、少なくとも一つのfiについて、fi(xd, yd) < −D[fi]となれば重ならないと判定し、矩形領域と凸n 角形の境界領域が重なり、すべてのエッジ関数についてfi(xd, yd) ≧ −D[fi] となれば、重なると判定し、すべてのエッジ関数についてfi(xd, yd)
≧ D[fi] となれば、矩形領域内のすべての点は対象の凸n 角形に含まれると判定し、
該凸n角形と該矩形領域が重なる、あるいは、該矩形領域が該凸n角形に含まれる場合に、該矩形領域を描画する、
ことを特徴とする描画方法。
(付記8)
矩形領域と図形との重なった部分を描画する描画方法をコンピュータに実現させるプログラムを格納した記録媒体であって、
a、b、cを定数として、該図形を表現する、変数(x、y)についての1以上の直線の式f(x, y) = ax + by + c = 0を設定し、
該図形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定し、
D[f] = |a|w + |b|hとして、−D[f] < f(xd, yd) < D[f] ならば、該図形と該矩形領域が重なり、f(xd, yd) ≦ −D[f]、もしくは、D[f] ≦ f(xd, yd) ならば重ならないと判定し、
該図形と該矩形領域が重なる場合に、該矩形領域を描画する、
ことをコンピュータに実現させるプログラムを格納した記録媒体。
(付記9)
矩形領域と凸n角形との重なった部分を描画する描画方法をコンピュータに実現させるプログラムを格納した記録媒体であって、
i、bi、ci(iは整数)を定数として、該凸n角形を表現する、変数(x、y)についての1以上のエッジ関数の式fi(x, y) = aix + biy + ci= 0を設定し、
該凸n角形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定し、
該凸n角形に外接する四角形領域であるバウンディング領域を設定し、
D[fi] = |ai|w + |bi|hとして、該矩形領域がバウンディング領域の外部に存在すれば重ならないとし、少なくとも一つのfiについて、fi(xd, yd) < −D[fi]となれば重ならないと判定し、矩形領域と凸n 角形の境界領域が重なり、すべてのエッジ関数についてfi(xd, yd) ≧ −D[fi] となれば、重なると判定し、すべてのエッジ関数についてfi(xd, yd)
≧ D[fi] となれば、矩形領域内のすべての点は対象の凸n 角形に含まれると判定し、
該凸n角形と該矩形領域が重なる、あるいは、該矩形領域が該凸n角形に含まれる場合に、該矩形領域を描画する、
ことをコンピュータに実現させるプログラムを格納した記録媒体。
本発明の実施形態に従った、矩形領域が三角形と重なるか否かの判定の例を示す図である。 判定方法の証明を説明する図である。 x−y 座標に対して傾いた矩形領域と直線を示す図である。 本実施形態の描画装置のブロック構成図である。 三角形描画処理全体のフローを示す図である。 矩形領域と三角形との重なりの判定のフローである。 ピクセルとダイヤモンド領域の関係を示す図である。 本発明の実施形態に従った描画装置全体のブロック図を示す図である。 凸n角形を描画する本実施形態の描画装置のブロック構成図である。 凸n角形の描画処理全体のフローを示す図である。 矩形領域と凸n角形との重なりの判定のフローである。 線分を描画する本実施形態の描画装置のブロック構成図である。 線分の描画処理全体のフローを示す図である。 三角形による描画処理を説明する図である。 エッジ関数による判定方法の様子を示す図である。
符号の説明
10、10a、10b バウンディング領域作成部
11、11a、11b 矩形領域選択部
12、12a、12b 矩形領域評価部
13、13a、13b エッジ作成部
14、14a、14b 描画処理部

Claims (5)

  1. 矩形領域と図形との重なった部分を描画する描画装置であって、
    a、b、cを定数として、該図形を表現する、変数(x、y)についての1以上の直線の式f(x,y)=ax+by+c=0を設定する図形設定手段と、
    該図形と重なるか否かの判断対象である、中心座標が(xd,yd)、幅2w、高さ2hの該矩形領域を設定する矩形領域設定手段と、
    D[f]=|a|w+|b|hとして、−D[f]<f(xd,yd)<D[f]ならば、該図形と該矩形領域が重なり、f(xd,yd)≦−D[f]、もしくは、D[f]≦f(xd,yd)ならば重ならないと判定する判定手段と、
    該図形と該矩形領域が重なる場合に、該矩形領域を描画する描画手段と、
    を備えることを特徴とする描画装置。
  2. 前記矩形領域の辺が座標軸と平行でない場合に、座標軸を、該矩形領域の辺が座標軸に平行となるように回転変換する回転変換手段を更に備えることを特徴とする請求項1に記
    載の描画装置。
  3. 矩形領域と凸n角形との重なった部分を描画する描画装置であって、
    i、bi、ci(iは整数)を定数として、該凸n角形を表現する、変数(x、y)についての1以上のエッジ関数の式fi(x,y)=aix+biy+ci=0を設定する凸n角形設定手段と、
    該凸n角形と重なるか否かの判断対象である、中心座標が(xd,yd)、幅2w、高さ2hの該矩形領域を設定する矩形領域設定手段と、
    該凸n角形に外接する四角形領域であるバウンディング領域を設定するバウンディング領域設定手段と、
    D[fi]=|ai|w+|bi|hとして、該矩形領域がバウンディング領域の外部に存在すれば重ならないとし、少なくとも一つのfiについて、fi(xd,yd)<−D[fi]となれば重ならないと判定し、矩形領域と凸n角形の境界領域が重なり、すべてのエッジ関数についてfi(xd,yd)≧−D[fi]となれば、重なると判定し、すべてのエッジ関数についてfi(xd,yd)≧D[fi]となれば、矩形領域内のすべての点は対象の凸n 角形に含まれると判定する判定手段と、
    該凸n角形と該矩形領域が重なる、あるいは、該矩形領域が該凸n角形に含まれる場合に、該矩形領域を描画する描画手段と、
    を備えることを特徴とする描画装置。
  4. 矩形領域と図形との重なった部分を描画する画像描画装置の描画方法であって、
    該画像描画装置は、
    a、b、cを定数として、該図形を表現する、変数(x、y)についての1以上の直線の式f(x,y)=ax+by+c=0を設定し、
    該図形と重なるか否かの判断対象である、中心座標が(xd,yd)、幅2w、高さ2hの該矩形領域を設定し、
    D[f]=|a|w+|b|hとして、−D[f]<f(xd,yd)<D[f]ならば、該図形と該矩形領域が重なり、f(xd,yd)≦−D[f]、もしくは、D[f]≦f(xd,yd)ならば重ならないと判定し、
    該図形と該矩形領域が重なる場合に、該矩形領域を描画する、
    ことを特徴とする描画方法。
  5. 矩形領域と図形との重なった部分を描画する描画方法をコンピュータに実現させるプログラムを格納した記録媒体であって、
    該コンピュータに、
    a、b、cを定数として、該図形を表現する、変数(x、y)についての1以上の直線の式f(x,y)=ax+by+c=0を設定させ
    該図形と重なるか否かの判断対象である、中心座標が(xd, yd)、幅2w、高さ2hの該矩形領域を設定させ
    D[f]=|a|w+|b|hとして、−D[f]<f(xd,yd)<D[f]ならば、該図形と該矩形領域が重なり、f(xd,yd)≦−D[f]、もしくは、D[f]≦f(xd,yd)ならば重ならないと判定させ
    該図形と該矩形領域が重なる場合に、該矩形領域を描画させる
    ことをコンピュータに実現させるプログラムを格納した記録媒体。
JP2008239269A 2008-09-18 2008-09-18 描画装置 Expired - Fee Related JP5120174B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008239269A JP5120174B2 (ja) 2008-09-18 2008-09-18 描画装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008239269A JP5120174B2 (ja) 2008-09-18 2008-09-18 描画装置

Publications (2)

Publication Number Publication Date
JP2010072917A JP2010072917A (ja) 2010-04-02
JP5120174B2 true JP5120174B2 (ja) 2013-01-16

Family

ID=42204640

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008239269A Expired - Fee Related JP5120174B2 (ja) 2008-09-18 2008-09-18 描画装置

Country Status (1)

Country Link
JP (1) JP5120174B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2343598B (en) * 1998-11-06 2003-03-19 Videologic Ltd Image processing apparatus
US6359623B1 (en) * 1998-11-12 2002-03-19 Hewlett-Packard Company Method and apparatus for performing scan conversion in a computer graphics display system
JP4064339B2 (ja) * 2003-12-19 2008-03-19 株式会社東芝 描画処理装置、描画処理方法および描画処理プログラム
JP2006323780A (ja) * 2005-05-20 2006-11-30 Canon Inc 画像処理装置、画像処理方法
KR100793990B1 (ko) * 2006-09-18 2008-01-16 삼성전자주식회사 타일 기반 3차원 렌더링에서의 조기 z 테스트 방법 및시스템

Also Published As

Publication number Publication date
JP2010072917A (ja) 2010-04-02

Similar Documents

Publication Publication Date Title
US10102663B2 (en) Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
KR102122454B1 (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
US9886792B2 (en) Adaptive mesh refinement
KR102276909B1 (ko) 렌더링 방법 및 장치
US10140750B2 (en) Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
US9530241B2 (en) Clipping of graphics primitives
KR20160003223A (ko) 그래픽 파이프라인을 사용한 2 차원 곡선의 테셀레이션
KR102443697B1 (ko) 경로 스트로크를 수행하는 방법 및 장치
US20210287418A1 (en) Graphics processing unit render mode selection system
CN111260750B (zh) openFL绘制矢量图形的处理方法、装置及电子设备
US20150015574A1 (en) System, method, and computer program product for optimizing a three-dimensional texture workflow
KR20180039479A (ko) 그래픽 처리 장치 및 방법
JP6294700B2 (ja) 画像処理装置及び画像処理方法
US10937233B2 (en) Graphics processing systems
KR102426669B1 (ko) 경로 렌더링을 수행하는 방법 및 장치.
KR20180037839A (ko) 그래픽스 프로세싱 장치 및 인스트럭션의 실행 방법
JP5120174B2 (ja) 描画装置
EP3211598B1 (en) System and method for accelerated rendering of two-dimensional graphics
US11989807B2 (en) Rendering scalable raster content
KR102116976B1 (ko) 렌더링 방법 및 장치
JP5956875B2 (ja) 画像処理装置、画像処理方法
JP5151946B2 (ja) 描画装置
KR20150042095A (ko) 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
US11776179B2 (en) Rendering scalable multicolored vector content
WO2012114386A1 (ja) 画像ベクトル化装置、画像ベクトル化方法及び画像ベクトル化プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110613

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120703

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120903

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120925

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121008

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151102

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees