JP2005352657A - 描画処理装置、描画処理方法、及び描画処理プログラム - Google Patents

描画処理装置、描画処理方法、及び描画処理プログラム Download PDF

Info

Publication number
JP2005352657A
JP2005352657A JP2004171258A JP2004171258A JP2005352657A JP 2005352657 A JP2005352657 A JP 2005352657A JP 2004171258 A JP2004171258 A JP 2004171258A JP 2004171258 A JP2004171258 A JP 2004171258A JP 2005352657 A JP2005352657 A JP 2005352657A
Authority
JP
Japan
Prior art keywords
edge
bounding box
line segment
vertex
scanning
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.)
Granted
Application number
JP2004171258A
Other languages
English (en)
Other versions
JP4199159B2 (ja
Inventor
Yasuyuki Kokojima
快行 爰島
Yosuke Bando
洋介 坂東
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004171258A priority Critical patent/JP4199159B2/ja
Priority to US11/147,326 priority patent/US7414636B2/en
Publication of JP2005352657A publication Critical patent/JP2005352657A/ja
Priority to US12/105,406 priority patent/US20080211806A1/en
Application granted granted Critical
Publication of JP4199159B2 publication Critical patent/JP4199159B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/30Clipping

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

【課題】 描画プリミティブである線分の一方の頂点が視点より後方にあるか否かに関わらず、統一的にラスタライズすることができる描画装置を提供すること。
【解決手段】 描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを取得し、ピクセルが線分の投影領域(平行四辺形)の内側に存在するか否かを判定するためのエッジ係数を計算し、二つの頂点のうち少なくとも一方の頂点データとエッジ係数とから、投影領域のバウンディングボックスを計算し、エッジ係数の組み合わせに基づいて投影領域を分類して、当該分類に応じてバウンディングボックスの走査開始点及び走査進行方向を決定し、走査開始点に対応するピクセルのエッジ関数値を初期値としてDDA処理を実行することで、ラスタライズ処理のためのセットアップデータを生成する。
【選択図】 図17

Description

本発明は、三次元コンピュータグラフィックス(三次元CG)画像の描画処理を行う描画処理装置、描画処理方法、及び描画処理プログラムに関するものであり、特に描画プリミティブが視点後方の頂点を持つ線分を含む場合におけるラスタライズ処理に関する。
三次元CGとは、モデリングによってコンピュータ内の仮想三次元空間に各種オブジェクトを記述・配置し、当該空間に設定された視点からこれらがどのように見えるのかを、二次元画面に描画する技術である。
特に、二次元画面に描画する技術はレンダリング(描画)処理と呼ばれ、視点と光源の設定、所定の座標変換、隠面消去、シャドウイング等、ビューポート変換、アンチエイリアシング等を行うものである。この様なレンダリング処理を高速に実行し、リアルタイムにて画像を描画可能な装置は、リアルタイムCG装置と呼ばれる。
このレンダリング処理においては、描画するピクセルが描画プリミティブの内側にあるかどうかを判定する必要がある。そのため、描画プリミティブの形状を線形関数の組で表現し、例えば次の様な計算が実行される。
すなわち、例えば描画プリミティブが三角形の場合、式(1)のような3つの線形関数の組で三角形の形状を表す。
A0(X,Y) = a0×(X - X0) + b0×(Y - Y0)
A1(X,Y) = a1×(X - X1) + b1×(Y - Y1) (1)
A2(X,Y) = a2×(X - X2) + b2×(Y - Y2)
ここで(X,Y)はピクセルのウィンドウ座標(描画領域に設定された二次元座標系における座標)、(X0,Y0),(X1,Y1),(X2,Y2)は三角形の頂点のウィンドウ座標、a0,b0,a1,b1,a2,b2は定数である。これらの線形関数はエッジ関数と呼ばれ、ビューポート(描画領域)上のピクセルを三角形の内側、辺上、外側の3つの領域に分類する。エッジ関数の値が0より大きいピクセルは三角形の内側、ちょうど0のピクセルは辺上、0より小さいピクセルは外側にあることを意味する。
従って、ラスタライズ処理において、3辺のエッジ関数の値がすべて0より大きいかどうかを調べることにより、ピクセルが三角形の内側にあるかどうかを判定することができる。なお、エッジ関数の係数a0,b0,a1,b1,a2,b2は、次の式(2)により計算できる。
a0 = Y0 - Y1
b0 = X1 - X0
a1 = Y1 - Y2 (2)
b1 = X2 - X1
a2 = Y2 - Y0
b2 = X0 - Y2
ただし、三角形の頂点(X0,Y0),(X1,Y1),(X2,Y2)はビューポート上で反時計周りに並んでいるものとする。
上記の計算手順をハードウェアに実装する際には、DDA(Digital Differential Analysis)と呼ばれる方法がよく使われる。DDAでは、開始ピクセルにおけるエッジ関数の初期値のみを式(1)により計算し、その初期値にエッジ関数の係数a0,b0,a1,b1,a2,b2を次々と足し合わせていくことにより、隣接するピクセルのエッジ関数の値を求めていく。また、DDAは、頂点パラメータを補間してピクセルのパラメータを計算する処理においてもよく使用される。このDDAの内容を説明すると、次のようである。
最初に、開始ピクセル(X,Y)におけるパラメータの初期値を式(3)のパラメータ関数により計算する。
P(X,Y) = a×X + b×Y + c (3)
ここで(X,Y)はピクセルのウィンドウ座標、a,b,cはパラメータ関数の係数である。描画プリミティブが三角形の場合、係数a,b,cは式(4)の連立線形方程式を解くことにより計算できる。
a×X0 + b×Y0 + c = p0
a×X1 + b×Y1 + c = p1 (4)
a×X2 + b×Y2 + c = p2
ここで、(X0,Y0),(X1,Y1),(X2,Y2)は三角形の頂点のウィンドウ座標、p0,p1,p2は対応する頂点の任意の属性を表すパラメータ値である。係数a,b,cはパラメータの種類ごとに計算する必要がある。
DDAでは、式(4)で計算した係数a,bを式(3)で計算した初期値に次々と足し合わせていくことにより、隣接するピクセルのパラメータを求めていく。こうすることで、ピクセルが描画プリミティブの内側にあるかどうかを判定する判定処理と、頂点パラメータを補間してピクセルのパラメータを求める補間処理とを行うこができる。
ところで、DDAにおける上記判定処理と補間処理とを効率良く進めるためには、処理対象のピクセルをできるだけ無駄なく選び出すことが重要である。そのため、処理対象のピクセルを効率良く走査するための方法がいくつか考案されている。
最も一般的なのは、スタンプなどと呼ばれる矩形領域単位で走査する方法である。スタンプは、ラスタライズ処理において1サイクルに並列処理するピクセルをまとめた矩形領域である。例えば、特許文献2の図13のようにスタンプの大きさが8×8ピクセルの場合は、ラスタライズ処理において1サイクルの間に64個のピクセルの並列処理を行し、これをサイクル毎に移動させてビューポート上を走査し、ピクセルデータを生成していく。
図特許文献2の図26−1には、矩形状のスタンプを利用した、三角形の描画プリミティブの走査順序が示されている。この図から分かるように、まず、スタンプをビューポートのX軸方向に沿ったライン上で移動させ、1ラインの走査を行う。当該ラインの走査が終了した後、スタンプをY軸方向に移動して次のラインに沿って移動させ、これを順次繰り返すことにより、ピクセルデータを生成する。
また、描画プリミティブが線分の場合は、線分をマイナー軸方向にdピクセル膨らませた平行四辺形を走査する。マイナー軸とは、X軸とY軸のうち、線分の投影後の長さが短い方の軸のことである。これに対して長い方の軸をメジャー軸と呼ぶ。dの値は通常1.0とされるが、この値を大きくすることによって太い線分を描画することができる。この平行四辺形について、三角形の場合と同様にスタンプ単位で走査を実行する。これにより、ピクセルが平行四辺形の内側に入るかどうかを判定する判定処理と、頂点パラメータを補間してピクセルのパラメータを求める補間処理を実行することができる。
以上述べた従来の判定処理及び補間処理は、モデリングされた三次座標系での描画プリミティブの頂点をウィンドウ上に投影して得られる座標(ウィンドウ座標)を用いて実行される。
ところが、描画プリミティブが視点後方の頂点を含む場合、その頂点はウィンドウ上に投影されないためウィンドウ座標をもたない。一般に、このような描画プリミティブをラスタライズする際には、あらかじめ図21、図22のように描画プリミティブを近クリップ面で切断し、ビューポート上に投影される部分と投影されない部分に分割しておく。そして、ビューポート上に投影される部分のみを用いて、上記判定処理及び補間処理を実行する。
このような描画プリミティブをクリップ面で分割する処理はクリッピングと呼ばれる。このクリッピングは複雑かつ処理量が多い。そのため、専用ハードウェアを必要とする場合が多く、高コストとなる可能性がある。これを解決する技術として、クリッピングを必要としないラスタライズ方法がいくつか考案されている(例えば、特許文献1、非特許文献1参照)。
上記クリッピングを必要としないラスタライズ方法を実行するためには、走査の開始点を効率よく探索する方法が新たに必要となる。そこで、本発明者らは、視点後方の頂点を含む三角形の投影像を頂点の同次座標を用いて分類し、その分類結果に応じて走査の開始点を決定する技術を考案している(例えば、特許文献2参照)。
しなしながら、この技術は、描画プリミティブが三角形であることを前提としており、線分などの他の描画プリミティブについては考慮されていない。
US 6,504,542 B1 特願2003−423797号 Marc Olano and Trey Greer, "Triangle Scan Coversion Using 2D Homogeneous Coordinates", 1997, SIGGRAPH/Eurographics Workshop.
本発明は、上記事情を鑑みてなされたもので、描画プリミティブが線分であっても、当該線分の一方の頂点が視点より後方にあるか否かに関わらず、描画プリミティブが三角形等である場合と同様の手法にて統一的にラスタライズすることができる描画装置、描画方法、描画プログラムを提供することを目的としている。
本発明は、上記目的を達成するため、次のような手段を講じている。
本発明の第1の視点は、基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることによってピクセルデータを生成し三次元グラフィックス画像を描画する描画装置であって、前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力するための頂点入力手段と、ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算するためのバウンディングボックス計算手段と、前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する決定手段と、前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成するトラバース手段と、を具備することを特徴とする描画装置である。
本発明の第2の視点は、基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることによってピクセルデータを生成し三次元グラフィックス画像を描画するための描画方法であって、前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力し、ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算し、前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定し、前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成すること、を具備することを特徴とする描画方法である。
本発明の第3の視点は、コンピュータに、基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることピクセルデータを生成し三次元グラフィックス画像を描画する描画処理を実行させるための描画プログラムであって、前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力する入力機能と、ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算する計算機能と、前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する決定機能と、前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成する生成機能と、を実現させるための描画プログラムである。
以上本発明によれば、描画プリミティブが線分であっても、当該線分の一方の頂点が視点より後方にあるか否かに関わらず、描画プリミティブが三角形等である場合と同様の手法にて統一的にラスタライズすることができる描画装置、描画方法、描画プログラムを実現できる。
以下、本発明の実施形態を図面に従って説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
図1は、本実施形態に係るリアルタイムCG描画装置10のブロック構成図を示している。同図に示すように、本描画装置10は、頂点入力部11、頂点処理部12、ラスタライズ部13、ピクセル処理部17、描画メモリ部18を具備している。
頂点入力部11は、所定の記憶装置から、描画プリミティブの頂点データを入力する。
頂点処理部12は、頂点入力部11から入力された頂点データに対し、所定の座標変換等の演算を行う。
ラスタライズ部13は、頂点処理部2にて演算処理を受けた頂点データから、描画プリミティブ内部のピクセルデータを生成するラスタライズ処理を実行する。このラスタライズ部13に入力される頂点データ(すなわち、頂点処理部12から受け取るデータ)は、頂点の位置を表す頂点座標と、頂点の属性(例えば、カラー、テクスチャ座標等)を表す頂点パラメータから成る。ラスタライズ部3は、頂点座標を用いてピクセルが描画プリミティブの内側にあるかどうかを判定する判定処理と、頂点パラメータを補間してピクセルのパラメータを計算する補間処理を行う。
より具体的には、ラスタライズ部13は、図1に示すように、頂点データバッファ部14、セットアップ部15、トラバース部16を有している。頂点データバッファ部14は、頂点処理部12から入力される頂点データをバッファリングする。セットアップ部15は、頂点データバッファ部14から描画プリミティブの頂点データを取得し、これに基づいて上記判定処理等を実行して、ラスタライズに必要なセットアップデータを生成する。トラバース部16は、セットアップ部15から渡されるセットアップデータを用いて上記補間処理等を実行し、ピクセルデータを生成する。なお、セットアップ部15の構成及び機能については、後で詳しく説明する。
ピクセル処理部17は、ラスタライズ部13にて生成されたピクセルデータに対し、所定の演算を行う。
描画メモリ部18は、各ピクセル処理部17にて加工されたピクセルデータを記憶する。
(セットアップ部)
次に、セットアップ部15の構成及び機能について説明する。図2は、セットアップ部15の構成を示したブロック図である。同図に示すように、セットアップ部15は、エッジ関数の係数(エッジ係数)を計算するエッジ係数計算部150、描画プリミティブの投影像のバウンディングボックスを計算するバウンディングボックス計算部151、ピクセル走査の開始点と進行方向を決める開始点決定部152、開始ピクセルにおけるエッジ関数の値をDDAの初期値として計算するエッジ関数初期値計算部153を有している。
以下、各構成要素が実行する処理について説明する。なお、以下の説明は、描画プリミティブが線分である場合を対象としている。
(エッジ係数計算部によるエッジ計算)
まず、エッジ係数計算部150は、頂点データバッファ部31から描画プリミティブの頂点データを取得する。頂点データのデータ形式は例えば図3のようになる。同図に示すように、頂点データは、頂点の位置を表す頂点座標と、頂点の属性を表す頂点パラメータから構成されている。
ここで重要な点は、頂点座標は従来のようなウィンドウ座標ではなく、同次座標x,y,z,wで入力されることである。同次座標は、視点を原点とする座標(視点座標)に対して図4に示すような任意の射影行列とビューポート変換行列を乗算した後の座標である。描画プリミティブの頂点の位置はx,y,w成分で決まり、z成分はビューポート上に投影したときの奥行き値を求めるために使われる。
なお、すべての頂点のw成分が0より小さい描画プリミティブは、完全に視点より後ろ側にあることになる。従って、その後の処理をスキップして次の描画プリミティブの頂点データを取得してもよい。また頂点パラメータとしては、カラーR,G,B,A、テクスチャ座標s,t,r,q、フォグf、法線ベクトルNx,Ny,Nzなどが入力される。
次に、エッジ係数計算部150は、取得した描画プリミティブの頂点データに基づいて、エッジ関数の係数を計算する。その計算手順は、以下のようである。
一般に、ウィンドウ座標系におけるエッジ関数(直線の方程式)は式(5)で表される。
a×X + b×Y + c = 0 (5)
ここで、(X,Y)はビューポート上の任意の点のウィンドウ座標、a,b,cは定数である。(a,b)はウィンドウ座標系におけるエッジの法線ベクトルを意味する。ラスタライズ部3に入力される同次座標(x,y,w)とウィンドウ座標(X,Y)の関係は式(6)により表される。
X = Sm×(x/w) + W/2
Y = Sm×(y/w) + H/2 (6)
ここで、Smは最大スクリーンサイズの半分の値、W,Hはビューポートの幅と高さである。式(6)を式(5)に代入すると式(7)が得られる。
a×(Sm×(x/w) + W/2) + b×(Sm×(y/w) + H/2) + c = 0 (7)
式(7)の両辺にwを乗算して展開すると次式が得られる。
a×Sm×x + a×(W/2)×w + b×Sm×y + b×(H/2)×w + c×w = 0
この式を整理すると次式が得られる。
(a×Sm)×x + (b×Sm)×y + (a×(W/2) + b×(H/2) + c)×w = 0
ここで、a',b',c'を式(8)のようにおく。
a' = a×Sm
b' = b×Sm (8)
c' = a×(W/2) + b×(H/2) + c
すると、式(9)のように書ける。
a'×x + b'×y + c'×w = 0 (9)
式(9)は同次座標系x,y,wにおけるエッジ関数を表している。なお、式(9)の幾何学的意味については、後で詳しく説明する。式(8)より、同次座標系で計算したエッジ関数の係数a',b',c'からウィンドウ座標系のエッジ関数の係数a,b,cを次のように求められることが分かる。
a = a' / Sm
b = b' / Sm (10)
c = c' - (a×(W/2) + b×(H/2))
ただし係数cの変換については、式(5)のウィンドウ座標系のエッジ関数に代入するウィンドウ座標X,YをX-W/2,Y-H/2とずらしても同じことを実現できる。確認のため、式(5)にX-W/2,Y-H/2を代入してみると次式が得られる。
a×(X - W/2) + b×(Y - H/2) + c = 0
この式を整理すると式(11)が得られる。
a×X + b×Y + (c - (a×(W/2) + b×(H/2))) = 0 (11)
このように、エッジ関数に代入するウィンドウ座標X,YをX-W/2,Y-H/2とずらすことによって、式(10)の係数cの変換と同じことを実現できる。したがって、式(10)の同次座標系からウィンドウ座標系への変換は式(12)のように簡単化することができる。
a = a' / Sm
b = b' / Sm (12)
c = c'
なお、エッジ関数に代入するウィンドウ座標X,YをX-W/2,Y-H/2とずらすことは、ラスタライズ後の各ピクセルのウィンドウ座標X,YをX+W/2,Y+H/2とずらしても同じことである。
次に、式(9)の同次座標系のエッジ関数がもつ幾何学的な意味と、係数a',b',c'の計算方法について説明する。まず、係数a',b',c'の計算方法について述べる。式(9)をベクトル形式で書き直すと式(13)が得られる。
(a' b' c')・(x y w) = 0 (13)
ここで、・はベクトルの内積を表す。式(13)は(x,y,w)空間における視点(0,0,0)とエッジ上の2点を結んだ平面の方程式を表しており、(a' b' c')はその平面の法線ベクトルを表している。エッジの両端点の同次座標を(x0,y0,w0),(x1,y1,w1)とすると、平面の法線ベクトル(a' b' c')は式(14)により計算できる。
(a' b' c') = (x0 y0 w0)×(x1 y1 w1) (14)
ここで、×はベクトルの外積を表す。
式(14)に従ってエッジの両端点の同次座標から計算された法線ベクトル(a' b' c')を、式(12)を用いて変換することにより、ウィンドウ座標系のエッジ関数の係数a,b,cを求めることができる。
次に、式(9)の同次座標系のエッジ関数がもつ幾何学的な意味について述べる。式(14)を式(13)に代入すると式(15)が得られる。
((x0 y0 w0)×(x1 y1 w1))・(x y w) = 0 (15)
式(15)の左辺は、ベクトル(x0 y0 w0),(x1 y1 w1),(x y w)のスカラ三重積である。従って、その値はこれら3点と視点(0,0,0)を結ぶ三角錐の符号付き体積の6倍に等しい。
図5(a)、図5(b)は、(0,0,0),(x0 y0 w0),(x1 y1 w1)を底面とし、(x y w)を頂点とする三角錐を示した図である。式(15)の左辺に従って計算される三角錐の体積の符号は、任意の点(x,y,w)がエッジを境にして法線ベクトル(a' b' c')と同じ方向にある場合に正(図5(a)の場合)、逆方向にある場合に負(図5(b)の場合)になる。また、(x,y,w)がエッジ上にある場合に0になる。なお、同次座標系x,y,wは左手系であるため、法線ベクトル(a' b' c')の向きが通常とは逆になることに注意する。
すなわち、同次座標系のエッジ関数は三角錐の符号付き体積を表しており、その符号を判定することにより、頂点(x y w)に対応するビューポート上のピクセルをエッジの両側とエッジ上の3つの領域に分類することができる。
以上述べたエッジ係数の計算手順をまとめると、エッジ係数計算部150は、頂点処理部12から受け取った描画プリミティブの頂点に関する同次座標(x,y,w)から同次座標系のエッジ関数の係数a',b',c'を式(14)を用いて計算する。また、エッジ係数計算部150は、その値を式(12)を用いて変換することによってウィンドウ座標系のエッジ関数の係数a,b,cを求めている。
なお、このエッジ関数の係数a,b,cは、後述するようにトラバース部16において、ウィンドウ座標X,Yの点が描画プリミティブの内側にあるかどうかを判定する判定処理に用いられる。
また、エッジ係数計算部150は、バウンディングボックスのエッジ関数を計算する。ここで、バウンディングボックスとは、描画対象である描画プリミティブを包含する外接矩形領域のうち、最小のものを意味する。
一般に、線分のラスタライズでは、線分をマイナー軸方向にdピクセル膨らませた平行四辺形を走査する必要がある。本実施形態では、ピクセルが平行四辺形の2つの斜辺の内側にあるかどうかを判定する際にはエッジ関数を用い、一方、マイナー軸に平行となる上辺および下辺(あるいは左辺および右辺)の内側にあるかどうかを判定する際には平行四辺形のバウンディングボックスを用いる。後者のマイナー軸に平行となる上辺および下辺(あるいは左辺および右辺)については、斜辺をマイナー軸に沿って所定量平行移動させるものであり、その幾何学的情報は容易に把握することができる。そのため、エッジ係数計算部321では、平行四辺形の2つの斜辺のエッジ関数だけを計算し、上辺および下辺、あるいは左辺および右辺のエッジ関数は計算しない。
エッジ係数計算部150は、平行四辺形の2つの斜辺のエッジ関数を、式(14)で求めた線分そのもののエッジ関数の符号を調節してマイナー軸方向にd/2ピクセル平行移動することによって計算できる。同次座標系における平行四辺形の2つの斜辺のエッジ関数をa0',b0',c0'およびa1',b1',c1'とすると、符号の調節は式(16)のように表すことができる。
a0' = -a'
b0' = -b'
c0' = -c' (16)
a1' = a'
b1' = b'
c1' = c'
上記式(16)では、各斜辺に対応する2つのエッジ関数の係数符号が反対となるように設定している。これは、2つの斜辺に挟まれた領域のエッジ関数の値が正になるようにするためである。
次に、エッジ係数計算部150は、同次座標系のエッジ関数a0',b0',c0',a1',b1',c1'をウィンドウ座標系のエッジ関数a0,b0,c0,a1,b1,c1に変換する。同次座標系からウィンドウ座標系への変換は式(12)を用いて次のように行う。
a0 = a0' / Sm
b0 = b0' / Sm
c0 = c0'
a1 = a1' / Sm (17)
b1 = b1' / Sm
c1 = c1'
次に、エッジ係数計算部150は、2つの斜辺をマイナー軸方向にd/2ピクセル平行移動するために、エッジ関数の係数の定数項c0,c1に式(18)のような加算を行う。
c0 += fabs(dX×a0) + fabs(dY×b0)
c1 += fabs(dX×a0) + fabs(dY×b0) (18)
ここで、dX,dYの値は、メジャー軸がX軸の場合はdX=0,dY=d/2、メジャー軸がY軸の場合はdX=d/2,dY=0となる。また、fabs()は絶対値を返す関数を表す。この加算は2つの斜辺を法線と反対方向に平行移動させるため、斜辺に挟まれた領域のエッジ関数の値が正になる。
以上の計算手順をまとめたフローチャートを図6に示す。最初のステップS201では、式(14)により線分そのものの同次座標系のエッジ関数の係数を計算する。次のステップS202では、式(16)により符号を反対にした2つのエッジ関数の係数を計算する。ステップS203では、式(17)によりエッジ関数の係数を同次座標系からウィンドウ座標系に変換する。このように同次座標系を経由することにより、視点後方の頂点を含む線分でもクリッピングすることなくウィンドウ座標系のエッジ関数の係数を求められていることに注意する。最後のステップS204では、式(18)により2つのエッジ関数をマイナー軸方向にd/2ピクセル平行移動する。これにより、線分をマイナー軸方向にdピクセル膨らませた平行四辺形の2つの斜辺のエッジ関数を求めることができる。
(バウンディングボックス計算部によるバウンディングボックス計算処理)
次に、バウンディングボックス計算部151によって実行される、描画プリミティブのバウンディングボックス計算処理について説明する。なお、描画プリミティブが線分の場合には、バウンディングボックスは線分の投影像をマイナー軸方向に膨らませた平行四辺形の外接矩形になる。
一般に、バウンディングボックスは線分の両端の頂点のウィンドウ座標のXY成分の最小値と最大値を見つけることによって簡単に求めることができる。ところが、線分の一方の頂点が視点より後ろ側にある場合は、その頂点がウィンドウ上に投影されず、無限遠点となるため、バウンディングボックスを求めるための工夫が必要になる。そこで、本描画装置10では、バウンディングボックスを次の様にして求めている。
図7(a)、(b)は平行四辺形のバウンディングボックスを求める処理の手順を示したフローチャートである。図7(a)の最初のステップS301ではバウンディングボックスを初期化する。バウンディングボックスは左上隅の点のウィンドウ座標(Xmin,Ymin)と右下隅の点のウィンドウ座標(Xmax,Ymax)で表すことができる。ここでは(Xmin,Ymin)=(-W/2,-H/2),(Xmax,Ymax)=(W/2-1,H/2-1)と初期化する。なお、W,Hはビューポートの幅と高さである。
次に、ステップS302では、線分の一方の頂点(x0,y0,w0)のw成分が0より大きいかどうかを判定する。0より大きい場合はステップS303へ進み、0以下の場合は、当該一方の頂点は視点より後ろ側にあることになる。そのため、ステップS303〜S304をスキップしてステップS305へ進む。
次に、ステップS303では、式(6)によりウィンドウ座標(X0,Y0)を計算する。ステップS304では、計算したウィンドウ座標(X0,Y0)を(X,Y)、エッジ関数の係数a0,b0をa,bとおいてコーナー点を求める処理を実行する。この処理は、エッジ関数の傾き(係数)の組み合わせによって描画プリミティブとしての直線を分類し、この分類に応じて初期設定された値を修正することで、バウンディングボックスのコーナー点を決定するものである。
図7(b)は、コーナー点を求める処理の流れを示したフローチャートである。同図の最初のステップS401では、エッジ関数の係数aが0以上かつbが0以下であるかどうかを判定する。条件が成り立つ場合はステップS402へ進み、成り立たない場合はステップS402をスキップしてステップS403へ進む。
次に、ステップS402では、バウンディングボックスの左上隅のウィンドウ座標Xmin,Yminを更新する。dX,dYは式(18)のときと同じ値であり、メジャー軸がX軸の場合はdX=0,dY=d/2、メジャー軸がY軸の場合はdX=d/2,dY=0である。
次に、ステップS403では、エッジ関数の係数aが0以下かつbが0以上であるかどうかを判定する。条件が成り立つ場合はステップS404へ進み、成り立たない場合はステップS404をスキップしてステップS405へ進む。ステップS404では、バウンディングボックスの右下隅のウィンドウ座標Xmax,Ymaxを更新する。
次に、ステップS405では、エッジ関数の係数a,bが0より大きいかどうかを判定する。条件が成り立つ場合はステップS406へ進み、成り立たない場合はステップS406をスキップしてステップS407へ進む。ステップS406では、バウンディングボックスの右上隅のウィンドウ座標Xmax,Yminを更新する。
次に、ステップS407では、エッジ関数の係数a,bが0より小さいかどうかを判定する。条件が成り立つ場合はステップS408へ進み、成り立たない場合はステップS408をスキップして処理を終了する。ステップS408では、バウンディングボックスの左下隅のウィンドウ座標Xmin,Ymaxを更新する。
以上述べた図7(b)の処理は、式(16),(17)によって求めたエッジの法線(a,b)が、注目する頂点からもう一方の頂点に向かって左側へ向くという考察に基づいている。この処理の幾何学的な意味について、図8を用いて説明する。
すなわち、図7(b)のステップS401、S402は、図8(c)、(e)、(h)のように頂点がバウンディングボックスの左上隅のコーナー点になる場合の処理に相当する。また、図7(b)のステップS403、404は、図8(a),(f),(g)のように頂点がバウンディングボックスの右下隅のコーナー点になる場合の処理に相当する。同様に、図7(b)のステップS405、S406は、図8(d)のように頂点がバウンディングボックスの右上隅のコーナー点になる場合の処理に相当し、図7(b)のステップS407、S408は、図8(b)のように頂点がバウンディングボックスの左下隅のコーナー点になる場合の処理に相当する。
なお、a=b=0の場合は両端の頂点が一致するので、図7のステップS102のエッジ関数の係数計算後に処理を中止して次の線分の処理に移ってもよい。処理を中止しなかった場合でもバウンディングボックスの面積が0となり描画は行われないため、処理が破綻することはない。
図7(a)のフローチャートの説明に戻る。ステップS304の処理が終わると、次のステップS305では、線分のもう一方の頂点(x1,y1,w1)のw成分が0より大きいかどうかを判定する。0より大きい場合はステップS306へ進む。w成分が0以下の場合は、線分のもう一方の頂点(x1,y1,w1)は、視点後方に存在することになる。従って、ステップS306〜S307をスキップして処理を終了する。
次に、ステップS306では、式(6)によりウィンドウ座標(X1,Y1)を計算する。ステップS307では、計算したウィンドウ座標(X1,Y1)を(X,Y)、エッジ関数の係数a1,b1をa,bとおいて図7(b)のコーナー点を求める処理を実行する。
以上の処理ステップS301〜S307の各処理を終了したときの(Xmin,Ymin)が、バウンディングボックス左上隅の点のウィンドウ座標、(Xmax,Ymax)が右下隅の点のウィンドウ座標を表すことになる。
以上述べた図7(a)に従う、平行四辺形のバウンディングボックスを求める処理の幾何学的意味について、図7(a)、図9(a)、(b)を参照しながら説明する。図9(a)は、線分が視点前方にある場合(すなわち、線分の両頂点のw成分が正の場合)における、幾何学的意味を説明するための図である。
まず、ステップS301では、バウンディングボックスが初期化され、初期設定としてのバウンディングボックスが設定される。
次に、ステップS302〜S304では頂点のウィンドウ座標X0,Y0と対応するエッジ関数の係数a0,b0について図7(b)のコーナー点を求める処理を実行し、バウンディングボックスの右下隅のウィンドウ座標Xmax,Ymaxを更新する。
次に、ステップS305〜S307では、もう一方の頂点のウィンドウ座標X1,Y1と対応するエッジ関数の係数a1,b1について図7(b)のコーナー点を求める処理を実行し、バウンディングボックスの左上隅のウィンドウ座標Xmin,Yminを更新する。この結果、バウンディングボックスの左上隅の点(X1,Y1-d/2)と右下隅の点(X0,Y0+d/2)が計算される。
図9(b)は、線分の一方の頂点が視点前方にある場合(すなわち、線分の一方の頂点w成分が0以下の場合)における、幾何学的意味を説明するための図である。
まず、ステップS301では、バウンディングボックスが初期化され、初期設定としてのバウンディングボックスが設定される。
次に、ステップS302〜S304では、頂点のウィンドウ座標X0,Y0と対応するエッジ関数の係数a0,b0について図7(b)のコーナー点を求める処理を実行し、バウンディングボックスの右上隅のウィンドウ座標Xmax,Yminを更新する。
次に、ステップS305でw1≦0と判定されるので、ステップS306〜S307の処理はスキップされる。この結果、バウンディングボックスの左上隅の点(-W/2,Y0)と右下隅の点(X0+d/2,H/2-1)が計算される。
この様に、ステップS301において初期設定されたバウンディングボックスは、線分(の投影像をマイナー軸方向に膨らませた平行四辺形)のサイズに応じて、より小さなサイズに修正されることになる。従って、トラバース部16におけるピクセルデータ生成を、より効率的に実行することが可能となる。
特に、この手法によれば、線分の一方の頂点が視点後方にある場合には、視点前方にある他方の頂点を通過するマイナー軸に平行な直線、及び視点前方にある他方の頂点を通過するメジャー軸に平行な直線によって、初期設定されたバウンディングボックスを二つの領域に分割する。分割された領域のうち、線分を含まない方の領域が削除されるように、初期設定されたバウンディングボックスをより小さなサイズに修正する。従って、線分の一方の頂点が視点後方にある場合であっても、常に適切なバウンディングボックスを設定することができる。
(開始点決定部152による開始点及び進行方向決定処理)
次に、開始点決定部152によって実行される、走査の開始点の決定処理、及び走査の進行方向の決定処理について説明する。
一般に、3次元の線分の投影像は6種類の平行四辺形に分類することができる。従って、本描画装置10では、この分類に応じて走査の開始点と進行方向を決定する。
図10は3次元の線分の投影像である6種類の平行四辺形と、各平行四辺形における走査の開始点位置の候補をまとめたものである。図10(a)あるいは(b)のように平行四辺形が垂直あるいは水平な場合は、平行四辺形の四隅のどの点から走査を開始してもよい。また、図15(c)、(d)のように平行四辺形が左上(右下)へ傾いている場合は、平行四辺形の左上隅あるいは右下隅から走査を開始する。図15(e)、(f)のように平行四辺形が右上(左下)へ傾いている場合は、平行四辺形の右上隅あるいは左下隅から走査を開始する。
ところで、ラスタライズ部3に入力される3次元の線分が6種類の中のどの平行四辺形に投影されるかを知るためには、両端の頂点のウィンドウ座標のXY成分を大小比較すればよい。しかしながら、線分の一方の頂点が視点後方にある場合は、その頂点がウィンドウ上に投影されないため、ウィンドウ座標を大小比較することができない。そこで、本描画装置10では、バウンディングボックスを計算するときに求めたコーナー点を走査の開始点として選択する。
すなわち、例えば図9(a)の場合は、平行四辺形の右下隅のコーナー点と左上隅のコーナー点を求めているので、これらのどちらか一方の点を走査の開始点として選択する。また、図9(b)の場合は平行四辺形の右上隅のコーナー点を求めているので、この点を走査の開始点として選択する。このような方法によれば、線分の一方の頂点が視点後方にあるかどうかに関わらず、走査の開始点を求めることができる。
また、走査方向は、走査開始点に応じて決定される。すなわち、開始点が平行四辺形の左上隅ならば右下方向、開始点が左下隅ならば右上方向、開始点が右下隅ならば左上方向、開始点が右上隅ならば左下方向といった具合に、走査方向は、走査開始点から出発してバウンディングボックスの対角線方向に決定される。
図11〜図15は、3次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。いずれのパターンにおいても、候補とする(推奨する)走査開始点は、バウンディングボックスのコーナー点であって3次元の線分の投影像を膨らませた平行四辺形の頂点である位置となっている。また、走査方向は、開始点から出発してバウンディングボックスの対角線方向とする。
(エッジ関数初期値決定部153によるエッジ関数初期値決定処理)
走査の開始点と進行方向が決まると、エッジ関数初期値決定部153により、開始ピクセル(X,Y)におけるエッジ関数の値を式(5)を用いてDDAの初期値として計算し、既に計算されたエッジ係数やバウンディングボックスの値と共に、セットアップデータを生成する。
図16は、エッジ関数初期値決定部153において生成されたセットアップデータの一例を示している。セットアップ部15の後段に接続されたトラバース部16は、セットアップ部15からセットアップデータを入力し、初期値にエッジ関数の係数を次々と足し合わせていくDDA処理が実行し、各ピクセルのエッジ関数の値を求める。
(セットアップ部13による一連の処理)
図17は、セットアップ部13の動作の流れを示したフローチャートである。同図を参照しながら、セットアップ部13によって実行される一連の処理について説明する。なお、各ステップにおける各処理の詳細は、既に述べた通りである。
図17に示すように、まず、セットアップ部13は、頂点データバッファ部14から、図3に示したような形式からなる頂点データを取得する(ステップS101)。
次に、エッジ係数計算部150は、図6に示した手順により、描画プリミティブとしての線分そのものについての同次座標系のエッジ係数を計算し、これに基づいて当該エッジ係数のウィンドウ座標、及び線分をマイナー軸方向にdピクセル膨らませた平行四辺形の二つの斜辺に関するエッジ関数を計算する(ステップS102)。
次に、バウンディングボックス計算部151は、図7(a)、(b)に示した手順により、得られた線分のエッジ係数、平行四辺形の二つの斜辺に関するエッジ関数に基づいて、線分をマイナー軸方向にdピクセル膨らませた平行四辺形のバウンディングボックスを計算する(ステップS103)。
次に、開始点決定部152は、平行四辺形を6種類に分類し、この種類に応じて図10〜図15に示した様に走査の開始点と進行方向を決定する(ステップS104)。
次に、エッジ関数初期値決定部153は、決定された走査開始点と進行方向とに従って、開始ピクセル(X,Y)におけるエッジ関数の値を式(5)を用いてDDAの初期値として計算し、既に計算されたエッジ係数やバウンディングボックスの値と共に、セットアップデータを生成する。生成されたセットアップデータは、トラバース部16に送り出される(ステップS105)。
以上述べた構成によれば、以下の効果を得ることができる。
本実施形態の描画装置は、まず同次座標系のエッジ係数を求め、これを変換することで、ウィンドウ座標系のエッジ係数を計算している。従って、描画プリミティブが線分の場合に、その一方の頂点が視点より後ろ側にあるかどうかに関わらず、描画プリミティブが三角形である場合等と同様に、クリッピングを行うことなく統一的な方法でラスタライズ処理を実行することができる。
また、本実施形態の描画装置は、線分の少なくとも一部が前方にある場合には、当該線分の投影像に外接するバウンディングボックスを、線分の頂点のうち少なくとも一方のウィンドウ座標を用いて計算する。従って、線分一方の頂点が視点より後ろ側にある場合であっても、統一的な手法にてバウンディングボックスを設定できる。さらに、得られたバウンディングボックスは、線分の投影像のサイズ及び線分の一端が視点の後方にあるか否かによって縮小される。従って、設定するバウンディングボックスをできるだけ小さくすることができ、効率的なラスタライズ処理を実行することができる。
また、本実施形態の描画装置は、エッジ係数の組み合わせに基づいて線分の投影像を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する。従って、描画プリミティブが線分の場合に、その一方の頂点が視点より後ろ側にあるかどうかに関わらず、描画プリミティブが三角形である場合等と同様に、走査開始点及び走査方向を効率的に決定することができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
図1は、本実施形態に係るリアルタイムCG描画装置10のブロック構成図を示している。 図2は、セットアップ部15の構成を示したブロック図である。 図3は、エッジ係数計算部150は頂点データバッファ部31から受け取る頂点データのデータ形式の一例を示した図である。 図4は、透視射影変換、正射影変換、ビューポート変換をそれぞれ表す行列を示した図である。 図5は、同次座標系のエッジ関数の幾何学的意味を説明するための図であり、三次元空間の三角錐を示した図である。 図6は、エッジ係数計算部150によるエッジ計算の処理の流れを示したフローチャートである。 図7(a)、(b)は、バウンディングボックス計算部151によるバウンディングボックス計算の処理の流れを示したフローチャートである。 図8は、図7(b)に従う処理の幾何学的な意味について説明するための図である。 図9は、図7(a)に従う処理の幾何学的な意味について説明するための図である。 図10は3次元の線分の投影像である6種類の平行四辺形と、各平行四辺形における走査の開始点位置の候補をまとめた図である。 図11は、3次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。 図12は、3次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。 図13は、3次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。 図14は、3次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。 図15は、3次元の線分の投影像、投影像を膨らませた平行四辺形、バウンディングボックスのパターン毎に、走査開始点及び走査方向を示した図である。 図16は、エッジ関数初期値決定部153において生成されたセットアップデータの一例を示した図である。 図17は、セットアップ部13の動作の流れを示したフローチャートである。
符号の説明
10…本描画装置、11…頂点入力部、12…頂点処理部、13…ラスタライズ部、17…ピクセル処理部、18…描画メモリ部、150…エッジ係数計算部、151…バウンディングボックス計算部、152…開始点決定部、153…エッジ関数初期値計算部

Claims (8)

  1. 基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることによってピクセルデータを生成し三次元グラフィックス画像を描画する描画装置であって、
    前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力するための頂点入力手段と、
    ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、
    前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算するためのバウンディングボックス計算手段と、
    前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する決定手段と、
    前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成するトラバース手段と、
    を具備することを特徴とする描画装置。
  2. 前記走査開始点に対応するピクセルにおける前記エッジ関数の値を初期値として、前記走査進行方向に向かって前記初期値に前記エッジ係数を加算することでピクセルデータを生成することを特徴とする請求項1記載の描画装置。
  3. 前記エッジ係数計算手段は、前記二つの頂点の同次座標に基づいて前記エッジ係数を計算し、
    前記バウンディングボックス計算手段は、
    前記二つの頂点の同次座標に基づいて、前記線分の少なくとも一部が前記基準視点の前方に存在するか否かを判定し、
    前記線分の少なくとも一部が前記基準視点の前方に存在すると判定した場合には、前記二つの頂点の少なくとも一方のウィンドウ座標を用いて、前記線分の投影像のバウンディングボックスを計算すること、
    を特徴とする請求項1又は2記載の描画装置。
  4. 前記バウンディングボックス計算手段は、
    前記線分の一方の頂点が前記基準視点の後方に存在するか否かを判定し、
    前記線分の一方の頂点が前記基準視点の後方に存在すると判定した場合には、前記基準視点の前方に存在する前記線分の他方の頂点を通過するウィンドウ座標系の縦軸に平行な直線、及び前記他方の頂点を通過するウィンドウ座標系の横軸に平行な直線によって、初期設定されたバウンディングボックスを、前記線分を含む第1の領域と前記線分を含まない第2の領域とに分割し、
    前記第2の領域が削除されるように、初期設定されたバウンディングボックスをより小さなサイズに修正すること、
    を特徴とする請求項3記載の描画装置。
  5. 前記決定手段は、
    前記分類に基づいて前記バウンディングボックスのコーナー点であって前記投影領域の頂点である点のいずれかを走査開始点とし、
    当該走査開始点から前記投影領域内部に向かう方向を走査方向として決定すること、
    を特徴とする請求項1乃至4のうちいずれか一項記載の描画装置。
  6. 前記投影領域は、前記線分の投影面への投影像を、前記線分を投影面の縦軸及び横軸に投影した長さが短い方の軸であるマイナー軸方向に平行移動させて生成される平行四辺形であることを特徴とする請求項1乃至5のうちいずれか一項記載の描画装置。
  7. 基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることによってピクセルデータを生成し三次元グラフィックス画像を描画するための描画方法であって、
    前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力し、
    ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、
    前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算し、
    前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定し、
    前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成すること、
    を具備することを特徴とする描画方法。
  8. コンピュータに、基準視点から描画プリミティブを投影面に投影しこれをラスタライズすることピクセルデータを生成し三次元グラフィックス画像を描画する描画処理を実行させるための描画プログラムであって、
    前記描画プリミティブとしての線分の二つの頂点に関する同次座標及びウィンドウ座標を少なくとも含む頂点データを入力する入力機能と、
    ピクセルが前記線分を投影面に投影した場合に生成される投影領域の内側に存在するか否かを判定するために用いられる係数である、前記投影領域の外辺に関するエッジ関数のエッジ係数を、前記頂点データから計算するエッジ係数計算手段と、
    前記二つの頂点のうち少なくとも一方の頂点データと前記エッジ係数とから、投影面における前記投影領域のバウンディングボックスを計算する計算機能と、
    前記エッジ係数の組み合わせに基づいて前記投影領域を分類し、当該分類に応じて前記バウンディングボックスの走査開始点及び走査進行方向を決定する決定機能と、
    前記走査開始点から前記バウンディングボックスを走査しピクセルデータを生成する生成機能と、
    を実現させるための描画プログラム。
JP2004171258A 2004-06-09 2004-06-09 描画処理装置、描画処理方法、及び描画処理プログラム Expired - Lifetime JP4199159B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004171258A JP4199159B2 (ja) 2004-06-09 2004-06-09 描画処理装置、描画処理方法、及び描画処理プログラム
US11/147,326 US7414636B2 (en) 2004-06-09 2005-06-08 Rendering apparatus, rendering processing method and computer program product
US12/105,406 US20080211806A1 (en) 2004-06-09 2008-04-18 Rendering apparatus, rendering processing method and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004171258A JP4199159B2 (ja) 2004-06-09 2004-06-09 描画処理装置、描画処理方法、及び描画処理プログラム

Publications (2)

Publication Number Publication Date
JP2005352657A true JP2005352657A (ja) 2005-12-22
JP4199159B2 JP4199159B2 (ja) 2008-12-17

Family

ID=35460055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004171258A Expired - Lifetime JP4199159B2 (ja) 2004-06-09 2004-06-09 描画処理装置、描画処理方法、及び描画処理プログラム

Country Status (2)

Country Link
US (2) US7414636B2 (ja)
JP (1) JP4199159B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022519462A (ja) * 2019-01-18 2022-03-24 ソニーグループ株式会社 ホモグラフィ変換を使用した点群符号化

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7589729B2 (en) 2002-05-15 2009-09-15 Mental Images Gmbh Image synthesis by rank-1 lattices
AU2003239298A1 (en) * 2002-05-15 2003-12-02 Mental Images Gmbh Evaluating integrals using stratification of integration domain using rank-1 lattices
US8872833B2 (en) 2003-09-15 2014-10-28 Nvidia Corporation Integrated circuit configuration system and method
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
JP4064339B2 (ja) * 2003-12-19 2008-03-19 株式会社東芝 描画処理装置、描画処理方法および描画処理プログラム
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US7466322B1 (en) * 2005-08-02 2008-12-16 Nvidia Corporation Clipping graphics primitives to the w=0 plane
US7420557B1 (en) 2005-08-25 2008-09-02 Nvidia Corporation Vertex processing when w=0
JP4817882B2 (ja) * 2006-02-24 2011-11-16 キヤノン株式会社 画像処理方法及び画像処理装置
JP4817881B2 (ja) 2006-02-24 2011-11-16 キヤノン株式会社 画像処理方法及び画像処理装置
US8482567B1 (en) * 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US8102394B2 (en) * 2006-12-14 2012-01-24 Mental Images Gmbh Computer graphics using meshless finite elements for light transport
US20080218520A1 (en) * 2007-03-09 2008-09-11 Graham Sellers Acceleration of Triangle Scan Conversion Through Minor Direction Detection
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
CN101661741B (zh) * 2008-08-29 2012-02-22 富士通株式会社 图形光栅扫描中的三角形遍历方法和装置
US8217962B2 (en) * 2009-01-29 2012-07-10 Microsoft Corporation Single-pass bounding box calculation
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
CN102831632B (zh) * 2012-07-24 2015-05-13 上海晨思电子科技有限公司 镜像纹理生成方法、装置
US9858709B2 (en) 2012-11-29 2018-01-02 Samsung Electronics Co., Ltd. Apparatus and method for processing primitive in three-dimensional (3D) graphics rendering system
US9324127B2 (en) 2014-02-14 2016-04-26 Qualcomm Incorporated Techniques for conservative rasterization
US10452401B2 (en) * 2017-03-20 2019-10-22 Apple Inc. Hints for shared store pipeline and multi-rate targets
KR102446865B1 (ko) * 2017-09-12 2022-09-23 삼성전자주식회사 경로 렌더링을 수행하는 그래픽 처리 장치 및 그래픽 처리 방법
CN111275793B (zh) * 2018-12-05 2023-09-29 北京金山办公软件股份有限公司 一种文字渲染方法、装置、电子设备及存储介质
CN110517223A (zh) * 2019-07-11 2019-11-29 万翼科技有限公司 图纸审查方法、装置、计算机设备和存储介质
CN112669410B (zh) * 2020-12-30 2023-04-18 广东三维家信息科技有限公司 线宽调整方法、装置、计算机设备和存储介质
CN113687823B (zh) * 2021-07-30 2023-08-01 稿定(厦门)科技有限公司 基于html的四边形区块非线性变换方法及其系统
CN115908674A (zh) * 2022-11-30 2023-04-04 北京百度网讯科技有限公司 量子电路图渲染方法、装置、设备、存储介质及程序产品

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2271260A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
US5740409A (en) * 1996-07-01 1998-04-14 Sun Microsystems, Inc. Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities
US6072505A (en) * 1998-04-01 2000-06-06 Real 3D, Inc. Method and apparatus to efficiently interpolate polygon attributes in two dimensions at a prescribed clock rate
US6229553B1 (en) * 1998-08-20 2001-05-08 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6504542B1 (en) 1999-12-06 2003-01-07 Nvidia Corporation Method, apparatus and article of manufacture for area rasterization using sense points
US6765575B1 (en) * 1999-12-06 2004-07-20 Nvidia Corporation Clip-less rasterization using line equation-based traversal
US7050055B2 (en) * 1999-12-06 2006-05-23 Nvidia Corporation Single semiconductor graphics platform with blending and fog capabilities
JP4064339B2 (ja) * 2003-12-19 2008-03-19 株式会社東芝 描画処理装置、描画処理方法および描画処理プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022519462A (ja) * 2019-01-18 2022-03-24 ソニーグループ株式会社 ホモグラフィ変換を使用した点群符号化
JP7371691B2 (ja) 2019-01-18 2023-10-31 ソニーグループ株式会社 ホモグラフィ変換を使用した点群符号化

Also Published As

Publication number Publication date
JP4199159B2 (ja) 2008-12-17
US7414636B2 (en) 2008-08-19
US20080211806A1 (en) 2008-09-04
US20050275663A1 (en) 2005-12-15

Similar Documents

Publication Publication Date Title
JP4199159B2 (ja) 描画処理装置、描画処理方法、及び描画処理プログラム
US9972129B2 (en) Compression of a three-dimensional modeled object
JP5232358B2 (ja) アウトラインフォントのレンダリング
JP3840014B2 (ja) グラフィックス表示システムの走査変換実施装置
US20070018988A1 (en) Method and applications for rasterization of non-simple polygons and curved boundary representations
US20090147016A1 (en) Method for detecting border tiles or border pixels of a primitive for tile-based rendering
JP6863693B2 (ja) グラフィックス処理システムおよび方法
US20090046098A1 (en) Primitive binning method for tile-based rendering
JPH0950537A (ja) ボリューム・レンダリング装置及び方法
JP2001501349A (ja) 3dグラフィックスにおける属性補間のための方法及び装置
JP3892016B2 (ja) 画像処理装置および画像処理方法
US6774897B2 (en) Apparatus and method for drawing three dimensional graphics by converting two dimensional polygon data to three dimensional polygon data
US11423618B2 (en) Image generation system and method
US6518969B2 (en) Three dimensional graphics drawing apparatus for drawing polygons by adding an offset value to vertex data and method thereof
JP4691494B2 (ja) 画像描画装置、頂点選出方法、頂点選出プログラム及び集積回路
JP3747859B2 (ja) 画像処理装置およびその方法
JP2003317111A (ja) 画像処理装置およびその方法
KR100624455B1 (ko) 3차원 그래픽스 환경에서의 라이트맵 처리 방법 및 장치
JP2000348196A (ja) 3次元画像生成装置および環境マップの生成方法
JP4042377B2 (ja) 画像処理装置、および画像処理方法、並びにコンピュータ・プログラム
JP2006113909A (ja) 画像処理装置、画像処理方法及び画像処理プログラム
JP2611599B2 (ja) コンピュータグラフイックスのデータ処理方法及び装置
JP5504142B2 (ja) 画像処理装置、画像処理方法及び画像処理プログラム
JPH0540809A (ja) 3次元形状モデル作成装置
JP2010256985A (ja) 描画装置および方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050907

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080623

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080701

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080901

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: 20080930

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: 20081002

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

Free format text: PAYMENT UNTIL: 20111010

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 4199159

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

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

Free format text: PAYMENT UNTIL: 20111010

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111010

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20121010

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20131010

Year of fee payment: 5

EXPY Cancellation because of completion of term