JPH05258077A - 画素処理方法及び装置並びにグラフィックバッファ - Google Patents

画素処理方法及び装置並びにグラフィックバッファ

Info

Publication number
JPH05258077A
JPH05258077A JP4300756A JP30075692A JPH05258077A JP H05258077 A JPH05258077 A JP H05258077A JP 4300756 A JP4300756 A JP 4300756A JP 30075692 A JP30075692 A JP 30075692A JP H05258077 A JPH05258077 A JP H05258077A
Authority
JP
Japan
Prior art keywords
pixel
depth
clipping plane
parity
solid object
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
JP4300756A
Other languages
English (en)
Other versions
JP2572515B2 (ja
Inventor
Daniel A Brokenshire
アラン ブローケンシア ダニエル
Abraham E Megahed
エルセイド メガヘド アブラハム
Jarolsaw R Rossignac
ロマン ロッシナク ジャロルソー
Bengt-Olaf Schneider
シュナイダー ベント−オラフ
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH05258077A publication Critical patent/JPH05258077A/ja
Application granted granted Critical
Publication of JP2572515B2 publication Critical patent/JP2572515B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

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

Abstract

(57)【要約】 (修正有) 【目的】 ソリッド物体の断面画像をディスプレイする
ための方法、及びこの方法を達成するための装置を提供
すること。 【構成】 本発明による方法は、ソリッド物体に投影す
る各画素ごとに、画素、におけるクリッピング平面の深
度関数として画素のパリティを決定40し、かつ所定の
型のパリティを有するように決定された各画素ごとに、
画素がソリッド物体の内部にある材料に投影する画素で
あること示すために選択された可視特性を有する画素2
4をディスプレイする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般的にソリッドモデ
リング、特にクリッピング平面によってクリッピングさ
れ又は断面化されるソリッドモデルをディスプレイする
ための方法及び装置に関する。
【0002】
【従来の技術】ソリッドモデリング(固体のモデル化)
は、コンピュータによって物体をモデル化し、かつこの
種の物体のデザインと製造プロセスとを特定化するため
の公知技術である。ソリッドモデルを相互作用的に生成
し、ディスプレイし、かつ操作するための方法には、ソ
リッドモデリングの記述パワーを効果的に使用すること
が要求される。複数のz−バッファを使って、構造的ソ
リッド幾何学(CSG)によって記述されるソリッドの
迅速なディスプレイのための方法は既に記述されてき
た。例えば、米国特許第5、027、292号では、フ
ロントとバックのzバッファの使用について記述されて
いる。
【0003】ソリッド(固体)をディスプレイするため
の他の重要な考察は、ソリッドのいくらかの部分のみを
選択的にディスプレイするための可能性である。これら
の部分は、全スクリーン空間のサブスペースを特定化す
るか、又はソリッドの断面を規定することによって定義
付けられる。これらのサブスペースは、一般的に、技術
的にはクリッピング平面と呼ばれる平面によって範囲限
定される。断面は、ソリッドとクリッピング平面の交差
として定義付けられてもよい。効果的なクリッピング動
作は、いくつかの重要な相互作用的動作を提供する。
【0004】第1に、一つ以上のクリッピング平面の使
用は、ユーザの興味対象とならないソリッドの部分をク
リッピング(切り取る)するか、又は視覚的に除去する
ことによって画像を明瞭化する。
【0005】第2に、一つ以上のクリッピング平面の使
用は、ユーザが、興味対象となる内部領域を囲繞するソ
リッドの部分をクリッピングすることによってソリッド
の内部構造を見ることを可能にする。
【0006】第3に、クリッピング平面の使用は、ユー
ザが少なくとも一つのクリッピング平面の好適な位置決
めによって定義付けられる種々の断面を調べることによ
って、複雑なソリッドの形状を理解することを可能とす
る。
【0007】クリッピングされたソリッドをディスプレ
イすることは、目的とされる動作、すなわちソリッドの
断面化、にできるだけ近似した画像を理想的に生じさせ
る。従って、物体内部の画像がディスプレイ上で容易に
識別されることが所望される。さらに、クリッピング動
作が相互作用的に行われるならば、すなわち、クリッピ
ング平面の位置における変化が殆ど待ち時間なしで画像
に反映されるならば、ユーザはクリッピング動作から大
部分の利益を得る。これによって、ハードウェアによっ
て直ちに実行されるか又はサポートされ得る、比較的単
純で、論理的かつ算術的動作を用いてクリッピングが実
行されることが望ましい。
【0008】多数の従来の表面のクリッピング技術は、
クリッピングボリュームの外側にあるソリッドの面部分
を放棄している。これによってソリッドのバック面は、
フロントがクリッピングされが画素においてディスプレ
イされる。しかしながら、このことは、ソリッドが部分
的又は全体的に物質充填されている現実を反映していな
いので好ましくない。
【0009】在来的には、ソリッドのクリッピングは、
ソリッドを境界付ける多角形をクリッピングすることに
よって達成されてきた。多角形のクリッピングのいくつ
かの技術は公知である。例えば、Sutherland及びHodgem
anは、1974年1月のCACM、第18(1)号のp.
32乃至p.42において“Reentrant Polygon Clippin
g”( 再入可能多角形クリッピング) 、すなわち凸面ク
リッピング領域又は凸面クリッピングボリュームに対し
て任意に結合した多角形をクリッピングする技術を記述
している。この技術は、各クリッピング平面に対する各
多角形を首尾よくクリッピングする。このプロセスの間
に、その頂点がクリッピングボリュームの境界内部又は
境界上部に位置する新たな多角形が生成される。クリッ
ピングボリュームの外側にあるオリジナルの多角形の部
分は放棄される。
【0010】Liang 及びBarskyは、1983年11月の
CACM、第26(11)号(1984年2月のCAC
M、第27(2)号の訂正)の“An Analysis and Algo
rithm for Polygon Clipping”(多角形クリッピングの
ための分析とアルゴリズム)において矩形のクリッピン
グウィンドウに対して多角形をクリッピングするための
より有効な技術を開示している。これらの著者は、矩形
のどの側面が、クリッピングされるべき多角形のエッジ
によって交わるかを決定することによって計算処理上の
労力を軽減している。ここでも、クリッピング矩形の外
側の領域は、クリッピング矩形に含まれる頂点を有する
新たな多角形を形成することによって、データ構造から
除去される。
【0011】1980年のSIGGRAPHにおいて、Weiler
は、“Polygon Comparison Using aGraph Representati
on”(グラフ表示を使用した多角形の比較)、すなわち
他の不定多角形に対して多角形をクリッピングするため
の方法を開示している。この技術は、多角形のサポート
平面を、全くないか、単一の、又は両方の多角形によっ
て覆われた部分に分割する。この方法は、両方の多角形
によって覆われた部分を選択する。他の部分は放棄され
る。
【0012】全てのこれらの技術の共通特性は、クリッ
ピングボリュームの外側の多角形の部分が除去されるこ
とは明らかである。これらの多角形がソリッドを境界付
ける時、フロント面に対するクリッピングは、図2の
(a)及び(b)に示されているように、このソリッド
のボリュームの内部を現し、かつバック(裏)表面をデ
ィスプレイする。フロント面及びバック面の両方が同じ
照明の計算を受ける場合、この種の画像は視覚的には混
乱を招く。
【0013】ソリッドの正面がフロントクリッピング平
面によってクリッピングされる時、代わりに要求される
ことは、ソリッドを介して断面の視覚的効果を提供する
ことにある。例えば、フロントクリッピング平面とソリ
ッドの交差は、例えば、一定に着色及び/又はクロスハ
ッチ(網掛け)されたパターンのみがディスプレイされ
るべきである。このアプローチは、ソリッドが表面によ
って境界付けられたからっぽの空間ではなく、視覚的に
明確な物質を含んでいることをより正確にモデリングす
るであろう。
【0014】
【発明が解決しようとする課題】従って、本発明の目的
は、これらの画素を視覚的に明瞭な方法で決定するよう
に、断面ソリッドの内部がディスプレイされる領域に投
影する画素を検出するクリッピング技術を提供すること
にある。例えば、表面画素が描写される間、画面(シー
ン) のイルミネーションを考慮して、内部画素がフラッ
ト(平らな)シェーディングされることもある。
【0015】本発明のさらなる目的は、ソリッド物体と
交差する一つ以上のクリッピング平面又はクリッピング
表面によって現される内部物質を検出しかつ視覚的に明
確化するように画素パリティフラグメモリ平面と共に、
複数のデプス(深度)バッファを使用することによって
ソリッド物体の正確な描写を提供することにある。
【0016】
【課題を解決するための手段】ソリッドクリッピング方
法とこの方法を達成するための装置によって、以上に述
べられた問題は克服され、かつ本発明の目的は具現化さ
れる。
【0017】一般に、本発明の方法はソリッド物体の断
面画像をディスプレイするために画素を処理する。この
方法は、ソリッド物体へ投影する各画素ごとに、(a)
画素におけるクリッピング平面の深度関数としての画素
のパリティを決定するステップと、(b)予め定められ
た型のパリティを有するように決定された各画素ごと
に、その画素が、ソリッド物体の内部にある物質上へ投
影する画素であることを示すために選択された可視特性
を有する画素をディスプレイするステップとを含む。
【0018】例えば、クリッピング平面はフロントクリ
ッピング平面であり、かつ画素のパリティを決定するス
テップは、面が前記フロントクリッピング平面の後ろに
ある、前記画素の投影によって移動されるソリッド物体
の多数の面のレコードを保持するステップを含む。前記
保持ステップが、ソリッド物体の領域を境界付けると共
に、前記フロントクリッピング平面の後ろに位置する画
素の画素座標のレコードを生成するステップを含む。
【0019】所定の型のパリティは奇数パリティであ
る。ソリッド物体の奇数の面が画素の投影によって移動
されるならば、画素が奇数パリティを有するように決定
される。
【0020】本発明の一つの実施例において、方法は、
前記クリッピング平面を越えて延出するソリッド物体の
いかなる部分をも前記クリッピング平面上へ投影する初
期ステップを含む。
【0021】上記のように、本発明の方法の一つの実施
例に述べられたように、クリッピングボリュームの外側
に位置する(即ち、クリッピング平面の後ろ)表面ポイ
ントがクリッピング平面上へ投影される。この投影によ
って、物体のいくつかの表面は、クリッピング平面上の
同一ポイント内へマッピングされることもある。この状
態は検知され、物体上の第2のパスの間に処理され、次
いで関連する表面が取り去られる。この手続きは本明細
書中ではソリッドの調整と呼ばれる。
【0022】本発明の方法は、フロントクリッピング平
面に対してソリッドをクリッピングすることによって露
出されたソリッドの内部領域に種々のカラーを割り当て
る可能性を提供する。内部領域は一定のカラーによって
ディスプレイされてもよいし、又は断面と内部物質の特
性の基準ベクトルを考慮することによって正確にシェー
ディングされてディスプレイされてもよい。
【0023】本発明の方法の一つの実施例は、ソリッド
のクリッピングされた全てのディスプレイを可能とす
る。これは、クリッピング平面を移動させることによっ
て複雑なシーンを検査する間に「予見する」(look ahe
ad) ために役立つ。
【0024】
【実施例】本発明の上記の特徴は、添付図面により明確
となるであろう。
【0025】図1の(a)に示されているように、ラス
タグラフィックシステム10は、主(ホスト)プロセッ
サ12とグラフィックサブシステム14を有している。
ホストプロセッサ12はアプリケーションプログラムを
実行し、かつグラフィックタスクをグラフィックサブシ
ステム14へディスパッチ(配布)する。
【0026】グラフィックサブシステム14は、ラスタ
ーディスプレイ装置16へのディスプレイのための幾何
学的エンティテイ(情報)を準備するのに必要な動作を
実行する幾つかの構成素子を含んでいる。本発明を記述
するために、以下の機能ユニットを有するグラフィック
サブシステム14のモデルが用いられる。この特定モデ
ルは、本発明の実施上において、限定された意味で解釈
されるべきではないことが理解されるべきである。
【0027】幾何学的処理ユニット18は、幾何学的及
び透視画法的変換のみならず、スクリーン(ウィンド
ウ)境界に対してクリッピングも行う。この結果生じ
る、例えば、頂点、線、三角形等の表示要素はスクリー
ン空間座標に記述される。
【0028】走査変換(ラスター化)ユニット20は、
表示要素をラスター情報すなわち、表示要素によって覆
われたディスプレイスクリーン画素の記述に分解する。
【0029】グラフィックバッファユニット22は、画
素すなわちディスプレイスクリーン画素を受け取りかつ
記憶する。
【0030】ディスプレイユニット24は、グラフィッ
クバッファユニット22から画素を受け取り、これらの
画素を、一般的にはラスタースクリーンである出力装置
16にディスプレイされる情報へ変換する。
【0031】本発明は、特に、グラフィックバッファ2
2に関し、その新たな方法及び装置を提供する。とりわ
け、本発明は、ソリッド(固体)物体が境界を定める表
面によって記述されたソリッド物体をクリッピングする
ための方法を提供する。各画素において、この方法は、
フロント(前面)クリッピング平面に位置するソリッド
の表面上のポイントと、ソリッドの内側にあるポイント
とを区別する。
【0032】本発明のいくつかの実施例が以下に記述さ
れる。さらに、フロントとバック(後部)クリッピング
平面のためのハードウェアサポート(支援)、及び任意
形状の、恐らくノンプレーナのフロントとバックのクリ
ッピング表面のサポートの使用についてさらに記述され
る。
【0033】本発明を記述するために、ソリッドは、即
ち、当該ソリッドが境界を定める多角形により多面体と
して記述されると仮定される。各多角形は、頂点の順序
リストとして表される。しかしながら、本発明は、境界
を定める多角形のみに限定されない。すなわち、ソリッ
ドの境界は、代数的表面、B−スプライン型表面、NU
RBS表面、立方体(voxel)表面などの任意の型のもの
であってもよい。すなわち、記述されている方法は、ソ
リッドの境界を定める表面の型とは無関係である。簡単
化のために、ソリッドはプレーナ多角形によって境界が
定められている。すなわち、このソリッドが多面体であ
ることが仮定されるであろう。さらに、この方法は、一
般的に、深度又はz−軸に対して垂直であるフロントク
リッピング平面に関連して記述されている。しかしなが
ら、やがて明確となるように、この方法は、z−軸に対
していかなる配置方向をも有する任意に形付けられたク
リッピング平面に対して、及び、複雑なクリッピング表
面を定義付けるクリッピング平面の組み合わせによっ
て、クリッピングするのに非常に好適である。
【0034】さらに、本明細書に用いられているよう
に、「ソリッド」又は「ソリッド物体」などの用語は、
ボールベアリングなどの物質が完全に詰まっている物
体、及びエンジンブロック又はポケットウォッチなどの
物質が部分的にしか詰まっていない物体も包含すること
が意図されている。
【0035】本発明の第1の実施例が以下に示されてい
る。アーキテクチュア(構造)を描写するスタンダード
ハードウェアは、当該フロントとバックのクリッピング
平面に対して描写されるべき物体がトリミングされるフ
ロントとバックのクリッピング平面を定義付けるための
可能性を提供する。フロントクリッピング平面の後ろに
あり、かつバッククリッピング平面の前にある物体のそ
の部分はカラーと深度のための画素バッファに書き込ま
れる。
【0036】特定のソリッドへ投影する各画素におい
て、本発明の方法は、このソリッドのために描写される
面数の奇偶性(パリティ)の記録を保持する。図4の
(a)及び(b)に示されているように、クリッピング
平面がソリッドと交差していないところでは、パリティ
は偶数である。これに対して、クリッピング平面がソリ
ッドと交差するところでは、パリティは奇数であり、従
ってソリッドを介して断面を形成する。
【0037】すなわち、図4の(b)の例において、画
素P1に対して、ソリッドの二つの面(AとC)が(z
軸に沿った)画素の後ろに位置しており、P1のパリテ
ィは偶数である。画素P2に対して、ソリッドの一つの
面(C)だけが画素の後ろに位置しており、かつP2の
パリティは奇数である。一般に、奇数面が画素の後ろに
位置する場合、画素のパリティは奇数であり、また偶数
面が画素の後ろにある場合、画素のパリティは偶数であ
る。
【0038】1991年3月12日出願の米国特許出願
第07/672,058号は、深度間隔バッファに関連
したフロント対向フラグの使用について記述している。
フロント対向フラグは、ポイントのパリティを示し、か
つ特定ポイントが、要素の内側に位置するのか、又は外
側に位置するのかを決定するために用いられる。
【0039】全てのソリッドが第1のパスの間に描写さ
れた後、本発明の方法は、奇数パリティを有するこれら
の画素、即ち断面表面を示す画素、断面表面の選択され
たカラー及び/又はパターンによって描く。この動作の
結果は、図3の(a)、(b)、(c)に示されてい
る。
【0040】図3の(a)は、フロント表面Aとバック
表面B及びCを有するソリッドを示している。表面A上
のポイントは、見る人から見える画素上に投影する。表
面A上のポイントへ投影する各画素はカラーのような少
なくとも一つのディスプレイ特性を有しており、かつこ
のディスプレイ特性と協働する深度も有している。深度
はz−軸に沿って測定され、かつ観察平面に関連してい
る。これらの画素の描写において、照明及び他の視覚的
考察が考慮に入れられる。図3の(b)は、ソリッドを
切断するクリッピング平面の結果を示している。図3の
(c)は、本発明に従ってディスプレイされた時の見る
人から見えるソリッドを示している。図3の(c)と図
2の(c)の比較によって、後部の面BとCを視覚的に
混乱させるディスプレイが図3の(c)では除去されて
いるのが示されている。代わりに、見る人には、ソリッ
ドの内側にある物質を正確に表現する表面(D)が提供
される。ソリッドが、クリッピング平面によって交差さ
れる、任意の内部構造や空間(ボイド)を含んでいる場
合、これらも正確に描写される。
【0041】以下の擬似コードリストが、図9のフロー
チャートに沿って、この技術を記述している。
【0042】 /* * ソリッドクリッピング: * ソリッドの位置が、z-バッファ深度範囲に限定されない。 * * ‘z buffer’(z-バッファ)と‘c buffer’(c-バッファ)とが各画素におけ る深度とカラーを記憶する。 * ‘parity’(パリティ)は、特定画素に投影された面数のパリティを記憶する ためのビット平面である。 * ‘z front ’と‘c back’が各画素におけるフロントとバックのクリッピング 平面の深度を示す。 * ‘ FCP’と‘ BCP’がハードウェアの、フロントとバックのクリッピング平面 の深度を記憶する。 */ /* * 初期化 */ 全ての画素(x,y) に対してDO { zbuffer(x,y)=zback; cbuffer(x,y)=cback; parity (x,y) =0 ; } FCP = zfront; BCP =INFINITY; 全てのソリッドsに対して DO } CLEAR BBX;/* バウンディングボックスが、パリティビットが変化する全て の画素を囲繞する*/ /* * フロントとバックのクリッピング平面、FCP とBCP をそれぞれ使用って、全て のソリッドを描写する。 */ sの全ての面fに対してDO fの全ての画素(x,y) に対してDO /* 以下の動作はハードウェアサポート(支援)されることもある*/ IF(FCP <z(x,y)) { if(z(x,y)<zbuffer(x,y)) { zbuffer(x,y)=z(x,y); cbuffer(x,y)=c(x,y); } parity(x,y) =!parity(x,y); UPDATE BBX(x,y); } /* * 断面を含む画素にカラーをassign、そしてこれらの画素におけるz-bufferを update */ バウンディングボックス内の全ての画素(x,y) に対してDO IF(parity(x,y)) { cbuffer(x,y) =color of cross section(s); zbuffer(x,y) =zfront; parity(x,y) =0; /*次のソリッドのために再初期化を回避するためにパリ ティをreset*/ } } この方法に関して、バッククリッピング平面は、ディス
プレイされたソリッドのどれとも交差してはならない。
例えば、バッククリッピング平面は、上記に示されてい
るように、バッククリッピング平面をINFINITY (無限
大) にセットすることによって、最も遠いソリッドの後
ろに一時的に位置決めされてもよい。
【0043】図1の(b)に関しては、上記の方法を実
行すために好適なグラフィックバッファ22の実施例が
示されている。グラフィックバッファ22は、バス34
によって、複数の記憶装置の位置と双方向に結合された
プロセッサ32を含んでいる。これらの記憶装置の位置
は、zバッファ(深度)36と、cバッファ(カラー)
38と、パリティバッファ40とを含んでいる。これら
のバッファの各々は、複数の画素のための記憶装置を含
んでいる。例えば、ディスプレイ素子が1024×10
24の画素をディスプレイするならば、106 ビットの
zバッファ36、106 ビットのcバッファ38、10
6 ビットのパリティバッファ40まで設けられる。これ
らのバッファは、典型的には、ダイナミックRAM等の
メモリ素子の平面として実行される。上記の方法によっ
て使用される変数を記憶する記憶素子42は、バス34
によってプロセッサ32にも結合される。これらの変数
は、cバック、FCP、及びBCPを含んでいる。興味
の対象領域のための左右、上下の画素座標を定義付ける
ためのレジスタを含む記憶装置が、バウンディング(境
界付け)ボックス(BBX)にも提供されている。本発
明の方法について、興味の対象領域は、画素のパリティ
が変化する画素を含み、中には、クリッピング平面と同
一平面上にあり、且つクリッピング平面に隣接するソリ
ッドの内部表面上へ投影する画素もある。さらに、本発
明の方法を実行するために、初期化と他の情報を提供す
るホストバス30とがプロセッサ32と結合している。
プロセッサ32は走査変換ユニット20から画素を受け
取り、本発明の方法によって同じ処理をした後、プロセ
ッサ32は画素をディスプレイ24に供給する。このよ
うに、プロセッサ32は、本発明の方法を実行するため
の命令を含む命令メモリ32aを含む。本発明のいくつ
かの実施例について、zフロントバッファ44とzバッ
クバッファ46も、以下のように設けられてもよい。
【0044】グラフィックバッファ22についての他の
好適な実施例は、1991年12月24日に共通に譲渡
されかつ係願された米国特許出願第813318号にお
いて、“An Extendable Multiple Image-Buffer for Gr
aphics Systems”( グラフィックシステムのための延伸
可能な多重画像バッファ)が開示されている。
【0045】これまで記述されてきた例については、ク
リッピング平面はz軸に対して垂直であり、これによっ
て全スクリーンを通して均一かつ一定した深度を有する
ので、フロントとバッククリッピング平面を記憶するた
めに分離バッファ(zフロント44とzバック46)が
割り当てられる必要はないことに留意されたい。このよ
うに、上記の擬似コードは、zフロントを、FCP、す
なわちハードウェアクリッピングを制御するレジスタへ
割り当てる。しかしながら、クリッピング平面又はクリ
ッピング表面が、均一の深度を有していない以下に示さ
れる他の実施例については、zフロント44及びzバッ
ク46のバッファは、複数のポイントにおいてクリッピ
ング平面又はクリッピング表面の深度を記憶するために
割り当てられる。
【0046】各画素において、ソリッドクリッピング方
法の上記の実施例は、フロントクリッピング平面の後ろ
にあるソリッドの全ての面のパリティを決定する。これ
には、正確なパリティを得るために、バッククリッピン
グ平面によって面が全くクリッピングされないことが要
求される。
【0047】この制約は、図4に示されているように、
フロントクリッピング平面の前にある面数のパリティを
決定することによって克服される。
【0048】以下の擬似コードは、フロントとバックク
リッピング平面に対するハードウェアサポート(支援)
クリッピングを使用する。第1のパスにおいて、ソリッ
ドは断面を示す画素を識別するために走査される。第2
のパスにおいて、ソリッドは断面の外側にある画素を描
くために再度走査される。 /* * ソリッドクリッピング方法2: * ソリッドの位置はz-バッファ深度範囲に限定されない。 * * ‘z buffer’と‘c buffer’が各画素に対する深度とカラーを記憶する。 * ‘parity’は、特定画素に投影された面数のパリティを記憶するためのビット 平面である。 * ‘zfront’と‘zback ’が各画素におけるフロントとバックのクリッピング平 面の深度を提供する。 * ‘ FCP’と‘ BCP’がフロントとバックのクリッピング平面の深度を記憶する 。 */ /* * 初期化 */ 全ての画素(x,y) に対してDO { zbuffer(x,y)=zback; cbuffer(x,y)=cback; parity (x,y)=0 ; } FCP =-INFINITY; /*...又は各ソリッドの前の任意のz値*/ BCP =zfront ; /* *パス 1: 全てのソリッドをrender(描き)、次いで各画素ごとに、‘zfront’ の前にある面数のパリティをdetermine (決定) */ 全てのソリッドs に対して DO { CLEAR BBX;/* バウンディングボックスが、パリティビットが変化する全画 素を囲繞する*/ sの全ての面fに対してDO fによって覆われた全ての画素(x,y) に対してDO /* 以下の操作はハードウェアサポートされてもよい*/ IF(FCP<z(x,y)<=BCP) { parity(x,y) =!parity(x,y); UPDATE(更新) BBX(x,y); } バウンディングボックス内の全ての画素(x,y) に対してDO IF(parity(x,y)) { cbuffer(x,y) =color of cross section(s); zbuffer(x,y) =zfront; parity(x,y) =0 ; /*次のソリッドのために再初期化を防止するために パリティをreset (リセット) */ } } /* * パス2: 全てのソリッドをrender(描き)、‘zfront’の後ろにあり、かつ‘ zback ’の前にある画素をdraw(描写) */ FCP=zfront; BCP=back; 全てのソリッドsに対して DO sの全ての面fに対してDO fによって覆われる全ての画素(x,y) に対してDO /*以下の動作はハードウェアサポートされてもよい*/ IF(FCP<z(x,y)<= BCP) IF(z(x,y) <zbuffer(x,y)) { zbuffer(x,y) =z(x,y); cbuffer(x,y) =c(x,y); } ソリッドクリッピング方法の第2の実施例は、ソリッド
を介して二つのパスを使用する。この方法は、ソリッド
の表面上のポイントをフロントクリッピング平面の前又
は後ろにあるものとして類別する。
【0049】しかしながら、この方法の第2の実施例に
おいて行われるように、画像空間に二つのセットの表面
ポイントを構成する代わりに、表面がフロントクリッピ
ング平面の前にあるか又は後ろにあるかについて表面を
類別するために物体空間技術が使用されてもよい。図6
の(a)に示されるように、多角形は、クリッピングボ
リュームの内側にある部分と、クリッピングボリューム
の外側にある部分とに分解される。クリッピングボリュ
ームの内側、すなわちフロントクリッピング平面の後ろ
又はバッククリッピング平面の前にある部分は、従来の
方法で取り扱われる。即ち、「内側」部分は、走査変換
及び陰影(シェーディング)の標準的な技術を使ってデ
ィスプレイされる。しかしながら、フロントクリッピン
グ平面の前にある「外側」部分を取り除く代わりに、図
6の(b)に示されるように、この外側部分がフロント
クリッピング平面上へ投影されるか、又はz軸に沿って
崩れる。この動作は、フロントクリッピング平面と同一
面上にオーバラップする面を有することもある多面体の
変形した版(バージョン)を生成する。この結果は、ク
リッピング平面の外側にある表面が、このクリッピング
平面と一致しているゼロボリューム領域内へと崩れるこ
とにある。
【0050】この多面体の境界は、以下の二つの特性を
有する。第1に、この境界は閉鎖された二周期(2サイ
クル)である。第2に、特別な画素については、Nはク
リッピング平面上へ投影された表面の数であるように定
義付けられる。結果的には、Nが奇数ならば、画素はソ
リッドを有するクリッピング平面の断面内にあると考え
られ、またNが偶数ならば、断面の外側にあると考えら
れる。
【0051】新たな多面体の第1の特性は、バック面が
決してディスプレイされないことを確実とする。第2の
特性は、オリジナル多角形の投影された部分がディスプ
レイされるべき画素を識別するための基準を提供する。
断面の画像は、投影される表面の数(N)が奇数である
フロントクリッピング平面上の画素に対してのみ得られ
る。
【0052】投影の動作は、典型的な走査変換技術が限
定された範囲の深度(z)を有するので有用である。投
影は、クリッピングされた部分の各頂点のz座標をフロ
ントクリッピング平面の深度(z座標)と置換すること
によって得られ、これによってフロントクリッピング平
面へ向かって、これらの表面を効果的に崩壊させる。
【0053】この技術の一つの利点は、全てのソリッド
(及びその面)が一度だけは処理される必要があること
にある。しかしながら、このことは、クリッピング平面
の前に位置するセットの面を記憶するための追加のメモ
リを提供することによって達成される。
【0054】この第3の実施例の方法は以下の擬似コー
ドによって記述される。 /* * ソリッドクリッピング: 方法3 * ソリッドの位置が、z-バッファ深度範囲に限定されない。 * * ‘z buffer’と‘c buffer’が各画素における深度とカラーを記憶する。 * ‘parity’は、特定画素に投影された面数のパリティを記憶するためのビット 平面である。 * ‘zfront’と‘zback ’が各画素におけるフロントとバックのクリッピング平 面の深度を示す。 */ /* * 初期化 */ 全ての画素(x,y) に対して DO { zbuffer(x,y)=zback; cbuffer(x,y)=cback; parity (x,y)=0 ; } 全てのソリッドsに対して DO } */ /* * 物体空間における全表面をpreprocess(前処理) */ sの全ての面fに対してDO クリッピング平面に対してfをCLIP、結果を2セットの 多角形fフロント及びfインにstore (記憶); fフロントにおいて全ての物体をフロントクリッピング 平面上のz軸に沿ってproject (投影); } CLEAR BBX;/* バウンディングボックスが、パリティビットが変化する全画 素を囲繞する*/ /* * zバッファ内に全て表示要素をrender(描写)、 * 断面の位置をdetermine (決定) */ fフロントにおける全ての面fに対してDO fによって被覆される全ての画素(x,y) に対してDO IF(z(x,y) <=zfront) { parity(x,y)=!parity(x,y); UPDATE BBX(x,y); } fインにおける全ての面fに対してDO fによって被覆される全ての画素(x,y) に対してDO IF(z(x,y) <=zbuffer(x,y)) { zbuffer(x,y) =z(x,y) cbuffer(x,y) =c(x,y) } /* * 断面を含む画素にカラーをassign(割当て)、次いで画素におけるz−バッ ファ * をupdate(更新) */ バウンディングボックス内の全ての画素(x,y) に対してDO IF(parity(x,y)) { cbuffer(x,y) =color of cross section(s); zbuffer(x,y) =zfront; parity (x,y) =0 ; /*次のソリッドのために再初期化を防止するように パリティをreset (リセット) */ } } ソリッドクリッピング方法の第3の実施例は、クリッピ
ング平面の全てのz軸の位置に使用することができる。
即ち、たとえ、クリッピング平面が z=0及び z=max
に位置されようと、即ち、使用可能な深度を範囲限定し
たとしても、この方法は正確に動作する。この第3の実
施例について、幾何学的なプリプロセシング(前処
理)、すなわち変形及びクリッピングが、例えばフロー
ティングポイントなどを使って、より大きな深度の範囲
を有する幾何学的プロセシングユニット18によって達
成され、これによって、zバッファ36及び走査変換プ
ロセッサ20の深度範囲(整数)外にある座標を設ける
ことができる。これによって、プリプロセッサは、全て
の物体が深度範囲0<=z<=zmax へマッピングされ
ることを確実とする。この結果、走査変換処理は常に妥
当な深度値を生成する。
【0055】全てのソリッドが全体的にzバッファの深
度範囲内にあるならば、表示要素をクリッピングしかつ
投影するためのステップは省略され得る。これらのステ
ップは、以下の擬似コードにおいて記述される第1のパ
スの間、図7の(a)乃至(d)に示されているソリッ
ドクリッピング方法により「オンザフライ」(on-the-fl
y)式に実行される。この実施例は、この方法が、ノンプ
レーナクリッピング表面、即ち、z軸に対して垂直でな
いクリッピング平面に対してどのように用いられるかを
も示している。クリッピング表面は、画素座標を引き
数、例えば、‘ zfront(x,y)’、と見なす関数として記
述されてもよい。各画素について、関数はこの画素にお
けるクリッピング平面の深度にリターンする。この関数
は、例えば、傾斜したクリッピング平面についての平面
の方程式として明瞭に特定されるか又は分離化されるか
のいずれかである。後者(分離化)の場合は、図1の
(b)のzフロントバッファ44は、各画素におけるフ
ロントクリッピング表面の深度を記憶する。クリッピン
グ表面が複雑であって、これによりハードウェアでの実
行が困難である場合は、この後者(分離化)の代替えは
有用である。
【0056】 /* * ソリッドクリッピング: 方法4 * 全ソリッドはzバッファ深度範囲内にある。
【0057】 クリッピング表面をcomplex (合成) * * ‘ zbuffer’と‘ cbuffer’が各画素における 深度及びカラーを記憶する。 * ‘parity’は、特定画素に投影された面数のパリティを記憶するため のビット平面である。 * ‘zfront’と‘zback ’が各画素におけるフロントとバックの クリッピング平面の深度を提供する。
【0058】 これらは定数や関数として、又はこれらのクリッピング表面の形状を 定義付ける二つのバッファ44及び46として実行されてもよい。*/ */ 全ての画素(x,y) に対してDO { zbuffer(x,y)=zback(x,y); cbuffer(x,y)=cback(x,y); parity (x,y)=0 ; } 全てのソリッドsに対してDO { CLEAR BBX;/* バウンディングボックスがパリティビットが変化する 全画素を囲繞する*/ /*パス1:zバッファ内へ全ての要素をrender(描写)、次いで断面の位置 をdetermine (決定) sの全ての面fに対してDO fによって覆われる全ての画素(x,y) に対してDO IF(z(x,y) <=zfront(x,y) ) { parity(x,y) =!parity(x,y); UPDATE BBX(x,y); } ELSE IF(z(x,y)<zbuffer(x,y)) { zbuffer(x,y) =z(x,y); cbuffer(x,y) =c(x,y); } /*パス2:断面を含む画素にカラーをassign(割当て)、次いで画素における z−バッファをupdate(更新) バウンディングボックス内の全ての画素(x,y) に対してDO IF(parity(x,y)) { cbuffer(x,y) =color of cross section(s); zbuffer(x,y) =zfront(x,y) ; parity(x,y) =0 ; /*次のソリッドのために再初期化を防止するように パリティをreset (リセット)*/ } } 上記に示されたソリッドクリッピング方法の種々の実施
例は、以下の結果を達成するために拡大され得る。
【0059】全てのソリッド又はいくらかだけのソリッ
ドの補足部分を有するクリッピング平面の断面がディス
プレイされてもよい。大きくて複雑なシーンを検査して
いる間に「予見(look ahead) 」することは有利であ
る。このモードにおいて、断面が上記のソリッドクリッ
ピング方法によって図示されたソリッド内部がディスプ
レイされる。
【0060】即ち、偶数(0)の代わりに奇数(1)へ
の画素ごとのパリティを初期化することによって、断面
の外側にある全ての画素が、結局は奇数パリティを有す
るように決定され、従って断面であると見なされる。他
方では、実際の断面の内部に位置する全画素が、予め定
義付けられた断面表面の特徴をもたずに描写される。こ
の結果は、予め定義付けられたカラー、例えば、ブラッ
クで画像のすべての部分をディスプレイする「反転」画
像である。クリッピング平面がソリッドと交差する部分
は、見る人がソリッドを介して「予見すること」を可能
とするソリッド内への「ウィンドウ」としてディスプレ
イされる。このアプローチへの利点は、見る人が、面が
ソリッドの内部面でありかつクリッピング動作によって
表されるのか、又は面がソリッドの表面上にあるのかに
ついて混同しないことにある。
【0061】例えば、内部表面又はダングリング表面な
どの補助表面は、ホストプロセッサ12によって保持さ
れるグラフィックデータベースにおいてこれらの表面を
2回表すことによってディスプレイされかつ検査され
る。このことは、これらの表面についてのパリティが偶
数であり、これらの表面が寄与しているソリッドのパリ
ティを改ざんしないことを確実とする。
【0062】例えば、側面、頂部、底部におけるクリッ
ピングボリュームの範囲限定するための追加のクリッピ
ング平面(ウィンドウ境界としても知られている)は、
ソリッドクリッピング方法の実行の前又は後に考慮され
ることもある。利用可能なワークステーションアーキテ
クチュアによって与えられるハードウェアサポートに関
しては、ソリッドクリッピングの前にウィンドウクリッ
ピングを実行することが好ましい。次いで、残りのソリ
ッドが本発明のソリッドクリッピング方法を受け入れ
る。
【0063】(カラーに対する)スタンダードフレーム
バッファと、(深度値に対する)z−バッファに付け加
えて、本発明の方法を実行する為のシステムハードウェ
アの必要条件に関しては、パリティについての画素ごと
に一つのエキストラ(追加の)ビットだけが要求され
る。
【0064】多数のソリッドモデラーがこれらの囲繞表
面(境界表示)によってソリッドを表す。この種のモデ
ラーは、ソリッドを介して断面をディスプレイするため
のソリッドクリッピング方法を利用することができる。
【0065】本発明の利用例として、本発明の教示から
有利とされることもある一つのアプリケーションはトリ
ックルアルゴリズム(Trickle Algorithm )として公知
である。トリックルアルゴリズムは、1989年11
月、ニューヨーク、ヨークタウンハイツ、T.J. Watson
リサーチセンター、IBM 研究部のテクニカルレポートRC
15182 の“Z-buffer Rendering From CSG: The Trickl
e Algorithm ”(CSGから決定するZ-バッファ: トリック
ルアルゴリズム) において、David A. Epstein、Freder
ik W. Jansen、及びJaroslaw R. Rossignac によって記
述されており、また、1990年9月、ユーログラフィ
ックのグラフィックハードウェアのユーログラフィック
ワークショップのプロシーディング1990において、
J. Rossignac及びJefferey Wu による“Correct Shadin
g of Regularized CSG Solid Usinga Depth-Interval B
uffer”(深度間隔バッファを使って規制されたCSG ソ
リッドの正確なシェーディング)においても記述されて
いる。一般的に、トリックルアルゴリズムは、構造的ソ
リッド幾何学(CSG)物体を、物体をその境界表示に
変換せずに、ラスタディスプレイ上でディスプレイする
ことを可能とする。CSGは、例えば、半分の空間、球
形、円筒形などの表示要素ソリッドのブール(Boolean
)合併(ユニオン)、交差、及び差異としてソリッド
を記述する。
【0066】グローバルなアルゴリズムは以下のように
進行する: 1. CSG表示は、表示要素物体の交差として構成さ
れる副物体の合併としての物体を表す「積の和」形式に
変形される。
【0067】2. 各積は、積バッファ(P−バッフ
ァ)内へ走査変換される。積の画像が完全にP−バッフ
ァ内に描写された後、P−バッファは積の可視フロント
面を含んでいる。この画像はz−バッファを使って、合
併−バッファ(U−バッファ)内へマージ(併合)され
る。
【0068】以下の擬似コードがこれらの二つステップ
を記述している。 物体を積の和形式にtransform (変換) U−バッファをinitialize(初期化) 各積に対してdo:フロント画素をP−バッファ内へcomp
ute (算出) 結果を深度バッファを使ってU−バッファ内へmerge
(併合) 積の可視フロント画素の計算は、もっと複雑な手続きで
ある。主なアイデアは、積の可視表面ポイントが、他の
全ての表示要素の内部に位置する、最も近い、フロント
対向表面のフロント表面にあることである。この表面を
見つけるには、二つのバッファを必要とする。
【0069】第1のバッファは、結局は、積の画像を保
持するP−バッファである。アルゴリズムが処理されて
いる間は、これ程遠くに見つけられた、最も近い、フロ
ント対向ポイントをP−バッファ内に記憶する。第2の
バッファ、即ちサーチバッファ(S−バッファ)は、P
−バッファ内に記憶される表面の後ろに位置するフロン
ト対向表面を探索するために使用される。この種の表面
が見つけられたならば、この表面はP−バッファ内に記
憶される表面を置換する。これによって、フロントから
バックへとシーンを介してP−バッファを前進させ、又
は「トリックリング」させるようにする。以下の擬似コ
ードがこの技術を詳細に述べている。
【0070】P−バッファをバックグラウンドにinitia
lize(初期化) 初期化されない間、積の表示要素を介してcirculate an
d do:P−バッファの後ろにある次の面をS−バッファ
内へcompute 次の表示要素面がフロント対向している画素においてd
o:S−バッファをP−バッファ内へcopy トリックルアルゴリズムのこの記述は、ホストコンピュ
ータ12による実行のための適切なコードに変換され
る。
【0071】描写している間、トリックルアルゴリズム
がソリッドの調整を実行する。調整によって、例えば、
ダングリングエッジ、ダングリング表面、又はソリッド
のゼロボリューム部分などのソリッドのノンマニフォル
ド(非多様体)部分はディスプレイされないことを意味
する。この特性を使って、本発明のソリッドクリッピン
グ方法は、トリックルアルゴリズムと結びついて使用さ
れる。クリッピングボリュームの外側の表面をクリッピ
ングされた表面に投影することによって、ソリッドクリ
ッピング方法は断面領域の外側のソリッドのゼロボリュ
ーム部分を発生する。図8の(a)及び(b)は一例を
提供している。図8の(a)においては、ソリッドAと
Bの交差として記述されているソリッドC(クロスハッ
チングされた)が示されている。図8の(b)におい
て、ゼロボリュームを有するクリッピング平面の前にお
ける領域を有する投影されたソリッドが示されている。
このゼロボリューム部分は、トリックルアルゴリズムの
動作の間に自動的に除去され、従ってディスプレイされ
ない。
【0072】本発明のソリッドクリッピング方法につい
て記述し、かつその幾らかの例示的アプリケーションを
提供してきたが、さらなる変形及び拡大が以下に説明さ
れる。
【0073】多数の場合において、図10に示されてい
るように、平面によって物体をスライスする代わりに、
物体のウェッジ形状の領域を切り取ることが役に立つこ
ともある。ウェッジ形状の領域を引いたこのシーンは、
二つの半空間の合併として表現されることができる。こ
の画像を組み立てるためには、第1のクリッピング平面
を使ってこのシーンを描き、次いでz−バッファをクリ
アしないで、第1のシーンの上に第2のシーンを描写す
る。これは二つのシーンの合併を得る効果を有する。所
望されるできるだけ多くのクリッピング平面がこのよう
にして共に合併される。しかしながら、このシーンは各
クリッピング平面ごとに再描画されなければならない。
以下の擬似コードはこの技術を図示している。 多重クリッピング平面によるソリッドクリッピング: frame bufferをバックグラウンドにset: zmaxにz-bufferをset 各クリッピング平面 do { 所望の位置にクリッピング平面をset 各ソリッドごとにdo } ソリッドクリッピング方法を使って しかし z-buffer 及びframe bufferをクリアしないでrender(描写) } } パラメトリックパッチのようなクリッピング表面は物体
を‘プローブ(試験)’(probe) するために有用となる
こともある。これは図11に示されている。しかしなが
ら、各多角形をパッチに対して幾何学的にクリッピング
することは、計算的には高価である。これによって、z
−バッファ36は、図1の(b)に示されていない追加
のz−バッファと結合して各多角形をクリッピングする
ために使用される。この実行において、第1の走査はパ
ッチを変換し、次いで見る人からはこの表面よりもはる
かに遠くにあるが、最も近い画素を受け取るためにz−
バッファ36の比較関数を変化させ、次いで、シーンを
走査変換する。このことは、目に見える地点からそれら
自体をオーバーラップしないパッチに対するクリッピン
グ表面を限定し、かつ二重のz−比較テストを使用す
る。以下の擬似コードは、この技術を示している。 表面パッチによるソリッドクリッピング: バックグラウンドへframe bufferを set z-buffer1 と z-buffer2を最大に set 表面パッチを z-buffer1内へ render 各ソリッドごとにdo { パリティビット平面を 0にset ソリッドにおける各多角形ごとに do { frame bufferへ多角形をdraw if z > z-buffer1 及び z<z-buffer2 ; パリティ平面における画素をinvert if z> z-buffer1 ; } パリティが奇数である領域のみが frame buffer と z-buffer に書き込まれるようにパリティビット平面を マスクとして使ってクリッピング表面をdraw } 上記において、クリッピング平面は大きな多角形を描く
ことによって概算された。この電位的な走査が必要とさ
れるよりも非常に大きな領域の画素を変換するので、最
も効果的な技術ではないかもしれない。所望されること
は、その投影が、パリティバッファ40内にセットされ
る画素をできるだけ効率的にカバーする、クリッピング
平面上の多角形である。バウンディングボックスがパリ
ティバッファ40内にセットされる画素の周囲にセット
されるか、或いはバウンディングボックスがソリッドの
投影の周囲にセットされるならば、従って走査変換を必
要とする画素はかなり少なくて良い。多数の小型ソリッ
ドを有するシーンについて、これは重要な計算的努力に
おいて有意義な節約を提供する。断面を描くためには、
z−値は、断面の面を渡って正確に挿入されなければな
らない。結果的に、クリッピング平面の表面上に二次元
的なバウンディングボックスを投影することを必要とな
る。
【0074】以下の擬似コードは、バウンディングボッ
クスの使用を示している。 バウンディングボックスによるソリッドクリッピング: frame bufferをバックグラウンドへ set; z-bufferを最大に set; 合併ビット平面を 0にset; バウンディングボックスをinitialize; 所望位置にクリッピング平面をset; 各ソリッドごとにdo { パリティビット平面を 0にset ソリッドにおける各多角形ごとに do { クリッピング平面によって規定された半空間に多角形をclip 多角形を囲繞するためにバウンディングボックスをexpand; z-bufferテストにかかわらず走査変換された 各画素ごとに多角形をdrawかつパリティビットをinvert; } 断面領域とオーバーラップする多角形を見つけるためにクリッピング 平面上へバウンディングボックスをproject; パリティが奇数でありかつ合併ビット平面がセットされていない領域のみが frame buffer及びz-bufferへ書き込まれるようにパリティビット平面と 合併ビット平面をマスクとして使って計算されたクリッピング 平面の多角形 をdraw; この場合、パリティ=1 、合併ビット平面を1にset; }
【図面の簡単な説明】
【図1】(a)は、本発明の実施への使用に適したラス
ターグラフィックシステムのブロック図である。(b)
は、本発明の方法を実行する図1の(a)のグラフィッ
クバッファのブロック図である。
【図2】(a)、(b)及び(c)は、バウンドソリッ
ドをクリッピングするための従来の技術を示す図であ
り、(a)はクリッピング前のソリッド、(b)はクリ
ッピング後のソリッド、(c)は、クリッピングされた
ソリッドが結果的に生じる画像を示している。
【図3】(a)、(b)及び(c)は、境界付けられた
ソリッドをクリッピングする時、本発明によるソリッド
クリッピング方法の結果を示す図であり、(a)はクリ
ッピング前のソリッド、(b)はクリッピング後のソリ
ッド、(c)はバック面Bが見えない、クリッピングさ
れたソリッドが形成した画像を示す図である。
【図4】(a)と(b)は、クリッピング平面の後ろに
ある面の奇数パリティ及び偶数パリティの決定を図示し
ており、(a)はクリッピング前のソリッドを示し、
(b)は、クリッピング後のソリッドを示している。
【図5】(a)と(b)は、クリッピング平面の前にあ
る面の奇数及び偶数のパリティの決定を示す図であり、
(a)はクリッピング前のソリッドを示し、(b)は、
クリッピング後のソリッドを示している。
【図6】(a)と(b)は、図5の(a)と(b)にお
けるように、クリッピング平面の前にある面の奇数及び
偶数パリティの決定を示す図であり、図6の(b)で
は、クリッピング平面の前にあるソリッドボリュームを
クリッピングし、かつクリッピング平面上後方へ投影し
た後に得られた結果をさらに示していある。
【図7】(a)乃至(d)は、本発明の方法によるソリ
ッドのクリッピングを示す図であり、(a)はワールド
座標におけるシーンを示しており、(b)はクリッピン
グ平面への投影後のシーンを示し、(c)はこの方法の
第1のパス後のバッファの内容とパリティバッファを示
しており、(d)はこの方法の第2のパス後のバッファ
の内容とソリッドの断面とを示している。
【図8】(a)はソリッドAとBの交差として記述され
るソリッドを図示しており、(b)は、投影がボリュー
ムゼロを有するソリッドAとBのクリッピング平面上へ
の投影を示す図である。
【図9】本発明による方法の実施例を示すフローチャー
トである。
【図10】二つのクリッピング平面が交わったソリッド
を示す図である。
【図11】クリッピング表面又は「パッチ」を有するソ
リッドを示す図である。
【符号の説明】
12 ホストプロセッサ 14 グラフィックサブシステム 16 ディスプレイ素子 18 幾何学的処理 20 走査変換 22 グラフィックバッファ 24 ディスプレイ 30 ホストバス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アブラハム エルセイド メガヘド アメリカ合衆国53711、ウイスコンシン州 マディソン、マウンド ストリート 1413 (72)発明者 ジャロルソー ロマン ロッシナク アメリカ合衆国10562、ニューヨーク州オ ッシニング、リンカーン プレイス 1956 (72)発明者 ベント−オラフ シュナイダー アメリカ合衆国10562、ニューヨーク州オ ッシニング、チャールズ プレイス 2

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 ソリッド物体上へ投影する各画素ごと
    に、 画素におけるクリッピング平面の深度の関数として前記
    画素のパリティを決定するステップと、 所定の型の前記パリティを有するように決定された各画
    素ごとに、 前記画素が前記ソリッド物体の内部領域内にある材料上
    に投影する前記画素であることを示すように選択された
    可視特性で前記画素をディスプレイするステップと、 を備えているソリッド物体の断面画像をディスプレイす
    るための画素処理方法。
  2. 【請求項2】 ソリッド物体の面上へ投影する各画素ご
    とに、及び前記ソリッド物体の各面ごとに、 第1のパリティ表示に対して前記画素のパリティフラグ
    を初期化するステップと、 前記画素の深度を前記画素におけるフロントクリッピン
    グ平面の深度と比較するステップと、 前記画素の深度が前記クリッピング平面の深度よりも大
    きい場合、 画素バッファ手段内へ前記画素を記憶するステップと、 前記画素の前記パリティフラグを反対のパリティコンデ
    ィションへ変化させるステップと、 各画素の処理後、所定のパリティフラグ値を有する全て
    の画素に対して、 前記画素が前記ソリッド物体の内部領域内の材料上へ投
    影することを示すように選択された所定の特性と等しく
    なるように、画素ディスプレイ特性を前記画素バッファ
    手段内にセットするステップと、 前記フロントクリッピング平面の深度に等しくなるよう
    に、前記画素の深度を前記画素バッファ手段内にセット
    するステップとを備えているソリッド物体の断面画像を
    ティスプレイするための画素処理方法。
  3. 【請求項3】 第1のパスの間、ソリッド物体の面上へ
    投影する各画素ごとに、及び前記ソリッド物体の各面ご
    とに、 前記画素のパリティフラグを第1のパリティ表示に初期
    化するステップと、 前記画素の深度を前記画素におけるフロントクリッピン
    グ平面の深度と比較するステップと、 前記画素の深度が前記フロントクリッピング平面の深度
    以下であるならば、 前記画素が前記ソリッド物体の内部領域内の材料上へ投
    影することを示すように選択された所定の特性と等しく
    なるように、画素ディスプレイ特性を画素バッファ手段
    内にセットするステップと、 前記フロントクリッピング平面の深度に等しくなるよう
    に前記画素バッファ手段内に前記画素の深度をセットす
    るステップと、 第2のパスの間にかつ、前記ソリッド物体の面上へ投影
    する各画素ごとに、及び前記ソリッド物体の各面ごと
    に、 前記画素の深度を、前記画素におけるフロントクリッピ
    ング平面の深度と前記画素におけるバッククリッピング
    平面の深度とに比較するステップと、 前記画素の深度が前記フロントクリッピング平面の深度
    より大きく、さらに前記バッククリッピング平面の深度
    以下であるならば、 前記ソリッド物体の外部表面を示すように選択された所
    定の特性と等しくなるように、画素ディスプレイ特性を
    前記画素バッファ手段内にセットするステップと、 前記画素バッファ手段内に、前記画素の深度をセットす
    るステップとを備えているソリッド物体の断面画像をデ
    ィスプレイするための画素処理方法。
  4. 【請求項4】 ソリッド物体の面上へ投影する各画素ご
    とに、及び前記ソリッド物体の各面ごとに、 前記画素のパリティフラグを第1のパリティ表示へ初期
    化するステップと、 フロントクリッピング平面の深度を前記ソリッド物体の
    前に位置するように初期化するステップと、 前記フロントクリッピング平面と元来協働する第1の深
    度と等しくなるようにバッククリッピング平面の深度を
    初期化するステップと、 前記画素の深度を前記画素におけるバッククリッピング
    平面の前記深度と比較するステップと、 前記画素の深度が前記バッククリッピング平面の前記深
    度以下であるならば、 前記画素のパリティフラグを反対のパリティコンディシ
    ョンに変化させるステップと、 各画素の処理後、所定のパリティフラグ値を有する全て
    の画素に対して、 前記画素が前記ソリッド物体の内部領域内の材料上へ投
    影することを示すように選択された所定の特性と等しく
    なるように、画素ディスプレイ特性を前記画素バッファ
    手段内にセットするステップと、 前記フロントクリッピング平面の深度と等しくなるよう
    に、前記画素の深度を前記画素バッファ手段内にセット
    するステップと、 前記フロントクリッピング平面の第1の深度と等しくな
    るように前記フロントクリッピング平面の深度を再初期
    化するステップと、 前記バッククリッピング平面と元来協働する第2の深度
    と等しくなるように前記バッククリッピング平面の深度
    を再初期化するステップと、 前記ソリッド物体の面上へ投影する各画素ごとに、及び
    前記ソリッド物体の各面ごとに、 前記画素の深度を、前記画素における前記フロントクリ
    ッピング平面の深度と、前記画素における前記バックク
    リッピング平面の深度と比較するステップと、 前記画素の深度が前記フロントクリッピング平面の深度
    よりも大きく、前記バッククリッピング平面の深度以下
    であるならば、 前記ソリッド物体の外部表面を示すように選択された所
    定特性と等しくなるように、画素ディスプレイ特性を画
    素バッファ手段内にセットするステップと、 前記画素の深度を前記画素バッファ手段内にセットする
    ステップとを備えているソリッド物体の断面画像をティ
    スプレイするための画素処理方法。
  5. 【請求項5】 第1のパリティ表示へ各画素ごとのパリ
    ティフラグを初期化するステップと、 フロントクリッピング平面の前に位置する面と、前記フ
    ロントクリッピング平面の後ろに位置する面とを決定す
    るためにソリッド物体の全ての面を前処理するステップ
    と、 前記フロントクリッピング平面の前に延出している全て
    の面を、z−軸に沿って、前記フロントクリッピング平
    面上へ投影するステップと、 前記フロントクリッピング平面の前で延出している面上
    へ投影する全ての画素に対して、 各画素の深度を各画素における前記フロントクリッピン
    グ平面の深度と比較するステップと、 次いで前記フロントクリッピング平面の深度以下である
    深度を有する各画素ごとに、 前記画素の前記パリティフラグを反対のパリティコンデ
    ィションに変化させるステップと、 前記フロントクリッピング平面の後ろにある面上に投影
    する全ての画素に対して、 各画素の深度と各画素におけるバッククリッピング平面
    の深度を比較するステップと、 次いで前記バッククリッピング平面の深度以下である深
    度を有する各画素ごとに、 前記ソリッド物体の外部表面を示すように選択された所
    定特性と等しくなるように、画素ディスプレイ特性を画
    素バッファ手段内にをセットするステップと、 前記画素の深度を前記画素バッファ手段内にセットする
    ステップと、 所定のパリティフラグ値を有するように定められた全て
    の画素に対して、 前記画素が、前記ソリッド物体の内部領域内の材料上へ
    投影することを示すように選択された所定の特性と等し
    くなるように、画素ディスプレイ特性を前記画素バッフ
    ァ手段内にセットするステップと、 前記フロントクリッピング平面の深度と等しくなるよう
    に、前記画素の深度を前記画素バッファ手段内にセット
    するステップと、 を備えているソリッド物体の断面画像をティスプレイす
    るための画素処理方法。
  6. 【請求項6】 第1のパリティ表示へ各画素ごとのパリ
    ティフラグを初期化するステップと、 ソリッド物体の面に投影する各画素ごとに、及び前記ソ
    リッド物体の各面ごとに、 前記画素の深度を、前記画素におけるフロントクリッピ
    ング平面の深度と比較するステップと、 前記画素の深度が前記画素における前記フロントクリッ
    ピング平面の深度以下であるならば、 前記画素のパリティフラグを反対のパリティコンディシ
    ョン、その他へ変化させるステップと、 前記画素の深度が前記画素におけるバッククリッピング
    平面の深度より下であるならば、 前記ソリッド物体の外部表面を示すように選択された所
    定の特性に等しくなるように、画素ディスプレイ特性を
    画素バッファ手段内にセットするステップと、 前記画素の深度を前記画素バッファ手段内にセットする
    ステップと、 所定のパリティフラグ値を有する全ての画素に対して、 前記画素が、前記ソリッド物体の内部領域内の材料へ投
    影することを示すように選択された予め定められた特性
    に等しくなるように、画素ディスプレイ特性を前記画素
    バッファ手段内にセットするステップと前記フロントク
    リッピング平面の深度と等しくなるように、前記画素の
    深度を前記画素バッファ手段内にセットするステップ
    と、 を備えているソリッド物体の断面画像をディスプレイす
    るための画素処理方法。
  7. 【請求項7】 各画素の視界平面に対する深度及び各画
    素の可視特性を含む、ソリッド物体へ投影する複数の画
    素の特性を特定化する情報を記憶するための画素バッフ
    ァ手段と、 画素におけるクリッピング平面の深度の関数として、前
    記画素のパリティ値を決定するための手段と、 前記決定手段に接続され、各画素の前記決定パリティ値
    を特定するための情報を記憶するための手段とを備え、 前記決定手段が、前記画素バッファ手段内に、所定のパ
    リティ値に等しい記憶されたパリティ値を有する各画素
    ごとに、前記画素が前記ソリッド物体の内部領域内の材
    料上へ投影することを示すように選択された所定の可視
    特性を特定化する情報と、前記画素の深度が前記クリッ
    ピング平面の深度に等しいことを特定化する情報とを記
    憶するための手段とをさらに含んでいることよりなるソ
    リッド物体の断面画像をディスプレイするための画素処
    理装置。
  8. 【請求項8】 ディスプレイ手段の各画素ごとに情報を
    記憶するための第1のメモリ手段を含み、前記記憶され
    た情報が前記画素の可視特性を特定し、前記ディスプレ
    イ手段の各画素ごとに、情報を記憶するための第1の深
    度バッファ手段をさらに含み、前記第1の深度バッファ
    手段内に記憶された情報が画素の深度を視界平面に対し
    て特定するフレームバッファと、 前記ディスプレイ手段の各画素ごとに、クリッピング表
    面の深度を前記視界平面に対して記憶するための第2の
    深度バッファ手段と、 ソリッド物体の画像へ投影する各画素ごとに、前記画素
    のパリティ値を記憶するための第2のメモリ手段と、 前記第1のメモリ手段と、前記第2のメモリ手段と、前
    記第1と第2の深度バッファ手段と結合しており、画素
    の深度の関数として、前記画素における前記クリッピン
    グ表面の深度の関数として、及びz−軸に沿った前記画
    素の投影によって横断される前記ソリッド物体の多数の
    面の関数として、前記画素のパリティ値を決定するため
    の手段を含んでおり、さらに前記第2のメモリ手段内に
    前記決定されたパリティ値を記憶する、画素処理手段
    と、 を備えているグラフィックバッファ。
