JPH0776991B2 - Nurbsデータ変換方法及び装置 - Google Patents

Nurbsデータ変換方法及び装置

Info

Publication number
JPH0776991B2
JPH0776991B2 JP2239185A JP23918590A JPH0776991B2 JP H0776991 B2 JPH0776991 B2 JP H0776991B2 JP 2239185 A JP2239185 A JP 2239185A JP 23918590 A JP23918590 A JP 23918590A JP H0776991 B2 JPH0776991 B2 JP H0776991B2
Authority
JP
Japan
Prior art keywords
coordinates
span
coordinate
point
points
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
JP2239185A
Other languages
English (en)
Other versions
JPH03201073A (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 JPH03201073A publication Critical patent/JPH03201073A/ja
Publication of JPH0776991B2 publication Critical patent/JPH0776991B2/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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation

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)

Description

【発明の詳細な説明】 A.産業上の利用分野 この発明は、コンピュータ・グラフィックス、特にパラ
メトリック・サーフェスを評価およびレンダリングする
装置及び方法に関するものである。
B.従来技術及びその課題 コンピュータ・テクノロジの評価は、コンピュータによ
って作成されるグラフィカル情報の表現に適用される技
巧を凝らしたテクニカル・アートの創作に依存してい
る。このテクニカル・アートは、コンピュータ・グラフ
ィックスと呼ばれている。近年、サイエンティフィック
・アプリケーション及びエンジニアリング・アプリケー
ションへの3次元コンピュータ・グラフィックスの使用
が、リアリスティックなイメージが要求されるに従っ
て、拡大してきている。
最近のコンピュータ・グラフィックス・ディスプレイ
は、ライン,マーカ,ポリゴンのほうに、パラメトリッ
ク・サーフェスのようなより一般的なジオメトリック・
プリミティブをサポートしている。しかし、コンピュー
タ・グラフィックス・ディスプレイ・システムにおける
そのようなパラメトリック・サーフェスを評価及びレン
ダリングするのに現在用いられている方法は、多くの場
合非能率的であり、複雑で大規模な外部コントロール・
ロジックを必要とする。
パラメトリック・サーフェスはb−スプライン・フォー
ムで表すことができ、過去においては、他者がb−スプ
ライン・フォームからパラメトリック・サーフェスを評
価及びレンダリングしようと試みたことが知られてい
る。例えば、従来のCAD/CAMアプリケーションは、デー
タベースに蓄積されたb−スプライン・サーフェス・フ
ォーム・データよりはむしろ、ホスト・コンピュータの
データベースに蓄積されているオブジェクトを形成する
ポリゴンを送出することによってグラフィックス・ワー
クステーションを使用している。この手法によれば、ホ
スト・コンピュータは、スプライン・サーフェスをフラ
ット・ポリゴンに分解し、ポリゴンをグラフィックス・
ワークステーションに送り、通常の処理を行った後、表
示させている。この手法は非能率的であり、b−スプラ
インの多くの魅力的な性質を利用できない。
1987年10月30日出願の米国特許出願第07/115,465号明細
書は、非一様有理b−スプライン(NURBS:non−uniform
rational b−spline)サーフェスを、次の処理のため
にBezierパッチに分解する並列バイプライン・サーフェ
ス処理システムを開示している。パッチ・アプローチに
るこの処理は、分解ステップのための演算リソースを必
要とし、スクリーンにレンダされたサーフェスにアーテ
ィファクト(例えば、ピンホールあるいはリップ)を発
生させる危険性がある。
公知の従来技術はいずれも、パラメトリック・サーフェ
スの評価及びレンダリングに、NURBSデータを全く利用
していない。したがって、効率的,正確かつ迅速に、パ
ラメトリック・サーフェスを表すNURBSデータを評価及
びレンダリングする方法及び装置が要求されている。既
に提案されている3次元グラフィックスに対するPHIGS
(Programmer's Hierarchical Interactive Graphics S
tandard)PLUS標準は、NURBSによるサーフェスの定義を
サポートしており、したがって前述の要求は、ますます
大きくなってくる。
C.課題を解決するための手段 本発明の原理によれば、直交するu,vパラメトリック座
標に沿って延在するサーフェスを、vパラメータのテサ
レイションにより定められる一連のストリップに分割す
るサーフェス評価システムを提供することにより、前記
必要性は満たされ、多くの利点が実現される。各ストリ
ップは、現在の値すなわちトップ値と、前の値すなわち
ボトム値とからなる2つの連続するvパラメータ値によ
り特徴づけられる。各ストリップのトップは、続くスト
リップのボトムとなる。グラフィックス・コントロール
・プロセッサは、サーフェスの各vスパンに対しvパラ
メータをどのようにテサレイトするかを決定し、各スト
リップのトップ,ボトムに沿ったv依存度とv導関数を
評価する。各ストリップのトップ及びボトムに対して得
られた斉次座標及びv導関数は、4つの並列浮動小数点
プロセッサに送られる。グラフィックス・コントロール
・プロセッサは、ストリップの各uスパンに対しuパラ
メータをどのようにテサレイトするかを決定し、一連の
uパラメータ値を浮動小数点プロセッサに送る。各uパ
ラメータ値に対し、並列に動作する浮動小数点プロセッ
サは、トップ座標及びボトム座標と、対応するv導関数
を評価し、トップ座標及びボトム座標のu導関数を得
る。
得られた値は、次段の浮動小数点プロセッサに連続的に
送られる。この浮動小数点プロセッサは、これら値を1
組のジオメトリック座標と1対のポイントに関連する頂
点ベクトルとに変換する。各uパラメータに対し、1対
のポイントの一方はストリップのトップにあり、他方は
ストリップのボトムにある。2つの連続する対は、後で
行うレンダリングのための4辺ポリゴンを定める。上述
の処理は、サーフェスの続くストリップのそれぞれに対
し繰り返し行われる。
この発明によれば、グラフィックス・コントロール・プ
ロセッサ手段は、初期vスパンを定めるkv行のコントロ
ール・ポイントを格納するために、kv個の行及びNu個の
列(kvはvパラメータ階数であり、Nuはuパラメータ次
元である)を有するFIFOコントロール・ポイント・スタ
ックを採用している。連続するvスパンは、続く個々の
行のコントロール・ポイントをFIFOのトップにロードす
ることにより定められる。続く各vスパンは、対応する
連続行のコントロール・ポイントと、直前のkv−1個の
行によって定められる。
またこの発明によれば、サーフェスの初期のuスパン
は、FIFOスタックの最初のku個の列によって定められ、
続く各uスパンは、対応する続く列と、直前のku−1個
の列とによって定められる。
さらにこの発明によれば、グラフィックス・コントロー
ル・プロセッサは、コントロール・ポイント・データを
モデリング座標からビュー座標に変換し、変換された座
標に重みwを乗算して、斉次座標を得る。
この発明の好適な実施例では、Cox−DeBoorプロセスに
従って評価を行う。並列浮動小数点プロセッサの1つ
は、評価された各uパラメータ・ポイントに対し重み出
力を与え、次段の浮動小数点プロセッサは、重みの逆数
を計算し、得られた逆数に残る3つの並列浮動小数点プ
ロセッサの出力を乗算する。クリッピング・プロセッサ
及びフレーム・バッファを、次段の浮動小数点プロセッ
サの出力に直列に接続し、パイプライン処理的に動作さ
せることができる。
この発明のNURBSに基づくパラメトリック・サーフェス
を評価及びレンダリングする方法及び装置は、高性能,
良好な数値安定性,コストの有効性,高速及び精度,既
に提供されているPHIGS PLUS標準とのコンパチビリテ
ィ,データ冗長性の排除,レンダリングされたサーフェ
スにおけるピンホールあるいはリップのようなアーティ
ファクトを避けること、各サーフェスを表すために選択
されたポリゴンの組を、サーフェスの瞬時表示要求に合
致するように最適化することのできるトラバーサル・タ
イム・テサレイションの可能性を含む多くの効果を提供
する。さらに、この発明は、コンピュータ・グラフィッ
クス・ディスプレイ・システムが、低階数のNURBSを用
いて複雑なサーフェスを構成する能力,ローカル・コン
トロール,凸閉包,座標変換及び有効なデータ圧縮に対
する分散に重みを用いて2次サーフェスを正確にレンダ
リングする能力を含む、NURBSの固有の特性及び利点を
十分に利用することを可能にする。
D.実施例 この発明は、高性能を達成するために、並列パイプライ
ン・プロセッサを用いて、非一様有理b−スプライン
(NURBS)に基づくパラメトリック・サーフェスのシェ
ーデッド像を作成するシステムに関するものである。関
連する用語及び数学的表現については、文献“An Intro
duction to Splines for Use in Computer Graphics &
Geometric Modelling"by R.H.Bartels,J.C.Beatty,and
B.A.Barsky(Morgan Kaufman,1987)を参照されたい。
簡単に言うと、非一様有理b−スプライン(NURBS)
は、パラメトリック・サーフェスを表するのに用いられ
るパラメトリック関数のクラスである。NURBSサーフェ
スは、折り曲げたり、伸ばしたり、捻じったり3次元形
状を形成することのできる2次元矩形サーフェスにより
構成される。
第1図のうち下側の図は、x,y,z座標空間におけるパラ
メトリック・サーフェスsを示す図である。第1図の上
側の図は、同一サーフェスsの内部パラメトリック座標
を示している。
NURBSサーフェスは、サーフェスの一方のエッジから他
方のエッジへ動くに従って単調増加するパラメトリック
座標は、ジオメトリック座標(x.y.z)に変換すること
ができる。すなわち、サーフェスに対し、 x=X(u,v) y=Y(u,v) z=Z(u,v) ただし、Umin≦u≦Umax Vmin≦v≦Vmax が成り立つ。
パラメトリック・サーフェスは、単純多項式によって定
義することもでき、このようなパラメトリック多項式関
数は、対応するNURBS関数で正確に表すことができる。
NURBSサーフェスは、有理形式あるいは非有理形式によ
って定義できる。非有理形式では、次式のパラメトリッ
ク座標の多項式関数 を評価することによって、NURBSサーフェスの各成分
(x,y,z)を定義することができる。
有理形式では、 で表される重みと呼ばれる追加の関数が存在する。この
場合、ジオメトリック座標は、 X(u,v)=WX(u,v)/W(u,v) Y(u,v)=WY(u,v)/W(u,v) Z(u,v)=WZ(u,v)/W(u,v) のように多項式の比で定義される。ここに、WX(u,v),
WY(u,v),WZ(u,v)は、非有理の場合のX(u,v),Y
(u,v),Z(u,v)を特定する多項式に類似している。
各NURBSは、パラメトリック座標の最大ベキ数に相当す
る次数mu及びmvと、mu+1及びmv+1に等しく、かつ、
次数mu及びmvの多項式において直線的に独立な項の数に
それぞれ相当する階数ku及びkvによって、特徴づけるこ
とができる。したがって例えば、2次関数ax2+bx+c
は、次数2及び階数3を有する。
NURBS関数は、それぞれがジオメトリック座標の制限さ
れた範囲に対してのみ有効である多数組の係数によって
表すことができる。したがって、1つのサーフェスは、
それぞれが異なる多項式によって表される1組のパッチ
に分割できる。第1のパッチは、u0〜u1のパラメトリッ
ク値uと、v0〜v1のパラメトリック値vによって定めら
れ、サーフェスのこの部分の座標は、多項式 によって定義される。
第2のパッチは、u1〜u2のパラメトリック値uと、v0
v1のパラメトリック値vとによって定められ、この部分
の座標は、多項式 によって定義される。以下同様にして、定義される。
NURBSは、コントロール・ポイント,重み,ノット・ベ
クトルにより決定される。コントロール・ポイントは、
サーフェスの形状に1次コントロールを与える。サーフ
ェスは、Nu×Nvマトリクスのコントロール・ポイントを
有している。ここで、Nuはuパラメータの階数kuより大
きいかまたは等しくなければならず、Nvはvパラメータ
の階数kvよりも大きいか等しくなければならない。サー
フェスは、1セットのパッチにより構成され、各パッチ
はNu×Nvマトリクスのコントロール・ポイントの中のku
×kvのサブセットにより定められる。
Nu×Nvコントロール・ポイント・マトリクスは、サーフ
ェスの全体形状を定めるが、サーフェスは通常これらの
コントロール・ポイントを通過しない。
重み値は、NURBSサーフェスの有理形式を定めるのに用
いられる。有理形式では、重み(w)は、コントロール
・ポイントの座標(x,y,z)のそれぞれに関係してい
る。重みと座標とは結合され、斉次座標(wx,wy,wz,w)
を形成する。この斉次座標は、4つのパラメトリック多
項式関数WX(u,v),WY(u,v),WZ(u,v),W(u,v)の組
に対するコントロール・ポイントを定める。その結果と
して得られるジオメトリック座標は、 X(u,v)=WX(u,v)/W(u,v) Y(u,v)=WY(u,v)/W(u,v) Z(u,v)=WZ(u,v)/W(u,v) の比により定義される。
重みは、正であり、かつ、0より大きいことが要求され
る。重みの値は、通常1に近く、もし重みがすべて等し
ければ、有理形式は非有理形式に変化する。
サーフェスに対するノット・ベクトルは、パラメトリッ
ク座標(u,v)のパラメータ空間の分割を定めている。
サーフェスは、各パラメトリック座標(u,v)に対する
ノット・ベクトル及び一連のスパンを有している。Nu個
のコントロール・ポイントを有するu階数(ku)のノッ
ト・ベクトルはNu+ku個の成分を有し、Nvコントロール
・ポイントを有するv階数(kv)のノット・ベクトルは
Nv+kv個の成分を有している。各ベクトルの最初及び最
終のノット値は、この発明では用いられないが、標準PH
IGS+により必要とされる。サーフェスにおける各スパ
ンは、2mの連続ノット値に依存する。ここに、m=ku−
1またはkv−1であり、kuはサーフェスのu階数であ
り、kvはサーフェスのv階数である。これらのノット値
は、2つのグループに分けられる。すなわち、一方のグ
ループはスパンに先行するm個のノット値を有し、他方
のグループはスパンに後続するm個のノット値を有して
いる。例えば、ku=4ならば、各スパンに対し6個のノ
ット値、すなわちスパンの前の3個のノット値とスパン
の後の3個のノット値とが存在する。b−スプラインが
一様または非一様であれば、ノット値が決定される。ノ
ット値が一様な間隔の値をとるならば(例えば、0,1,2,
3というように)、結果は一様b−スプラインである。
非一様b−スプラインに対しては、ノット値を不規則間
隔で分離することができ、ノット値は、すなわちスパン
の前の3個のノット値ノット・ベクトルにおけるよう
に、(0.0,1.2,1.5,1.5,2.7,9.0)繰り返す。
この明細書では、NURBSという用語は総称的に用いられ
ており、非有理(重みは1に等しくセットされる)及び
一様b−スプラインの特殊なケースを包含することを意
味している。
以下、この発明の好適な実施例を説明する。
この発明の原理に基づいて構成されるサーフェス評価及
びレンダリング・システム10を、第2図に示す。このシ
ステムは、 (1)システム・メモリ12 (2)グラフィックス・コントロール・プロセッサ14及
びローカル・メモリ15;パイプライン処理的に動作す
る。
(3)並列に配置された4個のプロセッサ16x,16y,16z,
16wのグループ16 (4)並列の浮動小数点プロセッサに接続された浮動小
数点プロセッサ18 (5)クリッピング・プロセッサ20 (6)フレーム・バッファ22 システム・メモリ12は、各パラメトリック・サーフェス
に関するデータを格納している。データは、有理または
非有理となり得るサーフェス・タイプ;未定義のテサレ
イション・パラメータに対し0、または定義されたテサ
レイション・パラメータに対し1とすることのできるサ
ーフェス・ステータス・フラグ;2〜kmax(kmaxは、種々
のプロセッサによりサポートされる最大階数)の範囲内
の整数であるu階数(ku)及びv階数(kv);ku〜Numax
及びkv〜Nvmax(Numax及びNvmaxは、グラフィックス・
コントロール・プロセッサ14に関連するローカル・メモ
リ15るにりサポートされる最大値)の範囲内の整数であ
るu次元(Nu)およびv次元(Nv);uノット値(u
(1)…u(Nu+ku));uテサレイション・パラメータ
(du(1)…du(Nu−ku+1);vノット値(v(1)…
v(Nv+kv));vテサレイション・パラメータ(dv
(1)…dv(Nu−kv+1));Nv行またはデータ・レコ
ードよりなるコントロール・ポイント・マトリクス、こ
こで各データレコードは、i=1〜Nuに対しNu組の座標
(xi,yi,zi,wi)を含む;である。
この発明における前記データの使用については、第13図
を参照すれば、最も良く理解できるであろう。第13図
は、u座標方向に連続するuスパンと、v座標方向に連
続するvスパンとを有するパラメトリック・サーフェス
を示している。サーフェスは、それぞれがトップ・エッ
ジとボトム・エッジとを有するストリップにテサレイト
される。トップ・エッジ及びボトム・エッジは、連続す
るvパラメータ・ポイント(パラメータ・インタバル
(dv)で分離される)に対する斉次座標wx,wy,wz,wの評
価により取り出される。各ストリップは、続くuスパン
のそれぞれに対し連続するuパラメータ・ポイント(パ
ラメータ・インタバル(du)で分離される)にテサレイ
トされる。
グラフィックス・コントロール・プロセッサ14は、シス
テム・メモリ12に格納されているデータを読み取り、シ
ステム・メモリにデータを書き込むことができる。グラ
フィックス・コントロール・プロセッサ14は、また、第
2図に2方向の矢印で示すように、ローカル・メモリ15
にデータを書き込み、ローカル・メモリからデータを読
み取ることができる。グラフィックス・コントロール・
プロセッサは、コントロール・ポイント・データを、モ
デリング座標からビュー座標に変換し、;各パッチがビ
ジブルであるか否かを決定し;各vスパンに対するvパ
ラメトリック座標をテサレイトし、一連の離間されたv
パラメータ・ポイント(V)を生成する、vパラメトリ
ック座標インタバル(Dv)を決定し;変換コントロール
・ポイント・データを斉次座標(wx,wy,wz,w)に変換
し;u座標方向にサーフェスを完全に横切って延在し、初
期vパラメータ・ポイント及び連続vパラメータ・ポイ
ントによりv座標において区切られたストリップに対
し、それぞれ、一連のNu個のボトム座標及びNu個のボト
ムv導関数と、一連のNu個のトップ座標及びNu個のトッ
プv導関数を与えるwx,wy,wz,wのv依存度を評価し;uパ
ラメトリック座標をテサレイトし、ストリップの各uス
パンに対し一連の離間されたuパラメータ・ポイントPC
を生成する、uパラメトリック座標インタバル(Du)を
決定し;より詳細に後述するように、4個の並列浮動小
数点プロセッサ16へコマンド及びデータを送る。
プロセッサ16x,16y,16z,16wは、各uパラメータ・ポイ
ントPCに対する、斉次座標wx,wy,wz,wの各1つの、トッ
プ座標及びボトム座標と、トップ及びボトムv導関数と
を含む4つのb−スプライン関数を独立して、同時に、
かつ同期して評価する。各座標に対するトップ及びボト
ム座標と、トップ及びボトムu導関数と、トップ及びボ
トムv導関数とを含む評価を、ストリップの各uパラメ
ータ・ポイントPCに対する各プロセッサ16x,16y,16z,16
wから、浮動小数点プロセッサ16x,16y,16z,16wから、浮
動小数点プロセッサ18に対して与える。プロセッサ18
は、w(u,v)の逆数を計算し、トップ座標及びボトム
座標のそれぞれに、この逆数を乗算し、対応するジオメ
トリック座標を決定し、対応するu及びv導関数を決定
し、各uパラメトリック・ポイントPCに対するストリッ
プ・トップ・ポイントとストリップ・ボトム・ポイント
のジオメトリックu及びv接線を決定する。u及びv接
線とのクロス乗積をとることによって頂点法線と、その
頂点法線の大きさを計算する。連続するuパラメータ・
ポイントPCの各組に対する、座標及び頂点法線は、3次
元ポリゴンを定め、プロセッサ18によってクリッピング
・プロセッサ20へ送られる。クリッピング・プロセッサ
では、3次元ポリゴンは既知のように処理される(すな
わち、クリッピング・プロセッサは現在の3次元ビュウ
イング・ウィンドウに対してポリゴンをクリップし、ク
リップされたエッジに沿って頂点法線を補間し、頂点法
線を単位ベクトルに変換する)。クリッピング・プロセ
ッサは、ウィンドウ内に残るポリゴンのどの部分に対し
ても、一連の3次元法線座標及び正規化頂点法線を、フ
レーム・バッファ22へ送る。フレーム・バッファ22は、
従来の方法で、コンピュータ・グラフィックス・ディス
プレイのモニタ・スクリーン(図示せず)上のサーフェ
スを、レンダリングする。
次に、この発明の具体例を説明する。システム・メモリ
12は、2〜4Mbyte(またはそれ以上)のランダム・アク
セス・メモリ(RAM)を備えることができる。このシス
テム・メモリ12は、少なくとも1パラメトリック・サー
フェスに対するデータを保持できなければならず、NURB
Sサーフェスを含む、種々のグラフィックス・エレメン
ト、すなわちプリミティブ及びアトリビュートよりなる
ディスプレイ・リストを有している。グラフィックス・
コントロール・プロセッサ14は、浮動小数点乗算器、乗
算器に対するアキュムレータとして用いることもできる
浮動小数点加算器、シーケンサ、少なくとも32kコード
・メモリをアクセスする機能、少なくとも32kデータ・
メモリをアクセスする機能、32個の整数レジスタ、浮動
小数点演算のための32個のレジスタを有している。プロ
セッサ14は、Weitek of Sunnyvale,Californiaから市販
されている10MHz Weitekチップセット(XL−8136プログ
ラマブル・シーケンサ、XL−3132浮動小数点プロセッサ
・ユニット、XL−8137整数プロセシング・ユニット、こ
れらは一緒に動作する)によって構成できる。
ローカル・メモリ15は、グラフィックス・コントロール
・プロセッサ14によりスクラッチ・エリアとして使用さ
れる1ブロックのランダム・アクセス・メモリ(RAM)
である。ローカル・メモリに蓄積されるデータ値の最大
数は、4Nmax(kmax+7)である。ここに、Nmaxは、最
大次元(Nu及びNv)であり、kmaxは最大階数(ku及びk
v)である。
各浮動小数点プロセッサ16x,16y,16z,16w,18は、32ビッ
ト浮動小数点性能を有するVLSIプロセッサとすることが
できる。各プロセッサは、浮動小数点乗算器、乗算器に
対しアキュムレータとしても用いられる浮動小数点加算
器、単一シーケンサ、マイクロコードのためのRAM、イ
ンタフェースへの入力及び出力のためのFIFO、データを
蓄積するための64個のレジスタを有している。浮動小数
点プロセッサは、当業者間では周知である。1989年3月
28日出願の米国特許出願第331,021号明細書は、この発
明におけるように、効果的な並列及び/またはパイプラ
インによる相互接続のための特殊な入出力FIFOを設ける
技術を開示している。クリッピング・プロセッサ20及び
フレーム・バッファ22は、それぞれ、多数の類似プロセ
ッサと、適切な性能を与える構成とを有することができ
る。
第3図は、この発明のサーフェス評価システムの一般的
な動作を説明するためのフローチャートである。一般的
に、NURBSサーフェスがシステム・メモリ12のディスプ
レイ・リストにあれば、グラフィックス・コントロール
・プロセッサ14は、データを読み取り、ローカル・メモ
リ及び/またはレジスタに格納する(ステップ24)。コ
ントロール・ポイント・マトリクスの行をシステム・メ
モリ12から読み取り、グラフィックス・コントロール・
プロセッサ14で変換し、グラフィックス・コントロール
・プロセッサのローカル・メモリ内のFIFO(first in−
first out)スタック(kv行×Nu列)に格納する(ステ
ップ26)。これを、1つのvスパンに対し十分な行がス
タックに格納されるまで繰り返す。或るvスパンに対す
るコントロール・ポイント・スタックの各列内の個々の
座標に対する値を、対応する重みで乗算して、斉次座標
(wx,wy,wz,w)を生成する(ステップ28)。次に、斉次
座標を、現在のvパラメトリック・ポイントに基づいて
評価する。vスパンの各列内の各コントロール・ポイン
トの座標に対し、上記評価が終了すると、一連のトップ
座標及びトップv導関数が生成される。前のストリップ
のトップ値はコピーされ、現在のストリップに対するト
ップ座標及び導関数の値として用いられる(ステップ3
0)。
現在のストリップの各uスパンに対し、1組のuノット
と、各座標(wx,wy,wzまたはw)に対する複数組のトッ
プ及びボトム座標と導関数は、4個の並列プロセッサ16
のそれぞれ1つに送られる。各プロセッサ内では、4つ
のb−スプライン(トップ座標,トップv導関数,ボト
ム座標,ボトムv導関数)は、連続するuパラメータ・
ポイントPCに対して評価され、ストリップ内の各uパラ
メータ・ポイントに対し、トップ及びボトム座標と、ト
ップ及びボトムu導関数と、トップ及びボトムv導関数
に対する値を結果として得る(ステップ32)。各uパラ
メータ・ポイントPCに対する各評価後の結果は、プロセ
ッサ18に送られる。プロセッサ18では、各座標から重み
を評価し、頂点ジオメトリック座標、頂点、u及びv接
線を決定し、これからストリップの各uパラメトリック
・ポイントPCに相当する1対のストリップのトップ及び
ボトム・ポイントに対する頂点法線を決定する。2つの
連続するuパラメータ・ポイントに対する頂点はポリゴ
ンを定める(ステップ34)。プロセッサ18からの頂点情
報は、クリッピング・プロセッサ20へ送られる。クリッ
ピング・プロセッサは、ポリゴンを従来の方法でクリッ
プし(ステップ36)、結果をフレーム・バッファ22へ送
る(ステップ38)。
サーフェスの初期uスパンは、FIFOスタックのコントロ
ール・ポイント・データの最初のku個の列により定めら
れる。このuスパンは、すぐその後に続くku−1個の列
と共に、続く列のそれぞれによって定められる。
現在のストリップの各uスパンが評価された後に、トッ
プ座標及び導関数は、次のストリップのトップ座標及び
導関数にコピーされ、パラメータ・ポイントVが更新さ
れ、フローは新しいストリップの評価に戻る。これは、
現在のvスパン及び次のvスパンに対するパラメータ・
ポイントVのすべての値に対して繰り返される。続くv
スパンのそれぞれは、コントロール・ポイント・マトリ
クスの続く行をFIFOコントロール・ポイント・スタック
のトップにロードすることにより定められる。上述した
ようなNURBSデータの特定の処理は、この発明の多くの
利点を与える。
グラフィックス・コントロール・プロセッサ14の特定の
動作、及びサーフェス評価システム10の他のプロセッサ
の動作を、第4A〜第4J図,第5図,第6図にフローチャ
ートに示し、以下詳細に説明する。
第4A図において、前述したサーフェス・データをシステ
ム・メモリ12から読み取り(ステップ52)、グラフィッ
クス・コントロール・プロセッサ14のレジスタ及び/ま
たはローカル・メモリ15に記憶する。サーフェス・タイ
プ及びステータスフラグを、レジスタに記憶する。uパ
ラメータ階数(ku),u次元(Nu),Umin,Umax,vパラメー
タ階数(kv),v次元(Nv),Vmin,Vmaxを、グラフィック
ス・コントロール・プロセッサ(GCP)内のレジスタ及
びローカル・メモリに記憶する(ステップ54)。uノッ
ト値,uテサレイション・パラメータ,vノット値,vテサレ
イション・パラメータ,コントロール・ポイント・マト
リクスを、グラフィックス・コントロール・プロセッサ
のローカル・メモリに記憶する(ステップ56)。ローカ
ル・メモリには、uテサレイション・パラメータ及びu
ノット値が1つのベクトルとして記憶される。このベク
トルは、それぞれN2ワードを有する2つの行を保持する
のに十分な容量を有している。ここに、N2はローカル・
メモリによってサポートされる最大u次元(例えば64)
に等しい。第1行は、すべてのuテサレイション・パラ
メータ及びku個のノット値を含んでいる。
次表は、uテサレイション及びuノット・ベクトルを示
す。この表において、行はベクトル内の行を示し、ポジ
ションは特定の行内のロケーションを示している。
この表は、また、vテサレイション・パラメータ及びv
ノット値に対し真を保持している。次表は、vテサレイ
ション及びvノット・ベクトルを示す。
第4A図において、次のステップは、グラフィックス・コ
ントロール・プロセッサ内のステータス・フラグを調べ
ることである(ステップ58)。ステータス・フラグは、
コントロール・ポイント・マトリクスの各uスパンに対
しuテサレイション・パラメータが計算されたか否かを
識別するために用いられる。ステータス・フラグが0な
らば、これらdU値を計算する必要がある(ステップ6
0)。コントロール・ポイント・マトリクスの各uスパ
ンに対し、テサレイション・パラメータを計算するのに
必要なステップは、第5図のフローチャートによって最
も良く理解できるであろう。このフローチャートは、第
4図のステップ60(dUの計算)を詳細に示している。
テサレイション(tessellation)は、曲面をフラット・
ポリゴンで近似できる領域へ分割する処理である。
uテサレイション・パラメータの計算は、サーフェスの
u階数(ku)で定まるuスパン内のポイント数に依存す
る、第7A図及び第7B図に示すように、u階数(ku)のサ
ーフェスは、1個のuスパン当りku個のコントロール・
ポイントと、Nv個のコントロール・ポイントの各行に対
してku−1個のセクションとを有している。ku個のコン
トロール・ポイントは、2個のエンド・ポイントと、ku
−2個のインターメディエイト・ポイントより構成され
る。したがって、ku=3ならば、 dU=|ax|+|ay|+|az| を生成する2個のセクションと1個のインターメディエ
イト・ポイントが存在する。ku=4ならば、 dU=|ax|+|bx|+ |ay|+|by|+ |az|+|bz| を生成する3個のセクションと、2個のインターメディ
エイト・ポイントが存在する。ここに、dUはベクトルa
及びbの長さの和における境界である。
第5図において、各uスパンに対するすべてのuテサレ
イション・パラメータは、最初に0に初期化しなければ
ならない(ステップ350)。これは、du(ucount)=0
にセットすることにより行われる。ここに、スパンの数
であるNu−ku+1に対しucont=1である。次に、特定
のdU計算に用いられるコントロール・マトリクス内の現
在のデータ行を表すvcountと呼ばれるレジスタを、0に
セットし(ステップ352)、その直後に、1だけ更新す
る(ステップ354)。次に、コントロール・ポイント・
マトリクスから行(vcount)を読み取る(ステップ35
6)。次に、ucountと呼ばれるレジスタを0にセットし
(ステップ358)、その直後に1だけ更新する(ステッ
プ360)。この例では、ucountは、特定のdU計算に用い
られるコントロール・ポイント・マトリクス内の特定の
データ列を表している。次に、uスパンの初めを示すU1
をuknot(ucount+ku−1)にセットし、uスパンの終
わりを示すU2をuknot(ucount+ku)にセットする(ス
テップ361)。
これらの初期ステップが完了した後、次のステップは、
有効なuスパンがあるか否かを判断することである(ス
テップ362)。uスパンは、 U1<Umax U2>Umin U2>U1 ならば有効である。ここに、U1及びU2は、前のステップ
で与えられた値に等しく、Umax及びUminの値は、システ
ム・メモリから読み取られ、グラフィックス・コントロ
ール・プロセッサ内のレジスタ及びローカル・メモリに
記憶されている。
uスパンが無効ならば、ライン364を経てステップ376
(ucount=Nu−ku+1か?)に進み、次のuスパンにス
キップする。uスパンが有効ならば、最大uテサレイシ
ョン・パラメータ(dU)の計算が続けられる(ステップ
366)。
この時点で、dUテサレイション・パラメータ(一時的に
dと称する)は、X(n,vcount),Y(n,vcount),Z(n,
vcount),W(n,vcount)に基づいて計算される。ここ
に、nは、vcountの各値に対し、ucount〜ucount+ku−
1の範囲にある。例えば、ku=3,vcount=1,ucount=1
ならば、dは、x11,y11,z11,w11;x21,y21,z21,w
21;x31,y31,z31,w31で表されるコントロール・ポイ
ントの値に基づいて計算される。次に、dの計算値は、
dU(ucount)と比較される(ステップ368)。dがdU(u
count)により表される値より大きければ、dU(ucoun
t)はdに等しくなるようにセットされ(ステップ37
0)、グラフィックス・コントロール・プロセッサのロ
ーカル・メモリに記憶される(ステップ372)。
次に、ucountが、uスパンの数であるNu−ku+1に等し
いか否かが判断される(ステップ376)。等しくなけれ
ば、フローはライン378を経てステップ360(ucountを更
新する)に戻る。等しければ、或る行の各uスパンに対
する最大uテサレイション・パラメータを調べる。次
に、vcountを、コントロール・ポイント・マトリクスの
行の数に相当するNvと比較する(ステップ380)。vcoun
tがNvに等しくなければ、ライン382を経てステップ354
(vcountをインクリメントする)に戻り、新しい行のu
スパンに対し上記テサレイション処理を繰り返す。vcou
ntがNvに等しければ、uテサレイション・パラメータの
ベクトルは、コントロール・ポイント・マトリクスの各
uスパンに対する最大値dUを含む。次に、コントロール
・ポイント・マトリクスに対するポインタをリセット
し、第4A図のステップ62(vcountを初期化する)に戻る
(ステップ384)。
再び第4A図において、vcountは0に初期化され(ステッ
プ62)、次にコントロール・ポイント(CTRL PTS)の1
行が、グラフィックス・コントロール・プロセッサ14に
よりシステム・メモリ12から読み取られる。これらのコ
ントロール・ポイントは、モデリング座標からビュー座
標(x,y,z)に変換される(ステップ64)。この変換
は、従来の方法により、x,y,z座標を所望なように平行
移動し、回転し、スケールする処理である。この処理に
用いられる変換マトリクスは、グラフィックス・コント
ロール・プロセッサに予めロードされている。
変換処理が終了した後、変換座標をローカル・メモリの
スタックに格納する。このスタックは、Nu列及びNv行の
データを保持するのに十分な容量を有し、ファーストイ
ン・ファーストアウト(FIFO)的に動作する。コントロ
ール・ポイントの1行が格納された後のこのスタックの
説明については、第8A図を参照されたい。次に、グラフ
ィックス・コントロール・プロセッサは、vcountが階数
(kv)より小さいか否かを判断する(ステップ70)。vc
ountがkvより小さければ、ライン72を経てステップ64
(コントロール・ポイントの1行を読み込め)に戻る。
vcountがkv以上であれば、これは、vスパンに対する十
分なデータ行がコントロール・ポイント・スタックに格
納されたことを示している。次に、vスパンの始まりで
あるV1をvknot(vcount)に等しくなるようにセットし
(ステップ74)、vスパンの終わりであるV2を、vknot
(vcount+1)に等しくなるようにセットする(ステッ
プ76)。
次に、vスパンが有効であるか否かを判断する(ステッ
プ78)。vスパンは、 V1<Vmax V2>Vmin V2>V1 ならば有効である。ここに、V1及びV2は、前のステップ
で与えられた値に等しく、Vmax及びVminの値は、システ
ム・メモリから前に読み取られて、グラフィックス・コ
ントロール・プロセッサ内のレジスタ及びローカル・メ
モリに記憶されている。
vスパンが無効ならば、次のvスパンに続くために、ラ
イン80を経て第4F図のステップ280(vcount<Nvか)に
行く。vスパンが有効ならば、各パッチに対する最小及
び最大座標が決定される。パッチは、ku列及びkv行によ
って決定される。したがって、例えばku=3,kv=4な
ら、パッチはコントロール・ポイント・スタック内の12
個のロケーションすなわち“ボックス”によって決定さ
れる。このようなパッチの説明については、第8B図を参
照されたい。パッチに対して最小及び最大座標を計算す
るには、コントロール・ポイント・スタックの各列に対
する最小及び最大座標を、最初に決定しなければならな
い(第4A図のステップ82)。得られる結果の値は、(xm
in(i),ymin(i),zmin(i),vsbl(i)),また
は(xmax(i),ymax(i),zmax(i),Qmin(i))
のいずれかに相当するストーレッジ内に蓄積された行内
に配置される。なお、iは現在の列である。
コントロール・ポイント・スタックの各列に対する最小
及び最大座標を決定するためには、1つの列のx,yまた
はzの各値を、同一列内のx,yまたはzの残りの値と比
較しなければならない。例えば、コントロール・ポイン
ト・スタックが、次のような2列4行を有するならば、 次に、第1列内の最小及び最大x値を決定するために、
その列(x11,x12,x13,x14)内のすべてのx値を、互
いに比較する。その結果得られた最小値は、Xmin(i)
に格納され、最大値はXmax(i)に格納される。y及び
zの最小値及び最大値を決定するのに同じ手順を用い
る。その結果は、ymin(i),ymax(i),zmin(i),z
max(i)にそれぞれに格納される。しかし、w座標の
最小及び最大値を計算する必要はない。したがって、Wm
in(i)及びWmax(i)に相当する記憶エリアは、vsbl
(i)及びQmin(i)にそれぞれリザーブされている。
この時点で、レジスタvsbl(i)の各値は、0に初期化
され、レジスタQmin(i)の各値は0に初期化される。
これらレジスタについては、後に詳述する。
列内の各座標に対する最小及び最大値の決定から得られ
る結果は、各uスパンに対する最小及び最大値を見つけ
るのに用いられる(ステップ84)。例えば、列数(Nu)
が9に等しい各列に対するx座標の最小値の計算が、xm
in1,xmin2,xmin3,xmin4,xmin5,xmin6,xmin7,xmin8,xmin
9のような結果の列を生成するならば、uスパンに対す
る最小値は、 Xmin(S)=Xmin(i)の最小値 ここにi=s〜s+ku−1 s=1〜Nu−ku+1 のように計算される。Nu−ku+1はuスパンの数であ
り、kuはサーフェスのu階数である。したがって、Nu=
9,ku=3ならば、uスパンの数は7に等しく、最初のXm
in値は、Xmin1,Xmin2,Xmin3(この時点においてこの例
では、s=1(したがってs+ku−1=3)、及び、i
は行の第1〜第3列に関連する1〜3の範囲にある)を
比較することに決定される。この比較の結果得られる値
は、ローカル・メモリ内のそのロケーションに値を置き
換えているXmin(s)に記憶される。同じ手順が、最大
値を見つけるために行われるが、結果はXmax(s)に記
憶される。この処理がすべての座標(x,y,z)及びすべ
てのuスパンに対して終了すると、結果は現在のvスパ
ン内の各パッチに対する最小値及び最大座標になる。
次に、ucountを1に初期化する(ステップ86)。次に、
各パッチに対して決定されたばかりの最小及び最大値と
の間で、ウィンドウ境界に対する比較を行う(第4B図の
ステップ88)。これらがオーバラップするならば(ステ
ップ90)、vsbl(ucount)と称される前述のレジスタ
と、visと称されるステータス・レジスタにおけるビッ
トとが、1に初期化される(ステップ92,94)。次に、
法線しきい値Qmin(ucount)が計算される(ステップ9
6)。Qmin値に必要なストーレッジは早めに記憶されて
いる。
Qminは、 Qmin(s)=(e・xmax(s)-xmin(s))2+(ymax(s)-ymin
(s))2+(zmax(s)-zmin(s))2))2 のように計算される。ここに、sは1〜Nu−ku+1(u
スパンの数)を表しており、eは10-5=0.00001のよう
な小さい値であり、これは座標及び法線ベクトルの計算
に用いられる浮動小数点数の精度を表している。
次に、ucountをuスパンの数Nu−ku+1と比較する(ス
テップ98)。これらが等しくなければ、ucountを1だけ
インクリメントし(ステップ100)、ライン102を経てス
テップ88(uスパン(ucount)に対する最小と最大とを
比較する)。ステップ98において等しければ、visを0
と比較する(ステップ104)。vis=0ならば、パッチの
全列はビジブルでなく、ライン105を経て第4F図のステ
ップ280(vcount<Nvか)に進む。visが0に等しくない
ならば、1以上のパッチがビジブルであり、処理が続け
られる。
次に、ステータス・フラグを0と比較する(ステップ10
6)。ステータス・フラグは、vテサレイション・パラ
メータが計算されたか否かを識別する。ステータス・フ
ラグが0に等しくないならば、vテサレイション・パラ
メータが決定され、ステップ112(Dvを計算する)にス
キップする。status=0なら、テサレイション・パラメ
ータdVが計算され、グラフィックス・コントロール・プ
ロセッサのローカル・メモリに記憶される(ステップ11
0)。
vテサレイション・パラメータを計算するのに必要なス
テップは、第6図のフローチャートにより良く理解でき
るであろう。このフローチャートは、第4B図のステップ
110(dVを計算する)を詳細に示している。
第6図において、フローチャートは、全vスパンに対す
る最大vテサレイション・パラメータを計算するのに必
要なステップを示している。この最大dV値を計算するに
は、以下のステップが実行される。まず初めに、dV及び
ucountを0に初期化し(ステップ386,388)、その直後
にucountを1だけインクリメントする(ステップ39
0)。
次に、vテサレイション・パラメータを、 x(ucount,vcount1) y(ucount,vcount1) z(ucount,vcount1) w(ucount,vcount1) に基づいて計算する(ステップ392)。ここに、vcount
=1〜kvであり、vはサーフェスの階数である。この計
算の結果は、dと称されるレジスタに格納される。次
に、dをレジスタdVに格納されている値と比較する(ス
テップ394)。dがdVより大きければ、dVはdに等しく
なるようにセットされる(ステップ396)。dがdV以下
であればucountがコントロール・ポイント・マトリクス
の列の数であるNuに等しいか否かを判断する(ステップ
398)。これらが等しくなければ、ライン400を経てステ
ップ390(ucountを1だけインクリメントする)に戻
る。ucountがNuに等しければ、dV(ucount)はdVに等し
くなるようにセットされる(ステップ402)。この時点
では、dV(ucount)は、全vスパンに対する最大vテサ
レイション・パラメータを含んでいる。そして、第4B図
のステップ112(Dvを計算する)に進む。
第4B図において、次のステップは、vパラメトリック座
標インタバルであるDvを計算することである。Dvは、グ
ラフィックス・コントロール・プロセッサによって、 Dv=(V2−V1)/Nvstep のように計算される(ステップ112)。ここに、Nvstep
は、 (a)スクリーン(ピクセル)座標/データ座標の比に
等しいスケールsを計算する、 (b)dv(vcount−kv+1)にsを乗じてdV′を生成す
る、デバイス座標であるピクセル・ユニットにdv(vcou
nt−kv+1)を変換する、 (c)Nvstep=max(1,Int sqrt(dv'))を計算する、 によって決定される。
vパラメトリック座標インタバルを計算した後、vスパ
ンの開始及び終了が、Vmin及びVmaxによってセットされ
る境界の外側にないようにするために、V1及びV2を次の
ように調整する。VminがV1とV2との間にあるならば、V1
はVminに等しくなるようにセットされ、VmaxがV1とV2
の間にあるならば、V2はVmaxに等しくなるようにセット
される。
次に、最初のvスパンの開始を表すvflagと称されるレ
ジスタ、及びvインタバル・ループを出るときを表すvl
astを称されるレジスタを、0に初期化する(第4C図の
ステップ116,118)。次に、現在のvパラメータ・ポイ
ントVを、vスパンの始まりであるV1に等しくなるよう
にセットし(ステップ120)、ucountを0に初期化する
(ステップ122)。次に、vcountを1だけインクリメン
トする(ステップ124)。
初期化が終了した後に、グラフィックス・コントロール
・プロセッサは、vパラメータ・ポイントVの現在の値
に対し、斉次座標(wx,wy,wz,w)を評価する。斉次座標
を得るためにはx,y,zの各値を、対応する重みwの値で
乗算する。したがって、x(ucount,vcount),y(ucoun
t,vcount),z(ucount,vcount)は、w(ucount,vcoun
t)により乗算される(ステップ126)。
好適な実施例では、Cox−DeBoor(またはDeCasteljau)
プロセスとして当業者に知られているプロセスを、評価
に用いる。このプロセスは、コントロール・ポイントの
成分間の直線補間を実行する。Vの各値に対し全体でkv
(kv−1)/2個の補間を実行する。
このアルゴリズムを説明するために、kv=4であるサー
フェスについての例を示す。第9A図は、kvコントロール
・ポイントに対するx座標を示している。第9A図におい
て、kv=4であり、スパンはノット値V1で始まりノット
値V2で終了する。V1及びV2は、vknot(vcount)及びvkn
ot(vcount+1)にそれぞれ位置するvノット及びテサ
レイション・ベクトルにおける値に等しい。Vはパラメ
ータ・ポイントであり、スパンの前に3個のノット値
(v2,v3,v4)があり、スパンの後に3個のノット値
(v5,v6,v7)がある。6個のノット値v2〜v7は、それ
ぞれvcount−kv+2,vcount−kv+3,vcount,vcount+1,v
count+2,vcount+kv−1でのノット・ベクトル内のノ
ット値を示している。
第9B図は、補間される各部分の始まりを示す前ノット
(v2,v3,v4)の配置を示し、第9C図は、補間される各
部分の終わりを示す後ノット(v5,v6,v7)の配置を示
している。したがって、補間は、v2とv5との間、v3とv6
との間、v4とv7との間で行われる。
Cox−Deboorのアルゴリズムは、上述した変数を次式に
用いている。以下の例は、v階数,kv=4のサーフェス
に対するものである。
f1=((v5−v)x11+(v−v2)X12)/(v5−v2) f2=((v6−v)x12+(v−v3)X13)/(v6−v3) f3=((v7−v)x13+(v−v4)X14)/(v7−v4) これら3つの式は、kv=4であるサーフェスに対する直
線補間の第1段階で用いられる。補間は、3つのポイン
トを作成するために、v2とv5との間、v3とv6との間、v4
とv7との間で行われる。これら3つのポイントを、第9D
図に○で囲って示す。補間の第2段階は、ノット値の再
配置を必要とする。この段階では、3つのポイントしか
もっていないので、ノットv3〜v6を必要とするだけであ
る。ノットv3,v4は、新しい前ノットであり、v5,v6
新しい後ノットである。次の2つの式は、kv=4である
サーフェスに対する直線補間の第2段階の間に用いられ
る。
f1=((v5−v)f1+(v−v3)f2)/(v5−v3) f2=((v6−v)f2+(v−v4)f3)/(v6−v4) 補間は、2つのポイントを作成するために、v3とv5との
間、v4とv6との間で行われる。これら2つのポイント
は、第9E図に○で囲んで示している。
この補間は、導関数を計算するのに用いられる接線をも
作成する。接線を得るために、Bでの値からAでの値を
減算する。A,Bは第9E図に示されている。
補間の最終段階では、再びノット値の再配置を必要とす
る。この段階では、2つのポイントしかもっていないの
で、ノットv4及びv5を必要とするだけである。次式は、
サーフェス上のポイントのx座標を作成するのに用いら
れる。
f(v)=((v5−v)f1+(v−v4)f2)/(v5
v4) このポイントは、第9F図に○で囲って示す。接線の計算
を含む上述のアルゴリズムは、wx,wxv,wy,wyv,wz,wzv,
w,wv(vはv導関数を示している)を作成するために、
グラフィックス・コントロール・プロセッサ内の各座標
(wx,wy,wz,w)上で実行される(第4C図のステップ12
8)。
wx,wy,wz,wの評価後、結果として得られるポイント及び
導関数は、トップ座標TC(第4D図のステップ130)及び
トップv導関数TVD(ステップ132)としてvインタバル
・スタックに格納される。vインタバル・スタックは、
2行と8×N2までの幅とを有している。ここにN2は、グ
ラフィックス・コントロール・プロセッサのローカル・
メモリによりサポートされる最大u次元(例えば64)で
ある。スタックのトップ行はトップ座標TC及びトップv
導関数TVDを有し、次行はボトム座標BC及びボトムv導
関数BVDを有している。vインタバル・スタックの説明
は、第10A図を参照されたい。
1列のwx,wy,wz,wに対する評価が終了した後に、ucount
をu次元Nuと比較する(第4D図のステップ134)。ucoun
tがNuに等しくなければ、ライン135を経て第4C図のステ
ップ124(ucountをインクリメントする)に戻り、コン
トロール・ポイント・スタックの各列内のすべての要素
が評価されるまで評価処理を続ける。各列内のすべての
要素が評価されると、ucountはNuに等しくなり、ストリ
ップのトップ・エッジが定められる。トップ・エッジ及
びボトム・エッジを有するストリップについては、第13
図を参照されたい。
次に、vflagを0と比較する(ステップ136)。vflagが
0に等しければ、それは最初のスパンの開始であり、ラ
イン138を経て第4F図のステップ258(vflag=1)へス
キップする。実行される次のステップが、取り出された
トップ座標及びv導関数のみならず、この時点ではまだ
取り出されていないボトム座標及びv導関数をも必要と
するので、前記スキップが必要となる。vflagが0に等
しくないならば、トップ及びボトム座標及びv導関数が
計算され、処理が続けられる。この時点では、ストリッ
プはすでに定められている。第13図を参照されたい。
次に、コマンド“パラメトリック・サーフェスをスター
ト”及び階数(ku)が各並列浮動小数点プロセッサ16に
送られる(ステップ140,142)。次に、ku−1個のuノ
ットがグラフィックス・コントロール・プロセッサのロ
ーカル・メモリから読み取られて、各並列浮動小数点プ
ロセッサへ送られる(ステップ144)。各プロセッサ内
では、これらuノットをスタックに格納する。各スタッ
クは、2ku−2行のデータを保持するに十分な容量を有
し、ファーストイン・ファーストアウト(FIFO)的に動
作する。各並列プロセッサ内のノット・スタックの説明
については、第11図を参照されたい。第11図の各スタッ
クは、格納されたばかりのku−1個のuノットを示して
いる。
次に、ucountは0に初期化され(ステップ146)、コマ
ンド“サーフェス・スパンをスタート”が各並列浮動小
数点プロセッサに送られる(ステップ148)。次に、uco
untは1だけインクリメントされ(ステップ150)、u階
数(ku)及びuノット(ku+ucount−1)が、各浮動小
数点プロセッサ16に送られる(ステップ152)。各並列
浮動小数点プロセッサ16がuノット値を受け取ると、こ
の値は前述したように各プロセッサのスタックに格納さ
れる(ステップ154)。
次に、各座標(x,y,z,w)に対し、vインタバル・スタ
ックの列(ucount)内の、対応するトップ座標,トップ
v導関数,ボトム座標,ボトムv導関数が、グラフィッ
クス・コントロール・プロセッサから対応する浮動小数
点プロセッサに送られる(ステップ156)。例えば、x
座標に対応する情報はプロセッサ16xに送られ、y座標
に対応する情報はプロセッサ16yに送られる等である。
データが対応するプロセッサにより受け取られると、プ
ロセッサは、データをスタックに格納する(ステップ15
8)。このデータ・スタックは、4列幅及びku行の深さ
を有し、FIFO的に動作する。1データ行が格納された後
の、各プロセッサ内の各スタックの状態は第11図を参照
されたい。
次のステップは、ucountがkuより小さいか否かを決定す
るステップである(第4E図のステップ160)。小さいな
らば、uスパンは終了せず、ライン161を経て第4D図の
ステップ150(ucountをインクリメント)へ戻り、さら
に多くのデータを各並列プロセッサに送る。ucountがku
以上ならば、uスパンは終了する。
uスパンが終了した後、U1をuknot(ucount)に等しく
なるようにセットし(ステップ162)、U2をuknot(ucou
nt+1)に等しくなるようにセットする(ステップ16
4)。
次のステップでは、uスパンが有効か否かを決定する
(ステップ166)。uスパンは、 U1<Umax U2>Umin U2>U1 ならば、有効である。ここに、U1及びU2は、前のステッ
プで与えられた値に等しく、Umax及びUminはローカル・
メモリに前に記憶されている値に等しい。uスパンが無
効であるならば、ライン168を経て第4F図のステップ255
(ucount<Nuか)に進み、次のuスパンを処理する。u
スパンが有効なら、vsbl(ucount−ku+1)を1と比較
する(ステップ170)。1に等しくなければuスパンは
ビジブルでなく、ライン171を経て再びステップ255(uc
ountをインクリメント)へ進む。1に等しければ、Qmin
(ucount−ku+1)を各並列プロセッサに送る(ステッ
プ172)。各並列プロセッサ16がQminを受け取ると、Qmi
nをプロセッサ18に送る(ステップ174)。プロセッサ18
は、Qminをレジスタに格納する。
次に、uパラメトリック座標インタバルDuは、グラフィ
ックス・コントロール・プロセッサ内で、 Du=(U2−U1)/Nustep のように計算される(ステップ176)。ここに、Nustep
は、 (a)スクリーン(ピクセル)座標/データ座標の比に
等しいスケールsを計算する、 (b)dU(ucount−ku+1)を、ピクセル・ユニットに
変換する。ピクセル・ユニットは、dU(ucount−ku+
1)にsを乗じてdU′を生成するデバイス座標である、 (c)Nustepを計算する、Nustep=Max(1,Intsqrt(d
u′))である、 によって決定される。
uパラメトリック座標インタバルが計算された後、uス
パンの初め及び終わりがUmin及びUmaxによって設定され
る境界の外側にないことを確保するために、U1及びU2
次のように調整する。(ステップ178)。UminがU1とU2
との間にあれば、U1はUminに等しくなるように設定さ
れ、UmaxがU1とU2との間にあれば、U2はUmaxに等しくな
るように設定される。
次に、コマンド“パラメトリック・サーフェスを評価せ
よ”が、各並列プロセッサ16に送られる(ステップ20
0)。並列プロセッサがこのコマンドを受け取ると、プ
ロセッサは同じコマンドをプロセッサ18に送る(第4G図
のステップ206)。プロセッサ18は、一連のポリゴンの
開始を指示する、vflag=0及びPREV=NONEをセットす
る(ステップ208,210)。これらの動作が実行されてい
る間、グラフィックス・コントロール・プロセッサは動
作し続ける。第4E図のライン202は、グラフィックス・
コントロール・プロセッサにおいて動作が実行されると
同時に、他のプロセッサにおいても動作が実行されるこ
とを示している。次に、グラフィックス・コントロール
・プロセッサは、u階数(ku)を、各並列浮動小数点プ
ロセッサに送る(ステップ212)。
次に、PCと称されるレジスタが、最初のuパラメトリッ
ク・ポイントを示すU1に等しくなるようにセットされる
(ステップ214)。PCは、各並列プロセッサに送られる
(ステップ216)。
並列プロセッサ16x,16y,16z,16w及び次段のプロセッサ1
8で行われる動作は、第4H図のフローチャートにより理
解できるであろう。第4H図のフローチャートにおけるタ
スクは、グラフィックス・コントロール・プロセッサの
動作と同時に行われる。これは、第4E図にライン218に
よって示されている。
プロセスのこの段階では、トップ及びボトム座標及びv
導関数より成るストリップが存在している。このストリ
ップは、サーフェスの全長に対しu座標方向に延在し、
連続する2個のvパラメトリック・ポイントによりv座
標において境界が定められている。次のステップは、b
−スプライン関数を評価することである。b−スプライ
ン関数は、ストリップ、すなわち続くuスパンのそれぞ
れに対する連続uパラメータ・ポイントに基づく、トッ
プ座標,トップv導関数,ボトム座標,ボトムv導関数
を定義している。第13図は、ストリップと、連続するu
個のインタバルに分割された連続uスパンを示してい
る。
第4H図において、並列浮動小数点プロセッサがパラメー
タ・ポイント(PG)を受け取った後は、各プロセッサ
は、コントロール・ポイント座標の組(wx,wy,wz,w)の
1つの要素に対し、b−スプライン関数の評価を開始す
る(ステップ224)。例えば、第1の並列浮動小数点プ
ロセッサ16xは、x座標に対する評価を行い、第2並列
浮動小数点ポイント・プロセッサ16yは、y座標に対す
る評価を行う等である。すべての4個の並列浮動小数点
プロセッサは、それぞれの座標を同時に評価する。各座
標に対し、各プロセッサは、4つのb−スプライン関
数、すなわちトップ座標,トップ導関数,ボトム座標,
ボトムv導関数を評価する。これら4つのb−スプライ
ン関数から、上述した値に加えて、トップu導関数及び
ボトムu導関数を含む6個の値が生成される。
前述したCox−DeBoorアルゴリズムは、4つのb−スプ
ライン関数のそれぞれを評価するのに用いられている。
トップ及びボトムu導関数は、トップ及びボトムv導関
数と同様に計算される。すなわち、トップ及びボトムu
導関数は、トップ及びボトム座標から導き出される。
各並列プロセッサからの6つの値は、同時にプロセッサ
18に送られる(ステップ226)。これらの値は、1組の
トップ座標(TWX,TWY,TWZ,TW)と、1組のトップu導関
数(TWXU,TWYU,TWZU,TWU)と、1組のトップv導関数
(TWXV,TWYV,TWZV,TWV)と、1組のボトム座標(BWX,BW
Y,BWZ,BW)と、1組のボトムu導関数(BWXU,BWYU,BWZ
U,BWU)と、1組のボトムv導関数(BWXV,BWYV,TWZV,TW
V)とを含んでいる。
前述したように各組の座標及び導関数を受けると(ステ
ップ227)、プロセッサ18は種々のステップを実行す
る。まず初めに、TW=1/TWを計算し、この値を、それぞ
れトップ座標及び導関数に対するライト頂点座標及びラ
イト頂点接線の連続する計算に用いる(ステップ22
9)。
トップ・ライト頂点座標は、 TRX=TWX・TW TRY=TWY・TW TRZ=TWZ・TW のように計算されている。したがって、トップ座標TC=
(TRX,TRY,TRZ)となる。
トップ・ライト頂点u接線は、 TRXU=(TWXU−TRX・TWU)TW TRYU=(TWYU−TRY・TWU)TW TRZU=(TWZU−TRZ・TWU)TW のように計算される。
トップ・ライト頂点v接線は、 TRXV=(TWXV−TRX・TWV)TW TRYV=(TWYV−TRY・TWV)TW TRZV=(TWZV−TRZ・TWV)TW のように計算される。
次に、トップ・ライト頂点法線を、対応するトップu及
びv接線のクロス乗積をとることによって計算する(ス
テップ230)。例えば TNX=TRYU・TRZV−TRZU・TRYV TNY=TRZU・TRZV−TRXU・TRZV TNZ=TRXU・TRYV−TRYU・TRXV のように計算される−したがって、サーフェス法線ベク
トルTN=(TNX,TNY,TNZ)となる。
次に、頂点法線の大きさを、 TMP=TNX・TNX+TNY・TNY+TNZ・TNZ のようにx,y,z座標の2乗の和をとることによって計算
する。
次に、TMPの値を、Qminと比較する(ステップ231)。TM
PがQminより小さければ、レジスタのビットをフェイル
(fail)にセットする(ステップ232)。TMPがQmin以上
であれば、ビットをパスに等しくなるようにセットする
(ステップ233)。
次に、他のパスまたはフェイルを生成するために、ボト
ム値に対し上述の手順を繰り返す。BW=1/BWを計算し、
ボトム・ライト頂点座標を、 BRX=BWX・BW BRY=BWY・BW BRZ=BWZ・BW のように計算する(第4I図のステップ234)、したがっ
て、ボトム座標BC=(BRX,BRY,BRZ)となる。
次に、ボトム・ライト頂点u接線を、 BRXU=(BWXU−BRX・BWU)BW BRXY=(BWYU−BRY・BWU)BW BRXZ=(BWZU−BRZ・BWU)BW のように計算する。
ボトム・ライト頂点v接線は、 BRXV=(BWXV−BRX・BWV)BW BRYV=(BWYV−BRY・BWV)BW BRZV=(BWZV−BRZ・BWV)BW のように計算される。
次に、対応するボトムu及びv接線のクロス乗積をとる
ことによって、ボトム・ライト頂点法線を計算する(ス
テップ235)。例えば BNX=BRYU・BRZV−BVZU・BRYV BNY=BRZU・BRZV−BRXU・BRZV BNZ=BRXU・BRYV−BRYU・BRXV のように計算される。したがって、サーフェス法線ベク
トルBN=(BNX,BNY,BNZ)となる。
次に、BMPの値を、Qminと比較する(ステップ236)。BM
PがQminより小さければ、レジスタのビットをフェイル
にセットする(ステップ237)。BMPがQmin以上であれ
ば、ビットをパスに等しくなるようにセットする(ステ
ップ238)。
次に、上述のテストの2つの結果及びPREVの値に基づい
て、2つのベクトルV1及びV2に、特定の値を割り当て
る。これらベクトルの値は、現在の法線ベクトルのトッ
プ及びボトムが法線しきい値テストに失敗したならば使
用されるように、蓄積される。次表は、或る条件の下
で、V1,V2,PREBがセットされる状態を示している。トッ
プ(Top)はサーフェス法線ベクトルのトップを示し、
ボトム(Bottom)はサーフェス法線ベクトルのボトムを
示し、PREVはPREVの現在の値を示し、コピー(Copy)は
或る条件の下で何がコピーされるかを示し、蓄積(Sav
e)はV1及びV2に何が蓄積されるかを示し、セット(Se
t)はPREVが或る条件の下でどのようにセットされるか
を示している(ステップ239)。
次に、vflagのステータスを調べる(ステップ240)。vf
lagが0に等しければ、vflagは1に等しくなるようにセ
ットされ(ステップ241)、ステップ245(より多くのデ
ータを待て)にスキップする。vflagが0に等しけれ
ば、ボトム座標BC,ボトム法線BN,トップ座標TC,トップ
法線TNは、クリッピング・プロセッサ20に送られる(ス
テップ242)。続いて、コマンド“ポリゴンの終了”が
送られる(ステップ243)。クリッピング・プロセッサ
は、いくつかの動作を実行する。これらのステップは、
プロセッサ18で実行されるワークと同時に実行される。
これを、第4I図にライン246で示す。
クリッピング・プロセッサにおける動作は、第4J図によ
り理解されるであろう。クリッピング・プロセッサは、
現在の3次元ビュウイング・ウィンドウに対し、プロセ
ッサ18から丁度受け取ったポリゴンをクリップし、クリ
ップされたエッジに沿って頂点法線を補間し、得られた
頂点法線を通常の方法で単位ベクトルに変換する(ステ
ップ247)。
次に、クリッピング処理が終了した後に、元のポリゴン
のどこか一部がビュウイング・ウィンドウ内に残ると、
プロセッサ18はコマンド“3dポリゴンをシェーディング
でレンダせよ”をフレーム・バッファ22に送る。プロセ
ッサ18は、また、得られた頂点座標及び頂点法線を送る
(ステップ248)。
次に、フレーム・バッファはポリゴンのシェーデッド像
を生成する(ステップ249)。
クリッピング・プロセッサ及びフレーム・バッファで動
作が実行されている間、プロセッサ18は処理をし続け
る。プロセッサ18がコマンド“ポリゴンの終了”をクリ
ッピング・プロセッサ20に送った後は、クリッピング・
プロセッサ20はより多くのデータを待つことになる(ス
テップ244)。次に、より多くのデータが到来すると、
プロセッサ18はコマンド“ポリゴンをスタート”を、続
いてトップ座標(TC),トップ法線(TN),ボトム座標
(BC),ボトム法線(BN)をクリッピング・プロセッサ
に送る(ステップ245)。
次に、第4H図のステップ227(プロセッサ18はデータを
受け取る)に戻り、データがなくなるか、あるいはプロ
セッサ18がなんらかのコマンドを受け取るまで、処理が
繰り返される。
再び第4E図において、並列浮動小数点プロセッサ16及び
他のプロセッサにおいて評価及び他の処理が実行されて
いる間、グラフィックス・コントロール・プロセッサ14
は、パラメトリック・ポイントを計算し続ける。第4E図
のステップ220で、PCはDuだけインクリメントされる。
次に、PCをU2と比較し(ステップ222)、PCがU2より小
さければ、各並列浮動小数点プロセッサにPCが送られ
る。PCがU2以上であれば、PCはU2に等しくなるようにセ
ットされ(第4F図のステップ252)、各並列プロセッサ
に送られる。この値が並列浮動小数点プロセッサに送ら
れ評価された後は、或るuスパンに対してすべてのuパ
ラメータが評価される。次のステップで、多くのuスパ
ンがあるか否かを決定する(ステップ255)。ucountがN
uより小さければ、多くのuスパンが存在し、ライン257
を経て第4D図のステップ150に戻る。ucountがNuに等し
ければ、多くのuスパンは存在しない。
この時点で、vflagを1にセットする(ステップ258)。
これは、状態が現在のvスパンの開始状態にないことを
示している。次に、vインタバル・スタックの値をプッ
シュ・ダウンする(スタック260)。このスタックは、
前述したように、u次元(Nu)の各x,y,z,w座標に対す
るトップ座標,トップv導関数,ボトム座標,ボトムv
導関数を格納している。この時点でのvインタバル・ス
タックについては、第10B図を参照されたい。この時点
で、トップ座標及び導関数の全体は、対応するボトム値
に等しい。
次に、vパラメトリック・インタバルをDvだけインクリ
メントして(ステップ262)、V2と比較する(ステップ2
68)。VがV2より小さければ、次のvインタバルが評価
され、ストリップの他のトップ・エッジを生成し、ライ
ン270を経て第4C図のステップ122(ucountをインクリメ
ントする)に戻る。VがV2以上ならば、vlastを判断す
る(ステップ272)。vlastが1に等しくなければ、Vは
V2に等しくなるようにセットされる(ステップ274)、v
lastが1に等しければ、これはvインタバル・ループの
終わりを示し(ステップ276)、ライン278を経てステッ
プ122(ucountをインクリメントする)に戻る。ステッ
プ272でvlastが1に等しければ、vcountをNvと比較する
(ステップ280)。vcountがNvより小さければ、次のス
パンを評価し、ライン282を経て第4A図のステップ64
(コントロール・ポイントの1行を読み込む)に戻る。
vcountがNv以上であれば、コマンド“パラメトリック・
サーフェスを終了せよ”を、各並列浮動小数点プロセッ
サ16に送る(ステップ284)。
次のステップは、ステータス・フラグのチェックである
(ステップ286)。ステータス・フラグが0に等しけれ
ば、すべてのu及びvテサレイション・パラメータを、
グラフィックス・コントロール・プロセッサのローカル
・メモリ(LM)からシステム・メモリ(SM)へコピーす
る(ステップ288,290)。次に、ステータス・フラグを
1に更新し(ステップ292)、システム・メモリに記憶
する(ステップ294)。これは、dU及びdVパラメータ値
がすでに計算されており、このサーフェスが再び評価お
よびレンダリングされても、再計算されないことを示し
ている。ステータス・フラグが0に等しくなければ、も
はやいかなる動作も実行されない。
以上で、並列及びパイプライン処理プロセッサを用い
て、非一様有理b−スプライン(NURBS)に基づくパラ
メトリック・サーフェスの評価及びレンダリング方法及
び装置について説明した。プロセッサを並列及びパイプ
ライン処理的に使用することにより、サーフェスを従来
技術に比べてより高速に評価しレンダリングすることが
可能となった。また、この発明による方法は、データ冗
長性を排除し、データの効率的処理を可能にした。
NURBSは、その固有の特性の故に、多くの利点を与え、
この発明は、これらの利点を十分に利用している。NURB
Sによれば、サーフェスをパッチ・アレイに分割するこ
とが可能になる。各パッチは、異なるパラメトリック多
項式の組によって表される。NURBSサーフェスの隣接パ
ッチを記述するパラメトリック多項式は、特定の連続度
を与えている。連続度を、滑らかなサーフェスあるいは
シャープなコーナを有するサーフェスを描画できるよう
に制御することができる。連続スパンを特定の連続度に
マッチさせる能力は、複雑なサーフェスの構成が低階数
のNURBSを用いる多くのポイントを通過することを可能
にする。この特性は、評価コストが高くなり数値的に不
安定な高次関数を避けることを可能にするので極めて価
値がある。
ローカル・コントロールは、NURBSの1つの特徴であ
る。NURBSは、コントロール・ポイント,重み,ノット
・ベクトルで規定されるので、全部のパッチに作用する
ことなくコントロール・ポイントを移動することによっ
て、サーフェスのパッチを変更することが可能である。
階数がku及びkvのサーフェスに対する各コントロール・
ポイントは、ku×kvまでのパッチに作用する。
凸閉包特性は、さらに他の利点を与える。NURBSサーフ
ェスは、それらのコントロール・ポイントの凸閉包内に
含まれている。凸閉包は、最小の凸ポリゴン(2次元の
場合)あるいは一組のポイントを含む最小凸多面体(3
次元の場合)である。サーフェスの各パッチは、そのパ
ッチを規定するku×kvコントロール・ポイントの凸閉包
内に存在しなければならない。この特徴は、ポイントを
評価することなく、NURBSサーフェスのサイズ及びロケ
ーションを評価し及びサイズ及びロケーションに境界を
設定することを可能にする。これは、トリビアル・リジ
ェクション・テスト(trivial rejection testing)に
は特に重要である。換言すれば、凸閉包が現在のスクリ
ーンとオーパラップしなければ、サーフェスは評価され
ず、リジェクトされる。このことは、複雑な情景または
対象の小さな部分の詳細なビューに対してユーザがズー
ムインするときに、システムの性能に大きな影響を与え
る。サーフェスの評価がリジェクトされなければ、凸閉
包はサーフェスが評価されるポイントを規定するのに用
いることができる。これは、パラメトリック関数を評価
するのに数台のプロセッサが用いられるパイプライン化
アーキテクチャに最も有用であり、評価のためのポイン
トを選択するプロセッサは、この評価の結果はアクセス
しない。
コントロール・ポイントに関連する重みは、柱体,錐
体,球のような幾何形状を含む2次曲面の正確な表示を
与える。これは、これらの種類のサーフェスはジオメト
リック・モデリングに対し主要なものであるので、特に
重要な効果である。
この発明の他の効果は、サーフェスを表すのに用いられ
るポリゴンの頂点よりはむしろコントロール・ポイント
を用いることによって、変換を行うことができることで
ある。通常、コントロール・ポイントの数はポリゴン頂
点の数より少ないので、この方法は経済的である。ま
た、変換されたコントロール・ポイントは、前述した凸
閉包特性に基づくトリビアル・リジェクションに用いる
ことができる。
この発明で用いられる評価技術は、コントロール・ポイ
ントを直接使用している。その結果、フォワート・ディ
ファレンス(forward difference)法に基づく方法のよ
うな他の方法に比べて、セットアップ・コストが低くな
る。補間式はNURBS関数の数値安定性を与え、また各ポ
イントは独立に演算されるので、各スパンにわたり計算
が行われる場合の累積エラーが存在しない。したがっ
て、サーフェス上の最終ポイントは、最初のポイントと
同様に正確であり、各スパンは次のスパンに最大精度で
マッチする。これにより、サーフェスの表示は、パッチ
境界でのホールや他のエラーを有さないことが保証され
る。
この発明で用いられるテサレイション技術、すなわち各
サーフェスを単一のエンティティとしてシステマティッ
クにテサレイトすることは、サーフェス内のピンホール
(独立した消失ピクセル)またはリップ(消失ピクセル
の連続)の生成を避ける。
さらに、トラバーサル・タイム・テサレイションと共に
NURBS形式を用いることは、スクリーン上で更新される
1秒あたりの非常に多数のオブジェクトを生成する。ポ
リゴンをファイルし得る速度に匹敵する速度で、サーフ
ェスを評価しポリゴンに変換することができるので、変
換されたポリゴンをシステム・メモリ,マス・ストレー
ジあるいは他のいずれかに、蓄積する必要がない。スク
リーンが更新される毎に、各サーフェスはポリゴンに変
換される。変換された各ポリゴンは、シェーディング,
ライティング,陰面消去が行われ、廃棄される。このこ
とは、各サーフェスを表すのに選ばれたポリゴンの組
を、サーフェスの各インスタンスの瞬時的条件に合致す
るように最適化することのできる、トラバーサル・タイ
ム・テサレイションを有することを可能にする。
NURBSサーフェスは、非常にコンパクトなデータ構成を
形成するので、従来のポリゴン・データに比べて、デー
タ転送レートがかなり改善され、システム・リソースを
良好に利用でき、より複雑なグラフィックスをサポート
することを可能にする。例えば、オブジェクトをNURBS
で表すのに必要なデータ量は、同じオブジェクトをポリ
ゴンで表すのに必要とされるデータ量よりも10〜100倍
小さい。これらの利点は、NURBSデータをオリジナルな
形式で処理することにより保持され、またこの発明のス
パン・シェアリング・データ・シーケンシング・アプロ
ーチにより高められる。
E.発明の効果 以上から明らかなように、NURBSに基づいてパッチ・サ
ーフェスを評価しレンダリングする方法及び装置は、高
性能,良好な数値安定性,トラバーサル・タイム・テサ
レイション,コストの有効性,高速性及び精度,サーフ
ェスに対する十分な制御,対話型3次元グラフィックス
用に既に提供されているPHIGS PLUS標準とのコンパチビ
リティ,データ冗長性の排除を含むなどの多くの利点を
有している。
【図面の簡単な説明】
第1図はx,y,z座標空間およびパラメトリック空間にお
けるNURBSサーフェスを示す図である。 第2図は、この発明の原理に従って構成されたサーフェ
ス評価及びレンダリングの構成要素及び接続を示すブロ
ック線図である。 第3図は、この発明のサーフェス評価装置の一般的な動
作を示すフローチャートである。 第4A図〜第4G図は、この発明の原理に基づくサーフェス
評価装置の動作を示すフローチャートである。 第4H図〜第4J図は、この発明に基づく並列浮動小数点プ
ロセッサ及びこれらに接続されたプロセッサの動作を示
すフローチャートである。 第5図は、uテサレイション・パラメータを計算する動
作を示すフローチャートである。 第6図は、vテサレイション・パラメータを計算する動
作を示すフローチャートである。 第7A図及び第7B図は、この発明に用いられるテサレイシ
ョン・パラメータをどのように計算するかを理解するの
に参考となる図である。 第8A図及び第8B図は、種々の動作段階でのコントロール
・ポイント・スタックを示す図である。 第9A図〜第9F図は、この発明に好適に用いられるCox−D
eBoorの評価方法の適用を示す図である。 第10A図及び第10B図は、種々の動作段階でのvインタバ
ル・スタックを示す図である。 第11図は、各並列プロセッサ内のuノット・スタックを
示す図である。 第12図は、各並列プロセッサ内の、トップ及びボトム座
標と導関数とを含むデータ・スタックを示す図である。 第13図は、この発明の原理に基づき、u及びv座標に沿
ったテサレイションを示すパラメトリック・サーフェス
の図である。 10……サーフェス評価及びレンダリング装置 12……システム・メモリ 14……グラフィックス・コントロール・プロセッサ 15……ローカル・メモリ 16x,16y,16z,16w……浮動小数点プロセッサ 18……浮動小数点プロセッサ 20……クリッピング・プロセッサ 22……フレーム・バッファ

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】パラメトリック・サーフェスを表すNURBS
    データを、後で行うコンピュータ・グラフィックス・デ
    ィスプレイ・システムのスクリーン上でのレンダリング
    のためのポリゴンの頂点のジオメトリック座標と関連サ
    ーフェス法線ベクトルとに変換する方法であり、サーフ
    ェスはNuをu座標方向における次元、kuをu座標方向に
    おける階数としたとき、Nu−ku+1個の連続するuスパ
    ン分パラメトリック座標方向に延在する第1のエッジ
    と、Nvをu座標方向に直交するv座標方向における次
    元、kvをv座標方向における階数としたとき、Nv−kv+
    1個の連続するvスパン分パラメトリック座標方向に延
    在する第2のエッジとを有し、サーフェスの全体形状
    が、コントロール・ポイントのNv行×Nu列マトリクスに
    より規定されるNURBSデータ変換方法であって、 (a)前記マトリクスの最初の連続kv行×Nu列のコント
    ロール・ポイントに対するビュー座標の組みを、初期v
    スパンに対するすべてのコントロール・ポイントを含む
    ように、kv行×Nu列のコントロール・ポイント・スタッ
    クに格納するステップと、 (b)ビュー座標を斉次座標に変換し、初期vパラメー
    タ・ポイント及び続くvパラメータ・ポイントに対する
    前記スタックの各列における座標の組のb−スプライン
    関数を評価して、前記初期vパラメータ・ポイント及び
    続くvパラメータ・ポイントによってv座標において区
    切られ、u座標方向にサーフェスを完全に横切って延在
    する第1ストリップに対し、それぞれ、一連のNu個のボ
    トム座標及びNu個のボトムv導関数と、一連のNu個のト
    ップ座標及びNu個のトップv導関数とを得るステップ
    と、 (c)前記第1ストリップの連続するuスパンのそれぞ
    れに対して、連続uパラメータ・ポイントでのトップ座
    標,トップv導関数,ボトム座標,ボトムv導関数のb
    −スプライン関数を評価して、連続uパラメータ・ポイ
    ントでのトップ及びボトムu導関数を得るステップと、 (d)前記連続uパラメータ・ポイントでのトップ座
    標,トップv導関数,ボトム座標,ボトムv導関数及
    び、前記連続uパラメータ・ポイントでのトップ及びボ
    トムu導関数を、各uパラメータ・ポイントに対する前
    記ストリップのトップ・ポイント及びボトム・ポイント
    に対する頂点法線とに変換するステップと、 (e)前記初期vスパンの後続vパラメータ・ポイント
    に対してステップ(b)〜(d)を繰り返し、サーフェ
    スの連続vスパンに対してステップ(a)〜(d)を繰
    り返すステップと、 を含むNURBSデータ変換方法。
  2. 【請求項2】ストリップのトップ座標及びトップv導関
    数を、直後のストリップに対する前記評価ステップ
    (c)におけるボトム座標及びボトムv導関数として用
    いる請求項1記載のNURBSデータ変換方法。
  3. 【請求項3】サーフェスの初期uスパンを前記スタック
    のku個の列により定め、連続するuスパンのそれぞれを
    続く列及び直前のku−1個の列により定め、 サーフェスの初期vスパンを前記マトリクスの最初のkv
    個の連続行により定め、連続するvスパンのそれぞれを
    前記マトリクスの対応する続く行及び直前のkv−1個の
    行により定め、 前記スタックを、ファーストイン・ファーストアウト方
    式に動作し、 前記マトリックスの対応する連続行を、連続するvスパ
    ンのそれぞれに対する前記スタックのトップに格納する
    ステップをさらに含む請求項1又は請求項2記載のNURB
    Sデータ変換方法。
  4. 【請求項4】前記マトリクスのコントロール・ポイント
    を、モデリング座標で表し、各コントロール・ポイント
    は、モデリング座標に関連した重みwを有する請求項1
    乃至請求項3のいずれかに記載のNURBSデータ変換方法
    であって、 コントロール・ポイント・モデリング座標をビュー座標
    に変換するステップと、 コントロール・ポイントの変換座標に関連重みを乗算し
    て、新しい座標を各コントロール・ポイントに対する斉
    次座標の組に変換するステップと、 各vスパンに対するvパラメトリック座標インタバルを
    計算し、これからvスパンに対する前記vパラメトリッ
    ク座標インタバルだけ離間されている一連のvパラメー
    タ・ポイントを生成するステップと、 をさらに含むNURBSデータ変換方法。
  5. 【請求項5】ストリップの各uスパンに対するuパラメ
    トリック座標インタバルを計算し、これから前記uスパ
    ンに対する前記uインタバルだけ離隔されている一連の
    uパラメータ・ポイントを生成するステップと、 4個の並列浮動小数点プロセッサで前記評価ステップ
    (c)を実行し、各プロセッサは、wx,wy,wz,wの座標の
    組のうちのそれぞれ1つの座標に対するb−スプライン
    関数を同時に評価するステップと、 をさらに含む請求項1乃至請求項4のいずれかに記載の
    NURBSデータ変換方法。
  6. 【請求項6】前記変換ステップが(d)、 前記評価ステップ(c)で得られた値から重みwを除去
    して、uパラメータ・ポイントのそれぞれに対する前記
    ストリップのトップ・ポイント及びボトム・ポイントに
    対して、ジオメトリック座標の組とu接線とv接線とを
    生成するステップと、 前記トップ・ポイント及びボトム・ポイントのそれぞれ
    に対して、u接線とv接線とのクロス乗積をとることに
    より頂点法線を計算するステップと、 前記頂点法線の大きさを計算するステップと、 を含む請求項1乃至請求項5のいずれかに記載のNURBS
    データ変換方法。
  7. 【請求項7】前記評価ステップ(b)及び(c)がCox
    −DeBoorのプロセスを用いる請求項1乃至請求項6のい
    ずれかに記載のNURBSデータ変換方法。
  8. 【請求項8】各トップ及びボトム・ポイントでの頂点法
    線の大きさを法線しきい値と比較し、前記大きさが前記
    しきい値より小さい場合には、そのポイントでの頂点法
    線ベクトルを、隣接ポイントでの法線ベクトルで置き換
    えるステップをさらに含む請求項6または請求項7記載
    のNURBSデータ変換方法。
  9. 【請求項9】各vスパン内の各uスパンのビジビリティ
    を決定するステップをさらに含む請求項1乃至請求項8
    のいずれかに記載のNURBSデータ変換方法。
  10. 【請求項10】現在の3次元ビューイング・ウインドウ
    に対して前記ステップ(d)の各ポリゴンをクリッピン
    グするステップと、 クリップされたエッジに沿って頂点法線を補間するステ
    ップと、 補間された頂点法線を、後で行うレンダリングのための
    単位ベクトルに変換するステップをさらに含む請求項1
    乃至請求項9のいずれかに記載のNURBSデータ変換方
    法。
  11. 【請求項11】前記パラメトリック・サーフェスはトリ
    ム曲線によりNURBSデータの境界がセットされていない
    ことを特徴とする請求項1乃至請求項10のいずれかに記
    載のNURBSデータ変換方法。
  12. 【請求項12】前記ジオメトリック座標及び前記サーフ
    ェス法線ベクトルから前記ポリゴンのイメージを発生す
    るステップを含むことを特徴とする請求項1乃至請求項
    11のいずれかに記載のNURBSデータ変換方法。
  13. 【請求項13】パラメトリック・サーフェスを表すNURB
    Sデータを、後で行うコンピュータ・グラフィクス・デ
    ィスプレイ・システムのスクーン上でのレンダリングの
    ためのポリゴンの頂点のジオメトリック座標と関連サー
    フェス法線ベクトルとに変換する方法であり、サーフェ
    スはNuをu座標方向における次元、kuをu座標方向にお
    ける階数としたとき、Nu−ku+1個の連続するuスパン
    分パラメトリック座標方向に延在する第1のエッジと、
    Nvをu座標方向に直交するv座標方向における次元、kv
    をv座標方向における階数としたとき、Nv−kv+1個の
    連続するvスパン分パラメトリック座標方向に延在する
    第2のエッジとを有し、サーフェスの全体形状が、コン
    トロール・ポイントのNv行×Nu列マトリクスにより規定
    されるNURBSデータ変換方法であって、 サーフェスを連続する平行なストリップにテレサイトす
    るステップを含み、各ストリップはボトムvパラメータ
    値に位置するボトム・エッジ及びトップvパラメータ値
    に位置するトップ・エッジを有し、これらのエッジはサ
    ーフェスを完全に横切りu座標方向に延在し、ストリッ
    プのトップ・エッジは直後のストリップのボトム・エッ
    ジに一致し、各vスパンは多数のこのようなストリップ
    を有し、 各ストリップの各uスパンをテレサイトして、ストリッ
    プのトップ・エッジ上の一方のポイントとボトム・エッ
    ジ上の他方のポイントとから成り、前記uパラメータ値
    の各々と関連する1対のポイントを定めるステップと、 b−スプライン関数の評価によって、各ポイント対の各
    ポイントに対するジオメトリック座標及びサーフェス法
    線ベクトルを決定し、ストリップの各ポイント対及びス
    トリップの直後のポイント対が、後で行うレンダリング
    のためのポリゴンの頂点を定めるステップと、 を含むNURBSデータ変換方法。
  14. 【請求項14】各vスパンに対するvパラメトリック座
    標インタバルを決定し、これにより前記vパラメトリッ
    ク座標インタバルで離隔されている一連のvパラメータ
    値を生成するステップと、 各ストリップの各uスパンに対するuパラメトリック座
    標インタバルを決定し、これにより前記uパラメトリッ
    ク座標インタバルで離隔されている一連のuパラメータ
    値を生成するステップと、 をさらに含む請求項13記載のNURBSデータ変換方法。
  15. 【請求項15】サーフェスの全体形状がコントロール・
    ポイントのNv行×Nu列マトリクスによって定められる請
    求項13又は請求項14に記載のNURBSデータ変換方法であ
    って、 ジオメトリック座標及びサーフェス法線ベクトルの決定
    ステップが、 ストリップのボトムvパラメータ値で、前記マトリクス
    のkv行の各列におけるコントロール・ポイントについて
    のb−スプライン関数を評価することによって、特定v
    スパンのストリップのボトム・エッジに対する一連のボ
    トム座標及びボトムv導関数を決定するステップを含
    み、前記kv行は前記特定vスパンに関連しており、 ストリップのトップvパラメータ値で、前記特定のvス
    パンに関連した前記kv行の各列におけるコントロール・
    ポイントについてのb−スプライン関数を評価すること
    によって、前記ストリップのトップ・エッジに対する一
    連のトップ座標及びトップv導関数を決定するステップ
    と、 ストリップの連続するuスパンのそれぞれにおいて、ト
    ップ座標、トップv導関数,ボトム座標、ボトムv導関
    数のb−スプライン関数を評価して、連続uパラメータ
    値でのトップ及びボトムu導関数の値を得るステップ
    と、 前記トップ座標、トップv導関数,ボトム座標、ボトム
    v導関数及び前記評価ステップにより得られたトップ及
    びボトムu導関数の値を、各uパラメータ値に対するス
    トリップのトップ・ポイント及びボトム・ポイントに対
    する頂点法線に変換するステップと、 を含むNURBSデータ変換方法。
  16. 【請求項16】前記ジオメトリック座標及びサーフェス
    法線ベクトルを決定ステップが隣接するストリップのu
    パラメータ値に対して行われる前に、ストリップのすべ
    てのuパラメータ値に対して行われることを特徴とする
    請求項13乃至請求項15のいずれかに記載のNURBSデータ
    変換方法。
  17. 【請求項17】前記b−スプライン関数の評価が前記連
    続するuスパンに関連するuノット値の組により決定さ
    れた1組のポリゴン方程式を使用することを特徴とする
    請求項13乃至請求項16のいずれかに記載のNURBSデータ
    変換方法。
  18. 【請求項18】前記パラメトリック・サーフェスはトリ
    ム曲線によりNURBSデータの境界がセットされていない
    ことを特徴とする請求項13乃至請求項17のいずれかに記
    載のNURBSデータ変換方法。
  19. 【請求項19】前記ジオメトリック座標及び前記スクリ
    ーン上でのレンダリングのためのポリゴンを定義する点
    の前記サーフェス法線ベクトルから前記ポリゴンのイメ
    ージを発生するステップを含むことを特徴とする請求項
    13乃至請求項18のいずれかに記載のNURBSデータ変換方
    法。
  20. 【請求項20】パラメトリック・サーフェスを表すNURB
    Sデータを、後で行うコンピュータ・グラフィックス・
    ディスプレイ・システムのスクリーン上でのレンダリン
    グのためのポリゴンの頂点のジオメトリック座標と関連
    サーフェス法線ベクトルとに変換する装置であり、サー
    フェスはNuをu座標方向における次元、kuをu座標方向
    における階数としたとき、Nu−ku+1個の連続するuス
    パン分パラメトリック座標方向に延在する第1のエッジ
    と、Nvをu座標方向に直交するv座標方向における次
    元、kvをv座標方向における階数としたとき、Nv−kv+
    1個の連続するvスパン分パラメトリック座標方向に延
    在する第2のエッジとを有し、サーフェスの全体形状
    が、コントロール・ポイントのNv行×Nu列マトリクスに
    より規定されるNURBSデータ変換装置であって、 レンダリングされるパラメトリック・サーフェスを表
    し、前記マトリクスの各制御ポイントに対するモデリン
    グ座標及び関連重みwを含むNURBSデータを格納する第
    1のメモリ手段と、 コントロール・ポイント・モデリング座標をビュー座標
    に変換し、変換座標を斉次座標に変換し、連続するvパ
    ラメータ値で、前記斉次座標のb−スプライン関数を評
    価して、現在のvパラメータ値に対するトップ座標及び
    トップv導関数と、直前のvパラメータ値に対するボト
    ム座標及びボトムv導関数を得るグラッフィクス・コン
    トロール・プロセッサ手段と、 前記グラッフィクス・コントロール・プロセッサ手段か
    らデータ及びコマンドを受け取り、トップ及びボトム座
    標とトップ及びボトムv導関数のb−スプライン関数を
    同時に評価して、トップ及びボトムu導関数の値を得る
    複数の並列浮動小数点プロセッサと、 前記複数の並列浮動小数点プロセッサによって、得られ
    た値を受け取り、これらの値を、ジオメトリック座標の
    組と、レンダリングされるポイントの頂点に対する頂点
    法線とに変換する他の浮動小数点プロセッサと、 を含むNURBSデータ変換装置。
  21. 【請求項21】前記グラフィックス・コントロール・プ
    ロセッサ手段と、前記複数の並列浮動小数点プロセッサ
    と、前記他の浮動小数点プロセッサとが、パイプライン
    処理的に動作する請求項20記載のNURBSデータ変換装
    置。
  22. 【請求項22】前記複数の並列浮動小数点プロセッサ
    は、それぞれが前記各uパラメータ値に対する重みを表
    す出力を与える4個のプロセッサを有し、 前記他の浮動小数点プロセッサは、前記複数の並列浮動
    小数点プロセッサのうちの1つのプロセッサの出力の逆
    数を、他のプロセッサの出力に乗算することを特徴とす
    る請求項20又は請求項21に記載のNURBSデータ変換装
    置。
  23. 【請求項23】前記複数の並列浮動小数点プロセッサ及
    び前記グラフィックス・コントロール・プロセッサ手段
    は、評価の為にCox−DeBoorのプロセスを用い、前記複
    数の並列浮動小数点プロセッサの出力を、前記他の浮動
    小数点プロセッサに連続的に与えることを特徴とする請
    求項20乃至請求項22のいずれかに記載のNURBSデータ変
    換装置。
  24. 【請求項24】前記グラフィックス・コントロール・プ
    ロセッサ手段に関連し、vスパンを定めるマトリクスの
    コントロール・ポイントにkv行を収容するkv行×Nu列を
    有するFIFOコントロール・ポイント・スタックをさらに
    有し、 前記グラフィックス・コントロール・プロセッサ手段
    は、前記マトリマトリクスの続く行のそれぞれを、サー
    フェスに続くvスパンのそれぞれを定める前記スタック
    の頂部にロードすることを特徴とする請求項20乃至請求
    項23のいずれかに記載のNURBSデータ変換装置。
  25. 【請求項25】前記グラフィックス・コントロール・プ
    ロセッサ手段は、 各vスパンに対するvパラメトリック座標インタバルを
    決定し、これから前記vインタバルにより離隔される一
    連の連続vパラメータ値を生成し、 各uスパンに対するuパラメトリック座標インタバルを
    決定し、これから前記uインタバルにより離隔される一
    連の連続uパラメータ値を生成することを特徴とする請
    求項20乃至請求項24のいずれかに記載のNURBSデータ変
    換装置。
  26. 【請求項26】前記他の浮動小数点プロセッサの出力に
    直列に接続され、パイプライン処理的に動作するクリッ
    ピング・プロセッサ及びフレーム・バッファを含むこと
    を特徴とする請求項20乃至請求項25のいずれかに記載の
    NURBSデータ変換装置。
JP2239185A 1989-10-24 1990-09-11 Nurbsデータ変換方法及び装置 Expired - Lifetime JPH0776991B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US42638689A 1989-10-24 1989-10-24
US426,386 1989-10-24

Publications (2)

Publication Number Publication Date
JPH03201073A JPH03201073A (ja) 1991-09-02
JPH0776991B2 true JPH0776991B2 (ja) 1995-08-16

Family

ID=23690587

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2239185A Expired - Lifetime JPH0776991B2 (ja) 1989-10-24 1990-09-11 Nurbsデータ変換方法及び装置

Country Status (3)

Country Link
US (1) US5278948A (ja)
EP (1) EP0425177A3 (ja)
JP (1) JPH0776991B2 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5965079A (en) 1995-04-25 1999-10-12 3D Systems, Inc. Method and apparatus for making a three-dimensional object by stereolithography
EP0488563A3 (en) * 1990-11-30 1993-11-03 Ibm Method and apparatus for rendering trimmed parametric surfaces
JP3137245B2 (ja) * 1991-10-30 2001-02-19 ソニー株式会社 自由曲線作成方法及び自由曲面作成方法
EP0543607B1 (en) * 1991-11-21 2000-05-17 Sony Corporation Image processing system
US5483627A (en) * 1992-04-29 1996-01-09 Canon Kabushiki Kaisha Preprocessing pipeline for real-time object based graphics systems
JP3327622B2 (ja) * 1992-04-29 2002-09-24 キヤノン株式会社 ベジェスプラインから2次多項式フラグメントへの変換
US5377320A (en) * 1992-09-30 1994-12-27 Sun Microsystems, Inc. Method and apparatus for the rendering of trimmed nurb surfaces
GB9223315D0 (en) * 1992-11-06 1992-12-23 Canon Res Ct Europe Ltd Processing image data
GB9223375D0 (en) * 1992-11-06 1992-12-23 Canon Res Ct Europe Ltd Processing image data
US5428718A (en) * 1993-01-22 1995-06-27 Taligent, Inc. Tessellation system
AU6081494A (en) * 1993-07-27 1995-02-28 Taligent, Inc. Object-oriented rendering system
US5544291A (en) * 1993-11-10 1996-08-06 Adobe Systems, Inc. Resolution-independent method for displaying a three dimensional model in two-dimensional display space
JPH07282117A (ja) * 1994-04-08 1995-10-27 Ricoh Co Ltd 自由曲面生成方法及び自由曲面形状の制御方法
US5596686A (en) 1994-04-21 1997-01-21 Silicon Engines, Inc. Method and apparatus for simultaneous parallel query graphics rendering Z-coordinate buffer
WO1995029053A2 (en) * 1994-04-25 1995-11-02 3D Systems, Inc. Enhanced building techniques in stereolithography
US5977987A (en) * 1995-07-26 1999-11-02 Raycer, Incorporated Method and apparatus for span and subspan sorting rendering system
ES2129357B1 (es) * 1997-03-24 2000-02-01 Univ Valladolid Sistema automatico para la ingenieria inversa en entornos cad y la evaluacion objetiva del color.
US5995109A (en) * 1997-04-08 1999-11-30 Lsi Logic Corporation Method for rendering high order rational surface patches
US6906718B1 (en) * 1997-04-25 2005-06-14 Microsoft Corporation Method and system for efficiently evaluating and drawing NURBS surfaces for 3D graphics
US6377865B1 (en) 1998-02-11 2002-04-23 Raindrop Geomagic, Inc. Methods of generating three-dimensional digital models of objects by wrapping point cloud data points
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
WO2000011607A1 (en) * 1998-08-20 2000-03-02 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6717577B1 (en) 1999-10-28 2004-04-06 Nintendo Co., Ltd. Vertex cache for 3D computer graphics
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
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US6996505B1 (en) 2000-06-21 2006-02-07 Raindrop Geomagic, Inc. Methods, apparatus and computer program products for automatically generating nurbs models of triangulated surfaces using homeomorphisms
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
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in 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
US6937245B1 (en) * 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for 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
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
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
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
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
JP2005514675A (ja) 2001-12-14 2005-05-19 エスジーディーエル システムズ インコーポレイティッド N次元空間にm次の形状を生成するための方法および装置
US7174280B2 (en) * 2002-04-23 2007-02-06 Ford Global Technologies, Llc System and method for replacing parametrically described surface features with independent surface patches
US7212205B2 (en) 2002-11-12 2007-05-01 Matsushita Electric Industrial Co., Ltd. Curved surface image processing apparatus and curved surface image processing method
JP4193979B2 (ja) * 2003-03-17 2008-12-10 任天堂株式会社 シャドウボリューム生成プログラム及びゲーム装置
US7489419B2 (en) 2004-06-15 2009-02-10 Infoprint Solutions Company, Llc Method and system for specifying halftone spot shapes
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
JP4255449B2 (ja) * 2005-03-01 2009-04-15 株式会社ソニー・コンピュータエンタテインメント 描画処理装置、テクスチャ処理装置、およびテセレーション方法
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
US7598711B2 (en) * 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
JP4886527B2 (ja) * 2007-01-17 2012-02-29 本田技研工業株式会社 金型モデルデータの修正方法
US9042634B2 (en) * 2013-01-15 2015-05-26 General Electric Company Method system and computer product for non-destructive object analysis
AU2013267004A1 (en) * 2013-12-04 2015-06-18 Canon Kabushiki Kaisha Method, apparatus and system for tessellating a parametric patch
US11043028B2 (en) * 2018-11-02 2021-06-22 Nvidia Corporation Reducing level of detail of a polygon mesh to decrease a complexity of rendered geometry within a scene

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4819192A (en) * 1985-02-26 1989-04-04 Sony Corporation Method of displaying image
US4646251A (en) * 1985-10-03 1987-02-24 Evans & Sutherland Computer Corporation Computer graphics, parametric patch parallel subdivision processor
US4930092A (en) * 1987-01-20 1990-05-29 Auto-Trol Technology Corporation Polygon display apparatus and method
US4999789A (en) * 1987-02-05 1991-03-12 Hewlett-Packard Co. Method and apparatus for trimming B-spline descriptions of patches in a high performance three dimensional graphics system
US4855935A (en) * 1987-05-08 1989-08-08 Sun Microsystems, Inc. Method and apparatus for rendering vectors using bresenham parameters
US4912659A (en) * 1987-10-30 1990-03-27 International Business Machines Corporation Parallel surface processing system for graphics display
US5038291A (en) * 1989-04-03 1991-08-06 General Electric Company Computerized ply pattern generation

Also Published As

Publication number Publication date
US5278948A (en) 1994-01-11
EP0425177A2 (en) 1991-05-02
JPH03201073A (ja) 1991-09-02
EP0425177A3 (en) 1992-09-30

Similar Documents

Publication Publication Date Title
JPH0776991B2 (ja) Nurbsデータ変換方法及び装置
US5317682A (en) Parametric curve evaluation method and apparatus for a computer graphics display system
US7027050B1 (en) 3D computer graphics processing apparatus and method
US7903112B2 (en) Drawing processing apparatus, texture processing apparatus, and tessellation method
US7508394B1 (en) Systems and methods of multi-pass data processing
US7643030B2 (en) Method and system for efficiently evaluating and drawing NURBS surfaces for 3D graphics
US7924278B2 (en) Real-time GPU rendering of piecewise algebraic surfaces
JP3466661B2 (ja) 画像処理装置及びその方法
JPH04287292A (ja) トリミングされたパラメトリック面のレンダリング方法及び装置
WO2000002165A1 (fr) Procede permettant de produire des donnees de polygone et afficheur d'images utilisant lesdites donnees
EP0782105B1 (en) Processing image data
US5771341A (en) Graphics apparatus and method for dividing parametric surface patches defining an object into polygons
GB2278470A (en) Methods and apparatus for interpolating received values, image synthesis and picture recordings
US5109481A (en) Quadratic interpolation for shaded image generation
EP0259971A1 (en) Fast phong shading
US5619626A (en) Processing image data
Bruijns Quadratic Bezier triangles as drawing primitives
JP3511301B2 (ja) 曲面データ生成方法
EP0425174A2 (en) Parametric curve evaluation for a computer graphics display system
JP2000040163A (ja) 対象物の表面のスム―ジング方法
JPH1074268A (ja) ポリゴン画像再生方法および装置
JPH0689332A (ja) ベクトル形状編集装置
JPH04137075A (ja) 画像生成装置
JPH0786938B2 (ja) 陰影付け方法およびその装置