JP4467704B2 - コンピュータグラフィックス装置、その制御方法、及びコンピュータ可読記憶媒体 - Google Patents
コンピュータグラフィックス装置、その制御方法、及びコンピュータ可読記憶媒体 Download PDFInfo
- Publication number
- JP4467704B2 JP4467704B2 JP2000056395A JP2000056395A JP4467704B2 JP 4467704 B2 JP4467704 B2 JP 4467704B2 JP 2000056395 A JP2000056395 A JP 2000056395A JP 2000056395 A JP2000056395 A JP 2000056395A JP 4467704 B2 JP4467704 B2 JP 4467704B2
- Authority
- JP
- Japan
- Prior art keywords
- triangle
- texture
- procedure
- geometric
- vertices
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Description
【発明の属する技術分野】
本発明は、イメージ処理装置に関し、特に、3次元(3D)中におけるオブジェクトを含むシーンからなるイメージの処理に関する。
【0002】
【従来の技術】
コンピュータグラフィックスの分野では、オブジェクトの表面は、一般に、一連の多角形、最も一般的には三角形によって表される。それらの三角形は、3D空間におけるそれらの頂点の座標を用いて記述することができ、3Dオブジェクト・データとしてメモリ内に記憶することができる。全体として、オブジェクト表面が詳細な起伏(relief)を要しない場合、オブジェクト表面を表わすことに要する計算量は多くならない。この場合、オブジェクトの表面は、比較的大きい三角形によって表され、三角形を記述するために、比較的小さなオブジェクト・データが作成されるという結果になる。このようにして、比較的小さいメモリが、オブジェクト表面を記述するためのコンピュータ内で必要とされることになる。
【0003】
しかしながら、表面が非常に詳細な表面の起伏(reief)の特徴を有する場合、多数の非常に小さい三角形が、その表面を記述するために必要とされることになろう。この場合、表面の記述は、イメージデータへの変換に要する計算量が多くなり得る多量のオブジェクト・データの作成という結果をもたらすこととなる。
【0004】
したがって、過去には、以下に簡潔に記述される2つの段階によってオブジェクトの表面を記述することが、好適な手法として見いだされてきた。
【0005】
第1に、オブジェクト表面の一般的なアウトラインは、三角形のメッシュを用いて上述した方法を使用して記述される。オブジェクトの表面を記述する代わりの方法としては、制御ポイントを用いることによってベジェ(または他のスプラインの)表面を定義すること、または、表面が位置である数学的な方程式を提供することが利用可能であることが理解されるであろう。
【0006】
第2に、テクスチャ・ビット・マップが、オブジェクトの表面の一般的な輪郭を形成する三角形の上にオーバーレイされる。そのテクスチャ・ビット・マップは、見る人に、起伏(reief)の形態が実際に存在するような印象を与える細部を含むが、実際には、その起伏(reief)の形態は、色と影とがコントラストをなす領域によって記述されている。そのテクスチャ・ビット・マップは、それ自身、座標(u、v)で2次元空間の単位スクエアの上に定義される。テクスチャ・ビット・マップが、単位スクエアの上に定義されない場合、定義空間を単位スクエアのそれにマップすることが可能である。3D空間中の頂点は、(u、v)座標を与えられ、ビット・マップは、頂点間を補間し、三角形内のポイントとビット・マップ内のポイントの間の一致を見いだすことによって、メッシュ内において三角形にクリップされる。
【0007】
たとえば、舗装した道路のグラフィックスな描写からなるオブジェクトは、そのオブジェクトの全体的な表面が一般に平らであることから判断して、一連の比較的大きい三角形を用いて記述することができる。しかしながら、三角形を使用して、道路の粗さ、または、道路の穴を表すために、多数の比較的小さい三角形が必要とされるであろう。したがって、その形状に関係せずに、その外見に関する穴または表面の粗さのような特徴を表現することは便利である。したがって、(大きい三角形のメッシュによって定義された)テクスチャ・ビット・マップが、道路の全体の外観表面を覆うように用いられる。ここで、テクスチャ・ビット・マップは、穴の外見を表すために、道路の他の部分よりも暗い色で陰を表す領域を含む。また、テクスチャ・ビット・マップは、表面の粗さを表すために「まだらの」パターンを含む。
【0008】
【発明が解決しようとする課題】
オブジェクトの起伏(reief)の特徴を描写することは、そのオブジェクトに対する視点がオブジェクトから離れて少し距離があるときは、合理的であり効率的である。しかしながら、視点がオブジェクトにより近くなると、起伏(reief)の特徴がどのようにシミュレートされているかが、外見上明白になってしまう。これは、イメージの品質の全体的な印象を悪くするものであり、望ましくない。
【0009】
ロバート・L・クックによる「Shade Trees」(コンピュータ・グラフィックス・ボリューム18、ナンバー3、1984年7月、ページ223〜231)は、テクスチャ・マップよりも効率的にテクスチャをシミュレートするために置換マップの使用を提案する。置換マップは、どちらのプロセスであっても、使用される、最終的な陰を付けるプロセスにおけるポイントの位置を修正する。
【0010】
【課題を解決するための手段】
本発明の第1の態様によれば、さらなる幾何学性でもってテクスチャ・ビット・マップを拡張する装置と方法が提供される。ここで、この幾何学性は、テクスチャ・ビット・マップが適用されるオブジェクトが、テクスチャ・ビット・マップによって明瞭にモデル化されたテクスチャに対応する実際の3D幾何を含むことを可能にする。
【0011】
これはコックの文献に記述された方法と対照的であり、単に断片的にポイント位置を修正するにすぎない。本発明は、表現されるべきオブジェクトを定義するデータ構造の中に、更なる幾何学性を組み込むので、有利である。
【0012】
本発明の第2の態様によれば、表示する3次元のオブジェクトを定義する情報を記憶する手段と、オブジェクトに適用されるテクスチャを定義する情報を記憶する手段と、使用中のテクスチャの上に重ねる追加の3次元の幾何学的模様(geometry)を定義する情報を記憶する手段とを含むコンピュータグラフィックス装置が提供される。
【0013】
また、本発明の第3の態様によれば、3次元のオブジェクトをグラフィックスで表す手段が提供され、この手段は、前記オブジェクトの機能的形状を定義する情報を記憶する第1の記憶手段と、前記オブジェクトの詳細な形を定義する情報を記憶する第2の記憶手段と、前記第1の記憶手段における前記情報に前記第2の記憶手段における前記情報をインポーズする手段とを含む。
【0014】
上記第3の態様では、インポジション手段は、前記基本的形状が所定の閾値よりも名目上の観察者により近い場合に、インポーズするべく機能するようにしてもよい。
【0015】
好ましくは、更なる幾何学的模様は、幾何学的模様の個別の要素が表示されるべきか否かを示すための手段を含む。このようにして、基本的な幾何学的模様のエッジのより微妙な制御が達成され、エイリアシングを潜在的に減少させる。
【0016】
【発明の実施の形態】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【0017】
図1は、本発明の一実施形態によるイメージ処理装置の全体の構成を示すブロック図である。この装置において、コンピュータ20は、メモリ24に接続された中央処理装置(CPU)22を含む。メモリ24は、CPU22のオペレーションのシーケンスを定義するプログラムを記憶し、CPU22による計算に使用されるオブジェクトとイメージ・データを記憶するために使用可能である。
【0018】
入力装置26は、CPU22の入力ポート(図示せず)に接続される。入力装置26は、たとえば、キーボードおよび/またはマウス、トラックボール、デジタイザ・タブレット、スタイラスなどのような位置を検知する入力装置を含む。
【0019】
フレーム・バッファ28も、CPU22に接続される。フレーム・バッファ28は、たとえば、イメージのピクセル毎に1つの(またはいくつかの)メモリロケーションを提供することによって、少なくとも1つのイメージに関連するイメージ・データを記憶するように構成されたメモリユニット(図示せず)を含む。各ピクセルについてのフレーム・バッファ28内に記憶された値は、イメージにおけるピクセルの色または明暗度を定義する。
【0020】
本実施形態では、イメージは、ピクセルの2次元配列として表され、好適には、デカルト座標を用いて記述される。所与のピクセルの位置は、x、y座標の対によって記述することができる。フレーム・バッファ28は、少なくとも1つのイメージを記憶するために十分なメモリ容量を有する。イメージが1000×1000ピクセルの解像度を有する場合、フレーム・バッファ28は、106ピクセルのメモリローケーションを含むべきであり、各メモリロケーションは、ピクセル座標x、yに関して直接または間接的にアドレスすることが可能である。
【0021】
ビデオ・ディスプレイ装置(VDU)30は、フレーム・バッファ28に接続される。VDU30は、一般的な方法でフレーム・バッファ28に記憶されたイメージを表示する機能を有する。たとえば、VDU30が、ラスタ走査によってイメージを表示する場合、ピクセルのx座標は走査されるディスプレイのラインに沿った間隔にマップされ、ピクセルのy座標はラインの数にマップされる。
【0022】
また、フレーム・バッファ28には、ビデオ・テープ・レコーダ(VTR)32が接続される。記録紙等に記録を行うペーパー・プリンタまたは35ミリのフィルム・レコーダのような他のイメージ記録装置が、追加または代替として供給され得る。VTR32は、フレーム・バッファからデータを受け取り、磁気テープ上に磁気信号としてデータを記憶する機能を有する。
【0023】
ハード・ディスク・ドライブのような、大容量記憶装置34が、メモリ24に接続される。大容量記憶装置34は、大きなデータ記憶装置容量を有し、高速なアクセスが必要とされないデータを記憶するのに適している。また、大容量記憶装置34は、コンピュータ20による制御下におけるコンピュータープログラムを含んで構成される、プロセッサ処理のための命令列を定義する制御信号を格納する。
【0024】
さらに、ディスク・ドライブ36がメモリ24に接続される。ディスク・ドライブ36は、フロッピー・ディスク38のような取り出し可能なデータ記憶媒体を装着することができ、フロッピー・ディスク38上に記憶されたデータをメモリ24に転送することが可能である。そして、そのデータは、その後大容量記憶装置34上に記憶することができる。データは、コンパクト・ディスク・プレーヤ(図示せず)に装着されたコンパクト・ディスクから取得することも可能である。さらに、モデム40は、遠隔のコンピュータ装置との間の情報の送受信のために、コンピュータ20をインターネットに接続する。
【0025】
図2は、本実施形態による幾何学的なテクスチャリング機能を含むレンダリング・パイプライン50を説明する図である。しかしながら、他のレンダリング・パイプラインも適切に用いられ得ることが認められるであろう。レンダリング・パイプラインが、Foley、Van Dam、Feiner、Hughesによる「コンピュータグラフィックス」(2nd ed、Addison Wesley、ISBN 0−201−12110−7)の、806〜812ページにおいて論じられている。以下、これを、「Foley、Van Dam、Feiner、Hughes」と称する。
【0026】
レンダリング・パイプライン50は、メモリ24内の、または大容量記憶装置34からアクセス可能なコンピュータの実行可能な命令の記憶装置を介して、コンピュータ20内で実行される。
【0027】
レンダリング・パイプライン50は、それに関係するイメージ・データを提供するために、オブジェクト・プリミティブに関して動作可能な複数の処理装置からなる。プリミティブは、三角形、三角形ストリップ、三角形ファン、ラインまたは多角形である。本発明は多角形プリミティブに適用可能であるが、本実施形態では、特に三角形との関係において説明する。
【0028】
レンダリング・パイプライン50は、インスタンシング装置52を含む。使用中において、レンダリング・パイプラインを利用する、或いはレンダリング・パイプラインを含んでいるグラフィックス・モデリング・アプリケーションは、多くの異なるフォーマットでオブジェクトを記憶することになる。オブジェクトが表示のために選択される場合、インスタンシング装置52は、そのオブジェクトに関して動作し、それを残りの他のレンダリング・パイプライン50に共通したフォーマットに変換する。レンダリング・パイプラインを含むアプリケーションが、単一の3Dプリミティブの形式でオブジェクトをパイプラインに渡す場合、インスタンシング装置52は一般的なものとなるであろう。
【0029】
インスタンシング装置52は、関連するマテリアルデータ(material data)とともに、プリミティブの一連のコレクションを出力する。これらプリミティブは、ワールドおよび/またはローカルなオブジェクト空間に対応して記述される。レンダリング・パイプライン50は、さらに、インスタンシング装置52からプリミティブのそれらの一連のコレクションを受け取る変換装置54を含む。変換装置54は、特定のプリミティブのセット及びビューイング変換に関連した全ての情報を崩して単一の変換にする。こうして、この単一の変換はデータに適用される。重複または部分的な不明瞭さのために、クリッピングを必要とするプリミティブはいずれも、変換装置54によってフラグを付けられる。しかしながら、クリッピングは、変換装置54それ自身によっては、行われない。
【0030】
プリミティブが、グラフィックス・モデリング・アプリケーションによってパイプライン50に供給される場合、プリミティブが前もって変換された状態にあるなら、変換装置54は取るに足らない構成となるか、または不要である。
【0031】
レンダリング・パイプライン50は、さらに、ライティング装置56を含む。ライティング装置56は、変換装置54から変換されたプリミティブを受け取る。ライティング装置56は、ラスタ化の間に補間されるであろう色の値を計算するために、グローバル・ライティングに関連するデータを、プリミティブのマテリアルデータおよび方向付けデータに結合させる。
【0032】
ライティングは、それがマテリアル情報のためにオリジナルのオブジェクトの照会を行うので、一般にはオブジェクト特定的である。プリミティブのすべてのコレクションが、ライティング装置56によって照らされるわけではない。なぜなら、いくらかは、グラフィックス・モデリング・アプリケーションによって前もって計算されたライティングの値が供給されることがあるからである。
【0033】
レンダリング・パイプライン50は、さらに、ライティング装置56によって送られた、照らされたプリミティブのコレクションについて作動するレンダリング装置58を含む。効率性の理由から、プリミティブは、グループ、またはコレクションの形態で、パイプラインの下流に送られる。しかしながら、プリミティブを返すために、それらは、レンダリング装置58によって開梱(unpack)され、個々に扱われなければならない。
【0034】
レンダリング装置58は、幾何学的テクスチャリング装置60と接続されている。幾何学的テクスチャリング装置60は、レンダリング装置58によって、開梱された個々のプリミティブを受け入れ、幾何学的なテクスチャをその上に重ねるべきであるかどうかチェックする。幾何学的なテクスチャを重ねる場合、幾何学的テクスチャリング装置60は、プリミティブの上に幾何学的なテクスチャを重ねることによって生成された一連の三角形を返送する。さもなければ、プリミティブはレンダリング装置に戻される。
【0035】
プリミティブは、幾何学的テクスチャリング装置60によって変換されるか否かにかかわらず、ラスタ化のために描画されるべく、レンダリング装置58に出力される。レンダリング装置58の最終的な出力は、VDU30上のイメージの生成のためのにラスタ化されたデータ62のストリームである。
【0036】
図3は、4つの三角形72a、b、c、dによって定義されたピラミッド状の形のボディ70を説明する図である。これらの三角形72a、b、c、dのそれぞれは、図4で示されるオブジェクト・データ構造80に関連付けられている。オブジェクト・データ構造80はヘッダ80−1と、頂点の位置やオブジェクトの材料のようなオブジェクトの特徴を定義する一連のフィールド80−2、80−3を含む。マテリアルを特定するフィールド80−3は、マテリアル・オブジェクト82と名付けられた他のデータ構造を指定する。
【0037】
マテリアル・オブジェクト82は、ヘッダ82−1と、マテリアルのテクスチャの如きマテリアルの特徴を定義する情報を含むフィールド82−2を含む。テクスチャを特定するフィールド82−2は、テクスチャ・オブジェクト84と名付けられた他のデータ構造を指定する。
【0038】
テクスチャ・オブジェクト84は、ヘッダ84−1と、テクスチャの特徴を定義する情報を含むフィールド84−2、84−3を含む。それらのフィールド84−2の1つは、ビット・マップ・フィールドであり、ビット・マップ86を指定する。
【0039】
上記において参照した、Foley、van Dam、Feiner、Hughesの741〜745ページから知られているように、関連するテクスチャ・マッピングを有する三角形をレンダリングするプロセスは、テクスチャ・ビット・マップにおけるポイントの三角形上のポイントへのマッピングに依存する。それは、u、v座標によって2次元空間におけるテクスチャ・ビット・マップを定義することによって達成され、三角形72a、b、c、dについて指定された頂点は、x、y空間におけるそれらの物理的な位置に関してだけではなく、u、v空間との対応に関して定義される。したがって、ビット・マップにおけるポイントは、三角形72a、b、c、dの頂点のu、v座標への参照によって、これら三角形にマップすることができる。ビット・マップは、u、v空間における単位スクエアにわたって定義されるが、三角形72a、b、c、dは、その単位スクエアの領域と一致しない領域上のu、v空間において定義される。テクスチャ・ビット・マップをオブジェクト三角形に適合させるために、ビット・マップは、繰り返され、および/またはクリップされる必要がある。
【0040】
テクスチャ・オブジェクト84は、幾何学的なテクスチャを指定しているさらなるフィールドによって拡張される。幾何学的なテクスチャ84−3は、幾何学的なテクスチャ・オブジェクト87を指すポインタを含む。
【0041】
テクスチャ・オブジェクト84は、幾何学的なテクスチャ・オブジェクト87による、テクスチャ・オブジェクト・タイプの拡張によって拡張される。テクスチャ・オブジェクト・タイプは、それへの二重にリンクされた拡張のリストと関連付けられ、各拡張は、その拡張のためのメモリの割当てを定義するデータからなる。したがって、幾何学的なテクスチャを含むテクスチャ・オブジェクトが定義される場合、コンピュータは、テクスチャ・オブジェクトそれ自身及び期待されたテクスチャ・ビット・マップのためにメモリを割り当てることだけではなく、他で定義される幾何学的なテクスチャ・オブジェクト・タイプのためにメモリを割り当てるよう命令される。以下で説明するように、幾何学的なテクスチャ・オブジェクト・タイプは、一連のリンクされたリストまたはポインタを含んでいる可能性が最も高くなる。
【0042】
幾何学的なテクスチャ・オブジェクト87について、図5を参照してより詳細に説明する。幾何学的なテクスチャ・オブジェクト87は、頂点V1からVmのリストを含み、このリストは、幾何学的なテクスチャ内のポイントの位置を定義し、頂点V1からVmによって定義された三角形t1からtnとビン(bin)88の2次元の配列のリストである。ビン88は、すべての三角形(t1...tn)のリストから選択された三角形のリストの配列を構成する。ビン88の配列は、u、v空間における幾何学的なテクスチャをカバーする領域の配列に対応する。各ビン88は、三角形(t1...tn)のリストからの、当該ビンに対応する領域に少なくとも部分的に含まれている三角形のリストBpqを備える。
【0043】
図6は、各頂点Viと関連したデータ構造を説明する図である。各頂点Viは、u、v空間における座標ui、viと、u、v平面からの置換(displacement)Diにおいて定義される。インデックス・フィールドIiとFLAGSiフィールドも、後に説明する手順での使用のために提供される。
【0044】
図7は、各三角形tjと関連したデータ構造を説明する。三角形tjを定義する頂点Va、Vb、Vcを指定するための3つのフィールドが提供される。また、ta、tb、tcの3つのフィールドは、三角形tjに隣接する3つの三角形を指定するために提供される。FLAGSjフィールドは、後に説明する手順での使用のために提供される。
【0045】
図8は、その中に幾何学的なテクスチャを定義するのに上述したデータ構造の使用を説明するための、簡単な幾何学的なテクスチャを示す図である。この第1の幾何学的なテクスチャは、後述する特定の実施形態に従った方法の説明においては扱われない。しかしながら、この第1の幾何学的なテクスチャは相対的に複雑さが少なく、データ構造の使用を明らかに説明することを可能にするので、この段階の説明において考慮する。幾何学的なテクスチャは、一般に、4つのコーナーの頂点V1、V2、V3、V4と2つの内部の頂点V5およびV6を有する正方形である。そして、6つの三角形t1からt6を定義するように、それらの6つの頂点間にエッジが定義される。
【0046】
頂点V1からV6は、幾何学的なテクスチャ・オブジェクト87に含まれる頂点のリストに入れられる。リストの最上部に4つのコーナーの頂点V1からV4を配置することは好ましいことである。なぜなら、後述される処理手順においてコーナーを配置するための手順をより容易にできるからである。内部の頂点V5、V6は、そのリストにおいて、コーナーの頂点の下に入れられる。なお、リストにおいて、内部の頂点に関するエントリの順番は重要ではない。
【0047】
図9は、図7を参照して説明したような、三角形t1からtnについてのデータ構造への幾何学的なテクスチャ・オブジェクト87の三角形のエントリを説明する図である。たとえば、三角形t1は、頂点V1、V5およびV6によって定義され、それに対して隣接する三角形t6、t3およびt2を有する。上述したように、FLAGSフィールドが提供される。三角形t2に関して示されているように、三角形が幾何学的なテクスチャのエッジに隣接している場合は、「隣接する三角形」のフィールドta、tb、tcのうちの1つは、ゼロの値が入れられることになる。なぜなら、その三角形のそのエッジに隣接する三角形は存在しないからである。この例では、フィールドtaはフィールドVaおよびVbに格納されている頂点によって定義されるエッジに隣接する三角形を格納し、フィールドtbはフィールドVbおよびVcに格納されている頂点によって定義されるエッジに隣接する三角形を格納し、フィールドtcはフィールドVcおよびVaに格納されている頂点によって定義されるエッジに隣接する三角形を格納するように、隣接する三角形がフィールド中にエントリされる。
【0048】
幾何学的なテクスチャの上に重ね合わされているのは、ビン88の5×5グリッドである。ビン88は、図8では、破線によって区画して示されている。図10は、ビン88と関連したデータ構造を説明する図である。各ビンは、そのビンの中に少なくとも部分的に含まれる三角形のリストを含む。各ビン88は、Bijの表記によって本明細書において説明され、図8において、iは、左から右へと増加し、jは、上から下へと増加する。
【0049】
たとえば、ビンB00は、図8においてその参照符B00によって示され、実線によって示された領域であり、三角形t1、t2およびt6の部分を含む。したがって、ビンB00は、三角形t1、t2およびt6をリストする。図8において参照符B24によって示されるビンB24の領域は、やはり実線によって示してあるが、三角形t5内に完全に含まれる。従って、ビンB24は、その中にt5をリストするだけである。
【0050】
次に、図11を参照して、図4から図10において説明したようなデータ構造で定義される幾何学的なテクスチャが、図3において説明したボディ70の他の平らな三角形72aに適用されることを可能にする処理手順を説明する。
【0051】
第1のステップS1−2において、u、v空間における幾何学的テクスチャの定義を行うサブプロシージャをコールする。このサブプロシージャは、頂点Vのリスト、三角形tのリスト、およびビン88の配列を有する幾何学的なテクスチャ・オブジェクト87を提供する。
【0052】
上記のサブプロシージャに続いて、ステップS1−4においてメインプロシージャは、x、y、z空間とu、v空間へのマッピングの両方において指定された頂点を有するように、描画されるべきオブジェクトを定義する。
【0053】
その後、メインプロシージャはループに入る。このループにおいて、ステップS1−6では、オブジェクトの三角形を選択しそれに幾何学的テクスチャをマップする処理によりオブジェクトの各三角形が選択される。そして、このステップS1−6において、複数のより小さい多角形からなる幾何学的にテクスチャされたオブジェクト三角形が生成される。その幾何学的にテクスチャされたオブジェクト三角形は、ステップS1−8によって、図2を参照して説明したようなシステムのレンダリング・パイプライン50へ出力(ディスパッチ)される。
【0054】
幾何学的にテクスチャされたオブジェクト三角形が出力されると、ステップS1−10において、他に考慮すべき三角形が残っているかを調べる。他の三角形が残っている場合、処理はステップS1−6に戻って、上述と同様の動作を繰り返す。一方、オブジェクトのすべての三角形について処理を終えたならば、幾何学的なテクスチャの組込みを含むレンダリング処理は完了しており、本手順を終了する。
【0055】
次に、サブプロシージャであるステップS1−2の処理(u、v空間における幾何学的テクスチャの定義)について、添付の図12を参照してより詳細に説明する。
【0056】
まず、ステップS2−2において、サブプロシージャは、u、v空間における単位スクエアを定義する。幾何学的なテクスチャは、この単位スクエアにおいて定義される。その後、ステップS2−4に進み、幾何学的なテクスチャは、u、v空間内の頂点Vmの集合として定義される。ここで、三角形はそれらの頂点によって定義される。図13は、上述したのと同じように4つのコーナーの頂点と9つの内部の頂点を含み、16個の三角形を定義する幾何学的なテクスチャの第2の典型的な実施形態を説明する図である。この第2の幾何学的なテクスチャは、図8に示した第1のものよりかなり複雑であり、本明細書中で説明した手順をより効率的に説明することを可能にする。頂点Vmと三角形tnは、図5に関連して説明した幾何学的なテクスチャ・オブジェクト87の頂点と三角形のリストに記憶される。
【0057】
ステップS2−6によって、各頂点Vmは、u、v平面からの置換Dmを割り当てる。頂点Vmと関連した置換Dmは、オブジェクトに適用される幾何学的なテクスチャの形を定義する。図14と図15に示すように、これらの置換Dmは、u、v平面に直角であるように表することができる。現在説明されている実施形態では、すべての置換Dmは、ネガティブである。しかしながら、置換Dmは、ポジティブ、ネガティブ、または両方の混合であってもよいことは理解されるであろう。これは、波形効果(ripple effect)、畝(rib)または粗さ(roughness)を提供することに役立つであろう。
【0058】
ステップS2−6に引き続いて、ステップS2−8で、ビンBpqの配列を規則的なグリッドのボックスとして定義する。図13では、ビンは、トップのエッジと左手のエッジに沿った座標によって指示される。したがって、100個のビンは、B00からB99によって指示される。
【0059】
各ビンBpqには、そのビンの中に少なくとも部分的に含まれているすべての三角形tnのリストを割り当ててある。たとえば、図13を参照すると、ビンB00は、三角形t5を含むリストを有する。一方、B64は、リストが三角形t7、t8、t9、t10、t15とt16を含むリストを有する。
【0060】
すべてのビンBpqについてその中に含まれる三角形が考慮されると、幾何学的なテクスチャはu、v空間において定義されていると考えられ、処理は上述のメイン処理に戻る。
【0061】
次に、オブジェクトの三角形を選択し、幾何学的テクスチャをその上にマッピングする、ステップS1−6で呼び出されるサブプロシージャについて、図16に示すフローチャートを参照して以下に説明する。
【0062】
まず、ステップS3−2において、オブジェクト三角形が、そのオブジェクト三角形の各頂点に割り当てられたu、v座標を参照することによって、u、v空間にマップされる。そして、ステップS3−4において、u、v空間中の三角形の「解き放たれた範囲(以下、解放範囲(loose extent))」が計算される。この「解放範囲」は、u、v空間の三角形の解放範囲の計算を行うサブプロシージャによって計算され、その詳細は後述する。三角形の「解放範囲」は矩形からなり、その矩形は、整数値を有するその頂点のu、v座標を含むu、v平面の軸上において最も小さい値で境界づけられる矩形である。
【0063】
次に、前述において定義された単位スクエアの幾何学的なテクスチャは、ステップS3−6において、解放範囲の領域の上で繰り返される。幾何学的なテクスチャのこれらの繰り返しは、繰り返しブロックとして以下で知られている。解放範囲の座標が整数値であり、各繰り返しブロックが単位スクエアであるから、繰り返しブロックの全体の数は解放範囲内にフィットすることになる。解放範囲が計算上得るのにコストがかからないので、幾何学的なテクスチャをオブジェクト三角形に適用する場合に、考慮すべきu、v空間中の領域を制限することに対して、それは有用なツールである。
【0064】
その後、処理はループに入る。このループにより、各繰り返しブロックが順番に考慮されることになる。ブロックは、まずステップS3−8によって、考慮のために選択される。考慮中のブロックは、4つのコーナーを有する。それらコーナーのそれぞれは、幾何学的なテクスチャの頂点であり、頂点Vmのリストにおいて定義される。前に述べたように、アクセスの容易さのためにリストVmの最上部にこれらの頂点を配置することが、本処理にとって都合が良い。
【0065】
幾何学的なテクスチャの頂点のすべては、それと関連したFLAGSフィールド内にVSITEDフラグを有する。これらのフラグは、後の処理への事前のステップであるステップS3−9においてリセット状態に初期化される。その後、幾何学的なテクスチャの4つの識別された頂点が選択される。そして、それらの頂点の各VISITETDフラグは、ステップS3−10においてセットされ、幾何学的なテクスチャの頂点が考慮済みとなったことを示す。それは、CLIPフラグ(後に説明する)または他のデータの重複した計算を防ぐのに有用、かつ効率的方法である。例えば、頂点が2回参照される場合、VISITEDフラグがセットされているなら、そのCLIPフラグを再計算する必要はない。
【0066】
ステップS3−11では、各コーナーについてそれらがオブジェクト三角形からクリップされていない頂点を有し、このためレンダリングを必要とするかどうかを確認するために、後に説明するCLIPフラグが計算される。それらがクリップされていない場合、それらは、レンダリング・パイプライン50に出力される。
【0067】
これらのコーナーは前述のように頂点Vmのリストの最上部において現われるべきであるが、これらコーナーの選択に続いて、u、v空間におけるオブジェクト三角形とブロックとのオーバーラップが確認される。幾何学的なテクスチャは、ステップS3−12で呼び出されたサブプロシージャ「繰り返しブロックとオブジェクト三角形との間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる処理」によって、オーバーラップする部分(もしあるなら)でオブジェクト三角形に重ねる。そのサブプロシージャについては、後述する。
【0068】
幾何学的なテクスチャを重ねる場合において、扱われなくてはならなくなる異なる状況を、図29、図31および図33を用いて説明する。
【0069】
図29において、オブジェクト三角形72aは幾何学的なテクスチャの複数の繰り返しブロック90をカバーするために示される。それらの繰り返しブロック90aの1つは、オブジェクト三角形72a内に完全に囲まれているように示される。したがって、幾何学的なテクスチャ全体は、オブジェクト三角形のその部分の上に重ねることができる。他の繰り返しブロック90bは、オブジェクト三角形72aの1つのエッジと重なっている。その場合、幾何学的なテクスチャは、適切な形にクリップされる必要がある。
【0070】
図31では、オブジェクト三角形72aは、幾何学的なテクスチャの単一の繰り返しブロック90によって囲まれている。その場合、幾何学的なテクスチャのその1つの繰り返しブロック90だけが考慮される必要があり、その繰り返しブロック90は、オブジェクト三角形72aの形にクリップされる必要がある。
【0071】
図33は、オブジェクト三角形72aの他のスケーリングを示し、幾何学的なテクスチャの繰り返しブロック90においては、その中に存在するオブジェクト三角形72aの頂点がなく、繰り返しブロック90のコーナーの頂点のいずれもオブジェクト三角形72aの中に入らない。このような特別なケースについては、図18を参照して後述する。
【0072】
図16に戻り、ステップS3−14において、サブプロシージャは、さらに考慮すべき繰り返しブロック90が残っているかを調査する。他のブ考慮すべきロックが残っている場合、サブプロシージャは、ステップS3−8に処理を戻し、上記と同様の処理を繰り返す。
【0073】
繰り返しブロック90のすべてが考慮されると、「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」サブプロシージャを終え、処理をメイン手順に戻す。
【0074】
次に、ステップS3−4で呼び出されるサブプロシージャ「u、v空間における三角形の解放範囲の計算」について、図17を参照して以下に説明する。
【0075】
まず、ステップS4−2とS4−4では、u、v空間でのオブジェクト三角形72aの3つの頂点の座標が考慮され、それらの3つのu座標と3つのv座標の最小値uminとvminが、選択される。
【0076】
uminとvminの選択に続いて、ステップS4−6は、|umin|と|vmin|を見いだす。ここで、|umin|と|vmin|は、最も近くの整数に切り下げられたuminとvmin値として定義される。
【0077】
次に、ステップS4−8とS4−10では、オブジェクト三角形の3つのu座標と3つのv座標が考慮され、それぞれu座標とv座標からの最大値であるumaxとvmaxが見いだされる。その後、ステップS4−12では、最も近くの整数に切り下げられたumaxとvmaxの値である|umax|と|vmax|を見いだす。
【0078】
そして、ステップS4−14において、u、v空間での三角形の解放範囲は、次のように定義された範囲内にあると定義される。
【0079】
|umin|≦u≦|umax|
|vmin|≦v≦|vmax|
解放範囲が定義されると、サブプロシージャは、「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」ためのサブプロシージャに戻る。
【0080】
次に、「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」サブプロシージャにおけるステップS3−12の処理によって呼び出される、「繰り返しブロックとオブジェクト三角形の間のオーバーラップのチェックと、幾何学的テクスチャの重ね合わせ」のサブプロシージャについて、図18を参照して、以下に説明する。
【0081】
まず、ステップS5−2では、考慮中の繰り返しブロックの全体がオブジェクト三角形の外側にあるかどうかについて調査がなされる。その調査、すなわち、「ブロックの全体がオブジェクト三角形の外側に存在するか否か」を調査するサブプロシージャは、図19を参照して以下で説明する。そのサブプロシージャは、ブロックが確かに、完全にオブジェクト三角形の外側にある(YESの値によって表される)、またはブロックがオブジェクト三角形の外側に完全にあるかどうかを確認できない(NOT SUREの値によって表される)という結果を返すことができる。YESの値が返された場合、ステップS5−4へ進み、繰り返しブロックがリジェクトされるようにマークされる。その後、「繰り返しブロックとオブジェクト三角形との間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる処理」から、その呼び出しもとの手順に戻る。
【0082】
ステップS5−2において呼び出されたサブプロシージャ、「ブロックの全体が、完全にオブジェクト三角形の外側に存在するか否かのチェック」が、NOTSUREの値を返す場合、すなわち、ブロックの全体がオブジェクト三角形の外側にあるかどうかを確認できない場合は、処理をステップS5−6に進めて、さらに、「ブロックの全体がオブジェクト三角形の内部に存在するか否かをチェックする」サブプロシージャを呼び出し、ブロックの全体がオブジェクト三角形の内側にあるかどうかを確認する。この処理の場合、はっきりした肯定的な結果(YESの値によって表される)、またははっきりした否定的な結果(NOの値によって表される)が得られる。
【0083】
YESの値が返された場合、すなわち、ブロックの全体がオブジェクト三角形の内側にある場合は、ステップS5−8へ進み、受け入れられたとして当該繰り返しブロックがマークされる。そして、ステップS5−10で、「幾何学的テクスチャを重ね合わせる」サブプロシージャが呼び出される。このサブプロシージャについては後で説明する。そして、このサブプロシージャが完了すると、「繰り返しブロックとオブジェクト三角形との間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる」ためのサブプロシージャは、前述の「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」処理に戻る。
【0084】
上述の「ブロックの全体がオブジェクト三角形の内側に存在するか否かをチェック」するサブプロシージャが、NOの値を返す場合、すなわち、ブロックが、オブジェクト三角形の内側に完全にはない場合、処理はステップS5−12に進む。ステップS5−12では、「そのブロックのコーナーがオブジェクト三角形の内部に存在するか否かをチェック」するサブプロシージャが呼び出され、ブロックのコーナーがオブジェクト三角形の内側にあるかどうかを調査する。このサブプロシージャについては後述する。ここで、このサブプロシージャは、ブロックのコーナーがオブジェクト三角形の内側にある(YESの値によって表される)、またはブロックのコーナーがオブジェクト三角形の内側にない(NOの値によって表される)という結果を返すことができる。
【0085】
ステップS5−12のサブプロシージャがYESの値を返す場合、処理はステップS5−14へ進み、「当該コーナーにおける幾何学的テクスチャの三角形を検出する」サブプロシージャが呼び出される。このサブプロシージャは、オブジェクト三角形の内側にあると識別された幾何学的なテクスチャの繰り返しブロックのコーナーをその頂点の1つとして有する幾何学的なテクスチャの三角形を識別する。サブプロシージャがこの三角形の識別を返すと、その三角形は、ステップS5−16においてスターティング三角形(STARTING TRIANGLE)に指定される。
【0086】
一方、「そのブロックのコーナーがオブジェクト三角形の内部に存在するか否かをチェック」するサブプロシージャがNOの値を返す場合はステップS5−18に進み、さらに、「オブジェクト三角形の頂点がブロックの内側に存在するかをチェック」するサブプロシージャが呼び出される。「オブジェクト三角形の頂点がブロックの内側に存在するかをチェック」するサブプロシージャは、頂点がブロックの内側にある(YESの値によって表される)、または頂点がブロックの内側にない(NOの値によって表される)という結果を返すことができる。
【0087】
このサブプロシージャがYESの値を返す場合、処理はステップS5−20に進む。ステップS5−20において、「その中にオブジェクト三角形の頂点が存在する幾何学的テクスチャの三角形を見出す」ためのサブプロシージャが呼び出される。このサブプロシージャについては、後でより詳細に説明するが、その機能は、幾何学的なテクスチャの三角形のリストに含まれている三角形の中から、オブジェクト三角形の識別された頂点がその中に存在する三角形を識別することである。幾何学的なテクスチャの三角形が識別されると、ステップS5−22において、その三角形は、スターティング三角形(STARTING TRIANGLE)に指定される。
【0088】
一方、「オブジェクト三角形の頂点がブロックの内側に存在するかをチェック」するサブプロシージャがNOの値を返す場合、すなわち、オブジェクト三角形の頂点がブロックの内側にない場合は、さらなるチェックがなされなければならない。
【0089】
それまでの調査の結果が、この段階においてはまだ決定的でないという点は強調すべきである。後に実証するが、図33で説明した状態がプロシージャにおけるこの段階に導くので、ブロックがオブジェクト三角形の外側にあると結論することができない。
【0090】
ステップS5−24において、サブ手順「スターティング三角形の検索のためにビンを走査する」サブプロシージャが呼び出される。このサブプロシージャの結果は、幾何学的なテクスチャの適切なスターティング三角形がオブジェクト三角形内に存在するか、ブロックの全体がオブジェクト三角形の外側にあるためにリジェクトされるようにマークされるかのいずれかである。ステップS5−26において、ブロックが、リジェクトされるようにマークされているどうか(YESの値によって表される)について、問い合わせがなされる。ブロックが、リジェクトされるようにマークされている場合、全部の手順は、前述されたプロシージャに戻り、新しいブロックについてチェックされる必要がある。ブロックが、リジェクトされるようにマークされていない(NOの値によって表される)場合、「スターティング三角形の検索のためにビンを走査する」サブプロシージャは、ある三角形をスターティング三角形として識別したと結論することができる。
【0091】
しかしながら、ステップS5−16、S5−22またはS5−24の処理の結果としてスターティング三角形が識別された場合、「ブロックをオブジェクト三角形にクリップし、幾何学的テクスチャを重ね合わせる」ためのサブプロシージャがステップS5−28において呼び出される。そしてこのサブプロシージャが終了して本ルーチンに戻ると、すぐに、「繰り返しブロックとオブジェクト三角形の間のオーバーラップをチェックし幾何学的テクスチャを重ね合わせる」処理を行なうサブプロシージャからその呼び出しもとのルーチンに戻る。
【0092】
次に、図19を参照して、図18のステップS5−2において呼び出される、「ブロックの全体がオブジェクト三角形の外に存在するか否か」を判定する条件サブプロシージャについて説明する。
【0093】
このプロシージャにおいて、まずで、ブロックの個々のコーナーに対応するCLIPフラグF1、F2、F3、F4をチェックする。CLIPフラグの定義について、図35を参照して説明する。
【0094】
各頂点のフラグのフィールド内には、以下で、CLIPフラグと呼ばれる3つのビットが、オブジェクト三角形を定義する3つのラインのいずれの側に頂点があるか示すために確保されている。各ビットは、頂点がオブジェクト三角形を含む対応するラインの内側にある場合には0の値を与えられ、ラインの他の側にある場合には1の値を与えられる。たとえば、図35では、CLIPフラグは、オブジェクト三角形72aを定義する3つのラインによって画定される領域に関連して示される。三角形内の領域が、値000を有するCLIPフラグと一致することがわかる。
【0095】
そのようにして、オブジェクト三角形72aに関係のあるポイントの位置は、容易に確認できる。
【0096】
繰り返しブロックのコーナーについてのCLIPフラグが得られると、ステップS6−4は、クリップ・フラグのブール積、
A=F1・F2・F3・F4
を計算する。
【0097】
次に、ステップS6−6において、ブール積Aが000と等しいかどうかチェックする。Aが000と等しい場合は、ステップS6−8に記述しているように、ブロックは少なくとも部分的に三角形の内側にある。したがって、本プロシージャは「NOT SURE」の値を戻す。しかしながら、Aが、000と等しくない場合は、ステップS6−10に記述しているように、ブロックは三角形の外側に完全になければならない。Aがゼロでない値を有するためには、ブロックのコーナーのすべてが三角形を定義するラインの1つの外側になければならないからである。そしてそのような場合、本プロシージャは、「YES」の結果を戻す。
【0098】
次に、図18のステップS5−6において呼び出される、「ブロックの全体がオブジェクト三角形の内側に存在するか否か」を判断する条件プロシージャについて、図20を参照して説明する。この場合、最初のステップS7−2において、CLIPフラグのブールの和、すなわち、
B=F1+F2+F3+F4
が計算される。
【0099】
ステップS7−4において、プロシージャは、Bが000と等しいかどうかについてチェックする。Bが000である場合、当該ブロックの全体が三角形の内側に存在することを意味する。それは、考慮中のブロックのコーナーのすべてが、CLIPフラグの値000を有する領域にある場合にのみ、Bが000に等しくなるからである。そして、そのような、CLIPフラグの値000を有する領域は、三角形の内側の領域である。したがって、この場合、図20のステップS7−6に記述されているように当該ブロックの全体が三角形の内側に存在すると判断され、本プロシージャは「YES」の値を戻す。一方、Bが000と等しくない場合は、ステップS7−8に記述されているように、ブロックの全体が三角形の内側に存在することはない。このような場合、本プロシージャは「NO」の値を戻す。
【0100】
続いて、図18のステップS5−10において呼び出される、「幾何学的テクスチャの重ね合わせ」のプロシージャについて図21を参照して説明する。
【0101】
まず、ステップS8−2において、幾何学的なテクスチャの頂点が選択される。参照中のブロックの全体がオブジェクト三角形の内側にあるので、いずれの頂点も第1の例において考慮することができる。よって、リストにおける第1の頂点を選択することが最も都合が良い。その後、頂点は連続的に考慮することができる。
【0102】
次に、ステップS8−3において、VISITEDフラグがセットされているかどうかをチェックする。VISITDフラグがセットされている場合、x、y、z空間の頂点の座標はすでに計算されている。一方、VISITEDフラグがセットされていない場合、この「幾何学的テクスチャを重ね合わせる」プロシージャは、ステップS8−4に処理を進めてVISITEDフラグをセットし、ステップS8−5で「x、y、z空間における頂点の座標を計算する」ためのサブプロシージャを呼び出す。このサブプロシージャは、u、v空間での頂点の定義を、オブジェクト三角形上のx、y、z空間に変換し、x、y、z空間でのそれらの座標にその頂点についての置換Dを重ねる。
【0103】
頂点のx、y、z座標が、ステップS8−5で識別されるか、または、頂点がすでに処理された(VISITEDフラグがオンしている)として検索されると、処理はステップS8−6へ進む。ステップS8−6では、それらをメモリに記憶されている「頂点リスト」に送り、そのリストからインデックスを得る。インデックスは、ステップS8−8で頂点オブジェクトVのインデックス(I)フィールドに記憶される。考慮されるべき残りの頂点が存在するか否かをステップS8−10でチェックし、そうである場合ステップS8−2に処理を戻すことによって、幾何学的なテクスチャの各頂点について同じように処理される。頂点のすべてに関して処理を終えると、ステップS8−12において、頂点は、レンダリング・パイプライン50に送られる。頂点のインデックスは、レンダリング・パイプライン50によって返され、これらは、ステップS8−14によって、図7で説明した構造で保持された頂点のリファレンスの代わりに三角形データにロードされる。次に、ステップS8−16において、レンダリング・パイプライン50に修正された三角形を送り、その後サブプロシージャは呼び出しもとのプロシージャに戻る。三角形は、それらが独自の幾何学的なテクスチャの頂点ではなく、レンダリングされた頂点を参照するために、修正される。
【0104】
次に、ステップS8−5において呼び出される、「x、y、z空間における頂点の座標の計算」を行なうプロシージャについて、図22を参照して以下に説明する。
【0105】
まず、ステップS9−2において、頂点のx、y、z座標が、オブジェクト三角形の頂点座標からの補間によって計算される。次に、ステップS9−4において、頂点におけるノーマルは、オブジェクト三角形の頂点において定義されたノーマルからの補間によって計算される。この補間は、オブジェクト三角形の頂点間のノーマルがはなはだしく変化することがありそうもないことから、正確である必要がない。したがって、ノーマルの補間によってもたらされる、単一個体からのノーマルの大きさにおけるいかなる縮小も、無視することができる。最終的に、ステップS9−6において、頂点Viは、x、y、z空間における新しい頂点の位置を得るために、頂点と関係した距離Diによって、x、y、z空間において補間されたノーマルの方向に置換えられる。その後、プロシージャは、戻る。
【0106】
次に、図18のステップS5−12において呼び出される、「ブロックのコーナーがオブジェクト三角形の内側に存在するか否か」を判断する条件サブプロシージャについて、図23を参照して説明する。まず、ステップS10−2において、繰り返しブロックの第1のコーナーが選択される。その第1のコーナーは、幾何学的なテクスチャ・データ構造の性質によって、幾何学的なテクスチャ90に関連する頂点のリスト内の第1の位置にリストされる。次いで、ステップS10−4において、そのコーナーがオブジェクト三角形の中に存在するか否かを調査する。コーナーがオブジェクト三角形の中に存在する場合、本プロシージャは、「YES」の値をもって戻る。
【0107】
そうでない場合は、ステップS10−6に進み、繰り返しブロックのいずれかのコーナーが、まだチェックすべき状態にある(未チェックの状態にある)かどうか調べる。チェックすべき状態にあるコーナーが存在しない場合、本プロシージャは「NO」の値で戻る。しかしながら、依然としてチェックすべき他のコーナーが存在する場合、処理はステップS10−8に進み、ブロックの次のコーナーが選択される。こうして、本プロシージャは、チェックすべきコーナーがなくなるか、または、オブジェクト三角形の内側にあるコーナーが見いだされるまで、ステップS10−4、S10−6、S10−8が繰り返される。
【0108】
次に、図24を参照して、図18のステップS5−14において呼び出される「当該コーナーにおける幾何学的テクスチャの三角形を見出す」ためのプロシージャについて説明する。このプロシージャは、繰り返しブロックのそのコーナーにおいて、幾何学的なテクスチャのビン88を走査するステップS11−2から開始される。ビンは、当該ビンに対応する領域と少なくとも部分的に一致する三角形のリストを含む。ステップS11−4において、コーナーを頂点として用いる、ビンにリストされた三角形が見いだされる。その三角形は、ステップS11−6で処理されたことを示すべくマーク(VISITED)される。その後、プロシージャは呼び出しもとのプロシージャへ戻る。
【0109】
次に、「オブジェクト三角形の頂点がブロック内に存在するか否か」を判断するための条件プロシージャについて図25を参照して説明する。本プロシージャは、まず、ステップS12−2においてオブジェクト三角形の第1の頂点を選択することから始まる。その後、ステップS12−4において、その頂点が繰り返しブロックの中に存在するかどうかについて調査する。頂点が繰り返しブロックの中に存在する場合、プロシージャは「YES」の値で戻る。そうでない場合、ステップS12−6において、オブジェクト三角形のいずれかの頂点において、未チェックのものがあるかを確認する。未チェックのものが存在しない場合、本プロシージャは「NO」の値で戻ることになる。しかしながら、チェックすべき頂点(未チェックの頂点)が存在する場合、ステップS12−8において、新しい次の頂点が考慮のために選択され、ステップS12−4に戻って上記の処理を繰り返す。
【0110】
以上のようにして、プロシージャは、チェックすべき頂点がなくなるか、またはブロックの内側にあるオブジェクト三角形の頂点が見いだされるまで、継続される。
【0111】
次に、図26を参照して、「その中にオブジェクト三角形の頂点が存在する幾何学的テクスチャの三角形を見出す」ためのサブプロシージャを説明する。このサブプロシージャは、図18のステップS5−20において呼び出される。サブプロシージャは、ステップS13−2から開始され、まず、頂点が含まれているビンBijを識別する。そのビンは、当該ビンに対応する領域と少なくとも部分的に一致する幾何学的なテクスチャの三角形のリストを含み、ステップS13−4においては、そのビンにリストされている三角形を選択する。
【0112】
ステップS13−8では、考慮中のオブジェクト三角形の頂点が選択された三角形の内側にあるかどうかについて調査される。オブジェクト三角形の頂点が選択された三角形の内側にある場合、三角形は検出されたとして、その三角形のためのVISITEDフラグがステップS13−6でセットされ、本プロシージャは呼び出しもとのプロシージャに戻る。そうでない場合、処理はステップS13−10に進み、次の三角形がビンから選択され、再びステップS13−8を実行する。最終的に、オブジェクト三角形の頂点を含むビンにリストされた三角形が、このプロシージャによって見いだされる。
【0113】
次に、図18のステップS5−24において呼び出された、「スターティング三角形のために、ビンを通してスキャンする」ためのプロシージャについて図27を参照して説明する。ステップS14−2で、繰り返しブロックの第1のビンが考慮のために選択される。ここでは、第1のビンとしてビンB00を選択するが、2次元の配列から第1の項目を選択する他の方法によって考慮されてもよい。
【0114】
次に、ステップS14−4そにおいて、そのビンに関してリストされている第1の三角形が考慮のために選択される。ステップS14−8で、その三角形がオブジェクト三角形と重なるかどうかについて、調査がなされる。その三角形がオブジェクト三角形と重なる場合、その三角形は、スターティング三角形としてステップS14−6で指定される。その三角形は、ステップS14−10で、処理済としてマークされる。そして、プロシージャは、呼び出しもとのプロシージャへ戻る。
【0115】
しかしながら、ステップS14−8の調査の結果が否定的である場合、ステップS14−12で、まだ訪問されていない他の三角形がそのビンにリストされているかどうかについて、さらにチェックする。訪問されていない三角形が存在する場合、ビンからの新しい三角形がステップS14−14で選択され、手順は、ステップS14−8以降の処理を繰り返す。そのビンで、他の三角形が残っていない場合は、ステップS14−16へ進み、考慮すべき他のビンが存在するかどうかについて、さらに問い合わせがなされる。考慮すべき他のビンが存在する場合、ステップS14−18で新たなビンが選択され、プロシージャはステップS14−4以降を繰り返す。しかしながら、それ以上考慮すべきビンがなく、オブジェクト三角形に重なる三角形も見いだされなかった場合は、ステップS14−20に示されるように、ブロックの全体が三角形の外側にある。従って、その場合には、そのブロックは、ステップS14−22で、「リジェクトされる」ようにマークされ、プロシージャは呼び出しもとのプロシージャに戻る。
【0116】
次に、図28を参照して、「ブロックをオブジェクト三角形にクリップし、幾何学的テクスチャを重ね合わせる」ためのサブプロシージャを説明する。このサブプロシージャは、図18で説明したように、「繰り返しブロックとオブジェクト三角形の間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる」プロシージャにおけるステップS5−28によって呼び出される。本プロシージャによれば、まず、ステップS15−2で、前に出力されたスターティング三角形を選択する。
【0117】
そして、ステップS15−4において、スターティング三角形として識別された三角形の3つの頂点すべてが考慮される。ステップS15−6では、3つの頂点すべてが、オブジェクト三角形の内側にあるかどうかについてチェックする。前に説明したように、このチェックは、CLIPフラグを用いて実行することができる。これらは、計算する必要があるかもしれないし、あるいは、この繰り返しブロックについて頂点が以前に処理されたなら、それらは、頂点についてキャッシュされているかもしれない。
【0118】
3つの頂点すべてが、オブジェクト三角形の内側にある場合、三角形は、ステップS15−8においてレンダリング・パイプラインに出力される。もしそうでなければ、ステップS15−10で、三角形はオブジェクト三角形の形にクリップされ、クリップされた形がレンダリング・パイプラインに出力される。この場合、処理はステップS15−12へ進み、幾何学的なテクスチャの三角形の3つの頂点のうちの2つの頂点とそれによって定義されるエッジとが、オブジェクト三角形の外側にあるかどうかについて調査される。この調査の結果が「真」である場合は、幾何学的なテクスチャ内の上記三角形に隣接する三角形は、それがオブジェクト三角形の内側にないことが保証される。したがって、処理をステップS15−14に進め、「クリップアウト」される。クリップアウトは、その三角形がそれ以降考慮されないようにVISITフラグをセットすることによって実行される。
【0119】
三角形またはクリップされた形が、レンダリング・パイプラインに渡されると、ステップS15−16では、以前にクリップアウトされておらず、処理済にもなっていない、考慮中のその三角形に隣接するいずれかの三角形が存在するかどうかについて、調査する。隣接する三角形が考慮されなければならない場合、それは、ステップS15−18で考慮のために選択され、ステップS15−4以降の処理を繰り返す。隣接する三角形が残っていない場合は、ステップS15−20で、考慮中の三角形が考慮される第1の三角形であるかどうかについて、チェックがなされる。それが第1の三角形であり、サブプロシージャが終了したと考えられる場合は、呼び出しもとのプロシージャに戻る。さもなければ、サブプロシージャは、ステップS15−22に進み、以前に考慮された三角形の考慮に戻る。三角形がメモリに記憶されているリンクされたリストによって考慮されるレコードの順番を保持することができる。以前に考慮された三角形は、ステップS15−16で、それから再び考慮され、以前にクリップアウトされないで、処理もされない、隣接するいずれかの三角形が、残っているかどうかを確認する。
【0120】
オブジェクト三角形に重なる幾何学的なテクスチャのすべての三角形が見いだされると、その後、プロシージャが、三角形の考慮の順番を含むリンクされたリスト中のより早い三角形を引き続いて考慮することがわかる。結局、最初に考慮した三角形に進み、サブプロシージャは戻る。3つの例が、「ブロックをオブジェクト三角形にクリップし、幾何学的なテクスチャを重ね合わせる」ためのプロシージャのオペレーションから与えられる。
【0121】
まず、図29で示された繰り返しブロック90bが、図30でより詳細に示される。図18で記述された手順は、その繰り返しブロックに関連して記述される。最初に、ステップS5−2が実行され、すべてのコーナーが三角形の1つの側にあるわけではないので、ブロックのコーナーについてのCLIPフラグのブール積がゼロになることがわかる。したがって、NOT SUREの値が返される。
【0122】
ステップS5−6では、2つのコーナーが三角形の外側にあるので、ブール和が、ゼロでないことがわかる。したがって、そのステップではNOの結果が返され、ステップS5−12が実行される。図23の処理により、V1は、オブジェクト三角形72の中にあることがわかる。それから、ステップS5−14と図24の処理により、そのコーナーにおいてビンB09は、コーナーV1を頂点として用いる三角形t1(図13参照)を識別するため、ステップS11−2で走査される。その三角形t1は、そのVISITフラグをセットすることによって、処理されたとして、ステップS11−6でマークされ、ステップS5−16で、三角形t1は、スターティング三角形に指定される。
【0123】
それから、ステップS5−28と図28の処理により、三角形t1の3つの頂点がステップS15−4で考慮され、すべての頂点がステップS15−6でオブジェクト三角形の内側にあることがわかる。したがって、三角形t1の全体が、オブジェクト三角形72の内側に存在する。三角形t1は、ステップS15−8でレンダリング・パイプライン50に出力され、以前にクリップアウトされておらず、処理もされていない、隣接する三角形t2が見出される。
【0124】
したがって、t2に対する処理に進み、ステップS15−18で、そのVISITフラグをセットすることによって、処理されたとしてマークされる。t2は、ステップS15−6で、オブジェクト三角形の内側にすべての3つの頂点を有することも見出され、それに続いて、それは、同じようにステップS15−9でレンダリング・パイプラインに出力される。
【0125】
三角形t3とt4についても、同じように考慮され、同じ結果となる。t4の考慮の後に、処理は、同じくオブジェクト三角形の内側に存在する隣接する三角形t5を見いだし、それはレンダリング・パイプラインに出力される。しかしながら、その三角形t5は、以前にクリップアウトされておらず訪問もされていない隣接する三角形を有していない。また、その三角形は、考慮される第1の三角形ではない。したがって、ステップS15−22で、処理は、以前に考慮された三角形t4に逆戻りする。t4は、それから、いずれか他の隣接する三角形が、前にクリップアウトされておらず、処理もされていないかどうかを確認するために再びチェックされる。そのような三角形としてt6が見いだされ、その頂点が考慮される。
【0126】
t6の頂点の1つは、オブジェクト三角形の外側にある。したがって、t6は、ステップS15−10でオブジェクト三角形によりクリップされなければならない。次に、クリップされた形は、レンダリング・パイプラインに出力される。出力されない三角形t6の部分は、図30においてハッチングで示される。ステップS15−12において、三角形t6の頂点の1つだけが、オブジェクト三角形の外側にあることがわかり、それで、プロシージャは、ステップS15−16に進み、以前にクリップアウトされておらず、処理もされていない、隣接する三角形についてチェックする。
【0127】
三角形t7が見いだされ、そしてそれは同じくオブジェクト三角形の中ですべての3つの頂点を有するわけではない。したがって、その三角形のクリッピングが起こる。この場合、三角形t7は、オブジェクト三角形の外側にある2つの頂点とそれによって定義されたエッジを有する。したがって、そのエッジに沿って隣接する三角形t8は、その全体がオブジェクト三角形の外側に存在することが保証され、ステップS15−14で三角形t8をクリップアウトすることができる。クリップアウトは、その三角形のためにVISITフラグを構成することによって、達成される。また、考慮中のt7で、隣接する三角形t15が見いだされる。この三角形も通常の方法でクリップされる。次に、プロシージャは、三角形t9をクリップアウトする前に、三角形t14、t13、t12、t11およびt10を通って、実行される。
【0128】
それから、三角形t16が考慮され、三角形t16は以前にクリップアウトされず、処理もされていないような、隣接する三角形を有していないことがわかる。この状態は、考慮されたすべての三角形に当てはまり、それで、手順は、再び三角形t1に達するまで、各三角形を通ってカウントバックする。その時点において、プロシージャは戻る。
【0129】
第2の例が、図31と図32に示される。この場合、リファレンスブロック90は、完全にオブジェクト三角形72aを含んでいる。したがって、NOT SUREの結果が、ステップS5−2から得られ、NOの結果が、ステップS5−6から得られる。また、ブロックのコーナーがオブジェクト三角形の中にないので、NOの結果が、ステップS5−12から得られる。
【0130】
しかしながら、オブジェクト三角形の頂点のすべては、ブロック90の中にある。したがって、それらの頂点の1つが、ステップS5−18で見いだされると、オブジェクト三角形のその頂点を含むビンが、ステップS13−2(図26)において見いだされる。この場合、ビンB51が識別される。そのビンB51は、そのリストに三角形t6、t7およびt8を含む。三角形t6が、ステップS13−4で選択される。
【0131】
しかしながら、オブジェクト三角形は、三角形t6の中に頂点を有していない。したがって、三角形t6はリジェクトされ、次いで、ビンB51からt7が選択される。オブジェクト三角形は、三角形t7の中に頂点を有しており、三角形のすべての3つの頂点がステップS15−4で考慮される。その結果、それらの3つの頂点のうちの1つだけが、オブジェクト三角形の内側にあることがわかり、したがってステップS15−10でクリップされる必要がある。さらに、他の2つの頂点によって定義されたエッジがオブジェクト三角形の外側にあるので、そのエッジに沿って隣接する三角形、すなわち三角形t6は、ステップS15−4において、クリップアウトされる。
【0132】
前に説明したように、プロシージャは、三角形t8、t9、t10、t11、t12、t1、t2およびt3に関して繰り返される。三角形t3において、三角形t4が、t3のエッジのうち、オブジェクト三角形の完全に外側にあるエッジに沿って隣接していることから、クリップアウトされることがわかる。プロシージャは、三角形t14、t13、t16およびt15を考慮することによって終わる。ここで、三角形t15に隣接する三角形のすべてが、以前に訪問されているので、プロシージャの終了であることがわかる。したがって、プロシージャは、プロシージャが戻るとき、再び三角形t7に達するまで、前に評価された三角形を通して、カウントバックする。この場合、三角形t5は、唯一t5に隣接する三角形t4が、オブジェクト三角形の外側に完全にあるので、クリップアウトされるから、まったく考慮されないことが強調されべきである。
【0133】
次に、図33と、その繰り返しブロックの詳細を示す図34を参照して、第3の例を検討する。
【0134】
ブロック90に関連して、ブロック90のコーナーは、オブジェクト三角形の中に存在しない。さらに、オブジェクト三角形の頂点もブロックの中に存在しない。したがって、ステップS5−24で、ビンは、オブジェクト三角形に重なる三角形を含む最初のビンが見いだされるまで順番に走査される。ここで、最初に検出されるビンは、ビンB20と識別され、これは三角形t4を含む。t4は、スターティング三角形に指定され、そしてt4の3つの頂点すべてが、ステップS15−4で考慮される。その結果、それらの頂点の1つが、オブジェクト三角形の中にあることが見いだされる。したがって、t4はクリップされ、クリップされた形は、レンダリング・パイプラインに出力される。1つの頂点だけが、オブジェクト三角形の中にあるので、他の2つの頂点によって定義されたエッジ(辺)が考慮され、その全体がオブジェクト三角形の外側に存在するエッジが見出される。したがって、そのエッジに沿って隣接する三角形、すなわち三角形t5は、ステップS15−4でクリップアウトされる。その後、三角形t4、t3、t2、t1、t12、t11、t10、t9、t8、t7、およびt6が、前に説明した処理手順で考慮される。しかしながら、t6が考慮される時点で、その隣接する三角形、すなわち三角形t4とt7はすでに処理されていることがわかる。したがって、考慮は、前に考慮された三角形、すなわち、三角形t7に戻される。その三角形は、以前にクリップアウトされておらず、かつ訪問されていない他の隣接する三角形、すなわち三角形t15を有する。その後、三角形t14、t13およびt16が考慮され、そしてレンダリング・パイプラインに出力される。t16が考慮される時点で、三角形t16が以前にクリップアウトされておらず、処理されていない隣接する三角形を有していないことがわかる。しかしながら、この場合、以前に考慮された三角形への逆戻りが、最初に考慮された三角形(スターティング三角形)、すなわち三角形t4に導くことになり、これによってプロシージャは戻る。
【0135】
上記で説明した3つの例によって、図18で説明した手順が、三角形のオブジェクトの上に正方形の繰り返しブロックをかぶせることによって遭遇し得るすべての状況を論ずることを示すことができる。
【0136】
上記の記述された幾何学的なテクスチャの装置と方法は、見る人に、オブジェクトの上のテクスチャ・ビット・マップだけではなく、テクスチャ・ビット・マップを向上する実際の幾何学的なテクスチャも含むレンダリングされたイメージを提供する。
【0137】
好都合なことに、幾何学的なテクスチャは、オブジェクトが所定の閾値よりも近い距離から見られる場合のみ、そこに存在するオブジェクトにマップすることができた。その閾値の距離よりも離れている場合、必要とされる詳細のレベルが、レンダリングされるオブジェクトにさらに多角形を組み込むことを正当化しないと想定され、その結果、幾何学的なテクスチャは除去できる。換言すれば、視点がオブジェクトに向かって動くのにつれて、オブジェクトに与えられる詳細さのレベルが増大する。
【0138】
上記の与えられた例は、オブジェクト三角形の存在している形に幾何学的なテクスチャの個別の三角形をクリップする機能を最も明らかに示すものである。その点で、存在しているオブジェクト三角形に幾何学的なテクスチャの形を関連づける試みがなかった。しかしながら、本発明は、幾何学的なテクスチャが形を有し、多角形を含むように、有効に適用することができ、そしてそれはテクスチャが使用中に適用すべきである基礎をなしているオブジェクト多角形またはオブジェクトの形状と関連する。
【0139】
ある状況では、小数の大きい多角形によってオブジェクトを表すことは都合が良く、その上に、1つまたは複数のテクスチャが、重なる。多角形の一部が表れるのを防ぐために、1つまたは複数のテクスチャは、マスクを提供することができる。テクスチャ・マスクは、通常、それが適用されるテクスチャと同じ解像度のマップであり、そのテクスチャ・ピクセル(以下で「テクセルである」と呼ばれる)ONまたはOFFのいずれかに切り換えられる。OFFに切り換えられたマスクのテクセルは、テクスチャでの対応するテクセルが使われるのを防ぐ。
【0140】
図36は、その方法で構成されたオブジェクトの例を説明する。また、これに続く図は、オブジェクトの外観全体を共に定義する基礎をなしている部品を説明する。図37は、図36で説明した柵100の部分において、表すべき表面104を共に定義する隣接する三角形102を示す。
【0141】
三角形102は、図38で説明したように、前にテクスチャ・マップに記述されたように、u、v空間でマップする。テクスチャ・マップの熟練したデザインによって、フェンス・オブジェクトは、テクスチャ・マップの繰り返しから構成され、それによって、オブジェクト全体の記憶のために必要とされるメモリ空間の量を減らす。
【0142】
固体的なフェンシング部分100の一部ではないテクスチャの部分が表現されないことを保証するために、テクスチャ・マスキング・マップ108が、テクスチャ・マップ106に適用される。テクスチャ・マスキング・マップ108は、テクスチャ・マップ106と同じ解像度を有する。
【0143】
テクスチャ・マスキング・マップ108の部分110について、図40でさらに詳しく説明する。これは、テクスチャ・マップのテクセルの解像度が、近づいてオブジェクトを見るときに、その観察者がぎざぎざのエッジ112を認識するのを防ぐのに十分ではないことを示す。これは、審美的に好ましくない。
【0144】
上記のように、オブジェクトと観察者との間の距離が、詳細レベルの閾値より低い場合、幾何学的なテクスチャが、テクスチャ・マップ106に適用される。テクスチャ・マップ106に適用される幾何学的なテクスチャ114は、図41と図42に示される。
【0145】
マスク・テクスチャと共に幾何学的なテクスチャを使用することで起こり得る潜在的な2つの問題は、特にテクスチャが近い距離から見られる場合、テクスチャ・マスクの解像度の限界が目に見えてしまうことと、幾何学的なテクスチャの幾何学的模様によってクリップされてしまうかもしれないということである。同じく、テクスチャの全体的に覆われた部分によってカバーされたいくらかの幾何学的模様がレンダリング・パイプラインになお出力されることになり、これは非能率的である。
【0146】
したがって、幾何学的なテクスチャは、さらに「ON」、または「OFF」としてフラグを付けられることができる三角形を含む。「OFF」のフラグを付けられた三角形は、装置によって、描画の必要がないと認識される。この特徴は、この場合に有用である。なぜなら、描かれるべき三角形がテクスチャ・マスクのエッジから、少し離れて置かれ、それによって、テクスチャ・マスク110の限定された解像度によって生成されたぎざぎざのエッジ112を除去するように、幾何学的なテクスチャを設計できることを意味するからである。図41と42での影をつけた三角形は、「OFF」として適用されて、それで描かれない。これらは、テクスチャ・マスク110の上のさらなるマスクとして働き、ぎざぎざのエッジ112を取り去る。
【0147】
この構成の利点は、「OFF」というマークを付けられている三角形が、レンダリング・パイプラインに出力する必要がないことである。これは、幾何学的に強化されたオブジェクトのレンダリングをより効率的にする。
【0148】
このようにして使われた幾何学的なテクスチャの効果は、比較的簡単な3次元のプリミティブから生み出されたオブジェクトの個体性に関して、見る人に提供され得るイメージの品質を向上することである。
【0149】
図43と44は、幾何学的なテクスチャ三角形と関係した、非描画(UNDRAWN)/描画(DRAWN)フラグを考慮するべく、図21と図28をそれぞれ修正したバージョンのフローチャートである。したがって、図示されるステップの多くは、図21と図28に関連して記述されたものと同じである。しかしながら、図43では、ステップS16−16では、すべての三角形をレンダリング・パイプラインに送るステップS8−16とは異なり、注目する三角形についての非描画/描画フラグをチェックすることをさらに含み、そのフラグが「描画」を表す場合にのみ、当該三角形を出力する。
【0150】
また、図44A,Bでは、ステップS17−8で三角形をレンダリング・パイプラインに出力する前に、またはステップS17−10で三角形をクリップして出力する前に、注目されている三角形が描かれるべきであるかどうかを確認するべく、ステップS17−7またはステップS17−9で、それぞれチェックがなされる。描画すべきものである場合、方法は、ステップS17−8またはステップS17−10に処理を移す。そうでない場合、すなわち、「非描画」にマークを付けられている場合、プロセスは、三角形を出力するステップS17−8、S17−10を迂回して、次のステップS17−16またはS17−12を続ける。
【0151】
本発明は、本明細中に説明したON/OFFフラグによるマスキングの使用を組み込むか否かにかかわらず、注目のオブジェクトが見られている距離に依存して、起伏(relief)の特徴の異なる詳細さのレベルでオブジェクトを表すことができる手段を提供する。そのようにして、長い距離からは目に見えない特徴の不要なレンダリングを行なうことなしに、必要に応じて視覚における高いレベルの写実性を達成することができる。
【0152】
図45は、図36で説明したオブジェクト100の上に、図41と図42で説明した幾何学的なテクスチャを重ねた結果を説明する図である。コンピュータは、これらが、追加の幾何学的模様を加えることを正当化するのに十分近いと思われるように、オブジェクトの三角形102の最も近い対の上に幾何学的なテクスチャを重ねた。図45は、重ねられた追加の幾何学的模様の堅実さを説明するために、いくつかの基礎をなしているワイヤ・フレームの幾何学的模様を示すが、その幾何学的模様の追加が、オブジェクトの外観全体を向上させ、特に、気づかれている関係での欠陥についての見る人の位置に十分に近いオブジェクトのそれらの部分を向上させる。
【0153】
なお、本発明は、複数の機器(例えばホストコンピュータ,インタフェイス機器,リーダ,プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機,ファクシミリ装置など)に適用してもよい。
【0154】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【0155】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0156】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
【0157】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0158】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【図1】本発明の一実施形態に従って操作されるコンピュータの部品を示す略図である。
【図2】図1に示した実施形態に従ったレンダリングのパイプラインの部品を示す略図である。
【図3】図1に示した実施形態に従った幾何学的なテクスチャが適用すべきオブジェクトの斜視図である。
【図4】幾何学的なテクスチャのためにデータ構造を組込み、図3に示したオブジェクトを定義するデータ構造を示す略図である。
【図5】図4に示した幾何学的なテクスチャのデータ構造の略図である。
【図6】図5に示したデータ構造内の頂点オブジェクトのデータ構造を示す略図である。
【図7】図5に示したデータ構造内の三角形オブジェクトのデータ構造を示す略図である。
【図8】本発明の一実施形態に従った第1の幾何学的なテクスチャの平面図である。
【図9】図8に示した第1の幾何学的なテクスチャと関連した図7でのセットアウトとしての三角形オブジェクトのリストを示す。
【図10】図8に示した第1の幾何学的なテクスチャと関連したデータ構造のビンの内容を示す略図である。
【図11】所与のオブジェクトに幾何学的なテクスチャを組み込むプロセスに含められたステップを説明するフローチャートである。
【図12】図11に示した手順のu、v空間における幾何学的テクスチャを定義するサブプロシージャに含まれているステップを説明するフローチャートである。
【図13】本発明の一実施形態に従った第2の幾何学的なテクスチャの平面図である。
【図14】図13に示した幾何学的なテクスチャのより低いエッジから見られた、図13に示した幾何学的なテクスチャの正面図である。
【図15】図13に示したような、図15が右手のエッジから見られる図13に示した幾何学的なテクスチャの正面図である。
【図16】図11に示したプロシージャにおいて呼び出される、「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」サブプロシージャに含まれているステップを説明するフローチャートである。
【図17】図16に示したサブプロシージャにおいて呼び出される、「u、v空間における三角形の解放範囲を計算する」サブプロシージャに含まれているステップを説明するフローチャートである。
【図18】図16に示したサブプロシージャにおいて呼び出される、「繰り返しブロックとオブジェクト三角形との間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる」サブプロシージャに含まれているステップを説明するフローチャートである。
【図19】図18に示したサブプロシージャで呼び出される、「ブロックの全体がオブジェクト三角形の外側に存在するか否か」を判断する条件サブプロシージャに含まれているステップを説明するフローチャートである。
【図20】図18に示したサブプロシージャで呼び出される、「ブロックの全体がオブジェクト三角形の内側に存在するか否か」を判断するための条件サブプロシージャに含まれているステップを説明するフローチャートである。
【図21】図18に示したサブプロシージャで呼び出される、「幾何学的テクスチャを重ね合わせる」サブプロシージャに含まれているステップを説明するフローチャートである。
【図22】図21に示したサブプロシージャで呼び出される、「x、y、z空間における頂点の座標を計算する」サブプロシージャに含まれているステップを説明するフローチャートである。
【図23】図18に示したサブプロシージャで呼び出される、「ブロックのコーナーがオブジェクト三角形の内部に存在するか否か」を判断する条件サブプロシージャに含まれているステップを説明するフローチャートである。
【図24】図18に示したサブ手順の「コーナーにおいて幾何学的テクスチャの三角形を見つける」サブプロシージャに含まれているステップを説明するフローチャートである。
【図25】図18に示したサブプロシージャで呼び出される、「オブジェクト三角形の頂点がブロックの内部に存在するか否か」を判断する条件サブプロシージャに含まれているステップを説明するフローチャートである。
【図26】図18に示したサブプロシージャで呼び出される、「その中にオブジェクト三角形の頂点が存在する幾何学的テクスチャの三角形を検出する」サブプロシージャに含まれているステップを説明するフローチャートである。
【図27】図18に示したサブプロシージャで呼び出される、「スターティング三角形を探すべくビンを走査する」サブプロシージャに含まれているステップを説明するフローチャートである。
【図28】図18に示したサブプロシージャで呼び出される、「ブロックをオブジェクト三角形にクリップし、幾何学的テクスチャを重ね合わせる」サブプロシージャに含まれているステップを説明するフローチャートである。
【図29】幾何学的なテクスチャを適用すべき、図3に示したオブジェクトの三角形の第1の描画のu、v空間におけるプロットを示す図である。
【図30】図29に示したオブジェクト三角形のブロックへの、図18に示した処理の適用を示す図である。
【図31】幾何学的なテクスチャを適用すべき三角形の第2の描画の、u、v空間におけるプロットを示す図である。
【図32】図31に示した三角形への図18に示した手順の適用を示す図である。
【図33】幾何学的なテクスチャを適用すべき三角形の、第3の描画の、u、v空間におけるプロットを示す図である。
【図34】図33に示した三角形のブロックへの図18に示した手順の適用を示す図である。
【図35】三角形のエッジに対応するポイントの位置を確認する方法を説明する図である。
【図36】幾何学的なテクスチャを、第2の特定の例に従って適用すべき3次元のオブジェクトの斜視図である。
【図37】図36で説明したオブジェクトの基礎をなしている構造を定義する多角形の斜視図である。
【図38】図36に示したオブジェクトの外観を定義するために、タイルされたテクスチャ・マップを説明する図である。
【図39】使用中の図38に示したテクスチャ・マップの上にかぶせられるテクスチャ・マスクを説明する図である。
【図40】図39に示したテクスチャ・マスクの一部を詳細に説明する図である。
【図41】図36に示したオブジェクトに適用される幾何学的なテクスチャの平面図である。
【図42】図41に示した幾何学的なテクスチャの側面図である。
【図43】第2の実施形態に従った、「幾何学的テクスチャの重ね合わせ」のサブプロシージャを示すフローチャートである。
【図44A】第2の実施形態に従った、「ブロックをオブジェクト三角形でクリップし、幾何学的テクスチャを重ね合わせる」サブプロシージャのフローチャートである。
【図44B】第2の実施形態に従った、「ブロックをオブジェクト三角形でクリップし、幾何学的テクスチャを重ね合わせる」サブプロシージャのフローチャートである。
【図45】図41と42に示した幾何学的なテクスチャを重ね合わせた後の図36に示したオブジェクトの斜視図である。
Claims (3)
- 表示手段に、所望のオブジェクトを表示させるコンピュータグラフィックス装置であって、
3次元空間における前記オブジェクトの表面の起伏を、色または明暗度によって2次元空間に表現する画像を保持する第1の保持手段と、
前記3次元空間における前記オブジェクトの表面の起伏を表現するための情報であって、前記2次元空間における複数の頂点の情報と、前記複数の頂点によって定義された複数の多角形の情報とを保持する第2の保持手段と、
前記3次元空間における前記オブジェクトと観察者との距離が所定の閾値より小さい場合は、前記表示手段に前記画像を表示させると共に前記画像のうち前記オブジェクトが表現された領域の上に前記オブジェクトの表面の起伏を表現する前記複数の多角形を表示させ、前記距離が前記所定の閾値以上である場合は、前記表示手段に前記画像を表示させるが、前記オブジェクトの表面の起伏を表現する前記複数の多角形は表示させないように前記オブジェクトの表示状態を切り替える切替手段とを備えることを特徴とするコンピュータグラフィックス装置。 - 表示手段に、所望のオブジェクトを表示させるコンピュータグラフィックス装置の制御方法であって、
3次元空間における前記オブジェクトの表面の起伏を、色または明暗度によって2次元空間に表現する画像を記憶手段に保持する第1の保持工程と、
前記3次元空間における前記オブジェクトの表面の起伏を表現するための情報であって、前記2次元空間における複数の頂点の情報と、前記複数の頂点によって定義された複数の多角形の情報とを保持する第2の保持工程と、
前記3次元空間における前記オブジェクトと観察者との距離が所定の閾値より小さい場合は、前記表示手段に前記画像を表示させると共に前記画像のうち前記オブジェクトが表現された領域の上に前記オブジェクトの表面の起伏を表現する前記複数の多角形を表示させ、前記距離が前記所定の閾値以上である場合は、前記表示手段に前記画像を表示させるが、前記オブジェクトの表面の起伏を表現する前記複数の多角形は表示させないように前記オブジェクトの表示状態を切り替える切替工程とを有することを特徴とするコンピュータグラフィックス装置の制御方法。 - コンピュータを、請求項1に記載されたコンピュータグラフィックス装置の各手段として機能させるためのコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GBGB9904679.9A GB9904679D0 (en) | 1999-03-01 | 1999-03-01 | Image processing apparatus |
GB9926757.7 | 1999-11-11 | ||
GBGB9926757.7A GB9926757D0 (en) | 1999-03-01 | 1999-11-11 | Image processing apparatus |
GB9904679.9 | 1999-11-11 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2000251091A JP2000251091A (ja) | 2000-09-14 |
JP2000251091A5 JP2000251091A5 (ja) | 2009-10-01 |
JP4467704B2 true JP4467704B2 (ja) | 2010-05-26 |
Family
ID=26315200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000056395A Expired - Lifetime JP4467704B2 (ja) | 1999-03-01 | 2000-03-01 | コンピュータグラフィックス装置、その制御方法、及びコンピュータ可読記憶媒体 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6714195B1 (ja) |
EP (1) | EP1033683B1 (ja) |
JP (1) | JP4467704B2 (ja) |
DE (1) | DE60026785T2 (ja) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4102324B2 (ja) * | 2004-03-29 | 2008-06-18 | 株式会社トプコン | 測量データ処理システム、測量データ処理プログラム及び電子地図表示装置 |
GB0425204D0 (en) * | 2004-11-15 | 2004-12-15 | Falanx Microsystems As | Processing of 3-dimensional graphics |
US7532214B2 (en) * | 2005-05-25 | 2009-05-12 | Spectra Ab | Automated medical image visualization using volume rendering with local histograms |
US8041129B2 (en) | 2006-05-16 | 2011-10-18 | Sectra Ab | Image data set compression based on viewing parameters for storing medical image data from multidimensional data sets, related systems, methods and computer products |
US7830381B2 (en) * | 2006-12-21 | 2010-11-09 | Sectra Ab | Systems for visualizing images using explicit quality prioritization of a feature(s) in multidimensional image data sets, related methods and computer products |
TW201020974A (en) * | 2008-11-26 | 2010-06-01 | Inst Information Industry | Triangulation processing systems and methods, and computer program products thereof |
US20110210960A1 (en) * | 2010-02-26 | 2011-09-01 | Google Inc. | Hierarchical blurring of texture maps |
US9202310B2 (en) | 2010-04-13 | 2015-12-01 | Disney Enterprises, Inc. | Physical reproduction of reflectance fields |
US8952959B2 (en) * | 2010-04-13 | 2015-02-10 | Disney Enterprises, Inc. | Embedding images into a surface using occlusion |
US10347052B2 (en) * | 2015-11-18 | 2019-07-09 | Adobe Inc. | Color-based geometric feature enhancement for 3D models |
CN108389202B (zh) * | 2018-03-16 | 2020-02-14 | 青岛海信医疗设备股份有限公司 | 三维虚拟器官的体积计算方法、装置、存储介质及设备 |
US11620478B2 (en) * | 2019-02-06 | 2023-04-04 | Texas Instruments Incorporated | Semantic occupancy grid management in ADAS/autonomous driving |
CN116597109B (zh) * | 2023-01-13 | 2023-12-22 | 东莘电磁科技(成都)有限公司 | 一种复杂三维曲面共型网格生成方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5142617A (en) | 1988-10-27 | 1992-08-25 | Tektronix, Inc. | Method of shading a graphics image |
JPH03271877A (ja) | 1990-03-20 | 1991-12-03 | Fujitsu Ltd | グラフィック表示装置 |
US5253339A (en) | 1990-07-26 | 1993-10-12 | Sun Microsystems, Inc. | Method and apparatus for adaptive Phong shading |
GB2259432A (en) | 1991-09-06 | 1993-03-10 | Canon Res Ct Europe Ltd | Three dimensional graphics processing |
GB2271260A (en) | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
GB2271258A (en) | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
GB2271259A (en) | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
GB2271261A (en) | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
GB9223315D0 (en) | 1992-11-06 | 1992-12-23 | Canon Res Ct Europe Ltd | Processing image data |
GB9223314D0 (en) | 1992-11-06 | 1992-12-23 | Canon Res Ct Europe Ltd | Processing image data |
AU7603994A (en) | 1993-08-27 | 1995-03-21 | Apple Computer, Inc. | System and method for generating smooth low degree polynomial spline surfaces over irregular meshes |
JP3926866B2 (ja) | 1996-05-10 | 2007-06-06 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、情報処理方法、及び描画システム |
US6208347B1 (en) * | 1997-06-23 | 2001-03-27 | Real-Time Geometry Corporation | System and method for computer modeling of 3D objects and 2D images by mesh constructions that incorporate non-spatial data such as color or texture |
JP3179392B2 (ja) | 1997-11-17 | 2001-06-25 | 日本電気アイシーマイコンシステム株式会社 | 画像処理装置及び画像処理方法 |
US6128019A (en) * | 1998-04-01 | 2000-10-03 | Evans & Sutherland Computer Corp. | Real-time multi-sensor synthetic environment created from a feature and terrain database using interacting and updatable abstract models |
JP3705923B2 (ja) | 1998-04-09 | 2005-10-12 | 株式会社ソニー・コンピュータエンタテインメント | 画像処理装置および画像処理方法、プログラム提供媒体、並びにデータ提供媒体 |
US6456287B1 (en) * | 1999-02-03 | 2002-09-24 | Isurftv | Method and apparatus for 3D model creation based on 2D images |
US6356280B1 (en) * | 1999-02-03 | 2002-03-12 | Isurftv | Mechanism and apparatus for realistic 3D model creation using interactive scissors |
-
2000
- 2000-02-21 EP EP00301353A patent/EP1033683B1/en not_active Expired - Lifetime
- 2000-02-21 DE DE60026785T patent/DE60026785T2/de not_active Expired - Lifetime
- 2000-02-25 US US09/513,471 patent/US6714195B1/en not_active Expired - Lifetime
- 2000-03-01 JP JP2000056395A patent/JP4467704B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1033683A3 (en) | 2002-10-23 |
DE60026785D1 (de) | 2006-05-11 |
US6714195B1 (en) | 2004-03-30 |
EP1033683B1 (en) | 2006-03-22 |
EP1033683A2 (en) | 2000-09-06 |
DE60026785T2 (de) | 2006-09-07 |
JP2000251091A (ja) | 2000-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5809179A (en) | Producing a rendered image version of an original image using an image structure map representation of the image | |
US5751852A (en) | Image structure map data structure for spatially indexing an imgage | |
JP4074000B2 (ja) | コンピュータイラストレーションシステムによる画像合成方法 | |
US6396492B1 (en) | Detail-directed hierarchical distance fields | |
US6483518B1 (en) | Representing a color gamut with a hierarchical distance field | |
Feibush et al. | Synthetic texturing using digital filters | |
EP0812447B1 (en) | Computer graphics system for creating and enhancing texture maps | |
JP4467704B2 (ja) | コンピュータグラフィックス装置、その制御方法、及びコンピュータ可読記憶媒体 | |
US6603484B1 (en) | Sculpting objects using detail-directed hierarchical distance fields | |
EP2181433B1 (en) | Methods and apparatus for multiple texture map storage and filtering | |
CA2297916C (en) | Texture mapping in 3-d computer graphics | |
US20040012563A1 (en) | Systems and methods of multi-pass data processing | |
KR101136737B1 (ko) | 그래픽 처리방법 및 그 장치 | |
US20040239672A1 (en) | Shading computer-generated objects using generalized shading regions | |
US5745667A (en) | 3d graphics apparatus using texture images with displacement information | |
Neyret | Synthesizing verdant landscapes using volumetric textures | |
Kahler et al. | Interactive volume rendering of large sparse data sets using adaptive mesh refinement hierarchies | |
JP4100765B2 (ja) | コンピュータイラストレーションシステムによるシーン画像合成の簡略化方法 | |
Shen et al. | Interactive visualization of three-dimensional vector fields with flexible appearance control | |
JP4047421B2 (ja) | ユーザ定義によるルームおよびウィンドウを用いた効率的レンダリング方法および装置 | |
JP2676116B2 (ja) | 画像データ処理方法および装置 | |
US9007388B1 (en) | Caching attributes of surfaces without global parameterizations | |
KR100624455B1 (ko) | 3차원 그래픽스 환경에서의 라이트맵 처리 방법 및 장치 | |
Ray et al. | Generation of Radiosity Texture Atlas for Realistic Real-Time Rendering. | |
Brown | Selective mesh refinement for interactive terrain rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070228 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070228 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20070228 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20080811 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090730 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091120 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091127 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100126 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100219 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100224 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4467704 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130305 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140305 Year of fee payment: 4 |
|
EXPY | Cancellation because of completion of term |