(57)【特許請求の範囲】
【請求項１】
スクリーン上に表示するための３次元像を陰影付けする方法において、
該３次元像における各オブジェクトを表す１群の多数の無限面を定めるデータを、像平面の各基礎領域（ｐ２）について供給する工程と、
交差する射線を観察点（ｐ１）から前記基礎領域を経て前記３次元像に投影する工程と、
交差する各面について該面の前記像平面からの距離に基づいて深度値（１／ｕ）を発生させる工程と、
いずれかの面の前記基礎領域で見えるかどうかを、生成された前記深度値に基づいて決定する工程と、
前記決定の結果に基づいて前記基礎領域を陰影付けする工程と、
を備えており、
前記深度値１／ｕは、次の式で表され、
１／ｕ＝ｎ（ｐ２−ｐ１）／（ｋ−ｎ．ｐ１）
ここで、ｎは、原点に向いた面に対する単位直角ベクトルであり、
ｋは、面から原点への垂直距離であり、
ｐ１は、原点から観察点までの距離であり、
ｐ２は、像平面上の基礎領域の中心における射線上の点であり、
ｕは、射線に沿ってどれほど遠くで面との交差が生じるかの尺度であり、
前記各面は、前方を向いた面または逆方向を向いた面として指定され、前記前方を向いた面は、その面に直角な線が観察点を向くような面であり、前記逆方向を向いた面は、その反対の面であり、
前記深度値に基づいて決定する工程は、最も遠い前方を向いた面についての深度値が最も近い逆方向を向いた面についての深度値よりも小さい場合には、該面が基礎領域で見えるものと決定する、
ことを特徴とする方法。
【請求項２】
各基礎領域について、深度値は、前記３次元像における各オブジェクトを表す各群の面を通して順次決定される請求項１に記載のスクリーン上に表示するための３次元像を陰影付けする方法。
【請求項３】
各基礎領域について、深度値は、オブジェクトを表す各群の面における各面について決定される請求項２に記載のスクリーン上に表示するための３次元像を陰影付けする方法。
【請求項４】
オブジェクトを表す１群の面における最も近い目に見える面をその手前のすべての群の面からの最も近い目に見える面と比較し、該比較の結果に基づいて前記基礎領域を陰影付けする請求項２または請求項３に記載のスクリーン上に表示するための３次元像を陰影付けする方法。
【請求項５】
オブジェクトをシャドーオブジェクトとして指定する工程と、
該シャドーオブジェクトの境界を決定する工程と、
前記基礎領域において見える面が前記シャドーオブジェクトの前記境界内にある場合には、変更したシェードで基礎領域を陰影付けする工程と、
を備えた請求項１から請求項４のいずれかに記載のスクリーン上に表示するための３次元像を陰影付けする方法。
【請求項６】
オブジェクトを透明なオブジェクトとして指定する工程と、
前記基礎領域において目に見える面が前記３次元像における前記透明なオブジェクトの後方にある場合には、基礎領域に適用されるシェードを変更する工程と、
を備えた請求項１から請求項５のいずれかに記載のスクリーン上に表示するための３次元像を陰影付けする方法。
【請求項７】
スクリーン上に表示するための３次元像を陰影付けする装置において、
該３次元像における各オブジェクトを表す１群の多数の無限面を定めるデータを供給する手段と、
交差する射線を観察点（ｐ１）から像平面の各基礎領域（ｐ２）を経て前記３次元像に投影する手段と、
交差する各面について該面の前記像平面からの距離に基づいて深度値（１／ｕ）を発生させる手段と、
いずれかの面が前記基礎領域で見えるかどうかを、生成された前記深度値に基づいて決定する手段と、
前記決定の結果に基づいて前記基礎領域を陰影付けする手段と、
を備えており、
前記深度値１／ｕは、次の式で表され、
１／ｕ＝ｎ（ｐ２−ｐ１）／（ｋ−ｎ．ｐ１）
ここで、ｎは、原点に向いた面に対する単位直角ベクトルであり、
ｋは、面から原点への垂直距離であり、
ｐ１は、原点から観察点までの距離であり、
ｐ２は、像平面上の基礎領域の中心における射線上の点であり、
ｕは、射線に沿ってどれほど遠くで面との交差が生じるかの尺度であり、
前記各面は、前方を向いた面または逆方向を向いた面として指定され、前記前方を向いた面は、その面に直角な線が観察点を向くような面であり、前記逆方向を向いた面は、その反対の面であり、
前記深度値に基づいて決定する手段は、最も遠い前方を向いた面についての深度値が最も近い逆方向を向いた面についての深度値よりも小さい場合には、該面が基礎領域で見えるものと決定する、
ことを特徴とする装置。
【請求項８】
各基礎領域における各オブジェクトについて、前記３次元像における見える面の相対的な深度を比較し、前記比較の結果に基づいて前記基礎領域を陰影付けする手段を含む請求項７に記載のスクリーン上に表示するための３次元像を陰影付けする装置。
【請求項９】
前記深度値を発生させる手段は、前記３次元像における各基礎領域について、各オブジェクトの各面についての深度値を順次発生させる請求項７または８に記載のスクリーン上に表示するための３次元像を陰影付けする装置。
【請求項１０】
単一集積回路に設けられた請求項７または８または９に記載のスクリーン上に表示するための３次元像を陰影付けする装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、３次元像を陰影付け（シェーディング）するシステムに係り、より詳細には、実質的にリアルタイムでこれを行うことのできるシステムに係る。
【０００２】
【従来の技術】
完全に隠れたリアルタイム３Ｄ像を発生するための公知の最良のシステムは、Ｚバッファ又は深度バッファ像高精度アルゴリズムである。これは、ソフトウェア又はハードウェアのいずれかで実施することができ、シリコン・グラフィックス社、イベンツ・アンド・スサーランド社、及びヒューレット・パッカード社のような会社で製造されたシステムに使用される。
【０００３】
Ｚバッファアルゴリズムは、像の各ピクセルごとにカラー値を記憶するフレームバッファを必要とする。これに加えて、各ピクセルごとにエントリを有するＺバッファを必要とする。これには、各ピクセルごとにＺ値（深度値）が記憶される。３Ｄ表示を発生するためには、三角形のような多角形が任意の順序でフレームバッファにレンダリングされる。多角形の走査変換中に、多角形上の点が、そのピクセルに対してバッファに既に存在する点よりも観察者から離れない場合には、その新たな点のカラー及びＺ値が古い値に取って代わる。予めの分類は不要であり、オブジェクトとオブジェクトの比較も不要である。
【０００４】
【発明が解決しようとする課題】
Ｚバッファ型のシステムは、高レベルの集積及び性能を必要とする上に、非常に高価である。又、リアルタイム性能を得るべき場合には、高性能のフレームバッファ及びＺバッファを使用する必要がある。
【０００５】
【課題を解決するための手段】
本発明の好ましい実施例は、高度に集積された低コストで高性能のリアルタイム３次元グラフィックシステムを形成できるようにする。
【０００６】
好ましくは、本発明は、コスト効率の良いＶＬＳＩ（超大規模集積）実施に非常に適した規模変更可能な(scalable)通常のパイプライン構造で実施される。このような規模変更可能な解決策を用いることは、３Ｄグラフィックレンダリングシステムを単一チップ上に設けられることを意味する。
【０００７】
システムを精巧にすることは、影（シャドー）、アンチエリアジング、ソフトな影、透明度、視野深度の効果、動きのぼけ、カーブした面、及び構造上の立体形状（ＣＳＧ）の直接実施をサポートできるようにする。これら特徴の幾つか、例えば、リアルタイムの影発生は、Ｚバッファ技術を用いて実施することが非常に困難であり、それ故、実際にそれらを実施する高性能システムは、ほとんどない。本発明による解決策は、影のような特徴を比較的単純なやり方で得られるようにする。
【０００８】
本発明は、従来の多角形に基づくレンダリング技術ではなく、３次元像をレンダリングするための射線投射(ray casting) 技術の使用に基づくものである。
【０００９】
本発明の好ましい実施例において、オブジェクトは、各々、データのセットとして記憶された１組の面によって表される。像平面は、観察者と、見るべき場面との間に存在すると考えられ、これは、複数の基礎領域（ピクセル）で構成される。射線は、観察点からスクリーンの基礎領域を経て見られるべき場面へと通過すると仮定され、その場面内のオブジェクトを表す種々の面に交差する。これらの交差と、観察者からの距離とを分析することにより、面が見えるかどうか、ひいては、そのピクセルを特定のシェードでレンダリングしなければならないかどうかを判断することができる。
【００１０】
この解決策を用いるには、連続的に流れる同様の計算を実行する必要がある。場面の各オブジェクトに対する１組の面を各ピクセルにおいてテストし、そして目に見える最も近い面に指定されたシェードがそのピクセルに与えられる。このような技術は、パイプライン形態で実施することができる。これは、高度な集積化を可能にし、性能／複雑さとコストとの間の妥協をなし得るようにする。
【００１１】
【実施例】
本発明はその種々の特徴について特許請求の範囲に詳細に定められる。以下、添付図面を参照し、本発明の実施例を詳細に説明する。
【００１２】
図１は、３Ｄ像合成パイプライン２を示しており、像表面の操作が所定の１組のルールに基づいて実行されて、個々の画素（ピクセル）にシェード（濃淡）が割り当てられる。パイプライン２が作用する３次元像データは、３Ｄデータベース４に記憶される。データベースとパイプラインとの間には形状プロセッサ６が設けられており、データベースからのデータを、パイプラインによりレンダリングする前に、操作できるようになっている。操作は、オブジェクトの回転、並進移動、視点変更及びシェーディング計算のような機能を含むことができる。ある形式のユーザ入力をこれに与えて、３Ｄデータベースのリアルタイム対話操作を行うことができる。形状プロセッサによってパイプラインに送られる像は、パイプラインにより表示のためのピクセルデータに変換される面データである。
【００１３】
図１のパイプラインプロセッサは、多角形をベースとするレンダリングアルゴリズムではなくて、射線トレースアルゴリズムに基づくものである。射線トレースアルゴリズムにおいては、表示されるべき各３次元形状が、図２に示すようにオブジェクトの集合としてモデリングされる。これらは、図３に示すように、元の形状の近似形を作るために何が必要とされるかに基づいて互いに交差する。元のオブジェクトの凹所は、図４に示すように、多数のブロックに分割される。
【００１４】
各オブジェクトは、多数の表面のみで定められる。図２ないし４に示した例では、これらの面が全て平らであるが、本システムは、カーブした面を取り扱うに充分な融通性を有している。各オブジェクトの縁及び頂点は、面の交差から暗黙のうちに定められ、従って、縁及び頂点のデータを記憶する必要はない。
【００１５】
場面のレンダリングを開始できる前に、その場面の各面は、前方の面又は逆向きの面として分類される。これは、各面を定めるデータと共に記憶されるフラグをセットすることによって行われる。前方の面は、その面に直角な線が観察者を向くような状態を表す。逆向きの面は、その反対である。
【００１６】
射線トレース技術は、各オブジェクトを順次取り上げそして観察者の目から像平面内の選択された点（ピクセル）を通る射線がそのオブジェクトに定められた全ての面に交差することをイメージすることによって動作する。これが行われると、目から最も離れた前方面の交差と、目に最も近い逆向き面の交差とが決定される。これが図５に示されている。
【００１７】
図５において、射線１及び射線２の両方は観察点８からスタートする。オブジェクトは、図５の断面の平面において４つの面で定められる。観察点８から最も離れた射線１の前方面の交差はＦ１であり、そして観察点に最も近い逆向き面の交差はＲ１である。
【００１８】
最も近い逆向き面の交差が、最も遠い前方交差よりも観察点の近くにあるこの状態は、射線１がオブジェクトに交差しないことを示す。それ故、この特定のオブジェクトは、射線１が通過する像平面内のピクセルにおいて見えない。一方、射線２は、その最も近い逆向き交差Ｒ４が最も遠い前方面交差Ｆ３よりも観察点８から離れている。これは、射線２が通過するピクセルにおいて像平面内でオブジェクトが見えることを指示する。それ故、このピクセルには、その面に割り当てられたシェード（濃淡）が割り当てられる。このシェードは、通常、面を定めるデータと共に記憶され、グレースケール値であってもよいし、全色システムの場合にはＲ、Ｇ、Ｂ値であってもよい。単一オブジェクトの特定のピクセルにシェードを割り当てるこの技術は、ルール間セット(inter-rule set)と称する。
【００１９】
場面内の各オブジェクトに対してプロセスが繰り返され、そして目に最も近いオブジェクトの目に見える面であって、特定のピクセルを通過する射線に交差する面がもしあれば、それはそのピクセルに対するシェードを導出するように選択される。これをルール内セット(intra-rule set)と称する。
【００２０】
従って、特定のピクセルに適用されるシェードは、目に見える面の特性及び向きから計算することができる。射線が交差する目に見える面がない場合には、その射線が通過するピクセルに割り当てられたシェードは、バックグランドシェードとなる。シェードは、グレースケール値であってもよいし、全Ｒ、Ｇ、Ｂ値であってもよい。
【００２１】
面と射線の交差を見つけるプロセスは、各面を定めるデータからの非常に簡単な動作に簡略化することができる。これは、以下に説明する。
【００２２】
各面は、ベクトル形態で次のように表すことができる。
ｎ．ｘ＝ｋ
但し、ｎ＝原点（通常は観察点）に向いた面に対する単位直角ベクトルで、通常は原点からの角度のコサインとして記憶される。
ｋ＝面から原点への垂直距離である。
ｘ＝面上の点（座標）である。
【００２３】
線即ち射線は、ベクトル形態で次のように表される。
ｐ１＋Ｕ（ｐ２−ｐ１）
但し、ｐ１＝ベースベクトル、即ち原点から観察点までの距離である。
ｐ２＝像平面上のピクセルの中心における射線上の点である。
Ｕ＝射線に沿ってどれほど遠くで点ｘにおいて交差が生じるかの尺度である。
それ故、ｎ（Ｐ１＋ｕ（ｐ２−ｐ１））＝ｋ、及び
ｕ＝（ｋ−ｎ．ｐ１）／ｎ．（ｐ２−ｐ１）
パラメータｕは、交差する面の後方では負であり、ｐ１とｐ２との間で０ないし１の範囲であり、そして像平面の前方の点については１より大きい。従って、パラメータｕは、観察者から像平面上の点を経て所与の面までの距離の尺度を与える。これは、像平面上の各ピクセルに射線を通すときにピクセルごとの分割を必要とする。しかしながら、このパラメータの逆数１／ｕは、分割を必要とせず、依然として面までの距離の尺度を与える。この場合に、これは、面までの距離が無限に向かうにつれて０に近づく。この距離の逆の尺度を通常は深度と称している。それ故、次の式を用いて各ピクセルにおける各面の深度を比較することにより、各ピクセルにおいてどの面が見えるかを見つけることができる。
１／ｕ＝ｎ（ｐ２−ｐ１）／（ｋ−ｎ．ｐ１）
この式においてベクトルを拡張すると、次の結果が得られる。
１／ｕ＝（ｎ１.(ｘｓ−ｘｅ）＋ｎ２.(ｙｓ−ｙｅ）＋ｎ３.(ｚｓ−ｚｅ））／（ｋ−（ｎ１．ｘｅ＋ｎ２．ｙｅ＋ｎ３．ｚｅ））
但し、ｘｓ、ｙｓ、ｚｓは、像平面交差座標であり、そしてｘｅ、ｙｅ、ｚｅは目点の座標である。
【００２４】
目点である投影の中心が像平面の中心でもある場合には、上記式は次のように簡略化される。
１／ｕ＝（ｎ１．ｘｓ＋ｎ２．ｙｓ＋ｎ３.(ｚｓ−ｚｅ))／（ｋ−ｎ３．ｚｅ）
これは、次のようなより一般的な形態に有理化することができる。
１／ｕ＝Ａ．ｘｓ＋Ｂ．ｙｓ＋Ｃ
Ａ、Ｂ、Ｃは、特定の場面における各面の定数であり、従って、上記の式を用いて、各射線上の各面への距離を導出することができる。
【００２５】
ｘｓ及びｙｓは、この式を用いて各面への距離を計算すべき像平面内のピクセルの座標である。
【００２６】
像は、通常は、像平面をラスタ形態で走査することにより構成され、従って、特定の面については、スタート深度が計算された後に、像平面において水平方向に進行するときにＡだけ増加しそして垂直方向に進行するときにＢだけ増加することにより、各ピクセルの深度を計算することができる。前記したように、各面の深度は、像平面内の各ピクセルごとに計算しなければならない。これは、相当の数の計算である。しかしながら、水平に隣接するピクセル間の深度計算は単一の加算しか必要とせずそして多数のピクセルを並列に動作させることができるので、非常に効率的なアーキテクチャを案出することができる。シャドー及び透明なオブジェクトも処理することのできる１つの考えられるアーキテクチャを、図４について説明する。
【００２７】
本発明を実施するプロセッサの内部のコアは、パイプライン構成された一連の同じセルで構成される。セルの典型的な個数は３２ないし６４である。２つのこのようなセルが図６に示されている。各セルは単一のピクセルについて機能し、そして隣接するセルは隣接ピクセルについて機能する。即ち、
セルＮは、ピクセル（ｘ，ｙ）を処理し、
セルＮ＋１は、ピクセル（ｘ＋１，ｙ）を処理し、そして
セルＮ＋２は、ピクセル（ｘ＋２，ｙ）を処理する。
【００２８】
これは、図６に示すように、セルの上部によって達成される。特定の面に対して、パラメータＡが各サイクルの始めにレジスタ１０に入れられ、そしてＡｘｓ＋Ｂｙｓ＋Ｃを表す深度パラメータが各サイクルの始めにレジスタ１２に入れられる。これら２つの値は加算器１４において合成され、水平に隣接するピクセルに対する新たな深度パラメータ２Ａｘｓ＋Ｂｙ＋Ｃを生じ、これは、次のセルのレジスタ１２に入れられる。又、パラメータＡは、次のセルの対応するレジスタ１０にも入れられる。次のセルにおけるレジスタ１０及び１２の値は、対応する加算器１４において合成され、その出力は、パイプラインの次のセルのレジスタ１２への入力を形成する。
【００２９】
種々のオブジェクトを定める面はリストとして記憶され、順次に処理される。これらの面は、それが定めるオブジェクトに関してグループ分けされ、そして全ての前方面がそのグループのスタート時の基礎となり、その後に逆向きの面が続くというような順序にされる。これを以下に示す。
オブジェクトＮ＋１の面  Ｍ＋９逆向き面
オブジェクトＮ＋１の面  Ｍ＋８逆向き面
オブジェクトＮ＋１の面  Ｍ＋７前方面
オブジェクトＮ＋１の面  Ｍ＋６前方面
オブジェクトＮの面  Ｍ＋５逆向き面
オブジェクトＮの面  Ｍ＋４逆向き面
オブジェクトＮの面  Ｍ＋３逆向き面
オブジェクトＮの面  Ｍ＋２前方面
オブジェクトＮの面  Ｍ＋１前方面
オブジェクトＮの面  Ｍ前方面
【００３０】
各面を定めるパラメータＡ、Ｂ及びＣは、他の面のアトリビュートを含むオペレーションコードと共に記憶される。これらの１つは、面を陰影付けするためにルックアップテーブルのインデックスとして使用される面タグである。或いは、このタグは、その面に対する実際のＲ、Ｇ、Ｂ値を含むこともできる。オペレーションコードの更に別の情報がプロセッサによって使用されて、各面で何を行うべきかが判断される。コードに含まれる情報の形式は、次の通りである。
新たなオブジェクトのスタート
前方又は逆向きの面
全場面に対する面データの開始
全場面に対する面データの終了
シャドーオブジェクト
透明オブジェクト
【００３１】
この情報は、セルのレジスタ２８へ送られて記憶される制御信号によって表される。そこから必要に応じてアクセスされる。
【００３２】
新たなオブジェクトのスタートにおいて、処理されているピクセルに対しそのオブジェクトの第１の面の深度が深度内レジスタ１８に記憶される。面のシェードのような面タグデータは、タグ内レジスタ２２に記憶される。それと同時に、手前のオブジェクトからの手前の深度内の値が深度間レジスタ１６の値と比較され、このレジスタは、処理されているピクセルに対し処理された目に見える面の深度を記憶する。深度内の値がそのピクセルに対する深度間よりも大きい場合には、深度内レジスタの値が深度間レジスタ１６に転送される。従って、システムは、オブジェクトの面の処理の終了と共に、そのオブジェクトの最も近い目に見える面を、その特定のピクセルに対して場面内でそれまでに検出されている最も近い目に見える面と比較する。必要に応じて、レジスタ１６が更新される。
【００３３】
深度内の値を深度間の値と比較するために、ＭＵＸ２４を用いて、レジスタ１６の出力が比較器２６の入力の一方へと切り換えられ、その他方の入力はレジスタ１８の出力を受け取る。
【００３４】
単一のオブジェクトの面が処理されている間に、ＭＵＸ２４はレジスタ２８に入れられた制御信号によって制御されて、レジスタ１２及びレジスタ１８を比較器２６の入力に接続する。前方面に対し、現在の面深度が深度内の値より大きい場合には、深度内抵抗が同一に保たれる。逆向き面の場合には、逆の動作が生じる。従って、オブジェクトの処理の始めに、深度内レジスタは、その手前のオブジェクトから目までの最も近い面を含んでいる。全てのオブジェクトが処理された後に、タグ内及び深度内レジスタは、セルが機能しているピクセルに対し目までの最も近い面を定めるデータを含む。
【００３５】
ルール発生器３０は、目に見えるより近い面が検出されたときに深度間レジスタ１６及びタグ間レジスタ３２に対して更新を行うのに使用される。
【００３６】
幾つかのオブジェクトをシャドーボリュームとしてフラグを立てることによりシステムによって影がレンダリングされる。シャドーボリュームは、点光源から照射されるオブジェクトのシルエットエッジによってスイープされるスペースの領域である。このボリューム内のオブジェクトは、影に入ると考えられる。
【００３７】
シャドーオブジェクトは、立体オブジェクトと同様に処理される。全てのシャドー及び非シャドーオブジェクトが処理されたときには、ピクセルに指定された面が影に入るかどうかを決定することは簡単である。これは、その面の位置をシャドーオブジェクトの最も遠い前方面及び最も近い逆向き面と比較しそして目に見える面がその範囲内にあるかどうかチェックすることにより行われる。もしそうであれば、その面に関連したフラグがセットされて、その陰影付けの効果をシュミレーションするためにそのシェード又はカラーの変更を行う必要があることを指示する。システムは、２つ以上の点光源からの照射、ひいては、２つ以上の影シェードを取り扱うに充分な融通性をもたせることができる。
【００３８】
図６の回路において、シャドーオブジェクトは、全ての前方面が処理された後に、深度内レジスタ１８が深度間レジスタ１６と比較されるという点で、若干異なるように取り扱われる。深度内の値が深度間の値よりも大きい場合には、タグ間レジスタ３２においてフラグがセットされる。全ての逆向き面が処理された後に、深度内の値が深度間の値と再び比較される。深度内の値が深度間の値より大きい場合は、フラグがクリアされる。影を投げることのできる各光源ごとに１つのフラグが設けられる。全てのシャドーオブジェクトを処理した後に、いずれかのシャドーフラグがセットされた場合には、そのピクセルの面のカラーが、影の状態をシュミレーションするように変更される。これら全ての動作は、図６のルール発生器によって行われる。これは、全ての制御信号を受信し、そして充分な選択ロジックを介して、更新のためにレジスタを選択的にイネーブルする。
【００３９】
システムは、透明度、特に吸収透明度を取り扱うことができる。これは、光線が透明なオブジェクトを通過するときに特定の波長においてエネルギーを失い、これにより、光線の色を変化させるような状態である。
【００４０】
吸収効果は、あるオブジェクトを透明であるとフラグを立てることにより刺激される。これらは、不透明なオブジェクトの後に処理される。透明なオブジェクトは、通常のルール内セットによって処理される。特定のピクセルに対し、そのピクセルにおける目に見える面の前に透明オブジェクトが現れた場合には、この状態を指示するためにフラグがセットされる。フラグがセットされた場合には、そのピクセルの面の色が、透明度をシュミレーションするように変更される。透明なオブジェクトの厚みを導出し、そのピクセルの色に対して更に別の適当な変更を行うように更に別のソフトウェアを設けることができる。
【００４１】
この方法は、全く透明なオブジェクトに対して使用される。しかしながら、オブジェクトの１つの面を目に見えないようにすることができ、例えば、チューブにすることができる。従って、閉じていない凸状の体積が形成される。この形式の構成を作るために、オブジェクトが処理された後に、逆向き面が再び通過される。前方面がピクセルにおいて目に見えるものであり、そして目に見えないフラグをセットした場合には、その深度及びタグ値が、観察点に最も近い逆向き面と置き換えられる。これは、次いで、全ての更に別の動作に対し前方面として分類される。逆向き面も目に見えない場合に、その面は逆向き面のままとされ、深度動作においてそれ以上の部分を持たない。従って、開放端円筒が形成される。
【００４２】
図６の回路において、透明なオブジェクトが処理されたときに、内部ルールは同じままである。しかしながら、透明の深度内の値が深度間レジスタに対して比較されるときには、深度間の値は常に同じままである。透明な深度内の値が深度間の値より大きい場合には、タグ内においてフラグがセットされる。次いで、これを用いて、後で色を変更し、透明度をシュミレーションすることができる。
【００４３】
図７は、４０で示された図６の複数のセルを含む簡単なプロセッサを示している。全部でＭ個のセルがカスケード構成にされ、典型的にＭは３２に等しい。メモリ４２は、表示されるべき像の各面を表す値Ａ、Ｂ及びＣを記憶する。レジスタ４４は、処理されるべき像の各ブロックの始めにＸ及びＹの値を記憶する。
【００４４】
処理の始めに、表示されるべき第１オブジェクトの第１面の値Ａ、Ｂ及びＣがメモリからの出力に供給される。値Ａは、乗算器４６において初期Ｘ座標即ちブロックの第１ピクセルによって乗算され、そして加算器４８の入力として送られる。それに対応する値Ｂは、乗算器５０において処理されるべきピクセルの第１行のＹの値によって乗算され、その出力は加算器４８の別の入力を形成し、そして値Ｃは、加算器４８の入力に直接送られる。
【００４５】
加算器の出力は、第１ピクセルにおける第１面の深度値を表す。これは、第１のセル４０に供給される。
【００４６】
第１のセル４０において、深度間及び深度内レジスタ１６及び１８は、どちらも最初は０にセットされ、従って、この初期深度値は両方のレジスタに対して読み取られる。又、パラメータＡは、セル４０に直接的にも供給され、そこで、加算器１４において初期深度値と合成される。
【００４７】
次のクロックサイクルに、パラメータＡは、第２のセルのレジスタ１０に送られ、そして加算器１４によって供給される更新された深度値がレジスタ１２に送られる。それと同時に、処理されているオブジェクトの次の面に対するパラメータＡ、Ｂ及びＣが乗算器４６及び５０によって加算器４８に供給され、そしてそこから深度値が第１セルに供給され、このセルは、第２面の深度を第１面の深度と比較し、そして深度内レジスタ１８に記憶されている現在値との比較に基づくと共に、その新たな面及び既存の面が前方面であるか逆向き面であるかに基づいて、深度内レジスタ１８に記憶された値を更新する。レジスタが更新された場合には、面アトリビュートを記憶するタグ内レジスタ２２も更新される。
【００４８】
オブジェクトに対する面のリストの終わりに、深度内レジスタの値が深度間レジスタの値と比較され、後者のレジスタをより近い目に見える面で更新すべきかどうか調べる。
【００４９】
このプロセスは、オブジェクトの全ての面がセル４０のアレーに通されるまでこれらの面に対して続けられる。オブジェクトの最後の面がメモリ４２によって送られてしまうと、次のオブジェクトの第１面が送られる。従って、セル４０に送られる面の連鎖に途切れはない。
【００５０】
全てのオブジェクトの全ての面が処理されると、レジスタ４４のＸ部分は、プロセッサ内のセルの数であるＭだけ増加され、例えば、３２だけ増加される。次いで、オブジェクトの全リストが、セルの新たなブロックに対して再び逐次処理される。このプロセスは、ピクセルのライン全体が処理されるまで続けられ、その点において、レジスタ４４のＹ部分が１だけ増加されそしてＸ部分が、処理されるべきデータの次のラインの開始を表すその初期値にリセットされる。レジスタ４４のＸ及びＹ部分を増加するための接続は、図７には示さない。
【００５１】
出力画像の質を向上するためにシステムに対して種々の拡張を行うことができる。これらについて、以下に説明する。
【００５２】
アンチエリアジング
アンチエリアジングは、マルチパス技術を用いて非常に簡単に得ることができる。この方法では、各オブジェクトは何回も処理される。オブジェクトが処理されるたびに、その位置がピクセル以下の量だけ変更され、ピクセルカラーがパスの上に蓄積される。パスの終わりに、最終カラー値がパスの回数で除算される。行われるパスの回数は、必要とされる最終的な像の質に基づく。例えば、１／２ピクセル精度が要求される場合には、４回のパスが行われ、そのたびに半ピクセル増分だけオブジェクトが移動される。従って、射線はピクセルの各四半分を通して効率的に投影され、その結果が平均化される。
【００５３】
ソフトシャドー
ソフトシャドーは、点光源ではない光を用いることによって生じ、従って、面上の点は、光の一部分のみを見る。半影に対応する部分的に不鮮明な光を見ることから本影に対応する完全な暗黒を見ることへの移行は、影にソフトな縁を生じさせ、影の縁のアンチエリアジングが必要とされる。
この効果は、シャドーボリュームを形成するのに使用される光の点をパス間で移動するようなマルチパス技術によってシュミレーションすることができる。その結果がパス間で累積され、最終的なカラー値が、行ったパスの回数で除算される。
【００５４】
視野の深度
カメラからの距離の関数としてオブジェクトの焦点が合ったりぼけたりする視野の深度は、人間の目の視野ではなくて、カメラの視野を模擬するものである。この効果も、マルチパス解決策を用いて達成することができる。これを行うために、Ａ及びＢのパラメータがパス間で若干変更され、前記のように結果が累積される。
【００５５】
動きのぼけ
動きのぼけは、カメラと場面との間の相対的な動きの効果を模擬するものであり、一時的なアンチエリアジングの実用的な方法である。この効果は、マルチパス解決策によっても形成される。ぼけさせるべきオブジェクトはパス間に移動され、前記の場合と同様に結果が累積される。
【００５６】
カーブした面
順方向微分技術を用いることによりカーブした面を処理するようにアルゴリズムを拡張することができる。各面に関連した３つのパラメータのみをもつのではなく、ここでは、例えば、二次及び三次導関数があって、これらも累積される。これは、二次及び三次曲線面を再現することができ、従って、よりリアルな像を形成することができる。
【００５７】
構造上の立体形状
ルール発生器、並びに前方及び逆向きの両方の深度を記憶する特別なレジスタへと拡張すると、ＣＳＧブールプリミティブの幾つかを実施することができる。これは、例えば、２つのオブジェクトを互いに差し引きすることができる。従って、オブジェクトから小さな立体を差し引くことにより穴をもつオブジェクトを形成することができる。
【００５８】
目点交差
目点を直接通るように面を方向付けする状態では、ゼロで除算する状態、即ちシルエットの縁において生じる状態が存在する。従って、面は、正の無限大から単一ピクセルを横切って負の無限大へと進まねばならない。これは、ここに述べるシステムでは不可能であるから、この状態を避けるように面を擾乱しなければならない。しかしながら、このような擾乱は、この面により形成されたシルエットの縁が動くように見えることになり、像のリアルさを低減する。
【００５９】
面にフラグを立ててそれが目点を通ることを指示することにより、この問題を取り除くことができる。フラグがアサートされそして面が正の深度を有するときには、システムによって許容された最大値に深度がセットされる。フラグがアサートされそして面が負の深度を有するときには、システムにより許容された最小深度値に深度がセットされる。従って、面は、１つのピクセルにおいて最大深度から最小深度へ進むことができる。
【００６０】
性能の向上
ここに提案するアーキテクチャの性能は、セルの個数を増加することによって非常に容易に向上させることができる。上記例では３２個のセルが使用された。しかしながら、２５６個又はそれ以上のセルが使用できない理由はない。セルの総数は、使用すべき技術が与えられた場合、コストと性能との間の妥協となる。又、ここに提案した多数の装置を互いにカスケード構成にして性能を向上させることも非常に容易である。これは、多数の装置をパイプライン構成にするか又は並列に動作させるか或いはその両方の組み合わせによって行うことができる。
【００６１】
上記と組み合わせることのできる更に別の方法は、その場面にもはや必要ないことが検出されたときにオブジェクトを廃棄することである。これに必要なことは、視野がオブジェクト内に入ったときにセットされそして視野がもはやオブジェクトにないときにクリアされるフラグを設けることだけである。フラグがクリアされると、そのオブジェクトは、そのラスタ線に対する処理においてそれ以上の部分を担わない。
【００６２】
システムアーキテクチャ
本発明のアーキテクチャを用いたシステムが図８に示されている。このシステムは汎用マイクロプロセッサ５２を備え、これはゲームポートのようなインターフェイスと通信する。マイクロプロセッサ５２は、３２ビットバスを経て本発明による複数のプロセッサ５４と通信する。バスが接続された第１プロセッサは、２つのバスを経て、場面の全ての面座標が記憶されたパラメータ記憶及びメインメモリへも接続される。これは、異なる場面に関するデータで更新することのできるランダムアクセスメモリである。
【００６３】
各プロセッサ５４のメインコアは、図６及び７について説明したセルのアレーであり、図９に更に詳細に示されている。
【００６４】
図９には、パラメータ記憶及びメインメモリと、マイクロプロセッサ５２のプロセッサポートとにインターフェイスするメモリコントローラ５６が示されている。セルアレー４０、乗算器４６及び５０、加算器４８は、図７に示されたものに対応し、Ｘ及びＹのスタート値はコントロールレジスタ５８によって供給される。又、コントロールレジスタ５８は、メモリコントローラにも制御信号を供給し、これは、次いで、適当な制御信号を面アトリビュートと共にセル４０に供給する。
【００６５】
先入れ先出し（ＦＩＦＯ）レジスタ６０は、マルチプレクサ６２を経てセル４０の出力に接続され、そして処理された値を累積するのに使用され、従って、プロセッサの出力をセルから減結合する。ピクセルアキュムレータ６４は、上記の種々のマルチパス技術を実施できるように設けられている。
【００６６】
図９の出力は、ピクセルデータをフレームバッファに供給するための高性能バスに接続することもできるし、或いはデジタル／アナログコンバータに直結されてディスプレイユニットに供給することもできる。このユニットへの入力は、ジョイスティック、ＲＯＭカートリッジ及び他のゲーム入力装置にインターフェイスするゲーム型ポートであってもよいし、或いはＩＢＭ  ＰＣバスインターフェイスのようなホストコンピュータインターフェイスであってもよい。
【００６７】
メモリコントローラ５７は、プロセッサポートから送られる信号に応答して、処理されている場面において回転や並進移動等の機能を実行できる。
【００６８】
図９に示す回路は全て単一のチップで供給することができる。或いは又、この回路の一部分のみを単一のチップに設けることもできる。
【図面の簡単な説明】
【図１】本発明によるシステムの概略ブロック図である。
【図２】本発明の実施例により操作及びレンダリングされる形状を示す図である。
【図３】本発明の実施例により操作及びレンダリングされる形状を示す図である。
【図４】本発明の実施例により操作及びレンダリングされる形状を示す図である。
【図５】オブジェクトの２本の射線／面の交差の断面図で、本発明の実施例を示す図である。
【図６】本発明によるパイプラインプロセッサの２つのセルを示す図である。
【図７】本発明によるプロセッサのブロック図である。
【図８】本発明によるプロセッサを用いたシステムを示す図である。
【図９】図８のプロセッサのアーキテクチャーを示すブロック図である。
【符号の説明】
２  ３次元（３Ｄ）像合成パイプライン
４  ３Ｄデータベース
６  形状プロセッサ
８  観察点
１０、１２  レジスタ
１４  加算器
１６  深度間レジスタ
１８  深度内レジスタ
２２  タグ内レジスタ
２４  ＭＵＸ
２６  比較器
３０  ルール発生器
３２  タグ間レジスタ
【図１】
0003759971.tif 000002
【図２】
0003759971.tif 000003
【図３】
0003759971.tif 000004
【図４】
0003759971.tif 000005
【図５】
0003759971.tif 000006
【図６】
0003759971.tif 000007
【図７】
0003759971.tif 000008
【図８】
0003759971.tif 000009
【図９】
0003759971.tif 000010