JPH07122908B2 - 3次元のソリッド物体を表す表示可能情報を生成する装置と方法 - Google Patents

3次元のソリッド物体を表す表示可能情報を生成する装置と方法

Info

Publication number
JPH07122908B2
JPH07122908B2 JP4002910A JP291092A JPH07122908B2 JP H07122908 B2 JPH07122908 B2 JP H07122908B2 JP 4002910 A JP4002910 A JP 4002910A JP 291092 A JP291092 A JP 291092A JP H07122908 B2 JPH07122908 B2 JP H07122908B2
Authority
JP
Japan
Prior art keywords
primitive
depth
value
point
depth value
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 - Lifetime
Application number
JP4002910A
Other languages
English (en)
Other versions
JPH0581438A (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.)
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 JPH0581438A publication Critical patent/JPH0581438A/ja
Publication of JPH07122908B2 publication Critical patent/JPH07122908B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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
    • G06T15/405Hidden part removal using Z-buffer

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータ・ディス
プレイ装置及び方法に係り、更に詳細に説明すれば、コ
ンストラクティブ・ソリッド・ジオメトリ(CSG)表
現をレンダリングするための装置及び方法に係る。
【0002】
【従来の技術】部品や工具を表すソリッド・モデルを指
定するには、合併(和集合)や、交わり(積集合)や、
差(差集合)のような複数のブール演算を通して、複数
のサブソリッド又はプリミティブ・ボリュームを組み合
わせることができる。このソリッドを表すブール演算式
は、2進ツリー表示の形式で、一層正確には、2進の有
向性ルート付き非巡回グラフ(directed rooted acycli
c graph)の形式で、コンピュータ・メモリ内に効率的
に記憶することができる。
【0003】図1には、2個のサブソリッド2及び3の
合併から成る、ソリッド1の2進ツリーが図式的に示さ
れている。サブソリッド3は、ブロック・プリミティブ
4と円筒プリミティブ5との差から構成されている。こ
のツリーの形態は、ブール演算式(2)+((4)−
(5))を解析すると、直接的に得ることができる。こ
のツリーのルート(ソリッド1)は、ブール演算式が定
義するソリッドと関連している。このツリーの内部ノー
ドは、複数のブール演算に対応し、従ってサブソリッド
と関連している。このツリーのリーフは、プリミティブ
・ボリュームと関連しており、他方、これらのプリミテ
ィブ・ボリュームは、比較的単純な代数的半空間(即
ち、3つの空間座標の単純な多項式関数が、正でない値
を有しているような空間領域)の交わりであることが多
い。例えば、原点に中心を置く半径Rの球体は、 x2
2+z2−R2 ≦ 0 の関数により定義される半空間で
ある。任意の位置と方向を有するプリミティブ・ボリュ
ームは、リジッド・モーション変換と、回転及び平行移
動の組み合わせと、適当なローカル座標系で定義された
合同なプリミティブ・ボリュームによって記述すること
ができる。単純なプリミティブ・ボリュームは、球体
や、円筒体又は円錐体のようなタイプと、半径や、長さ
又は項角のような比較的少数の真性パラメータによって
表すことができる。このようなツリーは、コンストラク
ティブ・ソリッド・ジオメトリ表現として知られてお
り、以下これを「CSG」と略記する。
【0004】プリミティブ・ボリュームの位置や寸法
(即ち、真性パラメータ)を記述することができる若干
の主要パラメータは、CSGツリーが表す複数のソリッ
ドのファミリ全体における特定のメンバを特徴付ける。
従って、このようにしてパラメータ化されたCSG表現
を用いると、それぞれの寸法が許容範囲内で変動する処
の、複数の部品の組み立て体をモデル化することができ
る。
【0005】CSG物体(オブジェクト)は、それぞれ
の面が互いに重なる複数のプリミティブから構成される
のが普通である。しかし、重なった境界を有する複数の
ソリッドについてのブール演算は、非正則化(non-regu
larized)された集合を作り出すことがある。従って、
CSG演算子は、正則化(regularized)されたソリッ
ドを常に生成するように、適当に修正されてきた。しか
し、これらの修正は、追加の処理を必要とする。
【0006】一般に、境界の評価を通してCSGソリッ
ドをシェーディングすることは、高価なデータ処理手順
である。光線の照射を通してCSGモデルをシェーディ
ングするという効率的且つ直接的な方法は、ファセット
化したモデルや、2次の半空間のブール組み合わせにつ
いて利用することができる。しかし、光線の照射は、光
線−面間の多数の交わりを計算することを含むから、高
次の代数又はパラメトリックな面が含まれる場合は、著
しく非効率となる。
【0007】面の評価が、光線−面間の交わりより速い
という点を考慮して、適応性タイル張り法(充填法)を
伴うスキャン変換技術が、境界モデルのシェーディング
に使用されることが多い。このモデルの可視面を自動的
に選択するには、ハードウェア形式のzバッファ(深度
バッファ)を用いる。CSGソリッドの面は、直接的に
は利用することができないから、zバッファによる可視
性テストを、ソリッド上に位置するプリミティブ面のそ
れぞれの部分を選択する処の、トリミング・プロセスと
組み合わせる必要がある。
【0008】この選択を行うソフトウェアの実現形態
は、本発明者の1人によりハードウェアを用いた深度テ
ストと組み合わされ、また J.R. Rossignac 及び A.A.
G. Requicha の論文である “Depth buffering display
techniques for constructivesolid geometry", IEEE
Computer Graphics and Applications, Vol.6, No.9, p
p. 29-39, September 1986年 に記述されている。一般
に、この技術は、プリミティブAの前向きの面(前面)
上にある点Pを、対応するピクセルのzバッファに記憶
されている深度値と比較することを含んでいる。もし、
点Pがzバッファに記憶されている点の前方にあれば、
点PはCSGグラフに対して「分類」、即ちテストされ
ることになる。ソリッドの境界上にある点が、zバッフ
ァにレンダリングされるのに対し、ソリッドの境界の内
側又は外側にある点は、廃棄される。ソリッドの内側に
ある点は、zバッファによる可視性テストを通して、自
動的に不合格とされる。従って、点Pをこのグラフ内の
一のプリミティブに対してテストするのではなく、点P
をプリミティブAの「Iゾーン」に対して分類すること
により、性能を向上させることができる。但し、「Iゾ
ーン」とは、元のCSGグラフの諸ノードの部分集合の
交わりである。もし、点PがプリミティブAのIゾーン
の内側に位置していれば、点Pは、最終ソリッド上にあ
るか又は最終ソリッドの内側に位置する。
【0009】スキャン変換法は、観察方向に沿って個々
のスクリーン・ピクセル上に投影する処の、面点(surf
ace point)を生成する周知の技術である。観察者から
遠点に向かう観察方向に沿って計算された3次元的な点
の深度値は、対応するピクセルに関連するzバッファ内
に記憶することができる。一のピクセルのzバッファ内
にその深度値が記憶されている3次元的な点を、一のプ
リミティブに対して分類するには、このプリミティブの
境界をスキャン変換するとともに、この被テスト点の後
方にあるプリミティブ面の層の数のパリティを計算すれ
ばよい。このため、zバッファに記憶された深度値に対
し、被テスト点と同じピクセルに投影する面点の深度値
を比較することが行われる。スキャン変換された点の深
度値が、zバッファに記憶された点の深度値より大きく
なるたびに、そのピクセルに関連する2進のパリテイ・
フラグが反転される。
【0010】一のCSG表現に対して一の点を分類する
には、その点を全てのプリミティブに対して分類するだ
けでは十分ではない。即ち、このような点−プリミティ
ブ間の分類結果を、一のブール演算式に従って組み合わ
せる必要がある。例えば、交わりのような単純なブール
演算式については、この結果をブール結果の結合(論理
積)として記述することができるから、この結果を記憶
する必要はない。分類アルゴリズムは、これらのプリミ
ティブをいずれの順序で処理してもよく、これらの結果
の1つが「偽」であれば、直ちに停止する。このこと
は、例えばこの点が一の交わり(ブール積)内のプリミ
ティブから外れていた場合に該当する。もし、全てのプ
リミティブが処理され且つ「偽」の結果が判明しなけれ
ば、この点は、ブール演算式が定義するソリッドの内側
にある。
【0011】しかし、一層複雑なCSG表現を評価する
場合は、中間の2進結果を一時的に記憶するための大容
量の記憶手段が必要となる、という問題を生ずる。かか
る一時的な記憶手段として、普通はスタック機構を使用
する。必要なスタック機構の深さは、CSGグラフの深
さに匹敵することがある。
【0012】ピクセル当たりのシステム・メモリの容量
は制限されているから、各ピクセルごとに任意の深さを
有するスタック機構を設けることは実際的でない。しか
も、必要なプリミティブのスキャン変換の回数を最小と
するには、全てのピクセルについて並列に分類動作を行
うことが望ましい。
【0013】J.Goldfeather 他の論文である “Near Re
al-Time CSG Rendering using TreeNormalization and
Geometric Pruning", IEEE CG&A, Vol.9, No.3, pp. 20
-28, May 1989 に記述されている技術は、メモリの制限
を回避するため、CSG表現をそれよりも相当に大きい
「積の和」形式へ変換し、かかる形式内でプリミティブ
・インスタンスを何回も重複させて、これらのプリミテ
ィブ・インスタンスが数個の積に現れるようにしてい
る。この論文では、冗長(空)の積を除去する技術も、
論じられている。
【0014】この技術では、最初にスキャン変換を繰り
返し用いて、プリミティブ面を、適当な積に対してトリ
ムする。次いで、トリムされた面を、最終のzバッファ
で併合(マージ)して、全ての積のうちから最前方の面
を選択する。可視面を選択するためと、ソリッドの内側
にある面を廃棄するために、一のzバッファが用いられ
ている。
【0015】しかし、留意すべきは、複数の積が互いに
干渉して、一の積の一の前面がソリッド上に位置しなく
なる場合がある、ということである。
【0016】このような理由で、CSG処理に対する投
影的なアプローチについて、一の積の可視的な前面(可
視前面)を決定するための効率的且つ正確な方法が要望
されている。zバッファとの比較は、zバッファの限定
された分解能の範囲内で行われるから、数個のプリミテ
ィブ面が重なるという状況や、一のピクセルの光線が隣
接する2つの面の共通のエッジに極めて近接して当該2
つの面に交わるという状況を、正確に処理することが要
望されている。
【0017】これらの両ケースについては、スキャン変
換の丸め誤差(round-off error)に起因して、計算さ
れた深度値が必ずしも正確でないことがある。しかし、
これらの固有の不正確さにも拘らず、CSG表現の正則
化されたバージョンに対応する処の、表示可能なイメー
ジを生成するという要望が、依然として存在する。一の
ソリッドが正則化されていると見なされるのは、3次元
のユークリッド空間に関して、このソリッドがその内側
の位相的閉包に等しい場合である。従って、正則化され
たソリッドは、定義により、ダングリング(dangling)
エッジ又は面を持たない。かくて、数個のプリミティブ
上に位置するが、最終結果における3次元的なボリュー
ムのいずれをも境界付け(bounding)しない面又はエッ
ジは、表示すべきでない。
【0018】以下の米国特許は、イメージ表示又はCS
Gレンダリングの種々の側面を教示している。米国特許
第4609917号は、zバッファを利用した、汎用の
グラフイック・アーキテクチャの変形を開示している。
米国特許第4625289号は、一の面を記述する関数
をサンプリングして、この面上の点を生成するようにし
た面表示方法を開示している。かかるサンプリングによ
りカバーされる各ピクセルごとに、観察者に最も近いサ
ンプル点を見つけるために、zバッファが利用されてい
る。米国特許第4736306号は、境界−CSG間の
変換技術を開示している。米国特許第4737921号
は、ピクセル・データを表示するためのマルチプロセッ
サ・システムを開示している。詳しくは、数台のプロセ
ッサが並列に計算した複数のイメージ(強度値及び深度
値)を併合するハードウェア・アーキテクチャが提案さ
れており、また個々のイメージを実時間で移動させるこ
とができるシャドウイング・プロセッサも、このシステ
ムに設けられている。米国特許第4821214号は、
3変量ベクトル有理多項式を用いて、モデルの自由形式
変形を行う技術を開示している。この方法は、CSGソ
リッド・モデリング・システムに適用可能であるといわ
れている。米国特許第4825391号は、深度メモリ
の代わりに、スパン比較を用いるようにした可視面アー
キテクチヤを開示している。米国特許第4855398
号は、多角形(ポリゴン)の可視ラインを表示する方法
を開示している。zバッファは、多角形のエッジに対す
る特別のz値で以て初期化される。かかる多角形がzバ
ッファへラスタ化されて、依然として特別のz値を有す
るピクセルだけが適当に色付けされる。米国特許第49
07174号は、どのグラフイック表示ウインドウにz
バッファが専用されているかを識別するため、zバッフ
ァの一部において或る範囲のz深度値を使用することを
開示している。
【0019】最後に、米国特許第4858149号は、
CSG物体のレンダリングを行うためのソリッド・モデ
リングを開示している。立方体が全てのプリミティブの
境界と交わらなくなるまで、或いは立方体が現在の分解
能より小さくなるまで、領域(ユニバース)を帰納的に
段々と小さい立方体に分解する。この特許は、本発明が
解決した問題を解決することに向けられているものの、
前者のアプローチは、効率的でないばかりか、ハードウ
ェア形式のzバッファを利用していない。
【0020】多くの研究者は、それぞれのプリミティブ
面を、一の積内の全てのプリミティブの全ての前面(fr
ont face)及び後面(back face)と比較して、かかる
プリミティブ面をトリミングするためのハードウェア・
アルゴリズムを実現している。これらの比較は、各ピク
セルごとに独立して行われ、そして各ピクセルごとの深
度テスト、マスク、カウンタ及び論理ビット演算を含ん
でいる。この技術は、単に2つの追加バッファを用いる
に過ぎない。このアルゴリズムは、各ピクセルごとに1
台のローカル・メモリ付きプロセッサを有する、ピクセ
ル−パワー・グラフィック・システム上で実現されてい
る。このアプローチは、J. Goldfeather他の前掲の論文
“Near Real-Time CSG Rendering using Tree Normali
zationand Geometric Pruning", IEEE CG&A, Vol.9, N
o.3, pp.20-28, May 1985 に記述されている。
【0021】本発明者の一部を含む他の研究者は、積を
処理するための一層効率的な技術を開発した。この技術
は「トリックル(trickle)」アルゴリズムと呼ばれ、G
oldfeather 他の技術と比較すると、一般に、一層少数
のプリミティブ・スキャン変換及びバッファ併合演算を
必要とするに過ぎない。従って、この技術は、近い将来
に出現するグラフイック・ワークステーションで実現す
るのに、一層適しているものと信じられている。このト
リックル・アルゴリズムは、D.A. Epstein, F.W. Janse
n 及び J.R. Rossignac の研究報告である “Z-buffer
Rendering fromCSG: the Trickle Algorithm", RC 1518
2 (#67629), IBM Research Division,November 1989 に
記述されている。
【0022】Goldfeather 他の技術と、Epstein 他の技
術の双方とも、プリミティブの隠面の一連の層を生成し
且つこれをトリミングして、非凸状のプリミティブを処
理するというものである。
【0023】トリックル・アルゴリズムの重要な特徴
は、一の積のプリミティブ面を、(観察者から遠点に向
かって)前方から後方へ至る順序で、各ピクセルにおい
て独立して処理することにある。この順序付けを利用す
ると、一の可視点又は背景(バックグラウンド)が、現
在の積の投影によってカバーされる各ピクセルに到達す
るや否や、この積の処理を停止することができる。トリ
ックル・アルゴリズムの他の利点は、1つのプリミティ
ブ面層から他のプリミティブ面層へ(観察者から遠点に
向かって)「より深く」移動している間に、この積内の
少なくとも1つのプリミティブから外れているために、
この積上に位置しないことが明らかなプリミティブ面層
をスキップすることができる、ということにある。
【0024】トリックル・アルゴリズムは、3組の深度
及び強度バッファを利用する。これらのバッファは、可
視面の選択に使用される標準的な2組の深度及び強度バ
ッファと、これらの2組の深度及び強度バッファに従属
する1組の追加的な深度及び強度バッファである。ここ
で、トリックル・アルゴリズムは、スクリーンの各象限
ごとに1パスずつ、全体として4パスで実行されるよう
に構成することができる、という点に留意すべきであ
る。スクリーンを4象限に分割する場合、グラフィック
・ワークステーションで普通に使用可能な1つの深度バ
ッファと2つの強度バッファという標準的な構成につい
ても、トリックル・アルゴリズム用の十分なバッファを
与えることができる。
【0025】
【発明が解決しようとする課題】従って、本発明の目的
は、CSGによって表現されたソリッドの処理を一層改
良すべく、トリックル・アルゴリズムを改良し且つ拡張
することにある。
【0026】本発明の他の目的は、一の積の可視前面を
効率的に決定するとともに、数個のプリミティブ面が互
いに重なっているという状況や、一のピクセルの光線が
2つの隣接する面の共通エッジに近い点でこれらの隣接
する面と交差するという状況を正確に処理するために、
小さな許容値(tolerance value)を利用してスキャン
変換中の丸め誤差の影響を除去する方法を提供すること
にある。
【0027】
【課題を解決するための手段】前述の本発明の目的は、
最初に「積の和」形式に分解されるCSG表現のレンダ
リングを行うための装置及び方法によって実現される。
各プリミティブ面は前方を向いている面(前面)又は後
方を向いている面(後面)のいずれかとして分類され、
そしてスキャン変換の結果が複数の深度バッファ(zバ
ッファ)に記憶される。この方法を繰り返すたびに、プ
リミティブの前面が検討され、これが現在の積上に位置
していなければ、その背後に位置している他の前面と置
換されることになる。この方法は、各ピクセルの可視面
が得られるときに、各積の処理を終了する。次に、通常
の隠面除去技術を用いて、各積の可視前面が、最終のz
バッファに併合される。
【0028】この方法は、各ピクセルごとに一の積のプ
リミティブ面を独立的に処理して、従来技術で必要とさ
れていた境界の評価を排除するとともに、各ピクセルご
とに比較的単純なテストを用いて、一の積の境界上に位
置しているプリミティブ面の一部を決定する。一のピク
セルに対する正しい面であると見なされる特定の前面と
は、現在の積の1つおきの正のプリミティブに対する一
の前面と一の後面との間にあり、しかも負のプリミティ
ブに関しこれと反対の関係を保持しているようなもので
ある。
【0029】この方法の追加の利点が得られるのは、現
在の積の最も遠い前面から移動する際に、この積内の他
のプリミティブの外側に位置する幾つかのプリミティブ
面をスキップすることができるからである。このプロセ
スは、現在の積が投影する処の、任意のピクセルにおい
て何らの変化もない場合に、最終パスで終了する。
【0030】更に、この方法は、深度テスト中及び最終
のzバッファへのビット併合演算中に、スキャン変換さ
れた面の深度値から許容値を減算する。その結果、一致
する面が正確に処理されるとともに、ダングリング・エ
ッジやクラックを除去することにより、ソリッドが正則
化される。また、この方法は、各ピクセルにおけるz深
度値を正確に決定するために、サブピクセル修正を用い
るとともに、一の面が所定のピクセルに投影しているか
否かを決定するために、ピクセル−中心テストを利用し
ている。
【0031】本発明の1実施例として、3次元的なソリ
ッド物体を表現する表示可能情報を生成するための装置
と方法が開示されている。この装置は、1つ以上のプリ
ミティブ物体から構成されるように、ソリッド物体をC
SG表現で表すためのプロセッサを含んでいる。また、
この装置は、1つ以上のプリミティブ物体の表示可能面
を決定するために、当該プリミティブ物体を繰り返し評
価するための評価プロセッサを含んでいる。深度間隔バ
ッファは、スキャン変換プロセッサの動作に応答して、
表示可能面の決定に何らの変化を生じさせることなく、
所定回数の繰り返し評価が行われたことを決定する。こ
の深度間隔バッファは、評価プロセッサの動作を終了さ
せるための終了信号を生成する。
【0032】本発明の装置及び方法は、ダングリング面
やエッジを除去するとともに、一致する面を適正に処理
するように、許容値を利用して深度テストを行う。更
に、深度テストの精度を向上させるとともに、一の積が
投影する処のピクセルを識別するために、ピクセル−中
心揃え(センタリング)を利用する。
【0033】また、本発明の装置には、一のプリミティ
ブ物体を照射する光源の一の平面を基準として、当該プ
リミティブ物体の一の面上にある一の点から、当該光源
の平面への投影の深度値を記憶するための、補助シャド
ウ深度バッファを設けることができる。この補助シャド
ウ深度バッファと関連して、2パスのスキヤン変換技術
を用いると、シャドウイングを行うことができる。
【0034】
【実施例】図2には、CSG表現のレンダリング及び表
示を行うパイプライン式のイメージ・ディスプレイ処理
システム10が示されている。CADシステムのような
アプリケーション・プロセッサ12は、CSGデータを
CSGデータベース14に与える。このCSGデータ
は、モデル化されている3次元のソリッドを表す。アプ
リケーション・プロセッサ12からの指令を受け取る積
抽出プロセッサ16は、CSGデータベース14からC
SGプリミティブを受け取り、そこからプリミティブ面
を生成する。カウンタ24a及び比較器24bは、「終
了」信号を生成して、これをアプリケーション・プロセ
ッサ12に与える。「終了」信号を生成する際のカウン
タ24a及び比較器24bの動作は、以下で詳述する。
スキャン変換プロセッサ18は、与えられるプリミティ
ブ面をスキャン変換する。本発明の1側面に従って、ス
キャン変換プロセッサ18は、スキャン変換動作中にピ
クセル−中心揃え(後出)を利用する。スキャン変換プ
ロセッサ18の出力は、プリミティブ面が投影する、各
スクリーン・ピクセルに対するx,y,zの位置情報で
ある。また、スキャン変換プロセッサ18の他の出力
は、赤(R)緑(G)青(B)のピクセル色情報であ
る。スキャン変換プロセッサ18の出力は、深度間隔バ
ッファ(DIB)プロセッサ20に与えられる。
【0035】DIBプロセッサ20内の制御ブロック2
2は、アプリケーション・プロセッサ12から指令を受
け取り、以下で詳述する疑似コードに従ってDIBプロ
セッサ20内のデータの流れ及びデータ処理を制御す
る。DIBプロセッサ20は、深度バッファ(Z3、Z
2)と、これに関連する強度バッファ(I3、I2)を
含んでいる。DIBプロセッサ20が行う深度比較は、
本発明の他の側面に従った許容値を利用することによ
り、スキャン変換プロセッサ18内の計算に由来する丸
め誤差を補償する。また、DIBプロセッサ20には、
後述のように変更フラグ(cf)23と、パリテイ・フ
ラグとも呼ばれる前向きフラグ(ff)25が設けられ
ている。
【0036】DIBプロセッサ20の出力は、それぞれ
の積の可視的な、即ち表示可能な前面をそれぞれ表すデ
ータであり、このデータは、以下で「バッファ1」とも
呼ばれる、深度バッファ(Z1)及び強度バッファ(I
1)に与えられる。強度バッファI1は一のピクセル・
プレーン・メモリを形成し、その内容は一のディスプレ
イ・スクリーン26上に表示される。例えば、深度バッ
ファZ1を構成する多数の24ビット・メモリ・ロケー
ションの各々は、各スクリーン・ピクセルに対する深度
値情報を表す。他方、強度バッファI1を構成する多数
の24ビット・メモリ・ロケーションの各々は、3つの
色(R,G,B)の強度値を表すように、3バイトに区
画される。かくて、スクリーン・ピクセルの各々ごと
に、24ビット長の対応するZ1メモリ・ロケーション
と、24ビット長の対応するI1メモリ・ロケーション
がある。他の深度バッファ(Z3、Z2)と、他の強度
バッファ(I3、I2)も、これと同様に編成されてい
る。
【0037】アプリケーション・プロセッサ12からD
IBプロセッサ20に渡される指令は、複数のバッファ
を初期化する指令と、スキャン変換の動作をセットアッ
プする指令と、バッファ間の動作を実行する指令を含ん
でいる。例えば、「INITBUFFER(1,MAX
DEPTH,BLACK)」という指令は、バッファ
1(深度バッファZ1、強度バッファI1)を、Z1用
の最大の深度値と、I1用の背景色で初期化する。典型
的なバッファ動作指令は、「COPYBUFFER
(3,2,TRUE,′NE′,0)」という形式を有
する。この指令は、前向きフラグ(ff)25が真で、
深度バッファZ2の内容が深度バッファZ3の内容+e
ps(後述の許容値)に等しくない場合に、バッファ3
(深度バッファZ3及び強度バッファI3)の内容をバ
ッファ2(深度バッファZ2及び強度バッファI2)に
コピーするものであり、以下の表1における行26〜3
0に対応する。スキャン変換の動作をセットアップする
指令には、許容値を特定の値にセットする指令や、表1
の行23〜34に示すように、スキャン変換した値を受
領する手段としてバッファ3をセットする処の「SCA
N INTO(3)」という指令が含まれている。「終
了」条件をテストするには、表1の行12に示すよう
に、「SET CHANGE FLAG(FALS
E)」という指令を用いて、変更フラグ(cf)23を
リセットすることができる。各プリミティブ・スキャン
変換後の、「IF GET CHANGE FLA
G()THEN k=0」という指令は、表1の行31
に示すように、カウンタ24aをリセットする機能を有
する。
【0038】積抽出ブロック16に与えられる指令に
は、CSGツリー内の積の総数をカウントする「N=C
OUNT PRODUCTS(CSGTREE)」とい
う指令や、積kの前面がバッファ2の内部に構成される
まで、積kのプリミティブをバッファ3へ繰り返しスキ
ャン変換させるための「RENDER PRODUCT
(k)」という指令が含まれている。これらの種々の指
令の動作は、以下の説明から明らかである。
【0039】トリックル・アルゴリズムの高レベルの動
作は、次の疑似コード・セグメントのように表現するこ
とができる。
【0040】バッファ1を初期化する、積Pの各々につ
いて次のことを行う、積Pの前面を計算しこれをバッフ
ァ2に置く、その結果をバッファ1に併合して可視面を
選択する。
【0041】バッファ1は、積の合併(和集合)の可視
面を選択するために使用される。各積の可視前面は、次
の疑似コード・セグメントに要約されているように、バ
ッファ2、DIBプロセッサ20を用いて1つおきに計
算される。
【0042】Z2を背景へ初期化する、積Pのプリミテ
ィブQを循環させ、次のことを行う、Z2の後方に位置
するQの次の面を計算しこれをZ3に置く、Qの次の面
が前向きである処のピクセルで、Z3をZ2へコピーす
る。
【0043】トリックル・アルゴリズムが特に効果的で
あるのは、深度バッファZ2内の一の点が深度値におい
てプリミティブQの一の前面の直前にあって、この点が
プリミティブQの外側にあり、従って現在の積の外側に
位置する場合である。更に、この被テスト点とプリミテ
ィブQ上の対応する前点(front point)との間の間隔
もプリミティブQの外側にあり、従って現在の積の外側
にある。
【0044】図3に示すように、視点(目)からz軸に
沿って遠点に向かって移動する際、点pは、現在の積内
のプリミティブQ上に位置することが判明し、かくてそ
の深度値がZ2に記憶される。プリミティブQがスキャ
ン変換され、プリミティブQ上の点qの深度値がZ3に
記憶される。なぜなら、プリミティブQ上の点qは、点
pによって隠されたプリミティブQ上の(深度値に関し
て)最初の点であるからである。点qは、プリミティブ
Qの一の前点である。従って、セグメント(p,q)は
プリミティブQの外側にあり、かくて現在の積の外側に
ある。次に、トリックル・アルゴリズムは、点pの深度
値と強度値をZ2及びI2にそれぞれ記憶する。現在の
積内の他のプリミティブ上の点rは、点pと点qとの間
に位置し、従って現在の積上にはないのでスキップされ
ることになる。
【0045】表1には、イメージ・ディスプレイ処理シ
ステム10を構成する種々のプロセッサの動作を記述し
た、疑似コードが示されている。従来のトリックル・ア
ルゴリズムに対する顕著な改良は、許容値を利用した深
度テストに基づいている。即ち、この深度テストは、シ
ルエット・エッジの投影の近傍における一致するプリミ
ティブ面やピクセルが関係する処の、全ての特異ケース
(オン−オン・ケースとも呼ばれる)を正しく処理する
からである。従来のトリックル・アルゴリズムに対する
他の顕著な改良は、イメージ・ディスプレイ処理システ
ム10の動作に関する以下の説明から明らかである。
【0046】以下の記述に現れる全ての行番号は、表1
に示されている改良されたトリックル・アルゴリズムの
疑似コードを参照するものである。
【0047】
【表1】
【0048】改良されたトリックル・アルゴリズムの疑
似コードについて説明すると、各ピクセルごとに行われ
る深度バッファZ1及び強度バッファI1の初期化は、
これらの2つの要素を、最大深度値と選定された背景色
にそれぞれ設定する(表1の行1〜3)。次に、積の各
々ごとに、Z2が最小深度値に初期化され、I2が背景
色に初期化される(表1の行4〜7)。次に、現在の積
の可視前面が計算されて、Z2とI2に記憶される(表
1の行9〜31)。最後に、現在の積の前面が先に処理
された積の前方に位置しているときは、前者の結果が深
度バッファZ1に併合される(表1の行33〜35)。
【0049】一層詳細に説明すると、一の積の可視前面
を計算するために、本発明の方法は次のように進行す
る。最初に、図2のカウンタ24aに対応するカウンタ
kが、「−1」に初期化される(表1の行9)。本発明
の一の側面に従って、カウンタ24aは、Z2に影響を
与えることなく処理される、現在の積のプリミティブの
数をカウントするために利用されている。カウンタ24
aの値が増分されて現在の積内のプリミティブの数と等
しくなるとき、現在の前面を表すピクセルに何ら変化が
起こらなかったことが指示される。カウンタ24aの出
力は比較器24bに与えられ、そこでカウンタ24aの
出力が現在の積内のプリミティブの数と比較される。カ
ウンタ24aの内容がプリミティブの数と等しいと、
「終了」信号がアプリケーション・プロセッサ12に与
えられ、スキャン変換(表1の行10〜31のUNTI
Lループ)を停止させ、かくて現在の積に含まれる全て
のプリミティブに関する後続の全数スキャン変換を終了
させる。もし、現在の積に単一のプリミティブだけしか
存在しなければ、このプリミティブは正則化の効果を適
正に生ぜしめるように2回だけスキャン変換される。
【0050】最悪の場合、本発明の方法は、現在の積の
全てのプリミティブ内にある「層」の数とほぼ同じ回数
だけ、この積の各プリミティブをスキャン変換する。各
層はZ2に対する一時的な点を生成することがあるか
ら、Z2内の一の点が現在の積の外側にあることを指示
するために、この積の1つのプリミティブを除く全ての
プリミティブのスキャン変換が必要になることがある。
本発明で利用されている層の概念は、一の光線を、z軸
に平行に、現プリミティブのボリュームと交わらせるこ
とによって得られる、互いに素なセグメントに対応す
る。
【0051】しかし、典型的なケースについては、本発
明の方法は、ループ処理を早期段階で停止させる。ここ
で留意すべきは、単一のプリミティブだけしか持たない
積の適正な処理を保証するために、kが「−1」に初期
化される(表1の行9)、ということである。
【0052】このループ内では、変更フラグ(cf)2
3が表1の行12で初期化され且つ表1の行30で更新
されるから、Z2が前進したか否か、そしてカウンタ2
4aが零にリセットされたか否かを決定することができ
る(表1の行31)。もし変更が指示されるのであれ
ば、カウンタ24aがリセットされ、かくてこのループ
の特定のパスに対する「終了」信号は生成されない。
【0053】内部ループ(表1の行13〜31)は、現
在の積内のプリミティブ(Q)について実行され、そし
てプリミティブのリストは、一貫した循環的な態様で処
理される(表1の行13)。最初に、Z3、I3及び前
向きフラグ(ff)25が、初期化される(表1の行1
4〜17)。各ピクセルの前向きフラグを保持するた
め、各ピクセルに関連する1ビットの記憶位置がそれぞ
れ設けられる。もし現在のプリミティブが正であれば、
即ちこのプリミティブが境界付けされていれば、前向き
フラグ(ff)25は、1にセットされる。この点につ
いて補足すると、各プリミティブは、境界付けされた
(bounded)境界を有するものと想定する。境界付けさ
れた内部を持つプリミティブが「正のプリミティブ」と
呼ばれるのに対し、そうでないプリミティブは「負のプ
リミティブ」と呼ばれる。更に説明を補足すると、もし
元のCSGグラフの諸リーフが、境界付けされた諸ボリ
ュームであれば、負のプリミティブは、奇数回減算され
たこれらのリーフに対応する。前向きフラグ(ff)2
5は、各ピクセルにおいて、Z2を前進させるべきか否
かを決定するのに使用される(表1の行27)。
【0054】次に、本発明の方法は、現在のプリミティ
ブQの面をスキャン変換する(表1の18〜25行)。
プリミティブQの投影によってカバーされる各ピクセル
ごとに、所定の条件に応じて、Z3及びI3が、スキャ
ン変換された面上の点の深度値及び強度値で以てそれぞ
れ更新される(表1の行22〜24)。この更新が行わ
れるのは、スキャン変換された点の深度値が、Z2及び
Z3に記憶された深度値の相互間に位置する場合だけで
ある(表1の行22)。
【0055】本発明の一の側面に従って、一致する面の
正しい処理を保証するために、処理中のモデルの寸法と
比較して小さい許容値(eps)が、深度テストの前に
減算される。説明を補足すると、I3は、スキャン変換
された面が前向きである場合にだけ更新される。このた
め、後面(後向きの面)が、シルエット・エッジ近傍に
おいて前面(前向きの面)と重ならなければ、この後面
の強度値は、I3に記憶されないのである。本発明のか
かる側面を、以下で詳述する。
【0056】前向きフラグ(ff)25は、Z2の後方
を通過するプリミティブQの各面ごとに、トグルされる
(表1の行25)。ここで、スキャン変換の精度と丸め
誤差が不正確な結果をもたらさないことを保証するた
め、許容値(eps)が再び使用される(以下の記述を
簡潔にするため、これを単に「許容値」と称することも
ある)。
【0057】前向きフラグ(ff)25は、プリミティ
ブQの内側又は外側のいずれかに位置する点のパリティ
を指示するように機能する。例えば、図4Cを参照する
と、観察平面からz方向の遠点に向かって移動する場
合、点P1は、その後方に位置するプリミティブQの3
つの面を有していることが判る。かくて、点P1は、奇
数パリティを有するものと見なされ、定義により、プリ
ミティブQの内側に位置するものと見なされる。点P2
と点P3の各々は、z方向に沿って位置するプリミティ
ブQの2つの面をそれぞれ有し、従って偶数パリティを
有するものと見なされる。定義により、偶数パリティを
有する一の点は、プリミティブQの外側に位置するもの
と見なされる。このテストを行うため、現在の点を一の
深度バッファに記憶し、現在のプリミティブをスキャン
変換するとともに、現在の点の後方に位置することが決
定された各面ごとに、前向きフラグ(ff)25をトグ
ルする。スキャン変換が完了する場合、前向きフラグ
(ff)25の状態は、現在の点のパリティ、従って現
在の点が現在のプリミティブの内側に含まれるか否かを
指示する。
【0058】前述のトリックル・アルゴリズムでは、面
のトリミング、即ち面上にある複数の点を一の積内のプ
リミティブQに対してテストすることは、この被テスト
点の後方で遭遇するプリミティブQの最初の面が前向き
であるか、又は後向きであるかをテストすることによっ
て行われる。しかし、プリミティブQのエッジの近傍
で、又はもし深度バッファの分解能の範囲内でプリミテ
ィブQが平担に見えるのであれば、前向きの面と後向き
の面とが同じ深度値を有することがある。この問題を克
服するため、本発明の方法は、J. Goldfeather 他の前
掲の論文、 “NearReal-Time CSG Rendering using Tre
e Normalization and Geometric Pruning", IEEE CG&A、
Vol.9, No.3, pp.20-28, May 1989 で提案されてい
る、被テスト点の後方にある面の数のパリティを利用し
ている(表1の25行)。プリミティブQが正である場
合、被テスト点の後方にあるプリミティブQの偶数の面
は、この被テスト点がプリミティブQの外側にあること
を意味する。
【0059】最後に、プリミティブQの全体がスキャン
変換された後に、前向きフラグ(ff)25がセットさ
れるとき(表1の行27〜31)、即ちZ2に記憶され
た点がプリミティブQの外側にあるときはいつでも、Z
3の内容が、Z2にコピーされる。かくて、Z2内にあ
るこれらの点は、Z3に記憶ずみのプリミティブQ上の
前点(もしあるとすれば)によって置換される。
【0060】Z2及びZ3に記憶された深度値が互いに
相違することを要する追加の条件:Z2〔x〕!=Z3
〔x〕(表1の行27)が与えられているのは、正のプ
リミティブの投影の外側にある点の適正な処理を保証す
るためである。しかし、これらの点について、前向きフ
ラグ(ff)25の状態は「1」に等しいが、Z2及び
Z3は両者ともに最大深度値に等しい。
【0061】前述の特異ケースが生ずるのは、2つの異
なる面が、それぞれ同じピクセルをカバーし、しかも当
該ピクセルに投影するそれぞれの点において同じ深度
値、又は概ね同じ深度値を有する場合である。図4A及
び図4Bには、ソリッドAとBについて、かかる特異ケ
ース(SC)が示されている。このような状況は、数個
のプリミティブの面が互いに重なる場合に、一の数学的
(正確な)モデル内で生ずるのである。更に、これらの
状況は、図4Bに示すように前面と後面を接続するエッ
ジ近傍の打ち切られたグラフイック・モデルで生ずる
か、或いは図4Aに示すように深度バッファの深度分解
能(以下「分解能」と略記)より小さな深さを有する薄
い壁又は内部クラックのようなくびれ部で生ずる。これ
らの特異ケースの全てについて正確なイメージを計算す
るための方法は、スキャン変換に固有の丸め誤差に起因
する深度誤差をも補償するように、十分確固としたもの
でなければならない。
【0062】かくて、一のプリミティブ層の深さが深度
バッファの分解能より小さい場合には、これがあたかも
平担(深度値零)であるかのようにして処理する処の、
補償方法が必要となる。
【0063】更に、比較的大きいプリミティブ層につい
ても、このプリミティブが局部的に平担に見えるような
状況が存在することがある。例えば、図4Bのようにシ
ルエット・エッジに接近する場合、同じプリミティブの
当接している2個の面(1個の前面と、1個の後面)
は、それぞれの深度値が互いに近接している。このシル
エット・エッジでは、前面と後面は、同じ深度値を有す
る。スキャン変換の間、ディスプレイ・スクリーン26
上にある当該エッジの投影に接近して位置する一のピク
セルが、これらの双方の面について、整数に丸めた同じ
深度値を有することが判る。かくて、この特定のピクセ
ルについて、当該プリミティブは、平担で(深度値零)
且つ縮退したソリッドとして現れる。本発明の方法は、
全てのピクセルに対して独立して進行するから、本発明
の方法は、そのような縮退したプリミティブを正確に処
理しなければならず、さもなければ、表示されたソリッ
ドがクラックやダングリング・エッジを不正確に表すこ
とがある。
【0064】前述のように、カウンタ24aを「−1」
の値に初期化すると(表1の行9)、単一のプリミティ
ブを有する積が、2回スキャン変換されることになる。
かくて、本発明の方法は、最初のスキャン変換中にZ2
内で一時的な点を生成し、次の2回目のスキャン変換中
に、必要に応じて、この一時的な点をプリミティブの外
側にあるものとして分類することができる。
【0065】更に、特異ケースの処理は、A.A.G. Requi
cha と H.B. Voelcker の論文である “Boolean Operat
ions in Solid Modeling: Boundary Evaluation and Me
rging Algorithms", Proceedings of the IEEE, Vol.7
3, No.1, January 1985 で報告されているように、近隣
評価を含むことが知られている。本発明の方法は、前方
から後方へ向かう順序でプリミティブのそれぞれの面を
テストするから、かかる面の後方にある近隣のものだけ
が関係している。説明を補足すると、近隣は、かかる面
の後方に、現在の積に関する物質があるか否かを指示す
る。もしこの面の前方に物質があれば、この方法は、こ
のピクセルについて早期に終了し、この面には到達しな
い。従って、もし現在の積の物質がこの面の後方に存在
すれば、この面の点は、現在の積の上にあって、対応す
るピクセルを通して観察可能な最前の点である。
【0066】この結果、 J.R. Rossignac 及び A.A.G.
Requicha の前掲の論文である “Depth buffering disp
lay techniques for constructive solid geometry", I
EEEComputer Graphics and Applications, Vol.6, No.
9, pp. 29-39, September 1986 で提案されている技術
を利用して、スキャン変換した点をZ2に記憶されてい
る深度値と比較する前に(表1の22行)、この点の後
方に位置する点をテストすることが好ましい。
【0067】次に、前述の許容値の使用方法を詳述す
る。
【0068】最初に留意すべきは、プリミティブを位置
づけるために従来から利用されている回転が、プリミテ
ィブの境界付け平面又は項点の係数に丸め誤差を導入す
る、ということである。その結果、幾つかの面を整列さ
せるためにプリミティブが回転される場合、互いに重な
るべき面を含む複数の表面が一致しなくなることがあ
る。更に、スキャン変換の丸め誤差が、任意のピクセル
において理論的に一致する任意の2つの面の、予測不能
な深度値の順序に帰着することがある。かくて、深度値
だけに基づいて複数の面の順序付けを行うと、双方の面
の重なり領域全体にわたって一貫した結果が得られない
ことになる。
【0069】従って、一致する面の問題が関係する全て
の動作において、本発明の方法は、比較的小さな許容値
(eps)を利用する。かかる許容値を用いると、等し
くあるべき2つの深度値を等しいと見なすことができる
からである。
【0070】勿論、大きすぎる許容値を選択すると、等
しくあるべきでない2つの値を等しいものとして扱うこ
とがある。そのような場合、本発明の方法は、ソリッド
の正則化「モジュロ(modulo)eps」に対応する一の
イメージを生成する。即ち、本発明の方法は、すべての
場所で正しい面を表示しつつ、浅いz深度値を有するモ
デルの部分を除去するように機能する。
【0071】かくて、許容値の大きさは、深度バッファ
の制限された分解能と、スキャン変換中の深度値を計算
する過程で導入される丸め誤差との組み合わせ効果を上
廻るように、選択されるのである。もし大きすぎる許容
値が使用されるならば、浅い特徴部のような一の細部が
消失して、前面と後面が一致するものと見なされること
がある。
【0072】前述の一致する面に係る特異ケースを正確
に処理しつつ、比較的小さな許容値を利用するには、各
スキャン・ラインに沿った最初の深度値を正確に決定す
る必要がある。以下、深度値を正確に検出する方法を詳
述する。
【0073】最初に留意すべきは、深度バッファZ1の
整数表現能力に起因して、一の面によってカバーされる
全てのピクセルのための面点を計算するという従来のス
キャン変換手順は、近似的な、即ち切り捨てた深度値を
生ずる、ということである。その結果、共面状の2つの
面の重なり部分に位置する一の点の深度値は、この点を
生成するのにどの面がスキャン変換されるかということ
に依存して、異なることがある。
【0074】この欠点を克服し且つ所期の一致性を正確
に処理することを保証するため、本発明の方法は、同じ
ピクセルに投影される2個の点の、z軸に沿ったそれぞ
れの深度値の差が、許容値より小さい場合は、これらの
点が同一であると見なすようにしている。許容値の大き
さは、シーン(光景)のサイズと、深度バッファの分解
能を考慮して決定される。
【0075】図5を参照するに、もし一のプリミティブ
の一の面がz軸に対して鋭角にあれば、サンプルされた
深度値は、ピクセルPの幅にわたって広く変動すること
がある。例えば、互いに一致する面Aと面Bを正確に処
理するには、各面をピクセルP内の正確に同じ点でサン
プリングすることが重要である。本発明の方法では、こ
の点を、ピクセルPの幾何学的中心に相当するものとし
て選択している。一般に、各ピクセルは、平面状の正方
形表面領域であると見なされる。従って、2つの面が一
致する場合には、双方の面によってカバーされるピクセ
ルに対する深度値をサンプルして、カバーされた各ピク
セルにおいて双方の面に対する同じ深度値を生ぜしめる
ことができる。
【0076】本発明の方法は、各水平スパンの開始ピク
セルに対する深度値を決定するように機能するのである
が、そうするに当たり、従来のスキャニング・アルゴリ
ズムについて行われたように、開始ピクセルの前縁に沿
ったz増分を単に用いるのでなくて、むしろ開始ピクセ
ルの中心に投影する面の点を決定するのである。このよ
うに、スキャン・ラインに沿った後続の点の深度値を決
定するために当該スキャン・ラインに沿ってz増分を用
いているから、カバーされた全てのピクセルに対する深
度値は、z増分の計算に伴う数値的な精度の範囲内で、
スキャン変換された表面に関して正確であり、かくてこ
の表面内に位置する全ての面について同じである。
【0077】本発明のこの側面を達成するには、浮動小
数点計算を利用して、最初の点の投影からピクセル中心
までの正確な水平方向のオフセット距離を求めればよ
い。その後、このオフセット距離は、この面のスキャン
・ラインに沿った他の点のz深度値を決定する際に用い
られる。代替的に、ピクセル区域を多数の領域に区画す
るとともに、その各領域にピクセル中心までのオフセッ
ト値をそれぞれ割り当てるようにしてもよい。これらの
オフセット値を、その後にルックアップ・テーブル内に
記憶すると、ピクセル区域内で最初の点が投影する場所
の関数として、正確なオフセット値を引き出すことが可
能となる。
【0078】本発明の他の側面は、2つのプリミティブ
面の間にある一の境界で、一貫したスキャン変換を行う
ことに係る。図6には、一のプリミティブの2つの面
(A及びB)を投影された複数のピクセルが示されてい
る。これらの2つの面の間にある一の境界又はエッジに
は、参照記号Eが付されている。前述のトリックル・ア
ルゴリズムは、一のプリミティブの投影によりカバーさ
れる各ピクセルが、このプリミティブの後面の数と同数
の前面によってカバーされることを必要とする。この要
件は、プリミティブの境界が、内部の面又はダングリン
グ面を伴わずに、2サイクルにわたって有効であること
を指示する。この条件は、CSGであると想定した、ソ
リッドの正則化で暗示されている。しかし、同じプリミ
ティブの2つの面を処理するスキャン変換手順は、その
ようなバリティを自動的に保証するものではない。例え
ば、従来のブレゼンハム(Bresenham)又はアンチ・エ
イリアシング・アルゴリズムは、これを保証しない。
【0079】一のスパン、即ち面の投影によりカバーさ
れる複数のピクセルの水平行にわたって、深度値を単純
に補間すると、このスパンの終わりが関連するピクセル
を部分的にしかカバーしない場合には、このスパンの終
わりにおける深度値が誤って計算されることがある。な
ぜなら、ピクセルの中心がこの面によってカバーされて
いないとしても、この面を含む平面の傾斜を用いて、こ
の深度値が外挿されるからである。
【0080】例えば、ピクセルP1の正方形領域が、前
面と後面の間にある一のエッジの投影によって横切られ
るが、ピクセルP1の中心が、これらの2つの面によっ
てカバーされていないものとする。もしスキャン変換ア
ルゴリズムが、これらの2つの面についてピクセルP1
を調べれば、ピクセルP1の中心に対する一の深度値が
計算される。しかし、深度バッファの分解能又は許容値
の大きさに拘らず、これらの2つの面に対する一の傾斜
を選択すると、ピクセルP1の中心において、この前面
について計算された深度値が、この後面について計算さ
れた深度値を越えることがある。この「オーバシュー
ト」条件は、プリミティブのシルエット・エッジ近傍に
おける、不正確な表示に帰着することがある。
【0081】この問題に対する本発明の解決策は、スキ
ャン変換の間に、特定の面によってその中心がカバーさ
れるピクセルだけを処理することを含んでいる。図6の
例の場合、面Aに関連するクロスハッチされたピクセル
だけが、面Aのためにスキャン変換される。なぜなら、
面Aの投影がカバーするピクセル中心は、これらのピク
セルのものだけであるからである。これと同じ状況が、
面Bによってそのピクセル中心をカバーされるような、
クロス・ハッチしたピクセルについても存在する。この
ように、スキャン変換プロセッサ18は、ピクセルP1
を考慮しないのであり、かくて前述のオーバシュート問
題が克服される。
【0082】図7A及び図7Bには、表示されたソリッ
ドのシャドウイングに係る本発明の他の側面が示されて
いる。本発明の方法では、シャドウイングは、光源(L
S)から観察可能な面部分を選択する処の、補助的なシ
ャドウ深度バッファ(ZS)を使用して行われる。強度
値情報を何ら計算することなく、最初に視点をLSに位
置させる座標系において、前述のトリックル・アルゴリ
ズムが実行され、これによりZSの内容が構成される。
次に、トリックル・アルゴリズムが、通常の観察方向
(EO)から、再び実行される。但し、この場合は、可
視点によって反射された強度を計算している間に、これ
らの可視点のLSまでの距離が、ZSに記憶されている
距離と比較される。こうすると、LSから観察可能な面
点を確立することができる。即ち、これらの観察可能な
面点に光線が照射されているか、又はLSに一層近い他
の面のシャドウにあるかを決定することができる。
【0083】この技術は、最終のスキャン変換中に、Z
Sが計算された後、通常の観察方向(EO)に整列する
座標系及び光源(LS)に整列する座標系の双方で、面
点の座標を記述することを必要とする。スキャン変換し
た面によってカバーされる全てのピクセルを正確に処理
することを保証するため、このスキャン変換は、EO座
標系における増分を利用する。これらの増分は、一定の
マトリックスを通してLS座標系の増分へマッピングす
ることが可能であり、その場合にはスキャン変換プロセ
スの速度を増大させることができる。
【0084】ZS内で生ずるエイリアシング現象は、シ
ャドウを投影される面が通常の観察方向(EO)に直交
し且つ光源(LS)に概ね平行である場合に、著しく目
立つようになる。しかし、かかる望ましくない可視的な
産物は、C. Woodward の論文である “Methods for Com
puter-aided design of free-form Objects", Mathemat
ics and Computer Science Series, No.56, Helsinki U
niversity of Technology, Finland, 1990 において論
じられているような、従来の技術を用いて減衰させるこ
とができる。
【0085】以下、イメージ・ディスプレイ処理システ
ム10の動作の数例を説明する。なお、「積の和」を求
めるには、深度バッファを用いて通常の隠面除去を行え
ばよいという理由で、これらの例は、単純な積の可視前
面を計算することだけに向けられている。
【0086】図8には、2つの凸状プリミティブA及び
Bが示されている。積は、プリミティブA及びBの交わ
り(積集合)である。プリミティブAが、前面F1と後
面F4を有するのに対し、プリミティブBは、前面F2
と後面F3を有する。プリミティブA及びBの他の面
は、この例において対象となっているピクセルには投影
されないから、ここでは考慮されない。視点は左側にあ
り、従ってz方向は水平方向で且つ左から右へ向かって
いる。検討すべき特定のピクセルは、視点を通る水平方
向のラインによって表されている。かかるピクセルを通
して観察可能な積の面は、プリミティブBの前面F2で
ある。
【0087】イメージ・ディスプレイ処理システム10
の動作は、次のように進行する。スキャン変換が始まる
前に、ピクセル・バッファが初期化される。説明を簡単
にするため、ワールドがZ=0平面の正の側に位置する
と想定しているから、Z2は零に初期化され(表1の6
行)、I2も背景色に初期化される(表1の7行)。冗
長パスのカウントk(カウンタ24a)は、「−1」に
初期化される。
【0088】プリミティブAは、積内のプリミティブの
循環リスト中で最初に現れるから、これが最初にスキャ
ン変換される。プリミティブAは正であり、従って境界
付けされているから、各ピクセルに対する前向きフラグ
(ff)25が1に初期化される。その結果、プリミテ
ィブAの投影によってカバーされていないピクセルにお
いて記憶された点は、プリミティブAの外側にあるもの
として適正に処理される。Z3は「無限」に、即ちzバ
ッファの最大深度値を表す値に初期化され、I3は背景
色にセットされる(表1の行15〜17)。
【0089】プリミティブAのそれぞれの面をスキャン
変換する間、少なくともここで検討中のピクセルについ
て、次の関係:「Z2<F1<F4<Z3」が存在する
ことが判明する。表1の行22に記述するテストは、適
当に小さな許容値(eps)について成功し、かくてプ
リミティブAの面F1の深度値がZ3に記憶され、面F
1の色がI3に記憶される。プリミティブAの面F1と
面F4はZ2内の被テスト点の後方にあり、これに応じ
て前向きフラグ(ff)25がプリミティブAのスキャ
ン変換の間に2回トグルされるから、プリミティブAの
スキャン変換が終了する時点では、前向きフラグ(f
f)25は1の値を有する。ここで留意すべきは、Z2
内の被テスト点は、プリミティブAの外側にあり、更に
後方にある点と置換されなければならない、ということ
である。
【0090】また、留意すべき他の事項は、スキャン変
換の間に、前述のようにピクセル中心を検討すること及
び許容値を用いて深度テストを行うことを含む、拡張さ
れたトリックル・アルゴリズムが利用される、というこ
とである。
【0091】更新ステップの間(表1の行26〜3
0)、この時点で面F1に対応するZ3及びI3の内容
が、Z2及びI2にそれぞれコピーされる。冗長パスの
カウントkは、若干のピクセルが更新されたから、零に
リセットされる。ここで留意すべきは、プリミティブA
の投影の外側にあるピクセルが、今やZ2及びI2にお
いて、背景の深度値と色を保持している、ということで
ある。
【0092】次に、プリミティブBがスキャン変換され
る。プリミティブBは、面F2及び面F3を有する。冗
長パスのカウントk(カウンタ24a)が1まで増加さ
れ、前向きフラグ(ff)25が1にセットされ、Z3
が「無限」に初期化される。ここで、次の関係:「Z2
<F2<F3<Z3」の存在が判明するから、面F2の
深度値及び強度値が、Z3及びI3にそれぞれコピーさ
れる。Z2は、面F2及び面F3より小さいから、前向
きフラグ(ff)25が2回トグルされる。というの
は、Z2内の被テスト点は、プリミティブBの外側にあ
るからである。Z2及びI2の内容は、面F2からのデ
ータで重ね書きされ、カウンタ24aは、変更フラグ
(cf)23のアクションによって再び零にリセットさ
れる。
【0093】この時点で、次のプリミティブを検討する
必要がある。まず、各ピクセルにおいて、冗長パスのカ
ウントkが1に増加され、前向きフラグ(ff)25が
1にセットされる。プリミティブ・リストは循環的な性
質を有しているから、プリミティブAが再びスキャン変
換されて、次の関係:「F1<Z2<F4<Z3」の存
在が判明する。かくて、プリミティブAの面F1は、Z
2の後方にないという理由で、考慮されないことにな
る。プリミティブAの面F4の深度値は、Z3に記憶さ
れるが、面F4が後方を向いているから、面F4の色は
I3にはコピーされない。プリミティブAの1つの面、
即ち面F4だけがZ2の後方にあるから、前向きフラグ
(ff)25は1回だけトグルされ、零の値を有するこ
とになる。その結果、Z2は変更されず、カウンタ24
aはリセットされないで、1の値を保持する。
【0094】プリミティブBが、再びスキャン変換され
る。冗長パスのカウントkの値は2に増分され、前向き
フラグ(ff)25は1にセットされる。Z2はすでに
プリミティブBの面F2の深度値を保持しており、プリ
ミティブBのスキャン変換の後には、次の関係:「Z2
<F3<Z3」の存在が判明する。従って、プリミティ
ブBの面F3の深度値がZ3へコピーされるが、面F3
は後方を向いているから、その色はI3にはコピーされ
ない。面F3だけがZ2の後方にあるから、前向きフラ
グ(ff)25は、面F3の投影によりカバーされる各
ピクセルにおいて零にトグルされる。従って、Z2は変
化せず、変更フラグ(cf)23はカウンタ24aをリ
セットせず、カウンタ24aが保持するカウントは2に
留まる。Z2は、プリミティブBの面F2の深度値を保
持する。
【0095】この時点で、冗長パスのカウントk(カウ
ンタ24a)の値は、現在の積内のプリミティブの数と
等しいから、「終了」信号が比較器24bによって生成
され、変換ループが終了されて(表1の行10)、現在
の積の可視前面(F2)がZ2及びI2に置かれる。Z
2がZ1より小さければ、Z2及びI2の内容が、スク
リーン・バッファとも呼ばれるZ1及びI1にそれぞれ
コピーされ、かくてこの積を加法形で他の積と併合す
る。
【0096】図9には、非凸状プリミティブAと凸状プ
リミティブBとの交わりについてのイメージ・ディスプ
レイ処理システム10の他の動作例が示されている。プ
リミティブAは、面F1、F3、F4及びF5を有し、
プリミティブBは、面F2及びF6を有している。面F
1と面F2とは、一致している。
【0097】前述と同様、プリミティブAをスキャン変
換する前に、Z2が初期化される。前述の例と同様に、
プリミティブAは正であるから、前向きフラグ(ff)
25がセットされる。次の関係:「Z2<F1<F3<
F4<F5」の存在が判明する。かくて、面F1がZ3
に記憶される。Z2の後方にはプリミティブAの4つの
面があり、従って前向きフラグ(ff)25は1にセッ
トされ、面F1はZ2及びI2にそれぞれコピーされる
(表1の行26〜30)。
【0098】プリミティブBのスキャン変換の間、その
面F2がプリミティブAの面F1と一致すること、そし
て次の関係:「F2<Z2+eps<F6」の存在が判
明する。プリミティブBの1つの面だけがZ2の後方に
あるから、前向きフラグ(ff)25は零にトグルさ
れ、Z2は変わらないままに留まる。カウンタ24a
は、1に増分される。
【0099】プリミティブAが再びスキャン変換され、
次の関係:「Z2<F3<F4<F5」の存在が判明す
る。面F3の深度値はZ3に記憶されるが、面F3が後
方を向いているから、I3の内容は変わらない。Z2の
後方にあるプリミティブAの面の数は奇数であり、これ
に応じて前向きフラグ(ff)25は零にトグルされ、
Z2の内容は変わらないままに留まる。カウンタ24a
は、現在の積内のプリミティブの数に等しい2に増分さ
れ、「終了」信号が生成されて、このスキャン変換ルー
プ処理を停止する。Z2は現在の積の前方にあるF1を
保持する。Z2は、後でZ1に併合される。
【0100】図10には、単純なプリミティブA及びB
の減算に対する他の例が示されている。積「A−B」に
おいて、プリミティブAの面F1は、プリミティブBの
面F2と一致する。ここで留意すべきは、プリミティブ
Bは、現在の積内で負であるから、プリミティブBの補
数とのプリミティブAの交わりに起因して、F2が一の
後面として処理される、ということである。現在の積の
可視面は、補数化されていないプリミティブBの元の後
面に相当するF3である。
【0101】前例と同様に初期化が行われ、プリミティ
ブAがスキャン変換されて、F1がZ2に記憶される。
【0102】次に、プリミティブBがスキャン変換され
る。プリミティブBは負であり、これに応じて前向きフ
ラグ(ff)25は零に初期化される。次の関係:「F
2<Z2+eps<F3<Z3」の存在が判明する。こ
の場合、プリミティブBは負であって、面F3は前向き
であるから、面F3の深度値がZ3に記憶され、その強
度値がI3に記憶される。プリミティブBの1つの面が
Z2の後方にあるから、前向きフラグ(ff)25は、
スキャン変換により調べられるピクセルにおいて1にト
グルされる。面F2はプリミティブBの外側にあり、従
ってZ3の内容がZ2にコピーされる。
【0103】プリミティブAが再びスキャン変換され、
前向きフラグ(ff)25が1にセットされる。面F4
だけがZ2の後方にあり、従って前向きフラグ(ff)
25が1回トグルされて、零にセットされる。その結
果、Z2は変わらないままに留まる。これと同じこと
が、プリミティブBの2回目のスキャン変換の間にも生
ずる。カウンタ24aに保持される値が、リセットされ
ずにプリミティブの数(この場合は2に等しい)に達す
ると、「終了」信号が生成され、スキャン変換ループを
出る。次いで、F3を保持するZ2が、Z1に併合され
る。
【0104】図11には、内部クラックを含むプリミテ
ィブに対する最後の例が示されている。プリミティブA
が、面F1、F4、F5及びF7を有するのに対し、プ
リミティブBは、面F2、F3、F6及びF8を有して
いる。検討中のピクセルに投影される非正則化した差
「A−B」は、空集合である。この例は、内部クラック
を有する非凸状プリミティブBを、内部クラックを有す
る他の非凸状プリミティブAから減算することを含んで
いる。更に、プリミティブBの内部クラックは、プリミ
ティブAの内部クラックと一致している。このようなク
ラックが生ずるのは、モデル内で又は分解能が限定され
ているために、同じプリミティブの2つの面が一致する
場合である。これらの特異性は、前述のようにシルエッ
ト・エッジ近傍に現れることもある。
【0105】前述の例のように、初期化し且つプリミテ
ィブAをスキャン変換した後、面F1がZ2に記憶され
る。
【0106】プリミティブBがスキャン変換され、そし
てプリミティブBが負であるために、前向きフラグ(f
f)25が零にセットされる。面F2は面F1と一致
し、かくて次の関係:「F2<Z2+eps<F3=F
6<F8<Z3」の存在が判明する。プリミティブBの
面F3及びF6がスキャン変換される順序に応じて、面
F3又はF6のいずれかの深度値がZ3にコピーされ
る。しかし、面F6は後方に向いているから、面F3の
強度値がI3に保存される。Z2の後方にプリミティブ
Bの面が3つあるから、前向きフラグ(ff)25が1
にトグルされ、Z3がZ2にコピーされる。
【0107】プリミティブAが再びスキャン変換され、
前向きフラグ(ff)25がセットされる。面F4は面
F5並びにZ2と一致し、次の条件:「F1<F4=F
5<Z2+eps<F7<Z3」の存在が判明する。面
F7はZ3に書き込まれる。面F7だけがZ2の後方に
あるから、前向きフラグ(ff)25は零にリセットさ
れ、Z2は変わらないままに留まり、従って依然として
F3を保持している。
【0108】プリミティブBが再びスキャン変換され、
面F6及びF3はZ2と一致していることが判明し、そ
の結果として次の関係:「F2<F3=F6<F2+e
ps<F8<Z3」の存在が判明する。F8はZ3に書
き込まれる。プリミティブBの1つの面F8だけがZ2
の後方にあるから、前向きフラグ(ff)25が1回だ
け1にトグルされ、F8がZ2にコピーされる。
【0109】プリミティブAが再びスキャン変換され、
プリミティブAの最後方の面F7がF8と一致すること
が判明し、その結果として次の関係:「F1<F4=F
5<F7<Z2+eps<Z3」の存在が判明する。従
って、Z3には何もコピーされず、前向きフラグ(f
f)25はセットされたままに留まる。かくて、Z3及
びI3を初期化した最大深度値(無限)と背景色とがZ
2及びI2にそれぞれコピーされる。
【0110】プリミティブBの次のスキャン変換パスは
何ら変化をもたらさないから、カウンタ24aがプリミ
ティブの数に対応する2のカウントに達したときに、こ
のプロセスが終了する。
【0111】以上の記述を要約すると、複数の深度バッ
ファを用いて正則化されたCSGソリッドを適正に表示
するには、一のピクセルにおいて2つの面が同じ深度値
を有するという特異ケースを、適正に考慮する必要のあ
ることが示された。このような状況が生ずるのは、CS
Gプリミティブが、それらの境界に沿って2次元的な接
触を有するように位置決めされる場合に限られない。な
ぜなら、このような状況は、くびれ部上の面点又はシル
エット・エッジ近傍の鋭い隅部上の面点が、同じピクセ
ルに投影し且つスキャン変換処理によって同じ整数の深
度値に丸められる程度に十分に近い深度値を有する場合
にも、偶然的に生ずることがあるからである。
【0112】この問題は、スキャン変換中の丸め誤差の
影響を除去するために、許容値を用いることによって克
服される。かくて、一致すべき面は、たとえ実際の深度
値が一のピクセルにおいて異なることがあるとしても、
結果において一致することになるのである。また、CS
G表現の正則化した解釈に関して正しい表示イメージを
生成するために、許容値を用いる深度テストを行って、
かかる対策が講じられなければ現れたであろうダングリ
ング面やエッジを除去する。
【0113】更に、小さい特徴部の損失を回避するよう
に、モデルのサイズに対して比較的小さな許容値を維持
するため、改良されたスキャン変換技術が与えられる。
この改良された技術は、ピクセル中心への投影を考慮し
て、調べられた全てのピクセルについて実際の面深度値
を生成する、というものである。このようにして、もし
空間的に重なる2つの面がそれぞれ独立してスキャン変
換されるのであれば、双方の面によってカバーされた全
てのピクセルについて生成される複数対の値は、深度値
増分を累積する間に生成しうる極めて小さな丸め誤差を
除くと、互いに等しくなる。
【0114】また、プリミティブ内の点の分類を行うた
めにスキャン変換が正しく使用されることを保証するに
は、一の面によってカバーされる中心を持つピクセルだ
けが当該面のスキャン変換の間に調べられることを保証
するように、スキャン変換技術を修正すればよい。
【0115】更に、本発明によれば、補助シャドウ深度
バッファ(ZS)を用いた単純な2パス・スキャン変換
技術によって、シャドウイングを行うことができる。
【0116】以上では、特定の実施例に即して本発明を
説明してきたが、本発明の範囲から逸脱することなく、
種々の修正を施しうることを認識すべきである。例え
ば、強度バッファI2及びI3が設けられていない場合
には、深度間隔バッファ(DIB)プロセッサ20の修
正されたアーキテクチャを用いることができる。本発明
の方法は、強度値の計算及び更新が行われないことを除
くと、プリミティブ物体を繰り返し評価するために前述
のように進行する。その結果は、強度値情報を伴わない
が、CSG表現の全体に対するZ1の内容を計算するこ
とである。次いで、強度値決定パスが実行されて、全て
のプリミティブの前面について1回だけのスキャン変換
が行われる。この強度値決定パスは、Z1に記憶された
深度値が現に処理されている点における面深度値と等し
い処のピクセルについて、対応する強度値をピクセル・
メモリI1に記憶する。本発明のかかる変更は、ピクセ
ル・メモリを著しく節約するが、イメージの質について
は、これを僅かに低下させることがあるに過ぎない。
【図面の簡単な説明】
【図1】3個のプリミティブから成るソリッドのCSG
2進ツリーを示す図である。
【図2】本発明に従った、イメージ・ディスプレイ処理
システムの実施例を示すブロック図である。
【図3】プリミティブQを処理する場合の、図2の深度
間隔バッファの動作を示す図である。
【図4】Aは、くびれ部が厚さ零の縮退した壁として見
え且つ狭い空洞がクラックとして見える、限定された分
解能の影響を示す図であり、Bは、シルエットの後面と
前面が一致するように見える場所の近傍における、限定
された分解能の影響を示す図であり、Cは、一のソリッ
ドに対しそれぞれ異なる位置関係にある複数の点の分類
決定方法を示す図である。
【図5】スキャン・ラインの開始深度値を調整して一の
表面の正確なz値を生ずることにより、正確なスキャン
変換を行うようにした技術を示す図である。
【図6】複数のピクセル上に投影する2つの面を有する
プリミティブの調整されたスキャン変換を行うための技
術を示す図である。
【図7】Aは、2パスのシャドウイング技術に利用され
る補助シャドウ深度バッファを示す図であり、Bは、A
の補助シャドウ深度バッファの動作を示す流れ図であ
る。
【図8】2個の凸状プリミティブが交差する場合の、本
発明に従ったシステムの動作を例示する図である。
【図9】非凸状プリミティブと凸状プリミティブとが交
差し且つ双方のプリミティブが共通の前面を共有する場
合の、本発明に従ったシステムの動作を例示する図であ
る。
【図10】2個の凸状プリミティブの間で減算を行う場
合の、本発明に従ったシステムの動作を例示する図であ
る。
【図11】2個の非凸状プリミティブの各々が内部クラ
ックを有し且つ一方の非凸状プリミティブから他方の非
凸プリミティブを減算する場合の、本発明に従ったシス
テムの動作を例示する図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジャロスロウ・ロマン・ロシグナック アメリカ合衆国10562、ニューヨーク州 オシニング、リンカーン・プレイス 1956 番地 (72)発明者 ジェフレイ・ウェンフォン・ウー アメリカ合衆国10011、ニューヨーク州 ニューヨーク、ウエスト・トゥエンティー サード・ストリート 208番地、アパート メント 1003

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 3次元のソリッド物体を表す表示可能情
    報を生成する装置において、 1つ以上のプリミティブ物体から構成されるように、前
    記ソリッド物体をそのコンストラクティブ・ソリッド・
    ジオメトリ表現で表すための手段と、 前記1つ以上のプリミティブ物体の表示可能面を決定す
    るために、当該プリミティブ物体を繰り返し評価するた
    めの評価手段とを備え、 前記評価手段が、 評価中のプリミティブ物体の面上に位置する点の深度値
    を、先に決定された深度値と繰り返し比較するととも
    に、前記プリミティブ物体の表示可能面上に位置するこ
    とが決定された各点の、一の基準平面に対する深度値
    を、深度バッファ手段(Z1)内に記憶するための第1
    の比較手段と、 前記第1の比較手段の動作の終了に応答して、前記プリ
    ミティブ物体の前方を向いた面上の複数の点の深度値
    を、Z1内に記憶されている対応する深度値と比較する
    とともに、Z1内に記憶されている対応する深度値と等
    しい深度値を有する前記前方を向いた面上の点の強度値
    を、強度バッファ手段(I1)内に記憶するための第2
    の比較手段とを含み、 前記第1及び第2の比較手段の各々が、所定の許容値を
    用いて深度値の比較を行い、当該所定の許容値が、少な
    くとも前記表示可能面を決定する計算過程で導入される
    丸め誤差を補償するように選択された値を有することを
    特徴とする、 3次元のソリッド物体を表す表示可能情報を生成する装
    置。
  2. 【請求項2】 3次元のソリッド物体を表す表示可能情
    報を生成する方法において、 1つ以上のプリミティブ物体から構成されるように、前
    記ソリッド物体をコンストラクティブ・ソリッド・ジオ
    メトリ表現で表すステップと、 前記1つ以上のプリミティブ物体の表示可能面を決定す
    るために、当該プリミティブ物体を評価するステップと
    を含み、 前記評価するステップが、 評価中のプリミティブ物体の面上に位置する点の深度値
    を、先に決定された深度値と繰り返し比較するステップ
    と、 前記プリミティブ物体の表示可能面上に位置することが
    決定された各点の、一の基準平面に対する深度値を、深
    度バッファ手段(Z1)内に記憶するステップと、 前記プリミティブ物体の前方を向いた面上の複数の点の
    深度値を、Z1内に記憶されている対応する深度値と比
    較するステップと、 Z1内に記憶されている対応する深度値と等しい深度値
    を有する前記前方を向いた面上の点の強度値を、強度バ
    ッファ手段(I1)内に記憶するステップとを含み、 前記繰り返し比較するステップ及び前記比較するステッ
    プの各々が、所定の許容値を用いて深度値の比較を行
    い、当該所定の許容値が、少なくとも前記表示可能面を
    決定する計算過程で導入される丸め誤差を補償するよう
    に選択された値を有することを特徴とする、 3次元のソリッド物体を表す表示可能情報を生成する方
    法。
JP4002910A 1991-03-12 1992-01-10 3次元のソリッド物体を表す表示可能情報を生成する装置と方法 Expired - Lifetime JPH07122908B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US67205891A 1991-03-12 1991-03-12
US672058 1991-03-12

Publications (2)

Publication Number Publication Date
JPH0581438A JPH0581438A (ja) 1993-04-02
JPH07122908B2 true JPH07122908B2 (ja) 1995-12-25

Family

ID=24696985

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4002910A Expired - Lifetime JPH07122908B2 (ja) 1991-03-12 1992-01-10 3次元のソリッド物体を表す表示可能情報を生成する装置と方法

Country Status (3)

Country Link
US (1) US5402532A (ja)
EP (1) EP0503251A2 (ja)
JP (1) JPH07122908B2 (ja)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69233717T2 (de) 1991-06-28 2008-10-30 Lim, Hong Lip, Darlington Verbesserungen in sichtbarkeit-berechnungen fuer 3d-rechner
JP3332165B2 (ja) * 1992-08-08 2002-10-07 株式会社リコー 画像処理装置
WO1994027240A1 (en) * 1993-05-10 1994-11-24 Apple Computer, Inc. Computer graphics system having high performance multiple layer z-buffer
US5729672A (en) * 1993-07-30 1998-03-17 Videologic Limited Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces
GB9315852D0 (en) * 1993-07-30 1993-09-15 Video Logic Ltd Shading three-dimensional images
GB9406509D0 (en) * 1994-03-31 1994-05-25 Argonaut Software Limited Rendering 3-d scenes in computer graphics
JPH0877356A (ja) * 1994-09-09 1996-03-22 Fujitsu Ltd 三次元多眼画像の処理方法及び処理装置
US5561750A (en) * 1994-09-22 1996-10-01 Seiko Epson Corporation Z-buffer tag memory organization
US5649078A (en) * 1995-03-22 1997-07-15 International Business Machines Corporation Efficient two-pass rasterization scheme utilizing visibility information
HUP9901489A3 (en) * 1995-09-01 2000-02-28 Raychem Corp Menlo Park Extruded silicone gel profiles and procedure for production of silicone gel profiles
US6275233B1 (en) * 1996-11-01 2001-08-14 International Business Machines Corporation Surface simplification preserving a solid volume
US5933156A (en) * 1997-12-03 1999-08-03 Margolin; Jed Z-Buffer for row addressable graphics memory with flash fill
US6577317B1 (en) 1998-08-20 2003-06-10 Apple Computer, Inc. Apparatus and method for geometry operations in a 3D-graphics pipeline
US6525737B1 (en) 1998-08-20 2003-02-25 Apple Computer, Inc. Graphics processor with pipeline state storage and retrieval
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
GB2343600B (en) * 1998-11-06 2003-03-12 Videologic Ltd Depth sorting for use in 3-dimensional computer shading and texturing systems
GB9904901D0 (en) * 1999-03-03 1999-04-28 Canon Kk Computer graphics apparatus
US6674894B1 (en) * 1999-04-20 2004-01-06 University Of Utah Research Foundation Method and apparatus for enhancing an image using data optimization and segmentation
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US6980218B1 (en) * 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US7576748B2 (en) 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US7196710B1 (en) * 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US6937245B1 (en) * 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7184059B1 (en) 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US7061502B1 (en) 2000-08-23 2006-06-13 Nintendo Co., Ltd. Method and apparatus for providing logical combination of N alpha operations within a graphics system
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US6664962B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Shadow mapping in a low cost graphics system
DE10144710A1 (de) * 2001-09-11 2003-03-27 Heidenhain Gmbh Dr Johannes Verfahren und Vorrichtung zur Bearbeitung von Konturtaschen
US7120286B2 (en) * 2001-11-21 2006-10-10 Mitutoyo Corporation Method and apparatus for three dimensional edge tracing with Z height adjustment
US7599044B2 (en) 2005-06-23 2009-10-06 Apple Inc. Method and apparatus for remotely detecting presence
US7242169B2 (en) * 2005-03-01 2007-07-10 Apple Inc. Method and apparatus for voltage compensation for parasitic impedance
US7577930B2 (en) 2005-06-23 2009-08-18 Apple Inc. Method and apparatus for analyzing integrated circuit operations
US9298311B2 (en) * 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7433191B2 (en) * 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7441230B2 (en) 2005-10-07 2008-10-21 Lucasfilm Entertainment Company Ltd. Method of utilizing product proxies with a dependency graph
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
US9116915B1 (en) * 2012-03-29 2015-08-25 Emc Corporation Incremental scan
JP5661134B2 (ja) * 2013-03-12 2015-01-28 株式会社Takumi 画像処理装置及び画像処理方法
US9305370B2 (en) * 2013-07-31 2016-04-05 Qualcomm Incorporated Graphical rendering with implicit surfaces
KR20150042095A (ko) 2013-10-10 2015-04-20 삼성전자주식회사 드로우 커맨드들의 처리 순서를 재조정하여 프레임을 렌더링하는 장치 및 방법
US20160364845A1 (en) * 2015-06-11 2016-12-15 Rahul P. Sathe Pixel merge unit efficiency by identifying silhouette pixels
US10643336B2 (en) 2018-03-06 2020-05-05 Sony Corporation Image processing apparatus and method for object boundary stabilization in an image of a sequence of images
US10614340B1 (en) * 2019-09-23 2020-04-07 Mujin, Inc. Method and computing system for object identification

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5083287A (en) * 1988-07-14 1992-01-21 Daikin Industries, Inc. Method and apparatus for applying a shadowing operation to figures to be drawn for displaying on crt-display
JP2690110B2 (ja) * 1988-08-15 1997-12-10 沖電気工業株式会社 走査変換方法
US5027292A (en) * 1989-04-19 1991-06-25 International Business Machines Corporation Multiple depth buffers for graphics and solid modelling
US5200740A (en) * 1989-08-01 1993-04-06 Adobe Systems Incorporated Dropout-free center point fill method for displaying characters

Also Published As

Publication number Publication date
US5402532A (en) 1995-03-28
EP0503251A2 (en) 1992-09-16
JPH0581438A (ja) 1993-04-02
EP0503251A3 (ja) 1994-01-12

Similar Documents

Publication Publication Date Title
JPH07122908B2 (ja) 3次元のソリッド物体を表す表示可能情報を生成する装置と方法
US10957082B2 (en) Method of and apparatus for processing graphics
EP2622581B1 (en) Multi-view ray tracing using edge detection and shader reuse
EP0501635B1 (en) Accelerated shadow testing method for three dimensional graphics render system
KR100504421B1 (ko) 3차원 그래픽에서 속성을 보간하기 위한 방법 및 장치
JP5188628B2 (ja) 3dオブジェクトの3dモデルをレンダリングするための方法及びシステム
US5596685A (en) Ray tracing method and apparatus for projecting rays through an object represented by a set of infinite surfaces
US6621925B1 (en) Image processing apparatus and method and information providing medium
US5497453A (en) Method and apparatus for detecting and visualizing interferences between solids
JP2012014714A (ja) 透光性3dグラフィックをレンダリングする方法及び装置
Fischer et al. Fast approximation of high-order Voronoi diagrams and distance transforms on the GPU
US20070268290A1 (en) Reduced Z-Buffer Generating Method, Hidden Surface Removal Method and Occlusion Culling Method
JP4409139B2 (ja) 3dモデルをつくる方法および装置
US6791544B1 (en) Shadow rendering system and method
GB2406252A (en) Generation of texture maps for use in 3D computer graphics
Wang et al. Second-depth shadow mapping
Peters et al. Improved moment shadow maps for translucent occluders, soft shadows and single scattering
Şahıstan et al. Ray-traced shell traversal of tetrahedral meshes for direct volume visualization
JP4209129B2 (ja) グラフィックスモデルを表す複数のポリゴンを含むメッシュをレンダリングする方法
US6542154B1 (en) Architectural extensions to 3D texturing units for accelerated volume rendering
US5706479A (en) Method and apparatus for dynamically detecting overflow of a multi-layer buffer
US5926183A (en) Efficient rendering utilizing user defined rooms and windows
Rossignac et al. Correct shading of regularized CSG solids using a depth-interval buffer
Benassarou et al. Mc slicing for volume rendering applications
Morvan et al. High performance gpu‐based proximity queries using distance fields