コンピュータ生成モデルの変形
【課題】 3次元モデルの形状の変更を生じさせるための3次元コンピュータ生成モデルを変形させる方法を提供すること。
【解決手段】 最初に元の面定義を備える面表現を使用して3次元モデルの表面を表すステップと、複数の滑らかな3次元マッピング関数を導き出すステップで、各3次元マッピング関数は曲面への変形を定義し、少なくとも1つの3次元マッピング関数は非アフィン変換であるステップと、複数の3次元マッピング関数および元の面定義の合成を構築し、各3次元マッピング関数は3次元マッピング関数が導き出された順序に従って連続して合成に含まれているステップと、連続する各3次元マッピング関数が合成に含まれた後に合成を適用し、これにより前記3次元モデルの表面は変形され、しかも滑らかさが前記複数のマッピング関数の最低限度の滑らかさに保持されるステップとを含む。
【解決手段】 最初に元の面定義を備える面表現を使用して3次元モデルの表面を表すステップと、複数の滑らかな3次元マッピング関数を導き出すステップで、各3次元マッピング関数は曲面への変形を定義し、少なくとも1つの3次元マッピング関数は非アフィン変換であるステップと、複数の3次元マッピング関数および元の面定義の合成を構築し、各3次元マッピング関数は3次元マッピング関数が導き出された順序に従って連続して合成に含まれているステップと、連続する各3次元マッピング関数が合成に含まれた後に合成を適用し、これにより前記3次元モデルの表面は変形され、しかも滑らかさが前記複数のマッピング関数の最低限度の滑らかさに保持されるステップとを含む。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータ支援設計(CAD)ソフトウェアにより、ユーザは複雑な3次元(3D)モデルを構築して操作することができる。多種多様なモデリング技法を使用して、3Dモデルを作成することができる。これらの技法には、ソリッドモデリング、ワイヤフレームモデリング、およびサーフェスモデリングが含まれる。ソリッドモデリング技法は、3Dモデルが相互接続された位相的エンティティ(例えば頂点、辺、および曲面など)の集合であるトポロジ3Dモデルを提供する。位相的エンティティは、対応する補助幾何学的エンティティ(例えば点、切り取られた曲線、および切り取られた曲面など)を備えている。切り取られた曲面は、境界線によって輪郭が示される位相的曲面に対応する。一方、ワイヤフレームモデリング技法は、単純な3Dの線の集合としてモデルを表すために使用することができる。これに対してサーフェスモデリングは、外面の集合としてモデルを表すために使用することができる。CADシステムは、これらの技法およびパラメトリックモデリング技法などの様々なモデリング技法を組み合わせることができる。パラメトリックモデリング技法は、モデルの様々な特徴およびコンポーネントに対して様々なパラメータを定義するため、また様々なパラメータ間の関係に基づいてそれらの特徴およびコンポーネント間の関係を定義するために使用することができる。
【0002】
曲面は、いくつかの技法を使用してCADシステムで表される。技法には、パラメトリック面、メッシュ面、細分化面、および黙示面のような面の定義が含まれる。
【0003】
パラメトリック面は、パラメータ空間の変形であり、通常その空間は長方形である。コンピュータ支援モデリングソフトウェアは一般に、低度代数変形を使用し、様々なスプライン曲面および二次曲面をもたらす。一部の種類のパラメトリック面では、一連のコントロールポイントが面の形状を定義する。
【0004】
モザイク面ともよばれるメッシュ面は、接続された一連のポリゴンであるが、これは多くの場合三角ポリゴンである。メッシュ面は、滑らかな表面を正確に表すことはできない。ただし、メッシュ面に適用される特定の基本操作は、実装も容易で効率的に実行することができる。そのような基本操作には、境界ボックスを計算して、メッシュ面と1つまたは複数の単純オブジェクトを交差させるステップが含まれる。
【0005】
細分化面は、メッシュのシーケンスの限界として定義される。そのようなシーケンスにおいて各メッシュは、当業者には既知である複数の細分化方法の1つに従って、シーケンス内で直前のメッシュを細分化することによって得られる。したがって、初期制御メッシュ(つまり、シーケンス内の最初のメッシュ)は、細分化面を指定するのに十分である。初期制御メッシュは滑らかではないが、得られた細分化面は滑らかであり、得られた細分化面の平滑度は選択された細分化方法によって異なる。必要に応じて、細分化方法は、特定のエッジがくっきりした状態を保つように調整することができる。
【0006】
黙示面は、F(x,y,z)=0の式を満たす点の集合として定義される。Fが滑らかな関数である場合、曲面は通常滑らかになる。球面、円環面、および楕円面は、黙示面として表すことのできるいくつかの曲面である。
【0007】
一般に、最先端技術のコンピュータグラフィックハードウェアは、メッシュ面表現をレンダリングするように最適化される。そのため、一部の面表現は通常、レンダリングのためにメッシュ面に変換される。パラメトリック面をメッシュで近似値化することは、一般に容易である。メッシュはパラメトリック空間に構築することができ、曲面の変形がメッシュ頂点で評価できるからである。メッシュのシーケンスは細分化面に非常にすばやく集束するため、細分化面のメッシュへの変換も一般に容易である。黙示面をメッシュで近似値化することは、一般に困難である。ただし、黙示面を近似値化するための方法が開発されている。
【0008】
スプライン曲面または細分化曲面を変形させるため、面制御メッシュが変更される。制御メッシュが粗くなれば、それに応じて、曲面への変更を制御する能力はさらに制限される。しかし、より細かい制御メッシュ(小さな形状を作り出すために必要となる)は、制御メッシュのサイズを増加させ、そのため、曲面を格納するためにより多くのメモリが必要になり、曲面を変形するためにより多くの計算が必要になる。
【0009】
もう1つの変形の手法は、曲面が位置している空間を変形させることである。通常、3D空間は立方体メッシュにモザイク式にはめ込まれて、立方体メッシュが変形される。非特許文献1の記事に説明されているように、変形されたメッシュを基に、空間全体に対して変形が計算され、曲面に適用される。非特許文献2の記事に説明されているように、変形は、空間全体の一部のみに影響を及ぼすように制約することができる。
【0010】
空間変形を定義することの1つの欠点は、その目的が曲面の存在する空間ではなく曲面を変形することにあるため、曲面が位置している空間を変形する作業が直観的ではないことである。さらに、空間変形がメッシュの頂点に適用された場合、隣接するポリゴン間の角度が広がるため、メッシュのくっきりしたエッジが誇張されることがある。空間変形をメッシュポリゴンに適用するには、結果を別のメッシュによって再近似値化する必要が生じる。元のメッシュの精密化により結果を再近似値化すると、ポリゴンの縦横比の劣化をまねくことが多い。さらに、空間変形がスプライン曲面に適用される場合、得られた曲面をスプライン曲面に変換する作業は計算処理上高価なものになり、曲面の滑らかさを保持することができなくなる。一般に、面パッチ間の滑らかさの制約は、近似値化によってしか保持することができない。
【0011】
多くの市販されている3D CADシステムは、フリーフォーム曲面操作機能を備えている。そのような機能は通常、非均等有理B−スプライン(NURBS)曲面として曲面を内部的に表すことによって制約される。したがって、操作コントロールは多くの場合、曲面の特定の点または曲線に制限されている。このため、ユーザは、望ましい形状を形成する各自の能力に制限がある。一部のシステムでは、任意の点または曲線を操作コントロールとして使用することができる。例えば、マサチューセッツ州コンコ−ドのSolidWorks Corporationから提供されているSolidWorks(登録商標)2004ソフトウェア製品では、操作コントロールとして任意の点または曲線を使用して1つまたは複数の曲面を変形することができる。次に、得られた曲面は、NURBS面パッチで近似値化される。望ましい形状の精度および面パッチ間の滑らかさを達成することは、一般に、高密度制御グリッドにつながり、そのような曲面をその後の操作で計算処理上高価なものにする。
【0012】
3D CADシステムの多くのユーザは、3Dモデリング技法に熟達しており、専門的に3Dモデルを設計する。これらの経験豊富なユーザは、曲面を定義するために使用される制御点およびメッシュを操作する方法、および曲面エンティティである頂点および辺を操作する方法を理解している。様々な複雑度の3Dモデルの形状を作成して変更するための単純で直観的な手段を提供する3D CADシステムは、3Dモデリング技法に熟達していない人々にも熟達している人々にとっても有利になると考えられる。ユーザが任意の点、曲線、または曲面領域の直接操作によって複雑なモデルをインタラクティブに変形して、しかもモデル全体に曲面の滑らかさを保持することのできる3D CADシステムは、ユーザが自然で、すばやく、簡単に滑らかな形状を作成できるようにし、それによって3D CADシステムの機能性および使いやすさを高めることになる。
【0013】
【非特許文献1】"A Framework for Geometric Warps and Deformation" by Tim Milliron et al., ACM Transactions on Graphics, Vol.21, No.1, January 2002, pp.20-51
【非特許文献2】"General Constrained Deformations Based on Generalized Metaballs" by Xiaogang Jin et al., Pacific Conference on Computer Graphics and Applications 1998, pp.115-124
【非特許文献3】"Bubble Mesh: Automated Triangular Meshing of Non-Manifold Geometry by Sphere Packing" by Kenji Shimada and David C. Gossard, Third ACM Symposium on Solid Modeling and Applications, ACM Press 1995, pp.409-419
【発明の開示】
【発明が解決しようとする課題】
【0014】
一般に、1つの態様において、本発明は、3次元コンピュータ生成モデルを変形するためのコンピュータ実装方法を目的としている。方法は、元の面定義を含む面表現を使用して3次元モデルの表面を表すステップを含んでいる。曲面への変形を定義する滑らかな3次元マッピング関数が導き出され、少なくとも1つの3次元マッピング関数は非アフィン変換である。3次元マッピング関数および元の面定義の合成が構築される。ここで各マッピング関数は連続して合成に含まれている。さらに、マッピング関数は合成内で、マッピング関数が導き出された順序で並べられる。合成は、連続する各3次元マッピング関数が合成に含まれた後に適用され、それにより3次元モデルの表面は変形されて、滑らかさがマッピング関数の最低限度の滑らかさに保持される。
【0015】
実施形態は、曲面をパラメトリック面、メッシュ面、または細分化面として定義するステップ、および連鎖法を使用して面表現の導関数を決定するステップを含むことができる。
【0016】
変形結果の描写を含んでいるユーザインターフェースは、一部の実施形態によって表示することができ、1つの描写を選択してマッピング関数として実装されている変形操作を示すことができる。変形操作により、曲線、点、または曲面の領域は引き伸ばすことができる。さらに、変形操作では、曲面に球形または曲線を型押しするか、あるいは曲面を細くしたり、平らにしたり、ねじることができる。
【0017】
実施形態はさらに、1つまたは複数の以下の特徴を含めることができる。モデルの曲面に関して配置される変形コントロールは、マッピング関数のパラメータとして識別し、変換し、使用することができる。変形コントロールは、低位のジオメトリであっても、点、曲線、平面、線、軸、面の領域、または放物線オブジェクトであってもよい。
【0018】
本発明の1つまたは複数の実施形態の詳細については、付属の図面および以下の説明により示される。本発明の他の特徴、目的、および利点は、以下の説明および図、さらに請求の範囲を参照すれば明らかになろう。
【課題を解決するための手段】
【0019】
本発明は、任意の低位ジオメトリおよび他の変形コントロールを使用して1つまたは複数の曲面を直接操作することにより、フリーフォーム面の滑らかなリアルタイムの変形を容易にする。そのような任意の低位ジオメトリには、例として点、曲線、平面、軸、および曲面があげられるが、これらに限定されることはない。さらに、本発明は、曲面の既存の滑らかさおよび既存の面曲率特性を保持する。モデルの精度に損失を生じることなくモデルの形状を変化させるために、滑らかな空間マッピングのシーケンスが使用される。さらに、ユーザインターフェースは、フリーフォーム面を変形する自然で、すばやく、しかも簡単な手法をユーザに提供する。ユーザインターフェースは、1つまたは複数の曲面のインタラクティブな直接操作をサポートする機能ライブラリへのアクセスを容易にする。以上のことから、本発明は、コンピュータ制御のモデリングシステムの機能を高める。
【発明を実施するための最良の形態】
【0020】
図1は、CRTに表示され、コンピュータ化モデリングシステムによって実行されたモデリングソフトウェアによって生成されたウィンドウ102を示している。その例は、以下で図9を参照して示す。ウィンドウ102は、標準的なコンピュータ生成のウィンドウであり、当業者であればワシントン州レドモンドのMicrosoft Corporationから提供されているような従来の市販のソフトウェアプログラミングツールを使用してプログラミングすることができる。
【0021】
コンピュータ生成3Dモデル104は、ウィンドウ102のモデリング部分106内に表示される。実線または破線を使用して3Dモデルの見えているエッジと隠れているエッジを示すことで、3Dモデル104の曲面を表示するか、または3Dモデル104を表示することができる。実施形態はさらに、他のウィンドウ領域を含むこともできる。一連のファイルアイコン108は、球形基本要素などの基本モデルとして使用できる様々なファイルを選択する際にユーザを補助する。一連の変形アイコン110により、ユーザは、ウィンドウ102のモデリング部分106に示されるモデル104を操作することができる。
【0022】
図2は、一連の変形アイコン110を示している。各変形アイコン110は変形の結果を示し、選択されている場合、特定の関数がモデルの局所領域に適用されることをモデリングソフトウェアに示す。これらの3つの関数は、曲面上の点、曲面上の曲線、および曲面の領域が引き出されるようにし、それぞれ点引き出しアイコン(point pull icon)212、曲線引き出しアイコン(curve pull icon)214、および領域引き出しアイコン(area pull icon)220を選択することでアクティブ化される。曲線、点、または領域が引き出されると、曲面はリアルタイムで変更される。したがって、引き出すアクションおよび引き出す操作によって生じた変更は、インタラクティブである。もう1つの関数は、球形のへこみが曲面上に型押しされるようにし、球形突きアイコン(poke sphere icon)216およびモデルに関して球形の中心点が選択された場合、アクティブ化される。さらにもう1つの関数は、特定の場所で曲面が細くなるようにするもので、ネック作成アイコン(create neck icon)224が選択されるとアクティブ化された後平面が表示されて、平面の方向に幅が狭くなるように配置される。平面上の任意の点はさらに、幅を狭める効果の中心を指定するように示される。面つぶしアイコン(flatten surface icon)218が選択されると、曲面が平らにされる場所に平面が配置された後、面がつぶされる。曲線型押しアイコン(curve imprint icon)222が選択されると、曲面上に曲線が型押しされる。引き出し関数の場合のように、すべての他の関数はリアルタイムでモデルに適用されるため、得られる変形はインタラクティブに生じる。
【0023】
図3は、最初に球形であった図形の周囲に配置された任意点332(カーソルオブジェクト334に付属)を直接操作することによって変形された3Dモデル330を示す図である。初期の球形は、ファイルアイコン336を選択した後に表示することができる。図3に表示されている3Dモデル330を変形するため、ユーザはまず点引き出し変形アイコン(point pull deformation icon)212を選択し、次に任意点332を選択する。ユーザは、ポインティングデバイス(例えばマウス)を使用して、任意点332をインタラクティブに移動することができる。任意点332の移動に応じて、3Dモデル330はリアルタイムで変形される。
【0024】
図4は、カーソルオブジェクト334に付属している任意点332を直接操作した後の3Dモデル330の滑らかな変形を示している。図4において、3Dモデル330は、図3の場合とは異なった外観を呈する。任意点332の変位によって3Dモデル330の曲面上のより広い領域が影響を受けたためである。ユーザインターフェースコントロールのスライダ434は、作用領域を減少および増大させるために使用される。スライダ434がウィンドウ102の下部方向に移動すると、モデルのより大きい部分が作用範囲に含められる。一方、スライダ434がウィンドウ102の上部方向に移動すると、モデルのより小さい部分が作用範囲に含められる。
【0025】
図5Aおよび図5Bは、3Dモデル502に描かれた任意の曲線504を操作することによる3Dモデル502の変形を示している。任意点の直接操作を介して3Dモデルが変形される場合と同様に、任意曲線の直接操作によって生じる変形は局部的な変形である。曲線は、曲線シンボル506がユーザインターフェースから選択された後にモデル上に描くことができる。他のシンボル508は、直線および弧をモデル上に描けるようにするユーザインターフェースから選択して、モデルを直接操作するために使用することができる。図5Bは、ポインティングデバイスを使用して曲線504が引き出された後の3Dモデル502を示している。図5Bに示すように、曲線504の変形は表面を押し出す。3Dモデル502の方向は、図5Aおよび図5Bにおいて異なっている。3Dモデル502を変形するために使用された曲線504および3Dモデル502の変形は異なる視点からさらに有利に観察されるからである。
【0026】
図6Aおよび6Bは、モデル104に適用されるグローバル変形を示している。図6Aにおいて、グローバル変形は、スケール関数を適用した結果である。スケール関数は、ユーザインターフェースからスケールアイコン606が選択された後にアクティブ化される。その後、3次元の囲み線がモデル104の周囲に描かれる。囲み線の角または面は、囲み線のサイズまたは形状を変更するように移動することができ、それによりスケール関数がモデル104に適用される。円錐ハンドル608は、囲み線の移動を制御するために提供される。
【0027】
モデルにグローバルな影響を与える他の関数には、曲げ関数およびねじれ関数が含まれ、これらはそれぞれ曲げアイコン612およびねじれ関数614が選択されるとアクティブ化される。図6Bは、曲げ関数がモデル104に適用された後のモデル104を示している。曲げアイコン612が選択された後、放物線オブジェクト616がモデリング領域106に表示される。ピボットポイント618が放物線オブジェクト616上に指定され、作用ポイント620も指定される。ピボットポイント618および作用ポイント620は、ポインティングデバイスを使用して移動することができる。ピボットポイント618または作用ポイント620の1つが移動すると、放物線オブジェクト616は曲がり、モデル104は放物線オブジェクト616と同様に曲がることによって変形される。ねじれアイコン614が選択された場合、ねじれの動きを制御するために回転コントロールおよび軸が表示される。
【0028】
ここで図7を参照すると、3Dモデルを直接操作するための手順700が示されている。最初に、モデルの表現が定義される(ステップ702)。モデル表現は、パラメトリック面、メッシュ面、および細分化面を含む、評価できる任意の面表現を含むことができる。一般に、本発明は、評価することのできるモデルの任意の3D表現に適用される。
【0029】
次のステップにおいて、変形操作が選択され、変形コントロールが識別される(ステップ704)。変形操作は、変形アイコン110の1つまたはグローバル変形操作を示すアイコンの1つを選択することで選択できる。これらのアイコンについては、それぞれ図2、図6Aおよび図6Bを参照して前記で説明してある。例えば、図2に示す曲線引き出しアイコン214を選択すると、曲線の形状をモデルに適用することでモデルを変形する変形操作を選択することができ、球形突きアイコン216(図2を参照)を選択すると、モデルの1つまたは複数の曲面に球状の印象を与える変形操作を選択することができる。変形コントロールは、任意の低位ジオメトリにすることができる。非限定的な例をあげると、識別された変形コントロールは、点、曲線、平面、軸、または面の領域であってもよく、点の選択、曲線の描画、平面の配置、または面領域の指定によって識別することができる。変形コントロールはまた、グローバル変形を適用するために使用されるオブジェクトであってもよい。いずれの場合にも、変形コントロールは選択された変形操作を補完する。例えば、引き出し操作は、点、曲線、または面の領域によって制御することができる。スケール操作は、(図6Aに示すように)長方形フレームの円錐ハンドルによって制御することができる。曲げ操作は、(図6Bに示すように)ピボットポイントおよび作用ポイントによって制御することができる。さらに、一部の変形コントロールは、選択された変形操作の特性によって暗黙指定される場合もある。
【0030】
次のステップにおいて、1つまたは複数の追加の制約が定義される(ステップ706)。そのような追加の制約の1つは、作用範囲である。作用範囲が制約として定義された場合、変形コントロールを取り囲む領域内のポイントだけが変形操作の影響を受ける。非限定的な例をあげると、作用範囲は、変形コントロールを取り囲む指定の大きさの半径によって指定される3次元領域である。さらに、作用範囲のサイズは、システム定義のサイズまたはユーザ定義のサイズであってもよい。もう1つの制約は領域制約であり、この場合には、選択された領域だけが変形操作の影響を受ける。選択される領域は、変形の影響を受ける領域を取り囲む輪郭を描くことによって示すことができる。
【0031】
さらにもう1つの制約は、パターン制約である。パターン制約が定義された場合、四角形、円形、またはミラーパターンなどのパターンに必要な方法で変形を複製する。ミラーパターン制約の場合、ミラーアイコンがユーザインターフェースから選択されると、選択されたコンポーネントがユーザによって配置された平面の反対側に対照的に複製される。その後、対称コンポーネントの1つが変形される場合、対称変形がもう一方の対称コンポーネントに同時に適用される。
【0032】
他の追加の制約には、ハーフスペース制約またはスペースバンド制約を含めることができる。ハーフスペース制約は、変形操作を、指定された平面の片側に配置されたポイントに限定する。スペースバンド制約は、変形操作を、2つの並行面の間に配置されたポイントに限定する。
【0033】
次のステップにおいて、変形コントロールが移動または変更される(ステップ708)。変形コントロールは、マウスなどのポインティングデバイスを使用する従来のユーザインターフェースによって移動し、変形コントロール(例えば、点、曲線、または面の領域など)をモデリング領域の新しい位置にドラッグすることができる。変形コントロールは、変更することもできる。非限定的な例をあげると、最初に直線である変形コントロールは湾曲させることができ、曲線である変形コントロールは形状を変更する(例えば曲げる)ことができ、あるいは領域を取り囲む境界である変形コントロールは拡張、縮小、または他の方法で変更(例えば歪曲)することができる。
【0034】
変形コントロールが移動または変更される一部の例では、変形ターゲットが形成される。変形ターゲットは、新しい位置で変形コントロールを表すか、または新しい形状をとる変形コントロールを表す。変形ターゲットは、変形コントロールと同じ表現を使用して定義される。つまり、変形コントロールが点または曲線である場合、変形ターゲットはそれぞれ、点または曲線として表される。
【0035】
次に、手順700は、機能ライブラリから3Dマッピング関数を導き出す(ステップ710)。3Dモデルに適用される際に3Dマッピング関数は、該当する場合、ステップ706で定義された追加の制約を考慮しながら、変形コントロールを変形ターゲットにマッピングする。3Dマッピング関数が滑らかである場合、3Dマッピング関数は、モデルの面内および面間の平滑度を自動的に保持する。例えば、C2マッピングは、面内および面間のC2連続性を保持する。
【0036】
ループ720の各サイクルあたり1つの、ステップ710で導き出した一連の3Dマッピング関数は、操作される1つまたは複数の曲面の変形される形状を決定する。モデルの内部表現は、ワープ面の集合として保持される。ここで本発明によって実装されるワープ面は元の面定義に適用される滑らかな3Dマッピング関数のシーケンスである。各変形にモデルの曲面の初期定義を再定義させるのではなく、滑らかな3Dマッピング関数のシーケンスおよび元の定義が格納されて相互に関連付けられる。ループ720のサイクルごとにステップ710で導き出された各滑らかな3Dマッピング関数は、順に1つの変形を表す。
【0037】
ワープ面を使用することの1つの利点は、任意のパラメトリック面を変換することなく元の曲面として使用できることにある。3Dマッピングの同じシーケンスを、B−rep(つまり境界表現面)などのパラメトリック面の集合に適用すると、通常、パラメトリック面の集合のトポロジおよびパラメトリック面の間の連続関係の両方を保持する。ワープ面を使用することのもう1つの利点は、操作にまったく近似が必要ないため、曲面が操作される際に精度が保持されることにある。実装は、ワープ面へのメッシュ近似値化を使用することによって表示およびクエリ最適化の恩恵を受けることができる。ただし、この近似値化は面表現に組み込まれない。ワープ面を使用することのもう1つの利点は、曲面の精度エバリュエータ(つまり、関数の値およびその導関数を計算する方法)が使用可能であるため、ワープ面はパラメトリック面の利点のすべてを備えている(例えば、メッシュで面を近似させる方法および様々な形状演算のための方法があること)ことにある。ワープ面を使用することのさらにもう1つの利点は、新しい変形でモデル状態を更新するために比較的わずかな計算しか必要ないことにあり、そのためモデルをインタラクティブに操作することができる。ワープ面を使用することのさらにもう1つの利点は、各々の変形が少数のパラメータで記述することができるため、ディスクストレージスペースに関してモデル全体の簡潔な表現をもたらすことができることにある。
【0038】
手順700の次のステップにおいて、3Dマッピング関数は現在のモデル状態に適用される(ステップ712)。ここで現在のモデル状態は、これまでに適用されたすべての変換(3Dマッピング関数など)を備えるモデルの元の表現である。例えば、モデル表現が多角形メッシュとして定義される場合、モデル状態は変換のシーケンスを多角形メッシュの頂点に適用することによって生成される。より高い曲率の領域において、変形されたモデルのメッシュ近似の精度を高めるため、多角形メッシュの密度は自動的に増加させることができる。
【0039】
手順700では次に、識別された変形コントロール、選択された変形操作、および定義された制約を使用してモデルの変形を続行するかどうか決定する(ステップ714)。続行の決定は、変形コントロールを移動または変更するようにさらに入力が受け取られた場合に行われる。続行の決定が行われた場合、導き出された最新の3Dマッピング操作が、その後導き出された3Dマッピング関数に置き換えられる。
【0040】
識別された変形コントロール、選択された変形操作、および定義された制約を使用してモデルの変形が完了した場合、手順700では次に、新しい機能をモデルに適用するかどうか決定する(ステップ716)。新しい機能をモデルに適用する場合、別の変形操作が選択され、別の変形コントロールが識別され(ステップ704)、および/または追加の制約が定義される(ステップ706)。次に変形コントロールは、移動または変更される(ステップ708)。次に、新しい3Dマッピング関数が導き出され(ステップ710)、現在のモデル状態に適用される(ステップ712)が、これには以前導き出された3Dマッピング関数が含まれている。新しい3Dマッピング関数は、モデルを再定義するために使用される変換のシーケンスにおいて別の変換になり、識別された変形コントロール、選択された変形操作、および定義された制約を使用するモデルの変形を続行しないように決定されるまで、その後導き出された3Dマッピング関数に置き換えられる。手順700で新しい機能がモデルに適用されないように決定した場合(ステップ716)、手順700は終了する(ステップ718)。
【0041】
1つの実施形態において、変形されたモデルは、プレビューのためにユーザに提示することができる。そのような実施形態において、プレビューステップは、モデルの変形を続行しない決定が行われた直後(すなわちステップ714の後で、かつステップ716の前)に生じる。プレビューステップでは、ユーザに変形を受け入れるかどうかたずねるユーザインターフェースダイアログボックスを表示する。次にユーザは、ダイアログボックスの承認ボタンを押すことで変形を受け入れる機会がある。この場合、導き出された最後の3Dマッピング関数が3Dマッピング関数のワープ面シーケンスに追加される。ユーザが、ダイアログボックスに表示された拒否ボタンを押した場合、導き出した最後の3Dマッピング関数は3Dマッピング関数のワープ面シーケンスに追加されない。
【0042】
ここで図8を参照すると、本発明によって使用されるモデルのデータ構造800が示されている。データ構造800は、3つのワープ面830、840、および850によって定義されるモデルの抽象的表現である。3つの曲面は、面1定義832、面2定義842、および、面3定義852として格納される。図7のステップ710で導き出した3つの3Dマッピング関数は、3つの曲面のうち1つまたは複数の曲面に適用される。1つの3Dマッピング関数は面1定義832および面2定義842に適用され、第1の3Dマッピング関数834および第1の3Dマッピング関数844としてデータ構造800に2回格納される。第2の3Dマッピング関数836は、面1定義832のみに適用され、面1定義832に関連付けられているデータ構造800に格納される。第3の3Dマッピング関数は面1定義832、面2定義842、および面3定義852に適用され、第3の3Dマッピング関数838、第3の3Dマッピング関数848、および第3の3Dマッピング関数858としてデータ構造800に格納される。
【0043】
ステップ710で導き出され、図8で説明されている3Dマッピング関数は、適用される特定の変形を定義する。当業者であれば、本明細書で説明されている変形および他の変形を定義できる様々なマッピング関数を設計することができるであろう。一般に、フリーフォーム変形の設計は、十分な制約がない問題である。つまり、可能な変形の数が大きければ、望ましい特性を備えることができる。以下に、前述の変形の可能な定義の一部について、非限定的な例をあげて説明する。定義は、xの関数として表される。ここでxは3D空間内の点である。
【0044】
1つの実施形態において、変形コントロールが移動または変更されると、変形コントロールに最も近接する点が最も大きい移動を行う。つまり、作用領域の外側境界に近接する点は、変形コントロールにより近い点に比べて少ない距離を移動し、作用領域の外側境界上または境界の向こう側の点はまったく移動しない。
【0045】
以下の2つの例において、h(t)と示される関数は、変形が作用範囲の外側境界で最大になるコントロール付近の領域からの滑らかな移行を構築するために使用される。関数は、その定義域全体でC2であり、以下のように定義される。
【0046】
【数1】
【0047】
ポイント引き出し操作のために設計されたマッピング関数は、以下のように表すことができる。
【0048】
【数2】
【0049】
ここで
【0050】
【数3】
【0051】
は変形コントロールの位置である。
【0052】
【数4】
【0053】
はターゲットポイントであり、
Rは影響範囲の半径である。
【0054】
1つの実施形態に実装されて、モデル化オブジェクトの幅を狭める(例えば、ネックを作成する)マッピング関数の例は、以下のように表すことができる。
【0055】
【数5】
【0056】
ここで
【0057】
【数6】
【0058】
はネック形状の中心点である。
【0059】
sは倍率であり、s>0である。
【0060】
Rは影響範囲の半径である。
【0061】
【数7】
【0062】
は、中心点を通って配置された平面に垂直な単位ベクトルであり、モデル化オブジェクトの点が平面に沿って中心点に引き出されるようになっている。
【0063】
【数8】
【0064】
は、ベクトル
【0065】
【数9】
【0066】
および
【0067】
【数10】
【0068】
の内積を示している。
【0069】
1つの実施形態において、モデル化オブジェクトに球形特性を型押しするためのマッピング関数は、以下のように表すことができる。
【0070】
【数11】
【0071】
ここで
【0072】
【数12】
【0073】
はモデルに作用する球形の中心である。
【0074】
Rは、球形の半径である。
【0075】
rは、型押しされる球形および影響範囲の半径の端との間の以降の半径であり、
【0076】
【数13】
【0077】
前述の3Dマッピング関数の式は、空間でC2連続であり、このため曲面のC2連続は保持される。さらに、前述の3Dマッピング関数の式は、非アフィン3Dマッピング関数である。さらに、前述の式は、自然に見える形状変形をもたらし、効率的な実装を可能にする。
【0078】
ユーザの視点から考えると、本明細書で説明されている変形は、各々の変形がワープ面への変形として指定され、しかも内部で適切な空間変形(3Dマッピングなど)が構築されるため、直観的である。1つの実施形態において、元の曲面は、パラメトリック面s(u,v):[0,1]2→R3として定義されるが、これは長方形である可能性もある。マッピングf:R3→R3が元の曲面に適用される場合、新しいパラメトリック面は
【0079】
【数14】
【0080】
として表すことができる。nのマッピングf1,...fnの後、新しいパラメトリック面は、マッピングおよび元のパラメトリック面の合成、つまり
【0081】
【数15】
【0082】
である。上記ではパラメトリック面を使用する実施形態について説明しているが、元の曲面は評価できる任意の種類の曲面として定義することができる。
【0083】
パラメトリック面を表示して、曲面に効率的に他の計算を実行するため、曲面を近似値化するメッシュは保持される。新しい変形が3Dマッピングシーケンスに追加される場合、新しい変形は、変形される曲面に近似値化するメッシュを実現するようにメッシュの頂点に適用される。変形後にメッシュが粗過ぎる場合、曲面は追加の点において評価され、必要に応じてメッシュが精密化される。メッシュは、非特許文献3に説明されているような技術を使用して生成することができる。
【0084】
様々なモデリング操作(例えば、面交差、レンダリング、およびメッシュ精密化)は、曲面の一次および二次導関数を評価する能力を必要とするか、またはその能力によって高めることができる。好ましい実施形態において、3Dマッピングエバリュエータは一次および二次導関数を処理することができる。1つの実施形態において、任意点におけるワープ面の正確な一次および二次導関数を計算するために(関数の合成の導関数を求める場合当業者には既知である)連鎖法が適用される。
【0085】
本発明のさらなる利点には、任意の低位ジオメトリを使用して、1つまたは複数のワープ面としてモデルの滑らかなリアルタイムの変形および効率的なディスクストレージを制御する能力を提供することが含まれる。低位ジオメトリを使用してモデルを操作することにより、フリーフォーム面を変形する自然で、すばやく、しかも簡単な手法を本発明のユーザに提供する。一方、モデルを1つまたは複数のワープ面として格納することは、ストレージスペースの点からも効率的であるばかりでなく、ワープ面として格納するのでモデルの精度を保持することがきる。
【0086】
図9は、CPU902、CRT904、キーボード入力装置906、マウス入力装置908、および記憶装置910を含むコンピュータ化モデリングシステム900を示している。CPU902、CRT904、キーボード906、マウス908、および記憶装置910は、一般に提供されているコンピュータハードウェア装置を含めることができる。例えば、CPU902は、Pentium(登録商標)ベースのプロセッサを含めることができる。マウス908は、CPU902によって実行されているソフトウェアプログラムにコマンドを発行するためにユーザが押すことができる通常の左および右ボタンを備えることができる。代替として、あるいはマウス908に追加して、コンピュータ化モデリングシステム900は、トラックボールなどのポインティングデバイス、タッチパッド、またはキーボード906に組み込みのポインティングデバイスおよびボタンを含むことができる。当業者であれば、マウス装置を参照して本明細書に説明されている同様の結果が、他の使用可能なポインティングデバイスを使用して達成できることを理解するであろう。以下の説明から明らかとなるように、他のしかるべきコンピュータハードウェアプラットフォームも適切である。そのようなコンピュータハードウェアプラットフォームは、Microsoft Windows(登録商標)NT(登録商標)、Windows(登録商標)98、Windows(登録商標)2000、Windows(登録商標)XP(登録商標)、Windows(登録商標)ME(登録商標)、UNIX(登録商標)、Linux(登録商標)、またはMAC OS(登録商標)オペレーティングシステムを操作できることが好ましい。
【0087】
追加のコンピュータ処理装置およびハードウェア装置(例えば、高速プロトタイピング、ビデオ、およびプリンタ装置)は、コンピュータ化モデリングシステム900に含めることもできる。さらに、コンピュータ化モデリングシステム900は、ネットワークハードウェアおよびソフトウェアを含むことができ、これによりハードウェアプラットフォーム912への通信が可能になり、コンピュータコンポーネントの中でも特にCPUおよびストレージシステムを含む多くのコンピュータシステム間の通信が容易になる。
【0088】
コンピュータ支援モデリングソフトウェアは、ストレージ装置910に格納することができ、CPU902にロードして実行することができる。モデリングソフトウェアにより、ユーザは3Dモデルを作成して変更することができ、本明細書に説明されている本発明の態様を実装することができる。CPU902は、CRT904を使用して3Dモデルおよび説明されている他の態様を表示する。キーボード906およびマウス908を使用して、ユーザは3Dモデルに関連付けられているデータを入力して変更することができる。CPU902は、キーボード906およびマウス908からの入力を受け入れて処理する。CPU902は、3Dモデルに関連付けられているデータと共に入力を処理し、CRT904に表示される3Dモデルに対して、モデリングソフトウェアによって指示されたとおり対応する適切な変更を行う。1つの実施形態において、モデリングソフトウェアは、1つまたは複数の固体および面体で構成される3Dモデルを構築するために使用できるソリッドモデリングシステムに基づいている。さらに、モデリングソフトウェアにより、1つまたは複数の物体または形状の定義を相互にパラメトリックに制約する関係を可能にすることができる。パラメトリックに制約された関係が2つの形状の間に存在する場合、1つの形状に対する幾何学的変更は、もう一方の形状の幾何学的変更を生じさせることができる。
【0089】
本発明は、デジタル電子回路において、またはコンピュータハードウェア、ファームウェア、ソフトウェア、あるいはその組合せにおいて実装することができる。本発明の装置は、プログラマブルプロセッサによって実行するために機械可読記憶装置に明白に具体化されたコンピュータプログラム製品において実装することができる。そして本発明の方法ステップは、命令のプログラムを実行するプログラマブルプロセッサによって実行され、入力データを操作して出力を生成することにより本発明の機能を実行することができる。本発明は、データおよび命令を送受信するように接続された少なくとも1つのプログラマブルプロセッサ、データ記憶システム、少なくとも1つの入力装置、および少なくとも1つの出力装置を含むプログラマブルシステム上で実行可能な1つまたは複数のコンピュータプログラムにおいて有利に実装することができる。各コンピュータプログラムは、高水準プロシージャ型またはオブジェクト指向プログラミング言語で、あるいは必要に応じてアセンブリまたはマシン言語で実装することができる。いずれの場合も、言語はコンパイラ型またはインタープリタ型言語であってもよい。適切なプロセッサには、非限定的な例として、汎用および特殊用途マイクロプロセッサが含まれる。一般に、プロセッサは、読み取り専用メモリおよび/またはランダムアクセスメモリから命令およびデータを受け取る。コンピュータプログラム命令およびデータを明白に具体化するために適切な記憶装置は、一例として、EPROM、EEPROM、およびフラッシュメモリ素子などの半導体記憶装置、内部ハードディスクおよび取り外し可能ディスクなどの磁気ディスク、光磁気ディスク、およびCD−ROMディスクを含むあらゆる形態の不揮発性メモリを含んでいる。前述のいずれも、カスタム設計のASIC(特定用途向け集積回路)に補完されるか、またはこれに組み込むことができる。
【0090】
本発明の多くの実施形態について説明してきた。それでもなお、本発明の範囲または精神を逸脱することなく、様々な変更を行うことができることを理解されたい。例えば、実装では、操作が実行される順序を変更することができる。さらに、実装の必要に応じて、本明細書で説明した特定の操作を、組み合わされた操作として実装、除去、追加、または再配置することができる。例えば、図7において、追加の制約を定義するステップ(例えばステップ706)を除去することができる。その上さらに、変形コントロールは、変形操作の選択に先立って、しかも選択とは関係なく識別することができ、1つの変形コントロールは様々な変形操作の複数の選択に対して識別することができる。同様に、複数の変形コントロールが識別されていても、1つの変形操作を選択することができる。
【0091】
さらに、実装により、一度に複数の変形操作を選択することが可能になる。そのような実装において、変形コントロールは選択される変形操作ごとに識別することができ、各変形コントロールは独立して移動および変更することができる。これにより、ユーザは、変形操作および変形コントロールの組を選択することにより、同時に多数の可能なインタラクションを確立することができる。
【0092】
したがって、他の実施形態は以下の請求の範囲に沿っている。
【図面の簡単な説明】
【0093】
【図1】ウィンドウに表示されるコンピュータ生成モデルを示す図である。
【図2】一連のアイコンを示す図である。
【図3】変形された3Dモデルを示す図である。
【図4】変形された3Dモデルを示す図である。
【図5A】3Dモデル上の曲線を示す図である。
【図5B】変形された3Dモデルを示す図である。
【図6A】変形された3Dモデルを示す図である。
【図6B】変形された3Dモデルを示す図である。
【図7】3Dモデルを直接操作するための手順を示す流れ図である。
【図8】データ構造を示す図である。
【図9】コンピュータシステムを示す図である。
【背景技術】
【0001】
コンピュータ支援設計(CAD)ソフトウェアにより、ユーザは複雑な3次元(3D)モデルを構築して操作することができる。多種多様なモデリング技法を使用して、3Dモデルを作成することができる。これらの技法には、ソリッドモデリング、ワイヤフレームモデリング、およびサーフェスモデリングが含まれる。ソリッドモデリング技法は、3Dモデルが相互接続された位相的エンティティ(例えば頂点、辺、および曲面など)の集合であるトポロジ3Dモデルを提供する。位相的エンティティは、対応する補助幾何学的エンティティ(例えば点、切り取られた曲線、および切り取られた曲面など)を備えている。切り取られた曲面は、境界線によって輪郭が示される位相的曲面に対応する。一方、ワイヤフレームモデリング技法は、単純な3Dの線の集合としてモデルを表すために使用することができる。これに対してサーフェスモデリングは、外面の集合としてモデルを表すために使用することができる。CADシステムは、これらの技法およびパラメトリックモデリング技法などの様々なモデリング技法を組み合わせることができる。パラメトリックモデリング技法は、モデルの様々な特徴およびコンポーネントに対して様々なパラメータを定義するため、また様々なパラメータ間の関係に基づいてそれらの特徴およびコンポーネント間の関係を定義するために使用することができる。
【0002】
曲面は、いくつかの技法を使用してCADシステムで表される。技法には、パラメトリック面、メッシュ面、細分化面、および黙示面のような面の定義が含まれる。
【0003】
パラメトリック面は、パラメータ空間の変形であり、通常その空間は長方形である。コンピュータ支援モデリングソフトウェアは一般に、低度代数変形を使用し、様々なスプライン曲面および二次曲面をもたらす。一部の種類のパラメトリック面では、一連のコントロールポイントが面の形状を定義する。
【0004】
モザイク面ともよばれるメッシュ面は、接続された一連のポリゴンであるが、これは多くの場合三角ポリゴンである。メッシュ面は、滑らかな表面を正確に表すことはできない。ただし、メッシュ面に適用される特定の基本操作は、実装も容易で効率的に実行することができる。そのような基本操作には、境界ボックスを計算して、メッシュ面と1つまたは複数の単純オブジェクトを交差させるステップが含まれる。
【0005】
細分化面は、メッシュのシーケンスの限界として定義される。そのようなシーケンスにおいて各メッシュは、当業者には既知である複数の細分化方法の1つに従って、シーケンス内で直前のメッシュを細分化することによって得られる。したがって、初期制御メッシュ(つまり、シーケンス内の最初のメッシュ)は、細分化面を指定するのに十分である。初期制御メッシュは滑らかではないが、得られた細分化面は滑らかであり、得られた細分化面の平滑度は選択された細分化方法によって異なる。必要に応じて、細分化方法は、特定のエッジがくっきりした状態を保つように調整することができる。
【0006】
黙示面は、F(x,y,z)=0の式を満たす点の集合として定義される。Fが滑らかな関数である場合、曲面は通常滑らかになる。球面、円環面、および楕円面は、黙示面として表すことのできるいくつかの曲面である。
【0007】
一般に、最先端技術のコンピュータグラフィックハードウェアは、メッシュ面表現をレンダリングするように最適化される。そのため、一部の面表現は通常、レンダリングのためにメッシュ面に変換される。パラメトリック面をメッシュで近似値化することは、一般に容易である。メッシュはパラメトリック空間に構築することができ、曲面の変形がメッシュ頂点で評価できるからである。メッシュのシーケンスは細分化面に非常にすばやく集束するため、細分化面のメッシュへの変換も一般に容易である。黙示面をメッシュで近似値化することは、一般に困難である。ただし、黙示面を近似値化するための方法が開発されている。
【0008】
スプライン曲面または細分化曲面を変形させるため、面制御メッシュが変更される。制御メッシュが粗くなれば、それに応じて、曲面への変更を制御する能力はさらに制限される。しかし、より細かい制御メッシュ(小さな形状を作り出すために必要となる)は、制御メッシュのサイズを増加させ、そのため、曲面を格納するためにより多くのメモリが必要になり、曲面を変形するためにより多くの計算が必要になる。
【0009】
もう1つの変形の手法は、曲面が位置している空間を変形させることである。通常、3D空間は立方体メッシュにモザイク式にはめ込まれて、立方体メッシュが変形される。非特許文献1の記事に説明されているように、変形されたメッシュを基に、空間全体に対して変形が計算され、曲面に適用される。非特許文献2の記事に説明されているように、変形は、空間全体の一部のみに影響を及ぼすように制約することができる。
【0010】
空間変形を定義することの1つの欠点は、その目的が曲面の存在する空間ではなく曲面を変形することにあるため、曲面が位置している空間を変形する作業が直観的ではないことである。さらに、空間変形がメッシュの頂点に適用された場合、隣接するポリゴン間の角度が広がるため、メッシュのくっきりしたエッジが誇張されることがある。空間変形をメッシュポリゴンに適用するには、結果を別のメッシュによって再近似値化する必要が生じる。元のメッシュの精密化により結果を再近似値化すると、ポリゴンの縦横比の劣化をまねくことが多い。さらに、空間変形がスプライン曲面に適用される場合、得られた曲面をスプライン曲面に変換する作業は計算処理上高価なものになり、曲面の滑らかさを保持することができなくなる。一般に、面パッチ間の滑らかさの制約は、近似値化によってしか保持することができない。
【0011】
多くの市販されている3D CADシステムは、フリーフォーム曲面操作機能を備えている。そのような機能は通常、非均等有理B−スプライン(NURBS)曲面として曲面を内部的に表すことによって制約される。したがって、操作コントロールは多くの場合、曲面の特定の点または曲線に制限されている。このため、ユーザは、望ましい形状を形成する各自の能力に制限がある。一部のシステムでは、任意の点または曲線を操作コントロールとして使用することができる。例えば、マサチューセッツ州コンコ−ドのSolidWorks Corporationから提供されているSolidWorks(登録商標)2004ソフトウェア製品では、操作コントロールとして任意の点または曲線を使用して1つまたは複数の曲面を変形することができる。次に、得られた曲面は、NURBS面パッチで近似値化される。望ましい形状の精度および面パッチ間の滑らかさを達成することは、一般に、高密度制御グリッドにつながり、そのような曲面をその後の操作で計算処理上高価なものにする。
【0012】
3D CADシステムの多くのユーザは、3Dモデリング技法に熟達しており、専門的に3Dモデルを設計する。これらの経験豊富なユーザは、曲面を定義するために使用される制御点およびメッシュを操作する方法、および曲面エンティティである頂点および辺を操作する方法を理解している。様々な複雑度の3Dモデルの形状を作成して変更するための単純で直観的な手段を提供する3D CADシステムは、3Dモデリング技法に熟達していない人々にも熟達している人々にとっても有利になると考えられる。ユーザが任意の点、曲線、または曲面領域の直接操作によって複雑なモデルをインタラクティブに変形して、しかもモデル全体に曲面の滑らかさを保持することのできる3D CADシステムは、ユーザが自然で、すばやく、簡単に滑らかな形状を作成できるようにし、それによって3D CADシステムの機能性および使いやすさを高めることになる。
【0013】
【非特許文献1】"A Framework for Geometric Warps and Deformation" by Tim Milliron et al., ACM Transactions on Graphics, Vol.21, No.1, January 2002, pp.20-51
【非特許文献2】"General Constrained Deformations Based on Generalized Metaballs" by Xiaogang Jin et al., Pacific Conference on Computer Graphics and Applications 1998, pp.115-124
【非特許文献3】"Bubble Mesh: Automated Triangular Meshing of Non-Manifold Geometry by Sphere Packing" by Kenji Shimada and David C. Gossard, Third ACM Symposium on Solid Modeling and Applications, ACM Press 1995, pp.409-419
【発明の開示】
【発明が解決しようとする課題】
【0014】
一般に、1つの態様において、本発明は、3次元コンピュータ生成モデルを変形するためのコンピュータ実装方法を目的としている。方法は、元の面定義を含む面表現を使用して3次元モデルの表面を表すステップを含んでいる。曲面への変形を定義する滑らかな3次元マッピング関数が導き出され、少なくとも1つの3次元マッピング関数は非アフィン変換である。3次元マッピング関数および元の面定義の合成が構築される。ここで各マッピング関数は連続して合成に含まれている。さらに、マッピング関数は合成内で、マッピング関数が導き出された順序で並べられる。合成は、連続する各3次元マッピング関数が合成に含まれた後に適用され、それにより3次元モデルの表面は変形されて、滑らかさがマッピング関数の最低限度の滑らかさに保持される。
【0015】
実施形態は、曲面をパラメトリック面、メッシュ面、または細分化面として定義するステップ、および連鎖法を使用して面表現の導関数を決定するステップを含むことができる。
【0016】
変形結果の描写を含んでいるユーザインターフェースは、一部の実施形態によって表示することができ、1つの描写を選択してマッピング関数として実装されている変形操作を示すことができる。変形操作により、曲線、点、または曲面の領域は引き伸ばすことができる。さらに、変形操作では、曲面に球形または曲線を型押しするか、あるいは曲面を細くしたり、平らにしたり、ねじることができる。
【0017】
実施形態はさらに、1つまたは複数の以下の特徴を含めることができる。モデルの曲面に関して配置される変形コントロールは、マッピング関数のパラメータとして識別し、変換し、使用することができる。変形コントロールは、低位のジオメトリであっても、点、曲線、平面、線、軸、面の領域、または放物線オブジェクトであってもよい。
【0018】
本発明の1つまたは複数の実施形態の詳細については、付属の図面および以下の説明により示される。本発明の他の特徴、目的、および利点は、以下の説明および図、さらに請求の範囲を参照すれば明らかになろう。
【課題を解決するための手段】
【0019】
本発明は、任意の低位ジオメトリおよび他の変形コントロールを使用して1つまたは複数の曲面を直接操作することにより、フリーフォーム面の滑らかなリアルタイムの変形を容易にする。そのような任意の低位ジオメトリには、例として点、曲線、平面、軸、および曲面があげられるが、これらに限定されることはない。さらに、本発明は、曲面の既存の滑らかさおよび既存の面曲率特性を保持する。モデルの精度に損失を生じることなくモデルの形状を変化させるために、滑らかな空間マッピングのシーケンスが使用される。さらに、ユーザインターフェースは、フリーフォーム面を変形する自然で、すばやく、しかも簡単な手法をユーザに提供する。ユーザインターフェースは、1つまたは複数の曲面のインタラクティブな直接操作をサポートする機能ライブラリへのアクセスを容易にする。以上のことから、本発明は、コンピュータ制御のモデリングシステムの機能を高める。
【発明を実施するための最良の形態】
【0020】
図1は、CRTに表示され、コンピュータ化モデリングシステムによって実行されたモデリングソフトウェアによって生成されたウィンドウ102を示している。その例は、以下で図9を参照して示す。ウィンドウ102は、標準的なコンピュータ生成のウィンドウであり、当業者であればワシントン州レドモンドのMicrosoft Corporationから提供されているような従来の市販のソフトウェアプログラミングツールを使用してプログラミングすることができる。
【0021】
コンピュータ生成3Dモデル104は、ウィンドウ102のモデリング部分106内に表示される。実線または破線を使用して3Dモデルの見えているエッジと隠れているエッジを示すことで、3Dモデル104の曲面を表示するか、または3Dモデル104を表示することができる。実施形態はさらに、他のウィンドウ領域を含むこともできる。一連のファイルアイコン108は、球形基本要素などの基本モデルとして使用できる様々なファイルを選択する際にユーザを補助する。一連の変形アイコン110により、ユーザは、ウィンドウ102のモデリング部分106に示されるモデル104を操作することができる。
【0022】
図2は、一連の変形アイコン110を示している。各変形アイコン110は変形の結果を示し、選択されている場合、特定の関数がモデルの局所領域に適用されることをモデリングソフトウェアに示す。これらの3つの関数は、曲面上の点、曲面上の曲線、および曲面の領域が引き出されるようにし、それぞれ点引き出しアイコン(point pull icon)212、曲線引き出しアイコン(curve pull icon)214、および領域引き出しアイコン(area pull icon)220を選択することでアクティブ化される。曲線、点、または領域が引き出されると、曲面はリアルタイムで変更される。したがって、引き出すアクションおよび引き出す操作によって生じた変更は、インタラクティブである。もう1つの関数は、球形のへこみが曲面上に型押しされるようにし、球形突きアイコン(poke sphere icon)216およびモデルに関して球形の中心点が選択された場合、アクティブ化される。さらにもう1つの関数は、特定の場所で曲面が細くなるようにするもので、ネック作成アイコン(create neck icon)224が選択されるとアクティブ化された後平面が表示されて、平面の方向に幅が狭くなるように配置される。平面上の任意の点はさらに、幅を狭める効果の中心を指定するように示される。面つぶしアイコン(flatten surface icon)218が選択されると、曲面が平らにされる場所に平面が配置された後、面がつぶされる。曲線型押しアイコン(curve imprint icon)222が選択されると、曲面上に曲線が型押しされる。引き出し関数の場合のように、すべての他の関数はリアルタイムでモデルに適用されるため、得られる変形はインタラクティブに生じる。
【0023】
図3は、最初に球形であった図形の周囲に配置された任意点332(カーソルオブジェクト334に付属)を直接操作することによって変形された3Dモデル330を示す図である。初期の球形は、ファイルアイコン336を選択した後に表示することができる。図3に表示されている3Dモデル330を変形するため、ユーザはまず点引き出し変形アイコン(point pull deformation icon)212を選択し、次に任意点332を選択する。ユーザは、ポインティングデバイス(例えばマウス)を使用して、任意点332をインタラクティブに移動することができる。任意点332の移動に応じて、3Dモデル330はリアルタイムで変形される。
【0024】
図4は、カーソルオブジェクト334に付属している任意点332を直接操作した後の3Dモデル330の滑らかな変形を示している。図4において、3Dモデル330は、図3の場合とは異なった外観を呈する。任意点332の変位によって3Dモデル330の曲面上のより広い領域が影響を受けたためである。ユーザインターフェースコントロールのスライダ434は、作用領域を減少および増大させるために使用される。スライダ434がウィンドウ102の下部方向に移動すると、モデルのより大きい部分が作用範囲に含められる。一方、スライダ434がウィンドウ102の上部方向に移動すると、モデルのより小さい部分が作用範囲に含められる。
【0025】
図5Aおよび図5Bは、3Dモデル502に描かれた任意の曲線504を操作することによる3Dモデル502の変形を示している。任意点の直接操作を介して3Dモデルが変形される場合と同様に、任意曲線の直接操作によって生じる変形は局部的な変形である。曲線は、曲線シンボル506がユーザインターフェースから選択された後にモデル上に描くことができる。他のシンボル508は、直線および弧をモデル上に描けるようにするユーザインターフェースから選択して、モデルを直接操作するために使用することができる。図5Bは、ポインティングデバイスを使用して曲線504が引き出された後の3Dモデル502を示している。図5Bに示すように、曲線504の変形は表面を押し出す。3Dモデル502の方向は、図5Aおよび図5Bにおいて異なっている。3Dモデル502を変形するために使用された曲線504および3Dモデル502の変形は異なる視点からさらに有利に観察されるからである。
【0026】
図6Aおよび6Bは、モデル104に適用されるグローバル変形を示している。図6Aにおいて、グローバル変形は、スケール関数を適用した結果である。スケール関数は、ユーザインターフェースからスケールアイコン606が選択された後にアクティブ化される。その後、3次元の囲み線がモデル104の周囲に描かれる。囲み線の角または面は、囲み線のサイズまたは形状を変更するように移動することができ、それによりスケール関数がモデル104に適用される。円錐ハンドル608は、囲み線の移動を制御するために提供される。
【0027】
モデルにグローバルな影響を与える他の関数には、曲げ関数およびねじれ関数が含まれ、これらはそれぞれ曲げアイコン612およびねじれ関数614が選択されるとアクティブ化される。図6Bは、曲げ関数がモデル104に適用された後のモデル104を示している。曲げアイコン612が選択された後、放物線オブジェクト616がモデリング領域106に表示される。ピボットポイント618が放物線オブジェクト616上に指定され、作用ポイント620も指定される。ピボットポイント618および作用ポイント620は、ポインティングデバイスを使用して移動することができる。ピボットポイント618または作用ポイント620の1つが移動すると、放物線オブジェクト616は曲がり、モデル104は放物線オブジェクト616と同様に曲がることによって変形される。ねじれアイコン614が選択された場合、ねじれの動きを制御するために回転コントロールおよび軸が表示される。
【0028】
ここで図7を参照すると、3Dモデルを直接操作するための手順700が示されている。最初に、モデルの表現が定義される(ステップ702)。モデル表現は、パラメトリック面、メッシュ面、および細分化面を含む、評価できる任意の面表現を含むことができる。一般に、本発明は、評価することのできるモデルの任意の3D表現に適用される。
【0029】
次のステップにおいて、変形操作が選択され、変形コントロールが識別される(ステップ704)。変形操作は、変形アイコン110の1つまたはグローバル変形操作を示すアイコンの1つを選択することで選択できる。これらのアイコンについては、それぞれ図2、図6Aおよび図6Bを参照して前記で説明してある。例えば、図2に示す曲線引き出しアイコン214を選択すると、曲線の形状をモデルに適用することでモデルを変形する変形操作を選択することができ、球形突きアイコン216(図2を参照)を選択すると、モデルの1つまたは複数の曲面に球状の印象を与える変形操作を選択することができる。変形コントロールは、任意の低位ジオメトリにすることができる。非限定的な例をあげると、識別された変形コントロールは、点、曲線、平面、軸、または面の領域であってもよく、点の選択、曲線の描画、平面の配置、または面領域の指定によって識別することができる。変形コントロールはまた、グローバル変形を適用するために使用されるオブジェクトであってもよい。いずれの場合にも、変形コントロールは選択された変形操作を補完する。例えば、引き出し操作は、点、曲線、または面の領域によって制御することができる。スケール操作は、(図6Aに示すように)長方形フレームの円錐ハンドルによって制御することができる。曲げ操作は、(図6Bに示すように)ピボットポイントおよび作用ポイントによって制御することができる。さらに、一部の変形コントロールは、選択された変形操作の特性によって暗黙指定される場合もある。
【0030】
次のステップにおいて、1つまたは複数の追加の制約が定義される(ステップ706)。そのような追加の制約の1つは、作用範囲である。作用範囲が制約として定義された場合、変形コントロールを取り囲む領域内のポイントだけが変形操作の影響を受ける。非限定的な例をあげると、作用範囲は、変形コントロールを取り囲む指定の大きさの半径によって指定される3次元領域である。さらに、作用範囲のサイズは、システム定義のサイズまたはユーザ定義のサイズであってもよい。もう1つの制約は領域制約であり、この場合には、選択された領域だけが変形操作の影響を受ける。選択される領域は、変形の影響を受ける領域を取り囲む輪郭を描くことによって示すことができる。
【0031】
さらにもう1つの制約は、パターン制約である。パターン制約が定義された場合、四角形、円形、またはミラーパターンなどのパターンに必要な方法で変形を複製する。ミラーパターン制約の場合、ミラーアイコンがユーザインターフェースから選択されると、選択されたコンポーネントがユーザによって配置された平面の反対側に対照的に複製される。その後、対称コンポーネントの1つが変形される場合、対称変形がもう一方の対称コンポーネントに同時に適用される。
【0032】
他の追加の制約には、ハーフスペース制約またはスペースバンド制約を含めることができる。ハーフスペース制約は、変形操作を、指定された平面の片側に配置されたポイントに限定する。スペースバンド制約は、変形操作を、2つの並行面の間に配置されたポイントに限定する。
【0033】
次のステップにおいて、変形コントロールが移動または変更される(ステップ708)。変形コントロールは、マウスなどのポインティングデバイスを使用する従来のユーザインターフェースによって移動し、変形コントロール(例えば、点、曲線、または面の領域など)をモデリング領域の新しい位置にドラッグすることができる。変形コントロールは、変更することもできる。非限定的な例をあげると、最初に直線である変形コントロールは湾曲させることができ、曲線である変形コントロールは形状を変更する(例えば曲げる)ことができ、あるいは領域を取り囲む境界である変形コントロールは拡張、縮小、または他の方法で変更(例えば歪曲)することができる。
【0034】
変形コントロールが移動または変更される一部の例では、変形ターゲットが形成される。変形ターゲットは、新しい位置で変形コントロールを表すか、または新しい形状をとる変形コントロールを表す。変形ターゲットは、変形コントロールと同じ表現を使用して定義される。つまり、変形コントロールが点または曲線である場合、変形ターゲットはそれぞれ、点または曲線として表される。
【0035】
次に、手順700は、機能ライブラリから3Dマッピング関数を導き出す(ステップ710)。3Dモデルに適用される際に3Dマッピング関数は、該当する場合、ステップ706で定義された追加の制約を考慮しながら、変形コントロールを変形ターゲットにマッピングする。3Dマッピング関数が滑らかである場合、3Dマッピング関数は、モデルの面内および面間の平滑度を自動的に保持する。例えば、C2マッピングは、面内および面間のC2連続性を保持する。
【0036】
ループ720の各サイクルあたり1つの、ステップ710で導き出した一連の3Dマッピング関数は、操作される1つまたは複数の曲面の変形される形状を決定する。モデルの内部表現は、ワープ面の集合として保持される。ここで本発明によって実装されるワープ面は元の面定義に適用される滑らかな3Dマッピング関数のシーケンスである。各変形にモデルの曲面の初期定義を再定義させるのではなく、滑らかな3Dマッピング関数のシーケンスおよび元の定義が格納されて相互に関連付けられる。ループ720のサイクルごとにステップ710で導き出された各滑らかな3Dマッピング関数は、順に1つの変形を表す。
【0037】
ワープ面を使用することの1つの利点は、任意のパラメトリック面を変換することなく元の曲面として使用できることにある。3Dマッピングの同じシーケンスを、B−rep(つまり境界表現面)などのパラメトリック面の集合に適用すると、通常、パラメトリック面の集合のトポロジおよびパラメトリック面の間の連続関係の両方を保持する。ワープ面を使用することのもう1つの利点は、操作にまったく近似が必要ないため、曲面が操作される際に精度が保持されることにある。実装は、ワープ面へのメッシュ近似値化を使用することによって表示およびクエリ最適化の恩恵を受けることができる。ただし、この近似値化は面表現に組み込まれない。ワープ面を使用することのもう1つの利点は、曲面の精度エバリュエータ(つまり、関数の値およびその導関数を計算する方法)が使用可能であるため、ワープ面はパラメトリック面の利点のすべてを備えている(例えば、メッシュで面を近似させる方法および様々な形状演算のための方法があること)ことにある。ワープ面を使用することのさらにもう1つの利点は、新しい変形でモデル状態を更新するために比較的わずかな計算しか必要ないことにあり、そのためモデルをインタラクティブに操作することができる。ワープ面を使用することのさらにもう1つの利点は、各々の変形が少数のパラメータで記述することができるため、ディスクストレージスペースに関してモデル全体の簡潔な表現をもたらすことができることにある。
【0038】
手順700の次のステップにおいて、3Dマッピング関数は現在のモデル状態に適用される(ステップ712)。ここで現在のモデル状態は、これまでに適用されたすべての変換(3Dマッピング関数など)を備えるモデルの元の表現である。例えば、モデル表現が多角形メッシュとして定義される場合、モデル状態は変換のシーケンスを多角形メッシュの頂点に適用することによって生成される。より高い曲率の領域において、変形されたモデルのメッシュ近似の精度を高めるため、多角形メッシュの密度は自動的に増加させることができる。
【0039】
手順700では次に、識別された変形コントロール、選択された変形操作、および定義された制約を使用してモデルの変形を続行するかどうか決定する(ステップ714)。続行の決定は、変形コントロールを移動または変更するようにさらに入力が受け取られた場合に行われる。続行の決定が行われた場合、導き出された最新の3Dマッピング操作が、その後導き出された3Dマッピング関数に置き換えられる。
【0040】
識別された変形コントロール、選択された変形操作、および定義された制約を使用してモデルの変形が完了した場合、手順700では次に、新しい機能をモデルに適用するかどうか決定する(ステップ716)。新しい機能をモデルに適用する場合、別の変形操作が選択され、別の変形コントロールが識別され(ステップ704)、および/または追加の制約が定義される(ステップ706)。次に変形コントロールは、移動または変更される(ステップ708)。次に、新しい3Dマッピング関数が導き出され(ステップ710)、現在のモデル状態に適用される(ステップ712)が、これには以前導き出された3Dマッピング関数が含まれている。新しい3Dマッピング関数は、モデルを再定義するために使用される変換のシーケンスにおいて別の変換になり、識別された変形コントロール、選択された変形操作、および定義された制約を使用するモデルの変形を続行しないように決定されるまで、その後導き出された3Dマッピング関数に置き換えられる。手順700で新しい機能がモデルに適用されないように決定した場合(ステップ716)、手順700は終了する(ステップ718)。
【0041】
1つの実施形態において、変形されたモデルは、プレビューのためにユーザに提示することができる。そのような実施形態において、プレビューステップは、モデルの変形を続行しない決定が行われた直後(すなわちステップ714の後で、かつステップ716の前)に生じる。プレビューステップでは、ユーザに変形を受け入れるかどうかたずねるユーザインターフェースダイアログボックスを表示する。次にユーザは、ダイアログボックスの承認ボタンを押すことで変形を受け入れる機会がある。この場合、導き出された最後の3Dマッピング関数が3Dマッピング関数のワープ面シーケンスに追加される。ユーザが、ダイアログボックスに表示された拒否ボタンを押した場合、導き出した最後の3Dマッピング関数は3Dマッピング関数のワープ面シーケンスに追加されない。
【0042】
ここで図8を参照すると、本発明によって使用されるモデルのデータ構造800が示されている。データ構造800は、3つのワープ面830、840、および850によって定義されるモデルの抽象的表現である。3つの曲面は、面1定義832、面2定義842、および、面3定義852として格納される。図7のステップ710で導き出した3つの3Dマッピング関数は、3つの曲面のうち1つまたは複数の曲面に適用される。1つの3Dマッピング関数は面1定義832および面2定義842に適用され、第1の3Dマッピング関数834および第1の3Dマッピング関数844としてデータ構造800に2回格納される。第2の3Dマッピング関数836は、面1定義832のみに適用され、面1定義832に関連付けられているデータ構造800に格納される。第3の3Dマッピング関数は面1定義832、面2定義842、および面3定義852に適用され、第3の3Dマッピング関数838、第3の3Dマッピング関数848、および第3の3Dマッピング関数858としてデータ構造800に格納される。
【0043】
ステップ710で導き出され、図8で説明されている3Dマッピング関数は、適用される特定の変形を定義する。当業者であれば、本明細書で説明されている変形および他の変形を定義できる様々なマッピング関数を設計することができるであろう。一般に、フリーフォーム変形の設計は、十分な制約がない問題である。つまり、可能な変形の数が大きければ、望ましい特性を備えることができる。以下に、前述の変形の可能な定義の一部について、非限定的な例をあげて説明する。定義は、xの関数として表される。ここでxは3D空間内の点である。
【0044】
1つの実施形態において、変形コントロールが移動または変更されると、変形コントロールに最も近接する点が最も大きい移動を行う。つまり、作用領域の外側境界に近接する点は、変形コントロールにより近い点に比べて少ない距離を移動し、作用領域の外側境界上または境界の向こう側の点はまったく移動しない。
【0045】
以下の2つの例において、h(t)と示される関数は、変形が作用範囲の外側境界で最大になるコントロール付近の領域からの滑らかな移行を構築するために使用される。関数は、その定義域全体でC2であり、以下のように定義される。
【0046】
【数1】
【0047】
ポイント引き出し操作のために設計されたマッピング関数は、以下のように表すことができる。
【0048】
【数2】
【0049】
ここで
【0050】
【数3】
【0051】
は変形コントロールの位置である。
【0052】
【数4】
【0053】
はターゲットポイントであり、
Rは影響範囲の半径である。
【0054】
1つの実施形態に実装されて、モデル化オブジェクトの幅を狭める(例えば、ネックを作成する)マッピング関数の例は、以下のように表すことができる。
【0055】
【数5】
【0056】
ここで
【0057】
【数6】
【0058】
はネック形状の中心点である。
【0059】
sは倍率であり、s>0である。
【0060】
Rは影響範囲の半径である。
【0061】
【数7】
【0062】
は、中心点を通って配置された平面に垂直な単位ベクトルであり、モデル化オブジェクトの点が平面に沿って中心点に引き出されるようになっている。
【0063】
【数8】
【0064】
は、ベクトル
【0065】
【数9】
【0066】
および
【0067】
【数10】
【0068】
の内積を示している。
【0069】
1つの実施形態において、モデル化オブジェクトに球形特性を型押しするためのマッピング関数は、以下のように表すことができる。
【0070】
【数11】
【0071】
ここで
【0072】
【数12】
【0073】
はモデルに作用する球形の中心である。
【0074】
Rは、球形の半径である。
【0075】
rは、型押しされる球形および影響範囲の半径の端との間の以降の半径であり、
【0076】
【数13】
【0077】
前述の3Dマッピング関数の式は、空間でC2連続であり、このため曲面のC2連続は保持される。さらに、前述の3Dマッピング関数の式は、非アフィン3Dマッピング関数である。さらに、前述の式は、自然に見える形状変形をもたらし、効率的な実装を可能にする。
【0078】
ユーザの視点から考えると、本明細書で説明されている変形は、各々の変形がワープ面への変形として指定され、しかも内部で適切な空間変形(3Dマッピングなど)が構築されるため、直観的である。1つの実施形態において、元の曲面は、パラメトリック面s(u,v):[0,1]2→R3として定義されるが、これは長方形である可能性もある。マッピングf:R3→R3が元の曲面に適用される場合、新しいパラメトリック面は
【0079】
【数14】
【0080】
として表すことができる。nのマッピングf1,...fnの後、新しいパラメトリック面は、マッピングおよび元のパラメトリック面の合成、つまり
【0081】
【数15】
【0082】
である。上記ではパラメトリック面を使用する実施形態について説明しているが、元の曲面は評価できる任意の種類の曲面として定義することができる。
【0083】
パラメトリック面を表示して、曲面に効率的に他の計算を実行するため、曲面を近似値化するメッシュは保持される。新しい変形が3Dマッピングシーケンスに追加される場合、新しい変形は、変形される曲面に近似値化するメッシュを実現するようにメッシュの頂点に適用される。変形後にメッシュが粗過ぎる場合、曲面は追加の点において評価され、必要に応じてメッシュが精密化される。メッシュは、非特許文献3に説明されているような技術を使用して生成することができる。
【0084】
様々なモデリング操作(例えば、面交差、レンダリング、およびメッシュ精密化)は、曲面の一次および二次導関数を評価する能力を必要とするか、またはその能力によって高めることができる。好ましい実施形態において、3Dマッピングエバリュエータは一次および二次導関数を処理することができる。1つの実施形態において、任意点におけるワープ面の正確な一次および二次導関数を計算するために(関数の合成の導関数を求める場合当業者には既知である)連鎖法が適用される。
【0085】
本発明のさらなる利点には、任意の低位ジオメトリを使用して、1つまたは複数のワープ面としてモデルの滑らかなリアルタイムの変形および効率的なディスクストレージを制御する能力を提供することが含まれる。低位ジオメトリを使用してモデルを操作することにより、フリーフォーム面を変形する自然で、すばやく、しかも簡単な手法を本発明のユーザに提供する。一方、モデルを1つまたは複数のワープ面として格納することは、ストレージスペースの点からも効率的であるばかりでなく、ワープ面として格納するのでモデルの精度を保持することがきる。
【0086】
図9は、CPU902、CRT904、キーボード入力装置906、マウス入力装置908、および記憶装置910を含むコンピュータ化モデリングシステム900を示している。CPU902、CRT904、キーボード906、マウス908、および記憶装置910は、一般に提供されているコンピュータハードウェア装置を含めることができる。例えば、CPU902は、Pentium(登録商標)ベースのプロセッサを含めることができる。マウス908は、CPU902によって実行されているソフトウェアプログラムにコマンドを発行するためにユーザが押すことができる通常の左および右ボタンを備えることができる。代替として、あるいはマウス908に追加して、コンピュータ化モデリングシステム900は、トラックボールなどのポインティングデバイス、タッチパッド、またはキーボード906に組み込みのポインティングデバイスおよびボタンを含むことができる。当業者であれば、マウス装置を参照して本明細書に説明されている同様の結果が、他の使用可能なポインティングデバイスを使用して達成できることを理解するであろう。以下の説明から明らかとなるように、他のしかるべきコンピュータハードウェアプラットフォームも適切である。そのようなコンピュータハードウェアプラットフォームは、Microsoft Windows(登録商標)NT(登録商標)、Windows(登録商標)98、Windows(登録商標)2000、Windows(登録商標)XP(登録商標)、Windows(登録商標)ME(登録商標)、UNIX(登録商標)、Linux(登録商標)、またはMAC OS(登録商標)オペレーティングシステムを操作できることが好ましい。
【0087】
追加のコンピュータ処理装置およびハードウェア装置(例えば、高速プロトタイピング、ビデオ、およびプリンタ装置)は、コンピュータ化モデリングシステム900に含めることもできる。さらに、コンピュータ化モデリングシステム900は、ネットワークハードウェアおよびソフトウェアを含むことができ、これによりハードウェアプラットフォーム912への通信が可能になり、コンピュータコンポーネントの中でも特にCPUおよびストレージシステムを含む多くのコンピュータシステム間の通信が容易になる。
【0088】
コンピュータ支援モデリングソフトウェアは、ストレージ装置910に格納することができ、CPU902にロードして実行することができる。モデリングソフトウェアにより、ユーザは3Dモデルを作成して変更することができ、本明細書に説明されている本発明の態様を実装することができる。CPU902は、CRT904を使用して3Dモデルおよび説明されている他の態様を表示する。キーボード906およびマウス908を使用して、ユーザは3Dモデルに関連付けられているデータを入力して変更することができる。CPU902は、キーボード906およびマウス908からの入力を受け入れて処理する。CPU902は、3Dモデルに関連付けられているデータと共に入力を処理し、CRT904に表示される3Dモデルに対して、モデリングソフトウェアによって指示されたとおり対応する適切な変更を行う。1つの実施形態において、モデリングソフトウェアは、1つまたは複数の固体および面体で構成される3Dモデルを構築するために使用できるソリッドモデリングシステムに基づいている。さらに、モデリングソフトウェアにより、1つまたは複数の物体または形状の定義を相互にパラメトリックに制約する関係を可能にすることができる。パラメトリックに制約された関係が2つの形状の間に存在する場合、1つの形状に対する幾何学的変更は、もう一方の形状の幾何学的変更を生じさせることができる。
【0089】
本発明は、デジタル電子回路において、またはコンピュータハードウェア、ファームウェア、ソフトウェア、あるいはその組合せにおいて実装することができる。本発明の装置は、プログラマブルプロセッサによって実行するために機械可読記憶装置に明白に具体化されたコンピュータプログラム製品において実装することができる。そして本発明の方法ステップは、命令のプログラムを実行するプログラマブルプロセッサによって実行され、入力データを操作して出力を生成することにより本発明の機能を実行することができる。本発明は、データおよび命令を送受信するように接続された少なくとも1つのプログラマブルプロセッサ、データ記憶システム、少なくとも1つの入力装置、および少なくとも1つの出力装置を含むプログラマブルシステム上で実行可能な1つまたは複数のコンピュータプログラムにおいて有利に実装することができる。各コンピュータプログラムは、高水準プロシージャ型またはオブジェクト指向プログラミング言語で、あるいは必要に応じてアセンブリまたはマシン言語で実装することができる。いずれの場合も、言語はコンパイラ型またはインタープリタ型言語であってもよい。適切なプロセッサには、非限定的な例として、汎用および特殊用途マイクロプロセッサが含まれる。一般に、プロセッサは、読み取り専用メモリおよび/またはランダムアクセスメモリから命令およびデータを受け取る。コンピュータプログラム命令およびデータを明白に具体化するために適切な記憶装置は、一例として、EPROM、EEPROM、およびフラッシュメモリ素子などの半導体記憶装置、内部ハードディスクおよび取り外し可能ディスクなどの磁気ディスク、光磁気ディスク、およびCD−ROMディスクを含むあらゆる形態の不揮発性メモリを含んでいる。前述のいずれも、カスタム設計のASIC(特定用途向け集積回路)に補完されるか、またはこれに組み込むことができる。
【0090】
本発明の多くの実施形態について説明してきた。それでもなお、本発明の範囲または精神を逸脱することなく、様々な変更を行うことができることを理解されたい。例えば、実装では、操作が実行される順序を変更することができる。さらに、実装の必要に応じて、本明細書で説明した特定の操作を、組み合わされた操作として実装、除去、追加、または再配置することができる。例えば、図7において、追加の制約を定義するステップ(例えばステップ706)を除去することができる。その上さらに、変形コントロールは、変形操作の選択に先立って、しかも選択とは関係なく識別することができ、1つの変形コントロールは様々な変形操作の複数の選択に対して識別することができる。同様に、複数の変形コントロールが識別されていても、1つの変形操作を選択することができる。
【0091】
さらに、実装により、一度に複数の変形操作を選択することが可能になる。そのような実装において、変形コントロールは選択される変形操作ごとに識別することができ、各変形コントロールは独立して移動および変更することができる。これにより、ユーザは、変形操作および変形コントロールの組を選択することにより、同時に多数の可能なインタラクションを確立することができる。
【0092】
したがって、他の実施形態は以下の請求の範囲に沿っている。
【図面の簡単な説明】
【0093】
【図1】ウィンドウに表示されるコンピュータ生成モデルを示す図である。
【図2】一連のアイコンを示す図である。
【図3】変形された3Dモデルを示す図である。
【図4】変形された3Dモデルを示す図である。
【図5A】3Dモデル上の曲線を示す図である。
【図5B】変形された3Dモデルを示す図である。
【図6A】変形された3Dモデルを示す図である。
【図6B】変形された3Dモデルを示す図である。
【図7】3Dモデルを直接操作するための手順を示す流れ図である。
【図8】データ構造を示す図である。
【図9】コンピュータシステムを示す図である。
【特許請求の範囲】
【請求項1】
3次元コンピュータ生成モデルを変形させて3次元モデルの形状を変更するためのコンピュータ実装方法であって、
最初に元の面定義を備える面表現を使用して前記3次元モデルの表面を表すステップと、
複数の滑らかな3次元マッピング関数を導き出すステップであって、各3次元マッピング関数は曲面への変形を定義し、少なくとも1つの3次元マッピング関数は非アフィン変換であるステップと、
複数の3次元マッピング関数および元の面定義の合成を構築するステップであって、各3次元マッピング関数は3次元マッピング関数が導き出された順序に従って連続して合成に含まれているステップと、
連続する各3次元マッピング関数が合成に含まれた後に合成を適用するステップであって、これにより前記3次元モデルの表面は変形され、しかも滑らかさが前記複数のマッピング関数の最低限度の滑らかさに保持されるステップとを備えることを特徴とする方法。
【請求項2】
請求項1に記載の方法を実行するコンピュータシステムを構成するための命令を備えることを特徴とするコンピュータ可読データ記憶媒体。
【請求項3】
前記元の面定義はパラメトリック面、メッシュ面、および細分化面の1つであることを特徴とする請求項1に記載のコンピュータ実装方法。
【請求項4】
前記合成を適用するステップは前記連鎖法を前記複数の3次元マッピング関数に適用して前記面表現の導関数を決定するステップを備えることを特徴とする請求項1に記載のコンピュータ実装方法。
【請求項5】
変形結果の複数の描写を備えるユーザインターフェースを表示するステップと、
複数の描写の1つを選択して、前記複数の3次元マッピング関数の1つとして実装される変形操作を示すステップとをさらに備えることを特徴とする請求項1に記載のコンピュータ実装方法。
【請求項6】
前記曲面に関する前記変形操作は、曲線を引き出す、点を引き出す、曲面の領域を引き出す、球形を型押しする、曲線を型押しする、特定の位置で幅を狭める、つぶす、およびねじるのうち1つの操作を達成することを特徴とする請求項5に記載のコンピュータ実装方法。
【請求項7】
変形コントロールを識別するステップであって、前記変形コントロールは前記3次元モデルの前記曲面に関して配置されるステップと、
前記変形コントロールの少なくとも一部が新しい場所を占めるように前記変形コントロールを変換するステップと、
前記変形コントロールを前記複数の3次元マッピング関数の1つに対するパラメータとして使用するステップとをさらに備えることを特徴とする請求項5に記載のコンピュータ実装方法。
【請求項8】
前記変形コントロールは低位ジオメトリであることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項9】
前記変形コントロールは、点、曲線、平面、線、軸、面の領域、および放物線オブジェクトの1つであり、
前記変形コントロールを変換するステップは前記変形コントロールを移動するステップおよび前記変形コントロールを変更するステップのうちの1つであることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項10】
前記選択された変形操作は点引き出し操作であり、
前記識別された変形コントロールは前記3次元モデルの前記曲面から選択された任意点であることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項11】
前記選択された変形操作は曲線引き出し操作および曲線型押し操作のうちの1つであり、
識別された前記変形コントロールは前記3次元モデルの前記曲面に描かれた任意曲線であることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項12】
前記変形コントロールを変換することによって影響を受ける前記3次元モデルの領域を決定するステップをさらに備え、前記領域はシステム定義の領域およびユーザ定義の領域のうちの1つであることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項13】
ユーザインターフェーススライダコントロールは前記ユーザ定義の領域を指定するために使用されることを特徴とする請求項12に記載のコンピュータ実装方法。
【請求項14】
前記領域は前記複数の3次元マッピング関数の1つに対するパラメータとして使用されることを特徴とする請求項12に記載のコンピュータ実装方法。
【請求項15】
コンピュータ可読データ記憶媒体であって、コンピュータに、
最初に前記曲面の元の表現を備える面データ構造を作成させ、
前記曲面に変更の種類を指定するために変形操作を選択させ、
前記曲面を操作するための変形コントロールを識別させ、
第1の滑らかなマッピング関数を導き出させ、前記第1のマッピング関数は非アフィンマッピング関数であり、前記選択された変形操作に従って複数のマッピング関数から選択され、前記変形コントロールの属性は前記第1の滑らかなマッピング関数によって使用され、
第2の滑らかなマッピング関数を導き出させ、前記第2の滑らかなマッピング関数はアフィンおよび非アフィンのうちの1つであり、前記第2の滑らかなマッピング関数は前記第2の変形操作に従って前記複数のマッピング関数から選択され、第2の変形コントロールの属性は前記第2の滑らかなマッピング関数によって使用され、
前記第1および第2の滑らかなマッピング関数を前記曲面データ構造に別個のエンティティとして格納させ、前記曲面データ構造は第1の滑らかなマッピング関数、第2の滑らかなマッピング関数、および前記曲面の元の表現の合成を表し、
変形された曲面を表示させ、表示ステップは第1の滑らかなマッピング関数の格納時に前記合成を適用するステップと、前記第2の滑らかなマッピング関数の格納時に再び前記合成を適用するステップを備え、前記合成が適用されるごとに前記第1または前記第2の滑らかなマッピング関数によって表される最低度の滑らかさが保持されることを特徴とする命令を備えるコンピュータ可読データ記憶媒体。
【請求項16】
前記曲面は複数の曲面の1つであることを特徴とする請求項15に記載のデータ記憶媒体。
【請求項17】
前記変形コントロールは、点、曲線、平面、線、軸、面の領域、および放物線オブジェクトの1つであることを特徴とする請求項15に記載のデータ記憶媒体。
【請求項18】
追加マッピング関数のシーケンスを導き出すステップと、
前記マッピング関数のシーケンスを前記曲面の前記元の表現に適用することによって前記変形された曲面の前記表示を更新するステップとをさらに備え、
前記追加マッピング関数は滑らかであり、
前記シーケンス内の各マッピング関数は前記曲面データ構造で識別可能なエンティティであることを特徴とする請求項15に記載のデータ記憶媒体。
【請求項19】
データストレージシステムに操作可能に接続されたプロセッサであって、前記データストレージシステムが3次元モデルを格納するプロセッサと、
前記プロセッサに操作可能に接続されたデータ記憶装置とを備えるデジタルコンピュータであって、
前記データ記憶装置は、
3次元モデルを定義するデータ構造を処理し、前記データ構造は元の面表現を備え、
第1の3次元マッピング関数を導き出し、前記第1の3次元マッピング関数は前記3次元モデルの表面に変更を生じさせるために構築された滑らかな非アフィンマッピング関数であり、
前記第1の3次元マッピング関数を、前記データ構造が前記元の面表現と関連して前記第1の3次元マッピング関数をさらに備えるように前記データ構造に格納し、
前記第1の3次元マッピング関数を前記元の面表現に適用して前記3次元モデルの前記変形を生じさせ、
前記第1の3次元マッピング関数と関連して前記元の面表現を備える前記データ構造を保持し、
複数の変形を定義する滑らかな3次元マッピング関数のシーケンスが前記元の面表現に関連付けられるようにし、前記シーケンス内の3次元マッピング関数が前記元の面表現に関連付けられるたびに前記元の面表現の変形が発生し、同時に滑らかさは前記関連するマッピング関数の前記滑らかさの最低度に保持されることを特徴とするように前記プロセッサを構成する命令を備えるデジタルコンピュータ。
【請求項20】
変形コントロールを指定し、
前記変形コントロールを移動するステップおよび変更するステップの1つにより前記変形コントロールを変換し、
前記第1の3次元マッピング関数の最新バージョンを前記元の面表現に適用するために導き出し、前記新バージョンは前記変換された変形コントロールに基づいており、
前記データ構造内の前記第1の3次元マッピング関数を前記第1の3次元マッピング関数の新バージョンと置き換えるようにプロセッサを構成する命令をさらに備えることを特徴とする請求項19に記載のデジタルコンピュータ。
【請求項21】
前記変形コントロールは、点、曲線、平面、線、軸、面の領域、放物線オブジェクト、および3次元囲みオブジェクトの1つであることを特徴とする請求項20に記載のデジタルコンピュータ。
【請求項22】
複数のアイコンを含むユーザインターフェースを表示するようにプロセッサを構成する命令をさらに備え、各アイコンは複数の変形操作の1つの結果を示し、前記1つの複数の変形操作の各々が導き出す複数の3次元マッピング関数の1つを示すことを特徴とする請求項19に記載のデジタルコンピュータ。
【請求項1】
3次元コンピュータ生成モデルを変形させて3次元モデルの形状を変更するためのコンピュータ実装方法であって、
最初に元の面定義を備える面表現を使用して前記3次元モデルの表面を表すステップと、
複数の滑らかな3次元マッピング関数を導き出すステップであって、各3次元マッピング関数は曲面への変形を定義し、少なくとも1つの3次元マッピング関数は非アフィン変換であるステップと、
複数の3次元マッピング関数および元の面定義の合成を構築するステップであって、各3次元マッピング関数は3次元マッピング関数が導き出された順序に従って連続して合成に含まれているステップと、
連続する各3次元マッピング関数が合成に含まれた後に合成を適用するステップであって、これにより前記3次元モデルの表面は変形され、しかも滑らかさが前記複数のマッピング関数の最低限度の滑らかさに保持されるステップとを備えることを特徴とする方法。
【請求項2】
請求項1に記載の方法を実行するコンピュータシステムを構成するための命令を備えることを特徴とするコンピュータ可読データ記憶媒体。
【請求項3】
前記元の面定義はパラメトリック面、メッシュ面、および細分化面の1つであることを特徴とする請求項1に記載のコンピュータ実装方法。
【請求項4】
前記合成を適用するステップは前記連鎖法を前記複数の3次元マッピング関数に適用して前記面表現の導関数を決定するステップを備えることを特徴とする請求項1に記載のコンピュータ実装方法。
【請求項5】
変形結果の複数の描写を備えるユーザインターフェースを表示するステップと、
複数の描写の1つを選択して、前記複数の3次元マッピング関数の1つとして実装される変形操作を示すステップとをさらに備えることを特徴とする請求項1に記載のコンピュータ実装方法。
【請求項6】
前記曲面に関する前記変形操作は、曲線を引き出す、点を引き出す、曲面の領域を引き出す、球形を型押しする、曲線を型押しする、特定の位置で幅を狭める、つぶす、およびねじるのうち1つの操作を達成することを特徴とする請求項5に記載のコンピュータ実装方法。
【請求項7】
変形コントロールを識別するステップであって、前記変形コントロールは前記3次元モデルの前記曲面に関して配置されるステップと、
前記変形コントロールの少なくとも一部が新しい場所を占めるように前記変形コントロールを変換するステップと、
前記変形コントロールを前記複数の3次元マッピング関数の1つに対するパラメータとして使用するステップとをさらに備えることを特徴とする請求項5に記載のコンピュータ実装方法。
【請求項8】
前記変形コントロールは低位ジオメトリであることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項9】
前記変形コントロールは、点、曲線、平面、線、軸、面の領域、および放物線オブジェクトの1つであり、
前記変形コントロールを変換するステップは前記変形コントロールを移動するステップおよび前記変形コントロールを変更するステップのうちの1つであることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項10】
前記選択された変形操作は点引き出し操作であり、
前記識別された変形コントロールは前記3次元モデルの前記曲面から選択された任意点であることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項11】
前記選択された変形操作は曲線引き出し操作および曲線型押し操作のうちの1つであり、
識別された前記変形コントロールは前記3次元モデルの前記曲面に描かれた任意曲線であることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項12】
前記変形コントロールを変換することによって影響を受ける前記3次元モデルの領域を決定するステップをさらに備え、前記領域はシステム定義の領域およびユーザ定義の領域のうちの1つであることを特徴とする請求項7に記載のコンピュータ実装方法。
【請求項13】
ユーザインターフェーススライダコントロールは前記ユーザ定義の領域を指定するために使用されることを特徴とする請求項12に記載のコンピュータ実装方法。
【請求項14】
前記領域は前記複数の3次元マッピング関数の1つに対するパラメータとして使用されることを特徴とする請求項12に記載のコンピュータ実装方法。
【請求項15】
コンピュータ可読データ記憶媒体であって、コンピュータに、
最初に前記曲面の元の表現を備える面データ構造を作成させ、
前記曲面に変更の種類を指定するために変形操作を選択させ、
前記曲面を操作するための変形コントロールを識別させ、
第1の滑らかなマッピング関数を導き出させ、前記第1のマッピング関数は非アフィンマッピング関数であり、前記選択された変形操作に従って複数のマッピング関数から選択され、前記変形コントロールの属性は前記第1の滑らかなマッピング関数によって使用され、
第2の滑らかなマッピング関数を導き出させ、前記第2の滑らかなマッピング関数はアフィンおよび非アフィンのうちの1つであり、前記第2の滑らかなマッピング関数は前記第2の変形操作に従って前記複数のマッピング関数から選択され、第2の変形コントロールの属性は前記第2の滑らかなマッピング関数によって使用され、
前記第1および第2の滑らかなマッピング関数を前記曲面データ構造に別個のエンティティとして格納させ、前記曲面データ構造は第1の滑らかなマッピング関数、第2の滑らかなマッピング関数、および前記曲面の元の表現の合成を表し、
変形された曲面を表示させ、表示ステップは第1の滑らかなマッピング関数の格納時に前記合成を適用するステップと、前記第2の滑らかなマッピング関数の格納時に再び前記合成を適用するステップを備え、前記合成が適用されるごとに前記第1または前記第2の滑らかなマッピング関数によって表される最低度の滑らかさが保持されることを特徴とする命令を備えるコンピュータ可読データ記憶媒体。
【請求項16】
前記曲面は複数の曲面の1つであることを特徴とする請求項15に記載のデータ記憶媒体。
【請求項17】
前記変形コントロールは、点、曲線、平面、線、軸、面の領域、および放物線オブジェクトの1つであることを特徴とする請求項15に記載のデータ記憶媒体。
【請求項18】
追加マッピング関数のシーケンスを導き出すステップと、
前記マッピング関数のシーケンスを前記曲面の前記元の表現に適用することによって前記変形された曲面の前記表示を更新するステップとをさらに備え、
前記追加マッピング関数は滑らかであり、
前記シーケンス内の各マッピング関数は前記曲面データ構造で識別可能なエンティティであることを特徴とする請求項15に記載のデータ記憶媒体。
【請求項19】
データストレージシステムに操作可能に接続されたプロセッサであって、前記データストレージシステムが3次元モデルを格納するプロセッサと、
前記プロセッサに操作可能に接続されたデータ記憶装置とを備えるデジタルコンピュータであって、
前記データ記憶装置は、
3次元モデルを定義するデータ構造を処理し、前記データ構造は元の面表現を備え、
第1の3次元マッピング関数を導き出し、前記第1の3次元マッピング関数は前記3次元モデルの表面に変更を生じさせるために構築された滑らかな非アフィンマッピング関数であり、
前記第1の3次元マッピング関数を、前記データ構造が前記元の面表現と関連して前記第1の3次元マッピング関数をさらに備えるように前記データ構造に格納し、
前記第1の3次元マッピング関数を前記元の面表現に適用して前記3次元モデルの前記変形を生じさせ、
前記第1の3次元マッピング関数と関連して前記元の面表現を備える前記データ構造を保持し、
複数の変形を定義する滑らかな3次元マッピング関数のシーケンスが前記元の面表現に関連付けられるようにし、前記シーケンス内の3次元マッピング関数が前記元の面表現に関連付けられるたびに前記元の面表現の変形が発生し、同時に滑らかさは前記関連するマッピング関数の前記滑らかさの最低度に保持されることを特徴とするように前記プロセッサを構成する命令を備えるデジタルコンピュータ。
【請求項20】
変形コントロールを指定し、
前記変形コントロールを移動するステップおよび変更するステップの1つにより前記変形コントロールを変換し、
前記第1の3次元マッピング関数の最新バージョンを前記元の面表現に適用するために導き出し、前記新バージョンは前記変換された変形コントロールに基づいており、
前記データ構造内の前記第1の3次元マッピング関数を前記第1の3次元マッピング関数の新バージョンと置き換えるようにプロセッサを構成する命令をさらに備えることを特徴とする請求項19に記載のデジタルコンピュータ。
【請求項21】
前記変形コントロールは、点、曲線、平面、線、軸、面の領域、放物線オブジェクト、および3次元囲みオブジェクトの1つであることを特徴とする請求項20に記載のデジタルコンピュータ。
【請求項22】
複数のアイコンを含むユーザインターフェースを表示するようにプロセッサを構成する命令をさらに備え、各アイコンは複数の変形操作の1つの結果を示し、前記1つの複数の変形操作の各々が導き出す複数の3次元マッピング関数の1つを示すことを特徴とする請求項19に記載のデジタルコンピュータ。
【図1】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6A】
【図6B】
【図7】
【図8】
【図9】
【図2】
【図3】
【図4】
【図5A】
【図5B】
【図6A】
【図6B】
【図7】
【図8】
【図9】
【公開番号】特開2006−31715(P2006−31715A)
【公開日】平成18年2月2日(2006.2.2)
【国際特許分類】
【外国語出願】
【出願番号】特願2005−211679(P2005−211679)
【出願日】平成17年7月21日(2005.7.21)
【出願人】(500430693)ソリッドワークス コーポレイション (6)
【氏名又は名称原語表記】SOLIDWORKS CORPORATION
【住所又は居所原語表記】300 Baker Avenue Concord ,MA 01742 U.S.A.
【Fターム(参考)】
【公開日】平成18年2月2日(2006.2.2)
【国際特許分類】
【出願番号】特願2005−211679(P2005−211679)
【出願日】平成17年7月21日(2005.7.21)
【出願人】(500430693)ソリッドワークス コーポレイション (6)
【氏名又は名称原語表記】SOLIDWORKS CORPORATION
【住所又は居所原語表記】300 Baker Avenue Concord ,MA 01742 U.S.A.
【Fターム(参考)】
[ Back to top ]