JP4300756A 1991-12-26 1992-11-11 画素処理方法及び装置並びにグラフィックバッファ Expired - Fee Related JP2572515B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US815105 1991-12-26
US07/815,105 US5428716A (en) 1991-12-26 1991-12-26 Solid-clip methodology and architecture for clipping solid models and displaying cross-sections using depth-buffers

Publications (2)

Publication Number Publication Date
JPH05258077A true JPH05258077A (ja) 1993-10-08
JP2572515B2 JP2572515B2 (ja) 1997-01-16

Family

ID=25216876

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4300756A Expired - Fee Related JP2572515B2 (ja) 1991-12-26 1992-11-11 画素処理方法及び装置並びにグラフィックバッファ

Country Status (3)

Country Link
US (1) US5428716A (ja)
EP (1) EP0548629A2 (ja)
JP (1) JP2572515B2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06223198A (ja) * 1993-01-26 1994-08-12 Hitachi Ltd 光線追跡による画像生成装置及び方法
WO1994027240A1 (en) * 1993-05-10 1994-11-24 Apple Computer, Inc. Computer graphics system having high performance multiple layer z-buffer
US5586270A (en) * 1993-09-30 1996-12-17 Intel Corporation Method and apparatus for upgrading a central processing unit and existing memory structure in a computer system
US6172682B1 (en) * 1996-01-24 2001-01-09 Hewlett-Packard Co. Detecting insideness of a rectangle to an arbitrary polygon
US6115047A (en) * 1996-07-01 2000-09-05 Sun Microsystems, Inc. Method and apparatus for implementing efficient floating point Z-buffering
US6046746A (en) * 1996-07-01 2000-04-04 Sun Microsystems, Inc. Method and apparatus implementing high resolution rendition of Z-buffered primitives
US5926182A (en) * 1996-11-19 1999-07-20 International Business Machines Corporation Efficient rendering utilizing user defined shields and windows
US5926183A (en) * 1996-11-19 1999-07-20 International Business Machines Corporation Efficient rendering utilizing user defined rooms and windows
US6234901B1 (en) * 1996-11-22 2001-05-22 Kabushiki Kaisha Sega Enterprises Game device, picture data and flare forming method
US6917371B1 (en) 1996-11-22 2005-07-12 Kabushiki Kaisha Sega Enterprises Game device, picture data forming method and medium
US6130670A (en) * 1997-02-20 2000-10-10 Netscape Communications Corporation Method and apparatus for providing simple generalized conservative visibility
KR100298789B1 (ko) * 1998-04-29 2001-09-06 윤종용 그래픽 처리에 있어서 클리핑 처리방법
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US7346643B1 (en) * 1999-07-30 2008-03-18 Mips Technologies, Inc. Processor with improved accuracy for multiply-add operations
GB0023681D0 (en) * 2000-09-27 2000-11-08 Canon Kk Image processing apparatus
US8692848B2 (en) * 2009-12-17 2014-04-08 Broadcom Corporation Method and system for tile mode renderer with coordinate shader
US9317943B2 (en) * 2013-07-29 2016-04-19 Oracle International Corporation Interactive intersection areas
US10026204B2 (en) 2015-01-27 2018-07-17 Splunk Inc. Efficient point-in-polygon indexing technique for processing queries over geographic data sets
US9836874B2 (en) * 2015-01-27 2017-12-05 Splunk Inc. Efficient polygon-clipping technique to reduce data transfer requirements for a viewport
US9607414B2 (en) 2015-01-27 2017-03-28 Splunk Inc. Three-dimensional point-in-polygon operation to facilitate displaying three-dimensional structures
US9916326B2 (en) 2015-01-27 2018-03-13 Splunk, Inc. Efficient point-in-polygon indexing technique for facilitating geofencing operations

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63251870A (ja) * 1987-04-08 1988-10-19 Seiko Instr & Electronics Ltd 図形処理装置
JPH02132572A (ja) * 1988-11-14 1990-05-22 Nippon I B M Kk 画像表示装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3816726A (en) * 1972-10-16 1974-06-11 Evans & Sutherland Computer Co Computer graphics clipping system for polygons
US4766556A (en) * 1984-11-20 1988-08-23 Matsushita Electric Industrial Co., Ltd. Three-dimensional solid object manipulating apparatus and method therefor
US4679041A (en) * 1985-06-13 1987-07-07 Sun Microsystems, Inc. High speed Z-buffer with dynamic random access memory
JPH0756678B2 (ja) * 1985-11-01 1995-06-14 株式会社日立製作所 対話形形状モデリングシステム
US4941111A (en) * 1986-04-18 1990-07-10 Advanced Micro Devices, Inc. Video picking and clipping method and apparatus
US4821213A (en) * 1986-12-19 1989-04-11 General Electric Co. System for the simultaneous display of two or more internal surfaces within a solid object
JP2563298B2 (ja) * 1987-01-28 1996-12-11 株式会社東芝 3次元画像処理装置
US4836688A (en) * 1987-04-08 1989-06-06 Kingsley Nominees Pty. Ltd. Whisk
US5012433A (en) * 1987-04-27 1991-04-30 International Business Machines Corporation Multistage clipping method
US4825391A (en) * 1987-07-20 1989-04-25 General Electric Company Depth buffer priority processing for real time computer image generating systems
US4855938A (en) * 1987-10-30 1989-08-08 International Business Machines Corporation Hidden line removal method with modified depth buffer
US4888712A (en) * 1987-11-04 1989-12-19 Schlumberger Systems, Inc. Guardband clipping method and apparatus for 3-D graphics display system
US4907174A (en) * 1988-06-02 1990-03-06 Sun Microsystems, Inc. Z-buffer allocated for window identification
US5040130A (en) * 1988-09-20 1991-08-13 International Business Machines Corporation Computer graphics boundary--defined area clippping and extraneous edge deletion method
US4984157A (en) * 1988-09-21 1991-01-08 General Electric Company System and method for displaying oblique planar cross sections of a solid body using tri-linear interpolation to determine pixel position dataes
US5249264A (en) * 1988-11-14 1993-09-28 International Business Machines Corporation Image display method and apparatus
US5003497A (en) * 1988-12-15 1991-03-26 Sun Micosystems Inc Method for three-dimensional clip checking for computer graphics
JPH02173878A (ja) * 1988-12-27 1990-07-05 Toshiba Corp 3次元断面表示装置
US5051737A (en) * 1989-02-23 1991-09-24 Silicon Graphics, Inc. Efficient graphics process for clipping polygons
US5027292A (en) * 1989-04-19 1991-06-25 International Business Machines Corporation Multiple depth buffers for graphics and solid modelling
US5113490A (en) * 1989-06-19 1992-05-12 Silicon Graphics, Inc. Method for forming a computer model from an intersection of a cutting surface with a bounded volume
US5268995A (en) * 1990-11-21 1993-12-07 Motorola, Inc. Method for executing graphics Z-compare and pixel merge instructions in a data processor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63251870A (ja) * 1987-04-08 1988-10-19 Seiko Instr & Electronics Ltd 図形処理装置
JPH02132572A (ja) * 1988-11-14 1990-05-22 Nippon I B M Kk 画像表示装置

