(57)【特許請求の範囲】
【請求項１】
表示手段に、所望のオブジェクトを表示させるコンピュータグラフィックス装置であって、
３次元空間における前記オブジェクトの表面の起伏を、色または明暗度によって２次元空間に表現する画像を保持する第１の保持手段と、
前記３次元空間における前記オブジェクトの表面の起伏を表現するための情報であって、前記２次元空間における複数の頂点の情報と、前記複数の頂点によって定義された複数の多角形の情報とを保持する第２の保持手段と、
前記３次元空間における前記オブジェクトと観察者との距離が所定の閾値より小さい場合は、前記表示手段に前記画像を表示させると共に前記画像のうち前記オブジェクトが表現された領域の上に前記オブジェクトの表面の起伏を表現する前記複数の多角形を表示させ、前記距離が前記所定の閾値以上である場合は、前記表示手段に前記画像を表示させるが、前記オブジェクトの表面の起伏を表現する前記複数の多角形は表示させないように前記オブジェクトの表示状態を切り替える切替手段とを備えることを特徴とするコンピュータグラフィックス装置。
【請求項２】
表示手段に、所望のオブジェクトを表示させるコンピュータグラフィックス装置の制御方法であって、
３次元空間における前記オブジェクトの表面の起伏を、色または明暗度によって２次元空間に表現する画像を記憶手段に保持する第１の保持工程と、
前記３次元空間における前記オブジェクトの表面の起伏を表現するための情報であって、前記２次元空間における複数の頂点の情報と、前記複数の頂点によって定義された複数の多角形の情報とを保持する第２の保持工程と、
前記３次元空間における前記オブジェクトと観察者との距離が所定の閾値より小さい場合は、前記表示手段に前記画像を表示させると共に前記画像のうち前記オブジェクトが表現された領域の上に前記オブジェクトの表面の起伏を表現する前記複数の多角形を表示させ、前記距離が前記所定の閾値以上である場合は、前記表示手段に前記画像を表示させるが、前記オブジェクトの表面の起伏を表現する前記複数の多角形は表示させないように前記オブジェクトの表示状態を切り替える切替工程とを有することを特徴とするコンピュータグラフィックス装置の制御方法。
【請求項３】
コンピュータを、請求項１に記載されたコンピュータグラフィックス装置の各手段として機能させるためのコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、イメージ処理装置に関し、特に、３次元（３Ｄ）中におけるオブジェクトを含むシーンからなるイメージの処理に関する。
【０００２】
【従来の技術】
コンピュータグラフィックスの分野では、オブジェクトの表面は、一般に、一連の多角形、最も一般的には三角形によって表される。それらの三角形は、３Ｄ空間におけるそれらの頂点の座標を用いて記述することができ、３Ｄオブジェクト・データとしてメモリ内に記憶することができる。全体として、オブジェクト表面が詳細な起伏（relief）を要しない場合、オブジェクト表面を表わすことに要する計算量は多くならない。この場合、オブジェクトの表面は、比較的大きい三角形によって表され、三角形を記述するために、比較的小さなオブジェクト・データが作成されるという結果になる。このようにして、比較的小さいメモリが、オブジェクト表面を記述するためのコンピュータ内で必要とされることになる。
【０００３】
しかしながら、表面が非常に詳細な表面の起伏（reief）の特徴を有する場合、多数の非常に小さい三角形が、その表面を記述するために必要とされることになろう。この場合、表面の記述は、イメージデータへの変換に要する計算量が多くなり得る多量のオブジェクト・データの作成という結果をもたらすこととなる。
【０００４】
したがって、過去には、以下に簡潔に記述される２つの段階によってオブジェクトの表面を記述することが、好適な手法として見いだされてきた。
【０００５】
第１に、オブジェクト表面の一般的なアウトラインは、三角形のメッシュを用いて上述した方法を使用して記述される。オブジェクトの表面を記述する代わりの方法としては、制御ポイントを用いることによってベジェ（または他のスプラインの）表面を定義すること、または、表面が位置である数学的な方程式を提供することが利用可能であることが理解されるであろう。
【０００６】
第２に、テクスチャ・ビット・マップが、オブジェクトの表面の一般的な輪郭を形成する三角形の上にオーバーレイされる。そのテクスチャ・ビット・マップは、見る人に、起伏（reief）の形態が実際に存在するような印象を与える細部を含むが、実際には、その起伏（reief）の形態は、色と影とがコントラストをなす領域によって記述されている。そのテクスチャ・ビット・マップは、それ自身、座標（ｕ、ｖ）で２次元空間の単位スクエアの上に定義される。テクスチャ・ビット・マップが、単位スクエアの上に定義されない場合、定義空間を単位スクエアのそれにマップすることが可能である。３Ｄ空間中の頂点は、（ｕ、ｖ）座標を与えられ、ビット・マップは、頂点間を補間し、三角形内のポイントとビット・マップ内のポイントの間の一致を見いだすことによって、メッシュ内において三角形にクリップされる。
【０００７】
たとえば、舗装した道路のグラフィックスな描写からなるオブジェクトは、そのオブジェクトの全体的な表面が一般に平らであることから判断して、一連の比較的大きい三角形を用いて記述することができる。しかしながら、三角形を使用して、道路の粗さ、または、道路の穴を表すために、多数の比較的小さい三角形が必要とされるであろう。したがって、その形状に関係せずに、その外見に関する穴または表面の粗さのような特徴を表現することは便利である。したがって、（大きい三角形のメッシュによって定義された）テクスチャ・ビット・マップが、道路の全体の外観表面を覆うように用いられる。ここで、テクスチャ・ビット・マップは、穴の外見を表すために、道路の他の部分よりも暗い色で陰を表す領域を含む。また、テクスチャ・ビット・マップは、表面の粗さを表すために「まだらの」パターンを含む。
【０００８】
【発明が解決しようとする課題】
オブジェクトの起伏（reief）の特徴を描写することは、そのオブジェクトに対する視点がオブジェクトから離れて少し距離があるときは、合理的であり効率的である。しかしながら、視点がオブジェクトにより近くなると、起伏（reief）の特徴がどのようにシミュレートされているかが、外見上明白になってしまう。これは、イメージの品質の全体的な印象を悪くするものであり、望ましくない。
【０００９】
ロバート・Ｌ・クックによる「Ｓｈａｄｅ  Ｔｒｅｅｓ」（コンピュータ・グラフィックス・ボリューム１８、ナンバー３、１９８４年７月、ページ２２３〜２３１）は、テクスチャ・マップよりも効率的にテクスチャをシミュレートするために置換マップの使用を提案する。置換マップは、どちらのプロセスであっても、使用される、最終的な陰を付けるプロセスにおけるポイントの位置を修正する。
【００１０】
【課題を解決するための手段】
本発明の第１の態様によれば、さらなる幾何学性でもってテクスチャ・ビット・マップを拡張する装置と方法が提供される。ここで、この幾何学性は、テクスチャ・ビット・マップが適用されるオブジェクトが、テクスチャ・ビット・マップによって明瞭にモデル化されたテクスチャに対応する実際の３Ｄ幾何を含むことを可能にする。
【００１１】
これはコックの文献に記述された方法と対照的であり、単に断片的にポイント位置を修正するにすぎない。本発明は、表現されるべきオブジェクトを定義するデータ構造の中に、更なる幾何学性を組み込むので、有利である。
【００１２】
本発明の第２の態様によれば、表示する３次元のオブジェクトを定義する情報を記憶する手段と、オブジェクトに適用されるテクスチャを定義する情報を記憶する手段と、使用中のテクスチャの上に重ねる追加の３次元の幾何学的模様（geometry）を定義する情報を記憶する手段とを含むコンピュータグラフィックス装置が提供される。
【００１３】
また、本発明の第３の態様によれば、３次元のオブジェクトをグラフィックスで表す手段が提供され、この手段は、前記オブジェクトの機能的形状を定義する情報を記憶する第１の記憶手段と、前記オブジェクトの詳細な形を定義する情報を記憶する第２の記憶手段と、前記第１の記憶手段における前記情報に前記第２の記憶手段における前記情報をインポーズする手段とを含む。
【００１４】
上記第３の態様では、インポジション手段は、前記基本的形状が所定の閾値よりも名目上の観察者により近い場合に、インポーズするべく機能するようにしてもよい。
【００１５】
好ましくは、更なる幾何学的模様は、幾何学的模様の個別の要素が表示されるべきか否かを示すための手段を含む。このようにして、基本的な幾何学的模様のエッジのより微妙な制御が達成され、エイリアシングを潜在的に減少させる。
【００１６】
【発明の実施の形態】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１７】
図１は、本発明の一実施形態によるイメージ処理装置の全体の構成を示すブロック図である。この装置において、コンピュータ２０は、メモリ２４に接続された中央処理装置（ＣＰＵ）２２を含む。メモリ２４は、ＣＰＵ２２のオペレーションのシーケンスを定義するプログラムを記憶し、ＣＰＵ２２による計算に使用されるオブジェクトとイメージ・データを記憶するために使用可能である。
【００１８】
入力装置２６は、ＣＰＵ２２の入力ポート（図示せず）に接続される。入力装置２６は、たとえば、キーボードおよび／またはマウス、トラックボール、デジタイザ・タブレット、スタイラスなどのような位置を検知する入力装置を含む。
【００１９】
フレーム・バッファ２８も、ＣＰＵ２２に接続される。フレーム・バッファ２８は、たとえば、イメージのピクセル毎に１つの（またはいくつかの）メモリロケーションを提供することによって、少なくとも１つのイメージに関連するイメージ・データを記憶するように構成されたメモリユニット（図示せず）を含む。各ピクセルについてのフレーム・バッファ２８内に記憶された値は、イメージにおけるピクセルの色または明暗度を定義する。
【００２０】
本実施形態では、イメージは、ピクセルの２次元配列として表され、好適には、デカルト座標を用いて記述される。所与のピクセルの位置は、ｘ、ｙ座標の対によって記述することができる。フレーム・バッファ２８は、少なくとも１つのイメージを記憶するために十分なメモリ容量を有する。イメージが１０００×１０００ピクセルの解像度を有する場合、フレーム・バッファ２８は、１０6ピクセルのメモリローケーションを含むべきであり、各メモリロケーションは、ピクセル座標ｘ、ｙに関して直接または間接的にアドレスすることが可能である。
【００２１】
ビデオ・ディスプレイ装置（ＶＤＵ）３０は、フレーム・バッファ２８に接続される。ＶＤＵ３０は、一般的な方法でフレーム・バッファ２８に記憶されたイメージを表示する機能を有する。たとえば、ＶＤＵ３０が、ラスタ走査によってイメージを表示する場合、ピクセルのｘ座標は走査されるディスプレイのラインに沿った間隔にマップされ、ピクセルのｙ座標はラインの数にマップされる。
【００２２】
また、フレーム・バッファ２８には、ビデオ・テープ・レコーダ（ＶＴＲ）３２が接続される。記録紙等に記録を行うペーパー・プリンタまたは３５ミリのフィルム・レコーダのような他のイメージ記録装置が、追加または代替として供給され得る。ＶＴＲ３２は、フレーム・バッファからデータを受け取り、磁気テープ上に磁気信号としてデータを記憶する機能を有する。
【００２３】
ハード・ディスク・ドライブのような、大容量記憶装置３４が、メモリ２４に接続される。大容量記憶装置３４は、大きなデータ記憶装置容量を有し、高速なアクセスが必要とされないデータを記憶するのに適している。また、大容量記憶装置３４は、コンピュータ２０による制御下におけるコンピュータープログラムを含んで構成される、プロセッサ処理のための命令列を定義する制御信号を格納する。
【００２４】
さらに、ディスク・ドライブ３６がメモリ２４に接続される。ディスク・ドライブ３６は、フロッピー・ディスク３８のような取り出し可能なデータ記憶媒体を装着することができ、フロッピー・ディスク３８上に記憶されたデータをメモリ２４に転送することが可能である。そして、そのデータは、その後大容量記憶装置３４上に記憶することができる。データは、コンパクト・ディスク・プレーヤ（図示せず）に装着されたコンパクト・ディスクから取得することも可能である。さらに、モデム４０は、遠隔のコンピュータ装置との間の情報の送受信のために、コンピュータ２０をインターネットに接続する。
【００２５】
図２は、本実施形態による幾何学的なテクスチャリング機能を含むレンダリング・パイプライン５０を説明する図である。しかしながら、他のレンダリング・パイプラインも適切に用いられ得ることが認められるであろう。レンダリング・パイプラインが、Ｆｏｌｅｙ、Ｖａｎ  Ｄａｍ、Ｆｅｉｎｅｒ、Ｈｕｇｈｅｓによる「コンピュータグラフィックス」（２ｎｄ  ｅｄ、Ａｄｄｉｓｏｎ  Ｗｅｓｌｅｙ、ＩＳＢＮ  ０−２０１−１２１１０−７）の、８０６〜８１２ページにおいて論じられている。以下、これを、「Ｆｏｌｅｙ、Ｖａｎ  Ｄａｍ、Ｆｅｉｎｅｒ、Ｈｕｇｈｅｓ」と称する。
【００２６】
レンダリング・パイプライン５０は、メモリ２４内の、または大容量記憶装置３４からアクセス可能なコンピュータの実行可能な命令の記憶装置を介して、コンピュータ２０内で実行される。
【００２７】
レンダリング・パイプライン５０は、それに関係するイメージ・データを提供するために、オブジェクト・プリミティブに関して動作可能な複数の処理装置からなる。プリミティブは、三角形、三角形ストリップ、三角形ファン、ラインまたは多角形である。本発明は多角形プリミティブに適用可能であるが、本実施形態では、特に三角形との関係において説明する。
【００２８】
レンダリング・パイプライン５０は、インスタンシング装置５２を含む。使用中において、レンダリング・パイプラインを利用する、或いはレンダリング・パイプラインを含んでいるグラフィックス・モデリング・アプリケーションは、多くの異なるフォーマットでオブジェクトを記憶することになる。オブジェクトが表示のために選択される場合、インスタンシング装置５２は、そのオブジェクトに関して動作し、それを残りの他のレンダリング・パイプライン５０に共通したフォーマットに変換する。レンダリング・パイプラインを含むアプリケーションが、単一の３Ｄプリミティブの形式でオブジェクトをパイプラインに渡す場合、インスタンシング装置５２は一般的なものとなるであろう。
【００２９】
インスタンシング装置５２は、関連するマテリアルデータ（material data）とともに、プリミティブの一連のコレクションを出力する。これらプリミティブは、ワールドおよび／またはローカルなオブジェクト空間に対応して記述される。レンダリング・パイプライン５０は、さらに、インスタンシング装置５２からプリミティブのそれらの一連のコレクションを受け取る変換装置５４を含む。変換装置５４は、特定のプリミティブのセット及びビューイング変換に関連した全ての情報を崩して単一の変換にする。こうして、この単一の変換はデータに適用される。重複または部分的な不明瞭さのために、クリッピングを必要とするプリミティブはいずれも、変換装置５４によってフラグを付けられる。しかしながら、クリッピングは、変換装置５４それ自身によっては、行われない。
【００３０】
プリミティブが、グラフィックス・モデリング・アプリケーションによってパイプライン５０に供給される場合、プリミティブが前もって変換された状態にあるなら、変換装置５４は取るに足らない構成となるか、または不要である。
【００３１】
レンダリング・パイプライン５０は、さらに、ライティング装置５６を含む。ライティング装置５６は、変換装置５４から変換されたプリミティブを受け取る。ライティング装置５６は、ラスタ化の間に補間されるであろう色の値を計算するために、グローバル・ライティングに関連するデータを、プリミティブのマテリアルデータおよび方向付けデータに結合させる。
【００３２】
ライティングは、それがマテリアル情報のためにオリジナルのオブジェクトの照会を行うので、一般にはオブジェクト特定的である。プリミティブのすべてのコレクションが、ライティング装置５６によって照らされるわけではない。なぜなら、いくらかは、グラフィックス・モデリング・アプリケーションによって前もって計算されたライティングの値が供給されることがあるからである。
【００３３】
レンダリング・パイプライン５０は、さらに、ライティング装置５６によって送られた、照らされたプリミティブのコレクションについて作動するレンダリング装置５８を含む。効率性の理由から、プリミティブは、グループ、またはコレクションの形態で、パイプラインの下流に送られる。しかしながら、プリミティブを返すために、それらは、レンダリング装置５８によって開梱（unpack）され、個々に扱われなければならない。
【００３４】
レンダリング装置５８は、幾何学的テクスチャリング装置６０と接続されている。幾何学的テクスチャリング装置６０は、レンダリング装置５８によって、開梱された個々のプリミティブを受け入れ、幾何学的なテクスチャをその上に重ねるべきであるかどうかチェックする。幾何学的なテクスチャを重ねる場合、幾何学的テクスチャリング装置６０は、プリミティブの上に幾何学的なテクスチャを重ねることによって生成された一連の三角形を返送する。さもなければ、プリミティブはレンダリング装置に戻される。
【００３５】
プリミティブは、幾何学的テクスチャリング装置６０によって変換されるか否かにかかわらず、ラスタ化のために描画されるべく、レンダリング装置５８に出力される。レンダリング装置５８の最終的な出力は、ＶＤＵ３０上のイメージの生成のためのにラスタ化されたデータ６２のストリームである。
【００３６】
図３は、４つの三角形７２ａ、ｂ、ｃ、ｄによって定義されたピラミッド状の形のボディ７０を説明する図である。これらの三角形７２ａ、ｂ、ｃ、ｄのそれぞれは、図４で示されるオブジェクト・データ構造８０に関連付けられている。オブジェクト・データ構造８０はヘッダ８０−１と、頂点の位置やオブジェクトの材料のようなオブジェクトの特徴を定義する一連のフィールド８０−２、８０−３を含む。マテリアルを特定するフィールド８０−３は、マテリアル・オブジェクト８２と名付けられた他のデータ構造を指定する。
【００３７】
マテリアル・オブジェクト８２は、ヘッダ８２−１と、マテリアルのテクスチャの如きマテリアルの特徴を定義する情報を含むフィールド８２−２を含む。テクスチャを特定するフィールド８２−２は、テクスチャ・オブジェクト８４と名付けられた他のデータ構造を指定する。
【００３８】
テクスチャ・オブジェクト８４は、ヘッダ８４−１と、テクスチャの特徴を定義する情報を含むフィールド８４−２、８４−３を含む。それらのフィールド８４−２の１つは、ビット・マップ・フィールドであり、ビット・マップ８６を指定する。
【００３９】
上記において参照した、Ｆｏｌｅｙ、ｖａｎ  Ｄａｍ、Ｆｅｉｎｅｒ、Ｈｕｇｈｅｓの７４１〜７４５ページから知られているように、関連するテクスチャ・マッピングを有する三角形をレンダリングするプロセスは、テクスチャ・ビット・マップにおけるポイントの三角形上のポイントへのマッピングに依存する。それは、ｕ、ｖ座標によって２次元空間におけるテクスチャ・ビット・マップを定義することによって達成され、三角形７２ａ、ｂ、ｃ、ｄについて指定された頂点は、ｘ、ｙ空間におけるそれらの物理的な位置に関してだけではなく、ｕ、ｖ空間との対応に関して定義される。したがって、ビット・マップにおけるポイントは、三角形７２ａ、ｂ、ｃ、ｄの頂点のｕ、ｖ座標への参照によって、これら三角形にマップすることができる。ビット・マップは、ｕ、ｖ空間における単位スクエアにわたって定義されるが、三角形７２ａ、ｂ、ｃ、ｄは、その単位スクエアの領域と一致しない領域上のｕ、ｖ空間において定義される。テクスチャ・ビット・マップをオブジェクト三角形に適合させるために、ビット・マップは、繰り返され、および／またはクリップされる必要がある。
【００４０】
テクスチャ・オブジェクト８４は、幾何学的なテクスチャを指定しているさらなるフィールドによって拡張される。幾何学的なテクスチャ８４−３は、幾何学的なテクスチャ・オブジェクト８７を指すポインタを含む。
【００４１】
テクスチャ・オブジェクト８４は、幾何学的なテクスチャ・オブジェクト８７による、テクスチャ・オブジェクト・タイプの拡張によって拡張される。テクスチャ・オブジェクト・タイプは、それへの二重にリンクされた拡張のリストと関連付けられ、各拡張は、その拡張のためのメモリの割当てを定義するデータからなる。したがって、幾何学的なテクスチャを含むテクスチャ・オブジェクトが定義される場合、コンピュータは、テクスチャ・オブジェクトそれ自身及び期待されたテクスチャ・ビット・マップのためにメモリを割り当てることだけではなく、他で定義される幾何学的なテクスチャ・オブジェクト・タイプのためにメモリを割り当てるよう命令される。以下で説明するように、幾何学的なテクスチャ・オブジェクト・タイプは、一連のリンクされたリストまたはポインタを含んでいる可能性が最も高くなる。
【００４２】
幾何学的なテクスチャ・オブジェクト８７について、図５を参照してより詳細に説明する。幾何学的なテクスチャ・オブジェクト８７は、頂点Ｖ1からＶmのリストを含み、このリストは、幾何学的なテクスチャ内のポイントの位置を定義し、頂点Ｖ1からＶmによって定義された三角形ｔ1からｔnとビン（bin）８８の２次元の配列のリストである。ビン８８は、すべての三角形（ｔ1．．．ｔn）のリストから選択された三角形のリストの配列を構成する。ビン８８の配列は、ｕ、ｖ空間における幾何学的なテクスチャをカバーする領域の配列に対応する。各ビン８８は、三角形（ｔ1．．．ｔn）のリストからの、当該ビンに対応する領域に少なくとも部分的に含まれている三角形のリストＢpqを備える。
【００４３】
図６は、各頂点Ｖiと関連したデータ構造を説明する図である。各頂点Ｖiは、ｕ、ｖ空間における座標ｕi、ｖiと、ｕ、ｖ平面からの置換（displacement）Ｄiにおいて定義される。インデックス・フィールドＩiとＦＬＡＧＳiフィールドも、後に説明する手順での使用のために提供される。
【００４４】
図７は、各三角形ｔjと関連したデータ構造を説明する。三角形ｔjを定義する頂点Ｖa、Ｖb、Ｖcを指定するための３つのフィールドが提供される。また、ｔa、ｔb、ｔcの３つのフィールドは、三角形ｔjに隣接する３つの三角形を指定するために提供される。ＦＬＡＧＳjフィールドは、後に説明する手順での使用のために提供される。
【００４５】
図８は、その中に幾何学的なテクスチャを定義するのに上述したデータ構造の使用を説明するための、簡単な幾何学的なテクスチャを示す図である。この第１の幾何学的なテクスチャは、後述する特定の実施形態に従った方法の説明においては扱われない。しかしながら、この第１の幾何学的なテクスチャは相対的に複雑さが少なく、データ構造の使用を明らかに説明することを可能にするので、この段階の説明において考慮する。幾何学的なテクスチャは、一般に、４つのコーナーの頂点Ｖ1、Ｖ2、Ｖ3、Ｖ4と２つの内部の頂点Ｖ5およびＶ6を有する正方形である。そして、６つの三角形ｔ1からｔ6を定義するように、それらの６つの頂点間にエッジが定義される。
【００４６】
頂点Ｖ1からＶ6は、幾何学的なテクスチャ・オブジェクト８７に含まれる頂点のリストに入れられる。リストの最上部に４つのコーナーの頂点Ｖ1からＶ4を配置することは好ましいことである。なぜなら、後述される処理手順においてコーナーを配置するための手順をより容易にできるからである。内部の頂点Ｖ5、Ｖ6は、そのリストにおいて、コーナーの頂点の下に入れられる。なお、リストにおいて、内部の頂点に関するエントリの順番は重要ではない。
【００４７】
図９は、図７を参照して説明したような、三角形ｔ1からｔnについてのデータ構造への幾何学的なテクスチャ・オブジェクト８７の三角形のエントリを説明する図である。たとえば、三角形ｔ1は、頂点Ｖ1、Ｖ5およびＶ6によって定義され、それに対して隣接する三角形ｔ6、ｔ3およびｔ2を有する。上述したように、ＦＬＡＧＳフィールドが提供される。三角形ｔ2に関して示されているように、三角形が幾何学的なテクスチャのエッジに隣接している場合は、「隣接する三角形」のフィールドｔa、ｔb、ｔcのうちの１つは、ゼロの値が入れられることになる。なぜなら、その三角形のそのエッジに隣接する三角形は存在しないからである。この例では、フィールドｔaはフィールドＶaおよびＶbに格納されている頂点によって定義されるエッジに隣接する三角形を格納し、フィールドｔbはフィールドＶbおよびＶcに格納されている頂点によって定義されるエッジに隣接する三角形を格納し、フィールドｔcはフィールドＶcおよびＶaに格納されている頂点によって定義されるエッジに隣接する三角形を格納するように、隣接する三角形がフィールド中にエントリされる。
【００４８】
幾何学的なテクスチャの上に重ね合わされているのは、ビン８８の５×５グリッドである。ビン８８は、図８では、破線によって区画して示されている。図１０は、ビン８８と関連したデータ構造を説明する図である。各ビンは、そのビンの中に少なくとも部分的に含まれる三角形のリストを含む。各ビン８８は、Ｂijの表記によって本明細書において説明され、図８において、ｉは、左から右へと増加し、ｊは、上から下へと増加する。
【００４９】
たとえば、ビンＢ00は、図８においてその参照符Ｂ00によって示され、実線によって示された領域であり、三角形ｔ1、ｔ2およびｔ6の部分を含む。したがって、ビンＢ00は、三角形ｔ1、ｔ2およびｔ6をリストする。図８において参照符Ｂ24によって示されるビンＢ24の領域は、やはり実線によって示してあるが、三角形ｔ5内に完全に含まれる。従って、ビンＢ24は、その中にｔ5をリストするだけである。
【００５０】
次に、図１１を参照して、図４から図１０において説明したようなデータ構造で定義される幾何学的なテクスチャが、図３において説明したボディ７０の他の平らな三角形７２ａに適用されることを可能にする処理手順を説明する。
【００５１】
第１のステップＳ１−２において、ｕ、ｖ空間における幾何学的テクスチャの定義を行うサブプロシージャをコールする。このサブプロシージャは、頂点Ｖのリスト、三角形ｔのリスト、およびビン８８の配列を有する幾何学的なテクスチャ・オブジェクト８７を提供する。
【００５２】
上記のサブプロシージャに続いて、ステップＳ１−４においてメインプロシージャは、ｘ、ｙ、ｚ空間とｕ、ｖ空間へのマッピングの両方において指定された頂点を有するように、描画されるべきオブジェクトを定義する。
【００５３】
その後、メインプロシージャはループに入る。このループにおいて、ステップＳ１−６では、オブジェクトの三角形を選択しそれに幾何学的テクスチャをマップする処理によりオブジェクトの各三角形が選択される。そして、このステップＳ１−６において、複数のより小さい多角形からなる幾何学的にテクスチャされたオブジェクト三角形が生成される。その幾何学的にテクスチャされたオブジェクト三角形は、ステップＳ１−８によって、図２を参照して説明したようなシステムのレンダリング・パイプライン５０へ出力（ディスパッチ）される。
【００５４】
幾何学的にテクスチャされたオブジェクト三角形が出力されると、ステップＳ１−１０において、他に考慮すべき三角形が残っているかを調べる。他の三角形が残っている場合、処理はステップＳ１−６に戻って、上述と同様の動作を繰り返す。一方、オブジェクトのすべての三角形について処理を終えたならば、幾何学的なテクスチャの組込みを含むレンダリング処理は完了しており、本手順を終了する。
【００５５】
次に、サブプロシージャであるステップＳ１−２の処理（ｕ、ｖ空間における幾何学的テクスチャの定義）について、添付の図１２を参照してより詳細に説明する。
【００５６】
まず、ステップＳ２−２において、サブプロシージャは、ｕ、ｖ空間における単位スクエアを定義する。幾何学的なテクスチャは、この単位スクエアにおいて定義される。その後、ステップＳ２−４に進み、幾何学的なテクスチャは、ｕ、ｖ空間内の頂点Ｖmの集合として定義される。ここで、三角形はそれらの頂点によって定義される。図１３は、上述したのと同じように４つのコーナーの頂点と９つの内部の頂点を含み、１６個の三角形を定義する幾何学的なテクスチャの第２の典型的な実施形態を説明する図である。この第２の幾何学的なテクスチャは、図８に示した第１のものよりかなり複雑であり、本明細書中で説明した手順をより効率的に説明することを可能にする。頂点Ｖmと三角形ｔnは、図５に関連して説明した幾何学的なテクスチャ・オブジェクト８７の頂点と三角形のリストに記憶される。
【００５７】
ステップＳ２−６によって、各頂点Ｖmは、ｕ、ｖ平面からの置換Ｄmを割り当てる。頂点Ｖmと関連した置換Ｄmは、オブジェクトに適用される幾何学的なテクスチャの形を定義する。図１４と図１５に示すように、これらの置換Ｄmは、ｕ、ｖ平面に直角であるように表することができる。現在説明されている実施形態では、すべての置換Ｄmは、ネガティブである。しかしながら、置換Ｄmは、ポジティブ、ネガティブ、または両方の混合であってもよいことは理解されるであろう。これは、波形効果（ripple effect）、畝（rib）または粗さ（roughness）を提供することに役立つであろう。
【００５８】
ステップＳ２−６に引き続いて、ステップＳ２−８で、ビンＢpqの配列を規則的なグリッドのボックスとして定義する。図１３では、ビンは、トップのエッジと左手のエッジに沿った座標によって指示される。したがって、１００個のビンは、Ｂ00からＢ99によって指示される。
【００５９】
各ビンＢpqには、そのビンの中に少なくとも部分的に含まれているすべての三角形ｔnのリストを割り当ててある。たとえば、図１３を参照すると、ビンＢ00は、三角形ｔ5を含むリストを有する。一方、Ｂ64は、リストが三角形ｔ7、ｔ8、ｔ9、ｔ10、ｔ15とｔ16を含むリストを有する。
【００６０】
すべてのビンＢpqについてその中に含まれる三角形が考慮されると、幾何学的なテクスチャはｕ、ｖ空間において定義されていると考えられ、処理は上述のメイン処理に戻る。
【００６１】
次に、オブジェクトの三角形を選択し、幾何学的テクスチャをその上にマッピングする、ステップＳ１−６で呼び出されるサブプロシージャについて、図１６に示すフローチャートを参照して以下に説明する。
【００６２】
まず、ステップＳ３−２において、オブジェクト三角形が、そのオブジェクト三角形の各頂点に割り当てられたｕ、ｖ座標を参照することによって、ｕ、ｖ空間にマップされる。そして、ステップＳ３−４において、ｕ、ｖ空間中の三角形の「解き放たれた範囲（以下、解放範囲（loose extent））」が計算される。この「解放範囲」は、ｕ、ｖ空間の三角形の解放範囲の計算を行うサブプロシージャによって計算され、その詳細は後述する。三角形の「解放範囲」は矩形からなり、その矩形は、整数値を有するその頂点のｕ、ｖ座標を含むｕ、ｖ平面の軸上において最も小さい値で境界づけられる矩形である。
【００６３】
次に、前述において定義された単位スクエアの幾何学的なテクスチャは、ステップＳ３−６において、解放範囲の領域の上で繰り返される。幾何学的なテクスチャのこれらの繰り返しは、繰り返しブロックとして以下で知られている。解放範囲の座標が整数値であり、各繰り返しブロックが単位スクエアであるから、繰り返しブロックの全体の数は解放範囲内にフィットすることになる。解放範囲が計算上得るのにコストがかからないので、幾何学的なテクスチャをオブジェクト三角形に適用する場合に、考慮すべきｕ、ｖ空間中の領域を制限することに対して、それは有用なツールである。
【００６４】
その後、処理はループに入る。このループにより、各繰り返しブロックが順番に考慮されることになる。ブロックは、まずステップＳ３−８によって、考慮のために選択される。考慮中のブロックは、４つのコーナーを有する。それらコーナーのそれぞれは、幾何学的なテクスチャの頂点であり、頂点Ｖmのリストにおいて定義される。前に述べたように、アクセスの容易さのためにリストＶmの最上部にこれらの頂点を配置することが、本処理にとって都合が良い。
【００６５】
幾何学的なテクスチャの頂点のすべては、それと関連したＦＬＡＧＳフィールド内にＶＳＩＴＥＤフラグを有する。これらのフラグは、後の処理への事前のステップであるステップＳ３−９においてリセット状態に初期化される。その後、幾何学的なテクスチャの４つの識別された頂点が選択される。そして、それらの頂点の各ＶＩＳＩＴＥＴＤフラグは、ステップＳ３−１０においてセットされ、幾何学的なテクスチャの頂点が考慮済みとなったことを示す。それは、ＣＬＩＰフラグ（後に説明する）または他のデータの重複した計算を防ぐのに有用、かつ効率的方法である。例えば、頂点が２回参照される場合、ＶＩＳＩＴＥＤフラグがセットされているなら、そのＣＬＩＰフラグを再計算する必要はない。
【００６６】
ステップＳ３−１１では、各コーナーについてそれらがオブジェクト三角形からクリップされていない頂点を有し、このためレンダリングを必要とするかどうかを確認するために、後に説明するＣＬＩＰフラグが計算される。それらがクリップされていない場合、それらは、レンダリング・パイプライン５０に出力される。
【００６７】
これらのコーナーは前述のように頂点Ｖmのリストの最上部において現われるべきであるが、これらコーナーの選択に続いて、ｕ、ｖ空間におけるオブジェクト三角形とブロックとのオーバーラップが確認される。幾何学的なテクスチャは、ステップＳ３−１２で呼び出されたサブプロシージャ「繰り返しブロックとオブジェクト三角形との間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる処理」によって、オーバーラップする部分（もしあるなら）でオブジェクト三角形に重ねる。そのサブプロシージャについては、後述する。
【００６８】
幾何学的なテクスチャを重ねる場合において、扱われなくてはならなくなる異なる状況を、図２９、図３１および図３３を用いて説明する。
【００６９】
図２９において、オブジェクト三角形７２ａは幾何学的なテクスチャの複数の繰り返しブロック９０をカバーするために示される。それらの繰り返しブロック９０ａの１つは、オブジェクト三角形７２ａ内に完全に囲まれているように示される。したがって、幾何学的なテクスチャ全体は、オブジェクト三角形のその部分の上に重ねることができる。他の繰り返しブロック９０ｂは、オブジェクト三角形７２ａの１つのエッジと重なっている。その場合、幾何学的なテクスチャは、適切な形にクリップされる必要がある。
【００７０】
図３１では、オブジェクト三角形７２ａは、幾何学的なテクスチャの単一の繰り返しブロック９０によって囲まれている。その場合、幾何学的なテクスチャのその１つの繰り返しブロック９０だけが考慮される必要があり、その繰り返しブロック９０は、オブジェクト三角形７２ａの形にクリップされる必要がある。
【００７１】
図３３は、オブジェクト三角形７２ａの他のスケーリングを示し、幾何学的なテクスチャの繰り返しブロック９０においては、その中に存在するオブジェクト三角形７２ａの頂点がなく、繰り返しブロック９０のコーナーの頂点のいずれもオブジェクト三角形７２ａの中に入らない。このような特別なケースについては、図１８を参照して後述する。
【００７２】
図１６に戻り、ステップＳ３−１４において、サブプロシージャは、さらに考慮すべき繰り返しブロック９０が残っているかを調査する。他のブ考慮すべきロックが残っている場合、サブプロシージャは、ステップＳ３−８に処理を戻し、上記と同様の処理を繰り返す。
【００７３】
繰り返しブロック９０のすべてが考慮されると、「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」サブプロシージャを終え、処理をメイン手順に戻す。
【００７４】
次に、ステップＳ３−４で呼び出されるサブプロシージャ「ｕ、ｖ空間における三角形の解放範囲の計算」について、図１７を参照して以下に説明する。
【００７５】
まず、ステップＳ４−２とＳ４−４では、ｕ、ｖ空間でのオブジェクト三角形７２ａの３つの頂点の座標が考慮され、それらの３つのｕ座標と３つのｖ座標の最小値ｕminとｖminが、選択される。
【００７６】
ｕminとｖminの選択に続いて、ステップＳ４−６は、｜ｕmin｜と｜ｖmin｜を見いだす。ここで、｜ｕmin｜と｜ｖmin｜は、最も近くの整数に切り下げられたｕminとｖmin値として定義される。
【００７７】
次に、ステップＳ４−８とＳ４−１０では、オブジェクト三角形の３つのｕ座標と３つのｖ座標が考慮され、それぞれｕ座標とｖ座標からの最大値であるｕmaxとｖmaxが見いだされる。その後、ステップＳ４−１２では、最も近くの整数に切り下げられたｕmaxとｖmaxの値である｜ｕmax｜と｜ｖmax｜を見いだす。
【００７８】
そして、ステップＳ４−１４において、ｕ、ｖ空間での三角形の解放範囲は、次のように定義された範囲内にあると定義される。
【００７９】
｜ｕmin｜≦ｕ≦｜ｕmax｜
｜ｖmin｜≦ｖ≦｜ｖmax｜
解放範囲が定義されると、サブプロシージャは、「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」ためのサブプロシージャに戻る。
【００８０】
次に、「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」サブプロシージャにおけるステップＳ３−１２の処理によって呼び出される、「繰り返しブロックとオブジェクト三角形の間のオーバーラップのチェックと、幾何学的テクスチャの重ね合わせ」のサブプロシージャについて、図１８を参照して、以下に説明する。
【００８１】
まず、ステップＳ５−２では、考慮中の繰り返しブロックの全体がオブジェクト三角形の外側にあるかどうかについて調査がなされる。その調査、すなわち、「ブロックの全体がオブジェクト三角形の外側に存在するか否か」を調査するサブプロシージャは、図１９を参照して以下で説明する。そのサブプロシージャは、ブロックが確かに、完全にオブジェクト三角形の外側にある（ＹＥＳの値によって表される）、またはブロックがオブジェクト三角形の外側に完全にあるかどうかを確認できない（ＮＯＴ  ＳＵＲＥの値によって表される）という結果を返すことができる。ＹＥＳの値が返された場合、ステップＳ５−４へ進み、繰り返しブロックがリジェクトされるようにマークされる。その後、「繰り返しブロックとオブジェクト三角形との間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる処理」から、その呼び出しもとの手順に戻る。
【００８２】
ステップＳ５−２において呼び出されたサブプロシージャ、「ブロックの全体が、完全にオブジェクト三角形の外側に存在するか否かのチェック」が、ＮＯＴＳＵＲＥの値を返す場合、すなわち、ブロックの全体がオブジェクト三角形の外側にあるかどうかを確認できない場合は、処理をステップＳ５−６に進めて、さらに、「ブロックの全体がオブジェクト三角形の内部に存在するか否かをチェックする」サブプロシージャを呼び出し、ブロックの全体がオブジェクト三角形の内側にあるかどうかを確認する。この処理の場合、はっきりした肯定的な結果（ＹＥＳの値によって表される）、またははっきりした否定的な結果（ＮＯの値によって表される）が得られる。
【００８３】
ＹＥＳの値が返された場合、すなわち、ブロックの全体がオブジェクト三角形の内側にある場合は、ステップＳ５−８へ進み、受け入れられたとして当該繰り返しブロックがマークされる。そして、ステップＳ５−１０で、「幾何学的テクスチャを重ね合わせる」サブプロシージャが呼び出される。このサブプロシージャについては後で説明する。そして、このサブプロシージャが完了すると、「繰り返しブロックとオブジェクト三角形との間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる」ためのサブプロシージャは、前述の「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」処理に戻る。
【００８４】
上述の「ブロックの全体がオブジェクト三角形の内側に存在するか否かをチェック」するサブプロシージャが、ＮＯの値を返す場合、すなわち、ブロックが、オブジェクト三角形の内側に完全にはない場合、処理はステップＳ５−１２に進む。ステップＳ５−１２では、「そのブロックのコーナーがオブジェクト三角形の内部に存在するか否かをチェック」するサブプロシージャが呼び出され、ブロックのコーナーがオブジェクト三角形の内側にあるかどうかを調査する。このサブプロシージャについては後述する。ここで、このサブプロシージャは、ブロックのコーナーがオブジェクト三角形の内側にある（ＹＥＳの値によって表される）、またはブロックのコーナーがオブジェクト三角形の内側にない（ＮＯの値によって表される）という結果を返すことができる。
【００８５】
ステップＳ５−１２のサブプロシージャがＹＥＳの値を返す場合、処理はステップＳ５−１４へ進み、「当該コーナーにおける幾何学的テクスチャの三角形を検出する」サブプロシージャが呼び出される。このサブプロシージャは、オブジェクト三角形の内側にあると識別された幾何学的なテクスチャの繰り返しブロックのコーナーをその頂点の１つとして有する幾何学的なテクスチャの三角形を識別する。サブプロシージャがこの三角形の識別を返すと、その三角形は、ステップＳ５−１６においてスターティング三角形（STARTING TRIANGLE）に指定される。
【００８６】
一方、「そのブロックのコーナーがオブジェクト三角形の内部に存在するか否かをチェック」するサブプロシージャがＮＯの値を返す場合はステップＳ５−１８に進み、さらに、「オブジェクト三角形の頂点がブロックの内側に存在するかをチェック」するサブプロシージャが呼び出される。「オブジェクト三角形の頂点がブロックの内側に存在するかをチェック」するサブプロシージャは、頂点がブロックの内側にある（ＹＥＳの値によって表される）、または頂点がブロックの内側にない（ＮＯの値によって表される）という結果を返すことができる。
【００８７】
このサブプロシージャがＹＥＳの値を返す場合、処理はステップＳ５−２０に進む。ステップＳ５−２０において、「その中にオブジェクト三角形の頂点が存在する幾何学的テクスチャの三角形を見出す」ためのサブプロシージャが呼び出される。このサブプロシージャについては、後でより詳細に説明するが、その機能は、幾何学的なテクスチャの三角形のリストに含まれている三角形の中から、オブジェクト三角形の識別された頂点がその中に存在する三角形を識別することである。幾何学的なテクスチャの三角形が識別されると、ステップＳ５−２２において、その三角形は、スターティング三角形（STARTING TRIANGLE）に指定される。
【００８８】
一方、「オブジェクト三角形の頂点がブロックの内側に存在するかをチェック」するサブプロシージャがＮＯの値を返す場合、すなわち、オブジェクト三角形の頂点がブロックの内側にない場合は、さらなるチェックがなされなければならない。
【００８９】
それまでの調査の結果が、この段階においてはまだ決定的でないという点は強調すべきである。後に実証するが、図３３で説明した状態がプロシージャにおけるこの段階に導くので、ブロックがオブジェクト三角形の外側にあると結論することができない。
【００９０】
ステップＳ５−２４において、サブ手順「スターティング三角形の検索のためにビンを走査する」サブプロシージャが呼び出される。このサブプロシージャの結果は、幾何学的なテクスチャの適切なスターティング三角形がオブジェクト三角形内に存在するか、ブロックの全体がオブジェクト三角形の外側にあるためにリジェクトされるようにマークされるかのいずれかである。ステップＳ５−２６において、ブロックが、リジェクトされるようにマークされているどうか（ＹＥＳの値によって表される）について、問い合わせがなされる。ブロックが、リジェクトされるようにマークされている場合、全部の手順は、前述されたプロシージャに戻り、新しいブロックについてチェックされる必要がある。ブロックが、リジェクトされるようにマークされていない（ＮＯの値によって表される）場合、「スターティング三角形の検索のためにビンを走査する」サブプロシージャは、ある三角形をスターティング三角形として識別したと結論することができる。
【００９１】
しかしながら、ステップＳ５−１６、Ｓ５−２２またはＳ５−２４の処理の結果としてスターティング三角形が識別された場合、「ブロックをオブジェクト三角形にクリップし、幾何学的テクスチャを重ね合わせる」ためのサブプロシージャがステップＳ５−２８において呼び出される。そしてこのサブプロシージャが終了して本ルーチンに戻ると、すぐに、「繰り返しブロックとオブジェクト三角形の間のオーバーラップをチェックし幾何学的テクスチャを重ね合わせる」処理を行なうサブプロシージャからその呼び出しもとのルーチンに戻る。
【００９２】
次に、図１９を参照して、図１８のステップＳ５−２において呼び出される、「ブロックの全体がオブジェクト三角形の外に存在するか否か」を判定する条件サブプロシージャについて説明する。
【００９３】
このプロシージャにおいて、まずで、ブロックの個々のコーナーに対応するＣＬＩＰフラグＦ1、Ｆ2、Ｆ3、Ｆ4をチェックする。ＣＬＩＰフラグの定義について、図３５を参照して説明する。
【００９４】
各頂点のフラグのフィールド内には、以下で、ＣＬＩＰフラグと呼ばれる３つのビットが、オブジェクト三角形を定義する３つのラインのいずれの側に頂点があるか示すために確保されている。各ビットは、頂点がオブジェクト三角形を含む対応するラインの内側にある場合には０の値を与えられ、ラインの他の側にある場合には１の値を与えられる。たとえば、図３５では、ＣＬＩＰフラグは、オブジェクト三角形７２ａを定義する３つのラインによって画定される領域に関連して示される。三角形内の領域が、値０００を有するＣＬＩＰフラグと一致することがわかる。
【００９５】
そのようにして、オブジェクト三角形７２ａに関係のあるポイントの位置は、容易に確認できる。
【００９６】
繰り返しブロックのコーナーについてのＣＬＩＰフラグが得られると、ステップＳ６−４は、クリップ・フラグのブール積、
Ａ＝Ｆ1・Ｆ2・Ｆ3・Ｆ4
を計算する。
【００９７】
次に、ステップＳ６−６において、ブール積Ａが０００と等しいかどうかチェックする。Ａが０００と等しい場合は、ステップＳ６−８に記述しているように、ブロックは少なくとも部分的に三角形の内側にある。したがって、本プロシージャは「ＮＯＴ  ＳＵＲＥ」の値を戻す。しかしながら、Ａが、０００と等しくない場合は、ステップＳ６−１０に記述しているように、ブロックは三角形の外側に完全になければならない。Ａがゼロでない値を有するためには、ブロックのコーナーのすべてが三角形を定義するラインの１つの外側になければならないからである。そしてそのような場合、本プロシージャは、「ＹＥＳ」の結果を戻す。
【００９８】
次に、図１８のステップＳ５−６において呼び出される、「ブロックの全体がオブジェクト三角形の内側に存在するか否か」を判断する条件プロシージャについて、図２０を参照して説明する。この場合、最初のステップＳ７−２において、ＣＬＩＰフラグのブールの和、すなわち、
Ｂ＝Ｆ1＋Ｆ2＋Ｆ3＋Ｆ4
が計算される。
【００９９】
ステップＳ７−４において、プロシージャは、Ｂが０００と等しいかどうかについてチェックする。Ｂが０００である場合、当該ブロックの全体が三角形の内側に存在することを意味する。それは、考慮中のブロックのコーナーのすべてが、ＣＬＩＰフラグの値０００を有する領域にある場合にのみ、Ｂが０００に等しくなるからである。そして、そのような、ＣＬＩＰフラグの値０００を有する領域は、三角形の内側の領域である。したがって、この場合、図２０のステップＳ７−６に記述されているように当該ブロックの全体が三角形の内側に存在すると判断され、本プロシージャは「ＹＥＳ」の値を戻す。一方、Ｂが０００と等しくない場合は、ステップＳ７−８に記述されているように、ブロックの全体が三角形の内側に存在することはない。このような場合、本プロシージャは「ＮＯ」の値を戻す。
【０１００】
続いて、図１８のステップＳ５−１０において呼び出される、「幾何学的テクスチャの重ね合わせ」のプロシージャについて図２１を参照して説明する。
【０１０１】
まず、ステップＳ８−２において、幾何学的なテクスチャの頂点が選択される。参照中のブロックの全体がオブジェクト三角形の内側にあるので、いずれの頂点も第１の例において考慮することができる。よって、リストにおける第１の頂点を選択することが最も都合が良い。その後、頂点は連続的に考慮することができる。
【０１０２】
次に、ステップＳ８−３において、ＶＩＳＩＴＥＤフラグがセットされているかどうかをチェックする。ＶＩＳＩＴＤフラグがセットされている場合、ｘ、ｙ、ｚ空間の頂点の座標はすでに計算されている。一方、ＶＩＳＩＴＥＤフラグがセットされていない場合、この「幾何学的テクスチャを重ね合わせる」プロシージャは、ステップＳ８−４に処理を進めてＶＩＳＩＴＥＤフラグをセットし、ステップＳ８−５で「ｘ、ｙ、ｚ空間における頂点の座標を計算する」ためのサブプロシージャを呼び出す。このサブプロシージャは、ｕ、ｖ空間での頂点の定義を、オブジェクト三角形上のｘ、ｙ、ｚ空間に変換し、ｘ、ｙ、ｚ空間でのそれらの座標にその頂点についての置換Ｄを重ねる。
【０１０３】
頂点のｘ、ｙ、ｚ座標が、ステップＳ８−５で識別されるか、または、頂点がすでに処理された（ＶＩＳＩＴＥＤフラグがオンしている）として検索されると、処理はステップＳ８−６へ進む。ステップＳ８−６では、それらをメモリに記憶されている「頂点リスト」に送り、そのリストからインデックスを得る。インデックスは、ステップＳ８−８で頂点オブジェクトＶのインデックス（Ｉ）フィールドに記憶される。考慮されるべき残りの頂点が存在するか否かをステップＳ８−１０でチェックし、そうである場合ステップＳ８−２に処理を戻すことによって、幾何学的なテクスチャの各頂点について同じように処理される。頂点のすべてに関して処理を終えると、ステップＳ８−１２において、頂点は、レンダリング・パイプライン５０に送られる。頂点のインデックスは、レンダリング・パイプライン５０によって返され、これらは、ステップＳ８−１４によって、図７で説明した構造で保持された頂点のリファレンスの代わりに三角形データにロードされる。次に、ステップＳ８−１６において、レンダリング・パイプライン５０に修正された三角形を送り、その後サブプロシージャは呼び出しもとのプロシージャに戻る。三角形は、それらが独自の幾何学的なテクスチャの頂点ではなく、レンダリングされた頂点を参照するために、修正される。
【０１０４】
次に、ステップＳ８−５において呼び出される、「ｘ、ｙ、ｚ空間における頂点の座標の計算」を行なうプロシージャについて、図２２を参照して以下に説明する。
【０１０５】
まず、ステップＳ９−２において、頂点のｘ、ｙ、ｚ座標が、オブジェクト三角形の頂点座標からの補間によって計算される。次に、ステップＳ９−４において、頂点におけるノーマルは、オブジェクト三角形の頂点において定義されたノーマルからの補間によって計算される。この補間は、オブジェクト三角形の頂点間のノーマルがはなはだしく変化することがありそうもないことから、正確である必要がない。したがって、ノーマルの補間によってもたらされる、単一個体からのノーマルの大きさにおけるいかなる縮小も、無視することができる。最終的に、ステップＳ９−６において、頂点Ｖiは、ｘ、ｙ、ｚ空間における新しい頂点の位置を得るために、頂点と関係した距離Ｄiによって、ｘ、ｙ、ｚ空間において補間されたノーマルの方向に置換えられる。その後、プロシージャは、戻る。
【０１０６】
次に、図１８のステップＳ５−１２において呼び出される、「ブロックのコーナーがオブジェクト三角形の内側に存在するか否か」を判断する条件サブプロシージャについて、図２３を参照して説明する。まず、ステップＳ１０−２において、繰り返しブロックの第１のコーナーが選択される。その第１のコーナーは、幾何学的なテクスチャ・データ構造の性質によって、幾何学的なテクスチャ９０に関連する頂点のリスト内の第１の位置にリストされる。次いで、ステップＳ１０−４において、そのコーナーがオブジェクト三角形の中に存在するか否かを調査する。コーナーがオブジェクト三角形の中に存在する場合、本プロシージャは、「ＹＥＳ」の値をもって戻る。
【０１０７】
そうでない場合は、ステップＳ１０−６に進み、繰り返しブロックのいずれかのコーナーが、まだチェックすべき状態にある(未チェックの状態にある)かどうか調べる。チェックすべき状態にあるコーナーが存在しない場合、本プロシージャは「ＮＯ」の値で戻る。しかしながら、依然としてチェックすべき他のコーナーが存在する場合、処理はステップＳ１０−８に進み、ブロックの次のコーナーが選択される。こうして、本プロシージャは、チェックすべきコーナーがなくなるか、または、オブジェクト三角形の内側にあるコーナーが見いだされるまで、ステップＳ１０−４、Ｓ１０−６、Ｓ１０−８が繰り返される。
【０１０８】
次に、図２４を参照して、図１８のステップＳ５−１４において呼び出される「当該コーナーにおける幾何学的テクスチャの三角形を見出す」ためのプロシージャについて説明する。このプロシージャは、繰り返しブロックのそのコーナーにおいて、幾何学的なテクスチャのビン８８を走査するステップＳ１１−２から開始される。ビンは、当該ビンに対応する領域と少なくとも部分的に一致する三角形のリストを含む。ステップＳ１１−４において、コーナーを頂点として用いる、ビンにリストされた三角形が見いだされる。その三角形は、ステップＳ１１−６で処理されたことを示すべくマーク（ＶＩＳＩＴＥＤ）される。その後、プロシージャは呼び出しもとのプロシージャへ戻る。
【０１０９】
次に、「オブジェクト三角形の頂点がブロック内に存在するか否か」を判断するための条件プロシージャについて図２５を参照して説明する。本プロシージャは、まず、ステップＳ１２−２においてオブジェクト三角形の第１の頂点を選択することから始まる。その後、ステップＳ１２−４において、その頂点が繰り返しブロックの中に存在するかどうかについて調査する。頂点が繰り返しブロックの中に存在する場合、プロシージャは「ＹＥＳ」の値で戻る。そうでない場合、ステップＳ１２−６において、オブジェクト三角形のいずれかの頂点において、未チェックのものがあるかを確認する。未チェックのものが存在しない場合、本プロシージャは「ＮＯ」の値で戻ることになる。しかしながら、チェックすべき頂点(未チェックの頂点)が存在する場合、ステップＳ１２−８において、新しい次の頂点が考慮のために選択され、ステップＳ１２−４に戻って上記の処理を繰り返す。
【０１１０】
以上のようにして、プロシージャは、チェックすべき頂点がなくなるか、またはブロックの内側にあるオブジェクト三角形の頂点が見いだされるまで、継続される。
【０１１１】
次に、図２６を参照して、「その中にオブジェクト三角形の頂点が存在する幾何学的テクスチャの三角形を見出す」ためのサブプロシージャを説明する。このサブプロシージャは、図１８のステップＳ５−２０において呼び出される。サブプロシージャは、ステップＳ１３−２から開始され、まず、頂点が含まれているビンＢijを識別する。そのビンは、当該ビンに対応する領域と少なくとも部分的に一致する幾何学的なテクスチャの三角形のリストを含み、ステップＳ１３−４においては、そのビンにリストされている三角形を選択する。
【０１１２】
ステップＳ１３−８では、考慮中のオブジェクト三角形の頂点が選択された三角形の内側にあるかどうかについて調査される。オブジェクト三角形の頂点が選択された三角形の内側にある場合、三角形は検出されたとして、その三角形のためのＶＩＳＩＴＥＤフラグがステップＳ１３−６でセットされ、本プロシージャは呼び出しもとのプロシージャに戻る。そうでない場合、処理はステップＳ１３−１０に進み、次の三角形がビンから選択され、再びステップＳ１３−８を実行する。最終的に、オブジェクト三角形の頂点を含むビンにリストされた三角形が、このプロシージャによって見いだされる。
【０１１３】
次に、図１８のステップＳ５−２４において呼び出された、「スターティング三角形のために、ビンを通してスキャンする」ためのプロシージャについて図２７を参照して説明する。ステップＳ１４−２で、繰り返しブロックの第１のビンが考慮のために選択される。ここでは、第１のビンとしてビンＢ00を選択するが、２次元の配列から第１の項目を選択する他の方法によって考慮されてもよい。
【０１１４】
次に、ステップＳ１４−４そにおいて、そのビンに関してリストされている第１の三角形が考慮のために選択される。ステップＳ１４−８で、その三角形がオブジェクト三角形と重なるかどうかについて、調査がなされる。その三角形がオブジェクト三角形と重なる場合、その三角形は、スターティング三角形としてステップＳ１４−６で指定される。その三角形は、ステップＳ１４−１０で、処理済としてマークされる。そして、プロシージャは、呼び出しもとのプロシージャへ戻る。
【０１１５】
しかしながら、ステップＳ１４−８の調査の結果が否定的である場合、ステップＳ１４−１２で、まだ訪問されていない他の三角形がそのビンにリストされているかどうかについて、さらにチェックする。訪問されていない三角形が存在する場合、ビンからの新しい三角形がステップＳ１４−１４で選択され、手順は、ステップＳ１４−８以降の処理を繰り返す。そのビンで、他の三角形が残っていない場合は、ステップＳ１４−１６へ進み、考慮すべき他のビンが存在するかどうかについて、さらに問い合わせがなされる。考慮すべき他のビンが存在する場合、ステップＳ１４−１８で新たなビンが選択され、プロシージャはステップＳ１４−４以降を繰り返す。しかしながら、それ以上考慮すべきビンがなく、オブジェクト三角形に重なる三角形も見いだされなかった場合は、ステップＳ１４−２０に示されるように、ブロックの全体が三角形の外側にある。従って、その場合には、そのブロックは、ステップＳ１４−２２で、「リジェクトされる」ようにマークされ、プロシージャは呼び出しもとのプロシージャに戻る。
【０１１６】
次に、図２８を参照して、「ブロックをオブジェクト三角形にクリップし、幾何学的テクスチャを重ね合わせる」ためのサブプロシージャを説明する。このサブプロシージャは、図１８で説明したように、「繰り返しブロックとオブジェクト三角形の間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる」プロシージャにおけるステップＳ５−２８によって呼び出される。本プロシージャによれば、まず、ステップＳ１５−２で、前に出力されたスターティング三角形を選択する。
【０１１７】
そして、ステップＳ１５−４において、スターティング三角形として識別された三角形の３つの頂点すべてが考慮される。ステップＳ１５−６では、３つの頂点すべてが、オブジェクト三角形の内側にあるかどうかについてチェックする。前に説明したように、このチェックは、ＣＬＩＰフラグを用いて実行することができる。これらは、計算する必要があるかもしれないし、あるいは、この繰り返しブロックについて頂点が以前に処理されたなら、それらは、頂点についてキャッシュされているかもしれない。
【０１１８】
３つの頂点すべてが、オブジェクト三角形の内側にある場合、三角形は、ステップＳ１５−８においてレンダリング・パイプラインに出力される。もしそうでなければ、ステップＳ１５−１０で、三角形はオブジェクト三角形の形にクリップされ、クリップされた形がレンダリング・パイプラインに出力される。この場合、処理はステップＳ１５−１２へ進み、幾何学的なテクスチャの三角形の３つの頂点のうちの２つの頂点とそれによって定義されるエッジとが、オブジェクト三角形の外側にあるかどうかについて調査される。この調査の結果が「真」である場合は、幾何学的なテクスチャ内の上記三角形に隣接する三角形は、それがオブジェクト三角形の内側にないことが保証される。したがって、処理をステップＳ１５−１４に進め、「クリップアウト」される。クリップアウトは、その三角形がそれ以降考慮されないようにＶＩＳＩＴフラグをセットすることによって実行される。
【０１１９】
三角形またはクリップされた形が、レンダリング・パイプラインに渡されると、ステップＳ１５−１６では、以前にクリップアウトされておらず、処理済にもなっていない、考慮中のその三角形に隣接するいずれかの三角形が存在するかどうかについて、調査する。隣接する三角形が考慮されなければならない場合、それは、ステップＳ１５−１８で考慮のために選択され、ステップＳ１５−４以降の処理を繰り返す。隣接する三角形が残っていない場合は、ステップＳ１５−２０で、考慮中の三角形が考慮される第１の三角形であるかどうかについて、チェックがなされる。それが第１の三角形であり、サブプロシージャが終了したと考えられる場合は、呼び出しもとのプロシージャに戻る。さもなければ、サブプロシージャは、ステップＳ１５−２２に進み、以前に考慮された三角形の考慮に戻る。三角形がメモリに記憶されているリンクされたリストによって考慮されるレコードの順番を保持することができる。以前に考慮された三角形は、ステップＳ１５−１６で、それから再び考慮され、以前にクリップアウトされないで、処理もされない、隣接するいずれかの三角形が、残っているかどうかを確認する。
【０１２０】
オブジェクト三角形に重なる幾何学的なテクスチャのすべての三角形が見いだされると、その後、プロシージャが、三角形の考慮の順番を含むリンクされたリスト中のより早い三角形を引き続いて考慮することがわかる。結局、最初に考慮した三角形に進み、サブプロシージャは戻る。３つの例が、「ブロックをオブジェクト三角形にクリップし、幾何学的なテクスチャを重ね合わせる」ためのプロシージャのオペレーションから与えられる。
【０１２１】
まず、図２９で示された繰り返しブロック９０ｂが、図３０でより詳細に示される。図１８で記述された手順は、その繰り返しブロックに関連して記述される。最初に、ステップＳ５−２が実行され、すべてのコーナーが三角形の１つの側にあるわけではないので、ブロックのコーナーについてのＣＬＩＰフラグのブール積がゼロになることがわかる。したがって、ＮＯＴ  ＳＵＲＥの値が返される。
【０１２２】
ステップＳ５−６では、２つのコーナーが三角形の外側にあるので、ブール和が、ゼロでないことがわかる。したがって、そのステップではＮＯの結果が返され、ステップＳ５−１２が実行される。図２３の処理により、Ｖ1は、オブジェクト三角形７２の中にあることがわかる。それから、ステップＳ５−１４と図２４の処理により、そのコーナーにおいてビンＢ09は、コーナーＶ1を頂点として用いる三角形ｔ1（図１３参照）を識別するため、ステップＳ１１−２で走査される。その三角形ｔ1は、そのＶＩＳＩＴフラグをセットすることによって、処理されたとして、ステップＳ１１−６でマークされ、ステップＳ５−１６で、三角形ｔ1は、スターティング三角形に指定される。
【０１２３】
それから、ステップＳ５−２８と図２８の処理により、三角形ｔ1の３つの頂点がステップＳ１５−４で考慮され、すべての頂点がステップＳ１５−６でオブジェクト三角形の内側にあることがわかる。したがって、三角形ｔ1の全体が、オブジェクト三角形７２の内側に存在する。三角形ｔ1は、ステップＳ１５−８でレンダリング・パイプライン５０に出力され、以前にクリップアウトされておらず、処理もされていない、隣接する三角形ｔ2が見出される。
【０１２４】
したがって、ｔ2に対する処理に進み、ステップＳ１５−１８で、そのＶＩＳＩＴフラグをセットすることによって、処理されたとしてマークされる。ｔ2は、ステップＳ１５−６で、オブジェクト三角形の内側にすべての３つの頂点を有することも見出され、それに続いて、それは、同じようにステップＳ１５−９でレンダリング・パイプラインに出力される。
【０１２５】
三角形ｔ3とｔ4についても、同じように考慮され、同じ結果となる。ｔ4の考慮の後に、処理は、同じくオブジェクト三角形の内側に存在する隣接する三角形ｔ5を見いだし、それはレンダリング・パイプラインに出力される。しかしながら、その三角形ｔ5は、以前にクリップアウトされておらず訪問もされていない隣接する三角形を有していない。また、その三角形は、考慮される第１の三角形ではない。したがって、ステップＳ１５−２２で、処理は、以前に考慮された三角形ｔ4に逆戻りする。ｔ4は、それから、いずれか他の隣接する三角形が、前にクリップアウトされておらず、処理もされていないかどうかを確認するために再びチェックされる。そのような三角形としてｔ6が見いだされ、その頂点が考慮される。
【０１２６】
ｔ6の頂点の１つは、オブジェクト三角形の外側にある。したがって、ｔ6は、ステップＳ１５−１０でオブジェクト三角形によりクリップされなければならない。次に、クリップされた形は、レンダリング・パイプラインに出力される。出力されない三角形ｔ6の部分は、図３０においてハッチングで示される。ステップＳ１５−１２において、三角形ｔ6の頂点の１つだけが、オブジェクト三角形の外側にあることがわかり、それで、プロシージャは、ステップＳ１５−１６に進み、以前にクリップアウトされておらず、処理もされていない、隣接する三角形についてチェックする。
【０１２７】
三角形ｔ7が見いだされ、そしてそれは同じくオブジェクト三角形の中ですべての３つの頂点を有するわけではない。したがって、その三角形のクリッピングが起こる。この場合、三角形ｔ7は、オブジェクト三角形の外側にある２つの頂点とそれによって定義されたエッジを有する。したがって、そのエッジに沿って隣接する三角形ｔ8は、その全体がオブジェクト三角形の外側に存在することが保証され、ステップＳ１５−１４で三角形ｔ8をクリップアウトすることができる。クリップアウトは、その三角形のためにＶＩＳＩＴフラグを構成することによって、達成される。また、考慮中のｔ7で、隣接する三角形ｔ15が見いだされる。この三角形も通常の方法でクリップされる。次に、プロシージャは、三角形ｔ9をクリップアウトする前に、三角形ｔ14、ｔ13、ｔ12、ｔ11およびｔ10を通って、実行される。
【０１２８】
それから、三角形ｔ16が考慮され、三角形ｔ16は以前にクリップアウトされず、処理もされていないような、隣接する三角形を有していないことがわかる。この状態は、考慮されたすべての三角形に当てはまり、それで、手順は、再び三角形ｔ1に達するまで、各三角形を通ってカウントバックする。その時点において、プロシージャは戻る。
【０１２９】
第２の例が、図３１と図３２に示される。この場合、リファレンスブロック９０は、完全にオブジェクト三角形７２ａを含んでいる。したがって、ＮＯＴ  ＳＵＲＥの結果が、ステップＳ５−２から得られ、ＮＯの結果が、ステップＳ５−６から得られる。また、ブロックのコーナーがオブジェクト三角形の中にないので、ＮＯの結果が、ステップＳ５−１２から得られる。
【０１３０】
しかしながら、オブジェクト三角形の頂点のすべては、ブロック９０の中にある。したがって、それらの頂点の１つが、ステップＳ５−１８で見いだされると、オブジェクト三角形のその頂点を含むビンが、ステップＳ１３−２（図２６）において見いだされる。この場合、ビンＢ51が識別される。そのビンＢ51は、そのリストに三角形ｔ6、ｔ7およびｔ8を含む。三角形ｔ6が、ステップＳ１３−４で選択される。
【０１３１】
しかしながら、オブジェクト三角形は、三角形ｔ6の中に頂点を有していない。したがって、三角形ｔ6はリジェクトされ、次いで、ビンＢ51からｔ7が選択される。オブジェクト三角形は、三角形ｔ7の中に頂点を有しており、三角形のすべての３つの頂点がステップＳ１５−４で考慮される。その結果、それらの３つの頂点のうちの１つだけが、オブジェクト三角形の内側にあることがわかり、したがってステップＳ１５−１０でクリップされる必要がある。さらに、他の２つの頂点によって定義されたエッジがオブジェクト三角形の外側にあるので、そのエッジに沿って隣接する三角形、すなわち三角形ｔ6は、ステップＳ１５−４において、クリップアウトされる。
【０１３２】
前に説明したように、プロシージャは、三角形ｔ8、ｔ9、ｔ10、ｔ11、ｔ12、ｔ1、ｔ2およびｔ3に関して繰り返される。三角形ｔ3において、三角形ｔ4が、ｔ3のエッジのうち、オブジェクト三角形の完全に外側にあるエッジに沿って隣接していることから、クリップアウトされることがわかる。プロシージャは、三角形ｔ14、ｔ13、ｔ16およびｔ15を考慮することによって終わる。ここで、三角形ｔ15に隣接する三角形のすべてが、以前に訪問されているので、プロシージャの終了であることがわかる。したがって、プロシージャは、プロシージャが戻るとき、再び三角形ｔ7に達するまで、前に評価された三角形を通して、カウントバックする。この場合、三角形ｔ5は、唯一ｔ5に隣接する三角形ｔ4が、オブジェクト三角形の外側に完全にあるので、クリップアウトされるから、まったく考慮されないことが強調されべきである。
【０１３３】
次に、図３３と、その繰り返しブロックの詳細を示す図３４を参照して、第３の例を検討する。
【０１３４】
ブロック９０に関連して、ブロック９０のコーナーは、オブジェクト三角形の中に存在しない。さらに、オブジェクト三角形の頂点もブロックの中に存在しない。したがって、ステップＳ５−２４で、ビンは、オブジェクト三角形に重なる三角形を含む最初のビンが見いだされるまで順番に走査される。ここで、最初に検出されるビンは、ビンＢ20と識別され、これは三角形ｔ4を含む。ｔ4は、スターティング三角形に指定され、そしてｔ4の３つの頂点すべてが、ステップＳ１５−４で考慮される。その結果、それらの頂点の１つが、オブジェクト三角形の中にあることが見いだされる。したがって、ｔ4はクリップされ、クリップされた形は、レンダリング・パイプラインに出力される。１つの頂点だけが、オブジェクト三角形の中にあるので、他の２つの頂点によって定義されたエッジ（辺）が考慮され、その全体がオブジェクト三角形の外側に存在するエッジが見出される。したがって、そのエッジに沿って隣接する三角形、すなわち三角形ｔ5は、ステップＳ１５−４でクリップアウトされる。その後、三角形ｔ4、ｔ3、ｔ2、ｔ1、ｔ12、ｔ11、ｔ10、ｔ9、ｔ8、ｔ7、およびｔ6が、前に説明した処理手順で考慮される。しかしながら、ｔ6が考慮される時点で、その隣接する三角形、すなわち三角形ｔ4とｔ7はすでに処理されていることがわかる。したがって、考慮は、前に考慮された三角形、すなわち、三角形ｔ7に戻される。その三角形は、以前にクリップアウトされておらず、かつ訪問されていない他の隣接する三角形、すなわち三角形ｔ15を有する。その後、三角形ｔ14、ｔ13およびｔ16が考慮され、そしてレンダリング・パイプラインに出力される。ｔ16が考慮される時点で、三角形ｔ16が以前にクリップアウトされておらず、処理されていない隣接する三角形を有していないことがわかる。しかしながら、この場合、以前に考慮された三角形への逆戻りが、最初に考慮された三角形（スターティング三角形）、すなわち三角形ｔ4に導くことになり、これによってプロシージャは戻る。
【０１３５】
上記で説明した３つの例によって、図１８で説明した手順が、三角形のオブジェクトの上に正方形の繰り返しブロックをかぶせることによって遭遇し得るすべての状況を論ずることを示すことができる。
【０１３６】
上記の記述された幾何学的なテクスチャの装置と方法は、見る人に、オブジェクトの上のテクスチャ・ビット・マップだけではなく、テクスチャ・ビット・マップを向上する実際の幾何学的なテクスチャも含むレンダリングされたイメージを提供する。
【０１３７】
好都合なことに、幾何学的なテクスチャは、オブジェクトが所定の閾値よりも近い距離から見られる場合のみ、そこに存在するオブジェクトにマップすることができた。その閾値の距離よりも離れている場合、必要とされる詳細のレベルが、レンダリングされるオブジェクトにさらに多角形を組み込むことを正当化しないと想定され、その結果、幾何学的なテクスチャは除去できる。換言すれば、視点がオブジェクトに向かって動くのにつれて、オブジェクトに与えられる詳細さのレベルが増大する。
【０１３８】
上記の与えられた例は、オブジェクト三角形の存在している形に幾何学的なテクスチャの個別の三角形をクリップする機能を最も明らかに示すものである。その点で、存在しているオブジェクト三角形に幾何学的なテクスチャの形を関連づける試みがなかった。しかしながら、本発明は、幾何学的なテクスチャが形を有し、多角形を含むように、有効に適用することができ、そしてそれはテクスチャが使用中に適用すべきである基礎をなしているオブジェクト多角形またはオブジェクトの形状と関連する。
【０１３９】
ある状況では、小数の大きい多角形によってオブジェクトを表すことは都合が良く、その上に、１つまたは複数のテクスチャが、重なる。多角形の一部が表れるのを防ぐために、１つまたは複数のテクスチャは、マスクを提供することができる。テクスチャ・マスクは、通常、それが適用されるテクスチャと同じ解像度のマップであり、そのテクスチャ・ピクセル（以下で「テクセルである」と呼ばれる）ＯＮまたはＯＦＦのいずれかに切り換えられる。ＯＦＦに切り換えられたマスクのテクセルは、テクスチャでの対応するテクセルが使われるのを防ぐ。
【０１４０】
図３６は、その方法で構成されたオブジェクトの例を説明する。また、これに続く図は、オブジェクトの外観全体を共に定義する基礎をなしている部品を説明する。図３７は、図３６で説明した柵１００の部分において、表すべき表面１０４を共に定義する隣接する三角形１０２を示す。
【０１４１】
三角形１０２は、図３８で説明したように、前にテクスチャ・マップに記述されたように、ｕ、ｖ空間でマップする。テクスチャ・マップの熟練したデザインによって、フェンス・オブジェクトは、テクスチャ・マップの繰り返しから構成され、それによって、オブジェクト全体の記憶のために必要とされるメモリ空間の量を減らす。
【０１４２】
固体的なフェンシング部分１００の一部ではないテクスチャの部分が表現されないことを保証するために、テクスチャ・マスキング・マップ１０８が、テクスチャ・マップ１０６に適用される。テクスチャ・マスキング・マップ１０８は、テクスチャ・マップ１０６と同じ解像度を有する。
【０１４３】
テクスチャ・マスキング・マップ１０８の部分１１０について、図４０でさらに詳しく説明する。これは、テクスチャ・マップのテクセルの解像度が、近づいてオブジェクトを見るときに、その観察者がぎざぎざのエッジ１１２を認識するのを防ぐのに十分ではないことを示す。これは、審美的に好ましくない。
【０１４４】
上記のように、オブジェクトと観察者との間の距離が、詳細レベルの閾値より低い場合、幾何学的なテクスチャが、テクスチャ・マップ１０６に適用される。テクスチャ・マップ１０６に適用される幾何学的なテクスチャ１１４は、図４１と図４２に示される。
【０１４５】
マスク・テクスチャと共に幾何学的なテクスチャを使用することで起こり得る潜在的な２つの問題は、特にテクスチャが近い距離から見られる場合、テクスチャ・マスクの解像度の限界が目に見えてしまうことと、幾何学的なテクスチャの幾何学的模様によってクリップされてしまうかもしれないということである。同じく、テクスチャの全体的に覆われた部分によってカバーされたいくらかの幾何学的模様がレンダリング・パイプラインになお出力されることになり、これは非能率的である。
【０１４６】
したがって、幾何学的なテクスチャは、さらに「ＯＮ」、または「ＯＦＦ」としてフラグを付けられることができる三角形を含む。「ＯＦＦ」のフラグを付けられた三角形は、装置によって、描画の必要がないと認識される。この特徴は、この場合に有用である。なぜなら、描かれるべき三角形がテクスチャ・マスクのエッジから、少し離れて置かれ、それによって、テクスチャ・マスク１１０の限定された解像度によって生成されたぎざぎざのエッジ１１２を除去するように、幾何学的なテクスチャを設計できることを意味するからである。図４１と４２での影をつけた三角形は、「ＯＦＦ」として適用されて、それで描かれない。これらは、テクスチャ・マスク１１０の上のさらなるマスクとして働き、ぎざぎざのエッジ１１２を取り去る。
【０１４７】
この構成の利点は、「ＯＦＦ」というマークを付けられている三角形が、レンダリング・パイプラインに出力する必要がないことである。これは、幾何学的に強化されたオブジェクトのレンダリングをより効率的にする。
【０１４８】
このようにして使われた幾何学的なテクスチャの効果は、比較的簡単な３次元のプリミティブから生み出されたオブジェクトの個体性に関して、見る人に提供され得るイメージの品質を向上することである。
【０１４９】
図４３と４４は、幾何学的なテクスチャ三角形と関係した、非描画（UNDRAWN）／描画（DRAWN）フラグを考慮するべく、図２１と図２８をそれぞれ修正したバージョンのフローチャートである。したがって、図示されるステップの多くは、図２１と図２８に関連して記述されたものと同じである。しかしながら、図４３では、ステップＳ１６−１６では、すべての三角形をレンダリング・パイプラインに送るステップＳ８−１６とは異なり、注目する三角形についての非描画／描画フラグをチェックすることをさらに含み、そのフラグが「描画」を表す場合にのみ、当該三角形を出力する。
【０１５０】
また、図４４Ａ，Ｂでは、ステップＳ１７−８で三角形をレンダリング・パイプラインに出力する前に、またはステップＳ１７−１０で三角形をクリップして出力する前に、注目されている三角形が描かれるべきであるかどうかを確認するべく、ステップＳ１７−７またはステップＳ１７−９で、それぞれチェックがなされる。描画すべきものである場合、方法は、ステップＳ１７−８またはステップＳ１７−１０に処理を移す。そうでない場合、すなわち、「非描画」にマークを付けられている場合、プロセスは、三角形を出力するステップＳ１７−８、Ｓ１７−１０を迂回して、次のステップＳ１７−１６またはＳ１７−１２を続ける。
【０１５１】
本発明は、本明細中に説明したＯＮ／ＯＦＦフラグによるマスキングの使用を組み込むか否かにかかわらず、注目のオブジェクトが見られている距離に依存して、起伏（relief）の特徴の異なる詳細さのレベルでオブジェクトを表すことができる手段を提供する。そのようにして、長い距離からは目に見えない特徴の不要なレンダリングを行なうことなしに、必要に応じて視覚における高いレベルの写実性を達成することができる。
【０１５２】
図４５は、図３６で説明したオブジェクト１００の上に、図４１と図４２で説明した幾何学的なテクスチャを重ねた結果を説明する図である。コンピュータは、これらが、追加の幾何学的模様を加えることを正当化するのに十分近いと思われるように、オブジェクトの三角形１０２の最も近い対の上に幾何学的なテクスチャを重ねた。図４５は、重ねられた追加の幾何学的模様の堅実さを説明するために、いくつかの基礎をなしているワイヤ・フレームの幾何学的模様を示すが、その幾何学的模様の追加が、オブジェクトの外観全体を向上させ、特に、気づかれている関係での欠陥についての見る人の位置に十分に近いオブジェクトのそれらの部分を向上させる。
【０１５３】
なお、本発明は、複数の機器（例えばホストコンピュータ，インタフェイス機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【０１５４】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１５５】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１５６】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０１５７】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１５８】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【図１】本発明の一実施形態に従って操作されるコンピュータの部品を示す略図である。
【図２】図１に示した実施形態に従ったレンダリングのパイプラインの部品を示す略図である。
【図３】図１に示した実施形態に従った幾何学的なテクスチャが適用すべきオブジェクトの斜視図である。
【図４】幾何学的なテクスチャのためにデータ構造を組込み、図３に示したオブジェクトを定義するデータ構造を示す略図である。
【図５】図４に示した幾何学的なテクスチャのデータ構造の略図である。
【図６】図５に示したデータ構造内の頂点オブジェクトのデータ構造を示す略図である。
【図７】図５に示したデータ構造内の三角形オブジェクトのデータ構造を示す略図である。
【図８】本発明の一実施形態に従った第１の幾何学的なテクスチャの平面図である。
【図９】図８に示した第１の幾何学的なテクスチャと関連した図７でのセットアウトとしての三角形オブジェクトのリストを示す。
【図１０】図８に示した第１の幾何学的なテクスチャと関連したデータ構造のビンの内容を示す略図である。
【図１１】所与のオブジェクトに幾何学的なテクスチャを組み込むプロセスに含められたステップを説明するフローチャートである。
【図１２】図１１に示した手順のｕ、ｖ空間における幾何学的テクスチャを定義するサブプロシージャに含まれているステップを説明するフローチャートである。
【図１３】本発明の一実施形態に従った第２の幾何学的なテクスチャの平面図である。
【図１４】図１３に示した幾何学的なテクスチャのより低いエッジから見られた、図１３に示した幾何学的なテクスチャの正面図である。
【図１５】図１３に示したような、図１５が右手のエッジから見られる図１３に示した幾何学的なテクスチャの正面図である。
【図１６】図１１に示したプロシージャにおいて呼び出される、「オブジェクトの三角形を選択し、その上に幾何学的テクスチャをマップする」サブプロシージャに含まれているステップを説明するフローチャートである。
【図１７】図１６に示したサブプロシージャにおいて呼び出される、「ｕ、ｖ空間における三角形の解放範囲を計算する」サブプロシージャに含まれているステップを説明するフローチャートである。
【図１８】図１６に示したサブプロシージャにおいて呼び出される、「繰り返しブロックとオブジェクト三角形との間のオーバーラップをチェックし、幾何学的テクスチャを重ね合わせる」サブプロシージャに含まれているステップを説明するフローチャートである。
【図１９】図１８に示したサブプロシージャで呼び出される、「ブロックの全体がオブジェクト三角形の外側に存在するか否か」を判断する条件サブプロシージャに含まれているステップを説明するフローチャートである。
【図２０】図１８に示したサブプロシージャで呼び出される、「ブロックの全体がオブジェクト三角形の内側に存在するか否か」を判断するための条件サブプロシージャに含まれているステップを説明するフローチャートである。
【図２１】図１８に示したサブプロシージャで呼び出される、「幾何学的テクスチャを重ね合わせる」サブプロシージャに含まれているステップを説明するフローチャートである。
【図２２】図２１に示したサブプロシージャで呼び出される、「ｘ、ｙ、ｚ空間における頂点の座標を計算する」サブプロシージャに含まれているステップを説明するフローチャートである。
【図２３】図１８に示したサブプロシージャで呼び出される、「ブロックのコーナーがオブジェクト三角形の内部に存在するか否か」を判断する条件サブプロシージャに含まれているステップを説明するフローチャートである。
【図２４】図１８に示したサブ手順の「コーナーにおいて幾何学的テクスチャの三角形を見つける」サブプロシージャに含まれているステップを説明するフローチャートである。
【図２５】図１８に示したサブプロシージャで呼び出される、「オブジェクト三角形の頂点がブロックの内部に存在するか否か」を判断する条件サブプロシージャに含まれているステップを説明するフローチャートである。
【図２６】図１８に示したサブプロシージャで呼び出される、「その中にオブジェクト三角形の頂点が存在する幾何学的テクスチャの三角形を検出する」サブプロシージャに含まれているステップを説明するフローチャートである。
【図２７】図１８に示したサブプロシージャで呼び出される、「スターティング三角形を探すべくビンを走査する」サブプロシージャに含まれているステップを説明するフローチャートである。
【図２８】図１８に示したサブプロシージャで呼び出される、「ブロックをオブジェクト三角形にクリップし、幾何学的テクスチャを重ね合わせる」サブプロシージャに含まれているステップを説明するフローチャートである。
【図２９】幾何学的なテクスチャを適用すべき、図３に示したオブジェクトの三角形の第１の描画のｕ、ｖ空間におけるプロットを示す図である。
【図３０】図２９に示したオブジェクト三角形のブロックへの、図１８に示した処理の適用を示す図である。
【図３１】幾何学的なテクスチャを適用すべき三角形の第２の描画の、ｕ、ｖ空間におけるプロットを示す図である。
【図３２】図３１に示した三角形への図１８に示した手順の適用を示す図である。
【図３３】幾何学的なテクスチャを適用すべき三角形の、第３の描画の、ｕ、ｖ空間におけるプロットを示す図である。
【図３４】図３３に示した三角形のブロックへの図１８に示した手順の適用を示す図である。
【図３５】三角形のエッジに対応するポイントの位置を確認する方法を説明する図である。
【図３６】幾何学的なテクスチャを、第２の特定の例に従って適用すべき３次元のオブジェクトの斜視図である。
【図３７】図３６で説明したオブジェクトの基礎をなしている構造を定義する多角形の斜視図である。
【図３８】図３６に示したオブジェクトの外観を定義するために、タイルされたテクスチャ・マップを説明する図である。
【図３９】使用中の図３８に示したテクスチャ・マップの上にかぶせられるテクスチャ・マスクを説明する図である。
【図４０】図３９に示したテクスチャ・マスクの一部を詳細に説明する図である。
【図４１】図３６に示したオブジェクトに適用される幾何学的なテクスチャの平面図である。
【図４２】図４１に示した幾何学的なテクスチャの側面図である。
【図４３】第２の実施形態に従った、「幾何学的テクスチャの重ね合わせ」のサブプロシージャを示すフローチャートである。
【図４４Ａ】第２の実施形態に従った、「ブロックをオブジェクト三角形でクリップし、幾何学的テクスチャを重ね合わせる」サブプロシージャのフローチャートである。
【図４４Ｂ】第２の実施形態に従った、「ブロックをオブジェクト三角形でクリップし、幾何学的テクスチャを重ね合わせる」サブプロシージャのフローチャートである。
【図４５】図４１と４２に示した幾何学的なテクスチャを重ね合わせた後の図３６に示したオブジェクトの斜視図である。
【図１】
0004467704.tif 000002
【図２】
0004467704.tif 000003
【図３】
0004467704.tif 000004
【図４】
0004467704.tif 000005
【図５】
0004467704.tif 000006
【図６】
0004467704.tif 000007
【図７】
0004467704.tif 000008
【図８】
0004467704.tif 000009
【図９】
0004467704.tif 000010
【図１０】
0004467704.tif 000011
【図１１】
0004467704.tif 000012
【図１２】
0004467704.tif 000013
【図１３】
0004467704.tif 000014
【図１４】
0004467704.tif 000015
【図１５】
0004467704.tif 000016
【図１６】
0004467704.tif 000017
【図１７】
0004467704.tif 000018
【図１８】
0004467704.tif 000019
【図１９】
0004467704.tif 000020
【図２０】
0004467704.tif 000021
【図２１】
0004467704.tif 000022
【図２２】
0004467704.tif 000023
【図２３】
0004467704.tif 000024
【図２４】
0004467704.tif 000025
【図２５】
0004467704.tif 000026
【図２６】
0004467704.tif 000027
【図２７】
0004467704.tif 000028
【図２８】
0004467704.tif 000029
【図２９】
0004467704.tif 000030
【図３０】
0004467704.tif 000031
【図３１】
0004467704.tif 000032
【図３２】
0004467704.tif 000033
【図３３】
0004467704.tif 000034
【図３４】
0004467704.tif 000035
【図３５】
0004467704.tif 000036
【図３６】
0004467704.tif 000037
【図３７】
0004467704.tif 000038
【図３８】
0004467704.tif 000039
【図３９】
0004467704.tif 000040
【図４０】
0004467704.tif 000041
【図４１】
0004467704.tif 000042
【図４２】
0004467704.tif 000043
【図４３】
0004467704.tif 000044
【図４４Ａ】
0004467704.tif 000045
【図４４Ｂ】
0004467704.tif 000046
【図４５】
0004467704.tif 000047