(57)【要約】【課題】  モデリングしたオブジェクトの隠線を消去したベクトルイメージを提供する。【解決手段】  モデリングしたオブジェクトの隠線を消去した表示のベクトルイメージを計算するために、まず、モデリングしたオブジェクトの隠線を消去したビットマップイメージをグラフィックカードで計算する（ステップ２２）。モデリングしたオブジェクトの各線について、同一の表示での線のラスタを計算する（ステップ２６）。ラスタのピクセルをビットマップイメージの対応するピクセルと比較して（ステップ３０）、ビットマップイメージ中にラスタのピクセルに対応するピクセルが存在するか否かを判定する。比較結果に従って、線の可視部分を求める（ステップ３８）。【選択図】  図４
2005050336.tif 000002
【特許請求の範囲】
【請求項１】
モデリングしたオブジェクトの隠線を消去した表示のベクトルイメージを提供するコンピュータで実施される方法であって、
前記モデリングしたオブジェクトの、隠線を消去した前記表示のビットマップイメージを提供するステップ（２２）と、
ベクトルイメージの線について、
前記表示内の前記線のラスタを提供するステップ（２６）と、
前記ラスタのピクセルを前記ビットマップイメージのピクセルと比較するステップ（３０〜３６）と、
比較結果に従って、前記線の可視部分を判定するステップ（３８）と
を含むことを特徴とする方法。
【請求項２】
ビットマップイメージを提供する前記ステップは、ハードウェアロジックでビットマップイメージを計算することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
ビットマップイメージを提供する前記ステップは、グラフィックカードでビットマップイメージを計算することを含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記モデリングしたオブジェクトは、エッジおよびフェイスを有するテセレーション表現で提供され、前記線は、前記テセレーション表現のエッジを含むことを特徴とする請求項１、２または３に記載の方法。
【請求項５】
前記線はシルエットをさらに含むことを特徴とする請求項１ないし４のいずれかに記載の方法。
【請求項６】
前記モデリングしたオブジェクトの前記線に印が付けられ、ビットマップイメージを提供する前記ステップ（２２）は、前記ビットマップイメージ中のピクセルに印を付けることをさらに含むことを特徴とする請求項１ないし５のいずれかに記載の方法。
【請求項７】
異なる線が異なるシグニチャを備えることを特徴とする請求項６に記載の方法。
【請求項８】
所与のシグニチャを有する線について、
前記ビットマップイメージが前記所与のシグニチャを有するピクセルを含むか否かを探索するステップと、
前記ビットマップイメージが前記所与のシグニチャを有するピクセルを含まない場合、前記線はベクトルイメージ内で可視ではないと判定するステップとをさらに含むことを特徴とする請求項６または７に記載の方法。
【請求項９】
比較する前記ステップは、前記線のシグニチャを前記ビットマップイメージのピクセルのシグニチャと比較することを含むことを特徴とする請求項６、７または８に記載の方法。
【請求項１０】
前記モデリングしたオブジェクトの線がカラーサインされることを特徴とする請求項６ないし９のいずれかに記載の方法。
【請求項１１】
前記モデリングしたオブジェクトが、エッジおよびファセットと共にテセレーション表現で提供され、判定する前記ステップは、
線を隠すファセットを見つけること、および、前記ファセットと前記線との交差を計算することを含むことを特徴とする請求項６ないし１０のいずれかに記載の方法。
【請求項１２】
前記モデリングしたオブジェクトが、エッジおよびファセットと共にテセレーション表現で提供され、判定する前記ステップは、
線を隠すファセットを見つけること、および、線とファセットに関係するフェースとの交差を計算することを含むことを特徴とする請求項６ないし１０のいずれかに記載の方法。
【請求項１３】
モデリングしたオブジェクトの隠線を消去した表示のベクトルイメージを提供するプログラムであって、
前記モデリングしたオブジェクトの、隠線を消去した前記表示のビットマップイメージを受け取るルーチンと、
前記表示での前記モデリングしたオブジェクトの線のラスタを提供するルーチン（２６）と、
線のラスタのピクセルを、前記ビットマップイメージのピクセルと比較するルーチン（３０〜３６）と、
前記比較ルーチンによって提供される結果に従って、前記線の可視部分を判定するルーチン（３８）と
を含むことを特徴とするプログラム。
【請求項１４】
エッジおよびファセットと共に、前記モデリングしたオブジェクトのテセレーション表現を受け取るように適合されることを特徴とする請求項１３に記載のプログラム。
【請求項１５】
印が付けられた線と、印が付けられたピクセルを有するビットマップイメージと共に、モデリングしたオブジェクトを受け取るように適合されることを特徴とする請求項１３または１４に記載のプログラム。
【請求項１６】
前記ビットマップイメージが前記モデリングしたオブジェクトの線の前記シグニチャを有するピクセルを含むか否かを探索するルーチンをさらに含むことを特徴とする請求項１５に記載のプログラム。
【請求項１７】
カラーサインされた線と、カラーサインされたピクセルを有するビットマップイメージと共に、モデリングしたオブジェクトを受け取るように適合されることを特徴とする請求項１５または１６に記載のプログラム。
【請求項１８】
エッジおよびファセットと共に、テセレーション表現で、モデリングしたオブジェクトを受け取るように適合され、判定ルーチンが、
線を隠すファセットを見つけ、かつ、ファセットと線との交差を計算するように適合されることを特徴とする請求項１３ないし１７のいずれかに記載のプログラム。
【請求項１９】
エッジおよびファセットと共に、テセレーション表現で、モデリングしたオブジェクトを受け取るように適合され、判定ルーチンが、
線を隠すファセットを見つけ、かつ、線とファセットによって表されるフェースとの交差を計算するように適合されることを特徴とする請求項１３ないし１７のいずれかに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラム／システムの分野に関し、より詳細には、部品設計プログラム／システムに関する。
【背景技術】
【０００２】
出願人によってＣＡＴＩＡ（登録商標）という商標で提供されているものなど、部品または部品のアセンブリを設計するためのいくつかのシステムおよびプログラムが市場で提供されている。こうしたいわゆるコンピュータ支援設計（ＣＡＤ）システムにより、ユーザが、部品または部品のアセンブリの複雑な３次元（３Ｄ）モデルを構築し、操作することが可能となる。いくつかの異なるモデリング技法を使用して、アセンブリのモデルを作成することができる。こうした技法には、ソリッドモデリング、ワイヤフレームモデリング、およびサーフェスモデリングが含まれる。ソリッドモデリング技法は起伏３Ｄモデルを提供する。３Ｄモデルは、例えば相互接続されたエッジとフェイス（faces）の集合である。幾何学的には、３Ｄソリッドモデルは、閉じたスキンを画定するトリミングまたはリリミット（relimit）したサーフェス（surfaces）の集合である。トリミングしたサーフェスは、エッジによって境界を画定された起伏面に対応する。閉じたスキンは、部品の材料で満たされた３Ｄ空間の有界領域を画定する。一方、ワイヤフレームモデリング技法は、モデルを単純な３Ｄ線の集合として表現するのに使用することができるが、サーフェスモデリングは、モデルを外面の集合として表現するのに使用することができる。ＣＡＤシステムは、上記のモデリング技法、並びにパラメトリックモデリング技法などのその他のモデリング技法を組み合わせることができる。したがってＣＡＤシステムは、エッジまたは線を、ある場合にはフェースと共に使用して、モデリングされるオブジェクトの表現を提供する。線またはエッジは、様々な方式、例えばＮＵＲＢＳ（non-uniform rational B-spline）で表現することができる。
【０００３】
ＣＡＤシステムのユーザが通常必要とする一機能は、例えば図面などを生成するために、モデリングしたオブジェクトのイメージを生成できることである。このようなイメージでは、モデリングしたオブジェクトが、モデリングしたオブジェクトのエッジおよびシルエットに一般に対応する１組の線で表される。シルエットは、以下で説明するように仮想的な線である。隠線を消去すること、すなわち現実のオブジェクトを閲覧した場合にユーザには見えないオブジェクトの線の表現を、イメージから消去することが役立つことがある。この機能、並びにＣＡＤシステムの要素の定義を、図１〜３を参照して例示する。
【０００４】
図１に、平行六面体基部２と、基部の上面のシリンダ４から形成されるオブジェクトのワイヤフレーム表示（a wire frame view）を示す。基部２は６つのフェースから形成され、各フェースは、無限平面であるサーフェスのリリミテーション（relimitation）である。シリンダは、３つのフェースを有するように見え、上と下は円板である。円板は、無限平面のリリミテーションである。シリンダの側面は円筒形の壁である。円筒形の壁は、管を形成する無限サーフェスのリリミテーションである。このサーフェスは、２つの円で境界を画定され、またはリリミットされる。テセレーション（tessellation）表現では、オブジェクトは１組のファセットによって表される。ファセットは多角形、通常は三角形である。提案される実施例では、基部の側面および下面は、それぞれ２つの三角形で表すことができる。基部２の上面、シリンダ４の下側円板の外側、シリンダの側面および上面は、より多数のフェースで表すことができる。「エッジ（edge）」という語はフェースの起伏境界を指し、「ワイヤ（wire）」という語はモノパラメトリック要素を指す。「シルエット（silhouette）」（またはアウトライン）という語は、以下で例示するように、仮想モノパラメトリック要素である。この説明の以下の部分では、「線（line）」という語は、エッジ、ワイヤ、シルエット、またはその他の任意のモノパラメトリック曲線を包含する。
【０００５】
図１の例では、基部２のエッジ並びにシリンダ４のエッジを表す線が表されている。図１には、シリンダの境界を表す２つの垂直線６および８がさらに示されている。これらの線は、実際にはモデリングしたオブジェクトのエッジではないが、それでもなおイメージ上に現れる。これらの線は、実際には表示に依存するので、仮想線すなわちシルエットである。図１のワイヤフレーム表示では、モデリングしたオブジェクトのすべての線が表されている。こうした線には、通常は隠されるはずであるエッジまたはエッジの一部が含まれる。
【０００６】
図２に、図１のモデリングしたオブジェクトの、隠線を消去した表示を示す。図２では、単にこうした隠線が表示されない。例えば基部２の線１０は、その中央付近で、シリンダ４によって閲覧者から隠される部分で中断される。点１４および１６は、線１０と垂直線６および８との交差を示す。線１０は、点１４と１６の間で隠される。図２の線１２は、基部４の正面の下端の線であるので、完全に可視である。
【０００７】
図３に、図１のモデリングしたオブジェクトの、隠線を消去した表示を示す。図３では、こうした隠線が破線で表されている。例えば、基部２の線１０は、その中央付近で破線として表される。製図者にとっては、図２と図３は共に、隠線を消去した表示を示す。隠線用にその他の図形表現、例えば異なる色などを選択することもできる。本明細書での隠線消去は、関連する表示上で線またはエッジが隠され、または可視となることに従って線またはエッジの表現が変化する場合のすべての実施例を包含する。図１の表現は透視図であるが、平面図や側面図などのその他のタイプの表示に関して、隠線の消去について同一の問題が生じる。
【０００８】
モデリングしたオブジェクトのイメージは、様々なタイプのものでよい。イメージをエンドユーザに対してコンピュータ画面上に表示する目的で、特にビットマップイメージが使用される。コンピュータ画面は２次元行列のピクセルであり、ビットマップイメージは２次元行列の値である。これらの値は、白黒ディスプレイについては２進値でよく、または例えばカラーディスプレイについてはより複雑にすることができる。したがってビットマップイメージは、イメージの異なるピクセルについてのカラー値を表す１組の値である。ベクトルイメージは、単にピクセル要素から形成されるのではなく、直線または曲線から形成される。ベクトルイメージは、トレーシングマシンおよび様々なコンピュータソフトウェアプログラムにとって特に有用である。したがって、ベクトルイメージは一連の線によって表される。例えば、図１の表示のビットマップイメージは、様々な線を表すためのいくつかのピクセルを含む。図１の表示のベクトルイメージは、１４個の直線と２つの円を含む。あるいは、円は、いくつかの水平な弧として定義することもできる。ベクトルイメージで使用される線の表現のタイプは、イメージフォーマットに従って変化する可能性があることを当業者は理解するであろう。
【０００９】
隠線を消去する解決策が知られている。「ペインタアルゴリズム（painter algorithm）」と呼ばれる一アルゴリズムは、開始時の基礎として、モデリングしたオブジェクトのテセレーション表現、すなわちモデリングしたオブジェクトの１組のエッジおよびファセットとしての表現を使用する。このアルゴリズムは、イメージ内に各エッジおよびファセットを次々に描画するものである。エッジまたはファセットのピクセルを描画するとき、アルゴリズムは、このピクセルがイメージ上にすでに描画されたピクセルの前面に現れるか、それとも背面に現れるかをチェックする。後者の場合は、このピクセルを描画せず、前者の場合は、このピクセルがイメージ内の既存のピクセルに取って代わる。このアルゴリズムにより、イメージ上に描画されたピクセルごとに、表示内のピクセルのデプス（depth）を表すデプス値を格納することが必要となる。このアルゴリズムは、モデリングしたオブジェクトの、隠線を消去したビットマップイメージを提供する。このアルゴリズムの副産物は、イメージの描画されるピクセルごとに表示内のそのデプスを表す値が格納されたデプスイメージである。このアルゴリズムは開示されている（例えば、非特許文献１参照。）。このアルゴリズムは迅速に応答するが、ピクセルイメージを提供するようにしか適合されない。
【００１０】
ＣＡＴＩＡ（登録商標）という商標で販売される設計システムでは、モデリングしたオブジェクトのベクトルイメージを提供するプログラムが提供される。このプログラムは、モデリングしたオブジェクトの表現内のエッジごとに、このエッジはモデリングしたオブジェクトの別のエッジまたはファセットによって隠されるか否かを判定することによって動作する。このプログラムは申し分のないものであるが、複雑なイメージの場合、設計システムのユーザが十分知覚できるほどのかなりのコンピューティング時間を必要とすることがある。
【００１１】
イメージから隠線を消去するための解決策は、「シェーディング（shading）」という語で知られている。特定のタイプのシェーディングは、「動的隠線リムーバ（dynamic hidden line remover）」である。シェーディングは開示されている（例えば、非特許文献１のｐｐ．５８４以降を参照。）。動的隠線リムーバはＣＡＴＩＡ（登録商標）  Ｖ５（登録商標）で使用されている。この最後の解決策は、モデリングしたオブジェクトのテセレーション表現内のファセットの色を変更するものである。ファセットの色は背景色に変更される。修正後のテセレーションオブジェクトがグラフィックカードに印加される。この結果、隠線付きのビットマップイメージが得られる。実際、ファセットは背景と同じ色を有するので、ファセットはユーザに見えない。しかし、実際にはファセットはグラフィックカードで描かれ、その結果、背後のエッジが隠されたように見える。この解決策は、例えばモデリングしたオブジェクトのイメージを画面上に表示するには申し分のないものであるが、この解決策はビットマップイメージしか提供しない。
【００１２】
【非特許文献１】OpenGL Programming Guide, Third Edition, Addison Wesley
【発明の開示】
【発明が解決しようとする課題】
【００１３】
したがって、モデリングしたオブジェクトの、隠線を消去したベクトルイメージを提供する解決策が求められている。この解決策は、容易に実装され、モデリングした大きなオブジェクトの場合であっても過度のＣＰＵ時間またはメモリスペースを必要としないことが好ましい。
【課題を解決するための手段】
【００１４】
本発明によれば、モデリングしたオブジェクトの隠線を消去した表示のベクトルイメージを提供するコンピュータで実施される方法であって、モデリングしたオブジェクトの隠線を消去した表示のビットマップイメージを提供するステップと、ベクトルイメージの線について、表示内の線のラスタを提供するステップと、ラスタのピクセルをビットマップイメージのピクセルと比較するステップと、比較結果に従って、線の可視部分を判定するステップとを含む。
【００１５】
好ましい実施形態では、ビットマップイメージを提供するステップは、ハードウェアロジックでビットマップイメージを計算するステップを含み、例えばビットマップイメージがグラフィックカードで計算される。
【００１６】
好ましくは、モデリングしたオブジェクトは、エッジおよびフェイスを有するテセレーション表現で提供され、線は、テセレーション表現のエッジおよびシルエットを含む。
【００１７】
別の好ましい実施形態では、モデリングしたオブジェクトの線に印が付けられ、ビットマップイメージを提供するステップは、ビットマップイメージ中のピクセルに印を付けることをさらに含む。有利には、異なる線が異なるシグニチャを備える。
【００１８】
好ましくは、本発明の方法は、所与のシグニチャを有する線について、ビットマップイメージがその所与のシグニチャを有するピクセルを含むか否かを探索するステップと、ビットマップイメージが所与のシグニチャを有するピクセルを含まない場合、線はベクトルイメージ内で可視ではないと判定するステップとをさらに含む。
【００１９】
好ましい実施形態では、比較するステップは、線のシグニチャをビットマップイメージのピクセルのシグニチャと比較することを含み、モデリングしたオブジェクトの線がカラーサインされる。
【００２０】
別の好ましい実施形態では、モデリングしたオブジェクトが、エッジおよびファセットと共にテセレーション表現で提供され、判定するステップは、線を隠すファセットを見つけること、および、ファセットと線との交差を計算することを含む。
【００２１】
別の解決策では、モデリングしたオブジェクトが、エッジおよびファセットと共にテセレーション表現で提供され、判定するステップは、線を隠すファセットを見つけること、および、線とファセットに関係するフェースとの交差を計算することを含む。
【００２２】
本発明はまた、モデリングしたオブジェクトの隠線を消去した表示のベクトルイメージを提供するプログラムであって、モデリングしたオブジェクトの隠線を消去した表示のビットマップイメージを受け取るルーチンと、その表示でのモデリングしたオブジェクトの線のラスタを提供するルーチンと、線のラスタのピクセルを、ビットマップイメージのピクセルと比較するルーチンと、比較ルーチンによって提供される結果に従って、線の可視部分を判定するルーチンとを含むプログラムを提供する。
【００２３】
上記プログラムが、エッジおよびファセットと共に、モデリングしたオブジェクトのテセレーション表現を受け取るように適合されることが好ましい。
【００２４】
好ましい実施形態では、上記プログラムが、印が付けられた線（signed lines）と、印が付けられたピクセル（signed pixels）を有するビットマップイメージと共に、モデリングしたオブジェクトを受け取るように適合される。
【００２５】
上記プログラムは、ビットマップイメージがモデリングしたオブジェクトの線のシグニチャを有するピクセルを含むか否かを探索するルーチンをさらに含む。
【００２６】
有利には、上記プログラムが、カラーサインされた線（colour-signed lines）と、カラーサインされたピクセル（colour-signed pixels）を有するビットマップイメージと共に、モデリングしたオブジェクトを受け取るように適合される。
【００２７】
好ましい実施形態では、上記プログラムが、エッジおよびファセットと共に、テセレーション表現で、モデリングしたオブジェクトを受け取るように適合され、判定ルーチンが、線を隠すファセットを見つけ、かつ、ファセットと線との交差を計算するように適合される。
【００２８】
別の好ましい実施形態では、上記プログラムが、エッジおよびファセットと共に、テセレーション表現で、モデリングしたオブジェクトを受け取るように適合され、判定ルーチンが、線を隠すファセットを見つけ、かつ、線とファセットによって表されるフェースとの交差を計算するように適合される。
【発明を実施するための最良の形態】
【００２９】
これから、非限定的な実施例により、添付の図面を参照しながら、本発明を実施するコンピュータ支援設計システムを説明する。
【００３０】
本発明は、モデリングしたオブジェクトの、隠線を消去したビットマップイメージを提供するのに、コンピュータグラフィックカードで実施されるものなどの既存の解決策を活用する。モデリングしたオブジェクトの表示のベクトルイメージを提供するために、本発明は、モデリングしたオブジェクトの表示のビットマップイメージを使用し、隠線がイメージ上から消去される。
【００３１】
モデリングしたオブジェクトの所与の線−オブジェクトのテセレーション表現の実施例におけるエッジ−について、本発明は、同一の表示で線のラスタを描画することを提案する。ラスタは、実際には表示中の線のピクセル表現である。ラスタを提供することは、線だけからなるモデリングしたオブジェクトの表示のビットマップイメージを提供することに等しい。次いで、ラスタ中のピクセルと、ビットマップイメージ中の対応するピクセルを比較することができる。ラスタのピクセルがビットマップイメージ中に含まれない場合、線の対応する部分が隠され、ベクトルイメージ中に現れるべきでないことを意味する。したがって、この比較により、ベクトルイメージ中で隠されるべき線の部分、あるいはベクトルイメージ中で隠されるべき線の部分を判定することが可能となる。
【００３２】
最も単純な実施形態では、ベクトルイメージ中のすべての線についてこのプロセスを反復することができる。このプロセスを加速するための解決策を以下で論じる。
【００３３】
本発明により、以下の利点が得られる。まず、本発明は、モデリングしたオブジェクト中の線の数の線形関数である複雑さを有する。このことを、上記で論じた従来技術のプログラムと比較すべきである。従来技術のプログラムでは、各線を、モデリングしたオブジェクト中のすべての他の線およびファセットと比較しなければならないので、複雑さが線の数の二次関数となる。
【００３４】
第２に、本発明により、ビットマップイメージおよびラスタの粒度（granularity）を単に変更することによって解像度を適合させることが可能となる。解像度の選択は、全イメージについて同一の解像度であるグローバルなものでよい。同一のイメージに対して異なる解像度を使用することもできる。したがって、粗い解像度を用いて、モデリングしたオブジェクトの粗いベクトルイメージを非常に迅速に提供することができる。
【００３５】
第３に、以下で論じるように、ビットマップイメージ中のピクセルサイズよりもさらに小さくなるように解像度を向上させることができる。
【００３６】
第４に、本発明は堅牢である。ビットマップイメージが誤っていないという仮定の下、ベクトルイメージ中の線に関する誤差の上限は、ビットマップイメージ中のピクセルサイズである。これは、本発明に従って提供されるベクトルは、ビットマップイメージと同じほど信頼性が高いことを意味する。ビットマップイメージが誤っていないと仮定することは妥当なことである。したがって、ベクトルイメージは、隠すべきであった実線などのあからさまな誤差を含まない。
【００３７】
本発明の他の利点を以下の説明で論じる。上述のように、「線（line）」という語は、どんなタイプのエッジ、ワイヤ、曲線、シルエット、またはモノパラメトリック要素も含む。したがって、「線」という語は、幾何学の分野の直線という伝統的名称を拡張するものである。
【００３８】
説明のために、モデリングしたオブジェクトのテセレーション表現の実施例で本発明を説明する。すなわち、モデリングしたオブジェクトは、それぞれＥｉおよびＦｊで表される１組のエッジおよびファセットによって表される。添字ｉおよびｊは整数である。設計システムの当業者は、モデリングしたオブジェクトのその他の表現に本発明を適用できることを理解するであろう。
【００３９】
図４は、本発明の一実施形態におけるプロセスのフローチャートである。
【００４０】
ステップ２０では、モデリングしたオブジェクトのテセレーション表現を与える。このような表現を与える方法は、当業者にとって周知であるので、ここでは論じない。
【００４１】
ステップ２２では、モデリングしたオブジェクトの、隠線を消去したビットマップイメージを与える。このステップでは、ソフトウェアまたはハードウェアの解決策、あるいはそれらの組合せを使用することができる。例示的ハードウェア解決策は、グラフィックカードを使用して、モデリングしたオブジェクトをグラフィックカードに印加するものである。この解決策は、グラフィックカードを備えたどんなコンピュータでも使用可能であるという利点を有する。加えて、この解決策により、ステップが確実に、迅速に実施される。ビットマップイメージは、モニタ上に表示するために使用されるものでよい。ビットマップイメージは、表示することを意図しない任意のサイズの仮想イメージでもよい。イメージは、メモリに格納し、またはオンザフライで生成することができる。
【００４２】
このハードウェア解決策が現在のところ好ましいとしても、必要なビットマップイメージを与える限り、その他の解決策も使用することができる。このステップでは、ビットマップイメージは、図１の正透視図など、所与の表示でのモデリングしたオブジェクトのイメージであることを理解されたい。
【００４３】
ステップ２４では、最初のエッジを選択する。ここで論じる本発明の最も単純な実施形態では、モデリングしたオブジェクトのテセレーション表現における最初のエッジＥ１を単に選択することができる。以下で論じるように、モデリングしたオブジェクトのエッジのサブセットを考慮することで十分であり、エッジの線形スキャンも、このプロセスを実施するための要件ではない。
【００４４】
ステップ２６では、選択したエッジのラスタが提供される。上記で論じたように、ラスタは、ビットマップイメージに対して選択した表示に対応するエッジのピクセル表現である。例えば、表示が所与の縮尺の正透視図である場合、同一の縮尺の同一の正透視図でエッジのラスタを与える。このことは、エッジがビットマップイメージに隠されない場合、ラスタがビットマップイメージ中のエッジの表現に重なることになるという効果を有する。図２の実施例では、エッジ１２のラスタがビットマップイメージ中のエッジ１２のピクセルと重なることになる。エッジ１０のラスタは、ビットマップイメージのピクセルと重なるが、ビットマップイメージのエッジの可視部分だけである。
【００４５】
ラスタを提供するのにいくつかの解決策が存在する。単に、必要な表示でエッジを描画するソフトウェアアルゴリズムを使用し、次いで描画したエッジをピクセルに分離することができる。エッジが実際には単一のエッジから形成されるテセレーションオブジェクトであることを考慮することもできる。このオブジェクトのビットマップイメージは、エッジのラスタを提供する。このようなビットマップイメージは、ステップ２２を参照しながら論じたどの解決策でも得ることができる。
【００４６】
最も単純な実施形態では、ラスタ中のピクセルサイズはビットマップイメージ中のピクセルサイズと同一である。これにより、以下で論じる比較ステップが単純化され、ベクトルイメージで得られる解像度が最適化される。しかし、ラスタ中のピクセルサイズは、必ずしもビットマップイメージ中のピクセルサイズと同一ではない。例えば、選択したエッジは、隠線を消去したベクトルイメージでは高解像度を必要としない可能性がある。この場合、ラスタ中の解像度−ピクセルサイズ−がビットマップイメージ中のピクセルサイズよりも高いと判断することができる。
【００４７】
ステップ２６の終りに、隠線を消去したエッジのラスタおよびビットマップイメージが得られる。次いで、ステップ２８〜３６で論じるように、ラスタのピクセルをイメージのピクセルと比較し、エッジのどの部分をベクトルイメージで可視とすべきかを判定することができる。図２のエッジ１０および１２の実施例では、この比較により以下の結果が得られる。エッジ１２については、ラスタ中の全ピクセルに対応するピクセルがビットマップイメージ中に存在する。これは、エッジ１２がモデリングしたオブジェクトのベクトルイメージで完全に可視となるべきであることを意味する。エッジ１０については、ラスタの中心付近のピクセルに対応するピクセルがビットマップイメージ中に存在しない。これは、中心付近のエッジ１０の一部が可視となるべきでないことを意味する。
【００４８】
ステップ２８では、ラスタ中の最初のピクセル、例えばエッジの一端に対応するピクセルを考慮する。ステップ３０では、選択したピクセルについて、対応するピクセルが存在するか否かについてビットマップイメージ内を探索する。ラスタ中のピクセルサイズとビットマップイメージ中のピクセルサイズが同一である最も単純な実施形態では、これは、エッジからのピクセルがラスタ中のピクセルの位置で描画されるか否かについてビットマップイメージ内を探索するものである。対応するピクセルが存在しない場合、プロセスはステップ３２に進み、ベクトルイメージ中で隠す必要があるエッジの一部に対応するラスタピクセルを求める。対応するピクセルが存在する場合、プロセスはステップ３４に進み、ベクトルイメージ中で可視となるべきエッジの一部に対応するラスタピクセルを求める。ピクセルサイズがビットマップイメージとラスタとで異なる場合、それに応じてステップ３０を適合させる。
【００４９】
ステップ３２または３４の後、プロセスはステップ３６に進み、次のラスタピクセルを見つけるテストを実施する。次のラスタピクセルが存在する場合、プロセス３０は、この次ピクセルについて３０に進む。存在しない場合、エッジのラスタを完全にスキャンしたことになり、プロセスはステップ３８に進む。
【００５０】
ステップ３８では、選択したエッジのラスタのピクセルについて比較が終了する。次いで、比較結果に基づいて、選択したエッジのどの部分がベクトルイメージで可視となるべきかを判定することができる。したがって、一解決策は、ラスタに沿って遷移を探索すること、すなわち、ステップ３０の比較で変化があったラスタのピクセルを探索することである。こうしたピクセルのエッジ上の位置は、エッジの可視部分または隠れる部分の端部を決定する。図２の実施例では、図４のステップ３０および３４で、基部４のエッジ１２が、下にあるビットマップピクセルと共にピクセルから構成される。これにより、エッジ１２がベクトルイメージで完全に可視となるべきであるという結論が得られる。図２のエッジ１０の左端から開始して、ピクセルはまず、点１４に対応するピクセルまで可視となる。このときに遷移があり、すなわち次のピクセルが不可視となる。点１６で第２の遷移があり、ピクセルが再び図２のエッジ１０の右端まで可視となる。
【００５１】
遷移ピクセルを知ると、ラスタを与える操作と逆の操作により、エッジ上の対応する点を見つけることができる。ラスタのピクセルとエッジの間の対応表を使用することもできる。したがって、ステップ２８〜３６での比較結果に基づいて、エッジの可視部分を求めることができる。
【００５２】
ステップ４０では、考慮すべき残りのエッジが存在するか否かをチェックする。その答えが肯定的である場合、プロセスはステップ２６に進む。そうでない場合は、ステップ４２で、エッジの可視部分と共にベクトルイメージを描画する。ステップ４０の前にステップ４２に進み、エッジごとにイメージを描画することもできる。これにより、隠線を消去したイメージを格納する必要が回避される。
【００５３】
１ピクセル未満のオブジェクトは、イメージ中で無視することができる。別法として、または組合せとして、ステップ３０または３２で、ピクセルが見つからなかった場合、周囲のピクセルを探索することができる。ＯｐｅｎＧＬ規格を使用する場合、この規格で１ピクセルの誤差が許容されるので、これは特に有用である。
【００５４】
本発明の利点は、図４の説明から明らかとなる。複雑さについては、各エッジが１度スキャンされ、ビットマップイメージと比較されるが、その他のあらゆるファセットまたはエッジとは比較されない。上記で論じたように解像度を適合させることができ、最大解像度を求めるためにビットマップイメージの粒度を変更することができる。例えば高解像度が不要であるイメージエリアで、ラスタについて異なる粒度を使用することもできる。
【００５５】
図４は本発明の一例に過ぎない。上記で論じたように、すべてのエッジの線形スキャンに進む必要はない。エッジを処理する順序は、得られる表示に影響を及ぼさない。上記で例示したように、エッジの一部をスキップすることもできる。同様に、比較ステップ２８〜３６で、一端から他端までエッジをスキャンする。いくつかのピクセルの平行比較に進むことができる。エッジ上に分布するピクセルのサブセットだけをまずスキャンし、次いでより細かいステップで遷移を捜すこともできる。採用される解決策は、必要な解像度に依存する。複雑な解決策をより高速にすることができる。図４のプロセスでは、ステップ３０でのテストは、ビットマップイメージ中にピクセルが存在するか否かだけをテストする。このテストは、白黒ビットマップイメージであっても実施することができる。
【００５６】
次に、本発明の他の実施形態を論じる。こうした実施形態の１つまたは複数は、図４のプロセスと組み合わせることができる。
【００５７】
図１のシルエット６および８のようなシルエットをエッジに加えることができる。こうしたシルエットは、その位置が選択する表示に依存するので、モデリングしたオブジェクトのテセレーション表現中のエッジまたは線ではない。それでもなお、こうしたシルエットは、隠される部分を探索するためにエッジとして処理することができる。したがって、オブジェクトのテセレーション表現を与えるステップ２０は、シルエットの計算を含むことがある。したがって、様々な実施形態の説明における「エッジ」という語は、モデリングしたオブジェクトの実際のエッジだけでなく、シルエットも包含することがある。
【００５８】
別の実施形態では、エッジに印が付けられる。言い換えれば、ビットマップイメージ中のエッジを区別する手段が提供される。まずエッジに印を付けることにより、図面中の重なるエッジ間を区別することが可能となる。図２の実施例では、モデリングしたオブジェクトの正面図で線１８と１０が重なる。エッジに印を付けることにより、線１８についてステップ２８〜３６を実行するときに、正面図のビットマップイメージ中のピクセルが線１８を表し、下にある線１０を表すのではないと判定することが可能となる。ステップ２８〜３６を実行するとき、線のラスタに対応する正面図のビットマップイメージ中の一部のピクセルが存在する場合であっても、線が完全に隠されることが確認される。したがって、線１８はベクトルイメージ中に描画されるが、線１０は描画されない。ベクトルイメージはより正確であり、重なった線は描画されない。別の実施例は、線間の交差である。図２では、線１０が線６および線８と交差する。線６および８は線１０の前にあるので、交点は実際にはそれぞれ線６および８の点である。エッジに印を付けることにより、交点を線１０にではなく、線６または８に描画すべきであると判定することが可能となる。
【００５９】
加えて、エッジに印を付けることにより、プロセスを高速化することができる。エッジに印を付けた場合、ビットマップイメージ中に存在するシグニチャの表を提供することができる。モデリングしたオブジェクトのエッジを考慮するとき、エッジのシグニチャがビットマップイメージ中に全く存在しない場合、比較ステップを実施する必要はない。これにより、ビットマップイメージ中に全く現れない線をスキャンすることを回避することが可能となる。図４のプロセスでは、エッジをラスタリングするステップ２６の前にテストステップを加えることができる。このステップでは、選択したエッジのシグニチャがビットマップイメージ中に現れるか否かを判定する。シグニチャが現れない場合、プロセスは直接ステップ３６にジャンプする。シグニチャが現れる場合、図４を参照しながら論じたようにステップ２６以下を実施することができる。
【００６０】
エッジに印を付けるにはいくつかの解決策がある。一解決策は、各色を様々なエッジに割り当てるものである。モデリングしたオブジェクトまたはその表現中のエッジにすでに付与された色が存在する可能性がある。エッジに対して様々な色を割り当てることもできる。エッジ数がグラフィックカードで使用可能な色の数よりも少ないことを条件として、この解決策により、モデリングしたオブジェクトのテセレーション表現中のすべてのエッジに対して異なる色を割り当てることが可能となるという点で、この解決策は特に有利である。色の数はしばしば２百万よりも多く、したがって色は効率的なシグニチャを提供する。このシグニチャはまた、ほとんどの設計システムおよびグラフィックカードで色が処理され、したがってシグニチャ用に追加のツールを提供する必要がないという利点も有する。この場合、割り当てた色を変更する可能性のある、アンチエイリアシングなどのグラフィックカードの機能を動作不能にすることができる。
【００６１】
別の解決策は、一部のグラフィックカードで提供される索引を使用するものである。こうしたカードにより、オブジェクトを索引付けすることが可能となる。したがって、索引はエッジに印を付けるための解決策である。
【００６２】
さらに別の解決策は、デプス情報を使用するものである。上記で論じたように、一部のグラフィックカードで提供されるデプスは、このプロセスの副産物である。ラスタが所与のエッジに対して提供されるとき、ラスタ中の様々なピクセルのデプスを計算することができる。デプスの比較により、重なったエッジ間を区別することが可能となる。図１のオブジェクトの正面図の実施例では、線１８と１０が重なるが、線１８が線１０の前にある。したがって、線１０のラスタのピクセルを考慮するとき、比較ステップ３０は、ビットマップイメージ中に対応するピクセルが存在することを示す。しかし、ビットマップイメージのピクセル（実際には、線１８の一部を表す）は、線１０のラスタのピクセルと同一のデプスではない。デプスをシグニチャとして使用するこの実施例は、各エッジのシグニチャが一意でない場合であっても、エッジに印を付けることが有利であることを示している。
【００６３】
上記で与えた実施例では、各エッジまたは線のシグニチャは単一のパラメータである。シグニチャは、１組のパラメータから形成することができる。例えば、色ｃおよびデプスｄから形成される対（ｃ，ｄ）をシグニチャとして使用することができる。色およびデプスが各エッジについて一意ではない場合、複合シグニチャ（ｃ，ｄ）により、あるエッジが別のエッジと区別される可能性がより高い。エッジを区別するために位置情報を使用することもできる。表示は、様々な部分、例えば４つの同一の部分に分離される。これにより、４つの部分の実施例では４つの値を有する、エッジの位置を表すパラメータが提供される。このパラメータは、エッジを識別するため、またはエッジ間を区別するために、図４のプロセスで使用することができる。
【００６４】
したがって、エッジに印を付けることにより、プロセスを高速化することができ、かつ／または、表示で線またはエッジが重なる場合に、得られるベクトルイメージの精度を改善することができる。
【００６５】
図４のプロセスは、線の交差に関してより正確にすることができる。まず、線６、８、および１０を参照しながら上記で論じたように、エッジに印を付けることにより、エッジが属する交点を求めることが可能となる。加えて、テセレーション表現のファセットに印が付けられている場合、所与の線を隠すエッジまたはファセットを求めることができる。例えば、図２の実施例では、線１０がシリンダ４のサーフェスによって部分的に隠される。このサーフェスのファセットに印が付けられている場合、比較ステップ３０〜３６で線１０に沿って進むとき、テセレーション表現中の最初のファセットを見つけることができる。例えば、ファセットおよびエッジがカラーサインされていると仮定する。図２のこのエッジの左端からエッジ１０に沿って進むとき、ビットマップイメージでエッジ１０の色を有するピクセルをまず見つけることができる。色がエッジ１０の色ではない最初のピクセルは、線１０を隠す円筒面のシルエットのシグニチャを提供する。このシルエットを識別し、線１０と識別したシルエットとの交差を計算することにより、エッジ１０の可視部分の端部を求めることができる。計算した交差はもちろん、図に対する投影の交差である。したがって、ピクセルサイズによって限定されない精度で線の可視部分の端部を求めることができることがわかる。ビットマップイメージは、テセレーション表現のどのエッジまたはファセットが選択したエッジの所与の部分を隠すかを求めるためだけに使用される。この隠すファセットとの交差は、交差を計算するために使用される。このことを、図５で拡大した縮尺で表す。この図は、シリンダ４のエッジ１０およびフェース（face）５０を概略的に示す。フェース５０は、様々な色で描画される様々なファセットから形成される。ファセット５２は、線１０を隠す最初のファセットである。図４のプロセスでは、線１０を左から右にスキャンすると仮定して、最初に、プロセスはステップ３２に進み、隠すピクセルがファセット５２の色を有する。
【００６６】
可視の線またはエッジをより高い精度で求めることもできる。まず、図５を参照しながら説明したように、隠すファセットを求める。次いで、このファセットに関係するフェースを見つける。次いで、このフェースとエッジとの交差を計算することができる。図２および図５の実施例では、ファセット５２が線１０を隠している。ファセット５２は、シリンダ４のフェースの一部である。これは、エッジ１０上の最後の可視点がこのエッジとシリンダのシルエットとの交差であるということを意味する。可視部分の端部を求める精度は、テセレーション表現に依存しない。図２および図５の実施例では、線１０が直線であり、その結果、線１０と対応するエッジとの間に差がない可能性がある。一連のエッジＥ１〜Ｅｍで近似される複雑な線Ｌの場合、線ＬのエッジＥｋがファセットＦｊによって隠されることを判定することができ、線ＬとファセットＦｊとの交点、または線ＬとファセットＦｊで表されるフェースＳとの交差を計算することができる。
【００６７】
本発明のこうした実施形態では、交差がピクセル解像度に依存する可能性が存在する場合であっても、線の可視部分の端部を求める精度はピクセル解像度に依存しない。サーフェスを使用して交差を求める場合、精度は、モデリングしたオブジェクトのテセレーション表現に依存しない。したがって、必要なだけ正確にベクトルイメージを提供することができる。隠線を有するベクトルイメージの精度は、イメージ上で変化する可能性があることに留意されたい。
【００６８】
ビットマップイメージ中のピクセルサイズを選択し、
線のラスタ中のピクセルサイズを選択し、
エッジまたは線とファセットとの交差を計算し、または、
エッジまたは線と下にあるフェースとの交差を計算することにより、イメージのエリアに従って精度を変更することができる。同一のベクトルイメージで、次々に、またはイメージの様々なエリアに対してすべての方法を使用することができる。次々に方法を使用した場合、プロセスは、粗いベクトルイメージを迅速に提供し、次いでイメージの精度を改善することができる。例えば、イメージの一部をズームし、イメージのズームした部分でベクトルイメージのより正確な計算を使用することができる。所与の精度を保証する解決策の使用は、ズーミング因子に依存する可能性がある。したがって、元の画面表示用に粗いベクトルイメージを提供し、ユーザによってズームされたイメージの部分のためにより良好な精度を有するイメージを提供することができる。同一のイメージで方法を使用した場合、イメージ上で精度を変更することができる。選択エリアでの精度を改善するためにフルイメージを再計算する必要はない。様々な部分にイメージを分離し、その様々な部分で解像度または精度を変更することができる。エンドユーザにとって注目のエリアがあらかじめ定められる場合、このことには特に注目できる。
【００６９】
本発明は、当業者にとって周知のプログラミングツールおよび解決策を使用して実装することができる。例えば、ＣＡＴＩＡ（登録商標）  Ｖ５（登録商標）アーキテクチャでは、Ｃ＋＋をプログラミング言語として使用することができ、ＡＴＩ（登録商標）またはＮＶＩＤＩＡ（登録商標）の商標で販売されているグラフィックカードなど、市販のどんなグラフィックカードも使用することができる。本発明を実施するプログラムは、ビットマップイメージ−例えばグラフィックカードから得られたビットマップイメージ−およびモデリングしたオブジェクトの表現を受け取る。ビットマップイメージに基づいて、図４を参照しながら上記で論じたように、プログラムは、モデリングしたオブジェクトの線をスキャンする。
【００７０】
図６〜１２は、従来技術の解決策および本発明のプロセスで得られるモデリングしたオブジェクトの表示である。図６は、ＣＡＴＩＡ（登録商標）で実装される従来技術の解決策で得られる、隠線を消去した複雑に設計したオブジェクトのベクトルイメージである。図６のベクトルイメージは、２．８ＧＨｚで動作するＩｎｔｅｌ（登録商標）  Ｐｅｎｔｉｕｍ（登録商標）ＩＶ（登録商標）プロセッサ、ランダムアクセスメモリ１Ｇｏ、およびＮＶＩＤＩＡ（登録商標）  Ｑｕａｄｒｏ２（登録商標）の商標で販売されているグラフィックカードを備えるコンピュータ上でＭｉｃｒｏｓｏｆｔ（登録商標）  Ｗｉｎｄｏｗｓ（登録商標）２０００（登録商標）オペレーティングシステムによりＣＡＴＩＡ（登録商標）  Ｖ５（登録商標）設計システムが動作するとき、２７秒で得られる。この構成は一例であり、本発明のプロセスは、任意のその他の構成で達成することができる。
【００７１】
図７は、本発明に従って得られるベクトルイメージである。このイメージは１１秒で得られる。イメージ品質は、従来技術のイメージ品質とほぼ同様である。
【００７２】
図８および図９は、同一のモデリングしたオブジェクトの拡大図である。図８のイメージは、３秒で得られる低品質イメージである。図９のイメージは、理解しやすいように図７をズーミングすることによって得られた拡大図である。図１０〜１２は、オブジェクトの様々なイメージの間の品質差を例示するものである。図１０は、オブジェクトのラスタイメージである。図１１は、図４のプロセスを使用して得られたイメージである。図１２は、従来技術の解決策によって得られる。これらの図を比較すると、本発明により、従来技術のイメージ品質と同様のイメージ品質を、より迅速に、かつ必要なリソースがより少なくても得ることが可能となることを示している。本発明は詳細な説明で与えた実施例に限定されない。各実施例では、オブジェクトのテセレーション表現を使用した。テセレーション表現は、グラフィックカードに直ちに入力することができる点で有利である。ＮＵＲＢＳ、サブディビジョンサーフェスなど、モデリングしたオブジェクトの任意のその他のタイプの表現も使用することができる。線という語の広い意味において、こうした表現も線を含むことができる。本発明の様々な実施形態は、同一のイメージ内であっても、組み合わせて使用することができる。
【図面の簡単な説明】
【００７３】
【図１】モデリングしたオブジェクトの概略ワイヤフレーム表現である。
【図２】図１と類似しているが、隠線を消去した図である。
【図３】図１と類似しているが、隠線を消去した図である。
【図４】本発明の第１実施形態でのプロセスのフローチャートである。
【図５】図２のオブジェクトのビットマップイメージの拡大図である。
【図６】従来技術の解決策および本発明のプロセスで得られるモデリングしたオブジェクトの表示である。
【図７】従来技術の解決策および本発明のプロセスで得られるモデリングしたオブジェクトの表示である。
【図８】従来技術の解決策および本発明のプロセスで得られるモデリングしたオブジェクトの表示である。
【図９】従来技術の解決策および本発明のプロセスで得られるモデリングしたオブジェクトの表示である。
【図１０】従来技術の解決策および本発明のプロセスで得られるモデリングしたオブジェクトの表示である。
【図１１】従来技術の解決策および本発明のプロセスで得られるモデリングしたオブジェクトの表示である。
【図１２】従来技術の解決策および本発明のプロセスで得られるモデリングしたオブジェクトの表示である。
【符号の説明】
【００７４】
２  基部（basis）
４  シリンダ（cylinder）
６，８  垂直線（vertical line）
１０，１２  線（line）またはエッジ（edge）
１４，１６  点（point）
５０，Ｓ  フェース（face）
５２  ファセット（facet）
【図１】
2005050336.tif 000003
【図２】
2005050336.tif 000004
【図３】
2005050336.tif 000005
【図４】
2005050336.tif 000006
【図５】
2005050336.tif 000007
【図６】
2005050336.tif 000008
【図７】
2005050336.tif 000009
【図８】
2005050336.tif 000010
【図９】
2005050336.tif 000011
【図１０】
2005050336.tif 000012
【図１１】
2005050336.tif 000013
【図１２】
2005050336.tif 000014
【外国語明細書】
2005050336000001.pdf