Also Published As

Publication number Publication date
EP0548629A2 (en) 1993-06-30
JP2572515B2 (ja) 1997-01-16
US5428716A (en) 1995-06-27
EP0548629A3 (ja) 1994-01-05

Similar Documents

Publication Publication Date Title
JP2572515B2 (ja) 画素処理方法及び装置並びにグラフィックバッファ
US4888712A (en) Guardband clipping method and apparatus for 3-D graphics display system
US5497453A (en) Method and apparatus for detecting and visualizing interferences between solids
EP0812447B1 (en) Computer graphics system for creating and enhancing texture maps
US6259461B1 (en) System and method for accelerating the rendering of graphics in a multi-pass rendering environment
JP3390463B2 (ja) 3次元グラフィックスにおけるシャドウ・テスト方法
JP5188628B2 (ja) 3dオブジェクトの3dモデルをレンダリングするための方法及びシステム
US5012433A (en) Multistage clipping method
US7362332B2 (en) System and method of simulating motion blur efficiently
JP4116648B2 (ja) オクルージョンカリング方法および描画処理装置
US8269770B1 (en) Tessellation of trimmed parametric surfaces by walking the surface
US9153068B2 (en) Clipless time and lens bounds for improved sample test efficiency in image rendering
JP4142065B2 (ja) 縮小zバッファ生成方法、隠面消去方法、およびオクルージョンカリング方法
JP2001501349A (ja) 3dグラフィックスにおける属性補間のための方法及び装置
US10853990B2 (en) System and method for processing a graphic object
US5926182A (en) Efficient rendering utilizing user defined shields and windows
US6724383B1 (en) System and computer-implemented method for modeling the three-dimensional shape of an object by shading of a two-dimensional image of the object
US6542154B1 (en) Architectural extensions to 3D texturing units for accelerated volume rendering
US7952592B2 (en) System and method for view-dependent cutout geometry for importance-driven volume rendering
JP4047421B2 (ja) ユーザ定義によるルームおよびウィンドウを用いた効率的レンダリング方法および装置
JP4425734B2 (ja) 隠線を消去したベクトルイメージを提供する方法
Yu Efficient visibility processing for projective texture mapping
Erleben et al. Signed distance fields using single-pass gpu scan conversion of tetrahedra
KR100328593B1 (ko) 3-d 그래픽용 고속 클립핑 방법
GB2350993A (en) Generation of mixed semitransparent and opaque objects on a computer display screen.

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees