(57)【要約】【課題】３次元コンピュータグラフィック生成システムにおいてクリッピング変更子ボリュームをクリップするための方法及び装置を提供する。【解決手段】オブジェクトは、平面ポリゴンのセットとして表現される。次に、どのポリゴンが変更子ボリュームを形成するかについて表示が提供される。どのポリゴンの変更子ボリュームがクリッピング面（４）と交差するかについて判定が行われる。変更子ボリュームのポリゴンとクリッピング面との交差内のクリッピング面上で更なるポリゴンを生成し、これらを前記平面ポリゴンのセットに挿入する。クリッピング面の前方に存在すると判定されたポリゴンの部分はここで廃棄される。【選択図】図１
2008269659.tif 000002
【特許請求の範囲】
【請求項１】
３次元コンピュータグラフィック生成システムにおいてクリッピング面と交差する箇所で変更子ボリュームをクリップする方法において、
画像内のボリュームを平面三角形のセットであるとして表現する段階と、
どの三角形が変更子ボリュームを形成するかについて、表示を提供する段階と、
変更子ボリュームのどの三角形が前記クリッピング面と交差するかを判定する段階と、
前記クリッピング面と交差すると判定された変更子ボリュームの三角形の各々から１つ又は２つの新しい三角形を生成する段階と、
前記変更子ボリュームの三角形と前記クリッピング面との交差内でクリッピング面上に更なる三角形を生成する段階と、
これら三角形を前記平面三角形のセットに挿入する段階と、
前記クリッピング面の前方に存在すると判定された三角形の部分を廃棄する段階と、から成ることを特徴とする方法。
【請求項２】
前記更なる三角形を生成する段階は、
前記クリッピング面と交差する変更子ボリュームの２つ又はそれ以上の隣接する三角形について、交差の箇所を求める段階と、
前記交差の箇所と交差の箇所の間に少なくとも１つの別の三角形を生成する段階と、から成ることを特徴とする請求項１に記載の方法。
【請求項３】
変更子ボリュームの部分を形成する三角形はフラグにより識別されることを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記クリッピング面の前方にくる全ての三角形を廃棄する段階を含んでいることを特徴とする、上記請求項１〜３の何れかに記載の方法。
【請求項５】
３次元コンピュータグラフィック生成システムにおいてクリッピング面と交差する箇所で変更子ボリュームをクリップする装置において、
画像内のボリュームを平面三角形のセットとして表現するための手段と、
どの三角形が変更子ボリュームを形成するかについてのインジケータを提供するための手段と、
変更子ボリュームのどの三角形がフロントクリッピング面と交差するかを判定するための手段と、
前記クリッピング面と交差すると判定された変更子ボリュームの三角形の各々から１つ又は２つの新しい三角形を生成する手段と、
前記変更子ボリュームの三角形と前記クリッピング面との交差内で、前記クリッピング面上に更なる三角形を生成するための手段と、
これら三角形を前記平面三角形のセットに挿入するための手段と、
前記クリッピング面の前方に存在すると判定された三角形の部分を廃棄するための手段と、を備えていることを特徴とする装置。
【請求項６】
前記更なる三角形を生成するための手段は、
前記クリッピング面と交差する変更子ボリュームの２つ又はそれ以上の隣接する三角形について、交差の箇所を求めるための手段と、前記交差の箇所と交差の箇所の間に少なくとも１つの別の三角形を生成するための手段と、を備えていることを特徴とする請求項５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ３Ｄグラフィックシステムで通常は三角形のメッシュから形成される閉ボリュームとして表されるタイプのコンピュータ３次元グラフィック用のボリュームクリッピングに関する。厳密には、本発明は、３Ｄグラフィック環境において影や他の特別の効果の計算に使用される変更子ボリュームとして知られているボリュームに対して用いられる。
【背景技術】
【０００２】
コンピュータグラフィックにおける影は、３Ｄコンピュータグラフィックで生成されるシーンを現実らしく見せる上で重要な役割を果たす。グラフィックが発展するにつれて影を生成する多くの方法が発明されており、その例の幾つかは、Foley, van Dam, Feiner, & Hughes ISBN 0-201-12110-7「コンピュータグラフィックの原理と実用」及びWatt & Watt, ISBN 0-201-54412-1「アドバンスド・アニメーションとレンダリング技術」に見ることができる。本発明の基礎になる方法は、F.C.Crow SIGGRAPH 1997, 242-247の「コンピュータグラフィックのための影アルゴリズム」に開示されており、その内容を本願に参考文献として援用する。
【０００３】
Crowの提案では、影は閉多面体ボリュームのセットとして定義される。影ボリュームは、他のグラフィカルな変更効果を支援するために使用できるので、これらボリュームは、変更子ボリュームと呼ばれるのがより一般的である。影ボリュームは、画素毎に値を維持するステンシルバッファハードウェアを使って、３Ｄグラフィック画像に用いられるのが一般的である。普通は２つの方法、即ち「前向き」ポリゴンが対応付けられた画素を覆うと値を増分し、「後ろ向き」ポリゴンの場合は減分する方法、又は何れかのポリゴンタイプが画素を覆う場合にモジュロ２を計数する方法、の何れかを採用している。
【０００４】
多くのコンピュータグラフィックシステム、特にリアルタイムシステムでは、仮想環境はポリゴンのセットからモデル化される。このポリゴンのセットは、処理を簡単にするためしばしば三角形に限定される。描画又はレンダリング処理では、フロントクリッピング面として知られているものに跨る三角形のサブセットをクリッピング又は副分割することがしばしば必要になる。このフロントクリッピング面は、画像のレンダリング先として考慮中の画像面と同じである。
【０００５】
クリッピングの処理について図１を参照しながら説明する。ここでは、視点２は、フロントクリッピング面即ち画像面４を介してシーンを覗き込んでいる。三角形６は画像面４と交わっていることが分かる。この三角形の影が付けられていない前部分はクリッピング処理で捨てられ、クリッピング面の背後の影付きの区画はレンダラーの後段部分に渡される。
【０００６】
この方策は、不透明又は透明な普通の物体を表現する場合に使用されるポリゴンでは有効である。しかしながら、影ボリュームのような変更子ボリュームを用いる際には、改造が必要になる。これは、フロント面クリッピング中に変更子ボリュームのポリゴンのある区画を廃棄すると、変更子ボリュームに穴ができるためである。例えば、フロントクリッピング面と交差する影を生成するために使用される変更子ボリュームは、フロントクリッピング面４の前方にあるボリュームの部分による影付けに寄与することになる。従って、この部分が捨てられてしまうと、領域の影付き又は影無しが正しく行われなくなる。図２は、フロントクリッピング面４と交差する変更子ボリューム８を示している。クリップされると、開口面又は穴１０が影ボリューム８内に形成されることが分かる。従って、この影ボリュームのレンダリングを行うと、穴の中に当てはまる画素について影を計算できるようにする前側表面は無くなるので、不正確な影付けが適用されてしまう。影または変更子ボリュームの中に穴ができるということは、このようなボリュームは閉じていなければならないという要件に相反する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来のクリッピング技術では、クリッピング時に全ての三角形（又は、より一般的には平面ポリゴン）を独立して扱っている。従って、従来のクリッピング技術では、三角形又は平面ポリゴンが、クリッピング時に別の処置を要する変更子ボリュームに属するか否かを考慮することができない。
【０００８】
ペンシルベニア大学のP. Deipenbachは、自著の１９９６年ＰＨＤ論文（パイプライン・レンダリング：ハードウェアベースのマルチパス・レンダリングによる相互作用とリアリズム）の中で、全てのボリュームポリゴン出力をクリッピング単位毎に反復し、クリッピング面の下で結果を「平坦化」又は「投影」することにより、キャップが作り出せることを提案している。これでは、２倍の数のポリゴンが生成されてしまい、従って計算が高価になってしまう。
【課題を解決するための手段】
【０００９】
本出願の好適な実施例は、標準フロント面クリッピングに変更を加え、それにより、変更子ボリューム部分を形成し且つフロントクリッピング面の前方に存在する三角形又はポリゴンが、廃棄された後に、クリッピング処理により生じた変更子ボリューム内の穴にフロント面キャップを作り出すのに使用できるようにすることを探求している。これは、大きな記憶装置のオーバーヘッドが無しに、クリッピングオペレーション内の１つのパスで全て実行される。クリッピングが行われる変更子ボリュームは、凹型でもよいし、バラバラの断片で形成されていてもよいし、自己交差していてもよい。しかしながら、後者の場合には、ボリュームの挙動は、そのボリュームに対してどの充填規則が使用されるかによって決まる。
【００１０】
本発明は、特許請求の範囲に述べた内容により正確に定義されているが、以下その内容について説明する。
【発明を実施するための最良の形態】
【００１１】
本発明の好適な実施例について、付随の図面を参照しながら例を挙げ、以下詳細に説明する。
【００１２】
本発明の好適な実施例は、ソフトウェア又はハードウェアの何れでも実施できるが、標準的なクリップ法に追加する記憶装置が殆ど必要ないことから、実際上ハードウェアで実施されることになる。
【００１３】
最初に標準的なクリッパについて論じてから、本発明の実施例においてそれをどのように向上させるかについて説明する。クリッピングは、３Ｄコンピュータグラフィックの分野ではよく知られた手法であり、当業者には馴染みであろう。
【００１４】
標準的なフロント面クリッパを図３に示す。これは、０個又は１個又は２個の三角形２４から成る出力を有する、標準的なフロント面クリッパ２２に対する三角形データ入力２０を含んでいる。
【００１５】
装置２０による各三角形入力は、普通は同次座標により与えられる３つの頂点から成る。これらは、入力２０によりクリッパ２２に供給される。これは次に、フロントクリッピング面４に対する三角形の位置により、０個又は１個又は２個の三角形を生成する。これの位置は、周知の方法でフロント面クリッパ２２に供給される。
【００１６】
以降のクリッピングオペレーションは、クリッパ２２により実行されるが、これについては図４ａ−ｄを参照しながら説明する。下にそれらを要約する。
図４ａでは、三角形は完全にクリップ面の前方に存在する。従って、三角形は完全に排除され、出力三角形は全く作成されない。
図４ｂでは、三角形は２つの頂点がクリッピング面の前方にある。この結果、三角形面積ＰＱＢ1は、クリッピング面の背後に存在し、従って出力２４により提供される。
図４ｃでは、三角形は１つの頂点がクリッピング面の前方にある。この結果、凸型の四辺形面積が保たれている。これは、２つの出力三角形に分割され、出力２４により提供される。本例では、三角形はＰＢ1Ｂ2とＰＱＢ2である。しかしながら、代替対、即ちＰＱＢ1とＱＢ1Ｂ2を有効出力とすることもできる。
図４ｄでは、三角形の全頂点がクリッピング面の背後にあり、従ってクリッピングは全く不要である。
【００１７】
１つ以上の頂点が正にクリッピング面上に存在する場合には、これに対処する規則を上記４事例に書き込んでおき、４例のうち適切な１例を用いる。
【００１８】
ある好適な実施例では、図４ａに示す三角形は、全体がクリッピング面の前方に該当する三角形を全て早い段階で捨てるクリップコードを使った選別オペレーションにより、処理パイプラインから早い時期に取り除かれることになる。本例は説明を目的として示したにすぎない。
【００１９】
三角形の頂点の並び方は、前向き三角形及び後ろ向き三角形を識別する手段として、３Ｄコンピュータグラフィックで頻繁に使用されている。本発明の実施例の説明に限り、この区別を無視する。代わりに、例中の頂点の名づけは説明だけを目的としており、何れの順序付けを示唆するものでもない。
【００２０】
図４ｂ及び４ｃでは、三角形は、実際にクリッピング面と交わっており、交差は、三角形の２辺がフロントクリッピング面と交わるところに当たる２つの新しい頂点Ｐ及びＱにより形成される線分ＰＱで構成される。このクリッピングの実施は、図５のブロック図に示しており、入力三角形は、クリッピング事例判定部３０に提供される。クリッピング事例判定部３０は、入力三角形の頂点の深度をフロントクリッピング面の一定の深度値に対して比較する。その結果、事例Ａであった場合には、３２で三角形は捨てられる。事例Ｄが適用されると、クリッピングは実行されず、出力は３４のようになる。
【００２１】
事例ＢとＣの何れかが適用されると、そのデータはステップ３６に渡され、ここで、三角形の関係する辺とフロントクリッピング面との交点から新しい頂点Ｐ及びＱが計算される。これには、頂点を導出するため、２つの分割部分と、２セットの線形補間が必要になる。このステップの出力は、１つの三角形ＰＱＢ1がステップ３８で出力される図４ｂに示したものか、２つの三角形、例えばＰＱＢ2とＰＢ1Ｂ2がステップ４０で出力される図４ｃに示したものか、の何れかとなる。
【００２２】
これをより精巧に行うには、パイプライン化してもよいし、及び／又は入力モデルの周辺三角形と計算を共有してもよい。
【００２３】
クリッパに渡される三角形が、変更子又は影ボリュームを形成する三角形である場合には、それら三角形は、図２に示すようなクリップされたボリュームを閉じるためのキャップを作るのに必要な情報を保有している。ボリュームは、三角形のストリームが変更子ボリュームであるか否かを示すフラグにより、標準的な不透明又は透明な物体と区別される。これを実行するための装置のブロック図を図６に示す。これは、図３に示すタイプの標準的クリッパ２０を備えている。入力装置４２は、三角形データを受信する。このデータは、標準的な不透明又は透明な三角形の混在から、及び影のような変更子ボリュームを形成している三角形からも構成される。
【００２４】
三角形データは、普通はデータのストリームとして入力に供給される。変更子ボリューム処理時には、この実施例に対して別の変更子ボリュームの境界を示すために第２のフラグを使用し、フラグは、何れの変更子ボリュームについても第１の三角形に対して「オン」にセットされ、残りから「オフ」にセットされる。
【００２５】
標準クリッパ２２は、図５と似たやり方で動作する。標準クリッパ２２は、キャップ生成装置４４に情報を供給することも行う。この情報は、図４に示すクリッピングの具体的なタイプを含んでおり、図４ｂ又は４ｃの場合には、計算された頂点ＰとＱの座標も供給する。
【００２６】
クリッパ２０は、三角形の可視部分をバッファ又はＦＩＦＯ４６に出力する。これらは、キャップ生成装置４４により生成される三角形が他にもある場合にはそれら三角形と併合される。
【００２７】
キャップ生成装置は、フラグＩｓＶｏｌｕｍｅ及びＳｔａｒｔＮｅｗＶｏｌｕｍｅを入力装置４２から得る。これらは次にローカルデータ記憶装置４８に連絡される。ハードウェア実施例では、このローカルデータ記憶装置はレジスタ又はフリップフロップを備えている。キャップ生成装置が追加の三角形を出力し、これを使って出力三角形ストリーム内にキャップが形成され、これがレジスタ又はフリップフロップ４６から読み出される。
【００２８】
ローカルデータ記憶装置４８は、ＳｔａｒｔＰｏｉｎｔと呼ばれる１つのＸＹ座標と、１つのビットフラグＳｔａｒｔＰｏｉｎｔＶａｌｉｄを記憶する。これは、正確なデータが座標に存在するか否かを示す。ＳｔａｒｔＰｏｉｎｔはフロントクリッピング面上にあるはずなので、ｚ成分は、クリップ面の既知のｚ値により示唆されることから必要としない。
【００２９】
キャップ生成装置４４へのポリゴン入力に適用される処理を図７に示す。ここでは、「標準」モデル三角形は、追加処理を要しないことから無視している。代わりに、変更子ボリュームに関係付けられた三角形だけが処理される。最初に、装置は、ステップ５０で新しい三角形を待つ。ステップ５２では、三角形が新しいボリュームの部分を形成しているか否かについて判定が行われる。これは、図６の入力装置４２から供給されたＳｔａｒｔＮｅｗＶｏｌｕｍｅフラグの状態を調べることにより行われる。新しいボリュームであれば、ＳｔａｒｔＰｏｉｎｔＶａｌｉｄと呼ばれるフラグが、ステップ５４で偽にセットされる。
【００３０】
処理は次にステップ５６に移り、ここで、標準クリッパ２２により判定された特定のクリッピング事例（図４Ａ、Ｂ、Ｃ及びＤ）にアクセスする。事例Ａ又はＤであった場合には、クリップ面と三角形との交差が生じないことから、キャップ生成のために三角形を更に処理する必要はない。
【００３１】
この判定はステップ５８で行われるが、このような場合には、処理はステップ５０に戻る。
【００３２】
クリッピング事例がＡでもＤでもない場合、即ちＢ又はＣである場合には、次のステップは、標準クリッパ２２から頂点Ｐ及びＱの座標をステップ６０において検索することである。これら座標は、無論のこと三角形の辺とフロント・クリッピング面の交差点である。フラグＳｔａｒｔＰｏｉｎｔＶａｌｉｄが偽であれば、これはフロントクリッピング面をカットする特定の変更子ボリュームの第１の三角形である。従って、このＳｔａｒｔＰｏｉｎｔＶａｌｉｄフラグの判定がステップ６２で行われ、偽である場合にはステップ６４で真にセットされ、ＳｔａｒｔＰｏｉｎｔ値はＰ、即ちクリッパによりボリューム内に形成される穴の縁上の頂点Ｐの座標、にセットされる。頂点ＱをＳｔａｒｔＰｏｉｎｔに割り当てることも等しく有効である。処理は、次にステップ５０に戻る。
【００３３】
ステップ６２において、ＳｔａｒｔＰｏｉｎｔＶａｌｉｄフラグの判定が真にセットすることである場合、頂点Ｐ、Ｑ及びＳｔａｒｔＰｏｉｎｔから成るキャップ用の三角形は、ステップ６６で出力三角形ストリームに送られる。この三角形は、全体がフロントクリッピング面上に置かれている。値Ｐ、Ｑ及びＳｔａｒｔＰｏｉｎｔから形成されるこれらキャップ用三角形は、変更子ボリュームの第２又は以降の三角形形成部分が、図７のプロセスであるステップ６２を通過するときにだけ現れる。当該ボリュームのこのような三角形は全て、同じＳｔａｒｔＰｏｉｎｔを使用するが、特定の三角形のＰ及びＱの値は、先の又は次の三角形の値とは異なる。しかしながら、お気づきのように、変更子ボリュームは閉じているので、キャップの帰結は有限数の閉ポリゴンで構成されることになる。これら各閉ポリゴンの各頂点は、クリップされた各ポリゴンのＰ及びＱの値から形成される。
【００３４】
この結果が、図６のレジスタ４６から出力される三角形のストリームであり、これは、クリッパ２２による出力であるフロントクリッピング面背後のボリュームの一部と、図７のステップ６６で出力されたキャップポリゴンで構成され、クリッピング面内にある。これらは一体となって、変更子ボリュームとして使用するのに適したボリュームを形成する。次に、ポリゴンは好適な手法を利用してレンダリングされる。
【００３５】
図６及び図７の装置の作用について、幾つかの例に関して以下説明する。
図８には、図２のピラミッドの断面が、フロントクリッピング面と交差する領域で示されている。４つの三角形Ｔ１、Ｔ２、Ｔ３、及びＴ４は、クリッピング装置２２によりクリップされ、新しい辺Ｖ１Ｖ２，Ｖ２Ｖ３，Ｖ３Ｖ４，及びＶ４Ｖ１を形成する。三角形がクリッピング装置２２に対して上記順序で供給される場合、キャッピング装置の挙動は以下のようになる。
【００３６】
三角形Ｔ１は、ＳｔａｒｔＰｏｉｎｔをＶ１又はＶ２の何れかにセットすることになるが、ここではＶ１が選定されると仮定する。三角形Ｔ２は、ここでキャッピング三角形Ｖ２Ｖ３Ｖ１を生成する。三角形Ｔ３はＶ３Ｖ４Ｖ１を生成し、三角形Ｔ４はゼロ面積のＶ４Ｖ１Ｖ１を生成することになる。この最後の三角形は、処理を節約するために、大抵はグラフィックパイプラインの後段部分により選別廃棄されることになる。
【００３７】
より複雑な例を図９に示している。これはクリップされたトーラスから生成することができる。本例では、必要なキャップ領域は非凸部だけではなく、２つのバラバラの領域から成っている。ＳｔａｒｔＰｏｉｎｔ「ＳＰ」は、左側の接続領域にあると仮定し、この領域を処理の一環として三角形非ゼロＥＦＳＰによりキャップするものとすると、それは右側の区画の３つの辺に接続されねばならない。その結果、３つのキャッピング三角形ＡＢＳＰ、ＢＣＳＰ、及びＣＡＳＰが形成される。尚、これら個々の三角形は、実際にはキャップの一部を形成していない、灰色で示された、ある面積を覆っている。しかしながら、計数モジュロ２充填規則が使用されるとしていることから、この灰色面積は、偶数個の三角形により覆われているので有効に含まれることはなく、また、増分／減分充填規則を使用する場合には、等価論議を適用するが説明がより複雑になる。
【００３８】
所与の例では、クリッピング処理により生成される頂点としてＳＰを選定している。理論上は、クリッピング面内の何れの点を選定してもよいが、大きな三角形が生成されることにもつながりかねず、そうすると３Ｄパイプラインの後段でレンダリングする際に更に費用がかかることになる。
【図面の簡単な説明】
【００３９】
【図１】上記フロントクリッピング面でクリップされた三角形を示す概略図である。
【図２】上記のように、フロントクリッピング面において変更子ボリュームに穴が形成されているのを示す図である。
【図３】標準フロント面クリッパのブロック図である。
【図４】ａ、ｂ、ｃ及びｄは、標準クリッパにおける、三角形とフロント面クリッピング面との様々に異なる交差を示す図である。
【図５】図４のクリッピングがどのように実行されるかを簡単に示す図である。
【図６】本発明の実施例のブロック図である。
【図７】図６のキャップ生成装置のオペレーションを示すフロー図である。
【図８】図２のピラミッドのクリッピング面と交差する領域の横断面を示す図である。
【図９】クリップされたトーラスから生成されたより複雑な例を示す図である。
【符号の説明】
【００４０】
２  視点
４  フロントクリッピング面
６  三角形
１０  穴
２０  入力
２２  クリッパ
２４  出力
３０  クリッピング事例判定部
４４  キャップ生成装置
４６  フリップフロップ
４８  ローカルデータ記憶装置
【図１】
2008269659.tif 000003
【図２】
2008269659.tif 000004
【図３】
2008269659.tif 000005
【図４】
2008269659.tif 000006
【図５】
2008269659.tif 000007
【図６】
2008269659.tif 000008
【図７】
2008269659.tif 000009
【図８】
2008269659.tif 000010
【図９】
2008269659.tif 000011